ࡱ> i` q5bjbj}} p<$?$Pn$a R:@( mi<$"hy$ E/>mW c #(k  E0"F z;!M$% <a $$H"$xZ"EEEEEEEEEEa EEEE4G{C4{  The Sloan Digital Sky Survey Science Archive Migrating a Multi-Terabyte Astronomical Archive from Object to Relational DBMS Aniruddha R. Thakar Alexander S. Szalay The Johns Hopkins University Peter Z. Kunszt CERN Jim Gray Microsoft Research Version #3  TIME \@ "MMMM d, yyyy" May 23, 2003 Abstract The Sloan Digital Sky Survey Science Archive is the first in a series of multi-Terabyte digital archives in Astronomy and other data-intensive sciences. To facilitate data mining in the SDSS archive, we adapted a commercial database engine and built specialized tools on top of it. Originally we chose an object-oriented database management system due to its data organization capabilities, platform independence, query performance and conceptual fit to the data. However, after using the object database for the first couple of years of the project, it soon began to fall short in terms of its query support and data mining performance. This was as much due to the inability of the database vendor to respond our demands for features and bug fixes as it was due to their failure to keep up with the rapid improvements in hardware performance, particularly faster RAID disk systems. In the end, we were forced to abandon the object database and migrate our data to a relational database. We describe below the technical issues that we faced with the object database and how and why we migrated to relational technology. Introduction The advent of digital archives, enabled by quantum leaps in the technology to publish, distribute and mine data over the Internet, has given rise to a data avalanche in many branches of science and engineering. The Human Genome Project and the Large Hadron Collider are two examples of very large scientific datasets coming online in the biological and particle physics communities respectively. Astronomy is no exception, and is perhaps more deluged by a flood of new data from current and proposed sky surveys than any other science. In this age of multi-Terabyte scientific archives, scientists need to share the common lessons from different disciplines to make the most of the opportunities available, and to avoid being overwhelmed by the data avalanche. The Sloan Digital Sky Survey (SDSS) is a multi-institution project to map about half of the northern sky in five wavelength bands from ultraviolet to infrared (see  HYPERLINK "http://www.sdss.org/" http://www.sdss.org/). When completed (2005), the survey is expected to image over 200 million objects and collect spectra (redshifts) for the brightest 1 million galaxies among these. The SDSS will revolutionize astronomy in a number of ways, but most significantly it will dwarf current astronomical databases in terms of its size and scope. The raw data is expected to exceed 40 Terabytes (TB) and the resulting archive available for scientific research (object catalog) will be 2-3 TB in size. The survey's information content will be larger than the entire text contained in the US Library of Congress. A detailed description of the SDSS project, including its technological achievements and its goals, appeared in a previous issue [1]. Here we concentrate on the SDSS Science Archive, which will be the final repository of the calibrated data produced by the survey. The Science Archive will be two databases resulting from the survey a Target database holding the catalogs used for spectroscopic targeting, and the Best database holding the catalogs generated by the latest (and best) software pipeline. The raw, uncalibrated pixel data (~ 40TB) will be stored in the Operational Database (OpDB). The data warehouse layers for both the OpDB and the Science Archive are commercial Database Management Systems (DBMSs). Our initial choice of DBMS was a commercial object-oriented database system (OODBMS, hereafter OODB for short). At the time this decision was made (c.1995), the leading OODBs offered significant advantages for the data model and application that we anticipated for the SDSS Science Archive. Object databases have a larger set of available data-types and the ability to use object associations to traverse references (links) between objects instead of expensive table joins in relational models. These considerations directed our choice of a commercial OODB as the data repository. The particular OODB product that we chose was selected based primarily on its superior performance, transparent and configurable data organization, and binary compatibility across a range of platforms. In spite of these anticipated advantages, as the size of our data grew, we began to have problems with the OODB in terms of its performance, support, manageability and missing features. These problems and the lack of support from the vendor grew to the point where we could no longer meet the demands of our user community, and we decided to migrate our data to a relational DBMS (hereafter RDB for short). This conversion from one DBMS to another was a major and traumatic decision for the project, and a lot of work for us. The process is has taken several years and is still not complete there are still vestiges of the OODB in the project. This article describes why and how we made the conversion. We begin with an overview of the SDSS Science Archive, followed by a detailed description of our initial implementation of the SDSS Science Archive on UNIX and Linux-based OODB platforms. Then we list the various problems that we encountered with the DBMS that made the SDSS Science Archive virtually unusable as a data-mining tool for the SDSS collaboration and made our administration tasks impossible. This prompted us to look for an alternative. Section 3 is devoted to the object-oriented implementation of the Science Archive. Section 4 deals with our decision to migrate the Science Archive to a relational database and some of the pros and cons of that decision. That section compares the features of the two approaches. Finally, Section 5 compares the performance of the two implementations and includes the results of performance benchmarks. Science Archive Overview The SDSS data is collected at Apache Point Observatory. This raw data is first calibrated and fed to a pipeline code at Fermi National Laboratory that performs several operations on it before it is stored in the OpDB (OA in Figure 1). After further processing, survey quality data is exported to the Master Science Archive (MSA). The total data is expected to be a few TB in size. It is accessible to the entire astronomical community through specialized tools, and to the public at large through the Internet. The Science Archive is replicated at SDSS member institutions, with the master archive residing at FermiLab. SDSS Data Products Table 1: Science Archive Data ProductsData ProductSizeCommentsObject catalog400 GBparameters of >108 objectsRedshift Catalog1 GBparameters of >106 objectsAtlas Images1.5 TB5 color cutouts of >108 objects Spectra60 GBin a one-dimensional formDerived Catalogs20 GBclusters, QSO absorption lines4x4 Pixel Sky Map 60 GBheavily compressedThe Science Archive contains several data products, including photometric and spectral catalogs, a redshift catalog, images, spectra, links to other catalogs, and documentation. Its data model is optimized for data mining access to the catalogs. Other data products are accessible indirectly. The complete list of data products available through the Science Archive is given in Table 1. The raw data is saved in a tape vault at FermiLab. See Figure 1 for the conceptual SDSS data flow SDSS User Community The Science Archive needs to effectively handle three types of users: Power Users are very knowledgeable users within the astronomical community, with lots of resources. Their research is centered on the archive data. Their usage is likely to be moderate numbers of very complex queries in addition to many statistical queries with large output sizes. General Astronomy Public is a larger community that in aggregate will make frequent, but casual lookup of objects/regions. The archives will help their research, but will probably not be central to it. There will be a large number of small queries and many cross-identification requests. General Public will essentially be browsing a Virtual Telescope and using the data in education (the education projects of the SkyServer have had over a million web hits in the last year and these projects created much of the data-access traffic as students used the site to do the 150 hours of online training .) This public access has surprisingly large appeal and makes the SkyServer among the most popular websites at FermiLab (where it is hosted). The OODB Implementation of the Science Archive We first implemented the Science Archive on an OODB. This section describes that implementation and the tools we built to support it. It also outlines some of the challenges we faced once the implementation was complete. User Access to the Science Archive the SDSS Query Tool Fig. 2 shows the primary functional units of the Science Archive from a users perspective. The astronomical community can access the full data and query facilities of the Science Archive via a user account (username and password). Users start up the Science Archive GUI the SDSS Query Tool sdssQT which is a portable Tcl/Tk client application that communicates with the Science Archive Query Agent over a TCP/IP connection. The sdssQT allows users to open multiple sessions with different Science Archive servers simultaneously and submit multiple queries to each server in parallel. Queries submitted via the sdssQT can direct their output either back to the GUI (default), or they can send the output directly to a file or an analysis tool via a different socket connection. Binary output capability is also available to allow compact output formats. Query Processing in the OODB Queries presented to the OODB are processed by the Science Archive Query Agent, which is an intelligent query server [3, 4] that a) manages user sessions, b) parses, optimizes, analyzes and executes user queries, c) extracts individual object attributes as requested by the user; and d) routes query output to the target specified by the user. The query agent uses a number of modules to perform its various tasks. The agent architecture and the modules are described in detail below. In essence, we built our own database query optimizer in order to access the OODB database. Query Analysis The Science Archive Query Agent first analyzes each query in order to provide a projected query cost-estimate. The query cost is specified in terms of the subset of the database that must be searched and a rough guess of the time that will be required to complete the search. The user can decide, based on the scope and cost of the query, whether the query is worth running or not. The projected query cost is computed by first building a query tree, and then intersecting the query tree with a pre-constructed multi-dimensional spatial index the Hierarchical Triangular Mesh [5,6]. The intersection yields the scope of the query in terms of the number of databases and containers that will be touched by the query. An entire (generally distributed) database is referred to as a federation in the OODB parlance, and each federation consists of many individual database files. Each database is further subdivided hierarchically into containers, pages and slots. The query tree, along with the scope obtained from the intersection, yields a query execution tree, which is essentially the users parsed query in tree form with scope information included in it. The query execution tree is executed by the query engine to return the objects that are selected by the query.  The Science Archive Query Language The Science Archive query language, dubbed SXQL (for SDSS Extended Query Language), is a simple SQL-like language that implements the basic subset of clauses and functions necessary to formulate queries for an astronomy object database. There is no attempt to be OQL (Object Query Language) compliant, although we have borrowed some concepts from OQL. SXQL recognizes the SELECT-FROM-WHERE clause of standard SQL, including nested SELECT statements. It further allows specification of association links in the SELECT, FROM and WHERE sub-clauses. Associations are links to other objects, and can be either to-one (unary) or to-many (n-ary) links. SXQL also recognizes a proximity query syntax, which allows the user to search for all objects that are close to a given object in space. Finally, SXQL contains a number of astronomy-specific macros and has full support for mathematical functions. Tag Objects We defined a class of lightweight objects to speed query searches. The tag class encapsulates the data attributes that are indexed and/or requested most often. Thus, the spatial coordinates and the fluxes are included, as are the status and photometry flags. The tag class is ten times smaller than the whole class and so exhaustive searches run ten times faster. The tag objects were designed to dramatically improve the speed of database searches in the following ways: Indexed Lookup: Encapsulating the most popular data attributes so that indexed lookup can speed up the majority of searches. We develop multi-dimensional spatial and flux indexes [5,6] specifically for this purpose. Caching: The small size of tag objects ensures that many more are loaded into the cache, thereby speeding up the I/O. Specialization: The base tag class, Tag, is further specialized into several subclasses, as shown in Fig. 3. Each tag subclass contains exactly the same data members, but the class hierarchy is a powerful way to narrow searches on tag objects. This is because all the tags are stored in separate OODB containers in each database, and different subclasses of tags are stored in different containers. Hence if a search is initiated on Galaxy tag objects, only the Galaxy container in each database file will be searched. Science Archive Query Agent The autonomous Science Archive Query Agent the Server processes the queries once a query plan has been chosen. It has the following features: it authenticates the user and opens a user session with the GUI client over a socket; it maintains multiple concurrent user sessions; it allows multiple concurrent queries per user session; it routes query results to an Analysis Engine or back to the GUI. The server software is fully multi-threaded [3]. It incorporates multi-threading at several levels (see Fig. 4). At the top level, the server has a main thread that runs forever and listens on a socket to accept new user connections. Each new user session spawns two threads - one each for input and output from/to the GUI. Searches on remote partitions in a distributed federation are executed in parallel remotely by the multi-threaded remote slave servers (Slave). Fig. 3 illustrates the distributed operation of the Query Agent. The Query Engine executes each query, also in multi-threaded mode, and returns a bag of pointers to the selected objects as output. A bag is a generalization of a set in that duplicate members are allowed. The Extractor module is then used to extract selected members from each object in the bag. Query Engine The Engine library module implements the query engine, which executes the SXQL query and returns a bag of matching objects. The input to the Engine is the Query Execution Tree (QET). Each node of QET is either a query or a set operation. The currently supported operations are Union, Intersection, Difference and Distinct. The latter converts a bag to a set. The union is n-ary, intersection and difference are binary, and the distinct operation is unary. We use the OODBs predicate query facility to perform the Science Archive query primitives, although we could not use the OODBs predicate-matching and had to develop our own predicate facility, as described below. Each node of the QET is executed in a separate thread, and an ASAP data push strategy (data is pushed up the tree using stacks as soon as it becomes available from child nodes) ensures rapid response even for long queries. Query Execution Tree An example of a Query Execution Tree is shown in Fig. 6. The nodes in the QET are the Science Archive query primitives and set operations. The QET nodes currently defined are described below. The query nodes map onto the OODB query primitives. Each node returns a bag of object pointers to its parent. All nodes except the leaves have a bag as an input as well as output. The leaf nodes only have an output bag, since they operate directly on a database scope. The different types of query nodes (query primitives) are described below. Scoped Query This uses the OODBs scoped query functionality. A subset of the federation (scope) is specified for the search in the form of a node-list. The predicate is applied only to the selected type of objects. The scoped query is the only type of query primitive that creates a bag of objects from scratch; hence it is a leaf node in the QET. All other types of queries operate on at least one bag, and they form the interior nodes of the QET. Bag Query The Bag Query applies the given predicate to each object in the bag that it obtains from its single child node. Association Query An Association Query allows the selection all objects linked through an association-link to each object in the bag obtained from its single child node. The given predicate is then applied to the selected objects. Proximity Query This is a search for all objects that are nearby in space to a given object. Such a query is very useful and common in astronomy. Overall OODB Science Archive Architecture. Several other modules that play important roles in the Science Archive machinery. Figure 7, cartoons the Science Archive software architecture, including the user interface or client layer, the query support or server layer, and the data warehouse layer. The following sections give a synopsis of these other components Parser, Intersector and Mapper The Parser module is responsible for parsing the SXQL query and converting it to a query tree, which is then passed to the Intersector. The Intersector intersects the query tree with the Spatial and Flux Indexes [5,6]. The Partition Map tells the query agent how the data is distributed in the federation by identifying partitions that are on local and remote partitions. This enables data on different partitions to be searched in parallel. Abstract The Abstract library module provides a run-time abstraction of the Science Archive data model. It allows manipulation of DB objects without knowledge of schema, retrieval of data values, and invocation of methods (if applicable). In effect, it behaves as a runtime metadata server or type manager It provides functions to: specify an objects class using a name or alias translate a name or alias to an actual C++ class identify a particular member of a persistent class and retrieve the following information about it: the kind of member (basic data, array, function, association link) type of value returned by member (int, float, string ) size of array or object member input and output formats return a pointer to the actual object in memory. The Abstract can be used by any application/module that accesses the data model. It is used by the Parser, Intersector, Query Engine and Extractor modules. Extractor The Extractor library module provides the functionality needed to extract individual or groups of attributes (members) of a given object (OID). It therefore executes the SELECT part of the SXQL statement. The members that it can extract include data, function and association-link members. The Extractor retrieves data values as per information provided by the Abstract. It has the required mechanisms for invocation of object methods. Port Daemon The Port Daemon ensures that the GUI and Analysis Engine communicate with the Server on the correct port and also performs process-level authentication. This is also necessary for security. Firewalls are opened only for the port daemons own port and the predetermined port(s) configured for the Server process. Data Loader The Data Loader and is the application that loads new data into the OODB federation from the SDSS data pipeline. The SDSS data flow requires only infrequent updates at well-defined intervals when new data is collected and calibrated. These bulk additions are done offline by the Data Loader. The Server opens the federation in read-only mode and the OODB takes care of concurrency issues. The incoming data format is hard-coded into the Loader module to prevent data mismatches. The latest version of the data loader also incorporates the ability to store different calibrations (versions) of the same data that need to be accessible through the archive. OODBMS Evaluation Advantages Early in the planning of the Science Archive, we decided that an object-oriented data repository would offer significant advantages over a relational or table-based system. In addition to the conceptual attractiveness of a DBMS that stored the data in the same way that astronomers thought about it, there were several other considerations that made the choice of an OODB in general a beneficial one: Object associations allow designers to link objects to each other the OODB allows one-to-one, one-to-many and many-to-many links between objects. These are called associations. Transparent and configurable organization of data on disk the OODB has a multi-layered hierarchical data organization with the data federation at the top level, followed by database, container, page, and slot. A federation is a distributed data repository in general, and can contain thousands of databases. Each level in the hierarchy can contain up to 65k objects of the next level. Thus each database can contain up to 65k containers, and so on. More importantly. Each database is a disk file and the placement of objects into containers is configurable by the database administrator. Binary data compatibility across platforms the OODB database and federation files can be moved across heterogeneous platforms without loss of compatibility. This greatly facilitates the implementation and maintenance of distributed archives. Object methods the OODB was expected to make available the capability to define class methods that could be stored in the database along with the object data. This would essentially be stored procedures, but on a per-class basis. This feature is, however, still not available in the latest version of the OODB, although we are able to provide macros and object functions via our query language. Query tools the OODB community was developing OQL and promising non-procedural access to in a standard query language. Development tools: The OODB products had good tools that dovetailed with our chosen development environment based on C++. Administrative tools: The OODB products had a complete set of utilities for data definition, data security, and data administration. Data replication tools this is the ability to make copies of the data archive and automatically propagate updates to archive mirror sites. The first five features facilitate data-mining performance and make it possible to run efficient queries for needle-in-a-haystack type of searches. OODB Shortcomings Even during the survey commissioning phase, it became clear that the SDSS would be using the OODB in a regime where it had never been tested before. The data mining features and query performance that the SDSS user community demanded from the OODB were not required in the other application domains that the OODB was used in. The problems became progressively worse as our user community got more sophisticated and familiar with the query language. The features and functionality that we found lacking include the following. Inadequate query language The query language supplied with the product falls far short of what was promised 15 years ago. The current version of the OODB supports only Boolean user-defined operators, i.e., the only value returned by the operator is either true or false. These are too restrictive. It would be nice to have more versatile operators that can perform arbitrary complex tasks and return values of arbitrary type. Operators for manipulating individual bits of data members are not supported in query predicates. This functionality would be very useful to us given our extensive use of bit-lists for our indexing. The ability to directly invoke member functions of persistent classes would allow us to store analysis and processing code in the archive itself instead of running these methods manually after retrieving the objects. In general, the query language was inadequate, so we had to build our own atop the OODB with the incumbent implementation and execution costs. Bugs There were several serious bugs that we found over the three years of using the OODB that are still unresolved at the time of this writing we had to devise workarounds for each of them at considerable development cost to us. These are described below. The most critical bug that we encountered was incorrect array addressing of single-precision (float32) floating-point array members in query predicates. For example, if f is a floating-point array and the user asks for f[n], i.e. the n-th element of f, the OODB returns f[2n], i.e. the array offset is off by a factor of 2! This happens only with float32 arrays, not with float64 arrays, which suggested that the problem most likely was that the OODB assumed every floating-point array to be float64. Fatal errors generated during a query automatically caused the C++ application to abort with a core dump. Defining an error-handler did not help because the error-handler could not avoid the abort it could only report that a fatal error had occurred. This was very inconvenient indeed because a fatal error caused our entire query agent to crash, throwing off all users logged in at the time even if the error was generated by one particular user. For example, we encountered a situation where a division in the query predicate caused a fatal error (floating exception) if the value of the object attribute that is in the denominator happens to be 0 for one of the objects encountered in the search. Although it is reasonable to expect the query to be aborted by such an error, it is ridiculous to have to abort the query agent because of it. There appears to be no way to isolate the error to the thread or query that generated it and continue with the remaining threads. We have not received a satisfactory resolution of this problem from the OODB vendor to date. The missing features and critical bugs listed above made the OODBs predicate query feature unusable for our application. The lack of reliable predicate-query functionality obviously crippled our ability to make effective queries against the Science Archive, and was a serious blow to our progress with the Science Archive development. As a result, we had to write our own predicate functionality, which required several person-months of precious development effort. Our home-cooked predicate query had served us very well until that point and even allowed us to implement features not available in the OODB (such as inclusion of object methods in query predicates), but certainly placed an additional burden on the support and maintenance of the software. Performance Woes To serve our customers, we needed to be able to access data at more than 50MBps that would be an hour for a query that examines the entire photo catalog. No matter how much hardware we threw at it, the OODB could not go much more than 0.5 MBps 100 times too slow for our needs. We eventually traced this to the OODBs use of NFS and the lack of high-speed sequential access to the data at the file system level. There was now way around this without reworking the OODB something the vendor refused to consider. Another serious problem was that if indexes were defined on several quantities in our tag object class, the order in which the terms involving these quantities appeared in the query predicate must be the same as the order in which the indexes were created; otherwise none of the indices was applied! For example, the predicate, (i < 11 && r < 13 && z < 9), where i,r and z are members of the tag object, will generate a fast (indexed) search only if the index on i was created first, the index on r was created second, and the index on z was created last. Administrative Problems Inevitably, we had to change the database schema, adding attributes or classes, creating associations, and making other schema changes. As often as not, this required a complete database reload (and indeed the online schema change often corrupted the current system). One thing the OODB community has yet to address is a coherent strategy for evolving the database schema when the application programs have such a tight coupling to the data and when the data has object pointers that may be spit or merged by a schema change. In addition, the OODB lacked the administration tools typical of more mature database management systems. In fairness, other projects, notably BaBar succeeded in building atop an OODB, but they did this by writing over a million lines of code above the interface, and by using the OODB as a persistent object store (checkin-checkout data) rather than as a data warehouse with ad-hoc access. Evaluation of and Migration to RDBMS In light of the issues discussed above, it became increasingly difficult to justify the use of the OODB in spite of the conceptual attractiveness it offered and the fact that we had invested so much time and effort in building a distributed data-mining engine on top of it. Apart from the issues relating to the particular product that we had deployed the Science Archive on, object persistence itself was proving to be too expensive for us because of the poor query language support, the relative inflexibility of the data model to frequent changes, the total lack of query optimization, and last but perhaps most debilitating for the purposes of data mining inadequate I/O efficiency and support for data striping. Happily for us, in the last ten years the landscape has shifted. Relational database management systems (RDBs for short) have improved in the following ways: RDBs have matured as the default database technology embraced by the computer industry. This has meant wide tools support, dramatically improved quality and much improved functionality in areas like language integration and database extension mechanisms that provide some of the benefits promised by OODBs. The fierce competition among the major RDB vendors (e.g. Oracle, IBM, and Microsoft) has resulted in excellent I/O optimization. Ten years ago, when we decided to adopt an OODB for the Science Archive, object-oriented database technology was in fact superior in performance to the existing relational technology at the time. However, in the last few years, the leading object database vendors have not kept pace with the order-of-magnitude increase in raw I/O performance achievable with RAID disk systems. The advent of web services, SOAP and XML enables objects-on-the-fly, i.e., retrieval of data in the form of objects irrespective of how the raw data is stored on disk, providing dynamic object interfaces to relational databases and making object persistence unnecessary. These developments prompted us to consider migrating the SDSS Science Archive to a commercial RDB to gain significantly better performance, database administration and optimization. The SDSS SkyServer Our original motivation in deploying a version of our data in MS-SQL was to provide an easier to use, web-based option called the SkyServer for the casual user of the soon-to-be-available first public distribution of the SDSS (the Early Data Release or EDR), which was officially released in June 2001. The choice of Microsofts products was dictated by the skills available Microsoft was willing to support the project, and one of us (Gray) was intimately familiar with the product. In the absence of that we would probably have used Apache/DB2 on Solaris. In order to load the EDR data into the SkyServer, we had to modify our data loader module so that it exported the data in CSV (ASCII comma-separated values) format for loading it into the relational data tables. The original version of the data loader was designed to feed the data from the data pipeline directly into the OODB using the OODB proprietary Data Definition Language (DDL). The addition of the CSV export feature to the data loader proved not to be too difficult or time-consuming, and we were able to have an MS-SQL EDR database up and running in a matter of weeks. This CSV interface provides a blood-brain barrier between to the two subsystems and has been invaluable in allowing each component to evolve independently. The SkyServer was designed to be a user-friendly version of the EDR database. It included help and documentation for novice users, and was pitched to the lay public, students, and amateur astronomers rather than professionals. Although the interface included a SQL query submission facility, it was geared more towards the casual user interested in browsing the SDSS data rather than running intensive queries for data mining. We did not expect the SQL query page to be heavily used. We were wrong. The SkyServer stole the show during the first 6 months of the EDR. Users quickly realized that this was an easy way to get data out of the EDR. Some groups used the interface to crawl the entire site and get a complete extract. Others wrapped the query interface in a collection of Emacs macros and would routinely get personal extracts of the data. Still others got private copies (we distributed about 40 copies of the full EDR and several hundred copies of the 1% subset called the Personal SkyServer.) Our highly positive experience with the EDR SkyServer, in terms of its popularity even with professional astronomers due to its versatility, reliability (99.9% uptime) and performance convinced us that it was a viable alternative as an advanced data mining facility. This was in contrast to the persistent and critical problems that we were experiencing with the OODB version over the same period, particularly in terms of stability, reliability and performance. Indeed, with major data model changes just around the corner, the SkyServer SQLserver system emerged as the far more attractive option (see the following section). But this was not a decision to be taken lightly. Consequently, we undertook a comparative evaluation of the OODB and Microsoft SQLserver with performance benchmarks to formally ascertain whether SQL would meet our demanding needs (section 8). Moving to the Relational Data Model The main hurdle we had to overcome was translating our object data model into a relational data model. The relational model is flat, there are no sub-classes. The relational model does not support pointer associations; all associations must be via key values. The hierarchical object data architecture had to be converted to relational tables. Beyond the obvious loss of conceptual ease that the object data model gave us, this transformation actually did not prove to be all that difficult. We were able to use views to capture the subclass concept. For example, the Galaxy view is the subset of photo objects that are classified as galaxies and are primary objects. Associations were modeled with foreign keys. Data import was not difficult, partly because we had already written a data loader for our OODB that read the astronomical data in its original FITS format and stuffed it into the OODB using its DDL (data definition language). We were able to simply modify this data loader to also export the data in a format accepted by MS-SQL CSV (comma-separated value) input files for importing into the relational tables. There were a few benefits of the object data model that we were sorry to part with when we moved to SQL: In OQL, links between objects that can be specified with a straight-forward dot syntax, e.g. SELECT obj.field instead of the much less intuitive JOIN syntax of relational queries. SQL does not support array (vector) fields. This is especially troublesome since most of our fields are measured in 5 wavelength bands. It was really convenient to be able to have an array[5] of each quantity instead of 5 columns in the table for each quantity measured in all bands using the terminology f_u, f_g, f_r, f_i, f_z for the ugriz bands of the survey. Our simplified SQL was less imposing and confusing to the user community than standard SQL. However, the loss of these OODB advantages was not a high price to pay for the considerable advantages of MSQL that we acquired. These are enumerated in the following section. MS-SQL Advantages The following is a list of the main benefits that we gained by migrating to MS-SQL. Performance and Stability As the performance benchmarks described in the following section demonstrate, MS-SQL query performance for a representative sample of astronomical queries is an order of magnitude better than the best performance that we had been able to squeeze out of the OODB after all the optimization and parallelization that we designed and implemented in our query engine. Loading performance is also much faster with MS-SQL, and we can load our current data in several hours with MS-SQL rather than several days as required for the OODB. Subsequently, we have achieved another tenfold speedup in most of these areas by better design and more modern hardware. We are nearing data rates of 1 GBps and load rates of 50MBps. Query Language In contrast with the limited SQL functionality that we were able to implement in SXQL, MS-SQL offers full SQL92 compatibility and the added features of Transact SQL (T-SQL). The MS-SQL query language contains many convenient features that our user community has been asking for but we have not been able to implement in SXQL due to our limited software development budget. The three most useful features are GROUP BY, ORDER BY, and COUNT(*). The lack of them in SXQL already hampered us in our development of a suite of test queries for our performance benchmarks. We were unable to translate several of a set of test queries originally developed for a different purpose to SXQL. SDSS users would love to be able to sort, group and bin query results, thereby saving a fairly time-consuming data analysis step. Advanced query optimization Some of MS-SQLs greatest strengths are its ease of optimization and self-optimizing capabilities. In a feature article in the February 2002 issue of PC Magazine, MS-SQL scored higher in this aspect than all of its major competitors but this is a core strength of all the major SQL products. The graphical query plan viewable before submitting a MS-SQL query gives details on exactly which steps of the query take the largest fraction of the execution time, giving the user all the information necessary, in most cases, to improve the query performance. Such a capability was totally lacking in the OODB. DB Administration Features The availability of features like triggers, stored procedures, dynamic indices, online reorganization, data striping, job scheduling, self-tuning, and many other utilities in MS-SQL provide a level of convenience and ease for DB administration that we did not have with the OODB. In addition, many optimization tasks, including index management and data re-organization, can be done live, i.e. while the DB is online. While this is also possible in principal with the OODB, in practice we have found this to be problematic enough as to be virtually unusable. Schema Design and Evolution MS-SQL provides built-in tools for data model design that facilitates development of complex schema with great ease. With the OODB, we had to use a separate software product (Paradigm Plus) to develop a diagrammatic data model before translating it into schema files that the DBMS could understand (DDL). The benefits of schema development in MS-SQL were brought into focus for us when we contemplated major data model changes in order to include detailed information about the tiling procedure for the SDSS spectroscopic plates into the OODB. We realized that adding these changes would stretch our existing database to the breaking point. Schema evolution is another feature that we should have been able to take for granted with a DBMS but have been unable to use in practice with the OODB. Even small schema changes ended up corrupting the existing data in the database, requiring a complete reloading of the data. After several unsuccessful attempts at schema evolution, and lacking adequate technical support from the vendor, we were forced to abandon schema evolution altogether. Instead we kept schema changes to a minimum and always reloaded the entire database when a change was absolutely necessary. Naturally, this was a significant drain on our limited operations resources since it required several days to implement even a minor schema change. We anticipate that this will no longer be a major problem with MS-SQL, and have already done several schema changes successfully with our EDR SkyServer. XML Compatibility XML output capability is available in MS-SQL now: simply by specifying FOR XML in the WHERE clause of the query, the user can opt to receive the query results in XML rather than ASCII text. This is an especially important feature for the upcoming Virtual Observatory [7], in which many of the data analysis applications that astronomers need will most likely be available as web services. We would have to build XML compatibility ourselves on top of the OODB. Performance Evaluation Performance was not the only reason for switching to MS-SQL, but it was probably the most important one. With the data volume expected to quadruple over the next 3 years, we were justifiably concerned that all the optimization that we had built into our OODB query engine would not be enough if the DBMS itself did not meet certain IO performance benchmarks. Almost all the queries that had been performing poorly on the OODB were IO-bound. Before we carried out the performance benchmarks described here, we already knew that our SQL Server database the SDSS SkyServer was performing considerably better than the OODB version for certain types of queries. However, we conducted formal benchmarks for the following reasons. To satisfy ourselves that MS-SQL was indeed performing much better with indexed queries. To ensure that we were giving the OODB a fair shake. We wanted, if possible, to find complex queries that the OODB would perform better with due to its hierarchical data organization. To provide a level playing field by running the benchmarks on identical hardware. To make every attempt to ensure that the optimization and parallelization features that we had built into our OODB server software would be utilized in executing the test queries. Therefore, we formulated a set of 25 test queries that range from simple index lookups to queries with complex constraints on non-indexed quantities and multi-way joins. These queries listed at  HYPERLINK "http://www.sdss.jhu.edu/sx/pubs/" http://www.sdss.jhu.edu/sx/pubs/ are a subset of 35 queries used to benchmark the SkyServer [8]. Analysis of Performance Benchmark Results The results of execution time measurements for the test queries are shown in Fig. 8 for the three DB configurations that we tested MS-SQL, a single-disk OODB (OO-Single), and a 3-disk partitioned OODB (OO-Striped). The performance differences between the three tested systems are summarized below. On average, MS-SQL is 3-10 times faster than OO-Single, and 1-3 times faster than OO-Striped. This is shown more clearly in Fig. 9, which compares the execution times on the OO-Single system and the times on the OO-Striped system to MS-SQL. The 3-way striping of the data on OO-Striped yields, as expected, up to a three-fold performance improvement due to our multi-threaded query agent design. On queries that return many objects, the distributed version of the OODB (OO-Striped) starts to bog down on the extraction of the requested data fields from the matching objects. This is especially true when the query is on tag objects, because many more of the smaller tag objects are loaded into the cache at one time, and the main thread has to extract the required data fields from them so that the CPU usage of the main thread approaches 90+% cpu utilization. This limits the speed at which the query is executed. This is illustrated in Fig. 10, which shows the ratio of the times taken to return just an aggregate count of the objects (with COUNT(*)) to the total time taken (to return all objects) for each query. The ratio is lowest, i.e., the count is much faster than the whole query, when the total number of objects is in the millions. This is a limitation of the distributed design of our query agent, which distributes the query search but not the extraction of the object data. The joins on the MS-SQL version were very fast for all the queries we formulated. In fact, we were hard put to find a query that would take more than a few minutes to execute on the MS-SQL version. The only time when the execution was relatively slow was when there was no constraint on an indexed quantity in the query predicate. An example of this situation is shown in test query Q31, which is a version of Q30 with a much larger limiting value of a non-indexed field in the photoobj table. The difference in the execution times is shown in Fig 11 for MS-SQL, OO-Single and OO-Striped. The execution times for Q31 are almost 2 orders of magnitude higher. However, such a query is rare because usually it is possible to narrow the search using one of the indexed fields. In several test queries that involve reddening-corrected u,g,r,i,z magnitudes, the MS-SQL version benefits from the fact that for the primary object table (from which Galaxy, Star etc. are derived), the ugriz values are already reddening-corrected. This provides approximately a factor of 2 improvement for the MS-SQL version. Summary After initially adopting an object database and expending considerable time and development effort in converting it into an advanced data mining facility, we were forced to abandon it and migrate to a relational database system instead. The OODB concept was great, but the actual implementation lacked the robustness, the tools, and the scalability that our project demanded. The detailed description of our object-based implementation above bears testament to the concerted attempt that we made to achieve the data mining objectives of the SDSS Science Archive with an OODB. However, in the end we had to acknowledge that relational database technology and web-based protocols have advanced to the point where many of our original reasons for adopting an object database can be met with a relational solution, and the dominant manageability, quality, performance, and usability requirements mandate that we use a mainstream product. References Szalay, A.S. 1999: The Sloan Digital Sky Survey, in Computing in Science and Engineering, March/April 1999. Szalay, A.S., Kunszt, P., Thakar, A. and Gray, J. 2000: Designing and Mining Multi-Terabyte Astronomy Archives, The Sloan Digital Sky Survey, Proc. SIGMOD 2000 Conference, 451. Thakar, A.R., Kunszt, P.Z., Szalay, A.S., and Szokoly, G.P. 2000: "Multi-threaded Query Agent and Engine for a Very Large Astronomical Database, Proceedings of ADASS IX, eds. N. Manset, C. Veillet, D. Crabtree (ASP Conf. series), 216, 231. Thakar, A.R., Kunszt, P.Z., and Szalay, A.S. 2001: Case Study of Handling Scientific Queries on Very Large Datasets: The SDSS Science Archive, in Mining the Sky: Proc. of the MPA/ESO/MPE workshop, Garching, A.J. Banday, S. Zaroubi, M. Bartelmann (ed.); (Springer-Verlag Berlin Heidelberg), 624-630. Kunszt, P.Z., Szalay, A.S., Csabai, I., and Thakar, A.R. 2000: The Indexing of the SDSS Science Archive, in Proc ADASS IX, eds. N. Manset, C. Veillet, D. Crabtree, (ASP Conference series), 216, 141. Kunszt, P.Z., Szalay, A.S., and Thakar, A.R. 2001: The Hierarchical Triangular Mesh , in Mining the Sky: Proc. of the MPA/ESO/MPE workshop, Garching, A.J. Banday, S. Zaroubi, M. Bartelmann (ed.); (Springer-Verlag Berlin Heidelberg), 631-637. Thakar, A.R., Kunszt, P.Z., Szalay, A.S. 2001: A Parallel, Distributed Archive Template for the NVO, Proceedings of ADASS X, eds. F. Harnden, F.A. Primini, & H. Payne (ASP Conf. Series), 238, 40. Gray, J., Slutz, D., Szalay, A., Thakar, A., vandenBerg, J., Kunszt, P., and Stoughton, C. 2002: Data Mining the SDSS SkyServer Database, Microsoft Technical Report MSR-TR-2002-01 (ftp://ftp.research.microsoft.com/pub/tr/tr-2002-01.pdf). Appendix Test Queries for Benchmark We used a set of 25 different test queries for the performance benchmarks discussed in Section 5. These are the queries Q1-Q30 listed below (Q31 is a modified version of Q30). The query numbering is not consecutive because this is a subset of 35 test queries that we devised to test the SQL Servers data mining capabilities and query performance in a previous paper. The queries from the original set that could not be converted to SXQL were dropped (e.g., Q7, Q12, Q13), and where possible SQL-specific features were excluded to make the SQL and SXQL versions equivalent. In such cases, the excluded SQL code is shown highlighted below. Both the SQL Server (SQL) and the OODBMS (SXQL) versions are shown side-by-side. The SQL Server versions include a workaround for the SQL Server 2000 optimizer problem that causes the performance to degrade when user defined functions that lookup flags are included in the query predicate (the function is called for each record rather than being called once for the whole query). This is a known bug that will be fixed in the next version, and the workaround is to manually factor the function calls out of the queries (or just use the constants). Q1: Find all galaxies without saturated pixels within 1' of a given point (ra=75.327, dec=21.023). Q1.SQL SELECT G.objID, G.ra, G.dec, GN.distance FROM Galaxy as G, JOIN dbo.fGetNearbyObjEq(200,-0.5,1) as GN ON G.objID = GN.objID WHERE (G.flags & dbo.fPhotoFlags(saturated) = 0 order by distance Q1.SXQL SELECT objID, RA(), DEC() FROM Galaxy WHERE PROX( J2000, 200, -0.5, 1.0) && (objFlags & OBJECT_SATUR) = 0 Q2: Find all galaxies with blue surface brightness between and 23 and 25 mag per square arcseconds, and -100.175. Q3.SQL SELECT objID FROM Galaxy WHERE r + reddening_r < 22AND reddening_r > 0.175 Q3.SXQL SELECT objID FROM Galaxy WHERE r < 22AND reddening[2] > 0.175 Q4: Find galaxies with an isophotal surface brightness (SB) > 24 in the red band, with an ellipticity >0.5, and with the major axis of the ellipse having a declination of between 30 and 60 arc seconds. Q4.SQL SELECT ObjID FROM Galaxy WHERE modelMag_r + rho < 24 AND isoA_r BETWEEN 30 AND 60 AND (power(q_r,2) + power(u_r,2)) > 0.25 Q4.SXQL SELECT objID FROM PhotoPrimary WHERE objType == OBJECT_GALAXY && modelMag[2] + rho < 24 AND isoA[2] BETWEEN 30 AND 60 AND (q[2]*q[2]) + (u[2]*u[2]) > 0.25  Q5: Find all galaxies with a deVaucouleours profile (r falloff of intensity on disk) and the photometric colors consistent with an elliptical galaxy. Q5.SQL DECLARE @binned BIGINT; SET @binned = dbo.fPhotoFlags('BINNED1') + dbo.fPhotoFlags('BINNED2') + dbo.fPhotoFlags('BINNED4') ; DECLARE @blended BIGINT; SET @blended =dbo.fPhotoFlags('BLENDED'); DECLARE @noDeBlend BIGINT; SET @noDeBlend =dbo.fPhotoFlags('NODEBLEND'); DECLARE @child BIGINT; SET @child = dbo.fPhotoFlags('CHILD'); DECLARE @edge BIGINT; SET @edge = dbo.fPhotoFlags('EDGE'); DECLARE @saturated BIGINT; SET @saturated = dbo.fPhotoFlags('SATURATED'); SELECT ObjID FROM Galaxy as G -- count galaxies WHERE lDev_r > 1.1 * lExp_r -- red DeVaucouler fit -- likelihood greater than disk fit AND lExp_r > 0 -- exp disk fit in red band > 0 -- Color cut for an elliptical galaxy courtesy of James -- Annis of FermiLab AND (G.flags & @binned) > 0 AND (G.flags & ( @blended + @noDeBlend + @child)) != @blended AND (G.flags & (@edge + @saturated)) = 0 AND G.petroMag_i > 17.5 AND (G.petroMag_r > 15.5 OR G.petroR50_r > 2) AND (G.petroMag_r > 0 AND G.g>0 AND G.r>0 AND G.i>0) AND ((G.petroMag_r-G.reddening_r) < 19.2 AND (G.petroMag_r - G.reddening_r < (13.1 + (7/3)*( G.g - G.r ) + 4 *( G.r - G.i )- 4 * 0.18 )) AND ( ( G.r - G.i - (G.g - G.r)/4 - 0.18) < 0.2 ) AND ( ( G.r - G.i - (G.g - G.r)/4 - 0.18) > -0.2 ) ) OR ( (G.petroMag_r - G.reddening_r < 19.5) AND ( ( G.r - G.i - (G.g - G.r)/4 -0.18) > (0.45 - 4*( G.g - G.r ) ) ) AND ( (G.g - G.r ) > ( 1.35 + 0.25 *( G.r - G.i ) ) ) ) ) Q5.SXQL SELECT objID FROM Galaxy WHERE lDeV_r > 1.1 * lExp_r && lExp_r > 0 // Color cut for an elipical galaxy courtesy // of James Annis of Fermilab && (objFlags & (OBJECT_BINNED1 | OBJECT_BINNED2 | OBJECT_BINNED4)) > 0 && (objFlags & (OBJECT_BLENDED | OBJECT_NODEBLEND | OBJECT_CHILD)) != OBJECT_BLENDED && (objFlags & (OBJECT_EDGE | OBJECT_SATUR)) == 0 && petroMag[3] > 17.5 && (petroMag[2] > 15.5 || petroR50_r > 2) && (petroMag[2] > 0 && g>0 && r>0 && i>0) && ((petroMag[2]- reddening[2]) < 19.2 && (petroMag[2] - reddening[2] < (13.1 + (7/3)*( g - reddening[1] - r + reddening[2] ) +4 *(r-reddening[2]-i+reddening[3] )- 4*0.18 ) ) && ( ( r - reddening[2] - i + reddening[3] - ( g - reddening[1] - r + reddening[2])/4 - 0.18 ) < 0.2 ) && ( ( r - reddening[2] - i + reddening[3] - ( g - reddening[1] - r + reddening[2])/4 -0.18 ) > -0.2 ) ) ||( (petroMag[2] - reddening[2] < 19.5) &&( ( r - reddening[2] - i + reddening[3] - ( g - reddening[1] - r + reddening[2])/4 - 0.18 ) > (0.45 - 4*( g - reddening[1] - r + reddening[2] ) ) ) && ((g - reddening[1] - r + reddening[2]) > ( 1.35 + 0.25 *( r - reddening[2] - i + reddening[3] ) ) ) ) Q8: Find galaxies that are blended with a star and return the deblended galaxy magnitudes. Q8.SQL SELECT G.ObjID,G.u,G.g,G.r,G.i,G.z FROM Galaxy G, Star S WHERE G.parentID > 0 AND G.parentID = S.parentID Q8.SXQL SELECT objID,u,g,r,i,z FROM Galaxy WHERE EXIST(parent) && parent.child{?}.objType == OBJECT_STAR 7. Q9: Find quasars with a line width >2000 km/s and 2.5 0.90Q9.SXQL SELECT spec_ID, z, zConf, specClass FROM SpecObj WHERE ( specClass == SPEC_QSO || specClass == SPEC_HIZ_QSO ) AND z BETWEEN 2.5 AND 2.7 AND zConf > 0.90  8. Q10: Find galaxies with spectra that have an equivalent width in Ha >40. Q10.SQL SELECT G.ObjID FROM Galaxy as G, SpecObj as S, SpecLine as L WHERE G.ObjID = S.ObjID AND S.SpecObjID = L.SpecObjID AND L.LineId = 6565 AND L.ew > 40 Q10.SXQL SELECT objID FROM ( SELECT obj FROM ( SELECT spec FROM SpecLine WHERE name.lineID == 6565 && ew > 40 ) ) WHERE objType == OBJECT_GALAXY Q11: Find all elliptical galaxies with spectra that have an anomalous emission line. Q11.SQL SELECT DISTINCT G.ObjID FROM Galaxyas G, SpecObj as S, SpecLine as L, XCRedshiftas XC WHERE G.ObjID = S.ObjID AND S.SpecObjID = L.SpecObjID AND S.SpecObjID = XC.SpecObjID AND XC.tempNo = 8 AND L.lineID = 0 AND L.ew > 10 AND S.SpecObjID not in ( SELECT S.SpecObjID FROM SpecLine as L1 WHERE S.SpecObjID= L1.SpecObjID AND abs(L.wave - L1.wave) <.01 AND L1.LineID != 0 ) Q11.SXQL SELECT objID FROM ( SELECT obj FROM ( SELECT spec FROM ( SELECT found FROM SpecObj WHERE xcorrz{?}.tempNo == 8 ) WHERE ew > 10 && (((restWave - spec.measured{?}.restWave) > -0.01) && ((restWave - spec.measured{?}.restWave) < 0.01)) ) ) WHERE objType == OBJECT_GALAXY Q15: Provide a list of moving objects consistent with an asteroid. Q15.SQL SELECT objID, sqrt( power(rowv,2) + power(colv, 2) ) FROM PhotoObj WHERE (power(rowv,2) + power(colv, 2)) > 50 AND rowv >= 0 AND colv >=0 Q15.SXQL SELECT objID, sqrt( rowv*rowv + colv*colv ) FROM PhotoObj WHERE (rowv*rowv + colv*colv) > 50 AND rowv >= 0 AND colv >=0  Q16: Search for Cataclysmic Variables and pre-CVs with White Dwarfs and very late secondaries. Q16.SQL SELECT run, camCol, rerun, field, objID,u,g,r,i,z, ra, dec, count(*) as 'total', sum(case when (type=3) then 1 else 0 end) as 'Galaxies', sum(case when (type=6) then 1 else 0 end) as 'Stars', sum(case when (type not in (3,6)) then 1 else 0 end) as 'Other' FROM PhotoPrimary WHERE u - g < 0.4 AND g - r < 0.7 AND r - i > 0.4 AND i - z > 0.4 Q16.SXQL SELECT RUN(), CAMCOL(), RERUN(), FIELDID(), OBJID(), ,g,r,i,z, RA(), DEC() FROM Primary WHERE u - g < 0.4 && g - r < 0.7 && r - i > 0.4 && i - z > 0.4 Q17: Find all objects with velocities and errors (non-indexed quantities) in a given range. Q17.SQL SELECT run, camCol, field, objID, rowC,colC, rowV,colV,rowVErr,colVErr, flags, psfMag_u,psfMag_g,psfMag_r,psfMag_I,psfMag_z, psfMagErr_u,psfMagErr_g,psfMagErr_r, psfMagErr_I,psfMagErr_z FROM PhotoPrimary WHERE ((rowv * rowv)/(rowvErr * rowvErr) + (colv * colv)/(colvErr * colvErr) > 4)Q17.SXQL SELECT RUN(), CAMCOL(), RERUN(), FIELDID(), OBJID(), rowC,colC, rowV,colV,rowVErr,colVErr, objFlags, psfMag, psfMagErr FROM PhotoPrimary WHERE ((rowv * rowv) / (rowvErr * rowvErr) + (colv * colv) / (colvErr * colvErr) > 4) Q18: Find all objects within a given coordinate cut (RA and Dec). Q18.SQL SELECT colc_g, colc_r FROM PhotoObj WHERE (-0.642788 * cx + 0.766044 * cy>=0) AND (-0.984808 * cx - 0.173648 * cy <0) Q18.SXQL SELECT obj.col[1], obj.col[2] FROM PhotoTag WHERE (-0.642788 * cx + 0.766044 * cy>=0) AND (-0.984808 * cx - 0.173648 * cy <0) Q19: Search for objects and fields by their non-indexed short IDs. Q19.SQL SELECT objID, field, ra, dec FROM PhotoObj WHERE obj = 14 AND field = 11 Q19.SXQL SELECT objID, object,field.field, ra, dec FROM ( SELECT obj FROM field WHERE field == 11 ) WHERE object == 14  Q20: Search for all galaxies with bluer centers: for all galaxies with Petrosian radius < 18 that are not saturated, not bright and not on the edge of the frame, give me those with centers appreciably bluer than their outer parts, i.e., define the center color as: u_psf - g_psf and define the outer color as: u_model - g_model; return all objects which have (u_model - g_model) - (u_psf - g_psf) < -0.4. Q20.SQL DECLARE @flags BIGINT; SET @flags = dbo.fPhotoFlags('SATURATED') + dbo.fPhotoFlags('BRIGHT') + dbo.fPhotoFlags('EDGE') SELECT colc_u, colc_g, objID FROM Galaxy WHERE (Flags & @flags )= 0 AND petroRad_r < 18 AND ((colc_u - colc_g) - (psfMag_u - psfMag_g)) < -0.4 Q20.SXQL SELECTcol[0], col[1], objID obj.col[0], obj.col[1], objID FROM Galaxy WHERE (objFlags & (OBJECT_SATUR | OBJECT_BRIGHT | OBJECT_EDGE) ) == 0 && petroRad[2] < 18 && ((obj.col[0] - obj.col[1]) - (psfMag[0] - psfMag[1])) < -0.4 Q21: Retrieve the PSF colors of all stars brighter than 20th magnitude, rejecting on various flags, that have PSP_STATUS = 2. Q21.SQL SELECT s.psfMag_g, s.run, s.camCol, s.rerun, s.field FROM Star s, Field f WHERE s.fieldid = f.fielded AND s.psfMag_g < 20 AND f.pspStatus = 2 Q21.SXQL SELECT psfMag[1],RUN(), CAMCOL(), RERUN(),FIELDID() FROM ( SELECT obj FROM Field WHERE pspStatus == 2 ) WHERE objType == OBJECT_STAR && ( (status & AR_OBJECT_STATUS_PRIMARY) > 0 ) && psfMag[1] < 20 Q22: Cluster finding. Q22.SQL DECLARE @binned BIGINT SET @binned = dbo.fPhotoFlags('BINNED1') + dbo.fPhotoFlags('BINNED2') + dbo.fPhotoFlags('BINNED4') DECLARE @deblendedChild BIGINT SET @deblendedChild = dbo.fPhotoFlags('BLENDED') + dbo.fPhotoFlags('NODEBLEND') + dbo.fPhotoFlags('CHILD') DECLARE @blended BIGINT SET @blended = dbo.fPhotoFlags('BLENDED') SELECT camCol, run, rerun, field, objID, ra, dec FROM Galaxy WHERE (flags & @binned )> 0 AND (flags&@deblendedChild)!=@blended AND petroMag_i < 23 Q22.SXQL SELECT CAMCOL(), RUN(), RERUN(), FIELDID(), OBJID(), RA(), DEC(), petroMag[3], objFlags FROM Galaxy WHERE ((objFlags & (OBJECT_BINNED1 | OBJECT_BINNED2 | OBJECT_BINNED4)) > 0) && ((objFlags & (OBJECT_BLENDED | OBJECT_NODEBLEND | OBJECT_CHILD)) != OBJECT_BLENDED) && petroMag[3] < 23  Q23: Diameter-limited sample of galaxies. Q23.SQL DECLARE @binned BIGINT SET @binned = dbo.fPhotoFlags('BINNED1') | dbo.fPhotoFlags('BINNED2') | dbo.fPhotoFlags('BINNED4') DECLARE @deblendedChild BIGINT SET @deblendedChild = dbo.fPhotoFlags('BLENDED') | dbo.fPhotoFlags('NODEBLEND') | dbo.fPhotoFlags('CHILD') DECLARE @blended BIGINT SET @blended = dbo.fPhotoFlags('BLENDED') DECLARE @noPetro BIGINT SET @noPetro = dbo.fPhotoFlags('NOPETRO') DECLARE @tooLarge BIGINT SET @tooLarge = dbo.fPhotoFlags('TOO_LARGE') DECLARE @saturated BIGINT SET @saturated = dbo.fPhotoFlags('SATURATED') SELECTrun,camCol,rerun,field,objID,ra,dec FROM Galaxy WHERE (flags & @binned )> 0 AND (flags&@deblendedChild)!=@blended AND ( (( flags & @noPetro = 0) AND petroRad_i > 15) OR ((flags & @noPetro > 0) AND petroRad_i > 7.5) OR ((flags & @tooLarge > 0) AND petroRad_i > 2.5) OR ((flags & @saturated = 0 ) AND petroRad_i > 17.5) ) Q23.SXQL SELECT RUN(), CAMCOL(), RERUN(), FIELDID(), OBJID(), RA(), DEC() FROM Galaxy WHERE ( (objFlags & (OBJECT_BINNED1 | OBJECT_BINNED2 | OBJECT_BINNED4)) > 0 &&(objFlags & (OBJECT_BLENDED | OBJECT_NODEBLEND | OBJECT_CHILD)) != OBJECT_BLENDED && ( ((objFlags & OBJECT_NOPETRO == 0) && petroRad[3] > 15) ||((objFlags & OBJECT_NOPETRO > 0) && petroRad[3] > 7.5)) || ( objFlags & OBJECT_TOO_LARGE > 0 && petroRad[3] > 2.5 ) || ( objFlags & OBJECT_SATUR == 0 && petroRad[3] > 17.5 ) ) Q24: Search for extremely red galaxies. Q24.SQL DECLARE @binned BIGINT SET @binned = dbo.fPhotoFlags(BINNED1) + dbo.fPhotoFlags(BINNED2) + dbo.fPhotoFlags(BINNED4) DECLARE @deblendedChild BIGINT SET @deblendedChild = dbo.fPhotoFlags(BLENDED) + dbo.fPhotoFlags(NODEBLEND) + dbo.fPhotoFlags(CHILD) DECLARE @blended BIGINT SET @blended=dbo.fPhotoFlags(BLENDED) DECLARE @crIntrp BIGINT SET @crIntrp=dbo.fPhotoFlags(COSMIC_RAY) + dbo.fPhotoFlags(INTERP) SELECTg.run, g.camCol, g.rerun, g.field, g.objID, g.ra, g.dec FROM Field f, Galaxy g WHERE g.fieldid = f.fieldid AND (g.flags &@binned ) > 0 AND (g.flags&@deblendedChild)!=@blended AND (g.flags & @crIntrp ) = 0 AND f.psfWidth_r < 1.5 AND (g.i g.z > 1.0)Q24.SXQL SELECT RUN(),RERUN(),CAMCOL(),FIELDID(), OBJID(),RA(),DEC() FROM Galaxy WHERE ( ( (objFlags & (OBJECT_BINNED1 | OBJECT_BINNED2 | OBJECT_BINNED4)) > 0 ) && ( (objFlags & (OBJECT_BLENDED | OBJECT_NODEBLEND | OBJECT_CHILD)) != OBJECT_BLENDED ) && ( (objFlags & (OBJECT_CR | OBJECT_INTERP)) == 0 ) && field.psfWidth[2] < 1.5 && ( I z (reddening[3] reddening[4]) > 1.0 ) )  Q25: The BRG (Bright Red Galaxy) sample. Q25.SQL DECLARE @binned BIGINT SET @binned = dbo.fPhotoFlags('BINNED1') | dbo.fPhotoFlags('BINNED2') | dbo.fPhotoFlags('BINNED4') DECLARE @deblendedChild BIGINT SET @deblendedChild = dbo.fPhotoFlags('BLENDED') | dbo.fPhotoFlags('NODEBLEND') | dbo.fPhotoFlags('CHILD') DECLARE @blended BIGINT SET @blended = dbo.fPhotoFlags('BLENDED') DECLARE @edgedSaturated BIGINT SET @edgedSaturated = dbo.fPhotoFlags('EDGE') | dbo.fPhotoFlags('SATURATED') SELECT run, camCol, rerun, field, objID, ra, dec FROM Galaxy WHERE ( ( flags & @binned ) > 0 AND ( flags & @deblendedChild ) != @blended AND ( flags & @edgedSaturated ) = 0 AND petroMag_i > 17.5 AND ( petroMag_r > 15.5 OR petroR50_r > 2 ) AND ( petroMag_r > 0 AND g>0 AND r>0 AND i>0 ) AND ( (petroMag_r-reddening_r) < 19.2 AND ( petroMag_r - reddening_r < (13.1 + (7/3) * (g-r) + 4 * (r-i) - 4*0.18) ) AND ( (r - i - (g - r)/4 - 0.18) < 0.2 ) AND ( (r - i - (g - r)/4 - 0.18) > -0.2 ) AND ( (petroMag_r - reddening_r + 2.5 * LOG10(2 * 3.1415 * petroR50_r * petroR50_r)) < 24.2 ) ) OR ( (petroMag_r - reddening_r < 19.5) AND ( (r-i-(g-r)/4-0.18) > (0.45-4*(g-r)) AND ( (g - r) > (1.35 + 0.25 * (r - i))) ) AND ( (petroMag_r - reddening_r + 2.5 * LOG10( 2 * 3.1415 * petroR50_r * petroR50_r )) < 23.3 ) ) Q25.SXQL SELECT RUN(),CAMCOL(),RERUN(),FIELDID(),OBJID(), RA(),DEC() FROM Galaxy WHERE ( ( (objFlags & (OBJECT_BINNED1 | OBJECT_BINNED2 | OBJECT_BINNED4)) > 0 ) && ( (objFlags & (OBJECT_BLENDED | OBJECT_NODEBLEND | OBJECT_CHILD)) != OBJECT_BLENDED ) && ( (objFlags & (OBJECT_EDGE | OBJECT_SATUR)) == 0 ) && petroMag[3] > 17.65 && ( petroMag[2] > 15.5 || petroR50_r > 2 ) && ( petroMag[2] > 0 && g>0 && r>0 && i>0 ) && ( (petroMag[2] - reddening[2] < 19.2) && (petroMag[2] - reddening[2] < 13.1 + (7/3)*(g-reddening[1]-r+reddening[2]) + 4*(r - reddening[2] -i + reddening[3])- 4 * 0.18) && ((r - reddening[2] - i + reddening[3] - (g - reddening[1] - r + reddening[2])/4 - 0.18) < 0.2) && ((r - reddening[2] - i + reddening[3] - (g - reddening[1] - r + reddening[2])/4 - 0.18) > -0.2) && ((petroMag[2] - reddening[2]) +2.5* LOG(2*3.1415*petroR50_r*petroR50_r)<24.2) ) || ( (petroMag[2] - reddening[2] < 19.5) && ((r - reddening[2] -i + reddening[3] - (g-reddening[1]-r+reddening[2])/4-0.18) > 0.45-4*(g-reddening[1]-r+reddening[2])) && (g - reddening[1] - r + reddening[2] > 1.35 + 0.25 * (r - reddening[2] - i + reddening[3])) && ((petroMag[2]-reddening[2]) +2.5 * LOG(2*3.1415*petroR50_r*petroR50_r)<23.3) )) Q26: Search for low redshift (z) QSO candidates. Q26.SQL SELECT g, run, rerun, camcol, field, objID FROM Galaxy WHERE (modelMag_g <= 22) AND (modelMag_u - modelMag_g >= -0.27) AND (modelMag_u - modelMag_g < 0.71) AND (modelMag_g - modelMag_r >= -0.24) AND (modelMag_g - modelMag_r < 0.35) AND (modelMag_r - modelMag_i >= -0.27) AND (modelMag_r - modelMag_i < 0.57) AND (modelMag_i - modelMag_z >= -0.35) AND (modelMag_i - modelMag_z < 0.70) Q26.SXQL SELECT g, RUN(), RERUN(), CAMCOL(), FIELDID(), OBJID() FROM Galaxy WHERE ( (g <= 22) && (u-g >= -0.27) && (u-g < 0.71) && (g-r >= -0.24) && (g-r < 0.35) && (r-i >= -0.27) && (r-i < 0.57) && (i-z >= -0.35) && (i-z < 0.70) )  Q27: Check the errors on moving objects compare the velocity to the error in velocity and see if the object is flagged as a moving object. Q27.SQL DECLARE @moved BIGINT SET @moved = dbo.fPhotoFlags(MOVED) DECLARE @badMove BIGINT SET @badMove = dbo.fPhotoFlags(BAD_MOVING_FIT) SELECT run, rerun, camcol, field, objID, ra, dec, rowv, colv, rowvErr, colvErr, i, (flags & @moved) as MOVED, (flags & @badMove) as BAD_MOVING_FIT FROM Galaxy WHERE (flags & (@moved + @badMove)) > 0 AND (rowv * rowv + colv * colv) >= (rowvErr * rowvErr + colvErr * colvErr) Q27.SXQL SELECT RUN(),RERUN(),CAMCOL(),FIELDID(), OBJID(), RA(),DEC(), obj.rowv,obj.colv, obj.rowvErr, obj.colvErr, i, objFlags & OBJECT_MOVED, objFlags & BAD_MOVING_FIT FROM Galaxy WHERE ( ((objFlags & (OBJECT_MOVED | OBJECT_BAD_MOVING_FIT)) > 0) && (((obj.rowv * obj.rowv) + (obj.colv * obj.colv)) >= ((obj.rowvErr * obj.rowvErr) + (obj.colvErr * obj.colvErr))) ) Q28: Extract a random sample of the data get the colors of 100,000 random objects from all fields that are survey quality so that color-color diagrams can be made of them.. Q28.SQL SELECT u,g,r,i,z FROM Galaxy WHERE (obj %100 )= 1 Q28.SXQL SELECTu,g,r,i,z FROM Galaxy WHERE (obj.object (obj.object/100) * 100) == 1 Q29: Find quasars. Q29.SQL SELECT run, camCol, rerun, field, objID, u,g,r,i,z, ra, dec FROM Star -- or sxGalaxy WHERE ( modelMag_u - modelMag_g > 2.0 OR u > 22.3 ) AND ( modelMag_i < 19 ) AND ( modelMag_i > 0 ) AND ( modelMag_g - modelMag_r > 1.0 ) AND ( modelMag_r - modelMag_i < (0.08+0.42*(modelMag_g - modelMag_r-0.96)) OR modelMag_g - modelMag_r > 2.26 ) AND ( modelMag_i - modelMag_z < 0.25 ) Q29.SXQL SELECT RUN(), RERUN(), CAMCOL(), FIELDID(), OBJID(), u,g,r,i,z, RA(), DEC() FROM Star WHERE ( u - g > 2.0 OR u > 22.3 ) AND ( i < 19 ) AND ( i > 0 ) AND ( g - r > 1.0 ) AND ( r - i < (0.08 + 0.42 * (g - r - 0.96)) OR g - r > 2.26 ) AND ( i - z < 0.25 )  Q30: Search for objects and fields by their non-indexed quantities. Q30.SQL SELECTg.run, g.rerun, g.camCol, f.field, p.objID, p.u, p.modelMagErr_u , p.petroMag_r - p.reddening_r, p.petroMagErr_r, p.status & 0x00002000, f.psfWidth_r FROM photoobj p, field f, segment g -- , tag t WHERE f.fieldid = p.fieldid AND f.segmentid = g.segmentid AND f.psfWidth_r > 2 AND p.colc > 1300.0 Q30.SXQL SELECT RUN(), RERUN(), CAMCOL(), FIELDID(), OBJID(), modelMag[0] - reddening[0], modelMagErr[0] , petroMag[2] - reddening[2], petroMagErr[2], status & 0x00002000, field.psfWidth[2] FROM ( SELECT obj FROM Field WHERE psfWidth[2] > 2 && obj.colC > 1300.0 ) Q31: Different version of Q30 with a much wider search (less limiting non-indexed constraint). Q31.SQL SELECT g.run,g.rerun,g.camCol,f.field, p.objID,p.ra, p.dec, p.Rowc, p.Colc, p.u, p.modelMagErr_u ,p.g, p.modelMagErr_g, p.r, p.modelMagErr_r, p.petroMag_r - p.reddening_r, p.petroMagErr_r, p.i, p.modelMagErr_i, p.z, p.status & 0x00002000, f.psfWidth_r FROM photoobj p, field f, segment g WHERE f.fieldid = p.fieldid AND f.segmentid = g.segmentid AND p.colc > 400.0 Q31.SXQL SELECT RUN(), RERUN(), CAMCOL(), FIELDID(), OBJID(), RA(), DEC(), rowC, colC, u - reddening[0], obj.modelMagErr[0] , g - reddening[1], obj.modelMagErr[1], r - reddening[2], obj.modelMagErr[2], petroMag[2] - reddening[2], obj.petroMagErr[2], i - reddening[3], obj.modelMagErr[3], z - reddening[4], status & 0x00002000, field.psfWidth[2] FROM PhotoTag WHERE colC > 400.0 Differences between SQL and SXQL query versions The primary object tables in the MS-SQL version have de-reddened u,g,r,i,z, i.e. the correction for interstellar reddening of the light has been applied to the magnitudes recorded in the tables. However, the u,g,r,i,z magnitudes in the corresponding classes in the OODB have not been de-reddened. This makes most queries between the two not strictly equivalent. In order to make them equivalent, either the reddening correction is removed from the SQL version or added to the SXQL version as applicable. Sometimes it was necessary to add the DISTINCT qualifier in the SELECT clause in the SQL version to avoid duplicates (e.g. Q11). Some queries from the original set could not be translated to SXQL, for the reasons listed below for each of the queries. They highlight the limitations in the query language and data model that we implemented for the OODBMS. Q6: Parent/child links were not present in object database, hence SQL queries that contained joins on the parented field could not be translated. Q7: There is no GROUP BY clause or way to sort into buckets in SXQL. Q12: It is not possible to do a grided count in SXQL. Q13: There is no AVERAGE function or binning possible in SXQL. Q14: There is no pre-computed nearest neighbors list in the OODB. Q16: Aggregate functions could not be reproduced in SXQL. Q17-20: Same as Q14 no nearest neighbors list in SXQL.     PAGE  PAGE 20 PAGE  PAGE 27 PAGE \# "'Page: '#' '" No SX At all? Maybe we just shouldnt mention an abbreviation, just Science Archive. PAGE \# "'Page: '#' '" Hmm. Thats a little strong. We did have influence on them to make v6.0 faster. What about my rephrasing? Moved to present tense, fixed figure number, and connected paragraph to figure. PAGE \# "'Page: '#' '" Through?  I thought QT was now deprecated and replaced by SQL QA and by the Emax macros and by the web intereface. Figure 7 Overall OODB Science Archive architecture.  Figure 1. SDSS Data Flow. The data is first stored in the operational archive (OA), after which it is calibrated and stored in the master Science Archive (MSA) and local archives (LAs). Figure 6 - Query Execution Tree Example. Figure 10 - Comparison of time saved by requesting aggregate counts as opposed to total time for the query for the OO-Single and OO-Striped versions with respect to the total number of objects returned by each query. Figure 9 - Comparison of MS-SQL query execution times with the single-disk OODBMS (OO-Single/MS-SQL) and three-disk OODBMS (OO-Striped/MS-SQL).  Figure 11 - Comparison of execution times for two versions of the last test query (Q30). Q31 is a version of Q30 with a much larger limit on a non-indexed quantity. Figure 8: Results of running the 25 test queries listed in the appendix on Microsoft SQL Server 2000 (MS-SQL), on a monolithic OODBS (OO-single), and on a data-striped OODBMS (OO-Striped). The tests ran on identical hardware using the SDSS EDR data (about 80GB). The reported times are in seconds. Figure 4 - The Query Agent thread structure. Each user session is in a separate thread, each query is also handled by a separate thread. Figure 2 - Client/Server architecture of the OODB Science Archive. Users can submit queries to the Science Archive Query Agent (server) with a GUI client (sdssQT) and direct output from queries to preexisting analysis engines. Figure 5 - Parallel and distributed query execution of Science Archive Query Agent. Searches on database partitions are executed in parallel by slave servers. Figure 3 - The tag class hierarchy narrows searches to the chosen subclass. 0  # $ 0 1 2  MRSuvw.17$zh8Kh8T6PJh8Kh8K6PJjh8T0J$<U h8T0Jjh8TUjh8TU h8KPJ h8TPJh8KhNCJmHnHu h8TCJjh8TCJUh @v h8T5CJ, h8T5CJ h8TCJ h8TCJ0h8T0 0 2 4 = - & F$a$$`a$`$a$<,{,Q.p5 [t"""$)&`#$/If`gd \l00gd# Y] -1VeZ48$=>MTUWZ8@AO[ehqz u .!5!E!K!k!!!""o"p"s"t"""hF5h \56>*hh8TCJ\hF5jh8K0J$U hF5h8K hF5h8TjhUmHnHujh8T0J$<PJUhjh \h8Th8K?"""""$#%#Y#Z####w$x$y$$$$$$$%k%u%v%%%%%7&B&G&Z&&&&&' ''&'S'k'l''''Q(U(u(}(((`)f)))))=*>*m*L+M++ϹϹϲǮϩǢ hh h\h \ h5\ h8T5\ hh8Thh8Kh8T h \>*h8Kh \>*h8Kh \H* h8Kh \h8Kh \6>* h \6>*@"""""lGl$$$)&`#$/If`a$gd \l00!$)&`#$/If`gd \l00qkd$$Ifl4 t 6`)0644 la""""fD$$$)&`#$/If`a$gd \l0!$)&`#$/If`gd \l0kd%$$IflFb@ 4 t 6`)06    44 la"""#Dkd$$IflFb@ 4 t 6`)06    44 la!$)&`#$/If`gd \l0##.#/#kdI$$IflFb@ 4 t 6`)06    44 la!$)&`#$/If`gd \l0$$$)&`#$/If`a$gd \l0/#<#C#d#$$$)&`#$/If`a$gd \l0!$)&`#$/If`gd \l0d#e#m#s#fD$$$)&`#$/If`a$gd \l0!$)&`#$/If`gd \l0kd$$IflFb@ 4 t 6`)06    44 las####Dkdm$$IflFb@ 4 t 6`)06    44 la!$)&`#$/If`gd \l0####kd$$IflFb@ 4 t 6`)06    44 la!$)&`#$/If`gd \l0$$$)&`#$/If`a$gd \l0#####%%DB=gdkd$$IflFb@ 4 t 6`)06    44 la!$)&`#$/If`gd \l0%7&S'u(>*m*M++8-. /O1^12d66 ::;<D=N?j?? h^h`gdj]#gdgd ^`gd & F ++,,a-i-----.... //(/d00N1O13#3a33334 4q4{444w55_6c666p8{899+9:9ɽ|upu h8T6 h8T6]jhjCJUmHnHujh8TCJUmHnHuh8Kh8T6\] h8T5 hPJ h8TPJhjh0J$PJUjh8T5Ujh8T0J$<U h8T]h8T56\]h8TjhUmHnHu,:9a:d:::;;;<s<<<<<C=D=S=h=k=n>s>j?k??????A)A-ABBBBjCmCCCCDDD'E,E2E?EiEnEpE|E~EEEEE h8T9 h8T6jhOCJUmHnHu h8T5h8T56\] h8T\ h8T>*\h \56\]jhCJUmHnHu h8T>*hjh8T5>*h \hjh8T5h h8T5\h8T5?T@@@@CCDQDGGJKRL*h8T56\]h3qh \h @vh @v5CJ\mHnHu$jh @v5CJU\mHnHuh; h8T5\jh3qCJUmHnHu h8T5h8Kh8T h8T69lRRR1StSSSSTTTwVVWWcZuZZ\\_ h^h`gdrgd|Ggd;#gd; & F hh0^h`0gd/" & F gd|G & F gd|G & F gd|GVToUqUVVAWBWCWRWWWWWWXX!X=XXXXX1Y5YjZtZ[[\%\,\8\9\E\Z\^\\\\\] ]L]V]u]}]]]]]]]^^^^_E_L_P_``%`)`EaIaaab+bb h.h. h.5h.h|G5 h \5\ h8T5\hrhrhr5h8Kh \ h;h8Th|Gh8T\]h|Gh8TF_`abbcc:dLd\fvfddd@eDeee\ff]gagegjgh hhhijjjjjBkkklll l!l"l.l/l>l?lRlSlUlVlmqqqqqtwtvAwywwwսչսսսսսսղݦݡ h \>* h8T>*h^9hth^9\ hth^9h \ ht6]h.ht6] h.hthth8Kh8T h8T5\ h|Gh|Gh.h|Gh.h|G5=wwwwwwwwwwwwwRxSxtxuxxxxf|g|q|y|||||z~V1rwx߁!$˂Ђ<?[r"h5N6 h8T5\ h8T6]h \h8KhSS hSS5 h \5 hththt h8T6h8T56CJOJQJh8T5CJOJQJh8TDzg||^2/> @# > ͙$> `gdmgdm+ & F # & F gdSS#gd^9">CȊҊ׊]^_Ǝю)Gϐѐ|ڔޔ37oɖʖ֖>Yhr}Y$("#=h8TOJQJ^J h8KPJ h \PJ h1.PJ h8TPJhmh8Kh5N6h5N66h \h5N6h8TJ=>?CJNP vwŞ˞ӞٞfgPâǢ!"2 01_vLPGK3ŮƮʮůǯٯNXpthrhpjhZC"CJUmHnHuhjh \h8KCJaJh8Khmh8Th8TCJaJM Kgɢ1c!3ծNZiP6, & FgdZC" & Fgdr & Fgdr`gdmZbȱ̱ӲԲ$%.2Y]PQhl !$):=678!15 fp:}dzèèhp h8T6]h \ h8T5\jh8TCJUmHnHuhD jhZC"CJUmHnHuhZC" h8T0Jj#h8TUjh8TUh8Khrh8T>6C<GhYQE  1)$$Ifa$gd*1 & Fgd*1gd*1 & Fgd*1 & Fgd*1$ & F a$$ & F 1$7$8$H$a$, & FgdZC"Ea./1H %&.56<=BCVX]_~56ȷڝuo h*1CJh*15CJOJQJ^JhSh*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^J h*1^Jh*1B*ph hN*#h*1CJOJQJ^JaJ#hN*#h*15CJOJQJ^JaJh*1CJOJQJ^J h*15\h*1 h8T6]hph8T+ &.?kd$$If$0#0634abgt*$If[$\$gd*1 )$Ifgd*1($-D`IfM gd*1$If`gd*1V]<=NB & F gd/"kd$$If0#0634ab*$If[$\$gd*1$If`gd*1 )$Ifgd*1 & Fgd*16V]ikwy :<=? %'-/PQRSTV%13>@^` h*1CJ h*15\h*1CJOJQJ^JaJh*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^Jh*1J ST%GXL & F gd/"}kd$$If0n#A0634ab*$If[$\$gd*1$If`gd*1 )$Ifgd*1GefSKB )$Ifgd*1 & Fgd*1kdD$$If0#0$634abgt*$If[$\$gd*1 )$Ifgd*1$If`gd*1:<cefi@D12`g$M_Dd.0GIgjrh*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JaJ hB ^h*1CJOJQJ^JaJh*1 h*15\h*15CJOJQJ^Jh*1CJOJQJ^JaJh*1CJOJQJ^J;7icWH$If`gd*1 & F gd/"}kd $$If0$0634ab *$Ifgd*1 )$Ifgd*1 $If`gd*1ijr)0NaXK $If`gd*1`gd*1}kd $$If0$0634ab *$Ifgd*1 )$Ifgd*1$If`gd*1)0@Bbdxz5679MNVy{V^mo35Ih*1CJOJQJ^Jh*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JaJMNV V^pggZ $If`gd*1`gd*1}kd\ $$If0$0634ab *$Ifgd*1 )$Ifgd*1 IKjlwy)1HJ[]no -/IQdm#%79NPoq|~VX_a{~h*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^JaJh*1CJOJQJ^JR)1}~zqhqhh *$Ifgd*1 )$Ifgd*1 & Fgd*1}kd $$If0(#)0634ab~ajvm`PmG *$Ifgd*1*$If[$\$gd*1 *$If\$gd*1 )$Ifgd*1 & F hgd/"}kd $$If0x#y0634ab?@`jxzTU]pqwx~!$ڴڴڴڴڴh*1CJaJh*1B*CJaJphh*1CJOJQJ^Jh*15CJOJQJ\^Jh*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^JaJh*1CJOJQJ^J?T]yi`Q>>($$-D`IfM gd*1$If`gd*1 )$Ifgd*1 & F h0`0gd/"`gd*1}kdr $$If0#0634ab2Vx *$Ifgd*1 )$Ifgd*1$If`gd*1($$-D`IfM gd*1 $&)267@GMZ^aehkmpx ')56;=IKQSacqs)ȺȺȺȺȺȺȺȺȺȺȺȺȺ೯h*1 h*15\h*1CJOJQJ^JaJh*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^Jh*1B*CJaJphh*1CJaJE.7-ri\iS *$Ifgd*1 $If`gd*1 )$Ifgd*1 & F h0`0gd/"}kd$ $$If0$0634ab)*DFMO}-.7DENOWXdfopz{+-.1px!#13ac '+4h*1 h*15\h*1CJOJQJ^JaJh*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JM-.pxri\iS *$Ifgd*1 $If`gd*1 )$Ifgd*1 & F h0`0gd/"}kd $$If0$ 0634ab*+4ri\\iS *$Ifgd*1 $If`gd*1 )$Ifgd*1 & F h0`0gd/"}kd$$If0$0634ab4_agiU]tv02GI13HJACRSZ\pryzν h*1H*h*1CJOJQJ^Jh*1 h*15\hOh*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JJU]yh_RC_$If`gd*1 $If`gd*1 )$Ifgd*1 & F hh^hgd/"`gd*1}kd:$$If0$0634abl[RCC$If`gd*1 )$Ifgd*1 & F hh^hgd/"}kd$$If0~$0634ab *$If\$gd*1 *$Ifgd*1#aUH $If`gd*1 & F hgd/"}kd$$If0x$0634ab *$Ifgd*1 )$Ifgd*1$If`gd*1 ,.<>TU-.WXsu)+BDmo~#*,=>DEXZwyh*1CJOJQJ^Jh*1 h*15\h0h*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JL !GIsu-/FHqsXZ!BDbdh*15CJOJQJ\^Jh*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JJ#lcSJJ )$Ifgd*1 & F h0`0gd/"`gd*1}kdH$$If0,$;s0634ab *$Ifgd*1 $If`gd*1  $%/1:;@AGI\^  MOPQRVWZ >@{| &(RT~¾ɲɲɲɲɲɲɲɲɲɲɲhh*1CJOJQJ^Jh*1CJOJQJ^Jh*1 h*15\h*1CJOJQJ^J hh*1CJOJQJ^JaJh*1CJOJQJ^Jh*1CJOJQJ^JaJ@^RSTUVWhXO )$Ifgd*1 & F h0`0gd/"}kd$$If08$0634ab *$If[$gd*1 *$If\$gd*1 B D E F SJ`gd*1}kd$$If0P$0634ab *$Ifgd*1 )$Ifgd*1*$If[$\$gd*1 $If`gd*1BDdfOP3 7 8 B C D E J p x           P R s u         % ' G I P R W X _ ` f g m n t u x y | ~    h*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^JaJh*1CJOJQJ^JRF p x   <^L *$If[$gd*1*x$If[$\$gd*1*$If[$\$gd*1 *$If\$gd*1 )$Ifgd*1 & F h0`0gd/"        " $ Q S         / 1 ] _       km&(46=?,.FHuw-/pq68ce "PRDFh*1CJOJQJ^JaJh*1CJOJQJ^J[FJLMP~$&'()29:CDLMVXjksu (-./0235ô斏 hT,#5\h*15CJOJQJ^J hh*1CJOJQJ^JaJhh*1CJOJQJ^Jh*1CJOJQJ^Jh*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JaJ8LM~)201ri\iSS *$Ifgd*1 $If`gd*1 )$Ifgd*1 & F h`gd/"}kdN$$If0$0634ab12346riiYPC $If`gd*1 )$Ifgd*1 & F h0`0gd/"`gd*1}kd$$If0$E0$634ab*$If[$\$gd*159  "$[]deijpqxy$&,.QSxz !"./13RTtvڴڴڴڴڴڴڴڴڴڴh*1CJOJQJ^JaJh*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^Jh*15CJOJQJ\^Jh*1 h*15\G_`*@p`SD$If`gd*1 $If`gd*1 & F h0`0gd/"}kd$$If0:$Ie0634ab *$Ifgd*1 )$Ifgd*1U\]_`c'*68QS\lny{  ;=z|-/Z\ôhh*1CJOJQJ^Jh*1CJOJQJ^Jh*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JaJG@S\aQD $If`gd*1 & F h0`0gd/"}kdd$$If0:$I0&%634ab *$Ifgd*1 )$Ifgd*1$If`gd*1  }!!pgW & F h0`0gd/"`gd*1}kd$$If0:$Ie0634ab *$Ifgd*1 )$Ifgd*1&(9;KMce  $ % - . 7 > F G O P T [ l r          ! !!!+!-!L!N!d!f!{!!!!!!!!!!!"#"%";"="h*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^JaJh*1CJOJQJ^Jh*1CJOJQJ^JM="X"Z"r"t"z"{""""""""""""""""<#D#m#o#~##################$$$$$$%$)$+$B$C$O$Q$V$X$x$z$$$$$$$$$$$$$$$$% %%%% %&%(%h*1 h*15\h*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JR!""<#D#$$&&ue\S\FS $If`gd*1 *$Ifgd*1 )$Ifgd*1 & F h0`0gd/"}kd$$If0.$50634ab *$If\$gd*1(%4%5%:%<%T%U%i%k%%%%%%%%%%%&&& &3&5&M&O&j&l&&&&&&&&&&&'''' '!'"'#'$'%''''''''''';,<,=,?,@,B,C,E,F,H,I,O, h8T0J!jh8T0J!Uh/"jh/"Uh8T h*16]h*1h*1CJOJQJ^Jh*1CJOJQJ^Jh*1CJOJQJ^JF&&&(V)9**+F+++,:,xppphhhhhhh & Fgd*1 & Fgd*1 & Fgd*1kdz$$If] 0H$W0634ab :,;,<,>,?,A,B,D,E,G,H,Q,R,S,_,`,a,j,k,l,x,y,z,{,,p--%  &`#$ !gd*1O,P,Q,S,T,Z,[,],^,_,a,b,h,i,j,l,m,s,t,v,w,x,z,{,|,,,,,,,----p-q---------P.Q.R.S.V.W.Y.Z.ɹɹ믫ɹ록h8T5B*CJphh8T5B*CJphhjh0J$Uh8Kjh8K0J$Ujh8T0J$U h8T0J$jh8TUh/"hN0J!mHnHuh8T0J!mHnHuh8T h8T0J!jh8T0J!U4--P.Q.R.T.U.V.X.Y.[.\.^._.`.a.b.c.e.f.g.h.... `gd `gd @v$a$%Z.\.].c.d.h.i.p.q.r.s.t....._/b/c/k/////z0|0}00111j11}yk]}yThZC"mHnHuj9hZC"hZC"5U\jhZC"hZC"5U\hZC" hZC"5\jhZC"hZC"5U\h3q h3q5\jhiHh3q5U\h h5\jEhF5h5U\h; h @v5\ h8T5\j0h @vh @v5U\h8T5B*CJphh8T5B*CJphh8T .^/_/`/a/b/////////////$a$ `gdiHKC$Eƀt`gdF5`gdF5//////////z0{0|0 1111112$If`gdl0K` `gdZC" `gdZC"$a$ 111111w22222222222222 33~333d4e4f4n45 5!5)5vok]V hj5\jfuhhj5U\hO hO5\jaYhhO5U\jEhh5U\h h5\ h8T5\jۢhh5U\h8T5B*CJphjŜhrhZC"5U\ hZC"\hrhZC"\ hZC"5\hrhZC"5\jNhrhZC"5U\h8ThZC" 2222w!VC$Eƀt`gdrotd& `gdrzkdf$$Ifl06$ t0$644 la222222z3{3|3}3~3c4d4e4555 5 5 5 5 55555 `gdO$a$ `gd$a$555555555555555 5m5n5o5p5`NEƀNt`gd)5l5m5n5q5h8Thhj5\hjp5q5 !6 00&PP/ =!"8#$8% 6 00&PP/ =!"8#$8% DyK http://www.sdss.org/yK *http://www.sdss.org/Z$$If!vh5#v:V0l t 6`)65$$If!vh555 #v#v#v :V0l t 6`)6,555 $$If!vh555 #v#v#v :V0l t 6`)6,555 $$If!vh555 #v#v#v :V0l t 6`)6,555 $$If!vh555 #v#v#v :V0l t 6`)6,555 $$If!vh555 #v#v#v :V0l t 6`)6,555 $$If!vh555 #v#v#v :V0l t 6`)6,555 $$If!vh555 #v#v#v :V0l t 6`)6,555 DyK !http://www.sdss.jhu.edu/sx/pubs/yK Bhttp://www.sdss.jhu.edu/sx/pubs/$$If!vh5 5#v #v:V $06,55/ 34gt$$If!vh5*5#v*#v:V 06,55/ 34$$If!vh55n#v#vn:V 06,55A/ 34$$If!vh55H#v#vH:V 0$6,55/ 34gt$$If!vh55"#v#v":V 06,5/ 34$$If!vh55#v#v:V 06,55/ 34$$If!vh55#v#v:V 06,55/ 34$$If!vh55V#v#vV:V 06,55)/ 34$$If!vh55#v#v:V 06,55y/ 34$$If!vh55#v#v:V 06,55/ 34$$If!vh55#v#v:V 06,55/ 34$$If!vh558#v#v8:V 06,55 / 34$$If!vh55#v#v:V 06,55/ 34$$If!vh55#v#v:V 06,55/ 34$$If!vh55N#v#vN:V 06,5/ 34$$If!vh55#v#v:V 06,55/ 34$$If!vh5h5#vh#v:V 06,5;5s/ 34$$If!vh55#v#v:V 06,5/ 34$$If!vh5*5b#v*#vb:V 06,5/ 34$$If!vh55*#v#v*:V 06,55/ 34$$If!vh5Z5r#vZ#vr:V 0$6,55E/ 34$$If!vh5v5#vv#v:V 06,5I5e/ 34$$If!vh5v5#vv#v:V 0&%6,5I5/ 34$$If!vh5v5#vv#v:V 06,5I5e/ 34$$If!vh5j5b#vj#vb:V 06,555/ 34$$If!vh55H#v#vH:V ] 06,5W5/ 34Dd k  0  # A"e0P=C@mt'@=ee0P=C@  ?>*3x}|޻gݛ"(RHHAIh MA J5HDTTTࡢ/*OݽH %>_v3gΜ938. ?dXr\)s>qjI+ݢ}Kpr48ta{ayqp?cݼo2o#p-dBF(\-k_8!s…8+ u9?ؿ 0<^Gv ĥs\JѸvↂ YoQqv=L7kUhywo=ڱ*ej thspsVc=(Ij&.9ϛdo{Tپ2Ikܽaz a6a-Ž-"Ym4bpV{*Ms/+l]or7vY9cmg 'pbi~j,#opG0ǽ4/܎N h~l$POMF t;*jnjC69l-&EqI㣹8fi;rѬuZq&$Ltmr;ҽ,$x|v/ci eJEuzCݿ*<,ljg:21nqWp'&$k^9r6T9w9T&EZt.&)4ѳ=W#-^F#wNy:N׀`r{z}>Q=?7Fs%3W_xI4⚫EZp\N[>S)j{_V;}(ۜRhWL2kzZ%|1;V}z`p(rm@6J>!'u_99ّYO,ͷT'"x񈗼DnX}"bwvxa޺bs/ͽz'cko/9.;w]K;/-Q%t.=-w}j{Z%om[/x/,=4z_ݣ`9PWj{t)GÛrg6[1*6%Y2clh%=k|h~Sdnȩ/,SttlSy={ 7:+ی[ YX;I=/t5ra#GP|οܻPkdHxLs6Jտ|)WQWh!mpm0ۨ2 5yz5!Y~w?'彟# ̑)F\iy M 8n]N2&͐cF\r'|b{ڻ_몟җ|e,`lcNaKu_s-e654/L9&+տDy/͛ƍjM}Ӛg}ۚ;pqFwiO}J+MlӤ \'pz>ݟwo[d^$o+ЈKfgi4h5V:Z=r|o`jzJ-Ď0\-q=q[%|RӇfF?T kYv%JE+(Ѥ5J(,3NL1*uDȬmJ1[ٗ_-hՖͷ{ߔOUk(~CvϚ/Ɩ:([}\K*~kB5%?ۘUgbkkɿef@)#2e:tC%Bdhw\SVGgqaOC 5Ja:)1Z~n<ܐQG=w㹼܍k_.n6]C24EjpwɧLCFIXD-]}&ψ֎RѬJ˧pH|*VR4QJ{OߵKKDzkF'o*#GKH;((74j[il{3SGZ7/[F^Mɬ2Rey =K|Ho2tW3G]MvUw5m nGſ/]6;Ksu&I/篔i=U3YiUr - dY=Wy:OzOuj~N(hssjZ5v+Kz]cwŐ]C'SVmmں}z`b9:tK̼yW~Xcˍc_ElyF~ޱ}6^c'Ki#6*26JR/#Y T{m}tW//y?_Y}Vy⫭}.]/~5\w=>zxy(?8'| ê'UWU[Z5]шvw._k!SNaikL5h+"U!'.m5'f߂P[`"R=Jiuǩ'wj\QgZN/p}i1JJ}=Ї|ʠ%t/-4Ǒ7fdZ@3?j ϧ!e΂ę0)Gh4A&8鞦(Tz[ y 5#Hq(zi?п_"!~G4~+_h9J?2 9|dH#4 ^B@%TNBJw9*R*.SmȨ%w荤~[B^ B!7IH$Pd7B^ȣtCOzQ:<2dG8ǃ6 M3N9RWJi%tBYR7G^6٠m[LtEn@vI]z9탞ΎI֑wVnCgQ^I 6qiJkҕxV:RʡSZRqU-J G^%%*+qtPSiG5:(ͨҖbGsCoPJBJG^O1%#/ȧNJCJLP;{z4@dCԡYH=r+5iҀGǔNO*wUjf*՜t/*KSA;N6ҾfR NrRV*r3W~qUqGJOEJ}ҕVoLY;:lP3z~҉)=h;D']k|{]ŵG76!aX#$xOzCuRV-(6GhMtAj*ܬVjmAJrh ʣGp8ޠZƨ%9zd#5HŽܦvM-гBZuTyJ@oJ@i^aJ=焘Fo9|zJ;)śWS1ӷRO Tfo^zRg=??A]GG(A)^_PK}9h(VOM鳨>js\@I)t>nw)O{qTTC7!8hxGRIA>d},'NE>jiOhv7amC|j֏>C|H@@K=ZozB흻֋^ђi҆[փi}yk +=uUJN^kiDs 3DiZ"7ӑ7y:p D]3UNZ2Zw5⩑nws&µ@u\_VցJjZ …@kqd>˯IkKmZ_Ԏښ~R[ҏj{Gwje`o'} |E>Dզ] ߀ KCO!>$֥:d&N[kANU axBy,C Xm@uUo Oղ4Vg,@!8eHǸ>~`RT dXB1f8e*vƘu'HR*; N:Nۀ/KmFxUzgP?4=7Q?Y- B-?B+hqWt2_LW:Q4ƿR>|(?z#>DgQ[R[tjF1T?'Hhې"O2-E)G~we@,1Eߍ tMQt¸ mLȠ wSA{1֑1m 7/c7!;%c$l#5 m ,nzrC吿D  1w]i42{4 ڷZ :\Kv\szx]kF^6~紦EsWXbhք4we^5EB:fC9Z#xn i殬Gi hV[3h..G^Nh5F؝GZR ﭡ2<k5vz*V*hUU[!z2%GIvI ﭦC7 Uv#x;³]@0UaQO<fΊZ^-G.dG79y ;9ۋ^@W@ oTK3mX@Sab08+H٪fw6惡I*ݧ4 l$fx<6"k/זyp zO+.11Z<5/bNd/Es\ qo9n+}؛&D3,@h-0y!cpF5q:{#N}ob%·Zc Qv3]P?{[un]_n:.5 00x =Dž~q5jo|a`xM |3[9_^+(>ßPtja Е?Z^O|YOPym`:%Zlq-sEw쩁ؔCr\7 ]<0Z= \-+Gd{<4՛}-oﳁ_{W~. hb@%~r!?)؇8 eUº@@;@!'G40H>0L8)QE   E#l)&$|G!p* 6`u!,+I(-hpC\_&X/`WC_Dwstkc=F-*QPKP+X݆xx /GxǢ3Q#F.?;~,j>@4jfaix1Rt>FmHEM-(QiBѨtaXt0):Mx0nt*j=ntYtKPtDtUl͂Fm.//4B2hH԰<Gg~{( g/{En^~5`Ea 7zX}_3*rU}g+Ռ2g66cP ϕZrk/[9yXhȏv(٩UCةEکuQhq345j eDm~QRR"]1U:HQ0ң|U\3PY:h$tNR> Yd1GUQ RQmJQ:Q)rrRT/^9#j<5j8j.d.8Cɷ'5̓rBp;"vGȓ *` yI'/VK?R(-6+K ťA4);1%ߥשFU%-7ѵک?uZ^z2P(1izjGbQuĨlХťUMC`7Ÿvq_Pg%PەdT=XT |T\+_NDm.gF#/+=V>=FGQr`Oc0Al!֓+'IGOy@M@"MG O =s4<# }1vkC ?MQu fѱGt#կIe_\U%_)9nhJo<Br?0IiZiDzT"eťu.=U>}7_4uTܗEU|RjJv#)hGw4稄*U2vS=c0P#4QCťFiDc$Hc%Xchk'~)g*~/A z{eY̑E@ߓ ~ ^UeI>%d}^>)<&$B:- b;a|DX$sgʇyWlKy0UZ_։O\"$L c+ďZ!a"]75P~]"o/ Wzo!U~VH&!TG]uV B2S^%$Y~ɻL./`obQ!t51(t41ʼn  Cp!]ɃN.!Ar_;p{ qr7uO WFs%;r[Jh"7ɭFr{'T/7PK-T5'6vPE"&WՄr '\IEU(-Jȥr9\ީ7ń(9 xeCCv觤ጤ '%IC?,)Q+|'#N]}swS7C4OatH]ߑIoJ'בM ǫ)~t*?}#x7IGuZ {^I?CL;~ё;Q:Oǘ8_ntfYn KV7/61)IoớP[g4;9`7=? g=a^WпGa}C_ߣg>g>߮_^$':Sg|OOwf4~>ۡ/>:e B+Q~?Y@}?9;Z>Qw՟q s|{}#R·_ro7ѷ +|#_|S}+ow8J|9=//K"|z~7xW~ԡK ޫj'x~wj)ܧ7&4U8wH _i—Z@د$| ;>n>J{[O }VUxW(Uj9.]k,5s;66U^KZaIبuz9Z![Ki}6BX F kN9& + >amgiSkR',f EC[,,Gx cJX-j 5A)aAx@,׶8yն ӵq.Bh&ko =$}aȽ_T}"׾BT0Npv\p蓴߅oGyocc40Hq &hE&ʈkjuS:\k.ohFa-3,~ = "gX%ϰ[WwS+|jxS+ԊS+pjWb.tjxS+蒧V\ 1V 1V\.{DtN:Qp? 1N.8uo=upN:QpЩϟ:!:QpDN:7:ѠԉЩ N(8uԉS' N(8uԉS' N(8uԉS' N(8uO(8uԉS' N(8uԉS' N(8uԉS' N(8uԉS' N(8uԉS' N(8uԉS' N(8uԉS' Nԉ|;u"ԉS' NANZpDN:QpDN:QpDN:QpDN:QpDN:QpDN:QpD +;ڱx7'LMgT 7l|bʶǛt9# Fl̍qŰ-t4c|&Qsn͹j->ZXi>d^3~2U}ɸ-fy+x?}_D{ \2A ob!7l=.bYӈlߠ0c}n?A\:epƵ7nG EMK{nZRQ~ B*uuLD4w7fՆ)KV;]=k_zO*ym;+ִ+B^>SX0[bFzK7Zyd6f- OqhwMx7iz;ڧdZ}pb=(kWf8*n/.;~r͘,`0 'LopE|)HalezEg4ƥ3"~_<>rB6UMƏOPc 6AF&RZ{ \m(_7 >sQ {7&K uXyzGDCaE_2tVx;֤YY3V9ߺLU֫-_e a{o>z'dVyOr2GQ'v]2Y,g{&yKy_yo~bR"!䟅]<`h-7rֆaZUQļmM tw]B6<ɴ׃M[h4ݾ,s9ox?ʍa@=M,ExE Y ؇|Ⱦ7#Z}z,"fY+|v Ayf_9o~,d]7ކ$`\Y/-L8Lg)/4 fyϝ@g)ZomLQ:>?πpћ}~|5CL{}4M K6{>^]NxVھS2mz'l.cϥ\jRk.Ն kC |=?m) =Sm.ޫ8k\m5}}B3}UAdXRMa|ccztqeϰ.]~g]|/|̪7AV(K @A؁I/=ZMO0:W;b{Rv_6cY-+Cx^)o{ϙf ݽZy(0@q7*ޞKpso0֜^OBT(Wa߄T˷j؜y(j6^BWaY2,I< NcS8{՞x=V bw}#2?^n\Z?=ߐij:󤗀 =OyMBϹ|B\݆3YiUrw`/LUI#ι.d w8ؚgsF)F+STGE˯eϓk_8nWl ؂ ʵ5ohp=Xc~-[[k{9 .k}W9(#F[׾a2-1a;C񳥽q%d |qs}2ֶ>'|%l4wk{>4;}s_5Bk/cژ+2Տ`2^=Ã^+Ҿtΰ=_!Y&^%7/xgIr?KYW,i9~_ zz>K%;ؕn_FF/WPO{PJƩK3{qJ r eFG7@fiPhss9c_{qJ8%],xϛ7:ȮL\ht~6'*,m{`#~Z~ikL5h+"U`ΒbK1=GMfIaWvQ-f;[[^&iiuǩ'xո.δLoo/sܾRi%w=Q>ǽ6pO48|L3`DIi@4W_(c(·OC9h <щaa;?#4 Av-Mp37ki:gJɎ.l.vY.?|4=a.`у栌LpxxRxWJi%ʛeI]'xWNT&R-F pz~Gh]J_lL-*Q-S5jTWR Ut<\CbiUZj)ƪM3"Ka=FY쨞Sb'd@zDlQ[ÜmGfPITxI  5wvTUʳTGy*ٰ7*Ž u-(5PPceY`Lx/MDp{9[IsHe}}?\tFI,SٶAI-K]I[L$"qvai)h҃LtBqFcX+r0f@w}^~WqqX8Ip}0vGY (ީ@X~c}2O(mY3?l Yvm46- $5TY awG2 j=*j3wz'ք7ըZwP i vj9خʰaaX UBim0\W-FacԒjaGշuj}jYSe[uTyJLl [|&<[Rȿ0 1I= xol1mu^g׷Szroٷ8%\go>FꥯZgSW]K(Z}h&^P0WSƹEk&R_Eϧ&b7}aHEuTC-#C_I)t>nw^,Zoh 1Kf^`MHS4&+ZkZ7H= =4}XF=~K0[쵹n"^Jg4Mpx'Z4]79 tD@!Z/@޷Z*}ϐ&TnrZ z;@v®MgL~-o#9V)nE]:PI=ܱ4ItA_#~ž9l?Dim SP1Hq#Ԗ=GDwG0f >W"·Ooa!c).Mpo`܍pZ^S:|kmmL E.=֡7 n؏97ُuC7q*P8«1V2<Y!>:oҬXP\={\g|s[i:9SmS޵_溋Z&b,Hû?ߴRwZ20J&dO)T?|F JΰȰ ߏtG'dnL"ȣ<(G峨nWcȋ|B#:1]~7&c4~6F >'8%k_wt28Ȥo p~$/9Aӧ=1}cwd9?mc FoC_ }ބ^!_|M1^6iF~Gd5?go1qEUˡ c-4Cٿ$korfAjES wo5_vYYT d=Hw@?\m0ʖfF? Yr=Qd/%)hhkx!>|Fjr:NdQY]5@q'0=6 r*!21;,?j!>c1L@Ͱygj(n$AD3\/@d=#;{xޫ"wj?o+ y[s].64vTrm-&\dZx}(יLrxl+|ɴ—D M]W揵'ǝK&fva!~x3MmaiO_.ouvo2a%]=L8ǁk®o~h0 5} yK;WF|e5lBa_|&\^5xuLKagtVO&\30_⏀ gT~>.6Oa9z7i w{(wⷁo 30lg/˄˻מ|67YwzGZh}/w6go wͻ;wޅ(ӄ͞_lMC|w%#>|Iz΋mMaq_=ߺ9TC= w?yͻ:މ*m ww=7[*wm(DfۼEwPDMo:͞=6;9+Hel\tQ!Z=KK;Twl}ktVz]zܵaN5lйVZj5t XIt(AZ ASH>˷e{V*hUp+tsdNDwt.N7i 6=D' [`̷1Dƀ{| <-?ܞd h4_߅oTK3jaڀyz`ZNO9KSa5`bZעNg AOU@jI6xk{vIj$MQUOi0S#uZkϽG:TE lPUak쵉aknO=#l6Ұ^k 3x{]bS–=A=l\B^9W QQ5kMį7q a ]9 cpzw8GuB׳s쳜cBIϼ=aW'a|fA#N}ob%Tb߉ Gž}Om7]y7+˽(Jܥ콆 a.^;w%Q\=u"{j3g} Ÿ/jupwsַ˝|3*{u k={ _y~9%xxqG{^4%ܓN ?ꂺ@7[FpMz(\ ·S&r?g$$u틊jS.+Ÿ*)_+Q?PGPGiYJJx'<]mbmF)ldmWms(oR6-d0n`]b>لNhW/7ֲg;֫-7~ 4;tURw} XFY;zdC=)w]?:} o旅V+Z C)ޅP6`.55,] Vjgvc^L aTϱt~-A-lMsT>M7C.ڌ`hUcq-^Bks[탣Jgr_3Z@;cn<;ecwOwZBEqcܳيϭGI9zdW]OIor# M*tF^^$9Л\~o;oU sϖs-WKBW=ObE|j>=)RN;7R| ӭx=ߢzyX?܈Lߑ8=QzsVͷ|ݾYbO)a0ɝ/MXX_1C/ȓ }X715H '!(ˋNg ϻLQ7t=n1daľ|"],F2b~t.a4]~ $Vzb'\#:@t;_iR ҉l?T }}lGs)yp5ž#N:}Jc~ۘsyH~߈ˠ{b!exu +ލK{M;{vb=ۈs}LuڅJ; [M#DF#f3㥮[e!qiKEjЦ jƞ"@uiVlNEB94x!-L< X¡QHɴC<7/%_4`is\/mH^^Ku˺Ƭ+#4ugT\o EstϬz%!_}Sq;c)\.%jAZUX-Zx/4RtzLSez:>zHLK}EvΓϵsd+}tIw8݋|Oc}]"hg)ɻXHz#ϝ*%ۨ%$];N^C[9 \%˴R|FDc'Ld7GC<19Y ~YS+Xr} i c<勽TqHb>|>~"%;Ǔd"@&i,b_s~&1|&IEH> ϐd>k7#|+S?'Y1><8#mJb{4ҍ/ bҙ/"Ə7T7>_&R҄/'-+e$ f Hl_GU&_K7:YinYj|#I";*앿Pbo>Y~Y˷}r>>N-?%yM /H>b%6⟓97vH[⇈$FX" ?J.$FEg_sy5W]_۟uzԤicfks=2mzЌ kB1fNb߱'ڼ~a;;f!Ξve,a{HLf,K7<xƶ{c{b|iob}qgb<=oLDܪ^ol7djAFƯFqBXԍ?qVE9 UPMyTB}e4Q:@[tQ A0:^٭QV_To*S ez@鬞V:#ղ$ڐj7r$htVC>5X4V׍S{F!CɏF8m Lc.P 7BE7S@fLF;36ſn|8?` Fބ>FF %  >cra}Av}yZ==aN0=#PMߛp~0AӿO8%|'JCOF&Ԧ{4#]NN'# F ȈwBY6!R S2EeSaJ>J.}mM@}eAeS(PUI T=Yi2\wGHn{$i2fI#w_Z-|Wgբ.JWsETϠd=R_Mq&VϜ"}{TZbs }3(<+|ja~#ΠhpNJsmLn(|_9~cø>ιKe lojW3O>qލ XoK Xc|Swn7gK"fw:a[MAy ] +k5wovou im~ķ~dVs}I`l)||bb\_O5/2GG=` U9PQ%oTsuL1wL<'/4Awوmo{*9&q=Z^Ē{@E#|Sk⿺bhiT鍊=& Ԃ ?(7{.^؁#XO[43&ޅ&fkEu ޳묔uA`Z-ĺU|V&X;|PT m޷nlWl&|-۟e?׷Js!OmrfҲ~/~KEs} *n4 ~nn?b?YX 쿲>U:{~ KI({$XɀX׊{3!.M2}ȃؑ927o'F"+}DB#M)ZW|uj e'U 67$Έ<>]'< 9yuC;~~[f82[}7W-7̀NjY7z>AZ=,l `]ElқLkqB 9n(-ΎNWߘ,6ݽ'=+~ܶ<d7w"w&syk@Z&F2765!B&> .n̷6Qu|c34w Aӣ+j}Ms."x=c/>^~ְ#戴UyĺVZQwSlXF̸7%)#sTO^7e7}SQ_&|/2qkf3vptwtJuwHxk_uVtO6}B Z̫6R'4<_$No8EĂ{l:$∡T>#">1N- ;A_[g`(u[gISl-d߾(ykzdU⸦7jɝ 4&);g'~‡cXZ> [jORkKmO-% [JE'j  -nopnXC7cg<*z ]Sa_DkK'fc&]sgjƂfؑR~1s@8i[gFĝH#|GbMj ݍzUĠ*2FiW<@FeL6RW#*ݕr [^LE*evf{կ—j,<G\OAe30 m!cȴED y8;AEw[ߢP7Sr'S: q>G{=ݸ_Tg2V3m̡ڛH#8?UVgҵWK-]eg|-QϷ[O.R.dS~5.19ÑiҪLWcKoVjZ<]3.nvmykf*\a &;ĸV _Kbn/Ys{kukQq~;]2QvQ~[yr+/k Yx?k[c2]~D_%~?s-2&lsdAU;?ROl:DH&[ק] nDv*m5Ikgq(Cs~os8H.hS#>E!Ћ;tuϿڽnؕk%ҳ%Y{^+%vfJJp^~\?2垛HZ(CשW.iݗw-=:kp'.!v'5ezCQ-ח֍~}# ;7EqןPG6<c`+Nou$;<32?VgtG ôW$ _` ^Cy19+c&8mT{zO$kZ_u݅i7ͣu۴ǠE0bK2Zg[1·HY)V:(kMWbM 1N{u(gS4Cjup(R77bkbYVkP.(sg![k d]zQZ[O\U2C\ ?ڡ6oZ<$Li Z{؇N׉Z|o/Mk1m7j) qkj^}%@#߀7 v+Zs;S ]~vi:,bZ ,>dfˣEͅmE]Q^V~W߱V.VqkQĝFfug|e~e aW&jwa^ ыWHnC]nv~7e4C񈭌ԍ.xyNIJᲞ4VDL<F.`F>0oȁ[}b#vK-ƭEl`O@lY.AQ; ?4/#WRYR '˿Р4&T4g(PP=/akPwGĸV3(Xa Q;A} 'B}4֟|2d{!bG4џz <V uˢ;}M=U"1j=Dž,O G`' Ի@W~ɚPw,? 7zt,ܜqkN$;`ö}4:>X-a-2Z7Ŷ-km`CM0<}cx6a6!mu1cB 33PHve Sht{.axTٯˏ`_x>ex ߙמ~GضU6Mob7ͨ g5 hT6]+lCQr!&Q۳h?'%. 3BFOy1%_FAlbvg"E6yuL|6qTaCy#'*/BLU ۾ 6ޜl^( If&aYژ~ .1iiOM#&[C> 6`:92f盠3R'm"^+*(nޭWA;"bB3Z\*moEHAЈ/t!Պy&PO|M~o(Se(ɟU[HC > #N'LmHCV>nAD?!⒈9gTwG!Ƈ`IA|b3oKfO8oɪ;0ZΛ2iQ8jv#fo;Xuo. BH az4gfGa2G0mӅ3&o5;ûf;xl أ.B&iך:5lfOC9%l a>ghF(LL2f[!j^mfPO$mC1?)jb.fs(+eb~3w'KWjl6J|ܙwŔ_Fl1!Rt^&Xyht'fͬyh_[Ԩj B{稙T|`ցFm4!U>~~1jOFM8nd(m85j#`ԃCg 6`>js,{Qv`ߵ̒v=7a_(oU=Y}Yu, >x( k?\eT|eZ\JK˰]n őJ OB+=eE\:_aZW7ya_9ݸQ[ٯc7"nq'A;g#mN./g(ؗA{enҖF"G)ݤ$e9툘v4{("Is_b V72?ysO| _fh4CqZm81r*qn`w~XȺ6 6 7x`~m`#HBsmQNd:ĬBr%XX +k=$]iEyV | 0yAVP7?+L̃ޚk_bɑ5@r`& ̏W֢}べ080B|>iѵX^dx#giL ]ki*0a`-k3wc:Hbk&Ax 0&z.Qs5w,1T/0 {|q-ckCQ/yƲ @`܎?x25w, e2gPHDףTR65P3`P9^^pIrApgq8e _]׹La kW ;5ēpm#/d Y}}1x [PQH|ѱқ@XoVOxՊw}߉;z@(<2y"㞝WEyYa AKpߏ 5huTeEޖwd]EDYZ]` W6@t N pSk!jWVGhbEі;Z!a=y'pQi]hRCPҊ͖y]*":FSGM17+j a]+c&֟[mZX{p7_^? ᴿR蚒G%Rt /ȵ*U{}t-Lb{Atܚ3\Cyb xb:Ŷw.VACObDĥ:nm1ء9 `Cѵ Ҿ{"3ît56E\S^)j1zx;=߲"oy](Pt=y.卡(Nl5~A" aDF9ZH*ſGMGK{n\=w LA8cքft~SW;+%{Cf Ό!:1ڞ_3]rUN+ߋ>uc|lE[C3j'vQݵGZļufUXkF@ERa=Fmf-x٬KʐfF@Ilk^7߼f M7)eQs"J0ڬftSS[3ώunV0`7^Xf9xļܑw''][AڵNe Rs 4Cۘѹa1O!ђR~Q~}Yj XDQVB7KB(2Ed^CQCyeBfq(t'TȌbBػs6_pYr<tX@f@y" ɥLBhov5_a>jy ǞVǍbQ}s^$m|gϖQwn#?|aDIO*9#X`h6hGK^6mcoA9C*#/bh翈ȃci)'IIz3,ˤk}D]\NUGC}ej/_cWKQ;"rWZB/_WC}#aoL= s}iԷ^- o8{NO`0c{0lXK^d%|LK,|K&12ΐptm * -Bj4EUi_G;Ic #eoIKWfյ/L:ct09IjOQ՜I[|{K [wiYKtOUG@_n.M)/ImJB]5B]5$uW Zκ@O_?#|ao:-4 Ʒ6֠^C]ހ FQWfF^WxLxIפ|O$Pg,ΑH)YuQ=I5KIrQW%I1[ڍ-z5oD\ߦ}6"3Ȯ6"bf܆4acaJr_)fF# |O=jPޖY8xucz͑?ΉGt8Q X8 -QXhr.B9|ELW2)?WQRf3IA &"dd"I Gڅ/x`:#X.K+Wu4#؁ v}@BO\phMSCtMx Cw}psz6\*ve{mvZ'wۻc")h!$6mg*IQoϕ)›teKeMx8T^$Ӕ^z)!QOn MW ,2;)g2:xL A] @] %}b3 n tU&lD? Q_]PWR=ԓE{єpO:-( nEѯ5pz*\^ NU;:a@rڟ\VJ/r/*}Lޯ  |^lGl /C-BSg))JtfhEۊybOwƶkwq_uRQIYڸm\v wt"֋d:]X˞qCЎ[FHI($UIc=eQ]ֲus93\Q_Z 3C@jh-CFhzjCn(N pF]M%zMJIw^uqb?UwO&A^d/4H_d#z{@or5:}~~U,h=[-_-R 9_Kl>|z>5S͍ )')RMͅVY~WMoQu=<onDLHlt[=B9vU[>n,'XNKPzėXER,~~կ~|Zd IG>GɘT$]XX|峅|[]eb}720}Mb_e>uvfg I#y1?`Fb Ev.f? {qs+egt.~SQ:x/4~)yxvNfDc{i*>žx#9g8b_l'>1?}Icm $O?oe=z2guޥ&ڝA;mL?Il{:^ چ] _"R-2[%[H"a hSL5c{uF FLGɺ4fsh+6 y"M_<OJl,m(dСQ—/yCQh}֗6|n C]/%ɺeic:3Za*7ku"|U~Wg`mh=͐/>東K|_~րVguh5 ̪r{< )x[JR*-*"<--ɪx<M}_9X1z7+L .VYZ>乍w;i>ahNVوsyko)[XnrP%ziYb@bU,HfZN@LELĞE͠5'4aSs TIbh:=)2VS= Db=m$οB>"Z@h9K>G$_hq;zE'E1>.O3}],}|[gmΒM '!oUĭAL]e֎eڏd)>#"K{郱HY2j! d6,{R%qmLg"Xc'S#T&dJ֎d{2ءcZ2ש,ߗw'9՛ ߱w\%GĐt#ExT#3G-{'9tp("t1Et$'pv&{3+k؃|9ݼx%SmX|'#^ro#&>lDz'{ǒ|̧y}b1F$#2?C2EߌXLY>~ÎSkI~1ϑer$^{?\u}n➧QCA{E!xj|ȴA37ty Lߛ9}>,kv4_b ٜ5Uf+la#b:cKbט #]fv+ꎩGEt9{-ϝ3ٞ7|sgϚg,]lz}O?%d:ӜH3 gw&YHϚiTk8)lsjΥt6R15=Eb/ r:\Ckb,-ʟ-2@ǘoҧ0M5 V*ExDg}s<̏Hl)tii |ዹR=t%f|ak#%+JM5СI:Ԝ \\"ꎷo:8=;]495e^|Isb}g5Vۛ8+C=#e%G|f/p|X^`1׸Oݾx`~uI]=Ȟ~ObZVd9o;G2/\A )žk)Z͈~͟.0ɂ&_[ʽS8#'篢yJtfF|zjm|5#oc,Ms㳾DS!Sg+.E|@YKDd b0  # A" +\'@= +\(1$ix]xETB(A"A6Pican7ivZҜtpeEv$m>,3Hna1²oaffY̊eaXNz_^2,2bXV$EXi%ĮX\+*pнz8}~fGaHgɌQ%O>*h1V0ILK6 UAx##chLMōxlu NRsjHt<(`QMXגuFέYJY]z֢Bzeʦ+ gYF8Wh,&B Lm6Np6i:αoA~!yKX+==GX{;maSJukk]NkoPl`Č +Oz%㐞)p/?Aj|}OìP9wEE6_ 1eې>43D/-33_E?)wˌ{'g  "?v=xBa {.=^bmFLQ~ V c&X鯬 RW,fX(+Ϡ+؅ VO`sQ.(o/e0t j:~K |tq {ˌ:v1'i <ŒKf=wIx+U/b܌bZh&f}|"z eN@64SR/0>a_D@_?bEK|bSO>}>zHkLT8/AZ1tjb&+s0ZK2FCz=1gFNfx$X_P^`4 vϑP;ba/ʛ_ wF?&ψAѿZNw+hwU .1Қ*{m Z0nKj,k8U'' ,zn\ō-JpzMw蒥u6]oTJuEh(82˝H1UcXa1Fy{Xp̩b1ˑb0Gǜ)){Xp̩b0=R,8HHt#źb)e)RL)uz몁"E3ZiMH/I+Gzݐiʻ Wp"I IFz0HlX:[镍~ NHlH4+镕k%`Wk=+J'^J7ҫWb Gvc]خ|lW>+ەvc]خ|lW>+ەvc]خ|lW>+ە]^C|UBQf.mh]Dy81k=;sFO&EþP^ozK~|e^$'ILD:d;:c㥻}ݓ0VA/W^bL{w5{ûu^NK&h~x~UrߟUq7{oN9GxN:e ,?Roh^[GO}${Zʮ nz:>Dи{XE!4tqߝ=|!vxSMxH zૹ5ߣchx^H%Hz6ѳc,"]P-݌E|z6􌿛1{J%U:`=qtgr&c,w0nǭcǨߍ*=jW;s;Ζ~o1 ,oT\ׇ8 y~7M̋OiDx;c{@/x@zJMXގ)c,qn?P17yUdScEςcSCpz:W󥇃s=| pq?>ʃ~g~Gyמ3B?stboxgp~]Zպ\g^t+,sk΄s(T=ɺcY;kur2c{Hװ~Tr'tē^wXb]Q->m[(vpf^E,\_@Ej2,%&P و[ʅr"TYbjﴐ Ez8tcۂ?7WXYxXcƎ{ێs7c%7mE?q8ôc/|\q.aa/|\\ô_/|\o.aa/|\o. u3_/|޶o:kq.|Nsϫa{J+7{'\Ÿ+qXs7 a8,.0Znnm7C>?|L 7*__oW|/(8|~~ 7*__oW|gAA7+_PqPoT>|c/د|AA7+_PqPoT>|c㗀|/(X'yqoyqoC|<8758) Gm|cgn*_8;ܱj2{e_YkW4=5^g]bіb\F}8+ǖϓAsy!ܺH;GJ^$8:iD+mMEkz] 1\*#xy<%IsS̳'3Q: "F<͖k ׯKp\ z,}I棈mEs<Aů65Dd 0  # A"@ڷ`!YEj'@=@ڷ`!YEjݰv*/'Sx= |s7] !BFã_ GD T,B<R`UkhVKʇT"D'V,UQH^Kr ?ٸBP3]=:Pqr}!%@~ B /[ɣt7 \+BiyurFuof!RRa>˭W2wdd<Hf͟ҟփz 0=S 2___o^Wg$T"qh!D P)[w4N\qc7x[u5 +g|f}a{} Pw gԿZ&  0]G3Bs! | dOА w^߿buZZ ]+Ly vBHiF( Bo4 N@J /\41+ j's:=9rq\KJ#?!J9}!A!q.9P_2hIg.@ڲd\:$I Ws-ǧC2NuZ(^ F1`s:wvq\>#Ay|-Oclwz\x:kuF屟N}9I =8 ӀƼy<z vGG<>&&//Zvy oGk%3ɬ)MnA~r[m2-뵨~͇ä{XN^q&Ҙjzyt'D) P9(`0c\mHKy7:鹛B{ɨb~ȓC>Ԓ㞇VBZZ)4B),n})p5 Vp Bӏ*Hgp|-DzS4fqt#h>M=Wz C60?+e C|i?~Uz2 x 6˨X+ Kit7hE-ԫjxh$]CFä|̙ar#RrVJZ*lh462:! HoZi0Áҷ--a[dS<$]%M;`"E#y1aYe/y[6j5Yج ,s%dO?6W}ߠ~kֶ;`ޣO++Jaz,fRRݓ ʕF+ X7CYDt2x{-?n,C2`ZX@1E΄t[ S qۘç GW, ^O'N+T {rT9M"weiK+:mціHB:8AUr_byAih$JE?CFY?KlHoP2XQ;$t5hR p)Nt˂,VZ:t6])GZ-)..Z\iBڠ.K/j]t:}?i o)~//7YяSp|Rc!.Tȟ峠^ԟn YOA|\,Uv  ν' D(Pj3K *Kp|lBk,oLB5n Zcyj+}"|6NҦME?F ʏ@PhW C8ZѮ'5?~OUZ ~M_`y ҏ@~9zw@en1pimgyt-,FYޫ񰼠9+Y裶䨽!͵^cԞklnji+䬷N<=+"ߗ;%jbc1 H~@_ L dﴘ;.U?}Ğc;D z.[}⿼Ubx{Z|+J}6jWΉAo-oy,@<,/lyװ_U4(e %P|)E$W申^KqrJ|]9)|,?@iW vB45IVO^(UyeX<-RvVv`_4ozTr常^9-ޭdvWJ[Xޭ e a+hnOd己XR)W+7͵r@i핯SWQ^(~AR%wWޖ*;+g_OETr\\!KV2tţtVB |"/$Oȟ?? QH'jn=f9CyXhjC64_形%3{-4"T|4;=):~S DRċz[>^{xA"1OQᓕ*7N>wNgAVޒY.gI흛w%@G-~¿& +LԍSJO%H%?Fd^{W ?@7WN3z\%'8"Ws.(t;#}.UqA>ߑroH+ 9)sۥD~ԛ4M្SiR{.~zgeKz3\cW#Ij45߿noj:n8bR ;EIX8etE-.bgi)v9\N.!~>7x{. 6A2 nKc}$,Yd<{&&(7Yϟ+&|3d{5&7<[E.$Yέs[xn}e4/.έnqܿ%ͼ\"Cʷ@Y?3O?'wvϕ{QQWik"xm>vbak%OK!oVr g0o0Z' UYVW:,9Pf?` nx/Zd_"h92'/^j^nZWnx~CG.hX^zp|yon=Gp3q13 Deʼۑl f uŸm)+eg}3|Bϊ7{ 4RO`oS,4Y˘g1cJ7~,elʶ;kSc1}`x^5#0FcWc3Vxh@g!y~w.ǀ zO ]o#X'Eџd_crp#L}XOa8}=C;kgy`-mrV9qL2ĥRpk9tIf)q3W((>8( .'_~1Tx(p駤qFˁDc?':t> yQe7nYN!H:(wSu$;Q!p3߸%:WAvcС`_)E)PZ!ߚē.cҗ3"1 _A|wZb1Ch$3`x_Bl2cZCz(sg?s7̡7dxxm̡:~L{a 7dn8ṁ Nf7pKtz2^g-'Q=洗~ 4|OAj׬Oo80m/S'Yi/=򇁆 ~~gȉPq9d<aƃ&Qsx+?Wr%ߣ 467rp#kn1._B޺;UBb{ܛ\[/\{ y@ Cn;P6{F\)Θͱ‚+ۗ:e /2 О ڲ{\zٚ?%'Vl|7e-4Rg,3V=T>:GB{t%*BRB4rdȭ"Yc:~'Ǻ?J<$s[8s~>%8 ))n~KMDsYqze8t_C52yw\&@|L*9\dCd :W miA*\L&mĦe2YG2<G&WaC&qLb$;N2)AhE;tof7m}ʼ}; 2y B1]d2&cXy}{3%@D<}9{)ތބbٛtdBZflU `GfCmb(0 kmOk %ʺH A!v2~iM1*CXakgԚBi'{rA@;~wՉPQb/~5"|0n+|%e@z``|]kTlqzĦͦkV~vv錬k7=y4khŒBQtbmQq|}2}=p_ :5⫖5B&^BiL4ғA%l.4R=)<:~RXlVobnR!Xʎ(4ވ\rӥDN"< =+GKd"^^kUnXtV/eڵL?aYN@2 bFde.74sAzʳXRYU~YYm j&3V d[3 Mf+\"=!B[@>!u=.匧֘-٬lM>6LFl̃2I0#!bȲ ?jKr9Ysޯk06xېyW(" l7CX _8:zM|9l B>ōytϻw@ fs*=_lSG.:j0@ j=oklKIl1 8OM P`kb74k[oC~Blk%Q,~f<0;CxUX9A E꣭}̗B._9}gj}J8M;#m+ Ծ&\m8Ҿo~xk۾#ķybGBE~k:O}J0'5BYo~2Z1X8M?F훞2~#MhBwű:ްHU 8.Pt 7wnGGF~7% *nqG{Zz_d %wm(mgx>w'_г>NGY̷>ٿ^x)-shhĉ +!ÿw3I6Ϥ=qa:Qo?CC᠏3wB 3]|,aGGKS9llŦ0\/y4\}lj" B+D~={,..ƴgl<-ςYÉV Xl5oo?пxEo?P{\(@uolob}MJL&W2c[(5o]_Z|F.GoR9 ȴX>?c(Dd  0   # A "M(.trѲ()( '@=!(.trѲ(Ȍ@K/J'x} Tŕw~Oϓa$(0a@0>A11PAgh4d&7[H؍"k$l\ffߺsqovzN:S !ɿ7'!}!͛EAl5UԓԿ yw$!/@H- 9"PT7h7hA-^`iiǶH 3qCěM]2=jډ8K}Wo.9,]r5̺J,#лpBuUL|Ǟy. "p("/}VKS|~^ԓ{v=ͯatB8 ^$hɿAtվj]혿+~; 'ƶ⹄[gΙ}Kҵo&m39s {vWc;CW=-B^D*>i mZr1DӟYˍ5dnY߽~yO#VwHm1y[wϲc"dJ x39`5 2(V]8Yok#W!&TAP `_Ywu#(/19$d7q>5GX< bfϱw2&Az 1w 2^0L۫I0He`:"Բy)b9(5Č$TWqHccqJ:v0ND-iT8c?c!u|K$3^Ս3>* QrICUL0g߳:)~0 <"RYq%FC5Ec6t1-4$XcZm4$XoʶB| :[3{4$Xc:%y+.UH8lGV63֯]yCcuݍ:IShiy;`0y̼n34:ͼ63k0̼:*ֆf3!@0y̼n34:ͼ63k0 OE1뫰ݷzS02Ç^Ji)`;5f 7N|Xfm籧`yfl^ŞJ% `aM°ؓ_l屩V$y ~A! DCx6c21To&YMoѸo#l~'4Њ0;`l-p//~[AfO임_9Ċ(bf5$$C֊qČ!y|G7xiDNqk"2ٸ|OV162 OV-66;ɵ07bwaG6tCjV7[ l->N̊d)r_[%ܶ潊Ə6zQmn%7GBA"m)+))s<8L- ZPʏk>[V~C&iG?7Sp3O(]kku2_RI"ʛ=-d<;_f/?+[+Ilx#\dpLӆC1J+]9^:ކF y%9ϵq*s sdhy>r<9dkcjM`L s Q:zAj&wS)ZPywS,cRJ?Iɟ۔<S|1]|i\DFkQT_zZƦ[a\!]ab5( Sx|迂4Auk歕}eӻə5S>de&FV'J +('9'I#RcUٹrMk5 3x4+9Ufs.#]KN_O٥U:إq/01j7sʛ"eB#sZҏD7&K &nݬZc,h" `W2ҼQѲ{֒%Ve]Dv:#zy=`uFS&'h[š cb/~o-T -jI[ZVD͹YWjۨ"KoÇWzj!mR![~dc_i+jEvI}Smͼ9պۚ+Lsr|"V];f1`Y*`nvH]P촺5c,VeO.7}C^-Z%U~u otg[S/eyK6VQԔg}\/;|*?S~X_6VUegfcY_vVUeg'>/- ֒rKn[rvHcO*?7i{gwK5-{`oaQkc/dej2*IVCM9[/pqUPqV dn?dU~ӭ򇚌srqUВVW[8*l9U,Y叐>l'}6>{`M!-眭?$g*d?Bjr*sNr6򇴜sʿIΦUsVlZhɥUuV2_q^XcZAu>JGT?4)KCV,YX?daHӅ@VOZ!&BC| MpkjYMXڰђ *j 2Vɩg2"ٵt46)9^_kmO2ٵ=UʗOrO:ucZ+l-/o ];:BT4MRNH 1O7O[;nʠ:S3}:F +FAeoT;r>"\%}L4.p&^13pm q7tuW{wNⱒ1]N6DӾ_#S_9=''oyzm!c M\y16z =W,7Niy^gm4V>Ui$Ӹ?v8&<&xi.T>eB+db8?їO𻣰_8Md. 7aN? OQ|e>*KO?ߤiuIc }>{'h? Nt?_o°ЋQ\68 5b {`tr:!5ݠx| pxc(BP/ψ~F$sXfk- a"ǡ$A4X$A ^wo%zK~-'$zݹKm #IzYL~ngD;I?ug6 z\8&ם$?4$zNBL>/I}-,4ם%o^w.iU^wVaE}/7~D;S*5O]D[8vKXН=eti^wK t[wF%zݹU@7_ugY Ӎ$֝o%WmP+A ?$z9XnnH; N]ם%_; ^w=@?GmݹZ~sͥJs$z[ݙ\~н ?\HA佳ԭφf_)U`oY=/Ms'<Eq6w=2!̔MV9>e&F㐇A}H2V֋a[{y[B/?xgzgT_{{E:]^6*1T_rRM)ߦw+JyRީ)mJyRޠdBs#R"|Rޭw+w+w+))++))GJIR>H-Ǵ\>N)__w)]Jj|RI)ߤPw((hlgr|@S~@)?oSʷ)JyRީw*mJyRޠ9;n߃˅S~7s_svbh3(E잝M~ 2w+A_Rwm[ Cg@B r;L)Y SBנOW;\3*K.7d;6_R^E_: >N )Ꙝ__p/ {z:zg)W쇜:yK(ꙡ_sO?`__uBEp)zi)Wם7!c;\gBS 7P\-nu9_MjN$9_gBSiBLbo6Pdި[7Ms+5MgGH^ouw1^P'~0s>mUg< j2x>USFk .bS V縬.^?к…JxcU|Ij:4"\{nE,+'A \$UJNۉ:/пǒǦ|;qK ydL3{'{(H֑ӯ=yaZRd=Ӌm [槞I¿\\!:; @"l+V]-E|ZUUT|M"< >e2k̫C퐇%Yqbe>TZi2|:E/UuHKԧL_]T|m,@Uw@#@:פ2| _ۋ_֯'TG}__4r_VƗ<%a/UQg_|_9K_?RK|՝]8|ZƗ<(m| |%z>Q8|Z5/y~ .~*?ꓗW| _Oõ>/{7|더qϯpwT0g{=w8ۅg"sc ^u%Z$߇g}r gO 8`z_85u=;z6spZ8{ZL+pV3p8bgQB36}\5׳ (ׯϋkDS8?Jgn)VX/S9^bͭCY)m9Dc|%a>Y02 ⧹:a[GnpwK/Wݾ>Wϧ^z[6gg밊u(tEBLp.X㨋=ǛAoT1.阬>cM>kԵp13/𽯓/9ZjM՝(p}. v~qޯ}O"ze}FIه]嵾0[ϋ d̗sI&ͻ4wē8KC5bgvEu'Vsc:e^wtt+KO ?|p ?5 FucR{'#>̃/K/z[>|We05+cev| 6?y_7:_ns靓sM/s!#˗>}}Do~1.}[t Io~+}|ѿ-$/v~/]Do ;PU?/b'}0A/Iz;_ 3_|?fDo狾6["Iz;_w {$z;_b۹sr͓6mMعAm;_u =~[:Bm;_\Iv9@s=B+鶝/z} (GQ/ I|ѯ[$z;_}˿*G9 ;t Υ;%z;_oHv ϓ`}dCNw>u4l"Z˳!{l}чI}ѫwW4IL>J{BǬ싾싾싾9}abE_37v{9 b}Fy^; {/|${dwmI':Bս98q}+U8/E#m__g>_H곕/b[_ s',/;__;"_+__^:V苹n}?CL9/E}__>Yh|s:67|s-p/b[_kdl|s&WpE_u.$++__ovb|c"FeJLmq:'}GѷϕAv˃yE?`< 0W=ֿs$q%a/ GD}S~\ -+3E_G +࿌JvEC|nQ^|}Ik =WoeXWK_/|Q9UA}яX/)_hzC_e|L}/;_|U |Eo\@Nc HPE#_ 1ws4Q hFDo$? LZ _KHϙ_:wWO迓/-M _^_6 }_9S_~KR)wץ7_-}|⋾/z?U'?ꓗz SW$\|ї?3E_&?ꓗ//: rE_Wx}^K'/ _4D/2sgTg{Y|73о{!}їq?3E_8k8Sq +]p8;d1/")g*^yVg=48}g9S_Eg*^yَ{1&3/|їq?3E_8W^g]p:3 ˃/2sg#T gp8f_ _eL})N8Sq +|ps#8}g9S_ET gR8fg[48}yqo_YfBOMCqg/uK臑-8g=F~}I"Ƅ}T1N[SS/z) ~N~c\/R]4z(|IOh)SV轐cҿL}$Z-Fެ|C3LcO9U'drn|f~3gx1bsO74__6Ue_^ap./bXo^󦮅:_/Mwk߅ݠ{0iV?fz/^zZ :+o^?O'oFx[ŝne*cЭy1[&?Mw=$缕_y'NquRRWeqA&*r1 :*/(CJ?tA6ՒJ8L͚0s9> WG|rDY9>=j8Ԟ/zx9370fMWm>IdMH_($*Z&S8\CSViȂ*Dd y 0  # A")oRfA"H4n)'@=)oRfA"H4n匜2))x] tEd $#'DQQ z~ fa gynD?XP _%zwz;< |,]IO$SUWUW[;˻ꁟn |W=В kW ^`{*Ըn ndav|看o}ҩ{0@ß|XS<Uj_rGJ/|].yOuW+8D0K!ȚRV4X_Vv:/N.{()Uͥg~58^XR__Q|{ޣ@v~gɗٌ(iFDEǶ0~y7ӡ3dG}Ur2]aJ}FL]םhdYVVjeZYVVje\[ׅʉ.eckTHtUw#;Nv缪ϧmj-zCe o#$ }!Q~g}5OeZYVVkeZYVVUjeZYV@quAVVM&kesZZZcZcZjlV^+[mʶieZ1VVV?D+ ʮʮʦheS;;ZBlVB+{A+{A+۠mʚfVvH+L+L+ӣ"Ѩ_Jf-Pm\X)EZoųШ.h;&NLJ0nuh~.gqKpX)58kq >g8 ^!g;g(&2y:qY^hʚE;ig3*Of.44^LLkfk٣if}fij٥iYLffhiii٣ifff52Ž9G7w tkF 9Ž*v^8XZctx|ށzRw\Q>#xlYɻͣ|z1jV]Q+x<; BI]Qxx<~xUY%}ue_̌_ t<^}VU;ߧW3GmPU`nˁ'q"ꭆvx%ݚu]JnUa3cQXU0OI(If<6=(WFIΣ؈Xy*%ݕ=6 bFIףmjlR91U s>Il2~NDIoM %mɁlY,v3 JK<Υ[g2{r:T+0u&*W1 {`\7!PzZub&s*WQX:W\8w&~f}c2W('j^jw9 WLF*W‘^Ż\DA+z.e+z[ѳsdr;pl6W&r8"ߎqj1\1n͕[dj'9u,t׹:`2V:#8vRXzijLճժpՔ+>^^3la nS2{2GXQ GNT}/^UkwkྋwPKz+H?(/Yz/,jeD(]ٍJW6X]+ Jw~CqdShhl?k4{$|xZHXs(R6!%͝Z:-T:MCFgRLtJǷ:x LtJU:>-Lt WozfTT-rlqs4=ZϿBϣ=;C0DX X`$9yԁMЍ)z,[Ϊ:LJBϕZ LK+=zznB=7dVz~Dyts J&zbB7tj=B=2{Vz>yTG{q'Ug}LUOsk' ]a[ڹ#x0fvE3A8?o*XT1^5[9駠rxu ~|V7nBD_p.Tcuw8J8;jueigbD1jX5eŖhK-,^h˜ 2{:k2gҙɪM>:/(*$<-iyZgABĔ" D =猵P`pDfqG\WD񖀡V>Ysfw†f)$/FѨV7w䳍_;KVh*D/Y:w<-Ww"Fpq'$xSX ixFYɷMf;3pAtN"Ǖ;q${\9WN"Ǖ;q${\9WN"ɕ;n#Ǖ;q${\9WN"#Ǖ;nGq+w~7 #ɕ;ndGq`?\vĕ߭;Y lqrq'3[$m;g!ΕkՊRD jXI;g!N:6tqĝ2+'Gl:8N+'G\:Bĝtqw:qg@j=">Lgswҳq9 wֳ.# t6=gq+=kw:33JZĝN# ҳqS9;CEz8P+=kw:ݸ͈;thp Bݯ#NYUlnK3z8)No"D ,d6;w$OًLŦߖ! w+D1ZqXL8hlEqeg-Z&lV:;YGҌb-ݧ"ec n SN ccp=\SP^%F z)̺mt5(~ ZĈ?2PABD#{I\<+-W#(Vf1ۧG8MƇ3j;#jJjo"m<t$0*Dr>ۃkP}uzz7_?^?PԉڋsW"<%ιK9ߙx,b*=˿B!:x%0!.i]{(mڢWқ%pr /Y~3FbcK7N\qeR7w>9R<X[fc/`zr̪%8%J}Ka?r,U<~M<'Vv6ŝ#.8޿Vٍ̦i_&v̮6ؕƧñ<밈HFվ}#pr^lܿ]='[,GE1Wb<*e"kn/R埔1.3C+N$~72L&__#?!S~ u<\S`3=z3ե'`/lpou|\nCws1x܏|denvׯ]=2cQ~uҏ3.+ØLOq~ mh]IH^O资^K蕄^I襄^#P6+79f0vCTvGժzh> ˾:V \,D^ n1`덣\B 1B_M }='mAB?F+BЁ%ҁاK} $ zBBSBBB_A+B7Bo&fB?D3BďٳJߒY؞a әJ;w;msyv\qE}0 ޮswC$򦍵>j E5`GLJ6`.ϟty>:K_G.<㗺تˇu>LSyDBc߇.߀.߈|ٲu!?ܿf뀁m6\Gl%6\Ol#6|p;býĆ F w6X0Jlx0Fl#6!6Clp=̱HR=D0m6we4粅G`:[̹]m07i< ,%>U&8^YV2 `zQ\X/,1V2-e*>_bLFqf |Z|7{>,l 2˾} Fރ !Q\/,CV2?xlchÌzAf糒{5ipm8^Ykd@9:oŝrnJC!~Bf8^YY< ӟ b{Af9Gi%s2>emt(ζdni/ q;rJ!Bf8^9fSg[t2Gl>@l 2"V2@桬>-d6{{<y/nSy${#ؙwyl+XgCx#{D6>J=L~ wVɿ=kx#V-mkj:l򝱕lOB7/M,s&L1t~&(F_0@ yxEXk|?u/^'l[\GL z٨wID?gh*zy{Ġ6Τޱg ްzGrfMx.s]R3{`{a?S-Cwb!oyj[>֟ksJ\0E|]+!eɉ[×O<~UN"(_.|l _?-5Q?lkrec1r|}km.|#_kK|QM|=*wS/_mkL\IE5(&I|QM|]|ה!xby_u0y)5Kx_Ra86:]HQ~>6ޤrq%߂epgV<g|llg]3wx>!pזyg7JQ~=ٗgqvn™2av|lO 7 ~gN4鍊{L]W[UlH%-S~cC.}lO틗Inzqdt`1JP'C0׵~>{+~m (*|X33b]2f~3O۩tk'z{g)t_`v?+8-G~䩛 O,ړ0yvu9`4M৐`Tz,:-J|}|0@ƏV\B 1B_M }='mAB?F+BЁ%ҁاK} $ zBBSBBB_A+B7Bo&fB?D3B>d]\/6+-g=% eTy޾mզww0ȴ}rYoLj u}¤؈MGX>2/Жy˽e^K,r^ʼU>2/y˽%e^I( ]e'h2Ho"tHܫm۠Ͱ]h`[ F ƈ _#6Nlp/>b}ĆQb]ĆĆ-6 6ƈ cĆ{ %6{pJX݋R``:^g}ߗ#!J"و7i晾 {j8Xct'dS^S[Z֩J2g̼O#gS1vgaz;ܩ3Ǫs6cG1F1 c 9_`%3C!9oAہ.XQ|.'J|/b%s26enM)|&SPOLJ^PH^Hf,׼g6tY@jzWz^ ;Z+l}lS{wiGMN7c>ozD6J¾ zMMGM3)jf&[h7CY6.J~H߳#&XXvXSH߳#vܦl_NzHs6g./x-XV X <dkdg9# 2UdۖgygS%9;m\g%< dk`K}e4ڔmYdS5BMymh?`lzH#7;ʼ3Ƒ몭d;!t%『ۡxsC8%>Gb΄A ˅rODw:CbjO eSy/^n'lw^Իv7wzG;Z4KFVԻU̡ lL!)$Qh]n%3^-lrss21l᥏c<\ѽŵX.c.k#jW:w KxAl`4}\5a:?}v3Rԁ}ՋVCS+ONjY ×g0OywУW<[ki—Z%s&v<;|=T|n"Ϗ|6H|QM|y4w*z֗5 _.$"x_/K|QM|E_w5Uy_u0v|]0wx q.~!qFq *]=[~xLq6!O}&3vxo.'2I@Upvggdtp:!wH{uP"qFq *[8yn4ۻ gH:oU3Wٕ+rUkr8™< 5xgk%(_e gO?;}(pvkA2f;YU\A8['qFq *[8SٜgmGlt\qŁllӹg8[g7tucggү+s*Fqv6F}gA:"ozܜi׽7ԯd 7q t%+Rt o)o&}U1ޚ|qbpwپ7}dC~ٞo{Mɞ&Eյ}ˠ e>x 1u@׌~Y t_X|]j/l]1XY]oOLd7 &8q,_1 t7UL^Ϯo S߆"w I>C.}lO틗INJ{qj{,O:6t}ڵs?ONtuus?i/yHw>` P _KKw$|:rG2F21z+#2MM6">yȌmӶۏ&k_>6Y[&%>UBnΏ{;U$VWa~5(kh} T}}9>E GG*?|Dd 0   # A "#|YqT!J?\9'@=|YqT!J?r"x=TEz޼3,ʱUEV f 8 {BJ+&9(u)8V ].1UTB*q$rǛ~=޼7fv*C~~_aBv\Uj!ͭ[JAN!8mm| m- @CpL|=sld >c4wCO 0DcRX :{vC|ay@x |Him3<]˿8>>.a[MNuA(L#)Y ?Y:߽Hi"Q+jFOR1'x8Y(~3Y ?Nyy>9^,\:['i'[jg7'<,bo 9SLsd6a ueKL yhݦ\39~b'jaDO!9LLGMC2o5HhhZq Gc-Eopf7e{x&O0Ho,SHhaSW=gﶝ,r6$08~ct\Tvnۓ_m(͏̃W: 9!R2 ,ilaf9L~m"h(93eSs#͟T1bRG|1gnd+4QCgu1}ޔcx|D iW伡B9-6,dx Fz|,߂Is8ёJh5!gilGЎ= &K2VŴgH,!䔁i ﮱ׌ޏ,aA0VPp=jYQ#>v`x.FlZA3J$NnNev:l].[heEFZ.vJneuQT+"Hն6=|&s]) ^r̷KKnKVEvl^r;hILyIԑWj>9JH+ۘ&H(7Xy[6~G)"Y2s`K~VGT0NVq̀E*EE8*AOEkkdÍehQ?:Jn40OUy5ɇ85Zh2 n߳oۖ<|׾yBa϶-3@Chb$ݱaW1Z8)_nҭK~s|טJF1~ |M~da{үӾV䙀nX%w){s6ֲt }@5!}fZyt?)pviRt:]sW֓E=޻!]8~ 8$+V^5#;\^65}e=y_l_w}m/Idu*YVד~PB&4q'Mxx7M䨼 eNb`(#qLt'p{Y:}4 R1}肐Mǥme/HegoL\ N(j&¡RiD S`)6]ŏ_ ~ҏxcKujq\h Vsh{ k'h"DD5HΟUY(ONp{pJq㯌LcuKF84^axj\dN E)G{޷*hY/MBosYM7zp8#g?gh3UPC\lRqx ~|NE6AeNNFgq7}NEiJvߓpӝWOrs 7Ih?q[-םWQEw&bT%56]f5;m͎Qd77;17LmwXZէ ַu\_ro'uAǗ ΓkvoB}f3C申m\49ɕ; C#_P$T?ԟP(uJ:~RPoOLESeƘŘ>>^Wd]|+;t(Tѕzb}K:{g[!_t(iNݱq8^h|L(0q}CY 50Ox.+C*=J0i`' fl0oh_ 0$|GtKfhTotqK ܼcƿ(c(G79:dU;!b_JxMbnVy܊(t [`N]ESe lny#5$>)z0U;3~|tsk%_Bԑ81۸$ΡKd;^4Iz }rl2\üII{ȦS7[֤eҞf(v5ձOL" /bZ-˯a{K12.(TN/>GR}i Q_x ,gfصwέM w =B}Cٞ7v <!6*+'ȃGWouU$Kɋ5\הTb3>.ͱwI|h1fs~PNJk?:Hi(ärP P+ŵY_kgZ6X SƊg\|kfGi6߅ :QH:6ndWO~tn?׹ѹ#\׽FTs{Y.й%:[&^0?{-qS kǨt[ܮs2OWIm&"ZtϦK>6?2Iy$ľF0OmPn<$=xęrLH|0b_#L;0RsΉd"5d}DF-8]lNMvmQ(1|ľN+UN>26N<b_^W7Hyž&m:拟N 8= WKYb{ :tY/:utZ脇O(kjc_ ZX7PI9yB}}HOYO;[1Ǿn-{2O;U82LJHb~JM im߇ǾZ8U7 {Ϥפ`xTZzc_3UqkC}=דs0zn}~#V.y6!}jc_ό_J}m!F乘[[ +>N_V?-.Ju%D O6t'+͇3I.0b_[=d͖eZ"Oy6K'%SW7A&]Mb")0ⰲ>K6D} Z sHQ1 =׺ƾ6OHkV ǦB_ט[!ӷt-=o`Oczޙ)frz2Y۽˖DqK |W_s0?.}X|3~Ԋ}4|exDvY=MDd L0   # A "#MGo!>(0 LO'@=LGo!>(0 X /F(.Lx} Tŕw=7*n0ytF l$ *A(k$B| E%G|Pͺߪ$C~眪]}i;wԹuobR;cXblc9c|1]yf`Kݛ'3k(Y鼥_#Qs;ݝc5Z4&{l}e]&ehdKWUl(79h#s(R"\Qz^8 @5{dȱB98 c.T9X?33FkǢc#]~#=޳뻯ـX}h`'Йe @{{}W&lFb˖(5>FVM#p)ct9(]JRHz ҇Mt*@1=*dXZ$"~҆ePO}sz+U)Y6~!2*]-X^O* }}υ#;l%)Zn-GW%aljjrҿ/l_"%j/:a5V[LzkZ.p1 'ĺ⍷eWqI+uN6CS]{8+ 2=kf82eIƉ828;?Jɗi_bCD|w}LɗxuT6/c]ؿ`MD|7~M'X7IT"NGɗxG!6#GX+M.N: &Xw澽GɗxM MZng382MV]md:0)D|.zy}5^pS7ϼ|xVG4@O,}uWj[鴭tږ8mKNLm6iᴍp* iKù5L,VԶ[gL|촹M7hɼǥiۅxa9Rծ%UnggZ@E.} uNT¨?lOT.n~-OZWUVVq*"S8 w֗8p"9~c,발wϛ=vd.-7Rg4Ӽ8'͟a>iMtk&5%t/)jxpԼiSn3ƙ8+n6b(Buxtd?n/ޗi,VUW&wۮ2$혦_Κ^x$3WYYc.'V }=CƏf $;sqtds;ؗv10C3x_@[<]zg~iRVJ 8{s;ا<;=caGe~4m9Ϛ6U}+_̂u>̊}݇ur?7T[47t:+mrښi[-rV8m+uN:mӶisZVRmEj rjZm6iMv;meN2mӶimqv9mNAͲU`i uچ:mQNDm6NKG,'#03\%|l7eҵk¬"Aa4u )Sgb(G v?R5p/麫rh5"oT%IT`{/7Uz E/!쫫g:}/jvӚ*pwZY^8[}Y >HWS>lW"].HW  a]2_ O4fJ ɖ_Կj5|X> ``2_ (5?M$+.]%c~0y t?XA$*g8R_+iH8P_u5"iw;ڦdl#M~{/;cYU0iHd b,-c`#*d60)Ʊ5X52D˭nx5Ad+60^[ _NP" EE76u` _nP0ʭ`:etH}C5U$?~ چ`{'|X,O_2܎tX*rqgxXat_g\Uw}]!ƤB3<'N 1&5]gL3=n1&]gL1rjLc:cqwLcud/l&$uƤ Ϧ;Ioi_u\U%yJWBVq9$ǥK@>n+ĸ$ԸZiw{X.5.X)x{X.5.}:6FKCy<5.S$Ը,3b\yz3o[+ǥK.>o{IKM}r[KmE%Ӹ|$ǥkw;o4.[KZqަi\Nҵֻ#7 eJ9.]k;yRqPKZY*Ӹ|[K ~`XoF,2OY*FKKs FiY ?gMJ?}_^Z#jد>Cg3bӱ{E?e}+ 7OGXwJR &^{=z7]" <ǷHz6"c{s.9z}Ge֭N4RʞKlH} Q0ޖ2Z4-78n78fZ]>a> [W:ox\-qږ8m3Nm6iU8mN[Of,^c{Cz-5f[N/^u7{}Om\+ mEY='99O z~gm\MpcŁNv52]^d89NCS]f*"eNu{CS]>fDʜWjmdeDʜ6389z 'PTWx"eNuŻzAġ̩xOYkسDʜꊷ^&PTW=;Dʜ{2E퍀$2joeq(s+^"#PTWW"eNuŻBġ̩Z͵ kS}\ֳID| 7`q-+޽6v?'ºbOlj8o{m"PTW+M"eNu`8$(gD|e4֗Ob]δ~!XW,v>'ĺ⍷eWqI+uN6CS]{8+ 2=kf82eIƉ828;?Jɗi_bCD|w}LɗxuT6/c]ؿ`MD|7~M'XO3O%˓4c 82~S"N ֝l#'_ƺq&\CwD|}wb1"N|TMDD`gl"Nug۫yD|q "Nܤz6/cdQq}ޑLv=_ŲZJ4{/q)g\>f<+{ ׳-^m;mӶi[-qf:m3 Nm6ip*N[O6yލ4m+j3\>vg4dr'.cY!K9RlggZ+=cFIVDezޑO g)aLUꄋS8 w֗8p"1"발w}F()uiy4 `nm}"eݑ#Қ)ۚl0!D>P5oڔ[Lqf9ζ򊛧M9004,uxtd?n/4^w\Wwۮ2{1S_5۽HW:?3{찕份B(?don%䝹H{^בHc_nvn 2x= #.ޥth.RVJ /rv$OyUY؏a A/`rYgĂ~YN{ݝ})ur?7T[47t:+mrښi[-rV8m+uN:mӶisZVMc[9mZiv&;mN|mӶi[㴭qڶ8m[]N.vilf9Xw;mCN(m6iͶS7ױi}W>yH/4"ACz:qƩ3t1yE3]TjcG2\w56uWP|Wc$p~ -؋'Q|_"X<ׁ+|WOQ $u>w~z~tP, :p|-/<8 #7҉o~J2Ղ|?C>G-H/k}OJ4fJ ~ߑ=jg2|/w*`2_ (5ȋg$+.]g6H}N 蝍p$dg~Գ3iH8P_ųSjiD8o)hw4IrWwžTz,r([D@+3RoQ98}^Ywzez uB~H$irz ؿ~rk;2NDul ]SOX|mԫ Vj{d9B%|xeA GFogLY/LTKZ_P.HѾ3``΀y0~+SKe`|_uD52_`'v ]`_QM}"w/vji?co+o׫ ~2v@?k!K`:W!g0|=@_/~?~~/f(Oįτݘ'Ƚ`N;ESZrr!/[|;E59ؿ~ST]WHׁ+|W ~r:xw.vg{+ؾvST]< kP>x~=4N62Ղ|{D 5~GTS^3?~롺D2vپ lP&s5ؿ%`_P}@.f+io~f}`,~?TSUHGC} mw"?/iM`D_P _.OHogfRfF3*ܻXǤqaW1:c ωSc2CIM>;n[ImugxGŘ$ΘlgĘ4uLA_16j7)ndKRY},2vkb̒]ǏZ:Ҿ븪}\ -Z}.5.-Ի=D*ѥƥOuqOwqi1r\Ը̳xq*%٥e}-Rݵӫ-Y|j\~ ǥk7[I}{Z9.]j\vY ~{Kr\jԸr\jԸ0-+#9.]kyLqb\zwLrq(ӸTqZ݉[2˅r\z&Sb\jn0 ӏ\o4}׬6b')v[7%g:CssP>-ŎL+Jd/F=~};;w%EYc{w%UmU7ܕDӀ7Y5y#͝z+f_u7໋Oߩ+8c@J;^nyt}{ɲ~FJN`c6nISmUH~\Α))TA Ø:6vt,> coVhzl0vЏ OQa0rn>Xq& _7:zoY20@/ƞ:W+].?şOp6pG.~3|V+C{Lw؏"tcu AapWsjez79Vhfs^x  lNv52—WE6CS]4;k^"eNu%[+oQN?6UDʜJ~@ThJ]"eNu%''Mc*;Jġ̩t+HɗZY2 kqk;CS]o+&_oȆq(s+s >,Lɏ'PTw |o`wq(s+@;}?eaq(s+ ES[89ՕB"eNu%߯DO$%{CDʜ%FGPTW@Y+.Mɟjoeq(s+o }hUCS]o]& Cġ̩bB c)k@)Dʜٮ!sl=Dic]ɟsQ v+u%b N'4?/W'D?֕D-7&"eNu%JD`qP$PTW Il?u%pTM(ψ8ŗZl,泴_fMc}8+@!MLG"NJmUnbq/XW#i/heu.S|__(bo4묝l2!,s[{8#+DOj?#PTwb5 Ŗglu%5i/[O2N)~a݉"6&8ůw8D8-XxS:ƇK>K'Yw"N J_b}l0u%ͅy@DAϚSºseϱD;Qzs#-vM5S͵bѭl\#q_XWOܕ C=~H)~a]cø}[uZ"Nqm27"|{& )/q_uRb˛C)~_~Xg}D)~]? @568/+8zJ)~a9sZMk=$h|B"N|0F45Djn!fib^&-ca'QƮ1nSzL?1?[-;F"N J~vhA&.zW8ů5:jºuT[/ۛXo"N ZbJke3v6u@0>OjU<"N Jb]WŢ&X]A)~5i뺉1L"N \CF:WGc;-OX{.꞊{>~Ay Ӭv#)gl&Jcl7'Ŷ~vg >O}>T^ڐ:oQ׎uYXk+ݽoX4KW}۠<ݟE>_ {/:f~_tK\.L?p+\ ng*.O-lyX Mdpfv⤝!f>쉠[{ qԿ%m  oU7;ۥ7]LsdZ!}yis>jp-AwDA HOgJ뿊$tÖ8F1Cwk1~i=F1񶼹^qrcq ^c1Z~2&ڮ <\8:oby <6\tyEu6-Xx~Ou?xQakF kuN/=%0l)N7š5k9o&Y;EzDit߭l;QE8:kZoѯi?~MdІOS3ͯbq}P8֦>#ІԞ N?e/K3ܷ(;&_MSĥcGmKl~[=,`|X^;DޏiZv1s-S̽``R193IkȒŃɧunJ}|85TW};u2K'_he/M]XyM6j~u;">|usK UGa&>7Jv|n9#{ z>&>7禶9D|pܱKüî:Ocֹ\&oq\. p\V/EV:?ůuk].h?şw\5.r]|˕nuG\.Dߝ_T.k2滁n ZZXGgk,N1:t&uG9SXl.?\S`O͑tks%^xung_8 q2ӭEp^uN y{Bu[$u[n8x%8e :y?i#󪁞Ϋu['unҔ{x\e{ 1FRZbt7 11J}RVCEFm1/C!FY*u+J^5D IYWQScA[b"!rmīuxaWBӭVu!^;%^Hn,k߆t-j6+!ZץYêt,g!Z&(+KΩnE_Q[n7S2o<*ý|_5?Ik1^!^96T5o 6OX╓n$^mx56/I8eD;ɼ=|&eqު+171Ĵ sB[(wmo V>`s7^3-7GA ӑL1̿^Ĩ`QF$F?bQn-Zh>*s{?5+Z"^ /]xUwx_+_k!^#=r|M w,n^]x-yW{q0w><_i!N$N=piFs}VCDN߉=Cx8ay7=p:lxaTy@yx]RKe|פ|fiYnYGefZ0W%xx=rMJE c"x1Ø{/b62[>-1{l}y!N#N VHxn%ᚫ.[FVέ%f=0[έ#N I0C\`uF"@.0/~T lW /"+\`!^/Hy1^a.pGr/<ٔ?*s?63 ; x7>o<\`* x 1O/#/{.056w#^yUigs!@>0b6p픘bt?%w // FnkmVy/q^R\  >^yW~p8 anE"7Ƣenp071 0 q0 F07؍ xY1+ N#^;<j_!^9enp07`7^ an0%^暈enp07qN;q q!78.sqz9enpYӫ8}bSV!NeNpY> ؍h 9; |`k^gu$8.WYa[,E28a,`k^UCq 0F2]%8.sEmqp^a@x=8.yzϫ08<N#NiyU;y <`k^,0o;<N#^#UD/MRC,X c,C,󔇋:/4IJ-kr15!yEbPb˻ S.y&XXQc,!yEbyYD`X>geCeQ罆XnX5c,!y2=,Ԩrf-XwM>0'F1;$,0 1k1<KL+h)>Di^{5<0-ӺӼ0ΗbUbڧ-uY`Zb eݘ.0ƴ:sn5$=0A2F7bGbynLfiui^s6b L_ӚӼs 1}JbzY`Zbלoԙf-N/iGY`Go^8F{%=0昆;:1CҶ}旣# 1L#k=0>R~sйm6+1kY`Go:9&~5&0]鷍1G ss *c}C̛9G~GhU^;/{p|*4ۼ$Vh6ThThبrVL|UKia@ cPA~?%%w*2v>n)P%~-rU]Gf򃸏=~axe6euEEp-@^Gtd)N q}'&۷nݚO5t:6~?s;1w $eNuS5ǘ8-q[>P3z^-A_0w5c_/qg3] .ۆ.ůp{=;W=3|VK}o98/՚oGdzA/H/J29Rw|2W=ϩ?ZB y|CzW.g;DʜJr=E6CS]ӯ@vMNCS]YQ[%0Vq(s+єDʜJƨx2Mc*;Jġ̩߉ }>KCS]_k Rqk;CS]?[ W|"Nġ̩O-$ Sc89Օ s{o`wq(s+_䟲ְg89Օ|eVe"eNu%bh{@w89Օ|D%)x"PTw-&7"eNu%VMT{+;CS]ɟ_*i.MW/:"eNu_ۆjٯ1Dʜ:-&}q(sא\뻆tbȩcrMWlu%_sሸgV"NJ;e8+mK*{Ǻ6 2Dġ̩7DokW؛DʜJtyh6?`;~"NJިg4 ?#_j\6~5 H ֕5 pP?;S|híY|"NJPr-eWq/XWػMfq(s;1ߛRŖ;~"NJ~VAMcDʜJEwL-Z"N N9 侫ɿl=8u%"6߁X>O-6Sº ܮSp"N u ߚSº?7&eZb?Ǧq_Xo{ ʩcm됽Zsk*5IkQq_ֱD֕@nȭgϳq_XWGd-<딵DںejD]&XD)~m-.ɿ =Dכ|}T&hh?>"kA@568/+}CzJ)~a]Z 55sSºs.[Zl9S:_ 5䯲gq_XwGƮ5y[q_RkXt5}Sº{1nSzL( keu'9u%?XBM:DEK&_/QXteLj8ů:mUXnۛXo"N ιbʙ w[?cgq_Xw a|kU<"N ιT7: "NI[]٢Ůz6Sz.אG0::dO=uO㈺y+ ؍lΦr65f(6 *^lgw&8V#s?EE}ujIVhC+Ɛ,'^>ً>չOh%ߋ׎uYwqX|g=~-.YqMYڽ .xs_\+sҭbef~_tK\.L?p+\ ng*>I7 "-9cs.|67}>^>fL\F?g8[?D/y[r*.ʓk`֦s_''2X'Lp"vr;p_ە/q|FH{V*.y}:E30g&~@LG5?;"G_,X6xQw~)"B ೷뜋_zJ)Y6VS-p3֥3!5k9o&Y;EzDit߭l;QE8:kZoѯiovM;#V:"hCr)ޙWCxXaH#!_~:㚶^!,Yjz]:ziNۖй[L=~{mG]92W΄Iv:fM=fM-Lk݈-s3\|!@@*&ך3IkYž|Zg|qg9*[1&`d/M]XyMWYu>l+ps^ν2s7|nRs߇ sr,L|NWu+>N:y >2ߍ:6̛=GXo>u&oq[\E."_sw;\}.>ous(봺rk]Z?şOv]e.2oqw\.Ar[.wC]Q.(?w筫8˚Nu-O+½f͆+ԹY+jҮTˠ }-uNmo/SV6WW,~OZB=u iZR>"?3?Dmm<=]'`Otku% +%^Cuk-4WJ9&nn0W[ϼ"ryu-^K >=1);VHΫ8i#!ICu['uner!]~.=_e^C6K CCmԭh[dQVJA&k;$F<0p QsRUmeoʍ6t 96HUkץrSa0ƫΉ!^V+x x5X׾ !^96Zl."Vxd?čp1ߺa_f\6 p*ߺx 1?%^7^ Qx]R*xU kBrmkm_U^mdSMS̫1kӤ,[_y"f#f6aNh{w\(g2G.o+ߵ=/c|n1Kw,kt$c7EZ 09#ѻM\E%^k!^Jp]# kۋx-7Z[ «V9:CC9=r|M w,n^ǝxa|Ny^C8NC0 8e8tjT4& qS/&yy 7yS"^ xūx<5)Yb[/bVk80wkv s;x]b׿H0wG ^0WCWaL qgqs>g28ax=xf|a>0uz2с|N> 񺡰-^UCq 0F^2]%8.sEmqp^a@x=8.ycx-7Wap.yq0F0؍ӆ>\v(8.y]xm¼28axy <`/i,28axm ё<N#^kmz?*Q@p\' x=W!^ọ:9 ` puq< ݑต$^lz#7bP'`>*9Ї3#NL1un>ѹPM[ {XA*r:._&,-X>$WcYb<\y!K,maeMertQX^o ,nc,kC,e^ oI,{Gb1< zD`=,3Ʋ!2O^C,X׌LX)Gkrb-XwM>0'F1ә-ӪӼ 1'1c7R~¹76+1i64qy!%;,0 #7ui)>g1]ieen^kY`Go:9& L[<015_HaznA_+c{֯](Y_*\~eS5&.ʪiǎh哴r7]ӻD+c=8u\Tic-YQrT+je}KrL+0^u|rٯxŨ18Fƾ"n#XHg=mĆ1{ٚ o,rp60W G^|>pLij+>FǒMI|(UPߌdO3pw=I@mf&X/]$$If!vh55 #v#v :V0l t$655 Dd o0   # A "eġpban '@=feġpbah")4xXMle~盥v -ea52E6jDaU~"R@tKi(5hz$$<<''8i7&Ŭ}~vd6ofygfնarv|(3ȡuDp޺Dopfяqϝǥ<:91o~kSC!vs.FoS.^o?2܊zrwTb9;ɌA-.-Di2b? D+S]'1Bt)x4b 8w ϒhv\-9m_'{T*Jt芭2_R{`_Kw z}\wy˟&=ߓ]T6ίrs3W>܁@qҬ_dr^O>W-^n=U&I2u>?@}nV*ͱbi}okKatJj fwkDŽk,gpǁ RWvuuH(i{/OeK9Gb> !}1$ϷPs[&-;ǂ[]0%iL62aJ Ē} b><`49P$7 ;):O#f<&I9돓v&^k.-xQ|\C||'"|\u _U=7cnKCȬzMF] ]$B141( 4G}-]~?CXO۠ N#~gKeFU{iuoŬ[9ܧ[|@n$C:,~P=^W5kD Ygp{YICKL// f, RHG_dD~!b~V"'tt]sqx ~qZyuo>5 ~~/Hzvkt  gk,k"0tb ghGt @-%$i s^4d﹆kyp}lWd!k\5`w~`.5? ƽ9_ݵStΈ59iƟ/ ~ge\1˂xxQ_݁6e8swZ38Cbt)X͂_{~6 ~K;mh6+t=?P|?آDd /HJ0  # A"TKXP(ЛXM}0'@=(KXP(ЛXM}|hR8#,%x|U=IlҥH/tU:AzB{EQ,` `/(D)"EA{ٙ͂ -<~rNg'0nF`ÈJ~1az0U[0!WHi' [su9  P1D;LkzV>Si-,]vN겞wa:䲴azA\͛;#;fF݈4zxc#FnWz$W#^ p@s s37u}}wSvW xҙ ch|c"qENŧ1|^' llOF_u|[ogo~Y{y@5֪KuUkK)|z^QxÐXaʳq4xyEnG>G]D{Dw1 wP\Fi^Œ1{#O6\W-w`>n^` 3L}"\Č )zf6Uz}O2 FzmjK@7% x1{qsbϚϚO JZ'%Oed*0ld3V XHh4נA:cx|ꛯ~]+T-VOJ[tJitdW4s<|YhCpn?8Mo&fg?;muWzyιAgiqka XE|UV_M5xtOD.Xho e#ݠhK1JH-F~ao G.7PbLiiej1@mM_}E}?=l8EE/ 2~ZɧD5݈w# ]7 =@{~en-sr~FtE&"mMGwD}'EBhۯ,$ʂ,imd^Z%mM -ȷ@}K֠=ld D>/Ps%YT4ED4iH!oDh #_ue9QO2K: /B-k&Z{QGW^hۯ&ʪiWUdEQ*AE +$.WFeeQNֆiedMQJAIK/+%롫'WT$E1h7EeQ C! / B+,k"Gye+O2(tQB{~ewAvOʮЅvH/HiikOC> 4/< }E#eoEq-{EEޅ΅^OCCD hN9@8d5q@@@pnƊ?]c`4k.Uښ?_!\a]rMd%q5^\5?G_џ;#θf, 3itq ~,NN~?梛+k޵BX sqkC5owܵR=l]kհ V k >O,>&}}Zn-k3lA|Z/ ,?Dڊn+k섗a8.ރw'ߡ߻v azC^#p&bȿn{&7vޅwm/v#v/ښķ߆n;{v6fWC/6]XO[ZkѭC~`#ho1|QuDp} 2ښė_n)e[+@{~ \_c| _|gb̥C|6栟Ky07:?VLsSa mdOB7Mi=lqb SI10bG~4Ƹ~APob\ p^ u*`d1 D?~]]hۯ*! zZA8='?A\]].GB}4b\Π.=l.%!A[6[o krsiO`c0j*r{f?#nS)èt_Z_sNPk~ל5?>ŽizRߟ_,!vZ |Yy5t_u'vtB w .Eb/JC\f\nwL ?}_2DI-Z:\}UjW5רׯ "7iuZZT" 7oRߤFI1TzѥG^8BtVhOB B L䳡ˆ>P贇FUN ! B,1 SyC}^XZii)UX< HONG,*E9'T1C_LK, I>Հ|CtǴ +L0:a=%QL5AQEQM47)Zoyb%ȗ@=lr(ڊ2( h$VRѤDN;r^ :OQ1"Tʫ.TPǢE]T!V|Ut{QT/Qj@uF}Iu՟t/M6:a5TCE5DWE=K:j &uH#эD?R4$ֈ|#tkƋjhƊ1bjLI&dMF?Y4#֜|stkf6jh % B̈́Y0ۤC~.父ڑoN{~QjT E'=j1,&2-GLDL3:auWkD7ZtUDM,Zu$Fm DwbciuZmVKm=!vb=v/ĩwۉ~C/贇7X&W@~jM}@}b0!䇠ib/FpC U0uAt&?&1A!1ClJ$d:B#菈&N{~3ԧbDLS0dbg9|a2E}IKt_R 6Ltq1W}#lڳRlu t'П- SbY,Ű[N8kHBsˈ-'֪Kb(V*X +-W/TWWZbkɯE=l-OYu6^Ol }d26& [m!ާJA;`;mĶ`2ٮ$yNA" g]@e L J`[/=z'ɓ$3Qp&&h{M7OxjCp4 %A_HKKB$a8'>M<5!jtډĒ /BrѤF~$LO>IDbI엍Y! h2LςOVf/|ډĒ ٯC>ryE~yP$^$^|aډĒ ٯKB rϣy{%) Leieȗ5IH,I*P\%4V_%WƧ T5ՈW'_$v"$;dׇzꢩ.ҿ>IlHډĒ ٯ[B r4Gۜ~$^&ކ|[ډĒ|ޟL< Q"D_$ &2x]Mh'K1>~}xz뉦'ڞI^>&/~$N$~b0P4CPg80#"?$v"$H0D4NDOg2L1SO#?$v"$9oCIu0~D:f/uz<#OƵUj^NSp;K,:S7/s=y;lf -趢&/2Ν>lZ[&oڼ 6XOL:toQblu\cq ^x\HX h$YA~Wq}^ k`-N: +d*\ebbE[~ \r[ĵxE2d b|J̇y!?\vχt̃Y lŜ0L#? t3> f4P \˧di&n"I芣/&7A2b]=l~\sm5$V[o B{$3(q!;XAtn QЙx4ht装p}*㠇"cE.3DA$1= zE7{ au  :Rt0`CE7=n?X#P6hE]ZnN ㈏'?x"gD3ꁦ M%h W䏡;+=lGt'xZ$7䢝&r%O?$B{~9-rPWA HvY! 1MfeA$B{~5tW"2"]< O~& DN: ae 2J/o'"&5ҠO+A Hu %qU*LsϿ[3]eAÝwLcbLc)6PP#>x%&ۇ 'RbIJBa]ᭂJ̒8 $W+/*.iT̒HU8Rf,IFgm&Oи,?eOO GD#hn~ӨwS5_ѽ"wjnwMQ/pRwjy /\x[h~h U(áCTFW,Iׇ^LaIX -idA/}L-Uua 5߰e,馰*VkI}][Y#U"a^189?rYdM$wB|Ӳ߿n.{.a-@x92,̞ 1?_m@dǾ}QʌQ.QNuzQ.o!ąe{EF67ϰ5i=]ï޷띿PmC1:'|,;cyevwŰz[{|:"t# Z1,,\ڇᏺ,Ï{eū v| /#8v祼l1/?7 aq;eDhtqww?8\vT^}euhUwv޹s}_ӺB=hy^+ϫ;#a^GY43%a{j>k\rj׿(6*c3sIc/k;#$~mgk{y uHVdګFj`N՗mU=F5iM& !4"A.M5_ RP-94US Bx1^BD"]k"TP#tT{@}GLS|]tWQ;>Jj{@ڪ|Qu&4WGW}MG>]8=ljj@'#+C%i*"JjA$W^H j,e &)E˨Ǡ~_I5ETaL%<b1MQE=J~iJaQd5lYX͒LY OL|>tPG7|=I2Z`̣g h$A>sW[~3j|FmNfWke6 Y 31M&eFEm"f2]2 /.'!'yңϠ^!nHaSot ˴jLԐv81M0tSȿ-oI.z_pޓnT)E;&|0.O>]JLstGQ| ~W8:?IJ8 iǣ;0GoGo"${6{rqH#'GI.ɿrFy8H[{~9CL~fg7 i^':}&a嬽^{9gWa7Wiv߅9˿ ɟYT**svęF{+1[mEv/6s5Uu3W\6q`=#YK~-usw#l=l5\r_ WT`%<4fМx -ѵDBiwsh-W6j,:DN;)a͓ݹBu\pJ-[ W.]t'K>],X=7A,}\+>B=gm=D]5]{tp6eZQ4llҢUǵ!][mZj:1|gBINlNlH(jqɞˢ7K~ү_cj[j(!̞<=y{Pf1FI~$GoDn" hg32g ;d#_v{r夕~%?dg$2΃S^A~Px!B_~*I<8}L&9%y^xieЕA_~2*+C%Sԓ3KOCW%^|5tW_U=Y|]tuצ_m^ll:Pע'ހ|Ct 7_}=Zkڦi–mnRKEC hIVZoEJ{$5|$tBۑ>T8%&!睉GF>~gqkT#Z(Oq{ MZAkj6z[~FBGA[bxޚxmѵE߆~P45Bg(HNБvbuFC .躠Bh=ߝFBC ! "EFЇx_Cߗ~} {KaR#R/tnFЎ!M.ACЅ+tK,zR#^nJ+5BwXG'䴇חBo^=!vb=F0 -@~e_r@ПzuC_^zQ#xXE|55֠_MUr> FL0a OR#hQ/na &6S# ^J0 Hl >tпNr89wH éPC !7DwAio,5X1 aĆNA0ahC{,䴇3S70FEn5f4ꆱ`< &j &R?LGn5SO?4;%FF0a LI0Dr~rutꇷxa#}V{f\{r nµ \ߛuEGhiHM,| :nj5˶\7rlu=tɤEwG'Gu ףK\pu+tݤ%.},ׯ JaN]1:d( = jAA4CTGߟD? }7&Pca &6dhj"`< &N{$r>yu 1p `}ޣyޡ6VC;C?${贇ugsL~G!NG>&|D}1u')ψ}F3t;ߨop /}h0Z Ď?N{~'~:?8 |Αݯɓ~":a:,p)jSZ4yدEw\S{"\ v:,EjK^/B :-+%ԟʩn(h_%bW4ר "iOÔn ܅.p6 p!]i &ܩ \ia۝^)Jv`M\3ˈ> %J>؝MugUiYTjHE;X;;<9LRsω.'*'?N{xqUygS$ 2A~(` /2L>3:at?rg ;dIJAqϛds _]I%TNb9D=l*y!ꝓ 1!ƈiU8*B !y{Ctv`|gFxϥqntϥxָF?~sD4XӑyNg[o+sުLz-R9gگły-n߇sEa0]y}nЧ=A{׃5!84cntt!C4Y}C 'u}8ԘRsjx>c}:Gin0Uyք,g0=LJ ;[1yF c03)2j~fψq#iJI&Wqq19|#^rCU \.>L4 מN~J cZ{&3a']BsRf-Bgj.w}jRBr%^ u=6=LGw;|2r<\Fw4{Կe A䟃?"D9s A䟃?"D9s A䟃?"D9s A䟃?"D9s A䟃?"D9s A䟃? {<\4om,PY@_U?V-ZYRvV-^ߋߋs ! ?.8\ps ?.8\ps ?.8\ps ?.8\ps ?.8\p86\p޹{sM ?.7ܭk`RK=3>1wF7Y{UcċUuM?-È/WǢ^>>o!VWK?@o^Yu=8(?Ix˖>m~j:lqu_3<;\H؈1Fo#Q<62zkoT#ֵMng\h]D?x/{>dq@tF8ΣGe)bKg*嶣Kj}S_b~ڍ.=aCs/}d=c!6`nƌT:e,mtii9tѺx+#*0&~fnm>75X@KJwݮhUoGٮoq:zw$x}ϱJY>S~QL/>ml6՚٦}y}fXOsx+n{M}wׁNcl\'"?n_/8{KlxU}ɰ5:ۺ `;i){˺z\WWON[^EXʬw1!y|||mǠ,nz<9F[}K~e62:=,`҉P瘻(y sقD_%)98Yu_ɔx0s z>ڬHgLXzJ}=˟3mǠg[:ﱍ>U:5aÆ h|w/^P{3F^?Sרdړv>c<>o;@_XWxģ#Mfwz-o+`;]04*PY Ԅra,uXZY6>k_:3s1V- ,}oeiSM+V_Ƿ}q>kV5Zzy><3-z-{!n;?c؟9|sr(Qfg:ێp˦cǑˡ+#n[|ym>aqt{-G:<) LmwZc-mx|#fR[#fLj3MxleR3ccǻ5ލxlgRecԶ#fжǨw'keRjcT3xbR3mcT+ޕxHٷ1z xiR3rcޥykRt7<1Rjn{BwQXcl})5÷=FnG❗)5=3x пoDnR3cd8#fxzj5FJnx?LkE#5޳N\kY#yZclN\gYbR3c4g5FJJnJ~!1Rjr{(XYoRc\c 'mH1.)5='x9 )5 =Qx)53=F"G>G)5[{Z&{0Y3}nwwlGq#{uH1F[xlaR3cm'#f}ǘhNL1w$ӭ{D=FJo1g#fǘww:<Wc,{ÅTz&6jh % B̈́Y0ۤC~.父ڑoN{chex{zvHPtkXjA-#rD;{^>ZcﻩբZ%@ hbj-&1j 6 %N{caKǍvj襶Gj;쀗MN;DS!֗|_tC{{w;kbzU ^xݤG to'B~:a8wFH_0 ށw=a? FM~4:a_;'cLT b:,ƫCb=IXutGM"? {Nq5 >b*L=d|_LQ_ݗ3$?֥Ͻ{[1Os7b̦=,|?V'ȟ@w 1 i{#ϽG{eX~K`1,pΚ,R?_2b/G=1A?5ZuIQjX+a7e ?XKl-贇=Ƨx"<&YclQؤzb_7&6fBl -贇9 کDFl .J$z.i;'|`^gxSx=R>!{[o%ɓ$3Qp&&h{MM<78=&v"$5FGФ4S/5S4xt&/g0IH, |Ljƈ MVȂ>32?3^̂wVf/|ډĒw1 _^+/LeA6IH, |i;F)4%ěCO0IH, |xu>B!>x}Gx OFsډĒ䧷5~ߡ~8w&{??aBA-ccq;/hw:/&_ɟ7IMAsNܑ~/[i'Y^o3ɶjNgZzi j-U6Fi֑_n= Y!6f[|ޓmcZy>먣QSZKF:jXE{%1 +ЭDk5Χje'`Zj5 j2X.2X K`11"-Fk)2XN[{c4>=ESLQ,O)1ўKL3tsϣ `!,LPkBn%f˜b̄0fi覣A6:l̦=|?k}~Ov|ESѦdi&n"I芣/&=FC=L/з2b<8j0hbQG~,O<ˋ >џ_tc ~֬}C5*FR0  !?PdMB_Sh{:V=WϧBM6zl(jpyh "GaQ˪|uZjnf^ГZoM 6[ aQ&x?֙~Q)d'Cvhw%!3hG aQ k5F궮2z.2V":CD'^{덾Z\:E'9@t%a ćn(!B{cދd}q cDԁ[B ͉ycaǣ~D3jԆM%h 5c1xƲ/A-XPS:"&UhW&D^S }R'jwx(j_Z̪ +QV{5QQ**ݢ<@1MYeѕCudyA{~o?Ҳ= ۢ/JC)( %i'<KRO, ehk{D!ĵPC>bˇ>1t% eץy=?"Ԣ!49@}.yIt'џ#xƲԖ9+sPw}Z4;d&3負JMM^@wy=19<a,*WD&yYd)Od ݓ蟒_Gwu=|?è?W͑ ABAM[Ӥ&]i3(<A{ܩNm\ǟ뒸*TTgNDUè使c&1]{8}ӈ'f{輏uGfm<뱈lA_H\YeE5]_| ^4^п^y^ey>[-z*lqy}watmFp oCxa[?Ëzچ?bC=%=x;uu A ³w ="< ?7 qݖ1z;.r_cO!cY,s.sOA!˭r'`RVx3OC}/]߼Zř>UiĽg elΝ|OY2bvj׃ߓ= ]qxys~+]g{ 5.rF<㿸=mb= SB<{m]9?H?WC<=jZFaw*ޔ9;xLjz{&s>h~>o~z;n? sNϹqsy]oѾW3}\rLwY"Hcuxuj)[檩lM DLӘ|ct/oZo5VR{~};k1"TP#tT{@}GLS|]tWQ;>Jj>ƨz:*C7Y[u/.Ԥ]:jǡC':R{~;?ZcU+d^RG-Ϫ27䢝&rϥV_n%R{~'gϨ:] +d4gB}ftogYcdTdF^i]>OBHOL'ХGAB~7_{X1ҩ7e:eZWQ{djHE;&|p[BǘoXW1B2TtwRH .!4хwxKa1 ߫w[c2H I (@ 1#J{:< pJޔ_[~&?\'FocF5cR{n47zGyULة]jT JPAT$vXr$J90 "` ,9)LW-OcXa=Dߓ{Og@rx籐0V8ΖgeclQ8Ph/l^ppkt'wJS[ A̓yuUo6a? [x׿hKFyݍ8q$Ǒ#+_bCܗ5|{Ar5^tl|zw)ͧi7/t}Χl줽ψAN>s$|Zje5sYh;g9;$6 [ BVV8[%@"mhM,~V6[c3g͜A7s&ug֍)|c>q gO9oM%[#9NGl \u6pU`W*|}xzl:[O{\އCnwj=nk効+Zku Ww`5 o_X_3vy(e9L^zi:؄Q'+aíޫ H5bfbX / n!PWQWK`)m߿ߩU֘[[ s`6P ^K\]ᝓ(ߝ)W&Иv# 70Sa Ch= qQGᝓߙ1QFYXG $%*AZZB+h=qqq*KWθ;g5w⹕dMí<.z c,P74^;ZwԵԳא%w,ŎE%Eӿy88q5g1cK|,bpkn?;mZ}C;%O[e|іqF;> -#N;יN%[c5^DViz'z ''^bqGZrxT0wWFB!|)'~( ñ?ďp-9K_U9ҫrWȯ'2YڕU0'a2qLIG\/Ü-scC033|39l8l~}'~jX$9s֨ȧ"g s+Y,][i|+Yy%ĭ$~=#Hjwٟ3a5g CYo5Ռ+s(U$WR\JCeI0g=ٟF)Z+k p@qŰ)oľ &6~?E_/gPϠB( .v~;pk!a9(j(0*> OKHΜH(h09"8"pprߏb?qLj?FZr5fZ]-m}&iFFA/HE/6qjٟT~w}~o\W'_a+J7\3!|$[cվ3=7 ~qn\(>h ~HX=?w'-K4<΁-;>=Kg$[c23bki O2P c/(qE/BFr5Ɠ;!єO(MR)I~鱥Pa/~1h-9kf\ь-уh4b4 [3|Ѓwߙw_GFQ&qG3ơІшЊ-!v h|A!mFl 5a'9f|ߣۡۡ ۢ@VZkZ [Њm-vyD3~ьЃцЈъ-6kt}2M&~2&N$[}7x4cW`ag4b'=ڣb>qG+}?#f6FV ]hw _'mAw聭>`5'=m z@w膭nA_OzoOrxs;g?f6FV h_OFo"nQ'9X͸ɣ @}=(EC#G+aOr5>qG3EEA#A0`돯?zP6FV Ch6pklqG3@GFV Ch6`Q#wT'9҉fьуІ#ш#`8 ð 7 =pHףIO4.f6FVhO60m8t3aY$[cՌ{4<\4l3af c/(qE/Bf>'P4nf\\6FV sh6lu4\a$[sx4b4"X `>yhhąhElKI\hhehĥh%"l -D ІшK`),ؖn=V3~ьЃ+цW2K-ŷ={4h⢉_ 丞fj5afVW>{_nEs[=1IϽ~z=2z핐lҒuC6l͡DcCMVm5ښF蛆蜆FBTVm-v'9e(I%]>F'DAb"hЊvM8∏CGVRKkK++{C{AO=uGsvG{@ =M]B|Ýt}=e~juf. ` ]9) DB!b(q{Mok C 4k@}`0 !=GAG(ڣ?8ὖ:@;W(=-;8m cЫѫ`"I&L sΓ?Iz&uLi0TT3fNtYfMEhEօ0\lsдsжsѸ<|׋-¿E+{q[c%:u X/eb[]]s xVb[%qír)[cyKcԫmx0ojx }6w` 5s~Xj|`C/ub[kއ=x>!I두Ľay#S4'1폰}~l--z7'9?Z}}ģ hmlxtM  cێ;q=瞇=K_ vbہށމvv?GOi$[<<0[75!AsEs`;qí!z~G?=|;sNO!7'"'!l&Nr5[ /)ckD?v}~~.3_&2Il"{KV3ΠϠϠхspEl_"Nr$d類^[woo~5a Bgl?υ_WW ~;߉IkMm LiH 䐌U RӾ'D`iKC|`jHe$GҚY~~ 92&LgL>!@;Cg .L$HIS1{YL`fs [C H́?q9ab}IS2Nq;Ne2s~鱥>CC\2Dpk߹&#|d +d9 ~:D`A+D|A[9n 9^e "Vn[#wy\2F}KufCTk=:=5ݝWC֛sϕ̹/P*YN̫|7'5 !yNdϙ6s2:އ >ˁb(=w2?ƫO2/Jx]^"Cfa%Bo⋰+a>{9픹|gʫv^Y?|cX|x|0BS~$|Bl/k.q}Ǿ{.߻>s=byrp~Oq= ;xѕ<6M|sZ:׫h+g+~{G565צ|)8omu,-tŗ#<أ\2שj9}ga;WJY9<2 ׻ط݌HK}ns\D:;~߭={7wr|EfWTmN"ǯ|zɿyX2::<~/ꪆڤcpf]G3mcضMJ̡<^>#S5RRVR-l~i62gBay>P%;y\h&p<84\gG & mK9&P9rV`Wp9l CNJd# ;v9)H^5?$p^xx/;h2|CS޼x.<9suIDސUݳjh;@]?]_?XWCa_alG!G֨jhjbr֨:_ȮyK\o>Mi>ZîQR2KigaLL>?~e.%UYϫg ~}?^c5c!n oJUxz^5Za~T=[cW#R#h'Wu2* !؇Bo .BIvv]/gmjTu m}7{כ>SJIFeg}n:S=tZvMߣԪ t-t ':ߙ~]+HFEfسvVgݥ̪Τ댐~@8hM[hVĵ"5 V֮GV>RjЏh9 ;l~H5YU3-4SEf$[]g :jF:72q/+]G>Y,rz1]ЮrWԣCH4ie^x[ [` O諮_ge_"2?íinK-1#0u.0T Qg4mOw;gAr5vߠ]Wj W`,cԱhua!?Cߑ&(Pv mk|L0&Էp[aߋ/qOP#(rIo720_}saV_f=|}]}NX@%9JK ,WRX" Ͳ[J6%VBI{Ԩܿ%wroMMxVS>|} }D$Jr5.{9{»Z˻_CܻįߺĽ$[lrgbs]''1|[՛_'n% íq>Բ6 [ ^- lVKbXD[X}-$~nc~';I9/ v5'خfL O'n37 fpkJ|$kMSS{R_I=j"L->8?~aHv;k$LZt?1|ߩсoը5Fc '~F(n}S[cp8(Q ,ߏO$[+{orgM:+p^pN^S'nػJ\7ӯGqpkܲ2W1pYu \R=ߎ~nɝ>Ozw-a!jCB D[Z`o9q-_L #rYGa$`›4 D7 7F{}k@|C5  Kݣƾ'{fy;߉grz1n#_3AƲ_CppQƹ;{瑫Iv*5N3f=$'8c3v=V8 q43wڳf;^dz98,c׳ڧ21<\} ec[ׯN~c++ ퟱ̘gƜ?3~ay~wl8fǟ#7DU?OUV $[ci׮YmZfz R/kbi0x5ċf8 '~z[mn7jgLЌQ hUA]y ¸ux@x[#n =qhnffckltqckq;G-st,5ZZ*bhGc6 `!, c_Lb'9gXCϺ몃Yڛ[V!ښ7IܛĿ:b넿q;9[wìQ;t.[g.u!#=׫zI;!bo| / [/1|m6D&7@pklb65lUC5mIDb g}FgjWJ>n2[6_Qs5Fm_W!FM`{ kIﳩ2Y{VM4_qbkA;HA5 dgSe,"Ϗc樚a0 lS18'BL5??IIR3?8}6U֐˷ 95ߜU`.́fps%L% gemy^81ojU-5WXL{w/| ,erˉIc*7D?!NlI5F3^%~Ur!HvD=/5jL&fL$~&&s"'z F;["xk̵5'՘O56&pc;Fc:F>?':6 TZrߑ|-i.ӗ[ 8?֒{;~7+>W i5Ix[ qql' 'w]WdwYhU諕:؄EHEd[e imrrrt2RXa6a!-"~1:krw jl r 訅hhhگ\s &nsX`>,U~'+RTVuj5KR3aLi؄7諙0pkԶ|';=5]5Ug j~PMI0lx㉛@D$ S`瞠NvIGxX9Xx hl(Mtk谱0gsS#h#`8 ð C%n WJr5dkzoq(E` H{6? ~.q%/zב$sjuO׬"}+@y(B =$u%,pkTzGDBBD@uGu`sxC 5$&5pkSUЈъP *bsaG3旵9K++ z*(K 64~ ,}ʡj,߅5~GԫU xvqlB1ň+N3PJ~_ZLJOcHT( 6iOWB"Ppk 4>CO+ɑ4gNs@vȤp.ʠ/cOO?B(὇Q}uXxz/<p/4؄{C\pq=}}8OhsRp:My38}?˥D[-!?vͳ:ntK=.o[5yd S5֟/vv>rSnoL[Tow} ;,Ս퟼oY"}{1P`:t$\^gfnkl׬3cuowx7Yf5Zy}ُƜe^>U=xʱ|;r,_cϱ\_ c')ڳcB䝿f8V7}o>匼^o߷ξ;4ޔ}[{nټw2v//~0ʽT_{wrMLsT^w7?Wu =:;^9<;qN~nܭ|Vn6?տq\T?;.FwCn'mÆ 9ϴQZK__)Fz}ͺ]xtl2Or]tvoc }m3?Ǐlw }2(ה_}*9:9.^g)gٟ(vGΓɽT~f ΎMu^^ f!Jw/w*gLllo˻7uR+9+}7ҟ}1\ Fz)#k/ SzqNۨw5Zs/TЌs96Oj71l wj.|'TwvCYH~^]02:T>۝KMt bcR^}cw_'7sydrnl7lGCw B%Hv\ֿz7w^Bg?wG~g]Lh^sNǝ ZUΜ2>F|O9'=QמFp inwd8+s~ay~9s~8|e|Κ%w||s>mn|]c>j|P|oϣ*+v)A17,sn=7ħp w/qeg\d=ܵkүFҚOœg7uL]]ԁmjW /a^"q/>q%w^Yw]c8֚ik(h Mt XWyM*qՈ4߂7ג;<ܮwӴULVi3YD"6 U$i-qmo%wYw}]cXj7ty@g]teMG]J.M($q/mN\wkoBG^h%L]G?czP BlBa+B|Q3@?@KlV<(dFBf8 tA3T?  ?A6c!@;6!q)x%[Uf7vH$h?ArHMf']"~ydaoU5|_?;l/! Zrx珒 `? ;}I/ #<!;D!-9`)S+qVgI N3>a=8!O)=ͿC+wjmlq8[v-<Ɩ#p[z-?̖; hKF0gݹ^v_qw A^Ճ?*p~-w%[KFk7#qG>̽p| _$+د í! Ü@n>ӴO|>S vށM g ~']9||;)29l,v `l-؄xm!~+gm pksZl͜97s̙t3gMY7§ |MG}L'i?L6іn0gMa> lj!W:^MXq|í"Y+Rj=nk効+Zku Ww`5 o_X>(=us8crP3x96^MX9q+uV 9}n򬨻22T22TRX `!6a-$~j1j ,-9=ڵR]w>Jooo> pJp.́0 C-xjc.quc$wnzY~؟MR7\qoȕ ShO@SQ">HM_֘[,ZAKE,#FĠNb--?8%ǁow=N}k'Tᅛ$[ G3XnhPw6vkg 7$! W_KXdlKDӧ43Dq4EqT5k%c%.XhxݎdvLvoKk-v|[:{Gw&3QK ;>ck>^"GOrփOXO>}?ߏ~}dٟa\k?~C?OPfyc$q#AZr5Z ܣrW刯ʑ_O@e> +aa"O>d&?~tU99s祛C033|39l8l~}'~jX$9s֨ȧ"g s+Y,][i|+Yy%ĭ$~=#Hjwٟ3a~g CYo5Ռ+s(U$WR\JCeI0g]%ٟF)Z+k p@qŰ)oľ &6~?E_/gPϠB( .v~;pk!a9(j(0*> OKܐܐ(h09"8"pprߏb?qLj?FZr5fZ]-m}&iFFA/HE/6qjٟT~w}~o\W'_a+J7\3!|$[cվ3=7 ~qn\(>h ~HX=?w'-K4<΁-;>=Kg$[c23bk:P{=G|=5í!;S-ܜ> MĤ#94أGM|4Zq=8jƙx1iu5b>A^AIK5޶qG3FІMшM14DK:C߀~|Ռk=1=m Mi7_C XKTn5V3hƖXa 1Z@shfA;L\g;ѯ##Zrxj͸ޣЃqhhVhŖK;[4h6E#VnuV3ьЃІmшm ZC+l-D Ішqh6Жv;lI|?hNhhhvЖvlmA:L>d&?~t'|íՌ<+z ڰ3t[{|уs?ϣ\_WZG3@@vG#vC+v.;c넯zP6F ݠ;pklf6F =;t _7Z'n=V'9ڞCW3GCE#A+^{b뉯'za#M7MۨnOfьЃІш? @ڃ '9Z͸٣  =( @D#B+!bOr56Y͸ţG _E#C+!co0z(cwc;GyE3nhQhÑh0^a؆t8]$$[cՌ 8=8mq Zq4=|##цЈa c'9[fLh hhq0^1FƠ _C#8Ӟm>gX4g8+dԓzNJ:mq\aO?=qOOtf >HqG3NG)MG5MC=M)0&ao"Mzzz hO6e,qG3BBD#@+Nibo zP6U:̀0 ,|íj=qzp.pq6̂0 |3Ѓ__a3Η,qG3.D.@G#C+΅9gco6zЁ:q.̃B|íՌ{0:k5auh`Iu{ )G>B?d6C|[B fn>Ɖh46J{ xts1"s[&<\ zsw;lc669PU-UN8q#>>1b^?sllQ 35z~;?#Jʔj|hU}e ۥi|_$-LIw˙}Y)"/36P.dI/Ź}y!c.7̷SkCäN-mⱧȚ7'|R?7/z~% .HsbVc.w}<'2̋9s~C|Ssa4GC0^xR Ӎt^"k,|7{7<+B>_] nv~O7yn߳LyKv;o ?SYR|XO =w{~wc={J~z97q ٳ]cT<7 cyYrٽwY /n ,x͵)_J2mozKs<6u ],8(.ge߲{1YgTwϳ;m|7#QRsu_{ zw+(;5@s;p(_=xٹÿU9=j~۟Ӽ{~6k>_|u__g!$h9.V̬,NG&Dċ&6>f;\}ь}ƶcưm/m2\mOC}y<|G"j:jZټ7~7zmd΄|84rMxpix0ȇwJl+VqLUۖ2rLr@S9rA y@6}6ɳ 9[n3{~ Jam[R=^"E]E'@=<+>E]1$xx= pǕo>;3/(bB2B.B ba $wAbddL̹d ˥̝}1I9L\T\&Q_NT ӕX;;ݝVZŞꝞޕ ߎԤN |7HPr @D ৘ϑ\;>6T HP\LrˤdH0muT2؆2m?|Gy@?S# ~ lb~{Y|,&XɲxTq9V| 1l )N^Ó_zrF(=JK K^g3?cg"䋥H< ˡ͕7V2't ->`Jk e'ܢO;zzkO_oG<\– cfRmBLK?qF)Lb-ɒ̠dS^a |qE -FhJ&mrI8#dNTA$Qa?2* ksCyW.6 kBUђɴaS}ܻy˖BhVRyrǃL Ik.T$BZ;K|k^Slp!M)DB ЄƠ؞Y)j#Zbb*SFȨȾp'\[ck=wYa%|L+P+K0x{RB-^T?P}޽g*NcoMjW+lxFEDJXc1N':oSU._ʋ?c)CEJC9O  D?G$N,}D 6<<WA}UWՉ죅著*[pY՛Dz]-^+xѦ#·SM+m梁&Ҧ[K6Ս^zw33T >)̋d32̋}? 06wwmprGa̐]Yq΁)뙟ϱsJH9H|~ [u4`ǎ_u|x ?;'A|ۻuױƓS~O}1e%c |{#NFv/zJN^Y1Kmj/~{/m:/]ٹ'o`I=Zpa\-P%8okˋK!r>r$zsL=8z㿇tğ |/;zվBqF3rakz,=Wos +֐,ux97x8'|) y/64}-x /r_i5/.7ǚua '3*󡝞ЗSZ=qI[/!ǡ"ȳ}Iϐ;:EY/{BB-84V@|Xq5{k&3ۍ;cFRXԗ9TwJGﵘY a7G^g"L/c/gE3Lto:?8vwjZ.{5_>gD.B_NF8_> fbd<$ ȫt%Z_F0Hyٌt "{f\%k\nxy3vؒx8}߂n/s:_,ttl©NҖ2b1#-E~~m>F [JuI8FF8~;OT[I$kޒ-ݨ6;d9Y܎p={l0MY^<&Yd.Yqt O-6m3ؚj,|L>؁}~To<7r9O oe;<h >}J'#xK_J4o" QcG@i Y,N_s_x bjģcob}^J'MKbˑ_Z|Z޷BI,t#uH~Rv|Uܧ]f*[;MVd._`ktJwg͸v<{Aq2AD6VSO, ܒ]r^/]~:FZuJ]ǷUM>&6kTDɺ'1E"ǰY+YW193f\QϤIcźEe.|xeX8, 9bqM$fr2]2<0kS^2f*&ig?L"R|',>kH9FMBAan?'~w S o;D6zkv]Հsa|p #xF2'8TKk`1"^ïHu ?V_"}1|7wcn ߍb?Ƚ[vwcn ߍ1|7Ï{L1|7wcq÷ᷕ1tgS|9f**D|y{F58ݫ$l8ۤ"͂u_#9S_N-hn|ٍ/9td*e_hfS|H"+*+l$.u]+;ixuQ7_OfD렧)Ne|:_vn|yNN%_l|yׯǗkJum>/X6e- ߍ/ė'_NxϲF5}{NNe7A/?Еpcar{g''dL,?Ij˴*,#)q*,Atݎ/fW=[ #e$M/N2S|!y>TNzI_"+U1l#0A0ˆ(ǩyʤCuy {X߾aJh7鋥P@RMT/׉zR;l0ٺϒm ֩8 &o">uT /LznلD$ڿDd cd0  # A"мEBa+#{ ]Y'@=UмEBa+#{ `[#18$#x] ŕ{o5O=(K]`GCf!<d#~1+cD&qecLH ~ƨE?#9wtϭ[s+էN:שg|Ր>jii8DA%$p)!EO&G>2X"D&ɿBNq/+L@ +8?w<"HlRD)rЎKJ -A9k׻TJJI+Q]k?DПA7Ԭ!Tn%ʕ!p>Yeh_Ϫ]SS_4h5kIlƮ)<ɊbUUD( AoҖvUxQk:Gá(*(׎đϏc5V^_$J@!Ho"鎜]()pP>])%nJ_ڇ=Ȭ*E7(:>ad(zP) ۤ_<|1:+7W1Ы䡺3@ȼ]'˭03~=Cz@L <_MN9./OwU%QU{8HU)QZuUzs~AP)(rk&<('CZk)UͭH-p28wCIT2"Є.+^[_4?5Nn u'zUpK~y}f w?YC%ɛvB{0SfO@\ȭ('^BJO;K`)w#,m*ZG^Ư^}k}m2k6R:R˥R{,kk@y,7(‡Ҭ( m:E(z%HlBjH=}7LMoGv+Wjkm]e&PHqV ). aB ձT蠍p`0!UIc %|mVه(Aja\~UdrpW':_'t&T[ [j%V<~Uu/+B2tz2iG9*_v ә;՜g# 'ڣhot_@jZl*mMT>:g-]ve3aƞ +P{z{D;j]#0vO{j}"'nZSpyr晐Gb=RrՊATu@Ϡ?ujGߓ7DA.^OD'@{h,5m6{$u]i|QM. jBAovylTV> ==S] T;9s eETLjhħ@qB/~:*@@{h'jhb՞+ T#|QXz+'@oYv8otNCՆXx x1 7r]D|Q-#d%h#!m+X;:l+e@KSj@JՂ|Q% qD`Q-G5Q^<S>. [Q-¹6a|N*"kd˟B.=rUfQ,o2r\/_7:rp6 37lF86x6p[.ߋ{7m.?ʍr<,Z|(XѼMܜ /ٝlF[]1!OiZ6;!l"}s-}4ә YE0 lj[1F\hOIǀ~PK yI/ya1p |]~|Y9P9/Qb/y6ss{sG +'^CV`A_(b7.Pziu}}d #T :9VNE$95%[YS.3 Rbjf"K ]ryWߜWDk|җL!cudmޖxyXr͹ڦ#ᢘ7m74~o yӦܰ_#pMGdDJhouЬO^meRp^{E 6QGh& EU.ĝq.._#\ T?}gҪw`]&+ 2kivv&1[F,.$1ɑtIǤ#1Ĵ{/9v%GcO.lx L#1>6C;+oֽ K>ŌH f|HJlMpT몶Qc!jrkYmTB)b^ki1o$BZ\e q{@#h["sӯѻ2}sc$|T֛RsHZ=bJhtd-0` ǜbNk &z]; 1K̈́ާK1DJ_B z@joԚt KnlU'%x~ ۟. kZGNtbW>rGru!ɽ[O,2s|睿̾?]4Wm|Ex i'o]#V[Fc ߹g *(1I`J%Ǡ Z]WWt7~JU'É(MԂk/ !Ij։L=aW0`,_i6i>[y"=1{w_Su 6Fo-&6vi{nB;!?:QDܞUv=Ӹ}g !<xaBCa~aƕY a诣._,aZ| ;:":=6x 2xXW f&tS1^I "?)| Jk?_ >1Q2QO:dIHǻdFZP@Ac CKxR:nhx(/w<կs u3d!+O s\{q>~sY˧JA"-1$74!3CYZ'>6>:WX^Ld*P^7BKϭ6b 6DGc-ͳSo&ԗmeI\՗P;2ǿC5zWa6P'7* 9oAoUl;UI߄rJ{6ԟV'/?n.:/n%{/0 r- ph,^ 8o%*|cB&(G5])DwTs&՝i3葓l"#=ss=В:hI)kJچ Ctc-l)3)=;ǙPhYstww3݈[F^շeP}tcN^bPP8f_`+'0VVwh{{q[Db3_l?Aw\sgqН3VdC0mJ2&[ |[ɌWg6Y(M h'0JP̴x pARl 4iU,s44򴋇 6:Q!ڳɤ Ɍ!`mom2MU f܅P| PG D1^I&.?r׶^aKWt;Mkh6q^H6Yd-owHWa"~8rI1<<yZMy0䴋'd"OE/}2XojlDa' h:%ݹd͞O61P&=?G ׶^<{AvQl *9rWyό}2 ]''S;>>YλO(ρ| zƀ@K'v@SDZkKo͡'P_!o }bT\ c.3A; }Nʿ>6 oCc|.3@/ߦvyj|/ݷ1rP-~,y9՘^ǎ +czvᥙ7brv.[vu棯`[pq_2S뽥w#@ZEپ-úІ ~Pי,8b^qP(7yii] @93CN)OOS{rbO}3~/3! /cFeUtƿu n֭ErnCˇ C~=[RշdT}?>ӽ uBᾢ:XapgQ`pK,[i5>Dϋy]h} N>z]*{9 h_ ߽loJe6ڨnZpNJڡcq } sS[m&}V6qkg>THUL Liu9НHoO+R"OXC i si}'^C}S1 (R#%˼x>V,xú\R?nk83E@OO<e~T y 6 = ' AQث89 o1Mpᯐ?OcI# z״nC *G7F48R1YoOţvlv}mث8:aõ{l58NiLVJ'&N:zה%&=_S#&N*y2tfo󊉓)~k6&NGđ,ƭ,1q$saI'&D1qXc8fBx$dc,qNL;{3,&XGV{=&GMt%&uS uӘ8rJ#4&է>O?e':,1X:czv,LdcɮϺ?cIXbhϧ5mnR48~;cX9c-%ƒO:1ܔSK!>ew9]vbWwo=6G?cvٵyrk%f6a7 Ow9I'f࢜R99%d)On}|p>~7dg1gb 86>pnĀz%܅0Vfov:-%O:1ܔSp!>e>~:1;>1oy31]b J礼<礼1ǶS[S0c )`:qd35 ϸt,1KS},1;BNb z-'ɉ>1%bIvc nLAcXXXXXXX^RXyXX2****XbEX~0װvJ~J%k}Cksq~oιWl|?Xl =;pZK4^7c䯿ؔt(907Ma_8`hGquՁ| rSn|'uo&MD>gN:/.EH'Ew:[/3++絝Y]|~/||!'~?#'!#";zY燉kn%E?ć?+{ ,xwS` em'ƩIS1wGN_%ywi~yW:E9~lޣ߫-^Zט>sH]֖+L "?K@&9Hi8Ώ=EHx=!:%}a RP,=/ҍNs:$PG_MW -Ld(1eY S,kV)|OPˊ0AD=`6}?XiSvѿ7w!៲uT!~ӏGOo N`h_/'P~)|L$ ?pOc*+`?tj ے9 O(8sHOȘynP!N|27U~~qB~ecs'f[X$f.]2Co~{ooinp:8t-^;!*kMräߎoS(JRwSx@o>}<~ė f$EOR$iIJUK3I.df3r͓c"/~&CUևI'SwUůg}~1~|f~7Kcd;O.}Pk_~ϏR{9~{o}]dGDm߿~{]ֶo5*I|xce]d^"&1I֬j:w IUBMSy`F(cBGË}>yE|%x|ڝy"A"Gﺉ ;;\</H"w':3z!EaHJ/" 7`2C&}m||.m䨠;:^ľ8ؕ# Ǚib1ΒUtL'qaIPl4 3&nRd7l{gOtQyZ낖v< '#&[.Ctj|^.CC uq1T(k6^IvzU+3ﬠY\=L0sEISzI\8.hNXU PH13nGP<+I82q6}͓F{GӰd'Ogo޴rI$a3ˇB:h2ӄ;H<49I%T{4V.M>Ȥ8M,aqj,,I]j8lF,0KPKr]!#Vt tؾHHin$oh5ↀQT3Uʭ7qYLHPDT@VB K蛅^~ޚJá"Jt=Wla-SlN(l A" *E2mƫT r bD S.R#$'9&rIaixy.R7C ,.>,l Ρwx[Eެ:3/6RaK~܁* ٞUMOz|pב2Wb> X$oH%6r|ٜ8JXQtkg:ʶ$!Hr $Zpr_maas=l ZtMw3Z :i/N$ ^90 8Ac8|xAr7)^i+ ؖvVp4ajCh2b!%Ct~{}([ R:AHR7:$Vp:,5Yrih"%ykc"EJWR>\-BOI%*p; Ԛ5mSMpU)2mN3LFuRigu690kV*ZGչ !i4hӔs{/߫5ÃJ%bZBXPˆY.3R>хB#bWڕJqdKR|^VZ\3֘X LCȜ,5ҙjx|X(B$aR:/S[m$&tTnI1s{iUVY&Lgfd}Wń̆e 'C-3,ΗpfwWfɇ٨ò\.n3ƹlwl)[[M*p SEl6(E[06k t {~1ti>?Ό"1lv$2JS/ee2d79Um,eQs>H:L;qs+Nӝ,er <|m[;ęyQfGg9;:5Kq)~yɮ,a{6>էc6"om0jcFgඏ2s֠I lZx{4\  :ol=z~TrGzG}p?iGUp :$CKu#vz0'Qy|ӰKxxӰÞ{<Þ=XbM6&û  oJ x_\<chnY{sWŇ7ﶾMyZO{7 ?FR/ևG%+zſIO IC/ƅRw.>:x&y#<:p=Ň)#}x0ijDxxx:rOX5Ud& t$xxㅋ/|}_'r8}<͊7y~\Fsw`.x*-!G)ʈ9Hgχ7O%zSk,5li ?O6 e:hU>Kֽ1K$Xӽp>sgLYuTNʄe ԉ&ufzjqadN!ALo7ݸ,EEgd L~X|5I1tG&ul퐱|l;zp޽i4t4fUU(.qkgXCmfRL>" QfjŴ!{NMS[ P~@ bj놴¼|ΐ“T WfIҏDBƆlDꝒ/3ix5Ji* ՙ h9ʎk[U7ȏmM'N;'3)zb xXy1rrV{&x,av[Zu' d|m`[{=򸵍ҀF|8Vcm䪗KQ^FzJ}$KPPWRxUN^SjZ@=<$sRlbîR:tCx96dġ8>QIIUeC;|Qw:uNTkon84|ڻm*1ɹOQRf*gOoisiTKb1I4$p㛍OY uDq͖̎|vl>YjaeX*]TT.͇GM>lm $TXR<,IE).PFU4 *`v獥Y2W׌\xb/;PGHf)><|( MkEeA.;0wV%{#dqsҲek6vw*u3~Tm>X흗,tdBj" 5S]>1s<}mmK8uRߠbgڟ7nEuЎɇ-XSaLS!P%Je=O\ ̆:lE$ NYI) C%먐a 82ԉ.zHC9˨Il/PY j)AQ6m-zMVP6V<2` q E "R/QemFrJ/s2F8) "$!C A HnK ϨQK5EQi$5b'GRsByz IDEk-9^z b((pb zŤFˏ,Kp#W19Ϩ-rrEXVzBiTV&%h| [.=2ʕj(}j^O, AU,V mqƖϝȣD-W8-Lһ\HT/O h )vn;"EDi1R=s?,6Q-Z/t"X|(52s9T+Q:&kvx(ncbm}iaPH P1WULg;h160[$Gv +#Go)Ԙ 8{,yN|h,fi\Ui .$(yͦ!G^@,d }Zӡ`d<St{Z-GBaAfԛMS\ʙ"]uO*?㥪F"Yȸ 0HXgJ81$a~_kʂK,x&WrZw-?$!%m+Jⱍm]ih5ߑfnٵ-R;N3tJ@1%+~sm%PMĝic&s\aw9T}$1VhehBD%Nh(Bx] 6H*bhڙ/++ZsŘVDE@A=W؝gCB CոɊc {i@Lap-IO|xA6@5k~5Kg1 j@fԒuݤSPKTjP BŨl>WT,ӪZ v*VB̭VT>:B*)c1xSj1w "νpLìެC_D9PJf|1RBC'Lgv߅1L{"-),yX";"j ԇZ *ԂԈWͥ""UA֠b> \ &8_d|JCMRI)ԩ1=PW p!*%!@xEaZA4񰶄xsPvE"tGpE7%ي(N9080H!pٗQGѡ\`2g޿8UQ2tiD؛㯃r0 yY9K@Ȱ#0:Q@x_\o#7:>| HY麬R҅#2_+)]"9g[9Aظr {|++O#ssQ߇NcϠO ^SE!OyϏ JiqFyPs Mi~)g hWt 9Kwjpy-KR5f>vG$A#3'F!2t>19 j|QdeE Iq 36դ45lLĵwY}IB\Ҥ`n ?̘Xvо;9fiL.Օ9jYR͆}މymj>ҙ`U>:5}&| s5Hӳi̘;}nO 78b $֤rHO8!3M 7kVKbdO♡ܙ_c8.14|bbGܜ:>g:tj:+n#%293mҩabÈ*I5*yS$P6О%X)PP.uU o}<Y0UqNmݳ@YZϓe)Xz]>v&î60k~;EYc~45:펞rGE,Htk#& "!aGiKyr):;_޷k/<4|0ޤ]VI6s'2? =u\'4xxR>xL_|xt;=ޏ|r χ=xʇ+< Ϡ\9/[|xm>iaχ= $th6<>`4Z;xooR9n\gɷ7^޼~s TZӪߜ%5w)<U\QSb?4 0x%[f^&uGMlnn|G]x|د̷<|j6 `^^^1_$߱^C]yswӹoNl;#iKJP/:ۯ|+ 뚆Oq&R猃Q/坴|>:4CY\ ;2QIK=y@0 /Sde&q_g A4,Sp:ca=AjE\ӘrΒsBZL-~kdLs̅MF}Ֆhʕ&4c*m{KV!L]W tbta[X KjPIuZͲTN|xQWJyǓhI֫8!iOT i[Y" 4s2.a°B=(dY/Q YDh,-OlYY (~ X fXBD!|.lAêe~P1[HZK pɖx%"dH!TlȔ7fW)jKF|xTB dӇjik}N[*`)!v3^:PٙsÑܲy<ކ"k $EQ"s-(sdokF\\2=|8%EHiv%"Kpf)wd6S3~*GTRnA=aҊA$`aAI2-b*7 "K! `ߎA )2Z e`Z?_2d ՇjLhXmm;moqd&jɟdȃrP;lc^4,uʼnZ fMaFLʋkKPg(&f5*Vabt N(tcOpuT|`o vn ^`Kc9R$qhXg{&'TٍDԼ fnoBa9+jQ/aFrľӉx'=8uVJ'.{Gv:p>dЁK@%^L >hE4sA$N†+ 6$jootyܧC96"(E%V% $>S ڔaS;ppʁ5wacYGa%TxK|aӥb a2\J1kI3-)˃3p{M֚;fKcޚHݙ(o#5/Y%;'{+L3Zt=k&0n\ˇ#S!olRr/GiS3o4L IvITnѰ2d㩩n5aq`쮐 ugSk)^|y<3gy[ܙb~X. ɨh\w>`Neب;HDYK!cQӝљ| :rMO`E:168tRzʓIY?)O j Ǿt`B@~VYP~_-<<ރY م!]絍91-6tKܵTZb=OASဍ䡝bg7iɊa 8ށB-gy5jY; IO/ {<΍IMJ- QstrGoyپm/O1lܾi<ؙUqI0✽qF5f'HQiEK{_z_rv8_1}1~=%fqFſuw,nixכi7ӰÞ{|aOÞ{>Þ=|ӰÞ{|aχ=4Þ=|Ӱx>A7Ƈp]0ӛ;Ɍŋ=Eᡌ_{k?< bUx_{o_Cw= Vv5UmnXKث|뉆A3ӰyiӰao< {4썧aOx4iOÞ= {iӰ7= {Ӱ3~h-J/Y٥d##E7 Yr?y猧Ⴣ&~⑄E.ɦ4Qh7ɣ= @P}~x>Yx< XP|"a#< 䞝y>=;ߛ4||f{>4|Ѝ{iӰ7= {ӰaOx4썧aOÞlO<|t5wEaP4wL48cS= 9tI9Xbe7eE|{}zu>TEV;j"|vgÊP!^ LVr"XB|ᄋR adl<חrzg64./憈3>.L4fQk>̣ruTg),,y>ixO03S]"朠%{ 5O{[QTƗELix/%k e]WJ*aWpr O{‡caYJ'W@B"Xˇ= 6$i!!!bpr%< 9@F  pW*pfn 1Μi= 2NdYpG--Gs?|a>x pGJ} 瞦ʅaO{ŇZ$KXnuwT4!HaO{pNXBްU eP[h,FI2<4/F:\|1 8C!Pˇ= 6x6Ğ9*IaOû͇Tɉ  xA |+w4f1>Q2:}zixr.*??ixOSuϞw]Ugp Cȍp IՇCźik׷O'J&b7j)77:tp> ޫ~;N?c`}A>C#7?ߝ?x:_I1YE_9'Rp!Zq< }ڋj?!.`./i6} ]dg*(c8|,|,1r_c$gO/<~O~{_"i0uם=?W[X=7㭿|GW~WO~wb3>Sk韭]!7;EsB޷Ϳr}/?o,v?|b陯gw]_{½g7G7z;9w}{?}ߗ>GsKO_, ?r˲LrЂ]NLh҇u٦9vSL]sU5!܈ۥÍއ_Q]~_<"7uC21RipvqO} ~ $߁?n>ջOJȝU8CDU^t{([0<.k0#ƛ̣w-ñ~{o>[:w7k0o;I彪% Zҵ&aRoǷ)}xWX~Wo>}~',w0O5L Ν'):}'%/Mo灾4K~{iFkws=k}~m~) :;[ykh94{g/|{KIp)a9)9|ϋ>0f \g؛' D^z33UYL߇~'O9|?_cTn|w\A} ӥr[~{o;ɐ&;۾~{߻ýl/O~Gͬ1mg2зg2зg>9=sr|LWw˭=~{go~{o{}oi{JO9}"Fs,&WIs[_=`i^`[.I ol,Gv l.m64 5`_  4`2*D5`_ث` ANCz`dW*- ak`W!1AV>}lփ o}dd$B/3|[kk4zU[`v ~i8s.;[`. =8Ȇ< 5n. kkkp^#6yc vmc7 *ܿ*_%z UvJ׮^%W}l~_ί77`_-ﭷ[Ҿ[?ywnw>[;,-Tj 5Uk P_M?ѯ˙'Qa݌Nb&(=5%s7IZm\fEOkMY5IUBMSy`F(c=?}>yE|t3釖;D#2_ E: uvvZxʍ :^8aEOFj:3z!EaHJ/" 7b BRYQ+C<+s4?΢'GU58@bIyV..,I ^%L}dчhf&sMv?n." ,,B?0tܕv< '#&[o7]&] Id mbPl9G|氕4_Ifn}薻9iJ/)T ǥM * "fvř>iG&WԦTyR|hILԛV.)$?v`fp](^MDm:uq‘<')j8bf#6CTŇ2&L{f3. Wp$ռqq،YEaN C8F̭x,anT.n2m⎳Sm},!bnHm Vcf vx\͒ƏiwɘM>HavY\9 kmA*TL,Ӊ-X,jtˬ2r|xj0ͮx14xc%Σ)=|Zx|ɘ;E:V:ER{̔𐮪j}h*N(1|0vЍ;͎X`gpMfcN6 W" pL>|>"%OLsfʸsE 6)!39!`6H#9,\@a{\҂u}sFD E Bˍ"0sh(R忴 ,l$,or !phEqF9V+ȑ|,~Ni5P2)7ɗ7L5a<n&Eo6:B-Z:V7RDH| bO*6D%Rm48 (!0_ aAށNBfUp TܱR2!  mx_96_9QlA)tRyK$IPXHxx8IyS.a`J ]' u#ܞh0 xXL~Wj ]$O]" >6#EsᗀO<-#ɇ|8hCB!d2+Pkl|X"H`4w҅d[KFR|%4ןrgHL[A@;P͢lXhܐ"a_ UF9%Z@mlV$pBCC R7rlHqC@A(s*aa{bVָ,&$("w* +i!%Ëq/?MoMR%P@D% +]P)agC Z "6U*9x1цS)|IAێ0s4<A}|6P;@F"oVᙗ%B@@T^l*AhC'=^>|8H+1fehb,J7$ u?9M>lNIt\BM5|3Iye[rW$L-8Q|xɶKK\Ұ0|X6-\% -hK崗' u}/\MWxXBd 1aji> pSr}lK;+]k2e.{U{b튀X¹JzJ$WdwA?gHB (#;-`ˇYjf`-$E%F=mgm-5,R ;+ 5R#oBMoD5+ET%4ĺVfu0&PV vL!Uk˳~5W@E1*P"׏ R|QFQ0z5 ) %Hks&(vVRB`u)v$ xwj\_a+i8zj,AHz4hxv51"+E). S!'xX$`k]D ΄Gj66cH˙% !-#HghpP \Tʆ U8sڪ`nv'Ùj&zhVQX س:Pfx5+J#\L4tn yiʇ= A1n-`,zaĬ|pH)|e+soJ%L8%)>DQю~c-ykZUH&!dN bLrsisNf0Gx \ڗpʇ[ : 7¤[๽*k|aY^Y>+bNY SpsuֱQ{gTafò?ͅ!̖ tK83GSػ+kl\aXN.Lg7x eH;^͔-&)"6_L[c"Hyf-5NwHpa:=r`?:ǂ4cgFQFBtg6; )Η`N؈恲2rxxtě6|p̲9g${G&X8̹[sg29i>-L<Ǩa#caepB\xԥȸ?xdvY\GӱB61IOSYt3pl rz]kPA?6\=r.Dwat kq7s~Y=?x*9Σ]]?Oꟴ􋣂q8y!:erj=瓨|❞ ia%< {d<45x"|6SSVm^ L~:*`* 3afuw6pVMj&^ttZSrbڊِ=&Ë-I?1uCZga^>l gHVR*+]$xIjK"`{w!cC6qN44ڄtzHmU4̜niqeG*ٛHöEgv[Ջ=1<|,ݼ99nvO=xp60ʭJyFi@#X>Lp wQ6dr⥨ /z=>k^l;LJSʺS{' *7Wt7S>l`6'()Aό ٳ'aqP7 ܴĴp%J1$s8ç,kcqc"h8OoffK>;6Q,02,B**#wt6gfܭl@Sȇ-D֟K. ,7S‡m_LJiZ[*TC],>->o\:k y t3^^&szVTF*\j)QCYRm$٢Tݔ(*Q 0,`lkF.lu݆&ٵ"Ѳ gƝ||;CM+Β=2ߌ9`iIJ5;?W6Dl x:Uj!Q. tv9⾶_%gdr:goP G"ֺJhGy 0&q©ْ{2Ç'.LfCkӦ|)8z7Ψ%&Ǜb-J-pL9~ncf\τDJ}EVClRn*HP7bW4!Nwn'JJ%dҌiEBv畞kVC4WDu|iLާ;K+Ɗ%8BuFQ{3S.Y\ pD!uTȰ|oDJ=qSe$橝 Q_KUu"| v)YF _ E, ϔ؊W6 P&ET+{O [ո@ ]TՅz VQ )AΗ2fPK99#YG~ R$ kgਈJĥRԢ4l1ҋɇt x~kl! Z<=Њ$"뵖7m5;6u-_RЌ6 N@h-]vk)XZlfy% KЁV2AwR'*D.դhi0u/gTNKWP2@y*&dN޺NS>h%yEU&RA)q < ˡӷ13C4LPb A_Qm{JfyA.jc, jB+w'/1^'j J76X0!KyR54\HU\r+j8Aj V꧕zlP?*I|:X$9Ėz?$@rF#J߄:J80$a^_kʂK,t&WrZ2w- %m+J m]ih5ޑjܱkKvfD鮕  1B[&KjWP2J4Û;I-MhsIZqIb EL9òь)^ 5‰K0 Pd*lDTѴ3 VlW %1b8zQo;.4qI€Z,+Pljak,2πcnՀl]%늻 5̗pS7:ՠQ??ل}X U8ULab3Tڣ*)[2H}uURb IU4<8cD{:ɇYY$"9r $ (c1Na? /b cE[RlY+oBwD`Mi!+UKEL_EPGaA5k}D%F.t|AuYT Ghe W:R.yEGLDC>Îh?fl%jeؘKdg:md'ݥE6-# v DL%8OM=g@|׎G7>l'$Hj3 7>m5H8  ]=ԝ9\-T{OROr A(i58|Gn͕Çg]Ȱݴ;\z7988EB4ZxIM<x$WRG>Lf<8RhpiC0u:vjf#|igW9ۆ,bs`)7U<?~\X=O RL& 1Ug?Hf}_dA=8u2ܖxf o.0wC~7gks| `DnAZhx;ja&1)-^Q^Lۣ|xs5rSuvx/o3f@_xtiOۥa25HglNd~{@ۣNhx|xgv{>%~q{<_Wx<As^(,|xB채#vO%aχ=X%c<64A^/0X__"^Bbl~?Y/3>yI/_~%{IFisϐbvKlqq5 I]V;bEy >&}1=REiTO˲"eyҡ,c++`_b6C^I>7M H_<گflTy+u馜VStUM} _ oL n/2n[4gﹾhaχ= {|Ӱaχ=4aχ=4Þ=|La?NfFÛ/oX_Z_,}|Koz8tI"[S N,Z@yHEoI[c02)䱄< 1 c_ W'/}?q\r+go̙/1^AnUE+E-pZbZE;c,d+Tżr݌ '@|.Zx&ܖv4~lx`sc;l$/ q< IY{r~v1vf/Dxqn1cX/I(N޶6.8h~EqƷ"@UcӨ1\p N?E0o"op39ۺw" m'O^9Mgsn,-{@n)5?a:+!y0|߉%,tomjbT& u"~ 0 G÷ ÷ 0Wa#0~6OO?'6{|LWv`뻽^W`k\4}?7\a5)r&L|Q$|m>x0GoId׷ɶX/eɔ4VPJWZ[J7UcᒍZW 0e`<\}8Fpítv.2UF/ V4;ٚ.K-{IVKTf kNǴ](xZJzp* ohPͫ7zM6BN.|ՓV<Ხ Z/AO]Ɔԝ>W QQP3W wc:ERn453ӓ%V.23!^G붔%I;<, , ]B:w~$.Q*dٺ~HgJKDH V%e[іaa{ ܉2-fy9Lk+`i}M^]"޹;hs-e~蹢n~t$6ī˃RA' VB8mP 6 G|}m VDz`w#dɕ4&dz8\[%$:掠a.'Q:.)w\3?Ln |ITܵ}`*d"qTŴW -uǑUc6Q7f/0^QK#xّ-E.Q. xNLS^-R٥)W#4iU}#f8jܒWڅg8W#=Jm~>ΨùY02<9s nvݵ7;[~Q[&(lL1bo}8>+NٌEKQ3%l&.7{A׽ykԉVd]ooeDUsVi'qks뫗V~{+g׹c> ڼn1"Ow]fV4|̫]a}]'V_> Cynǔs{-_5FA>@0{D&&&  Äaaa00000axx0L;lDi4GVo <a8ÑTلc{I& S  Äa00aa0Lߩ 3v?=^1;fOR S ,͎8ώ^J% O5 !~MldEZyR)D 5.Tb.pDJ:pE4 qt|.U*axK7m}-!|_B Myv^kx[Y:6~K? 8a5ހy.GO(\yp| 5c*-=.L.,k/>rYzmST3^Wj1H@H Normalhx`hCJ_HmH sH tH Z`Z Heading 1 $$$ & Fx@&a$59CJPJT`T Heading 2"$ & F0x1$@&]05>*J`J Heading 3$ & Fx1$@&5R`R Heading 4$ & Fd1$@&a$6CJF`F Heading 5 & F1$@& 56CJD`D Heading 6 & F1$@&5CJ B`B Heading 7$ & F@&6>*L`L Heading 8$$ & F@&a$ 5B*CJF `F Heading 9 $ & F@& 5B*CJDA@D Default Paragraph FontVi@V  Table Normal :V 44 la (k@(No List <Z@< Plain Text CJOJQJ<B@< Body Text$a$B*CJFC@F Body Text Indent$a$B*6"@6 Caption xxCJD`D TOC 1  & F ^`<OQB< Title 1$a$ 5CJ4PJ4@R4 Header  !.OAb. Title 2CJ$.@. TOC 2 ^.@. TOC 3 ^.@. TOC 4 ^.@. TOC 5 ^.@. TOC 6 ^.@. TOC 7 ^.@. TOC 8 ^.@. TOC 9 ^6U@6 Hyperlink >*B*ph4 @4 Footer !.)@. Page Number@V@!@ FollowedHyperlink>*B* LR@2L Body Text Indent 2 #h`hPJB'@AB Comment ReferenceCJaJ8@R8  Comment Text%CJ:P@b: Body Text 2 &`,Or, para'xPJXOX code(-D`M `B*CJOJQJph334Oa4 Enum )`CJaJR^@R Normal (Web)*dd[$\$`CJaJPS@P Body Text Indent 3+h^h`4o4 Numbered , & F@T@@ Block Text-  ] ^ H@H 8K Balloon Text.CJOJQJ^JaJ@j@QR@ 8KComment Subject/5\v@v 8K Table Grid7:V000hx`h O<=>?@ABCDEFGHIJKLMNO*+g*+,-q-;gh   L,;-,8. /012 3 ";< $:! 9O#&MGi07(15/64.4-67895;<=>?@ A!B"C#D$E%F&G'H(I)J*K+9 = O<=>?@ABCDEFGHIJKLMNO*+g*+,-!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMkunsztJim Gray o%&q-kkjg}LkjgtBtpFj4q-8 0  24= [./<Cdems7Su >"m"M##8%& 'O)^)*d.. 2234D5N7j77T8888;C<Q<??BCRD4 0P9P90A0A0A0A0A4 0P9P90G4 0P90I4 0P9P9#0K 0K 0K 0K0K0K0K0K0K0K4 0P9P90O4 0P9P90FQ4 0P9P9#0R 4 04 0UU0U( 0U( 0U( 0U( 0U( 0U( 0U( 0U( 0U&0U4 0UU0_*4 0_0a0a0g4 0UU0h0h0h+00x+00@0`@b`+00@0+00 +00 Xv+00 +00P +0 0 ؏@0+0 0 *@(0TX+004@ 7"@+00(@J0+f+00`@0 ((+00lb@0  +00"m"M##8%& 'O)^)*d.. 2234D5N7j77T8888;C<Q<??BCRD|| }@# > ͑$> Kgɚ1c!3զNZiP6C<GhYQE  1 &.V]<= ST%Gef7ijr)0NV V^)1}~ajT]2Vx.7-.px*+4U]#^RSTUVWBDEFpx<^    L M ~  )2012346_`*@S\}<D V!9""#F###$:$;$<$>$?$A$B$D$E$G$H$Q$R$S$_$`$a$j$k$l$x$y$z${$$p%%%P&Q&R&T&U&V&X&Y&[&\&^&_&`&a&b&c&e&f&g&h&&&&^'_'`'a'b''''''''''''''''''''''z({(|( ))))))*********z+{+|+}+~+c,d,e,--- - - - - ------------------- -m-n-o-r-00000000000000000000000-044 0000#0#0#0#04 004 00t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t 0t0t4 00K 0K 0K 04 00>"4 0>">"0M##0M#4 0>">"#0&4 0>">"0O)0O)4 0>">"0d.4 0>">"0 20 20 20 24 0>">"0N7 0N7 0N7 0N7 0N70N70N74 0>">"0C<4 0>">"0?0?0?0?0?4 0>">"0E(4 0EE0BG(4 0EE#0IN 0IN 0IN 0IN 0JIN 0JIN 0JIN 0JI 0I0I(4 0EE0L(4 0EE0wN(4 0EE#0O4 0 >">"(4 0cRcR0uR0uR0uR0uR0uR0uR0uR0uR0uR&0uR(4 0cRcR0:\84 0:\:\0\^0\^0\^84 0:\:\0?b0?b0?b84 0:\:\0fl0fl0fl0fl84 0:\:\0p0p4 0#0gt#0gtO #0gtO #0gtO #0gt#0gt4 0gtgt#0|#0|#0|#0|4 0gtgt#00I 0I 0I 0+04 0gtgt0(4 00$(4 00 (4 00K(4 00ɚ(4 0000(4 00!4 000P 0P 0P 0P 004 00i,0i,0i,0i,0i4 004 0J 0<J 0<J 0<J 0<J 0<J 0<J 0<J 0<000E 0)000(0 )0*0 0= 0)00)0*00= 0)00)0*00L= 0)000)0*00= 0)00 )0*0 0 = 0)0000 )0*0 0 0)000 )0*0*0 0 00)00 )0*0 0 Q 0)0*0 )0*0*0 0 Q 0)0*0*0 )0*0 0 0Q 0)00(0(0(0(0(0(0(000 )0*0*0*0*0 0 Q 0)00 )0*0 0 Q 0)00 )0*0 0 Q 0)000 )0*0 0 0Q 0)000 )0*0*0 0 Q 0)0000 )0*0 0 Q 0)00 )00*0 0 0Q 0 )00 )0*0*0*0*0*0*0 0 Q 0 )00*0 )0*0*0 0 0Q 0 )0*0*0*0*0 )0*0*0*0*0*0 0 Q 0 )00 )0*0*0*0 0 00Q 0 )00 )0*0 0 Q 0)0000 )0*0 0 Q 0)00 )0*0 0 0Q 0)0*0 )0*0 0 Q 0)0*0 )00*0 0 07 07 07 08 08 08 08 08 08 08 000800000000 0@ 0@0@ 0@ 0@0 0@ 0@0@ 0@ 0@00%0@%0@%0@%0@%0000000000000000000000000000000000z4 00@0@0@z4 0z4 04 0EE0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F 0F 0F 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FG  0  24= [t./<Cdems7Su >"m"M##8%& 'O)^)*d.. 2234D5N7j77T8888;C<Q<??BCRD|| }@# > ͑$> Kgɚ1c!3զNZiP6C<GhYQE  1 &.V]<= ST%Gef7ijr)0NV V^)1}~ajT]2Vx.7-.px*+4U]#^RSTUVWBDEFpx<^    L M ~  )201236_`*@S\}<D ;${$$p%%%Q&R&T&U&V&X&Y&[&\&^&_&`&a&b&c&e&f&g&h&&&&^'_'`'a'b''''''''''''''''''''''z({(|( ))))))*********z+{+|+}+~+c,d,e,--- - - - - ------------------- -m-n-o-r-0000000000000000000000 0-07 4 0000#0#0#0#0 4 004 00[ 0[ 0[ 0[ 0[ 0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[4 00K 0K 0K 0 4 00V$4 0V$V$0e%#0e%4 0V$V$#0;)4 0V$+0+0+4 0V$+004 0V$+0q40q40q40q44 0V$+09 09 09 09 0909094 0V$+0>4 0V$+0}B0}B0}B0}B0}B4 0V$+0H*4 0HH0iJ*4 0HH#0DLN 0DLN 0DLN 0DLN 0+NDLN 0+NDLN 0+NDLN 0+NDL 0DL0DL*4 0HH0P*4 0HH0Q*4 0HH#00>P 0>P 0>P 0>P 0>0>4 0>>0,0,0,0,0 4 00 4 0J 0J 0J 0J 0J 0J 0J 0J 0 00h0rE 0r)0r0r0r(0r)0r*0r0r= 0r)0r0r)0r*0r0r= 0r)0r0r)0r*0r0r= 0r)0r0r0r)0r*0r0r= 0r)0r0r)0r*0r0r= 0r)0r0r0r0r)0r*0r0r0r)0r0r0r )0r*0r*0r 0r 0r0r)0r0r )0r*0r 0rQ 0r)0r*0r)0r*0r*0r0rQ 0r)0r*0r*0r)0r*0r0r0rQ 0r)0r0r(0r(0r(0r(0r(0r(0r(0r0r0r )0r*0r*0r*0r*0r 0r Q 0r)0r0r )0r*0r 0rQ 0r)0r0r)0r*0r0r Q 0r)0r0r0r )0r*0r 0r0rQ 0r)0r0r0r)0r*0r*0r0rQ 0r)0r0r0r0r)0r*0r0rQ 0r)0r0r)0r0r*0r0r0rQ 0 r)0r0r)0r*0r*0r*0r*0r*0r*0r0rQ 0 r)0r0r*0r)0r*0r*0r0r0rQ 0 r@)0 @*0 @*0 @*0 @*0 @)0 @*0 @*0 @*0 @*0 @*0 @0 @I 0 @)0 @0 @)0 @*0 @*0 @*0 @0 @0 @I 0 @)0 @0 @)0 @*0 @0 @I 0 @)0 @0 @0 @0 @)0 @*0 @0 @I 0 @)0 @0 @)0 @*0 @0 @0 @I 0 @)0 @*0 @)0 @*0 @0 @I 0 @)0 @*0 @)0 @0 @*0 @0 @0@7 0a+00;K>>A"+:9EVTbw"=6I$)4 F5="(%O,Z.1)5q5 """#/#d#s###%?lR_z 6GiN~-#F L1@!&:,-./225p5q5p5 #0R v Ӫ$q- tXX !%,07:A!!!!pF_!!!0M P2$fk=$YX2$Mm - |G 2$+_r*Xȃ(2$q:nN$@ 2$O%!؅12$xE4&ȵ% 2$8$ɵ{&q 2$n1\nsWV5n;2$tfV穀VA 2$7Y(Y(F2$|)?&$ߋH2$k[/tIiQ 2$9ånqttŁkg2$4}9Ѐ.1N'C2$-tLۄEY/&2$;n68D$2$L{k;2r 2$YAR{ֻ(2$ .,W2$ߺbf"VG=x) 2$ПP.3xr UI2$$ӫڣQ 2$82u]~Mc7&2$$`G2,yi\ 2$N=i0U_6k2$:_o?hQF=2$tUrF+et{ 2$}v4j%D6/5|.< 2$$W̩l;Ϋ1 &2$X&{v\2$%V$Sه 2$}R63ߓ;}02$mW `zSWV, 2$c.%kcܴD'92$fn$^ hZr2${VRu$H- 2$($c3˺~2$ }K12$^TINd`pܦkH-W2$ :MiƧ2$F9ʧ%%N 2$TҪiRugX2$aJ!$Ae;U+2$tb? X{ ̙@ O  (    <"    <"   <" J  # " g <g#"   h < h#"    i <,i#"  ,P j # #" H  # /  /H  #  h  3 (?3" (  3 @. TTTT"` Bh B''  3"n  c $X99?"`B''T  # 3\x' 3H . # 4.  4H 9 # N9  N ; s X;?.0e/ TTTT"`  V G # +G"` +H M # *M *\ O # &O#"  &B S  ?#&&&&_.`.a.b..j7C<?EP67q-yO$/@^$Tj*Q ri ' rh / rg1 n r*Q t ' t / t1 n t91 $Tr$T.@I$T;:O#@z%lTG$P(TOg!y$ $LM|$T'(\J' _Toc25156982 _Toc25156983 _Toc25156984 _Toc25156985 _Toc25156986 _Toc25156987 _Toc25156988 _Toc25156989 _Toc25156990 _Toc25156993 _Toc25156994 _Toc25156995 _Toc25156996 _Toc25156997 _Toc25156998 _Toc25156999 _Toc25157000 _Toc25157001 _Toc25157002 _Toc25157004 _Toc25157005 _Toc25157006 _Toc25157007 _Toc25157008 _Toc25157009 _Toc25157011 _Toc25157014 _Toc25157017 _Toc25157018 _Toc25157019 _Toc25157020 _Toc25157021 _Toc25157022 _Toc25157023 _Toc25157024 _Toc25157025 _Toc25157026 _Toc25157027 _Toc24193021t7Su >"&O)d. 2N7C<?BCRDbCbvlt̑=f02r- }Lg>$o>$ 001ttzwzwwwwwwwwwwwxxxyxyyyyyyyzz>>҂҂]]QQƆƆ))шшUUڌڌ33SShh}}$$tt""??JJvvŖŖӖӖՖՖÚÚ##__LLGGƦƦŧŧNNppZZȩȩӪ%..YY""QQhh !!$$::77ss{{~~11ffϸϸ<$<$>$>$?$?$A$B$D$E$G$H$P$S$^$a$i$l$w$z${$$$%%%)&-&D&N&P&Q&p&p&r&r&&&&&j'j'''''''''''********{+{+|+|+}+}+m,m,q,q,,,,,,,(-(-,-,-D-D-k-k-o-r- 001ttzwzwwwwwwwwwwwxxxyxyyyyyyyzz>>҂҂]]QQƆƆ))шшUUڌڌ33SShh}}$$tt""??JJvvŖŖӖӖՖՖÚÚ##__LLGGƦƦŧŧNNppZZȩȩӪ%..YY""QQhh !!$$::77ss{{~~11ffϸϸt"<$<$>$>$?$?$A$B$D$E$G$H$P$S$^$a$i$l$w$z${$$$%%%P&Q&p&p&r&r&&&&&j'j'''''''''''********{+{+|+|+}+}+m,m,q,q,,,,,,,(-(-,-,-D-D-k-k-o-r- 1ttttttttzwzwwwwwwwwwwwxxxyxyyyyyyyzz>>҂҂]]QQƆƆ))шшUUڌڌ33SShh}}$$tt""??JJvvŖŖӖӖՖՖÚÚ##__LLGGƦƦŧŧNNppZZȩȩӪ%..YY""QQhh !!$$::77ss{{~~11ffϸϸ;$<$<$>$>$?$?$A$B$D$E$G$H$P$S$^$a$i$l$w${$P&Q&R&R&T&T&V&V&X&X&Y&Y&[&[&\&\&^&^&c&c&e&e&h&&&_'b'''''''''''''z(|( ))))********z+{+{+|+|+}+}+~+d,e,- -n-o-r-VgD*;voj~M7nR$A$D$G$a$z$Q&'z())))**r-9#a@8;%q-@@UnknownJim GrayGz Times New Roman5Symbol3& z ArialG5  hMS Mincho-3 fg?5 z Courier New5& zaTahoma;Wingdings"h0tus++!d## >qHP?8K2The Sloan Digital Sky Survey Ani ThakarJim GrayH          Oh+'0   < H T `lt| The Sloan Digital Sky Survey Ani Thakar Normal.dot Jim Gray3Microsoft Word 11.0@G@la@͸@ ;!+՜.+,D՜.+,x4 hp  4Sloan Digital Sky Survey, Johns Hopkins University#W The Sloan Digital Sky Survey Title$ 8@ _PID_HLINKSA M!http://www.sdss.jhu.edu/sx/pubs/ OXhttp://www.sdss.org/   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoqrstuvwxyz{|}~    Root Entry F Ϧ;!Data 1TablepG%WordDocumentpSummaryInformation(DocumentSummaryInformation8 CompObjj  FMicrosoft Word Document MSWordDocWord.Document.89q