ࡱ>    q` >bjbjqPqP y ::xJJJJ$ƇƇƇPʈ X$Γ(+++׏ُُُُُُ$h~Je +JJox999<J׏9׏99eX i 5*?ƇL% g(i$&(0XCgDȔ\18ȔPiȔi,+|9UdW+++9^+++XwƇƇJJJJJJ  Gareth Tyson Peer-to-Peer Content Distribution B.Sc. (Hons) Computer Science March 2005 I certify that the material contained in the dissertation is my own work and does not contain significant portion of unreferenced unacknowledged material. I also warrant that the above statement applies to the implementation of the project and all association documentation. Regarding the electronically submitted version of this submitted work, I consent to this being stored electronically and copied for assessment purposes, including the Departments use of plagiarism detection systems in order to check the integrity of assessed work. I agree to my dissertation being placed in the public domain, with my name explicitly included as the author of the work. Signed, ________________ Gareth Tyson ABSTRACT Since the emergence of the Peer-to-Peer revolution the proliferation of the technology has been unstoppable, its many benefits have helped to numb the pain of its inefficiencies but current designs mean that without severe modification to their scalability it will be simply impossible to service the requirements of the growing P2P community. This project aims to improve the search algorithms of current P2P technology whilst still maintaining some of the better features. This report outlines the design, development and evaluation of the creation of such a P2P network with the emphasis on evaluating the chosen design and its possible derivatives. ABSTRACT....3 CONTENTS...4 INTRODUCTION....7 General Overview of Peer-toPeer7 Project Aims..8 Report Overview...9 BACKGROUND11 Terminology of P2P11 Analysis of P2P Architectures...12 Gnutella.....................................................................................................12 Kazaa.........................................................................................................15 Napster.......................................................................................................17 Pastry.........................................................................................................18 Legal Background...............................................................................................19 Data Resource Management (DRM).................................................................19 The Generations of DRM...........................................................................20 Encrypted Shell..........................................................................................20 Marking......................................................................................................20 Centrally Controlled DRM........................................................................21 Problems with DRM...................................................................................21 Choices in Software and Technology................................................................21 C.................................................................................................................22 Java............................................................................................................22 Java RMI....................................................................................................22 JXTA. ........................................................................................................22 Justification for Building a New Type of Network..........................................23 Summary.............................................................................................................26 DESIGN..................................................................................................27 General Overview of the System.......................................................................27 Overall Structure................................................................................................27 Network...............................................................................................................27 Connecting New Nodes to the Network.....................................................28 Creating the Indexed Structure of the Network.........................................29 Creating New Supernodes..........................................................................29 Dealing with the Loss of Supernodes.........................................................30 Keeping File Lists up to Date....................................................................31 Distributing File Lists to Supernodes........................................................32 Searching.............................................................................................................32 Routing of Search Queries.........................................................................33 Search Aggregation...................................................................................34 How Supernodes Search their own Databases..........................................34 How Supernodes Perform Fuzzy Searches................................................34 Downloads/Uploads............................................................................................35 System Architecture...........................................................................................37 Class Overview....................................................................................................39 Design Patterns..........................................................................................41 User Interface......................................................................................................42 Summary.............................................................................................................46 IMPLEMENTATION............................................................................47 The GazNet Protocol..........................................................................................47 000-PRESENT 001-PRESENT? Pinging a Node................................49 030-CONNECT? The connection process..............................................49 080-SEARCH=search string The Searching Process.............................50 120-DOWNLOAD=filename=x=y The Download Process...................50 190-NEW_SUPERNODE Supernode creation.......................................51 400-ALPHA_LOCATIONS_UPDATE.......................................................51 The ProtocolSocket.............................................................................................51 Data Structures...................................................................................................52 Range.........................................................................................................52 Group.........................................................................................................53 The FileDatabase.......................................................................................53 Important Algorithms........................................................................................55 The Splitting Algorithm..............................................................................55 Multi-Source Downloads...........................................................................56 Aggregating Search...................................................................................58 Summary.............................................................................................................59 THE SYSTEM IN OPERATION.........................................................60 A Typical Session................................................................................................60 Summary.............................................................................................................64 PROCESS DESCRIPTION...................................................................65 The Connection Process.....................................................................................65 The Searching Process........................................................................................65 The File Transfer Process..................................................................................66 The Splitting Process..........................................................................................67 Summary.............................................................................................................67 TESTING................................................................................................68 The Test Bed........................................................................................................68 How the System was Tested...............................................................................68 Testing Utilities..........................................................................................69 The Simulators...........................................................................................69 System Test Results............................................................................................70 Summary of Errors.............................................................................................75 Networking.................................................................................................75 File Transfers.............................................................................................76 The User Interface.....................................................................................77 Incremental Testing............................................................................................77 Summary.............................................................................................................79 EVALUATION.......................................................................................80 Evaluation of Architecture.................................................................................80 Scalability..................................................................................................80 Search Algorithms......................................................................................87 Reliability and Robustness.........................................................................92 File Transfers.............................................................................................93 Miscellaneous............................................................................................94 Evaluation of User Interface..............................................................................96 The Welcome Panel....................................................................................96 The Search Panel.......................................................................................96 The Download Panel..................................................................................96 The Upload Panel......................................................................................97 The My Files Panel....................................................................................97 Alternative Solutions..........................................................................................97 Scalability..................................................................................................97 Robustness and Reliability.......................................................................103 File Transfers...........................................................................................104 Critical Summary of Evaluation.....................................................................105 CONCLUSION.....................................................................................106 Review of Aims..................................................................................................106 Review of Original Project Proposal...............................................................109 Suggested Revisions to Design.........................................................................110 Suggested Revisions to Implementation.........................................................111 Future Work......................................................................................................112 Lessons Learnt..................................................................................................113 Final Conclusion...............................................................................................113 REFERENCES....................................................................................115 Appendix Original Project Proposal..............................................117 The projects working documents are available at http://www.lancs.ac.uk/ug/tysong 1. Introduction General Overview of Peer to Peer One of the current major issues in computer science is the concept of Peer to Peer (P2P) computing. The purpose behind P2P is to allow a community of users to be able to carry out services such as sharing files without the need for a central server to run the network. In recent years the proliferation of P2P technology has been immense allowing massive distribution of digital media by parties which previously would simply not have had the resources to perform such a large scale task. The idea behind P2P is that a number of peers can form together into a network without the need to be managed by another party; instead they manage themselves, dynamically changing to deal with the addition and removal of peers. This is obviously an attractive idea and has been picked up by many companies and programmers wishing to create such networks. The first major P2P network was Napster, which allowed peers to share and download music files. This network fulfilled many of the end requirements of this project, primarily the fast search time, however Napsters reign of supremacy wasnt to last forever as, for legal reasons, it was shut down, leaving a gaping cavern left to be filled by other less efficient networks such as Gnutella and Kazaa. The inefficiency of these networks is exactly the reason for this project as it strives to improve upon the glaring problems with performance and scalability that resonate throughout current P2P technology. The intention of this project is to build a new P2P network, titled GazNet that will improve on existing networks, in particular it aims to speed up the process in which a peer searches the network to find content. Currently the majority of P2P networks have extremely slow search times, this is because in many cases every peer in the network must be contacted to complete a search. This can be both highly frustrating for the user and a heavy burden on the underlying network. In the previous sentence it was said that the majority of P2P networks have extremely slow search times, not the entirety; this is because there are networks available that can perform high speed searches, but this performance comes at a price. These networks require the user to enter the exact name of the file they are looking for; the slightest deviation from the correct name will result in no results being returned. This fallibility has meant that there has been little popular interest in them, simply because the average user would rather wait a long time and receive a plethora of results, rather than wait a short time and receive no results. This project aims to increase search performance without the sacrifice of fuzzy searching i.e. the ability to enter a search word and receive results even though the filename doesnt exactly match that word, e.g. a search for Help would return the file The Beatles Help!.mp3. By fulfilling this requirement a network will have been devised that will no longer force the user to choose between search time and the effectiveness of searches. 1.2 Project Aims To design, develop, and evaluate a P2P network to allow the sharing of files. To allow fast, efficient searching of the network To decrease search time compared to current P2P technologies To allow fuzzy searches that dont require specific details to be entered e.g. the exact name of the file. To limit the effect network size has on search time To keep search time low even when the overlay network is heavily loaded To keep searches as accurate as possible, so out of date file references arent returned in search results i.e. references to files that have already been removed from the network To make the network as scalable as possible in both terms of its performance and in the maximum number of nodes that can be concurrently connected to the network. To make the system as reliable and robust as possible The network must be able to recover from the loss of supernodes The network should be able to a reasonable degree withstand targeted attacks by malicious users Downloads must be able to be resumed without having to re-download all the data already received if transfers are interrupted. The system should deal with errors in an elegant way. To make the network as independent as possible i.e. avoiding the use as of centralised managed servers, removing any one point of failure making it near impossible to shut the network down. To allow sharing of files over the network To allow file transfers to be performed as quickly as possible hiding the user from the underlying actions To minimise the time taken to connect to the network To avoid the use of a centralised server to aid connection to the network. To provide a highly simple, easy to use user interface To let the user quickly and with ease search for files without having to understand and underlying processes To provide the user with some form of discriminatory information about specific downloads so they may make an informed decision on which files to download. To allow the user to modify his/her shares without difficulty To allow the user to view what he/she is currently sharing The interface must be responsible at all times even when actions are being carried out behind the scenes such as a search. The user must be provided with progress details of downloads and be told when a file has finished downloading The user must be provided with a indicator (i.e. bit rate) of how quickly a file is downloading. Abandoned Aims Due to time constraints some aims spoken about in the project proposal had to be dropped, these aims have been listed below; these topics have been touched on in the report but have received no implementation or in-depth analysis. To provide the user with an incentive to share his/her files. 2) To create a P2P network to run over a wireless environment. To allow the protection of files using DRM To provide all users with the functionality to protect their own files To allow the safe transfer to already licensed shares To enforce the controlled distribution and sale of licences i.e. stop users from selling mp3 files but also keep the copy themselves 1.5 Report Overview Chapter 2 (Background): This section gives an in-depth review of current P2P technologies and provides a foundation on which the report can be easily read. Chapter 3(Design): This section aims to give the reader an overview of how the system architecture and several key processes are carried out. Chapter 4(Implementation): This section provides a greater insight in to the workings of the system and shows the system that actually was produced. Chapter 5(The System in Operation): This short section shows a typical session and the interaction between the system and the user. Chapter 6(Process Description): This section explains the underlying processes that are carried out during a typical session, this includes both user initiated requests and automatic system initiated processes. Chapter 7(Evaluation): This section evaluates the effectiveness of the finished system and how well it has fulfilled the aims set out in this chapter. Chapter 8(Testing): This section lays out the testing schemes used to insure the working of the system and how well the system dealt with the testing. Chapter 9(Conclusion): This section sums up how well the project aims have been fulfilled and what was done wrong. 2. Background 2.1 Terminology of P2P Architecture The topology of the network and how information is routed through the network. Connecting to the network The process in which a node becomes part of the network, this is typically carried out by finding an already connected node and then tunnelling information through that node. Distributed Hash Table (DHT) A type of P2P network that allocates an amount of hash space to nodes in the network, these nodes then look after all files that reside in that hash space. File list A list of files and their location in the network (IP address), extra details can also be kept about the files such as their size and type. Hash algorithm A mathematical process performed on a string to create a number that is as unique as possible for the purpose of storing data. If a hash algorithm returns 5 it could be then put the data in an array at position 5, then all that is required to locate the data is to perform the hash algorithm again to find out where it is stored. The simplest hash algorithm is to simply to use the first letter of the string being hashed. Hash Key The value returned from a hash algorithm Hash space The hash keys that a particular area of storage holds, e.g. using a hashing algorithm that hashes on the first letter in a string, position 0 in an array could look after the hash space A. Node Any computer that is connected to the network P2P Generations P2P architectures can be split into three generations, the first is centralised P2P structures such as Napster which uses a central file server to search the network. Second generation networks use decentralised file lists. The third is Distributed Hash Tables. Servent A node that is neither a server nor a client, instead it performs both duties, this is a frequent occurrence in P2P networks as every node should be the same. Supernode A high performance node that is used in the network to reduce the burden on both the overall network and on individual nodes. This is usually done by caching file lists so a smaller number of nodes need to be searched to find files however they can also be used in different fashions such as caching actual files to reduce download time. 2.2 Analysis of P2P Architectures 2.2.1 Gnutella The Gnutella protocol is probably the most robust P2P protocol available, it is fully distributed and therefore very resilient to faults. The first process a Gnutella servent must carry out is to connect to GnutellaNet, this is done by connecting to an already connected node, currently the most prevalent method for finding connected nodes is through node caches that maintain databases of existing nodes on the network. Once an already connected node has been found, the new node must then attempt to connect to it, to do this it initiates a TCP connection to the servent then sends the following request string (encoded in ASCII), GNUTELLA CONNECT/\n\n To this, the servent will reply with GNUTELLA OK\n\n if it wishes to accept the connection, any other reply will indicate that the connection has been refused. When a servent wishes to perform a search it will channel the query through the node it is connected to, it should be noted that a servent can have multiple connections to other servents, in such a situation queries will be forwarded onto all the connected servents. If a servent receives a Query that matches content in its shared folder it will then reply with a QueryHit Descriptor, informing the searching node that it has content of interest to it. The Gnutella protocol is summaries in Table 2.1, DescriptorDescriptionPingUsed to discover other nodes on the network, a ping request should be replied with a PongPongThe response to a Ping; it tells the pinging node that the servent is present and other information such as its IP address and statistics on the data it is sharingQueryUsed to search the network, if a servent receives a Query which matches one or more files that it owns it will reply with a QueryHitQueryHitThe response to a Query; it will inform the searching servent of information about the host such as its connection speed, it will also provide a list of the files that match the Query.PushA mechanism that allows a firewalled servent to contribute file-based data to the networkTable 2.1 Overview of Gnutella Protocol Every protocol Descriptor from Table 2.1 will be encapsulated in a Descriptor packet, this is shown in Diagram 2.1. There are 5 fields in the Descriptor, the Descriptor ID which is a uniquely identifiable string, the Payload Descriptor which indicates what type of Descriptor, a TTL field which limits the packets reach in the network, the Hops field which records the number of nodes the Descriptors traversed and a Payload Length field which contains the length of the payload. This header is followed by the payload, which will be one of the Descriptors from Table 2.1. The TTL field is used to limit the reach that the message will have over the network, every servent that receives a Descriptor packet will decrement the TTL before it is forwarded on, if a servent receives a Descriptor with a TTL of 0 it will not forward it on, therefore deleting the packet from the network. Descriptor IDPayload Descriptor Time to Live (TTL) HopsPayload Length0 1516171819 22Diagram 2.1 Descriptor Header The TTL is the most important field in the Descriptor, this is because this factor controls how large the network is, in practical terms. The number of nodes in the network possesses no significance to an individual user, this is because a singe node only has a certain degree of reach in the network, this reach is set by two factors, the TTL and the number of nodes it is connected to. If there was no TTL field, a Descriptor would simply circle the network being forwarded by node after node, as the GnutellaNet tree isnt a spanning tree these Descriptors would get forwarded back to nodes that had already received them and therefore never leave the network, it is therefore impossible to actually search the whole network as, unless the searching node knows the entire topology of the network, it is likely that messages will just start looping through the network uncontrollably if a suitability large TTL field is given to extend reach to the furthest away nodes. Downloads are performed using HTTP; this is because HTTP is an well established file transfer protocol that can carry out the required purpose perfectly well, it is more suited to the application than a protocol such as FTP as it requires no logging in process to be carried out. This architecture has obvious benefits, its fully distributed layout(Diagram 2.2) means that it would be at worst extremely hard and at best impossible for the network to be shutdown. This means that users can always expect the network to be fully working. The only weak point in the structure is the locating of a node to connect to in the first place but this could be overlooked as the problem is resident in every P2P architecture. Its search mechanism means that all queries are carried in real-time meaning that all results will be completely up to date therefore eliminating the frustration of attempting to download files that have already been removed from the network. Gnutellas high resilience to break-down however unfortunately comes at a cost and this cost is performance; out of all the P2P architectures Gnutella performs by far the worst, this is because when a node wants to find a file the query must be propagated over the whole network meaning that every single node connected to the network must receive every single query (if the whole network was to be searched). This would be acceptable if the network was running over a high speed LAN with only 500 users but the amount of network traffic created when a search is sent over the internet with 3 millions users running the servent is immense. Obviously it would soon get impractical making Gnutellas biggest problem scalability, the simple fact is that over any sort of large network Gnutella will not scale, and this is discussed further in the next subsection. Take this problem into the realms of Wireless networking and it suddenly explodes, when someone on a desktop PC searches for a file they will generally be running the internet over a fixed rate connection with multiple web browser windows open. This means that long search times are far more tolerable as the user can both afford the long wait and also entertain themselves during it by carrying out other tasks such as checking their e-mails. A wireless user is generally less fortunate as their connection is usually a metered one and there is less multi-tasking available for the user to carry out things whilst they wait making the search time extremely expensive. Gnutellas Scalability (Ritter, 2001) It has been mentioned earlier that Gnutella is highly un-scalable but exactly to what degree does Gnutellas architecture limit scalability. In this short analysis of Gnutellas scalability a few variables will be used, P The number of connected users N The number of connections held open to other nodes T The Time to Live(TTL) of packets, these are used to age packets to stop queries from circling round the network forever. Due to the structure of Gnutella, P is never relevant to your potential reach, in reality the only limiting factors are N and T. Therefore raising N or T will raise the number of nodes searched and decreasing N and T will reduce the number of nodes that can be searched. T=1T=2T=3T=4T=5T=6T=7T=8N=2246810121416N=339214593189381765N=4416521604841,4564,37213,120N=55251054251,7056,82527,305109,225N=66361869364,68623,436117,186585,936N=77493011,81310,88565,317391,9092,351,461N=88644563,20022,408156,8641,098,0567,686,400Table 2.2 Reachable users based on a fully balanced network with universal N and T values. The next obvious step might be to increase the N and T to harvest a greater number of results however the side effect of this is the subsequent increase in bandwidth used (B). T=1T=2T=3T=4T=5T=6T=7T=8N=21663324986648309961,1621,328N=32497471,7433,7357,71915,68731,62363,495N=43321,3284,31613,28040,172120,848362,8761,088,960N=54152,0758,71535,275141,515566,4752,266,3159,065,675N=64982,98815,43877,688388,9381,945,1889,726,43848,632,688N=75814,06724,983150,479903,4555,421,31132,528,447195,171,263N=86645,31237,848265,6001,859,86413,019,71291,138,648637,971,200Table 2.3 Amount of bandwidth generated for an 83 byte query T=1T=2T=3T=4T=5T=6T=7T=8N=23326649961,3281,6601,9922,3242,656N=34981,4943,4867,47015,43831,37463,246126,990N=46642,6568,63226,56080,344241,696725,7522,177,920N=58304,15017,43070,550283,0301,132,9504,532,63018,131,350N=69965,97630,876155,376777,8763,890,37619,452,87697,265,376N=71,1628,13449,966300,9581,806,91010,842,62265,056,894390,342,526N=81,32810,62475,696531,2003,719,72826,039,424182,277,2961,275,942,400Table 2.4 Amount of bandwidth incurred for an 83 byte query Table 2.3 refers to the amount of bandwidth generated by an 83 byte query however Table 2.4 refers to the amount incurred, the difference is that the former only measures outgoing data whilst the latter includes both outgoing and incoming data to give a more accurate measurement. As can be seen Gnutella has the potential to create over 1.2GB of data just to propagate one query, this not only creates a massive burden on the network but also makes search times extremely slow due to the time it takes to transport that amount of data. 2.2.2 Kazaa Kazaa works on the FastTrack protocol and has considerable performance improvements over Gnutella, unfortunately however, unlike Gnutella the FastTrack protocol is encrypted and therefore little is known about the actual details of the protocol, all the information in this section has been gained from the studying and measurement of node interactions. The improved performance of Kazaa is gained through the use of multiple classes of peers, the ordinary node and the supernode. To join the network a node must first find the address of a supernode, Kazaa uses a supernode registry, stored in the Windows Registry, to hold a list of up to 200 supernodes that connection attempts can be made to. The selection of which supernode to connect to, is based on two factors, the first is the load of the supernode; in the registry there is a field that indicates the average load of each supernode, nodes will show a marked preference for lightly loaded supernodes. The second factor is the locality of the supernode, the locality is devised using two means; the first is the round trip time (RTT) of the connection; 40% of node to supernode connections having a RTT of less than 5ms with the other 60% having RTT of about 100ms. Similarly, the majority (60%) of supernode to supernode connections have RTTs of less that 50ms. The second means of figuring out locality is analysing the IP address the supernode; a node will tend to have a matching address prefix (e.g. 24.x.x.x) to the supernode that it is connected to. When a node is trying to connect to the network, it will make multiple simultaneous connections to many supernodes in its supernode registry; this is done in an attempt to find a lightly loaded, local supernode to connect to. Once the node has decided which supernode to connect to all other connections will be closed apart from the selected supernode with which a persistent connection will be kept. On connection to the supernode a new supernode list will be downloaded to the node, so to keep the list as up to date as possible, therefore keeping connection time at a minimum. Once a node is connected to a supernode it uploads metadata about the files that it is sharing, this includes such things as connection speed and a content hash of each file. The content hash is used to find matching files so that multi-source downloads can be performed, when a download is started Kazaa will search the network for that content hash to find other sources, this saves it from doing a less accurate key word search. To search the network a node would send a query to the supernode that it is connected to, the supernode would then forward the query on to the other supernodes it is connected to, which will then do the same, in a similar fashion to a standard Gnutella node, this can be seen in Diagram 2.3. If a supernode finds a match in its database it will then reply to the searching node with metadata about the search results. A Kazaa supernode will only maintain connections to a small subset of all the supernodes in the network, therefore, like Gnutella, a search will only actually reach a small proportion of the entire network. However unlike Gnutella nodes, Kazaa supernodes will frequently (approximately every 10 minutes), change their connections with other supernodes so to explore a larger proportion of the network, this is to improve results when dealing with very long searches that last for hours. A supernode will generally maintain between 100 and 160 connections with nodes and a further 30-50 connections with other supernodes, it is estimated that there are about 30,000 supernodes in the Kazaa network therefore a search will generally only query 0.1% of the overall network. Kazaa-lite, an unofficial version of Kazaa, will create connections to multiple supernodes in its supernode registry when performing a search; this is done to increase the amount of the network that is searched, although this increases the number of search results, it generates much more network traffic, sometimes unnecessarily. As well as frequently changing supernode connections, lists of current supernode addresses are frequently swapped between both supernodes and nodes, typically after receiving a list, a node will merge its own list with the new one purging a certain number of its previous entries, by doing this both supernodes and nodes can keep amore up to date picture of the network, therefore easing re-connection. The Kazaa network has number of great features, its node location process is decentralised so nodes should be able to connect to the network without worrying about servers becoming unreachable. But Kazaas obvious best feature is its search improvements, the use of supernodes dramatically improves scalability and search time is vastly reduced meaning the architecture is much better suited to wireless networking. However Kazaa isnt the perfect network, its use of supernodes trades reliability in for performance as there is always the possibility that supernodes will go offline and when this happens all the information about files will be lost and all the nodes connected will find themselves no longer on the network. This means that in extremely dynamic networks Gnutella might even be more efficient as the loss of a supernode means loss of data and a sudden increase in network traffic (as nodes search for a new supernode and file lists are passed between them). However this would need to be an extremely dynamic network in which all nodes frequently connect and disconnect as only a small minority of nodes are actually supernodes (normal nodes can come and go as often as they please without much damage to the network). Another problem arises when one looks at the hardware available for wireless devices, there is much less diversity in these compared to normal desktop PCs similarly, they are no where near as powerful; all this means that the selection of supernodes is going to be increasingly difficult and the quality of service that these supernodes can provide will be limited, this will probably lead to supernodes only be able to have a small number of nodes connected to them. Also as searches arent performed in real-time information can become out of date and users can find themselves trying to download files which no longer exist on the network. 2.2.3 Napster  Napster, out of all the P2P networks is generally considered to the best, however the ironic fact of the matter is that Napster isnt actually a P2P network in reality it is simply a client-server search engine, Diagram 2.4 (more accurately a broker server). To connect to the network a Napster client simply sends a list of files to the Napster server then to search the network it simply sends a query to the server which then searches its database and returns the results, just like all the other P2P networks downloads are carried out between a direct link. Napster has a great deal of advantages over all other P2P networks, the first one is obvious by the length of Napsters description, its client-server architecture makes is extremely simple and extremely fast, search time is comparable to that of Google. Also reliability is very high as there is no reliance on random nodes all searches are routed through a network of high performance servers. By the previous paragraph Napster appears to be the perfect network, this would be true but for one fact and that is the same one the ultimately led to its demise. There is a tendency for illegal material to be shared on P2P networks and Napsters architecture meant that the company running it were responsible for the material shared meaning that companies concerned about losing money had an adequate case to shut the network down which they managed. Therefore although it was a perfect network in respect to performance and reliability it was actually the least workable network. 2.2.4 Pastry The previous examples are conventional P2P networks, Pastry however, dubbed the third generation P2P network, is based on a distributed hash table (DHT). Each node in the network is allocated a portion of the hash space and will contain references to files that hash to that space. When a user looks up a certain key the network will return the IP address of the node containing the file and the download can proceed. The Pastry network is arranged in a ring topology (Diagram 2.5), to find a file, a node will pass the key to its neighbour which will check to see if it part of its hash space or if it knows where the location of the correct hash space is, otherwise it will simply pass the request on to its neighbour. This will carry on until the hash space is found, this greatly improved on networks such as Gnutella because once the hash space is found the searching node will know that the entire network has been searched and will therefore not need to create any more network traffic querying more nodes. Whilst improving on the Gnutella network substantially, it also provides improvement over the Kazaa and Napster networks as there is no longer one single point of failure, instead every node looks after a small proportion of the hash space. Pastry also makes the distribution of responsibility fairer as there are no heavily loaded supernodes that must take care of other nodes. Pastry has the time complexity of 0(log N), which is obviously a massive improvement over Gnutella. Unfortunately Pastry and other DHTs arent totally perfect, despite their search time improvements over Gnutella and Kazaa they can still in no way compete with Napster. Pastrys biggest downfall and the reason for its limited use is that to generate a search that will actually yield a result one would have to type the exact file name letter for letter so the correct hash key can be generated therefore searches like Britney Spears would not (or are unlikely to) return any results, this makes the search method impractical for everyday use. 2.3 Legal Background There is no doubt that the courts have had a major effect on P2P technology and it is therefore necessary to give a legal overview of P2P. The major legal problem with P2P networks is that they facilitate the distribution of material without any sort of discrimination between the content, it is therefore possible for users to illegally distribute any sort of material they wish be it illegal media or child pornography. Since Napsters advent various trade organisations such as the RIAA and MPAA have taken a great interest in P2P networks with the aim of them shutting down. In response to legal attacks P2P network have become more and more technologically resilient making it impossible to shut many networks down. This has led to the users of the network being targeted rather than the owners of the network, this is because the owners ignorance and lack of power over the content of the network makes it difficult for them to be prosecuted however if a user was caught distributing illegal material their punishment would be just as severe as if they were distributing it via any other means. Perhaps even more worrying (depending on your view) is the advent of anonymous networks attempting to destroy the tracking of downloads and searches. These networks use encryption and special routing that makes it extremely difficult for authorities or even the person who the file is being uploaded from, to find out who the file is going to. This from one point of view is protecting the rights of people to be able to carry out legal actions in private but unfortunately has the side effect that the service can be misused by others people to protect their identities from the authorities, an example of this is worries over terrorists using P2P networks to anonymously communicate. For these reasons, any newly created P2P network must be legally aware of the dangers, if the creator and administrator of the network have knowledge of the content being shared on that network it is necessary for them to be able to prevent that content from being illegal. Due to these reasons, P2P networks have shifted away from central server architecture towards more distributed topologies such as Gnutella. 2.4 Data Resource Management (DRM) There are currently a variety of techniques used to control the use and distribution of digital material, similarly there are a variety of technologies around that aim to implement these techniques. The need for DRM has been heavily pushed by companies and associations that that find it in their interest to stop the illegal distribution of their products, it is therefore no surprise then that the latest versions of Windows Media Player provide support for DRM. To illustrate the possibilities open to providing DRM functionality in a P2P system a few of the current DRM architectures will be listed. 2.4.1 The Generations of DRM Current DRM can be broadly split into two generations, the first generation in which the focus was on controlling illegal copying and the second generation which broadened the scope to cover, the description, identification, trading, protection, monitoring and tracking of all forms of rights usages over both tangible and intangible assets including management of rights holders relationships Renato Iannella 2.4.2 Encrypted Shell Probably the most important aspect of DRM is the use of encryption without it any user will simply be able to copy the files without any hassle. This method works be simply encasing the actual file inside an encrypted shell (basically encrypting the bytes from the file), to open the file a user will therefore require a key, or license to do so. There are two ways of using an encrypting shell to obtain protected files, the first is to use one license; firstly the user will send the other party a copy of his/her license (obviously in an encrypted form) and this will be used to create the encrypted shell, it will be then be sent to the user and will only be usable on a computer than possesses that license; the second option is to license each file individually by sending the encrypted key with the shell, this could be a considered a better conceptual method as identical files would be able to run on the same computer as long as the user possesses the correct license therefore if the file is accidentally deleted and then replaced by a different copy the file will still run. One of the biggest problems with using an encrypted shell is if for some reason the users licenses are deleted all his legal files will become useless, this can be easily rectified by properly backing-up licenses but the possibility is still there. Another problem is that to run a protected file there has to be support for it in the software that the file is being run on. Therefore to create a new DRM system one would have to also create new file players to run the files on. Another problem is if someone can manage to access the encryption key inside the license, if this happens it would then be possible to simply decrypt the file and distribute in any way the user wished. 2.4.3 Marking The second technique is marking media in some way, either by using a watermark, flag or XrML tag. This mark will indicate that the media is copyright protected and may contain extra information such as how many times the file may be used. This technique will allow the person licensing the file greater control over how it will be used in the future and open up a whole new range of possibilities such as the ability to pay for a licence for merely one night like one might do if renting a film. 2.4.4 Centrally Controlled DRM The two previous examples seem to place little infringement on a users privacy however centrally controlled DRM breaks away from this theme dramatically. Instead of making a link between a licence and a file it makes a link between file and a person, this can be done by using a Globally Unique Identifier (GUID) which will be assigned to each user (or Media player); this can then be used to track a users file usage, it can therefore be used to prevent files from being used. Windows Media Player uses this technique, also it creates a log of files the user runs and then contacts a central server to find out digital rights. Similarly Microsoft eBook Reader makes the user link the reader to a passport account, using this Microsoft captures a unique hardware profile of the computer which allows Microsoft to prevent other computer from reading the eBooks. The biggest problem with this scheme is the issue of privacy, using centrally controlled DRM, profiles can be made of users containing everything they listen to, this can be used for purposes such as marketing. Similarly by linking a file to the person it would be no longer possible to enjoy media anonymously instead (if youre using Windows Media Player) Microsoft will know who you are and what content youve watched. Using this scheme attempting to protect data is also expanding to the profiling of a users tastes; this is obviously something that will not be popular. 2.4.5 Problems with DRM Unsurprisingly DRM is littered with problems, this is partly due to the complexity of the problem and partly due to the infancy of the research. There are frequent problems in transmission of data, for instance if a user wished to sell an mp3, how would they do it? Similarly if a user wished to listen to the mp3 on his/her portable mp3 player it would not function. What would prevent a user from simply burning music to CD then ripping it again without protection on it? Or simply burning the music to CD 100 times and simply selling them on. What would happen if a user bought a new computer and he/she wished to be able to play the music on both computers? How would a user play his protected media when running Linux seeing that most DRM schemes are built for Windows? All these questions lead up to one fact, DRM is not yet ready for widespread use and unless the matter is heavily pressed by the suppliers of the files and the software manufacturers that create programs to run the files it is unlikely that it will be taken up by many users as they simply would prefer their media to be unprotected as it makes life easier for them. The hardest quandary lies in how far to take DRM, it must be powerful enough to stop the illegal users but lenient enough to allow legitimate users from using their files in a proper legal manner. 2.5 Choices in Software and Technologies 2.5.1 C C would be the ideal choice for a P2P client if it was to be executed only on one platform such as Windows, this will run extremely fast and have a minimal memory foot print. C could also be used with conjunction with C++ to build the user interface. However, unfortunately as C is platform specific it would be impractical for this project as it is intended to be distributed as widely as possible, with platforms varying from Linux to Windows CE. 2.5.2 Java Java has several performance problems, mainly that it is slow to start and slow to execute and the memory requirements are much higher than a program written in a language such as C, however Javas platform independence makes it the ideal choice for a project of this type. Java comes in a variety of different editions, the two of importance here being J2SE (Standard Edition) and J2ME (Micro Edition), the later is designed to work on hardware such as PDAs and obviously has a cut down API. The software will be written in J2SE for the use on desktop computers but will be able to be re-written in J2ME with relative ease. The use of Java will enable the application to easily cross over standard and wireless networks increasing the usefulness of the network dramatically. 2.5.3 Java RMI Remote Method Invocation boasts a great deal of advantages, the main one is the easing of strain placed on the actual implementation of the network, this is because RMI would allow a simpler structuring of the protocol rather than using simple sockets. Instead of using a protocol message such as SEARCH Aerosmith a remote method could be called e.g. results = search(Aerosmith). RMI would then deal with both the sending of the request and the receiving of the reply obviously making the code far quicker to program. This at first sounds good but there are limitations to its usefulness, firstly using RMI would place a whole host of restrictions on the design of the network, for example using RMI would also mean using TCP, also it would mean that each node would have to obtain copies of the remote object which would therefore mean that somewhere along the line an RMI server would be required to supply them. Another problem is with the distribution of the application, any node running the program would also need to support RMI, as this comes as standard with J2SE is would not really effect it but neither version of J2ME support RMI and therefore would require plug-ins to allow the application to work. RMI is not really a technology created for P2P networking and apart from making implementation easier it would not have many benefits to the end result. 2.5.3 JXTA JXTA, devised by Sun, is a set of open source protocols to run P2P applications over devices ranging from high end servers to PDAs and mobile phones. It is important to remember that JXTA is a set of protocols and not an application, it therefore could be programmed in any language, further to this it makes great use of XML in protocol messages therefore also making it platform independent. JXTA uses high levels of abstraction to allow JXTA to be customised for a variety of different applications, ranging from file sharing to chat systems; JXTA will deal with such things as locating other peers and propagating messages over the network. Unfortunately JXTA is not an appropriate technology to be used in the creation of a new architecture, this is because JXTA already uses its own architecture to run the network, therefore the creation of a new architecture would somewhat defeat the purpose of exploiting JXTAs features. 2.6 Justification for Building a New Type of Network From the previous sections it is obvious that there is a plethora of P2P networks already available, this raises the question of whether it is actually necessary to build another one. The two main aims of this project are to firstly speed up search times and to increase the scalability of the network; these two aims are very closely linked as the scalability of the network is often measured in how long it takes to carry out a complete search. The following section will discuss what limitations current P2P technologies have that stop them from fulfilling this projects requirements and how GazNet aims to overcome the problems. This project is faced with a whole host of problems and this can be seen by the list of aims, if a different system was specifically built to fulfil each different aim, a large variety of P2P architectures would be created, this is because in many of the situations fulfilling one requirement will mean to a greater or lesser degree the sacrificing of another. Aim 2 To allow fast, efficient searching of the network Aim 2 is probably the most important requirement of the project as this is the area in which most gain hopes to be made. Aim 2a (to decrease search times compared to current P2P technologies) provides the first clear differentiator between current networks and this project. The primary goal of this project is to improve the search times provided by other current systems, the main problem with nearly every current P2P network is its poor search times when dealing with large numbers of nodes. Gnutella is the best example of this, needing to traverse every node in the network to perform a complete search. Even when the number of searched nodes is lowered in Kazaa by the use of supernodes the search times are still not acceptable, this problem is directly attributable to the lack of structure in the networks which although is good for Aim 4, reliability, it is extremely bad for Aim 2. By not providing anyway of searching the whole network by only contacting a subset of the nodes (or supernodes), it means that the search time is directly effected and controlled by the size of the network, this alludes to scalability issues and how well the network can cope with high numbers of nodes; this goes against aim 2c which stipulates that search time shouldnt be dictated by network size. Aim 2a has also been taken on by another type of P2P network, DHTs; networks like Pastry work with the intention of minimising search times as much as possible whilst still maintaining the fully distributed nature of networks like Gnutella. By storing a small amount of hash space on a large number of nodes, the network can be completely searched by only actually searching a tiny subset of the nodes, this means that whilst Gnutella would be left searching millions of nodes a DHT would have already found every instance of that file in the network. At first glance, therefore, a DHT would seem to fulfil the projects primary objective, therefore rendering the project pointless, however where DHTs limitations lie is in their inability to perform fuzzy searches (Aim 2b); when a search is carried out the only results returned would be the exact matches, even if a dash is put in the wrong place, no results will be returned. This major limitation is responsible for a lack of commercial and popular interest in DHTs, as for real world file sharing they are simply not practical. Aim 2d(to keep search time low even when the overlay network is heavily loaded) is very important as even if the network can handle large numbers of nodes, the burden of searching needs to be dealt with without massively degrading search time. Probably the best performing architecture regarding Aim 2d is Gnutella, this at first might sound strange but it should be noted that 2d stipulates that search time should be kept low even when the overlay network is burdened not the underlying network; Gnutellas fully distributed nature means that the load is spread evenly amongst all the nodes on the network therefore avoiding singular points that are heavily burdened, Gnutellas architecture creates a massive load of the physical network but in fact minimises load on the overlay network as each node is taking on a fair portion of the work. Although Gnutella seems to fulfil the requirement, it is ignoring the need to keep search time low, although Gnutella overlay network handles heavy burden well, it still doesnt have a low search time, in fact a lightly burdened Gnutella network would still have a longer search time than a heavily burdened Kazaa network, unfortunately however, Kazaa suffers from problems in other realms. Kazaa has singular points of network build up i.e. the supernodes, therefore if there is a higher frequency of searching there will be a bigger performance hit as a smaller percentage of the nodes will have to deal with the extra load. Probably the best architecture to fulfil Aim 2d is a DHT, this is because its highly distributed nature helps spread the network load and its searching technique helps keep search times low, a DHT would therefore fulfil both parts of the requirement. All file caching networks will have to give serious consideration to fulfilling Aim 2e (to keep searches as accurate as possible), this is because as nodes go offline it is more than possible that old file references will be left on the database which will therefore lead to erroneous results being returned to searches. Indisputably, Gnutella will fulfil this aim the best degree, this is because all searches are performed in real-time and a node would have to be present on the network to actually return any results. Kazaa similarly has little problems with this as all nodes are connected by a TCP connection to only one supernode, therefore if the connection breaks the supernode will know the node is offline and that it should remove all file references supplied by that node. The only problem arises when file references are stored on multiple locations which have no knowledge of the nodes status, this will occur in DHTs; references to a nodes files will be stored across the whole range of the network and therefore may easily become out of date as nodes leave the network. Aim 3 To make the network as scalable as possible Aim 3 is a major requirement for all P2P networks, one which unfortunately is not fulfilled by many, the best example of this Gnutella which is probably the most un-scalable design available, its necessity to contact every node in the network to perform a search makes it simply impossible for any degree of performance to be obtained from a large network, having said this Gnutella has allow a seamlessly unlimited amount of nodes connected to the network, unfortunately in reality these nodes are not fully connected as the reach a node has over the network is limited by the number of connections is has with other nodes and the number set in its TTL field; therefore although a node may be in theory fully connected to the whole network in practise its searches will only traverse a proportion of the network. Kazaa provides a massive scalability increase over Gnutella as its use of supernodes means that the whole network can be searched with far less node visitations, also providing that the network has spare supernodes, an unlimited amount of nodes will be able to connect to the network. However, as the network increases in size eventually the same problem as Gnutella has now will be reached and search time will become intolerably slow. DHTs will still suffer scalability problems as the more nodes there are the more hops it will take to locate the node containing the hash space you are looking for, however it will still scale far better than Gnutella or Kazaa, as the full network doesnt have to be traversed to locate the entire results; also the number of nodes is theoretically only limited to the number of computers in the world. Aim 4 To make the system as reliable and robust as possible Aim 4 is a requirement that needs to be fulfilled by any P2P network Probably the most robust architecture available is that of Gnutella, its fully distributed nature means that it is extremely hard, if not impossible, to destroy GnutellaNet as there is simply no main point of failure, the loss of one node will have absolutely no effect on the overall network. This robustness also leads to high reliability as a node will rarely be cut off from the network, unless every single node it is connected to goes offline. Gnutellas robustness is the main reason for the practicality of the protocol being open source, Kazaa protocol is highly encrypted partly because of commercial issues and partly because of the vulnerability of the network to attack and what the malicious use of the protocol could bring. Despite this, Kazaa is still very reliable however its partially centralised structure means that it is open to attacks because the loss of one supernode means the removal of about 150 nodes from the network. Therefore a correctly targeted Denial of Service attack on one node could in fact affect a large number of nodes. Due to Kazaas large size it will be able to fulfil Aim 4a because it would simply be impossible for one hacker to attack enough supernodes to make a significant difference to the network, however if purely the architecture is considered without thought of Kazaas size it becomes clear that Kazaa is open to attack. A DHTs highly distributed architecture, like Gnutella has great robustness, and makes it hard to destroy the network. However unlike Gnutella, particular nodes contain more information than merely their own file list, this creates dependencies between nodes and makes the network more connection-oriented therefore also making it more vulnerable. However, the hashing algorithm used means that particular nodes dont look after a particular type of content or a particular addresses spaces content, therefore the loss of node would not result in the loss of a specific area of content similarly DHTs increased distribution of file lists means that the loss of a node has far less impact on the network than the loss of a supernode in Kazaa. Aim 5 To make the network as independent as possible and Aim 7 To minimise the time taken to connect to the network The reason for trying to make the network as independent as possible is to improve Aim 4 by removing any singular points of failure. The Napster network is a perfect example of a system that doesnt fulfil Aim 5, this is because the whole network is based on a client-server model. Generally when referring to making the network as independent as possible, it means reducing the amount of external help required to run the network the main type being help gaining access to the network (Aim 7). Due to Gnutellas high robustness and distributed nature it is perhaps ironic that Gnutella generally requires the greatest amount of external help to run then network, as to join the network a node must first find an already connected node; to do this Gnutella generally contacts a node cache that will supply the node with the address of an already connected node. It can be clearly seen that this model creates an important point of failure, and does not fulfil Aim 7a (to avoid the use of centralised servers to aid connection to the network). Kazaas primary node location technique aims to create greater independence over techniques employed by Gnutella. Every node on the network will be issued with a standard address cache of well known supernodes, a node will attempt to connect to every address in the cache until it is accepted, as the node contacts more supernodes on the network (for searching) these will also be added to the cache making it larger and more up to date, therefore making it easier to connect to the network on future occasions. Kazaa, therefore would fulfil both Aims 5 and 7 as both could function without any sort of central managed resource. An unfortunate problem with Aim 7 is that the overall aim conflicts with the sub aim (7a), this is because, by avoiding the use of centralised servers the network is automatically limiting itself to slow connection times in many circumstances as slower techniques such Kazaas will have to be employed instead. Aim 6 To allow the sharing of files over the network There is very little differentiation between different networks on the fulfilment of Aim 6, as the speed of file transfer is largely based on the service provided by the underlying network, however certain techniques, mainly the use of multiple download sources can dramatically increase performance. Most P2P clients allow the use of multiple download sources, it is therefore hard to differentiate between them. Summary From the ordering and the length of each section is can be seen what aspects are important to this project. With the exclusion of Aim 2 (searching), all the features have been implemented before in previous networks and in some circumstances can be performed to a higher standard using a different architecture. However this project intends, to focus on improving the searching of a network rather than improving the other aspects. 2.7 Summary This chapter has taken an in-depth look at a few of the P2P technologies currently available and some areas of research into the domain. It has also identified where existing designs cannot carry out what is required of this project to a sufficient standard to make the project obsolete. The next chapter will delve deeper into the workings of the proposed system and give a high level overview of how a system will function. 3. Design This chapter describes starting from a high level view point getting progressively lower level the design of the system and how it will be implemented. 3.1 General Overview of the System The concept behind the system is a very simple one, a network of supernodes are created with each one looking after a certain pattern of letters. These supernodes will maintain lists of all the files on the network that begin with the appropriate pattern of letters. These supernodes will be arranged in a tree like structure; when the network is running with only one supernode, that supernode will be responsible for every letter combination available, however when the load becomes too great, that supernode will half its load by creating a new supernode (from one of the nodes on the network) then allocating the later half of its file database (M-Z) to that new supernode. After halving its load 26 times, their will be 26 supernodes each looking after one letter (A, B, C etc). Once this stage is reached a supernode will have to split to a new tier when its load becomes too great, this means instead of splitting according to the first letter, it will split according to the first two letters, so supernodes of type Aa, Ab, Ac etc will be created. By carrying out this process the network will respond to extra load with a greater level of indexing, this will mean that however large the network gets, fast efficient searches will still be able to be performed. 3.2 Overall Structure The overall structure can be split into 4 components, the user interface, the network, searching and uploads/downloads. The network refers to the functionality behind connecting up nodes and keeping the structure of the network correct; searching refers to how the network actually searches for content; uploads/downloads refers to how downloads are managed; each of these components will be examined in turn.  SHAPE \* MERGEFORMAT  Diagram 3.1 The Overall Structure of the Application 3.3 Network The network could be considered to be the most important component of the project, it encompasses many different design aspects and is by far the largest module. Below is a list of its functions followed by a in-depth review of it workings Connecting new nodes to the network Creating the indexed structure of the network Creating new supernodes Dealing with the loss of supernodes Keeping file lists up to date. Distributing file lists to supernodes 3.3.1 Connecting New Nodes to the Network This is an extremely important requirement as without its correct functioning the network would simply not be able to be built or grow beyond an extremely small size. GazNet uses 2 different methods to locate connected nodes, the first is the use of web servers and the second is the storage of address caches. Web servers Using the first technique a client attempting to connect will to try to connect to a preset web server and download a file called Supernodes.dat, this is a Java properties file which contains a list of all the first tier nodes (A, B,C etc). Once the file is obtained the client will attempt to connect to random supernodes on the list until it is accepted or given a different supernode address that will accept the connection. The list of supporting web servers is contained in a file called Servers.dat which is statically set when the software is installed. This naturally leads on to the question of how Supernodes.dat will come to reside on the web server. Every time a new supernode is created it will connect to every web server in its Servers.dat file and send an updated version of Supernodes.dat via FTP. Unfortunately several security problems arise with this method of supernode location. The worst being the simplicity in which a hacker could obtain the FTP password and upload his/her own Supernodes.dat file. This makes the use of web servers an unworkable technique in the long run however its purpose is only to aid in the initial setting up of the network; because of its indexed nature it would be better for the network to be initiated with all the first tier supernodes (but not necessary) before the beginning of its widespread use. Web servers provide a simple technique for doing this but after the initial phases it is likely that the use of web servers will cease being replaced by the following technique, supernode caches. Supernode caches This will be the main method used to locate supernodes; each client will keep a file called Nodes.dat which will contain a long list of supernode addresses. When the software is first installed it will contain a pre-set list of well know supernodes that the node could connect to. When a client starts up it will run through each addresses asking for a list of the current first tier supernodes once it has received it, it will attempt to connect to one and also update Nodes.dat by concatenating the new addresses onto the file. The client will begin with the most recently used supernodes to increase its chances of a speedy connection, therefore frequent users should be able connect faster than people that use the network sparsely. This is shown in Kazaa which also uses supernode caches if you have recently used it the connection time will be much faster. 3.3.2Creating the Indexed Structure of the Network An uninitiated network should be able to be set up with relative ease therefore users could if they wanted set up private network on LANs without many complications. GazNet is almost completely self configuring the only requirement is to create the first supernode, any other clients should then connect to that supernode and all maintenance be carried out automatically by the network. When the first supernode is created it will be responsible for every file on the network therefore all nodes will be connected to it and all their file references will be stored on it. However when the load gets too much for it (measured by the size of its file list) it will perform a process called splitting, the supernode will select its highest performance connected node and instruct it to set itself up as a supernode, it will then half its file list and send one half to the new supernode which will then be responsible for that portion of the hash space. This process will continue until there are 26 supernodes looking after all files beginning with the letters A, B, C etc however at this point when the load becomes too high for a supernode it will have to start adding depth to the network, i.e. creating more tiers. It will go through the same process of creating a new supernode but it will split its file list on the basis of each files second letter, so the new supernode will contain all the files beginning with An to Az. Each supernode will maintain knowledge of two sets of supernodes; the first is the first tier supernodes, this is because these are the sole gateway into the network and are necessary if the user of the computer running the supernode wishes to search the network; the second set is the tier of supernodes directly below the supernodes tier, this is because these addresses are required to route information through the network, if the addresses of the lower tier is corrupted then effectively all of the files on these supernodes will be cut off from the network and therefore inaccessible. To keep the lower tier information up to date whenever a supernode splits it will need to contact its parent supernode to inform it that it is no longer looking after the same hash space, if this did not happen, the routing information on supernodes would rapidly become obsolete. 3.3.3 Creating New Supernodes Creating supernodes is an integral part of the network as a poorly chosen supernode will have a serious impact on the network performance. When a new node connects to a supernode it will send it a rating out of 100, this rating will refer to the nodes performance. The rating is based on a variety of different aspects, Processor speed Memory size Speed of connection Operating system When a supernodes needs to split it will search through its database of connected nodes to find the highest ranking one, it will send a protocol message instructing it to become a supernode, the node can either reply with an affirmative message or a negative one, if the message is negative the next best node will be contacted once a node has accepted the instruction it will receive the file list and begin its functions. 3.3.4 Dealing with the Loss of Supernodes The loss of a supernode will have a serious effect on the network whatever measures are taken to deal with it. The loss of a supernode in a standard supernode network such as Kazaa is vastly different to the loss of one in this type of network. In Kazaa losing a supernode means that a 100-160 nodes loose their connection to the network and their file references are lost in a network of 3 millions users this is relatively unimportant, those nodes will just reconnect to the network via another supernode and the network will stabilise again. However the loss of a supernode in GazNET means the loss of a whole alphabetical range of files. Even worse is the fact that nodes storing files references that arent actually connected to the supernode wont even know their files have been lost. This poses an extremely complex problem, one that will have a massive effect on the quality of service provided by the network. One possibility is to simply have connected supernodes send out a overlay broadcast message saying that the supernode has gone down and those particular files must be re-sent to a new supernode, this is a perfectly viable option with a reasonably small network running over a LAN but when the number of nodes reaches the millions the broadcast will be an extremely slow and costly process and the amount of network traffic created will be massive. Using this technique, supernodes will take several minutes to recover and unlike Kazaa the network wont loose a small subset of the nodes connected it will loose every single file that is in that hash space e.g. every file that begins with the letter A. Similarly the higher the tier of the nodes, the more of the network that will be disconnected. Therefore this technique has a serious scaling problem. The second, more viable, solution is to provide the network with a greater degree of redundancy, basically every supernode will have 2 or 3 brother supernodes that will contain all the same information, the same file list, the same connected nodes and the same supernode information. When a supernode goes down one of these brother supernodes will notice and will send messages out to all connected nodes, higher tier supernodes and all children supernodes informing them of the problem. These will all make the appropriate changes in their state and the network will continue functioning in a matter of seconds instead of minutes. The main problem with this is the extra resources used to maintain these brother supernodes (processor time, network traffic), each supernode would have to forward all file lists and supernode changes on to 2 or 3 more nodes, this basically would triple the amount of network traffic the supernode is sending out. Another problem is that the unused brother supernodes represent an untapped resource, while these brothers are receiving all this information they could be dramatically cutting the stress on the working supernode. Similarly brother supernodes cant be setup as child supernodes and therefore the more heavily used real supernodes may have to be lower performance nodes than the unused brother supernodes. However despite these issues the indexed structure of GazNet means that it simply cannot tolerate extended lengths of time without a supernode, so for this architecture brother supernodes come across as being the best choice. 3.3.5 Keeping File Lists up to Date Even if all the above requirements are fulfilled the network will not work if the search results are out of date. Therefore keeping the file list up to date is an important part of the network. In Gnutella this is simply not an issue as all queries are carried out in real time, similarly Kazaa has a much easier job as a supernode is responsible for every file on a connected node therefore if that node disconnects all the files are removed from the database. Unfortunately life is not as simple for GazNet as many supernodes contain file information about one node, therefore to remove all files from the network on a particular node several supernodes will need to be notified of the nodes removal. The simplest technique would be to carry out no updating of file lists. Using this technique if a node attempts to download a file and finds that the node/file no longer exists it would contact the supernode that informed it of the file and tell it that the node has disconnected, the supernode can then remove all of the nodes files from its database. This has the advantage of requiring a minimal amount of network traffic and seriously reduces the burden on the supernode. However this process can be extremely frustrating for the users who may frequently find themselves attempting to download non-existent files. A more advanced technique would be for the supernode that the node is connected to, to remove files from the network on behalf of the node. The supernode would be informed of the nodes complete file list which it will write to disk and if the node disconnects the supernode will load the file list and contact all the appropriate supernodes telling them to remove the files. This will keep the network much more up to date but will vastly increase the burden on the supernode, not only will it have to receive and store complete lists of files on its hard drive but it will have to start contacting many different supernodes to inform them of the disconnected node. If several nodes disconnect at the same time the supernode will have a large job in front of it that may be noticeable to the supernode user. However this technique would be a good choice for quite a static network as file lists would be kept up to date but supernodes wouldnt have to start removing files very often. A similar technique would be to allocate nodes brothers that will maintain a TCP connection between each other, each brother node would know the others file list and therefore in the case of one node going offline the brother would realise and then be able to contact the appropriate supernodes informing them of the nodes removal from the network. The brother node would then request a new brother from its connected supernode; to increase reliability multiple brothers could be allocated to a node to provide for the chance that two nodes could go offline simultaneously. Probably the most practical option would be to give the file references time to live (TTL) variables which mean that files will be automatically deleted off the network after say 15 minutes and nodes will have to refresh the network. This is a nice balance between the two previously mentioned techniques as the network will remain reasonably up to date but there wont be a heavy stress on supernodes when nodes disconnect, the files will just remove themselves. However if the network is reasonably static network traffic will be dramatically increased and this would be a very bad choice, as every 15 minutes file lists will need refreshing when in fact they could have just been left alone. Possibly a better choice would be to increase the refresh time to every 30 minutes, it is a trade-off between network load and search accuracy. 3.3.6 Distributing File Lists to Supernodes Due to GazNets indexed structure the method of distribution of files list is inherently more complex than a standard supernode P2P network, this is because nodes need not merely upload their file list to the supernode they are connected to, instead they must distribute all their file references out to the appropriate supernodes spread across the whole network. The fastest way to do this would be for every node on the network to hold the address of every supernode on the network, this would allow a node to directly contact the appropriate supernodes and send them the correct portion of their file list. This solution, although fast has one glaring problem, which is its scalability; on small private networks with only a few supernodes the idea is perfectly workable, however on a public network with 30,000 supernodes it is massively impractical to hold that number of addresses. Another method would be to contact the top tier supernodes and request all the required addresses, this would be much more scalable than the previous solution as each node wouldnt have to be kept up to date with 1,000s of addresses. However there are still scalability problems as if a user has a large number of shared files a great deal of supernodes may need to be contacted to find all the appropriate addresses. The most elegant way of doing this would be to send out a query for the supernode that looks after the appropriate word, when it is found the supernode would return the correct address and the node can send it the file list. The method used is to send the file list to the supernode that you believe to be looking after that hash space. Due to a standard nodes limited knowledge of the network (i.e. just the first tier supernodes) the first thing a node would do is send the file list to the first tier supernodes, as that is the place that it believes the files should be stored. When the first tier supernode receives the file list it will have knowledge of the tier below it and therefore maybe a better place to put the files, it would therefore pass the file list on to the appropriate supernode. That supernode may also have knowledge that there is a better place to store the files so it would pass the file list once again down to another supernode. This process will continue until the correct supernode has been found, this is an elegant way of carrying out the distribution as it follows the semantics of a standard tree traversal however the passing on of file lists through the whole network will create a much larger load than just passing through the address of the correct supernode. Similarly it will put a greater burden on the supernodes that are traversed both in processing power and the amount of bandwidth used. Despite this, on a small network this method works well and is efficient in that each supernode is only traversed once. 3.4 Searching Searching is the process of querying the network to find out if any files matching certain attributes currently exist on the network. The searching part of the project can be split into two aspects The routing of search queries How supernodes search their own databases 3.4.1 Routing of Search Queries This is the how nodes actually find out where to send their search queries and how these queries find their way through the network. Where GazNet fails in simplicity it makes up in search times, its use of indexed supernodes can dramatically decrease search time. The best way to illustrate who nodes search is with an example; when the user wishes to search for a piece of music such as Moonlight Sonata GazNet will first split the words up and then look at the first letter, so in the example the letters M and S will be derived. It then looks up the supernodes that looks after the hash space for M and S, it will then send the query to the appropriate supernode, so, to the M supernode it will send the following protocol message, 080-SEARCH=Moonlight The M supernode will then consult what tier it is currently on, if it has tiers below it, it will remove the first letter of the query and look up the Mo supernode in its second level supernode list. It will then send the following protocol message to that supernode, 080-SEARCH=oonlight If this supernode contains the file it will then return the results. This recursive process can continue for a maximum depth as the word length, so for the query Moonlight, the search can continue for a maximum depth of 9.  Diagram 3.2 Tree Traversal for a Search The method of searching also makes it obvious why it so important to keep supernodes online and furthers the argument for using brother supernodes as a single break in the network will cut off all lower tiers from being searched. This method of searching also means that fuzzy searches can be carried out, using a DHT such as Pastry a search like Moonlight would be likely not to return any results, the query would have to be the exact file name such as Beethoven Moonlight Sonata.mp3. Using GazNet, the user can simply search for Sonata or Moonlight making searching a much easier process. It would also be appropriate to state that every word in a filename will be stored on the network, so using the previous example, the mp3 will be given three references on different supernodes, B, M and S (for Beethoven, Moonlight and Sonata). 3.4.2 Search aggregation GazNet is intended to be able to be set up on any network without the need to perform masses of configuration, it is therefore necessary for GazNet to be able to grow dynamically without the need for a certain number of supernodes to exist before the network can function. It is therefore more than likely that on some networks there will only be one supernode running; this supernode will therefore look after every single file on the network regardless of its hash code. If it was presumed that GazNet was running on a large public network there would be inefficient amounts of traffic created if in fact GazNet was running over a small private network on a LAN. This is because on the public GazNet network, there would be large number of supernodes and therefore each separate search element (i.e. each word in a search) would be sent to a different supernode, so it would make sense to simply send out each search separately without any processing. On a small private network there would probably be only one supernode so by sending separate search for each word in the search the network traffic would be unnecessarily increased. Searches are instead, aggregated; if a multi-word search is entered, it first decides which supernode each search element should be sent to, then it compiles one search string to send to each supernode containing all the appropriate search words separated by spaces. When the supernode receives this it is then will separate up all the words then search its database separately, then recombine the results and return them to the searching node, the node will then combine all the results from each supernode and display them as if everything had been received from one. 3.4.3 How Supernodes Search their own Databases The layout of the network also makes database searches inherently simple as well; because the files are hashed using their first letter over the network it is obvious that the best technique to store file references is to use the same hash function. Supernodes will maintain an array of 26 linked lists (one for each letter in the alphabet), therefore when a search is made, the first letter is checked then the correct linked list (Java vector) is linearly search. This technique makes the process of splitting much simpler as well, as the second half of the array simply needs to be sent to the new supernode and then deleted. 3.4.4 How Supernodes Perform Fuzzy Searches So far the network has made frequent references to the system running basically like a Distributed Hash Table, therefore something extra is required to allow the network to perform to important task of fuzzy searches. The primary technique used is to load multiple copies of each file references onto the network; each file reference would be searchable by one of the words in the file name. Therefore for the filename Aerosmith I dont want to miss a thing.mp3, the letters, A, I, D, W, T, M A T would be loaded onto the network with each word independently searchable. This will allow a user to simply type in Aerosmith and have many files returned that have the word Aerosmith in. The second method used is only something that will work on a small network with preferably only one supernode or in the cases of coincidence. A search comparison between a filename and a search word is performed by the checking of any instance of that word occurs in the string, therefore if the file was called Aerosmith-I dont want to miss a thing.mp3 or I dont want to miss a thing -Aerosmith.mp3 a positive match will still be returned even though the search word is corrupted by the presence of a dash. The reason why it works better on smaller networks is that as files get spread out over a larger number of supernodes the chances of a match coincidently occurring gets smaller, however as a single supernode network is essentially behaving like a Napster server the chances of finding a match like this are much greater. 3.5 Downloads/Uploads It is un-doubtable that the majority of time on P2P networks is spent either uploading or downloading files therefore the process must be made as efficient as possible. It is impossible to send more data through a connection than the bandwidth will allow so therefore the question of how a dial-up connection can actually manage to download at any faster than 56k is raised. The simple answer is that it cant but it is possible to utilise the maximum amount of bandwidth possible. Nowadays most P2P file share application use the concept of multi-source downloads, basically nodes will choose several nodes to download one single file from each taking for example 25% of the file. When all the downloads are completed the pieces will be put together to create the full file. Therefore if a node is downloading a file from 3 other nodes at the respective bit rates of, 1.2 Kb/ps, 0.8 KB/ps and 1.7KB/ps the total bit rate will be 3.7KB/ps where as if only one download source was used the maximum bit rate would be 1.7KB/ps. The method to select the download points is relatively simple, firstly a maximum of 5 matches are found, these are found by using the (overly simplistic) method of filename matches and file size matches. The file size is then divided by the number of download points. Therefore if the user wished to download a 1KB jpeg called Dog.jpeg and there were 4 instances of it on the network the following protocol messages would be sent out to each node. 120-DOWNLOAD=Dog.jpeg=0=256 120-DOWNLOAD=Dog.jpeg=256=256 120-DOWNLOAD=Dog.jpeg=512=256 120-DOWNLOAD=Dog.jpeg=768=256 The first number is the offset in the file to start the download from and the second number is the number of bytes to download from that offset. If the file is not easily dividable number like the example the final download will compensate for this by either downloading a larger or smaller number of bytes compared to the other downloads. When downloading a large file it is not possible to store the whole thing in memory, it is therefore necessary to stream the data to file to prevent a java.lang.OutOfMemoryError. If one source is used to download the data, it will be streamed to a single file called (using the previous example) Dog0.dat, similarly if the download has two sources, the data will be streamed to two files, Dog0.dat and Dog1.dat. This is because each download is performed separately and will posses no knowledge of the other sections being downloaded, it will simply be given a file to stream the data to. Once all the downloads are complete the files will then me merged into one file, then the file will be given the appropriate filename. One of the problems with using this method is that if one of the download sources goes offline a file may be left incomplete with one section of it missing, in such a case the missing bytes will be downloaded from the first source by creating a new download connection. When a download is stopped by a user event e.g. clicking pause or closing down the application, the data files from the download will remain in the download folder, then when the application is restarted the data files will be checked and a search initiated to try and find instances of that file on the network. If one or more instance is found, each source will be allocated a proportion of the file to download, if only one instance is found a download will be initiated for each data file at that one source, if the number of instances on the network equal the number of data files (i.e. the number of original sources) each source will be allocated one data file to complete. The maximum number of sources used will equal the number of original sources, therefore if previously there was only one source but when the download is resumed there are 5 sources, 4 of these will not be utilised because only one source would be allocated the duty of completing the file. The actual file transfer will simply take place over the same TCP connection that is being used for the protocol messages. 3.6 System Architecture  Diagram 3.3 A package and class diagram   3.7 Class Overview GazNet packageClassDescriptionClientThis class calls the P2Pgui class and will create a instance of GazNetSupernodeThis class creates a Supernode.Table 3.1 Overview of GazNet Package GazNet.database packageClassDescriptionDataFileFilterThis object is used solely by IO to filter out files of type dat, these files are incomplete downloads.FileDatabaseThis class holds FileDescription classes in a hash table, it can perform a variety of necessary functions on the database, including searching it, converting it to different formats (e.g. an array) and extracting a particular set of files.FileDescriptionThis class represents files, it contains four variables, the files name, the files size, the owner of the file (i.e. the IP address) and a hash key. The hash key is not actually a hash key but a string that is used for searching and will be modified by each supernode that the file passes through; originally the hash key will be the same as the filename but as the FileDescription passes through each tier the first letter of the hash key will be removed, this is to facilitate the recursive nature of the search algorithm.IOThis class deals with all Input/Output aspects of the system such as getting a list of the shared files and reading/writing administrative files such as NodeFile.dat.ListOfFilesThis object implements the interface, Enumeration and is used to step through FileDescription arrays.NodeDatabaseThis class hold a database of NodeElement classesNodeElementThis class represents nodes in the networkTable 3.2 Overview of GazNet.database Package GazNet.download packageClassDescriptionCompletedListenerThis is an interface for the Observer design pattern, it uses the method percentageChanged to follow the progress of a download/upload.DownloadThis class performs a single download from one node.DownloadManagerThis class implements the Singleton design pattern and therefore this one class manages all downloads. It is responsible for selecting which nodes to download from and it deals with the calculations for performing multi-source downloads.UploadThis class performs a single upload to one node.UploadConnectionsThis class listens on a given port for download requests and will pass the request onto the Upload class if one is received.UploadControlThis class ensures that large transfers are performed without the connection freezing.UploadListenerThis is an interface for the Observer design pattern which monitors new upload requests.Table 3.3 Overview of GazNet.download Package GazNet.gui packageClassDescriptionDownloadPanelThis class extends javax.swing.JPanel and deals with the displaying off all the current downloads.MyFilesPanelThis class extends javax.swing.JPanel and deals with which files the user shares and where downloaded files are stored.P2PguiThis class extends Tabs and contains the main method to run GazNet.PopupListenerThis class listens for right click on the tables in DownloadPanel, SearchPanel and UploadPanel and will display a popup menu if appropriate.SearchPanelThe class extends javax.swing.JPanel and allows the user to search for files and then displays the results.SuperNodeConsoleThis class is used for debugging and allows someone whos running a supernode to view the nodes connected to it and the contents of the FileDatabase.SuperNodeGuiThis class extends SuperNodeConsole and adds the functionality of an ActionListener so the user can actually interact with the console.TabsThis class combines all the panels into a javax.swing.TabbedPane.UneditableTableModelThis class extends the DefaultTableModel to restrict the user from editing tables that contain file information.UploadPanelThis class extends javax.swing.JPanel and displays all the current uploadsWelcomePanelThis class extends javax.swing.JPanel and is the default tab to be displayed when the gui starts up.Table 3.4 Overview of GazNet.gui Package GazNet.network packageClassDescriptionConnectionThis class deals with connecting a node to the network NetworkStartupThis class aids other classes in starting up the network, it follows the Singleton design pattern and contains many static variables that other classes will reference. It is responsible for locating and maintaining supernode addresses and when running as a supernode updating the appropriate servers with new addresses.NodeThis class deals with all interactions between the node and the supernode (excluding searches). It also deals with messages from other nodes such as popup message requests.NodeConnectionsThis class listens for connections from other nodes and then passes them on to the Node classSearchThis class is used by nodes to search for a file.SuperNodeThis class deals with all interactions with the supernode from both other supernodes and nodes.SuperNodeConnectionsThis class listens for connections to the supernode and then passes them on to the SuperNode class.Table 3.5 Overview of GazNet.network Package GazNet.util packageClassDescriptionAlphaThis class is performs operations on strings, characters and numbers that convert them into different formats depending on their purpose.BitRateThis class extends StopWatch and calculates the bit rate of a transfer and also provides other utilities to aid in the displaying on transfer informationFTPClientThis is an FTP client used to transfer files that contain the locations of supernodes to web servers GroupThis is a transfer class that wraps all classes that are transmitted over the network.ProtectedIntegerThis class is used to syncronise downloads and the compiling of search results.ProtocolSocketThis class follows the Wrapper pattern and wraps the java.net.Socket class adding functionality such as the ability to send file lists.RangeThis class holds the range of hash space that a supernode looks after, it also hold the tier that the supernode is on.RatingThis class deals generating the performance rating of a node.ReporterThis class is used to print out all debugging messages.SemaphoreThis class is a semaphore and is used by the ProtectedInteger classStopWatchThis class measures periods of time.Table 3.6 Overview of GazNet.util Package 3.7.1 Design Patterns To improve performance and increase the ease and elegance of the systems development, three design patterns were necessary Singleton In a system such as this, it is frequently required for certain variables to stay constant throughout the system, a perfect example of this comes in the form of the routing table; multiple classes will use the routing table however multiple classes can also modify the routing table, it is therefore imperative that some form of control is used to stop two classes using a different routing table. The NetworkStartup class maintains the routing table and a number of other variables that should remain consistent throughout the system. The solution devised was to use the Singleton Design Pattern, a method is provided called getInstance(), calling this method will instantiate a instance of the class and hold a reference to it in a static variable, however if the variable had already been instantiated this instance would be returned instead of creating a new one. By also making the classs constructor private it would mean that only one instance of the object can ever exist, making this the perfect choice to implement in the NetworkStartup class. Observer In certain situations in the system it is necessary for a multitude of objects to keep a single object informed of changes in its status. An example of this is in the progress field of the transfer panes; every time another percent of the file is transferred this must be displayed in the progress field. As, many simultaneous transfers can take place at one time the task of following each files progress can become quickly unmanageable. To carry out this process the observer design pattern is used; all classes that must listen (i.e. the transfer table in the transfers pane) must implement an appropriate interface containing a method that can be called to notify them of a change (e.g. updateProgress). Any object wishing to be informed of changes will be added to a vector, then when a change occurs the object will cycle through the vector calling the update method on each listening class. Decorator In the system it is sometimes necessary to add functionality to a class in a dynamic way therefore eliminating it from performed through inheritance. Such an instance is in the ProtocolSocket, where extra functionality above a standard java Socket must be supported. To do this the decorator design pattern is employed, the ProtocolSocket creates a shell around the standard java Socket and will pass on method calls to the Socket however before this, it may make modifications to the parameters. Alternatively it may make modifications to what the Socket returns. An example of this is when the read() method is called, the Socket will return an array of bytes but the Protocol Socket will return a string. 3.8 User Interface The user interface is an extremely important component of the overall system as this is the only way a user has of interacting with the network, one of the aims of the system was to provide a simple, easy to use interface which will therefore require a balance between the level of control the user has over the program and the level of complexity faced by the user. There were two original designs, the first was a simple looking straight forward GUI (design A) and the second was a GUI more closely modelled on existing P2P file sharing GUIs such as Kazaa (design B). Design As strength lies in its simplicity, it will be both easy to implement and easy to use; any user with a basic grasp of the purpose of the software will be able to begin using the interface within minutes of seeing it. However the limited design allows no customisation and gives the user little extra functionality over the very basics; an example of this is the inability to resize the screen or to select more advanced search options.  Diagram 3.5 - GUI design A Design Bs strengths are exactly what Design As weakness are, it will provide more options for the user such as the ability to select different types of searches (film, video, exe etc) and provide features like the resizing of the window. It is obvious that this type of UI would be superior to Design A for many different purposes, mainly everyday common use, this is because users would probably frequently use the application and therefore become quickly accustomed to the GUI and therefore be able to exploit the extra features, such as advanced searching which would allow user to have more control over their search results. Despite these differences, the two designs have many similarities as they both work on the same main principals. Both have tabs with similar titles and many features reside on both GUIs, the main difference lies in the size and therefore the extra features that can be put into the larger design (Design B).  Diagram 3.6 - GUI Design B. Design A was chosen because it suited most closely the requirements of the system as the system aims to focus on networking aspects rather than HCI (Human Computer Interaction) aspect, because of this, the UI is one of the lower ranking requirements (number 8). Therefore the UI is there to serve the purpose of supplying an interface between the network and the user (or tester) with the greatest ease of use rather than the most functional degree of use. Design A can best serve this purpose as its simplicity allows for quicker implementation and quicker testing, despite this main function, the GUI is also perfectly adequate for use by an average user. Full Design The design splits down into five panes, each contained on one tab; this first, the welcome screen, can be seen in Diagram 3.5, it contains two elements, a message of the day screen which is intended to contain information about updates and other information, and a connected status symbol to tell the user if he/she is connected to the network or not.  Diagram 3.7 - The search panel The search pane intends to provide a simple method for searching the network, the user need only type in the search words in the text field then click search. Any results returned will be displayed in the table.  Diagram 3.8 - The Download/Upload panel The upload and download panels are identical, they both contain a table which lists the files being transferred along with the progress of the transfer (in percentage) and the bit rate. The most complex panel is the My Files panel, which looks after the folders that the user wishes to share and the location in which the user wants his/her downloaded files to be put. The panel also displays the number of files that are being shared and their total size. The panel is dominated by a tree which will contain all the folders and all the files in those folders that are shared, the tree can be modified by using the Add and Remove buttons which will allow folders to be added or removed from the shared list. The update button will manually force the node to update the file references on the supernodes in the network. The bottom text field will contain the location in which all downloaded files are placed; the browse button allows the user to find the appropriate file using a file selection window. Diagram 3.9 - The My Files Panel 3.9 Summary This chapter has given a relatively high level overview of how the system should be implemented, excluding modification made during incremental testing this system should be an accurate representation of the end system. The following chapter covers the implementing of the design and hopes to give the reader a more low-level knowledge of how the system actually works. 4. Implementation 4.1 The GazNet Protocol Up until now GazNet has always been a reference to the designed application, however a more accurate definition would be that it is the protocol that the application merely implements. The protocol is ASCII based and works over TCP running on port 4001. It is text based, primarily to aid debugging; this was decided because of the complex nature of the network and therefore in anticipation of a number of problems. Another major factor in the choice of a text based protocol was its greater extensibility; it is likely that with prolonged testing and usage that a number of modifications to the protocol will need to be made, similarly as the network increases in size changes may need to be made to improve scalability. Extending a bit oriented protocol may become a complex affair, this is because many fields are already set and cannot be changed in the name of backward compatibility, similarly the size of packets are already set, therefore they cannot be expanded to support extra features such as longer search fields or IPv6 addresses. It is therefore clear that, at least in the early stages of the protocol, that a text based approach is superior, however it is not perfect. The biggest problem with text based protocols is their inefficiency, a good example is GazNets pong message (response to a ping), which is 000-PRESENT(Supernode); this message is 22 bytes long despite the fact that there are only two sections, the message type (000-PRESENT) and the type of node, (Supernode), this message could easily be replaced by a much smaller bit orientated message using one byte for the message type (allowing 256 different types of message) and only one bit for the node type. Diagram 7.1 shows such a protocol message, the first 8 bits show the message type (the number 1 represents a pong), and the 9th bit represents what type of node the reply has come from (0 for node and 1 for supernode). This has more than the halved size of the protocol message, which may not make that much difference on a small scale network but on a large network with millions of nodes it will represent a massive reduction in network traffic. Message TypeNode Type000000011Diagram 4.1 The Message Type field could even be doubled to allow a much greater number of possible protocol message (65536) and still the message would not be as long as its ASCII counterpart. These arguments put forward a strong case for changing the protocols format, something that may indeed be done in the future once the protocol has become stable enough to make the change but for the moment the protocol will stay text based, Table 7.1 give an overview of every message in the protocol Generating NodeProtocol MessageDescriptionSupernode/ Node000-PRESENT(Supernode/Node)A response to a ping, the value in the brackets represents the type of node that is replyingSupernode/ Node001-PRESENT?A ping to find out if a node is online and what its node type is (Supernode or node)Supernode/ Node002-OPEN?A message that is sent to verify if the TCP connection is still open, there is no reply because a exception will automatically be created if there is the connection is not openNode010-ALHPA_LOCATIONS?A request for the current addresses of all 26 top tier supernodesSupernode011-NEW_ALPHA_LOCATIONS=A message indicating that a nodes routing table is incorrect, this message will be followed by a array containing the 26 top tier supernodesSupernode022-NEW_SUPERNODE=supernodeThis message will be sent if a newer supernode has been created that must deal with a nodes request.Node030-CONNECT?A request sent by a node to find out if a supernode will accept new connectionsNode031-JOIN?A request sent by a node to find out if a supernode will accept more file lists.Supernode040-CONNECT_OKA reply from a supernode to a 030 request accepting the connection from a nodeSupernode041-JOIN_OKA reply from a supernode to a 031 request accepting a new file list from a nodeSupernode042-CONNECT_REFUSEDA reply refusing either a 030 or 031 request from a nodeSupernode/ Node050-LISTA request from a supernode for a the file list to be sentSupernode/ Node060-LIST_READYA reply from a node to a 050 request which will be followed by a file list.Supernode/ Node070-LIST_OKA reply from a supernode confirming that the file list is valid.Supernode/ Node071-LIST_ERRORA reply from a supernode indicating that the file list has either not been received or is invalidNode072-RATING=ratingA message containing the performance rating of a nodeSupernode073-RATING_OKA reply from a supernode saying that the performance rating is valid.Supernode074-RATING_ERRORA reply from a supernode saying that the performance rating is invalidNode080-SEARCH=search stringA search request from a supernodeSupernode090-SEARCH_OKA reply from a supernode saying that the query is validSupernode091-INVALID_SEARCHA reply from a supernode saying that the query contains invalid characters e.g. @Supernode100-SEARCH_LIST_READYA message saying that the search list has been prepared.Node110-SEARCH_LIST_OKA message saying that the search list has been received and it is a valid formatNode120-DOWNLOAD=filename=x=yA request to download a file stating at offset x of length yNode130-DOWNLOAD_OKA reply sent to indicate that the file resides on the node and it can be downloadedNode131-FILE_NOT_PRESENTAn error message indicating the file requested is not in the users shared foldersNode140-DOWNLOAD_READYA message sent to the uploading node to indicate the download is ready to commenceSupernode190-NEW_SUPERNODEA message to a node requesting that it converts into a supernodeNode200-ACCEPT_SUPERNODEA reply sent by a node accepting a 190 requestSupernode210-SENDING_LISTSupernode400-ALPHA_LOCATIONS_UPADTESupernode410-UPDATE_OKSupernode420-UPDATE_REFUSEDSupernode/Node900-MESSAGE=messageA request sent to a node for a popup message to be displayedSupernode/ Node999-UNRECOGNISED_COMMANDA reply sent if the message isnt recognised as a valid protocol messageTable 4.1 Protocol Overview 4.1.1 000-PRESENT 001-PRESENT? Pinging a Node When a node (or person) wishes to verify that a node is still online a 001-PRESENT? request will be sent; the reply will either be 000-PRESENT(Supernode) or 000-PRESENT(Node) depending on the nodes type. 4.1.2 030-CONNECT? The Connection Process When a node wishes to connect to the network it must connect to a supernode, the first step is to send a 030-CONNECT? request to a supernode, a reply will be then sent accepting (040-CONNECT_OK) or refusing (042-CONNECT_REFUSED) the request. If the request is refused it will be followed by a 022-NEW_SUPERNODE= supernode message, the supernode will refer to the most recently created supernode; next the supernode will send an array containing the 26 top tier supernodes this will ensure that the node has all the up to date addresses, the 022 message is sent because that supernode referenced will have the greatest chance of being open to new connections as it is youngest supernode available. If the request is accepted the supernode will send a 050-LIST request which asked the node to send its file list, the node will then send a 060-LIST_READY message followed by its file list, the supernode will then reply with a 070-LIST_OK message or a 071-LIST_ERROR depending on whether the list was valid. The next stage is for the node to inform the supernode of its performance rating, this is measured by a number between 0 and 100, and is sent in a 073-RATING=rating message. If the number is valid the supernode will reply with 073-RATING_OK else it will reply with 074-RATING_ERROR. The majority of supernodes that a newly connected node will contact will receive join requests opposed to connect requests. When a node joins a supernode it does not inform it of its performance rating and the supernode does not record the node in its node database instead it merely adds its file list to the file database. The same process is followed as for a connect request but a 031-JOIN? message is sent instead of a 030-CONNECT? message. Diagram 4.2 shows the interactions involved in a successful 030-CONNECT? request.  Diagram 4.2 Supernode-Node Interaction during the Connection Process 4.1.3 080-SEARCH=search string The Searching Process To search the network a node will first check the first letter of the search string, it will then look up the correct supernode to contact in its routing table, the node will then send a 080-SEARCH=search string to the supernode where search string is a query that the user wants to search for. The supernode will then check that the search string is valid i.e. it begins with the correct letter and it doesnt begin with a non-alpha character, if it is valid it will reply with a 090-SEARCH_OK message else it will reply with a 091-INVALID_SEARCH message. Once the supernode has searched the file database and compiled the results it will send a 100-SEARCH_LIST_READY message to the node to indicate the list is ready, it will then send the file list. If the list is valid the node will reply with 110-SEARCH_LIST_OK. 4.1.4 120-DOWNLOAD=filename=x=y The Download Process When a node wishes to download a file it will send a 120-DOWNLOAD= filename=x=y request to the node that the file resides on. The filename refers to the full filename of the file, x refers to the offset that it wishes the download to begin at and y refers to the number of bytes to transfer from that offset; x and y are used to facilitate multi-source downloads. If the file resides on the node and the node is willing to commence a transfer it will reply with a 130-DOWNLOAD_OK message, if the file doesnt reside on the node it will send a 131-FILE_NOT_PRESENT message. When the downloading node is ready to start the download it will send a 140-DOWNLOAD_READY then the uploading node will start sending the data over the same connection. 4.1.5 190-NEW_SUPERNODE Supernode Creation When a supernode wishes to split and create a new supernode it will first select the highest performance node from its node database and then send a 190-NEW_SUPERNODE message. The node will then reply with a 200-ACCEPT_SUPERNODE message, then the supernode will send a file list containing all the FileDescription object that the new supernode must add to its file database, if the file list is valid the new supernode will reply with a 070-LIST_OK message the creation of the supernode will then be complete. 4.1.6 400-ALPHA_LOCATIONS_UPDATE One of the most important requirements of the protocol is to keep the routing information on the network up to date, if one supernode becomes unsynchronized the whole network could start to collapse. To ensure this doesnt happen supernodes must inform their parent supernodes of any changes in their routing table. Changes only occur when a supernode splits so whenever this happens a supernode will contact the supernode that created it and give it the new routing information. To do this a supernode sends its parent a 400-ALPHA_LOCATIONS_UPDATE message, the parent will then reply with a 410-UPDATE_OK message; the child supernode will send a Group containing the modified supernode addresses. Alternatively the parent supernode may reply with a 420-UPDATE_REFUSED message in which case the child will not be able to send the update. 4.2 The ProtocolSocket The GazNet protocol makes use of a variety of different transport methods, the most frequently used method of communication is threw ASCII strings, however on top of this, the protocol uses object transmission and byte streams; because of this a class called ProtocolSocket was defined to perform all tasked involved in the transmitting the protocol. MethodDescriptionprotocolFetch():StringReceives a protocol message e.g. 080-SEARCHprotocolSend(String s)Sends a protocol messagegetList(): GroupReceives a Group object (see section 4.3.2)sendList(Group g)Sends a Group object (see section 4.3.2)getObject(): ObjectReceives an ObjectsendObject(Object o)Sends an ObjectTable 4.2 Function of the ProtocolSocket class The ProtocolSocket is a wrapper class, it contains an instance of a Socket class which is used to actually transmit data but before it is forwarded onto the Socket it is in some way modified, for example the protocolSend(String s) method accepts a String as a parameter but passes a byte array on to the Sockets write method. There are two constructors in the ProtocolSocket class, the first accepts a String and an integer, the String contains the IP address to connect to and the integer is the port to connect to; this constructor is used when a node wishes to initiate a connection with another node. The second constructor accepts a Socket as a parameter, the ProtocolSocket then sets this as the Socket to wrap; this constructor is used when a node has received a connection from another node. The ProtocolSocket class also carries out the important function of maintaining a list of all the connections a node has, this is important because The application is multi-threaded and therefore connections need to be managed to prevent them from interfering with each other Some connections are persistent and kept open throughout the nodes life, it is therefore necessary to ensure that multiple connections to the same node arent opened to prevent inefficiencies and errors. Sometimes a class that doesnt have a reference to the correct ProtocolSocket might need to contact another already connected node, by keeping a connections list it allows any class to access any Socket that it requires. The connections list is held in a static Vector in the ProtocolSocket class; whenever a new ProtocolSocket is constructed it will first check the connections list to ascertain whether or not a connection already exists to that IP address and port. If no open connection exists the Socket variable in the new ProtocolSocket is initiated and the new Socket is added to the activeConnections Vector. If the connection already exists no new Socket is initiated and the Socket variable inside the new ProtocolSocket is set to the existing Socket from the activeConnections Vector. 4.3 Data Structures The whole premise of P2P file sharing is the distribution of data, therefore data structures play an important part in this project. The following section deals with the three important data structures the Range, the Group and the File Database. 4.3.1 Range The Range class is a very important class in the implementation; it is used to represent the range of letters (A-M, N-Z etc) that a supernode is looking after. When a supernode splits it will modify its own Range in accordance of its new duties, it will also send a Range object to the new supernode informing it of the range of letters that it is looking after. The Range class stores ranges using two integers that have the values 0 25 representing the letters A Z; these values are stored in the variables, first and last and are referred to as the first range and the last range. Due to GazNets tree like structure it is also necessary that the Range class has the ability to differentiate between the tiers of the network tree; to do this another integer called tier is used, the first tier is represented by 0 and each lower tier is represented by the number of hops from the first tier e.g. the second tier is represented by 1. 4.3.2 Group The Group class is the main object of network transfer used; it is used to store arrays of other objects when they are being transferred over the network. It has two private variables, and Object array, contents[] and a Range object, range. The object is primarily used to transfer arrays holding FileDescriptions however it is also used to transfer arrays containing supernode addresses, because the Group class stores Objects any subclass of Object can be used. 4.3.3 The FileDatabase The FileDatabase is the most important data structure in the project, it is responsible for holding looking after files and performing a number of different operations on them. The type of element stored in the FileDatabase is the FileDescription; this class holds information specific to each file, the following table list the variables stored in it. VariableTypeDescriptionfileNameStringThis is the filename of the file it representsfileSizeStringThis is the size of the file it representsownerStringThis is the IP address of the computer that the file resides onhashKeyStringThis is used to search for files. Every time the file is passed down to another a lower tier, the first letter is removed from the hashKey (which originally equals the fileName). Similarly when a search request is passed down to a lower tier the first letter is removed from the search string, this recursive process makes the implementation far more elegant.beenUsedbooleanThis is used in the search algorithm; because multiple copies of one FileDescription are distributed throughout the network it is possible that one supernode may end up storing multiple copies of the same FileDescription in its database. Therefore when searching its databases the beenUsed variable will be set to true after it has been added to the search results; only FileDescriptions with their beenUsed variable set to false will be checked, this is to prevent multiple copies of one FileDescription being returned in search results.Table 4.3 Overview of the FileDescription class The FileDatabase serves two purposes, when being used in a node it stores all the files that reside on that node however, very little of the functionality is used and its main purpose is to split the files up into the appropriate hash space. The main functions of the FileDatabase are used when the computer is running as a supernode, obviously its abstract purpose stays the same, to store files, but a supernode will be storing a much higher number of files from all over the network so therefore performance is a big issue. How the File Database stores files This is probably the most important aspect of the File Database, as this its primary function. Files are stored using the same hash function as is used on the overall network i.e. files the hashed by their first letter. Each instance of a File Database has an array containing 26 Vectors, each Vector holds FileDescriptions whose hashKey begins with a particular letter. When a FileDatabase object is constructed it is given a list of FileDescriptions which are then linearly scanned and placed in the appropriate vector. The FileDatabase also has a load method which allows extra FileDescriptions to be added to the database at any time. It is obvious that this is not the most efficient way of storing file references as faster lookup time could be obtained by using a different hashing algorithm however by using this technique much faster supernode splitting times can be obtained as little processing has to go on to find out which FileDescriptions to be sent to the new supernode, all that needs to be done is to pass on the Vectors that lie in the alpha range of the new supernode. How the File Database is searched There are two methods in the FileDatabase class used for searching, a public method, searchKey(String searchString) and a private method, search(String searchString, int vector, Vector searchFiles, Vector changed). searchKey receives a String as a parameter, this String is what the File Database is being searched for, it will split the String up into separate words and then call search methods passing in each separate word. The search method takes 4 different parameters, the first is the searchString, then second is the index of the Vector array that should be searched, the third is a Vector in which the search results should be put into, the fourth is a Vector in which all the searched FileDescriptions should be put into, this is so that the beenUsed variable (see Table 7.2) can be set back to false. When the search method is called it will do a linear search of the appropriate Vector looking for matches, any search results will be placed in the searchFiles Vector. As one supernode store more than one Vector of FileDescriptions it is possible that multiple search methods will be called on different Vectors; the same searchFiles Vector will be passed into every call of the search method. Once every search method has completed the searchFiles vector will contain all the results from that supernode. Other functions The FileDatabase class also carries out a number of other functions such as the removal of files and the retrieval of Ranges of files. Probably the most notable other function carried out is the cutList() method. When a supernode creates a new tier, it cannot simply pass a portion of its File Database on to the new supernode as it would do if it was splitting on the same tier. Instead it must halve the database on the second letter rather than the first, it therefore uses the method cutList() which returns a new FileDatabase containing all the FileDescriptions in the supernode but arranged in the database based on their second letter, this FileDatabase can then be split just as if the supernode was splitting on the same tier. Another important feature of the FileDatabase is that of storing the Range which the supernode is looking after, this is kept in a static variable that can be accessed by any other class. 4.4 Important Algorithms The following section will outline three important algorithms in the implementation, the splitting algorithm, the multi-source download algorithm and aggregating search algorithm. 4.4.1 The Splitting Algorithm Undoubtedly the most important algorithm in the entire system is the splitting algorithm; the modification of this algorithm can either improve or degrade performance dramatically, more so than any other element in the system. The splitting algorithm deals with removing files from a supernodes file database and allocating responsibility for them to another supernode. The process of splitting is carried out over two methods, split() and createNewSuperNode(Range r), the former calculates the new range for the child supernode to look after and the later deals with removing the appropriate file references and updating routing tables. The system works on the premise that supernodes will look after blocks of contiguous letters, as long as this is adhered the splitting algorithm can be changed in any way without affecting the rest of the system. The splitting algorithm used is the most simple available, every time the supernode splits its hash space is halved and the later segment is allocated to a new supernode. When a supernode reaches a state in which it is only looking after one letter (e.g A), it then must split to create a new tier, this tier will look after the next letter in the word (e.g. Ae), when a supernode splits to a new tier exactly the same splitting algorithm is used, the hash space is simply halved again but this time based on the second letter. public Range split() { if(the supernode only looks after one letter) { //needs to create a new tier set this supernodes range to 0-13 return a Range of 14-25 with a tier of this supernodes tier+1 } else { int first = the first range of this supernode int last = the last range of this supernode int myLast = ((last-first)/2) + first set this supernodes range to first myLast return a Range of myLast+1 last } } The second part of the splitting process is to actually carry out the split based on the Range supplied by the split() method. public boolean createNewSuperNode() { Range childRange = split(); boolean sentOK = notify child supernode of its duties if(sentOK==true) { remove childRange from file database set child range in routing table to new supernodes addr return true; } else { return false; } } 4.4.2 Multi-source Downloads An important part of the overall project is the downloading process as this constitutes the largest proportion time spent on the network. It is therefore necessary to make the process as fast as possible. The method used by GazNet and many other file share applications is that of multi-source downloads i.e. downloading different parts of the file from multiple different nodes therefore utilising as much bandwidth as possible. Two classes are involved in the download process, the DownloadManager and the Download class. The DownloadManager implements the Singleton design pattern and manages all downloads. When the user wishes to start a new download, the application calls the addDownload(FileDescription[] files, int selected) method, the array contains all the files that the users search returned and the integer is the index in the array of the file that they wish to download. The DownloadManager will then search the array to find matches with the selected file, matches are decided based on whether the filename and the file size match. From this process a maximum of 5 file matches will be returned, the next process is to divide the file into portions that can be downloaded from separate sources. Splitting the file into download portions There are multiple processes that take place to carry out a multi-source download, these processes are implemented in 4 different methods; these methods support the pausing and resuming of files. This method generates the length of each segment depending on how much has been previously downloaded therefore allowing downloads to be resumed. long calculateChunkSize(FileDescription file, int numDownloadPoints, int num) { chunkSize = size of file / number of sources if (exists a data file containing part of the download) { remove this portion of the file from the chunk size } return chunkSize } The calculateStartPoint method finds the position in which the download should begin, this is calculated by adding the start position of the segment and how much of the file has already been downloaded, together. long calculateStartPoint(int num, long chunkSize) { if (exists a data file containing part of the download) { return (how far the download has already progressed + the position of start of the segment) } } The calculateFinalChunk method calculates the size of the final segment of the file, it is calculated by taking the starting point of the download away from the total size of the file. long calculateFinalChunk(long startPoint, int num) { return total size of file starting point of final download } The final method uses the previous three methods to initiate a new download, for(number of download sources-1) //loop through all but the last download { calculate chunk size; calculate start point; begin new download } calculate final chunk size begin new download of remainder of file When a point to point download is initiated, it is handled by the Download class, if it is a multi-source download it is given five parameters, public Download(FileDescription f, long first, long len, ProtectedInteger fin, File dataFile). The FileDescription is the file that is to be downloaded, this will also contain the IP address of the download point; first is the position in the file to start to download from; len is the number of bytes to download from the starting point; fin is used to coordinate all the downloads so the DownloadManager can tell when all the segments have been downloaded; dataFile is the file in which the bytes should be put into. 4.4.3 Aggregating Searches Supernodes will frequently, especially on a small network, look after ranges of hash space rather than just one letter (hence the need for a Range data structure rather than merely one integer), it is therefore necessary to sometimes send multiple search words to one supernode. Without any extra processing a node would simply send multiple separate searches to the supernode, this would represent a waste of bandwidth, as every search query would also have extra information with it (i.e. the overhead of the protocol messages). The search aggregation algorithm is split into two sections, the first breaks up the search string into separate tokens and selects the correct supernode to send them to; the second part aggregates the search words that are going to the same supernode into the same query. String[] strings = new String[26]; while( still more search words) { int index = value of first letter in search word //A=0, B=1Z=25 strings[index].concat (next search word) } This algorithm will create an array of size 26 with the appropriate search words in each element, e.g. using the example Beach Boys, strings[1] will contain Beach Boys, if it was The Beach Boys, strings[1] will contain Beach Boys and strings[19] will contain The. This array is then passed onto the next algorithm which will decide which addresses to send the queries to. Range range = new Range // range = 0 to 25 set last range to 0 for (int i = 0; i<25 i++) { if((i<25) && (supernode i == supernode i+1)) //have the same IP address { add one to the last range } else { String temp for(int b=range.firstRange; b<=range.lastRange; b++) { //goes through all matching supernodes concatenate strings[b] to temp } create new search to supernode i for String temp set range first range to i set range last range to i } } The algorithm, goes through an array of the top tier supernodes and will create a Range object of the first sequence of matching supernodes, the next part of the algorithm will then go through the string array supplied by the previous algorithm concatenating all the strings in the range into one string, a new Search object will then be created using that one string. The Ranges first and last values are set to i and the process carries on until every supernode has been checked. 4.5 Summary This chapter has aimed to give a more in-depth look at the underlying functioning of the system, however this has taken away somewhat from how the system will appear to the end user, the following chapter aims to give an indication of how the system is to use. 5. The System in Operation This chapter summarises the general actions a user will perform in an average session using GazNet, it aims to convey what it would like to actually use the program. 5.1 A Typical Session Obviously the first action to be performed will be to load the program, in its current state the user must load the program up from the command prompt however in the future it will be accessible by simply double clicking on a .jar file.  Diagram 5.1 Loading the application  Once the program has loaded up the user will be faced with the GazNet welcome page, there are two salient feature to note here, the first it a Message of the Day window which will download an MOTD from a web server, this will be used to inform the user of problems with the system, updates, new features etc. The second point to raise is the connection status sign at the bottom left side of the window; when GazNet is initially loaded up it will be attempting to connect to the network, at this stage the connection status will say Connecting, once it is connecting the status will change to Connected to GazNet. Diagram 5.2- The Welcome Screen Presuming this is the first time the user has used GazNet, he/she may wish to add some shares. Therefore the next step is to go to the My Files tab which will then present a window showing a list of the folders that are shared. The user will then click on the Add button to add a share, he/she will then be presented with a window that will allow him/her to select folders to be shared, after he/she has chosen the folder to share he/she must click Share Folder.  Diagram 5.3 Adding a new shared folder Users can similarly remove shares by clicking the remove button, a confirmation box will be displayed to verify if this is what the user wishes to do. The folder in which downloaded files are placed can also be modified using this window. The user must click on browse and then select the folder in a similar fashion to the adding shares. It is not possible to directly type the path into the text field to ensure that invalid path names are entered, therefore creating exceptions during downloads.  The next step is to start searching the network for files, to do this the user will move to the Search tab, searching in GazNet is a very straight forward process in which the user must simply type the query in to the search text field and then click search. The above table will then display a list of all the results. If the user wishes to download one of these files he/she can either double click on the file or right click then select download from the popup menu. If the user then moves to the Download tab the file will be the listed there with the percentage of the download that has completed and the current bit rate. Similarly if anyone is uploading files from his/her computer the same format will be displayed in the Upload tab. If the user wished to cancel a download he/she can right click on the appropriate file to bring up a popup menu, this menu will allow the user to cancel the download; similarly if the user had interrupted the download before it had completed he/she would be able to resume it by selecting resume. Once the file has finished downloading, the user will also be able to open the file from the application by selecting open from the popup menu, this will open the file in the default application. The user however does not have any such features in the upload panel, this is to stop him/her from simply leaching off the network by cancelling all uploads and not sharing his/her files.  Diagram 5.5 The download panel  Diagram 5.6 The upload panel 5.2 Summary This chapter has outlined the processes carried out by a user during a typical session, however it has not given any indication of what sort of underlying processes that these actions actually initiate. The next chapter outlines what actually happens when the system is running. 6. Process Description Although the interactions with the user are relatively simple the underlying processes that are being carried out are much more complex. This chapter gives an overview of what the application does to service the users request; some processes have been simplified to make them easier to understand. 6.1 The Connection Process When the user first starts GazNet the first process that must be carried out is to actually connect to the GazNet network. The primary method used here is to cycle through a cache of supernode addresses attempting each one in turn until a connect is accepted or the node is informed of another supernode that will accept the connection.  SHAPE \* MERGEFORMAT  Diagram 6.1 The connection process When the node first starts up, the P2Pgui (the main class), will obtain the locations of the supernodes from the NetworkStartup class; this will have obtained a list of supernodes the from the supernode cache then cycled through these addresses one of them will send the node a list of the current supernode addresses. It will then obtain the list of its shared files from the IO class. The P2Pgui object will then create a Connection class that will connect to the node to the network. 6.2 The Searching Process Probably the next thing a user would wish to do is to search for a file, to do this a user would type in a query in the search panel, this would in turn create a Search object, this object would then get the addresses of the appropriate supernode from the NetworkStartup object. The next task is to send the query to the supernode, when the supernode receives the query is will run a search method which will call another search method in the FileDatabase which return a list of all the search matches. The supernode would then send the results over the TCP connection back to the searching node.  Diagram 6.2 The Search Process 6.3 The File Transfer Process After the user has found a file they want, they will attempt to download it, the search panel will add the download to the DownloadPanel which will in turn add the download to the DownloadManager. If the download has multiple sources the correct segment sizes will be calculated then subsequent Download objects will be created to service each source. The Download will contact the Upload object on the remote node and the file transfer will begin. Every 64KB, the Download object will send a message that will be dealt with the UploadControl object to indicate that it is ready for the next 64KB, the UploadControl object will then inform the Upload object to send the next section. Once the download is complete (for all sources), the DownloadManager will be informed and it will write the file to disk, if there were multiple sources they will all be combined. Finally the DownloadPanel will be informed and it will indicate that the download is complete.  SHAPE \* MERGEFORMAT  Diagram 6.3 The Download Process The DownloadManager will create multiple instance of the Download class, one for each source; Diagram 6.3 shows a single source download, if it was multi-source, several Download objects would be created and each would perform the same task as the above. 6.4 The Splitting Process This process is one of the most important in the application, as this is responsible for creating the indexed structure of the network. When the supernode realises that it needs to split is will initiate the createNewSuperNode() method which will in turn call the split() method which will return the Range of the new supernode and also modify its own Range. The createNewSuperNode() method will then call the notifiyChildSuperNode() method which will retrieve the file references to be sent to the new supernode then contact the Node which is to be converted to a supernode. The node will then be converted and sent the appropriate file references  Diagram 6.4 The Splitting Process 6.5 Summary The four listed processes are only a tiny subset of all the processes and method calls that occur during the lifespan of the application but it can still be seen that, even with simplification, the system carries out some complex tasks, because of this detailed testing needs to be carried out to ensure the effectiveness of the system. The following chapter will describe some of the testing mechanisms used and give an overview of the results obtained. 7. Testing In a distributed system, especially one which intends to have no central point of control, a rigorous testing regime is required, even after heavy testing it is unlikely that the system will be fully de-bugged, therefore on top of the testing there must be a great deal of elegant error handing to ensure a reliable system. 7.1 The Test Bed There are always problems in testing a system that is intended to run in a distributed manner over many computers, therefore an appropriate test bed must be devised to allow the well structured testing that such a system needs. Unfortunately it is impossible for a single computer to execute multiple copies of the GazNet application simultaneously, the reasons for this are two fold, the first is that all instances of GazNet will run on the same port, therefore making it impractical to run more than one on a single computer. The second reason is that as not all supernodes maintain connections with other nodes when communications need to be made (e.g. for a search) therefore a new TCP connection would need to be created, for this to happen each node will need a separate IP address as there is no allowance in the protocol for multiple instances of GazNet to share the same IP address. These two problems mean that to test GazNet, a series of computers must run the application, this is perfectly viable to test network on a single tier but impractical when the network becomes large enough to create new tiers. Therefore to test the network on a larger scale a simulator was developed to verify the performance of the network when in excess of 100 nodes connected. 7.2 How the System was Tested The system was developed in very much a component based manner, this therefore led to the use of incremental testing, with each function of the system being perfected before the next stage was begun. The stages can be roughly compared to the packages, a good example of this is the download package which is almost fully self contained. Early design stages were tested on a small network of 2 computers, one acting as the supernode and another as a connecting node. This was sufficient for the early stages of developing the protocol, as things like the connection process only involves two nodes. The next stage required the network to be extended to 3 computers as more advanced processes needed to be tested such as multi-source downloads and supernode splitting. However once the majority of the system was built, the network needed to be expanded dramatically to accommodate the creation a several supernodes running a number of nodes. Generally testing the network took the form of, creating the next stage of functionality creating a network condition to test it if it worked create other network conditions to test it else fix the problem and try to test it again. by carrying out this process, the system could develop on a solid platform of previous work, therefore if the connection process ceased to work, this could be attributed to the latest additional component to the system as it had already been ascertained that the connection process functioned correctly. 7.2.1 Testing Utilities To aid the testing of the project multiple testing utilities were used, one of the most important was a packet sniffer, the one most frequently used was AnalogX. Using this application allowed monitoring of every single communication that went on between the different nodes; as the protocol is text based this made the process even more easy. The second utility used was a self written C application similar to telnet, this allowed commands to be manually sent to a supernode or node, forcing them to commit certain action, this was especially helpful when trying to make a supernode split. It was also helpful for testing multi-source downloads, as figures could be manually entered instead of calculated by the DownloadManager. A simple utility, that resides in the GazNet.util package is the Reporter, this contains methods that will print out messages to the screen. Statements are split up into writes and errors, and are accompanied by methods that allow either type of statement to stop being displayed on the screen. This allows not only debugging statements to be switched off but also easily allows errors to be written to disk or to a remote location making the viewing of errors much easier. The alternative to doing this is using System.out.println() statements which suffer from the problem that after the coding has finished and been tested every println statement will have to be removed. 7.2.2 The Simulators Two simulators were used to test the design better; the first one simply scanned a list of files then created a particular network tier and displayed statistics about the load that those files put on the network. The second was more complex and actually built the network; the simulator can be given a number of nodes that will be on the network then it will begin to add the nodes, building a network node by node. Originally the network will start off with 26 supernodes but as the network gets larger more tiers will be created. As this process goes on, output will be streamed to a file, giving details of what files are added to supernodes and how supernodes are split. Using the simulator revealed a massive flaw in the current implementation of the splitting algorithm, which would not have shown itself until the network had reached a much larger size. The problem was that the latter part of the tier (i.e. supernodes like S and X) had problems splitting because the original algorithm was only gave consideration to splitting the early part of the alphabet. This problem led to range like X-R which obviously would lead to the collapse of the network. The simulators proved invaluable for the testing and evaluation process and have ultimately resulted in a more efficient implementation, it would have perhaps been better however, to have created the simulators before the implementation of the actual program. 7.3 System Test Results Once the system was finished a set of tests to validate the standard functionality of the system were devised, these tests aim to ensure the functionality of both the networking and the file transfer aspects of the system. Table 7.1 7.3 outline the tests carried out to verify the functioning of the system; these tables dont contain the complete test results and display no incremental testing. Number of Supernodes = 1OperationExpected OutcomeActual OutcomeCommentsConnecting to a supernodeConnection process carried out and acceptedAs expectedJoining a supernodeJoin process carried out and acceptedAs expectedAlthough a Join will work it wont be required in a single supernode network as every node will Connect to the supernodeSearching the network for an existing fileA Group will be returned containing appropriate results.As expectedSearching the network for a non-existent fileAn empty Group object should be returned, No Results should be displayed on the search tableAs expectedSplitting the supernodeThe supernodes range and file database should be halved. A new supernode should be created on an existing node with a FileDatabase containing the old supernodes filesAs expectedIf no nodes are connected to the supernode, nothing will happen and all future Connect/Join request will be refused.Removing a node from the networkThe supernode should realise the nodes disconnection and remove all file references belonging to that node.As expectedNumber of Supernodes = 2Connecting to a supernodeConnection process carried out and acceptedAs expected but due to the supernode cache usually a node will attempt to connect to the original supernode which will then re-direct it to the new supernode. Sometimes when the supernode is re-directed, the original supernode is not Joined as it should be, this leaves files absent from the network.This is a problem inherent to the system as there is no way of the new node finding out the new supernode without the original supernodes help. The supernode is Joined incorrectly because the node decides which supernode to connect to before it actually Joins any other supernodes, therefore when the connect is refused it doesnt Join, instead it simply leaves it.Joining a supernodeJoin process carried out and acceptedAs expected but due to the supernode cache usually a node will attempt to connect to the original supernode which will then re-direct it to the new supernode.Searching the network for an existing file residing on the new supernodeSearch attempt will be sent to original node and then re-directed to the new supernodeAs expectedSplitting the original supernode againSplitting process again, this time other supernode should be informed of the new supernodeAs expectedEvery supernode on the tier will be informed of the new addresses when a supernode splitsSplitting of the new supernodeSplitting process again, this time other supernode should be informed of the new supernodeAs expectedWorks in the same fashion as original supernode.Taking new supernode offlineThe original supernode should notice the absence then create a new supernode to take its place. All connected nodes should start to look for a new supernodeAs expected but nodes have no knowledge of the loss of their supernode.Although a new supernode is created it has no knowledge of the old supernodes files or connected nodes. The nodes dont know their supernode is offline because only the server side of a TCP connection will notice the loss of the connectionTaking original supernode offlineThe original supernode should notice the absence then create a new supernode to take its place. All connected nodes should start to look for a new supernodeThe new supernode doesnt realise the old supernode has gone down.Only the original server will notice if the TCP connection fails, the newly created supernode will not know until it tries to send data over the connection.Removing a node from the networkThe supernode that the nodes is connected to should realise the loss of the node then remove the appropoiatae file references. All other supernodes wont remove the file references from their supernodesAs expectedThis happens because the supernode that the node is connected to maintain a TCP connection therefore it can tell when the node leaves the network. However the other supernodes have no knowledge of the nodes status so dont remove the files.Number of Supernodes = 4Connecting to a supernodeConnection process carried out and acceptedAs expected but due to the supernode cache usually a node will attempt to connect to the original supernode which will then re-direct it to the new supernode. Sometimes when the supernode is re-directed, the original supernode is Joined as it should be, this leaves files absent from the network.This is a problem inherent to the system as there is no way of the new node finding out the new supernode without the original supernodes help. If the system was running on a larger scale with more supernodes in the cache this problem would not occur The supernode is not Joined correctly because the node decides which supernode to connect to before it actually Joins any other supernodes, therefore when the connect is refused it doesnt Join, instead it simply leaves it. This is leading to high numbers of files not being added to the networkJoining a supernodeJoin process carried out and acceptedAs expected but due to the supernode cache usually a node will attempt to connect to the original supernode which will then re-direct it to the new supernode.Searching the network for an existing file residing on the new supernodeSearch attempt will be sent to original node and then re-directed to the new supernodeAs expectedSplitting one of the supernodesThe split process should complete and all other supernode be informed of the new addressesAs expectedTaking new supernode offlineThe original supernode should notice the absence then create a new supernode to take its place. All connected nodes should start to look for a new supernodeAs expected but nodes have no knowledge of the loss of their supernode.Although a new supernode is created it has no knowledge of the old supernodes files or connected nodes. The nodes dont know their supernode is offline because only the server side of a TCP connection will notice the loss of the connectionTaking original supernode offlineThe original supernode should notice the absence then create a new supernode to take its place. All connected nodes should start to look for a new supernodeThe new supernode doesnt realise the old supernode has gone down.Only the original server will notice if the TCP connection fails, the newly created supernode will not know until it tries to send data over the connection.Table 7.1 Testing of the Network Testing File TransfersOperationExpected OutcomeActual OutcomeCommentsPerforming single source downloadDownload completes with the correct status being shown in the GUIAs expectedPerforming multi-source downloadDownload completes with the correct status being shown in the GUIAs expectedPerforming large download (50MB+)Download complete with appropriate bit rateFrequently the download would freeze after a certain percentage (it varied) then the connection would time out.A new class UploadControl was created that would send a confirmation back to the uploading node every 64KB, this kept the download going.Performing single source download, then taking the source off-lineDownload should stop Exception thrown and the download stopsAlthough the expected outcome occurs, it would be better to automatically search for a replacement source. The program doesnt allow another download of the same name to be started until the previous one has been cleared.Performing multi-source download then taking one of the sources off-lineSource download should stopAs expected, all other source downloads continueNo action is taken to find a new source, therefore leaving a segment empty.Resuming a single source downloadThe download to complete OKAs expectedThis works, but the incomplete file must be search for and then downloaded manually, there is no indication of an incomplete download in the GUI.Resuming a multi-source download with less sources than originallyThe download should complete OK, the first source should take on the load of the missing sourcesAs expectedThis works, but the incomplete file must be search for and then downloaded manually, there is no indication of an incomplete download in the GUI.Resuming a multi-source download with more sources than originally The download should ignore the extra sources and just use the original number of sourcesAs expectedThis performs as expected but it would be better to exploit the extra sources rather than ignore them.Attempt a download to a node that doesnt posses the file.A protocol error message should be returnedAs expectedAttempt a multi-source download with a source that doesnt posses the file.A protocol error should be returnedAs expected but no new download is initiated to replace the source so one segment is left empty.This must be rectified to make the download process practical.The downloading node goes offline before the download is completeThe uploading node should throw an exception and the upload should ceaseAs expectedNo change is made to the GUI so the user doesnt know the upload has stopped.7.2 Testing of the Download Features Testing the GUIOperationExpected OutcomeActual OutcomeCommentsTrying a valid searchIf there are search results they should be displayed in the table. If there are no search results a message in the table should say No search resultsAs expectedTrying an invalid search e.g. %A message should inform the user that it is invalidA message comes up in the table saying None Alpha QueryIt would perhaps be better to show a more helpful messageTrying to download these error messages (No search results or None Alpha query)NothingAn download is attempted but no download is added to the download panel.It would be better to remove the popup menu option when an error message is showing.Cancelling a downloadThe download should be stopped and the progress field get replaced with CancelledAs expectedResuming a cancelled downloadThe download should resume and the progress field should start counting againA new download is created on the table saying with its status as Connecting and the original instance of the download will begin to count again. Sometimes the progress counter will exceed 100% and the file will not be written to disk.The extra table entry shouldnt be added and when the file isnt written to disk problem must be rectified.Resuming a cancelled download but without any sources to download from.No change in the bit rate fieldAnother entry in the download table is added with its status as Connecting and the original download entry sets its progress 0% but nothing actually happenedSome different entry should be added, like cant find new sourceAdding a shareThe share should be added to the tree and to the share file.As expectedThe modifications will only be added to the actual supernode when the program is restartedRemoving a shareThe share will be removed from the tree and the share fileAs expectedThe changes will only take effect after the program has been restartedClicking the update buttonDoes nothingDoes nothingNeeds to be given the functionality to actually update the supernodesChanging the download locationSwitch the folder in which downloads are placedAs expectedAlthough it changes it, the new location is not saved to file. When the program is restarted again it will have gone back to the default C:\Downloaded\Connected message on Welcome screen when the node connects to the networkThe message changes from Connecting to Connected to GazNetAs expectedAlthough the message changes it doesnt change back to Connecting if the connection is lostScrolling down shows more resultsShows more resultsAs expectedThe scroll bar is always present always with 50 elements in the tableChanging the results when the table is scrolled down to the bottomTable should scroll back to the topThe scroll bar doesnt change positionThe user must scroll the bar back up to the top to see the new results.Table 7.3 Testing of the GUI 7.4 Summary of Errors The application, although, works in a number of ways still suffers from a number of different bugs and errors in all areas of the implementation. 7.4.1 Networking The networking side of the implementation suffers from a series of limitations and errors, The network is limited to one tier File lists have a tendency to become un-synchronised and out of date Nodes have the inability to realise when their supernode has gone offline There is little support to replace supernodes that have gone offline The first problem is that the network has no support to increase past the first tier of supernodes, this limits the size the network can become. There are several limitations that stop the network expanding (which all lie in a lack of implementation). The main reason behind the inability to create lower tiers is that only the routing for the first tier is implemented, similarly searches dont pass through the tiers nor do file lists. However the main building blocks for multi-tier splitting have been implemented; for example the splitting algorithm has the ability to create a new tier also, the NetworkStartup class has a lower tier array that can contain the IP addresses of the tier below. The second problem is also prevalent, this is for two reasons; file lists become out of date because, with the exclusion of the files residing on supernodes belong to a node that is connected to that supernode, there is no implementation for removing files from the network. However this problem is slight and can easily be implemented, the larger of the two problems happens when the number of supernodes starts to increase. When a supernode refuses a connection the node will connect to the newly created supernode, however because the algorithm decides where to put each file references before the actual process starts it wont dynamically react to the changing of the supernode structure, it will therefore not try to re-join the supernode that has just refused it. As this process repeats itself the network will become gradually more out of date. One of the problems with a TCP connection is that although, a server can realise when a client has gone offline, the client cant notice when the server has gone offline, this leads to problem 3. A node will not change its state at all when its supernode goes offline, instead it will still consider itself connected to GazNet. It will only realise its disconnection when some sort of contact is attempted with its parent supernode, this will result in an exception and the application will need to be restarted to reconnect to the network. There wont be any problems if the node attempts to contact any other supernode as this action creates a new TCP connection rather than using an already failed connection. The fourth problem is a major problem with the network as every other problem could be considered, in some way, to some extent trivial, a first tier network still allows quite a lot of users and its not that bad if a user has to restart the program to reconnect to the network however reliability issues do have serious repercussion for the network. If a supernode goes offline, in the design a brother supernode should immediately take over the supernodes duties however, due to time constraints this wasnt implemented therefore when a supernode fails there is no way of recovering the lost data. However the network does have a certain degree of reliability, if a supernode fails its parent will detect this (through a break in the TCP connection) and will then allocate the failed supernodes range to a new supernode. This will insure the structure of the network is maintained however it will not insure the integrity of the file lists, as there is no way of recovering the lost data from the failed supernode. 7.4.2 File Transfers This area of the implementation was possibly the most error ridden, thorough use of incremental testing helped fix many bugs but extended black box testing revealed that a number of previously unthought-of problems existed. The loss of a download source means will not be replaced by either a new or an existing source Resuming downloads in the same session that the download was stopped sometimes leads to the progress counter being corrupted and the file not correctly writen to disk. The first error occurs when download source (either single source or multi-source) fails; when this happens the download will simply stop, no attempt will be made to locate a replacement sources, instead a user must manually restart the download, choosing a different source from the search results. The second error occurs when a download for some reason (node failure or cancelling) fails, when the download is resumed, the node will search for instances of the same file then attempt to restart the download if a copy is available, however sometimes the download wont complete and the progress indicator will exceed 100%. 7.4.3 The User Interface The GUI could be considered to a great extent a success, most features work and the errors that exist are superficial. The main problems are as follows, Resumed downloads add a new instance of the download to the download table The scroll bar on the search table does not automically return to the top of the table when a new search is carried out. The first problem is not a serious matter as it doesnt affect the actual download process, however it does create confusion for the user as the status of the download stays at Connecting even though the original entry in the tables status continues to increase as normal. Error 2 is a more serious problem as it can cause genuine problems for the user, this is because if the first search yielded 50 results and the user scrolled down to the bottom then enters a new search which only yields 5 results, the table would appear blank because the user would be viewing the bottom 19 entries and obviously if there are only 5 results the bottom 19 entries would be blank. 7.5 Incremental Testing As has been mentioned earlier incremental testing constituted a major part of the overall testing of the system. The system was developed very much in stages with different processes being completed before the next one was begun, an example of this is the different stages of the protocol, the first area implemented was the discovery process in which a node finds a supernode to connect to, the next step was the actual connection process, later things like supernode splitting and supernode recovery were added. As each of these processes were created they received heavy incremental testing to ensure functionality, after this they also received a degree of unit testing. To show how the incremental testing was carried out, the download procedures testing will be outlined. Each stage of the downloading process was done separately; the stages are as follows, File transfer protocol messages The actual file transfer Multi-source file transfer Calculation of segment size Modification of protocol to accommodate multi-source downloads Combining each sources data together to form the complete file Stage 1 was relatively error free, the experience gained from the creation of previous protocol interactions, meant that little trouble was involved in writing the code. Stage 2, although required only the simple process of transferring a byte stream over a TCP connection did have a major problem. Frequently during large file transfers the connection would freeze, after strenuous testing it was found that this generally only occurred on file larger than several megabytes; to rectify this confirmation messages were sent back to the uploading node after every 64KB of transfer, these confirmations instructed the uploading node to send the next 64KB of data. Stage 3 is split up into three different sections; stage 3a required the most testing as frequently incorrect calculation would corrupt files. Two file types were used to test 3a, the first was text files, by transferring files from multiple sources using a text file containing a string of text, it could easily be ascertained whether the transfer was successful as the string would still be the same, if it was different it was easy to find out the problem area by looking at the particular part of the string that was corrupted. Usually the string used was a sentence of about 20 characters, although this was frequently modified to test things like an odd number of bytes. The second type of file used was an installation file, (namely the J2SE installation file), this file would throw an error if it had been corrupted which allowed downloads to be checked quickly and easily and also tested how effective the measures taken to fix problems with large downloads were (as the file was over 37MB). The modification of the protocol was simple, as it only required the ability to indicate what part of a file to download. Section 3c, created a number of problems, originally all downloads were stored in an array in memory, therefore downloads could easily be written to disk, this led to problems with 3a as frequently errors in this were undetectable as if a transfer downloaded the wrong bytes they would simply overwrite the array element creating no error. However, large files would not fit in memory so they therefore needed to be written to disk during the download process. The method used was to create a different data file for each download source then combine them at the end of the download. This meant that the errors previously tolerated in 3a needed to be corrected as if each sources download overlapped, instead of overwriting the overlap, they would be put together therefore leading to corruption of the file. Table 7.4 outlines, the major problems that were rectified during the incremental testing of the download procedure. #The ProblemHow it was rectified1java.lang.OutOfMemoryError getting thrown during downloadsFiles were being fully downloaded into any array before being written to file therefore with large files there wasnt enough memory available to the virtual machine. The problem was rectified by buffering 64KB of received data then writing it to a data file.2Large file transferred often frozeA new class called UploadControl was added which would receive acknowledgments of the Download class after every 64KB of file transfer, this class would then force the Upload class to transfer the following 64KB of data.3During multi-source downloads file sometimes got corruptedThis error was only found after transmitting installation files, these files would show a corruption in their data when the installation was attempted. The reason for this was that on files with an uneven number of bytes the segmenting of the file for multiple sources sometimes left the final bytes out. By creating a new method called calculateFinalChunk this problem was solved4Not all sources were being uploaded from, leaving the download incompleteThere were errors in the for loop that cycled through all the download points.5When resuming file downloads but with a smaller number of sources than original the download isnt completedEach data file for each segment was trying to be completed using a different source. It was rectified by allocating any data files that dont have a new source to the first source6The percentage transferred of the file was often inaccurate sometimes finishing on more or less than 100%Algorithm errors, resulting from the use of integers instead of real numbers.7Downloads create IO exceptionThe download folder doesnt already exist. This was rectified by creating the folder if there was an error.Table 7.4 Main errors encountered during the download packages development Summary 7.6 The testing process was an important stage of the project, it was very much an iterative process with much re-visiting of problems in an attempt to improve the overall functionality. Several techniques were used including, Black-box, white-box, incremental and unit testing; with each technique new errors were discovered and rectified. However the results mean little without an evaluation of them to ascertain how well the system actually works and what would need to be done to make the system work better. The next chapter analyses the results in the hope of finding the major higher level flaws of the system and how these flaws could be rectified. 8. Evaluation 8.1 Evaluation of Architecture At first glance the indexed architecture seems to be a quick and efficient topology for a P2P network, it appears to draw on strengths from both DHTs and supernode networks however if one take a more in-depth look at the structure several limitations come to light. 8.1.1 Scalability Even distribution One of the main problems with GazNet is the simplicity in which it splits supernodes, as youll remember supernodes split themselves by dividing their hash space (i.e. the letters that they look after) by 2 then delegating responsibility for the latter to a new supernode, so a supernode looking after the letters, A,B,C, D will delegate responsibility over C and D to another supernode when it splits. This nice simple mechanism at first seems a nice clean way of separating hash space but when one looks more closely at the repercussion is becomes clear that it will create massive inefficiencies in the network. The below table is based on an average shared music folder, it has been generated by going through every file, listing the number of occurrences of each letter in the filename and calculating the percentage of load each supernode would receive from someone joining the network. The music collection is a good choice as there isnt a large collection of one particular artist or type of music therefore limiting the effect felt from a collection heavily featuring one artist such as Elvis Presley. In an ideal network each supernode would receive 3.85% of the file list. Percentage refers to the percentage load put on each supernode, deviation refers to how far this percentage deviates from the recommended load and percentage deviation is the percentage of the deviation from the recommended load. LetterPercentageDeviationPercentage DeviationA8.20%4.35213.19%B7.49%3.64194.65%C6.06%2.21157.58%D4.81%0.97125.13%E2.67%-1.17-30.64%F3.92%0.08101.96%G2.85%-0.99-25.97%H5.70%1.86148.31%I3.74%-0.11-2.85%J3.57%-0.28-7.27%K1.43%-2.42-62.85%L4.81%0.97125.13%M6.95%3.11180.75%N1.60%-2.24-58.44%O5.88%2.04152.94%P2.14%-1.71-44.41%Q0.53%-3.31-86.23%R4.63%0.79120.50%S5.70%1.86148.31%T8.91%5.07231.73%U0.18%-3.67-95.32%V1.07%-2.78-72.20%W5%1.32134%X0%-3.85-200%Y1.78%-2.06-53.76%Z0.18%-3.67-95.32%Table 8.1 First Tier Distribution of load over GazNet.  Diagram 8.1 First Tier Percentage Load on Supernodes It can be seen that the distribution over the network is less than perfect, in its worst case a supernode is overloaded by 231.73% (T). This can be contrasted with the massive under loading of supernodes such as X which is under loaded by 200%. The closest a supernode gets to having a perfect load is I which is 2.85% under loaded. There are 13 nodes that are overloaded; F being the least overloaded at 101.96% overload and T being the most overloaded with a 231.73% overload. This means that 50% of the supernodes handle 78.06% of the network load; this will lead to a massive burden on supernodes like A, B and T. If you look at this problem from a different angle you also see that, 50% of the supernodes handle only 21.94% of the network load which obviously means a massive waste of resources, none more so than for the X supernode which has no load at all. Using data gathered it would be possible to derive a far more efficient load distribution algorithm that would allocate a number of supernodes to hash spaces such as A and merge hash space such as X and Z into one supernode.  Diagram 8.2 Deviation from Ideal Supernode Load The previous paragraphs have delved into some of the problems the splitting algorithm suffers from however no comment has yet been made about its uniformity over all tiers of the network. When limited to one layer the splitting algorithm is inefficient but workable, take the network onto a second tier, maybe even a third tier and the system becomes inefficient on an exponential scale. A good example can be derived from a second tier E supernode, using the same data as before the second tier load distribution was calculated. As can be seen in Diagram 8.3 the second tier supernodes have even more of an uneven load distribution with the El supernode receiving a massive 33.33% of the load. Unfortunately this is not a one-off; a similar pattern can be seen throughout the whole second tier supernodes, Go supernodes have 66.67% of the load, Oo supernodes have 44.44% of the load and In supernodes have 54.55% of the load. Many other supernodes are weighed down with between 10% to 30% of the load which may in comparison to 54.55% seem reasonable but when compared to the 3.85% recommended load actually equates up to an 840% overload (if youre interested 54.55% equates to a 1,418.18% overload).  Diagram 8.3 Second Tier Percentage Load on an E supernode Conversely many supernodes have a load of 0%, in fact out of the 676 supernodes on the a fully used second tier 517 of them contain no information at all, that means 76.47% of the second tier carry none of the load compared to the 3.84% of supernodes in the first tier that arent used. It is therefore hard to decide which is the biggest problem with the GazNet design, the massive strain placed on popular supernodes or the massive waste of resources provided by supernodes that deal with such combinations as YT. Supernode Creation and Tier Management The concept behind the GazNet architecture was that it would respond to increases in the network with an increased level of indexing, therefore however large the network became files would always be easy to locate. Despite the aforementioned problems GazNet still will do this; unfortunately the way the GazNet tree is distributed will mean that heavily loaded supernodes will have to create extra tiers in the network, this means that that there will be a search time performance hit leading to a serious compromise on one of the major project requirements to reduce search time. When supernodes become heavily loaded they will split to ease their load, when there are 26 or less, supernodes will split on the same tier however when supernode numbers increase to over 26 there will be a requirement to split onto another tier, this is how GazNet improves on other networks search times unfortunately the way supernodes split means that there will be extremely long chains of supernodes, for example the supernode Al will need to split quite soon after its creation because of the high frequency of word beginning with the letters Al. A major problem with the GazNet design is that it doesnt allow for the looping of supernodes i.e. when a supernode becomes to heavily loaded it would create an equal supernode that would help look after the same hash space. The idea behind this would be that it would increase search time as the network would no longer be fully indexed instead it would be partially indexed with groups of supernodes looking after one hash space that would each need to be searched to insure the whole network was searched. Unfortunately this doesnt provide for the scenario in which too many files with the same name occur on the network, this will often happen as popular files such as the latest chart singles will make their way on to many computers. The current structure of the network will not be able to handle a situation such as this, it will simply cease to work; this can be best explained using an example; say GazNet is highly populated with Cat, Dog and Fish lovers and they all feel it necessary to share with the world their collection of pictures, movies, and audio files of their favourite animals which they all conveniently choose to title Cat.jpg, Dog.avi and Fish.mp3. When the users log on to the network they will send these files to the C, D and F supernodes respectively, however, when the C supernode reaches its maximum capacity of files it will split giving all the Cat.jpg files to the new Ca supernode unfortunately as this supernode is also pretty heavily loaded down with Cat pictures it will split passing them all on to the new Cat supernode, this process will go on till there is an extremely heavily loaded Cat.jpg supernode and at this point no more files titled Cat.jpg will be able to be stored on the network.  Diagram 8.4 Route a file will take through supernodes Diagram 8.4 perfectly illustrates the problem, due to the distribution of load supernodes such as Al, will be overloaded, the diagram is based on a network containing 1 billion files and it shows how a file called Alien will work its way through the network. The files in brackets show the numbers of files that would be stored on that supernode if it couldnt split, the calculation are based on the data from the pervious section. Due to network load the file keeps getting pushed onto another supernode however when it reaches its furthest point, the Alien supernode, it cannot go any further and the network will fail as there is no other supernode it can share the load with. Obviously this example is nothing like a real world situation as it is based on one shared folder and it cannot accurately scale up to a network of one billion files but the concept is still valid and shows one of the major flaws in the network. Further to this another problem with network structure is that its depth cannot exceed the length of the longest word stored on it therefore if the network only contained files named things like Abba.mp3 and Queen.mp3 the network can never have a depth exceeding 9 layers. This at first may appear to be good as the smaller the depth the faster the search time however the problem is that if the number of supernodes is limited by the number of layers and the number of layers is limited by the word length, any network with short words will be heavily limited in the number of nodes that can be connected to it as there simply wont be enough supernodes for new nodes to connect to. One of GazNets better features is how supernodes are actually created;. GazNet does not statically decide whether nodes should become supernodes or not, instead supernodes are created dynamically whenever they are required, this means that at any given time just enough supernodes exist for the network to function. This, at first seems to react well to the highly dynamic nature of a P2P network, however this technique only deals with the addition of nodes to the network not the removal. This therefore leads to redundant supernodes that no longer look after a sufficient number of files to warrant their existence, it would be better if in such situations a supernode could merge with another lightly loaded supernode therefore freeing itself up to carry out functions at another part of the network. Supernode load The previous sections nicely lead on to the subject of supernode load, it has already been established that there is very little chance of many supernodes being perfectly loaded instead there seems to be about half that are overloaded and half that are under loaded. Supernodes have two main purposes, the first is the caching of file lists to speed up search time and the second is to allow other users to query them to find out the actual locations of files. Similarly to this, a supernodes load can be categorised into two types, memory and processor load i.e. the resources the supernode has to allocate to managing file lists and secondly, processor and networking load i.e. the resources the supernode has to allocate to routing requests through the network. To truly understand the load placed on supernodes these two categories must be analysed both separately and together. The first type of load is probably the least significant, this is because compared to searching adding and removing elements from the supernodes databases (node and file) is a relatively infrequent action. Similarly the process of splitting a supernode is also relatively infrequent therefore the file list should stay moderately static. The memory requirements placed on the supernode should be easily dealt by any node capable of becoming a supernode; this leaves the drain on the resources created by the actual management of the databases. File lists are stored using a hash table, values are hashed using the first letter into an array of 26 vectors, this was done to ease the strain on the system when the supernode is splitting. This at first gives a relatively good load balance, looking at Table 8.1 one can see that the maximum load is 8.2%, which, although, might have bad effect on a distributed table, an array should be able to deal with it easily. Similarly same tier splits will be extremely easy to carry out as the supernode simply has to cut the array in half and send one half to the new supernode. The creation of new tiers, however, will create a greater load on the system as every file has the be checked to find out which ones will need to be sent to the next tier. Unfortunately as supernodes split and new tiers are created the load balance on the array will become increasingly worse, loading one vector far heavier than any others meaning that in reality the supernode is simply performing a linear search of its contents. This at first seems a serious issue, as a linear search is extremely inefficient and will place a much higher load on the system compared to something like a binary search, however it must be remembered that the intention of the project was never to create and efficient database search mechanism, in fact the way files are searched for, on the supernode is irrelevant to the overall success of the project so it is easy to overlook these performance issues. The second and most important factor of supernode load is the network load, mainly the routing of information through the network. When a node wishes to perform a query it will send it to the appropriate first tier supernode e.g. to search for Aerosmith the query will first be sent to the A supernode, this will then be passed on to the Ae supernode, then onto the Aer supernode until the furthest path has been traversed, which should yield the results. This will obviously place an extremely heavy load on the higher level supernodes as 3.85% of searches will have to pass threw them (presuming each of the first tier supernodes receive an equal share). There is a similar problem to this in the way that files are sent to the correct lower tier supernodes. All the files go through the first tier supernodes which then pass down the file references down the network to the appropriate supernode in the same manner that searches are passed through the network. On a fairly static network this wont create too much network traffic but during the network setup or over a highly dynamic network the traffic produced will be immense. The first aspect of supernode load will have a relatively small effect on overall performance but on heavily used supernodes it will have a hefty effect on the performance of the computer and as supernodes are supposed to be made up from everyday computers used by regular people the performance hit might encourage people the simply stop using the network or to restart the program so they are no longer running as a supernode alternatively at the far end of the spectrum the computer may simply crash under the load. These actions will have a seriously bad effect on the overall network as the loss of a supernode is a serious issue. It is therefore obvious that although the efficiency of each individual supernode isnt an important issue in this project it is still an important issue in the overall efficiency of the network as the supernodes are the backbone of GazNet and if they run poorly, the whole network will suffer. The network efficiency is the primary issue in the project and also will constitute the biggest load on the supernodes; this is because searches of individual supernodes are far more infrequent than network traversals therefore supernodes (higher level ones at least) will have to forward a great deal of information through the network creating a heavy burden on them. 8.1.2 Search Algorithms It is hard to objectively evaluate the search algorithms used as they are so heavily embedded in the structuring of the network and therefore their efficiency almost solely depends on the efficiency of the network. It has already been established that the network architecture has several flaws but for this section is will be assumed that the network is a fully functioning 100% reliable architecture. To illustrate the degree of success in this area two other P2P networks will be compared and contrasted, Gnutella and Kazaa (see Background for details). Using the data from the previous section a network will be constructed working on the following presumptions, A node number of 1,000,000 in each network (n) A file number of 1,000,000,000 in each network (f) Kazaa allows a maximum of 200 nodes connected to each supernode (s) Kazaa requires a search of every supernode to complete the search GazNet allow a maximum of 500,000 files on each supernode (sf) but where necessary can exceed this to any degree(for arguments sake) Gnutella will not be using a TTL field Search Time is measure in hops Firstly, Gnutella will take the longest time to search as every single node requires to be searched in real-time therefore N number of nodes need to be contacted to obtain complete search results. Gnutellas best and worst case scenarios are exactly the same, this is because to search the whole network every node must be queried, however because some nodes will obviously be searched before others valid results will be likely to be returned before the search is complete so in reality the best time depends on how popular the item that the user is searching for. Kazaa on the other hand makes a dramatic reduction on Gnutellas search time, with only n/s nodes requiring to be contacted. This is because Kazaa caches file lists on supernodes therefore a smaller number of nodes actually need to be searched. The worst and best cases work in exactly the same manner as Gnutellas . GazNets search time however cannot be calculated solely using the above presumptions because it depends on how the network has been distributed therefore its best and worst cases are more complex. Worst Case Generally speaking, the worst case search time will depend on two factors, the first being the length of the query, a longer word will obviously be able to be spread over more supernodes and therefore will take more hops; the second being the popularity of that particular hash, the more popular a hash is the more likely it is for the supernode to split and therefore create an extra hop in the search. In a network containing a billion files it is likely that there will be many supernodes that will have split, these supernodes will go along chains like Britney and Disney, therefore the worst case is the word length, e.g. for Disney it would be 6, a more generic worst case would be d, which represents the greatest depth in the network as this would be the worst possible search anyone could make. Best Case The best case is much easier to devise, it is simply 1, as this would be the number of hops required to contact one of the first tier nodes, therefore if one was to search for the letter A it would only take one hop. Network Traffic Created The previous sections have discussed the search algorithms efficiency in terms of hops, this relates to how efficient the overlay network works however another important issue is how heavy a burden searching put on the underlying network, this is especially important if GazNet was running over the internet. The amount of network traffic created during a search is very subjective, it depends primarily on how many words are in the search and whether or not different supernodes need to be contacted to service each search word. The following calculations will work on the both the previously mention presumption and the following, A query rate of 625 per second (625qps) (Ritter, 2001) The results are stored on the lowest available tier Type of DataSizeIP header20 bytesTCP header20 bytesGazNet Messages63 bytesTotal:103 bytesTable 8.2 Size of a search excluding the search string To reach the correct supernode it will take 4 hops through the network; therefore 4 copies of the query will be created, making a sum of 428 bytes including a 4 byte query. #SearchNumber of QueriesBandwidth 1AbbaSingle Query428bQueries per second (625qps)261.23KBQueries per minute (37500qpm)15.3MBQueries per hour (2250000qph)918.38MB2BritneySingle Query770bQueries per second (625qps)469.97KBQueries per minute (37500qpm)27.53MBQueries per hour (2250000qph)1652.24MB3Britney SpearsSingle Query1424bQueries per second (625qps)869.14KBQueries per minute (37500qpm)50.92MBQueries per hour (2250000qph)3055.57MB4Britney Spears Hit me baby one more timeSingle Query2798bQueries per second (625qps)1.66MBQueries per minute (37500qpm)100.06MBQueries per hour (2250000qph)6003.85MB5Mix of all previous queriesSingle Query1355bQueries per second (625qps)827.02KBQueries per minute (37500qpm)48.45MBQueries per hour (2250000qph)2907.51MBTable 8.3 Bandwidth used for queries The results in Table 8.3 show how much bandwidth will be used for a number of different queries. The first two queries are varying length single word queries, as can be seen query 2 is 342 bytes longer than query 1, this is not because of its greater length but because the figures are based on the worst case scenario in which the lowest possible tier supernode would have to be contacted, in query 1 this would mean 4 hops but in query 2 it would mean 7 hops this therefore leads to multiple copies of the search being created which leads to much higher use of bandwidth. Query 3 increases in size a further 654 bytes over Query 2, this is not because of the increased length of the query but because there are two words in the query, which means that two separate searches have to be sent out to different supernodes, this is more clearly shown in Query 4 where 7 separate queries have to be sent out, in this query the size increases to 2798 bytes. Query 4 requires 7 searches to be sent out, however there are 8 words in the query, this is because two of the words begin with the same letter, M, because of this the two words can be aggregated together into one search however after the first hop their letters will no longer match so the search will be split into two separate searches and sent on to different supernodes. The amount of bandwidth used in a query is based on four factors, The number of words in the query The more words there are the more supernodes will need to be contacted. The size of the network The larger the network the more likely it is that more supernodes will exist, therefore making network traversals longer. The length of the search words The longer the words the more likely it is that more of the network tree will need to be traversed to find the correct supernode. The length of the search string The loner the string the larger the protocol messages will be. The main use of bandwidth is used during the traversal of the tree, this is because multiple copies of the search have to be passed through the network therefore the best way to minimise bandwidth use is to lower the number of hops taken to find the correct supernodes. GazNet will generally create the least amount of search traffic in any P2P network, this is because it requires the least amount of hops to find the results, this is directly attributable to the networks indexed architecture. This can be clearly seen when bandwidth use is compared to a protocol like Gnutella, using the example in provided by Ritter(2001), a search for The Grateful Dead on a 1,000,000 node network would generate 91.31MB of bandwidth, this can be compared to 1597 bytes generated by GazNet. Gnutella, therefore, obviously creates a massive burden on the underlying network whereas GazNet is very network friendly as only a tiny percentage of network traffic is created in comparison to Gnutella (0.0017% to be precise). The reduction in bandwidth used it not only beneficiary to the underlying network, it also lowers the load on the overlay network, this is because 91MB of data will take a extremely long time to propagate through a network, whilst 1597 will take hardly any time at all leading to faster search times. Similarly, smaller amounts of traffic will create a smaller burden on the backbone of the overlay network (the supernodes) therefore allowing better performance. Search Algorithm Summary Search Time was a major issue in the designing of this network and this can clearly show in the chosen architecture, many things such as robustness, reliability and supernode loading has been sacrificed to make the search time as efficient as possible. From the previous example (a one million node network) it is clear that this has been accomplished. In a nutshell this is the fastest existing P2P search engine in the world, however all this has been based on the presumption that the search algorithm (basically a tree traversal) is running over a perfect fully reliable network and as is known P2P networks are anything but reliable. One of the major flaws with the search method is that if one link fails every file below that is lost e.g. if the Al supernode goes down all references beginning with the letters Al will no longer be searchable however it should be noted that just because they are no longer searchable it doesnt mean that they no longer reside on the network, both the file and the file reference still exist the file on the node and the file reference on the supernode. If the searching node knew the address of the correct supernode already it would still be able to search the network by simply bypassing the higher level supernodes, this concept might be one way of improving the reliability of the network. It may be salient to point out the difference between robustness and reliability here as search time is affected by both matters. A robust system will be able withstand attacks and tolerate failures to a high extent, a perfect example is Gnutella, its fully distributed structure makes it probably the most robust network available it would be simply impossible to destroy GnutellaNet. Reliability on the other hand is a more precise measurement referring to how well the network can recover from problems and could be measured in the percentage down time the network suffers from over a period of time. Unfortunately GazNet doesnt seem to hold either of these points extremely well but it could be said that it is more reliable than robust. This is because its indexed nature leaves it very vulnerable to attack as hackers will know how to find where high tier supernodes are and if they can take one supernode offline all below will follow, this basically equates to a system with very little robustness. However GazNets brother supernode mechanism means that it can provide a greater degree of reliability as supernodes should always be replaceable with one of their brothers. Robustness and Reliability will be spoken about in more depth in future sections. Intelligent Searching The previous section has talked about the factors that are involved in the speed and efficiency of a search, by the very nature of the network search time will be fast and the bandwidth used will be low however there are still inefficiencies in the process that could be improved upon. The main inefficiency is the use of dumb searching which leads to slower search times, greater quantities of bandwidth and lower quality search results. When a file is stored on the network or a file is searched for, no discrimination is used between words, therefore any word can be stored on the network This at first sight seems a good property however this allowance leads to great inefficiencies; Table 8.1 shows that the letter T constitutes 8.91% of the load on the first tier supernodes, this is because of the word The, without it the T supernode would receive a 37% drop in load leaving it with only 5.53% of the overall network load which is only 1.68% away from the ideal percentage. This is the same with searching, if a user searched for The Beach Boys, not only would excess bandwidth be generated but also the user would be supplied with erroneous search results with the word The in, such as The Beatles. Two techniques could be employed to remedy these problems; the first would be to cross reference all the search results placing all the matching ones at the top of the results table (something that would be beneficiary anyway). The second way is to employ a vetting of searches and file references, banning words such as the, a and it. By doing this massive amounts storage can be saved and bandwidth wastage used in transporting searches and file references with erroneous words can be avoided. Search Aggregation Throughout this report, the matter of efficiency has been spoken about in-depth; in any P2P network traffic must be kept to a minimum therefore the unnecessary creation of traffic is unacceptable. Search aggregation is used to minimise the amount of traffic created for each query, this reduces the burden on both the underlying network and the supernode that services the search. Search aggregation involves combining search words destined for the same supernodes into one search instead of sending them in different searches. The following information shows the size of a full search, this excludes any results returned. 080-SEARCH=Beach Boys...21 Bytes 090-SEARCH_OK13 Bytes 100-SEARCH_LIST_READY..21 Bytes 110-SEARCH_LIST_OK..18 Bytes =72 Bytes This query was aggregated as the search contains both the words Beach and Boys, however if it wasnt aggregated its size would increase from 72 bytes to 135 bytes, which is a 187.5% increase in size. This is only for a two word query, if the search was changed to The Beach Boys the size would increase from 76 bytes using an aggregated search to 216 bytes which is a 284.2% increase in size. This is because each word would be sent in a separate search, so the overall size wouldnt just increase by the search words size but also by the size of the extra protocol messages that would need to be sent. When dealing with such a small number of bytes it is quite easy to overlook such inefficiencies but as the network increases in size the problem becomes much greater. The supernodes that suffer the worse are the top tier ones, this is because they look after all single letter hash space such as all the A words, because of this it is likely that multiple search words will be sent to the same supernode a good example is in the case of the search for Beach Boys. Multiple search words being sent to a lower tier node is less likely because the chances of sending two words with the same two opening letter is much less likely than two words opening with the same first letter. By using the test data from the previous sections, if a user was to search for an artist and a particular song, 14.41% more searches to the first tier would be generated if aggregation wasnt used, this makes the benefits clear. 8.1.3 Reliability and Robustness One of the main arguments for using a P2P network is its robustness, a Gnutella like network would be near impossible to destroy, therefore, obviously reliability and robustness are vital requirements in a network of this type. The designed method, to use brother supernodes, was not implemented and therefore there is no way of maintaining reliability in this implementation, if a supernode goes offline, all information on that supernode is lost. There is one robustness technique employed, a child supernode will maintain a TCP connection with its parent, if either of these go down the other will realise and therefore create a new supernode to take on their load however, no support is provided to backup file lists so when a supernode goes offline the whole file list is deleted and therefore everything stored on that supernode must be refreshed. Therefore in such a circumstance every node on the network would have to be contacted to inform them of the loss of the supernode and asked to update the new supernode with their file lists. This will create far too much network traffic for the option to be viable and therefore is not a good enough replacement for brother supernodes. Another problem with this method, is the length of time required to re-initiate a supernode using brother supernodes the time will be under a minute but using this technique it could take many minutes depending on the size of the network, with a large public network the recovery time could be a very long indeed. 8.1.4 File Transfers The main issue to evaluate in the area of file transfer is the way that multiple source downloads are performed. The purpose of multi source downloads is to speed up the length of time it takes to transfer a file and to a degree GazNet does work however there are certain glaring faults in the algorithm. The way files are split up is pretty standard, the file size is divided by the number of sources and each source is allocated a section to download, several files are then filled with the bytes from each source then once the download is complete are the files are merged to create the finished file. Files downloads can also be suspended and then resumed later even if there are a different number of sources which is a useful feature however there are still some problems with the process. A big problem with downloads is that the application doesnt dynamically react to changes in the environment, for example if a source goes offline during a download, instead of finding a new source, the downloads from all the other sources will finish and the file will be left unfinished until the user restarts the download so the final pieces can be finished off. Another problem is the way that GazNet decides on what files are identical, it uses two of the fields in the FileDescription, the name and the file size. If these two match it presumes the files are the same; unfortunately on a large network there will be many files that are the same but have a different filenames, this means that many possible sources will be ignored resulting in a download that is slower than it could have been. Most multi-source capable P2P program generate a message digest of the file and use this to locate other identical files, this is a far better method as it reduces the chances of mistakes being made and also increases the chances of find other matching files. Probably the biggest problem with the download system is its indiscriminate choice of which node it downloads from. The whole point of multi-source downloads is to increase the speed in which files are downloaded but the whole benefit of using this system is lost if a poor choice is made in relation to which node is used to download the file from. If there are 5 nodes containing the desired files capable of reaching bit rates of, 2.5Kb/s, 1Kb/s, 5Kb/s, 3Kb/s and 512Kb/s the obvious choice to make it to download from the last source because it could transfer the file the quickest however GazNet would download from all 5 sources, if the downloading nodes bit rate is lower than the slowest uploading node there will be no impact on the download time but if the node has a connection speed of 128Kb/s there will be a serious increase in download time as the four slow nodes attempt to squeeze the data through the pipe. It is therefore obvious that multi-source downloads arent always appropriate and the aim of obtaining as many sources as possible is not always the best plan. Basically the best choice for a download is as follows, SUM(Bit rates of all sources)=Bit rate of downloading node This is because there is no point in using a broadband connection to supply a dial-up connection with a file when another dial-up connection could supply the file at the downloading nodes maximum bit rate. Instead the broadband connection can be left to supply other broadband connections with files as a broadband connection will actually utilise the full bit rate opposed to a dial-up connection which would only utilise a tiny percentage. 8.1.5 Miscellaneous Transport Protocol The transport protocol used throughout the project is TCP, this bears many advantages for the project and many disadvantages. ObjectStreams are used frequently, primarily in the transmission of lists (node lists, file lists etc) and as these run over TCP it is obviously a necessity. TCP has many plus points, its reliable, in-order transport system was one of the main reasons why it was chosen as the GazNet protocol required to be delivered in the correct order, as well as this, TCP helped improve reliability as lost packets during a supernode split could create no end of problems. TCP was also chosen as its connection-orientated approach allowed supernodes to realise when nodes had gone down without the need for explicit programming, however the benefits of this are limited due to GazNets connectionless approach. This is where doubts over TCP first creep in; with the exclusion of the supernode that a node is connected to there are no connections kept with the network i.e. supernodes that are merely joined (sent file details but sent details of the node) maintain no connection at all, this therefore provides an argument for the use of UDP. It would perhaps therefore to have avoided the overhead involved in using TCP in certain areas whilst still using TCP for things like object transfer, however if a choice had to made between TCP and UDP, it would always be TCP. Network Address Translation (NAT) A problem that has plagued many P2P networks, including GazNet, is the issue of public and private addresses. Since the realization that IPv4 addresses were running out, much effort and research has been put into alleviating the situation, some has been targeted at the creation of a replacement protocol (IPv6) and some has been more focused on trying to perverse the addresses that we already had. A frequently used technique is to hide a number of devices on a network behind a single public IP address; every device on the network will have a non-globally unique IP address, called a private address but to the outside world it will appear like there is only one device with a single public IP address. All external communications will be sent through the NAT system and neither side should have any difficulties; problems only occur when an external device is trying to initiate a connection with a device behind a NAT system. This is because the NAT system will have no way of deciphering what the destination is because the external device only recognises the single public shared IP address. This problem can be avoided by using port forwarding in which every private device is assigned a port; whenever an external device wishes to contact a private device it can contact it through the assigned port. Another issue with NAT is how a device will actually devise its own public IP address as its knowledge is limited to the private IP address. A similar problem occurs when a device has multiple network interfaces such as an Ethernet connections and a dial-up internet connection, in such a circumstance an InetAddress.getLocalHost() method call will frequently return the private Ethernet address rather than the public dial-up address. Such a circumstance will have no effect on the network connection phase, nor will it have any effect on the searching process, the only problem that will arise is when another node attempts to download something from the node behind the NAT system. This is because every instance of a FileDescription has a variable that stores the IP address of the owner, this variable is set by the owner of the file using the InetAddress.getLocalHost() method, therefore if a external node attempts to download the file it will try and contact the private address which unless they are both on the same private network, will lead to an exception. It is obviously important that a P2P network supports NAT if it intends to be distributed on wide scale, therefore a way around these problems must be found. The main problem comes about because the FileDescriptions owner variable is set by the host, therefore allowing the possibility that it is given the incorrect interfaces IP address, this could easily be rectified by setting the owner variable at the supernode rather than the host, this would ensure that the public address is used rather than the private one. To get around the NAT system the host can also include a variable in the FileDescription that stipulates which port to connect to so that the NAT can successfully forward the correct information on to the destination (if the NAT system supports port forwarding). Rating One of the problems with Java is that because of its platform independence, it has little support for detecting with underlying hardware, because of this it was made impossible for a performance rating to be devised. Currently a random number is submitted as a nodes performance rating, however this is obviously unworkable. The only feature Java can detect that is relevant to the rating is the operating system and connection speed of the node. The only way around this problem in Java is to obtain the performance details from the user. This issue raised little problems during testing as the experiemental network was run over a LAN, with similar performance nodes however, it the network was to run over the internet, it would quickly collapse as low performance computers with dial-up connections may be converted to supernodes, which would lead to crippling performance issues. 8.2 Evaluation of the User Interface The user interface is a highly important component of the overall system; it should therefore receive thorough testing and evaluation to ensure its quality. However the simplicity of the chosen user interface and its relative unimportance when compared to the other components means that only a limited evaluation is possible 8.2.1 Welcome Panel The simplicity of this panel limits commenting on it, the Message of the Day window will allow the user to find out new information about the system and the connected status will also help the user to understand what is going on. The only problem with the screen is that the connected status will only change once from Connecting to Connected, if the node is disconnected, the status on the Welcome Panel will not be changed. 8.2.2 The Search Panel The search panel fulfils its requirements perfectly well, however two aspects of the panel could be improved upon; the first is the addition of being able to search by pressing the return key, in its current form the user must enter the search word then use the mouse to click the search button. Secondly the search tables scroll panel does not automatically return to the top of the table when a new search is initiated. This leads to the appearance that no results have been returned even when there have been; this occurs when a search is performed that yields 50 results, if the user scrolls to the bottom then starts another search that only yields 10 results, the table will remain empty as the user will be viewing the bottom 19 entries in the table, where in fact there are only 10 entries situated at the top of the table. The panel could also be improved by providing the user with a greater degree of knowledge about the file he/she wants to download; this could include things like connection speed. This will lead to a more educated choice being possible, leading to less downloading of unwanted files. 8.2.3 The Download Panel This panel simply contains a table with the downloads on, this panel has the most errors out of all the panels. When a download is resumed, a new instance of the resumed file is added to the table with a status of Connecting, the original instance will display the correct statistics but the new instance will not be removed. Similarly there is no option for downloads to be removed from the list, they will only be removed after the application has been restarted. Further to this downloads that are unfinished because the application has been closed down will not remain in the download table when the application is loaded up again, instead the user will have to remember or check their download folder and then initiate another search and manually resume the download rather than it being automatically done for them at the program initiation. Right-clicking on a downloading item will bring up a popup menu, which will allow the user to open the file, cancel the download, or resume the download. These menu items will be available what ever the status of the download; it would be better if only possible actions were available, therefore if the download was still in progress, the open file option would be disabled. 8.2.4 The Upload Panel The upload panel, like the download panel, only consists of a table containing a list of all the uploads. Also like the download panel there is no ability to the remove finished uploads from the list, leading to a list that is full of unnecessary information. 8.2.5 The My File Panel This panel is by far the most complex screen facing the user, it is well laid out and easy to use and all the buttons work, apart from the Update button. The only problem is that when a user changes his/her download folder it will only remain like that whilst the application is open, after it is closed it will revert back to the default C:\Downloaded\. This can be extremely infuriating for the user and in some circumstances will lead to the user simply not realising why his/he downloads arent working as no thought would be given to the download folder reverting back to the default. 8.3 Alternative Solutions There have been a great deal of problems outlined in the previous sections however very little has been offered in the way improvements that could be made to the system to more efficient. The following sections outline ways that the system could be changed 8.3.1 Scalability One of the main driving forces behind the GazNet architecture is that its architecture would make it highly scalable however the previous sections have illustrated that there are flaws in the design which limit the scalability of the network. Splitting Algorithm and Even Distribution This algorithm is responsible for how and when supernodes split and therefore responsible for the structure and loading of the network. The splitting algorithm currently is as follows, half hash space //i.e. from A-Z to A-M and N-Z create new supernode and allocate it the new second hash space pass the new supernode the appropriate file references delete the old file references allocate this supernode the other half of the hash space This algorithm has benefits in its simplicity but doesnt really perform to an adequate standard when working over a large network; this can be seen by examining the data from the first section. There are two possibilities for improving this area of performance, the first is to change the splitting algorithm to distribute the load in a more even manner; the second is to change the nature of the splitting algorithm so supernodes can dynamically change their state and distribute their files on the fly. There are several ways that the splitting algorithm could be modified, the way I will suggest is a statistical way by basically splitting supernodes according to their average percentage load (indicated by the previously shown research). Using this method heavily loaded supernodes will be paired up with lightly loaded supernodes to make the load as close to 3.85% (the ideal load) as possible for instance T would be paired up with X because T is the heaviest loaded and X is the lightest. An alternative approach would be to split supernodes into groups according to their anticipated load; T would be put in a group of its own because it is heavily loaded and Q, U, V, X, Y and Z would be put in a group because their loads roughly add up to 3.85. The logic behind this is that the number of supernodes will be reduced as it will not be necessary to create a Q supernode simply to accommodate 5 entries, instead all these lightly loaded supernodes can join up their file lists on one supernode. This has the big advantage over the previously mentioned technique that heavily loaded supernodes wont have their loads increased even more by being paired up with other supernodes (even if they are lightly loaded). A totally different approach to this would be to allow the dynamic reshaping of the network depending how the load is distributed. An example of this happening would be if a lightly loaded supernode noticed that another supernode was lightly loaded, then merging with the other supernode to free up the supernode for other functions (either to take on a different hash space or to revert back to a node). This process would mean that the network is constantly responding to changes and will ensure maximum efficiency. Unfortunately, doing this will create a heavy overhead (depending on the size of the network) and it will be limited in its scope i.e. it would be impractical for every supernode in a one million node network to be dynamically changing its state according to every other supernode. The best environment for this to be carried out would be on one tier; two possible architectures would be for all the supernodes to be linked in a line (a bus) and messages about the load be transmitted over the bus or every supernode to have a link to every other supernode on that tier (26 links). The latter has a bigger overhead but is much more robust than the former, these connections could also be used to share and backup information therefore eliminating the need for brother supernodes. Despite the advantages, one of the major problems with this system is the complexity of keeping the routing tables up to date, as every time supernodes split or merge the parent will have to be notified.  Diagram 8.5 Types of supernode-supernode connections The biggest advantage of using this dynamic splitting algorithm is that the system no longer has to make decisions based on current information without the ability to take future events into consideration; a major issue with the static creation of supernodes is that they cant be disbanded i.e. if there is a flood of files beginning with the letter x once these files have gone, the network will be left with a number of supernodes that no longer have any function, this is a major waste of resources that could be avoided using this dynamic allocation. Another major plus point of using this mechanism is (although it might not be immediately obvious) its uniformity; using any of the previously mentioned algorithms to make them efficient the splitting schemes for each tier must be changed as different tiers display different patterns in their load. The dynamic splitting algorithm does not suffer from this problem as it will intelligently distribute load in real time. Network Tree Traversal There are two main processes that require the traversal of the tree, the first is the distribution of the file lists from each node and the second is the searching of the network. These are extremely similar as both require a file list to be passed along the tree, during the file lists distribution the list is sent down the tree (albeit it after being split up) and during searching a file list of the search results has to be passed up the tree back to the top tier supernode. One of the reasons why high level supernodes are so heavily loaded is that they basically function as gateways into the network and in that capacity are required to route file lists through the network to the appropriate supernode, this reduces the work required by nodes but dramatically increases the burden on the supernodes and therefore must be improved upon to make the network scalable. The majority of work involved in the current scheme is spent passing file lists on through the network rather than merely looking up the current supernode on a routing table therefore it would be possible for the appropriate address to be returned to the node and leave the job of sending the file lists to the node. One of the problems with this is that one Round Trip Time (RTT) will be added to the connection time for every supernode that needs to be traversed in the network, as on top of the current process another message has to be sent back to the node to inform it of the next supernode address to traverse. However the number of TCP connections required does not increase and the burden on the supernodes and the amount of network created will be dramatically decreased (as file lists wont have to pass every supernode on the path to the correct one). This system would improve performance if supernodes were heavily loaded and therefore took a long time to process the file list however if the network was small and the supernodes were under loaded the overhead involved in returning the next supernode address in the traversal could possibly decrease efficiency. Having said this, this would only occur on a high speed network with relatively small file lists as the overhead of passing the file list down the tree would be far greater than the simple sending of an address. A salient point to make now would be that when the supernodes are being queried for the next address in the traversal it is likely that several addresses must be returned as multiple lower tier supernodes will need to be contacted. Searching can be improved upon in a slightly different way, as no file lists are sent down the network there is little point in sending the next address in the traversal back to the node because the supernode could just as easily send the search on to the next supernode itself. Where the improvements lie is how the supernode returns the results to the search node; currently the results are passed back up through the network through every supernode in the path, this just like file list distribution creates an unnecessarily large amount of network traffic, instead the searching nodes address could be sent down with the search query and therefore any results could be sent directly back to the searching node avoiding sending results through the network. The only problem with this scheme is that it will change the elegant recursive nature of the distributed searching algorithm as search results wont be returned back up to the original supernode; this however pales in comparison with the performance gain involved in modifying the search algorithm. The above schemes are obviously an improvement but it still suffers from the problem that to get to a lower tier supernode ever supernode above must be contacted, this is both a problem for robustness and a problem for performance, it would be much better if tiers could be skipped to take you directly to the desired supernode. It is therefore necessary to make a trade off between the number of lower tier supernodes each supernode must know about and the speed at which each supernode can be accessed. Knowing more about the network below you will mean that more control traffic would need to be created to insure that addresses are kept up to date and means that routing tables would have to be larger. However, if a supernode knew of 5 tiers below it, it would mean that 5 nodes could be avoided being traversed, therefore in a 20 tier network there would only be 4 node visitations rather than 20. The greater the knowledge of each supernode, the smaller the search time, unfortunately with greater knowledge comes greater quantities of control traffic and a more complex routing system. Using this system however, does have other advantages one of these being greater robustness (which will be spoken about later) as if one supernode goes offline all other lower supernodes wont go offline with it. This scheme can be increased to any degree with the limit being every single node knowing every other node which is obviously somewhat of an impossibility, it is therefore necessary to find the ideal degree of knowledge to be held by each supernode. Working on the basis that each tier is complete (i.e. contains 26 supernodes) routing tables could quickly get out of hand, maintaining knowledge of one tier (what GazNet currently does) required a routing table of size 26, maintaining knowledge of two tiers requires a routing table of size 676 and maintaining knowledge of three tiers requires a routing table of size 17576. It is obvious that the tables could rapidly become un-scalable; below is a table listing how large the routing tables would have to be to use this scheme working on the presumption that each tier is complete. Number of Lower TiersSize of Routing Table0012626763175764456976511881676630891577678031810176Table 8.4 Size of Routing Tables for Storage of Different Numbers of Tiers As can be seen, to implement a scheme maintaining knowledge of 5 lower tiers the routing table would have to be 11881676 elements long, this would obviously be a heavy burden on the supernode; place on top of that the massive amount of control traffic that would have to be sent around the network to maintain all these routing tables and it becomes obvious that this system is impractical. At a maximum each supernode would be able to maintain knowledge of two lower tiers, however all these calculations are based on complete tiers, in reality every tier, especially lower ones wont be complete; add on top of this the use of some more sophisticated splitting algorithms (as mentioned before) and the scheme becomes more scalable, however, whatever splitting algorithm is used it is unlikely that knowledge of more than three tiers will be able to maintained when functioning on anything but a small network. Architecture of the Network It has been found that certain faults lie in the architecture of the network; using a modified splitting algorithm (preferable the dynamical algorithm) a lot of the previous problems could be avoided such as obscene supernodes like Aqrjs being created but the network would still not be perfect as this algorithm would not allow for an unlimited number of identical files to be stored on the network, as once a network path such as Cat.jpeg has been created that supernode is the only one that can store files of that name, meaning that the Cat.jpeg supernodes capacity equals the maximum number of files called that allowed on the network. The best way to solve this problem is to introduce supernode looping in the network, basically what would happen is when a file is added to a supernode that is already at capacity and it cant create another tier to pass it on to (like in the previous example) it will create another supernode that will look after the same hash space, therefore allowing a limitless number of instances of the file Cat.jpeg on the network. This is really the only practical way of solving this problem but it does lower search time as it reduces the indexing of the network which in a way defeats the object of the building of the network. The GazNet design is more of a concept than a specific architecture and that concept is the indexing of supernodes which could take many forms. Below a couple of different architectures that hold both advantages and disadvantages over the chosen architecture will be explained. One of the major problem with the network is that the more tiers that are created the less likely they are to be used, this is because the longer the chain of supernodes becomes the stranger the letter combinations become, for example there are not many words that begin with the letters Ahnwwq; even using the modified splitting algorithms this problem will not disappear as its inherent to the design. To rectify this problem an alternative design would be to lower the number of tiers and make up the supernode numbers by using looping. By limiting the tier numbers to, say, 2 it would mean that erroneous supernodes like Ahnwwq will not be created  Diagram 8.6 Looping of Supernodes The limited level of indexing will still have a large improvement on the search time when compared to programs like Kazaa and Gnutella as search time could be lowered by up to 626 times (the number of indexed supernodes). Unfortunately this design will have no where near as quick a search time as the previous design and will eventually face similar scalability issues as other supernode networks, as the network grows to millions of nodes. Another major issue in the architecture is where to put file references along the path of supernodes, currently GazNet will place to file references in the longest match therefore if there are two supernodes A and Ae, Aerosmith will be put in Ae, however as the network gets larger this will lead to some supernodes not being used at all. There are basically two choices either the splitting supernode takes on an extra letter in its hash space (Diagram 8.7a) or the splitting supernode will allocate the next letter in the hash space to a new supernode (Diagram 8.7b).  SHAPE \* MERGEFORMAT  Diagram 8.7 The Two Ways of Creating a New Tier GazNet using technique (b), this is because it creates a more structured network and alleviates high tier supernodes work load, however the main problem with this scheme is that file lists get simply passed down the network and dont start really to create a useful network until the chains are quite long and therefore spell out larger proportions of word, this scheme would be more appropriate for the alternative network that uses looping. Technique (a) would technically increase the chances of parent supernode taking on file lists but as the both letters will be the same there is little chance of many files actually needing to be stored on that supernode. Technique (b) is an appropriate choice for using the dynamic splitting algorithm as the tiers are very much separate so they wont interfere with each other. Another possibility is to allow file references on any supernode on the correct path, this would mean that the utilisation of every supernode will increase but the burden on supernodes will also increase. This is not just because supernodes will be better utilised but because to perform a search every supernode along the path will have to be searched. The search time will not be heavily effected because as soon as a supernode receives a query it can pass it on and then search its own database, working on the presumption that every supernode is of equal performance, search time will actually be increased because there is a possibility that an instance of the required file is on a higher tier supernode, it can therefore be returned back to the searching node before the final supernode in the path actually received the query. Probably the biggest limiting factor on scalability is the way in which the first tier supernodes act as gateways into the network, because of this all traffic must be routed through 26 supernodes, this is obviously impractical and un-scalable. The problem can be alleviated by using caching of supernode addresses or increasing the routing information on nodes therefore allowing the first tier to be bypassed on occasion however these methods will not decrease the load on supernodes by a sufficient level to make a large scale network practical. The only way of reducing the degree in which the first tier will act as a bottleneck is to increase the number of first tier supernodes therefore increasing the number of gateways there are into the network. This can be done by providing dedicated gateways that only function as a means of accessing the network rather than looking after files, working on the presumption of 625 queries per second (qps) on a perfectly balanced first tier 24 queries will be received by each supernode per second, by giving each supernode a further 9 helpers the query rate will drop to 2.4qps, this is an easily manageable figure that will dramatically increase the scalability of the network. 8.3.2 Robustness and Reliability One of the biggest problems with the network is that it suffers from problems with robustness, the major one being effects faced by the loss of a supernode. The loss of a supernode in a network such as Kazaa would result in the loss of between 100 to 160 nodes from the network; however the loss of a supernode in GazNet could mean the loss of a whole hash space (such as every reference beginning with the letter A). The current method used to ensure reliability is to allocate supernodes brothers that will maintain the same information as they do such as the file and node database, if the supernode goes down one of these brother supernodes will immediately take over, informing all relevant nodes and supernodes of the new IP address. The main problem with this is that perfectly valid supernodes that could be used in the network are functioning as these brother supernodes that for the majority of the time do nothing to help the performance of the network, this is exacerbated if lower performance nodes have to be used as supernodes because higher performance nodes have already been turned into brother supernodes. As previously mentioned a greater robustness could be obtained through increasing the amount of routing information in supernodes so if one goes offline the parent can hop over it to the lower supernode, this would dramatically increase the robustness but not the reliability as the supernode that goes down will still lose the information contained on it and the only way of regaining it would be to send an overlay broadcast out requesting nodes to update it. This area would be a good thing to include in the dynamic splitting algorithm previously mentioned; by basically managing each tier as a distributed database supernodes could share their file lists with other supernodes on their tier which could then save them to disk just in case they are required later. This would disband the requirement for brother supernodes and free up resources so they could be used in the rest of the network, also it would lower network traffic as supernodes and their brothers wouldnt have to be constantly in contact. 8.3.3 File Transfers The transfer of files is obviously important as it represents the longest length of time spent on a P2P network. It was previously discovered that the multi-source download wasnt efficient enough to maximise the download rates, this was mainly because of a nodes ignorance of the bit rates of other nodes. To rectify this, nodes could employ two different methods, the first would simply to statically label each FileDescription with the average bit rate of the node, this would be extremely simple to do and would help the node come to an easy decision on who to download from. The second is to find out the current bit rates of nodes by querying them dynamically, this has the advantage of returning a more accurate bit rate and will result in the best choice possible however if there are a lot of instances in the file on the network a node may find itself having to query many nodes to find out the best one to download from. This problem could be alleviated by combining the two methods and leaving the choice of which nodes to check for their current bit rates up to the node which will base its decision on the static bit rate included in the FileDescription, this will help nodes minimise the number of wasted queries it makes. Once a node has all the information it requires it will then be able to make an accurate decision on where to download from. This information could also be used to aid in the distribution of load over multi-source downloads, therefore nodes with more bandwidth could be given a larger proportion of the load. A different approach would be utilise unused bandwidth to increase download rates when nodes arent busy. This would be done by uploading files from slow connections to fast connections when there is bandwidth to spare, these files will be kept in a folder so that when other nodes wish to download the file they will be able download it from the faster node. This could be taken one step further and nodes could actually upload files to free web servers which would then be able to supply the files to nodes, it is likely that most web servers will be faster than the majority of nodes connected to the network (including broadband connections) making the download process even faster. 8.4 Critical Summary of the Evaluation This chapter has discussed in details not only the short-comings but also the better features of the system, however it is limited in the accuracy in which it can comment on the system. This is mainly attributable to the limited real-world testing that the system has received, therefore many figures have had to be based on limited data; the use of simulators has aided in the accuracy but still it cannot be compared to the real word. Similarly the only educated evaluation that the system can receive is from what has actually been implemented; due to the limited degree of implementation certain areas have been based more on speculation than fact. The distributed nature of the system also limited how much testing can practically be performed on the system, the highest number of nodes that GazNet has run over is 16, although this is adequate for many testing purposes, it is not adequate to verify that the system is fully functional as it is intended to run over millions of nodes. By using simulators extra test data has been accumulated but there is a much higher scope for mistakes and things being left out, than a fully working system therefore its output cannot be taken with 100% certainty of completeness. 9 Conclusion 9.1 Review of Aims There were 8 aims set out at the beginning of the report, the following section aims to analyse to what extent these aims have been met. 1) To design, develop, and evaluate a P2P network to allow the sharing of files. This aim has been completely fulfilled, the P2P network created allows the sharing of files and has been evaluated rigorously. The network has faults and therefore could be said to have been not fully developed but a high degree of development has taken place. To allow fast, efficient searching of the network To decrease search time compared to current P2P technologies To allow fuzzy searches that dont require specific details to be entered e.g. the exact name of the file. To limit the effect network size has on search time To keep search time low even when the overlay network is heavily loaded To keep searches as accurate as possible, so out of date file references arent returned in search results i.e. references to files that have already been removed from the network These aims were to a great extent the core intentions of the project and therefore constitute the most important area to be completed. The structure of the network certainly fulfils the requirement for fast search time and manages impressive improvements over current P2P technologies search methodologies. Aim 2b is fulfilled in that individual words can be searched for opposed to complete filenames however the word has to be an individual word and not a word inside another or the second part of a hyphenated word, similarly there is no function to retrieve wrongly spelt words, instead to word must be an exact match. 2c has also been fulfilled, as network size has a limited effect on search performance in comparison to a network like Gnutella however the architectures current build does posses scalability problems that can have an effect on the search time, this primarily manifests itself in the form of overloading of the higher tier supernodes. 2d, is quite subjective, this is because the ability of the network to deal with heavy loading largely depends on the first tier supernodes; if they are very high performance, search time will be able to be kept low, however if the supernodes are low performance they might not be able to service the queries at a fast enough rate to not have a noticeable impact on the search time. 2e is probably the least completed aim, the designed method for keeping file references up to date has fundamental flaws, that may frequently result in out of date search results being returned, further to this the technique was not implemented in the application therefore leaving file references on supernodes indefinitely. However, file references will be removed from a nodes supernode when the node disconnects as the supernode will realise the TCP connection has been broken and will proceed to remove all file references. It is hard, to keep networks like this up to date but it is likely that once the simplicity of the chosen method would work the best, alternatively a more complex approach could be taken to yield more effective results such as the brother node system described in section 3.2.5. 3) To make the network as scalable as possible in both terms of its performance and in the maximum number of nodes that can be concurrently connected to the network. Like Aim 2, this aim was an important objective at the heart of the project and was therefore something that much effort was put in to. It is possible to argue both the completion and the un-fulfilment of this aim, however the stance taken here is that it was fulfilled. Using the measure of search time it is hard to argue that the network is incapable of scaling well, its indexed nature allows extremely fast location of the correct files and (depending on the performance of the supernodes) will provide a good service even when dealing with a high number of nodes. Similarly providing that a similar files per node ratio to Kazaa is maintained there will be little chance of a node not being able to find a supernode to connect to. Unfortunately, it is also arguable that this aim was not fulfilled, this is primarily attributable to the way that the first tier supernodes provide the only gateway into the network and therefore can become points of bottle-necking where more data is coming in than the supernode is able to deal with. This problem could be rectified by two approaches, the first is to cache supernode locations on nodes therefore allowing the first tier to be sometimes bypassed, this would help alleviate first tier load to a certain degree but in reality may not reduce the load by that much as a user will not perform many searches with the same first two letters, therefore the supernode would have to be queried again to find the location for the latest search. The second technique would be to increase the number of first tier supernodes, therefore creating multiple gateways into the network, on a million node network, using 6 supernodes per letter would mean only 4 queries per second(qps) (presuming even distribution over the first tier and 625qps). To make the system as reliable and robust as possible The network must be able to recover from the loss of supernodes The network should be able to a reasonable degree withstand targeted attacks by malicious users Downloads must be able to be resumed without having to re-download all the data already received if transfers are interrupted. The system should deal with errors in an elegant way. From the early stages of the project reliability was know to be a weak point of the design and it could be said to have been sacrificed in aid of improving search time. The technique used to fulfil 4a (brother supernodes) is an effective and reliable method, although it is not without it faults however this was not implemented in the project (due to time constraints) and therefore only fulfilled in design and not actual implementation. Aim 4b is definitely a problem area in the network; by managing to remove a single first tier supernode a malicious user could remove a massive portion of the network, this action is largely defending against by using brother supernode but in the case of all brothers being taken offline the affected supernodes will be severed without any method of recombining the network. Aim 4c has been fully accomplished, without any sort of problems, the only possible issue is the applications inability to automatically search and restart interrupted downloads instead a user must search for the files again and restart the download manually. The system generally deals with errors in an elegant way, therefore fulfilling aim 4d however there are certain times in which the GUI crashes, an example of this is when a search encounters an unexpected error such as the connection failing, in such a case the GUI will freeze. To make the network as independent as possible i.e. avoiding the use as of centralised managed servers, removing any one point of failure making it near impossible to shut the network down. Like Aim 3, it is not a binary situation in which this aim can be said to have been fulfilled or not; the network does not use centrally managed servers in the traditional sense however an element of centralisation has been introduced into the system in the form of supernodes. It would be near impossible to fulfil the performance requirements of this project using a fully distributed architecture, therefore centralisation is undoubtedly necessary. The main problem, is based around the issue of making the network near impossible to shut down, unfortunately the importance of the first tier supernodes and the networks inability to recover from the loss of them means that a concise effort by a party with suitable resources would be able to shut the network down. By Using enough brothers to the first tier supernodes it may be possible to make the network robust enough to defend itself against attacks but by consistently performing Denial of Service attacks on the first tier the performance could be crippled. To allow sharing of files over the network To allow file transfers to be performed as quickly as possible hiding the user from the underlying actions This aim to a large extent has been completed; files can be transferred between nodes however the speed of the process is limited by the bandwidth available. Multi-source downloading is used to improve performance but it is not advanced or intelligent enough to maximise download performance however in the majority of cases download speed has been improved. To minimise the time taken to connect to the network To avoid the use of a centralised server to aid connection to the network. The unfortunate problem with this aim is that by fulfilling 7a the degree to which the overall aim can be fulfilled is limited, this is because by avoiding the use of a centralised server the time taken to connect to the network is increased. The method of using supernode caches is a lengthy process compared to the use of a central server to aid connection but it does work. Unfortunately however, a user that uses the application sparsely may find that it takes a long time to connect because his node cache is out of date. An even worse scenario is that the node cache will no longer contain any valid supernodes therefore stopping the user from connecting to the network at all. To provide a highly simple, easy to use user interface To let the user quickly and with ease search for files without having to understand and underlying processes To provide the user with some form of discriminatory information about specific downloads so they may make an informed decision on which files to download. To allow the user to modify his/her shares without difficulty To allow the user to view what he/she is currently sharing The interface must be responsible at all times even when actions are being carried out behind the scenes such as a search. The user must be provided with progress details of downloads and be told when a file has finished downloading The user must be provided with a indicator (i.e. bit rate) of how quickly a file is downloading. The user interface was always a low priority requirement, however it was still a component of the project that needed to be addressed. 8a is undoubtedly fulfilled as the actions a user has to carry out to search is simply to click on the search tab, type in the query and then click the button. Aim 8b is not fulfilled in any real terms, however the GUI does provide a field in the search results table that indicates the connection speed of the node that the file resides on, however the functionality behind this is not implemented, therefore the requirement is only fulfilled on a superficial level. Aim 8c and 8d have both been fulfilled as the UI for dealing with the shares is as simple as it can be, similarly the shared folders and files are displayed in an easy to view tree. 8e has been fulfilled to a large extent as the program is multi-threaded enough to stop underlying processes interfering with the responsiveness of the GUI, however on a low performance computer it is still possible that the GUI could become unresponsive when certain processes, such as very high bit rate transfers are taking place. Further to this as mentioned earlier on aim 4d it is possible that the GUI can freeze, leaving the system completely unresponsive. Aims 8f and 8g are both fulfilled as the user is supplied with both details of the progress and a bit-rate counter during transfers; both of these are situated in the download an upload table. 9.2 Review of Original Project Proposal The original project proposal spoke of a very much different system than was created, this is mainly because of time constraints and a shift in the importance of certain aims, namely search performance. The two major changes in the project is the abandoning of DRM and the move away from a wireless platform based network. The first aim was modified to exclude the implementation of it on a wireless platform, instead the network was intended to run on a conventional network. To allow the sharing of files between separate wireless systems. Despite this, many of the requirements of a wireless P2P network were kept in the actual aims, a good example of this is fast search time. The next abandoned aim was to give the user an incentive to share his/her files, To provide incentives for users to allow other users to upload files from them. This aim was considered to be an aim that was not vital to the success of a P2P network as many users frequently share files anyway and therefore was something that could be overlooked, to the advantage of other aims. The last and probably the biggest abandoned aim was the decision to remove all aspects of DRM from the project, To allow the control of the distribution of files through DRM and licensing. To aid the secure and easy transmission of licenses. This was done because of the sheer time required to implement it, something that simply wasnt possible on the timescale allotted. 9.3 Suggested Revisions to Design Some design revisions were spoken about in section 7.2 however no firm decisions were made as to which revisions should be implemented in any future extensions of the project. The main issues that were raised in section 7.2 were, Splitting Algorithm used Network Tree Traversal Architecture of the Network Reliability Issues Download techniques Revision 1 to 3 relate to scalability issues, one of the major issues of the project was improving scalability of P2P networks, the overall concept used is still a valid one, however certain adjustments could be made to the finer details. After the completion of the project it is clear that in its current form the design would not scale however this is not to say that the design with modifications is unworkable. By modifying the splitting algorithm to the dynamic algorithm spoken about in section 7.2.1 huge increases in efficiency could be gained, however an alteration of this kind will not provide large improvements in scalability, instead it will mean a small increase in scalability and a large improvement in resource allocation. To increase scalability sufficiently, changes to areas 2 and 3 must be made; appropriate changes have been outlined in the evaluation, a major issue is the limited number of instances of a file that can reside on the network as this is a direct barrier against scalability. Reliability is probably the weakest point of the GazNet design, early on in the project decisions were made to sacrifice a lot of the reliability strengths of fully distributed P2P models with the intention of acquiring much more powerful searching techniques. Unfortunately, however efficient the search algorithm is, it will never perform to a high standard if the underlying network is not reliable enough to provide a stable foundation for the algorithm to run over. Probably the best way to improve reliability would be to increase the routing information held on each node (both ordinary nodes and supernodes). Perhaps, however, bringing the architecture closer to that of Gnutella might provide a greater degree of robustness; this would likely sacrifice a degree of search efficiency but would improve the network overall as less problems would be encountered. The current download method is implemented using a simple multi-source download algorithm that splits the file into a series a segments that can be downloaded from each available source. To improve the process, it is required that the algorithm is made more intelligent; to allow this intelligence to function properly it will also need to be supplied with more information, namely the speed of the connection. Currently no allowance is given for the amount of bandwidth available to each source, instead every source is given an equal weighting, this is good for simplicity but does not manage to maximise the speed of the download as a slower connection could easily be chosen over a faster one. To improve download speed, an algorithm should be devised that will calculate the fastest possible way of downloading the file, instead of simply trying to download from as many sources as possible. 9.4 Suggested Revision to Implementation As a design orientated project, the implementation could be said to have taken a back seat compared to the actual design of the system. However as the design and implementation are so closely related and without a proficient implementation the design will never reach its full potential, some revision should be made. Improve local searching algorithms Modify user interface Modify protocol One of the main problems with the implementation is the choice of local searching algorithms used, i.e. how the supernode searches its file database. The method could be described as a hash table but, values are only hashed by their first letter, therefore not creating a very effective system. Files are stored in an array of 26 vectors which must then be searched linearly, this method was suitable for testing the design but if the system was to be deployed, a serious load would be put on supernodes needing to make frequent database searches. Instead the Java Hashtable class could be used to improve look-up time; this would make the splitting process a more complex ordeal but as searches are a more frequent occurrence overall efficiency would be improved. The user interface like the searching algorithm was mainly intended to provide a platform on which testing could be easily carried out however the GUI provides little functionality to allow many actions that a user may wish to do. A good example of this is the ability to perform multiple searches at once, similarly the user has little control over his shares beyond the ability to add and remove them. Another problem for the user is the lack of detail about search results, therefore making the decision on which files to download a more difficult one. Currently the protocol is a simple ASCII text based one, this has been used to make it more extensible during the prototyping phase however is extra size makes it inefficient and might create problems in the future. This protocol could be converted into a smaller bit-oriented protocol, as massive savings could be made over using text. Another big problem with the protocol is that it isnt encrypted, an open source protocol is perfectly viable for a fully distributed network like Gnutella but the security of the protocol on a network like GazNet is imperative to limit the damage that could be done by a malicious party. A good example of this is the 190-NEW_SUPERNODE command which if used improperly could cause massive damage to the network by creating a multitude of unnecessary supernodes. Another protocol modification that could be made is the transport protocol that it runs over; currently everything is run over TCP, however considering GazNets largely connectionless-orientated approach perhaps more use of UDP would improve the networks efficiency. Such an instance is performing pings, currently to ping a node a TCP connection must be first initiated however, by using UDP the cost of connection could be avoided. 9.5 Future Work Any attempt at creating P2P applications can always be followed up with future work, this is because the complexity of such as system can never be dealt with to an extent to have created a optimal design. GazNet is an early implementation of what is essentially a P2P concept rather than a specific design. The concept is to use an indexed tree to allow the efficient searching of a network, GazNet embodied this principal in a particular way not in the definitive way, this leaves the task of finding the definitive way. Many design modification have been outlined in section 7 which most certainly should be implemented in future projects, the following list outlines future work that could take place. The modification of the architecture currently the architecture is based around the simplest premise possible, to simply split each supernode by its letter range however despite its simplicity this method is probably the least efficient. The architecture centres on the splitting algorithm and therefore the modification of it would be quite simple, three new algorithms are outlined in section 7.1.1, the best of which being the dynamic splitting algorithm. It is un-doubtable that any future work must include, this or a variation on this algorithm if increased performance and scalability are to be gained. Better support for internet use as has been said earlier the implementation was more of a technique for testing the design rather than an application that could actually be released, therefore the practicality of using GazNet over the internet is limited. The ultimate testing mechanism is its use by the end user, therefore the success of the network will never be known until it is ran in real conditions. Kazaa implements methods to improve its internet performance such as programming nodes to prefer connecting to supernodes with smaller round trip times. It would be good to extend these sorts of internet concepts to GazNet and allow its use in real life to find out its real efficiency. Expanding the applications the system can be used for currently the only action GazNet can perform is file transfer, however P2P search engines can be used for a multitude of different applications ranging from live video streaming to sharing web content. It is frequently talked about that much of the world wide web is not indexed by internet search engines; by giving people the power to host their own web sites on their own computer and allowing other to find it through the GazNet search engine, it would allow many who wouldnt have previously thought of creating a web site to make one whilst also increasing the indexing of the internets massive web content. The inclusion of DRM in the original project proposal DRM was to be a key part of the system however due to time constraints it had to be dropped. DRM is a major issue in computer science and something that is likely to be more heavily incorporated into P2P technology as time goes on, this makes DRM something that any future work in the area should give serious thought on. The running of the network on a wireless platform as well a DRM, another original project proposal that was dropped was the implementation of the network on wireless technology. Also like DRM, wireless P2P networks are definitely something that will be entering the research domain in a more prevalent manner soon. The concepts and requirements of GazNet are heavily based around the needs of a wireless network user and would therefore be something that would be interesting to port onto a wireless platform. 9.6 Lessons Learnt The project, although in some ways a failure, was a provider of many benefits. Leaving aside the experiences gained, the knowledge acquired through both the research and the implementation has vastly extended both my knowledge of P2P technology and overall networking. Further to this, my Java programming skills have greatly expanded, not only in networking but also in Swing, security, design patterns and data structures like Hashtables, to name a few. There is no doubt that these newly acquired practical skills will come in useful in later life. On a less practical side many new skills have also been gained such as scheduling and evaluative skills. One of the major lessons learnt was in relation to jumping into implementation before the appropriate design has been completed. A good example of this was the separate programming of the Supernode and Node classes, later on it was realised that it would be more efficient to sub-class Supernode from Node and therefore alterations had to be made. Similarly, implementation was begun on areas such as the NetworkStartup class before an appropriate level of detail in the design had been completed. Such actions led to inefficient programming and the subsequent wastage of time spent fixing them. Something else that I have learnt to do now, is to carry out a more thorough analysis of the design before implementation begins. The evaluation is littered with criticisms of the original design and ways of improving it; much of the evaluation was based on data not obtained from the implementation, instead it was based on simulators and mathematics proving that the implemented system was not practical. If this had been carried out, as it could have been, before the implementation a much more efficient system could have been created. 9.7 Final Conclusion This project was, from the very beginning, aiming to test a concept rather than implement a specific design. GazNet could be considered to be an application, a protocol or a design however a more accurate description of it would be an idea, the idea is to decrease P2P search time by using an indexed tree of supernodes, all other matters around it are merely issues of a particular design. GazNet could be said to be a conceptual success but an implementation failure, the finished program both lacked elements of the design and possessed undesirable elements that should have been left out; despite this, in controlled situations, it worked. The simulators created, primarily for evaluative purposes, showed that the concept is a workable one and with modifications could provide the basis for a very effective P2P network. The implementation was never created with the aim of deploying it in the real world, instead it was to be used to test the viability of the network and bring out any important issues that would need to be dealt with, something that it has done admirably. However, these positive points should not be unaccompanied by some more practical notes; yes, the implementation does serve its purpose by discrediting the design and helping to locate areas that need improvement but, it would have been better if instead of finding the faults, the design had worked to a greater extent therefore supporting the GazNet concept more. This project is undoubtedly an evaluation orientated one and has certainly performed this task well. Much more about the limitations of the network are known and any further attempts will be much in debt to this original design. However, even if no further work is carried out on GazNet, with a little more time a fully functioning P2P network with some very advantageous features would have been created that would be fully suited to running over a LAN offering many of benefits over networks like Gnutella. References - Adar, E and Huberman, B. (2000)Free Riding on Gnutella  HYPERLINK "http://firstmonday.org/issues/issue5_10/adar/index.html" http://firstmonday.org/issues/issue5_10/adar/index.html - Balakrishnan, H. and Kaashoek , F. and Karger, D. and Morris, R. and Stoica, I. Looking up Data in P2P Systems. - Boger, M. (2001). Java in Distributed Systems - Buhnik, T. and Laura, L. and Leonardi, S. (2003). A phenomenological analysis of the peer-to-peer networks based on Gnutella protocol - Clark, J. Accessibility implications of digital rights management  HYPERLINK "http://www.joeclark.org/access/resources/DRM.html" http://www.joeclark.org/access/resources/DRM.html - Dabek, F. and Bunskill, M. and Khaasoek, F. and Karger, D. Building Peer-to-Peer Systems With Chord, a Distributed Lookup Service - Digital Rights Management and Privacy  HYPERLINK "http://www.epic.org/privacy/drm/" http://www.epic.org/privacy/drm/ - D-Lib magazine June (2001). Digital Rights Management (DRM) Architectures  HYPERLINK "http://www.dlib.org/dlib/june01/iannella/06iannella.html" http://www.dlib.org/dlib/june01/iannella/06iannella.html - Jovanovic, M.A. Modeling Large Scale Peer-to-Peer Networks and A Case Study of Gnutella - Kazaa Homepage,  HYPERLINK "http://www.kazaa.com" http://www.kazaa.com - Leibowitz, N. and Ripeanu, M. and Wierzbicki, A. (2003). Deconstructing the Kazaa Network - Liang, J. and Kumar, R. and Ross, K. W. Understanding Kazaa - Miller, M (2001). Discovering P2P. - Moore D. and Hebeler, J. (2002). Peer-to-Peer: Building Secure, Scalable, and Manageable Networks - Peterson, L.L. and B.S Davie (2003). Computer Networks: A Systems Approach - Rao, S. Chord-over-Chord Overlay - Rich, L. It's Who You Know, Up to a Point - Massive Media - Company Business and Marketing.  HYPERLINK "http://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864" http://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864 - Ripeanu, M. Peer-to-Peer Architecture Case Study: Gnutella Network - Ritter, J (2001). Why Gnutella cant scale. No really. - Stoica, I. et al. (2001). Chord: a scalable peer-to-peer lookup service for internet applications, ACM SIGCOMM. - The Gnutella Protocol Specification v0.4  HYPERLINK "http://www.clip2.com" http://www.clip2.com - Wilkipedia  HYPERLINK "http://en.wikipedia.org/wiki/P2p#Usage_of_the_term" http://en.wikipedia.org/wiki/P2p#Usage_of_the_term - Xie, M. P2P Systems Based on Distributed Hash Table - Zhao, B. Y. et al. (2004). Tapestry: A resilient global-scale overlay for server deployment Appendix Proposal for Wireless Peer 2 Peer File Share application 1. Abstract The aim of this project is to provide a facility for people using wireless hardware such as PDAs to be able to access and share a variety of files such as MP3s and documents. There is a need for this as people may frequently find themselves in situations in which it is not possible to access a regular file share program such as Gnutella. The project focuses on the more low level aspects of routing and how to make the system run as effectively as possible. Unlike someone using a desktop PC with broadband a wireless connection will cost the user a lot more, further to this it is also a lot slower as well, this means the system must be more efficient. Also the project aims to limit the proliferation of material by using some form of Digital Rights Management. The DRM should hopefully allow every user on the network to protect their material and enable copyrighted material to be shared securely and legally. The outcome of the project will hopefully be a fast and effective way to share files over a wireless connection that rectifies some of the major flaws of other file share programs such as Gnutella. 2. Introduction The essential idea of P2P files sharing is not a new concept however the implementation of it has often been flawed and inefficient. In certain circumstances (e.g. a fast connection or small files) this can be tolerated however in other circumstances problems like this are unacceptable, one of these circumstances is a wireless file sharing program. The reason for this is that unlike a permanent broadband connection a wireless connection is expensive, therefore what possible reason would there be for someone to allow someone else to upload files from them when it is costing them money. A second problem is that an active connection takes up a great deal of battery life and not many users would be happy about having to repeatedly charge their battery so they can simply share their files. Therefore a wireless file share program needs to have certain improvements over its standard desktop counterpart. To start with, network traffic has to be kept to a minimum, that means that an efficient routing algorithm must be devised to allow information to propagate through the network with a minimum amount of data transfer, also techniques must be found that improve the speed of downloads so that user can access files quicker and therefore save money and battery power. Finally some sort of incentive must be found for users to allow others to upload files from them; the improved download time will form part of the incentive but also users could be given something like improved access or a higher status the more files they share. Another incentive would be some sort of pecuniary advantage for sharing your files, this would be harder to implement than the other incentives but one way would be to sell your files to other users instead of simply providing them for free, this leads on to the concept of DRM. The next stage in the file sharing process is the actual control over the spreading of files. As anyone who watches the news will know, music companies have serious problems with the ease in which MP3s can be downloaded off the internet; this leads to the need for some sort of way to control how digital material is accessed. Digital Rights Management (DRM) is the answer to this; currently DRM is in its infancy and it is necessary to advance it to allow users the confidently distribute licensed material safely in the knowledge that only authorised users will be able to use it. This P2P application aims to incorporate DRM into the process of sharing files and therefore allow users to safely and securely share their files. One possible use of DRM links back to the need for incentives. By protecting files with licenses users can sell their files instead of just freely providing them to all, this will encourage users to share files because the more files that are uploaded the more money the user will make. Users can then share their free files along side their licensed files so others have access to the maximum amount of data that is possible. This report outlines various aspects of this project and will hopefully inform the reader of the approach that will be taken and any problems that may arise. 3. Background As said previously P2P file sharing programs are not a new phenomenon, the first being Napster. Ironically, however Napster isnt actually a true P2P system, in fact it used a central server that would store a list of files currently on everyones computer, the only stage in which true P2P occurred was the final one in which the file was actually downloaded. The use of a Brokered service was one of Napsters most efficient features, however it was also its downfall. A central database provided quick and efficient searching but as the owners therefore knew what was being distributed on their network it made them responsible for it, therefore if users are sharing copyrighted material the owners of it have a good case for shutting the system down (as they did). Another problem with using a brokered service is that it is very fragile, if the central server goes down the whole network stops working, because of this the closure of Napster was made very simple. The moral of the Napster story is that a Brokered service is impossible to run unless very stringent control is kept on the files that are being shared. After Napster was shutdown a new gap was opened for other applications to be developed that could share files. The client server system was now considered to be unworkable as shared copyrighted material would have to be removed by the administrator (as this constitutes the biggest share of the files this would make the system very unpopular), therefore a true P2P system would have to be developed in which content could not be blamed on the creators. Several systems arose, one of them was Gnutella, which is a true P2P system; even if the government did wish to shut it down it would be near to impossible as it is fully independent every peer is equal and there is no reliance on a central server. Although true P2P has obvious advantages the big draw back is inefficiency, compared to a client-server system Gnutella is very slow and creates far too much network traffic. This is because when a search is performed instead of sending a query to a server the node must propagate a query to every node on the network in real time; this involves sending a query to all the nodes you know then those nodes sending the query on to every node that they know. This system quickly gets out of hand when nodes start receiving the same query multiple times because different nodes are connected to the same node. Another system, KaZaA tries to rectify this by using things called Super Nodes, these are computers with high speed connections which can take on more than their fair share of traffic thereby making the whole process quicker. The next requirement for the system is some sort Data Rights Management (DRM), like P2P it is not a new concept and there have been a few predecessors. DRM can occur in many different forms, it can range from encrypting files to the construction of a complex web following the transfer of files. The urgent need for an effective form of DRM was recognised when copyrighted files began to illegally propagate over the internet, frequently through the use of P2P applications. Commonly DRM is segregated into two generations; the first of these uses encryption techniques to prevent the basic problem of copying files to other computers. The second generation covers a more diverse range of requirements, it covers description, identification, trading, protection, monitoring and tracking of all forms of rights. Currently DRM is implemented using some form of encrypted wrapper around the file or using a tag that indicates what access rights users have. DRM can reside in many different areas such as the Operating System or the actual media itself; the latest version of Windows Media Player currently implements DRM. The next question is why cant an already created file share program simply be ported onto a wireless device. The answer is simply that the needs of a mobile user is significantly different from that of a desktop user. Mobile users obviously will spend most of their time during use on the move, this means that it is unlikely that they will simply use the internet leisurely to pass time unlike the desktop user who may often sit down and spend hours browsing the internet simply to entertain themselves. Instead they will use the internet with a specific aim such as the check their E-mails, therefore users may just pop online for a few minutes then disconnect again; this sporadic use really undermines the use of file sharing software. The main problem with wireless P2P therefore stems from peoples reluctance to use it; the cost of a wireless connection both in battery power consumed and monetary terms is very expensive compared to a broadband connection, this leads to the attitude of Why should I share my files when it costs me money to do so? Two differences have to be made between wireless P2P and desktop P2P then, the first is to improve the efficiency of the network so things can be carried out as quickly as possible, the second is to give the user some sort of incentive actually share their files and stay online enough for someone to actually download something from them. One of techniques KaZaA uses to encourage the sharing of files is to allocate different users different rights; depending on how many files that have been uploaded from you a different rating will be given which will entitle you to a certain level of service i.e. the more you share the greater the performance you will get from the network. This idea will be incorporated but it is unlikely that it will be a big enough incentive especially if there is not that much of a difference between a high rating and a low rating. A better idea would be to use some sort of monetary incentive, this is harder to implement but would be more effective. The use of DRM makes this idea viable as people would be able to posses licensed material which they could sell over the network, along side the saleable material they could also provide free material which people could upload, basically this means the more often you are connected to the network the more money you could make. A similar idea to this is the ability for people to distribute material quickly and effectively. A good example of this is if a wireless user spots Brad Pitt kissing someone other than his wife, he could take a picture of this and put it on the P2P network then license it out. All a newspaper would have to do is it carry out a search on the network and purchase (using DRM) the image off the owner. As cameras become more and more popular in phones this concept becomes more and more viable and would shift the monetary cost of sharing files from the owner to the downloader basically making the P2P network into a massive digital market place. 4. The Proposed Project The overall aim of the project is to create an efficient high-speed wireless P2P file share program that can be independently managed without the production of masses of network traffic. The individual aims and requirements are To allow the sharing of files between separate wireless systems. To allow the quick, easy and efficient searching of files over the system. A fast setting up of the network that creates a minimum amount of traffic. To make the download time as short as possible for both parties. To provide incentives for users to allow other users to upload files from them. To make the system as independent and as manageable as possible. To allow the control of the distribution of files through DRM and licensing. To aid the secure and easy transmission of licenses. Currently the approach that would be most efficient is to use a similar system to KaZaA which uses super nodes to improve efficiency. However, although super nodes do dramatically improve performance, for wireless hardware it is possible that they could be modified to be more effective. This is because their isnt as much diversity between the performance of wireless handsets compared to that of desktop computers, due to this fact one handset wouldnt be able to take on that much more of the work than any other this means that super nodes would have to be used in a different fashion. Super nodes will be treated as a set of connected servers (therefore making one large distributed server) and it will search files in a similar manner to DNS queries would be used the actual downloading of files will occur between the two parties without any other intervention but where possible files will be downloaded from as many separate users as possible (in a similar way to FreeNet) to minimise the time each user is having files uploaded from them. To connect to the network a new node would send out a broadcast message asking for the location of a super node, when it receives an answer it will try to connect to the node and send it a list of its files. The super node will add the files to its database and the new node will then be connected. To search, a node simply would query the super nodes database and would receive the location of the file as an answer. If the file does not reside in the database the query will be directed up to a higher super node and so forth until the file is found (or not found as the case may be). The role of super node (or dynamic server) will be allocated as and when it is needed, any node with sufficient performance will be able to act as a super node and it will be given the task be an already existent super node. This will create a hierarchical structure and will therefore be quite easy to maintain. If one super node receives too many connections it will then select a new node to be a super node and therefore direct new connection request to that node, this means that the network could be compared to a linked list of super nodes. There are a variety of ways in which DRM could be implemented, one of these ways would be to maintain a central server which could track the distribution and use of files, however this would go against the aim of making the application as independent as possible. This means that a different method must be used, in this situation the best alternative would be to tag files with a set of rights, however this would mean that the software used to run the files would need to implement a compatible form of DRM. An alternative to this would be to use some form of encrypted shell, this would be easiest to implement and not require a central server but suffers from a lack of functionality, the only problems it really addresses is the illegal copying of files. Therefore the best choice is to tag files to control their distribution, these tags can be hardware specific and therefore only run on one persons computer so once they posses the files they wont be able to distribute them outside the agreement of the license. Testing may be difficult, as preferably a small number of wireless handsets would be used. A small number of these can be used for a simple black box testing to insure that the system works on them but the majority of testing must be done of a normal desktop PC, which is simulating a wireless environment. The application can be distributed through a number of people that will allow some sort of monitoring of transactions, which will allow many flaws to be spotted. This monitoring could appear in many different ways, the most obvious is to monitor the network side of the application. This could come in the form of time taken to connect to the network, time taken to download files, time taken to search for an item etc. Things like this would be very easy to monitor, on top of this a more sophisticated observation could be made such as how long it takes the user to carry out a certain task. Similarly the overall efficiency can be found out by simply including an additional feature in the beta version that will record properties such as connection time. 5. Programme of Work The project will be carried out in the first 20 weeks of the academic year of 2004/2005. Tasks 1. Research current P2P and DRM technology. There is currently a great deal of interest in these topics and they form a popular area for research. Further to this the economic need for DRM technology means companies like Microsoft are keen to develop this type software. The popularity of P2P applications also means that there are quite a few around which results in a lot of example software to research. 2. Design of routing, searching and downloading algorithms. The networking side of the application constitutes the most important aspect of the project. The design should focus of the protocols used and the way information is propagated through the network. 3. Design of DRM algorithms. The method of DRM used is very important as it will affect all the users of the network. Due to the evident complexity of DRM a lot of work should be put into the design of it as it is likely that many errors may arise if it is designed badly. 4. Implementation of networking aspects. The networking basis must be implemented first as this will provide the basis in which the other aspects are created. It will be created using a basic command line parameter interface to detach the networking from the higher level parts of the project. 5. Implementation of DRM Once the networking foundation has been laid the DRM functionality can be implemented. 6. Design of User Interface Once the actual functionality of the application has been finished the user interface can be designed. This is left till after the implementation of the other parts because it is likely that some new features will be developed during implementation so it would be best to leave it till later. 7. Implementation of the User Interface. The user interface will be implemented and be mapped to the underlying functionality of the application. 8. Testing All aspects of the application will need to be tested (and fixed if necessary) with special emphasis of the scalability of the networking algorithms. 9. Analysis of test results Once the system has been tested the results should be analysed and any improvements or desirable extra features should be added. 10. Writing of Report. Once the system is finished everything should be documented. 6. Resources The obvious resource requirement is a one or two wireless systems to test out the system, these are obviously required as a certain amount of testing needs to be carried out to ensure that areas such as the user interface work well on wireless hardware, it is not quite so important for the lower level functionality to be tested on a wireless system as it can be simulated on a desktop PC. This leads on to the next hardware requirement which is a number of PCs, it would be ideal to be able to test the system on a high number of computers to test how well the system scales but as this is not possible it could be tested on about 50 100 PCs. This would be easy to carry out simply in one or two computer labs late at night when nobody is using them. Alternatively the application could be distributed amongst a number of people that could test it during its use by simply installing it on their own computer. This however would be needed only once during the evaluation period of the project, throughout the project when the application is being developed testing can simply be carried out on one Java enabled PC The software requirements are more modest, simply a programming language (Java) and a small number of utilities to help development and testing. These include something to help in the design of the user interface such as a GUI builder and some network utilities like a packet sniffer. 7. References Books - Discovering P2P by Michael Miller, First Edition 2001. - Peer-to-Peer: Building Secure, Scalable, and Manageable Networks by Dana Moore and John Hebeler, First Edition 2002. - Java in Distributed Systems by Marko Boger, 2001. Websites - Accessibility implications of digital rights management by Joe Clark.  HYPERLINK "http://www.joeclark.org/access/resources/DRM.html" http://www.joeclark.org/access/resources/DRM.html - Digital Rights Management (DRM) Architectures by D-Lib magazine June 2001  HYPERLINK "http://www.dlib.org/dlib/june01/iannella/06iannella.html" http://www.dlib.org/dlib/june01/iannella/06iannella.html - Digital Rights Management and Privacy  HYPERLINK "http://www.epic.org/privacy/drm/" http://www.epic.org/privacy/drm/ - It's Who You Know, Up to a Point - Massive Media - Company Business and Marketing by Laura Rich  HYPERLINK "http://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864" http://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864 Deviations from Original Project Proposal The project has deviated from the original proposal in three main ways, the first is the move away from a wireless platform and, second was the exclusion of any implantation of DRM and the third was a modification of the network architecture Move away from a Wireless Platform This was done because the system was originally developed using J2SE, this was because it was necessary to have standard computers running the application to function as supernodes. It was then intended that a J2ME version would be developed, however due to time constraints this was not possible. The system still maintains aims and requirements of a wireless system but does not implement any functionality that would allow it to run on a wireless platform Exclusion of DRM This was done solely because of time constraints; there was a strong move towards the networking side of the project and large quantities of time were spent doing this, in an attempt to improve things like search time. Unfortunately this was done at the expense of DRM. Modification of Network Architecture The original intention was to create a Kazaa like supernode network, however, during the design it was decided that this network wasnt efficient enough to run over a wireless platform, the next stage was to develop a different type of network with more efficient searching algorithms, the embodied itself in the design seen in this project. Approval by Supervisor All these deviations were approved by the supervisor, from early on the in the project the change in network architecture was established however the other two deviations were only decided upon at the beginning of the second term.     ____________________________________________________________________ Page  PAGE 18 of  NUMPAGES 124 Diagram 2.5 The Pastry Topology N32 Lookup (K54) K54 N58 N48 N42 N38 N1 N21 N14 N8 Diagram 2.4 The Napster Topology Node Node Node Node Napster Server Diagram 2.3 The Kazaa topology Diagram 2.2 The topology of GnutellaNet Peer 2 Peer 5 Peer 3 Peer 4 Peer 7 Peer 6 Peer 1 Network User Interface Search Downloads  Diagram 3.4: An Approximate UML Diagram Some of the utility classes are missing from this diagram, this is because they occur in so many classes it would be impractical to show all the associations.. Diagram 5.4 Search the network P2Pgui Connection NetworkStartup IO getAlphaLocations Connects to network return getFileList () return connect return DownloadPanel Upload DownloadManager Download addDownload () return Initiates download return UploadControl Download() writeFile () Remote Location File Transfer File Transfer Acknowledgement Send next 64KB Aa Ab Ac Ad A Aa Ab Ac (a) (b) BCv    ; D ,R^"e-luFm J"2#~$$!&&&'/(d**+,m-./0n02õ hzC^6 hzC^5hzC^hzC^mH sH %hzC^5CJOJQJ^JaJmH sH hzC^CJOJQJ^JaJ hzC^6CJOJQJ]^JaJhzC^6CJaJhzC^5CJ aJ hzC^5CJaJhzC^5CJaJhzC^CJaJ7     BCalmnopqr$a$]=rstuv 3     - : D +]7$8$H$+,R)^?"Z6eM- & F & F h^` & F & F ^`-lHu8uB`F) & F h & F h & F h^` & Fm !a!!!K""2##$~$$U%%!&&&_''/(( ){)) & F h^` & F h & F h)d**E++,,,m--I..%//0n00H11222]33.44 & F h & F h^` & F h2245r567~7:;;;;;;;CCGGQ+QRRSSSStTTUUUUV>VV WWW"X9XXXXXXXY6YYZZZ?[P[\]-]:]]]0^?^ӰӰӹӰӰӰӰӰӰӰӞhzC^>*CJ aJ hzC^5mH sH hzC^6mH sH hzC^5OJQJ^JmH sH hzC^5OJQJ^JhzC^mH sH hzC^>*CJ aJ mH sH hzC^5CJaJhzC^ hzC^6 hzC^5>45r55G667~77X88$99 ::::;;;;;;;$a$$a$ h h & F h^` & F h & F h;;??qArAGGGGHH6HsHHIZIJJJJJ*KK L$h^ha$$ & Fa$$ & Fa$$a$$h`ha$$ & Fa$ L?L@LLM+MMMMNNONNXOOOLPPQQ+QRRQRRR$ & Fa$$h^ha$$h`ha$$ & Fa$$a$$ & Fa$RRRRRS:SSSSSSsTtTUUUUVVVVWW!X"XX$a$$ & Fa$$ & Fa$$ & Fa$$h^ha$XXXXXYYYYZZ>[?[\\,]-]]]/^0^H_I___QaRaSa$@&a$$a$$a$?^H_I____Sauavaaffiil l>m?mmmmqr{{{b~c~f~g~j~k~n~o~r~s~v~w~z~{~~~~~~~~~~~~~~~~~~~~'-.56=࿺hzC^56\] hzC^\jhzC^UmHnHuhzC^CJOJQJ^JaJ hzC^] hzC^5\ hzC^5 hzC^6hzC^5OJQJ^JhzC^ESauavaad1dVdhdddffff $$Ifa$$@&a$$a$ fffEg{{ $$Ifa$zkd$$Ifl0.! }  t0644 laEgFgKgg{{ $$Ifa$zkd$$Ifl0.! }  t0644 laggg{h{{ $$Ifa$zkd@$$Ifl0.!} t0644 la{h|hh>i{{ $$Ifa$zkd$$Ifl0.!} t0644 la>i?iDii{{ $$Ifa$zkdd$$Ifl0.!} t0644 laiiiil l?m@mNmbmvm{mmzzqqzhhhhh $$Ifa$ $7$8$H$a$$a$$a$zkd$$Ifl0.!} t0644 la mmmmmmmKBBBBB $$Ifa$kd$$Iflr< 5  t0644 lammmmqqrrKFAAAAA$a$$a$kd@$$Iflr< 5  t0644 laruuvuq{r{{u|||Q}R}a~b~c~g~k~o~s~w~{~~~~~~~FfS $$Ifa$$^a$$@&a$$a$~~~~~~~~~~~~~~~~~~~~~~~~~~~Ff Ff $$Ifa$~~~~~~~~!'.6>?CEHLRFfFfO $$Ifa$Ff=?BCRXY_`ghqsvwÀĀǀȀˀ̀πЀӀԀ׀؀ۀ܀݀ 9:=>vwz{ )*45@ABEFist~̂͂Ђ hzC^5 hzC^5\hzC^56\]hzC^[RY`hrswy|ĀȀ̀$a$$a$FfFf $$Ifa$̀ЀԀ؀܀݀ $+29:>Ff&Ffb#Ff* $$Ifa$>BHNU\dlvw{Ł́ӁہFf -Ff) $$Ifa$  *5ABFJPW_it˂̂͂$a$$a$Ff6Ffz3FfB0 $$Ifa$͂тՂق݂ !%+17>ELFfF=Ff9 $$Ifa$ЂтԂՂ؂ق܂݂ !TUXYʃԃՃփكڃ EOPZ[fghkl#,hqטTUhzC^B*phhzC^mH sH jhzC^UmHnHu hzC^6hzC^ hzC^5hzC^56\] hzC^5\MLTUY]cipwʃՃփڃރFfGFfCFf@ $$Ifa$ &,3;EP[ghlryFfPFfMFfRJ $$Ifa$QR*+&'$@&a$$a$$a$U !C`!&IR *:Jf%n  <Ide|}~ѵѵѩѩjhzC^UmH sH hzC^5OJQJ^JmH sH hzC^>*CJ aJ mH sH hzC^mH sH  hzC^6hzC^5OJQJ^JjhzC^UmHnHu hzC^5hzC^> efqr!"BC`!Z $ !a$$@&a$$a$$^a$$`a$$@&a$$a$Z[& IJR )*9$@&a$$a$ $ !@&a$ $ !a$IJef%mn  $`a$$@&a$$a$  ;<Hcd$ & Fa$$@&a$$`a$$a$$a$$@&a$~$*$''004>4_AAP?Pv[[\\aaaaaCe\el8lnnttĄńƄ2Wх&W'W߾߾߶Ǡ֨ߨhzC^j:hzC^UjhzC^UmHnHujfShzC^UhzC^6mH sH hzC^5OJQJ^JmH sH hzC^5mH sH hzC^mH sH jhzC^UmH sH jRhzC^UmH sH = !Ed0 1 5!6!$$*$'''''J)K)]-$a$$`a$$@&a$$h^ha$$ & Fa$]-^-000)292E2Y2j2k244>4773;4;{@|@^A_AACDDDFF$h^ha$$ & Fa$$@&a$$a$FLLPP?PQQSS@VAVu[v[[K\i\\\\____````$ & Fa$$@&a$$a$`aaaaabbBeCe\ell8lnnnqqtttvvxxzz$@&a$$@&a$$a$zzz {({){}|~|RS-.ÄĄƄ$@&a$$@&a$$a$$a$     $a$12CDJVgkdE$$Ifl,"" t0644 la $$Ifa$$a$ VW^{{ $$Ifa$zkd϶$$Ifl0,"X@ t0644 laЅ{{ $$Ifa$zkdo$$Ifl0,"X@ t0644 laЅхzq $$Ifa$$a$$a$zkd$$Ifl0,"X@ t0644 la& $$Ifa$gkd$$Ifl,"" t0644 la&'6{{ $$Ifa$zkd$$Ifl0B," t0644 la{{ $$Ifa$zkd$$Ifl0B," t0644 la{{ $$Ifa$zkdO$$Ifl0B," t0644 la‰k{{ $$Ifa$zkd$$Ifl0B," t0644 laklxފ{{ $$Ifa$zkds$$Ifl0B," t0644 laފߊ{{ $$Ifa$zkd$$Ifl0B," t0644 la+V{{ $$Ifa$zkd$$Ifl0B," t0644 laVWzq $$Ifa$$a$$a$zkd)$$Ifl0B," t0644 la $$Ifa$gkd$$Ifl,"" t0644 laȋP{{ $$Ifa$zkdE$$Ifl0,"KM t0644 laPQZ{{ $$Ifa$zkd$$Ifl0,"KM t0644 la{{ $$Ifa$zkdw$$Ifl0,"KM t0644 laǍ{{ $$Ifa$zkd $$Ifl0,"KM t0644 laǍȍڍW{{ $$Ifa$zkd$$Ifl0,"KM t0644 laWXf{{ $$Ifa$zkd-$$Ifl0,"KM t0644 la͎&{{ $$Ifa$zkd$$Ifl0,"KM t0644 la&'WXmzq $$Ifa$$a$$a$zkdQ$$Ifl0,"KM t0644 laWXܔޔ :}6@01n##$߶;=IjhzC^UmHnHujhzC^UjhzC^UhzC^5B*mH phsH jhzC^UhzC^jhzC^UhzC^5OJQJ^JmH sH hzC^6mH sH  hzC^5hzC^5mH sH hzC^mH sH 6mnt $$Ifa$gkd$$Ifl,"" t0644 la{{ $$Ifa$zkdm$$Ifl0 ,"  t0644 lax{{ $$Ifa$zkd $$Ifl0 ,"  t0644 laxyĐ{{ $$Ifa$zkd$$Ifl0 ,"  t0644 laĐŐӐ`{{ $$Ifa$zkd1$$Ifl0 ,"  t0644 la`amّ{{ $$Ifa$zkd$$Ifl0 ,"  t0644 laّڑ{{ $$Ifa$zkdU$$Ifl0 ,"  t0644 la{{ $$Ifa$zkd$$Ifl0 ,"  t0644 la_{{ $$Ifa$zkdy$$Ifl0 ,"  t0644 la_`u{{ $$Ifa$zkd $$Ifl0 ,"  t0644 la>{{ $$Ifa$zkd$$Ifl0 ,"  t0644 la>?L{{ $$Ifa$zkd/$$Ifl0 ,"  t0644 laݔޔzq $$Ifa$$a$$a$zkd$$Ifl0 ,"  t0644 la  $$Ifa$gkdS$$Ifl,"" t0644 la  N{{ $$Ifa$zkd$$Ifl0T ,"  t0644 laNO^{{ $$Ifa$zkd}$$Ifl0T ,"  t0644 laQ{{ $$Ifa$zkd$$Ifl0T ,"  t0644 laQRb{{ $$Ifa$zkd$$Ifl0T ,"  t0644 laȗ{{ $$Ifa$zkd3$$Ifl0T ,"  t0644 lae{{ $$Ifa$zkd$$Ifl0T ,"  t0644 laef{ߘ{{ $$Ifa$zkdW$$Ifl0T ,"  t0644 laߘ&v $$Ifa$$a$zkd$$Ifl0T ,"  t0644 la&'-9 $$Ifa$gkd{$$Ifl,"" t0644 la9:@ʙ{{ $$Ifa$zkd$$Ifl0 ,"  t0644 laʙ˙әm{{ $$Ifa$zkd$$Ifl0 ,"  t0644 lamnxޚ{{ $$Ifa$zkd7$$Ifl0 ,"  t0644 laޚߚ<{{ $$Ifa$zkd$$Ifl0 ,"  t0644 la<=N{{ $$Ifa$zkd[$$Ifl0 ,"  t0644 la6{{ $$Ifa$zkd$$Ifl0 ,"  t0644 la67={{ $$Ifa$zkd$$Ifl0 ,"  t0644 la{{ $$Ifa$zkd$$Ifl0 ,"  t0644 la<{{ $$Ifa$zkd$$Ifl0 ,"  t0644 la<=G{{ $$Ifa$zkd5$$Ifl0 ,"  t0644 la{{ $$Ifa$zkd$$Ifl0 ,"  t0644 la|}56@ztzztzztzzt$@&a$$a$$a$zkdY$$Ifl0 ,"  t0644 la @UV01߰#$$@&a$$@&a$$a$$a$$#$޶߶<=IϻлEFS] $$Ifa$$@&a$$@&a$$a$$a$ϻлq~eIIsuE~n-3H>?LUp#G  꼰ۖhzC^6mH sH hzC^OJQJ^JmH sH j/!hzC^UhzC^hzC^CJaJmH sH hzC^5CJaJmH sH hzC^5mH sH hzC^H*mH sH hzC^5OJQJ^JmH sH hzC^mH sH hzC^>*CJ aJ mH sH 7]^`bdfhjlnpq}{{{{{{{{{vq$a$Ff# $$Ifa$zkd$$Ifl0,"@X t0644 la }~bdepuekd! $$IflF8,"\  t0    44 la $$Ifa$$a$ -:jkd $$IflF8,"\  t0    44 la $$Ifa$[qhhh $$Ifa$kd $$IflFF8,"\  t0    44 la[\avqhhh $$Ifa$kd0 $$IflF8,"\  t0    44 lajsjjj $$Ifa$kd $$IflF8,"\  t0    44 lajkusjjj $$Ifa$kd~ $$IflF8,"\  t0    44 la Zsjjj $$Ifa$kd# $$IflF8," \   t0    44 laZ[`jsjjj $$Ifa$kd $$IflF8," \   t0    44 la$sjjj $$Ifa$kd$$IflF8,"\  t0    44 la$%/;sjjj $$Ifa$kd.$$IflF8,"\  t0    44 lasjjj $$Ifa$kd$$IflF8,"\  t0    44 la7sjjj $$Ifa$kdx$$IflF8,"\  t0    44 la78HWsjjj $$Ifa$kd$$IflF8,"\  t0    44 lasjjj $$Ifa$kd$$IflF8,"\  t0    44 la!sjjj $$Ifa$kdg$$IflF8,"\  t0    44 lasjjj $$Ifa$kd $$IflF8,"\  t0    44 la0sjjj $$Ifa$kd$$IflF8,"\  t0    44 la01;Lsjjj $$Ifa$kdV$$IflF8,"\  t0    44 lasjjj $$Ifa$kd$$IflF8," \   t0    44 la%sjjj $$Ifa$kd$$IflF8," \   t0    44 la%&0Csjjj $$Ifa$kda$$IflF8,"\  t0    44 lasjjj $$Ifa$kd$$IflF8,"\  t0    44 la [sjjj $$Ifa$kd$$IflF8,"\  t0    44 la[\a{sjjj $$Ifa$kdP$$IflF8," \   t0    44 la"sjjj $$Ifa$kd$$IflF8," \   t0    44 la"#(=sjjj $$Ifa$kd$$IflF8,"\  t0    44 lasjjj $$Ifa$kd[$$IflF8,"\  t0    44 laZsjjj $$Ifa$kd$$IflF8," \   t0    44 laZ[`usjjj $$Ifa$kd$$IflF8," \   t0    44 lasjjj $$Ifa$kdf$$IflF8,"\  t0    44 lasjjj $$Ifa$kd $$IflF8," \   t0    44 lasjjj $$Ifa$kd$$IflF8," \   t0    44 la  !sjjj $$Ifa$kdq$$IflF8,"\  t0    44 la!"1Esjjj $$Ifa$kd$$IflF8," \   t0    44 lasjjj $$Ifa$kd$$IflF8,"  \     t0    44 laIH  IJksniiiiiiiiii$a$$a$kd| $$IflF8," \   t0    44 la klDE~mn- $$Ifa$$a$$a${{ $$Ifa$zkd7@$$Ifl0$ ,"   t0644 la{{ $$Ifa$zkd@$$Ifl0$ ,"   t0644 la(T{{ $$Ifa$zkdwA$$Ifl0$ ,"  t0644 laTUg{{ $$Ifa$zkd B$$Ifl0$ ,"  t0644 la{{ $$Ifa$zkdB$$Ifl0$ ,"  t0644 la{{ $$Ifa$zkd-C$$Ifl0$ ,"  t0644 laWX23G2zzzzzzrrrzz$ & Fa$$a$$a$zkdC$$Ifl0$ ,"  t0644 la 23G>?KTU^co $$Ifa$$a$opysjjj $$Ifa$kdQD$$IflFwp,"    t0    44 lasjjj $$Ifa$kdE$$IflFwp,"    t0    44 la9sjjj $$Ifa$kdE$$IflFwp," t0    44 la9:BIsjjj $$Ifa$kd\F$$IflFwp," t0    44 lasjjj $$Ifa$kdG$$IflFwp," t0    44 la"#F sniiiiiiiiii$a$$a$kdG$$IflFwp," t0    44 la     RSq @d $^`a$$`a$$a$SqWXu9c  ! !!"w#0$$$%f((+++g,-/11222333444444;7e7;9<9vj~hzC^UmH sH jhzC^UmHnHujKHhzC^UmH sH  hzC^5>*OJQJ^JmH sH hzC^>*CJ aJ mH sH hzC^6OJQJ^JmH sH hzC^6mH sH hzC^5OJQJ^JmH sH hzC^OJQJ^JmH sH hzC^5mH sH hzC^mH sH .?@oCGe,18=NSWXu%$a$%&89c' (    ! !:!M>@@AA*CJ aJ mH sH hzC^5OJQJ^JmH sH j6hzC^UmH sH jd$hzC^UmH sH jhzC^UmHnHuhzC^5mH sH hzC^mH sH (EE0EUEVE=G>GXGIIIIIMMMMN OQQQQQQSSST$a$$a$MMMMN OQQQQQQSSTTY Z]^___zee k8kllmq.q||/01H}<=ӼӦӘۏӃvvvӃvvvhzC^5CJaJmH sH hzC^CJaJmH sH hzC^6mH sH hzC^OJQJ^JmH sH hzC^>*CJ aJ mH sH  hzC^5hzC^j'hzC^UhzC^5OJQJ^JmH sH hzC^mH sH hzC^5mH sH jhzC^5UmH sH j'hzC^5UmH sH .TTTYY Z_[`[]]]^C^}^^___QaRabbyezeekk k8kl$a$llllll mmgkdKV$$Ifl,""  t0644 la $$Ifa$$a$mm1m]mimjm^UUUU $$Ifa$kdV$$Ifl\:,"         t0644 lajmkmmmm*n^UUUU $$Ifa$kdwW$$Ifl\:,"     t0644 la*n+nVnnnn^UUUU $$Ifa$kdX$$Ifl\:," t0644 lannn*o6o7o^UUUU $$Ifa$kdX$$Ifl\:," t0644 la7o8oPoopyp^UUUU $$Ifa$kdAY$$Ifl\:," t0644 laypzppqqq^UUUU $$Ifa$kdY$$Ifl\:," t0644 laqq.q^U $$Ifa$kdwZ$$Ifl\:,"     t0644 la.q/qIquqrt $$Ifa$gkd'[$$Ifl,""   t0644 latt&tLttt^UUUU $$Ifa$kd[$$Ifl\:,"     t0644 latt6uuuu^UUUU $$Ifa$kdS\$$Ifl\:," t0644 lauuuv)vv^UUUU $$Ifa$kd\$$Ifl\:," t0644 lavvvv w;w^UUUU $$Ifa$kd{]$$Ifl\:," t0644 la;wx/y^UUUU $$Ifa$kd^$$Ifl\:," t0644 la/y0yRyy2zz^UUUU $$Ifa$kd^$$Ifl\:," t0644 lazzz{{|^UUUU $$Ifa$kd7_$$Ifl\:," t0644 la|||^U $$Ifa$kd_$$Ifl\:,"     t0644 la|||}C~?g $$Ifa$gkdm`$$Ifl,""   t0644 lagh|AB^UUUU $$Ifa$kd`$$Ifl\:,"     t0644 laBC^UUUU $$Ifa$kda$$Ifl\:," t0644 lalxy^UUUU $$Ifa$kd-b$$Ifl\:," t0644 layz4|m^UUUU $$Ifa$kdb$$Ifl\:," t0644 lamn-p ^UUUU $$Ifa$kdUc$$Ifl\:," t0644 la /01H^YTTK $$Ifa$$a$$a$kdc$$Ifl\:," t0644 laHISds| $$Ifa$gkd}d$$Ifl,""   t0644 la|}^UUUU $$Ifa$kde$$Ifl\:,"         t0644 laR^_^UUUU $$Ifa$kde$$Ifl\:," t0644 la_`^UUUU $$Ifa$kd=f$$Ifl\:," t0644 la, ^UUUU $$Ifa$kdf$$Ifl\:," t0644 la  Tp^UUUU $$Ifa$kdeg$$Ifl\:," t0644 la,8ʋ^UUUU $$Ifa$kdg$$Ifl\:," t0644 laʋˋo{ ^UUUU $$Ifa$kdh$$Ifl\:," t0644 la R^UUUU $$Ifa$kd!i$$Ifl\:," t0644 laZ^UUUU $$Ifa$kdi$$Ifl\:," t0644 lae^UUUU $$Ifa$kdIj$$Ifl\:," t0644 la0<^UUUU $$Ifa$kdj$$Ifl\:," t0644 la^YTK $$Ifa$$a$$a$kdqk$$Ifl\:," t0644 la̐ݐ $$Ifa$gkdl$$Ifl,""   t0644 la ^UUUU $$Ifa$kdl$$Ifl\:,"         t0644 laґ@z^UUUU $$Ifa$kd1m$$Ifl\:," t0644 laz{Вؒ!v^UUUU $$Ifa$kdm$$Ifl\:," t0644 lavw^UUUU $$Ifa$kdYn$$Ifl\:," t0644 la \J^UUUU $$Ifa$kdn$$Ifl\:," t0644 la^UUUU $$Ifa$kdo$$Ifl\:," t0644 laNZ^UUUU $$Ifa$kdp$$Ifl\:," t0644 laǗU^UUUU $$Ifa$kdp$$Ifl\:," t0644 laUVq~ј^UUUU $$Ifa$kd=q$$Ifl\:," t0644 laјҘ!-Ǚ^UUUU $$Ifa$kdq$$Ifl\:," t0644 laǙșR^^UUUU $$Ifa$kder$$Ifl\:," t0644 laE^UUUU $$Ifa$kdr$$Ifl\:," t0644 laEFԛ^UUUU $$Ifa$kds$$Ifl\:," t0644 la<=SU^YTTTTTT$a$$a$kd!t$$Ifl\:," t0644 la=T)?ͳγ89F"4,efgh'NGV7 8 9 Q  ѽµ­¥½½½½½½– hzC^5\jhzC^UjhzC^Uj}hzC^UjhzC^U hzC^6hzC^hzC^5OJQJ^J hzC^5hzC^>*CJ aJ hzC^5mH sH hzC^mH sH hzC^5OJQJ^JmH sH ;UxLM _`)*()>~&'STN$ & F a$$ & Fa$$a$$ & Fa$'(ͳqr0Pi߷ FG$ & F a$$ & F a$$a$!$hkdt$$IflF,"P,  t06    44 la $$Ifa$$%'J'qhhh $$Ifa$kd]u$$IflF,"P,  t06    44 la'(*eqhhh $$Ifa$kdv$$IflF,"P,  t06    44 la/~qhhh $$Ifa$kdv$$IflF,"P,  t06    44 la~qhhh $$Ifa$kdUw$$IflF,"P,  t06    44 la]qhhh $$Ifa$kdw$$IflF,"P,  t06    44 la]^`~qhhh $$Ifa$kdx$$IflF,"P,  t06    44 la89E!qlggglgagga$@&a$$a$$a$kdMy$$IflF,"P,  t06    44 la !"4 $$Ifa$$@&a$$a$ ^UUUU $$Ifa$kdy$$Ifl\:," t0644 la^UUUU $$Ifa$kdz$$Ifl\:," t0644 la$)1^UUUU $$Ifa$kdU{$$Ifl\:," t0644 la124:?G^UUUU $$Ifa$kd|$$Ifl\:," t0644 laGHJPV^^UUUU $$Ifa$kd|$$Ifl\:," t0644 la^_aglt^UUUU $$Ifa$kde}$$Ifl\:," t0644 latuw}^UUUU $$Ifa$kd~$$Ifl\:," t0644 la^UUUU $$Ifa$kd~$$Ifl\:," t0644 la^UUUU $$Ifa$kdu$$Ifl\:," t0644 la^UUUU $$Ifa$kd%$$Ifl\:," t0644 la^UUUU $$Ifa$kdՀ$$Ifl\:," t0644 la^UUUU $$Ifa$kd$$Ifl\:," t0644 la^UUUU $$Ifa$kd5$$Ifl\:," t0644 la'^UUUU $$Ifa$kd$$Ifl\:," t0644 la'(*05=^UUUU $$Ifa$kd$$Ifl\:," t0644 la=>@FLT^UUUU $$Ifa$kdE$$Ifl\:," t0644 laTUW]ck^UUUU $$Ifa$kd$$Ifl\:," t0644 laklnty^UUUU $$Ifa$kd$$Ifl\:," t0644 la^UUUU $$Ifa$kdU$$Ifl\:," t0644 la^UUUU $$Ifa$kd$$Ifl\:," t0644 la^UUUU $$Ifa$kd$$Ifl\:," t0644 la^UUUU $$Ifa$kde$$Ifl\:," t0644 la^UUUU $$Ifa$kd$$Ifl\:," t0644 la^UUUU $$Ifa$kdʼn$$Ifl\:," t0644 la ^UUUU $$Ifa$kdu$$Ifl\:," t0644 la#+^UUUU $$Ifa$kd%$$Ifl\:," t0644 la+,efh^YTTNTTT$@&a$$a$$a$kdՋ$$Ifl\:," t0644 la12 &'Nno $`a$$@&a$$@&a$$a$$a$ FGVcd"#8 9 Q   OZ$ & F a$$`a$$@&a$$a$  DE $$Ifa$$ & F a$$@&a$$a$ww $$Ifa$~kd$$IfTl0 4 x  t0H644 laXT/1IKR[\]Fm  .,.a8w84?5?6?I?ZH|H`NuN*\>\?\R\aaBnInqq/sCsDst u u ulyyS~k~pفہ (֒Ėڭl.jhzC^UhzC^6OJQJ^JhzC^OJQJ^JhzC^5OJQJ^J hzC^6 hzC^5 hzC^5\hzC^ hzC^\H'0ww $$Ifa$~kd$$IfTl0 4 x  t0H644 laXT01AJww $$Ifa$~kd($$IfTl0 4x t0H644 laXTJKR\ww $$Ifa$~kd$$IfTl0 4 x  t0H644 laXT\]DFHOal{vvvmmmm $$Ifa$$a$$a$~kdl$$IfTl0 4 x  t0H644 laXT lmotZQQQQ $$Ifa$kd$$IfTl\iqQu   $  t0644 la3TWNNNN $$Ifa$kd$$IfTl4\iqQu` `  $  t0644 la3f4TWNNNN $$Ifa$kd$$IfTl4\iqQu  $ t0644 la3f4TWNNNN $$Ifa$kd$$IfTl4\iqQu  $ t0644 la3f4T WNNNN $$Ifa$kd}$$IfTl4\iqQu  $  t0644 la3f4T <EWNNNN $$Ifa$kdb$$IfTl4\iqQu``$  t0644 la3f4TEFGHfnWNNNN $$Ifa$kdc$$IfTl4\iqQu  $ t0644 la3f4TnopqWNNNN $$Ifa$kdV$$IfTl4\iqQu  $  t0644 la3f4TWNNNN $$Ifa$kdW$$IfTl4\iqQu  $  t0644 la3f4TWNNNN $$Ifa$kdf$$IfTl4\iqQu``$  t0644 la3f4T WNNNN $$Ifa$kdK$$IfTl4\iqQu  $ t0644 la3f4T2<WNNNN $$Ifa$kd"$$IfTl4\iqQu  $ t0644 la3f4T<=?lyWNNNN $$Ifa$kd$$IfTl4\iqQu  $  t0644 la3f4TWNNNN $$Ifa$kd$$IfTl4\iqQu``$  t0644 la3f4TWNNNN $$Ifa$kd$$IfTl4\iqQu  $ t0644 la3f4TWNNNN $$Ifa$kd$$IfTl4\iqQu  $ t0644 la3f4T & , WNNNN $$Ifa$kdq$$IfTl4\iqQu  $  t0644 la3f4T, - . / K T WNNNN $$Ifa$kdV$$IfTl4\iqQu``$  t0644 la3f4TT U V W u } WNNNN $$Ifa$kd;$$IfTl4\iqQu  $ t0644 la3f4T} ~     WNNNN $$Ifa$kd$$IfTl4\iqQu  $ t0644 la3f4T    &&G&&WRMMMME$ & F a$$a$$a$kd$$IfTl4\iqQu  $ t0644 la3f4T&F''J(K(Y)Z)..,.//m3n3`8a8w8==>=5?6?I?ZA[AAAB$`a$$@&a$$a$$ & F a$B)BNBeBfBsGtGYHZH{H=J>J_N`NuNOOSSUU2Z3ZnZoZ)\*\>\?\$a$$@&a$?\R\aaafg/k0kAnBnIngphpqq.s/sCstt uNxOxkylyy|$a$$`a$$@&a$||R~S~j~opفہ (T$@&a$$`a$$a$֒גĖ34)? $$Ifa$$@&a$$@&a$$a$$a$?@BD{{ $$Ifa$zkdP$$Ifl0p6  t0644 laDEGJ{{ $$Ifa$zkd6Q$$Ifl0p6  t0644 laJKMQ{{ $$Ifa$zkdQ$$Ifl0p6  t0644 laQRTZ{{ $$Ifa$zkddR$$Ifl0p6  t0644 laZ[]d{{ $$Ifa$zkdR$$Ifl0p6  t0644 ladegp{{ $$Ifa$zkdS$$Ifl0p6  t0644 lapqs}{{ $$Ifa$zkd)T$$Ifl0p6  t0644 la}~{{ $$Ifa$zkdT$$Ifl0p6  t0644 la٭ڭkl-.0zzztzzzzzz$@&a$$a$$a$zkdWU$$Ifl0p6  t0644 la ./0TOPghijkmnAh1?RS07iTQ- Q  G ++99@@xHH󸩠󘩘hzC^6mH sH hzC^mH sH hzC^5mH sH hzC^5OJQJ^JmH sH hzC^>*CJ aJ mH sH hzC^5OJQJ^JjghzC^UjhzC^UmHnHujhzC^U hzC^5hzC^jUhzC^U80TUNOlmvwmn@Ah$@&a$$a$$@&a$h0>?R067iEABTOQ$ & F ^a$$ & F h0`0a$$h`ha$$a$$a$Q*,-$8^8a$$`a$$h^ha$$ & F 0h^`a$$h`ha$$a$ $ & F ^a$$ & F ^a$$ & F ^a$$ & F 0h`a$  klQn$ & F hh^h`a$$ & F 0h^`a$$ & F hh`ha$$ & F 0h^`a$ $ a$$ a$$ & F h^h`a$$ & F 0h^`a$ ZN   /0 8$ & Fa$$h^ha$$a$$ & F h^a$$ & F hh`ha$$ & F h^a$ef P!s!$ & F a$$ & F h8L^`La$$ & F 8L^`La$$ & Fa$$a$s!!!$$&&+++k.03'67999H<I<@@@yFzFwHH$a$$ & Fa$$a$$ & F a$HHH?I@IIIIImJnJJ(K)KKKK+L,LxLLLWMXMjMMM 7$8$H$``7$8$H$`HHHIII=I>I?I@IIInJJJJJJ&K'KfKKKKKLL L)L*L+L,LyLzLLLLLLLLͪ|tg|tjhzC^6UhzC^mH sH  hzC^0J6jhzC^6UjhzC^6U hzC^6jLhzC^UjhzC^UhzC^B*ph hzC^\hzC^>*B*mH phsH  hzC^0J!jhzC^>*B*UphhzC^>*B*phjhzC^>*B*UphhzC^(LMXMZMkMlMMMMMMMMMMNOAOCOOOOOOEPFPVPP*B*U\]phhzC^>*B*\]ph!jhzC^>*B*U\]phjhzC^UjhzC^UhzC^0J5mH sH hzC^\ hzC^0J!jۜhzC^>*B*UphhzC^>*B*phjhzC^>*B*UphhzC^mH sH  hzC^]hzC^&MNNDNiNjNNNOO@OAOGPHPPPPP;Q*hzC^CJ aJ hzC^>*CJ aJ hzC^>*CJ aJ mH sH hzC^mH sH hzC^ hzC^0J!j hzC^>*B*UphhzC^>*B*phjhzC^>*B*Uph._R`RRRRRRSSSlWmW}W^^ccccc/h0h4n5nrr x$a$$a$$a$$a$7$8$H$ x x_~`~x~45^5vƀT JK`$ & Fa$$a$$a$`a’ÒZ[]^{op %JKtݙޙ$a$ 7tuOPǡȡPŢƢ$`a$$a$$a$âĢƢ[\]£ã4567abUxf⼷⟐vvvhzC^6mH sH hzC^mH sH hzC^>*mH sH hzC^5>*CJ aJ mH sH hzC^>*CJ aJ mH sH jޤhzC^U hzC^5hzC^0J5mH sH jhzC^UjhzC^U hzC^6hzC^ hzC^0JjhzC^UjOhzC^U,Ƣ6abTUxDEVef$a$$a$$a$;<BCEFJKUVYZ\]  -/WX^`fh#hzC^B*CJOJQJ^JaJph#hzC^B*CJOJQJ^JaJphhzC^B*OJQJ^Jph hzC^5h]ZOmHnHujhzC^UhzC^hjhUB6[\]$a$$a$  -./WX_`$a$`ghopwx 8]^8$a$ $7$8$H$a$hnpvx~̮ήЮҮuu#hzC^B*CJOJQJ^JaJph#hzC^B*CJ OJQJ^JaJ ph#hzC^B*CJOJQJ^JaJphhzC^5mH sH  hzC^5jwhzC^U#hzC^B*CJ OJQJ^JaJ$ph+hzC^B*CJ OJQJ^JaJ$mH phsH hzC^#hzC^B*CJOJQJ^JaJph.ͮήѮҮ%&-.<=$&,.;=CDETV^_`kmoqwy¯ѯӯ!#$&(*,.0257:=>hzC^mH sH #hzC^B*CJOJQJ^JaJphhzC^CJaJ#hzC^B*CJOJQJ^JaJphhzC^#hzC^B*CJ OJQJ^JaJ phD=DEUV_`lmpqxy¯үӯ"#%&)*-.1267;<=>$a$,1h/ =!"#$% ,1h/ =!"#$% n-UcjNc$ PNG  IHDRfłsBIT3 sRGBIDATx^|q?5F Z@DNT8)b.4$8-1MhLSnO?פŹii5$yq%Os ƉƩE"UE"Ι9:JVq9̙sΜ9ky饗_SM 4%Д@SM h=yk֔@SM 4%Д@S"lԃhJ)t 4g3}5%Д@SM 4%М:Д@SM 4%Д.l}PhJ)uShJ)8%Мjה@SM 4%Д@KR0Zܛsg MxHT* t*z0 1+yjk]m+zzzJB kzq"w69}[o;D}i^ 4gS#ef}䫏fIseO"2SM;fiX:#X~K9a[ρqd_Gޞ˗7OO4|Y~b.W]m=0W,ND,nkm%T?w^fq="JW_uyv؜_O[w~c'5\ӻk,)31+h̯$1 mXW|!>:_Zgi M{O%R~{,x=!tVJSctԞwd;hOK!nо2^=]!mmY %<= }˯"ss{ZK-՞ZXR[.d[0R4QKp7U®y?צةÌOOUvc-_1 %Ғ8"<UO-% ιuT\[ߺ-egHٖrM8=YlȏE ^o6)Ƞ!+mOom|;46%p%${֖h Bc ) Zj(C*ڔG3Tզ\Kj,m|rZ{2c?˯\6<޳76Zܳ)hkWͽǎ#_{ddQ/ǽWtґSLiF󂐗Wľ%>F` 9_$$>'E\Hƙґ0KMfԄه,&M/,9,tȋg -".fS'OnM뉓_LM : `k{} _q=4vG—L6[Ҷw픉nCMW\hf,j!_A-Wj,w o{lӭ$ʱf<>uZԜg9|#1$GnJY)k#S7,בߺ-BT7өN#=nOpRB65m)iUW˕\FkQ[X^ŭ=V-?Œ?q%3zx4Jt,?ڣz spz?[>ewv:#fWF)_TҎZy}z޵e.VRKLU"S#:M >7رcrARuUhARm VO-HYĎ }hBGZ?^R>MOu=Fc>?v鸜CGZsPQ@̂Q?`t.뺬 y[?Tu-@-l=}?ӷ~VjaƜ e-S0rGYAѶE}LVXVza:Eh#T*h" Z2IjKj/B3o [6G䎞?%;~2 3ժ:]ֳlU޴9{w3iaה\$ O]"{GoPS֬DZ:<=ZZI|Rf;ƙ]{iKi`wb&Wˍ{jDYy!̏c9$pbͷܜ$կ}n˜Y֥y. Zmv wSǗ{fs;ˆ*&&JRyyws09 r6FJŶ=ݪ)@`]V+MۋÕ&y4̛o6A/дg4-= jbs} 3Kɀݵ7[X_j M_y `q$-^ ΊVFʤ)L j+UrML4i3cr[`-W۸6emQU M>*pl08E¯06{8=xKMO/}{vƏWjKYᶴb#,Fb/a+ j8:dk:6X'!)ВU3t4x[\iJҐn[=tr)>Ӌr^9jBmI3 U`y|yt_}|ljdv^yzt,Zk?O5UjVѷʤ,]4kOϤr]WT˕VO-׵ki/r]Wk`lYoP5tʥNC7ݽ+ޱbu+|}l 'no͢|tVMY~cNڮu-,>eVܜN6-umiK-&*o~RW`OۋqaSȏ$ݜ ?!9 ;f\9&o&]&roy-%?Is,E5qrZʌobZjjӴh\fXi-W9wFB5'ᴾHa`cx3|tompzT73dQr,=<<td:XYs"NF"D(¬xNҬYfnMO1[iωg/ ޚҢ%c&&m -Wߺm8ce}i7sOr>,m_ʹc96xR΅D9OXy{n>oX'%\m&q] Ar徭u~/"=̤F0V }U h6o蔵i]]9k@栫 ڵzԦUa5Gd2qhbS/x/nRΞ[2Ti{mL_jSaa6fóھy,! UdH.Y%ׇ͜Qfkwĝwwe2#Ț;< %mRVk!#P-S-2'&FYՖw[/l--7Z¶CKoӥP^U=*?|=*?qqa[~?{nuMt3_ O]?y`-Z^j657Zǐ5b\ qjZ GkTQOc0VJG򥵴"n MsZF/K^$Jыә/svni^,Y,kv]&ē}Fn՛WǪOW/$on-z3re7f̐4LJHoS[4_]gwOsΖtε/16g:پBmdSI-y{IeV( Gjd4udHZ-&M2M%*Eth4Ot{i44cVhr{inPAN+48˹/sQY#27J:ÏPy{74^sb W<𑼉 VfTӷf꿫b_mZYCr:/mAm긖[.b3ǑMKǵ\έ| E~.[3am;$3+\wuš % *am7E/)`D$eZR;kW(l"Td[rVCCC;\% 'ЬUu{QП{)o|<[y!H̐0K 哻<},y}&yS F0!׿o=7͵H Y}.3?&LV5K_\hڔZ ʱzrRRBJ\hIbKpnڸǵqǷ)RmRu+#+}i~cgs+[ZZ0ChoƺN$^p!7O'̱!j| YY/9:$!B`f,@(]H=,ď ǾS:R7ze$P57J d-ɴ̀d5G}Y1=ˤcmӥÇ4K~#;72Ѥz%𺊄\%ǿOĹ`VX RFw`AǒmBQ: !h.Ǻ.q,ʏ,5b qB<˹䣤\/}" )/ù" )zrBs/GCZ(?YU`.zunR|%zMkw|g!t8$dkfdVoJmS5S֪f]-5G 0F-z7ZMpG[0Q5%#[9sZU~4`U>ʹã H8'C^iª'*IRmr?\g-V]z/{f%0);~7qӝr9FVZ \}5Tj͍Mi8VEA=.-'+Q줽bS hr_P'!)asrm tyFxp^rɝsQ?6}F1aU>?W)9i6{q}r d&q{Mt^@Eer͍Pr)YHH``*F P=WYj $>7-iƇR,o& -NKU붔"ّub#b8?~ρ.򱒜i9oȏ+Ipn~dۿo o({M?,k;>zˇ(8SӆGW!7OF ?R2()Djݝ7Xr>CgSd'I>jSʏzS+Ήd⧡|TٔT2W'I{Ϻ(', ^f zDa{6R-YB 4͠tdžϥ{4M/d*YBfCU.ӜrZ̖k ZnXolGj,#s|V] P2I{Lk{o׬eO(qh +ЁgXTR`T9Z64F-AI/F'-" Ҵ V`i^(A m$7iq@UJ_R{\ HHj^&GڋƏ:4bqs,gZmRҜ]> 9'92'ռ??S]4_D\](oṂ`?jMLLj2NVkCC^&"_2rx(BZ 熔*Msɸv)yXr^cl^g\+51c?>φ̹3lk(h]:AZxD 0ڙo@_ó5iJu_m;89TrbU1SR"H=as^KKy%g<,iYKѱx'LZX1uzEْRAG1h)淊,s,("ˏ" ͅs|$:ʜZyJ)V+e͚gBnvb!rI~6HVNYK02MYLJH$0kBx|}#<Xڣk>jo=/ĹpaJƓPԠY~]~ 9=*zOڣ<tLvk9z=+ W4K|FIr]K$i4,r"޸Q|kjXc]t,beoiwii|#Z$)!HVBQ:J'_0Sd!2 o=z"(Ԗ|d_rnE[ܢ)}j;"*IA3 dtwuss!;$@7@D6T7@ez6JkeK6j$]+v)muU%<(?d6b07 z]`B[:Oࢇ8WX)iFY\g E y6,Jg;>c|,噤M^ޚ2Q!kݻar9((4-rܰhTlmcG1A 3djs]E^(`Ѩm3PEq$մXʕ\m'b ¬r|X}Zִ1<\i_ʹGq9`Ll=Ň^Vn4 [wŲ+;>S"YHV!@Cog5GwraI- Y6hus꿶TtNjd%^SBsbS.Z:8(\FxEm\iiZ\ֳ lYb=/?XBhI6o?|z/$a P& "lw}+_z4gꕳD,BȍF(ajm)g]Rz~7-9okq[r S[m ~K/mL"C/kKgdtDP&g_A2,g@r.W>p $g I2$$"+I U.?"/٭ƹմ+ }ƛnjd|KQ}K.92=XJDvj)VN0\m-'oLQ̹\] 9Ӗk,9Cĕڸ/Inz:Kxt~gSĵGN0?!~da s+YͿow^3"o6$&ILjhQ--: i1 Qn p 4%g.%*z#:t*QijL1)El̹r$fpn{QON>tӐ|T殜]:*`es!vlb;ET;>|v|aNJkWjmoCT+vғ:c{Q lhz=Q˵3y皝;٠i^Ct-|:)QǮ[}Ӫ} f֬n.oӭ0UA4;6%yd˙Û#%7)mLJH-YT5G;L.HJ}VORE,;(M {BK蔎:oDh&cI!oѳ^%lJNY\Ω L/uv8u^'/@5)aFQyrۆrx&֭u ,5U|')C\q;a_)2lU,?^ bS !WAryZùZl܏C`l^?4stU/όKQέhlsQWn; .MCX^D>CQ{XwsWHm~-1kcf-Ĺ-lasS/{h"R= tXB@AKe( e/fnK3kBryӋT@x1#?gG9k1r\~xh,j[ΉXq <; Ge.vpGQʜ<ќ_eݴّY,Uױ_TammюiUݨ7Öշ0YU= ?4s|dmQQO"pN^SlPv޳@Yk=kih*0?)c?P31Pi/zAߍج<*ۣk`ff￟(Wr;s0"m ]9δRl+@"K9"(:ڣ-Z4$r"(ɇRAAQ4EY\]$VRX"UJEQ:."(Cap>LE]03,dFDL*ACGT<%f̥d<rW׽~xZy^<'iZ$+;ɪf| ZkQ"YY:[JM]LSX"o rdvrLkP&Se)@ּ(%@(#t~oʣJ>ݣCZ[+k-]>ڒ_)Q-?ڋrM-kjhOKG#,XΕdU>)qZe(]fgGmI* {IL 8W:x'L*s2_u׭~?ݛ[Ԏ@w +W(t:)Б@z"Mȵk7tX3ƭқL`PzQ6i9RP9ȜJSkjʹ䁛rpnhpOR|\`i:Ml8ts*@(϶ >:%E]&5%nAYT>ƒ9՚H|;}!*43@_{2]PX#YK"0JKYƔ8AGFhTE|sG?6 3w(gG1yH>.y;dsM̮WA0USIMIZ#ɪChu f|$+kd%huJx\^p=F-?<䭽gK\A[=C:`w%nx+ ߻⾝зk_ܻWWlКEX0?X~ˏ?upna&jcxC {k9^&{av( 58"R$rCIi ^HMORGJ#!t,I>@Ф(%jFс? ZċKI"\@T)M*`ᔰ7W-p '^$ ?Vz{{x["qv4b|N,MGVl sTc!ƻo:/jvB٘:[3 @uAbgiHGQI?HtK..h]5H5|;dkQ#1<@뤎yBk_Ԑ,ų0;4|L? 3N<M>Fr6s|@r.u%(++rr9)w2UV@g__s_ʌD!VQ7=fئAϓ=,J3y@0L'WgoS;:x R&&s)BrG %I7`&zjr\8\*N(QoB[@?_jaf#y޴gBFT:2Ϣk[nnNاg'xFF¹;giMXAyxՋnN.%*R mIRmHVTc[04ďAҖ QE ?f[Ή3.}F Z+4*sO[` !`3 wʼ]c@a mjZ6>f7gf]`u\z? pCHmQ[ hw.R(߲3,Lٛ~oF*cr&/ >?ȧ6k?O,H$ WjY[NПSMBǓF9WCS(Ud@.)9lv`XH;t ɓ4\x%R< @7+kI>/C׊EKս5񊋥j,< Dj5[~8:^yV .rFcsG壜gl_JIEu+s2\x)eq9q}vSi.Gw7+Ϯ Ǘ[|h&aE)UH|徟"Yt|K°aEZ (74?:y"aB3968W09{Ya()ZԓAmJ9G G'^-1͆OJ?p#[:e^:r/Y-_!Vֱ89QGG*%9p="Z2WisM,AeCVě;9۩htC;T*HVR6ʯcQ+_q~\(Υ,:V.LE>H9G*t\=cS .-t=EAAC"P1t\$Da(t|1t\$"~ɧ\re!ܢ)w,犄2!ifx-j[lWnn9?ؒ. Mode}SKKU}|-_Y$+kVГZ,8d)=LyTH3cE qn$8APKC?e>>'ox੡pó$ޕH"r"!D^[銩|(>Q jiL(HH&Z} 7ߡk='*뻤p!u%nt-!y,7ܲ9aKoϬٚ@=GiVvzdBm[̃Jar<6_΁sթ*7?О=D4DK>$Θ%CEICFiJˊ9{Vz-売}uQs$5fG8oGQx8~+i~}g\ǫ|T8w]02/9{;^YqMPR&)Q3>kƗCزAn5z{=ښD8AұH3Izdҋkۧ`K跡Ѿ5 toZ[vg/%- K2K E=-Qt`>ȇ`x~yl~u[sEj@0Ҏ3NsTߖZmύsKolдmM/qi ^<r {}˕g^BQO|je>|B\5\nB;*swdCAw f%=:35;Ӗ;RX_ڭ6#R\^X̜7\yc^srP_۵[Cű1TOP=n0FSbst.F;z\,m^s\6&t*C|:868}nmtXz_۵Da~m)N{%%pؿܬurL;,XNJ[ S j|Ȩ_%KMZk[~"ߚ \3dZGe3бѡ rR4eI^БB̩.% ( "QYV܅s~?ZY^ YnhjHp&:=sY/+WLQ>7:-:tDL|T\ݙE>TRB4m})C`I`jjr {zVA?M_mJ-Z VUG{TVir m(MbC/ ΏC[s|&~D0^ S3CqgfQ܄k~0r:O' 534❍ H } }@_S;J}}fOݽK ÅƷj"g3=XV>y}PI)\iT}Ow> Z%dC-?tmݫb^O.Q5+G^8EY^tfO@˾˥ߖ@-ΛpEO*c=;U}CH.xi43g6rr76kB8U;Bw "VK5N(^Ɨ J|XPFm T ssHȍ^ڀ$ MEFLH+ bZO\)Ab~dZɬ+?ڋ\~zc[+Ĺ"mr|dg<%~,F19W~T*OI]1RRΡcj08?zL] IU.rrYݛ2W aH~U&J*=7Fj;U_E9?ƧʙxhtLbgEZP!x<}%עq#;eWA0HVXfoĦU%:e59(a$L04GrړД2ƁPOfRTtϪ%+z;@o[%H,N+쭯Z<'bKeZxE +ռX[dq:Z(-[>BskPI6թH~*D޲L(l<"!"3z6EW2G~ۏDz\韭w3yZ{#0#YE2HV@s\$LKBaAK.uHZؙP,$PCѢu)R =:іd!Ԑ"(rns$r# (.qZ91\V.=|T!]~x.[V0脐T!YNVHPvA̧?i+뤯ɂ Od;z*ϙwx`_幁ccjNƋ,A^25e\(1FYINmާvQ貮ŊV7=_Mv"YYV{$t= 8?=LmSZa ap!t8L[J-=S-ENO RD"2]n}5WTFҝggӭ +36zErTE-\%穿V9l1ՊEBlͯ'Ϗ-rٶ-~k^HOlk;ˇ{r3c$UFfX$+ż"8'\)EʴdơbsY-es\~\ .9rq9!Y)&ψ͸HV YYkv~X A2C GiaR }F=~TS7F˕Wާw6wg1hK4o!y&sёLR0_~sgO=]bsY,m㱩Ҟ}_Ҧ iё¬;CzcY:du6i}ʵ\79RAsߢ)ZEsߢY{t?_JE*;;jX'zq2}Xt55îZvv >X?m쪖G cG+?snk'#ྵ=f8Zv^%}ɏ%KM73 ?5hf !(z 6P],ȗc9彆jy饗N$Df٪W1=*dNf I&|1"R%V FK Ը毟Oym&ݱrᄡ-9 hJwκ8%Y.r,p)?K )M:.yʼX*^D>SCnj,BX>ion<]|&/om;fLF/Uy R%?:_ 7WUYm|o֌Ŷ/$G*ճ$JʚypUr4Ej?c?^BĤ\IzWrg\ocŕ9y/Ǽ|X/&bi ·ŏJ~?(Y,wF΍\w!{1r͚zoziE]r&9UFyc4OX[JIԤlKS0 -'Dv kFK"tt,)ϏF4 6 ?yGG<9|,? "!?*IyhT抮6=#u7B y"<ꝫH.]7*Y;?oy}߫0[G+"H-&3y8I͐.|n{Cϕc/Kɤr9̮ "iWTaa}3֧$t{ ?9FID`{zD=}7\n@0yṟ15'|åU(.cϭkc}kZUH׽ٙ̕Zwؼ&YHD.37OFOzkWxYs𔹐pߚՄ(G/$Ů_y% fܖD\& cY: dZER .Qj . ITU ,9HcE{Tt,ER-?ڒC/9v0\$+ۣc9 :H>EGysܧVVe2w[e2"CHG*s˹ǎrvr̷쑺e3:xUo֯v_YgKK֥Ab b+9T+L4JIz3+&\D mIb\/% EأN·"ȡCmpnQ(ҧV|\-?D\-|8rZ΅Rn]~-?*8^\+=b8\|;(/>|g__|뼼 2WmU=C[sj)mx4uLLA.%[}b X|*Aj|K ˽s޷frՊՙֺîLVc'|\̽k?Aû޸xL՞z|$&pN釼 ~RpTǷz`,w1* .`5mPЀ0 fA[D[ʝfY%ǵ5NK u[2Y~pLqq9hz.S/n|(VYE>*spG:$jd/;Oyh VV*cd4CTPaSia E?ٙ]F;ɦ◾k %b}lߵ\ U[W|$^ZcR lps`u}' EhJ2Y%rtKc. {,) >;hi^hbӆy\6#= iiҋ +iN/9O<-c&8HxF)P -%Z>: ?쭒ǧ|6< #,S"+CFQymr9ɧ| ȒG:*I,wJ*%gqU8< +LɁ7/Q˴yk-rՠD"y%ݝo;3{~vmM T-=7 22 tuޛWڲtɌYgbkiUG[#'yVގ ήޜco*/MvtIlHdlt$u#X>:P˭Ҙh/G%j-ܞp}sCudLGibϭ )Tp{VRR:ٞITvaIkK}.?I9e2HbScLeyrVaV&%'\9/2㷤peo9j|;>YCyoo&{Woo7}l6@r5UDWʺj n-?]2lKYfvR?]}ۖ-Ӌ*?@'wƍ^fg S+YY,n`~+z~};^qGyV({26Q,H BqbB(b0QJcUOӑO6_Ͼd@s?R^8Wi'1?~dc2Go uW%#ud-)YKBؤAva%SEN 敨Q,f&uI8kq|a9JE`͵8w|ce(ES%K(S2WIt\# fei6;^ES:xUV.?(+*}/oT6Wr eKnxUx f&k}zS9K+':.o::.wOζ2+!r2 6(I3M7hOVd,RsoJg&R$#ȍko\˫FV"("Y)ZIe4Fs^|xhT 1to#E@q9hTPbȢK!3@^9]e\l+ĹʧA+?d%i<1Ul_*s˹Q xѯ\2wL$d8ʶM&b6(@|l,X wl5hk]L. /]5&jk y[m)!}I}_UrtCM+7L/Lc|y\U뮻n6SQMT %r 9SyJ-˨S{ g}՛;+^ydl_K}_ W2w=b'ZK~<[N_5яk_4)bd+Bߣ珕)rA=A,idv Z RId79jܖEۀe%<5)34G[4^,Ge~x?򙍟ZO|,?2I|+y k]Ow|cpxA6s,SX+Ƴŋ'˵Wsho[˵[T?xkwȦd\K{]~nDaoo=}o){5e[}_[{{ʋ&=[YC3'q}N |K#s+s b*ɍ[H8T *2nj ivt="c[: wm:%cks\a-J|#tE4ﮟ;@ 7o-Rz'?*4+"+>[sBqwd;`se'm4%a~H| zDΰ6biC9ۣX]i :Dfd^hciY5[>ӯۋrn4|.99 46Ӑ,>WXǎ;!ud^$%w׋/qbHuD:4CFLr=7MtnٹyLKSTp&׎cq ǕҴ9kC[]'9ۚ XJDp˩D#RJEJ +=*y-.k{iyԝ-JF9,F>^>>yݫ+ gxp"R4P D qJ Ij~br2rLژ``B_%Z庤)mk^|&8L/rM23%淁4"v4Mn^Fl地`6*~VI_ pK(MfL/ 壜3M'MW仞 Xr|vXgۆ$/=shuKrR}߯, M!Lj^:ۖatB\%h-SC2feٽ m>+}ߩJߞ+hg QVx޽u\ vx"ڔ:+s{܋K,9owt{?9'QFSm[KAVsߚ59ɕ(?"Ȳo辵֩&'96}_k(GӇ5_-G9ܩܣeZs\|NDjX\JE-]i4\'quxhM׬)T/ MߟΏdMD񞚈Pyr ^DQQyR6LNZ㘁 o\lS}V,VdT'"xL5u}9ΔOCi=cφNr@}=4?Qʺ(.X۶|jdṰh¡de%@I'r":w(iCKM$g[ݞjKQ}֥&Ҵ(MۋI175~d -k1wgC3 ?,˔'$!ؑk^RdJoҸ8>dKSq_/NtÛw=(535KQ'Rڔ5_>Yue+s[?ygگ!8vB(7CE~6}kr['MxڸI䉂a9rumQ)-+cs@DoW&$OB/j_*%=KV亻|_yDAJUәcT)6=*ҋi0:Nt,i%xZ57@04*WvoʫVW$IFHV~(\(R.ɊgGXrԢuY:.th]Xu }$uE֌-ש]$"h.ex=r"GZW-q|,HVBӜyLR]d!"k}~#E3CR )t\t5rlvfcc$cIؽX􎽥D$yv6ݚo;&domvz߷?ޚ߷Z Z響4^k9w*E^;ihܶs [$+k ʎ/cˌJ0 YJ"K{ϳwm3/"D5yDƦST[ӻdp߷no]Iϓ"ǭM-Og))Lkp2iUL16K1ToPOMqFEiHa=LoJuuz&D% "<`xH)N3v_LNH >K˻:.Z _"Uk{ CWL$FTD{W;/uѷBcgU^ FYO>ZiOwEBS2s3߸;VRonxgkw|yٛZLT4<-#m&]ri'ϩ,-W>4 |ږ'آ4- ɼ0I-CX~ek \EZ05T"τ->C-m,?#DR X5~iѧQ/m,?4P΅1F>b!F>5d8e®VYT>*sv/+22W|3/fb&+.?y3jvH,Vxx *KN2h23+/>:9ժS5 MN2>n!E V-S$KdrDzLyl9sN"1ntz[U?pG>7++ 4)g'VQy)2k?Gw%w N 2^Kԋ_bA¶`mu_d~J~ /?_8484TdQ.u%'ʼn P=V.:To4'} m>"Z.6|p91X[ \#sP-mG*ݰCÇ+-wW.ɖJ'"*>;8vP:6s`]{_E2YICLۍMqԤ&J tÊezq[ mYwk{Qspnq.s|je<$}!ɍ$K JsT9@3rT&N*q)!~L1_a 'vw_1?3o7vF 7iKXdž|s,E#SRd.Fa7RK+ mDR)Q{4ӡ[S~7,[O2ĵ\$ĞٓXl/~¬٬EN˜*5q9X7]m7]kVbȝ\$$w'vܹ;|c&;~Wn<ܡ6gq.UHK5oWp#ImXwF =k>gⰩ;mLb[s&#|̈́:5XnOG`^)`+.Jl|RB,bai٤;89I_u1яxbpY`ѱGehC홄5[87qyl}սxnge 髱rpJέMN柏1[#:ϭ9JsӘ$5nNryhz-^tMoEu\}.΁(=lkWr07T*htZvUUĆʑH"(L)!+SeL)ag5v 4uܼKIN2!T.$w,gW.^E&FEg)9R`pVi*:L4??a:4PgJQR&^HLgGB{Ó?&@ai&L6'Tr9>EN>#Xgv]Pd7$OGW.|';qYGLdP Y\OCOȷ#Wعk'Ѵ+M7^H8: 5,_\kF& hޡ&+OLVljm)/[!Д4(7nK%ni^lKB~-]~E9 ?,'͏"Yg ?Ǖ'$$Cg l$HYA=8Pܽo__ۜ j龯"_Ԗ徵4 rʼnqƆBPP4MO9_ 2GЩLLe;sRH~FCIFqI*U'J 7%Dn7"Ƽ%1%ߒ+@ǭnR$1}8ózoҲ2iIRS̵Qq_X'L`9 B 󞱱B)VYmζ: kV]aõSV_u&"KE4_tv`e'Ûri/#DV c!$i3|{Czǽ7^uţ`͝ I6;TER)ͥD9GX"R0 QbS1HZn " 9|"5SS#6m:r|nxs8sY黜+y"Э blsG{+ڏ4(dS YYΕ\q9}U2s2\QzW\rV3yVǦGpٓU>׬(-Ed 7Vf/6b*_gfbE }~s=VTk>#̔xK)uίvgJ##ɴGeݹ9OFwJ`*mk!HD ao̦N`$puLVEيVW:OJ(έR z^]c'AenGAe'4͎_Nl} զ|̅Tsiȸr=o&Fk}cY./l9 IO3zdԯqݱDGΧ;{)ȝбpnݾ )oБth fW:.?\TF/Iz9HPЄG }5Od9|Gҡ;FϢQY)?+s5eǎsD/K/J2~Lyѽ}џ&&l6}7\:ǁ2@--^t'.HI<&Ё|EpFp'xn-uSf|*;Δοۉm͌IeKgWma<J'=krju9GK,vqH;Zx\pr͔)LTP_Y˲'rO茖 GX~&=7' |SD 7ttM.b,$z}FkSs8WE{?s.JiBg?Yhj]rN-SbSQV~Ԏ?d:9~KE^6۽l)swvYϢH3MFn'V$V0ë7Dlӊ̹h14֦(Kά:X+ahgt{,Y\q}22d޷Aen}ʜSEo]tmK7t^yT֜Xf/Y,W*S$i^#)jÒaf@(a>|BII2a(MbT*i.+&')W8&nDEY~%is(Ϣ ^"9g,:UFdQX'je@_ߎ;˗Ӑ^,H.?/K>8|TR͌W| IiSt]$3Č[}Gwl^MMRu:~Sל^#~8I޲o)ripsӚsYMɳΝ5{DKD3FZƦJE #c{V/wḥ|%PJ> uKW7Gemf3̨i,)a^Ս*mLK_Kg2er%?:;,ӳ[K+8k>Mdf[gήt_$9r?[P>+^rƓX.G3 kd^l ͐ÞzK ›z+K2J~n{$T1ciu(e鶈nM_4W[3UZҁijy$U |iuqW/7'>)>L6)!k)u4Z7x6ZWYi)y93㝴ö8X6>F6B4m/6R$9Di*@^K\E)PacwgpgNb˹`!1ؽ5 [?)b%?_7?gv(| \壜З/Z.;V>vd}'u'ղbxBflzO%3ly'|T[5NչIq-j@x:ꝫԦ66kScTzI)`˙ZZEj}\[yͽ^˯^ճ|JΤ|e R< DT#^ZZX $i %`j_.o~©EL/U>@Eg9Q4kS5|r],?>G-gѬqUV,_!^= k>ڏo])t'j3M8J9}۪؛7V.09 "bʓ.9݁gT}۾O蛑COVφvq߬n69{늷C7|`CgHeX-YjuKS~+M$ VKIå”hYj}oBLZEH+i/J`jByķrw,mq y)ȹ@О,HS=-'(٧V㕄Jat >纥G2'UGQm$> ;g,} ˖̈ ]GH`ؑrtjF֌@gNU~VY<20XzS'GZZaoIG?,߸TjM&dOԛ'un㢆ֺL{}V^<6Ÿ̢:.{( M29ZzPiսe&ZZ_@ Z"4G(qLޥ##s#$X܃HP쨄[I/W ?4J1{vw1%SKҭtk,eߙn$K9s庙vy8֮r$C.Y5['^_e~{$=n}W۟ ;䰾K\v;^6}yoquxl+Vќ 5ڒ]f4L+Εr\ <R!4!| . 9IH>rG$OHrgHG$ 픔 Im?HFVjm4`6bHX!PKs)iVi&ڋҔifCВ7MbdGi8'losI/۹( Ha3%^?FW;_}O>yXҋbI. Q$$Xd#vCL_\CB*}S"$bN].˹ʼȦڑԷmq,#܅xyE:P>pMFWe b}ց2}I+Q/$0]?yPxInVK _x#xק?}{ ?wJ|x+re#[j8}KGV:[7f.^%%/dYz-^Ϊ&Jt'QߎW}C>RY`r|D?XSIfRجH/Fx6ˏ7$ >"랟xF)ȠMU\~i,TZM_ݳs עXjU׭qR-{޴O0 pGϙ#ޛ-P'JQ>Y&~rB(P~wrmgghr|o]:Kg¬p (f/K_Ñ$ ǒ~RHV R:ghTzZ NVL +5arG2H_-\(Դ~뾴[*Mj9Wt1.2  ϕ<߶w }olˁg#}Gb$^dbkr}gs~ #Sڜ9[*W{oAҾrFS~icT*|Y72W+sc|[&!5-sÏǗGYUL9/Wsna ( HԭTɜd7,Qd?'IqbZ[r+O3prBWsOܺo{wg<7=ry#gM>'~SLECv?Uܐ~ge)CA–l^3V)A]bkSe*TrRb۲OI[cyVr#9Rl祋bC,k#}OsS43ޒrLD=7>ڝ-D:/Js\8ԓfA '9O5A.g .ػbpa/?ݵMlkS 2tTg$k <[_~xw/l_v2$ ?ʹلYsmc=m+:/T˅s>x?+dIed?@sy:3 wyigyZ:e5OӬBur$fsIINsc!!i/:Qjb|+L4j2ϷD,A˱Pnp+W+A LP}kd- 4YMBT:ʏV2B3sCH:ʏ\,̨W?C¶C-lR@5^d^kK%ZTo ƃ@ф7$B*nkD :3ϫL-z\FG>,#<> X<\dj#%|G#)ht*t/N#]kK0^v-JG9O_͞Ng[u-X$b)d K-˩ Fv 2@LRΤdK30%LIH\T9sL$כvj|l:{{?}/\_SC۵'isZ=bT`+9%2x$-WV9܊Zr5RnNSS#io>pԽZQJ L&u,$@K-by"R%dz칕:POhzڵxָo0*j_h!|2)9Z3YA9ؔZvKϏ#-k9[\௔&tɧ?=4yͻ[g~ڦ=!]3Z_6AZWU>OO^TַTJ\yCTXi -ER1jDX.u'vdxG:2و,M0x|cK)sPIF2O? 8tRN|ʧ$C㥣cKen> ҝ90 ٤23!JHQYvEwKblczZZcUe/mWYm|F٠`gq}`r/TCܹGe$>=I-zCͿ: 51}|LN;-qQ.-HT! ƶd/2PdHq;k~eOyǧD$l(P w{VJk4#!L/^۰J/yytdϿG_bDvғGL&kO˂I q/0,Q\NN7}riMZϭ[G&J/Q ٮ$W-SL, O CE14m/ ֖I?Qy~tG0PG283%Å2Av:L"ǿ;BKTxݩ5AiLey-۳U^X9e{)ST"ɏ+R@"}ngd2N&HDKFM]li[G!]Geq"¹6{벥XyYog\e_"a*]@ɑI?${kjdS}n܂='Fg.a7[uQ'F8iu@S9>Ge"+n19>F͊PhR˹޲c6<˷G[V^l9~Rm_j& <Ӧ|H$B>9?*soQPH>Qpzad3g /{Gs{OlgvYS!AԆ%ա5J&Qo/e+{cryGBV{FlꙬ)"fz&24@4M8tlt8Vׂ)Pr>,3 s uh]O}mgk;S6 ٚ1Ԩ)S5Sp0ؔ}e(QbP\it# 2&ÒY|NKK":4CR YY~g{Ņ\k:?-pyl;9齃IkKL$9J[ah D[wc_pVZn-{kry$,xXk+? Igs˔(2I/Qs,-xLH%+=;TZsm ҢR VRK srkZ8\~R9RDzDx=|Lc m^dvB(*ssA܎܅wc^s{7`~'Q;︓SD2!92- kyɊdStcpd-mID5y]T .ؑTORae=?R YC 3sv,ɰKC4Q> s}XJ祳m!Jǔ-2{ 4ETdo푁SM;{kJ{vT;&.t< 9O0,ɗ)_(a2W43;8/;^ejd.u# ?#,Fb+GFkփ`7T&z}Xu %WXu\E䀤8V)sEmWw9ĉQ f͍/!'6MxcA#^+K")!kX̹Dc.Ƶ~trrTvNƅCo)v|+㋡1g{۰dcr{yHljEbRlTX[&#jRmxrKD*,ߨ9.dܹՌ7N_џNH?rcCD|s)tj8w_BF!hB8Arۺ)x6/ù*J? QB8@StƜD̤?yH>*OVOknq΃(>9{nh޽>5n՛uetP:4Zz*1qxI!_s#ΎHb5'Id.@콸'GPɔ\Gn EԖzV*= N"z^pm?yu$;j%AtLdɹL16/Lﭫ :o[;{kaStG+gw&/q:4Zm?7ḡ?˹/C#dNEGAAV*g;^*+|H{ܰ2WIjKzqDzfu,hxIN' , eV%\)+`n =82jy?|/u *Dd ,၁ŗd:+LJYTw _R,8Ng3oZ.ƮkMuk7fzʹϻ:O~s24jS]:KT[צ4igWqjkKE,^/↥WoX|սoXlek7vLy^<{Y39VET7mJGzD%2)s…]%6M"Ĩskתo[[} A|P86k22nx~ȹφ+R6D y.xu־C\m 疎sinl\1Ĺ(C2]TOCys 0l'I)9Qcws=l(Q @$c-#evX"B'E凖>;h911ե2Q.l0OZpLٺ-5~u#D[&KP5{kj#{C[˩م3Yr^ɎfFHgQ}G#V>K#:#9/|x5FJ•9-U>*sdx1j*sBd:^~}xp_K03ej[*?Z,x;B5^&9w(͑)С|qCy==@)RJwkWeS!gvϛ5Mu388둫UwswKEcMaP3i|om*;Gʪ6`n#C.HU/:%ٰ1CK.ItYڕM%]NT(oU뱅迎tD%KWOj8lB+i۵&`i\[l+Zn RnGM%IOPa-?ʹsz~;'I>;vB/RC>/-7d>g9U19ҵ? OTl'|O:AbswN$](_5dxyRsgյ8S\Dɉ`L>r SqiS gy'R;Vޛۺ-7D.qbij/nv^iСn@( bAG97gr°LU޿wE1-~WH Pb1ern6]po yQ\TǎHHV>*s6d})ĸIKTCMj^dFҥx=Ͻ9qi6{iEMAEN9pN}:IT>~d߮:9_w) <4T/koM]wH܆ `4Kd7<@ã87: o' p#+/9L^ΞLH h gk'xAK^ KU2)M8cT!]FEBysf ?pTÉ/ùs׳!s; .MCXγOC̀s|h"艫?s>OwZ+눿QyyYWEub0*’:du}Jo]sI%/!1AL~m)RŅS 3?TN_X`Z~Kŧ;whxǣ~<+?IE)np]-U2$Pwٞd3ӌ ?Ǻ2AD}hRμcC*+g%]t<$ɓ2ȧ\rehfr jd>xX~޾rWu_T.Yo^rz+V.^=/V{Ke-^bWt>Tv/FO${8%Ȍp`gbɥ_L198;/^3}ٝ';ܗl:fo}7bEHMIِZ]R7Ƭ6o`rZ.[=sEϣ&Is7*(Ѹ7%ڸj?V>ϩ$V>RJR9dzY#疟ǿN~N=|,?*s׳!E)zZU!~B2W .CP>*0VTl\qnDGa(1[W=_ܳFaM٘$G[Ԕ#I9!!ӜOoi9ᘊІԚ8I H 桟s#pef""X:ΙJy %(Ifc$iYrϪd΋wJtܳ3{@q(X MtM&X'6< hQޚs:6{j,*ٺ*UgեəVIA>2iJ˩S=*uUhΛuTV0\l5ȜUxSF:^JR+y A:{{t\zj{nM6߰UK27\ۻt׹ŗ*2ɓ|JgUoCZ$ 2' AhJVHko^K*uX2q;Th|զ_Y%]5qx|=ZNIeY{T"Lwqi12CoBԂ,ķ:Rl!|MhT3LdS0p"y߂ W?M4r?VJ'bd׽F6xb~MkJ\벞 ~*+c﮾-)Ytk+s}ia12]|ljd.BOXK?8bvgZE{:sn`F =?imjAQ)kB^ !RU#+]Ԗ[ִde'.RUH Osׂ^hhҋ_L}EM%PcC =F{qBpD+&0Tx*YdD2ʨ!8IV. ,Dֵe'zh9Ct4[ֺ3))<|c1f[QЖ5m$ m2%5<5rp!Ged/-gX##YI%'\ dLD6z)yIށNV<;R[r巺Qʱjax֫ gN0s>+ga5~|E极pW2u76)*G\Jԓfq[xIk2]dukdY!IuJm6;c}m(+g4M9HYQp9mT-']dr˹m?*<wQ`"gRrۗ!ﭿ7_zKҮ!`At$!*  &%֤nh-y)oZb[I_`nKt02&~k[ʝI_ᇼ4lK($ďُ eM%__F! N{!G'L0$ߵp34j wfyBMS'[=ZwII|CGGyÑ"@e?Us UKu 4WNR]ə'Jaw 89Fuɉc2x~Ao̴U-ԩkiŢҋr[vqa7 ܍쾼jfcyZ )|{r;&CRX|̵ܽ飛2zέ)qIoʹܓcr\}7$nV/G>*sWC[?ֿ6߲}>0Gz!~#|rӪ̱'|D8WOkGe\pRʇ?r3 'a0,E2rb1 y=H T38G 1)A m[*Hns¾CzQiМQQeW ʴ\U0^W(Ge-,C0# rrZ=oƨB"|bꋒlˎ" kpC(9FI|>V桑rqWZedU]ݫ~U}G_ϯ5zzcn9u96/R_5\wX͖(Оe#Rw ɫcY/JH&OoO/{ٽt5\5Y;jS,6λZZFގwrC!'yȮr;49!U[P>*s弡|̭"}r~g5;ٚlo_edSms#@R EZee-%"@ւ4\r-KTrY`pRafGZgVId[DL:ST 2cR2V̭EF8"Rlؼɛ{ rH_jNɟ[o\yLRgmR T4WffGVtF6ď\ FrǠIdvfhd}~g8f5_dٲkWP\qQMKL0=?{gqd4gH O5{Tydr_SM4A$կ| rtX3 ,q_5HV'o' M'ϑ'|p.K*sWY-N3edy 7a~ 5TRhYQ~kGe(z5^|\+-R/Idp^%׬uU+9sj$Y[LEaQKH sp# .h]WG,".rQ"E΁/L)u?"ޕ#o Ԫ I><Jdct-jfu&iO{Qރ4%YfLRvb}ֵu\&^%lZGΪZE.2¢/əPJ| 4&jJERa$LS"vRx2\o]t\ HύHG$>Itg'՞ڶmۺNNr1S2búg7@2hrW8 YHVv|-hKA7LHVv|-zꉟf8wW+g| *`L@c9j5z6W6D#sKEQg;֖Omɞp sG ԳY0KEYt-*O\k&qk|r-Q$4-UHAX.ʽI߰'3[_l-rAܨ#~%%]'%*%)ȝ9 $d/K{meQ&(@c\Cnh<*H_cЩT)i |A հȵL\<脎^ɀf_w,Kgr (QW/%%=vvj$t`Z\TBTuhܛ"]<&We˴.,'9薖[YP90p|kE5 gRHvqEk֗]H|$fDU>vT-1 asxcbv\~x^Rs6\ iӎ4ZuVH'_ӦYN5>9?zoF>M!q>'?*s?>瑈?މ@}ڰavO&ˬool$^JdՊɨxȑ* Rmi/mɕM$;45bi^hciΏHuQ))ibIЯNFqˤ6yNLrʷ{ {,ؒ]Gue>|W=o/)N T Az{QRL. J! *bҳI^W "/ r^$[DZrB>HҗOC# [ GVǫ!?$Ձx)M;!QGqCٮoJ1q/se\7)5OYUHONv4h˵ʭ~ wu|Ǯ_k/7ɲyH|x2L#sW,_'Au|vϦ:Pi]{Ty|G6OC:MpidC0) w Ldw][ )QM$*@,,DI@P$p,D ?b/JGr=ODnAuFVnCl3EiEvxD,:KGH(-~yr^ ,.#fqR BŒ ?rɹ5*gS!K]d$Z+ jwD*in^"Qv @vf+V\~(v,=UNϋ]+ݽuDJ"%/X|L{ܹHUdαˑ @!;A:R׏,cҭFC Vhrז|_bWK\W\:VB#7V$ɐ|&N?`s i/}K\|'Hզx()` T;|[{BUU *YWROb|k|NYVu&zb+s>ykk{達L+]IZ@k }iC4!WT!i(>z߮ҟV>NOx&NxmQNʥ%G|̖D"Rx$YCS(Vo$cf&ye۝^ ME[şQtL%5Q`aF9/?GA 0e@ERR{*RaΔ?KQF+p>LMsk)(T<%o}2]i%)WSˏN%A kfθ\[zw/n"i=V6|4O#Oȷqq8wCًo` GO{nb&īT0Xr#?adEq[*rmik[*Œ"k5tIЋi{Q$9;?QmkjLȈp7 .HīdV}C)$ U:Jܒ%+x%gzR:H*.d2T#L+78'7kƊe^S+!7gumD.af^|GS+ oFVǫ!?*sՏ4&}-Чq4M'\MsAT[Wឮ`8ݻG?B_G#Q'cjS;aw\ @#=Ҭ=g">Y?>V>Ҿ"^K5!? 爙F~S*ͨccmؙp3RK%K$s2}nz4hV6K'DԖ;K- Γld? $/6X*P +gzW<텢t$RL[JIBw+úUMCyT8-AB)z`qݪ^Ь(M#I91\(?W#E 9`.wTv rr|)XaYnY¬w*1kVkWU9W5J8VR*ܕ/k|Ux"c3wyȤ\%ieNf%2wKǙQЖ*s^%=2WIZdbdUvTбh QԂmRSĮG2!C\&WP3g\Qٯϝ{ěw^ة2Qy"%L`qǗWTJw|(|Ck\ _Y;22ΐfmMR{;*j;5K62w5r=T愲J/*sz69X[T \+PY;D֥r0<30tp_gBaXHhaLJF- Of <ω76?:tXIU޺]w~]gϚLnin3=7ϳ҉+I]|S{ɶ |x$Wӌ+sV Z"sqF~HмdQ3 ;^*sHlM]6OKޡkgpo[FX:.v-RGb[i.W:ԻFO^ 0k{)zO~|Z*v|꿵)B;.V֦9]cBZ\0*OHv' ^k\5Sa*j7\Hvlk8 r.˹d>G4$̕mT_kyNY?58z6G#s G{6b zq[ΏԐ*4/"fў5ׯUdyy #=j動.^wҝ&DfC_-ʴ_+5׮!p9B L~0;u|+qJMq8W']#L믴e[2wMeΘ?XG8Lw8 l'zIV>َ|vi(賖4 ܕ7nf}Ovd!z W$dQʹ{>ѫ#|bOb۫~m4q^,Mۋmo{QbEY,xeb|͘Lɕ߷7rfLcTW"كwtTG6rutHD=㱾cX0P&~+*&-7(d]Lv伞Īn;5>𲬙J2?%Z7Y{ܑy\_[#8dAkݑ Yh#+g{1K9wPVMH߻U9kSs:C66ZY\-L{*[Y*I*롵Z {rk7Й9ǎ̜TX>Vs׳g\q5ƞp~\VC2>Y?q9g'ʧ![GVZrnlgHw' Rp=Cz= TBJU6NXR@a'je@!#YrJG\V[6:v@3N.@?ZrVj*cZ4\D@Pұ9;?pNY9=ϖd)8${t((MF5.w0­g#^|H5'@R9k';Dv4 "U8p<8?WsjCD=Z-4u2agi_.E˗"K:+sY_*sY-8cnA+gKǎ\GQ/FmD~H :zzҘNqW ~TGiJ:ֶ}Wkc?1DWg⬶omisV`.qYN׿w=1|Z+w|de8I99 .ePc&6|O M;h()T Gmm~/KʧOڦ ||B] ʜ9B^>?G׿{2l޺77[+һg2G"GeZW4ܹG.bq5&ZΧZ9a^i  ߼y3JHV`vW #9/d*X$AQT4> *?p/t\H,Hr^X.8?-שM;K/N&'+U?l#{W}DzUke.Yڹd,bh%Rz)r~nt׭\biwʞ#?JVG9}jhXjZ宨7:u$waQR)n 5CSʦc5P6REP3D-|%u]GƬ̥xAB2 I4F,de.t4u(JRGVe蘪<%Čʜ,?춑Rɖ  LruF>p~%[{&ñs4lGJ6^y*7y@r/{2zI[ε),+r0rjWצ -g_¹Z׎4\v|d?Վ#Ñ'k.ԛe7sdl;; ?__sVy?STu[uƳbbdXLڨ/lj'޵6fֳ)gSYuCs*˹m+s'jRfVQR<צ9WmGe✧s!wjՊUm:`.l=4< $;C2)Eb.x/ z$d< 8q`LKlR`~W?MСA6!&F6 ̷FUؘ|G#;^J/Z'dʜV>#-cdu,wTZKY/@#S76Tm`u?;^vUgˏ{ 6!HbE/}|߲164?[h|yv;.ܥة3.V֦Jf|YT;j7ڏ>("]T_/t_<ڵD0>Rܑq9[1.79NlF5cSrEZ*7F?^ƎR!Ty'GV)wڸ>!Q|rHTַ ڸgv{?̭oRЎ#T9B=?=ru`p`5 Q8H8YRF;[j [4XFSm+!෶% VC(P/RC:>?uˏ q&~?[KXk#(G)EF01^u?obXlpa~a?۫U$~F~b|,?: /K>C0:^ QՐ??e2UO(?ƉS?}'dK'ݘo魷YIQ aȦ$9c㚞G"d 1%ᅂؾ ڧv9ν|-?aYƓisoƁ<Ĺ]ڥك ">xr-?*s׳!sY$Bsk爐ؑeHeS|Ö^zisӚ51:;KZ9ImZWPZ"*m RIn^ ei "jD-WC0VpK6HM"[;35V.Ty$FPWynX&5֤5,ZɎ/z"~aJД 8H톑-e68Ig.^BuX*.t&lF's=z6?=ϒŸBmʧOmV'OXgjxX#r5omWvuu+u!3qd c{"ߑ8gE`5Y'ZJhs]B6irOB $0"UdIDoBGiof;hm1yʍKrQץS9ϕ^K3 ;_y]gEzrN$Rj2,I/1?yazZ+ɳy}(PUr|pdLr. /[>Ə2|kuds/ereUܑz#s_jGF>FLQΤMl3 }<$>9!v֟FiXەs|{"9.pkn}9 l޳qF'5$ )A2@1 ECjE!:m)8Y D {--INb+ 8Qy-[!մTdQΙ]~`hQ.?B^#-YTj%\v/YQ7\l7Pl82t8+Rglȏ3?>0/ʜj(9Ր9cw۬KZXQ:0 ?R|4W~Y޷RKMljrdO\~dQePԬRc$񐥸6!QH`;ďkK[G9w}r^o1):xǟxnzM}`H>>tT$z⧡|z~\:u|rHG CdJ ]~˙^slMxj!3Y-&sR@& t~*E֢b$7,_Ji"A͜SYLϙLoNIX?d2'%1*1JD#D4?O%5sRϠ{)..Ï4ɒ?H9lvSOZ2ZAgͼC2'sGWb /Jl2r7VrHͼEvs^^Ѵ\mf:˹OVȜCXfCȜy?lMw~NW|TQQ5F2!ZfWe|B2L6^;q|w}7񝖉fV7_\hLW3]liYj~;|"RiNa9a钥 ԓO`rW3զ Fa|sw|sq\4QΑ9Y`9|fkS5*s?*s"W|. SV[ȳ[M<L4@8YbFLOvGljO YɩOPQ?(*ÙǗ@MϴU'`bqk0RTѦɇ1x0:VЋ\ TqyƻO잖 8\2X5pK`K壣m܎ˏՎݱkYՖyZѱ qW_ ǽ#;ݲVTOwUhFtttt6efWd14z RRMop;_uf{e|CT >ݞ6zq$:|RTήp[+ss萊1Օs96?pnU(g,%[2 @&cIqbN1'p9'9%-IN?:I %ےMr!_ȇ 2^OәI-k5tjiݱY;,U,ϰR,EN~/bbIQ`Ս#*)95k9-1)oQLF=^4$EuF79G;Y-%a._73_w5M9=P7fc󺓏tdvW!?VfGS7!1O+@|[`B 8qى\SϕROj5R݃s~NV^ɚrה%[b ~R;Nzi1z6\+לԐmtrSM5;EzO,Nύ=u=|f|nM᧹NV0 V/EcJc;ÀNMdvHvA|H$)Ϊ }`bV]nЉ#ك8٩[޳sN+zdNaƤJ9I9=JʿACѣ5'z(D̑Gӣ:YY?=dyNɲZ#sviK_g,n&O~ͳ{XsvWd٥yކWkzLLR]#Ipnv'ى\SYG?j\ӏcG&;Y-^3-:&03;YQFKӓ/sI>afR[fIƩsHy#ވavk nfZ~;>!|OΏܤ^&=Z'#UCR5)~B#(-uG;*K!d{a6󼍳@ՅY,C?`nYG&ϾMGEM~F}F`ND~gtkH㯳u?ۃ8=8i o`c K=Z=Aaؐ@Z$$hOP8#jyo}L!0^dQhN%DLbΪS0KbL@#0M3օ9o91Ipr#5* i@uI9)&>E9Q{!g4! pjzT,=y̫~ x̤'G<'=x.4JkU9x\#%υJ^9++yrЫ/|~i${p"~\?9Ezs܉\=G?6A+d:yߟ8eHDV)|]ds΁54ʗQSJ]S/Ɉ[ʅxdMd\ML]=r9h #0lʗ/?S˃\#RN\,)S?.U||׾5q(7VbX)I-3)W'{:Y6~`mM'GBvkDZ+0_g*ON+TdtŽI#X8 WgR7 cS?kLkhQ:٧4'O"mh{֓/M|<{pqk9G@ Bx J0YamZ- vmr _!Hpٓ8T9H\LԺ]HU'kH"UW:I9xșР\SΫp OS! 'A@RZ?ha :p9FAwMZ^r}-\Kӣ͑乖I9e3C[vBH8t!Mz&~R^L#弖?J ~o9_Eʵ㵨s(AHلBO c5#tѫW^"<=;bܖW{KŃ/<{(X }ǬGO>zWRL&*AIw[Љwd>fmGy+?3D>L-OIf Dؠa7kvFXE8 @`GJ Zt3qHrC%/÷)oo%Zkdߊ1Cvm^L;gI虫8z2B(G'FdMst1CCL$.<>rk;AIoMz9,=o宠|߸rwMs!8~0q(_=9+|<ᶩ+z IM"?hi~mhh_C;F%\ H շ~("({I s'j֋mđLA1(Y |b]p ~m 6gg1FRBbD1p`H>}:{s*%8+Rr>Sc \c Eyהә)򼪭:2)Gd_kDB@U ijy?(LܷVPpySK/w)/50dA3֔skSZr&唯;AU:f*| N$4 x+ʭ92rv;s'n(h5}lBa~ПMO4xI9z %gqꄳRD)r3B ?}wdjjv1"y6O ).q<:aTF.`{b ?K=ňxܽuo׬}m^r,lG$ ٳb_jP76.!_p$/"Y*r8"ąGd2o1R-Ts93?GT0H o1`NQKyk8őeH.9'"k)MlL"=@ w#JK3sb.d&=!= 8g^ &M7^jGNvHϒ~sJj<3}C:NN=P`:=bGϹRH( `?\"?CĞvA}۷! kDez1ۃbǻɞx;@@\w( .Z$nu9]VeA\?xutjA9#yiY0sG?}?~ gp3Z:3E^?s{vݿ 31H0XaEIRjuu똁Bʦ2O0H% d-s٩F>z ;k G"ij _q9KëٜGYӃFS7R. Iu=ߤX4HdޝA9f}&ܥC~k(G~!Sĝr'&1)'=y^kr}-ܤGS1X#Lk}`@mx_jZ6Y:k4sOWGwj${7sO?ū ~P-TuqiJT0}ksd8G9ѣ(oclyme=x:g)繾JSBD~)tO!َ>!=;ޱCN1J89g{ܕ)ưdomir[=x=zrQ' ȚG5AO9iocP~>6<4,]&4}:&1-zpiz5mSLzPo$<H'céd_ghUOTހv` 4IWe*dr2O;[&?^(rv*?23>{$˜Fc}>OnZg}.3x՝a9 Α=m$';Gهd+:)Uy[?~Y  VOv^e*i3/"#PQW|OR *Ѥ<,rWμyw?|O?9?<㌖l#(ǜ??9% ?<]0߸k\S+B?*o'f:I4ߤ&_Սsz!ɽγ;u'4 )kb#tw_Č4@kwKq؋ 3-ȮV?ugg٫NVSXy0';HĵG\QuHڋdpw4`T{:}y4/V,K/D8ipn] \y|Ι?%a\"[}nR=>Wa3e<7%sr'@`OS縯6=pA,WpQW{G++թT.sMS\bfIb#tr-_0P94Jmv ;Y51sє[]#eɯI=Qن:ǜGx+6G)Ϧ'y7Kd)k#ͩ;Z9x.8R.CfPayvjm2E'JٓrEei])'J3'PGb¥̷E95yZ{zJQ}>zHy'ViJ?&S MbKptp;n%I-t#Gyn"Q^@z4}ˤ~^e[L6ߚ~n#GSn['WcVʹ&_r^EDwA/ M#TGњĠvj7HKo/lIˋ<7<ĔWͦ(oJo4Oq`rx(d*㊠`g@R8o*ae+Ks*(p0'[~gdLY8 ;p0kJ?#I_?!~>[K!ܿx QRQ/Ć((#8ЊRɔt*T>9 qgn?rTۗ/on3Z6.ϱZ`b191~kuYA@x>ܑ'5CzaRD]"R/=(d կ91WKS ;Bc0&rMl--LHz*FI )(7gr߂?hƾ7&aM9z^H9yn `M<'=b5x)/j@^ gxv $Z^99Ijqy+?;&~s)у|!ϑJA<y.=S-+ &~0wWMIDATҳh쮩Y%Op]S o5 mXSՓR'_G-;W=5!Ŝ||Qא/F' Xgp|努#)_Pʗ/%\S)l~Д944!Ք{%T:~QfCof<+rKE?Bz \S~Д֟ms)d^e0S bvYMx 6kIu:RRqoM~-Ztɟ HOk`g'z]<ĽjDcr1xOa +A Io.V9}W᜸ OLZ%m*Mϣw͍A7ƓSnb R: IT)К?=ݗm#b9]x^R ?}(O7k|,k-̣yJOSL?ĤFOm(yag697lR9+3|ߨHs|9ɺQ_͛dP3.C`}<pW; xֲJʷƞE=@鴦gk־ɭV.{5{Fu駵8K+m. ńt1IȑOR&O=x[H[tTW{tW&=zȵʾ}/ȫQ{>,Iw/MSw-ӆ=vx2gȁyis-/҃%}c=jknKSh\)4'[ʫ?K ?a/Q`pƛ2SmMeix'ܜj=#?5.P5`qU;߹Qx?G:3<ox<'0<AQ<>z|ƣgyBWGxyyҙ-yKz􈓨34Fyg:~Z+y{vb*٬9,UaQ1rVuHV߲ؑ;ZcXbMc^E-KdեUL1oA9ͤbyPI NFF5ϵ4?My&=15=\SmK BE9sϯCl NFIܪ1`>\VS5ޗYEKMl"_\~ka3Zv`)ʟI]{ڰ1 z szZGuhʂ:uAk>a sIݔ=5oPWn~9ikcsGΠ~o^0\WtGWmt4ϵ$妼F4@j<$^.!=xo=Tfr?&I`Xs`<wEe(8P|pR-!zNx#K@p;qIR~kc6~d,dFM":F?yK[^ʡMo)Nܺ{o˒Vrf ' \yd"Kr<ed F$6$PuAAJqa7$(..M*zN})ΧDIVVݖ.4*rdIJ-C5s]W2[A4砙ؐڱI6OrLFD, G޺`n8/P'=mdk/IV[Ņ\Ձ'"u­ |›]P>@m?`&p .7TK? Ӆ>#k.,\,͟Fj/8xT΂]GbVn|*z#P<%Gԣ^t@F 5{rߒ S6R^>YA9vuz\W$=h)?\Y՚kRNzx_IE '6}>l|(Uk7׷H?'!f ,rJ!2e-/6)K7 є/JL T~&i/R-V~'D2N9U{ilDxEO?SNF&0 XLsS-义L\S?pN"lZ?Ȩ̑GkHjw?=8csyP:̗+'ryL\zd O끋ahi< _tA{qTo⌎6Yȧ?@tH*p V[c|fpN 'hl=gc>MN~q|e?pqK,}{q 鬵®S4Aò$o&[B s6jߧ^'+MkS݁drXLzjx=WqQ;JޣՎ4BZ =Jr9k3cct*& 8h*^ #PK4A9;s4d}i$b̮{ao#sX񺙙 '5>yNPy.M iOX X=zL}Z#9zA4yIRӯ*|"I?w$X,ðR.s]G&g nLoVʲ8eNRUNTƬjˈj [0"ֆ +KjЪZ'3GBeS&5ϵrpDw"I@zt{O>}CbȦV:A+7WuވS(S#V~˶˒ũ.NS3$1}r4?0 vE%a {p/ILܥbLdAX[KgnDVY6'CIgjkgDN '3+HE1sfg$E\ĞWةIwuFujRɊ؉}n]ǔ=;k{LsLzaKУGz)ǟ6@ds*'֊wMK0v~f+ kD:Id5"<G"ԁG|v!Z:t(R65vWt0]M%g7&7 nuu4;G[ed?NVZ'5.o{u._v2ѝ|sV_9d6hT45/g@851cj[?UGxDb$3|t,j`0=y=Ow3ՙ=ӸR{yΕBy 1%2QK_ҦpƩOS,~-{:ĺ+sKÜ?YD0̉"63' Oy;5_v0pԟAĂ;\Np4xM~ '{xn8-FXr(qԖ;7^oeo/qݭ-=nL} nfiZZč\+5gk>ajq(K(ؚɚr9pbR!{m+=aSXAF&CZ_sʳY}3T{owmr!_|C(w[)PD$BA?HaxJ;8ecpS QA+cvh1uNܓ-CCSí9D{1뿾醛$Vɗ_S}iپex՜R-Z+_*[ó'ʿh"w4_NgO|RvX6 /ɽ4^Ƙ>Ѥ=uNn%z: D(a[Uo5uͶEhoJt{ _65uSzNMO`1~d QCN;>G8F}Hi ?(èG Fff ~;Hu0̹c;@Wɟȋ2U8J1?eKj9I9?}Hǜxjʛ#akßh(ؾ ĭ e@L[]LR^!-gko6hy+OXefϳ5J3V&"&/\әHnH%.N6CjO\1%K4dӂ H#~(Fzє5~0=2,|='qa'2AC'H~'4 暚:>6WF4%)ўe$I^"^5)O=Vvbt+ B2:uyG1M _O+HqN݆ͮo9հؙ\pp99CK4T<7ij?D&_\O\͞_z!9ػwo5$=vY,J _bu[B!gdDF3S/ˡ;Jww'0;Vuq38sX-iPyGj L)fD:wJg'rxvGjWO X\ LbdcO %ђ?Dꮁܱ܊V@,}>pGȮ`(ZDP+cMNtEfdo, ST 1z1>mmdLJl}L_#q9Qצ =S:S^=UaZ9}Lzx>ʛsػ%8'iʟ_] щDRv-Nύi?VGKc¾+=4=0M`6,;ְl[9L<I-#d)=yBhdQq+גvGO8R}*1hN5e/Z3Bȅ@ԱF 88^`K$z5}j2nmIGCgg1łh@z,8.F*'*zAp˝r'r7#ꂥax@шmxVX"ߠ-OS8Z`D$eH8[R,"K~\jaFcR@iI' KC|]0X)"4zpEu rCrl0Xvsqũy~u/U0[ux(rZ)D[2&v [n.)$z幒y]O^~s$G-'h) $HrὃW'<~dU"j+֘4|ٔ,O$vz8OaIèC<]G4 k*?`G4+*'g`.z ᜭhcO- )L%)g؞Z,!.vլĪ>]ڋYi ^}GΩ|Zrb- R]08f;9UDC_bm(1tlwEdPW=M6ur!_x.[PW'!~ d߀S-}P.w8.*EDLlG06%Z0011a<)`#[$cTcZx+c<}ps*b8RcܑsԱ)MyH|KQ M37)ǽMz1)}&J?'49IsR4sR=ǝKvxr1 DRwJ`.KL݌뭉Rqa#XΙb$a:3BJl-J5BM[O ?%ZUQN?Z^ucքs}kH*RBˋ<79)w,4Yyqg_=oٻKTN8NqQm@ 2 \.PNCcsTS?Pjyg>;{=OGGw}t&S u+uTvv'_ tC[wyPv q<ឪSoЛڼmm}֖HO5ePe{]D4 U=5m<^vYx!BUNNJFoW$MLkV#_sDO*My_"Q(!80vGsRO>Cy᤟÷^=S9z7q=j;o.'ٱL{/Gw>1qs[} z?xؖ l"Kօ|{C" \COwS}~Y  r'iޥp'B(c/&ū#2p8! "uW٩\RQmdo}ȉ7;[ۑL;K5WS>c⹔5Ndq&~sdnsJmhz1%NK?]<[PD+TGR*S)p\!⟫NhGX#uPoU5aFbcL9pF '-;?6ư l]B梊8txſW'q^'P˙ ރVbcME3^釦!2qL}ݻ~s" 5Z c_XwNr3#ٖV:YvNU?@w֧,JL(^ $ Thc XAǭ[woVN5!&ØrAt#BsvuT,*Si 'T˓ĪEp<@ ~G9@{d:+a$#'0|oo1HɊ!nT^s}oHB#Ԝ[z0'hMz@<=z8')'=GܗIsIz ET k…qtdǫϏON?0>}yf5ǿ)0Ne PPדj>!EROH|u( b(X|I~o(/rn+ E3xj+'o"hX5ҿFb-#;g#ffgkP>R^MCKyy.T|6契F4K`x9=3O_ʗzZ4R fopGmK5x#?H'ɕ׸ЃOՊ85NfmuVpܡÙ{wmxzƎ9H-MjO4?_ u) $U+EVY :5 cJ[D/:}:ϟ#=9w!{[$`V#D'#{FMpQS8- 0`R3V)òl"bqLFyX2W#ƺ ޣr(y܆}LzTG܂u_?=֓R]hd(=uwm#@' zfC-pʷC}a1q'CȆ+.Pz&MFQa_ʴ%sJ ʞWM M$3>#]ek U%@1O?ށvc)ʋӨ !5*Z 5~D^|PkXCkP^ih7D`̎wd-/]xs\TJ])'h/K9 ֔8ktJ?@>采O?AT~T^p,ܺ=}H8Nm{x<恁vZ;ǡVWsWKwMZ94J\ |:ه|S'B>+gMGpl[^ 7t3M^8I./:\Hr kxn])5XHk[Vb98DWb0#)' dA>a%<"U#V(#=b~Uy {=rvbN6ԔxdCNՃ wo/O?X`h,{dKI;}y|7G7nԦk"ejB¡@$bX(&zP+&0z5CQ!Dnp(/eIzy9uT xgkdc'E;7l90U+eF/5S Z^ I9A`3#us?]j+[Gj;/8+gRo߁ Tk5eS#en. p4ԭ)U9FZdfoSv:PWxf6 C-x?pzlK'PRN>{@2Ј4rTւ¿wƇ8\#ٚV:"l XHg0YgnWHZCD\{e='|7>TDl9乩ل* Qc59NGꦩ6*K#$FéFn}篾o覛x\l%ɍsN9ɷ( 6p_ԧg ]Q'zTH`jGyH HH .waxӤGٞم5P.==G܋I#)_.g򬍃E160'' øJYk4?Ĉᄍ%/fGYLa|UA"bs2pFqGP{[W;e&ǿR_BM\?D O>yZ@#+V'/?Me ?ȰJ+[GJ\uRvÎN09[SrdT^.??e%QmOǟ3%bh_S/ڶm {[ l<3+mKjo ѯ5 ҕ<)%N᧩NߧۛslF|'&ۯ\Ҽ7cGpzǻؘ(uyQK-ݖTev gkmf3D1DQa*#Ѫ0H]|{j:YծdZ0sě8XFu3)g.ZYs)G2u=;hʛܗ4V/NSj-KՓBabAX'_a&W,m6$-RN9{֒Ļ#ä/$Di.q(]~]"ʦJL _(O6O$&? V8[8[.sxr+=-"+J[ݜ@\.dxw ':O#Dyy%K 4"1V'/?MEVh7lPd_xGSP\~bk\cc{zSrjUIM&adҧ^eBdԫ%qY hol]>c?w/؅ }e/!;pFpَhqYss4hԴ&~Ncs\ÏHa衶lpW.=#g#mmŽ I\3(Hn7lʬ4oJ|>rXRQL>u2k*vSm/8᱙o__x4rU OJZ)eNWA}cNIE.d$!%=8Q!Y8s|#I"A9~`Ӈw*=UE"d~uWJ`אkS[P}%0'".ҏՁjtIAỶ ?ܲ9XeO1ċ"0Ms^`|Z_BM\`mK yu&ȷ-̷Fgk}Fޟ-g :zԯg^ق(q2Cg%~sژ!!J#au|Zstp82uq@ ?^>ԓg.I+h)`@?ƚB|⨐IB^OdJ)S% #M༎o9U;8W^S vH)y,y)̃('\MkH5B <[öJ^V8edc*\4y&vȴ-Iւgkڙb{_/HB=wg$ATryc$(͆Z?ynj6jhT}9U6њďd8%=ʹgh!5 ԟZ'> A*u7mX;+WfNX7x#74Vj=lhǚ0FB(XgSqX6`xξ1.E=gԊv-SܳSUtD&7ǒS4bŃF]İ"ÿ=z-H\GLI=Qp]2a8]<&bY1p6[MTXe{BhpUa8ԭs B'g7q Pxu D"*=[H$vlƾipJ閨s%Rpf35DV uL3SAa8y,o"J3T]VGS}ĺhy甬FZ^]/]4Ob3%GB =ď;BES_{?|he1K,6,o]u=A)үIMzu<\ ȲE6< +-@<~5eW$#REe#[TF/Hh~bFnX+a_Ϙ[&zqV<&DO4*I!FhDXFÙ* ڂZLx`okWuȷń7ǿ-u8hDk}6hw{hRV" ~ MFM+) Ur+]x:ه,ZErno)УLN\%I֥&`?Z'Z'&VΊW?a,<'TΟj#>3ց Ęb0‘Ѥ̕t(`OT2)U?+LBEZFjHe!g|P°%aAf#rIC1U鑠J1ksd'H1K:PUGu=B{Vьܦ1R""oa䶙oUa=|*Z$t!nZ[.׵qNȗ̴Uh놨O^@yi$1Tnyxkqi0h7Xzjaɏ7Vry"T*z6h9"Z#YRn7C]9 3>lq)QqfS<#}oh6y=~@RuCpNm>>z܁w-QfW|,7Ȝ>}c#W%WĖbLš!Tiőto8?Mtr*tmJ-x T* Zzc$^J}*&= FU*)WI hd?.2\*=,SjqzFm /[\ة{,O[R[U^KǢš Jhx_Ï)Yڔ% Q |TsN1%ۈFɚWu_b˟И(2TG}=LY_[OdvSƨ^?ZRyl@Q򪐩'c_66-넷[~?bW1]l9uM=}گ)eN?-~Lɚkr? jKmD>!_?_tAvWCԱR,he8WN@g='[SWл9pi>8!Inn`xsxKQ_?/+anV7x'l X̳wvW瀺uZfgkuEIG4흰ڒA]>\'Y;)Hg#a+,?lOv{^kAy?yiy\#aJl?Z{lK-_[fTj]ƿ[oďZgk6_ Ƕg"~M6?eg_'|:ه.ϦvWdll}!&NF<`=/t.ݙv=qp_ ?S@&`!΄*tHCӗ+ټ][^ղn7bHMRؗ1HHsⷸGjˢ.IʓcX2{ԓ~n=[Yn4{ Q3\7#O^w4獬SUpe =gk3 ;gB .:y] /sJ4DKS?/OkX~ě`]~ 3bQ2)K",ٱ㍯*=S{JG8Q( zM6i[RP L3\sj6s?OsG$"ǯ=}:OrӣQkG\_Okm#Y'tBN!Xԯ(}V$>2ko`e~o5Z:CH/9L|E}+3jh1s)w+vL^=uLkc#WV+~\L LjAÚu|5'QoW9Sy 89lmoMcƳ$ShkyBm%jq9GR d實98qsSuWQEjԱN8x#'@/g(Y2~c4?5OL~'*d}ҫLK:ه~@:هW'{w@9#54dTwY[!<5$'^*Lɕgr*|Gh)6d%1fEk|}|C(i-wlrܜ-~᾽x3Ӳu=[xҕD}0݃#NYnts0Fw*>yi6Z?$ڈoNf%3Ŀ%hS_߃\)׃KS񺇵Ĕ(zJ~klʞfU>|gکڰ-5Vm5?yQ!:Yto05*c~:z4֖EVft!MWNFJxvo !>r=,U=Y* 嶬4plߤJ/};o_$:2IEHG 9!V>2ȟ'C\DFlyv )ebIIFO5'ū!Q_0c *rbsT m۳c/\{<~#Wѳ7&B$F@w6ϷFutٍf!oUV[[#c yO}#ovheWp=!Hhq[H&&XAfqZ;v&v*ݱ6b}7ܽAV"*nt ̠wj7,@0 f E;~N9zBJ𲋢R6xT,x0J!'T:閐PW kX쬅*wrl FR&ǑGo1 IH(1b /%(S`oGK2>(;Kӣ#O+/*kW>թк8*p ,ш+(<oqUƖуb.~Dhz"чY=X'cRϕ(/$Q 4b m R&m;o;+4]4wͷU 7S)hx"8k5H?#O=^LX[%Ov#2EcmIfyi>HE)yO>WCuL5&.Ru3|\)fڽ(P"ĚŶd %apy8bW0g#tBxYgЃ ^ZY'8iUNj?;Ѩ_uI[ Y''ngbK)؅ tB],w1'Gfϔ}$tNa,?>l_^(V:`*# ȱJ7[#va/;ˎX:*ָm`Ą-5_-G"v\6vľw?؞Z߷%#WJ"%^jϩ@<ٶؙ2ٹ2r#e'ߺ#;6j<<@3)#W=Fq.˵s\\z-wwZGRr8Yˢ=plr_}բ\l.6R%r(ߛ˩T=9ɠ5:?AQe 8*{W+"7[ԓP2jG*GFt K>ͦ5R-F2B܆gzt(fC`37u toJ92#lKcWg=ۯd2dӪ8wO26 XT|7}ETCD] x>s0d:l-_a O"':K v<0-x?C:%E6=b{ĽQ:H{A?|‘F]E=!$VI,4lQ>}Qj&{swǑ$eB_wЋz2VXB,YsCU54+0\?JjQˠhr[|;8%l߷Z.j3)V`0z݃NӇԭlcϢ=WSv귆(\֚[nygmە=t0va'Đhtjb0va"9 ;GS+uO$X<<7G'veadn4SlُШE+mH%}f,fx3>1Q[޻R5Ĕr[le@Gɺ'i|C5b.^*:!6 o|k$ߔ J ߿8p,vjBYg/WqԂt|"'cvE4ϷMz\,m!|%`_b=lnL͆ifÜ O#bݨٴL9]U3iBd?圽Nƥqk^zd[F;nmzt;}LX*SQ[Ɩ7*WKK j_lӧ|⦁G jfJg9yd@2$ L o76 'x{|1x#$O8^y0-e"aRLсCk\ >])]8oe[bP`{kEػd(!RIIĭq' u14wV'\joVdk]˩I}Xۚ~e7U|ErEAUׯOW'ȭ[ܦ#.=@_b5PbAԚ߫ﺁPm-oajA|҅B%- c|R.gcޓK:- Ų̖]٤ɴ((^3p”̃'F>)J:@&à𧔞O(29w#MiJ)kyU] ? v5$t({|X" >EFeC·$\8 8we$L߽}.AdǒB HPASPvu_߁3>o?[2ߵ2 pjTLo{U+vBIYz2ߠ~tm*2.Y! |/F1̖ "y_)[:7}o!O٭;ng%ĥNQu/Fzd&B:wǻ^)8'c+[7ӱ={;bg`C%pE`M*DXQي]<9<40unpD3O':^(QqŪz-N؋(F̂P%ZԱU<荘d#xc3w˃EW4[ _' ()reBU9˖0l0wU^BsBv!lυʒrKXؤSi7>\-110pԎإb+]h¿to,+&vk?vbC^ 'VjA0(,6 fCd#I)`*FB)[57|+LmwFa@"6vGЏNRѶI?M[G{1ylĤy"<~-7yNezpurL~&H:?,9Hu+4t.}/OsS,<]nUok"n[࿖zK 1ۈ Bqȉ8/1o1nzv3&|PlEbJ m乖eAV?"bJj!1%?ZZk kJ.g)子O` kzr˃w]we\P1iG,T&\w~Fp<]PL]?$0Uv9E[Hal=198 bmćl Z҄F]"9 ]%~d.jF⢤FԹ"$tU G9()9 QQ9Cdj9ieF)JޱZGgH֞Qؚ K%q ꀙ|8i1Nbam-&7G:bL4t^H#pҮLe ?Un3<2CT4(|jK$q0V*/*) i S30n+<^l+>$C跖JηNx>yJM[y>l:cr@b= x~aLD\wa^6?#.5=漋"eīT.Wv+XYXLHFr;$T^&*05Ƹ[K#Zn#%Ek}%G(YHVh~Db?ԁuP?]zH9C|kܷr}P'T?o~ie wrùbTis$|U/-I,Jx/b“ #yLRfG܊ٲo<" } ʡ`1cI0v4 Ҋ1=2rd{m1_1|pM 0ʱp+hDӜ2_bR NmNÀDiW$oz&MӘpy!,dtFz$B9FJ6Q49dT.j>SvZ d$"HMYMd%r  6d3f3CT:'œf%]ſm<^SbRB B>t9: ؿ*pn\,Zs3/|_]kʶک=sHOZCykJOsMiIm6WbҷrF|x_8^U:}ZvyXpPZ-ڋjX$"L9GjW}t{j/VYDŽ 7#'aV ~l+{:W;2vKe_zb^)MfB*UQ)bD,8x=4ʪVIM0JK›HPj;dHTV-D!Cc1A+O!'uy+ k1x"`nK[Vf-ϵt]L@NIAƨbQdaNdul8,lVj=WCfG^o)˪NED?ǘ'O8=+YA8?ķ{g#uS .|g37 'r}p_M&uEzn _2ȞH4_DݵT~+AZm2C,o¨#)TVunPf=1,DH!Tl扯>_˕ ;i'R%?'2D<u <>dJo/-k\<1Iۃ;6Osd |oA'Y8rXܒK!\_g$+Pj;Ӧ(lbZ,n< 6ħݲyO!S\ܵ!K`=~d$Yk=~a*ה?&ZC3QdEk`_kut HHTSx k!PDLz~k/v%2ZɋҰ;\ ܍ZX!щ\'NqA#zq~;>f`:';i vg=NxntP;Qi/o@Uz5؟L])yP[WS/,M؋ֶ:I[88:|ŅЧ#h/[D `&W&,ꑯ޺}/I%/kךhd!{d*wʒ~EnD^=Qrn93.x+tFWהS.v wv_]jm' v4R = O98?s21UaBl 5:BxEf h@9Ŀu %nxQ30cL=?lٟdyʽ?\Sx593?θs*(LiMRD 蕋8#=tvkRGOgc\˥޲mfzJ̰XL<@ShO,vI ;47XO\=듈YT؅u]o@=t,=wY1x Vf<ʁ8H$襃jGBK¸:K~q 8pyvOڿc!z`$Ķ1^;VxD>8+UXOõmU+ΖTDTW*I.trJ@8F=1o)xmML8gK F}B,WЧU=2`Ж?TCf;*_'v2Y~A ;*A_ [(4 jhR:RuR1URsȤ=KA X/v`<@&JBb:^%ժNUKc^:_[3>vP:)DNWqܻ䎃'딁*"Ķ<rI{'@3|bR.aPG'pHĴ7 ;YX?ڵ T2]SdOJ*Us¨d܋WɜZ'ٳW+^v:WT(#*Sϕʕ*R(1g~ӻ?'~gщC ӹܑL+LAGrDȀbCog[`t}ޛ%)&4329:>*Z %DOy#Qգ-$T`:ZǫNQXuH|k7qH_L r6o> (E߰΂cq ^{~'Phx5*hƋvtaӖ] ,8OUq)do<܃gE1duV&sN8mKgr/g/euhpxrHb|<ۅ"ӕvS,S}Jib8h'/~׮4=dxJd===%D .b_Z`*8U%&ha59ڲ[פ۲ yDp̉WXa. eȨqm۷㔪8 v:9- ]MţV-:i1#pd 9AyuD2Gm*mo *k)I. K:kl}ێ伬? &K5Cس$ gkX;`:ǎ^8lKmNnPMl>'a(/MˋROǧq{8 RD!m~N9;//JPa$ԧ>k,ql'>D {A?H"2Ū9kfOjB&-~_ya*޾.JA #B\ 18yB <RDB" REMe_NL U']%ѰĄ U4oދc7nXnFԩ˪,)OA$*6l5zdulFmZϐ$E YΕ?0:'k(!ZJ?-A?H9C?\tM5X|hR; ~7v-Tg] lRс:3LfΉ_ky|T=Jt jRoJJThc^=5U:=_XH=hvhqP "O6ޝO)P] w6INrP;vK5p6W9:@9ހiޫlAkJ[%^5$Fh.])H$r$OXiq ۙӈ ?.Ng=֫N]_)N4i43gdr `WT:]-(Hb\XEqڊ6Ñ 1-̊S[ٚ&N #$|*[A~13 wbe_L/0ԧ7r࿽3}[޵+}k%Rޤc_92zEXRs6bPvd[K^<-jĿ?  ۔/`MN]@F&ޓ~ oD oqk< 7K>'!OL~?|.<^s9-kZ:؏fL83'3?-liꑉ#Y" })3M"O ŝaffz?>9%T(<&ǪAxd6ܛ޺3Yc9TKC^9FRLo)wwd_M5⇺f$ҏ_䮲QkJ\N*k h .=%L- I 4~5LWnrZwށZђD9'g4";;UZMm'}<L|}j铕h0)nX l/y5$zTm9[ E{fu+I 0#= ^ةf*3#?>Ht[Npsⷱ51e$K"UG&m[F>a`Z( g+t܉JNGWNq-iMaSaNNOL_Ͻ|$?OHS >rEЪ:*T8Z͔,d2ش_ds/粇'fdkTJVzcQREl'=̐NxhnyGSWoI]=_zQ~ yP림6tCm#/ Ѓ>xV5h6qTex#2;[T)DB] Hb9Sgnv*\]S>lDV|agnFD`8J6bGrLv*).?ƌdqs4!Vǂ?jw Ƿ~pWvm5K2ӭE .<*TZ l9 ̕*(~B}jzHmWi)@ +t\M۔F>\4yc{N9;}ZW*>]E3sePRjO|RG5ާ޴yeCC#×D=bZXdRMR5[_ӏi`<aɾ\*Va$*ɷ+ch  K:O#QJt0^,u1FNeNLapO0SG$5Hr#9q-\'b6D܏,<ll_L(ȉ.(MSmeddpA,{ QVvCa>3@ \9sN*SO}t Nl ^Ͽt$wKԋӕ/bK"/GAD[M\џ8` t FN #gxEm\VXI_\*! sl])xz@)HYhdHĞI^`6%;Dmv?z=eHFf'c<*\??y ĿFd +s yOqJ9?atuTFzԺ.oL$& =3NK.dkxGo#EяTrhSh5l5;)71@Xvm8tU$Oi64CÃ,TfǏ7P6Y?&ugӕ}ciGSo{>u>orn;=;qq ]1Qlt7oyM;[oe#s_J$9l݃XAw/JF.vt(VSID"jG*:;,Ul$ܽC ] h0iEYA!vydlDHl$',pG 4=RRQG|rPs ޜa/<"VP^A)Hv S6֛.O" baх(*d.K">r"Nt:WOJL0^;1-YYHxBb*&a%{ #&9A9a/9,FpCXс~d eXX\A :[C=E{b..s>I{A(L2N'tt>UJǍt 0V<%,E_Jz,$E0䎛ܑܼ!>v{|:y4]}56\Df'Pq ǩ7qK'5:HAE?ml-'K cqBkU$_1?mE d`Eh?qҩd&D`+qRWuTյ#}És?6i}"f#dP?'M&]&{%Q˝Fd}yi6?G,1}=&~8'G9j%[%7֫uoQ'~_#uSBx֦xGj_j:8ց=vj'!7?gKz ř(UҾg{mǪŪTSgOBH3β2!ؐBA'!D cJ;GBc  ezXosⷀ 5Emt$c{z-r|Y_|#`(W+(_&>ܱ ,Olh0-*rj0:5uQEaJFы6օ'ga⟭BrVl*2+!3𛯊J(+Q-qpܝNr@T;cKgQKXD0qX;]^TC ӠG?O`0EWo\߸k^ڲu fx~`Xv_kD4"O~bcr T:zTiSF3ӹϞs:/aW2lK&Hw+]t\cH?tQ?N%Ri?P-O20feJ%WAɊYj?#&IL6ux.C_A/v%%~dNģ,f@jWt+zr[(% Qsޣ7m۶uk|}Qג$]{X=^Y7? Ir%ѐUltVAfw\YBz^^0*PRJZVeTP1KaMZu3ʑBmaU{-9QȟVxoaˌ PNH*ɷ^*TjU[} $ǧV;i7%yo.3~6_z"RNw˕Ǫg'r6S*l6Ώ\^9@WUW^9I?1&ϵ8sTUlUIc5 =}O}w>K"|@Uc#SZxֵЉ,՜4ybuK*zM*ξ SZIJ8K? Xm/6?;1X1?VSױg#'w`D@l=2Y9kQ乩L)+s ?ٖִ5bR>4&+w֦BZc{/CE$rv1ă.[ۓ#hvd`8,HK)9^1o7-Fc;]Jxm~gU3IX'aNvh8Y6ÊWb H'䞡2P%&T*z:/º%ƛ=q<22E ~+Գh4ӡ=pX,'"^ճM}%@ȭ/eJ3s1uv9C;ڒa.=%-C]_",Y 2J6ׅsT룾"ωty.ix:%uJCÔ{SȚ ~0'$cupMr&~6W:c2L`NM֥lKZ' n;4`e6`m/x䦡t%F^Tpl0<9T؉ap+Y7 0^J)kuj;y KzAGͤ@9hNF &a $9'}*Sl88%DKReHguF\J(՘*ӈF^]iv6$<}@/58tSk7 )l>N"ۡH0-QUBXƂ_+mOE!f.X[ w ǓoiW)t/ jsyy8I*@AyF^1 HF=xCx@zvCzC8ވDbő( jsn4q  {¨xݝ\FZ`4•5Wb}84dzp` @oU+ P 'K`Na9/HΉ294cӷF܃ l01HӤ\ZDƲ9_\ . {WA{!ĬvaxK)25 Ns6y)Zooe!<(dNM4;~4bN M nw]~PyIo?Xs{'œ65D?ׂ }]Mܚ;c禺)~d~HA:ه)t:+n׺4Wr?CG~T:{0wnKt(<(0&? KP`c5sŤ<ʒ獄%6H!n'HP0*##{޾['uYXǻ"P +=yd_AX;=|q< 2E.gk-Z&{w"Gϫ"m% Eݻ+/5}"\RH!qv!~8R',Uh*tu:W b%S#eX%Q,5 ֭)3)s5B~kjŇ&2%c$nqІ&2] S["≹Zr-N6+1UMCcBɩz)B䴥FrqΖH$ W5bu Q_<[#UVG:۶nyNO乩لs=)~0l~n}:@'wu2Əz hʥ~xKOۇק p&\Qzjc.vN*G- Q&ḻyd%Vx**՗01,l#TUa#M*h>ꔱ*[HRD-3yE҃Zf‹R!d50~iJ9}A>rM¤IGUZs὘ޗPI]4mV}U*N\q(ҚZ[ȵB ctVlaZl[ti!$Z^r;@C^EkN?`GcKŏ98Ip~~;z ]ݽ{ݡW?Ac"=GbQo"oMq|T~dbk!+Ld|U=:"f@]NjxzY'HwYlſT['OmY?uH= ڝQx`ց='zL<'~Df[Z.m, :y5ds5ŕNI{وb~g`t28_+y + <4ݬ;YTYHH谫^:VwbJĮ2u#Z;u#-0zN_&ܚyv+2;ôVhJf/HMpɻ&9sm~]3,ba#pSOq搊rh͑TbFؖt {"NEi@愜aOmcZ|QoٔQSNcZ ފ?y擓k?:T>?:WDi,P/>f0(ʺ)D^S>d{ OtUI!?u.HOPjCO͔[`4=)]ے2F_,A SIntsנƿcɤQ^\uM%һQj8;ONVZ^9W u`JUuWkď]IfhW'Dd\{^>yF ^[3D-TLV>#p'8jD=pb/HE!Yic3o9UEbYEy$Cc!R5R4R7q|6 ^S#g\ ͐yҡ #!ܮs~rIx*>:,pC襤&-O`D, KmB:f]4%*2(  lȥK9j]`I˅ (K3Z+ymZ$hjp}uA "9ޏ)ܕ˃ɧPz| ͷ.O,' X7<5 Ok̯1 S퇳&Lpzp0#s| ȧ- s&W;a}Jc/ƍmN($3gd벱vv24 3|:;~(ȫ_whBfM3k8 \s"IsK<HV9GK2?*df4"k\5lt~+3z׻sL^13'o̫?d$t'ߜj Lt$ ՆwR9ʖpn'h\T&6n ;"{c3+/oSb箝XH|HJLa`ɞ)`.o_֢4 Z(Ʉ"4L~$9"^{%AuL4#&A8wk5HqrԛJS rG1-H(X拗Νk6 m9ǁJՉwvkjy&j'dEy 9nG~dQ4~# ܯuQ[U[k/ &=9X|_\~I'PUpM8@UAyɒ)@oFq?CM~? Dv]}zݑK1keI\.Ot؎\˹O3#w@'˹~qwٽO N7*?'Ҏ`oPb_/yܰN3W#XJ TGT6T^q_bl۾M;;;>)ݙ Z$̙r#3I2A3O v9٧?:ܞY,IyhϲFiG#QҼNؑ{;&gk=^ >5zaN$kط9\鯘4%~+ژ-LIsHUn\:;g.Kr38X:ڥ%$৻Pg7>,F9+1—\ΘEb3=ˏ\/,Gu(б Cox8HN-[~|K#cۢpmq9W~T>JʶYuMW4RgW9A MS5 Dl*ss+++Iw2s?wV>Qmqo.~_&^6_б$wL7#S< /9cJT{Hr_{ȎME־UoFٲd*e,ӥ.|"IxKr%?ec_\έ܎LeG˾LnG;33&'~13@Q}ss䝓nƦIMoy; K8"f]=fK%XsbùF5˾tZhNZ7*lZFbACSL.(y5DD(?atw³cKJ-de]y~OC-9Gk]~˹Gq)3JosG2ous3zR"> d"QT31V涿,綿W9-.?[s*sv˹l]~\H9,n?nkkh1T r%J5s`=<5ϳ;0_CI`/JA26cJu<_ 0m <ۿBp ࢝ۿǝ4۫ Omx 5\}S5綕ypPHΔQü, X;?XΓ'M39^kۄ&%~tm/2:^T]Uv~?dd#2w9y:9sZ;Z7i̜zԓ{}^2PMh{M)U,IbjId/iIX?:KiI4kK]m?)=1@GK*:ؒA ==hI#YAvjQ|0~FO~DSY^sL0p%'%ĭ}GeY?F$sr/g}۳.?TRfξyƟm\m3fII#%}S7a?eN(:qX[N1\{9۫r@6`^ᾡ9cᠢz2 8&z E')\1fHnqv'0prVQdqt$g'ckd_ˆ֨4١'Q JZ"وȔil%!>A-pIk+풶$ɇbVquk]둑92/,"{$842'Y2מT>|=;*՟GcXt2أ~4pU_grWuh„q:?r~QI5`\g8ofL'l~'W?,Fh|t y;VoU>9 ܋=Jl|x>3!qΥcƔlW˝!O>䝓ɝ33c[έ|j3]dǎcZtC}Æ7(<~+W}SΘ +&Y:7a;FWi1p20$&/Jbʪz?"7Uaik$Ykh11װ+3rE<$1֒]bZ;]bTαRk)>GirfceH[18KHWmkmSY3krHcfʼ|'l.;X.g]U䓷g]?ʹ欎) t=3HG2w< xVSRcoVuL_Lu;rrk0 :rѭ_!qV]uv@%o~cSfѧqur0~Ofq4'={}lUyGhZXԟ~)Mcuv~P3#e{sl;Gea䕏42wdʮ@艫?sYl,o?C$$wlWk#/8s-{2 VgŤdB7q甅Ug%B»nITA ˰I&Zd]$65PƬ ʬ))J ~&Z,3QG[_+HΦbp &O9rP['jNy[@QzxΞ[ ynuJyJ̳Hh8X{FPEr9]*seѥ\UbcѺD?,?a$^)ޯ޻rKOJ3EV\5#sd\d5S2+Gʎ)EBJ9k9DT%W3_2JV3x,ܿjA?EXc;m: V~ՓUMsN|ǵ_X,!gGg^I_skPaS-zLbf.972;?X0v~t弾>\`lG'\2A\vf\9AEsg6NA?RWrdh|9YE,rn1|kc=&I$Ka;֯JEP%aiN,hN Z -ɻ|aiҴhI]&ْGK@Ǐya~$d ?b9,?>Gڂ/ Wzo6LVromݪ2QY$ʇ[R'f?ּ6jY׳98=2_으?HCǶq@rm6sߎ4~aMe&}aƣj\psRY?>m7Lw Hdry$]~xt?T(WD`~ lgk ˌI?3艦udd\Hyjm7>n"_NuV=n6}!Űi;Weɠp7&7=]:Et 8ŧlܦ( {x72qxTd'#GG*`ÑO[O' MIjjW5+ZbIڥ!ѓY#5r:Wd-vJ %/킁@j &@`phH;{HNLnۥa.Sec>O2W>*+ l{۳d^, O/,z׫ <#^u-:CH)W3ꉎ)ɀw֕\u;2X9w#n1L Z9ǧ> >X!|T$"՞D`3mV)Υx.t;jcj=ۙ}Sg}s; ۵]8c9w7Sw~ɱ{.jMCƏܛg͜Erv1X5F"A Ú2?Q`C%B:0nkyP-=&By4ei?4% aL1eY`X>GZ RYYQ)qËL-Qmibp.X8\F(u9X<S4)hӘ1p4K9;#LR6yeA='I㪐P򁥧gJaqƍ]|Fr'VCK ++\ |T@aHOuޤwy窯rE \Gr/ 5 Stm)9[Hcۿ2Ffbs2R]e/w_ /cp^tUW'F⍒Fy2y߯3f"һA{p>O8ss%/Xq]9rCd9ӤVQu&s\'xwiY9Ȇ-T&uy#c*!3ӟ"|;'69Y菕L`ޏ:՚{{wpR`"2E wTrlN܄y$G(qM"BSR6ל={8fCSƤŖd d_ NS%$;Q- oCc8/1OHszH@zحI5w ˇ_mvjέ\A,ԑO>r%VQa_'ǂ\hI8/u2/ρk77UϱX Ω{qˋgӎ=d_YƂ'|[Hy2:D1tF2O.s9;*OܚGwweubNǂ;Ɏl9˖/۰^ܪ'$Ͷ9Ow^̿u\*eR Է, \+WcU^ )avϱ16@bĭl3P>9?j>vN?3؜jsdK.n|VkjE 7nIPN-5VHxA*X@ʆ$(HM xEc#%-h*2QTIOH"_ň$id+D<"Pt0)1n:.b2w\s;3Awd5ڿ땎2^o$]W,خp]ujtGbn(W֖o^pe[%5@Z 9j%bO-TʹRˏ97& *svX8-t,?.?wu/tr!=NA'm|xP< QU Iˑ9c21;ACh^R+ A_3 /}qxJ\ q_Yjk8E|ѓ7 5dˆTKJGzɦdP_$γk(Y1Bcz򀴖d]uttK~S(⡍R<{8I(m*psbIXuOW1ʶZȩ숥CVJ5i/2'U>_wH5ljan/9tm̵gsl%t}>W"Yq!wm3naȄTK>bDU\}C߿(dK~2#.ۿ6ӿ~2aR۫p"Rc_\Eyf,2E:,hBԒD\߇V"5xfe99bFce\$$xt[g Q=\r/k)>t}rVy7]ؙp0"yܳ?ǹ\t m0+sO\?p\lמY7:$ḞU6m73;x'UjSO&xAesE$ hX]p- GOoAU ׋z A̗mY4监$L-rj%aZ0%.6۽=98ВxuYy]Nб;JO@ӢizZj+ K[$;~JS! ؝NUWvɚ).R>'*s@LrQi { y#s6mOFq=}MO?4&ē|BsN7VUgpc?scJ(9eڿ뿉$VNZ/ԿA󭉇W05*]~8XyK}nH Xr{SUq_c_֯[Ov|#W1sCw2a,١C3s@\䓝\jGe.[̆g?i$cNV'7NP `I:.|2sg^DI>Q>䝓ufzG2'9ŋݭI3v߆՚\{wTB30g&/qj>J@$JmTPUXF$-l1*żC _Œc%72r1fN5X:bzkAx*О\Ww'f]EZK>:ڕJ=,ذxzbO& .*P|c?ƧBdg_nKPw/gq* N;s匿b1K1/oaO8*afJZwqWos$_\̿K/[n Ѱ^hJMyY.3r3oOw+HN!f֛=Y+ܮxO_ 7Q8oKrkk\0sBzK:OIɈ봚$D2,&S׵$H5dQ>!1Yjȵ%gjɖ }%s QE0hA~$:ˏ֊~\O5|tzH)LWI> kr2EpOms&ᶿ_VO>>~pK\[>mѮDn_ wLɈ3#xy ί߮xkbG_BДHfeUM+&Z}㑺-?&:sIj3.̉rk3}3_߲22{aW}c/dW&>Ge_Z.8p&N|rG9/?JdϚﯡ[rM9[#3o@߬Xr-g|%d_Qi=(Ud9Wpdǧ%fѺ$BJvB'$XUZ x%t[1^݁ t S/0~%\2Z[~8^^yV .r[Ky~K^K+x=4S+Cng)M%f˦7Q̕Jr]Zĉ(#w|r9-Q߻_ۮeefd k/ؒb3zG??'}&Ϙ5PT& G%ebp1ӧH̎Kb(PJ)tZ#P3fm{%Rµ}%O>oOHSyvw*aDp ?DR=c2++t~sN%ʹo̝j&4H-9N9:i̱-2۪ *sw~ C~^F++ :EQ:.Lrk5{2B$ @43dC_wEIlk& MX43@ .j!䒋tlDڲ}*gg9?=iV3)HVV34Ůk]}hbpE\:Uy4K5yw,z_0HV艝Ypo/%7\.o:r?к^sme.tY0lC˹m.us;? 󫯸w0ֶl+̝et7G 2鏋v3' .wN\vNF&vnWYq0Ss W.?YewKx+A#B\+*c|H>yt-rEq1(#-RHMyER\GiH*,ʍ4m-y^~ɪ?T ,Tde FkŋαܐJӲE)l}?EO틳Y"H>%Cr jTa#yoe{6Tҟ}bކg6ZHVVx8"5ge153)Es GJvWY^_Dt5i(Yr9oʶW=~l.r}Y6=,\_=~+s ʹge>p&q3]ۊ8z=ՋlO}$?k0~ͧ?Ɇswα\̢6Z.ia9^'P=gkC` +qC}H>8}qxgP.lNJEܾ٘{G^eXLD-2PEo$ q+eCjNl,'%q֩l?1:[3ZFkQԥj ZC3=m|"cCSxH-+vsvZ[4iK2lL7MGzO.R>z^d .m.S!pÒ9WkKٞL>nBdNy]>1a _F39rF1b%?hlDq]U~_-ڿteck۳ȕ|sU\ v?@N=IM3? 2v2ݼf$;BC̎\:近y`d}(<\ܙm`ϒIBO;H:al>Q3Cl4pGhf94%U?D9DXo7Ƞu,ֹSۼZ#DziM#'<ʃrC.7oٽG2ߎBrLFrŭAoW|'{-AkB]ґ{2:b PX**M,#= [CǀR(I vŔC{&8uiFȯEC&jʀGiB'y׽sWzXzɊKk+*5_*vǩ̹* 90!*gjO`I/zGezOX:{,g]~1iK P>^Aϼ4g >vms;OȾ~bFS_5r7Hq* Ϯw GP]?BΆM=VKJE\_ܘw$ý;ZK2$-j!ѩ9uQ6Jږ!-maM9ARh#.Z\0bY*]ݼfL6JFY#s_ݞ(c1YET<]>#9JN]\s{}nm 90Gu.?ī/%{uHHjxyk+Duh}NOx`?ɜF\Q3'k>7(XN'2)SCFΗ8lfs,b$C*l5 kD"Y:D07K҆pp2IK`pp/i|SR Mcp^) W#՘-?;sǵh-sx-j̇ǹ4L[+?p籖@rٚ2C%F{mi #Șq\Q( ep22Cۮeen{jbX3FZG_<+|z}G7M̌]y]I㳭Z`q2+ &GJY[ʹ:)5W3%)o@LnTK" 3n~oM=qAStUqU/_ѥJv{M?иk癔s"lݒ1NwjҤrA^b bd&1Q?xMڀYEp YUgKRd8TZYE昑:ٔs;?Xr 8`g62:i]ǜ+sjINẁwpOdTyE:YsVUM8\uVGN D⑅4)^wO϶?vZZ~-~,uds}Ӻ?X=ʩs>:o퉲Z^{bK^"vHqZ|\ EQ&1:D,%nKӏFuOf,!Сg "P#tA'Y\rb;HVst\$˹EΡF\)U֕-U5.t\d!㶚P17 W_yL!"T*r.i Qdv42FBHeb;%v,mMEAqh7|?Y`w>9P[il$YfHMvLhu7td< . 0cE6Hh禳)ґZq 75v(ϊC@?S?8wf~p8-˹-C\w8-#Lv~bp)YetT 9(s.zJ:"@#`f8ts;Cpt~O:w/z+F$=y#* %NzM7 u:pr,a=}vntfs"6+Ldw~_mYťXr2:aVk8J@^\2.;\:T`^)R %Aq2hT@V9J^xF1,E9.?.Wa~?9" ͏A+A׳{(y"-'mӮ&|QIa,d>eeepHhʹEBR.Er7[͝Gr)M'7v@Pv8ndkHVkb]yʥ`啧L5\2ۿʢY %#_mmdҗC>"YYa Ώ=F0iʤ2Nw|NnHޫD/a AZO6fep\x`eaH-_y__t( I4:S Q IHXj"pBhϋ4CsH0`R `"HGii`w=sM(N>¿!!|#?]T26#2Nt۞de>| ZE'f)IpF0`(dG[wLYcͧWbmtA6{} -\]:غ޳'g~Gf~}7%[DSZw~pG_" Y >[ ^x͜3P>ڄAGR|Ff#׭+3x=1{hOoT`NɇX>ڟ%(hiɑN'ڴɳΞ82,l=XAd=}&abbٻ_FY[+>EW1%smGT>,1d=RZ &˥#94h^3A3Qej JkK@%Xs'8V>J ^]|z^;Bvܺ@'Ba,k>^{DzȜ&լpggg;Ąyқx/w4c^zk%Gп$Lq^i4Z)jFy _#w0#kߨ$S&똢]JaʹHɟ3K_yŕ4 \6#?Oqm`Ϫ|S{OuW]WmvZZzc`EpMψt72fGMy$tֳu2M*W670{PC$dNɇEsk|\8z[?'35rg(7#S?ى4 3%b%؋(hEACWaY+f+y91KSkFWp֢4ҡioԧ?pHN@~RU\8u;ѕSC4|$=\ȚGq+\2~jΪ!Rq0 =Qe4gFA $ҲeFcSWybw>}S_\;#ӿB\Y_}Wutu?D<ި`s.ֿbE"O4/]?U+_.?-~-`Fd[~sm#1a8ilqV7{=gO>*I{2wW~rׁn+jQu8pJ'k*˽$c*U1ri@Oy:`9W]ٓzKz6/="k*Ia*QΗ2ғRMuVɎn#ʤG8'Y;R?eiĶ{;'?*s;_z`լ+9;.u3o K@6"ȽAjJ69Go()d$ĥ" "tt,ShIIԢ4=l~ zX~ڈˏ"Ïpx<MV&ΞV|D5l[oGen9+;^0KeH>=[K'_>Yи{Ukt NPyf?#O$o2:ovPFmJ\}&<)tO/u^k?Xwu~mD E;RTR7lPuhڕ!FrmT<ܧo\uoVɬHd)QIBod3_>Gg[ʹL~*km,jWΎ?*$:ⱟ5Ͼf Z.GքGTDά93\S^jėT LM¡`Dl.8[s{k=[WO&:妊s*s(7Y$+(Z5FG:A۪-}|9Z9Pxn%-.ܢ)LoIqCEBSD.EWn\W?GK[ 6e%Sy3tv,[RS&,߁I&kMLs|=ic*ӿY'w;vp_|gdd&RPhGɕf5sw~;^n3c^r2ttR^3;?dTv~pg;?(g6q:{.&^rC "ՋyH<"w$ jo0 Yl/|Гllyo_E~|x"bvN囓iȶ1VJgkNdM֗41bpuJEl,2];Id6T#vi-H5B sY'\4)Z)i-( rnZul\)rsZ2bO-?#5ݿ`}-*2o :Y&3om]ε/T*Hv&*+sˏ'muG>񲉏>ZZWǏ"Wd79[(O͂nlliSŅ׶u,H.nl>@EwЫ5+o8]rCrk2 l` 6x*;Odb?(6uL2eK&Ch?ACa0nI$mCǭEK m(~$QG1\~0ɏ^xg8DkفGNLNCkc-~$126 T5h9\YiT]Z z-s͞.OKeiRڑ7ac?mlˎ7,2PVJjxnv V;%ꯏ4Ν)E_꘲{# k.^xYIN{͂jImǣI?Kkq9&O9% &FNmc9sDf_+?HQ~21ޗn)g+#sfT;Z_4PI$AY_Aܪx}%ӏ @3k*GTg镫g_/<$|>[]ػgoRӒRͽyK$6dKD:پe׳W'+,zCc?IMR/}%La׽K0-$bp/B:29$S0+RNإtPYd0WG-RrД&O$Ԩ 7Ӊ˫SK& ؈ bg Zp,7$p,TNѭEikoQyjrs+;=mcM<|nfE,V?y4v%t$M8#s+t}}=UΙ]̵g9[,d/f0ҕ|˖-[#tIDATxB,V3m(Tk?3@h$4Y*+"ۿvct\kwW3QuסV2l07WuL bĀ+ U2-̳yXn1Ai5C:FdgqcAv't~!|tLt$S̆3mKqK^`;3i`0(y-m{=TW+YyEhD(Tsfz0b0/lݙ:@{k{Wmɭk5νN0d_mv$QRW'j KCCL0R^(Լ 큔r(1%(K%, K8{R-#= ŒfiڤÍܩEiw rٷCzdDbF{]b|PRRj<ۘ$ᴶ%XG<[>Ҥ%#l8IW[˽1 P2.*Dpa+'˹9V1rJ>dﰃ5gc_.v"[Hc12ŢBLYT1:Who;Xؿ{#[_C`dze$^]Lp"Po,ų)i 10stӑr#V>^ȏpSpQTj nɔ6Xʜo*swfSΙt \TbK4ķҴnѺhUϬ!rSu-{e&V&Ve̞(K#wm4D2Zy_2XPJJXiuյ$&HSzcVWv١thp|^i^_$ da6-R(&75GpɄbS%G(CZ$ 0G`&.?h[䇶X㧪:LR}DSȥb[W_o^r-y5'9hɇ)æ 95Z_*?-/穒1 {ҤI/$"@}S֑NRsJ_Y-r۝*}ų3;}=2- m?]rnm624ab<F3ty)6r|~~A3%sx Hq[kU>4Q`\5_0j9׶l|qcNlջ"uG]_Sv~32;?^웟o&ffLVY|);д9/ʹZxGj1MćG_B%H˄d;11OxW<'KGe.wY .8w~zjkƑkR$8mWqM7H5)9w7on>R(UV͕VjŃRKE*XOecфkǔ9̓o,_vc[ .8d۟ڀ%I,zW[}S-fvhs %e\Nҙ&lۨW)i()M0󃢇!;?pPVEV_&;R";?\v~Pιֱ"Y!=/.'EG|ݩMug gDjDl=:/|W7քt'N{kp_䪅z@ ?}2}o.rF5=jnW*zdLIiB!%x0w)`uKlrIh gh:hIyQzbJɾ;4?')\$ɾKlDZAc`H\9kX#w4r9#A񮸯 ɹG˥wclklp^'l_y.]5|uꃍGSy|ͺOD%AXcXo9qθ~Fa}.3`&Yɜ-Z!gh$y1KS壊c9gαQbM5pf3v8nDIZ̄|7O d+kCZp i捷v֙39ݻk=[svK,vPK[i[6D"x Rnq`Na }ӥiW*cHRθ}@1OJgLP(˿[Ҵtv);EfɄ  K@|K.lVl Mj 5D` $h]]-"e .m;tp m[}2w9ɇ2 YRW䜤˒{W}YWRɌ`*Y_dPd[ߌ7IVY=܉)Qy_ǔj&rYn=Ԍ;Z)Ifw9a䝭EGO3c*ȵCv)0fK?ta +s;uα#Νs7t\YC/$[j˄P2٠%Ws1-IH"Fr=rYdUʤ83)ܿWd2,}%6?|c=ej[`JF Fe`)#2Xp܁8p(j#`?`8$hij-ӗt } j#+Kkը.[d`h-9m9;t-ME]L<44$i,)&W>V ͆hIo!\X ȇ2Z_3n.fUwAݰԷT8P F}H4)6:K0SݿhY]j n }am5`[yO-۟ч3c8/mh5 HfR\!e@ב+c9Orx;rF; 硳BJ׌bkrv ^{ey :E1Ge#WܝO3 ZK+[YloܓiP&^f[d.,'(4 H,&OxNPdOڰgWo4-ʉ*\[U[o,9{jA>EK<[qOݾ OQ ^u#[<|%JnI ْ. wz4ٱPRi=VA~(Ǿru)qW47@w~!|,?,>c8-].W>Z|Ppںŭ >rQޖ !,"D!s[7/Ugfs3Ժ]_NxGng3Pɂk3naǔ‰4a> -Rrr^`c\7pVm;?*I|ܙD82w++swf_^yiSҴii a[Z41dx摖I_iX9[Sgk`Nrw3OJx8ivF/_[[]2 E"rԱ)V.JE΁4]$vG$@鈝5.q|GM)Y1K &d5KR,P?v7}^.DJLGE^z$KKܧcm1'IdT.zqTc:ƽ+b%o9kq>6:m :W3-Zg5UI1l*Tgk{͒vTh8qաx5[(ߵruu fDk,ni&"Sx3>[sڮ?tp?Wkߖ--)MhpY.EsqKʟ-vBr-՗Mџ9Z>$"繋 at.GHV`E9C>$Dk;nSL䎞&F\d!UY+\*brxǧAo19΢)QWwRI ~,Y‹Z䶄ۦ%=k~H,T"ŏ}A2}.E%uǖwhHɯ.Z}W&4.yQ$ VkojZ|^|Kl|,?wm~MOc$YX>xd>R!%@켽ma_i4Aή_Z'Ѣ{fG"A n}<-ԒE W$maʦMvd'V`T}8'Qz物9=uI\3;_lrǣ0>8iul1cK,x}ئH5*OuXtlck54wm xk[WT[[p$k3 gkǞF3'bS N %f4 b.9W9O{Fqێ6sDʘbQ?&v~#וrNj?Tjב΀˧o۶ikƶ?~?\=Wu\8 O/lz0o6s.*޺\oӕgp 6 :=r=1J4Aʅw,Ipڇ@RS$ͪou#ĉ/roDI3U|L$XpݚX=Z-m-YؓGKx:XjKGifzG ؓk-r.JqW1snxz/X̘񑪋..Mޭ ^w-#DJ`|זݷ,3?VfJ6mp$piNk YUcꌎ_wTy;$ao͌X%c*Zt=Ykkz.\І( >_c mi|xN&" -*:+M[G7ܧJ́I6`Y!KTp3? &L+9tt~9vlt`lo<:ly{Ieqg&WT QJzǫULPr=4^ߜSlWpa9Cz[P^hxRTZ_ǔoDu<V}a\9 o Cz9㱰ْ9}jF4\;?P2">1V;/fαC^l0?shC!\N1˽KɗHWGzV vͪ =>Kv ;%G^$, *ژ߃Yq1|>V4p=k٢.RNSxRb«Q,6=iB97׿o+UXOZ|T<̄jBu fToE4<8w*5*6aۃ&oxz;;f/( `zVܶr.cjtaV*a>b*v({z@ΚMqw5\{`rq3;?q%C8;?(ž;?l`˹˹d86󃠫n WIfWVx d &WyO/Sw&>N񝩫ko*{<N\}7Dݨtċܾ'd]e+USuV8f.Uɿj4+4OxQNZ7Ӯ6CS_.?ܕj|h yBہrIE뒀jOs"hïK13HrH>JE;6X\BɄ" e0FV|NgL{KN%tLjB܍O;hfkqV bxDAW.|mj`Q,c}պD*FxT?)U}huhfFވo<:]q My*C116dTݳE"2G}ahLzZEBT,Zc7u-Y,cI neL$a[EG~*1m_pDv0X .踶h~s8X4? =ҡ/TH$;^MT`z_`ydLHm~حdz=_R3a<~>oD@ɍ c类:3zgT$0s6D:Pb^^op/[w:Wkd2sw缏-XiOp3=YƢ Po~FsŘg2R#%QA= )FUIF1l!@]PД32,JJZ2C[~|g-vs{w,Փ WRc#4#mÊ/EieʧW-:g:70m#Ni%_#(IcYvﲲeS}hӜ>/pMdyM #E;ѽ=Oξ zfLlC[mԵW_(*P#u7t|t*?Y+f<*:lFJvpǿw^*Gx{N`w!;a]i#*X|'&wIS5u5uѪ5ۛ_8WQE<,ʚWH#(c&CSw\[.QF3QFWf@&]32J˪LDhl-J֢\iF0[ҤZ[]b4;_,-fB/aJ/vE͔B`4-yI4d+%8n[ܻ@G$rsk^]ջ;%@azۦl@1ª G=1d^rZ?dA jkm+<L%~vRF3F܎\iYrJ6hpw~#tǔ2w^9s;%ߙ~S^4pKBF{Mjn=f$ JKTjomõ`0I` . ײQxP*r򝉋'Ah3 [~?[$*DW}wUjf ǖŕwN8=Bh3Ӟ 7Fowd \E|qYk5GV nL5t()olh`t&#YkS10SrEfYrxgU_h:LN/]U>ú67J>jx_\:>le 3Eϋ$ɊXS p>x-sjOӉdW,? >?#Πv_HUZmI5#&4:r&1ňSc~^#gjv)MFb# ;r-Im G;?r-wQ.W^$:y0~{\z$C)k$Jw䫱dO/ =hݝxycĎ8@(غ(W< :[g#g‡*QI_0u7LT`,\K`hq-jQ͔yU6횳ug|‡7OZ!^ YTL xteX-˭AW-]V0M*7) M}W'I8"M%xPRiJE\fF~e?#+f{7 ӄۦ T8 ue*į Mfis7&|;>{\j y'$L4WKߒNk|xwj}i\|+mgX^h5HVZ/Y p.Eex[6.la@KG  c(W̊r mT|Ɲ|j pxQc)̶cZOSq$/*g;?H0w>mL]fLcI#m0re~,fCe~H]>H(\$~tL:2BGTuGT/X^t}8,^t7ȣR&`᪦Ŀ=: {/TJE.ii?ʖ>!v@y`S}sKK r6RqAwA9'su Wڱs_%lٰ QbʶRRSꩰEbE?+ޕ 045CV#}5~4C HqD9`ͳtWD8ؓzUN$K ]r|gsh3ma39T7~HeÊ!"sH|T-J@7fD̃O ̀L{ν|:fJfSfnV/ZH̎Rx;j\(FV?3Q'0K\@%_sMƔ;R js0ͫ``P `sI[ Fr&K'^K ޮ`##Hwg0Q䈊=#@#A\7%{d2yHCe9f&M:,;ޟLд=&R7Ψ"hn2NS/ M`6X ԌȳvZ8Jq9j" HB.l"oV. NWpI?ùXϔkђ`ŠHG N-) `w+]$+K3/?5<~آ,?/~! ᴊ`!HfS.AhO)wE\3VYDG@ʑI:^m=vF@:.l\>NuFhD,W- >6HN2`o:;{v~3qDF8f|old#]0!AX%YrL ٛqkcKG;|#ҟrD*rTݳ5sŴ*KyElLVٛoyi0ʭɺe_]00iɽ00){ȄW_L=Ixv/ίp~bL0|*'TWwxKij-:NHW0 \ slҚDK/d!j|pv1킓om+iŬf5]$:&p*֒/.R2H.xkE݈i.ϞI&օmͽmkKƽɛxKǢ[fOtck@h05nֲP>t?[=ʩgM^*e 9Z'^$}b&91GeBbJrs˻20:S6Ui (M2+ۏJ~bBiBG k0!ɚS`tRc*z~jvd9皠˿qY5Z4瞖nOC}$9AtX0.ڸ}M/Q\z&IrKw(IKKgC}S'6csW\+bXdJnEN>SaQv,G :p8rQl3{vN\H)o@GFo g뮾GG"i+8vǹfEltj9lmD`eMu6]2u•s&ͼ~ι3>4v ߑ޲n& ;E UQeoz7z#&BkDplF\`e'0Ӫٳu<=ݡZoJ_Yr'kgf-ƌW0@mĐUQ BRir)vcʔTt,}ז&vB9)S&]$j-j_'cs ZmH;,xVZW4y3qY,TTRHJzԪwTY5f)Sp WetIm:VפptNJF1߰0 l.^ )iK3ᬾDS#wxm FFnƔ1V/˧AcIG J} x6wsG )ùGG.WO=mBlGlUx|,?Tpnm:dx0M$;?]~]rg}$CzR_?@/ ^E-_od! {&^hskν2qGK^J;]>:{o΄$0\= ˗VA:}$Ay~Z{)r"(r1?4[]w_VȢAG|ġzwݒi|Y:Z,ES>"x>NjInMXGV}cO.w9Hs.U'^>aϐmѮP=nX=MNu'6><5K={EDd fGt@p-"P[ykY#u1))ECʧw\t8gTq}06x$:[gLVI: m_R.tu7aew%RFL6V߶lْZUAU!`:ƺRlcGftv_9mSǵv~Pu&rns2Ze.eڢr.d/d\er]tڸ挽œSf^EL-?ԓ:3Uյ9Y?wG= gv1GMȜquI IuHFaQV$1Gny#^Ri>?x/6%s"Xj׫$3Kj.ZHD.U|Wh)[)  P$eW .f(ˏ֢\ٺvn쏱 /7tމOX~-2غvn@UQbu rjzpلpex$S޶W'7kSuE?{Nj|që_6_W^ۥHt e__T|_}ک؟cC'5W6ZFaU3yHV0hu<SV'fo`@]qE=E޳[d )MA 'o҇uJd0F NےZ( n-~Ij;۷z˲ު`Mx+FLsxbtg`9E^?Kֶ{mODp^'VS:f97G@0$Z>IRyyG4rwSL\HѶN[~ܑ&ccJG r.ِEӮ#L:\Bċ oqvˏsq9W~2#?rs)7@Gky8c*InAޕӸX_AvgϮ7 CKE#Rplʋv ~g6 jkkxwH%l%pn Pܳ6.g5 =]֢a;KS3ƌ4Eط6i6>=HѴʠ`e׏fP"(;2 ޳[[4_B8{l2-W3X=xa YE#F8c+a\0@XYKSY@3Yb4ec&bvʘPӑc Œsp>^Hz2~3s|G#GgWgsǀym߶< +G`Jg,π7 v0'~p"7CͿj?|oZWZ^JN1wq >L~{sNs5VS[nQ NCF0-YQKztE?0gbYgϘ|>]s8~)Xٓs{yŭ6n(o4d!L~&L+ϱ@;"9UGWNmXt*AdɗM :{5__$8\Uc5iv:7;jZ N{h~~dqwBgW;6/^wM5ϏfTr˘)fvjQΕfcؑK%ޗ~kVs^ yǮ`# sw~}<pa̶L^X$b]H֧4ڎ[EV n<[_ieǙSO.<( Ny ȍ9Ӱ@y}i$cNJ6 Gj¬fN1>Ͷn۪1QS>0&< C|juq=i5p{l3 y=PFra:u?Ӳ}Z{":E'\ɠY&cini&7OrUyT3r>t|U4[Lx4:.ߎ"qiHGKGqx߈d4_j,OCLp ϰ9-Z`!C>$إ #j}Y4+ՅEEέrE$J rf%q j'`b eʛ2mr),X% [eql įc[X[myaA- 1Y'|X& 1e+Ӗ4MXmГf+zl[f}&-KB,Ջ;?sm.w][_z{s\+Y!~Hܽq=U{ NqWDJ ȐS5 T\Bc]dԿ,VdeD%9+"_bo6\087.۶.ɠz~GNfa)e9Z:*?_D,e'lL˾\Ms8ǯH*7XuQsc'vg_tQZ~ $STljӿ~|g1K5`QAd5%j-A w %()+[Rc,q Z ^Q< A*$ l-J֢t^rwg(MY_&j-J|܅9pJWyUs|A-yەW>ʹO>BV|szѣD1J>'rz~֦Q5ŦxGŚ5g:X bЇ݌3YƈApY4jF07`ruၬyI?D.1%8i;$o8$4Y$99GV ֈƑ||ӚϭRK@jQ_frAGsi~1ېݝikq9ty:r^My4 45 f*(CN4sB9۶2yc9׬᪂xL>AsKt>;m`/zC9{ ;@ᚙ[Lڧ0&2cB՟yشJ/ oz! Ko<a +l&Tmwj-$,Vn^Ad*7Щ>}WOjCNr ȡYgՒJS`MI^j-Z2crlIZrQ,MǏs5A1!bϏy~X~ ɖ+yiᓾ~[Avtї@l}ezS g%ku.Us3Ǐ?B.$+7%b^%åP*o%[6{&Mt)֘Loy)wRUeG_+_ĉͽ`}>s:Պe8 NJW 0!G))eXi8+q$dJèE,zbp%L<ξj9&K9/M&45xe+pPϭ9W12˹ M+Ldк\w+n,\1#1sEsѺO3[ݱ+@=gX 9Yj}qH{&TⅮ;r *yM/lrȾrlV} oSKsJ1X,($1wՇӑ/6;l[GNnQNդ٩=}MO,gL'ʇd%S# eeNϔU*Ɋ|D1N*Fe0,ʠY .I'hu.&ry k3OoR7oI]Q|yʃE~4,0KG9W .Dh~бh]yl͝sm|#:2-,u4$P )r4"o4)|ҩ3[mbЛ7w[.7H:L䚰}"\GB:t9c-^昫q5D(?s%j5ICJ-1}K=JgN綦_tLh9gg3 ZWO{k]&OXq==rEp~!7zϞ=[.EҺ\=iX9<+ rnۢLާ?u{&.T@i>)mbYME3y8QwCY{ +C qKg=̹mIRm,(S=R][Dhu[K-Z(o[n(@~z2isq뭷D9'b]-UdѲ\gYIE:T5w VWWcfC$ʾR֪$c)[@9M3t)iMS/1x(@t%H-4ûr1~tsZnmA,ӯ^~f˹ C4}|$eGQpt^ Tm]9o_o-wwW~|s'Zzh%udBSd}fC_47ʅ0?GtT_Znì)zϚ=']T]=th5K)u[+v/ gD}CidV 'jK cP$8J*.V@?CdK$ yTpJfa}t34i,|:a9qL-RJ3TE]¹.w4Y|FU&ObZ~~d9ܜa]~ܶ?|~w/6+Ǐ_)Ȩ6to}unN#5ͺ~Vl(i./ r=d!&4&%։"_< Z-LpF١C. ~?Um1ȩ^C.qn w7y;Zwp^䀤\fimʹI_)cz_y sO^L/'LiJFnSqi3 eZ,M[fSpΓ*.{˹\]rnۮg?`}5ܿxMxSɥ)ܹGiUuoDyܴ"3P.._6~lUUT|epk<ǟhn_G:y6kO^m2?dca TglOo{3'QND\q$uC)NɚYL՘zjʭp!D.eJr҅HoTLzVĆ)6f,Jby]i w7t$-&q2tjj+VuE/۵7Q=Z9茙] =z\L2x:+8`wŽ+n[8lsl=,qq%|̉-byQ&}qt܌գ.jpIn`(蔇 yMt'pc?RoM%Rk~u3cXٟs6ۂg7<{Q5?XڟbqdƃRzޕ,TM>s͜>MI.%eUI6r`OVh- M[ ,MZ\~xEI3}AQ~esϾrϏ$| .?DM}ǗyT׾v֧IGfJ"Rʕeڐ+GFk_v0)Ozn|<4ބ'{8rk}K5@{1Iܺ ٕ뜧.mo|Ƈ j 5evS$+$zduqE)^ɊwE= p ]Rjz .I9JwRXbGq9dqHR0@Z$"+8t.KGK@6WdY~$:h :"\Ω\'iWa%~3&ti>Y{xSO ]U")E@$[#C3gp3b%XA(Pvy cj'}fW='`ڛ_t;blzfSptusӿsb^ t7($}o&Ls,]ƱrO!-bɔI)s$.G @$$Yŧ,uwd:,O[JL4҄"%GeJRJMC>l17}Iᆇc4/#l,瘔4WhmˋwӎG0 lqyd$*FVz6. wwgnd涔Sg6MN1B6)1_l</6g >_.c@۩ݜ>H<')ioǘYR2ےcybʔ&mf]@וyY~ smbX 5qNfVmK<oҼ@pD&)JꮷY+Rq&_,*We%}&_L0+{+mQM/M[>x$K5y5jj2vAኟ;uV?] s?18(lXV8qJȲpa7\kO|K@u(&Ofֿѿ,JWkмPk쐘͕l#\:b1>]vܺ,M%y NXc;c$ >.-%a~dyϓ#랞9ME?SO>e c'vA&[nIQ:"8R$1wՇS O͋\3һ\䔃*b= +:p +gO3j/N/xc`ZdYiɆ5X)w4G>Dn5jhL"3͌=%fvZۡZZ#뮻fxc>"Y1ҥ_Zz'߂ yYsfq3-yK^i 5_,[r־`͢N{\K||zAQ:ȟ%q+/_0P/oЉ] 9 m+\{1 ]Q?ۈK>$r8,HVZx3rTj +#GuwcwՒb8iO3~p}Zqs~z2Y~$۶FJ_[t>sj,֧F?VĞh߶Q"|o\'Ý W}8?Џq5mZ>rWoZ?#5 j|nCm-7 y p۹hFٷ]33&eAz&Y;IF$%KWb0Vtu=Sk~X:]:gc1߶ M0T邆 ^:Bu]ZO:Kzwy˂b8B4[@[.[#͔[2Qåp~uk:Ɇ).|m/`ᠿx @d˒ O Wp-/܁4 l6eYYl8adI]soM-so-WZ=^s >eiWMkoGN'PK유('hǜl sTWV…ܪo\apIK*Ӈ[ U>3KoN[dȥ TΝg9^[U3a $G %<`K7eTg*w]P:O$5CC6$YȞNw<ҩmEWJ$ 3'$K('dL%vvoҞ> ܫ! ۲73Ӣ]$^+J>PϖiȻTH{wQr6I+~S^jjgCGƜ]q>oK%[Z9gcK#aP<~S9sD9wJ,RJZbHܽq^s›!ZW}8Ny+9E/2718"]%[ / ʰd}Kt7k'kcJ|(e}[rVzomd96ѽ%@N>A9WZ_lë)Z>ZXc̋IM,՜[ sv899w[N '>%OL V_Nt_nv|(4)-2mtl{M":I޷17k?8×?:=v8˿|086T|Jb=qBq[bD@i>{ {Y?䴗z _"yv?׍I-06U'Q1GO \=StJZ=͜=~ZN\Ovsdj~f5l ' u>iT/4ۋLKInсK59UK5ʡӝ;XP':,1tKZ]t3i߮n/set 8i}EiTe',Ȝ!SА4lqT;^Î;}<'$ :8$P>:hJ= j8HPʦ/Sʗ n*`K, +S6gY1Xg,x&[!{qeAy;0>' \r<$RDlvٺwM My`2$@orJ;։ԬH6BjN Mo!kJQ-pƬnѾ޾ޘ P|4uQzu9f., 5P(>;=/ i?z|:_}9 wTilPyRswf 2N'U-B7}E@@)+abKUMԗHZ]|XdS;^iibw8/B!B=UG6CV4E4~¢VP]se]]][P֗[uSk9F(踆q\qO.c.9 ++;_8USF;8+ʘs]ezY݅ q~7! +ܗaOW5zu8&ɻI*vƽ[lR@zdYOۼØς{wF?6QOHoٺ5c9yygo:*rndȷNϷ>wUNMӬ3~='}ȵk3'ƄN(QԜ]Ӷ-~oІz7|~[oUgx{4o'Ll7c)1ՇCuȞ}{ÜxU#zG+F Thn+JU:: +)PW[Ǔd2)%GVz}W'СFLRKJMgU9s&Ow.|O:sy P)4J\pZa .fz׳"+wKڌdQn˽]U HںFo3YKj\?M(T3{Кu,o3Gk< UƉ_\3X^ps%76~XL7ζ~1$Ӈz@xc(&R Y3̓:=Ҁ+~yTDwp `sorcYXZ@Y?`梗Rl9w0f)v~'X0so>Ӳ P u2ICVXJS}uegliYzb9 pXNm+YO=~kf1ɭ_,ʮuAk[c0xBVlW"LO KYP^IINsC,-\p=buksiWMk8ӛӬ&dnXJXz{rŋݳllXU^zUzKxwwȲ հ*˕HbD1\5/Au9nD*attvgxTXitwwWG?]WiQLLPup|M8N?i CƝ5~IV% 鳒_tktE-5_4wi{W'𘰝{zz&2âp ,OmiT'<9?K5)PgC!j|^ndqzUQ^[ M}5U5y6wm|,Q^-Q?2;kduŌNHs TZQ,jdUe%YS]Wk(ɲRhY9RkZ.x<$5+^f? 16 侤֢ؒ9Ms=k Wo]ۭߊpgy xbcå t"_uN$MzRLUTLlC \(.^|F&D,.( 1-Z>:?;UVCVK5<ѩhЖ`wL[V">¦i%};s^G0UYLs0Y 929Rί<]c7՝0b1 w)û|uFd;"SҖG?5cj4ήé'\RΩZ8XDf_?]Kbilc~V"[!|J(y4*xakEob,gV!ŷ%?v/,ս?6FVVT{y{{V%v]/ ᴭcv͏#u1dBbr t*wId:IHD^%B:A'e$ ̻tx]:nHKjO@܈+?Ҕ*Y~|kqM}bwbW>M/ giD:}t>}x BùOۦI1UdK-vǧE@eeeێcOΩ\ 'wSuXMj^2,Ս2V/ZTL_x;u8b`x7m'6KX9ʙ]/yA8|81  /-e>(P;yGWG3XΡI["ENz5ފoxǏ՜SPphui>u%t-3)noxR cs"|[a|\WwUUvd8}O4/|Zi#b^ Nfg\v,cSʲTa,e2K w7ޯ+neRnn3f0#Zv+M:sKǹ39Sug-o MTLJg5*Kt2V;*I?'j;^|e| l0׏Ealayf~rW*P#jjm-YB xhr AP~&Q( m?ɹJ%rz*VA1eSFApfHP/3д !4LLa֢t&2lEFҐPuESDӝBS8wqJ3ǖ ׆I#Yog`8t>:hRjs1|\RY3(+m&yqXZ4&`Ƹsw%Orͳ1ةIt;Z;w*{wi>*X"@U}][esӊʔ22iiK1,k6ֿmݦь%顴U?6=&n\P}eųfβ|e#>R`&mEF 7p㰄T5ح=C,mAY5fBh& ڬ4@degqcмyp/7 %/ ǁ>J'+C@qbKbʦFo}wJBZ%[~凶p۝Ib68(qq#7mq`CǹO>ZrU&,-dW Ny>UٹObnFxeoDE4׏$[߰{1{>8=:POgN-՜q0+ *K5€G;%|_ufS]5D,-d&dAГDYU* tC׳i6666 2_,?JRB,bԈXkIHpqsւO5 Iupt%\uu:ypJKi2ҶpZ M6 n?(xCGB:Ю\cTΫGWR헏Cr^s^ͼϛxDP7Y{S;qxIz#zc&)Z!Nr ٝSq(_m#ee'qi>ݧcp DoV9{2<,> -i0)Oc=ކ:rߴ/) OМ)o=vХzWns2,ٖ [ p0gt?]wu`q C-ٶ1VC,[ܔsxVDlܵ,ZJA,H,jepǛD))?XXݵ[ PSk)\k+s%A9m;̮4m-qtޑs rfcw}W3VʩW43˹%:o"Y2kd? 7?uF^{\Z'SU]i m۶lt)֥XI 01lzjR򒢲`9%OLǪv?m=U?0,(µR-^ÜN ,YV>ĭ|dzg]XAHrrogKalt,˃d6fd^~{N$9q!j~ՒvbY3f=WZRA8]/K+:%m_$gPj j ?rkở-0YɇzvX1My?g ?D eϏsHwqkH:@A7}&PH2?M=z[M t ]FWĶ?w7xz[Ǔܰ#ɭд᱕DlGqWS8)XiQ ?v-Q_Ur#?V),j2Zy<xbQŀ-散UױXp).B >@-^UC 0U`2hD#uUM12ʑLsn96il[Yta$+zSrnRD5/'lfޥjpk.ǵɪMIyb2QͼK(IKGJGbEIX0\sInhjmsRJG=޵QŅ- Nge().{F>>5GJO9g͏pgc3%ռ-  ?_T|3٭ҎddC -h8R\:t?W3Sݱ ?pR:[]yH@>YӻUDh .7v;%wcZ;ݓٽT jGB5_7I8[p{O)~~t.CO*X ^vO/\~p7QzUt,=/11QѨ2d&'B)iX*'W?v3XY$+npeK /AقN'?jyMͻITq5Cmђ +%T˴bpɝ.4bpY,zk-ǹpd㢇+-"se$X>HuTz}DN8R_Wr-{kβ±UT2p.`MЫ o* KҒ%ٳ-gRg9[yVsFϱk U:[/R#@DNַg[u|ש֏=d|_KCA pj;PrXFSZ +O.7\NH4IW^;.<1jM/5['Rr%$LBX ےwM-CEK ?^?c>~mZ2m}>??ᇲjV>q.O*i9hm/(P8&X7G%-Ak-^; B`6@"Exs>5˞O,/a(JKuQb*:b DX*1==OJE*--'iםsyۿ޷*'mJɂbrwϧ~8UKr?k_[T RMa昶t$=nqDg,p  1KoP,|IQ+yXqE'U@c7>Qd鸵jKr"p>[pZcth&6Q]ʹ)sSshs|rXm|lǻ #z4 j&c t  Fdy6TD`e;^G4|̶L|] 8n\3o&}JѓeR^ \yF[.\.X]3m̖/oDqK=cC!>]R6-پNdfe(yP\]2>m'! f[lrʐn,X!45[\ZS< e.L drsʐS2Pr˹KS(=qf8)prmmW+V]=m-kݎ##2P3YtC\c6 D6A/X+O2wXZ6aͩw<1Tl8}͏7lx;ޙA=)^,oQׇ@'MEs%8Q~_[R_İQ\c8Gҡy=,ս?6̩:YC.2*[clR}~TBKc&gy6U(=Ce d4WQɪdPΩ-%S)e7 (pw%֢8ZZrL[R,?]s??ٶK[i8ùyˏǏO>t84}O}W6j/X9MI57'LZ,a:vu,$[B92ghsQ&@G:V#lD[7,_iߺnKIV>%/"һIE Rw@Rf.53*pL# ĺM'cY2]_JDJtԆђ.Kd= HpwSغoyw/"Y(LP"G)~O8g ,QF<#4@"Yɯ!M2$I<3 J\fVx|P:. 4r1UEhdUHVS.ER:~e,mbp]>uT .#׶X .xrùt\ .  .+?[Ω*ĝ[/KEK7"}p*YQ3&9WN.x-q"QU9w?iE=i5#p뮆ʞ8I[,!.= ƕ5د)g~NWy@7}8_7vm^{ctؘSZ@hW-H8K)x6ViޛC}p:mCkƿTrjC~ Ku|Ȫ?inӚ\P7._Dw⢆|~Xz طw̿#PpsHK@[z?]CU3[ݪ9JW+A rS"G#X1|0MXdS$+b#%VkHnxAbp vV.L\,>$+d0 mKy\9Eɉ6J$'~׶X .jT(5]0bp\0d1\F}apc=La]. W8;i|^ֳ?PSsFeddf$H9,;0|{{$AOU^W;zjoPBSoz{(0 }w]!kße^ǟǟ(\kp _Yhv>Vn6=Ӯ'S.hɑe kfjP Nd)jE+hƬ]'W"YYt,,ʢQY$+uR*9z-@1t̻6?c1,?~~p sS[6[`p cQPޣݶ%j轵sESq=,ӷ+؟o#C͸Uv:o|*t;PP3R$sO2*eۚշ661ܩZf$YRr7͌*'7^=.ք K'~z@j}!Y7p$y` /fv7UNٞp8\LDϏvIbz%#A''dCelPt_)CIIBHUp#h2]|@Zs35IֆTTCS) 4yª%ikٶ(-s M"uX%yiKA(1mdT;".i+\ғ]R]V,7Dk65Ng^7M8#ki]wp ~ɔ"{kXxModomm%Y;~KBBIDZ3=<+^]Mݺ'Yr tqXjo۾M$z$-oSA^77Ufg=r3K?尿|K5ukJےIZ3sђ~~L/XIj$5kT4n&Ϩn:Ig<瞭3\u7pyBu6zl'ln%,{(4VT*tT$P{U^}|Ő傖(d$sL)a.AˤO~쐹jڲ(xafYqĞmDNv,եq[_>Ze=|565܌&2[rtSGk.Xͻ65v]ͤ ̵jI\f)ƎIkEy•&m lXm[4w7圪m[-˹\cY4Or ƹX΅̛#so2wN|Odj[̒=uM3jgo͗wUwef3f dA`,%6&7TQBMZJ%5}Ֆ(k_/iBfեYtLcfN{_̙3 *tz2=׹:{>24reÞ߭]T ĮuF f.ypG6s) ]/rߦӟ^quTӭjjpI_^6Wϻ= l*{LkKH(4d%ff3FGj&[iUՑp܈\Tit _ gg~~<4e5SGDj#3R̕?\/o?Ov|>eHxIy.RK=M;a7g[umkՆo<OkZ(3j˒?35'{WTfkD kU?'_ [uphwtߪ_&Gsp DC1:cKp8a|Tu7ګKlnEKKMkno4toj]nwz\b:9w]ss(yu^fUƹ_>mJν|<*\k9cg߭燽lHCʼ͐&jK$͜593_ϼ juן^߀V5Ϡ_ %U/Ԫ=+/Lmyv m[ɸmM sV3F۶lZjOho.2MNTg*ױ?U_᧣Ǟ^Z ?of\MX*6t8t$]4OA>J/?ܭɞA> Gp'\%PK,sP*6EcC f0aS sre [>s ame[m^e~~Yyb%$Zo6[][R:'VfH7. qC7GVӛ vnUSWONN/t'+?SL[={2fݮ]kK1k5Va [6`c*#n,Kwv)ۅbh1Ф?=PK.j~*/e~ ?DѫE*+RO|td}8F=fdzy2\xEcI77-J83n&}*N D8E> V Ǭ\y6z-~yԚ@'gF:LuӾFkHjԦ.iQI5U]l7lw목|}ln =V+{XշICzܑJ _5?%ynm0}!wa\JZSEI=_2hZ|C+M%Ki޹XjE\ &mwc~u0>4M-N3 #A6Wl ]zTt^y*))>g&:?ʏ]Mzy.~gʼ\3F$|9)sw5\Ee|TgHI9TSMx[<?**ϕh7Tq1@X^I?Z /;q,l2cADX*X'4~r:4-cUV,KS[mkdBB 3Dr:ZЂ@m>pH u< %VDrQ 1fávdO4מּ*n^R?Z`u>juݭ@cgQ3uv̏hF&VZ`;mbU+͵6%Ɖ=+nWzt4N1TU-?[\[U<7qfxth[:qt ^\r}HVJNj[{W`A :\3Zz,K@ёj8VYqVɝ'wO9e(KU'MC v:EbvY6hŪ#lM*?}qkZ<)'m->?@z٤v)uC%Ŗu.xFGGaygWg޿}9Xy1k__vPz-O<˾vsb6l?ت=))4?jU|u]wg3N  ȪMY>` L't"Y bo .p#AR$+E2uA[x`LB`pyWQeK:F*5??:<~0 Yˏ5]>:ҏ&C~ .=d>]>2N^ޛ+Ho<[\wuoX6L>?̻A=;7lHxڛn# TƒvD0| nKŚ_o|~@0~}j .̖^fto&:uFOz!mGGy>O5鬬p?deCoYO߱Q'ƿM+ց>PG м~OU تҸO*]P|m TG6%ۺwe|:\X9WU>s2WqW|b1ZFX. KmPK{;,/9kDq}{}.vo^WY^~*KZ )td4HQp7A d&Q3L\ѠlZrIgP|Qzԝ>?!(rkK{GUzsεki%3|{`pno/|W7ڪGs_w} 'Ūnmgu,ޤ(5/{>yy$K#ӥsjo,/nO>]8X6$Q4r3ϩqsȵ`ɸ=}L]ϼTh4 s/S]9 X\*HI9ʔ7ZY5|YuSF>~%fRkEVt+#/ɓnPO#dz^ϐ|'];gc29䅼8Mo]WrJ5[5 /l8^f[=N#_f ;S#=I3OR\8;25x8^3ѡj`Lo=: 3ۻuƛ[~`YG6p7%>;GsuZ hd6m߶E]xEGY=i~lqkKX9ϡY:Zb?'icrz…”ٱH'zV7 SH,K}\sIkǛˬ0|<~mn%^zu7Α*~Z|#9sF Z+^~5%4G# xr/F~_e'yq`kh}ىb2.sJ`*hMMXA{r< j:979''~gD b|öZ8no}M7\%sۓ$d'[Iڇo W7 Lu,э;[?~u~8i~(xm<ھuK!O^1~M7(k<hY!;}DnVM!P3y&X`V;+H8Kh~_[-[_+ױq'*LƄeMt$Iܶ2)ERt, 5ӑr`t$4I[ 1)$;8Mn6qH,3Z]A-)?n6a &8_Kᇹ(Ǐϫ| ֬9z#uKijVÊUDenqc[Gΰl .$?Nh:=w~xzW+ۡ?"~j`0sWyF'gZ-[uZ=sFⶵ@5| X"mW*8H+\ e/<9Ĺ\9we4si_бt>=n3EӤXkC7t`8mOvt$.ZBW%Sx^pDV<,c u}zd+/yōw/uߺR]&9?o[ޟrK (/=>Vs^)FmZ&bqCNwܡ_?^/y%d_l٪eKS ?ֲPP *@b⽜ʱ~;M}ͦGz*5&NoF|yddqq=U>0W8=n$2)=l'0DQL)24}vhC1f'O8 ő3\f ?$[UH)?$8+o\ͷ.fc ko#,V]ߪ;H_K/}.pq_)狼 et$4O7=XMkҙ&]5,ӽku[mP 'ׅl js;^Ys:KSy]K 4o>JM0Gs.,bq(>YW=&ëB X&B9өɬ<4x%|Vzs:2&X,U$U\9GVd}WF xrξ/ hqd?`."x\:m_2gOزd='5]-CaI cfuOfl"Q\5gZL?;zJg~c48Ʋ#F۪ $]^NvIUXllǭ~90n M.ejo/E:X,#n芭 ^qUܱu׆ҋgߪ: s`]D4Ai.0n)}x׮V:jt/=>jI3yvwF^+uvuMゥ',z"Y16oތLn6mFpDE #.IJmiJdPh"mH0or* 2g8a>}!K1T c{,cf+HV?r02gqH^u*g$3O-\, `Cӛǹ_>ܽ9gA5cdgZf.-ΌQ#O>ҪB>tF;V9Z"*s?~(⩼.rt:n'*YT{#Y_j\')_hڢ? FlH\zi*rN28iO|:4;[b[kjym[üt.ʏvC>x f+'2V>),B-OW!NL4ᇟdSOq݊,N;uw0#r(ѥ@9G>-\<9~V LA U>pΫ3WQQG""IΙ r%R\D"g 59@>ꁐx˺zMߵo]~ͺ%+DSv;aZ&wKץ_Mk{V\֭}COTOg@ 5rvp>n'0A-:,t2@Zg+b[S0SWoD9VԊgZ(kU3Kl=XKI `LRBQFb1[pUt,?e] QE=߬)ff׿s=V)t*c\~$+`%0+!YzssmM s)~T>*sLeH_yc< .8W~8/[-XuEi8=CC5 f(dgF.lY"{ =;t%u&b"L, Ep`تy,㠇D8ׄAN>Ŷxzfmm 5 h2kJL~YWj3k QO)2ߊ v{fܪ1njP`lxφzKpW[HG"^K\לOW!ӞO󒑒gd?YiGR4JS]ZeJsWF&\?:ǏrXJځZ~t.>M2Tʬgcf]˹%Y{WF>̫'sw4aοSIZO>:=~8Os?4.-fYd:$5^(=11^ߙ NA.WQr*U߭OW\躮 ~rTf(Oz7sb͘k:?zL=躾V7U祁jֿuZ׸)0? ;}CXP[ #U@R#^hMkmI-NJ"abQƘmXޱBcfU$ɣ#? *Js(;@f_E9DP0&/y}̛4k4u.^ݛLp~*)%P#ujf Ѐ2oz"Ι㭬ǹ=׬_>}ڴ}Bߛ\z}<O'6yhQ5]K_jOہd!/:t\\abI";O3pk/^=>{I|Ufe.$h Jsl{7!aj 0Yn^ fiX<_oWSX!H_cֈ6E,P |Ա1ҵ*nR:YEǏ+ƔOn%_ɸsYKnO(LcOkIPֶ*4I-X1Bsx<'k*JSU+lP˹Iݷo zNNoEj8g.%r^K]J\T>N rr?:?"s|*\4*`0j8Wzܳ塯=$V|\`s?\/sfuCbDjVRkRӗZr׬Ot^{Å/ b%\L⃃#V;ĮDx|yg?077bv[<~#M&27YmwYO퓕b ]O ;o$V}$ųSgz]NpQ}m sSmFҦG%0$MnerGZfdLb$XNs#JFp~ɩ*I*mUO{VS^/]Yd^ùӕS\֫"əG9.MǦ}nlkC)%.{F3O߭O_^6 q㍔ =. /OJ=HjjW܁s*EPimձ: 22սW: Y10 ˒'K)R'E=]~'8RCR$+(Jcp)hzE>=$+6*J"['C"TG'*c?{j68r-z\pyLqN:kE2tt.a`pTTX )܏֥tV`pɵj8sl2ϪޱcJ1圭WWA<:a޺{a~Ux\WKC3/O@8>0,nvBtM7r3oSw/x3lݤ~T2*7mr_Kg6Qofޟ2SM9?=ԫ̣Vjt2G_$c9(Upl]=ceVџ#9y ]~p\?Ǔ+s3sUa'o8rW5p9 ħ2W4W+s)ܝfC#n` 8/AYo_'zp+!)^\:=Vzz՛gFnmxfcX 3މ]hC,˗o6Z4c{Z1uR&]y9sJ)w${[$s~Xv#%VMLw~ 2I͎M*~V392ͺ@v4Kړ*w׺q.!l悬㬮y>IGe^#If".be&oVڞ@jܧs\bU{vW)s^#)̬?P⧞Az.hi9t7/D/P±)W* 8oxNScqg߱[uvO'͹gA:N:St#o>wSoY}xwww xXxJp-Sr^W|/UfE$D`#?X'e^*y+;]>Ut2:9]Ge+;(Gel<rk皛oYS:5E: 'g遉 =PP9M2q55<>([c5ҩ4%;::d\*cae!5ZݤOaخ>bgerFb6 .Q"Lp!!<:ZU>2&X]~(E[t_\_zAcgʼ U לE3塇1/bLh.zCs#~QzB=:r: .UxO#/ O=, (܍x7t~>53G LLioH,J:P+ Ϙ˗[JX2Άmeǃِ6#&q ZM)R3YL.l[WHawZқLĻ^3:2Ie3Iylc6.6ݚQPF۴ozl|FXcHU:V҉9'JliFUCy8'l58sBFEbGMGb޵y{ Ҧ;zmrN+Vq?AY0cFϻv\+{J\9AxO31oQ\KHfc~!E*߻č%*<ǢGMZOllk9[&sA>5s){*U+̽UG-Xt^ G9?Lfr%6yǭ+} ;wM7t}Q@c*0w}}~޻7_y/Z<'K!,pBq'ȹq"6Zpyh&,1綄Ύ6I'~A2'J/~COeKV)8pF .eNJ w}t ^<ϧ܆B}߮8ᏛuVba #efiJWW(kwﻈNGjZg:qbER'żҸ''c]QjC(L"G)Q*9Qdt+&#W1GjNJd+?tHVJgGd-\}dCKO>ckOy1TVC^凹x*YKhfK{s`I?GZ桇!0H㡫)*so=0Ԡd Gà@TЩ-DS_ϣY§ }ohhp` 5]lrI+Fτ4V|"gBx?҃5ZH#Ƅ1h6b|9ZbKudaX/N!b WmSۚϞϯOXt =ph;8|ioxln?#njXi\dQ?}8'dֳ) $bB~Yg,YvHŐ%pƌӶU:?Io}GSb*t-:TqO7#R\<?Gr_zXl8?~sY{XNS1|ugǪt-4 ?kQL0'+<Ӵ:Y({:_}*_xRl `n~斖;/۳ءc[rˆ'JbqVF}1i㧿&BlWS>.:CSΝFxi %ta3Ss^ڵ-ܞξ+:bU^-Br\e3QӄY{?})!UwB9ezR&"NN;Q*s|$\^FrU[56p*-S*i֕e=ΙZV/ѕm?J[8>2cN|h~9pG?rƍdMpkW[˗wXMYD8H{4 ڂւȯC81Dή }_]:U#Q5WT:pԢ2X4 Jtjlw^so^p)]/[uM_E<8oG|p_ jүչ_w}SUjU7~jJ e]=77v~WҙwLO{{;:fǫ(?+ZFdYŏ䱤ݭuZS*5s]Q6t{UùL-\czy+@$:n47,߸q pcko~nZTġ7v 7@B]^u]op6ޛP"LN`APl-a_6v('_AʓcxKGKJ*=f4WOGiᇖTT~ztxl(*3:zr9;yy\8_x+v遭cӛط]:9Gnm#670ז޻6iF'sڷ%\Ǘ~17 B>|ۃ"Y%OJhK1PdtJWЖ0tK9i5ꍑ-"W+hiA2\IP0. .r.ZI[K?w;q.}NxHVXʳbp)޵>rxdG^.YFzUvꖸA*ye.r]K9kHEB@{1@ X 犚˵ZCw}%^2T6`c9Wk@3,sR:G*VaÔsi/Ztf5W Ge@#/=0v/$UЗ;A7;?ޕ]˂ T(H;D(arKDX0Hʯ=1_ hXn3Q+֧4Xi #9"u97X^u~Q>_.] ?3#n gAm.lrQr1kM&%;HꌗuW"YagxQ+Řt\:\?iIl .~Ajt k6T .`ps1]-E+c)?ǹO{=򿭔o]+#q1T>ʹLt.K?2t\~|\v(8̠Gƒվ+zaQ~@Bб|aN[w*Os  G1@&tOe];#LX-0[7)smEǫׯ~=wmq}˓/X4=F5[o [k;pA(M: *WX+E>qk{qUkĞod 7H{96 l_[ o㿺3xάluny{@ $4\7\?C$PHMD粍yZ$F;i)rB4dŘ&T<(O)t ?r(Y]QM~ x㛕o\i! Ռ|<~<$+JF>:G?zYw= )BʶV8GbzՕ\<{xa5|ZyՁ㧮jO Pݻw~E/ٳ'@9ȍuTdn8W\Y3' j?fes_ҹ䑽pQ@ʛwftzc~g;  \w~ݭVϊ[;Fۉ$f$(8qV+i\W"#9nUv3Qgu +Dg㿢O It~^{򼚧#>/HD2k=\ѩ7#>VA%i4UΛ׮o{j۟}|r~vY?}ez3ղs6(zq%p{zkYǺ"kmj%R&~U %E򜖌?>\ޯzc]~5HMQ(xSt!nvKF0ЙBh8aEҫ(Mp+:(MuztG眼bȤYQ?୷4ۼ|J!Y|\7YdfuT4Ek yOܿ6}ek2GjVFT|@T>wk]~ݙC_y߿rpppwʫV&I~t`vXstYU"ҡ>ӭ2ee~(PKv:ܮgAGz;#{ :F>Õ׭;>UwZ, [*Xgo>XOo Na1t~z3OZq49dy}t=`gdK[e^ȉ+dX3RܹTO ZG:L<၀ps#Ɋ/e<Ը#^hnTy8wf\ v?mm:?*x8dFԫSʹٛ8gH\@\e]~ Ws^#Z[zCv+#r$g0q{4Gu@9dK ǹ"yOQ\F֕OK-A8pBYzVy/}m#)sK۷nٺ<,nDEBĔQYY]- Wӂ;# ;bʱ)Q9q\X!2#?+ytHi-bĥ| '?0BAXmGޏ{e*q9Jb~噧oz-{kh_r%R3 m[yׯ#Rbg{QTlpˉc)WZ:zeFr,Y$?|ˉ8=$47JM34#؜8äI/.8>HyHၤK?#Ϗፁ+4YT&nۓ^_FX'<'ҹW]~S懹4ʜjAzWw^xHRkǥgzED2t#m+9)P[os?|ήOQ=~ꏟOjgIג0e{G>y-F6{>yOD٭6Pz$P^8ޯYqQ驻ytȪt.ď?5t&(x:@Ǔ\ex?X ]>vV~v`w+fCV]t᷾ty]]#zp;o|<^wnzM<HĒ[Т&r%xKqIh "CءPh2%uxgud 1+ )2y&i:)i{kçxGׂ.-q.cV9p/u.~Αґș9C{wK#}k8g ۡc )c]ܽsQKYp.(FVXz'l=|rDXm;ҁs.{J]ʼqej?*st̬?:8}ok| 2ǎ/NȽ}!yW6=/K6X:akWsll: t=ǹtѩϹ΋6<fx)Y^;voV:߫*rn9eZ 5+R^E;34fp{׺y|̗v&f艭RzH$LZdv$]t~,l07o(=Cp=zEծGP~7AЪˏGGGa}g?}šP+**WVКO]Wb: zTSgRg՟2sEskp֧xն۶km GXN^d-YnG0O :́N]~w=2ϫn4+*QZS=mt*Sֈr2=L1?~ڋN}o#oRVSVN'x齺m^v=kۨ{I$j뮻0#HZbhظ"繵ufX⸎DȎ$N_Ls F$JSώ~&^zR}09ef~\#OB.?4{ȍ\3O5* ?WiWď_>8̽U$9rUs`Y*e2ue9W]Hj:$Uʏ?uWFT?uL:FKh-tkV?Ώ{U&lS@f5ߌ.q_H qeS;׈jT9֝rα,9õt]`$T" v:X7q{_'PNw~Zu|4%FNXyVb1Aƨ"Ojc)uwW20"pUiM_*&eE"n[0#!xW^QP5}WQ~լRY_;f.޼D/| 9Wxr|NjUzNͪLW|+;|Tu+jѕm?uWF>Yj}r i>4|;woe=5_}KV uzigLceu;)7 :5Oxҩ=Niya}؅m.t\(?:v;$~i(h@ljGS=<1i.{o`!lp]n9,FJua W^L-;?[KN q,B*/Qw{I%d P-ϦsZDsŜ"V7U#GFK'*z #oc ?7H}dtM<7ǥ8lGӻ Ԉk_k<?U\UTuU0t~U:]jiHPĺR/ L΍2dȵ1U D^b4&"owyg$_j#^ʖs`pؙ,f_HjI,N%/JMkJ>ݰj]*S'I,lY3oǸmضk'C[ cҝJcI?R_ R"# 3X\$4#zXn07u ?% dCα;1OUh̲' aˎ )8t?;g,KD"; R$K)g`(CC!#cxgF>0HVқ Yy*U>̥F>NU^fT>\dP4|;n/|Mٳ/5!T*,IhEPRd$~ŖбROd(T&lci%4M`遇D+"5)h*+ 8٦KeqG+㡖α\D4`[O 'qHtu5(--KG>$7)kS3,WO=_G R: cF%FJu\ȜhC,*4 pλ7\e YIV3w?zǪn?[p?zUV Y2w1|a*sGe_~ .)xÈ%+2æ4y@ XQi_.y%߽;Z?o[p=O>:/ºA:?.4> EÁdX5qu^D,_AЊ2288b=W!Sϭsf0 t\9g|x8$GN=a)6[;yq`6GUOc[XX Xv/$vi*Tploy:л/Nլל敾wLg?%u^΋6mkz햿:Shqٰ:*N5r,'`֗c~d[ /iIα$Oppy>R㎜ c/ {R[8tѫ*~HI+[U'`V~~9/(=7 :Q;/`5 =ET:/&/ҹ(*sj#$'ʇ py#eʒr*Ir_Q~@ zTS\[W4(MӴ.BBÌUu1[OmygUϿ?^1{@чY1G0UUv+ūTws鸽Ns!~uO^y:͝H4.x$~^*ɶnmxߌё#ù?>li3G'J}¶I  dkH_|NTtʬTպ}^V[۳rՕ}_.k/Z G+;FvwH`yGDPZ][`#>ܳbۅLLkgzLZeh*Z`KO$JiXW9|phdiRrh$%4Ņ~$d)yIFֵh8}Yv$_|p6w?8:GZxRhlk2N8ea[g{zĊ0rf.4%^uKbmZEҭbZ:D>*s1g]fbb*g?*s?JveGi]h?::XGl>֍N2U #pD}?7\-͡gcJ"iF8X4#qr\:&DåP"ZC9tj:Y/:0:t'RrBgtOG)J0-64,6tkh$_(pHiǿ >m=7?otX}N߉\wqp)p8܈.MEZ:d<}ra>豳;:gw ֌`oNƥ(fvb; ЎIH.bEb2:l]m#wh) 4#%7LS;1Zܳh-tR"Y9W72G8&|EϊG<̞gK-==#ZV⾷]ܕ:ߞzi^ܚWҢ϶V O\N*<ΑvVkv{ฑ\i7dvg3q:Ƭ\_\+2,+.cbJǷ^E9~6JQ!NR@Ԯy3dc.Hzz趍=lqý[*ы$0yJ-i`L\qPK瑎 OપGT1[ϭvVTrtc9ùαg)s^E6jFg쿆Ջag(t=<\O <0'vL#]/8v2 3h o 󮔷[V$>L z]2ƭD ƭ=q,KYK{>yy2O/Lܰv]:}ݺw _}!}5;r}t/unFE@%WA|*XdDTF= .R*##1E҆q%np9t MR+o$ʏ"5UcF U6HV~΅P4hUeZ.~66\nx4w3{ oC8; ?i[p >| o 6ypeh祡^ܚ>?ͶKqU:E8gʓ#Z|nCw~YʼF&QARK \QKWӁ+_/ECO?&BϔO*x6M.j??3tx)< SnmQ?ws-lc+UhTلdSV P Uʥ^EɪLG1NbUMcڈGh$ H_ud7at\$C&fsb7zdGŝ9kWyr2>8Ɯɣx6;>1"'Vj!H)N n L+?Ό䨿uqk9LÇ\:Ӛf6'Z[l@Q;/_.oxzҕ_|&ܱzjz_W T eШ<$+jpC1$MʹKh]RaBCIƨV(EjR:\Q=$+l/?.2shplbp$y>g:?0HV*+) ˓jXs+җGǏV?pK~ꏢ-o?ycQ0z菇f6]gũYn۽[;֮/eت=u)#ұ.*畢!YT t,.RĥIb5VK/=P+$$)pV -LDZ13hh%N+E ɤqP JBx(&vv6\ 9b[c䱭5nm=:䄫m'r3+Dx w̋WwݧǓyMKz^sǿ/y/tϯ\}8*'OER eGYͯ#1[%Χ@?&u~ڮǦФy8eS A*;cXT.?:ϏqѐF1J0H>/&/Hœrܲ}+/'/HщFE7X 7p-&OG9K0/znlRu=qklk'CC+gFmveިO @}˥AOY]Bβ^#Hh'I ,.1x+_/Vf\.?ei?yzgF&U̅3dcM)on{c1`nz֏wҫKjsV6P{ ~tuzF'(Z5tڣ\Ӿ+ZZt+2kN?-.lԓO%Q6'V"ܦcG =~\iC.Q[檥sR;++=xkD0=:OD^@Qcm smk[mki4Z%㳭3$։[GZAgH%֙Y iB>vK]pMq׬w@d)ctøM/v‧9h⬎FxӠsY-ƼJO:~:Ɖm1JŎ`'O rBK6H\щBȒx)?sz/F|'-[}ey9]-֟ꕭ? 3Ϋ?ɄϤ?ϼaLk|z|Kon ]~w|^} z!Pȟ,|ͻT#ㄅWҡJΏ\??6a3#YfTy}r~ꢇЩ)#Y)3 ?Г:9͑o,`-, },uWpkk?/dYf)"L4h_@M] ކ|hNM MQ/¶Gr85w"i9.  ZGPƭ1-]W = gQdi +X3Oe>JsTٳB$'ctEҎ`yWX<%H gı"#I%k[b:yt$8Q@' 2t6 EFRRѺ8VL'~U&W茌m#{I~4YCKR]i\h]ˏ ܚ+٭q.Gmy%mD#s JWPHlA<îٮ9`h8~rMA)? /mm;`zbK2#c㔖7\}HL92OH<{sF&2oJ>f:y|NQtesU\.VU0O\ԧO*W(zXy4ޗg|ά棊Rv" b喇?rUXUY3 GQnUYE٪Aj nUөE|2tfA,"d%xWSJBkC5ʯsˇ6yjG}K;7gARd-1aI@jU1\:Hbc1^#üДCoqY 5US-=r덒_ef }#RK7@@꘩_†F];fJ-^DEcq4<@#W4Sh2z[7{s/݀i.dl{32A 8W|m iGW]|jK1U:୬ꀮWݕ5џ*~ʜO44ִYisww7drxwom{-_wY֍[N7&qkiZ|HBXe[kpP=ۚ w#lk.mWXU ubgFKDzKqIDATFӵ2[:.kh] #g]E*hp XG*'s]WOe2hۖ=L2T#>ת\FTIS0@smClG5 'x45Qחw~y;n~ 2E|j:<[Bllm*~}o`x<<'OsC=XI{?FNl, ٧ħ٪Y(cO!t00Ȓyer;MКCК /'|3ǭm*FxIujnh]:ñd>sed6ԓOuu p8j5+z\7k]ݯ^޽Cxm.cpPS&JZLCjaE#­t +HP<> sJ?-1D#iҦޠ?)*"5)hJ;+Rˮt;co^Hr[}+hHkg򃓡T(h,xV 'Ījha+oh愓V<*qk"^ZshB&kܚ .~_`{cIb8pfv-\43d^Q2yrpd]/ij> .d^&GǏ死0y]ҔF< 7 ?Zx\L|< 4={׬套^{OfDouׯtݍZq|qJ8K%#YqcW\XOvtFЊY)fրԟWC~JN]I*^+HNLI&-wX]Kx[׽>7Į mqyYA6 ^'(08'u˚8t} w=Oˌ𥍽6nUGqZEWmhGnK.N=9 V,J챢R8b~"֕_YuOD~}_lZwϮІ;ߵgi7 Mwny"/jI=v4'|N ZR3n߀|_)B,W1sy Pn m+޷'ュd;.-*L&k.+Y0e¸]i}[t>!4+ 66+p~; CH b? @5WLp"hr.hz`*_{!lK3f!8N\#)',wD?qO1~/'dGRk!4]=nm~⇻ SVùˏ#ߗ9W~ǹ_ǝd׽}m_+~wkV Tmٶ;-t,MLH dWقCYW32ԕleB!YMg8+HY~23,z :t|WI>*`֓Op>γl6`fMp:ʁ d!wj@3’r #gۚD+Afcd#C+',t8H}y'NtQp³W߱ K}=m/ g2V3[;&cnwv|ݝǨM{y M0/GA )|6(pF-tZ;^Vƺ:U1J*V|H5]-6F1 =3kQ;@G峐;͕# D[߷5^bZd` w&4\J @cB.S~`hhhr4;MXɽQ"Otu8XZ',KCSVD.߫J??h뺁 rzmRt)hr@4WeΖ*tw6\MGٮ\컌QzZ@|U_YgݿoUhzW8E>Vx#|_`3=D\5ڍ-\AfI {v5:5Ii~ٌ4MG{Ua..l1V#YӅLG{JV1ugE^X,B\y$\"K_{쉕%RNCxq2) PiYXucc,i)XjTr·oA͕VpʚSڋi$[8$ ;ƣ=2ώ;W,L[Áȧs9aO`py%i'I˼6'b5_'"Τ5qn(*~uH2RAz_d$}yG]:fN6 KsPeqEZVR"%-1@18uM׳\"Mwv@\!, ҤE֫.K. q3pk(,e-6R[.1)Bx}qc9l6=itMsq뚼q5>HpZ-DFpŝTҩ|$[t=䃬hlB@095Ĺ 1}h %x2exS62'ºh:#ˁaQ܋ijKZ z㔮fe[Y |yy|)nbRqE7sQ>"MT&޼po_.jc~sw}eגK_nmMTb=^IHA_}2ƸsscW<:M0OtK8/kf&Fܕ a9|ӎŹ-@њzB7o{%}$rEɛ儋m|&'V1o$\8ܲ3+rW]Kߟ{wiْ)Ķ4^ROpo"HjݑDKK!3=)>`s.}$t4߸皑>$VFfF6brE'(5F`j;\9lZ=]}bdcU7m7ܭ1'|V=|lGə9{Qf=o7|we2@6vziL/3,'茐QۃlNUneV ~~? :`O۾.ltusͭ ҡ雿 ŗ/](NyyM'/o)LRo=BKT)d)'4-ũ}q͗ /#nm=OSDN7nMcUt:A35]h1t?KR tRwl k߹׷mF`08!% ,&oR/{xM}3G)ESZ3"WfRԺ^*ne#wVb U[q'ڝL%RkeHr$Z:p/ANz5=;qP2ϝ~D@ !3C6cLjiZ>%7nM_zӉ[ႏG3,3H,]p9nNLD"8ƥZeF"V퓤UY>Rb:_/i ?菪Mx+@sꞦ?.?eΕϏG¦k>xC;v۷tMt(8Gl/K3QIA=/HohQcP7%g"3/x蔞i/{f~So^̅Ĝs,K|TV M N]\ϔSq"M$kDTH|pYĂ8]cmuş$8[o"1<݆٤!3νST(ϋx$"t&KW^O*v"p9ˢu2?+Ի~H{ӧB#5U|wG 5kj-u¤$8K6&%'ГcJ/PP!sPhPU$%}j?}ߺy.D]yvB"IѠ4tj  珎w7q?J%)zO*m '9E LO d4^ _oHrh 'kϽګFh Hr&#ԞXzt |-ͪ#gVL=]Y]VVWAel,E~#FR eV[Y,Y G%*菴%H7Пi,GO]:ut0*]T.,N%n}N$Oƶ4BosKVtYɕ#|Pm4N!'|>5Yb[cB15m_ƶU e:iQJɪ ;СlUEɪ9:[3 Y|ڼ$P_>BVWεa}p$̾t44}%u6eHa)ҺdInR?:{ueLy`pMLY>zkm/jUiڡ>`d(m~t5du]- Vf n+2e6w$_=';BӑC2*E= %T/cLq|`G|24=8F{y9i5;ŭYM=t5UMN+fs.gLS{2&j*x8lcfekG=Zte꒷ua5|}1}Wi՛/li#i8 ¡sc.JXt+Gn#31bR< ZYQ=B 9Exv`[k'g[{qhkqzdڏo8n̓9ƭ$\ض_#S%⩊.QG$*ԓW}97Nqݲ˖u]ݰM]ZzRlRdI2Rd-֚TtZ a4?J)L,/yLG1͖P&NuT͑u3LVYg?KdZxDdP922U¡cy8Q: -جY /J./t_{%p8?nxEˣ j1 h^fߠqP>^2ƭŶ,%ض_}ܲP"Ym̑XeTж-l={2'* #ڂYQm9;FA_\%2(I%(tgpϿfx>5A짅@GHTM ,) O !BxVXJ{, 3lT5tγ*:? ̙N;'lw^i_>e:̅812Aή$:rc8: pd4ՙH "g7E~q^plHMĭp d<"RlIǭWղviLJܚjlŭ٪qkU MkhvB'x|V+gyY]͗YwMߚw%$_Z 2/~żQuC-7x8 Nj̞D"/1b?KXE90t`C @f$Kutl [fdv1nv??yX:@Óp⬸zrigsd整=KX@ib&'x0FT_B#yptָ@zd qx _) \ B9HYҰHY+[^eHeuV{@iuGi*?3鏟j6|8ί'. ߷? M KmdiqƊH*0r9*_޹3ё9*:|cx ~d.yI:~xtd.eΧqex^[=9rNl`Ўho 9iT2E VK`< !⸖ԳOq-\/J3H`ji@ w(}W_\iek>w7JauL܅< l.UkHg|Ξ>;7+p\!NKƑv>Av6No)믊ԄX8OqvWWUãܣ]Q7Gӻ*ӔFcO5W/h8z]p|(5`Ɓl.z.C6 U :\mlJ"`zY aWL\E v|#u鹶mOܽ_ٴFsZe^pe]yʚUЖdy+[?JveGi6U3NI4Пtϋ2?cmO:ٸW:VvָJZzARu1<*>?e,*:MST̆5]>uQjS̕s5W!2mdgyp)Đpvw;:bd?Ӕ;.<u}Cy0ApBkSҾsElhp2Hv>gRFjtz<ؒ?iZaH-fsF)mMSeeLI1:I*^B:Ȧ-5,G_COnyэtWq^s鵫$!uL|O$/|Q:~{x&f7N~60 FwYi>mphownQc7qKh(63臅0WF޾k2apk\)q0Id<˛U픷.m MimD\Ł \] RhOj71ZBaq%rJ\!ǿB#9OϏ\Osm~ UYz;>x84Aq>pܥfFڮu] PRnS֔ !nlrp?u:Z>VT<d')I/\f㍽j$؞z{Ml <ߋbLjdnWm(n۝[͹CE{͓ƺFU-VQ=G -Ӽfvk3O : /ܲIK>2PXyiH˫u%dGf*g=:<6lUq4=M:^R}*̍zt΋X 4b nUik<1۟6--袥ǥQ(lqx-JWVV)$Cct+ãCY:9t ԣ,?_tS\ʜבH`9ePdJ9{6rV:N&h@#.NnY_XuPgyZ6 ΈmA# U6bTg/3[AR+\u_)1-M[&9>~БFcZy`iN~ [ ?u̫nW8߅͡9$ȃ)L ΋Vxawz.N8>Gnu(dN7*e+Sx;/4wWr 6=Ԁh Ӷ϶deF=NoC=NH5(;۟=2Ȗjx@x ~S!^s4)ե yIo؜سq><,/[^_zk $JDm:S$5|Uiphe*Fbs7ySjÑH;@ntZNN'6)B\KOnW8CG9TGX@0͎џ w8[~M2zf_l=JqU:X[k)Ș FxΐyxЮH6oْ&ͻ,Kl|JmLIaiؘk[^pc>Ͷ1iYM:b9+so>?u>u58-%$y41L4FZJ@\K<^'Pc&"gI"㼒[d3?PH[\^ϐzx6t /2j$(>i&6w m1|}¹ݢs gtKQWKBYX&IRع1iߔ6x\VsSeJcVA03\BqҘ Ȁz_Yx{G9ga5? ??PP͏`(?ܸm;n5V7DPGFiiba;?aۡΤW=u%D+ƖΎ',#'PlJw.zmtN{8t^C/ q *ʪZ:*E\:qU:ɬf}fbӱqO]]"nM&Kx7X7Kɧ-iBRYxx&-Y$W[b{钸+BWjܺ-"c"M/ث5Q(1ܢ#6@d]8>29.dW9^'30G)8m믻^M?>̍wudƚh=Ϛ/y~ %GVjII $IS2_ۤvUKTxG7IӚ M&.ӡg4Mj5oo2l<z64$鈲铻7\^4qk*6=i l7fhxkKbEݦnS`> p,qkcA6/kܚ *qkI7~A.72zmX\S\N#s9T**x( p ~*MzWUt8ʹ7Ϲwso.~:`x+t߿|wE/H6Zij#YȀ0MJW0 8;0̯PqkV:CBd+&Y,lf.yۥ`ju=3I?j3tSCy~̓d|TVeȹ"q"lŽd,++t-& 3}['M' qy& 㔘l&\R6x̐INf67U$iE, 77o-yd=L~7V&] Ku)֍ȺnYe^^Ys혫zե}?}?2{{|hKս0e5k7$ erve܀Ɛ|lHԕ%7'\Le*gFp0/ˏC姚g|vh)ʌNn&ۻK&vibgvdnS:?v_IEMDMJnRXh&\=7/XI{A_FMڹƧv:/E\r³@)Cp6@+DIdߚJt~@V9啭YS2+UbUT^4T̠?4ZT'gῖr^n=K}s[w=--%'9X^Cf-CB~ 1KWy#cud ZZ9;I_N&ygi'0U4}I>-!H!Jm[?5k#vOKRБsHGe@09gJ}سف}ғz4yLLê`sc+rvr7MFuSH:E~N`Hbi~c;2&+bgpkjڬ/^5t9/v7IEj:=~S͍+٭7L'Y7نC0"NΖ,H>)fݲKe ԑkՔi֌ԫx#様u+qT~xu<GxϷ&j&XKD"ƻc|zPن6j WϳFyñ7z(/{R\k%~cq s_,eofTt_*etfT4<}~ŭ~eߕ7lT֑ @dL+HYm-"8d5VdGtv&gvx3 cxlf'I_ r~t`tDk⻧ou[?P 4r!6f3=Oȱ#GCAu4, fGkdl؊oxe|k/ܟO;2}Fcƚy]ƛoY[~OdӬz:%R`$(!IF䆭Wj` Ѥ|p"-t,bjk!Ŀu$4cqSrCN O`w7qa1ʏ^s'V%{s;h),s|U nuGĹD''x?B+}Aoޣl-lU.XVWk89Ge= p9JϝT23|X()K4}-v7SNxp#zˬ+`VV㠣++x '?I+hʢ?\ĶQ&|6p":IZ,?2tRB|{h3fIyUYfnyX2a- Io"qZ.XYͯ!ZEUjF"+n0cJG/J(5 =FRCǟ{2}p} T"SAkaaL(G$*RlvXE=Kj89֝ώ< 2JIԑ_zźr6x+r&h:3g$V)_u2gBXԂeF_r t{p80Е pG%ۄ>SɣM?u+mlN1v,j&5K".ec=0$O4o-S>., {ɶ^#y~9{<4[tz/[N>mai:cyZ 2Ս'weӁQa]/OTܕ](Bǯ?~3/=v@ }^'CgG_:**~ML1g;GZ0'<NP"9qX{dPᚕ<1ԥ sOLR{^%>|a/i;+gv^f-m+R~Ygqz/jEs'Jm#! HSsmۺzkl[cyԵgEgYvVDdGTtTzջGD5+ήMt뭡`lkNLw,I\7':@=uewK0TH/eKɊyb*g?~:)kͺk[Y~Q\HZP&jG'\<(F}7畲[o޼y?XYkħ֑p&~}CcNEm;v]zeg2p 9F5Bp<L$_|[w4mح#2v#ܰ!n-#OcVZ:HVj’"Y b́UMG0*a5(S YS5Yx q^ J܋GǞ%C;`lkle~FbGNv]*K+myhEE6y1$t,B's:&Hpҋ+qcOt,r:"euDJ|HV'wSjmIn7]dԞ;aEUd[_TQ>giUپk~mpx9rVT+6NE$66𑊬NJhHMbd-TcEjfKiGztթthImtPbߊGXJhrKR l h8Mm.Q_IH#ZdڡiVMj/^ N{Y远z*]HNd%#m&W<.v޺ߘf,,- ][;QlH"du4lNu, * Pt5jjy+:յ{Ot픎]wEWW֯?JS1fNQ~ѹ(җꤟ|WDN/ =u[!YE|P+LHUI`⥦Ge) 'X:LR@Q 't>^6]MVUJM>|c}h6&/;w;CVFHV@XUY1f +F!cg=o8L‹)&DqH8]=.#q,H\Y>XR1؜t\t/_!\iF.;b[{sύZq9ż7>QK)@mh׊-`jvܭ1c>7vs4wzv]_Kح3Eղ"Y A40 5%֕z&E֒tT.+PIo ^VRQ~0깋|e*fݫ\BW=ב4znj=orbW7'܃~sWvwhea ˳йxj(^'4N&\3=׬@KS poP5:wn-?MӟZ~鏟蹊UŏI5 W>_m5o];@ -HD#$U7=/t_gIϗb1'|4~G  Eo|-pr*'IӕW>9IԢPv>;l&J[c[[ἀ5/ CãW+,%XҝrYu^hA*s62U&feɷd2dHVcǟ.(dFt.p.#yI21[ٍF5_7?}oJĶ6]ɿ02z$72:JE4[s٭ˑ??`m_a*G.Vey$k4(k|TMǣ3Gޔ˒?8=Oo>Gw}n/=7v}{jk޼2(*qHs'4f@Yo[yז5}e(ǜÃPOԜ'١"E_|h}҂ X?sLV駡#4%|+uX޵!z СQEYbc[K /W;&wA ,\Y\YeyNѥ"a]w];Ujw8?C!Ӊs.kZ ^-G~UoYŞI`8ל^A{%98Y| C_Ydj,T:QLw̥#NxrdBGiַ7~<7@zd3?Tx VgTtxN0.-hcNݕiu2$qF:Z}jz.kL<;6]ק^,|A:yAWIvsœV4PsIq,qkK^W0TsIިdmwLBWUVUr$fǣ~r}ڢ+˯@b.~QҬT]G i?.HX}#!s?(O9]|uJ=ᶵ/t%қ޺%u[=`W=V_ydՌ˯10Q"Vo+IщdyB f; v#ԮC;F]f1'w>;3n=ļh<,6売j_>e:t*drC𣻷|t릿ٜ=={}pƿ߼lj}HMo}?gjiAt0>4aʧ+Ii7#F c* 'Lsgmߧ~}\՟R6ywVnqι% ;p.@jv峦 8pӯuW3#t=/ 4#uݫ{]sE콪 6[sV E.,] 5#ՅHO\Nku?lIwuq㗶l]]޶?ßO<|p׷'''׭黪/MoEɏPZJ&˜xħSn-1ɯHif]ώ8xu_$wɧg!@x.?0d9V-%sL/[:*'nĤp=8]sxn Ձ}1=/i:[?./7y&DNiZŧv(eqkzy=-ݵE:'eПBgZNZc8G~8|ґR(B>T6MEHE[ɏ)RCǭ,ʉPzeX!IDF"Y#Y-a1}ۿmlܱۏc?x`!ݯ^ukz˦;nnS7]rU+&E)ohCIf(0nH`0kLk[ïsh~(؂?eW3b/m8y^R~y%?\C娚$'KnS( ̤XҸDx,)|1gim;LX^b&1?hydtk6_龠jס<ܙJyr]N}.֑Xvi׺[y ~7tӭn'v19:B!^hS%)gK)W=&#H,B,v*@lm!(L2]7^EhWgLMA߻^EiO{:B+M*|d3zn(*ݸu_1/ױTd{ t#*"d&'qB 3[r:_uF#gá8w4jkHDzψ;-ix%3M6I&xӖW נx}WL$/ 'uL(2y}+u:W$9fW2Hs@:x+|r6)eٞ!?̱v}+úϗR.(M G6 Q-|ăf|ϯՃ4t5}uʈOWθLfzUL4uXfp{7JwEq !"f#%uf"s e9HGᚍܺrktG*C~ߓ$VdǑUWf+d`p$p2̿*>Cl.2{ndտחNbvq)W-qhfQmc{@ 9;[ 0(q ˖ njbjv>_ɤ!Eq1;JJueW, Z1p V1_9W{-%Б7q2Cۿ)& 'b:lLwYձv^`tL=/ ͏עL)GPc(؂k\FL%~Q,xV$w[I4W\]:OK|#&ZIGɋ ҅bU qH/i덑hHvd&-dQl>纣gr=_2'wޯ{JMwChoidYe[۞s 0+|:S,|TP-dr}<dFϳfFJv:4|,2i=8]qAaQ\,]}]pATjVj:Oz~kK"M6]~|ͥgGq 4W[o~ChĘb=R("9~T؟!'YF hQi~s32nj+IPKPJĮwxE'VMV,cM>: M78?408ĎMN8]Թ$ڧl$ۘO٭_Wsn6dm&;DXf(CV^ 3VVzd#IUZzK\a\I+Y+RO΄e3׾SW:C c/6:+͏,#֦weAVւeirqi4+?)K+7N9dz9*EY`x7 M1 ybJ6i$A}9cn'W,ax)M&2;z#F+/zy>^8InĽsًg\.N_̓~w=wDi[Lov60/+#Fa/^3UYzZ!`]}~$7GpѭyӇ Eڞ2=}<:<^wt\:%fO iz^EC`^==WޭYW-o|"ݲHvtG\ouW(k$Td z\5r 13'oBM]k+{o+:oa2;?gIY8Q؅@nUV! f[F6O'AR|mx4IH'̆i9.ǍS](P$yL+R_ fY{ 4͖퀉Ba h#,COBd`p gRY9IOd08,iliEAWIJ1-Y7>U$(Tyg3vɺlk,^V1#dnUI"M |Oμ?sгTa/\B /-ImK+z>QMO8u_1$#1yaNd0Wz]>Qdc66uyE%AW5=3D/(OÍrcg2c凭Bo({scӓo'MV~g??4Raxf/;l_n~nvzqӡdvşf-@ZmҦ2ҩ7x0:x5H`M,Htv&(_ۺ[SAꭝuҲvfEZ _zkIEJ\7Q՞N,]9*1?-b֛nnXuy oXs7vw^|W9d aZ6)OݲJs+go"FI)g~&#ҽ\bv⑑KIܨM?@p5\ ƳS&#vt}OH0CRjUA|td8%$twtig `tl4R{ܚ,x(3,$>-Z1!aI;&cKrŔU<'j`Gq]iբZtC75vGx%Gʀy,6co {w$L;!Yφ dL,ɐY;Ϟ/38g&VbŖC;A=RE*˅sO[խ}aeu{ns$.F>+=Oo=YXqѺR[81{'{TZ;ܚԞ@I+;rٳkvnZhQq9ϨW&0: E? !Pٟy=X6siLAˀ9A7C͓ƶ:Q/EAcR/AJ6o7okiO~lJ3} EV5X`8Ȩ I] !A,"Ջʋ(&Zy.uVj) C(U[\_PM%H=;*UYG=8l^giv&Ct '91p-|9Dm /?-X˶U9T¸-DPZO g9CDC$v5;ŧi.5cEWPi|OIs?E'3ׄ,vUb,k i$ OY9VX\EZHG=ٶaڻnmqTImpg-W5Zz*d3Uj¤n+k)\OWQa8D2*|)z9F5vIszDI`Ap!]NX,چP}44/H$ E0z0=iZ$f e#@_)c$Ń,Zy'icXP 211bW,4MhT%FN p~l+?`0aqqF_Nk},t?=Ev0V9 Y#?XX[[M[рy:(rS<קTNZ O*[ u5-j0KuvB]LoY] `%+CqٙXtEa tE;ʸjoVǚ0rRXY&pᶰW sjpY1ZVӴJDD(J`Nץ090@7X „z<6"-:k9Su2^&޳& a)+`GvޱUM+R׃%e  .[̣5’T򨙕=K_;aUTD`Qʚ̜3/ EfHYEQ*,Aeh+I~fgr(U_ad:%5s2U AMEx845•8SD a/@x4` e<' Sci(Ϥҙ)#uidE ZĈ 31`FХ2uz( f|tHdb˧g P T~&LyGƃQBAD))ꃻxRc .DBxQ2M%q>Cc C5""094RTyh:_ 8:ߊ aLBQQpʱz<5liՌu9}ȢsVA2XᤎGež9^[AUںi_ 8ǽ <&GQ0E'A*m *5sVBCwL syt[ ,@˚cu^:?DR I6+}xp#"K<@TD\QǏ r d[L9x~sv/<'1.%d WhEk)cwS;Jnpot{ !} )Xl v ljʤar·-0ߌ}ki&aWV|ddV'C{v2ed f4`5gSةNdMR򱑗Nl2JM܈˂QYUW:5$)m$CYO'nhB|0e=.&4DҰoVVY[gN#gpum }i7`b -.Q+}_l?-'vئ#~{U+VZWYZND2;Vnct10G}m ؛?>N^|ΦV߼;:nܺ3J7<af$@"֣P5QХ&^5\iI8D8ѠQ-ؽvF8Ur [ wNZzKc[瞱3mlC$Ñeũq{1^| z_H;T$}I}wm.%Nuh7Œ"ob{ !EAZQAA{>vհC j g2g8oLۊ`,+"I6cTPnhgbsuӊww,=u][U`:B/(~s [mL~͑(^8uf!/laIN4oŸ(( ᙍѵN@#=q'CP'+tZUVzRłc+YZiӦUm oִ Ft|jg)GgܳxPy") M,Wc!0avK$rQ0{?l+RG[ԑ?s׵~ Ճ<Z.˹$CUeYDq ^|ޣ>vt^Yu xN`GL)Ha#F+ݪի,fҜ}?8\jfR }3\=KQ}gi 8=/g ҄x]/xir쪺!Ra䌧)#xP25%}C "L/+ܹVU]1c2^&;38[{[':2%.kɅal|_2ZXɋ0\MleiK?VEM dMuxuZ,D:KA8࿶NcaGՖ̟eJ+xg>O҆v)Y)i;X!}/=GqK-o^νJVғRK\R]MjpF9l4UJ1r-Ǐo +x|۴@osg&T=v>K+U/Rr[cOYQD6yӑn uJwTىU_V:ï: !&ā-Gbع6b۫E\ѫ(5R6VĢӐU%URP/TV|*+GUWs8G]ͭ@xN+«35%*HgmͿ$F K~k(J=3cj\~hޱgbTTs]Jēb{jϬjHYUh/Vnl[>oY +l0Rt;cG^5T#&+5Y rauڕ(b!mӹ xm#Ha ցn0a 4'O% f_qgA@aLK?O?+Ά Hd8g>qzV3~T;ãEgdS>biLG{ggr~om |g G ^8a3ʑw4hE@[ļJqoR4_Y7i&I# yzk?TǨT)KZ^wNf )B8z+1VVZ[[c=ȜGOVy f<"rh'iƖPdn0 Zjkk>jjϒ9`NAjkki~0 2˴o=7cZ޳MK#)D~f7g#D?܌_T4pH:;@V<ÇP]\)J琠”]dXԋ36lʝ'5'XcxUpf\3ʙ~IRƲs;8ÙJ*r0Q0ӹ Ě[E>pn5\|z֎5[/h]@z =, SAd2xQ=cH'ysg9Էz8 1B9`XxT2d̢WDS>B|첣i$"Br>{bpUĔG<`1qyIbsD~FuT链O,F(Hp2ym?}2jN^@:ƿ~q8 9{m J R-Ub燣oT_jHu>p'+B2;q||r>rOgj'>TϣO>ށzPg=rd(jaÊ߻cElm`,H]pRE$HsN葷 ң ɆP,Ŗː@n0@'H7D84Fn5BrKzi4ǚMIesgϮgs)6$F<<$rl:`Z!Hђ,Fr+ W$<eCFP*C>ēOw=q+7o\bͦTsW8ңslr%}KO )<}-zU[Vmq naOM`A2u wtup14njЏְ+Mq-uتk0>GF@Q"Hgo.hu61&Lz} ?v/hP >;~"<~y=`L"]e<?@^u6V?Ŋ<~6hァo3ʱ*slœ%&̚y0)ܑw5i~=Z8`L-ؒTdI%' z4s\G"`<,X!K-a@E^EO 0о?6ap}asq{!\ n@~|p&|pgǎ/s^Qa;Z$|S}}}UnVp9M`=M:%wg3ʄp&^ߧ-Bʪ;[o޴ή߽,ڰvyV>v|k;Vu݉L*1_ӚJ'+FWEZ(AB5㫻DS<8TXmWu.3g3e%H*)9V5hPtXt_+}W˚Q`@S(86pfO|ps*b8,wxs H(pj`9 # 61I¤L q-|`\<<ϔ%C'Uavm3JaDbf*ravCYV"B2sxmˉ+_ .{>zqPUU;ڢ״߾9uCn񦎖[>Nz׊[6EYչy[w"*@u<+M- f )}a3Cq%H*F^}0~>~h9Mzxc;tG1Qd-Qb|=R9K2p=귁*sDEsxbsM;ul\Q"X`.P>/| IEΫLP}kS*}WܹBkss"Me"b hocTD2BTtǖe+?e۷'n_h(Y nV8smy\vgT"v_u~Իs>,#?xWgێ? [׹-۷a܇4c ڂ1΂P"607*F6R=7nS(.JKbN v9CY9rfR&fi֎Ϛ0N-;Rפg{}%=՝M2q30F FH Zn(t +,/(Piq&F3qL9u:ћ8gR6`g8ċ8FTV*y&VukU<9H4U<\~ƒjoHIUL&sOvx Ezc|<bxxx0~91YaKO@jE=f˺?޷MSц*To~CЃi58fnV #:tE;J,[߿ylvޱkW@nY+XUxp89ߧŃ2Bvcf;ЂxL-+oZlQK{cg>/Hq{޻}-ޱ aCSܮR#2瞱6!/GG02♥N,K޳fa,w{Ͻpiҏ kDM !4NMDa B 5 i !5VBl<4i 4+K;q+I)Ht62WAEDbDH,իߘv]uhDp.v˫` ) G"MPEȝ$׷Zh-:"n1Aw;n@džMKaJr?sfS~Gc7on_َ?VcG[j=;/9>w{MyW?svȫr]hΛ5[33?^"a=2<늰SxD̹>% U1j/Xnӧ s|ĚįG?glX g͈t7FӋUTD`ثƒ7uDV5 Ղu!YAxMhiSn)k*PQXZ 0$TU.QJbpsH[~E }:'#e p?“e~&A*-G+Ӽ-ׂcFMd2tMտ~|(e '>-ܚwOQ{dzYHjY~cEcx{ƶ:DϖObhQmx#_E5f[b㖢uLPOB񚡒0KNGRA^OH;I9AҺJMlPC&R$T/-'i)9+CJ ESqkI²tISȞ(ԓ-uvr6Pr}v"5k*G"'ҷCJ֛:Rפ0pt{mQb>'+ 9<){Y]6#ܾ6mA;~=M՞E'a)B?sg Ry){)OaKYݽ︹ EOؕq}!!Hc ̹(RTořobdm=Js'oLk4H~cլ,q()0Du`D0Sh12'te^&upd,se{0&PkIz-(h*J-QӋ(Xs$ ~ n>?cl_-'𤟟t_;l=Gϛ2[g~ڃ`00\fعL'bi"HƴʾUAd^ .aG_5J P)L-Z"-#! O=U ,"5T/P!ہM&0KO]"y/ؾpw|Mwna(;vm :m|N;-\2viWý>gVf c6D!ǃk\nJ^`x9CN8 qad5˨>}G"e{O`3~lp}^uȑ_eȑ֏~ѦX5 <1;KBP8zǣ`ı3Cķ`P"Ao+ @i#}q}\J-l_{ͦ0 D)9i>oO,h/gWh-zdDyxuA0n Q%~D!tP@Vcy-yumӬvcd.nctI|vgF% lHڏ{csz|{GxzUIܩT; pSu_+Vw=H)xxT܎?*@AՊ!bGl׎ߎ3U;瞱d#DGI+U+$6c[:_ "}͖婮d%~}^ƮMٲ?lZƖolmYK9XҎEf8ʄPHbHr@^F* դ…t,7 prJa+# #Xv|(T3|SU='v|W~jaܙ͞AujhxeW1ڸ1Ip3URUiޮr7Q{_8sH٪b7[;^5<=n{J̚lu5le-)#}e%QI(Vj\T#&k:y4PHl&G yҥR\OXǍ=ww7o9Yʣ$Sce(Y'q&vpkpCXL*Y*Yi8gbVxXLjpynJ}79{}XgGEQ=eG㨇1_%< hm2?r8s<~.l7@N{Wgt 5TdRTKat Ϗ p$R4 q1k:ɿc=vu8vji#vXUXh am'-[յunl2: e$-R.@פT\ K. hwj~S[nY\躦{cV| O[rUxh_dBʣ@¼o#7{*aU TӪX<{3SQMΚZ0 zzaB/-76Yk9 A6rjAuI>~UOǏ?~3oDu%˻oww*k4We͝C[$X~S)1U @(B %d>yf ɩQR1Vg*j/M?czמ?е 4ѐ)D;nO| {4Uu}EZQ9{4U !ވk=vڽ[s~@_=쯽3"H TL X&i/#e$D|ʒe-|L5ċ)`Y+Q^Yf'(MbmRa((+#6Z$MbWj],4JA c9ѥE(}2fE[]:rwu$U'>. \BKVR\^%X(ٕڲ]ئ[O}ctw:mXW>LaOwd3:(8!8hNj]ő4 .(kǕJdui Kn .U>C޷=i ЃRN6~hG+"`7**GIu\TF$xBVIɊUW^S+Cnu]u5(];y{-^51aȐ"wOV"j:3ϤǮbe-T)tcp&+YML*R:Ӥ3U<ȨR3%FF.'^<98v.vݧ˧7w 0?Nid:$,}&m D~G,ӳғܷx *t<{1{xE {@^` g<1Y}Hij{UE6)7^\EmclZ*dtaS 'Qax^y}<7J#j %ʜ^P8K"-sHjҨhl^/>{RO٧7l~?@#dFMK?|E*Ga1pY#vݴ;Q̇a\ \,f(0p2U%N@'m5\۪7]+wmofa=SebYT%|p uXZ SMRoUPCнL^*]Fr<FiY6}o6vl6// ?dJlS*HvٟwZ*}?[kdRm1B”G]K GatHO>xg"KAQ*WGTSLʅ4!v̏ATHY$3aτ4 ;vJ3"a<- u Iz_Ӳ&yFx?lH;(X-ᶨ_[?0fk Sa<\%>g;Q" WEnAaf;51ΐ@9x-b>D;rv{N/?<d}O|Əs9g׺޹|9șUJ)C}ܳ86 4+ G!3Ȟe{zV|6u7Z/lfG BsM!.Ig!BӅ*}}*㇑W?)?s9[k>PPЭU$\Q KV4zӕ\aPRTP4BQr2(,O(PJm\{*Vmȅu8Z*avqw^ }O7MWB ¶zX-*mϪ rjf3rVTձø]lx_*{Ϣ].m؇j 3OQuBxGv,Z8W"4,c\8&)cN j#8`glkء5 l;Vc;NaQs/lR2q O`>5HQ ivv8 _RBH1Mhxb0r跿vAhO*mNAP5-"?s~F/yܳ/9x9, W?oٲ/X |㘳WQ <<~|>瞭4~}=[i|xsfk757q8w2K+*g@B!3>5J$3v'yfPX;|Jx1jbܮԊ'9lV% mqoH2UOEETl'"`+_h?7!0!r Ob:t9#ħs QNNv!RR8c[#}06XG_YڱGˎ=b'(m,o}& :hq26|XСaP󤁽Xc\!5o1 YHgL<&wJp_:m%P&I!JG(ЙSG3OhQVD=PP[xl#oG<8?h GcEAs[V;xϏ%W-9+G\E%sjB Q}FAVl=#|d>/?yf9x.lcO%׮];=S5uTa*ge`nf8#D~L0|tM22UIF0yXa+C]5|\Qm2Lսmp"&8dgn?yZE<Ҕrs+[f({O,6 :#;j-clożt|Tbayv,uds5;;.̼,oӄ`A2իñowo)J1lN;yucaF'b.ѬW9An\>ǵxhZ" ?%)|r^i0rz`l1 xرG7?϶B@! G*}Nb]z߽ -mՙJ S!E Ә$ǡS-LUKct"10^)`~x|ŵ0LtdVVfǗ9ʾCL& =9b+;b+c<%F2;xӪSVLhc'@o7&0yS?n}msK;¿iL?<=c3u#[A1?3MņVX iBwz!116_4x`! G1ු6>8'mQ' ML, ZgF0ZOQ X'Bx8p E*rZɱȹ*38ы#T䌇װda䌇#7Xf&gZm!-zhi}@bWcc$fzN4v6ln{3IW~Wjʰl9rA/xsh WƏV$X466_T<~?zIYcʼn(')#9 KA,8燽7fgȑ?rs_ٺ/g{Ð!]i"/UHPW1%"[ipLU*gB8BT;OU%br)kQ`+ZVFHdEǪYUr ZxI;ѓG{D߱:yE£@VfNj R/~owTm%0U5;5᩠Vavk*Δů{vp|tQ{# P@DXUjJDRI*YZœdk8LTc&jLk2"b%%pvU*^aK0?Ny>HRߎ(0r/sx.#zܳШG"clv2'Z*hOLꘔOs\*5`"g aUPBz#M---#|xF噭=x*ݝ57vZɸe=O'}'ZW[Zk;YYKU|ٷ72zϏ{N܃ݝl@}k;C]iߚ( C,Lv}a_,bU+:Nd2S-V;ePDWkbfFؓf8Bv @9϶#H6PA0* %JN VFڴe3 _jmȱ7;*hJ)kt|6i![~w^ ׯhnokR4f|)Ygn"ڳz@"wҳ<~|'愈iI'k_ {eѓ{}őg.>~n ѣFg*pb,ʵu(dE 1s2n/I\ȿ<۷o}ߖ*,vZцzynw6v{ն"V}k{ח>?47{b-@Ъ=^OL{N|㻺Z}Y?%[q~g( us7~o^a=iu !H`GiVH}C’SYKq4Ve 44 ;;zY- )HY`.?H{o1RJYZ ,GKxMN`r|t}O?yAxp&B*Fă2ҝ< DjO bMUh MMRAf_C`0) #c.R=K6rN}Oj~*xpnbx8r|9h׊|]B ϲzꖴ*Bέ@!Dkk_>vF_x}.GeOذ58@os r,d-o8|E="U;| x*\уb@2v;)"I<nk=kgu*oPC9 ܽwŒg

gǷ]=vV& #mϳ_ߪ5>pݳmuHwK_#nQhK`eC5BPZ@ԏP!I50 Ġs?)8ZP _Q)p&C z*74(?VB$8V]u_EGz )K?DYx98vMmI$ Q'w|^kA)CI[?$UM- A5g*Lx!x%h #G&ECۢ"83(Ab{k. g%49P!YBs(9vHJ6sR)l 'a?9mLxO" ;JhHPO3GY $$Z:3ks};uca;}ZPcUNǣuѸ40!xjygҌBqpr#ľuYbm 9f~:sxwPpY^ u'|/xŜ_H2LUb$GLe=3:I.J,lf2t*X wVp n *bF0wX? S] 8Se6# {VV KK(6Yj3m0~GΛ;oX\f8gzXxxϚw_6;Y/8/r'';WU {ꦫSW6}1E/ -(c2{1?3Q(xES!ŬgDV1QavW+"$cPfs0^v,1^QZ[l2/7{1V9v#V /leӲ!Gk">}CV3~Xa}WZM]=rc{vUba\f&VƮ{&;ců\Ɩ[{zz " p7|HPӂ4T݁3/B!_Bx#vT988gRH33),lXq&1'E]I@jlJ:s%yTqaf?8~}6/G0l#B 9Ӆd<j#5gSߡEbUc6C k;x rL@r $r98\%Ҧڳ1Y?3~T<_5wsʌNYX[;kҾ5zsԟt،TtǏ:ya?ߊzAX#A^3k[BGY[1H™M᫺BW/TYAXR={#b.I|B.0#GY:v3e9#;<5]vl)㋜"ZM<0[<ՓýzVG D|#>R: MմWG;!Qw/!W@le4Ϊsh^uxHe Nw٩܍K)ȗ~9U;:1?(ʿ}$ A`6LLid;L0>HoaMmi(96U;x J;6vlK KhDsd1_/!.J+UlUі*?Ж澃3+=2 06#6==Ϻ}YasϚ4+Ne2D:W̉@^z^r5)Ι+nŁO<]sB|89`\ef9g=gʇF?7xRkLt$N`2*&&x/Ts}+ ]ok{UoWTT?rt-άOlI<5*C'O<Խ)mBHilXDnf[5-ɠba3Md_Ÿx n6&q~:NxfˑvPaaaN\g(\f%;oUgj~. !Up8~+Kea)[`+9Vf_6φ@0lpg~L+êlw|񔷫~FWԒ$|I ]A6_>x9Y=SΚֲ nΎ]>Ez,ⓔ24%FF2F K`5b3)9@lV?39vFF\eJK;;j)= #^ c#%eXo ' r#_d0|&&p$#roE\^𸑳U(.6vd[dTe[vah5i ^m-m 9 1}h=ȩ^==˽>WHKWaTj62r#`C)}LT,}d3 i\qX=mw(ߊxՃ/&NNbOǴl15\zR=?) ޹~*)5yD4-sTUX*gO{K$/۬xT='؎d+WjRe-f+ChF/>.1[|"ke/"gx09!r\y~R=fdd*$55bm݄,?*9x]wUlLH1â Qzܠ)1y#{kkМhDxQ+k-0^@0s/\lZV?5(#B ^Y)>JDTa]aI 'LJ_~b!em`QWb-E=,Vjr} !$ʪql\GZӪ~o=8}deh.nZxo{[?|6+;|nU ۝Sfqly櫯̨"-A{ը+Ey.1c`įEА0Hߗ&I gbDȿEmkʌqga *1%'I#uDAG|oƣ%}!7 W<܅Tnx-ғD GtkN')-w-'>8=Kx~3Itom WG%ǩxm?|ceXօxznkMGG~R,NůFlpArK Qw/o ^~N_2z뢓NXZd|݊83qK!؛ NI:[Cֺ.o}镵]ZnW%WWce-{ը&U\ZWQVxfCoڊڭ[TrM296Uæe덭c Mkbb4tq-DwPDv>z5,( ZvaF2 Og0fc h@4mFt-v`-ۑW&%qU/6'ňy遆 X!}]߳+~=P%sMpbi#Wa+G"GIVg(V/ټ5,>W{gD~?+Oz>? + >0hLs\Kw7/x REI¾5.4b ӾEk&FOX1ah9<ڵoMzn4qf W㍍ .LGEF9c14|:Lj?-#glDZDtsxbYVUjS?rieTn(bSy"}kBզ əi~چ1*OL*6ȹ-Up]޷u}#rm!r޷h#~!$b}.R?g9Q{t@>W{mr0r&١\0Y0ݐL6cQ;ml6`ʾ5u7e,vn&o_}kj޷|fRֈkmOR74A"(bzX֮Lh`+q{it@7)kmXkDX$|qdibvpE\Qع"Ax4zlLԂJƵԮ''Jlev+AvrS#?u/OVk(DE=;OxUȍ [Wr{ 9qSbxαf{%F6;vYց;nJOeх=?sm^/(~{eV ǿX`"`$Xq +D$1XDH6HkYtf]4[U>AB Dx6L؁M^*bEgl'\(M0p1>|_|hKl8*n8)1h$ڈH<(B6PKxU?@FŃvz.9#/9 p;<~粿xxT0{~O^~F)J%%ʹ*kk1>1obңo95h̔ydP%,3^ZqpVT8DeY:oL[M9iӾتB@gki7m;?Y rbiK7QM@'#g<#B80}%"S1!#v[?H;p=9ls/D2rsA>dx?]a3,өMXW^M`LSC!5>}W{L&XU;9l9g1DŕVX[KZ[D'o]/L^Yg⍛Դ9Y HT-AoxvHKT<|l%[[O<3H VhWvjcd9=\,#h9=/7 \Gu:3Vz_Jo |l4B,eDžA;f`_E!f O'R+Wڎgv=qXX#_;eUG>+u{U)Fûƺ R ke"HoJHt[Zf%"(2CA&X0ꀉS?XQUrHƵ`q6ZZm[9՟HKCHL\ښWzWLbd?䡆a3r4MCEݰ:AjU <@`ǝ"3\GTS]u<p[T䌇'>E8([\^}Uxw-r<mAm<9KYT9]O|i:l rb^`cŬ9AT-2[W8jLTxAV^^v`UvzB68hU npNִ.[\kk'\ݷVA ۷kk eK4[6}{xUFUIɊWފ0L3*5I%+%JZHYZأԄ7\ŊORK*kI'V*#TYjˆdГM5UT0 +Y]xa.4Jx .5j]5LZpWiйlT*Wd0\RX ._ܳu5Փ҆#Tjfxgp!76joXw"}zM{xAdn"XӳiYc+2QߡN92n iDo;9&HIJȓGV40찶~`'= B(Y T~HکV*i @q2kpNa5CZ(*S֪'7FZXt߃JVTTeZ[YhQBmZgLEYVr9vX;˅L픏ә9/b;|e-w|H}& vTWs4~J3b]vs=˽Wc ƳsX@C7 !$E)~[>J\\ .L$T(Ֆri?دv '*Tڑ{ذj]o'?f׌n# VFaklnA5vl0Ice Q*@NG ( +%*mB#|F}$~4z-3eQG'{*r9~iFl>7 6EXPhGtBը1iJ-i+SDsk+ku]QֲU7;ո\"E*S54{܋ V["Jb%"V0M[֧3QV% ҙ*l^)UJg"J~U#<|03l|FL՞о5/l҃tAZ h$mLcQl Ȥm5Qk/7r_}^܃ܦ5ȥMrԞ>/)W&)sS/̱"!AQj/A2#Fz^57?zE8>q>T@?[Kd(\!NhNљG.I :Gux};gD&jpJD*dWX3Fbe .k'W 6r*GY2= {?d eP:YQ Qz yzYouQi !)ho\Ws~a!@}nǧvtwRn|1?{x~YE+^X D\Ew)u9T gJUX5fd8ϝq&1vW2H[樇1r-tQ#ȪPҜsr8EJJEJ*Y9$ f?Hp;9%Uh.>W ~gR;\(!Ď6^e-}EU1_P6 l*[bVs9~r''۸F2;cm+`EJ\%UeF_oQ ٬ULe-VZQn&9Z~Od_Z)ZMUW+)> 8+kզV⩤dU [pO9߮TTsyՔQi*OzT[b/e2%JZɋc3IM_E)5<`vw>Dմ<,Vu|&W3a[^zx/7r ;H%!=柠~lXݼ=W7of*[k 7jxCszkeuի+,+#AI_RQaIUFhTA-V"bM'V +I.Aar;Z T*WYkB\( -*+kX?%b-._U4 5൫USYɪ vUP;Rv}I fT;sm-x<ȳG:oꤼQڇfm(Z߸t! SШ؋Ut c#6 (Y lPYmaW5 b|R/ĕs&(xqp/^Fa Tzn9r9ҩP>oFqs+}m3R \TsD[?m3fEu?Hbs /r9,qz=9I sL C}H3&:R.hmъIamc܌SFGۯ#ykR`wQ>C(+-hN"NiegSޟoS׵d8^y, PbpуƋAtd5ԶK#F=ݿ7x(5A}VXЕ&hhC)vb%˪xRֺocmU?~Zaփr4|TѴ.B+Bl/ռ";Ngm|W3Ti WUiS?53U0FS[M)xVAuxT;zhiZʁunsI!XuÈ"F:1>2 ˍG0>>m݆LӕxR)u:&Δvdwޢ q H, n`c1@UL*"Pv$,-F6̓'3p]lͥTv`,ۤ)s&~Μʠ ܝvVBXƑ]Y? *=[?<~߇__16 G_>|)(gXXA/e1bV5Ł-7Zpk+i&ݐJEctSTlI ߗ1uZׅz2w;mk'ea#uF.d&ixPly֭` VkМqI5gZB _)e*lc$[:s-[>+yTxiT@x`Nmx/f,$7T֩x-m9Cs=`"!_=}W}ֺg4=+uϩle,z!GZif8,q9u64'P=l5<3srVQCo?7ojvms=4` [yQL3x&$3Bp]alVI()lsmh"lLX Ni 3GQ S^`,v,L_ioF'?kUm'`e-lZ;`+TͼVA.7?F0_<`+^Ve+z|P)\m.yڥGadЀ` NcgⓦHv`?h)q H+xyN4Bv5ʙ>slM3gT8) g#X[4$qbq\ V"M~˫Y,u ǑP&ۦ6i8]!#i(zL/ N "0y+>re+}g2{_ɠ ~iP+_$js/?_;\f%#?ԙꃤD4-sk٦ܬgeV2:yX01^[wzʬ7+,kb+9(k 2#|T2(k}f+]le=gV6S;qyaWN FûЦ]]wVd^%K`cN4f{Y6ܽ TX&H!Њ%NXIQΌ`X)LX*/6``X/ !Bk]7.l4K[xj0/H81=0*r&l;+Q\jc"<f'S gJwiEsuD֊Sqf!C8DY993|k ^ӆH!M\Jsũ^DXgQ{5BOA(kb|9%KE~I9ziJVR͊F_o ٬%_sUeHY?W^e-zXI񉕵%VՎV-jTUe+\]J[E%+V~SʔǓn__RVW+S{U>Y5XفMnVR([J/5Xa(YyΤb+JMQw8\P7Q8أaVX.㓟$DeCGDnHX ,>P:GaYX]JkLN-q,h kօ:EBr<+{5=Hgu,`]сzFE?0#yEvИXwO9BU`v^ELmW]n mҙV͂e"w/E fe3E1\΃\ޖ=K4?\vsT9\YܳC? Bp~К\IьalPF C3F O?O^[|oHn}o( &ׂ Կ` E/*T!!(8P/?uy\+nh]|>>ICK(ཽ[ T[.<91]r>36>ƚW[>D;?=s],X qh\իɉh9 PK"g0FN\H(w%NڎҎ|8JVa3#<9ot i߷{@Κi@[?srMIU>?e'+(ݷ!F75wlqu˼x{GnT{mRKcUM-+nlΎ[6޶f}b< 쿇B85z(bG|z\!]NF}EC&칁 ~yW ֳV)?jN $Oݷ\Tzko[U7UZKV*JV(`+[ArZOr~WWӍMZE=27iִ:n{wo}}~ #|QYT;O!qVŽ#C!ʤ4XY _Є*Kxa@aL(Y񙬗igmEƤ&Ϥsl:!k_G_ɫo; S)LJR0rjz-޾䍝xS]Vn-+Nөp*j9@t>~y0G7@qJ/Ix }/mCB /kk~=TqHd24[F$wK$ > @Zx@J:Uc.5FPdp?LAK>֯KvܠjLW 2=K5K;e{_̕Ə ܁o>8[#M#9&QU"]E"#$>Ͻ_W#'R??׷# :lTO0̽ҫTg]5}j">U*D5!ɉI1l:)-Zm}G"sإ}$Pa)t9K2p3L"?sLQqSLerf(=3Lqdδx|ʦe[jX=  i2cUgsw=9~F |YJ3Իu8[S˹P!HDp8ARQ) i! A :l>V8Ln[_ݲnjiZCIDATK'ZS7STx/'8>#D's @aK9۳{%uɪA T>H240eB56e$ZFTe$yEx9}{(r),ZݮvHY/y޳qCXY?FWb-ꡮ͸C*v*kQ֯*apyôhJ[%P#ǎ™a7FYeHW1znpmk3e<?Qx3(YQDlbn&U(ePb*[QH\ձ]DhLrQ?? g<8T0+\*Ū_hUJxf GҦMW%<Hu5FxϽaғ*ry4H,@t+%O#=}.H53Gox>xz"/]vTe-p?WQ*G9}WRT믪\TJJGz\6;~%VTRJ_o\PLg6*2q?Bee-*zPJM$$4X(5M%c;vYc6YY SRY ߲r0WĠKT$2yɦszyTms~fw]@B /rNĿgP/8=[?>ٳ<~|=[}Tk?dSvwX u9r۩2nx7ftwyNμYѲ "$Pš\Su>C1"AZ#՜oACDZ3dNaӹF\>*V2S? rхA4 l #n H4"O/Tu}<`Iƃ=3w.<;N/q+!/kT?*ȹg/e"?#"[fR,"zD C/FBAdxs""D XG?ANC= ?^G~ϳc|{F~߱cP y̋z֭[QQ" xDH<, (LDI< s g"rH1RP L RI|R\!AUړcř9e#k>v68,:jkxL~fA{=\j$^R>/rTIibqDcql:3+׷fb`cՎ}\O%evʑ_D]5!_)xaYtl2ʍ'wj,sNbStjS¦le"LҎ/l^<ϽN3L/Gl풣ſ]\{M|Ͼ:iLM3KҠH8IyPi+Bs[|KZ`6X"p*Wp""VCbL(-"?I,M R.&Nߊ⺂W0E~+sHܶJAiG=6W-*rg'sGC>#!~G9Je[Tu6.F⑾ g<_s9~?=~fm;~|#|7~zJ_ښgP2^I*hUݎ/{z |5sy4T&LU|񏟲ܚ`UrJalǗllwUTUoW9DWzOԳkv?\*moswyLgk0AO)ͶJVgY]՟<mri^2IbYGUc_>WÀg%4V}"7JM$9Zs9:~p>ga$I*}.GaݳOߏ-H$rf/ 7C[OVm؎JDBrԬP&6iomZ5텗{>څb-7+kp’%>x>le(kMw&AY UѠ%h4WW09gVO%%xjW{Y {Mww$ ?ϞVW{=#T$yM7MOc"1@H/H bĚNJ ?5 ZUЌ1З;w=TMGWCNèi֐Iz܊-! 0 d?3QxڅG A7LAcW>ӃtY{tEEEzxV< {,$p׀㦎z{d1mnǓhэ9<"g<$rlO*In/?.<=xxx*vΨ2~T@1ZnGp8c=[?Uv0K٩0~灼q'ۖOzƏ O~/o}%XGcIq/La"%EW}tM E,$ꈪ|mU84<*9Q_>P:GEEcQFR[$rvl/.!WDt]ENd׌6}h}.{?`?kYfWrD/ڳ9lդaW?)?o\Aؽ;u]*ve\_AXU_(PB("AA_384T|;;+:vC.;l3WN!wI*N-xD?JS5ŷٱ[6ܘ,m[Eϖ1zegQ\73гvgKvdoσu:I\k[::;<~⩹]X#ؾ-#?#FRﵙQ\%}Ϟ=w;=cwp ~|Ƭ'r:_1yľ& r3VFpq&=G zϣ rP<;U`Dߖio\xD[$ZI/a*D[JxbX< U9l$U~S (lkkFb"eaRjgcO{4=3qcMTeHeՑXKa+θAlePl*̗ʗ.:.Vmv|*0US3kdaΙAuTUm?3kvU`a۝7wgoj[3]UQ6sZoh ϥedj)eY.ԟ.{% ɑ/hx=V43]|vhd~ao"5ԅALyo]mX$a}cD:FjWHLr<LDgbE1dH j5дQ(F*n7"vh::?anl9 6\Q`.c&B8Wa;[Zq ;!7Mh1w7]!n#HԑE(Lȑm_pPlmaM1Nav3"fx<ȉkzQsU@/Csrh{σ\Hj \ځ5 lGU#v|=?ή pox3:Sfrթ4I(Ě3!:Eb-X'!#D2‹#oQ@RDM\QA<G+SG /j8:\Ug)Tb^:I]GS+k}-gڤ{ăGM+C]ulkjeA-˅[pƀӳ>5g\Yة4~h |ܼ3~T<Ǥs=%\QG<~GJ#,Ē{L^Ǎ o$~lܱ2;8neX[(o^[cI,lee8m(K9%)i4LRB6Bx' ±yUt3[oskL=gB*g5Uh kJ^Ҳ&iζY(ᶔ}` CICZ /%$miZ8➲-|<E-*rkpY=<2s[ "9aPA >W=x`H-HJVS4+Xy̷]B)_VUȸjf&eW(kMc%iL#o^3(tRw|t[ۓK;=1ZQ‹yHGuD8s]h]8 ᣩ苰q>248<^ ԧ"#(lu sƊ¼QpGJ\¤D!vX"êi^)J_[ab(hpq߮\Ŷhp^*ǃ_.Rc+*ZU|P|B[XJJV%<gw a%<9P(SWSx4UQ+9=񨫩xfhUSq3~ouu7˳mnY(&QH Uf6T"b(HjQX O[re-GǎZZWYVR2Cu`h1a%+9ʵTG]ƏGOj6v|l0L)!ROqa3UiU3C CjMbWQ}j }f~YlZ7^l [(||E2ط~߯E`<Ɠx|Nh297ja%:'FaV bm=x&{ѴxmmLa [u'=9=SMVdǠ"im^je0|6_?sO<=wϖGܿ]=[eG?}C_/ր֔|1zuif L/Iʡχa Xdu3phaLBb-v٦cgv(X2#txU~2b~PYڑ~v{ǟF{Aza@ɗĦXh0_(_~;G7֮PE d}[ Vd.0Ed*ύ&[[S! kk#&-|6/]jLk(9f%(GaT&3tej`AИ8M!Vl^NpB6CJF3_%H a(nld Q PIpR&bn6 %+2Sw{Y4-rVܒW$U&4 ~qLNaJZ u꣔X@.-s-HaS{?>-F E[J=[uw x zǷeq}urh :P:[f$AR͖[[]Iz2 gNoucW Kv!+Vk 8;&3vYְ_-ST{ržA#':}CgzC-Z՜*"cFIVjٗ5B׏W((P'~F[B9|)q8'G*mNϺ(_|5{;q,]ک0~iOnޚnٵK3=ahĖ}1g1UٱggǺe.Lsv@ Vt}M F-hzG6Į?/4Fc`>:>Iz䴶-c[K4FӃ:ƶ{:`B$ISӋCG"T5ԩl.S0ScOIES 3 18'qE9 ΜCXg8xd*X! ;x`u ϔ U<LEEŃyxi 1 C׍/P)PNd^8o=4QȅK9txh ]F3V{==6޼a`}. ^gU@X}84XEImkX[$*P}k^[S~i>?zꢖWZ@D^1]INS;ʆ0Z0 mdSdqu"Wsnov0rDQbȥua/l5H^^ MZ+ZkQ"*YJ_T"*Frzf6:ћB8v""_4BvU( NΠYKie.zq9?8}e-p_aW Kj4 @9WG6B:QGoumFwhWMP۽VWxb.e-B~0cmᄉ6/̗ XghqsNRCICiۜV*5aq)PtZm.z,1I*YCPc EɊrpփէ[ɊW@\dEc@hI;f[dq]~vw1 `K*| P ;{MMtLø]YL9s0 z Hu5#HD 66Oa.7)4p2I;*rlQhy+I;ٷ}l[MDa|+_;kRsL.±u`֙H`)"g] 0:cзC9픟Ihj^ r<__;U~=y!їH!2C2s"d_ʹSC;S =lWZ` ƃ,0*xҶS5FAX;>>HuL,uegaG+_g_0q-y_&D>0q4&lsR4 L/AqLOboKӬ(&-^5*cVaw*c;m rmS^^x'Z)鄻2K^ac5Ր"3U`aq͍ O|vh5&lb_6;k10!70\ .J"6axxU_`h|hi'_<޷ >|:gZd*^32ghL jBa E0ֲD{""h##9ʽGF91ՎS?sYg#vm'eb?>Gxcs1=aㆃ_=n[r Ev~%k0Ƒ6UFs'O,06IZSpϴ>`66 3>89TB̒"\)v{v&Tmf+I]`⚤6g+̹? g9/a1% zP +iCaDygRKXEcp~-~p=#ɠv,k~ʎ$GʀBM^U ;.]'=~>}X le?+# ;i;؇3fo?*ʩ.kW5<~v*jmՎ:=aG{ăG~fi}⋹O~ꓳ }T" k>5žQ1?rZ ׅseomLO},ı5xb5[}4Sa DR;xm͟W# t#P6B`CqyQhڝ4u."cęD Ng}>39ZKSB D&V*dy[D r#ǼX`o7C+muؑhA@An#H|s&CuQ3!DBG-kQgg$;sl0$ָ:Xctz^x$n rxbQpK7`Y=Y?9J'q kT6 q|_a*J縊#K=[㌟|-][olL&]N57I&r)Y.KdtozD/e,,v ё5 퉳Ch. -?:U9bux u![;ּ֧&8b)|2PaG5TyVfCR94^ޫƝ{ۗmL C&ҽ2u|,] ධ!?R/>9v"FYUS*Z%Y*V;LS2LTּ(߉{>=2{q'vp8|_C$OЁ3Fs:"鬔Nʾk&Ѣְܷo=TAQ mASUrmmM+?gxO8OՒv낔* CHrf3&nTx m,`,ٱcp{= ;εpbrZ pKء!ڴ6OBl3YA~RPЬBvӂLDA37D~N=&h4G(GQ(d%(%?חɀ@ٷƷIPXHC;pr B_vGYC _]jO8^bĎxUP`>GӶ m p\[9ٹ!99l!qѳ."3Kgh*v~%˼/]T PVf(ֳKdteȂmѸ`&S p'SMG_)+"uT16C9(P>B|Fc R1_4Ok8bo&xϾ5։aQ=Br+"s1j{LZ͛D,Ô:yAAn \.GieX7x}WA6=Kbf.َ=~vYlv$@ `D$&NqqX^҅IGe ]ӕvd#Il!i_%}8ҷΚ7qhMHC*:ê}p{~<::: T=9E<WlVZoZ5}bMQĥ` NTc ;d6.'R}'~[ŭ1euiNs`H]k-7\x!X4ayeb a2ӗdc4+s^Y(X9$˴rI0ۼhL3GԇK,?X7m޴sԹ_39p(ε7c*e3[Ę3@^S|74PjpOw62;򍟦#8d*#@y깴CF4e;<ʍ\ߞ hbe10]ׄ*05iz͡4L'=^[b=4nV4&4qZ}1Y2Y_Tф{VHZY^*ctϾwƏN%:\}Α=>wvvw}B0O>8O 6DuEVO^mmX<#V1j8rBB"GDo]F5[Z:ֈa縈} j2)bːtyp-H6!3*P؝G}6dB|: @xBDJAs{;It)p `W< W!G;b- ilCWC&HМ@IZ*#^z-E2n>Y~u}x !nBLN!eSDbnR`?_}+Rvf)f LђdeAR U rXFum v KwWEԤl*f P=|%cogu[ԨqkJΜɽijs?Ϣok@PW尭Ĉxl9(ʼn؍_yX{e}5]I_֧WX"Ua:VfQ∼atR FF.M{DiI{0B޶Gvo6W=#6;;<#Ɲ_q)w3:>y֭/3Qƅ+=~sA$}qdҲ cdZ/+؇m@3za6\F{mNZ:a;[ m9ras89XJ꭭a8>q! Y)^M_=jԶ`=ROiɜ"x ZsMKyL**VV+[Ni\EI Xcҡ 9 {PԀ(l-TWOa%gTHns蘾 ɗd}r nv$G6^lҊ˴/u`s>2 Qk>p@&>pS޸S,1!^sDUJຨ{kNSj-~&uS.(Oəg0)~yT^O\q5n-_Յ޷ܬTr^{gE%}4=Etu&q1#٘PlH^cP*I+Hd0h20e2O};zrJ{*AͳsUM S)b' fA{0Jݘ cGֵ6Z}9LMRs=5NNbD"gEWPe`n e_`CPz `ܚ!(@)+̄?~5ڠpr/Lapn2i@k*#NkvR نh/A._#}u\FF;o<ʫ?zU. ha(;A 8&qNao-S08n- U0͌#d*@U&3aIV ;QS3 L؜A(6GSjdFm$HFGWaW<΅G R)ls\!dSSs9 Rs*ׂΈzlĦj( ц{6޻īR\q#g1ʘckNYWw:e(\::B Ό<'A3DMbi54Aw HPy7IՇUĭ Q$(Qg2>v᧷}n8Ol˝/w~e_}eXB Xp4k_mw֟@,M Fϔ  ?pb@[7H,up疙SZOxp%`(uM dTESfjBAc1˱2Y(8d9,WNg'S#!bsPOh@wkXf9`G酉!O.Kָ44xaNs)C"rNC SuPe~胠(Wcmjk4/l{F³|(2er Ga#4~&>X&D;ܛxS?,`ŏZ (COSJ'3/#=߅[;3HLzkKNP|P~("3 .L<B7_ݸtVbadrf|/+Z (Frf;+Kر 9R, K663P &~ h㹾T2F"޴!FcpꦀCW& />7f3d:B̤l$Uʉ-PoЕAAtp DT UPimc®f}FY~.l1_,mcB.Gtr+{ ̠+4M.j{;"xWx֩ڊtbȫ>Um&UsLulcךg 0d_p‘OX6<'ܻpJ'to0CԄae&p`+0k1讁œN,؟H(,E,k?13G٘dK .f2YI'^$G_dc?O"xuL o`ޚ h(%^Z0 {r?[[+Ŝ#?>=a39 I80 .fCma6́\LVls,|.$ٺ+nbNxZNjR)dc}x=瑪q3xmu^w۟yB'j*b|ji#ͿWliTSK |r W,"'FuBX$X,0?r )-:V-|Rppȹ#u)=i5frODK!9|`RZR1ZY؆hoYU9"d#"e:/iJFvr3\$tNEQ&2Ci04Lv@aO8]^k->=Hz@1b嘊T!m sO*՝\YyDHX~u|F?A9;'81yL6lx50˴!{jK@Z+yL?S7F[y›]LُEA+ړJCC gy1W)CWrlWaX N~ ۮb\J{:o=3;ooF~+= ;2pXqNë1_<kHO)>9Ps!<&ޔZ۩}lisj93}l΃ H.6Uyq#K-YJ32G[vg3U>>5ovM $E  B9)XAq_Q0-ZƱUcK[XFNB;HRY` Ep3)E#5Ը {alL"R>q?R1)cljO'i5'@d*aEz#$B3Cy_t^E~Ғf~R3RŋɌkjZ%}@]WkvZ]U/(vx>hq R#\XsG g}9`WiGs)l">r涑Wx͋ djnB_xAOF>/li:p~a }Ϭ]ڊ nYlW6uc]l%s*KKwq=oPpWBCp!7Sw7m?Ey>{kxjQuMmG%yZ74upf; ְu|Lt?+?|whN=; toWO&܄&+Q 9ºp k3]ɭ-r%-ó 61I^qKKos0Z3VJƲei'| SU879xआh&Z@&.DZS]a uu!/e]E3*W0VNTo ŭrvtG\z$bHK}.l4 4S)PniI9l/irŻs>lUWw=| sCuvT)F ç&,M5>cݛtl*ژV9c T69,Js.Gh-.I'T)^p\pjωM6+t?iKp}a-&gXꭩk@W7VO5*39"a%͖2 e3WS|;^'5 FHЎ=@#68ࢸnlbzs쌚xɉ{Z8zT3#{8 wyp8ڙ,iFv.}F wud.t3Z:;_\G뫙VʶA|n( DQL>ji_^XT8\h_Ѳ}1}FFs񒎕v3\ŸtŨ`lhxt󃱦#W (hpɃb]:(*_ Cd8I^|Y䃥qij#&bK2aSq"N \8c r;et'NsRP ^Laplzdz ^1{ dfKc\1XISwbCc@u (pK9 3J} 6 -2:`EACYjp_ܣ=CΘޚuƶ-_zʵ9>J!)LD9IrLY&Doۓ E~T4#2W`vx% F$*HTy:Ax>ޚ`[c [#)2 o#}tf|LVO`]L(] Z\d5A9_V9嘬L}X8Z] 8Skݍ [F)ȉRCA{$(ޚh0Dnr7E2iuq찒CUMPag>s{ lxH-;}-U-`y ?`Xp޺? x}حvG̼|Lyɾx$eNџ=LHy,91%Pu"s[(BRV֫?K!Hee˚oa ?^>|ZUVUq9FxfpT2k?1Sxt4bX6\zZ9',)_X1p0kmq Pyd,#C}րmP{ֆyF $PaḤ2#0HQ8g쭵lHlx($eɊ(7Nkl( 3m7f.M63isf\cw˱` [9 N0ma(H0x=1םjӾ FuT-3Z:2,1KR1ф)ܴ)5wQ OV֘dQWWpc5;PSCUքO,upOMzk[*x}$dTʳ \^AF~9ryU)/'&+'7zk}=ƣx2MP~zS0`ȮC?v,Z_Q#dKS)RN, Bn2Q[2- L+*zFmwdE ]ƽCC_4ؖkd$~gQoW/i sA`u9p4 $dm09甪8:֛9z8uXHCṰpJd.4Ý̪ѹ!מX)>%'YFZt vz1Ŝ ZYX2s}d[`Yoݲ_.- "`WBw"pP>ls`%"+ZFXQ`˰y=x #k/ K}E5_9RjV8t!VktqG֭[?՟Mj}ylrT3G1j3ůGTQWNѸ5뭭װHK>;3-iϸGVԼ;$·5PO󺧠TG =?ׯjb9.kҝ>=[#8hoE}@08ɮZIF k28bNO֔7D-i9c+lsey>ls(6 1;Mq`YdUcdL&t3b!}yxwѻ0]ZQP?~eV\$G1!^cI9R] ΋F5 QcI ۯihY4lhssY$c e Pkt}1>ϜVYoNomtO )FYJ}:ȣ `:AVFN)JeQ rƁeW'FqWQ l_S0@"U7'UC,'QޢM쭱Ce&?8$oޔܑ6 Tź\ayA뜣( n֖损8;R'ٟjz8R5!5 M]U,Z~SeQt@FKw{A}ׇqZ BPɘG$6Fr-yxz-^NLVq/j3fQ <3^Y8Hq'cixE tVي&Plې3no:֐E4pʫ%;cqGQE^%ї@K²>T,نꉞ1zћ'EHe_bf{`M=NzgPhNòW~N#ٞ\l&{ZZX WX?v>Hy(} E8 6G*LA٘,#BxmN(6to)EhN5֑U~{p 'ָ^SSxW._1#jN=؇ [t7ϼzۖ q! T^M }GT\WhA@1؛o^}(j&>]]6<|tUV.#n%'^/#gaGUVjg&AxnL9e'! . 4^(ug 5g0EƂu" toxn$}J `\+ƭONF޺J7ֽo{kZqk;ai"qkn%Z"٪J@ֳW^lƺ#S,_>ɣ(˪E :2sXR Qp6^6@I(u]N(Jz*?u +sԼ@08a|՞JSt#Jm{BSO)Y x[gM$N&U-q{`g)#75Ѓ1eihLHTbCsǹc=h.yG}0;V}5ǹx@Ӂ9 כKqAsXA2_@МiA]mpaNS\:A4O6bۨ Mr >ز Yba{\>lsb6Eym=xac665ƋH ls:^X0n"?ZƓqVk< [o_ >_V@b*AP.A Sr787 WTS˖4v޹\p|?@8-O4ѧGg>>o/ =4 <Ȕ0Ho@̂MH7;=E5WR̨RU{0:2G wv+igѯd1;K1+Jݯs.`ΐvW̆ҀzjKuuXrȬ =΄yV *̮pW~'O'ye֥MP&{RdPG=& ~oxKo]:#7vc[⎎;V/[zn\~U4g5(Ӄ##v(٪kn~S.c[,[[u';=ý=`YE`UBA޺\)zWO {k /*WEC-w%vW|@bb`BN.Pǻ+R-0pD(ւ;0Jɞ_q"t ;0ĴlaUU3d%ċ~r|>҇ʇ"9g ljԁi,OO~Ӄ`y@X(Ҵ{os\bN_iĜ`N,' iSDus˜\SHB&~to(_֍T"om>Qņb(Hc` 6NJKӨdl7-< vf Pe=\Xlsas;|wS}j|OӅ[_ Dͼ:ט*ppI9 ԟq11SS6L?9SQřޏ-Kq XJtCқ~::F;ב^`-ͨ[aJP(,ӳ~ժHk"ٞL?5"jo/ FX %w CCo눖H3U}`|ppy5&V \#U=r<$sҪz$0֮RxsVԏ,xлy g*Ġ,rb5['ָio;  u(fvu1jo|kOO6OL$$oæ!޴dEXUw,i领'>8k)$/`C*鼯fQyu[g~ ejHE (j\zbjވ9Lٱ@@0I#v̎E2+ 쥣%?1F?#n. ),I.lX&.].erpay`} rdgH5ݿ̩41~!t4%1afnNaLg:25ÑP$ \l7ы9 SEī &YPB=P!>2ӅW 6rpՅ}x,rZT2 lf790^,;`9D"#lma'ћzkBtʹ~YrU4\BƭjBSx·He!cN:KI,( x<9"3/'rtHOB B^"aWZC0EHdpbq ߼ieHo:.X=y@..jj!b7=Ri 7$$pɋ>d2SX)'D[5n U] -n u{o0=7 h0G.)Hk j[*F8b-: :s^ad%EX` KbFn?C׉I@|D˃%[bsfcj".qֈJ(GA'.`!L07ni4.Oۖ~H4ڰ4`4Mô$V$icVhCpN$8;Խ|wϐ Zﭧo>i > y sX*aIɎeهm]/3xJ9bKv5u m^Gܪdc}xuOEM~..j -p_~ۃtw:n|-boZOBQ 28Ebp¸;`u dܺ8z* _G" Ey<:7ԟ9AW7mRϟL/n ~Ǹm4 nW]|ǭ]3Uc͸'s~blQyv͈xk1qR0 {ngF5nx}gr`m>/V`ߏ 3贈wFPU@ca' [6GA94gٱcf[*GXwz .yL>G³Ճy(.j ]޼t׮]tuVT{0fƫ*ct #G-گ2fKZՒC-~)>F}Q\:ڹܩ|Zw"8QU 9=j/Qs}Q"4p,Sנ'M\AklZE|+(uaS+ش*ڶ5 ݼ÷܇Μd=#%ö#Rة%)؍[W>9B1l3.K5TYuhAcH=']5*:þ eyP.huk^;j+ĭك9֏~.Ux鰎UݻCB⎶;_=ԯn{٫oZK7ܲf};s~IPHьy9x~辆9`A=^ wSE.q䐛K Kx@^KhI}\x\i<#ֈk(B8ND2L2x$s ռ!8b*%d8ϺN]c=AG{UbN>0~sZ?!{jxGN 9֓z3X:N `%C>ixS*{(eABs/ټj%@@ygY*\4,\i]ݺ|cÒ !b'}HQ(gbt3a kī ,#E ~ b0Ó.GmpasxQ&ls||wM0~{6w~Ʉ2|wCeF|Y1O`JricOSOk|5m:쌬ۇme!m^<"Zݸ~t|lI9/|#˖du9l/9BX:^:!Yq&z9|ѢEYq;Z 8?mysWDtzGrL S42;])Cd$gYTNr3@lp p uAq "Dl 4h8r}#'(텞&T;}qk郞 Xo*XP&Hp}[7!cy' s:v |,j1\Z1'"( "b9!ojL0-U=:nӆK '  Ya'K$Q\cS?4+\+­ArU&SI`3Vx4\ Gz!cFdCM~-4DAjI+PB1k7pK-45T?44ZuLQA~{*0G}q+ Rk?v޼P|3%,xo|nJh9Sl cymkm Y[U,kDմ$;s(a_ecjb9YZr:]Z0tQ B\bncj*h,rQ&غ8%92XA2kd$Nq 4t7^RǻH A4yԚigEdӂY;B1\W(?)s^%4AM>4'>)kqG4^`0 0ʻnh<&aZ"oLT$ӗasS1d{/&~wr*g<3bjQ>IE=A~\*KvqeR'sǍio|o _O*ԕc^{ɬ5TCR$xk#t30ف(NS3,*d5>&aܱ F50M]TZBOQP;ù5.|-v:\jN =_r'v a#'$Ne0tI"u>UH}帞٬:8i AΞo=?/punn G€G25ےP2#+3PNm%ΜWTlKV.fb'>.2UX*Ah4Ă~n h]39-sZs2Di(%kV^'SBg{^3"|{cNOܩ@esm-nsma-%} 63 yLɄ&9ʬecWsl8?,p>o˪­[O5ovy˃~}qbјEˆ"Ӵcp|l+` 8,GՇf*JƑvx]V1ǫ9΂Ю.iWͥr/m81S>Qx4e t,b-!~xZj{(%ӜR:5_%_vH9%-V6)cgcD(Aˑn,lmwSDa ~{[[Z[b-LTCy]G;ZP("d ӧ+=M=&WrH?G`39#--mz;0>Qd6[J4~umkt+I.;>#Ɲ_/c쪓H%ZWvhOc/e8~X%JJXFĭ&Z룩>h`lmo$=ޑ`<`$%:nWA(LA*Ů0$SFUX&%aaq.z,b"yDE >8Gz *zQBnX?Ivf||0T?p CXsÇ: .lsى?'6nr9;\w&n-~8\X~aX4@njuPiu|;ƖlvK;o[zc4RDN q_6+N՟%Cgd Hkz8qOA6n|I >[ǭ)Rh)Έ`2D(`r Xf`2i>ёzm\r$bUVvl,hQ:#8l f/"6܈Ez#,'-_6p$xai)q"n^^jd6tEh"'MQ>G:lnCs;;JXP?Owoݼos5\`9H`7ZzL,E2i9>E@if'شY "u:iM:+,X~ŒrgZ/P,M7; Wy ,M9aj+~an,t^DӽՈ[Ќ`5jLGsۜ(8ڇmrg[ǝ !r4kمQ'MɆe֜aP??Om'lЩ}mP׿v!O  :I} Ll4ؚ߲WM֎$\P@0 Ls!4:!qRM"08n^o4p"x aʪNJxeV*; g,W|lCOe6&:[2ƊdzȝHL Qۚ'^!& 7@b%N5nL4!D :DDۦjT ]CNx(_fwnC@H 𖪥T8Li3=$(P֛eA"'g7+#U}!&dD#ۺekw0j4obF:a*;(+4SIn#\kKbj1j1F(-#̨gD PxkVRs }jt_>/V1M\E)%8 6iv @Ŝ^>ܵLoe>NW³h867<^9H`B/1v7d6aqԁWkp#MX@ ¨"/s뵁9£Ȍ4n&G.hkCβr1 ]8rpCX9ҧ:^'!"u Xb \.ρD92MFI޸}%+i71/ս獞_xHi%1Hb)Fa <) ǤJP;0fdbpƯFK[ **`6>(L7'uf/ ײiQ Ū9LV8&Z*/Rsy-ڣsny`1lpo 'sd3# I(JR< XiKUCx[ aDC)}5fq\P{a,m*8lsS.lcn牒Kh8>*p™3aO^Yߏ:|U>jMzG6[`LLMZerL1P`1bƧ2ٙ 960 gp!<1ѥK7ߺu :ׅoԆRd=%"| \mnEit%_#ADQθYL(?ʪd+w;H F p!y _@PJ..үXSv;Ykݓ9wr5E0JJL]Ȧұ&?riFY XNALAxi.-\ؾ>r Z!XYYBb!,%hgG;ܬhnv6b9{w#~CW]g\Jױ$lr mT3.@Webja05\B-MLM,ٟRr%vxKϿ2[Ї" cv^a()ݰb}/`b!ddrX d77,^-l߰4xJsۚnPt: p8SQ}ʀ :Bʂzgt+lgdŶb>МLVl,ۙC afr\rܩCAf&XX&a,jm9O&Zz{u-.:siWv,lg|:qku81bv_e%e2𹆦P[ZpCSJS?q^*rDVr@[cDրIe'aR`[guCPW3ԣdzQ꩜KPHwH(fb'#~-KԇeZ!_K\V};Ej`Ѳ2YqK}[ >ɪ`rO5/^7xVj?nӶKvl@@H&+d+>Z5/ܦ9sp9##)W}Xs>ls/<~n]~bNLY}ﺵ ڑS.Jzᙈ*ĭՎ8/*p^YOyMhmajSrIHqk5 pfbO8 ]iKL .V6S9EXPih ;9uFDu3ESi6*$~r$* w136 _cL;eUs!)a"d>hASkuQ=]j9zSUs>Eۇmki^GieG6gͥ} #kkl,m}~9K\ nxQ, Q&ԯ&.%X8'"_RyEj)UrQtFjYRN% 9EEV%>ڮXՈpH&&GUy>/$()lqK)A\Lť)T%[g=n󨪅@^--= ^Oz(G.Yx;#/QɢS\.{;w# ȧt?ް7;w?:aA;c(RhBCUjp|OMu[9*cS>ũ>Uq엨 %$qGZy-Ws%9x"6krǝk/{a\D{k~Q}{׶UZ2[Tua7y{ٜ2t%*k%Vs@2Lb9XTcE: Qh鄜U@e[M72z'Dv.cG 3ff͚h4yu*A~쒳y Llt|ޫn "Z=@1H (\f<S# H/Փ"lQ`9V޺I@Vf8Q~TΧ4BWTvw7غm۶KlMmX? өP<]Old 72*󜸓W #hh(_L勜D!\Sp.AKNa+"NjևeT)দHEԇpVK}}sX#šK}p.'npS9ȖE^Xs.Sy<^P5ejskȖ %nRνVVkDVݱۿxff EFTE)qHڋFSݘr*ÍLVp%`_l IΞ&(QQQU<Q(59VH9 Q>aL 8r쎶^ͱsܭ mn NG*7li wHآip58±TWW׺he4~E=9h(Gn|rM A|A7RYERFװW7<`$tcQw}~`pŅ|?;ڙm!`+yjC߈/})' 7215rFJѫ57phѧ•<䆙aFid&>h#'7;"B3n 246Z>s~m/3vm1h^7Xh^ iZ9;ʢ9P9L&5jzvmhќ19*4 N͍ xPLQJisև@dbZVͩ[>1 xg96Q`H͉w}Zްjs臇6=G=umb/՚ezyk*:JB>@QQS# K5Sy~G32BU&d#dV}(oq#ʨч<~MD>.25}4-hgm^<"($`#9V9.P {>懦5_qnxFc{W4߼z5+@tѺ֮{߲7\z[Өmׅkw'~ʲ iOY&89\"XJ'/3NXꪛ\w&h]s~vXR9Wfk>eTdRZfy`ppW_ r & 1c9s`^ ͡+nTdŚ[9_.LVccbVx(s5g+rԜGLh˪9 $gV!G7XsfBcF_0Y5I]Mʱj9lCk\ i8KźZmqۮ'wwYqje]`&"f1G O]"},LV˩aɝUO]Y>' />VjP8d"}\^7 y,Ma)W;745hvvxkj/`(~NUg@2(:Er-Q.,hFԱd.fb.>ܲHQZ* 2J2GA}d>U>J#sf=u&ܦdB9^a3ԇW9}%#)7^\ [g+ǟq7&C}m 򘦳I8u,=kA_ᶭR9xgry 6 ,:}א܄eDXSӗjnmr-r}n*yrxcj>Q9O"??غFiVm1S-xm N*Z'7p^=wӧDkyo]әH6wSݱy;?y8ЮmX;_쬫?.5۶…ǟ`Bz04ҮWEj|J9XD0g`WZ,AH)@M3S5*L j[gQ<]Cg2υ!}{6v٪9™lokgO( 9ĸ@y(")Ə/ 6ڇbڇmrdaci__?'/XŻZӂ=ÇJ]7Ct ;umaVd(ˌ|JS;lSR,qq"5/Eβb ]<8 #:F8E}WZo]u׭V|Y F# օ߻% `亶'CWF4tyjj`@Nas1Q̆.gטP#ٓzݶT/؛j3V}P(uF] 7@Y8<|MbӂBb3<rjaɫLvB9ca>*,Ї@|Q3p}P@!`@ŪtDcً57<8}{Us}6mʁ[mn66͡d9 ac(@?p6+\ԫ^rד;^=޻rJ%@4Ĵb :9a,"d(h\1t\Zƈ`Uʩ̜XHU`rDKX@+Xf.79mrFc鬢>e8?ls[\WC.|CsA_>&z#T&g]WzBo2U~eXl{eP|U=_z豇'ߍjL)+WrLnRT Z<玲1TSMcSXhJJ<nRxb}24ZyGKrw x*Z$pMky.2eຐfՇ"nv*47զ> /H }NҀМ[4ه[Y>nzmi|f*Gaٓ`w04g}U:ڇ醏nx[/޸a\zWvߖO db ī 01 eVFXf~2Pˬ>rD2̜=mLMRQ;G318lvtl#&(ǹ_=:}\'mк@ihݥwm ORܯ2(l6qw~a 'gޞw: Ļ>rׂk 3Q ^>?35Q.`jcQ35񉒡s$/сYPJ]W*e}#[pga%#JAJ}48L}ʪm0}Bua>RŒuf ͙=9W9VK67XšU2`WH 5>R9^6@Ila@ޚ4aڎW|xi烉 %4vFb.Y909%Y6& XfceX*/XjLh8!lhnJQ/0~ ]nrErʠ2A:e&`[zN c6=b^u ^pšc\T$ -Q ;u.&y p+0 'p\SAPY8G@ 9+:3}[ ( ƸiLVee[yVZXb<&p_CdEN:42cdEehAs3sp%a8qvDacE(09,U_רb4QL_=(0aa ]5ǰ羗^z]g59dܚcեqě9![sRs N 6o t]{b&B݃yfb B/8 Ap,$}Obe=RX0 xJ:t9(.ɸЧ>pD_٨LVdssLayL+k%}/VF2Y4ƚ[lLe9Lhd%X57h6jܦ9v f-o9IL( ǂ?;YIYxՃ;Zjcx2n]U}2n]q[`qoS7}ulO= E|^xx~􋏺7?"ujx!TSi4fx=AR1RPAp]EGD[eKS*Wp_24Uf7Ptnir3XV}q]"6}/GD>ۧۇhrk05{F5EsCЀ6pKr8oe֜%)O?v7^x|:.ZaZ*ٗ#rbrkkjPօGi`G/3@=_?ӯ g.Khį9.9u!XNO%'EYUN,Eh/'}c)}15wQX}橃 dr0^ո'*/EL 8q~`J͝U'}͡9߇aqw염c r;?w-Kocǻe\=ld?S-hFψaO*⠔J R@nFĈ =E-&ywM&4Xf_cp W (Lbt\D>j\|T8$1WqE=Ud/@(Lt]$[q̸Eb`Ac0mp5wۜ5/k'm#[>l@>?E֣[ie[k?vϲ%# DRRdR$/$ E5a$"XrDBGD!^~ID0G9eCs!p9˙\J1H ʑhwV9͆gC}ʡUvgG{C+?sזm1hIPJheNQMOn$oyelvƢ>nR|3K&"'%!xHUnC{7(:F8*FK uU'UUd$?ucOϚ/@ c5Xs90Yk.9 K;k鄼fj^jG*)G挑Κ>VǪ9rlt?iNs< V@ôfqykV>'>'wݸ\+@nl['kA~s;QQ<A#8B865B[E3 ҝ%oFF[~P8Φ+*ǵA tL.2> N0>Vr_>8~q_TCb}З K>W>_k|%mnaӒм}%@h6e`O6g}U%}@WqϽlVťZp DVd-b3"n7bEj&R+p:YYHf(",+倭ogFrW LVdj*ppV0>묬h,dela6vJ&6 X_&{q#YڬjeppM̖{ᝏ8x`er )?ᄌw#KnvgP)Q̶ĜNHBrsp1S܌N9JCz!eOݭ_ pcfe7\,W#41R! W>|N$T%V.hMɊX9X5&w%4g O0pm+\|/= 3I0(H0֜Xsui^fB>/vs}?{E\«5t o/ly-8!4[ZUDdcr`4*a""l\VfɪJ92,V`'S/d(ǑȊQ aˑ TV}${H6fc}ʱU,dm:~;Yv u=goe_df-G2!*f"4.E05`ry0spa5ev,+%-  ;?( dB&% &+نSh=K2YV&+,ikA/R ͹V0z؅}$JAsi67naj/+\I0 H0ƣL_RsPu!/]Gco]eӋ>;cXQ(W|a9L&(GUmUIG9nh~U/hY,Ǵ} ït:KrĆmnoi}+O`H߱rCȲ%s|L>hX_%0"c+u*'NEds^Aj8 }j^>r6 9Bx9mv$ǴuD㖃T?8=XJ.[v{V#;׆}Y "D'V#r D0ZY)”2+CXft.#U)Z} ,3gDq"^`r (/U7cE3,&(+Fs+VIG9e9z9&ڝUN96qURϬWeJOm7 6+n[D'nMX_" f;~ʷ<a'A䩠;fNtB6S_`75!j\b\Ő9͋fXσ]q:c zk!S,W1dWa.b՜vhoP9b/(LjTˤ%ߢ!aDظ}5/Uls[v͋~JًX9즶|=벧27빼B=scı>۫ މ6FCnU߅n2TJ93`1ʩZ)ZC<ö*؇mTTRr<U$}asxUIl2^lrͅt:ڇm.X}}gw=MTO|EA&K;(Tc-̀ \-UT{EES [B 1`5Q tv#3FOU8KM ;Y-7L`^h#-!pYQrW >|u #Iцwz4ڇe2 @gXfrhN%2 !4gWIU >6'S6kC[}~EXOqx̐~ξ׮n .DNo+K$$$j?Y u>*ޠ"aѹ9 胚'8v9U*p?i[V*8K}BsG` a[%<_OL9^V9X񪤏q'^,is9}ut}X*'{㛔}OSb z _n֍٨(&*HZ{ 3YZN de` 3GUdUgH[a&"}eG0b/d%5ǵy̪s)Ѧ9d}EsևgANVp $= bv>>k;?O#Is5pY01kWkٺJv,}̌Fef1#@%Xl]&73ZUspM\sUȱa' _2 +)9"`ֲS>rWpd2l^vcJ*==7<.6g9͍C+$w9uGǚb3f&+riej|ٟY STWm2YW1噋0iࢺ+b+ q<^&H&+K.fβV/S%'˱2Y)JLVعfOW79y/{%G,a,Ŷb͙= \{lQHY=Wn(3`}V0yu!߾sQwMҼVk<%KoYuզX[mx2n=lΓqMkW?=TQ ɿf$F8}[6s spQ>T8^8=~f¯89h|.*adEd9+W|A&\cc=c}drX 3YѱЇU`ֲrp d1Bfac9V.X${ XlfTVFlf,FᬏV<({/jf! Wk6v4]f:w<+DG6%s^qYʌ'}qHLcUdVO8UЧJ9H&+f1U_l+{Xq>r.9&(G^*{X5,m۸p]T./ƾw= kqbbYfjX/p2sBKQYdK=e6*+ULĭl/c2Y>hi Śsܚ褏G2YK\ĉ>,VGĭ%[=LceL6g%{G#cnvm},**k>GTb-Qnԯ,1_HT1_ _Ry5 9FT--qԇø8>UqWQU>NWْ/*UBY1ȑvcj>Q9EaNwmg2;iU'/o(l[@W_|1ֈ$:/?;DOP(G2U(/]KuթŮ%8^%gu"ԚRzlY&$Lj\CRsU<|EK ˌƌ`## ū_sDz/,y?W Y|"9(,*gCf6˦?=~koK#[9xrW zGL"C1ZY^$RUrV2;;R]5&xU/D+҇Xe q˜藉6Q9A Wͱ_UO2#Kp:mPm/~ NM^,PW|#nJ>X%pۢ,Xf@!%$昀3p1Oh |;U*ÍD)a51bps~8ZY^eb74ر\pV=.eA_ _  k}/p*RsDKiQH+GDXX~Y5vwu׆{7{r+_x rOS 08*i, _0~MɖIZ*ZjMj㨏ⱊT)Զ_Ś)bnCCsV\IeD Wq6wWrͭrJ4/cqOܖ/>o¾p_*'κׅ]/uas=%9h'*pi]8umiEFP*Ԇ|PZn2 8W\EWՊw>܂>Xm}CMb5}ڧTd*0 ۇeV\k^G/o7~boAg>m}.[tc6/o 4k`,fY:5Ǎ0Y1Q`3V9U3,i^\UsT~I&+G9,r۪>jrr1YUQNq759{UN901"^-^xamK'.7hZ*2'32x:K@/qpJ3cs3spm^dE+o2ymn ] LrfB[LV L cBђɊαCŹh9kAg]T p{spAs`q_[5ib!Wa6}$=̪.p‰/KXmΚ#3m|h=Xb] 7\$wTjkVka8=V] sWr0l]U0#xJ8ˑΪaX丝117>& YM1 LhêS`dUArJ 0gk,r$KU3{νz/[f%䩫~޹[R /M 3sp!98tX̎昢1K2Y>ٟ$'0߃\^6&+aV.\dr\,dcG2YA#(0o(K63mafK0)bͭa9/9+{Vk< (@k9M6uwwk/TXN<AJy3$W:rkY-.HEr"Aټ)G}-JT'YUs>1,P9Wмz9EOTxe5;Y2`2{=Aq[Gwb-o祾N\haHc_xl}G66 w۬ Xxu ͤӔ졚(7.#09χ\,hYLŌUN^ vh;'@D\53Wa}[2nGK Z7@A/} عGʴcչX  b}X&|g,)C3<;رMws7"wJ»q@Ѳ;ອo}M ;-B)dz^V C R&k-*2)|.]Ŕg4!^קJ9/RR9V H}lr`rk|r15^g9N%5wWrdKi9ĩs~n0 N͉c.}x F~x-,b S"xgdTp ]⌘vf'ñtRèd@ StmWg4\'2WaؕBgLj6 G4P%}iΉ` I gr(mM`12Ƣ>RfazFQQ } IDP}iKWk~ q+w}9~WxGa9#pQŁ׭rచX mZhE̔XfexU,̊HD0Fa%(0a(rfrL;b;Gx(leUFq/D6vc|z[/z1jqc,cBN7Y?ӏ%8$\vzDR72vR9?k3U AX .#-q^(5d\` ;hB&K(/"&'O^ H¶[2>[=9GLPzVU65LLr2cEgvOn+18W0W?Q>XsJ 3GQj0|R1lhm͜``:OlXZk.~Ta&+ن0;ȓFtڝ/6 F&["R` 0ƪH!Z4nӜ<"}AŒ,,R/uO? eLMօAd{cmjyqqě'(;\s&"-j{hC@s=ؤ644W4uM .])1bj2Y1%ZbIff-f2YqZrp1W rX&(pEa}rlLVC6,31;4,d9V}ͬTs0M%V*w}FO?/gjrOxs\==̎]fɸ5=S\P:?iXbr9-T}BtR{fc9,O8fp`61eeB0QI.f2Y!*jLVsqT(J&+r+UAJꃾ@U)J2ac>Z .)Ӫ>)~>\gz" _Tp$\8QJ5Y6We{p\ MI~I|T.FY'.IAMh^_AET}&(G"J\I'9siAm۲kDG7L];vxn_v=psp*VY : .;E8јRP'D5h?%2P,Ìb-H/.ȵz-\ p> MEM(&W1dʫg#6 "QfLAYsn@kHL\Ū9)irE lӜkcUdͭA{{g? 6Z-5Z_$bYas CotY\debQYHgH^Fa96,g/虸G}$">hn69Gz/lr ;[CvVKWrL?|yӮЗ%6/-{C"lεݯwGDyXDzJ.qPF) +%i^9̎ed4 /J]@4ӛ eR`"2Ph&/trWʁoyE8_Q#RY 9Rs:,X憜!GY&JtjyW;;;~h-tF|O[,O+VULgFr3QMLheJ͈ L_}@*E3|t(ZJ JCefX4\Y# M!ӎr D 1S,>rlgk (lV`vmwL}QcMKm%5DX~l fMJkF.h 9 f-TH)MOݨpTȄFTs* BysVCnaR>|ĊkՇF>47uI!魏m}nO^zB5{ßlXw}sWג9-b&+L_ T&1,935I9JM:c2Y9B2G63O*0YMLN>V9e*,qL08Ŋǫ|:ܷ[k}]mnOnz(><#qjU9!fbv,ɊҧKufzD39 3ӗ`b&UDKcF,q+J Q>x3 繩˔>eJ9jn#2Ys/ql۱sR.tws[^|-C>۶|~[+2S~L_ T,2Ur*3Y9qf!+,dv0ѯU-,aS`Dz1m/G}kV;|I'/x[xy&=mew .d TV&+3W|Z94BբdE4VL_,rFŧdEbj*Ɓ/>x_qNJwr>^x|{j;?֎Ej^%G# @oD2}9 e @߀fs4XhdV}ܬJB&%%d7CA>@:O}}=%+5O"}k (D6~g3_[1'Zgm~^euDbԳ@QL, 1HD0g}lrDa3%&( sFa>rLt"9& [7Hg=#ީTO(" r r(L qK$7;Nyd}(#ݢ2əo2 SŢ9)㖐oh}2+ xPÏ~퉯vy.8mT4JC>{h'@"ٰlY$WrΊeVUsfXf6 Xf3,3G}r~I, rR>O6MZvعeT\fI}6&,apG^_ׂH²]?>% )g[haFȠ2*06Z=pT˕_`Q(U*`"KMS@"Bm!Xf֫LU1W9dd4"Lr"`Q͟;>CBq 9@ݟ#~5=(syID0>spʑkrU# #2Ha/G,3 Wqpp9(QcG=l޴=@ ^c3)XpG-e֭[RjO~p Kf .⩾B+q 5pJMI9@ x2}q`ݐG#5mMI#cry枟[WcSގ}|ӛ:_Daܴ}D*i 29LV8Ɔ3a35#a鼰iݹ= ?aO&bد:a8w](kD7@{^?䝫[Wi6ÛC̊X[z{{E<5LģL+W%IXōEk95_(QmrhxE W/GQ1l͏x.Οvm wѝ%$ɿI \d@e  pBiA#xԊ,k,e+=c u{ka4T1ųplI?'ԩK^RI&'zUNa 8IP;iM'xL4ODzy7osᎵ8ҪYdEeT諸&wƏn\kSߤ. Gz,pa,۩n4QAmH#gyarkVb,|,8҇Ӎb }&*WSs[*c\G>G|3Ys;bMN7^Yq쪱cf.$;>r;>E 8>H32?o_Ɩzav[Nw؃qj8mrwQ޺Wz9Q(^N*Vܑt"j`Fbm&f@&W@)j^ܺ@Ech!=68:% ~擟i]܊k'WΟl(j}iXxPx#繽(Uc3.|ȣܑLqhON.{}RI LZw_ =-q6G?evowӈM'x"APyE*8/c`)t́>$8JD5ZRy}yܲOv9"qɨH)[mZ=O:"=}ߓOZ`ey 3՟BW˩kXR(*/pT:MF,(ܚ,b frZa,G2Y9AڟK!B}xo<ޗ@gmicIG0DV*MMZ`,0TSI54HaEpWnֻA,Cj}&˺B_Adsy8F¹H(0CIKP8gㄷdn7>R?Y4rݾ-0Z+ D%]DqdWv6'9>/E&нEQUj},nVf2 D 9>/ʒ )3&H8h:# X@}]1Z&-Pb]}S_ @Y" #T[xP\_$W[sFV!q]dzh||R&-pI[`r)/6=AN>iI -0ZG&-piX߿LwIENDB`@=Cq$˘38B}o\WpP<PNx\ XTU>sg`f_ܱAq04[0&5- 1gVԑg|rӶ-ة'ǭ45Meۍu2DC6E5rZsϽ\aC;w缼w9!G"!Bb@^FȑB΃ܙ;YO ^=ZB eF%IEMRd+H#Aȃgn~VwlbZ}iC6GR+{VjZ,Se1}2ݝr~7pwd?DCiғdĕc-P>ݚlr WsLSë9ǻMݢ|PBR٭q[f48"L6 (Hq'SH1 8 14+,B;5{dywq! cY>s":c$bD|N&n^qӰAQn7#ڲP7<|KNlH9%kp/cz7ORgZ\ߊ!ײ0EVv@*I۬yABxo 9#[z܉V{^ bAW֭ou{o5` ~ڡq q/`$v_ )Y3C#Y%\p&ѰY]Gl?Y=cz6WXiͻg19r/YF*OAGټttv."` tA/7BEЭ8H%\rPAwRN|DRA%AMPx to W2jP6s]ApQ6neFvDB^B=Q pL`7g+6V\I[24pq0 qk~Дgt7Z7ͱ`7IpsuՕWJQn)>&3 xNRx|Nb6*b% Vd|6&ɏ%Q{_;XbBWx,X2XؠC$P(Q˱'2~ȟ4 j󄿛y\qS5yj~+^#(Ca5pc$o5z/D)HVp`!d)$b6-7梁Nkov3M;QM~ Mb=JGˎq@u(6VB ؾ;?k#&^tG[ -Yh !E[^l/Z`^$[Eۍm/e),bZ.[]([W]t6&.8\-[CqI+ڑ.V cq+0[a2`%˅qO )=ĭ h #d28(e=ȇ0Wrx9=/72݃ _<(5'y^J兞y3Wޗ դ[Z5mz8 rAq2֥R^nxR+pu*^znWoN\W hM\G֥M\wVPܱ/i,o ڼ1ZjZ .,"tAG 6nvu1=B ctmK#;vkn]D:qep24#t=5r8\>iIx17aAvX X.YJRFV6`:U&Oo3rx:<璧9e"/1>J5rҔ{iQQAuaZ ۡ~k5˯Qm~Z5C~x}x:N6oyEZˈoG/ܮr| DhW <]V]v6\h󈕞5*M5^ۼO?8 ӝ?ۿ?6>ְ_4>F2:&jc"o 3&:/VIt;ff=cV 19,*QkN5F5^Fp59ǸF%"k'nz@c'3j#~3)")6YbȯȘD88,iB>@?>@lC;Z[聿82_xJ6P \`ʰECu&.\Z3bv.ϐUQ2XRJ(a!2 sC?vMԙ{5Qv`3ꆉ|.Y>^w!VF?AOFc yְBLxP6dv=EԉZ}ˉq?c'd:>yKDuƯ i|C4 O l@owі5і{kl(k;_uMO>OlTv5,;֏;`*(Jb[d0xǟso ]%T4/m#!O{҆oaJ(ck$ ($yx#N^00??!ʄ7?x=?~}\qoXJ`1.qDž9$`>$V>w0 %0ؓ-NX2>/>H,JZ/UHl3gNò_O<6V5G{'-,/A-@v}I1[zXbKC%6T+_ [`KC[ZGEpo~A,'w,2)Vp11 - umSn$kakhG7Z0eG_63ٳu?=݃`.odU7 w.e &5ذTUoaY?/9tA\Ñ 2A'üLX JAOgpVh .MǣLKuÑytTxwmK;0ڄQ?_rԴ>hl?? >O3A8Zb 2理,]jѬwL3/wMin^bw!cԞ2=[o0~?d >Klv.bg9r⯣E$dumcg10r@( #,Ӄ{lAlJ U%X(=6U>O"dvQ${ƸjD#rOrrO Y=s|})GJR]H o1'/1qcT:ygroF=L~bzRZ#xK @i!Y#ۻϘt߭'gg{ASwOS3wO9b|$8-9qTl>ckU{=EnIzƮwӻ%N][yxDݒn-QyD#|Q^*^ scc`kXp^h 6s F3F #L\p0џs \6U_\1\x/'R$_?lT}"W8L*\y+uǓ$v8R1_8QOFd-P8eׄayAJFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?\$s S|ɒ NN W :c ʤm\[' dN898g qlM*\A$L`W1*r+ҡ6~uPC45jL\(L WfxNhaX . ]ߗ>0?0mx.gǝ>`̠t:z]=;P{cc,4`4C*rNcW,dUUQѷ}"~Tpo0ߕ >La+SmZ:Tw`cHtQ>o4M+J55Mqg`:}orNFcxXK8]^" 6Rݕ\G$xQOjgOD4;om#W TLH2aw<P`r0k3K։whsC..^Y.$c~Ho4,s_XkuDؾWs1Qc_tWWp 0G֝?tG?¡ A^7?CLa+h }~W(1T>A4rMc_P 7?CLa+h }~W)>?¢ 'i&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ Ѭn%GkQM,CjI$}+5VSk],qu HIXShF6 ϛh9w. ZC G#[?v,/VmZMm>g<} G,yKFLErBSZ>]sTi[mFdK|ZzmӴ+Q.H2M,KnuI9x}]\cb,[zw \=S>$ /$ *ᰓuꗗs_ :M2 [ye/St[UYc0 ݜ3ojtm桼PZ y' 7$Bs0IDY4U乕\<6!FQJyqeWݵ~W썿i~%D]GI :&*7.K8a]m- zlt^cdr4߇0qዏ9XmQC֍e#s\Oy%<˻&lv^~8q:;3ls%m2pxznil<[|qךASy#$#1v'4Ǐmb qb 8!d< H5?MCM?B_ g7v{KWe^"b222OwI"\ &6>YȦ H3z֓}O;7yӵ(\CZg_E[q3/QiEr+z7 1U)_6pm nw z`We]~Q]!MFk.1G48G.f91*b~dVWO 9mTcr 3 9$rjG%m.Y% 4ױg$+GnU,̗с;{'{aR˩IZRxσo{0Y]%Z(eUU D|+>"IqQS2cn͌ hL[{KXir@b$Ƌ(5;8,5;& )nb?s0Χß%jxjJdv&6Nm>+lJZ8 ) @ jA ?"A ?"Ϋ%og_< P@zoL?U{u0j4ֺԑBNxݣqvea8g_Ekc;Ge<'oL?UxaےPu[s Q"lN˅9َLo{25\ )n0Z?,gh'x -1?oW1w*M@ZGԲkng.Co bv?pg  oL?U{u0iuuM4ϱPKX?(X??xO -1?oWe]~Q^/i[ev S+|q3~aſ?G -1/ ًĬ@!az=V\jH^I$1*I)4XNA[@c0T  jV|AB%7 q18 A5s,Bbv?p?xaſ?^ixwPe Kܤ7vFݙTz `k=RK[h_b 8)GZ?,gh'#7 &*o&.(d(`dT) O`;(bv?pg _Ux5^EOˋXG _Ux5^E./c??J״ȮA9ta 6T_HWk:bN(GiYtT˟ 5zgdAN2sm|o`"SEO.-ImXwRGzդwboPF29#6ٜ*z_ {hIn<|(~eD]x:o\_[K{gnc4K d"9NaR`ʰ@NKO/tBhύ||%xc&\472k7s$FeFHxCDX=z|c 604>ԏbֺ73﷐YGlvG.b ~b1: bVZXI \pݨ`4.L$kGlݫ_Inw,><80Mk6Ǘ!cgZbAcLI6TW[yAoz..C'iR9YHl#G$,;9%Xqh8fZMs`8u?־1Glݫ_Inw,><80d#$Ʃa[fg3Lw{V,|R6{, U#AlH='[3ts ZT'?"D?mӤYPK(Ե,a Ѯ8|2+]:k%i,$ %mt)Ha[3t~9Ɠ7Y1J>vZDv k+W㻀so(V Ŀ:AHL*R˻vzGXC^Ep\F>c8wTvzv06n|^0'-q6#lm(& ]Ǜo9e޴GO$l%-kƟJ<"Kګ97NEg#ѲЕN> (LaEPEPEr|g7[SKo\(FBA~s'9U72I0d50{#` I'Ԛ-wQE ( ( ( ( ( (+___yzk^EW^_7WS,_/ w_6k>mק9ORQE!EPEPEPEP_8|zD"eMUy &u !P >=?Sy>tn;UDLo?m4}y^dEMv6>E-~ž {CA)@u0;<3?4ѯm]d;UVLF=(/m Asj0Yp9%ߐf {o 1j1<[־)x*6Y-Q! W$dpI,g%-Or3H q!)V#sgFZɖMrʈoaڮX!`q~(';yRXePWR2#_;#-浣j3[mvʱ @\Ο[//53@CuSXV iZ-U|SW5 ?9 _ia|]q=kwm5;\IQ ?9O%\j:w+rI8I My%qkIhOy,Rb$/H󁚥v}k:45M.Sɻk<0#|Ac`l^f\Nld0Bgg glg8+h?lwk"NoOmF'䑣e$ns}ko^<_xul/fOȦFg ܒO 瓍V7%oOMg_Mi!r'y x'湩Ky}̮Mm<;$gi5O=xe[}SWbFwmֽ>*zB(< ( ( ( ( ,O}ߕUݻ?w9LW ]i3^C#ds"d1< Y2rj&}[Eq e%mrv"H8@n#?)¤ga?'דy?vݟ/q5& *c>6mSP*úD흀O'J$-5yp}y%|W-ޥn$`ETg;H`(_>ᕷn5M^I#c gN=M+%jq%wz]x%[7J*H㡨?go'  Oڤ:4,$9%i'#T9m #=@y#ѱSNx丸"%/$0UE$xO&xǾ%[ -HQDCO!W1$[>͗tRXP.n\y ?[/ۦ"Kʼ [E#Sй3%6} ?h?l?h?l J4_oC㟀xMEk@Lq+ž.MuhG]Eso%I,2I#C+ v{0|;Ǎjcº֗"^INyÜ`&~>.?-r|/|[sl:i ey( $99802mnjtoYd˞ U[/+~8jMP%T*$dn J4_oeqkGPhu3BrOs {eoX[XxC˶a?ڊ&<SGԩ]ޯYjVud0WPHFp}j)''^#|^񿆟IgJCqSvʖ^Ogu%HtTmb%^(mZ=x4ȋ2`r@k<5yn<7jC|Iʲa#hmZ# ‘h?B**?h?)D+ IS(Q@Q@Q@Q@Q@Q@/vCZ/ҽvBh5"L +ߩrc/o y_6kXO(ΐ((((kƾ xOoxuIm`X*6;cOA? ~x\XI+? ;vd)F#ھ h7&&6.f4Ct`y B3I OƵx O2*IzFpGOBemk}/W`ƒ$hHC]gx_oo-)&ʓ,=ei4ꗑs %[t O.7<[ji-tsZ[?m^3-ɓ>qo"{9m* dLE}hf`:Mvˏ%71̀2$XV_ ?gOu:"32c~S\ぐUOYx7]ظQJbXmmădN{>NJִϵ\_ϑ0S~NOК RTU*GWw o??M?9?E}S?>U[~w*6scx#Ѳ׾{:Gl$m>m$fO1.@=~UC>NJִϵ\_ϑ0L J4_oh6& /K=ŏ,IIW09?^ 񿆤|W2)dds$Kmq%O1I#J08 ~xC}}di7mP`::UFVhGY?< q SJK 4)W=zi`Aˏ{>XĞ~)xƱSPҹVs;A$#Mz4ߘv%w;ͩV_Lr8r tk|5x?|@>"vlZ+*i1Ā '$}[guKʕm9 ;dpk[þׄ&4eFp @23Ǘ|{wǺ;[ UzΣ_yϊzO4 /T̺7jU e6?GW6[D*92<Gj+߀yT R8.䞿 Y^YjV q`8$g֭O|=i_Z2O%;s9 Տj֩QEQEQEQEQEQEZBh5"L +o/vCZ/ҽlIg&7~h_ k^^a@mֽ>*z B(< ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+___yzk^EW^_7WS,_/ w_6k>ȿw_6kXOD(ΐv6ZOb'0XUs'͝`JoఏF6k nv}.YZmvN?&1үZPv5yUVi,pq$fs_KIM+I ve@,pNW0^xKTotvEu-g׈d?;/@I`Fsr(=)L.;VL%Z4} s,&3nBY e.,pA (ĺ |Ym0A)Fb\V;:ҭ:ՅҴj2@Õa'|~X殼M Ahr@Z htQVFܫ` rI|I. {dXvE] T` hji7:t5Dj a#DEĎ$UOLK@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@/vCZ/ҽvBh5"L +ߩrc/o y_6kXO(ΐY-^NnLG8A{~l?[Q7]x*m;IS'ϝ!(&uVu-fXx<0ȍ帑vgs6+ʎkkd>eT Af`9bG\EX4aMsu.e/ iDE!`0ݿ-W5manoʲ1@f2y UPBƣhsZ]L$Z/U[rJ6opv'~? rG|F.m]Y],14D8\RAS+WpQxjSmH]][_bce NFf\=VFtEw[ʬHRG V}*OCmsy7 ^kIzeqwZo1%Q?xG/[RYD,+ lE۳;67u/䳵Z; @)46AjHYI-S|Y<́/$wr>cADJF6rI5_:YP79 w%WvJ(a\ mc·M)gspu:b-r6rNCiFdqmQ@O6¾oa7q}Uxu [mHaϐNj7W0zJ8%]3tfv$F,obܣH7(3>-u;wI=V'Q8\JKܞ'!?(|xNXmhK[G+4@Ffb0[A g?ZC'>V,.ݧ[^}{>$ɸMG׳ ƬQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!GB:w_KYq`*J+___yzk^EW^_7WS,_/ w_6k>mק9ORQE!R?oK8ykVِ/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEc/u*:_?Tu-g=((}_ב|UWEy_zg|i^GO |4k/|5O0_ k^X=J!EWtK8ykTU. ]ѭZCfCܿEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEZ#uQԵv (k^EW^_7W__yz?Lo%ѯ@mֽ>/?z}cT+ Q^y. ]ѭQT7wFi rQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP2GQj%]EGRsq(Ey_zg|i^}_ב|UWdK91F^ͷZokSԬ'bQEyHT7wFER?oդ6d=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!GB:w_KYq`*J+___yzk^EW^_7WS,_/ y_6k>mק9ORQE!R?oK8ykVِ/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEc/u*:_?Tu-g=((}_ב|UWEy_zg|i^GO |4k/|5O0_ k^X=J!EWtK8ykTU. ]ѭZCfCܿEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEZ#uQԵv (k^EW^_7W__yz?Lo%ѯ@mֽ>/?z}cT+ Q^y. ]ѭQT7wFi rQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP2GQj%]EGRsq(Ey_zg|i^}_ב|UWdK91F^ͷZokSԬ'bQEyHT7wFER?oդ6d=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!GB:w_KYq`*J+___yzk^EW^_7WS,_/ w_6k>ȿw_6kXOD(ΐto7jѿ5Hl{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1B:w_KQ/u*:ETVP/ kȾ*?CJ ]ּ3o?4[#~Yɍ_5ȿw_6k>ȿw_6kX?D(ΐto7jѿ5Hl{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1B:w_KQ/u*:ETVP/ kȾ*?CJ ]ּ3o?4[#~Yɍ_5ȿw_6k>ȿw_6kX?D(ΐto7jѿ5Hl{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1B:w_KQ/u*:ETVP/ kȾ*?CJ ]ּ3o?4[#~Yɍ_5ȿw_6k>ȿw_6kX?D(ΐto7jѿ5Hl{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1B:w_KQ/u*:ETVP/ kȾ*?CJ ]ּ3o?4[#~Yɍ_5ȿw_6k>ȿw_6kX?D(ΐto7jѿ5Hl{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1B:w_KQ/u*:ETVP/ kȾ*?CJ ]ּ3o?4[#~Yɍ_5mקט|/|5Os_ʞa?+:Bѿ5*Fq֭!!_*((((((((((((((((((((((_?Tu-DZ{;QRQZBh5"L +o/vCZ/ҽlIg&7~h]"|5O0]"|5Os_ʞ`+:Bo OU'5biLm6NhʈNm9r-"(yA;/"vm6Nh*"yA;/""*Z(aʈNm9r-"(yA;/"vm6Nh*"yA;/""*Z(aʈNm9r-"(yA;/"vm6Nh*"yA;/""*Z(aʈNm9r-"(yA;/"vm6Nh*"yA;/""*Z(aʈNm9r-"(yA;/"vm6Nh*"yA;/""*Z(aʈNm9r-"(yA;/"vLFVi};:REKwV (/vCZ/ҽvBh5#1_WS,_Tk|/|5O0_ k^X=J!EWtQ@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@/vCZ?ҽrBh5#K +ߩrc/5ȿw_6k>ȿw_6k X?D(ΐ((((((((((((((((((((((((((k^G[^_W__JCJ??%_o y_6k2Kee!՛o} RXO֢[Z"㶳`lnN$$0qG/|="g$NkyIETTdK|v2]y&rG܁Vm=a2G6e_d{m#)-ge8ݢW0}NYZ(̐?C唀: oK//BywwN( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+__~]$YP/ kɾ,+I^GO |4i/|5V.ZMKkh 6W3w/)鹸φAGȸth;rGWsjkSԬ'bsq?V{}gHXtƗ3(:~g=saY缐xL<Qz~ee]j2^m>YvF#8k,N3|zOsS`7(ŧ>N1?{ՋG|G/ݷqOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qO ;j+' hԿh\}_ד|YWwВ,+#]C+m++>,tftd/%Ӆld{W,_/-˕]s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=m99#>s=u;}\MQ.٠FjihhdB7BJFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?\$s S|ɒ NN W :c ʤm\[' dN898g qlM*\A$L`W1*r+ҡ6~uPC45jL\(L WfxNhaX . ]ߗ>0?0mx.gǝ>`̠t:z]=;P{cc,4`4C*rNcW,dUUQѷ}"~Tpo0ߕ >La+SmZ:Tw`cHtQ>o4M+J55Mqg`:}orNFcxXK8]^" 6Rݕ\G$xQOjgOD4;om#W TLH2aw<P`r0k3K։whsC..^Y.$c~Ho4,s_XkuDؾWs1Qc_tWWp 0G֝?tG?¡ A^7?CLa+h }~W(1T>A4rMc_P 7?CLa+h }~W)>?¢ 'i&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ tq0-1@, aTNAkLX2y6r=MsyI;Ќ'QECgմtMjX}=٩i2lVF 2HG#snڥͻI͸珡Cyo)`ip(XUw};4.D_љ#=֞[vu.j:PIl47$F@j]B]>.ax1H-Lτ)hwMUCB`}supI֍}RuT!E_oϱ?!tTitO8v[qWק_k5hcqHko/b3o61._~uqQRAgռWA*HLdB`9eijgb_NS˛<߲9WT1$I9by=ٞ|cW¾Y3$kl!SӭK-nY}7#TFAjYMu, E)}%܏ev^)KR*Ϳ%pc*W -ͻ&-y~Jcٌm$11^!uGRf1?",R oHLVǰ9wmߌ8|$h%'(4އ8=C^tu)h6L/"g?aScF ~e)Y79&m#{7gv]&# * Q?wt%;pl޳j%r$<ץij6|tM'=J魖 "!]ASU8g'܆CB,NI n%K{H2M5r;`e8 E t5E.!ǩЄ|S+8I9s 7VWs Vuh `BF `Q7oq:OH\oT̘ۿ/c0+/b,伿f?_yxs$ Q6/m_;RW3 ;ͧey WRTG!Hd9^!uGQ!uGRYd?+>4RIIkCPYRVO8TE7<1ۉzo?֏?֎d-V}Ʊi^QlR繆x$'t.bݣGH'ʿWؗQ; *=+PU֥. w, yO ̛#44akTȋOW/f[3ts2 oLƗmZ4wd?x4%oIa>ɯOejǥ.&_m/f _k7kI-^Ss'Ԛf)b5v7KM H77W +.a%97 T:0;pNշ7GLe,7΋d|fAa2ǭu XTE8t9F_.UCx8ݞS/?z}NkSԜ'"y ⫏ZOOuitZՅB#3J- |[M u{_R]Elʬ3 TybUI*WzsJlIc,z&htK @0s9Y'oiwZvvl5a #?*E8z (^ſ?]/.Hemo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4Pmo~F4P9ZdE DA`:>??K ko/vCZop,7/|5O0]"|5O*zB(< ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+__?K ko/vCZoep,7.~mקט|.~mק=I!UQGd{ue8 ʠ՚l@ Jfimh/6OG' J_z[?5w͓CR?Ə=?]d~ty}:=ԥ_OOoW|?ߝloΏt5)imh/6OG' J_z[?5w͓g[#:nCMgg5k!%K"Z=ԛOOoG?ƸWZŗ:*anW{mg߹ @0G N-Zi].XhUDv2G_OOoYSx;K,X{to.F(Y\`?)H~"X,ogmu EдEH|roK NOOoG?ƹ&a[YI%,d3!y;waCR?Ə=?]d~ty}:=ԥ_OOoW|?ߝloΏt5)imh/6OG' J_z[?5w͓CR?Ə=?]d~ty}:=ԥ_OOoW|?ߝWٯ,1# Gimh/6OG' J_z[?5>6կ+뱋&(;UibL cxBc%a^3W6_6%ѣהBw$mm NOOoG?ƱCj}qEsa5ew1UR]~a*w%"%UuHP\,~P[ {_OOoXk,iFxϝl#'_@t}:=ԥ_OOoRj29.vǒZwp@mG4imj'.ojxIDlD7[`e$!mG. jtz[?5_x-:,ڪƍ vV"v6jVPqq T71&ݒ.HŹ~ :=K۴QHOe)X 7nEd4 M=?z[d~t{KOOoG?ƝdsΗF5X H!r\+~=UB_ :IEk ]ּ[Gxy{Mk^-Иc 6$%Wnh9}r c}.?*1>^nY}-P,|Cz5bUCo(v:⺍?V)hJ,ilqz.tc}.?*1>\M国eᢑC:3FG@h톡.k͕Ԭr’ce'ۯ>D:1>GKs>oK{yb,ЉgXʲHo |B0`CJXnRU5FW/tۋk1 TFp}+W]R/ M/nqgG-ĞR#zǃҹ]rS$adm7ȒQrR}~`BP\AcgK%#_7C$'?+Թ-mma,/8c 8?y2;aٔ_q `̋}C˓NjY>V[(t䅵o7^2nR(r|A%|* _m_b 0CnRJHp#`3U-<;ak< K#C+.@2J0: WT5n9K?GKGV̌ v'kd_ji h"9`c$@"$kvB I.,4Pa i?}:M{)4tf2ľS_#V=e{DUdy fJ! ީ$)!'iʂi??\UsV V7X3-mƮT RT1[ ^ȸ)rdmYe;9\꿴\Uc}.?*Oh!օKaooc~QbspH5u{mXXfװmMǗ by^ge#'+T1r c}.?*1>\\:ֳs>@ҙ/7TKwIH՞>o]O6 ,SK_hvώy׃G" KsLϥ9WKf515o6+Wf_3 e.+IW]qy\$5K!s&PLe$]" KsLϥ9V.t.gS+#i ;!Ip hArKsK=!m -\A4r'KsLϥ9WiC([H" &WM.H-JA̚|Ornn5icF1Q$p@Ȃd6i?E_}Sy7UM7DVSkZİ-HBF;cv cHִo$q|),mJH$F.P РkHluk{%)oOqfl")mT_g|S\X!o·!1pvoEiޱ VfFN:YC3*HD%AV9NBP"[2l2q)۝4]*Q]a'Epe 3G*Ez>ĊMVkhbZJyvaT. `*Y~fηKsQʂDxA%11sh3’q9jrok[Q涶@ͬ\B#Q ,@8$n$4ri?I]ZLQ^Kc<5#g`6|?uˋL\Wvu[Ff;Iἒv,Ե SēH3Z%>r}Xw?tb;&mm8MHFqq<Ydd#YIFB9!XL0_$Mrx26OUav9PfUX>c }j$D(BbX oͻ'7XҷZ4rįԨG*B&U ۂ,r,i??\UVD4,2 3]Sumj '[}")]I,p$<`ޫo$ZLb8E=}Ség:c A9UnmW_jc.RVP/ kž4ǎ_w״_?K k({Ifxῗ掏.z}yz}NkSԜ'"aYdFr0VW'-}kNѿ53g,4帶C$vW94\: :{HqA,!L WcuU˿亸{ 9.c0)e>o r$$b0ۘIs:WKEsC°-ދ[tӈ`-A$w^)K3AYf<II( kcy bE 3Ͻ3PuiXi׾V|$ٜg8uP5uX/kfl$| r=HUh<dmۘq>(ke gdP\09$4EᵃaȌǖ| zWCEr:+n42ۨwm[nIܡ*i|+k[N0H@U@YI.-y20N2288QxV *Ny1ںZ(Qk[ųˈ/ț) =01\զma{U(5Eo!BIθI#D6l?B 𴽜GzׇuCo0hN'v]:B`$J\gnq3*վekk VE qDQXc2vFzz5enq#7<0y>6I-ovVwR\84pBm!3G.nx}koߏʆQiIwFFs1˹{8wiN=euo__;XF&PE*FgXN09c;JX=eu5pCi)t-JQWEFmܾY:I<3o\r3pxGX5X Fm;Ċg 8'zhK91j2ZؽK;y62x>g< 9>۟mg9sQEr:]:-:M3K{|vn4ny ǟsZߋ?[tP'=Qq3Ebc~/0% rp}(i2Iq#K=|6L`q|{j !ԥ`R6| q]-q3c~/m@ߋ?G=Vq3c~/m@v%Pw!J#8.8YMfD4W06vҷuWdv |ߗFaR -jv>"T:ϥiUjI*,AZň>Ծk^-K#7/|5O0_ k^ST' K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@pz})cѫ 5Vw%ު]{V/Q+İr??,?眿O*ϱ>~ij—sI<.!ïz]#E }!AxKdFێN9#5bX9Uؖ_'GCM$shRƒlS 6$~< {2yGϹOXlncN9?,?眿O*K/!AhlaUEX"O,ɻk\3jFH9ĊײK+b%/Ȅl jbX9Uؖ_'K'鶚fi1l5UrY؟:jb/K/yg9wV/SM~ܣ 9 +y6vbdi]5252QYQEQEQEQEQEQEQEQEf15bMmjr?jk T-1m^Ok^-1m^Ok^?fk^-K'7/|5O0_ k^ST' K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@܏&w]C6"B6FkK+__?K ko/vCZoהq/]ͷZ/ͷZ8OD*]AZto7j_*(((((((((((((((((((((((վ?V+[Z܏f 뎁+ Uzm!oZm!oZň#5𕯿/vCZo7ExƏCZ?Y8ῗ掏.z}y^ͷZ8O*]AZto7j_*(((((((((((((((((((((((&iifO|W'5b5݆NzQm/m^Ok^-1m^Ok^?fԾk^-K'7/|5O0]"|5O*zBѿ5*Fq֮8l͞(((((((((((((((((((((((( [GMX l1]B6"B6FkK+__?K ko/vCZoהq/]ͷZo9ORpT7wFER?o ܿEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|&Woqɫ?aSpŷy?zȶy?zJExƏCZ ]ּ[Gxyup,GGG@mֽ>/?z}NkSԜ'b. ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEf\" ,m' ~#󬦷gܻ }=JExƏCZ ]ּ[Gxywp,7/|5O0_ k^ST' K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@K"tR'AIn3.CV/e_ )3VP/ kž4ǎ_w״_?K k({IfXῗ掏/?z}y^ͷZ8O*]AZto7j_*(((((((((((((((((((((((_[ : Kqwy$/5k^IO@Rk^-K2 4t y_6k>mק=I!R?oK8ykW6frQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPHG/TR[˿կ{%>!_BJ}Lz/vCZo7ExƏCZ?Y#o_ k^^a@mֽ>5|N1 Fq֨]AZ6{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( o*D*9Nf]_ ) Z׼Sg#ԭ}_׋|h/?5iP/ kž4ǎ_w~Q̱/^ͷZo9ORpT7wFER?o ܿEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQER'AQ"t25k^IO_jВS>k ]ּ[Gxy{Mk^-!_BJ}Lz/vCZo7ExƏCZ?Y#o]"|5O0]"|5O*zBѿ5*Fq֮8l͞((((((((((((((((((((((((%[ : _!_BJ}2CV/+__?K ko/vCZoߔ,GGGEk^^aEk^ST'K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@K"tR'AIn3.CV/e_ )3VP/ kž4ǎ_w״_?K k({IfXῗ掏wmֽ>wmֽ>5|N Fq֨]AZ6{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( o*D*9Nf]_ ) Z׼Sg#ԭ}_׋|h/?5iP/ kž4ǎ_w~Q̱/z}yz}NkSԜ". ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWl Q B!*bG g `(=4ۘj1:K2 4t _o _o9ORpUflQYN2 ufѿ51OsvB?Ə=?oQU]?z[?5E OOoG?Ʒ!v`imh/r.=?z[ޢXك_OOo[Q04imkz9bf?Ə=?oQG,B/_(]?z[?5E OOoG?Ʒ!v`imh/r.=?z[ޢXك_OOo[Q04imkz9bf?Ə=?oQG,B/_(]?z[?5E [)2!1SѨZMGELw*Vlk%1´}j%~O*75p Eyd'ݏt[ǨܛrsWG4W_Sz7QG,?a- _??dG%~u;Ǩxrx+ hßҿ2?xoX_%~sWG5Q=ßҿ2?JƺQz9asN լnf#"8n@kBx-dP7?S8Cw+__?K ko/vCZ#:_}]k^Q̱~hmקט|/|5O*z BkxeݮeaS!]:w Suo"t$9r * \pٛ='ӡW$UP#7Za `K}xKkK{ΰIuD,FYnb/y,#U$dy{H#7ezAYwq טx"XYXm샊)VxlWMm^Yd3| 2DfFIcl+_lrx#p隒Aܖm1Lvmw KZt7rȐ"3_&ՍwR\x+MyOo[ y(R>^uZ/jf[HL+Eyޯ!,3lv`; +ZŤz}$mtc-` nQ3A9sxH/agIi0w!۱%+FVzl1k7:}ż6ciH9̭{.QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEZMGE?tTOq?g.kw"lq?i.krOvE*nUj~ePY.|;y2W F7<)FZfh-V$˓GVDᐂSj6s۬v֞m&b0~S#ssֲֺj!KdžD x !v ye9#8kXUڭx$Z>#i6Bf*#yv9uU+n/`ҵeuIecu 6;@.Ngj>İ˩j)bs 夓*He|`Z:0XMN}hʏ (T x}cGn.t݀H[tpO088+N;e6tgl[+LkҸXvE(XYUZ5oYLUD'w+__K k//vCZ?ߔȿw_6k3_ʞtB KVe&[HF#<SQ\1ڹ/͟Kgs5\밬l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2 lp.ɏz(IX¹G얗S[\C{xbH* Կ[ώ7[Us&lc]m>: [ώ7[Q;K[ώ7G%sGKU]oWsb9}?% u+uE}iwoWs|u_آh഻_yj:Eo=,ru5E)J Jڲk^/5|N1 (((((((((((((((((((((((((((}_׌l'n%fP/ k~6ǎ_7ץ GGA@mֽ>u.$=ܫ",8Oע>qOsS`:AEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}/.=5/v VO.=5/>q0`vBh5:O|K^e.AtƝ3!y\+c zYO>K0 4yJN(@ p)~?4Q_z['Fi?EBO=h{I}(i?G'F(DO紟Ѣ>?4}'hO=h{I}(i?G'F(DO紟Ѣ>?4}'hO=h{I}(i?G'F(DO紟Ѣ>?4}'hO=h{I}(i?G'F(DO紟Ѣ>?4}'hO=h{I}(i?G'F(DO紟Ѣ>?4}'hO=h{I}(i?G'F(DO紟Ѣ>?4}'hO=h{I}(i?G'F(DOS'S(3J_?$$If!vh55}#v#v}:V l t0655}/  $$If!vh55}#v#v}:V l t0655}/  $$If!vh55}#v#v}:V l t0655}$$If!vh55}#v#v}:V l t0655}$$If!vh55}#v#v}:V l t0655}$$If!vh55}#v#v}:V l t0655}$$If!vh55555#v#v:V l t0655/ $$If!vh55555#v#v:V l t0655/ / K$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  /  /   Tkd$$IfTl t |#       8  @   t0 $$$$$44 laTK$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  /  /   TkdZ$$IfTl t |#       8  @   t0 $$$$$44 laT/$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  Tkd $$IfTl t |#  8@ t0 $$$$$44 laT/$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  Tkd$$IfTl t |#  8@ t0 $$$$$44 laT/$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  Tkd$$IfTl t |#  8@ t0 $$$$$44 laT/$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  TkdV$$IfTl t |#  8@ t0 $$$$$44 laT/$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  Tkd$$IfTl t |#  8@ t0 $$$$$44 laT/$$If!v h555555855@5 #v#v#v#v8#v#v@#v :V l t0 $5555855@5 /  /  Tkd$$IfTl t |#  8@ t0 $$$$$44 laT*$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  kd$$Ifl { cs # l  l       t0w#6$$$$44 la8$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  /  kd("$$Ifl { cs # l l t0w#6$$$$44 la8$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  /  kd`%$$Ifl { cs # l l t0w#6$$$$44 la8$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  /  kd($$Ifl { cs # l l t0w#6$$$$44 la8$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  /  kd+$$Ifl { cs # l l t0w#6$$$$44 la8$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  /  kd/$$Ifl { cs # l l t0w#6$$$$44 la8$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  /  kd@2$$Ifl { cs # l l t0w#6$$$$44 la8$$If!v h55l55l55555 #v#vl#v#vl#v#v#v#v :V l t0w#655l55l5555 /  /  kdx5$$Ifl { cs # l l t0w#6$$$$44 la5$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  akd8$$Ifl 84 H$r        <  t0%6$$$$44 la_$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  /  /  /   akd;$$Ifl 84 H$r          <  t0%6$$$$44 laC$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  /  akdD?$$Ifl 84 H$r  < t0%6$$$$44 laC$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  /  akdB$$Ifl 84 H$r  < t0%6$$$$44 laC$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  /  akdE$$Ifl 84 H$r  < t0%6$$$$44 laC$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  /  akd I$$Ifl 84 H$r  < t0%6$$$$44 laC$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  /  akdPL$$Ifl 84 H$r  < t0%6$$$$44 laC$$If!v h555~5~55555 <#v#v#v~#v#v#v#v#v <:V l t0%6, 5r5555555 </  /  akdO$$Ifl 84 H$r  < t0%6$$$$44 laDd gD  3 @@"?BDd ,zII0  # A"PB @q;`22,BJM"@=$B @q;`22xQ EXnX+Ax |T7=a1 ;^DTnJVVqj-EPDV}}'¾H%9g\nxmۙ33כ;c1 lBmt1wӤ1c>odL-wjLyiaiT˜PD3_C] 2t1q8@9趍Bݶ+;5:v=.SwzH.auޏwQao7&ʘQAC|Z|v|Tr?n%*x[}`Wdbdvft޳szFߚ|MuNp۽ݴ;C{o8?;1O{f`l1qM5wPn}gۧn70~СSs.YYu|CkO:7o9|QaY矕v)\_k9Æs=3qBsgx :9KtvVlpuĮξ;>=s29sY:;o o99~,9xz8z3_嗰}|=`|o qݐ!puF HgQqƏgIpOqO gYqϛYhge/+իVq֯[ټig[B[cNgݸ{~t''qRSRpӜǏ>;ߧgg9C7opy;}w#];cz;kƝ53ޝ=qv]wܛ: b-.^td\+wҟ˗X~5Zyz/5b].w]=w{͛slu&l}ݖ7qۃ.֤coݤL{w?{Zu{=OXnv5򤛖?{3ng]m7nf ]s鿹gϼf}Śwϟ}57݆-"\:؎5Cݏ-W]l{5a;kzcʿal5c+]\]sϹ*O_q͆]ۗ=r]؆=隬vlpM_\S욁fc)yOL}5 tM\S [߻C;s/;˃d>̯]s^5svM\ܯ\Nܗ_f5nwMm95k~s+[{3xnrYkwk\S-nS+n᚟5w͊fES׬m\ӮkwMzY5ٵ\皮Y_Ik@<Ε\3k/뚭KS -]//Gfgkk6<q1_e:Cc9擣i옝Ǵ݉Vbc;fjǼ1:&kc3vof8T&9&qcfv`c^'uwc_:ގy3|O3$|c۾}^׾O;f_O_c1wnu3܎c8Ǽ19fdMtS1iecûlp̩c?xsx+޴N77CWěMxcǛ# 7QěpMlx3xmܮ;";Mڭoloqyi|MݹfgJ{cv7׷7-joNmob˾io:|y.8{~;cc{[Klimqt֖~|!o:1Eu\<֡Ԗ{] gwڗ}tL#86pG^F{ 阨^aZnφ^b譆^ٟagCo1UCoE~_v0uwC_1SC_C~?v˰}gC?1WC?G~v0* 0@ ;A/Cbg1 TD@v0yφbAُaҶ 0X ;A/Cw`1 Q`Av0qkg1 UEPv0a6φbaٟ!aar#8;hcygp1Pp@v˰ɻaFarG"$;hcqgH1RHB(v0vfφQbQٗa&φb1ُa̺ c0V c;cA085E8c~ nl'j}֬l/ j ȟzg1LTNDDv0rZφbȝIُa5 0Y ;A?jφbȝ)ُaU S0U S;SAðe+=a"w򧱃f?KWx6Lt5LCtOg~ -Y0] 303?41 Y̳afarg"&;hcע 30K 3; A/% 0[ ;A<faf#w簃f?o/l#jܹȟ[0W 0?41|3gg<1W ;ĐMB~;hcx/<İS Iُ݉^{6.5D.b~ g.1V.FnvR ŰG {A ٰG {հ{41سaar#?;hcx=#f?gr" ;hc pH {ASpH j8d'f?'zdz!Y Ր?۞ pD {GAopD GpG417<!E Gvِ"T5 7ُِ*45"7 iُ᱿ِ&cjHC1c~ wφcb8c=ُOp\ 'p'41<+ 'ĐMG~:;hcxo/{6ґ{'A_gI1d$r3K bTCr3~ b8LB)vg)1V)Fivs{65Fa~ {9φ3b83=ُyֳpYb; O?ِ%sjB9c~ g91W9Gyvn ŐF~6;hcxɧ<vܐGifoge!T !aBx⯞ bWC(rÑ bTC8r#~x6D!Z ȍF~4;hexϞ bQC4rc{qφ1VC r #0;hbpy$.ϞEۓϿGu t9>+I?a߹}=nSɎMϐkw2CG^<Ϫ^&}Ϥ ޕx,Z\~Ćf&r{屧[_>e\}Y۴]ʹ|so);ss>`!ϭ#P\K{JD=p9o &y؇7cX Bs!ďч4O[ { (p0}HİL A>ebXe]vr1TrDJvliVa%rW#5;h݇Z kհk4CZ+jX_m!F5GFodͶ6a6"w37f}HŰU [A>bHPV& ?43xCJ65$ w򷱃f}HĐmMD~";heݐ(jHDvogͶ!I ۑ$vl)I Ԑ]m!n5BnfͶvav#wf}H{İW {{A>bا݇}v>1W>G~v쫋*#f}HpP {A>b8=Cv!1$ruyCJa5$#0f}HpD {GA>#b8#=vQ1(rSm!!U )ME~*;h݇*45"7 ivR! ǐ4CZop\ ǐ{A>b8=v 1rӑ}uE.jHGId;x":) 5Dn3A׳zv1d!d;fzC)5d"Of?f7b8S=vi1QiAvit.j8ܳ?m!C"7 YW$}HYb8,C9vlΫr#<;h݇t^ j8lqvl)[ aG evѫ?A~;hՇ4zC@ ! ?m!rC9rCB0vl)L jCn8A>a#@ jGn#A>1D!ȏdͶ"HF!?4CChvl)Z 1jFn cA;|sb(B~!vl r #0;hcxs@φb(-"_φ"b("-WQ<"򋱃f?\ER11WC1G~qvlJ8rK ;h݇TB %P%_4">b(-Rُ垟y6Ci5BnifͶJJ# ˰f?{|PF ePe_4C*+rj(r/}!}gC91WC9G~yvl*bȭvR 1TC D~Mvlj&rk!;h݇TK P _4C-:j:ȯm!C]5An]e;^އTW P_4C'jȯ!y"/jomw5CC54@nC7dͶ"f]DX A/Ut5C54Fn7aͶ!N M8vl(N Mܦomw5C354En37cͶ!9򛳃f]DR ͑-A.bhmVvQ+1QC+A~vlک r!;hEN jhxdzf]Dbp\;h{QX/EDMqĹ(\YѨ`w޻G[.+]Duv[.D(?EU>5,x,brv]Z]DÊ έ[Z]D 沖*9uk.k^ 'e]Ew5i!rm>666zg䵏3rVqtG /}D#q]x欤]Gt&ff 5gBvzL}D}D}D}D}D}D}D}D޻|<1|YNa~ո^ +"2l5lBoa6ȰE j؂'f}DdHCDvl bءD@vl ;ĐMB~;hGD$1RCrw!;hGD]bأ]݃=fa wf}Dd'j؇?uml8 j8܃?m r!;hyg!1$rm!Y Ր?m0r"(;hGDbHQQ ?4#"CRՐT䧲f}DdHCR4vl ib84C1vl p\ ǐ{A/>"2 5G `6pB j8t䧳f}DdHI5#$Of}Dd8) 5Dn3A?jφ 1d!d6Ȑ)SjD)b;l8%j8?mΨ4r ;hGD3b83=fΊ!K g,vl Yb8,C9v쯏hg91W9Gyvl ŐF~6;hcvBφl1/Kl. fHdl2~vl !b!AN<bUCe;flCB0vlφ01! g;:<!\ jGn#A>i3<"F"?4#"C(Gf_}Dz6D!Z QȍF~4;hGDh1Ĩ!1ȏa~ _L#BjAn!b6PH P_4#"Ca1QCaA~v쫏h8φ"b("-f"򋱃f?PL P ő_4#"Cq1PCq@~ v쫏hHφb(-fJJ"Kf?PJ P _4#"Ci1QCiA~vl ePV e[eAû{6C95En9c6PN P_417 PA [A>=** "+f?׿PQ P_4DGDJbJȭW'R/=**# 򫰃f}Dd"jܪȯ^GDbȭjW'R=!V ՐXv쫏g/φX1TWC,r#:;hcxӞ PC Ց[5A>"2CM5@nMd;>gCM1RCMB~-vl P[ [A>?l-:j:ȯmꪡr".;hGDbȭzW;y6C}5Cn}g6P_ P ߀4#z۳r"!;hGDbhmFWox64Cc54Bnc7f6X MM߄4#D 7 ro@ fnCn@nA>"2ĉMA>"24C354En37c6L 7roDW^lQ p#r#9;hGDbhm_K -R --A>=ZZ"[fHdh%jhomv"ڨ5r ;hىD6bh6mWN$2C;5En;c6;N ߞ4D"C{1ī=rmv"!^  a6;v@~vl Q AN$2tC'5tDn'wb6;I roEf'nCg5܊mv"nSCgކAN$2&proG9HyDʵgtĬ|9w"Ei'Rd>Dj4\g~tםֺyڎU_Det"XN)INWstRJ'E G'E@:)WDz왼w"crq<IA]xory mB±%GeUODay骈lW*YLÝΌ]Uhzؤg}+[(AAWEAWEAWEAWEAWEAWEAWEAWpZc=O\֑)luUQ Fp1Z}"zUA^b譆^fWzz#/f]d+~j~mvUr#?;hUAbfWa w f]d(AjAmvUaar#0;hUAb!fWa w(򇲃f]d*ajamvUaar#8;hUAbfWFaF w$Gf]d)QjQmvUaFarG#4;hUAb1fWƈa w,Dzf]d+qjqmvUaƫar#<;hUAbȝ fW&a& w"'f]d(IjIȟmvUa&ar'#2;hUAbȝ)fWa w*򧲃f_]Vz6L45LE4Oc6*0M 0 ӑ?4 t1Pt@ vl 30S 3;3Aͮ 2,5D,b6*0K 0 ?4 l1QlAvl s0W s;sAͮ 2<5Er ;hUAbX]fWa"wf?~*ȰH հ4 b1,Qb.Avl KİT KKAͮ 2,25,E2/c6*ȰL հ ˑ41|>~gr1Pr@ vl +İR ++Aͮ 2*5D*b6*ȰJ հ 4 j1QjAvl kİV kkAͮ 2:5E:c6*ȰN հ둿4 z1lPzn@v İQ Aͮ 2l&5lD&ob6*ȰI հ 4 f1lQfnAvl [İU [[Aͮ 2lC"7 fWİM ݆mWWE ĐmMD~";hUAD1lWC"r#;;hcxw_φbء݁fWv!I ;$vl Ibة$DNvl ;ŰK ; AO{y6n5Bnf;*zl-=j؍=mvUaar"/;hUAbا݇}fWa!w?f_]|ٰ_ ԰4 1TDAvl pH {Aͮ 2C!7fWpX =fW#򏰃f]d8"j8ܣ?mvURp)Oa6*Ȑ"T5 7_W?<RŐT!?4 C! ǐ4 11W1Gqvl pB Ǒ{'Aͮ 2CN 7fWpR =fWN!C ' vl bTCr3mvU!S ԐS?mvUNrO#4;hUAb8=3fWΈ ,ϲf]d8+,5EnAͮ 2d{Aͮ 2y5Cyg6*p^ j8lgf]dCHC6rCGӖ]dl2!$OD(CAͮ 2!\ G~8;hUAp1D!ȏd6*)h5D"7fWh ?4 C !_4罫"&]r敖ϐkwqs[.箊BUsٮ Ⱦs5]|vU쓦ⱏ 6^yaU ۮ;]qUE*䡫"=GWEWU.]WxټwU;M7b|'lRTx0gW]GpnfV4\Vcŏ=7{eO:y#˘q:h̤kzD: _baym"p}ÖDZZZ˭;Y:^9+r]=YsYK<5i)r]⌬3E_և4wv 7 ewX}HoMlݷ,厂>>>>>>>>$=17>13̠<{~c"慍X6#6:?/fa!w򗱃f}HdX&jX_m!aVa9rW"%;hهDbX]fVaV#w-ײf}HdX+jX_m!a6a=r7"#;hهDbج݌f6a6#w+򷲃f}Hd*5lEnA?6φ1lSCr!;hهDmbHT6&"?42lnHv5$"w;򷳃f}Hd.$5lGnA>$2$a A>$2n5Bnf6Ȱ[ {԰{4C"1UE^vl {ŰO {A>$2~5C~g;$2Q5AQe6pT )j8䧰f}HdHCRTvl bHSC*rӐm!!M Ԑc?!-l8&j8?m!N8rO ;hEDbHW #?4";߳!] 'Րܓ?}u͙pR j8 gf?glC2LviφL1RC&rO!;hcj,φSb8S=fNN# ϰf_}HS{6Y5AYe6pV Yj8,gf_}Hz6d{A>$2y5Cyg6p^ j8lgf}Hdlp\Nm!>&"!W豞 !b!A>$2rC9rgC0䇱f}HdCpviφp1D!ȏ`6!H5D 7f"HF!?4C"ChGf}HdCv7z6Ĉb[A>$2Ca5Bnaf~ oPX EPE_4CPD EPE_4"gCQ1SCQC~1v}Hd(&j(/m!J8rK ;hهDb(-W>$2C)5Dn)b~ /̳JrK#4;hهDb(-2ُz6CY5AnYe6PV P_4Cφrb(r-fʋ#+f}Hd j܊ȯm!*"r+!;hهDJbJȭWz6TC5TFnWa6PE UPU_4Cz˳*r!;hهDjbUC5"?4CgC!Ց_4C"Cu1PCu@~ vl 5PS 5[5A>$2C-5Dn-b6PK P _4C"Cm1QCmA~vl uPW u[uA>^l+zjzȯm!ꫡr#>;hׇgC}14PC}6@~vl P  A."24C#54Dn#7b6H ߘ42x""Cc14QCc6A~vl M&ȍC~;hED814UCr");hEDbhmff!9򛳃f]Ddh.jhܖomvZ%r[!;hEDVbhVm6fڈ ۱f]Ddh'x5Cn2Q'>#}Dߤ^3y9pfz#*h-lIxI@c g1kFXkmT'ؼӽfiÖ[AU!<ҞU-_%@0kO>e7}^cԼ;^(e]_"@G9߯_|sv1op{{d|}68 y*jkI]_%_]<U2.V \r K8'FAY7R{?ƙƷZδ9׶[+:_*unr9mm&GmᨼReݖ}Ouݖu[~6*[G"3:*}ePi&otOٶTv;ۯR9We}/e/_wswޯ,_ޯz r>!]mxw}k\eIy[Y^g`ITYlۭL|ض~Y{[3/kay/i 4c'{n5}o66=U4Z7]{YZlk׺oku#nkm\^k׺>\QOXNo{k쮽k{wrlW~51B?s]#9C5bl}?䜬9Y#Wz?qnUvo"{i]P ..:Za]tPoxt6V5V᧱v6_˵OY'k').mR9'Or-E纠l)ރt]u}asyxOk.R~\IC0uy.낮uu}ʥr|TGxOϙk~5R~ݯ|!\+y}|t.k~4gktD^w}R[]_# O:{3~H~}˲Fe^# ٥_u_Dp]q}F'k\;I .F'"Z$z+b~.ⷲ.ú_#=G9l?<)X/r]Y/ksY/ "D#cwcb5Qm5Qkk*BT^myڼ&]~H.?ݔ_^wf}s|5OeTalƒZ*cXZ˯~~'>5t/pc{pE . X2_Uw3mb,CWնwu8]K篇5W ~^_^ϵÕsq3qٖzn`t鋘gd[]*?# տ1Roն ?#o3r@tc;2qOfkEjcQL)]ܟ ;N/#n>|? #|b32xD#տipFF s#5еV?sOdgLHoSh[U{hPvwb{y *x r;F"*xT-Ht= ]d |l-LJ9Y}{ # Dd !W; 0  # A"tﶭmG-q5[c~@=[tﶭmG-q5[tM^1 Q1)x |ְ$Aa dyI y1(Q첅&*P%@XܣVXVۺZWmiQ~XK|hs1Cw&\cܜ/f=sߝ;6B|(à2MkBv Iu~>!GHrK6R F?Ox y:CPϴ5nqAv@BIc+nP}mk+L]$^ Pv/'k^nY@:; wI"T^?z l|<Fq4Z2olqsBf Syk¥Aw(߮Xl#]O= S5m y[rOa֮mRGkP9g޼-\5Ё7Z# O(ˡT>kw<K 3tAvNo,kZuO3t_)[Jsg{SK<ٶ`x"|P~;~b_Yvl|z\j ZʉzN~ГV3^;Kk6yj_=cZ2'RK'3S7E8]'a|,i(y0o[o9z2̄=3N^hI{Z{ч" ơ˚Pe"dRY~55sb o75ϓ5+`@^`| +Yi֬װfͿL7} {DtԍK~m"T۠yt9@;ݑ#;ȧm9QM59'Vz}T>]+r`BGkkGaF>jCࣥP.o͇٥P$_c0Ϸ iO;aS ܆}ɞ}۔_[V0w>?.O >vUR,߅> u9p&"ƫߧ>zk|Q_} bk*k| k0@a\pUEӱ/nj|h^eZj!I-gA={=β;¯_ؓBE&hykYYΪ. /}+WjiEP\@- vMD &hZj!QR-r^nSyBJS`BWdr:jT-tT rSp=|Z3vh Zn̅:B `Z&ܯqvE &?MU /±.ʿl-K@ C7Q˴SBI\ JᢠZx *_}GH &hȃ:jzZHT op.j_RZȁ/uh ZH1B^,Bޒja yE }3~ pRMBkfR.eZHS*v8TP̓U XO@ gB Z7Vp/L AU js:̯FvΣdx`#2LB"1Kj!CR-BiЕ/C2ka]G i!-1Bp˴GBZxɮ#Upe[/Y n.-5A @z(T`Z+b\,_-l2Af-v1.&hq hZXR-t1.SpSE~ Yo\!-dY\}^SRK0@BZ {vkWV~3Rf.ac- 4A K4wjar{ Sb.2|Jf-\BZ1A °@˴j!GR-,a}jU fw͖Y oǰ!B{4wD˴0D`Ip8GU-Xޱ@f- q3. qjkJL yJnƅ|mKۖȜ;pv!- 3A s#T U- 4wu;]+epPp\DH &ha>~G/DN1K0BBZ@KW|҂udB]GLha ZeQ˴0JH 羢rN꓾`t}phY羢^v"Z &hf:P-mKZ >_SvZ{g{uB~z-js'=,/G8MЂK_ wq+ss!Op)黊o*U Ȳ79B Zp/L^LFuE.qw8z?6ce>60P) Z;w1wܵB.@U낫&ʬϸ҂-🋩6w- \ _Znr]2_G\gcM"ZXñ}9t+fp!y?{eW\&Xq̹cs[sz{&ў  q)I7Nq=t㽵Ԟ -Ü qW>LRf.8,uD` xM9:j} ;'p!꧂iW˪\inl,\}#]R߅36u!BNzeߧ[ץ+=- ع$c]5}cC_Jme9јq)_uwDBe 7Q@D5l4ڮϳuY{Bյߍ`,Dc :kټz::xޭa͝h6?jhlacc f5P߸.vM:X'f-`my[p־ĔwG`DsY(.EQ;3bї:k}>cLu٬aKY{5gmVZkAhCWXm`Cv~#N^%BBt%Vu_hvsK~M{zu>SY&C7)\#)|[JM {߮M_7dR_꬧$sCc 017/篽Y#Tz3m,F^J4!;]V򊸐*r[S‹3k"X5\^vewc^Ϩ(qRK5deQ[S1 -y9Jx +f/o%k @~&u 7pI8k g=ig]._%Yr g{r}FlŢ/u󓉳>%Yh dۢq``~igǢ8mۛ3t`4cLE:sYk]IڸM,Xm.kYK13bqz(o0<}1X@&֞(öV/XӲۆ;ilv9]4yl/bs琳9g[Y ٧TΆDžӇo`3GloAΦr 3)_U> Z2q}Elh0c!8;ƢqJ8ݪ]{DqmY|hpv'QPGd*c9vs?;xR Ou5eI CCG'c/ D`=3\ 8Mށڽ7ЇY Z&?YdLJ`,Dc (p8CŞVP]Äe1t[$Vr$ _;0ɘ'ngtlq>kf{s˂n9ץpq`h G Ϩ6&X3@d8G ] G?1X@&N( 6N7N;žy`jQlw5=NhGgw%,9K&hi,b,{Z.[T(&eq_A3d1)OR} Xt1ߧ@c!X_rY<8?w;AOl_blصx)xnAsD{'gq+OsTeS}W`SełoϨ{y֕L!gT>>cLZy8s+9s۵e+1{vs.nZs=C Q?5'u]c/0cZ\xٌM,X1\f rw0S)"]g+.!wP.FܝD/LnYVɏZ܌3TvN\|S '.69Ę3ˎ3f*G"L-GCc 01>|5'Uc8Gg|hXv4(y<,C{͘XN:Bekdlalݩus!c!zEcq.lMh%l} c B .b+u.[G ۖ?l6EؼkC[_RkCy GLV-nlydl^!B42yEyoq6lv6<{6!2ܟmTM性O4~\dqQ^ ۏ۵C:«0dK/azu % 3gybq;eMe(pN* .`,Dc C7[KZn% A4u)01C-K5uֵFBī} UjiGX/&>̈́inӚjGJK`}e.SgK1bїvxkL g+W]3/]8SϬ1cG8[O[g[9[Ol:&j$ ֧3NA ي>E_RT:%cnv>Sa 01,b뭓ۮ߁yUl$o%tuetA>ƚ`zς'-P1tOahxBMK`=<\2mϨ)奊E_RUHЯ9C O`,Dc C{[}V ڡ0Q(@h= ط3 |,g:2t) p)Rgd5]QQ%Dm7{-ٜZ--9?W\XVW^e2#`q >v^*}IU쑌e>Ta 01>#m5`VCo?;s :_* ^ նhmֈʺ09p~ r}[/sv+RQ|xJI0>As_SWK]]dǹW;cL]e#p2AC1w.LMқu E1Q/7o]1r~gk0. fM yX5\~cg)>T,24Veh@2v3n Ec 01+-b{BN:Buls)G~%9G߲dhpt#*G+kۯɕr Gr}FmOբ/)G۫m'Gq~r4cL"Ni{F"9/MMX(3/,T]U]v-XA3uPܴaG S7TÂi2 S;3jcXNX%ejG$c9S Sa 01-b7ͽ2ߠE&sL Y34D:*غַ[ [U: .16 ֝ט8A}FP}I5N2 0>y c!El}bC[mR16ضYl﫪dz+4ݪ05M}TX.:z>=ls7Ҽf#v:<=_ix?kkAlsٚ^|t=_ib2* z*ǹ񓻛)z: lx΍1_C,iM:mP ǣ1gtX3loӅVpo.K3|}Ig4q}N}uAxvAވ^0=sυ\Nb@Srv6W9\ͽf׻s.±s(io\{IjΘSs5zގ!$$If!vh5"#v":V l t065"/ $$If!vh5X5@#vX#v@:V l t065X5@/ $$If!vh5X5@#vX#v@:V l t065X5@$$If!vh5X5@#vX#v@:V l t065X5@$$If!vh5"#v":V l t065"/ $$If!vh55#v#v:V l t0655/ $$If!vh55#v#v:V l t0655$$If!vh55#v#v:V l t0655$$If!vh55#v#v:V l t0655$$If!vh55#v#v:V l t0655$$If!vh55#v#v:V l t0655$$If!vh55#v#v:V l t0655$$If!vh55#v#v:V l t0655$$If!vh5"#v":V l t065"/ $$If!vh5K5M#vK#vM:V l t065K5M/ $$If!vh5K5M#vK#vM:V l t065K5M$$If!vh5K5M#vK#vM:V l t065K5M$$If!vh5K5M#vK#vM:V l t065K5M$$If!vh5K5M#vK#vM:V l t065K5M$$If!vh5K5M#vK#vM:V l t065K5M$$If!vh5K5M#vK#vM:V l t065K5M$$If!vh5K5M#vK#vM:V l t065K5M$$If!vh5"#v":V l t065"/ $$If!vh5 5#v #v:V l t065 5/ $$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5"#v":V l t065"/ $$If!vh5 5#v #v:V l t065 5/ $$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5"#v":V l t065"/ $$If!vh5 5#v #v:V l t065 5/ $$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 52 Dd &%21D  # A#" `" 26:$f==v /@=n 26:$f==P>ABM]< x[ p3{ͮvZpqH\fK\+@x]aKXPF8N8%CL$PsqNT9…b$Ʊ!T0ّ=ĮbAyT^t>Ӓ``b w6'C'.4@q[%^h m܈&6xzJo_B~HiH\(#("m_E~Z8P^2_+iqf?ha{ VJ5:%(^QG>sEt +~1 .(Lc.YD^ F N9ZV"=I "R>(T;uhB.-LA ]x"_wa) ‚2;-N#e$- 0%W=Р"|Ys$Gq7xۇ8 +0T-/>|6⇾%POc&iuA>e>r&dj6"y)~Ea=` i;&uy]9}ywwĻCזW!u_lnn{&tz6le<( YK'jfo?:us#'r_/zt?{m%EKl%)qUkI}mٰǺJ(D!).!w:d"|6k}q;b?)KNr2_\uyްkȞˤ_rW_A)2gNfZIY뤍fPҼ1'A!%T'E㍹6Λ1:Ԍfg{KH LmK7$yc3o]d!d|GoloHG‰6yS"x-›iO[lw^_N'=>oVx+My8!(rPʇ x;vnunk\Qp%q:>L| sqbԍ'] p!-*¹qqpaʅ13~u ^!q. &yX9pF-C8Oջzݱ_s)otYQE= n> 踜y9671M൤l.3͹K{m eZ1,aͭ 4KZAGa\X:BA|)o{4D{.I`zK?ݵJfs086L^Z (ptcs|<}g5;cs}\|]檰Q+ta;bUK\V n6V>s Ðk i~"/J5# sk1 =z#dz,Dʗ{Hx\V>?ͭht*D9SEyTќ7"2ύ;4PӜ7&2 ? :45fFys*]phK)lC?ʸPrc|;kOoՂo]·Q4s7#)1F終0jw9/?cWS5"5P~΁J b7F) S o'sk ;ƙgD[&vf8TqwmN\|Iy| "uKJ`ߡvO6"E)X˷)XXę~ž*^ X[2g<1/V _hH9/</R|FM3jƐw1'+֫m+~Hrbǐ27Hއqs v򡚪/x)}E>$@\sɫ>'_tsZZdL7󓄿D .eU3a%/o׳+\y:KCaؓ咏a7̇~hU˘{|=ٺ;cTzzM[|=0W}<~23 .S':Tţ{L_ׄ.ɉwb;wŀגb._KZ:6y#?[8ZM['e~׭$F> k ˲PIxy9ۮ6 -Xk.6x|ha6L-(n 9f,dle|=? Х=OԔގL%}+bӭ{;G{;8{;Ssa.|2H!x(/=Ew]wTZ2_ϾIWJF`N]Xa+?-La# )?ecDd (I&]0  # A".Kr_0^J"D; a@=Kr_0^J"D;cf}0e@^x tUo&&iЦ/JBˣE w6 EJ{D ,/)*lOAѲ<.S{D*R ,,HWte9{V\lܙLӤi: 'svcf'*B"R9 :!h &dOwrԢIńH#ZPoHVu&y ! \ʪ"ɐòCT` SX~VY{)VN6ĴѶx_M~U#V"A x{ .R wUZWC {9dBN`A\ipPȮ[XOR9ڵVz^ ϋUkN LSDVDMT& r/e Kt&ɆKJbEMRU$x2dap9OV'_)Aϋ4POLcOλ@vyp Xb@4_wFbY?!#j/ 9n.)7jܐE7jqCn KADL*97ӌ)A =n,S m J+W@c>cuܷ?/_?y{wʌ;ax=hжjUۛZ΢/t''Ʊ쑼erˈU<n[z\\;Rc9q @៶X0}w#v6ixhE=~ľC>HCq,[?7 `/ใr5`^+ca[m69Cd2GV<7Q&;\61fgU~ FVΤ' zΗ/%>W.DpS]{47x=ʸ Wȍ37O~o܀F^.i7M/;ƛ4Qnn2󶛿AfFYߊ<\M385ԷZ)ʊNbE|VvȤ 7}HBчFDP|HEDч4|2Ro3i~j>DbC:bX4>$\VhtD(sؗc,t(u#{#w6&lCNz·Nr6&QǬLuKwڱjAb9<֣S*ԙQF֌w +ñ<0& i 6Lon0奔zy) L^^J7^Vso5W$ LUSuʜLd7ƳǴy:\Ʋo\ 94U.EhsrR[ۭl49@-a9-T Bhr[mrxzI6DVhsGum-Ѻl.FbIVQMms}[hy).Ces6Mnsk@C|Bj6Jmwl.ƣ}RWAӨ#$WhKXm N>YoAy4rxb$6h0R9w|UFs]6(msfCY emPVWZ`rx9m)>m׼`sSjs9Gi=c!vЖCT˻T%r<s],zm$\l m<\66nZZ͇'lyo[88w~N`?Wi9mZo63o|V%-'x}I7=X (,8 $rW|yF֙AC>I ca\Ax{yNhld;>[EX{vtwly_Ը᤽q}q+Gis?4vvޣO"5(>hP;)f|Xhq ׈{^'hr$"Q4~/=ŅzP@p"kzPq9гJ xߐ1IFn<|P.%.B0'W<ևM_j\Yi B,-av+PSH,$( 1 I%r" E)~-:TYx nHySN&Y:ɘwquqvQ~~;B ηp oql><9:s[ь@? |gcvMzbVo`J 6>}BZ9ՎulT;6S}L_j,|hOlS[}OmxL a45v_m,Z1egb4c;e;:fi6`P}ϋl26W<wT\5-JAeG8n*:n!L j5r&M1YS%Nӆ0ׅ † zv}(_`~ԹQ?}TTWZ,YJ59j{GQc}w_K  6Nb78Kfmi6^*qqF5n6X><ŮO+a3=lfx9RM}V}^_-c0G}T#9@>{hOl3!I6v:^ds,Z}\^, kHq7u)l\2ˇ2ɼp}P9;6A#uoeʣ4@!f6vS$6d kSm4{{H3* dUWl/r71oZucYIĺ)kkGڪ Ϭybmd<Xü׻t襹2V"d/5[߃zg\Xkrf3"nְ\8na5(1Jz^;x:H08~AF"A9ļ|;x;)n1S`- pŅL ܮ< `?^G b2|9Yͣk+a .֢Ew wPM֡}!x߅Z}_o-krߕ{l띌ut Z!O[KvIMi[WɮS&|L?Dd }|}D  # A#" `"0iwK6@wX"@={0iwK6@w۬)pP<PNIxݙ}lEn_~\ wB`r-1DhJ+ks&%m PBDC 0BiP@D5ܶlK۽+33o~; ֢KI6{Nxo?g8Ѝz4(fBa#AI(rRW-P(Kx\ xxB1T呕L]=cm&ƞB^{Kk{-ܯ COLº2v"͚ Kz]v% ~xl)f>כx?yN/!($4ExSRV[;m\S}li~/j 9d5MNU7}8y93$qs%U'k]yev3t^ 8I|3D ͿQr 'F6M>7}PҟxGTϸȣ&xa}$#7Wqp'ʟh2+󭙽f&7ޛM9Np7&ܘf/ 7(qcܘ&7>6O-f^iHYC~"pӎ[1č 7V]n O)[3zeMko7:nCY'1~0k^V?g_mAzNowvaϲK.w~GPO~̞xk.lԸ$٩mv<5oJۮNn#P|Vr:ncr!Eb<-j^ss,|xz= s{)zg y)~l@9WᄿB~|Zzk *LA6wV{Dp!Xfn9'jWl|]2sl}q xX-Ell>6bcI+'sD_l`vSݮ[s?'_wtOtH`}]ǻ]#sZPqZ0BuAsX笠=GmgY~ % G|^r=fA;f=݆|PA:v>爗ʲe%3'|Pl=-hZ=%6c6*n$irNxy>07I:zYJveM|sϹy_M_mfVMqoDL7wR3]eI(清q3O&YkH&7 f =&Iq۪/?c9A,)XI$ a>`|wn›nWлz{s{"xj,D. QXYpR ;-aZ+{s[+ ޔA6 &XHBoh*+y]FheAk4j<3Q!rgjt6ٞs>53u?S3u;p alz7{F왇aoC^Uj߳XY03[Ƈqb8kI5}qXg5jX[V |L }\*C7yң0f]e%ټ_ȱ C@5?X,8' MNG E|q?=N+!/D|/jm5:e::^/Dd }qp0  # A"qòA([M"@=EòA([(#pP<PNxkL\EϽfy/m +M1P0VwqZ5q!1$ҐTBWCQH4aTcBԚ4yYE6&M!6VϹ3l!gϹ3sq̝E1RHPv&| %;Ȼ`cE` `|aqYI Bll~/@ک^-PJ2^7C"oCs E-mJMmPO \.o>zC(| F.n>0QmDŚ9M*Uߕ>aZ 7P`B0AєZ&B?@>`semQr)6ymm<_֐-zO4}ʶSXٷ[w7#isᒄe|wRt最TK~"FLp\A~k3h>7W|AhpIM 5+7&1*nWpStQD_bccesm ϭ k 'hU7fXno# Y+Ƣpc^CFf_ʤ$k4oi ^qJwpWD7_iעԱwnpr}%U(V2Oa@Q{pR.v~ЋϛFF߈ ^Gbv8:Łce ã^ØOޡt"F}D T5_]ܦtM[B|Q6bc?j+}VJec%>_i/9<ЀGe$ v&"\v-z1Ao5j(Y n ?;Ɯ\ %kg1Ȧ k]z]3٦V٦VZػvpn sc7ȍC:sI4grP97w4Lշv&YL[7I0ȍS?OxZ3(ZƩpܜ2nps}v.Xa31aT$A[innNIà|N賏9 5+I +˰b |(~+&<cEY8je,XRtY;[VYHQXHC^BG̈́&~Yz~h} iBBj0(ݱ66+ /ch|NWvL= ;Sk% 43Hgl~Ot߁Exa\35Չl];SWJ_:U-{1Ʌعk=Gw[{V/W;7ceundVc%كj@rT$ %d;e]_%ߺÞ{X{u٣W~:K,\b}Wz \_tww}ޥ|(~0_c!#,d.ȌL5BㅅbJXϪP~Uc +$BtO mtyy&y/'_>$$If!vh5@5X#v@#vX:V l t065@5X/ / / b$$If!v h555555555 X#v#v X:V l t0655 X/  / / / / /  / / / / /  kd$$Ifl < 4,,"X t06$$$$44 la$$If!vh55\ 5#v#v\ #v:V l t055\ 5/ $$If!vh55\ 5#v#v\ #v:V l t055\ 5/ $$If!vh55\ 5#v#v\ #v:V lF t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5$$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5/  $$If!vh55\ 5#v#v\ #v:V l t055\ 5/  Dd ,p 0  # A" ThP`s!@=X ThP +oXuP&x xUǫtMB S@/B&QAQ 2. 0"-[ Gq}8%p H:]UTsn- ̆~»x̉aSABO,: Xw  ƿm8hA8|q_YiueB!RkҰ >[hiv8h~l!JQѺMeY+ɺGvmX뾐Zu[^o ͧGFĸnW`+x3|uIؾD_"/ H6+N5ݜ+M&$H4O/;U$ $C lH7={.C&3$H O韯wHt !BF]i{;qLʒ ¶X>ͧK2E21SdH36҉-$I ¶_:|O|kE2[dH^|99<92#A"dm%99,?ӈm+b܊XJ l,}c'y$BVV?"b{1XQ`+3>{g#߼|erCg4B;{=b>O{g3#߃lsHYa[OQ  !B  |". ¶gX>ͧ!"U(A2VHCߊ.Fy|,ɏ$BVVA1˧ϷHfw R`+dE3-N#_D /D&J$H$|)N !B8Ky|JeҧTD JKY%<1zD%f|ߔF&dN(g)}E"wK Ԍ/wy%JV)A"Z|X! !B+zV=Z-$B5Y>ͧ*TI )ҳʌoFeE&G !Ԛ ˧7F$k$H QcƷ<ˤC !Ԛݭ,?߲n"YMdHU0x|u2) B X>݈ͧ2Vf|G|U=y|{dhO !ԚPUOH_Vȑ:3>@y|P,$B5i> }?AT`+2e[ћǷL-A"ZZћ|Ks/{/K^f|=W&/ B mi>胾s/G}_& B i>M釾s?/O~f| $A$B5o|O|7@yЗVȺf|AF<>` B f4Cl&ĺi[!Af|z *qC%HPkB=|Dl~ĺ[!E3[<\&ˇKքf g4~Bl_!ƯWC f'0gL)A"ZZ5|F<}KP`+Da7joh er`jMhhO韯(G= }Q leƷt]:}1CA_z[!Kǘmk:$^D&dg4nXǢ/=V cx|e 2m B 5|{y|;6ĸ nW`+do?|'N $B5X4GlazA4|x|&I$B5I,?_D㏈ lj&M=4E&)$B5uSX>ͧ;OFz2ғ l7a;45MD&i> T/=U Sn;62yjM O;OGz: n#3|y|ɳeBfKք"g|O|g<}KT`+䑙f|6sx|=Ȥ !Ԛ<{}6%Ķ1@;f+l3FM+s%HPkB|}؎"ƣBcƗ9ȷt>2Y;_D&t>˧7}yCC_z[!hoc dkjMhO韯}FїnT`+6Zhۻ"mjMh"O韯~! ч^BBf-4uKx|+d !+l+O;/Fz1ҋ uq ?{ B y]cnK&[qUw3]qwftҷ5^X}u:n 4k o^K#k Z`ӵ[Zy-ebmpZ Z;qw5k `-P 8ӚC|TiGì^a->ܺO>ܔFxh/T*̈́j䋉><D|O|P8U`5iˎuѢ(/ܰ4;㛅ئ )uJ [#VDJy|5>Z<F|+x|W"%q b]V(3;|cx|b|tX@nn;3w+b1ވXoVah3-1F;&tѩrvӋ;|[bx|۽^zo [[bh$Ƿ G/B M/e{ =CuTaَf|c|Wћ⼐rvӫX<}E"b}1V҃f|x|z@nn}{DoƩUa76#&;^a&;%b 1~X?U͌o{:Ƿ;G_B Mg<`b dWaoƗ.JRrvӤoF2o"b!q*lH6"HhE@nnHeH-Dl"K)*l^bƷ*=G|_@5i,ߪTJĶ1.GSU*]j@oH:ot֧{!Z= ݎoGU@t# ߬ <jMhr˷=Ƿ=FU=݌oOoq&L: y ԚLoO9Ķ1D;3T*ݓaw$wC,]<jM,H& v1@2U*=i,#=<>9 y Ԛ=,߳x|#,Jegd։T' y ԚжN,{5b~V_d{A|U y Ԛ /qn|WVidƗG| #^ք/pn |W Qa4U>}sB }U"(Js~hx@5sY<^;t [s:v%t^ք:vf aqbV<3FN<|<jMS>ؙ7MES*l6v66WVS | y ԚPYwm>2xb,_k8x|9|t y ԚP˷Ƿ݄oB7U#BBV<jMhl!gAĶ1G*la-4)-,y!ZSy y|Fn.Ta[hwȷ oe@5e]XCE<>_B/UzȌX#m<}b/PkB|ǺElo!Ʒ[]T*=Ōb#CNV>B&O9b~^Vf|o{NQ<jMhE<3bTa4R6(1R{G.B&J ˗QKĹq_q%*lf]|G> y ԚѮ,ܕWs |"]U*J|*}_ꣿz!ZW)*uùQ_*lJF:}V<jMC9˧7 }2З.SatTr#_r/Gs*B %W|3y|[=bG*l,7[Za+uJ/PkB, "61Es+T*]ZawKGWB&ԣ廥w=b1^XTaJ3 UF<1>j/PkBCY U<ZĸRatCߓF)5<5>: y ԚДjߣm3b܌X7WUd#_7Rp)\6 ˷lƮп?bĊ5oi[gϪ_𗦟!TѲL0A=w , u BH;Y` zfpKFrv4-nknݮ%qk\[s7g0ܶ;b@Bb#lcmW1'7/-&/w+v;5oq6{BHp[v}4^_a_3/!oW kZڍCq4^谗${~3™Cde{^%}ڶ֜2<<M}loM8%QԎO 8pso"̯h+<ծQZ;5Y"Zvr}jsj1w}-H+_MNsǦiP3#h}DMCD+4w}]6t#A2> iחؿCOӟ;kif8fᖖٵ|a0!9'U^yߗ1}}مpזgdx3"du[._-Dkvavv΁C!maβ-Nu6lvj!BkץwU9]9-[1ij!q]c}[1|҉ |Ê|{U- wh '-yq BW<&2J8Zlxbsٽ?/ap3?4eHi(.BglmMq!9a#ھb݌Ͽ>s\sz`5PCO͋L=/"Ϻ9W$F}qemNz͒?a_qV0o :~ x_ _ú<dAmAg~ ~-H"H _{9l#{ ky_ȋ2/Z ŷ!śz^X9WOYp۩ -۳sцi}>s߆yӆ ~m؋zڰ$lCm_Mae 9r^`Ug#܆92$G 6|ů>ymdhϛ,=/B8 C%SlXOYX硏<}zCϱP>}sLLڧ}}f͑@n>skXϑ@hzFs>]BN͋z^ɋqz_%&uCiqT͈>w5|Z}matqT;;~>8wT6o썮]^z5{쵮ٹrysɵljnXl8'7w9N接wqvkԅׅ4n#0ޯ`Y= N]8}~Bϰ(xo inOwo=j`li}͊v_dx'Jn)p=ҼuYh[1~xڵ[ٴuK#ulǴyƵyڼ G]v{C'8j좃]!54}ь}47w75[[r /-6Ҽq)jfŇybgи@_[i!]qXc; qz7ɑz¸@d` v."PhR=/yhnY7tuG[Zvvph@\Ԅ^Ɲ~L"ƵքhL`8&0x5ޱ5ñ5ϱ5 ,m˝A˝|` Mp;1Wd1cgL`zhP^yj£^~~cɵ|s=քWz͑@_OHIh XO\EքwɵPBO͋L=/9zn<' YWR$3ؖ$m,1CX6ՍcD{khkGcKƱěxc7ٯ-+/-se5YeX8'o,q|rF8+RX#ו *7}CKv<~w6ìn2 ''c=5t,!07|c#3ɑ!zBc|AϋqEqK*P|.f-5d^?elRU<˙a~E69UQq&m؁_ц07B>lG;A%MevP+L5GTJcꦖ6o&$Z+󓃵[w9s07~x,:)}}Az摓LsTϳ3h?-'CŸ(ؾړI>I~=~mx#$$If!vh5 5#v #v:V l t065 5/  $$If!vh5 5#v #v:V l t065 5/  $$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh5 5#v #v:V l t065 5$$If!vh555#v#v#v:V l t0555/  $$If!vh555#v#v#v:V l t0555/  $$If!vh555#v#v#v:V l t0555$$If!vh555#v#v#v:V l t0555$$If!vh555#v#v#v:V l t0555$$If!vh555#v#v#v:V l t055539Dd'VJ  C &APromptR8Sjʭ>u?aq8HFi8Sjʭ>u?aJFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222J" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?#Z,+k"Vo7$+2wv1eq7nk-^G̲2{@և<7|.{Go'̔Gb?*$WJQS4mz[9:o{~[[ȿr`->ߏk"_Zȿr5/ ְi?bDy߉s[ֆ@$ '$$V-]{x_9W|i[0 [J׷i$N a8B8y~`|K[}d̻ʙب`8 FGzΝ,/$eV\5ouw%ο3Pg׿獟E㔿gt dP4iPU*rqy_h_]>awyQgY`as8$~.˨ůg/-=wyY_9WOeaKYtI֑6^Ir|>ƺ<xsI'V.W3? K]6"?0}r3O獧E눥3 >}r3+O畧E뉥h>_?畧Eg"uh>_?畧E+O)hϴ\gk"t?畧E닥h>_?畧Efk"uh>_畯Efk"uRϴ\eV<9?ihϴ\ekN<9?f?Wfv_uk #ZV]qԴp+3;Y;oO.Z?pȃ,}ky~rtֿ睷'\f?+3;X;oO. QK7 \b?.<9?E-ٸOBg] Yvߜ]5m#KGn}r3;oO.Xz뒥D\ak;O.*Z?pȃg,cyrtu[ruD\`ܷ`jNv}r3rW'\-_CgU O._]rR"Wfu_jܷ=տ'\-_BgS ?9?_OuoA-E// gS ?9?_O5oA-KK? >_wrO.NoA1E_CgQ ֫?9?_N_A/KK? >_srO.W~ruRD\9'G'`ȃ7'aT?]sTȃ]xR⼊]9#;DLU/ꍆڦq{(ylgۺb tߴa<g;OOJEeN+&ǻF8ݥԦo{hvVJ$w2Ĭ0 I*;/ͨݥ/us&vC큓'OYzO?>q}gn/3G%>kMپO9+q}ƞ6t_^$[il}<7,29>S~4=dx]B{Tv3lo3s1ի(I%{wIҦ=^ͣMkUIIn]ݥbXӽy}Vf J?o^{}?տqjJ]=Z h]9E~ :W3.PY7\o(_M^[‹zW / _O"{_uvϡޕ$(_E|E8} 4H7??"ޗhg}Cϡ!ޗ _8?gDcCA/IQE|E8?gDcA/?KE|E8?gEdAA/?KM|E8?gEdAA3?GL?lb?}EPkLtQyoT?4ekLWTQΡv?4ٖ?51}~>̷֙2ZgM|E?gHfkL6ZgM|E?gHg[kM:ZoM|E}%mA7&o i5m];?O>:oM`֛}_6QG+:gJ}ZoMa֛}_5G+:gJ:oMaΛ}_5QG+:gPGssm"0B"H OzNm vw)9J*>RUki9b=I}E|EO~/?rդIVĶPBjoo[+P#~?*>}jF+xim77BGܹ$-z+älg[Q:33V@Ojo5ϯkۘ[[=Ҽ~?3XժZO[^NC5&WgE;73qCc+qLi+L!srLknߟL/6ZG3^_&9I$(I9Er>W4Z֓}1]<- Xe^6 s=(3%tSy24~l-> znMG~.[iM\Zs(i }y[>\xB]h^-AuYPczFsx5\Wr"i.&XH-&#hU<=}' a+qtm<`/ g=HXnsOx(jqecCwH#s  XxB;KvYbܢZxf &Q@8Dq^5<ЛV+{yfԭ><7!e`T#mf*GrE6%ί.sO Ne. t4VOX\j2\[i0iH*3c8'S}3U֮lm-֭3ۆ7* I''ֆX^x&×wia* n%Gx;< )8#.?<5%卾aVr @F~lGzVCeK?3?ˉp xZZaAZ=0v`2&1pGȦx Sϋ~s(c\![Y|v٠"o K-ZWGp׭ח,:WrL!z4h2cNEO6 /ٹw@wugww <O'ש VC|M[74}f]"f$ U&<0 G]^/,fy2~ry=O'!((((((((((((((((((((((((((((((/AM4q_ /Zl }?ZMf Jf'RX>l9Ns~i}߀o溰j1ʌ&KG6YE ]o^x]MNAws][:-z+{x`mCA~s][C8Q.К7K?&?#,(b ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>zxQ,|{TvͽH@}?zVRܤ%o5z[qwFh$zK8Q.К7K?&?#,(b ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>RO9\y$’訿Ȯo?/5w?7s][Lq_]15yzo(_M^WaESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE$’訿go'EEGEs8 }?տ{Y?e#% >3DcBjK (((((((((((((((((((((((((((((((((((((((go'EEGG;?*/r=s2+?K{zx%Vf)Wo(_M^^J%sWbXQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE}3;?*/r=s?I$Q1\Ǭ_uoko?/4H3DcBjQ.К;Š( ((((((((((((((((((((((((((((((((((((((I$QǑO)'\?.!=fpOp<?3^s8 }?տGJ%sWנ|fu\qؖQE1Q@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@LO)'\?.RO9\y$’訿Ȯo?/5w?7s][Lq_]15yzo(_M^WaESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE$’訿go'EEGEs8 }?տ{Y?e#% >3DcBjK (((((((((((((((((((((((((((((((((((((((go'EEGG;?*/r=s2+?K{zx%Vf)Wo(_M^^J%sWbXQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE}3;?*/r=s?I$Q1\Ǭ_uoko?/4H3DcBjQ.К;Š( ((((((((((((((((((((((((((((((((((((((I$QǑO)'\?.!=fpOp<?3^s8 }?տGJ%sWנ|fu\qؖQE1Q@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@LO)'\?. K2 H1?{xgH?s?4}~0/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0ΐ eΐ e'ۮhuO ,/39G39I>w?SG3 qQ qR}~]:AC/:AC/픟n?4s0/~ ҬQm,r\;X䪮>]_-? !uO nqcbO\pu'>xVf],ŘXzDd-^  C :A"Share_new_folderR42/d-RLQx`-F2/d-RLQx`-JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?/jZ޿6oE)!'j2[x@65Njj 5߀攺memP76'yr)Wv 3y3L0GYX*q8%>UPG$rnٮimYOLJH'eOg9aiɪxE:14/S|1mIbw^󑳁g٤ ԯA"D(yf8 뷝^ǟˡ'yyGҍ'y<"Q>h9?_O)y'ҍ_9?_O)y'ҍ_9?_O)y'ҍ_9?_O)_?R7}O觍ɳf,q䤈p H8<2+k:5'я^\J0կхQ\Q@ydv"Ԧ|_HܣSGvX׶s^{?u:pgQ)4O"d<Q8ӼI|a7)BrZF8|H$.;#*h^m͕ "n܃6sN1BTg&=vN?(ӼB%2d0q:䏮k+/<V*ÄGbP.ev S+|qWת_W HIAcLã2 zG?.(?.(>WG#q)a($qH:*(Ƒ*2- ܢeL]aT\Gymiʝ꽀Q꽗/a3M#\jQFYКFԣ(#1!uV ,}snN^ZO+žQMg|O,B,BV~!xy+wږ6̧ӭ=C!;:]{z6 ] hbrP1pdOلF{/>3Jצm42)85'瞻}zfȋ|>s.ٔc?8ڬOgI JdJ`9^~!!qٚzN=`TW_.:uZkiŻ\i~ t KYaC`FpAǸg_E^~#8ӼC3$2+9AcCϐ5e]~Q^.细 R餴C8؃cY9]O{/_Wbk??ؚ]YU#!}V\FBvc"~~Ɵv_}^gϐ4bk??v0$IEܳ"IG-ZCrדpg4}~e}^gϐ4bk??w"&{uէ3+`ŹU Hِ V}(+x-iT]H s>[C8oMg|OY!Sk ON.f ܌Sug_E_~!xy&>Cϐ5pê4glr ?+5jj0s,4O&(;Aj[S1 Mz&>Cϐ5-3|WuxVG5,]ܖl"Οc2.~hw)\ڸow?Mg|OY!Sk]A/l+3DݹF5Mip o=}DȒg "=?q?}S cbk??ؚZ7k]2k^)|Ą|$ lIxnR.[T&MZ4]yS#n@}(ϨAL7 bk??ؚ]"g?2p7?65<)nLd㿱5?ƏMg|OJeՠpؚG&>CuEU{/8_Mg|OY!Sk*ah/&>Cϐ5QG^0Y!ShJe}Z ϐ4bk??wTQW>: "Π>#D]z ,βߏ`pAV! ȱ pQ 'a]i]c t ]Tz(e\31?*%_M!O_352OKA 6 WRS >'+J]Z0Vo1Š(BŠ(-3Bb7ΗĺŴRGnZR̅II /̉|Kw;u-sMnf{ 2V x;c,6hmhN{/'zoʰų̑"NXhy-!4.mYx er9\Ɩ8GJlmPEIKKQy${ܑƠF@ẀCCqoբ"7`peks/†܃/A$qG4[hi؋2`r@j~(ZMo*¦|ܹt@>YK>8cX;(DMt)ulb@T@*K|M֓iC QTnR ú[3t~|cGoi|DZއ B]2J Dž0PG|ӻ<`b&_mV]b+6ο9 4E5ׁAoo }V-"YmYDvVSy#ln;?շ7GL,rv/>tʹI,b#:\`}If]x n;K](#REȹ`aZ/շ7GL,p\u K}!+kV1Fh|C!`#hn]ZԓHMRKŸVؑYd!x e?V ]Dշ7G0XUoh7CZLoEQuU{p=A: {xKrAs̬Ϻ7/o[r\DWTN37j^V`kvmN֑@֟hV6g< %kѿe?V ]GH>Ym.B~NFO`j9 u];F-bR$R0Z@?rq'3ΣK>rPjsZ..`#iD `A;6L&_m1 po=ZZͩJhu}УDշ7KkWylMTR<,mw/h:L`ӸTeg;wnED=w?G?G2 :f~xRt2GcC41;wT"uCLn罎WH!@7ʐ m}}s :í[N7,L:ň#q3y.ㇴl!!$t/MjMQs$ &Eo'n,6삽7?G?G2 !uIWLZ̖wq43‹3* UwғiHEUvvZz;tyz;tjmm*ͷGͷ@^?6]^?6]Zz;tyz;tjmm*ͷGͷ@^?6]^?6]s?X?-^^g0cf@dR= >/CiQXQEZtT."Lעכ.:ޟ|2%DmfMf"opPĶW(U6/C39H,n"]-d! *HNAXsEp&%@]CC) { qm/SoYqK+]JOSJ(:XPbhXbI._vnW7;Dg[30RbⲆD<ⒼUjn{6Sf''ZW7xmSSvۙQ#ܤeQv}+oCG5ΞD듑Va<##oLTP{79URVJǜrRZZ7ZCKm;Rh w*1,iN @6.^if55n1${ӻ>pOlu9Z1qlF+!}Bmqx"幎t %h=q +ӟ"\${ae)D5K$$yhHbBy*ѭ{.&{kQ,erƹ* 70r]>}gYywx4r@c ~5\_wMCP?;+i鞘I4(o\ny~޻szf=N; .dɠHA# TsO XBꁝTsܱQ_[Oi lS i;#HG>Tcϧ(]owy@wț a:jQQ<6\K0DF dOhJ*iͻ\iz KYU pJ3=\*p&-%6,su!հ{,ʍ~π?37pp32ƞ%OMIm{B#Yg?; FmO[Ŷ׶+u-W*~gNT1gz֡;%4=[䩘wGh3[?[C4VvYRHni|ˀʅ)،+Z:*/2o.zO& `p<2eӡ%B *6I2W'&-<)}}˫۲4[UZ1Nx8;%gm{ݯm_rקo,ϵBN>n]]]L0LU.X,򾚑i9D bAu"[yqkhVgT|Ve<ʰ==LVW[Jt Gs6nFg彼ww1(J~naؑމU[oq{y4I#fWR0AAb:,o:4דG Fep 3Ri~]+PnMhDH\`#:c2_7_]hhWyyݳv8,|EwYgaqsikvC̱p2I?mE m尊8cwF$bUBzf{-D%D`U[ Mb0-w^Z<>!$PWtڰ9䝜k+%YbE6\<;cFO5?&: ,QJV^_{_z'Vuo-J$K]HqϥY?*VN 2%A;@,ۏ?_z}(ϥV=&: GF⽼Gw0.BnNQڱ,>KP{I3V7vcn(<}} 6\IΓ,7drA{ϡ>T_kky22O;}:{kx% qJ6cygCGi*i/y nA oNZn Rؑ#71 #RA14 V%S|Ws?.#;V7./E xa[kzB!Q'b0$ z!I)XFB'p#'GLWCE)뼪1^&Q60tgI[M #W` lMʹsrI8%JaO&ɖ=т2q63}EL3q7%U]^{?C7zShf)]Fķ8b,M34'G7rC!nx&<&~ovʎvx ׌nouo!WhE>BYjs%ȸX¥H* '}ET30h[K|]>"gjҩ<%$?mknYpI8w4K/Ŭa0Z :}6xrG3#Xڸ1ӭ}E)gnji2mƮޣ;] k̲< 7.PgEYYfKF-,j=+ߨ?L;*G̰M 6nءs'}-Ev.'&r7w? Okև>oďO~\?ޯh&ؑ Ok}?>i\?ޣpxWQ?H?p|Q+z(Zɿ?>h\?}^?և>o?4}>}/EC_7ďO>k⾗ϯbG'k⏵_KGM?#揵Gh&ؑ Gp|WQ?H?p|Q+z(Zɿ$|(\?}?>g7pxQ??*b?և>o?3ʏAWQ?X?x~T}ʾϯb'lx~U}?>gdl(h&ر ? d}1EC_7ŏOG (Zɿ,|??*>_LQGM?cAQ??*b?և>o?3ʚpzϯb'zv_*ki`X~ $[c-n[|{3^EyeǸE~T?Uִtm.'Fr6IO?NԿ(**M"^3?&_EE[{jR:0eLnYsI7SQw\'oT"4J]$X,U$ zםT/ 誚q_BͱdcR'8cD%_̻iJ!3>VҸk1kZEk8nHYW+ T-|g=ԦM4[z1l: GCEF'eC2*nUbB:J}Ҥdi!Ď s֤5?t&DiT i=i㿵AqWQ=#W?AJϒKQBnc[jg-4{weuj(#6_XOү RL+Ȭpvp % N2[jg-귇|cj);ؖ{qYq }Z= |eìgiW`:Whn]wClg>g?&6\}V,o;8,.໵;&A"6  88 ‹Gkܡjg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg-5?uE`׹jg- %V9u\ơ[[^$3Α<Α+9<ԁԊҕ8ꈔKˀ@)h>IŴ4E:m*x8ioYѮ#P$ ̛~]rdi51JO:omnd0Ԑ1*z}sTխ]RT-KYl8!ga֗QԼY.wZ\Z:K EsejVN|N1j%F_QyXf=C Զ!W/moh163`bݘ!?چgֳXy72]2Jl.o/%zP2Y32B\HY= b[[[H :VZ(m}k--Z8Sm# BE[ٳIyɿS]ON<]\gAhF1\Zzyxt* GXôa|2dEG^'ƣ $7I`eP A=[gs4l\$MmfMX|={8/;[g\S6"p\U2QVed :!~UPvpUݷ;Fpf%hٳI,EPٳI?l._&0/T?l._&?K.U?Kf%h Cf%hٳI,EPٳI?l._&0/T?l._&?K.U?Kf%h Cf%hٳI,EPٳI?l._&0/T?l._&?K.U?Kf%h Cf%hٳI,\~j\ݦV 'f%kVFWGkaY1Mv24&ݑCyJާ<\gѭYǗ ~7ZVG0;me<)S#piEXTSMܳY1&n´)Z<‹ n8y8.9S (Ӭ^RYZfC;UC!'N:1]}RTSWIh~?^<;RIp;j~.W@LQe P/иg;+X1BcPVN3/wⴾʖ [[Apy搎pI' *(Qԗ4.#ʂ,.m&>lQrէMH$ *(`W' 8khϏNm@l3r91n}8iQEmJiG ITkdXY􉩞qBh3M͗eWdwaH&H[(]d`b5c@ zOG'IFvi-gik\^$65DJ\5j .Y;JSy;f!۞~<}~GrlζQr+KqWs:e67I$ p02H dtQ$l!,t裁uLZbccv>_I(G#tO(R4P0¦H8rĸB\3|M"^3?&EE]GT?o/'DO²訫%/@K"?(_GEG]s,g3)Bc+j/0B>*3u) ,: :) 6.yclys#[( ^~Q~\Chd?(?_W_E9N ^~Qd?(=sy ( ^~Q{?0E;%%yEQ(~a6wKJ%%yEQÛmGKJ7)/A+/"Go!S_W_E/A+/"gChd?(?_W_E9N ^~Qd?(=sy ( ^~Q{?0E;%%yEQ(~a6wKJ%%yEQÛmGKJ7)/A+/"Go!S_W_E/A+/"gChd?(?_W_E9N ^~Qd?(=sy ( ^~Q{?0E;%%yEQ(~a6wKJ%%yEQÛmGKJ7)/A+/"Go!S_W_E/A+/"gChd?(?_W_E9N ^~Qd?(=sy ( ^~Q{?0E;%%yEUeK}FkvdF ?(pÛRT?o/'DO²訫7xțVOzt?_?/_^E)y\A5%F_Qe&?k,~Хhy}.Ȧ}%die#?tu4nXX]JcrF+[Q𦑪reoQ능 äٱM|J}w2M>s2ĆŬ%W7>U{=>jOw%-hwM\Ll4 guTV,(< QWH׾,IEB[W}f̚S #(@ 玘Ju Y.!FLJ!0׶qWM.|r+D2yd2e I-{H+#H\76#\Wזwm|ΐaL7Yb T`` cEkeӵb8o)%]M$q~@qAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPYnB" ^RPQo5@5 7S**- jYWdસ$ }Pqz;w.e'$2y_pzy=z Y|Z+}27m00(&M[T~/UhmU'^&lIfw[ Rg̒q.jMZ[D [V#Gїv2T"N&0Z_wNMAi ?:7*o"H'a<$2>ry=NMo_$dN:/NMAi jZ;c1x5{뤟 ʕ8RN1K^LRRw(D(((((((((((((((((((((((+" ^RVdO!/ Jê3M"^3?&EE]GT?o/'DO²訫С"~F2:)M_GEG] 7/SQe&?k,~W^Ms-`s*-n$ **.ӘaO𩴯^G*m+WQOTW/6A w+()𩴯^G*m+WQG+3SSi_ºE@ғOW4f`όsڴ訩QZr*x+@(((((((((((((((((((((((7?{EIZ?h)( 7xțVOu&SX\u? B%>ȣ/}(y\A5%Jo?*:?MeOXoxQErQ@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@dO!/ J׬7?{EICXuFwT?o/'DO²訫7xțVOz?_?/_^E)y\A5%Jo?*:?MeOXoxQErQ@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@dO!/ J׬7?{EICXuFwT?o/'DO²訫7xțVOz?_?/_^E)y\A5%Jo?*:?MeOXoxQErQ@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@dO!/ J׬7?{EICXuFwT?o/'DO²訫7xțVOz?_?/_^E)y\A5%Jo?*:?MeOXoxQErQ@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@dO!/ J׬7?{EICXuFwT?o/'DO²訫7xțVOz?_?/_^E)y\A5%Jo?*:?MeOXoxQErQ@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@dO!/ J׬7?{EICXuFwT?o/'DO²訫7xțVOz?_?/_^E)y\A5%F_Qe&?k,~ޢ+((((((((((((((((((((((((((((+" ^RVdO!/ Jê3M"^3?&EE]GT?o/'DO²訫С"~F2:(__J:'n- "$u/2Ҏ4}OGЋm6NhvoʈNm9r-"(yA;/"vm6Nh*"yA;/""*ZKŶgp|gh8*jR{In;m6N}?K /O ?m6N}?K /Gw"(yA;/" /Gx^$Mo=Nmgx^$MlOy4{{yA;/"")lOy4}?K?m6N}?K /Gw"(yA;/" /Gx^$Mo=Nmgx^$MlOy4{{yA;/"")lOy4}?K?m6N}?K /Gw"(yA;/" /Gx^$Mo=Nmgx^$MlOy4{{yA;/"")lOy4}?K?m6N}?K /Gw"(yA;/" /Gx^$Mo=Nmgx^$MlOy4{{yA;/"")lOy4}?K?m6N}?K /Gw"(yA;/" /Gx^$Mo=Nmgx^$MlOy4{{yA;/"")lOy4}?K?m6N}?K /Gw"(yA;/" /Gx^$Mo=Nmgx^$MlOy4{{yA;/"('yiU2F$7k6;̷3Vį&W,\4o_UH-Z{K{p_ˆܪ-w#pmeIu io'&0E+Ep*Q Ey<#jMvsk!;Xga} UJ^No6h7vKfm64j:N쾽c5aIĺFmzuܹ9Rg[FўU X(0e~ 2cݒwy+᥶ua(M6jdKG/QƾTFDn VoAg=y}Wi1dį#_,Yc{g):F çq^bM5 )o'=ŧFvbX]C3I:QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVDФzȟCs״_?TgxEMcf rM+'ȩ׌_OdQWCEeu QuWEiG]Ei»CgHX)bH3OʞKtW5m3GomZx㺞|I)zFGM>]N]6;Wwj)Jg |ǭp%*i\ili-Y6*HV.]&KP;ߢ[$B$TquáCKYRژGwT@|_9[Q{2YգX7C+`ANw g# Oh7zΟs ︒upN\}*{mSO)L HR4n]5w%dg?&6\}GͅioG4 _=N; .dɠHA#|X~ѦUb]h*1.j(M>ѦUb]tQacFAVt}M騣37FAVuQGͅgo[/7릢 4 _o[/ME69ioG4 _>l,s?h*1.io]5|X~ѦUb]h*1.j(M>ѦUb]tQacFAVt}M騣37FAVuQGͅgo[/7릢 4 _o[/ME69ioG4 _>l,s?h*1.io]5|X~ѦUb]h*1.j(M>ѦUb]tQacFAVt}M騣37FAVuQGͅgo[/7리RťHo$®rvh*1.6n=Ǟ(v3H8Oz񺩸K(2p9=śNOߖ]a$kxEMcf rM+'ȩ׌_OdQW]K&_^E).[MdY,淍$(gBq\_ewiS0xvzI?kq gbz C\VYyo'O;TQ!KxȻ;AlwEp9tN:_)Gcx K[sv ln0&^]K+i!0N-!P&Xq99(p9i^[\!X3#S3U! 17$\نO}H˰{sg%p^5v&zmD0m?!@e v>~? r?S?o9E5O[6<׿laGV$/ʪB hdyY3^6VniA S}W~BFЯ_=GBm_A΍*+7CT_Uz S}W=TVoBm {9M:4 S}W?5O_kǨrtiQY -/% -ow(l9RA{NJROBȩ׌_OdQWQo5@5 7S**(Ⱦ_/2Ҏȥ7}wiS0QEtQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@eGׇH,YZƯQY_D:?0t>;2Qu?o\6vd_ܾ󪚊۪闖=ͻNpx !8=3 >VX[$"kH8@ѷ0P2ܐ25W}4gy$Fʨd`l1ڤN0J4v@ɬX=pGGu“Ĝ c׷3}?;G->t2ŵWhƋ3NuxE"ݻE*lv${!";X` UNmĒr$-$[Tla -ӂA-8$m@Anxd9PJ`3?(^r΋)\?D)٘mr^| Š4s[( 6hRI%x Lyf$.IQG}EC}GF+7}Es9@ї}GX>3?F\SOt?*k7k"naY?TUxEMcf rM+'/c/@K"TuWKގdxKh/ ?>Re_Yy?dxKhϩ/}ꨮWG.?_&Yy?_ /_z:+/ G.?_&_>KގdxKh/ ?>Re_Yy?dxKhϩ/}ꨮWG.?_&Yy?_ /_z:+/ G.?_&_>KގdxKh/ ?>Re_Yy?dxKhϩ/}ꨮWG.?_&Yy?_ /_z:+/ G.?_&_>KގdxKh/ ?>RezG+HБ#X?<%Aq4X bRz//Vmɫ6f #_/U,gȟkG mh~M[5GG.?_&Yy>R_^~M[4?uC&| #_/G, \^~M[4?uC&| #_/G, \6(V[ByrZJTϻ94>]N-JK WvGtЩ |=ϭH6|Zh$mۜz1=Nh#qx^43&VFI#;}n6Qݿ46WWz55};1;'\ݘs__[-v[(H\D|Ѐ;£Dao'Ͷ>ќ랧֏b?/gǒi uKV-N&5NV5`IrB.5<3æJYl`{@ .ϼ)R 6}o}:_ؼ;c1q=qSwmv]!m<1@DleW94}s?%qy^- RYaai3_k +Dw[! JF@@y8 뚣xjk{Ԛ).|!a@ث$ V-9'K..n,-mmC L'.@>}s?%qxȇƑ.GV7mN#|cofZ^5D˂ڒ%,$N0 mchfX͕f1E۵ϫ mM/O\Gaj.$XT0b\g9^x#{8$NWrg\}^=9W5Y-{Ǚq=˄cuk8F.#9ƟRݵ֙aZ?dAss ǔV!uoMX丵i#$aDo( }7cwߟlst똏/ñ¨O ???]{8v8U 1?Tx'볢b?3G ..U 1똏/cQ G ..:(#~Ka?Tx'Q Ί>{8v8U 1?Tx'볢b?3G ..U 1똏/cQ G ..:(#~Ka?Tx'Q Ί>{8v8U 1?Tx'볢b?3G ..U 1똏/cQ G ..:(#~Ka?Tx'Q Ί>{8v8U 1?Tx'볢b?3G ..U 1똏/cQ G ..:(#~Ka?Tx'Q Ί>{8v8U 1_"4r#fS ]V?u\_k{8v<~Λ^Ki9Scݽk?O 'PU,McWfgŸ'O ??]W${?) d]t~ޓ{ ,kO[)wː9bOEjQ:f96W.:{O_D*mcflpT$΀ϟGz4 ])+HƳԴ;77ϪO{2 mxX]K? ]:QK 幱k%VG&Ct&n._*k?[ [RzvTsy[%0D坋a,a`;v?u['7qGnE-^*n$g@0 #Ƴ?n._*+/k-4yRyc{Ɩe@e\dLj-kS],ZXϫ:LQ5ƫe*dg67Y5QgsrUGF#Qa y@Y%ppywH:E4Q=OnAg;^ ygh%xےdE,UVIx\e'LQ^Qhِ F8,D s˸rG)mS_rE4Vj7{Q${__U3:tH6 sTNeomoiA(UV!(’#of>6?|m 3Z+ 8%Yb9yL>dTփsd,4m*#:U_?|mٚߕ 9e G`o4673[ӹv$O h1]&u"ڠi\9X1䃜ٚߕ ?4+sD,RxkAKKD_Oh֨bFL` +{x$qơU 8bfim~W(Q7?|mٚߕ 9fύ_3OoG4Bޢ4+fim~W(YVf>6?|m 3zQύ_!foQX?ٚߕ ?4+sD,+3OoGf>6ŽhE`fim~W(Q7?|mٚߕ 9fύ_3OoG4Bޢ4+fim~W(YVf>6?|m 3zQύ_!foQX?ٚߕ ?4+sD,_?Tuf>6¦mФGB9+YN\1[ep]>>}7/[?m^k)ʬ+}KOJ8Žhll}i_մ FeOYxsW)i_Qx?v>@03 u ; yZu}?ln9|>|n}j"qxsW^=!v徏${gir$4*EF,9@= &A>nb`[61/W:J?G"q{ݿl}Sßҿ?OJ8‹ǿ=l}$Iu!}@ma?#)i_V[0Ut 6$ڇn#Vj ۯ"G_Uu:5|K2L((7?\u6*ȖXIo+nF>zޟ|2%D쨬sS`7+Ʀj}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^EǦ|G.=5/v [Pmqj.=5/dM,OQVa,0|u k_^^em뙚'Ip+0?0mx.gǝ>`̠t:z]=;P{cc,4`4C*rNcW,dUUQѷ}"~Tpo0ߕ >La+SmZ:Tw`cHtQ>o4M+J55Mqg`:}orNFcxXK8]^" 6Rݕ\G$xQOjgOD4;om#W TLH2aw<P`r0k3K։whsC..^Y.$c~Ho4,s_XkuDؾWs1Qc_tWWp 0G֝?tG?¡ A^7?CLa+h }~W(1T>A4rMc_P 7?CLa+h }~W)>?¢ 'i&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ Ѭn%GkQM,CjI$}+5VSk],qu HIXShF6 ϛh9w. ZC G#[?v,/VmZMm>g<} G,yKFLErBSZ>]sTi[mFdK|ZzmӴ+Q.H2M,KnuI9x}]\cb,[zw \=S>$ /$ *ᰓuꗗs_ :M2 [y'|}x^6Z]-TmĀdG 2Xz}:}PM6eP(Mu<9_FR/&l2TYݞ3,N%$۶xK*":NP`7QrXGJmopn#gt ߜ9E*Lץ7c;rסe]~Q,|&q"Ʌ&O?8k 婎ı^ζxHB`z?)<)s8Bʎ[J+9[A[@oOloiwFpxc,B j3X.tn9M9p;1ɍ/qTc?%eTxxOQm|%wHT#PPuew<hQV2T/`x?iT%EOɍ600_Z4L7Y\(R-HqԊ ~w3Jtnb!P+H+sY5m'>!2K b󱊕%y0MAm|6W:{x%Dp@RD6@뉦xnDGKVGHXK ؈05^H 6Rr]"aDž^V\ +}^0׿,U . .aǩoW Fk[ /nlxNXg羄zg&⼵}B-Y1>eֵY_c`_qxaſ?^ 5J6*@ D_飢U (Z3_6x -1?oWYIsZ! HJZGԲkng.Co ?s3??xaſ?^ fsy]GkkM3C2pV?.(?,gh'7 &*A[@c0Ug_EW kmVYd0FqGŌdoQ7 &*~vbq+sc?!ެOgI JdJ`93~a<7oL?Uxaڕ{$_eнa…L/r3\?(X??xO -1?oWZk%1YxA) ݻ/wfUkB5=:T%؃r0N dd֏?s0  ɨA ?""J. H=hX??x5G ./MEWQS?s1dax5G ./MEWQGˋX#| ɨ?wj/*Ҋ?\_?x_ ./MEQ7 QUQ?s0_#wj/*A]@_tF7 QT _U{?0A]@_vuK \yMuFpr# i\GQʨE7|o k0$䊊_ y$Уd f (€ v⽦9";F?,o#>%a"ڞ4y0|mpA `  {ETkԃFJ 4T:3 7Eq;ҵ<λj-8k.(}3^9=t?uS_XtB<ݥgoxqRRRw:|xz ½7wyWϴ͢Jbe-Zz7i6>n|c8 2?1\9l<"NBNNTnͤXC)eƅ06Fkigu}kai-:}V50D0>j O+[3t~:,p::ůݢ!ע#M0bo|e[KKfżD{<˼AvdD<^7p9-]e֝as}w}mM4V;QA$>Oe?V ]c]|RUZR<73:M"\yV&YWme =~[aO omVfam_m¥[3u^P5HI+cmI@ cq mg^dK#bo4Hg)Jy7p\LZ>LZ9XѬHu-[VEqZ]<f,KFϜ= tWKĞEq;??bZ*Y#}PJGdkP)Rmp?R~9ǚR5ȴ% Y>4IDEu/:oZkk]RVmT, e>q-+ t)Q!vrhTf,LJI$R~9Ǟ$[s+-d wo-| §uǍnA)d-|*ArsZ2oo.5,C#gQt&) {x^Yn8Rc`IHlM g80g?2oo.$ fM_N 5з[Il~j$;qJcNQ5Pf iP6xFD!=sZ2oo. [x岆$qhUQ@v9MI|OX`Z=}|5|N<{-fkse8,̦8'id_+1D6I`cS,0q8-͔L]N)U>KסQ\:24_BXW}Zx^YS˳X@J@p:K.[jZwWmqo$f6߸V')i]\.mY&kjBY`{#l woms=.OYy$"h^:-RLms#!m>JrܜKEe[߃՚) ~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf~-{?uf+]XL8,]ּgGxy{Mk^-Yv2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2ZAs HG qTExƏCZ ]ּ[GxyzYG>K1 4t _o _o9ORpT6gb7CM^fYW͛V@?ֿ [3w{͓ >7YB6OG'3w@?.>4'd~ty}:7?,B6OG'3w@?.>4'd~ty}:7?,B6OY"nt ڕ 5,X2=jnq}MSOW/tۋxu*HJvaj2,=9XS w¸k`WNvm}jJfr#B ߗUS:~ $Kiyg| d'eb=>k{F:X^-6qLp~dvó(-*ف42{;))%ˑ#2@W.xsR7K_BF4-Ey%xR<34\ UCm!mıM  6$Ċw0F#5RQ hYXfY$ԗ@2J0:ҳ+&a[YI%,d3!y;wa_3I%-L!&]YiV}@#?,͓ >7YloΏ6OPf]}EhOd~unq}ћqtYloΏ6OPf]}EhOd~unq}ћqtYloΫז?AԷvlc{32tóQM&6OX2:֥[ivJLv9F$BțT,$Hw@?.otK]2YqClD a q@pY{ZEuq5ءB)<+߼0T8nW1x/lu;o,h)!3~Y\70@,*;UhdY-A$$~c3(p.#Y-n񦸏̖!ͨN}sN(5/=݊%"#پs pcg!fc%Hg\Zqo,[A3+ wBx/*Mټcu[+$nFD{P.%96[`S%Z{nkإx[eP+$~UY(k o>FVieB?,w[KP6kukyc vGor8g7aF K[¾g-U۟8İwrHwsrl6N]B(g6jF\0=LK5i;pR{I]>p(%HiS8 ɃǻEd~uV/X#6ZrȐw #-(7 O .qxU0\]Ey-o%cX0b#$>,2[KtX;U})3̬xʁMPӮw_cl.,㉥ 4l~ʼ m<;u#Hdd#YIFB9&;Ra$[ǝ)H8(ű~ C,1wc`6ku _geCs2m)߼8l[oãܴ]E$Y{VAaXWUXxm`=-%5E" nbX oͻ'7WiY5$h幉eUTHpBv Yy}:Y=]pBUYMmAR9ZZXKZBh5:_}k^}_׋|h/?5C({IfXῗ掏.z}y^ͷZ8O+>ua6niγ0cD۔>X{t, bwTy̫,A=Hq8l͞-=G[YtZn\GN8}2'LGb h!&h JմԷI5 |%ͻ9PzU]ZD m<1@DleW94]hZ=yXXɶ8H$ t@p>#Ʋ֐iMya p.௜=UJYznX}$[YC K*=}>yuy&bWq.fkt/4dQeI> EƟi0$[{NG$gt<[^}T.|Q%\ZERxP6miׇ^${WТZ)$p8b9N~}wW{ ʅI ̠ GCV!d)Qąʢ1bI=&9Ք2>`!hdA%q3D Fh5?hGj}̖[nu)&&RpԴ7Y[}SO\:u ʡF@`FpHϹ= Gm*ϗtfqn(uH{)/hK6b(ʱ6TkWV{E[U٠K|۠U 'M.-n/tK}BжA2*GT_%Ws<}p~r~"C.5%IyVqJ>ħp!ӇXYqZAikvCb4\Np2I?Yȴ/D`da|ܢȼ>Q(κn-.{=T0ռ!-3.Ua ~$-]W^宖ֈ w%WJ~o,C|a>l? h0{ϾYoe'zdbm'Mp[ *Y9|(7P:ƥxS&hPKe"27g}،l:b4{KfH% R; ;s dMagqymy5]Z</ǕG:nn^ic9vK` a@WOE|3Wk]i2}hT#Tfչx^}?GwRLmCMO8ܙC?|B'ox,,1igla6ATփ hj<exvێSjxg!?:w}1t-FVBo![;#nz-7ڎk?g)"ޒ 4Ã9ьAcagYgaiy rI8Q$5_Lд}ҬlyF_<|p:mt4H!Ugp0rr1Ms~'}$WGq]evak U)BaTtٵHuItG!M]*eE|dQEQEW/{l(_um,ms'X[ZI$sdo,1QYsxkA>˨Woj(eӼ`` -k^/g6i{4&he0 / +gʌq~6mYT.[U=-{iiwvƓnON<{0S6]p,KLu8-u;ukVŴGIdXCSZ W& H;QdE d.=8Q_GӴ{9l`Ȋ8$-@`[S@NǚZK'7/|5O0_ k^ST' K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@گOjkkV?V3v0'ѵY'ѵ\X3Z_ ZBh5:_}k^}_׋|h/?5?%~hmקט|/|5O*z Bѿ5*Fq֮8l͞(((((((((((((((((((((((( [GMX lr?jkU-1m^Ok^-1m^Ok^?fk^-K'7/|5O0]"|5O*zBѿ5*Fq֮8l͞(((((((((((((((((((((((( _\jkcWVjkw _ ד׬_ ד׮,O/}_׋|h/?5iP/ kž4ǎ_w^Q 4t w_6k>mק=I!R?oK8ykW6frQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPvվՌ5݆L*n--mkVE-mk#֗VP/ kž4ǎ_w״_?K k({Id?_:?o _o9ORpT7wFER?o ܿEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE}ɫeL?{_O[Z_Տ.V-,<~Yws-/m^Ok^-/m^Ok^q?fԾk^-K'7/|5O0_ k^ST' K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@iMX~S[ZOjk T[o [ד׬o [ד׮,G/}_׋|h/?5iP/ kž4ǎ_w^Q 4t y_6k>mק=I!R?oK8ykW6frQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPn#|&g5qɫ?aWpŷy?zȵy?zJExƏCZ ]ּ[Gxyup,GGG@mֽ>/?z}NkSԜ'b. ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEf1_Ոtv0'ѵY6'ѵ\X3Z_ ZBh5:_}k^}_׋|h/?5?%~hmקט|/|5O*z Bѿ5*Fq֮8l͞(((((((((((((((((((((((( [GMXMlr?5c?5݇ *n'ѵY'ѵ\X3Z_ ZBh5:_}k^}_׋|h/?5?%~hmקט|/|5O*z Bѿ5*Fq֮8l͞(((((((((((((((((((((((( _\jkkTWp;1yHϱܰnf/9]'6cR--/m^Ok^٠mK!,NN X=+B 9VExƏCZ ]ּ[Gxyvep,GGG@mֽ>/?z}NkSԜ'b. ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEA/TTrH%̻ Z׼Sy$ϠGZBh5:_}k^}_׋|h/?5?%b?_:?o y_6ks_ʞ?to7jѿ53g~(((((((((((((((((((((((( No*D)-ejВLկ{%>}=JExƏCZ ]ּ[Gxywp,7/|5O0_ k^ST' K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@K"tR'AIn3.CV/e_ )3VP/ kž4ǎ_w״_?K k({IfXῗ掏.z}yz}NkSԜ'". ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEA/TTrH%̻ Z׼Sy$ϠGZBh5:_}k^}_׋|h/?5?%b?_:?/ͷZ/ͷZ8?D*]AZto7j_*(((((((((((((((((((((((_[ : Kqwy$/5k^IO@Rk^-K2 4t _o _o9ORpT7wFER?o ܿEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQER'AQ"t25k^IO_jВS>k ]ּ[Gxy{Mk^-ȿw_6ks_ʞto7jѿ53g~(((((((((((((((((((((((( No*D)-ejВLկ{%>}=JExƏCZ ]ּ[Gxywp,7.~mקט|.~mק=I!R?oK8ykW6frQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPHG/TR[˿կ{%>!_BJ}Lz/vCZo7ExƏCZ?Y#o_ k^^a@mֽ>5|N1 Fq֨]AZ6{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( o*D*9Nf]_ ) Z׼Sg#ԭ}_׋|h/?5iP/ kž4ǎ_w~Q̱/z}yz}NkSԜ". ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEA/TTrH%̻ Z׼Sy$ϠGZBh5:_}k^}_׋iCZ2|eGE@mֽ>/?z}FkSԜ'b. ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEA/TTrH%̻ Z׼Sy$ϠGZBh5:_}]k^}_׋i/5C({IfX|.~mקט|.~mקf=I!R?oK8ykW6frQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPyʫf-P|¡$xV|688p ۙ!Na+ƣ}ATTٜrϫmקf=I!P pM) G!px"c+r_?Kf%j**aYl\$M6~? /QQG:d6~? /G͟KTQλ/͟Kgs5sfKgs4l\$MEEYl\$M6~? /QQG:d6~? /G͟KTQλ/͟Kgs5sfKgs4l\$MEEYl\$M6~? /QQG:d6~? /G͟KTQλ/͟Kgs5sfKgs4l\$MEEYl\$M6~? /QQG:d6~? /G͟KTQλ/͟Kgs5sfKgs4l\$MEEYl\$M6~? /QQG:d6~? /G͟KTQλ/͟Kgs5sfKgs4l\$MEEYl\$M6~? /QQG:d6~? /G͟KTQλ/͟Kgs5sfT{H[7jbd.-L;8{f*+Xb\"T2l&*[mקח2>EäGەdUo>⻟sS`T' VGn?0QjX5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏wS`EǦ|NsZEǦ|G.=5/,._??I k 2=E2ҰH ⼣bӴftd/5˅ldPK){Ifῗ"eʮŞ@ p(mI}QE}<\mT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT}{}QEmT'Q$f4QCbGorDd!K !J  C &AUploadRq"I`+ YqzFq"I`+ YJFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?o|KE%"C yrp8:W :c ʤm\[' dN898g qlM*\A$L`W1*r+ҡ6~uPC45jL\(L WfxNhaX & ]ߗ>0?0mx.gǝ>`̠t:z]=;P{cc,4`4C*rNcW,dUUQѷ}"~Tpo0ߕ >La+SmZ:Tw`cHtQ>o4M+J55Mqg`:}orNFcxXK8]^" 6Rݕ\G$xQOjgOD4;om#W TLH2aw<P`r0k3K։whsC..^Y.$c~Ho4,s_XkuDؾWs1Qc_tWWp 0G֝?tG?¡ A^7?CLa+h }~W(1T>A4rMc_P 7?CLa+h }~W)>?¢ 'i&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ >?¡MI=o_x~W*$9&y0ߕ Ѭn%GkQM,CjI$}+5VSk],qu HIXShF6 ϛh9w. ZC G#[?v,/VmZMm>g<} G,yKFLErBSZ>]sTi[mFdK|ZzmӴ+Q.H2M,KnuI9x}]\cb,[zw \=S>$ /$ *ᰓuꗗs_ :M2 [ysj>}"ʲs?jtm桼PZ y' 7$Bs<666_MxfeW2S ^(En1e:u)&ݵ~W쎋_QQtźΉJ˒r:W[oK{qd.;h|*,|,!Vf)o,Bc3m5L-'5}z~oEƿ<^hq?-Lw䌓4ǯs Ӈ=ʴ=Ŋ[k$dd+!F#<cr^G0$q][qoO4xFA&#QΫƚ^)e?hܹ[ x- 3%xu@#NYc'ޗo}L@5|+%p9bNz潖5=:T%؃r0N dd֬e]~QwYpRx|]Wm%┹+U W :`b @۲jbܧ䮭=ݢLccg_E'a)魥/_L !al{v83~2H=2XxRcMzÌt5^;+X Cns,BY̅Ѻi<ݞvHDH6ɳzͪPs!L^kuj~% u3Gm#sևYI縉KTrQ\ާ _UJ|c|ͧ=H$34g_EWH`QuKu Q"lN˅9َLo{+*~:h[k,>g'܆CB,NI n%K{H2M5r;`e8 C1GUK3%Dgh4`e^ jc"CTRV7s 7VWs Vuh `BF `Q7oq:OH\oT̘ۿ/c0+/b,伿qxaſ?^~KTWӟOKv0០?2OqGt?6FѺH,sqxaſ?^sFڗ_:4 z3M[+[yn.5i$/$Q@$sĘ+ԄSyF?uxo -1?oW+iH ߡ{EÛ _ g!uGV3~ddoQ7 &*zX)2 Hn܍x2,SZzԖQ,о*pS# XNM} T2oo.Dv HG? gwa+x?kx8 ?*LG+iSiX̊N&fBB6E,i?ver Fm-ި֏u$}PF XQVf1iu/f[3ts'JOzRf>`Al&FhP0[qw鯬M,\$mCR a[&_m/f Ldh*jB5-m^G_mX,GyW3:AJ'bAcRx`jjԥաT./#)ṓdsFL2j9r< e?V ]2oo.`Ambx#-^,^_ϝs5ät;x}}s x_^׷/uymeg&iI?,L\o `|l7kݥ,mhJ 9ۼv_ll,p^-u,6<nZϬ݉J%mic- a=7du4~ [.]`ȋ$CRp tll,GNJ5+'QMu[.pgcOjѾv1&#}nǧV[3ts _x6d] q{5wirIC$>][uN]cQ H;vo `g$i ?4B5/f8 [(`GvU |j\coM& ؼQ΃$k& ݻ=k#v#] )uCAj7 BŷCJA'2oo.շ7O,a0L?i-gQ#n݋jkQ~kkUVW~s zmmc-QU|C~m5|N1<~QOk% V5k׍END  oo-^+׏-̨n.ϗa؃7$7פ"[XLT́q+Aڼ'>"}'V Hntkb!=f}55T{;DYuX2+ 12s]\ /.o~Vh2e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(e[߃՚(wWi`e2"" wZ7ExƏCZ|a~hmקט|.~mקf=I!EYvGVS ?y7[hz[?4e\˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j_OOoG,2Zimh/.̻z[?4r˰s.*?Ə=?˹j[)2!1Sjێ+__?K ko/vCZoep,7.~mקט|.~mק=I!P;-t5z-Lb d"YWn?ֿ¶fs[͓;Lϥ9Q?Yd~ty}:qTi?,d~ty}:qTi?,d~ty}:qTi?,d~ty}:qTi?,d~u-VHέ[YqIRȅ8 #֝?⪦Eqmv@4f0]J2H;09WZŗ:*anW{mg߹ @0G N-Zi].XhUDv2ψ,lId_$kуd'eb=:%ͽM%gq1&Gl;2 x;K,X{to.F(Y\`?)H~"X,ogmu EдEH|roN4kM 5k,SBa&(mI[`Fjl-c1gYaIdhw3u%?(fIXZV`M};DL+u4;+<$#[lpd!b/0gr{X/BE $'w_v0(k o>FVieB?,w[KP6kukyc vGor8g7aF M&\jsӼnTp@-cK:u:ssP q#.TAFԬds]%8ڱDxA%11sh3’q9h'.ojxIDlD7[`e$!mG. tc}.?*d`VyuSW%cǘ0b#$>,2[KtX;U})3̬xʁMPӮw_cl.,㉥ 4l~ʼ gCm<;AOY#HR~gnNjHll 47S\"v6jVPqq T71&ݒ.HŹ~ :=K۴QHOe)X 7nEd_  kacoDH]Ua|dV VXF[UTH@`HDʡT;pWv`u~loΏ6OYc}.?*1>SfG09=|cU~c.0؎1xYƟ,.ZKGV& o)nQ-,%ԭ}_׋|h/?5iP/ kž4ǎ_wס,GGG@mֽ>/?z}NkSԜ'b.ծcV'R7qg&YH)J)TKg`w̰uk,#9b+> cn} 44EY77VR˄dd{UWvkwY5!4Qٷzeݜ@ۆOYuotr[F!Q@U;rF.|gyc Ն=8Ѧ+p1ڬƚicU6[ͦ(.-yG  Sk>% Q.MGhL1i]  >r]\]=1g ʄUܲ7` le1wmS$rJ|(Δ7/ŏoRզy JH n\WQ75<U24s4E;-2O]XEvWic{0RI ̠;h/[ƥʠ,ijRI$$#:yf{fbhPƎѷ?+8$g5{axK;seu+%ܰne{pIv]=``X5[U#(l0<}隇o/JN&8ܧoK{yb,ЉgXʲHo |B0`CJXnR{ 2$Tg\d_c5OK[(m-;"v"'/ G ~Dfv.<^8_x|Ҁ<_kdX [\uPDY Dc$-}GY񕾞זkrE`.@O3`&* /tWrǦiis+oePۃܓCgTV <ֶ20n<`*'# (uK3_c$xulܟa 2v@1Z]晨m`RquW}INcXm$K2e HqRNOU^-ŵ T7VVS9Wt}yttZtf16Lhn>ր3 v<=R^1HYUI NsHZߋ?G=P}Ko7M[Ǹ_ |ZT%8'#ހ<(5]V/EdB1#FsmRKOo/Νn &V;607Xuq8il }9랧֘ӥӢӤ4lcF琻py>]x?D㻆mBUWP%y 68@ xoUȶ솒G1 ǜ6AʌAy^'[Df(+ F} -|+Zr(4rOh{~g(>Ǹ_ ??€3+Qy -6^ >1r9'2sc~/Cu{`jidש <@>j- ?Os't,RB/w 29M Fd& ZX*y1Yڋ[ :HfKtI%Wf$դ^'ҶF @=(;ummurl pڌ̂2N\{0j} 6}xp tҺ XCq4k`4P:[] ⣶5:]֗_ّvܠy#o "8eڽZ6^G2n%ig,a?/0n;a\M! ߜ-F]F;[vIr#HGҋ @iֶ6po1#R8P9P4V=Qq3NDR"YI0xeWHq>{c{kY(I;%{vS B"acj}m;`c]vNz-gU^CիYjwc(ܥIépVqbsڞk ]ּ[Gxy{Mk^-SL:l:ڤZ}j&n>2GʼzUʠ<ŚlqX]jLxpܤ/,˔p5OxIXm5Rg=dK $1չW`XY}ϴ_ |a#g/>cj;'MRt.tDg\HŐ6G!XI"9=gR5qRP8/<,HY{!W,G9pk#Ӯi%\L̍'ۅilY&1 $R0 6K\}xEAhDql#m..]M}>ZU1~fր9w%ƛukc{#m1Da*e"ulSֵ3Iq$zq2A2Li~>w n'ޯLд{F FJos5<;kIh] G_mҬG|?7o~ݞFs@|,-$PX-[nngMCw1_)^^mqk:eLd,#}IC3]|5Y"hK/f1nŃ!,#5@o-<>6.,QuJUB%Ox=+-b[-J+[)ыmM L+6IbGԵ-W\'dGoChn_!KI$' G,Lh, A!#4FRQ+`;R ;Ehl/۔\}=rz5(w]*MO{#-)'uu ;@ea2ך-bhvOqu[9k{#yDZdI;pN"&h*TXt@qF9Q'>_^:̺eaDdB$O*1˓}}Byo涖_4,s1(UҮPEPEPEPEPEPEPsw} :ܙ>֎ ŘxШ\aU{8φfԎj/.V+]cb>ai+JC?mn9|>|n֣Z \:\&|/+FC7SdWm Qy_n}h5VM mDI MmI"soUEt^[KPxvm/5.[+mLZ-I!r]ZV{(R- GVc~۶s|sImV}Z{xUab )!?}My]ޭXxÚחmq8kT+ *SPWڞGa}>n/nAntKdX2l G͸[B幖*9.Y-dVޮ|AGU}9r-RC?0] G>nc'~>źٱy||ڽ1GSЯ-VkeM=n.-bXVf{K-ЃNSIa&"P6Kv׎>UҮPv쑮?V3aZ}V;]¦㭝URIQdO լ_ ד׮,G/}_׋|h/?5iP/ kž4ǎ_w^Q 4t w_6k>mק=I!^y˩ǨWvNf"jSEf myw !U;quRB=FJy|l˵$t5 ‡ڜzޡcc0nR&/)>C,BN-|AwL=3PKlr%rh296ށêME&2laQ+3$|=S~Tv[~ YF]+@`3Ҩ昚GqbU*`)y&D1 |d뒣n ~!֞ 6(e#unn>$1Uu3 hZ=ĶͥX%=ԑo<(`t-D[_yYN>uoX]zxZKy,K[ e"b`H;NA#ƽ^sfmu<7m̷ ^>ř>28 [{ PȡԌA8G59=+Drǣ{scbC"VIA 1;LQMhep"n[h*|#tuIHD&Mݬ*%u|dx' $\YVO= *I6+-Bc$5 osoqFq<.#fnr3o;Ud7p nbNT@_"~JQ~f6یnOGak6j]Ag :x,ºo3Ӓs 5ķ喑ugcm7C]w9d\ᓧ۬In%&[sk$B 91FJޔY:n%ij#+*5v p8 R4RjZ'o&PЮ%bI:tH6 sP?yE}w*&\Gl,vIޒ uY@$-vNM'MTTO}BBT^xW@{Z@Q@Q@r{ξ7V2}@)0y@I?xA&+u7Pjluqv҆\m;Fx QּMs`H,fX#Lz᛿k5vwoa"lmy 6Yd47W^hZ>f,tQ+N!IgF7IwZ2GʼzQ:nn^ic9vK` a@(~?V#[Z܏| MŶŷy?jȶŷy?zJExƏCZ ]ּ[Gxyup,GGG@mֽ>/?z}NkSԜ'b. ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEfr?jkgV?V3]®m!oZm!oZʼn#5𕯿/vCZo7ExƏCZ?Y8ῗ掏.z}yz}NkSԜ'". ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEfj}V;[}V;]竸Z^FֽdZ^Fֽqbͩ|%k ]ּ[Gxy{Mk^-5|N1 Fq֨]AZ6{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (3_Ոt֭#|&g)7aSqm1m^OkZ-1m^Ok^fk^-K'7/|5O0]"|5O*zBѿ5*Fq֮8l͞(((((((((((((((((((((((( [GMX(,azBJ&yw2if9V#+ 𣞮m!{oZk!{oZÉ#6𕯿/vCZo7ExƏCZ?Y8ῗ掏.z}y^ͷZ8O*]AZto7j_*(((((((((((((((((((((((ՆcOjs~?V+]o¦bFֽd[bFֽqb?i|%k ]ּ[Gxy{Mk^-5|N1 Fq֨]AZ6{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (3uo5c?5MX wa -mkEmk'֗VP/ kž4ǎ_w״_?K k({Id?_:?o y_6ks_ʞ?to7jѿ53g~((((((((((((((((((((((((7W?_Ռ5|&GMŶy?zɶŷy?jJExƏCZ ]ּ[Gxyup,GGG@mֽ>/?z}NkSԜ'b. ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEfr?jkgVɫ?aSpŷy?zȶy?zJExƏCZ ]ּ[Gxyup,GGG@mֽ>/?z}NkSԜ'b. ]ѭQT7wFqfl/E@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEfj}V;[ZT7Ɍb@'f}>u18ٳmAk!{oZj]Yd]rpHǹZLji֒lVP/ kž4ǎ_w״_?K k({Idb?_:?o y_6ks_ʞ?to7jѿ53g~(((((((((((((((((((((((( No*D)-ejВLկ{%>}=JExƏCZ ]ּ[Gxywp,7/|5O0_ k^ST' K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@K"tR'AIn3.CV/e_ )3VP/ kž4ǎ_w״_?K k({IfXῗ掏/?z}y^ͷZ8O*]AZto7j_*(((((((((((((((((((((((_[ : Kqwy$/5k^IO@Rk^-K2 4t w_6k>ȿw_6ks_ʞ?to7jѿ53g~(((((((((((((((((((((((( No*D)-ejВLկ{%>}=JExƏCZ ]ּ[Gxywp,7.~mקט|.~mק=I!R?oK8ykW6frQTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPHG/TR[˿կ{%>!_BJ}Lz/vCZo7ExƏCZ?Y#o]"|5O0]"|5O*zBѿ5*Fq֮8l͞((((((((((((((((((((((((%[ : _!_BJ}2CV/+__?K ko/vCZoߔ,GGGEk^^aEk^ST'K8ykTU. ]ѭ\pٛ=QEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@K"tR'AIn3.CV/e_ )3VP/ kž4ǎ_w״_?K k({IfXῗ掏wmֽ>wmֽ>5|N Fq֨]AZ6{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( o*D*9Nf]_ ) Z׼Sg#ԭ}_׋|h/?5iP/ kž4ǎ_w~Q̱/]ͷZo9ORpT7wFER?o ܿEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQER'AQ"t25k^IO_jВS>k ]ּ[Gxy{Mk^-ȿw_6ks_ʞto7jѿ53g~(((((((((((((((((((((((( No*D)-ejВLկ{%>}=JExƏCZ ]ּ_HŎ_Wס,G_:/o y_6k3_ʞ?to7jѿ53g~(((((((((((((((((((((((( No*D)-ejВLկ{%>}=JExƟCZ ]ּ_OxwzG~K2|w掋wmֽ>wmֽ>5|N Fq֨]AZ6{袊 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+U_s6j #肳m  k_^s Y_mNH57tRS.}^mm fέj;}mkW5hwW+__K k//vCZc:Wݔ1_ k^^a@mֽ>5|N1 O hf[iN0db9 5Xݫl\$M6~? /QQUλ ̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2_?Kf%j*(]̗f%hٳI9`%ٳI?l._&u,l._&?Kv 2FGz!KWF{=}k vja-.H5QZ଑͹e5$HR>t,s'ZQXnn1V+__??I kٯ/vCZ񟍟ߔ,GGA@mֽ>u.$=ܫ",8Oע>qOsS`:AEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}i|Eע>qOsS`kYi|Gn?0Q`5謏sS`7(VGn?0QjX z+#7(M5? ,j}^M5? >qOEd}/.=5/v VO.=5/>q0`vBh5:O|K^e.AtƝ3!y\+c zYO>K0 4bZ*ڀQ W_?4QOG?/A?CEh?CG"h_a)*D-P(G?{ _ʃ _?4!k?_&(—BMZW?q񇰥?CG"h_a)*D-P(G?{ _ʃ _?4!k?_&(—BMZW?q񇰥?CG"h_a)*D-P(G?{ _ʃ _?4!k?_&(—BMZW?q񇰥?CG"h_a)*D-P(G?{ _ʃ _?4!k?_&(—BMZW?q񇰥?CG"h_a)*D-P(G?{ _ʃ _?4!k?_&(—BMZW?q񇰥?CG"h_a)*D-P(G?{ _ʃ _?4!k?_&(—BMZW?q񇰥?CG"h_a)*D-P(G?{ _ʃ _?4<c(ėw=SE' khِDd! D  3 @@"?-Dd \70   # A  "O-餌T\'+-y@=#-餌T\' ?PP@3,x} XWvA v!6"[ .p5Z5f1뒌1d10c2鑠2q:*Qpd",G5徧馏<~N_թNu}n 5n rwމa ?03a3g2s יa4_qW0':~Y` ЃA btftcٽu@ FS/صuhzotae 1vi^ad_٣njtG{ > 򝛲^<^4Gax_Ay52xLm$rۼ.F7FX! %5rfDOkt&om/YכTHiI}Ucm S;HK#-釴_4f@ <5ٍa2i2"ir[FՒw1UCw0YG_yl݇f|ܛ?2_?5N',v?5mG`vi;]ow5xG`Vb [j_0BsIٰ9@M :6DqhɔV>?[_dM"tSM}^|Ì'?r"dB|R[<ly,c^1.lXu"fn= ;ey'46y|Nk3lv熯k?Q@>߅b“ex؛b7x-0b/aa~ N+\*?:f-=08љAN8ѷmwk~ϧ3v9k;/Zۀ7[7}mmud]0Ǒd;ҮALOYd;Ғ~HK%!ۑяk;Տ3Þsx6yCcؐR Dx6!b{} 2I7hhs1tx{4mj Dxn՘Ǽ藺1ga$w]?Ψ8Ӯ{W~B]!~<kď~,;7Z̓s`㕣mvm{ɩh km o[ʤΝZhܚGd;\E7~6O98Zvh%;5nv<1>KX (s@<%"$2bG|v}n@=>{j?CbV<7yTݝ!I঻m~L8' =ټ-~zOV?..NS˟*6?_Z-ZzzIks)kHK#-釴_s?ݥOwn~:/όPt8xf܎,O/Acfpfg3WdF~zO'w2Ǟg''Y}9$wnMQ~Z퓳Xo&#xV3gwFx{ɶZO#yi% A?O7i׿[~uvd=\Wsg0̀מks3xYQ>oz.̿ɂ7=u'qt_w h]5M M3_9?$-tmصji{l[Y]>nM[8{Sl>oٺNm=@x?OW}4j@=`)#{#^7!4}C lP=tCt߄>]e LP{}=h lL `gZӵ m9l\j PgN#w\ˌ09z@ 42a4}հml[ű0g VMM(L oH]m`z!" 0EDOӗ@.Gt?ZzEe]e ̉u`4} V@Gto@-@=`E@@g$O4Iz@ 4j}OazظOcg%KK雐d`&-Р%K髇mU V%ƱDgqO3'z@ 4j}O`%x ^Jcn3})Bӷb=t+7>] MѲ~)zı@|3}9o0{x aj}OFղ#ǎ& uNba /#He @;xa3}kSU0F=t=ƨGt/?U˾ @Muh/"op/Mh` "MHӷ"ZdcFgKחN7%>@VZwi4}ö:X[؏ҜaoN&MLZks2Huв7` z#=po({}i66F-&P0ZZ߀QZ6d0q`(gc|,M_X{rkcH?Fˎ @{?g8^߹,YfkH=;N @,q3^_l>lkZsM[ZӵUcWwD;&Gh54}ݰq7lݝǾv{}邁}BZsM`SMW,l< [ı_?崌!'|/!X+'vzimdm[c=rXOMLɰz4{s۽[f fL1Mg:qn= (/?kS)tGmGm֍pok*Kw-5U@xUU0v= |?uo=i؞ouJSZ~(ox;7>O!X >j}z=ևznL|{}{q +~`/>4}q.l |?ߧbf/Eiz}c|~XO7LUa+Jbb^mK'V}6iVö`[-}1x1ALn_{}=ᷙm`% |Zn_m l[}?MKo+eh ƽu_1x1_LY{}o[{3 `2j}giNX[k]+_uE>}VKk]M5l;˽[#z:׷/M_Io+K}X*骏-v 6^:``Mߑ|m `)R`ZM7D3p/h>鷉o-X ?O/M_ 6(/c9ӗh@+kRj}4}Ɂ+AcX^ħ:ӗd  ^ ,CSZ_NMؠ|FZ`P^97]ul+VO&>8d-X QL'ɰq2l\^OwgF<b/"/6tX,_G6x}c $lg![τ8ӷ(^MѰ4KC j}Bi^m`<:/t+V~Q3}+ hak%|VZJMRض6.6loW+7-5[%p0Mml\[ׅm9w ^ߜ"6/F/D+mwa[髏Pm~ȍ|^- OpZTtU<p8*JQsTxZ IS<GC8-OM) 4pTrTTt>ZQq~i/4pa$<iy:v8"JsDۖ^~iCt0RfďbN (y:D-OX }u_#Uy:D:OpZ#͌">u8"<sD . B#]tE<iy:b^+SaâsX?WFF1OQNiw "p8?,*y:Eza15攘s47y:D:OpZNx&˸)0aQ9,tcOĞc->OpZ-#Q9p23 :=<iy: b%3&Z-ORO_M 47y:D:OpZN88x_ڧ@P ^)*y:"=ORۊ`cl-267y:7D<iy:7)G?jCD%OH9$~ `clK~Ct!zy:tn3/e~ J!sHQ+ހ7`7D<GC8-O纸aџ@!Q9$tFՊ!>.7oy:E<iy:ߋ'~S!t*Ԋ||\.:=<iy:Yߋ7>j Qөy:jY>_tu5sMN4d +D%OBT׈o~]t!zy:t9߉cr>NJAsP|톍akD<GC8-O8]N|B8?(*y:EzA+v6gs_[өdqtb:ikL]&1b: 荺Nӱp1i1 W˝ 2&@8%#qM 4qفf [8ǘѣNX!\P3`$pSb:GH`t,1Cc:b:.8, 3&@8%#qmma\nc:D:C8-c2#r3`$pSb:GH\5l}ap !z1i1 73*{& \┘c:w]` 8>;ҙ>uLpZLV7&@8%#qG8h3 X-cLQtt,ܮ܁fHt$ӑcr s=ᴘ;}gL.qJLG1k59tuLpZLy$r3`$pSb:GHܢ&Łf [8ǘѣNX\R0)1t$a s=ᴘMM2&@8%#qö*X[-1Cc:]2M99[lL.qJLG1km`%z)nc:D:c [1$3`$pSb:GH\hK19tuLzFӷX.wx0)1t$nP7b,1Cc:/Fr?0&@8%#qnnr s=꘎zgaz̀ ɨGH\~{5 p !z1.opZ.w_0)1t$nl+Ehp1Gӱ^ir&t$ӑa[luip !z1.o~f.Z0kJLG1anF9tuLzMӷat.m0kJLG10ą29tuLzKW=6;9 5%#q?čcr s=꘎zEw9+eL暀ӑ8zLGgf39tuLz˦ f` (1t$nxx3 X-cLQt׻Ԝ\nL0kJLG1{톍al s=꘎z'Mr'3`0c:l; ֳ9p zLgә81@6ͳܕmY;as192qM23Y[&Yv?H\>f#Z-s{[cEx7Lj#ғyrl9|ln8>v5==yg*>h w笑e9sb0hx3g^{1w GqƖ7io}?o!3FMu[}}{;dTN]\=>@h p>c)} >q}=zvuW@Gq~@k见$90ۃWі|;gu=w>ۅ+ߪρ^Lyɟd>?wg⮘ib3QKXm?M[Ƃ] ~ly -ܞ)CEy,\+OhcOilί[gc|MǙN5p}]m</<"`%(!] )}M{>!g"`%P6tZgNPίxc8{ń%~<>a4W)}xr&e< ג'<~9/܄;[;syb$&8PkW< ~Mׯv~?9-//x.}bN_ϯq!PqWV @<0$H+AH3Š5}9eL:Yޗ{z 5FgMi(r-OHnǟW)˦{fJm Ѵ78?ә w%Cm|OP9~R*xɳC9m]{ŷLh1qAbO ~5*]R|CzԴ+!N^ @\G oS@؅ zLckN5!.sX r-=}gίv~~E:?p^OtbWD9`ŪClչDpSIc35@+ zP׷_xZ/=x-i{9Va:(@ߗ/;|58[|_&˖/]mE߶~v][vZ?[t'':JD:J'qA] R@T.al%p8 ~RpD(NtR`{|{VrrAT.( llq$IѣD8Is\RG\Q*mƇ`C=O( uQ^Dž*@xQ*uʄ`\8(=:J( cDžl}%p(/:JeR:l{6[_U^/8Q"zuQDcþ LP( :Jejl| (=:J( O;R@T&lm[|ǀzzѣD8R1a!`?P^&(uz2៰m/l [Ճ uu:^GNX!`?P ^*(uz2l5ƿ^pD(NT'lsL(/:JR5l;:JD:JuBIc¾@)xQ*uJ[l[(=:J( G ~TP( :J7 8:JD:Ju' URRAT*( a A#}(=:J( W +}@)xQ*uJdl;} B_:JDRP( ] ^>DP( :Jؠ}BFPp(=:J( }B !>DP(:J%&ɰurp-xXGQQ"VGV =*$VAT"(O¶qlR ^+8Q"zuQ#B (/:J%R2ljk:JD:JvDx (/:J%R-abC-xXGQQ"VGVx,03 (/:J%R `뺰ZZѣT#(E^8:J%RP ޅwkk:JD:J5Gȃ^`AGQ#mVFԀuu%iujQGQ=RGi@G}?Eրuu%iujч]{={^Gi#l/֋Q55Buf{>u:J7E-V,1ß>{*o*9F4i6g0K(|ҘwC1O=T}n!rcs̍Gcf-9][ݤ]1ON7oB,g4gvoN8OTqr_k8.I$ u-B{.[O2ce1O0Xc&<%smKuS*jo'wwvm?>S`c~vt='ݻ}WGp7ݟ]S~qs3~шox-';B',[!϶6&X}S߶ނv-?6a@zj2&n{8~'?``u<^qgOAU|V>/A޲? N/X8={?sjۯgdr=%~ |l_!ˎhlוʃ-~5?~_t}_ut=_Q',;S[H(h)O ίO/GfL ]ͳzcB)^><'KJw=c>\H m'2?)olt?IaBd|9ΐ| /MM󓁡|Hx{=:hM[m};Rz13AU@u]}>L8>/Cn7Ⱥ"0^^7ϴ담:j>:wECj[Ϥ0ۈa (X.#߅.(uV׆}U6íj?k_߳Ko`^YNºұYFDsɽr,f(َ}@r۩6)v$K#C#%&h2}Mvc AJP>\2|ۋSNg4Ed+q{_Gڲktbm8yN@^:1C"或>#j{ |sZDo= nv`0͉^":Hs\ZI} 6w=΋j>:6c1gR|Y 5xUOWǿg2TgDޒwR]|'ȭ.uA?v1AκyV?oK.eǥLYviLZ{ǿGBRwfz)YiRdE نIJRܥL𿂘YvnȟI>Ti iS?e2} uyM}a?=4 Acw] [6BJ~*gYYNr_%CIav|7Yd}\~GI%!i׭jM4_W2P٣QC"*Gm4Z+דfm88kg냳pMe xz&mw7u_B|p]Zzd鯃J&哻vؔ}rOtÿkCɑ_>{5~g}/dS |na\PZjg}kNCIy`m]{ݭt8u:^O+k>׽[o&N|Nߍrs({&*}nTMUzWOԱ" 4dtu4Mߵh"**j}Nu|0vQKw}bi&kUz#!V]m l\c,-}b5Ml*}:׬w*`X [ GZohf% @TgMP#uzway 0Z̉]hv1P_ ػ: MԱ 9QKvft@~7Zӻ]ulrW`,``tW-}s;a;m1_Z ҟNXHMc'u7&Nvҷ*]ߏ=h{X}O=H-IұO%`a/*}0Zӻ*v 6^R,li]Kh3gt@~-R?>Rw}1}ulǾXG_-}9{lUj}Nױ`ak{bSh. 22:J85H]u촁X؇'j0]yjbì@TU]߲:XeZ ̩4}SMTsZ_o/lˆٰ5jaV-}ߦml3 XmS6Vaky6UK_p4}M_ XGe6 2i?]ߪ4}o 7;&jZӻntl0`,l70-}p׷o$M_H[95}#H3BaLrwv4M&h0ΎV#uz׷p= (-}oq0/t53:cM `ZӻWW`a_qzd 0#2 X葡8ðml[i)]Do`b@` L~ʠ g` SF]y~@ʜ^gTV??ZK5Ⱦ6m҈gp4Ӧp:{xO{6MzqM~* |ym*Noucԑ;w4 c`~WUYa,M}nvZ&k݁X_ŷGOmc7ۀ;ɁZfwpDg 'mWAj};̀mSaT:ZK シ7U`EA4}öyql|(JTsm8F`|%jc\:V/ga㳰`-}oMCl+WB0Vհu!<àoOit:X QoOM۰-l}+$<?-?:X cZ_qGöq?l1 [_o]X>!v3?)v=XַDӷ _6moיĺ/oFf~Vz`5|9_Z_N,Mض6ncosbs7Ly3y=XkV;Gӗv]uWv8-}fE[|!~34~=XsZ_8l+м|;_a2]ߪ6eUluzcl6~ [? -x-}U %ߝX ,_oKTJ.Ƌb[oU tz\>;{|:-\>Z4ԧӶ}:4}:֒=6Oi]O9~V}:>{8,GLp\,8"=N898.##MZqq8xq:C8-NWĮ(q:%"=ND|9\ 3NQNat1|(%N锈Űl<[2R1Ct0Ҭ q}82l;fF xq:tť]~u98c"=N.P ^-z=8iq:n?NJ1sLP ^-z=8iq:i◖sI1Q9&tӻ'u?TWq:7E8iq:7Eߋ_@1x8bqII/7E8GC8-N%{1% (/8bS,Mql&M3NQNӹ)O,NIE%NX6֢7E8{8bV}@x8" ]J9 \n=tu8~; TEES$tĘbǾg gѣ!sC<8xlY(/8"S$_! !zTq:t .( E%NP TWq:D:NpZNzI ~dUTWq:D:NpZN;8$3(/8BS(mٰ1f[D8{8dEAg@pq:GO`[9l,q:D:NpZuqQEeQsT[auzvCt\c@P~TTt8baebπug5=NpZ5xwbOR@Tt DzNxψ2q؈OkD8GC8-Nxywџ@x8qRqOkD8GsU\C}+}G D%N@)_)p Ct\g|+x8~DTt8#aض6{]*z=8iq:W·}Q9"t_3 l=qXNa O'Ng˧{t7OGLO>R*>}O}388w4+sgL@8ŧ#qtMEfv<}:DڧC8ͧE۹1Y@& Kӑ8OG3,8OQtt1u2 \}:l[=j4K7۹ s Ht$ӑbv6bӧC}:|:nV[d)>t$2l;f8~;^KڧC8ͧvsd.qOG> M%fv<}:DڧC8ͧvwse.qOG>5K=j4;ms_ZL@8ŧ#qtMM=j4i=L@8ŧ#qt-IJytOpOuIs)Y@& Kӑ8OGr`&ظ nwp>G!qpSܔ, %NHݧ#q6֢d=jzׇ/{O Ht$ӑ*v 6^RӧC}:]??e.qOG>u=jz7;wl@ Ht$ӑ3A;wp>Gq^]dd)>t$ၙܴYp;8Oѣ8wVV;f2 j}4-=?8 p!z>.wd)>t$n/lˆٰ5wp>Gq^l4}mvA[ ` (>t$VakyytOyK[ndkOG>k]auytOyNp;cx ` (>t$۰L.zX`ӧC}:Hvrd ` (>t$ܰYp;8Oѣ8wi.s7Fgƚӑ8OGfytOyG:Ιeƚӑ8OG^ɽ2& p!z>.opdkOG>; =u8=jz'M! 0}:l;3pWOg˧_A ~آ7mY9έtX0<> 2aŸ>j ν}j51o:eO&]s敺Q>@mѾ= 7f_1Xk}Dl3ykkEX.(%_ ||^m&GS io§X>JçYgu2Y&)ͭ.bZ(Z#;/58S-\9cbo۪󣝺h-|/OYN?1ynE[M~49W3~ yU/hYh\uϏFuY`d1/z #T|j)M/ A;Tj Pm^NӼm׀|] |t=į'Aד{m2&lPR9^O:4{]q]۵}`j6,FSyW]ᘤ1\4{==&yꃒw=NNJ#ܯy*q=!=yCίv~ t? w˵1XbFJ`5Ԟ_dV`qv=~t’Xl oܼgHoRgy3fe#Xϲ$' :>:m5 ec8o6;S l[BkdOr5ߕC9:kcvuT5c;/}sDw bK3jo ?i7gGN{#^/7h+?PU O{n}KTUX}Uuctr[z2n~`X{][f_fm\{Gdpis9vq# 8:vxr4 z2n nL}9b7Uh݅;x~/kcaQ}L;^[ MC '|?>=,68KJN_RwGL#(Y*ǔ>wt(Id=;d;wGL}7c)zd1w=>eDcnS1e>{J;@y7p1eqS7֮w?ަz)~̏; ;dyW~S;o&~e< })GҞ{w fy#l&sJ=o0ᴼW"0| 'cԑ<=W 7B| 'aa[TW yu`iy+{BHB| '66 |<=W ĠB| 'fq*lڡR\! &7B||A/ öyqlT^!x &zy F C@>x y`۳Ylpx7Q &7BCN||A/ հq5l]m<=Ws:w< %op@/ 9 *+ϼD:o0ᴼsG@>x yöq?l߱BL šA S ?D:o0ᴼe["L=rs%op@+m/Ɨa˦223o0ѣL8-op0#Dw J\78W6ƍuclx7Q .yK%S#~`/^A+ yml[wŕ yu`iyKKG^𽂒7x@W8 ac!l-4 yu`iyKJM G^𽂒7x@W } ?Ǘ yu`iyK { J=o^ l/֋ ByGS@LbGa+k;>w苎>/D0oqNq=WYȏ0#3{k>?<{OyByHսg1TdZTA0W J 3K}e?y[n~'w?J{?MڄsL?C^;Ϗ9gږ]?R}vV;A[۝o¿B,8q"yVEfw;ko=ւm}}?Q#R!퍌ijo%,#K{]1I0]x.=k68.| n_a!iyΑ,U_ZO:-*GVi&WZ3╘MQa+< Nc69tˆ~u$֞ M(&YT׉~}\m䑀⑀'- oMХBWmɇum ]p[!ךmdjۦ^i k -tn r@J-kB&^n 5m Ŧ,]yV@>~6|хxOz< E{O{_/lqoڇ\}_>6fh:oem1hjeՅi޹yy Ǒ1,qG֙Ǒe@/8/FЈ3_ȱH]\}|Nt$&a_;R~~w_1E{Llmp)2)}VoW$1+TK\@RS `@뽾_7swxhKض'ض~m¿ǿOd`2˥'474xl|]ߎPRF_ ,VUwnS.]t<|:oJ+[t)a&8+gyX|^f>9(d[[ ᴨu"4|>)_ p9ǣ{ⴤ8ޯIiS𽗗t$vNjHL}mV<* p'| n/WI6 'W苵𧇡}5Ѝx{<~ԱTaqXRwac<~KcRaBGm'L~y>G>*KRcI1坎 rZy~yR%?NGye ò}؞}XRPEi6TaqX.wX+',sxe7X8,otX+wsz,{-Bmm*,aԷkKeZ|+X~4M:*,ˬZƴ~}&i o<*,˛dmwԾ`LBƧK*W.>ԯ&r#eǴu,UX\ZP=Kpe_qjWbv1oT[~< ,UXrX+?sОlPփ_ òӍXI>s SRaƕK+?r%s X eԆ1TaqXvriy~Ò\u6K-02a۩_m,x>fбTaqXvrivZQ%+XE#gx>X8,:,>-r5+B,{Ih\K g\~дg- Ad>#l 2Me[6gH3׊{Sa됅 ^k%a5 eQUX}lڒQ=(^gY k|A#|M9[[c}|qoH+GBi#UuG֖$xPNA5]5B` 5v#k(kkz\\5Y>xbrMpGZu\<טq œps! qvp֡dX嚨}txa!!]\#XJps! <]\#s݌ܷ,k(k1r^Z 8Xs߹}DA5kf/s\# GZGڄ>e? GV$5澏a\G2 N #k*bbA5zd|$+5ke\C$\\D#pBzk, eF%B!?.G>r <4C+E\\D5>H5 'ᚵ5vM'kpMWE5sM7ҹIf-sMk:]>k$>5٢~I?$m9XoZLte4,*;Fj:j;g3=gAy`726[0o"}yH72TSIg cNG, Dd (nm0  # A " +IvՒh @=| +IvՒhDbDcr3J x\lUWc}Zi%Aۮ0D(*ڱ"DL*4L\YE֒T2E0$I=~yߞirMvo9{߽8J&OC8ص`ښj0 xǰ#aHe(PnŘG fHdzwA, yD77Hߎ*B.WثQXV 9JGPHil`"Z.G9+X;;`Jȗa_YȻhvܦ&Ɵٚ.\jWu na <0OTc ΫiNw}8궕~W-ܰ.¹N/4G]?JG7ܽ^apY y(Z1{, =އum2?\郺N*G__=#-@o$uz5ݖ+j_/;;5.},;wd:khsӸ粞?ݼWkofWbuXX??2ߜ,2|v?^z}S^TjjvS#Gţ/.^LI){6m(}|_t]f2=tB2|d| bûw0 ax +^"}FA_)8P??qSdG+X\xm>S*0G ^1fk2|C bxnw0 ofx k^J(b}G# ?0} `Ç> Y"3 /gx5ë^z0 dx{>2| fe_fxV(b㯘 /gx91|^?[N0\ͯ݇2cRqf řS=#ǂT T6jo MڷxX߷ٗ߾Cz6^:~M?ү|O[M+SKMQWӛEv7GmM;>_xkzY}o3W~Z?~+sM܇Ɠֆfx-dt"jj*_P@9p@}Qsϗ(P^o5|9 xyD_Ԛ=2rc+|Y/|2wG_=<ϗtP%5-ϗxS@}Qq/_v/*&MxKQ< 1AE '{Ϗ5xLx˛?7|P_/{yIxe,ckÌ8Q*d><zBT*u<_ jl+,׶L}*zvLϿu Lcw(_s-{צw#̞47NMlnw]Ӓݵd`w݊i[Fvf[feWvdwngؾT_Af06h]T9g%jyʽl1߳( o{Ux M Z$7AcDYLa> SC$R&Uhߤ~?Ó73Mj<+,z+=}'Cs4PDܼb8ֻcZ~srtE?[8yo¶ۀgxUp$w=H]^%o Z nj{iR>5!.Ze%Gp tW>cX^{DλFb?<~;!)Gs{\ýu&Ǫ|B]{?ә67If Α9c˦j3Sp_{4.|,ܞ/^ERz;ʄb6oMi !'P Dd 'H!xv0  # A "  C*Dz³-vd @= C*Dz³-vd9@@bRn x]}lG{4].*\ƭ;&Fj+Tڴ&v/&MaB#h h5$K!P (@ʇZ BQJk烐(|P훻xvyuOshvgf߼ocvŴwRo];z4r`x xCP~`aLL* mRm/`UxF.{}w]׽PlwVڳhmn/Jp5[0]yr LeZdZ}Q?Uƿr 496Wr9Zw#EEˤ| M8!Ylد2w9O{/T}OyZ|u)s)fe=|T@>Nc\~t`}Go.wqek2`)lzt{/kv]o^a"PoIm7t_ORk_:9B~s䷷/ T)&K|*܋R(*'9(6`籡`چ7;zK| Ȧv~Jnh)c_W*b1ύARXUX.h K'B>U6 L6Bm}Y;u@ob[վzCAu'+Wt 0%'+) ̟XTlvޞ3/3 A6wn]6v^L}g)_4Ut3+4oo9S?>o|v'z\>xh[NPRh]wJ:[e7a瓋W? p+\ 1/py K- ˭0 ef, |:j!0br2;.!b1h؟.ieCmbechaV}Z16clXJ#0b؇`n{Uhy@\;X~e3K- QZ;.OXטiV%=^ѰTۢ|vX,c7Lyz9}矘b#pc=&0.A8.{øٸ|21.{ Am3!XbmXk5b94-~F,φ`yVEw2?#`?=\aEaz+}m G׊pSMRmr2fɯgL*1}K- KpbttX~"/kXmQX2_~EqDzc1 K- Dl+zXIػ4,ն(,'߁X}}&1SG4y<,܇MAsW}-XdH߃ˡGG C$G0l._ucoȤ6նysb:_=I,Ԗ8·wϝrQ`r$g~F&X k$};#18rdGLXl~+|~HPh#=yj6$} (V^#}B=B]٘OpYkbZ\jpwebpL=\#-tۤn;Gwml^$ ^}i0^g2w<Pбm0>Fዪw=uAgnx9c/WlH}s3噠}QD%z•}ۚ1~\S۷xǤ>sey2(lF<˙?侺6/sYnۺZ1'O 6?ضuX`}`UW6nnEm l |;GgPgU圫UrxCM[j;wQAq;_l՗89$f8G\8~aX\yp\,]eε\uߖ/nnos߽xʕp>zXW;=(;O=$O;=,k_xW^~믽ֺuxo;_|l/1>ts؏;N7 ^W, s{Օe]|_%˻KTp-{^suek][]~}uok7-ν"[nvk{mu;n{ug}+vuァ{߽5rvW>}pe<]HzUs}c?>DԓOpqn>}Lws\' g/bs}w+}|ڸoŹ{ֺoupq^辻޻]cwq?ч\o'p7|tC/g}܍uyn4ݲyA.I믆|}.Omߎp>Źhwcܝ;ƺ8owwqO]ݓݽ{Nuq>e.mC#g8ߎq6=~"{%?_p W脣l/qJqŮ"'/rM_Gf-p?5p,Q}]YL4ip85NsM}LuMOOqɮIfk95+ƻqFQ<5F*i95mqnC\}k` :YDs͉>5r͝=]sAvcﺸfukN]:f`{<'OnjZNnj1ov7ྯw̳8fRbd\.p#p?kg94|:1uS4~8z:{ǜ_p;I͆%l81cG~:f_c>ᘵUF|Q1Gd L-`Zoaں啀{>`Ss5S)1`b 5KE<|,\0kG>̾0Z>8\_۝5[-ېk5+515y7暵\?{"p]r$.m?ǘ;qƑc_6^e+}/} DC|/;SZnX.ן~yܾ/Q/bjʷ(s5FU\#מLK /|gC(G?6φ(1UCz뢿.;(1z~ kCbǰ/×x6Ĉ!V 1E,;(1nHCћvPcx/<RĐ?tgCԐ4/Æ=Đ4?3φt1PC:z[;(1<Z!C -Л vPcxO=2R mφbTCKf?' bhLB+vPcXǞ Z Aُay6CZ7 YgCՐlg#}ِ-5d79=rĐ?z=φ\1Ԑz6!^;(1|kg#W z]w<\1EoAٗͷ=ĐgC1tUCvEWvPcg<ߞxʳz;;(1,Iφb衆p{6CO5@oOde?gCO1RCOB/vPcf=zz7{Տl->j>~ zijz/;(1,YgC_1SC_C?vPcX _ Aُl/j~ W{g1 TD@vPcX^φbAǰ{<aw0w0X C0C?~g1!=籃ü[ol8O Cpz(;(1\z C0L C; Aُᒛnl&j~ pgp1Pp@vPco7z6H5@Hde?9ͳaFa$zG;(1\xrφQbQ0<FaFw ǰkl#jޱ~ ,ڳaƩa,zǡ;(1XԳaƫazǣ<;(1L_ija&asg1UE\vPg0W a.z/BE0삙 b5\ދ1;(1 qgbD _~ Mp.U%/ô 25\;(1 9geb;Aُa=aw>糃à)S=awS<awÀI=J5,B迒OpJ.FbvPc7agb1,Ub.ERvPe?aa)z;(17޳aQ2^kAً;rF/̣|ïSMfl>tS=dຶg>{ՃGx_=9<~OZ\C yd|mkts_g{乧2g6 *=SgO#z^__]{s1W+OW{&ߧ? Ԕvh) 3}fn&ɧ97Kj=yY?_=\6.Eܚp+Ex=[.8|rŕu-7'ZӅN5sr>I*4'{J=Su󗛋q_y[Zc1^^l~֬sw9?%_&Pkߩ_3\G|NH(q4Q%%W? 9۶EN 8\-BtbΥSrpm3t]mQmQmQmQmQmQmQm%%{{>-ڣ$F mmߖmn[ /`e_l(C;5۱] 2C{5Co{ge?+ϳ:=z;;(ܕ C1z _~ ۳P Pގʾv%ӳ:#z;;(ڕφNb謆Np-y6tC:Elsۂ Eb袆"vAvP+q͞ ]U ]]A7x6tCw5tCowwge_/l.j~ ޳zz{';(ڶ+Ab襆^kk<zz7{m<zzm 2C_5Ao_ee?iW-l+~j~ʾ-qޕ]пЮD]\c . =<㮦͇ұ#eW]'ė+QdWb{?;u`]V]I,A-,A|lKٮĹnKп˺ f 9m2-aw/0k |["ĶD3!keuL+ qlċ{wo .ls[ Ű_ ѻAm ~z ;(ܖ A1VAFavP-Ab8=ls[ GpL G{ AOm 2)5@)bed8%ӆS J)ܖ u!X A! fe[<`?mnK!D jAo(CABP?mnKbPF a-2ls[ ePN e[Aʉʡ+m 2TCE5T@oEWded(JjJ6%PI P _mnK2z ;(ܖ C1TUCVEUvP-Ab譆jlsׁ P] [AٟCφb譁ls[ 5 G8;(ܖ Cj!5_}mKgCM1D&z#6%!H5D7ls[ bHB-vP-AZbZ譍ls[ B;(ܖ C! u_mnKꪡz뢿.;(ܖ C]1SC]C=vP-Azbz譏k[<ꋡꣷm 24C7ls[ bQC4zc6%#jAoC7dedh(X54Do,cAbH mFls[ FC;(ܖ C!VߘmnK1z ;(ۖxƳ z);(ܖ CS1ī)z6%/fjGo37cedh&54CoAĐ&?mnK!Q IjHDoAُjdHCЛdvP-Ad1!)OaedHCs59lh.T54Go*SARŐT?mnK!M jHCo:AB mls[ -Đ@;(ܖ CZ!-ߒmnK2dedC+5d[m 2Ck5Bokfe?KnųYbedCЛlvP-Al1!9aedCrЛ\vP-A\1Ԑls[ 18jA6%U^.;(ܖ +<5C;(ܖ CՐ|糃K=F m6ls[ mV mmAڊ@ m[vP-A1SCzۡ;(ܖ C;1WC;^ڞ}:\г:ְ;;(1LgC1z _6%P(j(DoGwded(NjN%.l$j6%Y Ej"m 2]A+m 2tC75tEo7wced&j6%] ==߃mnKzz{';(ܖ CO1RCOB/vP-A^b譆^ls[ G }A/m 2C?5Eo?ced'j6%0@ 0?mnKaa z;(ܖ 1 Q AvP-A!b!ls[ C0\ C;Aaw$Gm 2h5Dhfed-1j1-Q%ʝu[B߿EoP'3}-QN%%{(ط:ve!sб2e["ҶľgۖZ2S^ܖZl˶xY#C6&lKq_ֶ$\5elKm5 |67mC+tyuƖj[-Q-Q-Q-Q-Q-Q-Q-Q^^Ǭ\[z=3+mɸsf=C&mJ]<6k5lFmnKk1lU݊ls[ [ŰM [ѻ Aaw;m 2lj؎=;(ܖ bءѻ;Avavwwm 2Oj؅ޟ;(ܖ ObحлAvavw?φ=bث=݋ls[ {ŰO {ѻAٗaw>1W>G~vP-Ab8=ls[ pP {A/m 2a5Bafed8,#j8#?ʾ%1UEQvP-AbM Gce_dM z;(ܖ 11W1GqvPcXǞ pB {'ANN$Om=NNO} 2Úb)P|.}[߳:9(Als߂ AbVCz6-,57!ls߂ !bUCzCʾ%<[!T ajEoA߾[ ab(0AvPoγʪ zˢ,;(ܷ CY1SCYC9vPoArb(r-k[bk PA [A׶+z6TCE5T@oEWde?ֳ*"z+;(ڷxφJbJ譌k[x6TC5TFoWaed"jުʾ%ּPU P_mnKz:;(1φb譁o[YφbWC ?mK<.jGoMde_Om -Q߿EW_Rgu[_h[bx-cC}["D6np>S+ %p[e[9lK_b["C%BJlKȶDȿٖx㿰-1ޗ(ai\Zċg+b[nKݎD}{牿'OEuk-3  Fo'׍w'y{v%y?k=\{!|utT09#Qbgakn߫a5ROFRj-ߜ[#I/.ԭ袪tktktktktktktktkD_Ǭʎ}5xm ^ӯ~-tE.atBmna֫azף=;(!z1}ﲃͭ2+.zGlsk C5!;(!ÇbX c6F6cn@vP5B bL ?ce[#dL z7#;(!F1lRFnB&vP5BMbجM݌lsk ŰE ѻ[AK5lAmnK1|/be[#dJ ߨ+~oA65|m6FȰM ߪazElsk ߊaEvoge[#d.԰ߡ;vP5BCmn{1`e_;Fv@vP5Bbة݉lsk ;ŰK ;ѻ AvG5BmnG1be[#dI ?'A~n56FV>>a7z;(!1UE^vP5Bbا݇}lsk İ_ лA5G/mn1P/=ls W~ gïb8_{Aͭ2a5Bafe[#d8,#j8#?~ wg1UEQvP5BbM Gce[#dM z;(!11W1GqvP5Bb8=lsk 'pR '{'ANNOͭ2 k0rP5B*&CL؊ ǞlC`vP5B`1!!ae[#dCBPvP5BP1!ace[#dC5 ˰ͭ2CY5AoYee[#d(+rj(r/6FPN P_mn*볃ͭ2C5Go7`e[#dh h54@o4AhƠ?mn!F ކo6FP jhXDzͭ2ĊbA!N 8vP5B814VCz1;(!Cc14QCc6AvP5B&bh&mlsk MG<;(!C!ߌmlh&54CoA,φ1$!Ode[#dHCћ$vP5B$1$! Ofe[#dHCћvP5B1!Oee[#dHCRћ4vP5B41! Oge[#dHCћ vP5B 1d!de[#dC+5d[ͭ2CZ7 Ylsk YbQCzsП6FȐ#r@mn! G :wAܷF*Ho>'[#Utk_hkd)QFŠ}e&|t$l5SܷF j5rq ِ.!,fkdakd5M:&jbCbR)&{ IbϿژ8םK Ov&?kv?Ug ӷ b~ K~׆1kqgnAܫ$_B?sFG"o,0j[s=2<;? }>Ar.raWun::ψ~kSܢOvsa~ϲ>~~̳Ïኩp3AW<ߟ5~g-/Ӭ~AfM\}O|&`>˹qaӴ@zǒ5b7sVl-L8W68xǐs9W^g<빺ԂU]W7j?W@'UB\%(sW+}8睖g\2%pks=wqC\+~F\W`\\?W(RՈJ'>WR<ݴ앝?m^嗳uz3'裬_\͐z{T$PƘNag]f~sϿ?W3"tCS$$IfX!vh55x #v#vx :V l t0H655x /  aXT$$IfX!vh55x #v#vx :V l t0H655x /  aXT$$IfX!vh55x #v#vx :V l t0H655x aXT$$IfX!vh55x #v#vx :V l t0H655x /  aXT$$IfX!vh55x #v#vx :V l t0H655x /  aXT$$If3!vh5555$ #v#v#v#v$ :V l t065555$ /  a3T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ /  a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / / / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / / / a3f4T $$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / / / / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ / a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4T$$If3!vh5555$ #v#v#v#v$ :V l4 t06++5555$ a3f4TQDd ]0  # A"[Qam ƫר`7Q@=/Qam ƫר`;&EEHh'Px |w'+;Eij7c6AK[gZ:ΌS;ZuKVDJ);2KB!$섄IؗouݹJa9&7 1Dx<"<ˑOW?Q߾<1"o#~ۻ":_)z7|D{6_wDXroD7Cxȿ?mh.+wqkԕow4܁6|_+wE|?'Z:54zZ3/]~yWSO]ՍweF]I#o1aO=_{OPnΈC 947&yS܂ĭN7&n[Sq-_;zqq^͸Ϝo7?neqs5u;s4׻&w9$0g%o ,_Ļ0֦~<>F}&lUr`GWp~6\0Nb.9`~ïc8^ X~f`0M ̘>5 فys7?hBù,"!$xkRR`N KK;={V`cv69͛6(,(ϣ(PR\Ki XVOy?@Mu5~^z;kڅ@޽yۇC=8~~oNߜ?yR)}ӧ˟1}?s}g=y?op} _V|_l} ?HO\q瀟nU=~x>)?Io}<7>᧯;?c~fƃ~V'}o~Ŷ*sϯ~m͗|< 97Wgӿ;~gݭ_\Om7ox:mx>]x>ǎ?~[Dz}o8~Ucc|>|q{?|ᆵާ?'=/7+h>{Kw ϾO7|3O%>{;[}Q<4~>{+|!'}o|o}}c{yw'ޭɷޥ|ߛ7"ߋ_w{uc~}}޾'~~=|9>{c"}ïŀwl}*x+ x;>/5 xm x6ެ/2eK[ao7dȴטVgEx x x?~5?W??ێx OްG{0 >;}`7|W՛'/g x#ޗ/8qSq޽-qq*eqMq̍qވfMמG|}A·fF1v?<i|#WÏywW~~|O1v=y-yV>}!o[V<䍘3/_/?;_wx= ~S<>Ǒك>:?$X6E>H8x}"|=u~o}__,U^~1+;#FlQwDE^}/Ώ>tՏB6ī! & ZB6$! &(7nHTCMB?I2hِd3$~8xcH3 jH1C2)览wXƝ!RԐjtSOp B6! 覡&vlHSCMG?]2ԇnHWC@?C1k ِL3d~8xghِ,3d~8xcHِ fBw;,CM j6tp kB6d! 栟#R׆lQCrE?W1 ِfEw3;CreuȆj3ft C6! y棟/Vm ِ3[~8xcH3 j(4Cw8! PdBt/ Ejb"tE1$m ٰE f؂n1a j(1C1%藈w8`Ȇ5RK;,CIYȆR5l5C)[*lت23lE 2qǰ$dCf(C7~P1l At/ [B6a݆6qǰ$(d65TaWw8y!*Pi t+ѯp 6lTC*ѭBJ1,ܔJ Pvw8C6lWC[~8xc)dCjPn 5a^vnȆ5ԚZk; 9!jPgZtЯp C6ԩ u֣_/+sCȆz54;ì!htop _Q ;Јww8iC6PCvۄ~8xc.dCv ݝp ֤lةf3Dfq05%5dCZЌn -a5!Z԰ -B8xcjuȆ]jh5.t[op C6aZݍnq011)dn51ntG1.!1d55tW1LX"d^5a/m跉w8KlhSCmG]1,dC:Ўn!:԰ C8xchIȆ}jo}G8xc͂E!{a!{a!{CsC6Ra3B0;ëfl8#f8􏈃w8Q3gl8f8Q􏊃w8_}Ȇj8fC8xcxyڌ p =qqC6W[f8[%~>yjȆp o{ISB6PI3@$';OߜN$?%~!NN{~Θ4g?#^ې gp g=Yq7Ƈl8sf89ωw8FȆsj8osG8xcq!ΫΣ{ {cƆlfE/w87!..{ KѿpI N%t(|Y1< la/#;w^UȆ5D!H#;÷G!R QfD7 (q_ h3D~8xc˯lVCэA?F1|/lQCbЍE?V1!V n7w8g_yȆnjnnvG8xc^ ] =p g!zz!zz ^?~ ~oq7}#G/l裆fn_wX(dC_53C_tO1~/?_ p _C6 P@3 @w ;ÿ|{!a;A+/|7d 5 6 t?X1< !a;!y>d5 5t?T1| 0T 0a vȆajnaG8xcs 0\ 7a878xbo-GDDԫ?3y|J_ڷ?'x{W}lzli/i+?|:*qW>;_Kc޵֯}ߥ{OQ_ӫݯr*v_{s[KQ?:seDtkyɇSoy=_Uͫ#k{oj~CuGdoޛtHyW7_7!?=ޠ5g"o{ v>/ry֟/?%W?nz'> ?5p3O]ս) w" V~"z{I\xySDDDDDDDDO}|?/{QW "Q|u{Aݢ! & . EACMD?Q]Au$3$~8x܃ fHB7dqv- R̐n )r"[4!TSDP(hH3C*i觉=nQАn4tOo{Aݢ! f!. EAC2D?S]Au,3d~8x܃ ̐7=nQАm f-. EACA?G]Au\3䠛~8x܃ ͐f7=nQАg桟'. EACG?_]Au3[~8x܃ f(@Bqv- PnEr"[4l1C[". EAC[~8x܃ %f(Fqv- JPn)r"[4l5C)[*. EAC[~8x܃ A3D?(. EACr܃ P6=nQPamV_!. EAC*l@R]Au*3T[~8x܃ Pv=nQPmV_-. EACѭAF]AuZ3Ԡ[~8x܃ ufE:qv- Pn=r"[44DP(hh4C7=nQа @8x܃ Mf؁nMr"[44C;). EACvی~8x܃ -fhFqv- v]o{Aݢ mEU]AufhEw7DP(hcA8x܃ {Ͱݽo{Aݢ {mCM]Auv3ێ~8x܃ fhGqv- }o{Aݢar"[40~t@]Auf8A=nQp =!qv- ?,. EA3FGDP(h8j#E8x܃ pco{Aݢ{r"[4e辅[r"[40[@8x܃ 'pݓo{AݢN{ Sr"[46)tOZ]Au3f8ψ=nQp g=Yqv- Ι,?'. EAy3C<DP(h`^@8x܃ p݋_o{Aݢ.{ Kr"[4\ރ`_/=nQa/*~8x܃ f@7Hqv- nQr"[4D! hDP(h1C41Lj=nQktcяo{Aݢb~7qv- .. EAC3tG=DP(hiD8x܃ ^o{Aݢzr"[41CotG]Aufn_=nQ }~?qv- /. EA3GwDP(hhD8x܃ 0Ao{Aݢa;r"[4 1`t?D]AufP􇊃=nQ0 C0qv- a.. EAf,׿}{1ރߒ܁+/m" o=~ :A\;.uѵ ~kZ{|;  m׹=Wcw" M3į߶ύ|ؼ========X8fŃD{/EwAseE/EG_wACn r5$!D jH2C"I'=Ԑl$tOo{4$! 覠". hHQCRME?U]AА43~8x܃!M fHC7tqvAC2̐nr 5d!L3 j2C&Yg=԰ Yn@8x܃aͰl j1C69爃=rԐktso{4ar݌fqvAf5a3y牃=Ԑo3t}r}jo}G8x܃aa?? . h8f8A={CrCj8lCF8x܃0G?". h8f8Q􏊃={ crcj8ncG8x܃2qtB-qvA[j8a= qvA 54 tOR]ApR pSo{4Ri3B4 p =qvA55tϢV]ApV pso{4Sy3C< p ѽqvA5\4t/Q]ApQ pK_o{4\R=Q(:x܃m"E~8x܃!B f@7HqvACnQr(5D! h j1C41Lj=bktcяo{4Īb~7qvAC75t7C7t]]A] =o{4PCO3@'= = =~/qvAC/56C/t{[]A[ }>o{4QC_3A/} } }~?qvAC?57C?t_]A_ o{4 P@3 @w  0  qvA 5 6 t?X]A0X C0!o{4 QP3 Aw(C C0 C0qvA05 70t?\]A0\ 7a878x_D܃~=˟%/u=ڃx6sbr̕==pǎ|K|A=Ր`xtOo{4$! &(. hHTCMB?I]AАd3$~8x܃!Y )fHF7qvACR͐n*rT5!4 ijH7C觋=Րatt3o{4d! f). hTC2B?K]AА fBw Ԑm f-. hVCA?G]AА\3䠛~8x܃!W ͐f7=6! C?O]AА|3䡛~8x܃!_ fGqvAC Pn!rB5" Ejb"tE]AаE f؂n1rb5K %j(5C 藊=Jհ nE8x܃a̰2 ej AqvACP f[~8x܃\ P6= Э@B]APJ3T[~8x܃R UfD *qvAC oo{4lWC[~8x܃Z 5fFqvACjPn-rZ5ԙ: uj7C׋=`ztoo{44 6(. hhT34rjh2too{44a݉NqvAN54a'7=bft[oo{4aZ݅.qvA.5a跊=Zհ F8x܃aa7{#. hأf؃^= {mCM]AЦv3ێ~8x܃] fhGqvAC}o{4S~3Cw? p =qvA54tP]ApP pCo{4Ra3B0 p =qvA55tT]ApT pco{4Sq3C8 o=R 3 O=NN{rj8eB8x܃N?-. h83f8ψ=ΨΠ{rj8gC8x܃Λ?/. h8 f8/=..{rjd^B8x܃.A/—E la/# j4CG="eHtЏo{4D! QF-. hVCэA?F]AX3Ġ~8x܃!V n7=rja@8x܃z=). h詆^fn/{=zzrjcA8x܃}+. h諆~fn?=rj`@8x܃aa(. hAf =a;rjbA8x܃aaC*. haf0􇉃=a;rj ѽ z^DkAoK@ zDhOl']ك#}|tA= ~?ރx#6=׹xRq6z zDƒ;ۃH=l{^ |Ȯ========| /GwΨx9:.bT"/G܃aFa-. h1fLj=ƨaƠ;rjgC8x܃aƛa/. h f'=&a&;rjdNB8x܃aaSП". hfT=a; irijniNG8x܃afa:3П!. hfLg=faf; YrYjmYF8x܃aa6sП#. hf\犃=a;yryjoyG8x܃aa> _ . hXfXB=aErEjXlE.F8xQaa1K_"l ٰD fXnx/!'8ƁzEA հ ]qvA5,4tP]AаP ̰E/o{4,Rb3,Bw1 հ ]qvA5ěa Nj=հ .E8x܃aa)_&. hXfXr=! M@?A]AАfH@w+ +Ԑh&(. hHTJ3$rjH2JtOo{4$a]*qvA*5$a'=հ F8x܃aR̰S )jXctנF]AаF fXn*rT55C*k_+. hX43E7 4qvAC֙! uo{4SC֡~8x܃!] ͐z׋=֫! @?C]AАL3d~8x܃!S YfD7 ,qvAC6! oo{4lPC6~8x܃![ ͐F7=6! A?G]AА\3䠛~8x܃!W ̐&7=6a6rj3fto{4! y棟/. hWC-@@]APB3[~8x܃P Ef(D"qvAC-oo{4lQC[~8x܃X %f(FqvACJPn)rR5l5C)[*. hت23lE 2qvACf(C7~P]ATC薣_.. h(W63 mrmj06t+Яo{4T V_). hTC*ѭBJ]APfBw; PmV_-. hVCѭAF]APZ3Ԡ[~8x܃V ufE:qvACPn=rz54 jh4C7=հ @8x܃a̰& Mji&twS]AаS f؉n3rf5[ -jetwK]AаK f؅n+rV56C+-. hح=f؍=arjh3^too{4 m趣.. hhWC@C]AСf@w? p =qvA54tP]ApP po{4VQ3F(G Gp G=qqvAq50qtOB]ApB pSo{4Ri3B4 n=܃[+\yi{mh+=1W O׳=Ԍ=kAa; NG0=CQ׻1 V\?=G#ʲ \D==QW "_n?vQjmQF8x܃aƘa4c#. hfXNJ=ƪaƢ;qrqjoqG8x܃a&a<П . hfD'=&a&; IrIjbINA8x܃aa Sџ*. hif4=a;rja@8x܃afa3џ). hYf,g=faf;rjcA8x܃aasџ+. hyf<牃=a;rjX`.@8x܃aa _(. hXEfX"=arjXb.A8x܃aͰx jXjxtT]AаT ̰e/o{4,Sr3,Cw9 Ր`& . hHP 3$rjH4 tOo{4$a]JqvAJ5$a%I'=԰ IB8x܃aͰ d jXmdtWZ]AаZ )fXn )r51C k_#. hXT3A7TqvAC֚!ݵo{4UC֢~8x܃!M ̐:׉=֩! MG?]]AАfHGw= Րaf!. hPC2D?S]AА,3d~8x܃!K ̐7=6! F?[]AАfFw# Րc栟#. hQCrE?W]AАMfEw ԰ ݌fqvAf5a3y牃=ԐoǮc{}#3=}7y$G=gNj?NԷ~<0Vʟz|;M xgq>^4ݏ<MwGX=v6RLcmW&M ĺU𕼫&Ļo_tMo{{jG={y~Kxt7_o&_|/m";' m=W>zoî6~/4s䊲e0{x 61Bw˿sz}'>pቡ݇/<z/;_Kxhϛ}oq&~?':~0dUom7D~w~FD=1>7'q5x߇%Me6q?'6q5&3+o ^6qM|ML_}緉7c' QOT~?}^8_~ǧ~>|/mzI^yOm_=3^^>i>i>i>i>i>i>i>c)'>۹O>/G?;*:|>) 0 hqvOJh51htǠ?F]0F c0ݱo4U83Ew>) 0 xqvOJx5L0xt'?A]0A 0݉Oo4LT$3LDw>) 0 НqvOJ5L5t?U]0U 0iOo4LSt3LCw:>) 0 ѝ qvOJ 54 tg?S]0S 0Yo4Rl3Bw6>) 0 ѝqvOJ55t?W]0W 0yo4S|3Cw>>) հ ]qvOJ5,4tP]ҰP ̰E/o4,Rb3,Bw1>) հ ]qvOJ5ěa Nj}Rհ .E8x'aa)_&.IiXfXr}R! M@?A]ҐfH@w+>) +Ԑh&(.IiHTJ3$rjH2JtOo4$a]*qvOJ*5$a'}Rհ F8x'aR̰S>) )jXctנF]ҰF fXn*rT55C*k_+.IiX43E7 4qvOJC֙! uo4SC֡~8x'!] ͐z׋}R֫! @?C]ҐL3d~8x'!S YfD7 ,qvOJC6! oo4lPC6~8x'![ ͐F7}R6! A?G]Ґ\3䠛~8x'!W ̐&7}R6a6rj3fto4! y棟/.IiWC-@@]PB3[~8x'P Ef(D"qvOJC-oo4lQC[~8x'X %f(FqvOJCJPn)rR5l5C)[*.Iiت23lE 2qvOJCf(C7~P]TC薣_..Ii(W63 mrmj06t+ЯoVJ3T[~8x'R UfD *qvOJC ooPmV_-.IiVCѭAF]PZ3Ԡ[~8x'V ufE:qvOJCPn=rz54>) jh4C7}Rհ @8x'a̰&>) Mji&twS]ҰS f؉n3rf5[>) -jetwK]ҰK f؅n+rV56C+-.Iiح=f؍}Rarjh3^too4 m趣..IihWC@C]Сf@w?>) p =qvOJ54tP]pP po4VQ3F(G>) Gp G=qqvOJq50qtOB]pB pSo4Ri3B4Io@>ߒb~ەO~('nWI|9_dÏ'}sO}k.a}퓎^":)1WSq="g6}Y߾򿴏[WɃ{ߘ;/c~vo&u=0{^zy/=OxϝOv)%앬: ?ط??]??o_ߧ_~~|!)篢y׍_ت/%ߋOޠ}+Lw׽7':?=uO=?숞ן1?Z{_c7w|/G(OlEdhVgOMs ߹疬WwnxSN'eľ'#wn NޏoAR?Zuiu?ŏY^oVy./~a~z^~_罗z]?{/yק9f/x>7oB}~\{?s=8f71W{q0z|KW?o?{y6#$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 a$$If!vh5 5 #v #v :V l t0655 ayADd  0  # A"@SP.@ JMWwnC@2V@=@SP.@ JMWwnCp`< @x xo66qC\AiyکXZj]eo!lBHB6B!IH. 9?wo{wŹ!W F| sZW y] :uז=G G ׉ 8a^/&|ܹxݤt~nB*{ ?{ ~?41I`cǴ L.0uʭtg7S`~)2һd?'"[`UӁ5` __j_ ع=x3sg\8I@}a4p C eX`DFGE4&0~8&&O۔hb3g̀qV`Nl,sqq&$&›X sJ`qZ遬LسKsr ,XYP0KqOYӺ@ x57} lټ_]`mxwvڅsO`}x_:HcxON:L}?x=o _`auD4iz_#-ȑF]jǯ?n qm oOx?yɷ5OnLǯ?cwfڏ}?'^>~yq 9'wAw|~_! ?-ygfggsY/ K}?o'Ox.+~,x/\+hOE_~i/|ү(_W|< +7WUXkfoښ7ou[~o{?;sߵO]~߷u9:_#|}?~oxnN~>tws=s?Ņ^/>/ 0)s}x|/hO|x\GǾg>x<ǚ zxcfw{x,}=ރ7{G۾{1M݅{1^kx1W|o}|Z<}e{wx?{?K^ߠk߻E߻Wwy_|_}OsKxu;)'~xz>~?O?<{/{%~%{wv{}ݾ|ti}/6<{o;6xۭ}oZnKߋl{;ko{ua` J?_S)^oϑ7`W+ I^hE) x.yÖd2^pZMx ^LB2/ xo x156)m|;o{TK6ۏx xqv>Ə0n[Fgg^Wx<y{i;:? a>y 5 x/ݎsK;6 x-^~W( x/~{{ :o l ^{{{]3=oQ'ppx^p/}H^o^6lw)^ }Ɵ?0ޅǼCyǼy/7z߆~И0z_ω:{_7dnflx_ =>= [ =S =~Ovmcln)ݏt[6>C/5|n/{nC?a% t[j>C5|nnƆ>b视>C;1l265CwAaaam յƆAbAF0;3!B э@?tR6"0D A;2Ta;ưhCaa(m 뫌 0R HvmcX0R jn$P)QjDwA!|a0 (Aa?ah5D;Ɛvaƨa4cm * c0V cXvme(-7685EwA!daƫam kʌ 0A ѝvmc+.56LD5L@w"A0Q 0IOb6yEk 0Y Нdvmc0Y S0)Oa69 S0U SНTvmc]Ydl*h5LE7hvmc]-ijFwAaJc41Ĩa1ǰnìcC!Og6yƆb@;1L_0C 30ݙd65/5ģ~;1]flH|5$;0&90_ jn"0z"cC!/`6 Đ&m  IbX$ttF&$!Y MF?tF76$a]"vmc>/ذH )jXn )0ln!E jHA7Tvmc;ؐ*45~;1D̞clHb50xlcb1a1觳n3 bPC:gnÀƆ 1d!L3A_t!S YjD7 ,vmc;5ؐ%l5d~6;1<ؐ-%jFw KA᳉ KĐ%栟m hlR5䠻kcR1a)粃ncrŰL .C;1|5ذL yjXnyshcC!/g6 Ő棟m 46a] vmc`c 1anÆ İR D%;17da հB AoC bXBtWtalX%"5B"vmcx{ cCVf6hlX-b5Fbvmcx_cC֨5a6736C֠[~ ;1ѻD j(ARvmcg} b(SC)e藱n~fl(Z5ZO kP薣_m ~P. 5[~;1O bX tסtƆubXuG=;1#cz1lPzt7tؽa*հJ+Av76TJ V_m CcCPn5ŰQ nD#;1 P֠_ {P#Z5Ԡ[~-;1ݿjŰY nF3;1;6a6-N [ЭCtoİM unC;1歿a726N5@w';A746n5Dw7AWyذ[ {հݽeVbl+j؋~n nl/j؏no璘J)_{ޤkPpWpSߠ_tWKؤk0}/MWߜz_~K_'z_NG|__LE~lz+q0$^@3(O[kzizks}nǝE| uo#?O5To'߼׽{o^a2<_ImzsMMoiakIzk~[/Ė$s(o(/aruMny?>w30;1(~EPg5ҏ0=ʛGB\):?6J Z]ޙ^~v .e'(͢+OWCme8oU}/}5,]@z-7~?S YE6#=׮oj+mB œf(^fلM?-޻MӺ pMXް Ѱ Ѱ Ѱ Ѱ Ѱ Ѱ Ѱ rsȟOބ`K5,dX𰐑܄ H1VHtG?t܄ h1UhtǢ?t܄ X1WXtǣ?t܄ x1LTxt'?t܄ D1LVDt'?t܄ d1LUdt?t܄ T1Da*GndCэA?t܄ Cf!`.7!0C 0Ybv{ 5ƆYbYF6;v AbUltcяeV{ ƆX1QC,sП]nBaasџ]nBa08AM2ĉ!^ qƣ]nB!^ jG7vr bt?t܄ |1$a>'ndH5$` AbHRtOb.7!Ȑ$jHBw! AM2,C~2;v Ad1,RC2_ ƆEbHQ"tSOa.7!Ȑ"T5~*;ڄXؐ*45~;v A41,VC_]nBaհtAM2!C f]nB!C j@7Lvm QhlC2B?t܄ CՐn60s cC!%/a.w)ȰD 9jXn9.rİT 9.E);ڥXglX*\5,E7\vmKؐ+ejEwAa꒥ƆebS2tcVdr5䡻j"3ذ\ jXn>j"=ؐ/jGw+A& c 1and(J50.ea հB AM2a ]*vm blX%"5B"vm ll(j5&VX -Ft"/06a]vr kP5薠_6! %b(UC 藲nd(CJ-CtΙgl(Z5&֊\ k-Gt[mB̊56B V_m f26Ta*]:vr İ^ ]zvmc?ma6a=6!6R ЭDtLjlC*ѭBt[RLllCЭFt[RLdlF5T&6F ѭAt>;P#Z5Ԡ[~-;ڥ=P+MjEwA&Dhc&1lV&t7tz26l5lFw [A.&N [ЭCt[mBilV5ԡ&a mjb0c61lW6tt܄ v1Pvtwtal!j؁NwnM ;ŰK ;݅.vr İ[ ݍnvm 1ذ[ {԰=a.7!ȰG {հݽeV}a}&anaa??]nB?]nB ?]nB?]nB0G?6!z~dl8"j8Q􏲃nd8*cj81􏱃nMƆcb8cG8;ۄnl8.j8 Ond8!j8IOnd8)Sj8)Ond8%j8iOnM] 25F gA] 2Y5A,gA] 295EAM25CAM2\E5\@"AM2\CPeEtB"Cq=.7!@m2!(dXH!&Btc.7!&jC1AM24C54F MAoB^&D7!.D7ކ-}?oB&Dh~# m!l%]:tٹOשaoBа qMŚcy`MV&zbPh j6!}& o=Or z|}Y ^ݬ)!b=fH&D&D&D&D&D&D&D&H>Dܱ>O:܄%"xqPDpVzvM2d!G Y栟]nB!G jA7\vr bSC.y籃ndCG?t܄ C Ԑn& Pt /d.7!P("5[~;v A"1bAM2D 薠_]nBD j(ARvmg16L 薡_]nBL kPZײn+CaհrAM2a]:vr İA ݀vr P V_ 7!P)*5T[~;v A*1T jA&ŰQ nD#;v AbQFtkЯaV{ dCjЭEt܄ C6Mob.7!ȰI հ of.7!ȰY [԰-oav{ Ɔ-bStЯcV%Ɔ:1lUC[6!a m&aa`@bةD';v@bإB;cXil%j؅nwn=cn1Qnttc 1Uttc ^1S^tt[1a{$p@ p݃dV{ 9Ɔb8B;c0܄ !1V!tt[1dd{#01=pD GpݣeViƆb8C;v@cb8cG8;1]fl8.j8 OnMc 1T tOtmB,26)5DA&ĂƆSb8SF4;v Ab8A ;1LH46Y5A,gAM2j86!>95|9ϱn{ d8'j8yϳnÐعƆb^@;ڄ0c 1| ~jalcb/нEvmc8}ˆz`rr"BV2 B?tE tfvƆ`1!CA)Ɔ1!PCAIƆP1!0A abh0t߈tc C#14VC#tߘt[1glh,&jhnnGQc MT Mm~Svm 1j)o"G54Ca6 7!ptߜt[mB alh.jhn [nM=2CK5@%-A&ĐƆbV -ѽkAcõbN ע{ױn;" ׉z5\_6! 26\/VjVb.7!J fv F m~vr mpڠ{7nM} 7n@-mA&DocC[1ܨވn3cÍbhm~;vr pڡ{7n{ dI 7&toFfvr 75܌-]11ܪ[н[ACƆ[pnE6ocV{ {nC{5܆n{۳nMƆb] ѽA=2.jw`.A ww;v@;p@NdV=2)p'w;v@pBa.pU=ދCG5܋nG;nd(Njn';nd$ ѿt܄ bx@ ndx@ Q~ﰃnd:;vF3;v AbxP }AM2<( ;MW 䊛~6|KinB4mB7>r~-wWIz|tK&߄83aJkX7!6?[؄v:w!W 7!|_7ozdMd^y~&D&D&D&D&D&D&D&DSOz7!Ƅ]cb'4<3&bXtЏc.7!'5ġ~;v A1$!DAM2$!I &]nB!I jHB7dvr bHQC2)觰ndHCRMC?t܄ CՐn:&Őtt3d.7!Ȑ),5d~;v A,1d! lAM2da]vr KĐ%栟]nB!G jA7\vr bX\tt܄ 21,W2tt܄ r1a9糃nd 5䣻&V@ +-@t܄ CVݕd.7!ȰR jXn!& ŰJ B;v AUb(R*t/b.7!P$j(Bw5AM2CV[~1;v Ab1QC1k_ kP5薠_m s WJPtK/e.7!P*25[~;v A21UCk_]nBaհrAM2B V_6!V*İN C;v AubXuG=;v Abؠn@;v A bTt+ѯd.7!P)*5T[~;v A*1T jAM2Ta݈Fvr P֠_]nBF jAZvm 8P+MjEwAM2lf5lBw3AM2l5lFw [AM2lC[~;v A:1lUC[]nBaa+]nBaa]nBava;;]nBava;6! ;ŰK ;݅.vr İ[ ݍnvr ŰG ݃vr {İW {݋^vmcl AbاC;v A}bد}G?;v Ab8@;v Ab8D ;v Ab8B;1ml8$j8anMIS pD =vm 1aG?]nB(?]nB?]nBN8'?]nBN'?]nBN$?]nBN?6!F465F gAM2Y5A,gAM2j8]nBs1SC;v Asb8sG<;v Ab^@;v A bB /AM2|!j݋_d.7!pQ ^eEt|_9ڄ@m2 ~;v A 1!`AM2!D 膠]nB!D jA7Pvmcx^ƆP1!0AM2m~#vr X m~cvr D m~vr MT Mm~SvmT f7c.7!L רנ ;v Ak\ נ&&ZZ&ZZ5DZe.7!pWõ^&C+5\n+[ndh%jhnk[ndh-6jhn۰ndh#jhn[۲ndh+vjhn;۱ndh'ݛѿt܄ bU 7{+ndU p+o]nBnWC{toGvv}ͮr+nB\-vOywV|-}8oB\;EqD ?\׏_^xW6!u M+mB엯ayB> _?ބ#?jMC°KoB4Moώ'lB~eW?ԭ'6!6!6!6!6!6!6!6!._ǟO;ބt")?A <&FaF;&FaF;&ƊaƢ;&Ƌaƣ;&&a&;&&a&;&!Z SэF?t܄ Cbn 1&b0C 1@;v AbB;c16l5Bw6AM2Cf~,;c66Ċabѝvr s0W sН\vr sơ]nB!N jC7xvme0܄ Cn &0_ G>;ڄ' Ő&]nB!Q Ԑn+&!I MB?t܄ C! ݅/d.7!ȰP jXn2&ŰH .B;3!E MA?tRRĐtSOe6yRŐTtOcV ibX4ttܥ b1a1觳ndHC@?t[mBR!C j@7Lvr bRC&Ygn]cCՐn6.ŰD .A ;vKA%bQtsa.w)Ȑ#jAw)KA.FAM2gjg]nB31VgF7;c0܄ Co1QCot߇t܄ C1UCtߗt[mB1/]nB 7!_ `.7!0@ 0݁d.7!0P 0Ab.7!0H 0fv{ ƆbP`t#Џ`V%Ɔ1 QCC6!a;&a; aa;< cp #ԀgAGn{ d!jHGn=ƆbTHt#яdv{ ƆH1RC$]1a0 (A=2Dahvmǐgl-1jǰn{ d#jXDznC\cX1SXtǡ?t[1dƉaơ;jpQ0A ѝvmǐel jD'nLcD1LRDt'?t[mBe&a&;Ċa&;)0vQaa Sџ6!R SF6!0M NC;ڄX0M 1jn 1&abНtvmchl.j gn+jLgnMyƆbB;vbYF6;1 kl-X5F7Xvm abXt?t[1̜ml#j\粃n3 s0O sѝ?ؐ(jHDw A=.C~;c3ؐ$jHBw! Aᣨ1ƆbHVBtOfVFŰH .B;celX$5,B7vmcpŐtSOeVGRŐTtOcV{ ],jHCw1A&ĐƆbHWbtOgv{ C bPC:gn;" bTCgnM bRC&Ygn],l5d~6;ۄol5d%&o!G KA?t[mBklR5䠻narհ\sA&gƆ\1,SC._]nBv԰ +_z46CV[~;cP j(@w%+A&DwcJ1a%n{ ],Uj(DwA=.CV[~;vbX"tWt[ xX jXn1oD 薠_]1nJPn)JPRt/c.7!x7X kPZײn, 5E vr7{Ű^ G=;v {bTzt+ѯd.7!xV jDjvrwbPjtkЯa.7!xU jAZv}]&Wބo{_~K_'Λ&uߢMƟ?QلtG4lBM6lB\ib| K<&&g+5 *ҿpy~KA&D3x@]Vv_~ɟ{~=tǭc2|" m!{E1o|ݞO>ZǕkč_g>B/;!&=O};|o=';?Ϋj~GѥWث{jcS+}mr>>V|>V|o~pŏoυ' 珕1qԎ ?&wxa].c;L|:ۧ~;BM_ad'MNB/+|L߉ ߦ o_|OccΠK#1S:ZYGut푝^kw;˿M:Ẏ}NE^DoD÷}7]{Fx ޤ}Lkug> GCIѶrux^]t>&n;:m;37fX1׈>gosvL~ƿ[|}E7ȯ6b Naz=޾wO7wrd{nf/?rG/+{?뽟-Dd*!D  3 @@"?UDyK 8http://firstmonday.org/issues/issue5_10/adar/index.htmlyK phttp://firstmonday.org/issues/issue5_10/adar/index.html=DyK 2http://www.joeclark.org/access/resources/DRM.htmlyK dhttp://www.joeclark.org/access/resources/DRM.htmlDyK !http://www.epic.org/privacy/drm/yK Bhttp://www.epic.org/privacy/drm/YDyK 9http://www.dlib.org/dlib/june01/iannella/06iannella.htmlyK rhttp://www.dlib.org/dlib/june01/iannella/06iannella.htmlDyK http://www.kazaa.comyK ,http://www.kazaa.com/DyK Ihttp://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864yK http://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864DyK http://www.clip2.comyK ,http://www.clip2.com/EDyK 3http://en.wikipedia.org/wiki/P2p#Usage_of_the_termyK Bhttp://en.wikipedia.org/wiki/P2pUsage_of_the_term=DyK 2http://www.joeclark.org/access/resources/DRM.htmlyK dhttp://www.joeclark.org/access/resources/DRM.htmlYDyK 9http://www.dlib.org/dlib/june01/iannella/06iannella.htmlyK rhttp://www.dlib.org/dlib/june01/iannella/06iannella.htmlDyK !http://www.epic.org/privacy/drm/yK Bhttp://www.epic.org/privacy/drm/DyK Ihttp://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864yK http://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864ȓDd @QPvv0  # A"D}zZ]RYY @=}zZ]RYYǠx8x]|֟Bʦ'H!Hz#&HH 6lB UPA h'JS7D(<@ETQƒܙ% &ٙ=ssQ`dBK] A9DX4Axr2 „XۜmA]%׬"d[Dt o lfBxg SGeCL(Be&<,+Jd(>ɫũ#+fF(?#@YY)8.Æ vܿMA|EH20bDZS4,S"se9w2, o NNբD*^,"'LLBݪ FA5EUj޾3O+8mB=Sy1r)m#r0lz{ŊHA5NS;@o21Ĝ '~&L(23֘P 2 9QI&)7G_\mBޕ]ȟvLXLei2J,BM=VmD,״HNgxA [XvLI8zVxW=%m|+Gr+K9mw&|?p8[cy}pCۈ yә(i" Ϩ9…T@[xׁ'9RupE|qu~BFLF$'nزz¤(c_Um}܇Z߄MB~}ΏZ&La}EoZ-"y?2SG:#}ys ;R?ahSv9 Aڱ0"Q$WڦAJ,s C?`5"|:g| rcXwkwM.jq">p S`j";y{/ܬtyg Z ̷_:W8;;!1'NP'`t|7;uw{4O'd{۳MMVm 3"G^t}P&}7>Ҟzny% gOAv+  v,TJbĂ5`7zX(l(l z;xюOAj)OSl)B?VOAUbq?-S)129ZbdOiS bOJ| ?% ߳SjOc@ D1Yk2/%b/8 ̸8o6jX=Bܗcku3J(q13sMWKvuv߃U/ s4;~ SJ)qrTbXdG=yv*e %+*ţslj3>#$$2J3 NaY)>ъ)3~E;ma9lw~g } "~5|φ)!V N#1(S@ oᾞ1'uP:Bb3#q߸*u.ZQqOױ--Y4qd4s, 1tuM")0q+^q3̖ mKAj)ܿҿտ!:&R>*|et_3Sbj(A8sV9\ai-'cj)ؿfP(`jPPF\g ߨ:Ժ"m 4oʹenծɕsW>h8T[*o쫺Kgι䜕OL]!NajS^_S;|q=5wu )vے.8=No[Yp4xc)Npr )Q>tjQ4 P[KװB}K9jݨlHsT#WsTSHeuhj5sxݨk,1]C<ۥiv93F霣B6 q-}j.`,Lߒ5%^ܧ +PlοAi)ܿaZ3SI,}|37(o*dA$N?}Foh>Fÿ{71MƘ1o;v_g 8|eAb8A1S:8>N9Mնl}`!Pg %U(PbpScqEoݷ|)>m.A,}`_*&s5R Wa%X .i֔2FL ܒu38ej`].yw'ËN x߳%{'d<.+O)d`|~b< SO|?' ^|4p'߬8O@sM-7DcM < ֔|ɚb(T{0*&iJ{A5'_VۃWgm殟7n[ ڱh*~>J,q YS~2W[߂ŜBt.FgtPϵcp`3>Q31fJ̄s3Pque"4t/`KVX0"ubc-b,D*Q, A/39 h1m9  iJ,Dq ujXP zd7ƘK):BCYii]+Ȇ=M-!Jd<Ï+LuA>'b]4 @׿<41茝K~CBB#ŨɌ##(>|}>d~ gXW2'. dC27 C@0]F 6@'AVdog< ڬ_cu:QAfhw9@9}quRM=o?)dK<=AYPsaM6MrmblbNH'mb+8%EY3筘51 BN,1XH(+Ϧq 2s,$ ɺ}jX@d%8:5,c,)%,6bWN1+|WF7RXI1VWd}>(O3tΉN\(P[މŨܨGR(d,YKA M.>~h5ˀj{4c޲|~H>"||7d]E/`Q^j2G 6E;N~߃~߃~߃~'AZPU{~KKKo?~H>@ cZ27#Į6L}{c޳%WA3<܄[4e}-}VZy>M} %$"®o<{ٲm\k=k@QlLpRԵ7Um%6UdVW;T!( h엢pqw*lo)=dӷ+|eV@9M|toby;:w7۾Oc=܃/>aϦ[p 3ɤ3XvCb%s@4ۻ *'u=B~k/o+*PY0_-2/[T I',ΑdgJҋS%)~PTLѹ}큲@IX1lr=PD(MB:ru݊%g wL:St}:i:&M_3(=P@@ ;{^@i}@YXS{Yc3 [{{:z8н\@ Z19@i)o:VX0b | ϒ%\߂@Yz-XvڙoM,Y'P#d3vX{n"x j^ qgcUw9RnYpG*K-,Ua#気UF T U: ViO9l+/v;HhEzP*D!}vMpZʇr+h]2\-å Қ iu_Zs! 7̠,c AUbuܨ\ryi`F7$u?m'Emk{CzU1*rw\bE͒%]D>7dz3e 7(z䨞-GWb+p[Qp)VPe<0/hN:;($\M94+'Gs3< U"Fi\`Lw?_lƏ7b9")7폡>vF Ieг.]ʾ\VU?7lkN)1KSh ]!P_PS>x\Mys|__)04cC c>Gby'yS<17ttUxߔ3XxbT`DZ=.aw{i 9)VfnP}4}/-ݭni1SE녈O} =n1rCի)pog5'@m)Ӱ]cqiG1VYc*60m :F/i| Tnr} 1"NumU+T'9E?‡J; YW(߳4| ]/3q$+eY5X 9= -u:|ٝl9~Ngb56uױ'|9}s0sze%eu9wp|)CL*uv!>yN޷_(t`*bW~6Wٵ7 aSWJıaS03Rm;}j :9 XG g@g ?V(spGAci}_lخ[7^-qS \1ɡX8mCI.ب|8ٸ8bA_(?|[sl[snusH,Pyέ{0F>lF=+soxp[ KXay ;(,tn%BX(XX5B;WРR^"R ,p;/\ 0+%, zM&hubED(~/V-2{nL;B} ιx .ιuQ|V@7L=n[z\QiA/)(dlYO4ϹRUK|e?nz<_btJ?$S~9P> 2@VȜR]?ҮO\z}F@7L=ĥ*L}~A-ͬ~;4;Ny2Y s~gc}53Ͳ`Z_#TWH x/{/W5v.0Kvm?@fol=v\<ځbdi77\<2f5wkE)ALp? 睕_K{>Ino9@*w:ه%_KNr^~V:t>N5o}f{.aBy&9^&Q{Wm۾o][Cھqp%DOWsD v'"M2"@zd6jXҰ1ާ ]5Ͼ8~ p]G/[*/Zyq'ǭO[#c2{Q~0Y8M"T/lS'WXB&J2Q<]"v-V!cȸG؉[ˉtXi\XM>'05z+Ƭ$fC1O׿R{1(d2w/obWa}X7&,tpB7\[Ͻ4ƫh?/G_N'Z!dL#C^?#FZ_S^_#WL/` G)e1ѯBwߕL) Sw dƺ~S]8Q]y?m]_uJzd|Qn 7RRf~ `JpN/۴.|P]Im]aku}•cjO:OˀPz5)i5QcjC'Ψ Ą*sXW>tmGj ]RRܚC5Ojg;㶖z!_UW|S]jI/E!B2@Gzd"ĻHКoCj~9bRs8DS5~L/{fUo ~s70猘a)G~S j[#l>J=70e/_/9c/rwrx~9S?_DsE-0a.b , O{m<5ĩԐj<ۦwTھl3Fڨi$5I̶_LxlS4`_L} XiC1Uq53`'!c <*\ai)o1 QG8. qN{`@^Q_pQL)+,/&‚8‚}s4z-Sba(`!?XWVX0^M݃I,LUb6 jXP }),EY8xNY"qXSX1lވR5gfT΂a@@AP=2N~(&8U 3scqWN@  wRԧ__ ] 2V6~Y%]k+ѯߦg%ÀJBm%*L}CDn"HY 3~5.կ t74D]z].~@+u54c3"r˾`-A< ߵ0|QB0 t&duTSÙ5\1Gegw,i#435Bw3 D՞N*ޤ+6D`;B[pԳ7EY$? *ANjL,Ɔ&{4!$g ! &A9n0^lCe Ѽc$0. C8YY>k-%fOX6a/؃$Mv-gKZYkkuͧ2iA};;Q:?6FD<6C΅f?7@ sS5;=}}~2/4R-9t4r}=𣢎C"5*[D.wo43aqC:,j'A($4ӌ6}B[keMW߳iP=+<m1-LO8.,/H߽3^ߣW:HT/1eA^ xTw3f.W:vW\{U"F1Xx#Gj}*w333$/=hŃQ4Tr?,""KT8ysY uncp,gvʲ%GNI7#=hۓrV0F,0oON.c.9r gçF2£qs=:O<{<y>;ެ+nX "ԋH9О5#PGY8k`;}W;ťڅBMK X8uy׫B"E-e}i-4ߠo|<c'/Gq7q8O"PRDRSo+TNwSK#Y\ ^ogMqu_o,Zh`3odvVۊy++筘m7uмZz8p6w筮`[y+mEk#~1zo y+^G1o//o[]tq_ʝRO'5?-"kuT?\y_X?_+W|m.5o9)j'"D5R'XDI''>;o /Kfq@|ς'#}Rr(tB\>)܅zc&j-"D$OS/Lr I^Q&gc:.Iua؈9/9$l jqj ?']D|Da E5I\;[}IOr A$~9Wx;6 Lgg{y& rCuz=BJ~k@zW:en]X&mn푯ez~&[nI lAg9:r-;|q7M"ʾͧ;[@|554br[@ugs]\1=f_ Ȧ@5f@? /b%3w6~{s'gQ܎V@=9uq{sT!_^A֯ lNw:AKzl볠CpxH"e~c}y~:Z GH'>P'pg^ruO I+6Xp2uc0\ caIr ˸ к?+܂V\'P:PԻiw}ϐG"~pF|c18~&d-ejW?b&p@~'[}y7F^UVtYtWҷ[K?o*~ntU2 EBZټn M^ KJVz7<^GAmW?6zEn,{&1L4X0^%vb,,qd`!n 6AG԰Pl ^{kN8L{k]XV %T9M\K m J3y4o"jO95qk9v@@76@1j2q鏪 M7̫/4Ujr>YoVAYMW֔]%kW4j~ӌ֦ҪƦ*:9/ =UM'MV755[]f.Uh3Yf Ŷo0V}>Vk؍τ9X#"Dq'dϤ2hM\>]bX:"(,\yH弶 5ܳ6&0]Da1VX0^D{`#NV+>v80ȎZ 0 PXSY$ĽWqv,Z8cvC:qFmX8 ߹L5>h)#e+ @5zd\͐ ])Hs|N>?u;gdt۝#SOȶ)H |e҂(QJ'{k~K;򛥻I_(5>ފn8E6gU -jnU@{GOj|ckվ1gj| ˫0Kz^UjXptʥbҸX _' ELrj~W>{\*,ĥL,VΙG@S78c,pP1V]`25pڇX@aX09O;:j 9a#~< &,<,*мDVq8gh4Hfpn 4/uW-7x[fu@e眐(FM =26h> thm m[+^j+FdMѲ$&)G4YF?9?A7mojz^\}Y++j}$n>q`8~Qn⶜l$'cp׾0 TPuM m V=$8P5V&8 G§ctby0Ab"_ HHLеc kAohe$y٧g@o9mcޫYgH2MvluM'9&VASX4 ZZt]_튅/g+r19^C AZU}?Lo7d6֤4/ZՌoVXeXW3uUdVnw;ktoD7Z螗\ܒT]VU;[3y-ЅꑴOW:\YEsռ]}\[lv[j@_P{/ Vx{7˨|sj jW3R[àAk]jRZ۪uV}QZWoi=]dg[ښsjSdkXmI/&lJKp{_G (0>\~\]mi)4Wi&W\ՄHܰI(&야Kgkymڛ;8Ȋ ~2id!tHt6xsE)vX1n8a 0Hx'e<4|^]1T}_SH.+O)d8gW0L<;eO dpK |=Y}LdI 1 ꪑHJE TO`;4Ns61 !:DbMB۷{M,`+c@zE~,՘G;uk:\B|jM9&Bz /2MWqM:9 kkzsْlg^?[WaJ~S(Z3geOK9+LdӤafp?i x'/?oէyL FxI‰~|~ojbXvi%C,N1)?D,Lۮg(?FQd-'/1~nlZcx<#vYQ~^~)gߛ9}ˏ X s3~oʽsos[#EN"@=+˸^0ʭjt?Ƌ}:f^g㝱 ~‚PZ/3֩+9` bJ{3BħX0ax~ca c,8%,۱afb:>a|(W|J59N&9&sc~Tk9<+ojZY|r|5Ȱ]saA#ٌկ:O@-@K<. >ТtlW@A}>o!WM?$S~P[2@VȔWvW뗛]9%hgnrϬl~H>ܠ#|d8,7镭Oscȿӌ=ցKKL٬}팥jXﭝ~F]D".~eڗpn9񼳪ݠaNI@ˁVꜫ L:s^u^y!ZyY]Gy'3 s>pwމy;o7N_;td\ӏ8'3<\44?r8v:= IN fo1kgԹ#MC &Q[6ֳ¹,W^^)<_ui1N `@h[}l;*0|9wΐ> } 6~g=[w1yrKJ͝:6~@[sheoi_p%9R9M @,t {l~㝹hbjmgn&T?JD\Ualm,8cvWv.6˽s ,zE,N2Ђ vX0y հVA}Z٩caqRXhB ӕ 8CEj)<r͘5cψ]/"{Q͖)?Y'ŚrjP6ՉYSW':^{HkMaf, 'kdj?u͚<]&]]ֈ"[Oz! .>"_Xn &g (,&%f6t9;_t;\:\y G\ӄMs7t XhsI tϑV`s w(plba?/b4mCPCΨ6`M2U'R״Mlnb BG'.(FMr=2gMX %S> LXͤuz'~IgVM&x;3bݝevN|ieO A<: DL]n/6 -Ǿq6XkOSu1Pi)<2HNբD*^,"W5v|q1^]#YY|DSMO/qAF:/b#c8]?c %zxF"gGП!$P菱SGh}eD^97OnWps2;^*"VH菸}e5P?2G? Nk).q/F(+mϸ xuWY9]> ~À07v8w3`W nΝ@u PZ1İj<("Z'"2fr^3P{f5Ctyg Zy9 FZy?~~bQu :)Gx'+['{*Aw e0?S/"~ X|?G\%./mv!f0:аi=ͮ!?5d RN-د#̸xo6 };c(c~ʱkvρUs/ s瘌4;c~XОsL<#Qs&Q>NyAn>6߅9? 7y?1`{˞371KVTL=G?rc%œnj k$QG+*?,Bq఑`O|5@М[t{64>@ JxL4`n&:?/fYh@c3>4^?.@-$GXV--Y4.Yi%.CM"q;u O1WQq<}m> s?sO'0vomf bioү+@j)<&`\953Uՠ9+w8h8\ai-g^H+S[ L-*jԘzռu [f`fڲ]C`<5$WvݩԜCja_y;PmS-5F̣j*iHGΣ[jKqzUq-ܝ05|_aWϾ>avfnl1s&z_Rylel^瞃^:sxOssLዋ5@q[% lj͙@VFk30m`8TJԱvJR컈@u`U]A,  fm К΋s0XQނɽSq w Z9|k,1=f2K4s,8 : 9+A,m  SdMs |~怟0' O` ޲̀5F|_ r봔cpapչ^Tr*?UA֣9ڒu*82d6:  [/x=sޘsBsC 0tӹ^Wܔ}04 4/WgGs׿(Ƕږm\`0LzdW٣aJ, gjlU̶-YۢhS€0+g_y0`{v37f5nm؎k_PK_TrrWXJ\ O%f"qcdDž xĎoA xi5-A( $c(PX1|J!\ ϵְj]0Ğ-p_1.x ӗ{JV#R7#S6S)5b F;K&iJ{A?5^VۃWgm殏7n[/y #cԼpF(A,eMĨ^>o[~ O eZ1nj03R+f:|DGg>$"cEݗčTbƛI܏U24DiJA_̗p0J':QX (%(^zP —\łLG > m9  iJ,p ujXP 4t汯>lf>ӌnP6njL'wo&=oߛuFg͒0i3.Lg!jN}} xW|tҥP?@!@K_bdF>xd}2?J3~a    dE 2T!w! k _~{ߓ g+ 3gmVӯC:nȨY Q~4;Ns >8 :߁ d| j%asAY5,j}`T?lC?^`=P8N'}u? TgR#k U~3su/:fYa!X։–~4B Auz4bA``!T~eP|'TbN  +f s l@[}6w3ЇV ix76Ԙņ͘>c:m]'#N=3.`Loi1(O5;k'f.;9sУ@my'fn; &sKd-+4Ǥ][_G_(P[ޣC2C! #dE/@~ R = ԖP1/@w; ע߆}~_~_~_~AC2ʯ+@@1=hLjtLol U`cL-J0M> $;ZPPf <j'@2b ]d4x"!6>"hZ`eUkb15GH( :٫bXM#m_glz"?;vv3sP{`KQvl{{NTq*gUGN-)SkR߷#e >P4Cv (FMfk3dj@#ew4{ PJmAFKH/ȼdC'dädN]{?/@R9ittKX#mΓHJE[}&j^l{ڻFPlSElu#OE@F~)o/{g/.?!S~Hn9}{W`E o{ۤ˗K/~P,,'=\k~ #| {6==V\Οd;Zq{U>-[6;;Z.oR_:'Y 4wB9 %N9ɝy$72)1ϲef{}ҷ󅒽tKlMؚ)֚#Қ'y@l+]{7/AR3m᳴7>ٺpKKZ_+|{[uv< QJ{QM{x{9d{o!=^H{GmsC"}m$Ia~ea1PMzd[L _,!y9V e]k: z! Ӌfo(,^[ZL/H-*ΓdH3%ũ X( *k(_jF{G{ͭV9L6{u5?$+nor9^DeL c5nE5ܳ]hڄI&3k>\^^6{{{_u^7m5G^s kjy>$Kֽi׼c%+]Zp3(9-eWZ 'Z )B}RXH ^sK\ N;SiB8:_ YC'%101}EԼ$L8#xU%]m%uܑ F .KUsH9eт@>@e΂U@c`>SgJ#K .=*pJ?xHߣ>-u 9lW iKpiC&#HZFf 3h; -)B(/ҽ R.<=Ө<T7[pK@\jvm?D^%wbǨq|nߙsٟ7Ko wϦc5,LY̴^ŮCE''+9gE}So3P`;z+J?C. 4~,Wrd,ٝp%)V]r={\ XJ̅\ D Grr4:WsqQnӝ}O[ ǟOo Ah edA?{zGTr٥e\ f `av,K%){|J,Xp Fa,ԔWSY,v+~7ST'рo4o߈^_|fw0y P`Jwc;>j)|-%X\}{E'J>y'9 Rǒk)9:ߔn Rs\]} 8Ճh#|64># CBu_)QL4B5?@{i.jTw__|96碞/pX/D|nx|l죬9hÍjjJCXY~͉6n-ex9xv,l@-){ ,8 Yjʍ;p6?/:K g_y1`{˶37W#|x4Tnrc v,c c 'g:6 |K-+cq ,?.~?AEgXK͛?~ [·J; YW ߳4]vnmL'Ij,`祢O])UuT/Oӡ>pvbtRwR ۝:  Nv,|\Fı,8+A,TB}6b,jjӾ69 ~@_[v~71>X9P:4i)|LrLuL߱I$n*~7y }ĩ1?.l]s<–Ol(|mɡiZmK>ke^ږ)rmg/tЈo=5'%AOb<,szɞw?b1s[DbMB۷{M -{֞3U~F4;8kvc}W C aڱPJ'Uvi C9_^Z0oׂNN5>03 |}À - TCAv^Y34gOr!Z1 g+p>_U(0*R}>?9:aPoA} /dATϗboO|}wZv%'/ԷnOYCaI%n"ħ֞ʾƃ*3u,'?+>MӰA̱e,ЎqA%8P^b,l&ߢaS>O|mFfnl1򠇂Rg<0{Ï~VG*j=C>#$ÏT›:Ć:#(63Ɖg#o3cN@z{ؽ=q @ O8giЋlAӷgՒC$Jt%@~8GmHoC|G8 uqgugx(3O߻HPaG)m}P~^Qg]~{V>g}37ņY>v,4~ɕ >ij-XI6b%ɬ. >9Cn7lRaDr'rQK߀1b2$ʯg׀5 kdgL]Wok/u]rcnb3dӯʗ³ dU1u7^U?q}_ 7fuS\oɴUw ]oo~'Is;Nn' ڡxv Av3,m4|Gn&nv|.q,&c:m\WķɸыqƵqMOy=e7tFitFiMOut+CH~`϶ {ʬpb"dk0,7nѤɹtyd4Ij^Tΐ9+r,m35 .lpukFsiri&r 2]vdG=ݚCg55\K8 rI?7ޘM.zm6YYYy8{fEAF%8kGͅ*[ָq9ٖU2o9\"H} kz_j;Yod=~+k# +eGoiٟ3s;Y{)7W fk;EݲfƪLQU_W_4Ȑ;Шg)uY&YjIVzj~_/\io\dnSeeJ|EGu{NUQ A;20k5ʰ*k~z+\u+98ǕpN)p~Td ~##Ju2BU* 3RG@t3*S~>E/Ivzʏ 2eM٨r*9˔G77d5Qav^~Fq}^'OESym 2ڑlLOS("}!R@l~3z\4E.[HcߧHb/P F:@vd|X~_$m-)ֲ-YL kml7"m._19-\qOPĴEC 2޲#c#m`Xq$M<88f_g*nK%\1u|M򕩛KSWM58 2.ؑqF~9{GڗrrNOZAVVI*\vX)R8R))kG?<%u*RkũTKN0Lbo\EO2,ej?.'c~ &\R.ȦiRN$)i@u&F0\v H|,-R<^K });ĐNoi$ޖH.ĉ'kGgJW%ΒK4xd\#e^IHIVJI=oo(M4þK }Vr<` KO((Wz8 2W$MO̗3ERAC(L͆[7S*Hx@%<"Jr-~Ө_'ȘhG'U>ɴ7%- %ڄ$Kx kcI??.'=P2"GdH%@ ;2&J#?ZlHB|-'o_gq&8r٫q7nj{6nGSCܫM83 ÎsM6}]ӉM}U\gӱ8Kƃ,3z;\6V\VZӓ,njֈ,aFA qَ&M~qƦM!q|nL#,~Xr;x$ƃm<k %ϧ)5uGHֹF!LcR ϱcK!k5-56U쁟55o ǛeScT-:~ñF:]&gQ#11‹8>2~s!d_X+~MfޭۘzeyFC<:A=C#w\1V/w3B3Ӡ&0_f߷o57rQApiH6*x07点:Ww<:ܳ=q$g *h}(/=3k(ʜ\C+'P5 1|=bZd>qχ'ZL)k&jiPc*ʚp?)nvFaB\JHrmV9>&>w\ KkM@q1ssh=\lC or=PwA}:/)t` T`?vFsFj2DίmիP@뽈{**F[킶:`g=\0o<\`jR2;펇>M5m5V_ ߵPSBf1跐q,x caj/shĂ'3sPgQ!zX8>VCt|@->puokǿ ?{~ $8mc^Nx[H1Af& ?^KͻŁN+=YV>|>{?>5FyJK ±b߬h:qAj/qjAu]@096LJķp4@]>=,ZΡr<|yNaX𷎅~Hύ߈? bSD,|(:P񋵸ؒ ؀ Slx@Վw(1 :OG弭sd?jGLh>p< 4'KƄ92 ټ;%Ž'H/:e9d¿F[coWN $羽 ^8ݱ0'bmD[=_}}  Z,h_/v).QЯ=9 ~{CjopW8B\PXkWGBA, n0늰}EGZxIt@v6uA:r;Tr!99n=W#-lFP<R.gFQ<xx7,9)y_!L)7sI=ʧόvfl;ICs{Όןh{ 5M?s`轑f`(ц}<ک[\_d{@?De0݂QoqÈ1]s~kΔS?vScV`au,> qoi R '.C`sW >e`+fq<:nKx@گĘ<4&Hr qr 溃z#wЯ;@30gH7@d @TyOPo|:3O|1o?>opg,ü n#!4>̩}Hkϩkz6I9z-0Ǡr8Tc@18(`a59_ECX~@Üƃ+BJw8;ҾKq}qobǿ {bZ'!3y[)x=ɾ0g@#G0}zaFDc?Cg-)kf@qEi'{ w@t/Oì ;m<ՙ:Oȹ?x~=7'f݆Qs#Zj.5<~ qv?A 0yȏ 7b!yIh#3iX!jfwV\xlJtlAtlLBۜ XF~V!*r=:9>в^-iK7F,ΊbKsCpsc<7F}˸7F=o7;*|,{$^Jk:3IiaΞK炾aiV,"Col_(>1WW*^\Bٱ09{.a h g=} #(ш b!7 ?[(tx+P9V8Gqq@_w/_v~<׫4Q[e Gb$ J)W]麕nf1y9b]]1go&o'+ׁC5KsjAbmhF'qS8 asvgFoaXǔW]d$Z~FN)Z6I$Sh;MpIƱ{|'Ⱥ3}" vly_b{_e{_g3үض|ach-{;D(G&d]g]ľStm+Gab>~Hg;c)TwW-sW, Ҁ={%&{Gm]>ܷz7qG~ k{sDŽDž_zڟAsRqcp}Lx\|ޯ R޼KҫlN[zJ)#=|3Z@˅sKn ^Ğ/=׻ q(g:f]=Gd`W7;{ГkA5CqqCdۑ ) }_0kAf.ⷳIz̾xOw0{nl2{g2Csd7q+5s[O3ז;3lgh@߰w!( <ޙ oncF{on[Tdn wپ;vI,o |_Zb~ > 35uQ@34G) d*³{A^ddi%tC2}@#b_I7 + QF+woؾ~>&n>.Vp׉M!;?g?# F/ŀa swśwO7kZQ &{w~+뷫>V@ wwI?$Ӟ~?A__@/ 'yF:Asv|O lK<_ycw:u& 94?g 3+zk$AE ca; ^9z `Xp@t#t n1`-5QʢO~0z}>|oC}ﲕoU!|a?86 0̣}*L~]3>ëɩd%uRAF!LFR4Vj 0bW² !Upܪ[~:XȘdP )Y}05zT | P,4Cۊ {G3c6Y0{^I[1B.*sp;^3~{:-PFϠh_Fր{{nu_={g#X%D(/X2,Na=ɊO+'aB GBhN NaVN2{w~X&1WotfLȳ ׯW~ x.h16^7 {^ψw*0F~oó@{z荂|+ - _~?-(~BQ cV;U {"vvNц|s<{dY7&|KZ̷W;ޗlU:A [A4{|ŋjU׻O_ =n %W%ɫK}ra4[?Rd/t]@n5) 2ZT6d2Ij.j5?d@Zp=[s]di_h=}4Տ֓ozQN7ԭ蝹gVϩ'j&y6!<~P>~xE͏۲ Y`;?3nt xgƭ|\0nk&KKo}G5ڤ0C}~ʭ&k &Pu ati, 6v9y>GQ,`7ᨖX `!X~9nF,P aQXxy31ac`{w'1l^xQgA}$&<Űp)&|z:~M.]6=d$OeMB.7Y Ym6\z2&^DŽ @* "J[.jGKfiKZiZ,&|~zBuR2٭YZ.JGڠ} yMj+&|llk: }wA'w874mu|EcZcPMPo|Ǭ^ѻޝ5D[:DKնaa/*8, @{:{Vq@ a6`AAڜ9?_A K-. X[RWXd-T\PF,fQ 5aV`a"`zM , 6bVbWfR ) {B{uv"lLan~k*S@7&0L8 6P #T:,3#8/QSSd?xJJ͚Ud{'U{YՖ5'TjT % 5+k(U״(_|fV o|NߛĄh.utAi=@{_~fjF{GPLhSW$ϣjۿ$ ,9(`a0'*z^fXU$,dQ ~ pg, 湂s|~~ D-bR ޮBF@cWXv>PY]X8CU, \BgS{#z.w0@PAf=~fmӼӔjPnSN .˺ TƱ@*;9|i)B>U8796qs御Ƹ媮TMtjd#h ՉS@.\S6Amo^j6GE>Ri3UZ-O5KWj+TӴUUO-P+.VҮVk*uvzvl^"{#;p{䌽'PD~e~L)xi dޟARϽ(LvdĻ3ATPyi|qܼ~^_ cܧ 򎃼AIxi>'? jPXK?F.u*h bd6پH+hM:{,zı %roΗ[` G|!>vyDXYaVSۏG2aKe>bpR6 c%!LJYybhVfnp֌tבe-r?:zVޗdfE7ʎ?՚"5S'5_5[{_G}\~r3{ WUDԹY 1\U<}cH /MUy7sWYG~6xhG+^0þ t.;QghzQgb:y gc<Mǀwy O 7 v1uCA=)iX=XX-U7{ g0pByc <&+{Y7F~h@SawA]Mg"sěp͞pf̣raނKo >c92zqP٬^ѻ+)d{(U<ڈXgEC||qƑ@-E^$,lŽ=g=ؓ=ؓ=سѱ3`KcnqLJ|ic\'.s]l6r}LMnTx#?V" -qU*{>iygܻMĽ$4 }ěxWEx>}+6y;;199C$xXNSPϊؼ gI<`z7lf>sX,zշKb_vb-t<@t<@xqsogǿ /]m~JAm w V9 :=P~@Z"X̑D~䎿kU62xdVձt~),\@p,T/R; Jzű,ʤ*hoS >Vy{ CMXB(*aFΌ!{UnYru'v^Cs=VGu#1LiZ^C\ۮl9 H4/v,3 Y> 3r;/L9lh^dHقH2~tCAo:e] ~_vdӯOg d*n/JUR}"E4 мHhAdȤiOAP>  kȌ\ۏ1Ȁpk1joŨ:f쭘oCp=a7tFitFiMu@H-+<7ӳy33箮v` ^XGrWS W`P AW4۠9@ Ҋ AK d2VbW@rWl t1 !?aN;gBoC:? Pȑΐ*oٙT<U_RQ!qΐTl@߆τز`3C@o]#|ܜr\MDX-n l _z4BPL ƌ&,4:lmSs<%F 1]K6>mOg?sW|Ԉhsz!2bMq>Ig2sҀ:^|" #I&#^:6M46Te qSL`cω'wQ\Ϻ V~Og>X7dq{hCE3:ҊVŠyJ܊zփXS?|ϾtA3m6b83v.}PA}>ꏷ8OdΕȤjۿ߄G: `Ffzp5;y ^ѻ򨌅%ZPz0O0)Ͱ@< >̱0.ZP+ ǰ#!rss|S[p{hOo]J}c?=37y~{yA {fl!JE1Oy=3c3#̠?Qw?u̫={m홹[nt ˽]]qfD!櫮>Ept*}h_5O(Dݙ'ߝS5Ї8ߡR껶}} U9<(ѥѮ+=XA:〾8n_-  o v&fₘ)y#7^_$ )ˆ!?@a7Vj+P6Wgi Wt"c|-.X4bIA,CMXSqOe,D@s vf7}91Aq6Ԉ(oqV MkҜUZU:9@V-2 M9@:R mVh9} =4U ާBPUBΪΪrlRٵU /d;n*4UÅQۿlA[:.(*t04oj^o]dw#oX@@@ NormalCJ_HaJmH sH tH @@@ Heading 1$@& >*mH sH B@B Heading 2$@&6]mH sH F@F Heading 3$$@&a$ >*mH sH DA@D Default Paragraph FontVi@V  Table Normal :V 44 la (k(No List < @< Footer  !mH sH 6U@6  Hyperlink >*B*ph4@"4 Header  !*W@1* Strong5\$)7<AFKPTY^b #+3<LT_+MUaqu08JVaev>98763210/.-,D<=>?EIMOQSYcdefghiptvxzxL  #     $)7<AFKPTY^b #+3<LT_+MUaqu08JVaev   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI>+T+.T BCalmnopqrstuv3-:D+,R)^?" Z 6 e M -lHu8uB`F)maK2~U!_/ !{!!d""E##$$$m%%I&&%''(n((H))***]++.,,-r--G../~//X00$11 222:3;33333377q9r9????@@6@s@@AZABBBBB*CC D?D@DDE+EEEEFFOFFXGGGLHHII+IJJQJRJJJJK:KKKKKKsLtLMMMMNNNNOO!P"PPPPPPQQQQRR>S?STT,U-UUU/V0VHWIWWWQYRYSYuYvYY\1\V\h\\\^^^^^^E_F_K____{`|``>a?aDaaaaad d?e@eNebeve{eeeeeeeeeeeiijjumvmqsrssutttQuRuavbvcvgvkvovsvwv{vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwww!w'w.w6w>w?wCwEwHwLwRwYw`whwrwswwwyw|wwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxyy yyyyy$y+y2y9y:y>yByHyNyUy\ydylyvywy{yyyyyyyyyyyyyyyyyyyyyz zzz z*z5zAzBzFzJzPzWz_ziztzzzzzzzzzzzzzzzzzzzz{ {{{{{!{%{+{1{7{>{E{L{T{U{Y{]{c{i{p{w{{{{{{{{{{{{{{{{{{{{{|||| |&|,|3|;|E|P|[|g|h|l|r|y||||||||||QR*+&' efqr!"BC`!Z[& IJR )*9IJef%mn; < H       cd !Ed0156*J!K!]%^%((()*9*E*Y*j*k*,,>,//3343{8|8^9_99C<D<>>DDHH?HIIKK@NANuSvSSKTiTTTTWWWWXXXXYYYYYZZB]C]\]dd8dfffiilllnnpprrrr s(s)s}t~tRwSw-|.|||||||||||||||||||||}}}}}}}} } } } } }}}}}}}}}}}}}}}}}1}2}C}D}J}V}W}^}}}}}}}}~~~&~'~6~~~~klxނ߂+VWȃPQZDžȅڅWXf͆&'WXmntxyĈňӈ`amىډ_`u>?L݌ތ  NO^QRbȏef{ߐ&'-9:@ʑˑӑmnxޒߒ<=N67=<=G|}56@UV01ߨ#$#$ޮ߮<=IϳгEFS]^`bdfhjlnpq}~bdepu-:[\avjku Z[`j$%/;78HW!01;L%&0C [\a{"#(=Z[`u  !"1EIH  IJklDE~mn-(TUgWX23G23G>?KTU^copy9:BI"#FR S q    @d?@oCGe,18=NSWXu%&89c'(  :<uy Vosvw01dgBF]ue f  ""######6$7$b$f$g$%%&%&'&B&F&&&&&&&&&'B'f'l'm''''''')))***+++,,,,,:/;/e/f/g/:1;1=1f1g1\344`5L6M68899<9H9`:x:y:;;;==0=U=V==?>?X?AAAAAEEEEF GIIIIIIKKKLLLQQ R_S`SUUUVCV}VVWWWQYRYZZy]z]]cc c8cdddddd eee1e]eiejekeeee*f+fVffffff*g6g7g8gPgghyhzhhiiii.i/iIiuijll&lLllll6mmmmmmn)nnnnn o;op/q0qRqq2rrrrsstttttuCv?wgxhx|xxAyByCyyyyyyzlzxzyzzzz4{|{m|n||-}p} ~~/~0~1~H~I~S~d~s~|~}~~~~~~R^_`,  Tp,8ʃ˃o{ RZe0<ˆ݈̈ ҉@z{Њ؊!vw \JNZǏUVq~ѐҐ!-ǑȑR^EFԓ<=SUxLM _`)*()>~&'STN'(ͫqr0Pi߯ FGºκ!$%'J'(*e/~]^`~89E!"4$)124:?GHJPV^_agltuw}'(*05=>@FLTUW]cklnty #+,efh12 &'Nno FGVcd"#89QOZ       DE'01AJKR\]DFHOalmot  <EFGHfnopq 2<=?ly&,-./KTUVWu}~GFJ K Y!Z!&&,&''m+n+`0a0w0=5>55767I7Z9[999:):N:e:f:s?t?Y@Z@{@=B>B_F`FuFGGKKMM2R3RnRoR)T*T>T?TRTYYY^_/c0cAfBfIfghhhii.k/kCkll mNpOpkqlqqttRvSvjvowpwwyyyzz {{{(|||}T}}}}}֊׊Ď34)?@BDEGJKMQRTZ[]degpqs}~٥ڥkl-.0TUNOlm׹عvwmn@Ah0>?R067iEABTOQ*,- klQZN/0 8               efPs###k&(+'./111H4I4888y>z>w@@@@?A@AAAAAmBnBB(C)CCCC+D,DxDDDWEXEjEEEFFDFiFjFFFGG@GAGGHHHHHHH;I0I0@0000I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I00I0  wwwz2?^=ЂU~W<9M=.HLQh>Yagtz~;fr+-)4; LRRXSafEgg{h>iimmr~~R̀>͂LZ ]-F`zVЅ&kފVPǍW&mxĐ`ّ_> NQeߘ&9ʙmޚ<6<@$]}[jZ$70%["Z!kT2o9 %#e(.:7ETlmjm*nn7oypq.qttuv;w/yz||gBym H|_ ʋ zvUјǙEU$'~]!1G^t'=Tk+ 0J\lEn<, T }  &B?\|?DJQZdp}0hQs!HM_R x`Ƣ`=>Z\]^_`bcdefhijklmnopqrsuvwxy{|}      !"#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeghijklmnopqrstuvwxyz{|}~=[d|=+=.=EEEOgj@A=ABB&CCD)DyDDDkEEEGGEHhIIIII&JPÚ\›4>____XXXXXXXXXXXXV]`eptz!  Ob$-UcjNc$ \T"$q$˘38B}oKk0 R$-P8eׄayAd? R$ihhdB7Bj @fw` w(  8' *! 3  s"*?`  c $X99?*!X#Z     N  3  N  3  N  3  N  3  N  3  N  3  N  3   )N  3 ) 1N  3 1 9N  3 9 AN  3 A FN  3 F JN  3 J NN  3 N RN  3 R ZN  3 Z bN  3 b gN  3 g kN  3 k oN  3 o sN  3 s wN  3 w {N  3 { N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3   N  3  N  3  N  3  N  3  N  3   $N  3 ~$ (N  3 }( ,N  3 {, 1N  3 z1 5N  3 y5 9N  3 w9 =N  3 v= AN  3 uA EN  3 tE IN  3 sI MN  3 rM RN  3 pR VN  3 oV ZN  3 nZ ^N  3 m^ bN  3 lb fN  3 kf jN  3 jj nN  3 i~n sN  3 h}~s wN  3 g|}w {N  3 f{|{ N  3 ez{ N  3 dxz N  3 cwy N  3 bvw N  3 auv N  3 `tu N  3 _st N  3 _rs N  3 ^qr N  3 ]pq N  3 \op N  3 [no N  3 Zmn N  3 Ylm N   3 Xkl N   3 Wjk N   3 Wij N   3 Vhi T   C ?  x  0AB} AX#Z v1u  v1uN  3 v.N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N  3 .N   3 .N ! 3 .N " 3 .N # 3 .N $ 3 .N % 3 . N & 3  .N ' 3 .N ( 3 .N ) 3 .N * 3 .N + 3 .#N , 3 #.'N - 3 '.+N . 3 +./N / 3 /.3N 0 3 3.8N 1 3 8.<N 2 3 <.@N 3 3 @.DN 4 3 D.HN 5 3 H.LN 6 3 L.PN 7 3 P.TN 8 3 T.YN 9 3 Y.]N : 3 ].aN ; 3 a.eN < 3 e.iN = 3 i.mN > 3 m.qN ? 3 q.uN @ 3 u.zN A 3 z.~N B 3 ~.N C 3 .N D 3 .N E 3 .N F 3 .N G 3 .N H 3 .N I 3 .N J 3 .N K 3 .N L 3 .N M 3 .N N 3 .N O 3 .N P 3 }.N Q 3 |.N R 3 {.N S 3 y.N T 3 x.N U 3 w.N V 3 u.N W 3 t.N X 3 s.N Y 3 r.N Z 3 q.N [ 3 o.N \ 3 n.N ] 3 m.N ^ 3 l.N _ 3 k.N ` 3 j.N a 3 i~.N b 3 h}~.N c 3 g|}. N d 3 f{| .N e 3 ez{.N f 3 dyz.N g 3 cwy.N h 3 bvx.N i 3 auw.#N j 3 auv#.'N k 3 `tu'.+N l 3 _st+./N m 3 ^rs/.3N n 3 ^qr3.7N o 3 ]pq7.@N p 3 [no@.HN q 3 ZmnH.PN r 3 YlmP.XN s 3 XklX.aN t 3 Wjka.iN u 3 Wiji.qN v 3 Vhiq.uT w C ? v1sx x 0B^  BX#Z v u y v uN z 3 v N { 3  N | 3  N } 3  N ~ 3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3   N  3  N  3  N  3  N  3  N  3  #N  3 # 'N  3 ' +N  3 + /N  3 / 3N  3 3 8N  3 8 <N  3 < @N  3 @ DN  3 D HN  3 H LN  3 L PN  3 P TN  3 T YN  3 Y ]N  3 ] aN  3 a eN  3 e iN  3 i mN  3 m qN  3 q uN  3 u zN  3 z ~N  3 ~ N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3  N  3 } N  3 | N  3 { N  3 y N  3 x N  3 w N  3 u N  3 t N  3 s N  3 r N  3 q N  3 o N  3 n N  3 m N  3 l N  3 k N  3 j N  3 i~ N  3 h}~ N  3 g|} N  3 f{|  N  3 ez{ N  3 dyz N  3 cwy N  3 bvx N  3 auw #N  3 auv# 'N  3 `tu' +N  3 _st+ /N  3 ^rs/ 3N  3 ^qr3 7N  3 ]pq7 @N  3 [no@ HN  3 ZmnH PN  3 YlmP XN  3 XklX aN  3 Wjka iN  3 Wiji qN  3 Vhiq uT  C ? v sx  0Cv  CX#Z f vu  f vuN  3 f vN  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f  N  3 f N  3 f N  3 f N  3 f N  3 f N  3 f #N   3 f #'N   3 f '+N   3 f +/N   3 f /3N   3 f 38N   3 f 8<N   3 f <@N   3 f @DN   3 f DHN   3 f HLN   3 f LPN   3 f PTN   3 f TYN   3 f Y]N   3 f ]aN   3 f aeN   3 f eiN   3 f imN   3 f mqN   3 f quN   3 f uzN   3 f z~N   3 f ~N   3 f N   3 f N   3 f N   3 f N   3 f N   3 f N   3 f N   3 f N   3 f N   3 f N !  3 f N "  3 f N #  3 f N $  3 }f N %  3 |f N &  3 {f N '  3 yf N (  3 xf N )  3 wf N *  3 uf N +  3 tf N ,  3 sf N -  3 rf N .  3 qf N /  3 of N 0  3 nf N 1  3 mf N 2  3 lf N 3  3 kf N 4  3 jf N 5  3 i~f N 6  3 h}~f N 7  3 g|}f  N 8  3 f{|f N 9  3 ez{f N :  3 dyzf N ;  3 cwyf N <  3 bvxf N =  3 auwf #N >  3 auvf #'N ?  3 `tuf '+N @  3 _stf +/N A  3 ^rsf /3N B  3 ^qrf 37N C  3 ]pqf 7@N D  3 [nof @HN E  3 Zmnf HPN F  3 Ylmf PXN G  3 Xklf XaN H  3 Wjkf aiN I  3 Wijf iqN J  3 Vhif quT K  C ? i vsx L  0D 2  D M  # BCDE$F0  QEsBXs@`@`KAv N  # BgCDE$F0  AAU'U'AgD4DgD@`@`hv O  # BWCDE$F0   ZWZ@`@`Y vX#Z .\ P  .\N Q  3 .\N R  3 .\N S  3 .\N T  3 .\N U  3 .\N V  3 .\ N W  3 . \)N X  3 .)\1N Y  3 .1\9N Z  3 .9\AN [  3 .A\FN \  3 .F\JN ]  3 .J\NN ^  3 .N\RN _  3 .R\ZN `  3 .Z\bN a  3 .b\gN b  3 .g\kN c  3 .k\oN d  3 .o\sN e  3 .s\wN f  3 .w\{N g  3 .{\N h  3 .\N i  3 .\N j  3 .\N k  3 .\N l  3 .\N m  3 .\N n  3 .\N o  3 .\N p  3 .\N q  3 .\N r  3 .\N s  3 .\N t  3 .\N u  3 .\N v  3 .\N w  3 .\N x  3 .\N y  3 .\N z  3 .\N {  3 .\N |  3 .\N }  3 .\N ~  3 .\N   3 .\N   3 .\N   3 .\N   3 .\N   3 .\N   3 .\N   3 .\N   3 .\N   3 .\N   3 .\N   3 .\ N   3 . \N   3 .\N   3 .\N   3 .\N   3 .\ N   3 . \$N   3 ~.$\(N   3 }.(\,N   3 {.,\1N   3 z.1\5N   3 y.5\9N   3 w.9\=N   3 v.=\AN   3 u.A\EN   3 t.E\IN   3 s.I\MN   3 r.M\RN   3 p.R\VN   3 o.V\ZN   3 n.Z\^N   3 m.^\bN   3 l.b\fN   3 k.f\jN   3 j.j\nN   3 i~.n\sN   3 h}~.s\wN   3 g|}.w\{N   3 f{|.{\N   3 ez{.\N   3 dxz.\N   3 cwy.\N   3 bvw.\N   3 auv.\N   3 `tu.\N   3 _st.\N   3 _rs.\N   3 ^qr.\N   3 ]pq.\N   3 \op.\N   3 [no.\N   3 Zmn.\N   3 Ylm.\N   3 Xkl.\N   3 Wjk.\N   3 Wij.\N   3 Vhi.\T   C ? /\x   0EB EX#Z yvu   yvuN   3 yvN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 y N   3 y N   3 yN   3 yN   3 yN   3 yN   3 y#N   3 y#'N   3 y'+N   3 y+/N   3 y/3N   3 y38N   3 y8<N   3 y<@N   3 y@DN   3 yDHN   3 yHLN   3 yLPN   3 yPTN   3 yTYN   3 yY]N   3 y]aN   3 yaeN   3 yeiN   3 yimN   3 ymqN   3 yquN   3 yuzN   3 yz~N   3 y~N   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 yN   3 }yN   3 |yN   3 {yN   3 yyN   3 xyN   3 wyN   3 uyN   3 tyN   3 syN   3 ryN   3 qyN   3 oyN   3 nyN   3 myN   3 lyN   3 kyN   3 jyN   3 i~yN   3 h}~yN   3 g|}y N   3 f{|y N   3 ez{yN   3 dyzyN   3 cwyyN   3 bvxyN   3 auwy#N   3 auvy#'N   3 `tuy'+N   3 _sty+/N   3 ^rsy/3N   3 ^qry37N   3 ]pqy7@N   3 [noy@HN   3 ZmnyHPN   3 YlmyPXN   3 XklyXaN   3 WjkyaiN   3 WijyiqN !  3 VhiyquT "  C ? }vsx #  0FF  FX#Z .v\u $  .v\uN %  3 .v\N &  3 .\N '  3 .\N (  3 .\N )  3 .\N *  3 .\N +  3 .\N ,  3 .\N -  3 .\N .  3 .\N /  3 .\N 0  3 .\N 1  3 .\N 2  3 .\N 3  3 .\N 4  3 .\N 5  3 .\N 6  3 .\N 7  3 .\N 8  3 .\N 9  3 .\N :  3 .\ N ;  3 . \N <  3 .\N =  3 .\N >  3 .\N ?  3 .\N @  3 .\#N A  3 .#\'N B  3 .'\+N C  3 .+\/N D  3 ./\3N E  3 .3\8N F  3 .8\<N G  3 .<\@N H  3 .@\DN I  3 .D\HN J  3 .H\LN K  3 .L\PN L  3 .P\TN M  3 .T\YN N  3 .Y\]N O  3 .]\aN P  3 .a\eN Q  3 .e\iN R  3 .i\mN S  3 .m\qN T  3 .q\uN U  3 .u\zN V  3 .z\~N W  3 .~\N X  3 .\N Y  3 .\N Z  3 .\N [  3 .\N \  3 .\N ]  3 .\N ^  3 .\N _  3 .\N `  3 .\N a  3 .\N b  3 .\N c  3 .\N d  3 .\N e  3 }.\N f  3 |.\N g  3 {.\N h  3 y.\N i  3 x.\N j  3 w.\N k  3 u.\N l  3 t.\N m  3 s.\N n  3 r.\N o  3 q.\N p  3 o.\N q  3 n.\N r  3 m.\N s  3 l.\N t  3 k.\N u  3 j.\N v  3 i~.\N w  3 h}~.\N x  3 g|}.\ N y  3 f{|. \N z  3 ez{.\N {  3 dyz.\N |  3 cwy.\N }  3 bvx.\N ~  3 auw.\#N   3 auv.#\'N   3 `tu.'\+N   3 _st.+\/N   3 ^rs./\3N   3 ^qr.3\7N   3 ]pq.7\@N   3 [no.@\HN   3 Zmn.H\PN   3 Ylm.P\XN   3 Xkl.X\aN   3 Wjk.a\iN   3 Wij.i\qN   3 Vhi.q\uT   C ? /v\tx   0G  GX#Z v!u   v!uN   3 v !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  ! N   3   !N   3  !N   3  !N   3  !N   3  !N   3  !#N   3 # !'N   3 ' !+N   3 + !/N   3 / !3N   3 3 !8N   3 8 !<N   3 < !@N   3 @ !DN   3 D !HN   3 H !LN   3 L !PN   3 P !TN   3 T !YN   3 Y !]N   3 ] !aN   3 a !eN   3 e !iN   3 i !mN   3 m !qN   3 q !uN   3 u !zN   3 z !~N   3 ~ !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3  !N   3 } !N   3 | !N   3 { !N   3 y !N   3 x !N   3 w !N   3 u !N   3 t !N   3 s !N   3 r !N   3 q !N   3 o !N   3 n !N   3 m !N   3 l !N   3 k !N   3 j !N   3 i~ !N   3 h}~ !N   3 g|} ! N   3 f{|  !N   3 ez{ !N   3 dyz !N   3 cwy !N   3 bvx !N   3 auw !#N   3 auv# !'N   3 `tu' !+N   3 _st+ !/N   3 ^rs/ !3N   3 ^qr3 !7N   3 ]pq7 !@N   3 [no@ !HN   3 ZmnH !PN   3 YlmP !XN   3 XklX !aN   3 Wjka !iN   3 Wiji !qN   3 Vhiq !uT   C ? v!tx   0HE  H   # BCDE$F0  REsBXs@`@`v   # BgCDE$F0  @@V&V&@gD3DgD@`@`Iv   # BVCDE$F0   ZVZ@`@`)vx   0IS} Ix   0JS J> !  J3  s"*? ` K c $X99?!  L B!CDEDF.IGF`GJ  !!`!F! J G@    `~ M 6"M'b\ " N BCDEDF.IIJ0I!{0J{!@    ` "~ O 6#O]^[ # P B 999>EX XQ LLLQXk!'''!kd ___dk~-4:::4-~wrrrw~@GMMMG@S Z ` ` ` Z S  f m s s s m f         y      y                                              ))"")< <50005<O   OHC CCHOb b[V VV[bu$+1 11+$uni iinu7>D DD>7| ||JQW WWQJ ]dj jjd] pw} }}wp   x|@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `   V # D B:C 5DEF ww::w:/!w !/: ::?::.!?1&!&/&:1:?9e99. eWL L.L9W9e999. }r r.r9}999 9 -( ( (    .998 85 8C -N N N C 5     - 8 8 8 8[8i-ttti[    - 8 8 8#88,#  - 88#7I77,I;00,07;7I7o77,oaVV,V7a7o777+   ||,|77666'+222'+6666?6M+XXXM?+6666e6s*~~~se+665-55*-*55-5S 5!5!*!!!!!S E : : *: 5E 5S 5y"5#5#)#####y"k"`"`"*`"5k"5y"4$4%4 &)&& & &%$$$$)$4$4$4&4#(41()<(<( <(1(#(&& &&)&4&4&4(4I*3W*(b*b* b*W*I*(( (()(4(4(3+3o,3},(,, ,},o,++ **(*3+3+37-3.3.(.. ...7-)- --(-3)-37-3]/2020'00 000]/O/ D/D/(D/3O/3]/212222'22 2221u1 j1j1'j12u121232525' 5 5 55533 33'32323x|@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `   W # D B2C 5DEF ww22w2' w '2 22?22' ?1 &&'&212?2e22' eW LL'L2W2e222' } rr'r2}222 2 '( ( (    '222 25 2C 'N N N C 5  ' 2 2 2 2[2i'tt ti[  ' 2 2 2#22' #  ' 22#2I22' I; 00'02;2I2o22' oa VV'V2a2o222'    ||'|22222''22 2' '2222?2M'XX XM? '2222e2s'~~ ~se '222-22' - '22-2S 2!2!'!! !!!S E : : ': 2E 2S 2y"2#2#'## ###y"k" `"`"'`"2k"2y"2$2%2 &'&& & &%$$ $$'$2$2$2&2#(21('<(<( <(1(#(&& &&'&2&2&2(2I*2W*'b*b* b*W*I*(( (('(2(2(2+2o,2},',, ,},o,++ **'*2+2+27-2.2.'.. ...7-)- --'-2)-27-2]/2020'00 000]/O/ D/D/'D/2O/2]/212222'22 2221u1 j1j1'j12u121232525' 5 5 55533 33'32323x|@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `  2 X # B&CDELF8 !5%H%V%V%V%H%5%!!$&$$@    `@`e N~ Y 6&Y 0 &NB Z 3 I $( %NB [ 3 I( $) d2 \ # By)CDELF8 X)N;,,,;NX)j)y)y)y)j)X)@    `@`l:/ 2 ] # BLCDELF8 !KKKKKKK!!\KL\K\K@    `@`eNB ^ 3 IDNB _ 3 IDE32 ` # BOCDELF8 ON;---;NOOOOOOO@    `@`lK]2 a # B9CDELF8 S9S 9S9Z9d9m 9t9tttmdZSS89d88@    `@`eH2 b # BCDELF8 SSS\Sd[dddm\uSuuumd[SS2d22@    `@` @ ~ c 6'c !!D  '~ d 6(d LYe dc?bbVH;001?11<&J&X&c1c?ae``UG9../e/W:LHLVLaWae_^^SE7,,--}8rFrTr_}_]\ \ Q( C( 5( * * ++7DR]]\ [5 ZC ON AN 4N (C )5 * * 5 C Q \ \ Z Y[YiMt@t2t'i'[( ( 3 A O Z Z X#WWL>0%%&#&1 ? M XX#VIUUJ<.##$I$;00=0K0V;VIUoSSH:-!!#o#a.V<VIVUaUoSRRF 9 +   !!,|:|H|SSQPP'E272)2'*8FQQON?NMCX5X'XM?)6DOOMLeLsA~3~%~se'5BNML-KK?2$-%3ALL-JS I!I!>!0!"!!!S E #: 1: ?: JE JS Hy"G#G#<#.# ###y"k"!`"/`"=`"Hk"Hy"F$E%E &:&,&& &%$$ $-$;$F$F$E&D#(C1(8<(*<(<(1(#(&&&,&:&E&E&C(BI*BW*6b*)b*b*W*I*(((*(8(C(C(A+@o,@},5,',,},o,++*(*6*A+A+?7->.>.3.%.. . . 7- )--&-4-?)-?7->]/<0<010#00 0 0 ]/ O/D/%D/2D/>O/>]/<1;2;2/2"22 2 2 1 u1j1#j11j1<u1<1:39595. 5 5 555333!3/3:3:3857-77;7,F7F7F7;7-75555-58585775S95a9*l9l9l9a9S97777+777775:4y;4;(;; ;;y;: :::*:5 :5:3A<2<2<'<< <<<A<3< (<(<((<33<3A<@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `  | # BkCDEFnqk iid]VPPR RX_fkk hggaZSNNOOU\chhf2dd^WPKKM2M+R&Y&`&f+f2cEaa[TMHHJEJ>O9V9]9c>cE`X^^XQJEEGXGQLLSLZL`Q`X]k[[!U'N'G'B!BDkDdJ_P_W_]d]kZ~X-X4R:L:E:?4?-A~AwGrNrUrZwZ~WU@UGPMIMBM<G<@>>DKRWWTRS RZ M` F` ?` 9Z 9S ;;AHOTTQ Of Om Js Cs <s 6m 6f 8 8 > E L Q Q N My M G @ 9 4 4y 5 5 ; B I N N L J J D = 6 1 1 3 3 8 ? F L L I G G A : 3 . . 0 0 5 < C I I FDD>70++-- 2 9 @ F FCAA;4-((**0 6 = CC@)>>82+%%')'"-4;@"@)=<;;6/(""$<$5*/1080=5=<:O883 , % !O!H'B.C5C:H:O7b550)"b[$U+V2V7[7b4u3$3+-1&00+$un!h(i/i4n4u2070>*D#CC>7{%{,|22/-J-Q'W VVQJ")//,*]*d$jiid]&,,)'p'w!}||wp#))&$$    !&&#!!  ##             @    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `#  } # BC=DEFnqww ??1&&&2?eeWLLLXe}rrr}  ( ( (    5 C N N N C 5 [ittth[ #yy}#}   #I~sswIw;000;Ioxmmqoqa}VVVao  s hhklw|||'2{2m2b&bffq?MXuXgX\L\>``kyes}~o~a~VrVdZZfs-wi\PQT,T`n{-S }!}!q!d!V!K!K!OR OE Z: h: v: E S {y"w#w#l#^#P#E#E#Ix"Ik"T_"b`"p`"{k"{y"u$q%q &f&X&J&? &?%C$C$N$\$j$u$u$o&l#(k1(`<(R<(D;(90(:"(=&=&I&V&d&o&o&i(fI*fW*Zb*Lb*?a*4V*4H*7(8(C(Q(^(j(i(d+`o,`},U,G,9,.|,.n,2+2+=*K*Y*d+d+^7-Z.Z.O.A.3.(.(.,6-,(-7-E-S-^)-^7-X]/T0T0I0;0-0"0"0&\/&N/2C/?C/MD/XO/X]/R1O2O2C252(222 1 t1,i1:i1Gj1Ru1R1M3I5I5= 505"55533&343B3M3M3G5C-7C:78E7*E7E7:7,755 5.5<5G5G5A7=S9=`92k9$k9k9 `9 R9777(767A7A7;:8y;7;,;;;;x; : ::":0:; :;:5A<2=2=&== ===@<2<'<'<+'<63<5A<@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `  ~ # BC=DEFnqww ??1&&&2?eeWLLLXe}rrr}  ( ( (    5 C N N N ~C 5 [itttyiy[} } #stw#w   #IynnrIr;}000;IothilolaxVVVao | n ccggr|||'2v2i2]&^aamz?MXqXcXXLX?\\guesy~k~^~SrSeVVbo}-tfXMMQ,Q\jx-}S z!z!n!`!S!H!H!KR KE W: d: r: }E }S xy"t#t#i#[#M#B#B#Fx"Fk"Q`"_`"m`"xk"xy"r$o%o &c&U&H&= &=%@$@$L$Y$g$r$r$m&i#(i1(^<(P<(B;(70(7"(;&;&F&T&b&m&m&g(dI*dW*Xb*Jb*=a*2V*2H*5(5(A(N(\(g(g(b+^o,^},S,E,7,,|,,n,0+0+;*I*W*b+b+\7-Y.Y.M.@.2.'.'.*6-*(-6-D-Q-\)-\7-W]/S0S0H0:0,0!0!0%\/%N/0C/>D/LD/WO/W]/Q1N2N2B252'2221t1+i19i1Fj1Qu1Q1L3H5H5= 5/5!55533%333A3L3L3F5C-7C:77F7*E7E7:7,755 5.5;5F5F5A7=S9=`92l9$k9k9 `9 R9777(767A7A7;:8y;8;,;;;;x; : ::#:0:; :;:6A<2=2='== ===@<2<'<'<+(<63<6A<@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `H p 2  # B&CDELF8q!5%H%V%V%V%H%5%!!$&$$@    `@` 4k ~  63  3~  64 *  42  # BCDELF8qTGTPTW[WdWnPuGuuund[TT%d%%@    `@`uNB  3  D O E 2  # B%CDELF8q%N;,,,;N%%%%%%%@    `@`p U 2  # B%CDELF8q%M;,,,;M%%%%%%%@    `@`  E ~  65  5~  66  6HB  # !/ZHB B # !/M Zk HB B # !/D ~  67K _ 7  BCDEDF.IJ0I z0Jz @    `#~  68U!G 8   # BCDEFnq       2 2+ &&&+2E E> 999>EX XQ LLLQXk!'' '!kd ___dk~-4:: :4-~w rrrw~@GMM MG@ S Z ` ` ` Z S   f m s s s m f         y      y                                              ))"")<<50005<O   OHCCCHObb[VVV[bu$+111+$uniiinu7>DDD>7|||JQW WWQJ]dj jjd] pw} }}wp                 @    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `@    `  2  # B&CDELF8q!%%%%%%%!!V%&V%V%@    `@`Z V~  69  9HB B # !/# ~  6:q G  :~  6;5 q  ;NB  3 1#NB  3 NB  3 3#4#~  6<]: <HB  # !/  2  # BCDELF8qotttmd[SSoSxS[dmxtotd@    `@`2  # B,%CDELF8qS$S$S$[$d$m$u$uuumd[SSd$,%dd$d$@    `@`  2  # B CDELF8quuund[TTTT [ d nuud@    `@`$ 1 2  # BCDELF8qtttmdZSSSSZdmttd@    `@` J ~  6=22 =~  6>   >~  6?C>R  ?~  6@m   @NB  3  D  2  # BCDELF8q!?Q```Q?!!@    `@` e C   A)\ :3  s"*?` ; c $X99? A)\ < HxAxAvd @" `-K  = HxAxAvd @"  A)}   > HxAxAvd @"  `K  ? HxAxAvd @"  `A)K B @ 6D?"0@NNN?N##B A 6D?"0@NNN?N-# #B B 6D?"0@NNN?N`y ``n U # 3"n  c $X99?"`UZ K^  K^T2  C 3K^T2  C SK^Z ` u  ` uT2  C 3` uT2  C S` uZ  N c   N cT2  C 3 N cT2  C S N cZ # 8   # 8 T2  C 3# 8 T2  C S# 8 Z  > T    > T T2  C 3 > T T2  C S > T   # BhCMDE$F0q L: ZhM&Z@`@`&`  # BCDE$F0q 3#PP@`@`."#   # BCkDE$F0q g>[Q l!kB`l!@`@`P    # BCDE$F0q  ll@`@`t V Z : N   : N T2  C 3: N T2  C S: N Z   T2  C 3T2  C S  # B8CDE$F0q v+9v$8&S$@`@`N  g  # BpCDE$F0q p.ZpKyK@`@`7 Vx  0o+ x  0x x  0. A t x  0 I  x  0 O  x  0  $ x  0B U.  b  # "` b *p5 # "n  c $X99?"`*p5N  3 A*T3h  3 "`4T3(p5 rn +)6 # 3"n  c $X99?"`+)6JZ ^/#1  ^/#1N  3 ^/#3/N  3 ^3/#B/N  3 ^B/#Y/N  3 ^Y/#p/N  3 ^p/#{/N  3 ^{/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#/N  3 ^/#0N  3 ^0# 0N  3 ^ 0#0N  3 ^0#0N  3 ^0#!0N  3 ^!0#$0N  3 ^$0#,0N  3 ^,0#30N  3 ^30#;0N  3 ^;0#?0N  3 ^?0#C0N  3 ^C0#F0N  3 ^F0#J0N  3 ^J0#N0N  3 ^N0#U0N  3 |^U0#]0N  3 z^]0#a0N  3 y^a0#h0N  3 v^h0#p0N  3 u^p0#w0N  3 r^w0#0N  3 p^0#0N  3 o^0#0N  3 m^0#0N  3 k^0#0N  3 i~^0#0N  3 h}~^0#0N  3 f{|^0#0N  3 dyz^0#0N  3 bvx^0#0N  3 auv^0#0N  3 _st^0#0N  3 ^qr^0#0N  3 \op^0#0N  3 Zmn^0#0N  3 Xkl^0#1N  3 Vhi^1#1  B$CVDEDF.cdVcV"Vz#V$$$d$z#"c@    `_/# 1~  6~/I#2 JZ /1  /1N  3 /3/N   3 3/B/N   3 B/Y/N   3 Y/p/N   3 p/{/N   3 {//N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 //N  3 /0N  3 0 0N   3  00N ! 3 00N " 3 0!0N # 3 !0$0N $ 3 $0,0N % 3 ,030N & 3 30;0N ' 3 ;0?0N ( 3 ?0C0N ) 3 C0F0N * 3 F0J0N + 3 J0N0N , 3 N0U0N - 3 |U0]0N . 3 z]0a0N / 3 ya0h0N 0 3 vh0p0N 1 3 up0w0N 2 3 rw00N 3 3 p00N 4 3 o00N 5 3 m00N 6 3 k00N 7 3 i~00N 8 3 h}~00N 9 3 f{|00N : 3 dyz00N ; 3 bvx00N < 3 auv00N = 3 _st00N > 3 ^qr00N ? 3 \op00N @ 3 Zmn00N A 3 Xkl01N B 3 Vhi11 C BCVDEDF.ddVdVfV+Vd+fd@    `/ 1~ D 6D_~/2 Z 2!4 E 2!4N F 3 2!3N G 3 3!3N H 3 3!-3N I 3 -3!C3N J 3 C3!N3N K 3 N3!V3N L 3 V3!e3N M 3 e3!m3N N 3 m3!t3N O 3 t3!|3N P 3 |3!3N Q 3 3!3N R 3 3!3N S 3 3!3N T 3 3!3N U 3 3!3N V 3 3!3N W 3 3!3N X 3 3!3N Y 3 3!3N Z 3 3!3N [ 3 3!3N \ 3 3!3N ] 3 3!3N ^ 3 3!3N _ 3 3!3N ` 3 3!3N a 3 3!3N b 3 3!4N c 3 4!4N d 3 4!4N e 3 4!4N f 3 4!4N g 3 4!4N h 3 4!!4N i 3 !4!)4N j 3 |)4!04N k 3 z04!84N l 3 x84!<4N m 3 v<4!C4N n 3 tC4!K4N o 3 rK4!R4N p 3 pR4!Z4N q 3 nZ4!^4N r 3 m^4!e4N s 3 ke4!m4N t 3 i~m4!t4N u 3 g|}t4!|4N v 3 ez{|4!4N w 3 cxy4!4N x 3 bvx4!4N y 3 auv4!4N z 3 _st4!4N { 3 ^qr4!4N | 3 \op4!4N } 3 Zmn4!4N ~ 3 Xkl4!4N  3 Vhi4!4  BCUDEDF.ccUcUfU*Uc*fc@    `2!4~  6[Q3 5 JZ %/)1  %/)1N  3 %/)3/N  3 %3/)B/N  3 %B/)Y/N  3 %Y/)p/N  3 %p/){/N  3 %{/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)/N  3 %/)0N  3 %0) 0N  3 % 0)0N  3 %0)0N  3 %0)!0N  3 %!0)$0N  3 %$0),0N  3 %,0)30N  3 %30);0N  3 %;0)?0N  3 %?0)C0N  3 %C0)F0N  3 %F0)J0N  3 %J0)N0N  3 %N0)U0N  3 |%U0)]0N  3 z%]0)a0N  3 y%a0)h0N  3 v%h0)p0N  3 u%p0)w0N  3 r%w0)0N  3 p%0)0N  3 o%0)0N  3 m%0)0N  3 k%0)0N  3 i~%0)0N  3 h}~%0)0N  3 f{|%0)0N  3 dyz%0)0N  3 bvx%0)0N  3 auv%0)0N  3 _st%0)0N  3 ^qr%0)0N  3 \op%0)0N  3 Zmn%0)0N  3 Xkl%0)1N  3 Vhi%1)1  BCVDEDF.ddVdVgV+Vd+gd@    `%/) 1~  6V&~/(2 JZ +!-  +!-N  3 +!+N  3 +!+N  3 +!+N  3 +!+N  3 +!,N  3 ,! ,N  3  ,!,N  3 ,! ,N  3  ,!',N  3 ',!3,N  3 3,!:,N  3 :,!B,N  3 B,!E,N  3 E,!M,N  3 M,!U,N  3 U,!\,N  3 \,!d,N  3 d,!k,N  3 k,!o,N  3 o,!v,N  3 v,!~,N  3 ~,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ,!,N  3 ~,!,N  3 {,!,N  3 y,!,N  3 w,!,N  3 u,!,N  3 s,!-N  3 q-! -N  3 o -!-N  3 m-!-N  3 k-! -N  3 i~ -!$-N  3 h}~$-!+-N  3 f{|+-!3-N  3 dyz3-!:-N  3 bwx:-!B-N  3 auvB-!M-N  3 _stM-!U-N  3 ^qrU-!`-N  3 \op`-!h-N  3 Zmnh-!w-N  3 Xklw-!-N  3 Vhi-!-  BCVDEDF.cdVcVfV*Vd*fc@    `+!-~  6[, . $  # BC_DE4FB  o7O7O(o(o7_0___^_0^^_ @`@`@`$/%Q0$  # B^CDE4FB  (o(O7O7o(o^`/`^`_/^__ @`@`@`\,12$  # B^CdDE4FB  7O7((O7O_/^__^/d^ @`@`@`\-/$  # BC_DE4FB  o7O7O(o(o7_0___^_0^^_ @`@`@`/aQ0h  3  "`4(6  v*b !4 # "n  c $X99?"`!4T2  C u" /Z Vu""  Vu""T2  C Vu""T2  C Vu""Z B$>$   B$>$T2   C B$>$T2   C B$>$Z r&&   r&&T2   C r&&T2  C r&&Z rr++  rr++T2  C rr++T2  C rr++Z <//  <//T2  C <//T2  C <//Z  ." /   ." /T2  C  ." /T2  C  ." /Z T - -  T - -T2  C T - -T2  C T - -Z *" *  *" *T2  C *" *T2  C *" *Z s(" (  s(" (T2  C s(" (T2   C s(" (Z n % & ! n % &T2 " C n % &T2 # C n % & $ # nBuC0DEF AA,vl&g_dejs&MrlY&(8tH alw`xq1X<][YX=<;9#n:U  ?eSuA0Sy|@   `@`~$& % # BCDEF AA|;e6zYf|TF;3 .,.P/b2t5;I\r$S #5A[Wu4wP%diI72 {eO',>fSAkF[|kFkF@`@`-&+ & # B'CDEF  EE%3/..0U49@IWVduj2 8Fl X^"PhT/Dil47?q(JfXy`J7O( R'%3Y@`@`d+/J ' # BC}DEdF8 YYw _@tx^eFvO},h5l!e*gddeeqp)<J{L[e& `iCS%!8;>AVY\_(*,/MPSV}1v` }wK(a6K(@       `@`. -/ ( # B-CDE<F OOOO' &>{R_f-e^O>SM9 C0Vz+u\HU}]0lH@G    (g)r-|3:ciow %n--:&$&:`\OO " @      `@` , . ) # FBr C DEF ;; P }ux%bb= v7@>ZYB+<Al5XmqtwZ! )B [ i q r c B    <Vq<Vqt@  `@`* #-: * # BCw DEF 11\cZP0BCCxGSM -5+PY kls S\,>f^qw \uad@ `@` v( * + # BC DEF EE8  0e 3   E  4}<  cv%%&JO`=n'!sJ_3qMqZ&fO b O  w3 q  y b E 8 @   `@` % (x , 0 #$%  x - 0 y&(  x . 0 y+-  x / 0 !#=%  x 0 0^ / 1 x 1 0. 0 x 2 0v8+ T- x 3 0$] ' 2 4 # BdC DELF8 _je[SLJOwC IS[b d_ -@    `@`>##T 5 C Tw# %x 6 0#\ % x 7 0"J$ x 8 0 ?0.[2 h 9 3 "`81PT3 B C BDo?"0@NNN?NJ D # A"`\ E 3  "`  HB F C Df G C (AWelcome"` d H C &ASearch"` \ I 3 !"`  !B S  ?e}Y|}߮,Z34,=Eh>P hT i#QT"E TUT:! tC(tE|#6tF##tD TG7GTH$ ;!lTI  tJ! t qF#t*!t WԁWB#W W %W yWdW l֯W|F W'zW,WzW 4^??E$$$pBlFlF?   ^DJJ$$$uBqFqF? :*urn:schemas-microsoft-com:office:smarttagsStreet;*urn:schemas-microsoft-com:office:smarttagsaddressh*urn:schemas-microsoft-com:office:smarttagsCity0http://www.5iamas-microsoft-com:office:smarttagsV *urn:schemas-microsoft-com:office:smarttagsplacehttp://www.5iantlavalamp.com/Z *urn:schemas-microsoft-com:office:smarttags PlaceNamehttp://www.5iantlavalamp.com/Z *urn:schemas-microsoft-com:office:smarttags PlaceTypehttp://www.5iantlavalamp.com/ ,'J  JNkqO]$QQVVWW]]]]B^J^r`z`|``^aha3<26w $-נ nr~lu"&gq7=$.imW] NR  DOsy)3~ao* X%Z%..XXhhEiNiiijjYp[pdpfp7r?rrrrrrsssu/u} ~'~5~t~w~~~~~.\hlwƂՂ߂ *o~ǃ"ȅمXĕ?NYc%ň҈!&1alډsԊG]`t?K_qʌԌߌO]Rafzΐאˑґnw=Mdntԕߕ(ft,1?U]!z7ESa)7N\&4ev)1Apx:A6FRZ "+z Ua DPepdtny' nz+ =   .0#hn.@OYou\k%01@ {6IOYn}qt) 1 H$N$%%1&2&8&9&=&>&L&M&`&a&&&&'''''''))==Y@g@A AlByBBBDDKDXDDD]EjEEFGGvHHHHgXnXXXZZZ[\\N]U]ggRs^s,9ŨШ]jɾsu BIKR-4&-_fS^ # !-858BBqKKSSTTTTVV]^1`I`aaQbibcdeehhXyayrw<D° GRغLT"1*2 c3m355@@BANAWA_AiAoAAAAAAAB B+C0C9CACJCRC[CaCDEEEEEEEF FyFFG"GJHQHHHII+J.JmKqKXX_edeggp#pyyZ}a}f}n}NWӒے;FJZ\]̦Ҧ.;ET`k&(*,<?)8+8::HHPPTTZZh\j\bb kkgll>rHrtth}q}=G )08Ҕʜ.3*.<BCK[-j-22r9w9<<y>>2I9ILL[[EgKgo"ooovvvvÝЪѪ)5  w~8=  % ADekCFrx %\bgn%37@F%1DI =?{VX15hnFO]fuz########9$A$$$&&(&+&H&K&&&&&&&&&''F'Q'p'v'''''0*7*8-?-11`5c588y88<<>BABGGJJR RERLRRS$T)TUUV#VEVGVVVVVgXoXEYNYZ Z\\sjvjkkssvvwwƄτ؊ڊem<CȼѼDKxqu,d^$fh_c  `e!!3R7RTTQbjbqqhrjrvv||}}U}Y}}}}}Vf0:3=MW'+KW8@}die"i"##%%e(m(66::@@WAaACC>E?EXFhFw]]$i.ijj!k:kllǂ΂΄ф;FJZ\];>Ҧ$&,`kqw&(<?3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333378r9:HI"PP?STY,[h\\a@HIKLZ[fgno~tSwFȃQ^6AJ&FJlX#Xr  !AEI/3;@Q  w{qwehDFu###d$g$w%&D&H&&&&&j'p'')*,.g11`55M68;=AB GrHIKQfTUWWJZZz]uilrpsuCv?wx8˃{؊!'T(eJ(/F5,f '     EZ!="3RoRRTT_0cqrkvv|}Ƣ0?0U6m`0 "#%k&(I4!78Y:@@@AA)CCDXEDFjF[]5f`ijlșbU699;FJZ]<?\]?+P7z"vSvcyq>J!}Q̀1s^$D +)ZW-Pap3x2Q 51dee=^OLSz}t [hD&m2ql\ u-kEurP|}4h ^`o(hH) ^`hH.^`o() ^`hH. pp^p`hH. @ L@ ^@ `LhH. ^`hH. ^`hH. L^`LhH.^`o() ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`o() ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.00^0`o() ^`hH. L^`LhH. ^`hH. pp^p`hH. @ L@ ^@ `LhH. ^`hH. ^`hH. L^`LhH.^`o() ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`o() ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.hh^h`o(hh^h`o(.0^`0o(..88^8`o(... 88^8`o( .... `^``o( ..... `^``o( ...... ^`o(....... ^`o(........^`o()^`OJPJQJ^Jo(- pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.h ^`hH)h pp^p`hH.h @ L@ ^@ `LhH.h ^`hH.h ^`hH.h L^`LhH.h ^`hH.h PP^P`hH.h  L ^ `LhH.^`OJPJQJ^Jo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(^`OJPJQJ^Jo(^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hH^`o() ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`OJPJQJ^Jo(^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hH^`o() ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.88^8`o() ^`hH.  L ^ `LhH.   ^ `hH. xx^x`hH. HLH^H`LhH. ^`hH. ^`hH. L^`LhH.88^8`o() ^`hH.  L ^ `LhH.   ^ `hH. xx^x`hH. HLH^H`LhH. ^`hH. ^`hH. L^`LhH. hh^h`o(hH.P^`P5CJaJhH.. ^`hH... x^`xhH....  ^`hH .....  X@ ^ `XhH ......  ^ `hH.......  8x^`8hH........  `H^``hH......... +)1s^$vSv-D&mEut [2q uyqLS+P7!}Qe=Q 5p3|}  .                        l                           5                                                             l*Z                Iy]ZOzC^0^^^^^E_F_K____{`|``>a?aDaaa@eNebeve{eeeeeeeeebvcvgvkvovsvwv{vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwww!w'w.w6w>w?wCwEwHwLwRwYw`whwrwswwwyw|wwwwwwwwxxxxxxxxxxxxxxxxxxxyy yyyyy$y+y2y9y:y>yByHyNyUy\ydylyvywy{yyyyyyyyyyyyyyyyyyyyyz zzz z*z5zAzBzFzJzPzWz_ziztzzzzzzzzzzzzzzzzzzz{ {{{{{!{%{+{1{7{>{E{L{T{U{Y{]{c{i{p{w{{{{{{{{{{{{{{{{{{{{{|||| |&|,|3|;|E|P|[|g|h|l|r|y||||||||2}C}D}J}V}W}^}}}}}}}~~~&~'~6~~~~klxނ߂+VWȃPQZDžȅڅWXf͆&'XmntxyĈňӈ`amىډ_`u>?Lތ  NO^QRbȏef{ߐ&'-9:@ʑˑӑmnxޒߒ<=N67=<=GFS]^`bdfhjlnpqeu-:[\avjku Z[`j$%/;78HW!01;L%&0C [\a{"#(=Z[`u  !"1E(TUgU^copy9:BIddddd eee1e]eiejekeeee*f+fVffffff*g6g7g8gPgghyhzhhiiii.i/iIiuijll&lLllll6mmmmmmn)nnnnn o;op/q0qRqq2rrrrsstttttuCvgxhx|xxAyByCyyyyyyzlzxzyzzzz4{|{m|n||-}p} ~~1~H~I~S~d~s~|~}~~~~~~R^_`,  Tp,8ʃ˃o{ RZe0<ˆ݈̈ ҉@z{Њ؊!vw \JNZǏUVq~ѐҐ!-ǑȑR^EFԓºκ!$%'J'(*e/~]^`~$)124:?GHJPV^_agltuw}'(*05=>@FLTUW]cklnty #+,'01AJKR\]FHOalmot  <EFGHfnopq 2<=?ly&,-./KTUVWu}~)?@BDEGJKMQRTZ[]degpqs}~?@ 9>@UnknownGz Times New Roman5Symbol3& z ArialQTimesNewRoman,Italic9Garamond?5 z Courier New;Wingdings"1h撓LoLo!4d|2QHP?Iy21 Gareth TysonjikP            Oh+'0  4 @ L Xdlt|1Gareth Tyson Normal.dotjik2Microsoft Office Word@@d+@Х*?@Х*?L՜.+,D՜.+,, hp|  o 1 TitleH 8@ _PID_HLINKSAHYD-Ihttp://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864Z CA*!http://www.epic.org/privacy/drm/Z EJ'9http://www.dlib.org/dlib/june01/iannella/06iannella.htmlZ T$2http://www.joeclark.org/access/resources/DRM.htmlZ %!!http://en.wikipedia.org/wiki/P2pUsage_of_the_term http://www.clip2.com/Z YDIhttp://articles.findarticles.com/p/articles/mi_m0HWW/is_44_3/ai_66678864Z Uhttp://www.kazaa.com/Z EJ9http://www.dlib.org/dlib/june01/iannella/06iannella.htmlZ CA!http://www.epic.org/privacy/drm/Z T2http://www.joeclark.org/access/resources/DRM.htmlZ * 8http://firstmonday.org/issues/issue5_10/adar/index.htmlZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 : ; < = > ? @ 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 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p r s t u v w x z { | } ~  Root Entry FPi*? Data ?:1Table& WordDocumenty SummaryInformation(q DocumentSummaryInformation8y CompObjq  FMicrosoft Office Word Document MSWordDocWord.Document.89q