PK .Doa,mimetypeapplication/epub+zipPK.DiTunesMetadata.plistu artistName Oracle Corporation book-info cover-image-hash 932118354 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 682220456 publisher-unique-id E26051-04 unique-id 420193045 genre Oracle Documentation itemName Oracle® Fusion Middleware Administering HTTP Session Management with Oracle Coherence*Web, 12c (12.1.2) releaseDate 2014-05-07T11:35:23Z year 2014 PKהzuPK.DMETA-INF/container.xml PKYuPK.DOEBPS/cover.htm  Cover

Oracle Corporation

PK@t` PK.DOEBPS/whatsnew.htm What's New in This Guide

What's New in This Guide

The following topics introduce the new and changed features of Oracle Coherence and other significant changes that are described in this guide, and provides pointers to additional information. This document is the new edition of the formerly titled User's Guide for Oracle Coherence*Web.

New and Changed Features for 12c (12.1.2)

Oracle Coherence 12c (12.1.2) includes the following new and changed features for this document.

Other Significant Changes in this Document for 12c (12.1.2)

For 12c (12.1.2), this guide has been updated in several ways. Following are the sections that have been added or changed.

PKPK.DOEBPS/features.htm Coherence*Web Session Management Features

5 Coherence*Web Session Management Features

This chapter describes the features of Coherence*Web, including session models, session scoping, session locking, deployment topologies, and logging. You can configure Coherence*Web in many ways to meet the demands of your environment. Consequently, you might have to change some default configuration options. This chapter provides an in-depth look at the features that Coherence*Web supports so that you can make the appropriate configuration and deployment decisions.

5.1 Session Models

A session model describes how Coherence*Web stores the session state in Coherence. Session data is managed by an HttpSessionModel object while the session collection in a Web application is managed by an HttpSessionCollection object. You must configure only the collection type in the web.xml file—the model is implicitly derived from the collection type. Coherence*Web includes these different session model implementations:

These sections provide additional information on session models:


Note:

In general, Web applications that are part of the same Coherence cluster must use the same session model type. Inconsistent configurations could result in deserialization errors.


Figure 5-1 illustrates the three session models.

Figure 5-1 Traditional, Monolithic, and Split Session Models

Traditional, Monolithic, and Split Session Models

5.1.1 Monolithic Model

The Monolithic model is represented by the MonolithicHttpSessionModel and MonolithicHttpSessionCollection objects. These are similar to the Traditional model, except that they solve the shared object issue by serializing and deserializing all attributes into a single object stream. As a result, the Monolithic model often does not perform as well as the Traditional model.

Figure 5-2 illustrates the relationship between the logical representation of data and its physical representation in the session storage cache. In its logical representation session data consists of metadata, and various attributes. In its physical representation in the session storage cache, the metadata and attributes are serialized into a single stream. A session ID is associated with the metadata and attributes.

Figure 5-2 Monolithic Session Model

Monolithic Session Model

5.1.2 Traditional Model

The Traditional model is represented by the TraditionalHttpSessionModel and TraditionalHttpSessionCollection objects. The TraditionalHttpSessionCollection object stores an HTTP session object in a single cache, but serializes each attribute independently.

This model is suggested for applications with relatively small HTTP session objects (10 KB or less) that do not have issues with object sharing between session attributes. Object sharing between session attributes occurs when multiple attributes of a session have references to the same exact object, meaning that separate serialization and deserialization of those attributes cause multiple instances of that shared object to exist when the HTTP session is later deserialized.

Figure 5-3 illustrates the relationship between the logical representation of data and its physical representation in the session storage cache. In its logical representation session data consists of metadata, and various attributes. In its physical representation in the session storage cache, the metadata and attributes are converted to binaries, and a session ID is associated with them. Note that the attributes are serialized individually instead of as a single binary BLOB (such as in the Monolithic case).

Figure 5-3 Traditional Session Model

Traditional Session Model

5.1.3 Split Model

The Split model is represented by the SplitHttpSessionModel and SplitHttpSessionCollection objects. SplitHttpSessionCollection is the default used by Coherence*Web.

These models store the core HTTP session metadata and all of the small session attributes in the same manner as the Traditional model, thus ensuring high performance by keeping that block of binary session data small. All large attributes are split into separate cache entries to be managed individually, thus supporting very large HTTP session objects without unduly increasing the amount of data that must be accessed and updated within the cluster for each request. In other words, only the large attributes that are modified within a particular request incur any network overhead for their updates, and (because it uses near caching) the Split model generally does not incur any network overhead for accessing either the core HTTP session data or any of the session attributes.

Figure 5-4 illustrates the relationship between the logical representation of data and its physical representation in the session storage cache. In this model, large objects are stored as separate cache entries with their own session ID.

Figure 5-4 Split Session Model

Split Session Model

5.1.4 Session Model Recommendations

The following are recommendations on which session model to choose for your applications:

  • The Split model is the recommended session model for most applications.

  • The Traditional model might be more optimal for applications that are known to have small HTTP session objects.

  • The Monolithic model is designed to solve a specific class of problems related to multiple session attributes that have references to the same shared object, and that must maintain that object as a shared object.


Note:

See Appendix A, "Coherence*Web Context Parameters" for descriptions of the parameters used to configure session models.


5.1.5 Configuring a Session Model

By default, Coherence*Web uses the split session model, where large attributes are split into separate cache entries to be managed individually. You can change the session model used by Coherence*Web by configuring the -Dcoherence.sessioncollection.class system property or by setting the equivalent coherence-sessioncollection-class context parameter in the Web application's web.xml file. As the value of the context parameter (or system property), use the fully-qualified class name of the HttpSessionCollection implementation.

Example 5-1 illustrates a web.xml entry to configure the Monolithic model.

Example 5-1 Configuring the Session Model

...
<context-param>
   <param-name>coherence-sessioncollection-class</param-name>
   <param-value>com.tangosol.coherence.servlet.MonolithicHttpSessionCollection</param-value>
</context-param>
...

5.1.6 Sharing Data in a Clustered Environment

Clustering can boost scalability and availability for applications. Clustering solutions such as Coherence*Web solve many problems for developers, but successful developers must be aware of the limitations of the underlying technology, and how to manage those limitations. Understanding what the platform provides, and what users require, gives developers the ability to eliminate the gap between the two.

Session attributes must be serializable if they are to be processed across multiple JVMs, which is a requirement for clustering. It is possible to make some fields of a session attribute non-clustered by declaring those fields as transient. While this eliminates the requirement for all fields of the session attributes to be serializable, it also means that these attributes are not fully replicated to the backup server(s). Developers who follow this approach should be very careful to ensure that their applications are capable of operating in a consistent manner even if these attribute fields are lost. In most cases, this approach ends up being more difficult than simply converting all session attributes to serializable objects. However, it can be a useful pattern when very large amounts of user-specific data are cached in a session.

The Java EE Servlet specification (versions 2.2, 2.3, and 2.4) states that the servlet context should not be shared across the cluster. Non-clustered applications that rely on the servlet context as a singleton data structure have porting issues when moving to a clustered environment.

A more subtle issue that arises in clustered environments is the issue of object sharing. In a non-clustered application, if two session attributes reference a common object, changes to the shared object are visible as part of both session attributes. However, this is not the case in most clustered applications. To avoid unnecessary use of compute resources, most session management implementations serialize and deserialize session attributes individually on demand. Coherence*Web (Traditional and Split session models) normally operates in this manner. If two session attributes that reference a common object are separately deserialized, the shared common object is instantiated twice. For applications that depend on shared object behavior and cannot be readily corrected, Coherence*Web provides the option of a Monolithic session model, which serializes and deserializes the entire session object as a single operation. This provides compatibility for applications that were not originally designed with clustering in mind.

Many projects require sharing session data between different Web applications. The challenge that arises is that each Web application typically has its own class loader. Consequently, objects cannot readily be shared between separate Web applications. There are two general methods used as a work around, each with its own set of trade-offs.

  • Place common classes in the Java CLASSPATH, allowing multiple applications to share instances of those classes at the expense of a slightly more complicated configuration.

  • Use Coherence*Web to share session data across class loader boundaries. Each Web application is treated as a separate cluster member, even if they run within the same JVM. This approach provides looser coupling between Web applications (assuming serialized classes share a common serial Version UID), but suffers from a performance impact because objects must be serialized-deserialized for transfer between cluster members.

5.1.7 Scalability and Performance

Moving to a clustered environment makes session size a critical consideration. Memory usage is a factor regardless of whether an application is clustered or not, but clustered applications must also consider the increased CPU and network load that larger sessions introduce. While non-clustered applications using in-memory sessions are not required to serialize-deserialize session state, clustered applications must do this every time session state is updated. Serializing session state and then transmitting it over the network becomes a critical factor in application performance. For this reason and others, a server should generally limit session size to no more than a few kilobytes.

While the Traditional and Monolithic session models for Coherence*Web have the same limiting factor, the Split session model was explicitly designed to efficiently support large HTTP sessions. Using a single clustered cache entry to contain all of the small session attributes means that network traffic is minimized when accessing and updating the session or any of its smaller attributes. Independently deserializing each attribute means that CPU usage is minimized. By splitting out larger session attributes into separate clustered cache entries, Coherence*Web ensures that the application only pays the cost for those attributes when they are actually accessed or updated. Additionally, because Coherence*Web leverages the data management features of Coherence, all of the underlying features are available for managing session attributes, such as near caching, NIO buffer caching, and disk-based overflow.

Figure 5-5 illustrates performance as a function of session size. Each session consists of ten 10-character Strings and from zero to four 10,000-character Strings. Each HTTP request reads a single small attribute and a single large attribute (for cases where there are any in the session), and 50 percent of requests update those attributes. Tests were performed on a two-server cluster. Note the similar performance between the Traditional and Monolithic models; serializing-deserializing Strings consumes minimal CPU resources, so there is little performance gain from deserializing only the attributes that are actually used. The performance gain of the Split model increases to over 37:1 by the time session size reaches one megabyte (100 large Strings). In a clustered environment, it is particularly true that application requests that access only essential data have the opportunity to scale and perform better; this is part of the reason that sessions should be kept to a reasonable size.

Figure 5-5 Performance as a Function of Session Size

The preceeding text describes the graphic.

Another optimization is the use of transient data members in session attribute classes. Because Java serialization routines ignore transient fields, they provide a very convenient means of controlling whether session attributes are clustered or isolated to a single cluster member. These are useful in situations where data can be "lazy loaded" from other data sources (and therefore recalculated during a server failover process), and also in scenarios where absolute reliability is not critical. If an application can withstand the loss of a portion of its session state with zero (or acceptably minimal) impact on the user, then the performance benefit may be worth considering. In a similar vein, it is not uncommon for high-scale applications to treat session loss as a session timeout, requiring the user to log back in to the application (which has the implicit benefit of properly setting user expectations regarding the state of their application session).

Sticky load balancing plays a critical role because session state is not globally visible across the cluster. For high-scale clusters, user requests normally enter the application tier through a set of stateless load balancers, which redistribute (more or less randomly) these requests across a set of sticky load balancers, such as Microsoft IIS or Apache HTTP Server. These sticky load balancers are responsible for the more computationally intense act of parsing the HTTP headers to determine which server instance is processing the request (based on the server ID specified by the session cookie). If requests are misrouted for any reason, session integrity is lost. For example, some load balancers may not parse HTTP headers for requests with large amounts of POST data (for example, more than 64KB), so these requests are not routed to the appropriate server instance. Other causes of routing failure include corrupted or malformed server IDs in the session cookie. Most of these issues can be handled with proper selection of a load balancer and designing tolerance into the application whenever possible (for example, ensuring that all large POST requests avoid accessing or modifying session state).

Sticky load balancing aids the performance of Coherence*Web but is not required. Because Coherence*Web is built on the Coherence data management platform, all session data is globally visible across the cluster. A typical Coherence*Web deployment places session data in a near cache topology, which uses a partitioned cache to manage huge amounts of data in a scalable and fault-tolerant manner, combined with local caches in each application server JVM to provide instant access to commonly used session state. While a sticky load balancer is not required when Coherence*Web is used, there are two key benefits to using one. Due to the use of near cache technology, read access to session attributes is instant if user requests are consistently routed to the same server, as using the local cache avoids the cost of deserialization and network transfer of session attributes. Additionally, sticky load balancing allows Coherence to manage concurrency locally, transferring session locks only when a user request is rebalanced to another server.

5.2 Session and Session Attribute Scoping

Coherence*Web allows fine-grained control over how both session data and session attributes are scoped (or shared) across application boundaries.

5.2.1 Session Scoping

Coherence*Web allows session data to be shared by different Web applications deployed in the same or different Web containers. To do so, you must correctly configure the session cookie context parameters and make the classes of objects stored in session attributes available to each Web application.

If you are using cookies to store session IDs (that is, you are not using URL rewriting), you must set the session cookie path to a common context path for all Web applications that share session data. For example, to share session data between two Web applications registered under the context paths /web/HRPortal and /web/InWeb, you should set the coherence-session-cookie-path parameter to /web. On the other hand, if the two Web applications are registered under the context paths /HRPortal and /InWeb, you should set the coherence-session-cookie-path parameter to a slash (/).

If the Web applications that you would like to share session data are deployed on different Web containers running on different machines (that are not behind a common load balancer), you must also configure the session cookie domain to a domain shared by the machines. For example, to share session data between two Web applications running on server1.mydomain.com and server2.mydomain.com, you must set the coherence-session-cookie-domain context parameter to
.mydomain.com
.

To correctly serialize or deserialize objects stored in shared sessions, the classes of all objects stored in session attributes must be available to Web applications that share session data.


Note:

For advanced use cases where EAR cluster node-scoping or application server JVM cluster scoping is employed and you do not want session data shared across individual Web applications, see "Preventing Web Applications from Sharing Session Data".


5.2.1.1 Preventing Web Applications from Sharing Session Data

Sometimes you might want to explicitly prevent HTTP session data from being shared by different Java EE applications that participate in the same Coherence cluster. For example, assume you have two applications, HRPortal and InWeb, that share cached data in their Enterprise JavaBeans (EJB) tiers but use different session data. In this case, it is desirable for both applications to be part of the same Coherence cluster, but undesirable for both applications to use the same clustered service for session data. One way to do this is to use the ApplicationScopeController interface to define the scope of an application's attributes. "Session Attribute Scoping" describes this technique. Another way is to specify a unique session cache service name for each application.

Follow these steps to specify a unique session cache service name for each application:

  1. Locate the <service-name/> elements in each default-session-cache-config.xml file found in your application.

  2. Set the elements to a unique value for each application.

    This forces each application to use a separate clustered service for session data.

  3. Include the modified default-session-cache-config.xml file with the application.

Example 5-2 illustrates a sample default-session-cache-config.xml file for an HRPortal application. To prevent the HRPortal application from sharing session data with the InWeb application, rename the <service-name> element for the replicated scheme to ReplicationSessionsMiscHRP. Rename the <service-name> element for the distributed schemes to DistributedSessionsHRP.

Example 5-2 Configuration to Prevent Applications from Sharing Session Data

<replicated-scheme>
  <scheme-name>default-replicated</scheme-name>
  <service-name>ReplicatedSessionsMisc</service-name> // rename this to ReplicatedSessionsMiscHRP 
  <backing-map-scheme>
    <class-scheme>
      <scheme-ref>default-backing-map</scheme-ref>
    </class-scheme>
  </backing-map-scheme>
</replicated-scheme>

<distributed-scheme>
  <scheme-name>session-distributed</scheme-name>
  <service-name>DistributedSessions</service-name> // rename this to DistributedSessionsHRP
  <lease-granularity>member</lease-granularity>
  <backing-map-scheme>
    <class-scheme>
      <scheme-ref>default-backing-map</scheme-ref>
    </class-scheme>
  </backing-map-scheme>
</distributed-scheme>

<distributed-scheme>
  <scheme-name>session-certificate</scheme-name>
  <service-name&gt;DistributedSessions</service-name> // rename this to DistributedSessionsHRP
  <lease-granularity>member</lease-granularity>
  <backing-map-scheme>
    <local-scheme>
      <scheme-ref>session-certificate-autoexpiring</scheme-ref>
    </local-scheme>
  </backing-map-scheme>
</distributed-scheme>

5.2.1.2 Working with Multiple Cache Configurations

If you are working with two or more applications running under Coherence*Web, then they could have multiple different cache configurations. In this case, the cache configuration on the cache server must contain the union of these cache configurations regardless of whether you run in storage-enabled or storage-disabled mode. This will allow the applications to be supported in the same cache cluster.

5.2.1.3 Keeping Session Cookies Separate

If you are using cookies to store session IDs, you must ensure that session cookies created by one application are not propagated to another application. To do this, you must set each application's session cookie domain and path in their web.xml file. To prevent cookies from being propagated, ensure that no two applications share the same context path.

For example, assume you have two Web applications registered under the context paths /web/HRPortal and /web/InWeb. To prevent the Web applications from sharing session data through cookies, set the cookie path to /web/HRPortal in one application, and set the cookie path to /web/InWeb in the other application.

If your applications are deployed on different Web containers running on separate machines, then you can configure the cookie domain to ensure that they are not in the same domain.

For example, assume you have two Web applications running on server1.mydomain.com and server2.mydomain.com. To prevent session cookies from being shared between them, set the cookie domain in one application to server1.mydomain.com, and set the cookie domain in the other application to server2.mydomain.com.

5.2.2 Session Attribute Scoping

In the case where sessions are shared across Web applications there are many instances where the application might scope individual session attributes so that they are either globally visible (that is, all Web applications can see and modify these attributes) or scoped to an individual Web application (that is, not visible to any instance of another application).

Coherence*Web provides the ability to control this behavior by using the AttributeScopeController interface. This optional interface can selectively scope attributes in cases when a session might be shared across multiple applications. This allows different applications to potentially use the same attribute names for the application-scope state without accidentally reading, updating, or removing other applications' attributes. In addition to having application-scoped information in the session, this interface allows the session to contain global (unscoped) information that can be read, updated, and removed by any of the applications that shares the session.

Two implementations of the AttributeScopeController interface are available: ApplicationScopeController and GlobalScopeController. The GlobalScopeController implementation does not scope attributes, while ApplicationScopeController scopes all attributes to the application by prefixing the name of the application to all attribute names.

Use the coherence-application-name context parameter to specify the name of the application (and the Web module in which the application appears). The ApplicationScopeController interface will use the name of the application to scope the attributes. If you do not configure this parameter, then Coherence*Web uses the name of the class loader instead. For more information, see the description of coherence-application-name in Table 2-2.


Note:

After a configured AttributeScopeController implementation is created, it is initialized with the name of the Web application, which it can use to qualify attribute names. Use the coherence-application-name context parameter to configure the name of your Web application.


5.2.2.1 Sharing Session Information Between Multiple Applications

Coherence*Web allows multiple applications to share the same session object. To do this, the session attributes must be visible to all applications. You must also specify which URLs served by WebLogic Server will be able to receive cookies.

To allow the applications to share and modify the session attributes, reference the GlobalScopeController (com.tangosol.coherence.servlet.AbstractHttpSessionCollection$GlobalScopeController) interface as the value of the coherence-scopecontroller-class context parameter in the web.xml file. GlobalScopeController is an implementation of the com.tangosol.coherence.servlet.HttpSessionCollection$AttributeScopeController interface that allows individual session attributes to be globally visible.

Example 5-3 illustrates the GlobalScopeController interface specified in the web.xml file.

Example 5-3 GlobalScopeController Specified in the web.xml File

<?xml version="1.0" encoding="UTF-8"?>  <web-app>    ...
    <context-param>
      <param-name>coherence-scopecontroller-class</param-name>
      <param-value>com.tangosol.coherence.servlet. AbstractHttpSessionCollection$GlobalScopeController</param-value>
    </context-param>
    ...
  </web-app>

5.3 Cluster Node Isolation

There are several different ways in which you can deploy Coherence*Web. One of the things to consider when deciding on a deployment option is cluster node isolation. Cluster node isolation considers:

Applications can be application server-scoped, EAR-scoped, or WAR-scoped. This section describes these considerations. For detailed information about the XML configuration for each of these options, see "Configure Coherence*Web Storage Mode".

5.3.1 Application Server-Scoped Cluster Nodes

With this configuration, all deployed applications in a container using Coherence*Web become part of one Coherence node. This configuration produces the smallest number of Coherence nodes in the cluster (one for each Web container JVM) and, because the Coherence library (coherence.jar) is deployed in the container's class path, only one copy of the Coherence classes is loaded into the JVM. This minimizes the use of resources. On the other hand, because all applications are using the same cluster node, all applications are affected if one application malfunctions.

Figure 5-6 illustrates an application server-scoped cluster with two cluster nodes (application server instances). Because Coherence*Web has been deployed to each instance's class path, each instance can be considered to be a Coherence node. Each node contains two EAR files; each EAR file contains two WAR files. All of the application running in each instance share the same Coherence library and classes.

Figure 5-6 Application Server-Scoped Cluster

Application Server-Scoped Cluster

For WebLogic Server, all Coherence*Web-enabled applications have application server scope. "Configure Coherence*Web Storage Mode" describes the XML configuration requirements for application server-scoped cluster nodes for WebLogic Server.

All Coherence*Web-enabled applications have application server scope. Application server scope is not available for GlassFish Server.


Note:

Consider the use of the application server-scoped cluster configuration very carefully. Do not use it in environments where application interaction is unknown or unpredictable.

An example of such an environment might be a deployment where multiple application teams are deploying applications written independently, without carefully coordinating and enforcing their conventions and naming standards. With this configuration, all applications are part of the same cluster—the likelihood of collisions between namespaces for caches, services, and other configuration settings is quite high and could lead to unexpected results.

For these reasons, Oracle Coherence strongly recommends that you use EAR-scoped and WAR-scoped cluster node configurations. If you are in doubt regarding which deployment topology to choose, or if this warning applies to your deployment, then do not choose the application server-scoped cluster node configuration.


5.3.2 EAR-Scoped Cluster Nodes

With this configuration, all deployed applications within each EAR file become part of one Coherence node. This configuration produces one Coherence node for each deployed EAR file that uses Coherence*Web. Because the Coherence library (coherence.jar) is deployed in the application's classpath, only one copy of the Coherence classes is loaded for each EAR file. Since all Web applications in the EAR file use the same cluster node, all Web applications in the EAR file are affected if one of the Web applications malfunctions.

Figure 5-7 illustrates four EAR-scoped cluster nodes. Since Coherence*Web has been deployed to each EAR file, each EAR file becomes a cluster node. All applications running inside each EAR file have access to the same Coherence libraries and classes.

Figure 5-7 EAR-Scoped Cluster

EAR-Scoped Cluster

EAR-scoped cluster nodes reduce the deployment effort because no changes to the application server class path are required. This option is also ideal if you plan to deploy only one EAR file to an application server.

For more information on XML configuration requirements for EAR-scoped cluster nodes, see "Configuring EAR-Scoped Cluster Nodes".


Note:

This configuration is not available for Coherence*Web applications running on the WebLogic Server platform. Applications running on the WebLogic Server platform can be only application server-scoped.


5.3.3 WAR-Scoped Cluster Nodes

With this configuration, each deployed Web application becomes its own Coherence node. This configuration produces the largest number of Coherence nodes in the cluster (one for each deployed WAR file that uses Coherence*Web) and because the Coherence library (coherence.jar) is deployed in the Web application's class path, there will be as many copies of the Coherence classes loaded as there are deployed WAR files. This results in the largest resource utilization of the three options. However, because each deployed Web application is its own cluster node, Web applications are completely isolated from other potentially malfunctioning Web applications.

WAR scoped cluster nodes reduce the deployment effort because no changes to the application server class path are required. This option is also ideal if you plan to deploy only one WAR file to an application server.

Figure 5-8 illustrates two different configurations of WAR files in application servers. Because each WAR file contains a copy of Coherence*Web (and Coherence), it can be considered a cluster node.

Figure 5-8 WAR-Scoped Clusters

WAR-Scoped Clusters

For more information on XML configuration requirements for WAR-scoped cluster nodes, see "Configuring WAR-Scoped Cluster Nodes".


Note:

This configuration is not available for Coherence*Web applications running on the WebLogic Server platform. Applications running on the WebLogic Server platform can be only application server-scoped.


5.4 Session Locking Modes

Oracle Coherence provides the following configuration options for concurrent access to HTTP sessions.


Note:

Generally, Web applications that are part of the same cluster must use the same locking mode and sticky session optimizations setting. Inconsistent configurations could result in deadlock.


You can specify the session locking mode used by your Web applications by setting the coherence-session-locking-mode context parameter. Table 5-1 lists the context parameter values and the corresponding session locking modes they specify. For more information about the coherence-session-locking-mode context parameter, see the following sections and Appendix A, "Coherence*Web Context Parameters."

Table 5-1 Summary of coherence-session-locking-mode Context Parameter Values

Locking Modecoherence-session-locking-mode Values

Optimistic Locking

optimistic

Last-Write-Wins Locking

none

Member Locking

member

Application Locking

app

Thread Locking

thread


5.4.1 Optimistic Locking

Optimistic Locking mode allows multiple Web container threads in one or more members to access the same session concurrently. This setting does not use explicit locking; rather an optimistic approach is used to detect and prevent concurrent updates upon completion of an HTTP request that modifies the session. The exception ConcurrentModificationException is thrown when the session is flushed to the cache, which is after the Servlet request has finished processing. To view the exception, set the weblogic.debug.DebugHttpSessions system property to true in the container's startup script (for example: -Dweblogic.debug.DebugHttpSessions=true).

The Optimistic Locking mode can be configured by setting the coherence-session-locking-mode parameter to optimistic.

5.4.2 Last-Write-Wins Locking

Coherence*Web and the Coherence*Web SPI are configured with Last-Write Wins Locking by default. Last-Write-Wins Locking mode is a variation on the Optimistic Locking mode. It allows multiple Web container threads in one or more members to access the same session concurrently. This setting does not use explicit locking; it does not prevent concurrent updates upon completion of an HTTP request that modifies the session. Instead, the last write, that is, the last modification made, is allowed to modify the session.

The Last-Write-Wins Locking mode can be configured by setting the coherence-session-locking-mode parameter to none. This value will allow concurrent modification to sessions with the last update being applied.

5.4.3 Member Locking

The Member Locking mode allows multiple Web container threads in the same cluster node to access and modify the same session concurrently, but prohibits concurrent access by threads in different members. This is accomplished by acquiring a member-level lock for an HTTP session when the session is acquired. The lock is released on completion of the of the HTTP request. For more information about member-level locks, see <lease-granularity> in the "distributed-scheme" section of Oracle Fusion Middleware Developing Applications with Oracle Coherence Oracle.

The Member Locking mode can be configured by setting the coherence-session-locking-mode parameter to member.

5.4.4 Application Locking

The Application Locking mode restricts session access (and modification) to threads in a single Web application instance at a time. This is accomplished by acquiring both a member-level and application-level lock for an HTTP session when the session is acquired, and releasing both locks upon completion of the HTTP request. For more information about member-level locks, see <lease-granularity> in the "distributed-scheme" section of Oracle Fusion Middleware Developing Applications with Oracle Coherence.

The Application Locking mode can be configured by setting the coherence-session-locking-mode parameter to app.

5.4.5 Thread Locking

Thread Locking mode restricts session access (and modification) to a single thread in a single member at a time. This is accomplished by acquiring both a member level, application-level, and thread-level lock for an HTTP session when the session is acquired, and releasing all three locks upon completion of the request. For more information about member-level locks, see <lease-granularity> in the "distributed-scheme" section of the Oracle Fusion Middleware Developing Applications with Oracle Coherence.

The Thread Locking mode can be configured by setting the coherence-session-locking-mode parameter to thread.

5.4.6 Troubleshooting Locking in HTTP Sessions

Enabling Member, Application, or Thread Locking for HTTP session access indicates that Coherence*Web will acquire a clusterwide lock for every HTTP request that requires access to a session. By default, threads that attempt to access a locked session (locked by a thread in a different member) block access until the lock can be acquired. If you want to enable a timeout for lock acquisition, configure it with the coherence-session-get-lock-timeout context parameter, for example:

...  
<context-param>
    <param-name>coherence-session-get-lock-timeout</param-name>
    <param-value>30</param-value>
  </context-param>
...

Many Web applications do not have such a strict concurrency requirement. For these applications, using the Optimistic Locking mode has the following advantages:

  • The overhead of obtaining and releasing clusterwide locks for every HTTP request is eliminated.

  • Requests can be load-balanced away from failing or unresponsive members to active members without requiring the unresponsive member to release the clusterwide lock on the session.

Coherence*Web provides a diagnostic invocation service that is executed when a member cannot acquire the cluster lock for a session. You can control if this service is enabled by setting the coherence-session-log-threads-holding-lock context parameter. If this context parameter is set to true (default), then the invocation service will cause the member that has ownership of the session to log the stack trace of the threads that are currently holding the lock.

Note that the coherence-session-log-threads-holding-lock context parameter is available only when the coherence-sticky-sessions context parameter is set to true. This requirement exists because Coherence Web will acquire a cluster-wide lock for every session access request unless sticky session optimization is enabled. By enabling sticky session optimization, frequent lock-holding, and the subsequent production of numerous log files, can be avoided.

Like all Coherence*Web messages, the Coherence logging-config operational configuration element controls how the message is logged. For more information on how to configure logging in Coherence, see the description of logging-config, in "Operation Configuration Elements" in Oracle Fusion Middleware Developing Applications with Oracle Coherence.

5.4.7 Enabling Sticky Session Optimizations

If Member, Application, or Thread Locking is a requirement for a Web application that resides behind a sticky load balancer, Coherence*Web provides an optimization for obtaining the clusterwide lock required for HTTP session access. By definition, a sticky load balancer attempts to route each request for a given session to the same application server JVM that it previously routed requests to for that same session. This should be the same application server JVM that created the session. The sticky session optimization takes advantage of this behavior by retaining the clusterwide lock for a session until the session expires or until it is asked to release it. If, for whatever reason, the sticky load balancer sends a request for the same session to another application server JVM, that JVM will ask the JVM that owns the lock on the session to release the lock as soon as possible. For more information, see the SessionOwnership entry in Table C-2.

Sticky session optimization can be enabled by setting the coherence-sticky-sessions context parameter to true. This setting requires that Member, Application, or Thread Locking is enabled.

5.5 Deployment Topologies

Coherence*Web supports most of the same deployment topologies that Coherence does including in-process, out-of-process (that is, client/server deployment), and bridging clients and servers over Coherence*Extend. The major supported deployment topologies are described in the following sections.

5.5.1 In-Process Topology

The in-process topology is not recommended for production use and is supported mainly for development and testing. By storing the session data in-process with the application server, this topology is very easy to get up and running quickly for smoke tests, developing and testing. In this topology, local storage is enabled (that is, tangosol.coherence.distributed.localstorage=true).

Figure 5-9 illustrates the in-process topology. All of the application servers communicate with the same session data cache.

Figure 5-9 In-Process Deployment Topology

In-Process Deployment Topology

5.5.2 Out-of-Process Topology

For the out-of-process deployment topology, the application servers (that is, application server tier) are configured as cache clients (that is, tangosol.coherence.distributed.localstorage=false) and there are dedicated JVMs running as cache servers, physically storing and managing the clustered data.

This approach has these benefits:

  • Session data storage is offloaded from the application server tier to the cache server tier. This reduces heap usage, garbage collection times, and so on.

  • The application and cache server tiers can be scaled independently. If more application processing power is needed, just start more application servers. If more session storage capacity is needed, just start more cache servers.

The Out-of-Process topology is the default recommendation of Oracle Coherence due to its flexibility. Figure 5-10 illustrates the out-of-process topology. Each of the servers in the application tier maintain their own near cache. These near caches communicate with the session data cache which runs in a separate cache server tier.

Figure 5-10 Out-of-Process Deployment Topology

Out of Process Deployment Topology

5.5.2.1 Migrating from In-Process to Out-of-Process Topology

You can easily migrate your application from an in-process to an out of process topology. To do this, you must run a cache server in addition to the application server. Start the cache server in storage-enabled mode and ensure that it references the same session and cache configuration file (default-session-cache-config.xml) that the application server uses. Start the application server in storage-disabled mode. See "Migrating to Out-of-Process Topology" for detailed information.

5.5.3 Out-of-Process with Coherence*Extend Topology

Coherence*Extend consists of two components: an extend client (or proxy) running outside the cluster and an extend proxy service running in the cluster hosted by one or more cache servers. The out-of-process with Coherence*Extend topology is similar to the out-of-process topology except that the communication between the application server tier and the cache server tier is over Coherence*Extend (TCP/IP). For information about configuring this scenario, see "Configuring Coherence*Web with Coherence*Extend". For information about Coherence*Extend, see Oracle Fusion Middleware Developing Remote Clients for Oracle Coherence.

This approach has the same benefits as the out-of-process topology and the ability to divide the deployment of application servers and cache servers into segments. This is ideal in an environment where application servers are on a network that does not support UDP. The cache servers can be set up in a separate dedicated network, with the application servers connecting to the cluster by using TCP.

Figure 5-11 illustrates the out-of-process with Coherence*Extend topology. Near caches in the servers in the application server tier use an extend proxy to communicate with the session data cache in the cache server tier.

Figure 5-11 Out-of-Process with Coherence*Extend Deployment Topology

Out-of-Process with Coherence*Extend Topology

5.5.4 Configuring Coherence*Web with Coherence*Extend

One of the deployment options for Coherence*Web is to use Coherence*Extend to connect Web container JVMs to the cluster by using TCP/IP. This configuration should be considered if any of the following situations applies:

  • The Web tier JVMs are in a DMZ while the Coherence cluster is behind a firewall.

  • The Web tier is in an environment that does not support UDP.

  • Web tier JVMs experience long or frequent garbage collection (GC) pauses.

  • Web tier JVMs are restarted frequently.

In these deployments, there are three types of participants:

  • Web tier JVMs, which are the Extend clients in this topology. They are not members of the cluster; instead, they connect to a proxy node in the cluster that will issue requests to the cluster on their behalf.

  • Proxy JVMs, which are storage-disabled members (nodes) of the cluster that accept and manage TCP/IP connections from Extend clients. Requests that arrive from clients will be sent into the cluster, and responses will be sent back through the TCP/IP connections.

  • Storage JVMs, which are used to store the actual session data in memory.

To Configure Coherence*Web to Use Coherence*Extend

  1. Configure Coherence*Web to use the Optimistic Locking mode (see "Optimistic Locking").

  2. Configure a cache configuration file for the proxy and storage JVMs (see "Configure the Cache for Proxy and Storage JVMs").

  3. Modify the Web tier cache configuration file to point to one or more of the proxy JVMs (see "Configure the Cache for Web Tier JVMs").

5.5.4.1 Configure the Cache for Proxy and Storage JVMs

The session cache configuration file (WEB-INF/classes/default-session-cache-config.xml) is an example Coherence*Web session cache configuration file that uses Coherence*Extend.

Use this file for the proxy and server JVMs. It contains system property overrides that allow the same file to be used for both proxy and storage JVMs. When used by a proxy JVM, the system properties described in Table 5-2 should be specified.


Note:

If you are writing applications for the WebLogic Server platform and you are using a customized session cache configuration file, then the file must be packaged in a GAR file for deployment. For more information, see "Using a Custom Session Cache Configuration File".

For more information on the packaging requirements for a GAR file, see also "Packaging Coherence Applications for WebLogic Server" in Oracle Fusion Middleware Administering Oracle Coherence and "Creating Coherence Applications for Oracle WebLogic Server" in Developing Oracle Coherence Applications for Oracle WebLogic Server.


Table 5-2 System Property Values for Proxy JVMs

System Property NameValue

tangosol.coherence.session.localstorage

false

tangosol.coherence.session.proxy

true

tangosol.coherence.session.proxy.localhost

The host name or IP address of the NIC to which the proxy will bind.

tangosol.coherence.session.proxy.localport

A unique port number to which the proxy will bind.


When used by a cache server, specify the system properties described in Table 5-3.

Table 5-3 System Property Values for Storage JVMs

System Property NameValue

tangosol.coherence.session.localstorage

true

tangosol.coherence.session.proxy

false


Example 5-4 illustrates the complete session cache configuration file for a storage JVM.

Example 5-4 default-session-cache-config-server.xml File

<?xml version="1.0"?>
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--                                                                       -->
<!-- Server-side cache configuration descriptor for Coherence*Web over     -->
<!-- Coherence*Extend (see default-session-cache-config-web-tier.xml).               -->
<!--                                                                       -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <caching-scheme-mapping>
    <!--
    The clustered cache used to store Session management data.
    -->
    <cache-mapping>
      <cache-name>session-management</cache-name>

      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store ServletContext attributes.
    -->
    <cache-mapping>
      <cache-name>servletcontext-storage</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>
    <!--
    The clustered cache used to store Session attributes.
    -->
    <cache-mapping>
      <cache-name>session-storage</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store the "overflowing" (split-out due to size)
    Session attributes. Only used for the "Split" model.
    -->
    <cache-mapping>

      <cache-name>session-overflow</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store IDs of "recently departed" Sessions.
    -->
    <cache-mapping>
      <cache-name>session-death-certificates</cache-name>
      <scheme-name>session-certificate</scheme-name>

    </cache-mapping>
  </caching-scheme-mapping>

  <caching-schemes>
    <!--
    Distributed caching scheme used by the various Session caches.
    -->
    <distributed-scheme>
      <scheme-name>session-distributed</scheme-name>
      <scheme-ref>session-base</scheme-ref>

      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
    </distributed-scheme>

    <!--
    Distributed caching scheme used by the "recently departed" Session cache.
    -->
    <distributed-scheme>

      <scheme-name>session-certificate</scheme-name>
      <scheme-ref>session-base</scheme-ref>
      <backing-map-scheme>
        <local-scheme>
          <eviction-policy>HYBRID</eviction-policy>
          <high-units>4000</high-units>
          <low-units>3000</low-units>

          <expiry-delay>86400</expiry-delay>
        </local-scheme>
      </backing-map-scheme>
    </distributed-scheme>
    <!--
    "Base" Distributed caching scheme that defines common configuration.
    -->
    <distributed-scheme>
      <scheme-name>session-base</scheme-name>

      <service-name>DistributedSessions</service-name>
      <serializer>
        <instance>
          <class-name>com.tangosol.io.DefaultSerializer</class-name>
        </instance>
      </serializer>
      <thread-count>0</thread-count>
      <lease-granularity>member</lease-granularity>
      <local-storage>true</local-storage>

      <partition-count>257</partition-count>
      <backup-count>1</backup-count>
      <backup-storage>
        <type>on-heap</type>
      </backup-storage>
      <backing-map-scheme>
        <local-scheme>

          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>

    <!--
    Proxy scheme that Coherence*Web clients used to connect to the cluster.
    -->
    <proxy-scheme>

      <service-name>SessionProxy</service-name>
      <thread-count>10</thread-count>
      <acceptor-config>
        <serializer>
          <instance>
            <class-name>com.tangosol.io.DefaultSerializer</class-name>
          </instance>
        </serializer>
        <tcp-acceptor>

          <local-address>
            <address system-property="tangosol.coherence.session.proxy.localhost">localhost</address>
            <port system-property="tangosol.coherence.session.proxy.localport">9099</port>
          </local-address>
        </tcp-acceptor>
      </acceptor-config>

      <autostart system-property="tangosol.coherence.session.proxy">false</autostart>
    </proxy-scheme>

    <!--
    Local caching scheme definition used by all caches that do not require an
    eviction policy.
    -->
    <local-scheme>
      <scheme-name>unlimited-local</scheme-name>
      <service-name>LocalSessionCache</service-name>
    </local-scheme>  
  </caching-schemes>

</cache-config>

5.5.4.2 Configure the Cache for Web Tier JVMs

The session cache configuration file illustrated in Example 5-5 is based on the default-session-cache-config.xml file that can be found in the coherence-web.jar file. The example illustrates a Coherence*Web cache configuration file that uses Coherence*Extend. The Web tier JVMs should use this cache configuration file. Follow these steps

To Install the Session Cache Configuration File for the Web Tier:

  1. Extract the default-session-cache-config.xml file from the coherence-web.jar file.

  2. Add proxy JVM host names and IP addresses and ports to the <remote-addresses/> section of the file. In most cases, you should include the host name and IP address, and port of all proxy JVMs for load balancing and failover.


    Note:

    The <remote-addresses> element contains the proxy server(s) to which the Web container will connect. By default, the Web container will pick an address at random (if there is more than one address in the configuration). If the connection between the Web container and the proxy is broken, the container will connect to another proxy in the list.


  3. Rename the file to default-session-cache-config-web-tier.xml.

  4. Place the file in the WEB-INF/classes directory of your Web application. If you used the WebInstaller to install Coherence*Web, replace the existing file that was added by the WebInstaller.

Example 5-5 illustrates the complete client-side session cache configuration file.

Example 5-5 default-session-cache-config-web-tier.xml File

<?xml version="1.0"?>
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--                                                                       -->
<!-- Client-side cache configuration descriptor for Coherence*Web over     -->
<!-- Coherence*Extend (see default-session-cache-config-server.xml).       -->
<!--                                                                       -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <caching-scheme-mapping>
    <!--
    The clustered cache used to store Session management data.
    -->
    <cache-mapping>
      <cache-name>session-management</cache-name>

      <scheme-name>session-near</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store ServletContext attributes.
    -->
    <cache-mapping>
      <cache-name>servletcontext-storage</cache-name>
      <scheme-name>session-near</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store Session attributes.
    -->
    <cache-mapping>
      <cache-name>session-storage</cache-name>
      <scheme-name>session-near</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store the "overflowing" (split-out due to size)
    Session attributes. Only used for the "Split" model.
    -->
    <cache-mapping>

      <cache-name>session-overflow</cache-name>
      <scheme-name>session-remote</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store IDs of "recently departed" Sessions.
    -->
    <cache-mapping>
      <cache-name>session-death-certificates</cache-name>
      <scheme-name>session-remote</scheme-name>

    </cache-mapping>
  </caching-scheme-mapping>

  <caching-schemes>
    <!--
    Near caching scheme used by the Session attribute cache. The front cache
    uses a Local caching scheme and the back cache uses a Remote caching
    scheme.
    -->
    <near-scheme>
      <scheme-name>session-near</scheme-name>
      <front-scheme>
        <local-scheme>

          <scheme-ref>session-front</scheme-ref>
        </local-scheme>
      </front-scheme>
      <back-scheme>
        <remote-cache-scheme>
          <scheme-ref>session-remote</scheme-ref>
        </remote-cache-scheme>
      </back-scheme>

      <invalidation-strategy>present</invalidation-strategy>
    </near-scheme>

    <local-scheme>
      <scheme-name>session-front</scheme-name>
      <eviction-policy>HYBRID</eviction-policy>
      <high-units>1000</high-units>

      <low-units>750</low-units>
    </local-scheme>

    <remote-cache-scheme>
      <scheme-name>session-remote</scheme-name>
      <initiator-config>
        <serializer>
          <instance>
            <class-name>com.tangosol.io.DefaultSerializer</class-name>
          </instance>
        </serializer>
        <tcp-initiator>
          <remote-addresses>
            <!-- 
            The following list of addresses should include the hostname and port
            of all running proxy JVMs. This is for both load balancing and
            failover of requests from the Web tier.
            -->
            <socket-address>
              <address>localhost</address>
              <port>9099</port>
            </socket-address>

          </remote-addresses>
        </tcp-initiator>
      </initiator-config>
    </remote-cache-scheme>
  </caching-schemes>
</cache-config>

5.6 Accessing Sessions with Lazy Acquisition

By default, Web applications instrumented with the WebInstaller will always acquire a session whenever a servlet or filter is called. The session is acquired regardless of whether the servlet or filter actually needs a session. This can be expensive in terms of time and processing power if you run many servlets or filters that do not require a session.

To avoid this behavior, enable lazy acquisition by setting the coherence-session-lazy-access context parameter to true in the web.xml file. The session will be acquired only when the servlet or filter attempts to access it.

5.7 Overriding the Distribution of HTTP Sessions and Attributes

The Coherence*Web Session Distribution Controller, described by the HttpSessionCollection.SessionDistributionController interface, enables you to override the default distribution of HTTP sessions and attributes in a Web application. You override the default distribution by setting the coherence-distributioncontroller-class context parameter (see "Registering a Session Distribution Controller Implementation"). The value of the context parameter indicates an implementation of the SessionDistributionController interface.

An implementation of the SessionDistributionController interface can identify sessions or attributes in any of the following ways:

At any point during the life of a session, the session or attributes for that session can change from local or distributed. However, when a session or attribute is distributed it cannot change back to local.

You can use the Session Distribution Controller in any of the following ways:

5.7.1 Implementing a Session Distribution Controller

Example 5-6 illustrates a sample implementation of the HttpSessionCollection.SessionDistributionController interface. In the sample, sessions are tested to see if they have a shopping cart attached (only these sessions will be distributed). Next, the session is tested whether it contains a certain attribute. If the attribute is found, then it is not distributed.

Example 5-6 Sample Session Distribution Controller Implementation

import com.tangosol.coherence.servlet.HttpSessionCollection;
import com.tangosol.coherence.servlet.HttpSessionModel;
 
/**
* Sample implementation of SessionDistributionController
*/
public class CustomSessionDistributionController
        implements HttpSessionCollection.SessionDistributionController
    {
    public void init(HttpSessionCollection collection)
        {
        }
 
    /**
    * Only distribute sessions that have a shopping cart.
    *
    * @param model Coherence representation of the HTTP session
    *
    * @return true if the session should be distributed
    */
    public boolean isSessionDistributed(HttpSessionModel model)
        {
        return model.getAttribute("shopping-cart") != null;
        }
 
    /**
    * If a session is "distributed", then distribute all attributes with the 
    * exception of the "ui-rendering" attribute.
    *
    * @param model Coherence representation of the HTTP session
    * @param sName name of the attribute to check
    *
    * @return true if the attribute should be distributed
    */
    public boolean isSessionAttributeDistributed(HttpSessionModel model,
            String sName)
        {
        return !"ui-rendering".equals(sName);
        }
    } 

5.7.2 Registering a Session Distribution Controller Implementation

After you have written your SessionDistributionController implementation, you can register it with your application by using the coherence-distributioncontroller-class context parameter. See Appendix A, "Coherence*Web Context Parameters" for more information about this parameter.

5.8 Detecting Changed Attribute Values

By default, Coherence*Web tracks if attributes retrieved from the session have changed during the course of processing a request. This is done by caching the initial serialized binary form of the attribute when it is retrieved from the session. At the end of processing a request, Coherence*Web will compare the current binary value of the attribute with the "old" version of the binary. If the values do not match, then the current value is written to the cache.If you know that your application does not mutate session attributes without doing a corresponding set, then you should set the coherence-enable-suspect-attributes context parameter to false. This will improve memory use and near-cache optimization.

5.9 Saving Non-Serializable Attributes Locally

By default, Coherence*Web attempts to serialize all session attributes. If you are working with any session attributes that are not serializable, you can store them locally by setting the coherence-preserve-attributes parameter to true. This parameter requires you to use a load balancer to retrieve non-serializable attributes for a session.

Note that if the client (application server) fails, then the attributes will be lost. Your application must be able to recover from this.

The default for this parameter is false. If you are using ActiveCache for GlassFish, then this value will be set to true because the GlassFish Server requires local sessions to be available.

See Appendix A, "Coherence*Web Context Parameters" for more information about the coherence-preserve-attributes parameter.

5.10 Securing Coherence*Web Deployments

To prevent unauthorized Coherence TCMP cluster members from accessing HTTP session cache servers, Coherence provides a Secure Socket Layer (SSL) implementation. This implementation can be used to secure TCMP communication between cluster nodes and TCP communication between Coherence*Extend clients and proxies. Coherence allows you to use the Transport Layer Security (TLS) 1.0 protocol which is the next version of the SSL 3.0 protocol; however, the term SSL is used since it is the more widely recognized term.

This section provides only an overview of using SSL in a Coherence environment. For more information and sample configurations, see "Using SSL to Secure Communication" in Oracle Fusion Middleware Securing Oracle Coherence.

Using SSL to Secure TCMP Communications

A Coherence cluster can be configured to use SSL with TCMP. Coherence allows you to use both one-way and two-way authentication. Two-Way authentication is typically used more often than one-way authentication, which has fewer use cases in a cluster environment. In addition, it is important to realize that TCMP is a peer-to-peer protocol that generally runs in trusted environments where many cluster nodes are expected to remain connected with each other. The implications of SSL on administration and performance should be carefully considered.

In this configuration, you can use the pre-defined, out-of-the-box SSL socket provider that allows for two-way communication SSL connections based on peer trust, or you can define your own SSL socket provider.

Using SSL to Secure Extend Client Communication

Communication between extend clients and extend proxies can be secured using SSL. SSL requires configuration on both the client side as well as the cluster side. On the cluster side, you configure SSL in the cluster-side cache configuration file by defining a SSL socket provider for a proxy service. You can define the SSL socket provider either for all proxy services or for individual proxy services.

On the client side, you configure SSL in the client-side cache configuration file by defining a SSL socket provider for a remote cache scheme and, if required, for a remote invocation scheme. Like the cluster side, you can define the SSL socket provider either for all remote services or for individual remote services.

5.11 Customizing the Name of the Session Cache Configuration File

By default, Coherence*Web uses the information in the default-session-cache-config.xml file to configure the session caches in Coherence*Web. You can direct Coherence*Web to use a different file by specifying the coherence-cache-configuration-path context parameter in the web.xml file, for example:

...
<context-param>
   <param-name>coherence-cache-configuration-path</param-name>
   <param-value>my-default-session-cache-config-name.xml</param-value>
</context-param>
...

5.12 Configuring Logging for Coherence*Web

Coherence*Web uses the logging framework provided by Coherence. Coherence has its own logging framework and also supports the use of log4j, slf4j, and Java logging to provide a common logging environment for an application. Logging in Coherence occurs on a dedicated and low-priority thread to reduce the impact of logging on the critical portions of the system. Logging is pre-configured and the default settings should be changed as required. For more information, see "Configuring Logging" in Oracle Fusion Middleware Developing Applications with Oracle Coherence.

The Coherence*Web logging level can also be set using the context parameter/system property coherence-session-logger-level. This is an alternative way to set the logging level for Coherence*Web (as opposed to using JDK logging). See Appendix A, "Coherence*Web Context Parameters" for more information on this parameter.


WARNING:

Applications that use the JDK logging framework can configure Coherence to use JDK logging as well. Note, however, that setting the log level to FINEST can expose session IDs in the log file.


5.13 Getting Concurrent Access to the Same Session Instance

This feature was added as part of a patch release. For information about which features were added in a patch, see Release Notes for Oracle Coherence.

A cache delegator class is a class that is responsible for manipulating (getting, putting, or deleting) any data in the distributed cache. Use the <coherence-cache-delegator-class> context parameter in the web.xml file to specify the name of the class responsible for the data manipulation.

One of the possible values for the context parameter is the com.tangosol.coherence.servlet.LocalSessionCacheDelegator class. This class indicates that the local cache should be used for storing and retrieving the session instance before attempting to use the distributed cache. This delegator is useful for applications that require concurrent access to the same session instance.


Note:

This feature must be enabled when working with PeopleSoft applications.


To enable the LocalSessionCacheDelegator cache delegator, the following items must be configured in web.xml:

Example 5-7 illustrates a sample configuration for the cache delegator in the web.xml file.

Example 5-7 Configuring Cache Delegator in the web.xml File

...
 <context-param>
    <param-name>coherence-cache-delegator-class</param-name>
    <param-value>com.tangosol.coherence.servlet.LocalSessionCacheDelegator
</param-value>
 </context-param>
 <context-param>
    <param-name>coherence-preserve-attributes</param-name>
    <param-value>true</param-value>
 </context-param>
 <context-param>
    <param-name>coherence-distributioncontroller-class</param-name>
    <param-value>com.tangosol.coherence.servlet.AbstractHttpSessionCollection$HybridController</param-value>
 </context-param>
...

Also, when using LocalSessionCacheDelegator as the cache delegator, you should not configure a near cache in the session-cache-config.xml file. This is because local session instances are used. Appendix D, "Session Cache Configuration File Without a Near Cache" illustrates a sample session-cache-config.xml file that omits a near cache configuration.

PK4 PK.DOEBPS/reaper.htm=] Cleaning Up Expired HTTP Sessions

7 Cleaning Up Expired HTTP Sessions

This chapter describes how to configure and use the Session Reaper. The Session Reaper is responsible for destroying any session that is no longer used, which is determined by when that session has timed out.

This chapter contains the following sections:

As part of Coherence*Web Session Management Module, HTTP sessions that have expired are eventually cleaned up by the Session Reaper. The Session Reaper provides a service similar to the JVM Garbage Collection (GC) capability: the Session Reaper is responsible for destroying any session that is no longer used, which is determined by when that session has timed out.

Each HTTP session contains two pieces of information that determine when it has timed out. The first is the LastAccessedTime property of the session, which is the time stamp of the most recent activity involving the session. The second is the MaxInactiveInterval property of the session, which specifies how long the session is kept active without any activity; a typical value for this property is 30 minutes. The MaxInactiveInterval property defaults to the value configured for Coherence*Web, but it can be modified on a session-by-session basis.

Each time that an HTTP request is received by the server, if there is an HTTP session associated with that request, then the LastAccessedTime property of the session is automatically updated to the current time. As long as requests continue to arrive related to that session, it is kept active, but when a period of inactivity occurs longer than that specified by the MaxInactiveInterval property, then the session expires. Session expiration is passive—occurring only due to the passing of time. The Coherence*Web Session Reaper scans for sessions that have expired, and when it finds expired sessions it destroys them.

7.1 Understanding the Session Reaper

The Session Reaper configuration addresses three basic questions:

Every application server running Coherence*Web runs the Session Reaper. That means that if Coherence is configured to provide a separate cache tier (made up of cache servers), then the Session Reaper does not run on those cache servers.

By default, the Session Reaper runs concurrently on all of the application servers, so that all of the servers share the workload of identifying and cleaning up expired sessions. The coherence-reaperdaemon-cluster-coordinated context parameter causes the cluster to coordinate reaping so that only one server at a time performs the actual reaping; the use of this option is not suggested, and it cannot be used with the Coherence*Web over Coherence*Extend topology.

The coherence-reaperdaemon-cluster-coordinated context parameter should not be used if sticky optimization (coherence-sticky-sessions) is also enabled. Because only one server at a time performs the reaping, sessions owned by other nodes cannot be reaped. This means that it will take longer for sessions to be reaped as more nodes are added to the cluster. Also, the reaping ownership does not circulate over the nodes in the cluster in a controlled way; one node can be the reaping node for a long time before it is taken over by another node. During this time, only its own sessions are reaped.

The Session Reaper is configured to scan the entire set of sessions over a certain period, called a reaping cycle, which defaults to five minutes. This length of the reaping cycle is specified by the coherence-reaperdaemon-cycle-seconds context parameter. This setting indicates to the Session Reaper how aggressively it must work. If the cycle length is configured too short, the Session Reaper uses additional resources without providing additional benefit. If the cycle length is configured too long, then expired sessions will use heap space in the Coherence caches unnecessarily. In most situations, it is far preferable to reduce resource usage than to ensure that sessions are cleaned up quickly after they expire. Consequently, the default cycle of five minutes is a good balance between promptness of cleanup and minimal resource usage.

During the reaping cycle, the Session Reaper scans for expired sessions. In most cases, the Session Reaper takes responsibility for scanning all of the HTTP sessions across the entire cluster, but there is an optimization available for the single tier topology. In the single tier topology, when all of the sessions are being managed by storage-enabled Coherence cluster members that are also running the application server, the session storage is colocated with the application server. Consequently, it is possible for the Session Reaper on each application server to scan only the sessions that are stored locally. This behavior can be enabled by setting the coherence-reaperdaemon-assume-locality configuration option to true.

Regardless of whether the Session Reaper scans only colocated sessions or all sessions, it does so in a very efficient manner by using these advanced capabilities of the Coherence data grid:

Each storage-enabled member can very efficiently scan for any expired sessions, and it has to scan only one time per application server per reaper cycle. The result is a default Session Reaper configuration that works well for application server clusters with one or multiple servers.

The Session Reaper can invalidate sessions either in parallel or serially. By default, it invalidates sessions in parallel. This ensures that sessions are invalidated in a timely manner. However, if the application server JVM has a high system load due to a large number of concurrent threads then you have the option of invalidating serially. To configure the reaper to invalidate sessions serially, set the coherence-reaperdaemon-parallel context parameter to false.

Coherence*Web uses a work manager to retrieve threads to execute the parallel reaping. WebLogic Server defines a default work manager, wm/CoherenceWorkManager, which it will attempt to use. If no work manager is defined with that name, it will use the default work manager implemented in Coherence.

To ensure that the Session Reaper does not impact the smooth operation of the application server, it breaks up its work into chunks and schedules that work in a manner that spreads the work across the entire reaping cycle. Because the Session Reaper has to know how much work it must schedule, it maintains statistics on the amount of work that it performed in previous cycles, and uses statistical weighting to ensure that statistics from recent reaping cycles count more heavily. There are several reasons why the Session Reaper breaks up the work in this manner:

The Session Reaper performs its job efficiently, even with the default configuration by:

7.2 Configuring the Session Reaper

The following are suggestions for tuning the default Session Reaper configuration:

7.3 Getting Session Reaper Performance Statistics

The HttpSessionManagerMBeanWeb provides several attributes that serve as performance statistics for the Session Reaper. These statistics, described in the following list, include the average time duration for a reap cycle, the number of sessions reaped, and the time until the next reap cycle:

These attributes are also described in Table 6-2 in the section "Managing and Monitoring Applications with JMX".

You can access these attributes in a monitoring tool such as JConsole. However, you must set up the Coherence Clustered JMX Framework before you can access them. The configuration and installation instructions for the framework is provided in "Using JMX to Manage Coherence" in Oracle Fusion Middleware Managing Oracle Coherence.

7.4 Understanding Session Invalidation Exceptions for the Session Reaper

Each Coherence*Web instance has a Session Reaper that will periodically iterate through all of the sessions in the session cache and check for expired sessions. If multiple Web applications are using Coherence*Web, then a reaper from one Web application can invalidate sessions used in a different application. Session listeners registered with the Web application that is reaping expired sessions will be executed.

Session attribute listeners will attempt to retrieve the session attribute values during invalidation. If the session attributes are dependent on classes that exist only in the original Web application, then a class not found exception will be thrown and logged in the Session Reaper. These exceptions will not cause any disruption in the Web application or the application server.

Coherence*Web provides a context parameter, coherence-session-log-invalidation-exceptions, to control whether these exceptions are logged. The default value, true, allows the exceptions to be logged. If you want to suppress the logging of these exceptions, set this context parameter to false.

PKcG==PK.DOEBPS/manageapps.htm Monitoring Applications

6 Monitoring Applications

This chapter describes how to use the provided JMX MBeans to monitor the health and performance of Coherence*Web on your system.It also describes how to run the Reporter—a JMX-based reporting utility that provides several preconfigured reports that help administrators and developers manage capacity and troubleshoot problems.

This chapter contains the following sections:


Note:

To enable Coherence*Web JMX Management and Monitoring, this section assumes that you have first set up the Coherence Clustered JMX Framework. To set up this framework, see the configuration and installation instructions in "Using JMX to Manage Coherence" in Oracle Fusion Middleware Managing Oracle Coherence.


6.1 Managing and Monitoring Applications with JMX

The management attributes and operations for Web applications that use Coherence*Web for HTTP session management are visible through the HttpSessionManagerMBean MBean (com.tangosol.coherence.servlet.management.HttpSessionManagerMBean).

During startup, each Coherence*Web Web application registers a single instance of the HttpSessionManager class. You can use a monitoring tool, such as JConsole, to view the values of the MBean attributes. The MBean is unregistered when the Web application shuts down.

Table 6-1 describes the object name that the MBean uses for registration.

Table 6-1 Object Name for HttpSessionManagerMBean

Managed BeanObject Name

HttpSessionManager

type=HttpSessionManager, nodeId=cluster node id, appId=web application id


Table 6-2 describes the information that HttpSessionManager provides. All of the names represent attributes, except resetStatistics, which is an operation.

Several of the MBean attributes use the following prefixes:

Table 6-2 Information Returned by the HttpSessionManager

Attribute NameData
Type
Description

AverageReapDuration

long

The average reap duration (the time it takes to complete a reap cycle) in milliseconds, since the statistic was reset. See "Getting Session Reaper Performance Statistics".

CollectionClassName

String

The fully qualified class name of the HttpSessionCollection implementation in use. The HttpSessionCollection interface is an abstract model for a collection of HttpSessionModel objects. The interface is not at all affected by how the sessions communicate between the clients and the servers.

FactoryClassName

String

The fully-qualified class name of the Factory implementation being used. The SessionHelper.Factory class is used by the SessionHelper class to obtain objects that implement various important parts of the servlet specification. The Factory implementation can be placed in front of the application instead of the application server's own objects. This changes the apparent implementation of the application server itself (for example, adding clustering.)

LastReapDuration

long

The amount of time, in milliseconds, it took for the last reap cycle to finish. See "Getting Session Reaper Performance Statistics".

LocalAttributeCacheName

String

The name of the local cache that stores non-distributed session attributes. If the attribute displays null then local session attribute storage is disabled.

LocalAttributeCount

Integer

The number of non-distributed session attributes stored in the local session attribute cache. If the attribute displays -1, then local session attribute storage is disabled.

LocalSessionCacheName

String

The name of the local cache that stores nondistributed sessions. If the attribute displays a null value, then local session storage is disabled.

LocalSessionCount

Integer

The number of nondistributed sessions stored in the local session cache. If the attribute displays a -1 value, then local session storage is disabled.

MaxReapedSessions

long

The maximum number of sessions reaped in a reap cycle since the statistic was reset. See "Getting Session Reaper Performance Statistics".

NextReapCycle

java.lang.Date

The time, expressed as a java.lang.Date data type, for the next reap cycle. See "Getting Session Reaper Performance Statistics".

OverflowAverageSize

Integer

The average size (in bytes) of the session attributes stored in the overflow clustered cache since the last time statistics were reset. If the attribute displays -1, then a SplitHttpSessionCollection model is not in use.

OverflowCacheName

String

The name of the clustered cache that stores the large attributes that exceed a certain size and thus are determined to be more efficiently managed as separate cache entries and not as part of the serialized session object itself. A null value is displayed if a SplitHttpSessionCollection model is not in use.

OverflowMaxSize

Integer

The maximum size (in bytes) of a session attribute stored in the overflow clustered cache since the last time statistics were reset. The attribute displays a -1 value if a SplitHttpSessionCollection model is not in use.

OverflowThreshold

Integer

The minimum length (in bytes) that the serialized form of an attribute value must be stored in the separate overflow cache that is reserved for large attributes. The attribute displays a -1 value if a SplitHttpSessionCollection model is not in use.

OverflowUpdates

Integer

The number of updates to session attributes stored in the overflow clustered cache since the last time statistics were reset. The attribute displays a -1 value if a SplitHttpSessionCollection model is not in use.

ReapedSessions

long

The number of sessions reaped during the last cycle. See "Getting Session Reaper Performance Statistics".

ReapedSessionsTotal

long

The number of expired sessions that have been reaped since the statistic was reset. See "Getting Session Reaper Performance Statistics".

ServletContextCacheName

String

The name of the clustered cache that stores javax.servlet.ServletContext attributes. The attribute displays null if ServletContext is not clustered.

ServletContextName

String

The name of the Web application ServletContext.

SessionAverageLifetime

Integer

The average lifetime (in seconds) of session objects invalidated (either due to expiration or to an explicit invalidation) since the last time statistics were reset.

SessionAverageSize

Integer

The average size (in bytes) of session objects placed in the session storage clustered cache since the last time statistics were reset.

SessionCacheName

String

The name of the clustered cache that stores serialized session objects.

SessionIdLength

Integer

The length (in characters) of generated session IDs.

SessionMaxSize

Integer

The maximum size (in bytes) of a session object placed in the session storage clustered cache since the last time statistics were reset.

SessionMinSize

Integer

The minimum size (in bytes) of a session object placed in the session storage clustered cache since the last time statistics were reset.

SessionStickyCount

Integer

The number of session objects that belong to this instance of the Web application. The attribute displays -1 if sticky session optimizations are disabled.

SessionTimeout

Integer

The session expiration time (in seconds). The attribute displays -1 if sessions never expire.

SessionUpdates

Integer

The number of updates of session object stored in the session storage clustered cache since the last time statistics were reset.

resetStatistics (operation)

void

Reset the session management statistics.


Figure 6-1 illustrates the attributes of the HttpSessionManager MBean displayed in the JConsole monitoring tool.

Figure 6-1 HttpSessionManager Displayed in the JConsole Monitoring Tool

Http Session Manager MBean in the JConsole Browser

6.1.1 Managing and Monitoring Applications on WebLogic Server

For WebLogic Server, management attributes and operations for Web applications that use Coherence*Web for HTTP session management are visible through the WebLogicHttpSessionManagerMBean MBean (com.tangosol.coherence.servlet.management.WebLogicHttpSessionManagerMBean).

Table 6-3 describes the object name that the MBean uses for registration.

Table 6-3 Object Name for WebLogicHttpSessionManagerMBean

Managed BeanObject Name

WebLogicHttpSessionManager

type=WebLogicHttpSessionManager, nodeId=cluster node id, appId=web application id


The WebLogicHttpSessionManager class extends the HttpSessionManager class. In addition to the information described in Table 6-2, the WebLogicHttpSessionManager class also returns the information listed in Table 6-4. Enterprise Manager uses this information to correlate the Coherence*Web instances to the server.

Table 6-4 Information Returned by the WebLogicHttpSessionManager MBean

Attribute NameData
Type
Description

ApplicationId

String

The WebLogic Web application ID.

ApplicationName

String

The name of this Web application.

ApplicationVersion

String

The version of this Web application.

DomainName

String

The WebLogic domain name on which the application is deployed.

IsEar

Boolean

Displays true if this Web application is a module of an EAR file.

IsListenAddressEnabled

Boolean

Displays true if a HTTP port is available on this server.

IsSSLListenPortEnabled

Boolean

Displays true if a HTTPS port is available on this server.

ListenAddress

String

The address on which the server is listening.

ListenPort

Integer

The port on which this server listens for HTTP requests.

ServerName

String

The WebLogic Server name on which the application is deployed.

SSLListenPort

Integer

The port on which this server is listening for HTTPS requests.


6.2 Running Performance Reports


Note:

You can find a detailed discussion of the Reporter, including configuring the Reporter, running preconfigured reports, and creating custom reports, in the chapters under "Using JMX Reporting" in Oracle Fusion Middleware Managing Oracle Coherence.


Coherence includes a JMX-based reporting utility known as the Reporter. The Reporter provides several preconfigured reports that help administrators and developers manage capacity and troubleshoot problems. These reports are specially tuned for Coherence*Web:

The Coherence*Web reports should be run as part of a batch report. They are defined in both the report-web-group.xml and the comprehensive report-all.xml batch reports. You can also include them in a custom batch report. The Coherence*Web reports are not defined in the default report group batch file, report-group.xml.

The Reporter runs the report-group.xml batch report by default. Use the tangosol.coherence.management.report.configuration system property to run report-web-group.xml, report-all.xml, or a custom batch report instead. Example 6-1 illustrates a command line where the property is used to change the report group batch file that is run to report-web-group.xml.

Example 6-1 Specifying a Report Group on the Command Line

java -Dcom.sun.management.jmxremote
-Dtangosol.coherence.management=all
-Dtangosol.coherence.management.remote=true
-Dtangosol.coherence.management.report.autostart=false
-Dtangosol.coherence.management.report.distributed=false
-Dtangosol.coherence.management.report.configuration=reports/report-web-group.xml
-jar coherence.jar

The report-web-group.xml, report-all.xml, and report-group.xml report group batch files, can be found in the reports folder in the coherence.jar file.

6.2.1 Web Session Storage Report

The Web Session Storage report records statistics on the activity between the cluster and the cache where session objects and data are stored. The statistics include information about the number of put, get, and prune operations performed on the session storage cache, and the amount of time spent on these operations.

The report is a tab-delimited file that is prefixed with the date in YYYYMMDDHH format and appended with -session-storage.txt. For example 2010013113-session-storage.txt would be created on January 31, 2010 1:00 pm. Table 6-5 describes the contents of the Web Session Storage report.

Table 6-5 Contents of the Web Session Storage Report

Column TitleData
Type
Description

Batch Counter

long

A sequential counter to help integrate information between related files. This value resets when the reporter restarts and is not consistent across nodes. However, it is helpful when trying to integrate files.

Cache Name

String

Always session-storage. It is used to maintain consistency with the Cache Utilization report.

Evictions

long

The total number of sessions that have been evicted for the cache across the cluster since the last time the report was created.

Report Time

Date

The system time when the report was created.

Tier

String

The value can be either front or back. Describes whether the cache resides in the front tier (local cache) or back tier (remote cache).

TotalFailures

long

The total number of session storage write failures for the cache across the cluster since the last time the report was created.

TotalGets

long

The total number of session get operations across the cluster since the last time the report was created.

TotalGetsMillis

long

The total number of milliseconds spent for each get() invocation (GetsMillis) to get the sessions across the cluster since the last time the report was created.

TotalHits

long

The total number of session hits across the cluster since the last time the report was created.

TotalHitsMillis

long

The total number of milliseconds spent for each get() invocation that is a hit (HitsMillis) for the session storage across the cluster since the last time the report was created.

TotalMisses

long

The total number of sessions get operations that returned misses for the cache across the cluster since the last time the report was created.

TotalMissesMillis

long

The total number of milliseconds spent for each get() invocation that is a miss (MissesMillis) for the session storage across the cluster since the last time the report was created.

TotalPrunes

long

The total number of times the session storage cache has been pruned across the cluster since the last time the report was created.

TotalPrunesMillis

long

The total number of milliseconds spent for the prune operation (PrunesMillis) to prune the session storage cache across the cluster since the last time the report was created.

TotalPuts

long

The total number of session updates (put operations) across the cluster since the last time the report was created.

TotalPutsMillis

long

The total number of milliseconds spent for each put() invocation (PutsMillis) to update sessions across the cluster since the last time the report was created.

TotalQueue

long

The sum of the queue links for the session storage cache across the cluster.

TotalWrites

long

The total number of sessions written to an external cache storage for the cache across the cluster since the last time the report was created.

TotalWritesMillis

long

The total number of milliseconds spent for each write operation (WritesMillis) to update an external cache storage across the cluster since the last time the report was created.


6.2.2 Web Session Overflow Report

The Web Session Overflow report records statistics on the activity between the cluster and the cache where the overflow of session objects and data is stored. The statistics include information about the number of put, get, and prune operations performed on the session overflow cache, and the amount of time spent on these operations.

The report is a tab-delimited file that is prefixed with the date in YYYYMMDDHH format and appended with -cache-session-overflow.txt. For example 2010013113-cache-session-storage.txt would be created on January 31, 2010 1:00 pm. Table 6-6 describes the contents of the Web Session Overflow report.

Table 6-6 Contents of the Web Session Overflow Report

Column TitleData
Type
Description

Batch Counter

long

A sequential counter to help integrate information between related files. This value does reset when the Reporter restarts and is not consistent across nodes. However, it is helpful when trying to integrate files.

Cache Name

String

Always session-overflow. It is used to maintain consistency with the Cache Utilization report.

Evictions

long

The total number of session overflows that have been evicted for the cache across the cluster since the last time the report was created.

Report Time

Date

The system time when the report executed.

Tier

String

The value can be either front or back. Describes whether the cache resides in the front-tier (local cache) or back tier (remote cache).

TotalFailures

long

The total number of session overflows storage write failures for the cache across the cluster since the last time the report was created.

TotalGets

long

The total number of session overflows get operations across the cluster since the last time the report was created.

TotalGetsMillis

long

The total number of milliseconds spent for each get() invocation (GetsMillis) to get the session overflows across the cluster since the last time the report was created.

TotalHits

long

The total number of session overflow hits across the cluster since the last time the report was created.

TotalHitsMillis

long

The total number of milliseconds spent for each get() invocation that is a hit (HitsMillis) for the session overflow across the cluster since the last time the report was created.

TotalMisses

long

The total number of session overflow get operations that returned misses for the cache across the cluster since the last time the report was created.

TotalMissesMillis

long

The total number of milliseconds spent for each get() invocation that is a miss (MissesMillis) for the session overflow across the cluster since the last time the report was created.

TotalPrunes

long

The total number of times the session overflow cache has been pruned across the cluster since the last time the report was created.

TotalPrunesMillis

long

The total number of milliseconds spent for the prune operations (PrunesMillis) to prune the session overflow cache across the cluster since the last time the report was created.

TotalPuts

long

The total number of session overflows (put operations) across the cluster since the last time the report was created.

TotalPutsMillis

long

The total number of milliseconds spent per put() invocation (PutsMillis) to update session overflows across the cluster since the last time the report was created.

TotalQueue

long

The sum of the queue link size for the session overflow cache across the cluster.

TotalWrites

long

The total number of session overflows written to an external cache storage for the cache across the cluster since the last time the report was created.

TotalWritesMillis

long

The total number of milliseconds spent for each write operation (WritesMillis) to update an external session overflow storage across the cluster since the last time the report was created.


6.2.3 Web Report

The Web Report provides information about Coherence*Web activity for the cluster. The report is a tab-delimited file that is prefixed with the date and hour in YYYYMMDDHH format and appended with -web.txt. For example 2009013102-web.txt would be created on January 1, 2009 at 2:00 am. Table 6-7 describes the contents of the Web Report.

Table 6-7 Contents of the Web Report

ColumnData
Type
Description

Application

String

The application name.

Batch Counter

long

A sequential counter to help integrate information between related files. This value does reset when the Reporter restarts and is not consistent across nodes. However, it is helpful when trying to integrate files.

Current Overflow Updates

long

The number of overflow updates since the last time the report was created.

Current Session Updates

long

The number of session updates since the last time the report was created.

LocalAttributeCount

long

The attribute count on the node.

LocalSessionCount

long

The session count on the node.

Node Id

integer

The node identifier.

OverflowAvgSize

float

The average size for attribute overflows.

OverflowMaxSize

long

The maximum size for an attribute overflow.

OverflowUpdates

long

The total number of attribute overflow updates since the last time statistics were reset.

Report Time

Date

The system time when the report was created.

SessionAverageLifetime

float

The average number of seconds a session is active.

SessionAverageSize

float

The average size for a session.

SessionMaxSize

long

The maximum size for a session.

SessionMinSize

long

The minimum size for a session.

SessionStickyCount

long

The number of sticky sessions on the node.

SessionUpdateCount

long

The number of session updates since the last time statistics were reset.


6.2.4 Web Service Report

The Web Service report provides information about the service running the Coherence*Web application. The report records the requests processed, request failures, and request backlog, tasks processed, task failures, and task backlog. Request Count and Task Count are useful to determine performance and throughput of the service. RequestPendingCount and Task Backlog are useful in determining capacity issues or blocked processes. Task Hung Count, Task Timeout Count, Thread Abandoned Count, Request Timeout Count are the number of unsuccessful executions that have occurred in the system.

The report is a tab-delimited file that is prefixed with the date and hour in YYYYMMDDHH format and appended with -web-session-service.txt. For example 2009013102-web-session-service.txt would be created on January 1, 2009 at 2:00 am. Table 6-8 describes the contents of the Web Service Report.

Table 6-8 Contents of the Web Service Report

Column TitleData
Type
Description

Batch Counter

Long

A sequential counter to help integrate information between related files. This value does reset when the Reporter restarts and is not consistent across nodes. However, it is helpful when trying to integrate files.

Node Id

String

The numeric node identifier.

Refresh Time

Date

The system time when the service information was updated from a remote node.

Request Count

Long

The number of requests by the Coherence*Web application since the last report was created.

RequestPendingCount

Long

The number of pending requests by the Coherence*Web application at the time of the report.

RequestPendingDuration

Long

The duration for the pending requests of the Coherence*Web application at the time of the report.

Request Timeout Count

Long

The number of request timeouts by the Coherence*Web application since the last report was created.

Report Time

Date

The system time when the report executed.

Service

String

A static value (DistributedSessions) used as the service name if merging the information with the service file.

Task Backlog

Long

The task backlog of the Coherence*Web application at the time of the report was created.

Task Count

Long

The number of tasks executed by the Coherence*Web application since the last report was created.

Task Hung Count

Long

The number of tasks that were hung by the Coherence*Web application since the last report was created.

Task Timeout Count

Long

The number of task timeouts by the Coherence*Web application since the last report was created.

Thread Abandoned Count

Long

The number of threads abandoned by the Coherence*Web application since the last report was created.


PK0 PK.DOEBPS/title.htmo Oracle Fusion Middleware Administering HTTP Session Management with Oracle Coherence*Web, 12c (12.1.2)

Oracle® Fusion Middleware

Administering HTTP Session Management with Oracle Coherence*Web

12c (12.1.2)

E26051-04

May 2014

Documentation for developers and administrators that describes how to configure, deploy, and use Coherence*Web, the HTTP session management module dedicated to managing session state in clustered environments, on a variety of application servers, including WebLogic Server and GlassFish Server.


Oracle Fusion Middleware Administering HTTP Session Management with Oracle Coherence*Web, 12c (12.1.2)

E26051-04

Copyright © 2013, 2014, Oracle and/or its affiliates. All rights reserved.

Primary Author:  Tom Pfaeffle

Contributing Author:  Torkel Dominique, James Kirsch, Pyounguk Cho

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

This software and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

PK>nPK.DOEBPS/start.htmZ Introduction to Coherence*Web

1 Introduction to Coherence*Web

This chapter describes the advantages of using Coherence*Web for managing session state in clustered environments. It lists the containers that can use Coherence*Web and provides an installation and deployment roadmap. More detailed information on installation, deployment, and features are provided in following chapters.

This chapter contains the following sections:

1.1 Understanding Coherence*Web

Coherence*Web is an HTTP session management module dedicated to managing session state in clustered environments. Built on top of Oracle Coherence (Coherence), Coherence*Web:

1.2 Supported Web Containers

To install the Coherence*Web session management module on Oracle WebLogic Server 9.2.1, 9.2.3, 10.3.1, and later, you can use the Coherence*Web Service Provider Interface (SPI)-based installation. For instructions on installing the Management Module on WebLogic Server 10.3.4, see Oracle Coherence User's Guide for Oracle Coherence*Web.

For WebLogic Server 12c (12.1.2), Coherence*Web is integrated with the product. No installation is necessary. For more information, see Chapter 2, "Using Coherence*Web with WebLogic Server."

For third-party application servers and a few legacy versions of Oracle WebLogic Server (9.2.1, 9.2.3, 10.3, 10.3.1), Coherence*Web provides a generic installer, the WebInstaller, that transparently instruments your Web applications. Chapter 4, "Using Coherence*Web on Other Application Servers," describes how to use the WebInstaller to install Coherence*Web on these servers.

Table 1-1 summarizes the Web containers supported by the Coherence*Web session management module. It also provides links to the information required to install Coherence*Web. Notice that all of the Web containers (except Oracle WebLogic Server 10.3.4) share the same general installation instructions. A few, such as Caucho Resin, and WebLogic 10.n, require extra, container-specific steps that you must complete before starting the general installation instructions.


Note:

The value in the Server Type Alias column is used only by the Coherence*Web WebInstaller installation. The value is passed to the WebInstaller through the -server command-line option.


Table 1-1 Web Containers which can use Coherence*Web

Application ServerServer Type AliasSee this Installation Section

Apache Tomcat 5.5.n

Tomcat/5.5.x

"General Instructions for Installing Coherence*Web Session Management Module" and "Enabling Sticky Sessions for Apache Tomcat Servers"

Apache Tomcat 6.0.n

Tomcat/6.0.x

"General Instructions for Installing Coherence*Web Session Management Module" and "Enabling Sticky Sessions for Apache Tomcat Servers"

Apache Tomcat 7.n

Tomcat/7.x

"General Instructions for Installing Coherence*Web Session Management Module" and "Enabling Sticky Sessions for Apache Tomcat Servers"

This feature was added as part of a patch release. For information about which features were added in a patch, see Release Notes for Oracle Coherence.

Caucho Resin 3.1.n

Resin/3.1.x

"Installing on Caucho Resin 3.1.n"


IBM WebSphere 5.n

WebSphere/5.x

"General Instructions for Installing Coherence*Web Session Management Module"


IBM WebSphere 6.n

WebSphere/6.x

"General Instructions for Installing Coherence*Web Session Management Module"


IBM WebSphere 7.n

WebSphere/7.x

"General Instructions for Installing Coherence*Web Session Management Module" and "Decoding URL Session IDs for IBM WebSphere 7.n Servers"

IBM WebSphere 8.n

WebSphere/8.x

"General Instructions for Installing Coherence*Web Session Management Module"


IBM WebSphere 8.5

WebSphere/8.x

"General Instructions for Installing Coherence*Web Session Management Module"


JBoss Application Server

Generic or Jetty/5.1.x

"General Instructions for Installing Coherence*Web Session Management Module"


Jetty 5.1.n

Jetty/5.1.x

"General Instructions for Installing Coherence*Web Session Management Module"


Jetty 6.1.n

Generic

"General Instructions for Installing Coherence*Web Session Management Module"


Oracle GlassFish 3.n

N/A

Chapter 3, "Using Coherence*Web with GlassFish Server"


Oracle OC4J 10.1.2.n

Oracle/10.1.2.x

"General Instructions for Installing Coherence*Web Session Management Module"


Oracle OC4J 10.1.3.n

Oracle/10.1.3.x

"General Instructions for Installing Coherence*Web Session Management Module"


Oracle WebLogic 9.2 MP1 and 9.2 MP3;
Oracle WebLogic 10.3

WebLogic/9.x

WebLogic/10.x

For WebInstaller and SPI-based installations, see Chapter 2, "Using Coherence*Web with WebLogic Server" and Chapter 4, "Using Coherence*Web on Other Application Servers".

Oracle WebLogic 10.n

WebLogic/10.x

For WebInstaller installations, see "Installing on Oracle WebLogic Server 10.n"

Sun Application Server 8.n

Generic

"General Instructions for Installing Coherence*Web Session Management Module"


Sun GlassFish 2.n

Generic

"General Instructions for Installing Coherence*Web Session Management Module"



1.3 Installation and Deployment Road Map

There are deployment decisions you should make before you configure and deploy Coherence*Web. Coherence*Web is supported on many different application servers. Regardless of which application server you are using, you might have to change some Coherence*Web configuration options to meet your particular requirements, such as packaging considerations, session model, session locking mode, and deployment topology.

1.3.1 Choose Your Cluster Node Isolation

Cluster node isolation refers to the scope of the Coherence nodes that are created within each application server JVM. Several different isolation modes are supported.

For example: you might be deploying multiple applications to the container that require the use of the same cluster (or one Coherence node); you might have multiple Web applications packaged in a single EAR file that use a single cluster; or you might have Web applications that must keep their session data separate and must be deployed to their own individual Coherence cluster. These choices and the deployment descriptors and elements that must be configured are described in "Cluster Node Isolation".

1.3.2 Choose Your Locking Mode

Locking mode refers to the behavior of HTTP sessions when they are accessed concurrently by multiple Web container threads. Coherence*Web offers several different session locking options. For example, you can allow multiple nodes in a cluster to access an HTTP session simultaneously, or allow only one thread at a time to access an HTTP session. You can also allow multiple threads to access the same Web application instance while prohibiting concurrent access by threads in different Web application instances. These choices, and the deployment descriptors and elements that must be configured, are described in "Session Locking Modes".

1.3.3 Choose How to Scope Sessions and Session Attributes

Session and session attribute scoping refers to the fine-grained control over how both session data and session attributes are scoped (or shared) across application boundaries. Coherence*Web supports sharing sessions across Web applications and restricts which session attributes are shared across the application boundaries. These choices, and the deployment descriptors and elements that must be configured, are described in "Session and Session Attribute Scoping".

1.3.4 Choose When to Clean Up Expired HTTP Sessions

Coherence*Web provides a session reaper, which invalidates sessions that have expired. Chapter 7, "Cleaning Up Expired HTTP Sessions," describes the session reaper.

1.3.5 Choose the Installation Method

The installation procedure that you follow depends on your application server. "Supported Web Containers" provides a list of the application servers and the corresponding instructions for installing Coherence*Web.

If you are using a recent release of WebLogic Server (such as 12c (12.1.2)) Coherence and Coherence*Web are installed with the WebLogic Server product. No separate Coherence*Web installation is necessary. See Chapter 2, "Using Coherence*Web with WebLogic Server."

If you are installing Coherence*Web on an older release of WebLogic Server (such as WebLogic Server 11gR1 or earlier), use the native WebLogic Server SPI-based installation procedure described in Coherence User's Guide for Oracle Coherence*Web at this URL:

http://docs.oracle.com/cd/E24290_01/coh.371/e22620/toc.htm

For other application servers, use the generic Java EE WebInstaller described in Chapter 4, "Using Coherence*Web on Other Application Servers."

Note that the installation of Coherence*Web on WebLogic Portal is completely independent of WebLogic Server; that is, you do not have to install Coherence*Web on WebLogic Server to install it on WebLogic Portal. See Chapter 10, "Using Coherence*Web with WebLogic Portal."

PK-2#ZZPK.DOEBPS/portal.htmnM Using Coherence*Web with WebLogic Portal

10 Using Coherence*Web with WebLogic Portal

This chapter describes how Coherence*Web can be used in a WebLogic Portal environment to provide session state management based on Coherence. Coherence*Web allows for more advanced deployment models, session models, and locking modes in a clustered environment. For more information about these features, see Chapter 5, "Coherence*Web Session Management Features."

This chapter contains the following sections:

10.1 Downloading Required Patches (Optional)


Note:

Oracle WebLogic Server releases 10.3.1 or later do not require a patch. If you are using release 10.3.1 or later, you can skip this section.


If you are using WebLogic Server 10.3 or earlier, apply the appropriate software patch to all WebLogic Server instances that are hosting the Web applications that will use Coherence*Web. Table 10-1 lists the appropriate patches for your version of WebLogic Server and Coherence release level.

Table 10-1 Required WebLogic Server and Coherence Patch Release Levels


WebLogic Server 9.2 MP1WebLogic Server 10.3WebLogic Server 10.3.1 and later

WebLogic Smart Update

Patch ID: AJQB

Patch ID: 6W2W

No patch required.


The patches can be downloaded by using either the MyOracleSupport Web site or the WebLogic Server's Smart Update utility.

To Download from MyOracleSupport: 

  1. Go to the MyOracleSupport Web site to manually locate the patch.

    http://support.oracle.com/

  2. Select the Patches tab and click the Simple Search link. On the subsequent screen, submit a search for a Patch Number/Name with the appropriate value (for example, 11399293).

  3. Download the patch zip file from the displayed results.

  4. See the README.txt included in the patch zip file for instructions for applying the Coherence patch.

To Download Using Smart Update: 

  1. Review the instructions in the Smart Update Guide for using Smart Update to install WebLogic Server patches.

    For production environments, Oracle recommends that you review the Smart Update production installation.

    You can find the Smart Update Guide at this URL:

    http://download.oracle.com/docs/cd/E14759_01/doc.32/e14143/toc.htm

  2. Select Start then All Programs then Oracle WebLogic then Smart Update to open the login dialog box. Use your support ID and password to log in.

    Figure 10-1 Oracle Smart Update Login Dialog Box

    WebLogic Smart Update Login Dialog Box

  3. Download and apply the appropriate patch for your release of WebLogic Server. Figure 10-2 illustrates the Oracle Smart Update browser.

    Figure 10-2 Oracle Smart Update Browser

    WebLogic Smart Update Tree Browser

10.2 Using Coherence*Web with WebLogic Portal—Main Steps

Follow these steps to use Coherence*Web with WebLogic Portal:

  1. Start a Cache Server

  2. Modify the Session Configuration (Optional)

  3. Enable a P13N (Personalization) Cache Provider (Optional)

  4. Locate the Coherence JAR File

  5. Reference the SPI in the Portal Application

  6. Enable Coherence*Web Sessions

  7. Create and Deploy the Application

10.2.1 Start a Cache Server

A cache server JVM is a dedicated Coherence JVM that is responsible for storing and managing all cached data (in this case, the HTTP Session state). One or more cache server JVMs must be started before the WebLogic Server or WebLogic Portal JVMs can be started. Follow these steps to start a cache server:

  1. Create a script for starting a Cache Server JVM. The following is an example of a script that starts a storage-enabled cache server for use with Coherence*Web. See "JVM Tuning" in Oracle Fusion Middleware Developing Applications with Oracle Coherence for more information about tuning your particular JVM.

    java -server -Xms512m -Xmx512m -cp <Coherence installation dir>/lib/coherence.jar:<Coherence installation dir>/lib/coherence-web-spi.war -Dtangosol.coherence.management.remote=true -Dtangosol.coherence.cacheconfig=C:\Coherence1212\coherence\default-session-cache-config.xml -Dtangosol.coherence.session.localstorage=true com.tangosol.net.DefaultCacheServer
    

    This command assumes that you have extracted the default-session-cache-config.xml file from the coherence-web.jar file and stored it in the C:\Coherence1212\coherence\ directory.

  2. Start one or more cache server JVMs using the script described in the previous step.

10.2.2 Modify the Session Configuration (Optional)

Modify the default-session-cache-config.xml file (if necessary) to customize the cache topology for Coherence*Web. Save the file as session-cache-config.xml.

See Appendix C, "Session Cache Configuration File" for a description of the default configuration of the default-session-cache-config.xml file.

10.2.3 Enable a P13N (Personalization) Cache Provider (Optional)

If you want to use the Coherence P13N (Personalization) cache provider, then copy the coherence-wlp.jar file into the APP-INF\lib directory of the portal enterprise application.

See Oracle Fusion Middleware Integrating Oracle Coherence for more information about the P13N CacheProvider SPI implementation and Web Services for Remote Portlets (WSRP)-federated portals.

If you want to use the Coherence P13N cache as the default cache provider, add the following line before the first <cache> element to the META-INF\p13n-cache-config.xml file in the portal enterprise application:

<default-provider-id>com.tangosol.coherence.weblogic</default-provider-id>

10.2.4 Locate the Coherence JAR File

Copy the coherence.jar file into the APP-INF\lib directory of the portal enterprise application.

10.2.5 Reference the SPI in the Portal Application

Reference the coherence-web-spi.war file by using a library reference (library-ref) in the WEB-INF\weblogic.xml file in the portal Web application:

<wls:library-ref>
   <wls:library-name>coherence-web-spi</wls:library-name>
</wls:library-ref>

10.2.6 Enable Coherence*Web Sessions

To enable Coherence*Web sessions, set the application parameter coherence-web-sessions-enabled to true in the WEB-INF\web.xml file in the portal Web application:

      <context-param>
          <param-name>coherence-web-sessions-enabled</param-name>
          <param-value>true</param-value>
      </context-param>

10.2.7 Create and Deploy the Application

  1. In the portal domain, deploy the coherence-web-spi.war file as a library to the cluster.

  2. Create an EAR file for the application.

  3. In the portal domain, deploy the application EAR file to the cluster.

10.3 Using the Coherence Cache Provider with WebLogic Portal

The Coherence cache provider can be configured to provide caching services for enterprise applications that run on WebLogic Portal. To accomplish this, the cache providers and the WebLogic portal servers are set up to run in an out-of-process deployment topology.

In out-of-process topology, the WebLogic portal servers (or, WebLogic Portal server tier) are configured as cache clients with local storage disabled (that is, the tangosol.coherence.weblogic.localstorage, tangosol.coherence.distributed.localstorage, and tangosol.coherence.session.localstorage system properties are set to false) and there are dedicated JVMs running as cache servers, physically storing and managing the clustered data.

This approach has these benefits:

Out-of-process topology is the default recommendation of Oracle Coherence due to its flexibility. Figure 10-3 illustrates the out of process topology. Each of the WebLogic Portal servers in the portal tier maintain their own near cache. These near caches communicate with the session data cache which runs in a separate cache server tier.

See "Deploying Coherence Cache Provider for Out-of-Process Topology" for instructions on how to configure this topology.

Figure 10-3 Out-of-Process Deployment Topology for WebLogic Portal

Description of Figure 10-3 follows

10.3.1 Deploying Coherence Cache Provider for Out-of-Process Topology

  1. Obtain the session cache and portal cache configuration files:

    • Extract the default-session-cache-config.xml file from the coherence-web.jar file.

    • Extract the portal-cache-config.xml file from the coherence-wlp.jar file.

  2. For the Coherence Cache Server:

    1. Merge the contents of the default-session-cache-config.xml and portal-cache-config.xml files so that a set of Coherence grid nodes can support both types of objects: session and P13N cache.

      You will need two copies of this file: one that will be used by the Coherence cache servers and one that will be used by the WebLogic Portal managed servers. The contents of the two files will be identical, except for the values of the local-storage properties in the portal cache and the session cache sections.

      Example F-1 in Appendix F, "Cache Configuration for WebLogic Portal and Oracle Coherence" illustrates a merged configuration file that can be used for the WebLogic Portal managed servers. The local-storage values for the session cache and portal cache are set to false. The configuration file for the Coherence cache server can be the same as Example F-1, except the values for the local-storage system property in the session cache configuration section and portal cache configuration section must be set to true.

    2. Set the merged configuration file for the Coherence caches as the cache configuration for the Coherence grid JVMs. For example, in the following system property to locate the cache configuration file, portal-session-cache-config.xml represents the merged file:

      -Dtangosol.coherence.cacheconfig=D:\Coherence1212\coherence\temp\portal-session-cache-config.xml
      
  3. For the Portal Server:

    1. Use the merged configuration file for the WebLogic Portal managed server as the cache configuration file for the servers. For each application that will run on the WebLogic Portal managed server, copy the file to the application's APP-INF/classes directory.

    2. Add the system properties to disable local storage for the WebLogic Portal managed servers and optionally specify the cache configuration file. For example, you can add the following properties to your Coherence cache server startup script:

      -Dtangosol.coherence.weblogic.localstorage=false 
      -Dtangosol.coherence.distributed.localstorage=false 
      -Dtangosol.coherence.session.localstorage=false
      -Dtangosol.coherence.cacheconfig=D:\Coherence1212\coherence\temp\portal-session-cache-config.xml
      
  4. Copy the coherence.jar and coherence-wlp.jar files to the APP-INF/lib directory of your EAR file.

    See the deployment instructions in "Using Coherence*Web with WebLogic Portal—Main Steps".

  5. Start the WebLogic Portal managed servers.

PKpsMnMPK.D OEBPS/loe.htm s List of Examples

List of Examples

PK : PK.DOEBPS/preface.htm Preface

Preface

This guide describes how to deploy Oracle Coherence*Web (Coherence*Web), an HTTP session management module, to GlassFish Server, WebLogic Server and other application servers. It also describes the different session management features that you can configure.

This guide also describes how you can integrate Coherence*Web with WebLogic Portal, to provide session state management based on Oracle Coherence caches.

Audience

This guide is intended for application developers who want to be able to manage session state in clustered environments.

Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

Related Documents

For more information, see the following in the Oracle Coherence documentation set:

Conventions

The following text conventions are used in this guide:

ConventionMeaning

boldface

Boldface type indicates graphical user interface elements associated with an action, or terms defined in text or the glossary.

italic

Italic type indicates book titles, emphasis, or placeholder variables for which you supply particular values.

monospace

Monospace type indicates commands within a paragraph, URLs, code in examples, text that appears on the screen, or text that you enter.


PKF6xPK.DOEBPS/app_no_near_cache.htm' Session Cache Configuration File Without a Near Cache

D Session Cache Configuration File Without a Near Cache

This appendix illustrates a sample session cache configuration file (session-cache-config.xml) that does not contain a near cache configuration. Typically, you would omit the near cache configuration when you are using local session instances. "Getting Concurrent Access to the Same Session Instance" describes a use case where you would use local session instances instead of a near cache.

In Example D-1, the scheme-name under cache-mapping has been changed from session-storage to session-distributed. The near-scheme section has been removed, but the local-scheme and distributed-scheme remain. This is noted in bold font in the example.

Example D-1 session-cache-config.xml File Without a Near Cache Configuration

<?xml version="1.0"?>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--                                                                       -->
<!--      Cache configuration descriptor for Coherence*Web                 -->
<!--                                                                       -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->       
 
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd">
 
  <caching-scheme-mapping>
    <!--
    The clustered cache used to store Session management data.
    -->
    <cache-mapping>
      <cache-name>session-management</cache-name>
      <scheme-name>replicated</scheme-name>
    </cache-mapping>
 
    <!--
    The clustered cache used to store ServletContext attributes.
    -->
    <cache-mapping>
      <cache-name>servletcontext-storage</cache-name>
      <scheme-name>replicated</scheme-name>
    </cache-mapping>
 
    <!--
    The clustered cache used to store Session attributes.
    -->
<!--
session-near has been changed to session-distributed
-->
    <cache-mapping>
      <cache-name>session-storage</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>
 
    <!--
    The clustered cache used to store the "overflowing" (split-out due to size)
    Session attributes. Only used for the "Split" model.
    -->
    <cache-mapping>
      <cache-name>session-overflow</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>
 
    <!--
    The clustered cache used to store IDs of "recently departed" Sessions.
    -->
    <cache-mapping>
      <cache-name>session-death-certificates</cache-name>
      <scheme-name>session-certificate</scheme-name>
    </cache-mapping>
 
    <!--
    The local cache used to store Sessions that are not yet distributed (if
    there is a distribution controller).
    -->
    <cache-mapping>
      <cache-name>local-session-storage</cache-name>
      <scheme-name>unlimited-local</scheme-name>
    </cache-mapping>
 
    <!--
    The local cache used to store Session attributes that are not distributed
    (if there is a distribution controller or attributes are allowed to become
    local when serialization fails).
    -->
    <cache-mapping>
      <cache-name>local-attribute-storage</cache-name>
      <scheme-name>unlimited-local</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>
 
  <caching-schemes>
    <!--
    Replicated caching scheme used by the Session management and ServletContext
    attribute caches.
    -->
    <replicated-scheme>
      <scheme-name>replicated</scheme-name>
      <service-name>ReplicatedSessionsMisc</service-name>
      <request-timeout>30s</request-timeout>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </replicated-scheme>
<!--
The near-scheme section has been removed
-->
 
    <local-scheme>
      <scheme-name>session-front</scheme-name>
      <eviction-policy>HYBRID</eviction-policy>
      <high-units>1000</high-units>
      <low-units>750</low-units>
    </local-scheme>
 
    <distributed-scheme>
      <scheme-name>session-distributed</scheme-name>
      <scheme-ref>session-base</scheme-ref>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
        <!-- for disk overflow use this backing scheme instead:
        <overflow-scheme>
          <scheme-ref>session-paging</scheme-ref>
        </overflow-scheme>
        -->
      </backing-map-scheme>
    </distributed-scheme>
 
    <!--
    Distributed caching scheme used by the "recently departed" Session cache.
    -->
    <distributed-scheme>
      <scheme-name>session-certificate</scheme-name>
      <scheme-ref>session-base</scheme-ref>
      <backing-map-scheme>
        <local-scheme>
          <eviction-policy>HYBRID</eviction-policy>
          <high-units>4000</high-units>
          <low-units>3000</low-units>
          <expiry-delay>86400</expiry-delay>
        </local-scheme>
      </backing-map-scheme>
    </distributed-scheme>
 
    <!--
    "Base" Distributed caching scheme that defines common configuration.
    -->
    <distributed-scheme>
      <scheme-name>session-base</scheme-name>
      <service-name>DistributedSessions</service-name>
      <thread-count>0</thread-count>
      <lease-granularity>member</lease-granularity>
      <local-storage system-property="tangosol.coherence.session.localstorage">false</local-storage>
      <partition-count>257</partition-count>
      <backup-count>1</backup-count>
      <backup-storage>
        <type>on-heap</type>
      </backup-storage>
      <request-timeout>30s</request-timeout>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>
 
    <!--
    Disk-based Session attribute overflow caching scheme.
    -->
    <overflow-scheme>
      <scheme-name>session-paging</scheme-name>
      <front-scheme>
        <local-scheme>
          <scheme-ref>session-front</scheme-ref>
        </local-scheme>
      </front-scheme>
      <back-scheme>
        <external-scheme>
          <bdb-store-manager/>
        </external-scheme>
      </back-scheme>
    </overflow-scheme>
 
    <!--
    Local caching scheme definition used by all caches that do not require an
    eviction policy.
    -->
    <local-scheme>
      <scheme-name>unlimited-local</scheme-name>
      <service-name>LocalSessionCache</service-name>
    </local-scheme>
 
    <!--
    Clustered invocation service that manages sticky session ownership.
    -->
    <invocation-scheme>
      <service-name>SessionOwnership</service-name>
      <request-timeout>30s</request-timeout>
    </invocation-scheme>
  </caching-schemes>
</cache-config>
PK6''PK.DOEBPS/img/cohcw_dt_007.gifxGIF89ayGvelq除͵TTTҽlllɾv|кis}疆!!!凇кг拃Թ߸}kdkxӾϷdddи222-)-[eoHMQuuuqhq*-0栯ꬡŻJEJ毾͐QNQVbmCCCKT]ѻY]b鹬텅 }s}ԗbn{NKN屮ֺݻѹ尢b]b9=@4:?CIO~{~'+/WPW/./HAH][]>:>д:5:  !NV^SY_+'+-/1{]`cAHNow=@B_ho瀃!,yGH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sS1 JѣH*]ʴi1uJիXPj֯`bzpL&Ҫ]۷pʝK\x˷_ٱ0+Fc2l˘?޼9rٳfM.;+tҰG3C֮ޭo E뚷qin(p&\aѳ~صg~zmŏ'YCgػ@{7w| hG~ *~gI|hj:hŢ0c4׊$`aB f",9(c>1#{daBWK6)]ya8"#lK!-%^B]ib]|y>ٖI9}Uh 1@|dp0&jdg}(F؊> )3ptR I|vaBH1@&byYX!0െp0Tlx-@:`ȭiq8f2.b:+, k4v0?D1n&>4kֹeq oTJŧI'Jq5gt^Θ33KyjR0i)>X¦*u[cSua۹jBSѶ% #7MX,E:ȺewEe>4Pn*[-pD-9/3߲Md@ ߪ;2+>Av2(=HI`z }Ӹvй=mk|b ~>WǮƹvӎ)iz(X4łDzKI xgcΦK+;OqG?)``\Aej:"^![}ʇ[$aեg[%x_b\yQF;ZvfE9^ @ %H! HD!FH~tEjS$f$)2@Od&)NPIMRRe''G\VRQe,A9K`Ӗ)%^̤0CbFLk΅DBt^7>KlT6t>&:Yp~2tg9ɣqS3 P t eA~ }'qL5#ږuM'F/RJm,I=7;v JWQ9R&%CҋtO:S֔=;QYj@5ChQjFNTUWUƯFbQJGL|8ԯuc%MYwsV&G[ ԕ.gUbͻ4~D4;+ov֛ luih:6x=}!V*|Kl/vyEp+*xs03*l]չ6[IZ-,X/mݶ%o]-Md&kvxI ժ41iNSvmm]h;Z4kezI+\>u"If--j.[z<cQp?Xl~EcE;`*kջW,W'w\5-~yc&oq^v=GhUH޳}gm[W\ 6#"jEWn)U-L ՄSKn|1kUW"w|:(M}x/ꄃsFW/ܷLFxQ8;`r,UWaP1хXdXmib8mhX(qa9vo8{VE{(^373}`Z*HE~v1rqu@"4`VRqV9*3"W%rH*EtrA[xXZYut׋tQrw8Y[8sȅ$[;w13熁nጴl(B#Ug_~UakG[jm]O"%["]jUp 9^c^pqb였vQ}PaXsS$ga/Ȑ4aljEC +W)K_}V?aFf*&y%pV%/c+}]2c)%Fy8eo2Tbf-maGx)Fg?"fى [d^z-}vD%h/yb=r{H◰fbtHF_Ɩ\gn47i+3llDF\kq,50[`k1%k)loys1n帙)@)xI8xY}}mfx9n&sF$-jfHr\I}3ayaf$fk>DoJzN1;&^v)9 YoounoY165'|Gww&n;o1wI0#jo:ERJpwa3{ٞ[.=r9=㘁c»C^̥k~ Ifp% #FY|yL NRf>ָQ:dkflZR\fJ:AAXv?]s(6lfh,e26x?k'']:fFfP ` və`}ylg5GK̙6ZainqvRx)}0.  MjEL`6(] {Pգ]hwk'xq*`Ŧ˔e|$ǻ)w.'s3]z6'yHf꡶u2v]G? *> |.g\bl0ǨL`{;|n7}8,-9[yI ,.d䥤N[j,rܪ-֧ͩy7|8Ч̘Cͫ:*# _WkyV7p˟,d=vk ؊sW+H ûjs "łVy HNMДؼ f2~]c+QYa0 H- $YҤɈ')DKHDȓ9pFC*Nh>D'S)V,zUP2jKan%k2TUŮ}Y֭îhղ;]q)~.޻g^0x{nⷋulrY42Y*9wydʤfyh ?N[wͱ8LۺsCv!B-ceӵ\?qRs[fE@=.|d*@F, <:b(隰a 6BJXJ>| `˻7Ԉ2(!)@ `A +l;PT>*PX*5TF! tB?&(1* st2Y ڤuﺻ;4:8,U):$T\TtCNM*tL(sGQ[hEޤJh!>Ph)B 'PWqiRT/ Xǎ%(Y k{M7T)S(xP)c0;ŴPR*w_XvyO8XÇJfoH?ui/"c2YeÊ.xL  +56(98D!kg4{Bj):݃#5eYs-iFߣ-;ͨ#4F.0&=I&%MIh[҇Y"0)Mp*TtM js| >]0+RƬ1OUIĞ&SC Q1ߦ2Ў1g%QRӚѕtw(Qp|4nCYQUK}zv^\ 0m4)|8jR6>ǩ}S*0լa'OOVd(Er 5FYeO 8Ҥe&2 CUY2V%u+ir(okOV8>| oQYKW}|2g־1PƸS +0i"E=)y+KAؒMU%`Ȼ+޼ϸZ=oִ^qr,R8~Qݞɱ"9x8AH&5ZP<[pHA>LA )8ibp 1>פJI143G[J!RW kQو-Bʪcc32\΀͕ sf7FqKL8߹=cg?%ρncKhG20jv4L]i@z41K:$v k$"H>mbQZ =Bj%C4A#?0pE>|Up}A XAWЍn :=Bzԡg U`(D$@7(P 8@ ć#8rA=4˽ckЀ #3>[p>U0>о$H";c?+ÿ$T `#! 't) *,,숿c5 ;>c>DSAxAS?h?dM? @(@@"l@$TB&l)B+,B 050OCDkc>tAAC=C? AB4CL'd)|DH-9ڳDôLJ23A54TWDZ$#E7<UFF+>?EA"EDTE\C|[CHY D!ņLJ,G^GHB=7H\yfkÓ\T] "(A8A(pI<;p4B$LBrE*JD=3ʺG9Gf僁|곾۾I0P?h}0AZLpɷFtğ\G*j@KGd9@L\cxgHHt܃ ` e=tK]4Ӥ¹Tͽ˼\DO:SFAE\6MAЅTHTI㄄=TpW䬀=HLLn oX EdBӤK\ 2ش;Mt۬OJ]njɔ́4 τe)N|H'ȞPt\%8sO4\Q\AAx9QdL"Mɶ'5(BH+K*v\TJT|ą̃(MeS Qs Q9}!-H;SrH>R0@BUYR*RDO4\AI݇, wX6݃AXPO@P:U7؃s8s(&]'V}U.[T"ԻܲCM4OMLuC@8TЅSe8NK_x N8hP8X tKoVuqF,W\=W[؍)]M_]C9cʼA=>,δ$B<U=‹ȌX)t]ZWv%A ĤוFC7IĚX Uœ'٠$W=J_Z+پ| ɥ Ŧ4I1Fƀ×tEE@Y͜GMtBKJҰȱ5QU:]LA3VENckEt]GrFNxfhfifjf\xkmfnfofpgqƅ_Y7KCL_.MbQaub=esLe*BVB,bXb/cZ~1~CAneE݅&<:.#PI~ pi.钖Fi^ihi~iniwiipNiiitHt?aV nM~NgPfF6BR|}~~e~]Eh\vBA6hh9)c%8?fT9eVFCF~T}Ҽh⣦dKg dd6xPnmb|hpP<.db ;Y6MUhj\B^^otknUոUYf=g㲞FkV[E]IB6gEVgʖᦾ@$nIgUI(Fe66VDŒSLIC.&o8Нn_&\nUo\X]ɬNVe.fudY쌆ZDK m|N |>T&nv[2ʪʬJ}?˘pDZ p=cc~Dkֆ\h|poͅrGɸ\eI\f?fgb~j(Ѐ YXI8CPўr\T0܀\eD"]ˬ] ,ws\Km~GT?-DFT'MUլd^whQϤs/BC7t%\!0t&\t\pυ_wB|x]='k[־Յ̼l{QLS#M@%*{0V"TDL> &wȐ!$ᡋ9&R`Ѣ 7!#Hc4٨1/Xb2IJ D܀A0 &(-8`!JxiP>uAċbZ(U ;=lVD ^,K.Fz<AOL`0gA@%K`$HIZRhG9F`lQ.p8dY&eN2vЍtD:vda w; S#Y Nū-SkZ4OXVpW6ң9Γ5T; rHDW7?Pr3U$1ڻߡSM}(r\6|R'#ɒș81!yaRi)~<?" PW;P6X*8&ma@Ar]WGJeٟQhubm;,U~z(" ڕ 29­gľt,L5}d4B~M" Jӎ,TO3> 4bMf }{r&4 Sjy(UVXVw Q|p|]2ֱcW%{ ~Uu7w]}sqV.J:U庶jWږe{y 0෉(zawց`!H(Km;xeu͊"5-)k97$k\ `yoi#YepEBW5omUrw{'8kZM;7ʝUWGbE@C0 kq23M'c^75lte @Ns%5գOqEj*/kV !oyހ7 x#l< H }K$H^kNͺ윱\jBx3w]Wk$l_NuZb:wlo mF80>9Ѓ.<mM-L׈'.wkK{x'> >9N^B23fkSE棞z\%C>\Є >%,CHk"ܰn\g\6x? xHB.o&! g?)./wNi5|n!%>[{&Qeŋ(?/>/.ү?oԷ-yycDCl9e|X~Y%-_֮V X0YAZD, Ơ Ҡ ;Ȁ; !;a &!::}NɎŤPE4 ­]ʔõ VZLR."Ӑ#AJaٲO. ĘyFy(',Cz#x xx< 9ĀyI`%!e'JM_S`a)JE0ZHb[L52Nh&n#7^)j09#6r,&[d31@4 uʧ ,(9\747A9S @4 K (,T($t$x$H.H^I$ yYISAU&t cFٔF }`? 0#?^8i%Qj ;&Lj#5et=e$Ed9Y`e+~+W*AP7e(Z%Gc]jiLBu$`]KR )fr)V$((te@&/PYiկ$gg%1i^Rf<EJ` $YfHVg @n^t@ AZgq*ELpHE%.$x tA5|BaNs8Di8@*hv|GxxyzhfU~Ed[MY'f\$0ךmPVu%}ZmlEZPMAH .)[*EJ 'L GZ(2͢V <0Hh 0Qi8Qz .2\& 0jdD4ʣDʤȒ`k l>zNdmWzeKTX{O nCHƧhLf"* 4ɿHI,]*ة-LX]DH.ݪjגLLd錥jI T\-JY&/0ᱢNxMe-/]ɬ,a6iHQTT< 萎xڼN/7/ŽnQ6ROP<|RP0V/x ݶ^>ҘjE{^̎"5}2畢knDUfؒ1.=.oQ%Q<^Ϙl.{|OmrHpʲ,?/+74RUf 'V&ݣ=3>Jj1qm*+ f,* wR RĤ//^0fTt Qfzl˶\6rt"T7pq➦m-(63+@nƙ8n@r ]W v<^e! 4>DXI,IS!+93::Ӵ@JbYb,\峇ybŘ?3{vN]C5*BM1=ⲕughBVqqi,z/ڍ26o{ŵ\m׵S4nWl} J-vu7}0N7-vc+I&J馵t]`G[ew]6i'JML99T;T9]m *{wBwN]wuYţ_5#V?8Rߞo]Eb#v'zxUQ.X]A558#Q0RxIQ6:6p|n坸[;ۼ[U] tP 9[96EvCw~Cf!wW*k9hzvGY㦂* 0 t"xdC/J( GiQ2,,9lxmX@5p]偶o;w;C>; $#S^;7MUWvݲbo'vYw˄9($e lTpDbLHLH|ÊǹtusTrgow^?oufЖUV_aߥy[ʻ)FCâ39z ~vr 9CDhRpOLOgzQ\N9ɗ|+#Ф=վ<ca)lP]+rgT_>go>w>_~7_8/|ą' p7=(@O}hQ(WPkwgkiݶK >9!ne?B$.oX߇???sPK_@w~+K d( 1;`Mpb (V=dH- ,ĈѠѨѓ'0`4hI ; @ D+$!2jÆQH(XB[0% (P(}xBEssX{T#6nl1"d`#M6|p_ŋ7vrd S :UjTSުj*  ]C.I}ILMz`P SVaɶ%J{m3rc_馺y»X]RI`eHgHA8+CƁHX ~f{Ss\݋.tLuR\gSW]Fyk ;KڢĶvoxh¼PV,`7+7b y^P*pB0 f 1'8tp;Z`φah`EV[s]DƯK%4 IψFܩ_Xɔ4uM1`nxK:|@#8[6MZ | DF Q4zt\U-Y%u 7`5X*U&Vt]W5%aX:,e-Y& N9e2fTFSY)lϷ.fqѷOHo]סl ,ӹw~g ƒp-{YDsV$.RZ#TRd\[N1&X?rU"kVEcm&md쑲=64dAR `6gxSQ;+Y6qFlg<9  IlCz)*È|8ǴL)M-ԍ;pTXхP&:a,OXﱏ- 7&oY`' pi~ܯyaBsBOwэnH3]w]iKy〟Zl jʦJ# =[ך޵qU <U k[xiڊmK~csC{X"Vw=Z;ƙԩӿ2{g P άzEKbf-=κ"fzmlTTϒ.i@-n$匠 - Mшϴ>/:JFDRdEo`p 0P+6&dM ێ()MPCˀm?. iC娯Pp,o o+ .6F&p37̀n Hv`Pw ^ pB=O.w $.0P$٠/l_ v-ozP'*/҈ 7:^ JF[O QD00I^ R  ^ ! !"#R"'"!!,1JP1-l0)#c7FP@Mz+!HnYLR)r)RR***++kARƒ,˲,3@A2-2R.3T%IV\0llGJ$%o 7._ yAY4m f'y|'q72[mz!qڞ3%$111m! r32/5U/?R0Crms rS%W$s8arR3j.kdiFp4u'(TS͔͐5360e6m%s#P, 8's C/3Rp99C !1-Mv3;0B3;8#tS`s0s6%Ck1K%4nA/4H`V3eC+r@al kR2Ħ!H%OA0&yA/&iEfs -= {pGwz/s5/9GrIS!QJ{T8SpXjK=6I4L `k`EPN4D9k"!JmEMBE1 uƪ3a)QMʌxFR)(wHYSBښSt4T@I7 UuU\uaUV r*A@!r9Ka !pd!V4N|#`N?lNEvAH$YI,ZKbZ(uѱP73v[=FQCSi`4$So995$Y5;!_UK_t;Vb b ` na( * lȠ0aW7  ha` V!P$!X1+@ A!DfA+g `g7g35m^[Z[GU{`5W4󗶫^ѶS[iy}a8kI.CTkOdFZ5ûDBFc**`YEכT޻wQGtV]/T4MTMsZdVnDx_}ے[\6He{;T{q\ ClѸ(\(MdzDAL{NPeddFB[Q;jC2j9r5X WWMNΕ!Ѻ1l@̧vhۼ0<é;2]g'XNa:g^@} :qaD' gH* dZ|Av<'\WKv vVa|a bEcgsc`d)qdeUVbfh!X zB ٵ]6kP|=L=R*=]G pTf e`u^!rȆa{ sh'l Pzh`a|NY@Q{Svzmwǹ*!b`oop 7W WC.wY;>:sEFtOcmz8^ӭV sIiM=w'\B z6ep,ze;kZ̞^|A]Q+\{A!|ẁ Lb(Q(%K(̛7`&P1c?B5zZ tI-'HdP$)ajڬ)&T<[4Р"ZY4i(yکӇh8)#mbBX.d1ejZ.T׋\/g"TĘ^3: 81b<o:Pc4 Vx<@F+Ԁ l0L`b} p@j0EɕSNljc%x@.axE!ƩS? s+ە`13 3f}B BoLTEdĄ_DyJ-8@L74NI6PRM^{Uŗ&[uW5YoZmW\suW^{a1`XweWz-H_G&N"Q E%fqdٖ$q!S$Ar&u8rnz+x*0;-B^$[&HO NBs. ndB_\sJWqx2rijDjpt*jSNֶ-U~}d^ٖI.{Y}N ǘk=sJY]e'g")ҵ3.ϐ;.d+{+JzҥiJejXmiP:05x$εz5X{fqεfy 슛 |/8]6a/gNYV4-p#Xv֋Įt}+\9N={]oKe>族Ώ?wGiEg}zyz|}Yw'u7~UfPac U\u~WY%_%GsQ@l||'z Wwtwxzz} Y}'rcgr6k0gYwMr!Hhg?Ugp'zdugwdiwx8X倂7L[Ha/f{(b~gciXfd{mfE2 ^=dZhxs+q-؅_gmeXzֆ6f|5PL(Hhh` %("`ZJ@bL1h0kEc]6F7V׈caH%x؅a2qggixj5 66 I 8 鐶 i I -1@ ")#I 'YP+sX"]3k:(7oWC]RxKC!6!GIޘF&0.7qt}Geizxn ;c^A#s^~ӓ0Rw0EiG)JM锳p*0Y3)7^5:%0?bM Q@B4.JiٍRyHq`VyX Wmhim玷IO ni$njoSvsMLR]Ip99xɘ24{7E8:S ř5!Yyyyj4qFyK%3ؕ_ iD(*#gjWe9D!I)B*D('w^ɓ)Ήڔiٚ(iIWVu=Ȉia ZDžr4)E}Ra ɡ9SEa'zWNxբ쩡2: 4m :=)IxV'59Ofjr٦z$̙ϙ1:5*ngaΤÓv\ﵗu*xU:ʣ韄ᕇJqb %IoȤeDi{<¦:K{ũ-ꙷ)*" Jfv~z(#\ת޺^@VʗIꞺ*{ }9@ɬ:jX \j qխKj.:tIy.yi!joKqʢZj'7 @** pɪ:T6J0 [aurwizX :J슱zx4XڜY0ʳ>˫@+k٣>[L۴NC*:h {C(J~rKy嚷&i:eoXٵoV:$\ڥyFj_+[~:{Z鸬^ٸ˛gi{{n~qkImʙrZ+IalˠLJjy/ǢfۥٻEkȟZƫ%K uf 9:)K{ ʪ[yi&];+ DK;:T[]ݩ{QvYuɽ*qxwhF<;K,%+,~F0 / {4\I+ 79l;N=U;A"ȅp婽 qOmZF;\jү,ܷ lƽ; DjxTPPpNnrv\ e*J< S t t` 0 B&Ż4 @9|93%֋EL5 <ӬK|lɠ C++ks@&Tp +0ϋj?m{*U[;Z t,˒0~@ kω6ͥ{LaͭX!R1K$mK)=9\vb|fϟpp&  ǀ0Zʡ7mp t \ LIl} `]L j2*L@? m @J @g! 6` t0 ^Ƃ.8 p%Q!`C_ 0C,+JDŽ =XtP$ٔmٜ٘ڠ-7Dڦm)aگFW  P 3/p&ނ0q]ߩ y ]ߧp˞>Zx@# +Af@ k60jc6P dE0 2ƒ87ʰ 7$8 !'A"" CM.P˷.X~F@f +T +^ -1>a8d=S B 2"JN Mݻq/\  w200d!߸  .2M@  @#~,o S` !M !]}-,pP٠-_0#.%V. 0AJ^~; >vBLn0wP*-.D16 .ݻU H=q s^N> !4M|*2=\n7\!4Q y 6!D~ڑ, RT~)A`bK#MOPO>Q)[!^/.pԘ 0 P } P0*?>-߬1m꣜pR`x<rc/* E?+\p ~( ,bƲ7QN -֎ #A!- %+k-[~QW` +  8sf" gXj@?ВD<"ul,`_L4r-S1ed!U%PD]4 GU3 L7Nj0DUYW'#QQL \ Wu}mpgpD8怋F@%c2 +3K[l4,VF '^$f#ڠY5mm70e " g} ""!1tV<UuEƵ%]ONV嗝y#faFJzٔNg^x:z۫~5]je&wh$x} |W_arT,owb+2?)dcJ%7+k;N]YfXp'ÕN|qz?$\˦uxIfIWS nvf0c@7i*Ӝ=|Zҧi%gILЉnt+] U&*T(;ڵpad8Ë%^pPfWz9b4f"e:)Tn:ye5`ҍqՔZ+ǩzxy'g:3N^|>Xo[E:R͆ +Kh 6" iMoZžnzçv-1kf 5vy ]EZ+ι{ɶwZű{lFG[~2lk( nP[2|Ŝn|$omBb[n7s|~.K㓳Z6Mjh{շk ڒ+mimcVx] Ow w^ھ(?۴5Bf>s;X,ZiV3I ~]Gҙt>] ίSꗗM|/u2 )r]ȡmMsrۜ#eKOv>ql]/dk&Nzx?}Z( !`<>k `&t'()*+|f !/01$24-43d6t74C+8:C3ٻ=>?=@D7CCDDdFLСF@,DK|đPJRtCM+ST2OZUE&CZB.{E[V']E9da$b4cDdTedftFc [gjkFc,ziopmQ2\GP6!$$ݥީ{ownngҜ|UέΩ\;+w/R.EjkH$|RQd#N"T Qhu`=DK5lJ<"Hku]TAV h|Ʀp-*Ui}U`] 95 Xg:a$A'B@`^hzjpw%W7zݳSAv F:`c[@39&y 9Tk]pnq([۴} Dߔ=n2{оW[!"swIU)mƣi= U`-iĭt GېR⪙dpsK^ڗ?⺧yjUHz{쏏Cؔw·l ?Y4(քrGN_O^cn$y]&HzWy|uju_. ;ѹ꜅v51%G"`{oOŋXݿp&?]0H||mYZ0>̷oę/oȻX3sk(RI jiGdVC5.·?$Ƀw9mmo~\/T84|`l9sۻjDDwp6Z͗y)$]:53pƁG[WKCs.ғp_ϼ fo߿/*<Ǐߥ)T,s˿gmy 1➂ >/YQ٘Dy݃pPW].8 `ɽ>6b u-]t_O2?<8u>8B0DѬh@oZ+ :i_;(7Aos7 Z *%F4`5Ob$&#PeU7^PěS˫;w_<;3n9Y`AoO>5cM#ҵ[L.Z/j~毼=>? H/v8SZ{Yi̕+/ՠ.'wϫV_ZnӦ_vW%_D~K/R_[X`cO,MU͹~جs ML?s=K퓺saΑ+ ђyy?GWzBJy0- .mˊI)޿k&*Zn~p]EWU.i]0mˣ¼J 7|߻};xlJ<Ԝ Xo*{,woL?󎙽_Pt~^Hɸ %a&"wD%M;2\LDD] -t1G.Z=CXoz' ^Ǜy}PiYR3t^Dky\%U~j; Ny!&"q1XOƝ+/ SLaqg2o/gb\6۽$Y(črCS$uKD2̸bKk,fȷeSQ~}^`ÙCΨ 1 ^^Z27"iϬ>G.[pU67W<*SXaf5Raf5ˬ󉾈{qce_Rɔ9mJZa5m9Ni sU6zH|G> 焇ϷL JE/=g0KzKYc9߼ff{XY?I7/Lj⑚"n?~L?L3Q_l'z>[VU3(rgB~G.kİmO^ڍЋ!qk Vp3fYKf3`*v.fUqkCMSk|c̰OVGM3c`*f#ھ+Z5%UU LǑk>9/,[M"PVy ϞfE7ӷš7|}Yyra&k6$FQ|↵* ?Voeiȟ I>`؈IA | | =Yǫ#$tvOC^wnz} 6 ~v\)fK[Wsi`JACom^sB953SU 3+VN-hk #!`53"XX  |f񳯦?|^61~bDvojWi5߬H,f^(+_su䤄 #Nڠ `bkH0rhF%'ƤV#So+,F [UQ"z((u*Jxs3J}g#Tv0ڊ*ex'£S  7NG\YڗR(xƼ.T4Ypu~{1_Eqoi"yM/}rUa@)G8LѬ7J4Xg[ܶ-vo EN%G^]}{v{d\t*\ 1p[7|#0/g޸  k$2c]5/AEU .Hƌk{=wpfj'!2f7>6eURUv_}.J:'x7/׌=pI#AI=e)?ppgǦTAlCęl~X3"CDb8@g?})>۵{|qO^2BI_i-"L*K:d"ۃoUmZ`Gj4A7HOs 6<@[&Y4lfL%Y4'^`"a‚; NB}&%&eE/B>hSAY}uO_jG r_x:&z$z_U@th<_5sN:@tP @,@ đBo|k; ZosF HoF HoF z3 @ @ @f}"@z##7@zؿpj84h3z7{oVCfbԒQIU7Jz[X2tP[6Ԕ] #vx՛4wGNFĘp/csc=$C XT.;zꨟ䴒/?2RiIitLzNAH{cBU޽nsޙex'êèܬvH**-CҊVAuRiB/ei4L#N ᆵv;KkiͲ{~jC"Ђ_[3voh؂K$W8muڅ=ѱ%õ47+&-S~)S *iE]'SYR4vXFriG2o4LfR-{dv槽Q$u۶HN9Ujz%IL8pR٦Yr7[-xwvT;kC rsMmnUJ!ݘnD2Ռ )A rz w9v+жr;Zt>2 {ad8:RۮCE2mQ>l:]#րjUGӻٳI&+a 7CcOV;K2˞')A;8W㦗k0,1ܬ&`sFIELjXVR^fuVv0lnىt867J΍*PeiKTⰓC.`P)IhfwlK%;ʤ]~vnևpӞ^nXq%elq֌Gô\jIpґ6д&Zw#UC/:d hq:4HRLKp)"2*5Cn߂A-ن4e+pRGjqv@i '9fRUC(CVV[V&}mV]]WM˶-jvM]C.w/Q=F 7͉f`a#F rz 78:r#nw{#7t^ރICG4<  J@\radzc{HnZ OL#%g<1hѶ0+;8=Rn/uLWOgvqOuV!)34y/(3ޑ?{JyDn5L׈XtJ zo&߼޴0v=NR{w,-1!t쟔F Z10282z,mdRvX)mҏ7m+reM_  1ѐCM ZS2])Ղ݉A o[Zz3-L ض}vng{mŻ(L=ϵ7Po@o(8u PF x 7 =G;̾f;l>|{u]7("}"*H,ǍwcR5HmLozu(_zĊ6Cv)µrC{|1Yj%i}w[k#^*ʠ׎= 8ޫMU,0] {<=; Ooo@o@~GPQ!^B(9 7 ޅc{h1(V348XUU02AfQ:dwgz5C[#޹Hw |pW}um on}}진>R:<1'R3XBZSo@{V*"eR!XS]5 zo@o@Ajo{ 7 ހxx7{V1nH]׫4~%J`p>frx;iǨ6=W$kdp`n*Ur48z[OC[qjE1dw\78< 먻WS'x^)+Mr򪫷Nﯿٳg6oC@ۯ  7 @x7Uc/@Qs~.v޽Cgz&߿sy&9 V]WByv8!ݻ6ެr۵N_mup~{ntZ_Iy[x2$ϲ-s=(YEwrfnjaCߞ/rl6>Ң]#`=}gƦn }@JS.U{)~lnUx w7Kyumnj]!o#yV5{ y{ϗ݄YlBٯGtq쮲܈ݻW.ZeWMmLI,;a;DDM9woYf# ۤu~8tny_ MGȶ08 LwAPPJBٽu{W~%E퍩^⩝k)-no{ 7 ހxñ5 zo@oU|}ϯ~o8ܫWY/?~_yDeD<ݚrݳN [>}OX_/"?wSGSsdu~}UG?c ;tIME #H IENDB`PK:RxsPK.D!OEBPS/img/dev2dev-sessionperf.gifGIF89aѮ󶶶ܟ鲲 III&%% *ʥϪ̼sss尰-hhhmׂtNzzzܹ>>>QQQQRnffԐr\\\Qٲ☸\S,U󨫼Xλrã2༽¶g0J.RfղʨЗɴٹX~t10ڼH޼̻XNԽ񕖨V k#PٸͲմͫ<+f++Ů *ŮƋٷݿ ˻ø[TK*ϳ---Ͻ(羾+++ƻ ƾºɳnef|gvnҵֶ"DFּ˓ިv[I111ҠŰ¾ďā{İ: !, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIMTEɳϟ@ JѣH*]ʴӧPJJիRUe``ÊKٳhӪ]˶۷pʝKݻx; [QLÈ[l0'Ő#KL2G#H̹Ϡob&9ӨS8z`հc˞]״s{{ Nx+_μ7ͣK9سCф 0= &Bp;8T |&}? t8`  (1Qr P( jy8ژ;xc?c>>@>.k/[c[o¾3\Gl0?0  O/&nR|/7|̲8,-r.ͷ߀ Nx?'88~ -w8?^c7{yo긏z^:Nz?=/ko{[?|oO_~z"BL{PrA/ pt0$\> ^"0@ j~T>p~)0?] 3~0#, S09؏cP Q…0EiHD#0KyBHQ5,'B,MWEcEF,b/(F2VcC=Z)% "~Є!{ qCs&0 I-`(͸I'Bxj@'#* @H1#  WtQ+5IdSz08Wmjs9N|.iur3'vQ ~8?Z bUj`e=kZzujWUXWfz*/ZX㰉u@^%]ػj~j`ZiWZ,iaŭ` [6h},poZZb%kb׷vtKUf.rF6 e1{ESIԚK>誋]p/R}``o>d('f·3CG!3.p-t\`;p d&cGpI\ ;9FG[apA9Ns;,e]^>7|ӕ">̺?)Ѐ0_ԗ&a+lrǧjJ[67/OZԺ u>Lj}M`uE=AW˚ֳ3LץtkbqdžkfumfsZ׮ǶT ܰMn\ۭNwrg޻ ~z؜c`wFvWX^Q1qA&l!+#P"U8+rb 2hEVCh^ƋϜ5͗XG9"G93ZvGc hpP8:!HpKCX hl$1rݎh$̩"|g׹+~qk$ao,9.s3=늏za}46PMjf(6j~p8.y%1jzl#g=Dzޓ^}u ]|^_}Clb_C?~R?/j{ܣw*?_}w_æ/GO{˟7{~|Q'*UQٷTQ )PV kk` TvV BЁ! ΀4B 22h!S(X > e07X `@,P IMQXVDHV9xJLA8U8e`:ȅNnhqxWtX v؆EH{< T8%ȇ)l5Hr؇b٣9:8aA:7[;ӽ7,v:{<:K:;;;=< ;[<˽c `ۻ\ٻ> >3 ֋|s<;l )ܿ| {Y5\N:8X&naY \ꀷ-7I,[L|YQlk WFV[]Ĺ`TUƈ\|^ _,A\jz qLjhLNP|nǃH _,loQl|\|lK ƅ<đL,_ALic<œ]Q/Ժ l_҄i_cMONh2>RvP5 P֐79mmM&EcMm_kRfN|/D c}M/ؔOgنl]e j-څ-ٟ7ڤ=ڥة ۗQRphڳoٝڃ-܏Q ש-"ܼJp_ i[2AУTxBB EpZ-TYt߿BXlKANFf` D N )-BBVݭ ލҟC& +N/257ΪbzR1ߖdC -Cm4@(p.Q !.2j5v 柆u~h "b~9t>Aܔn~lx.~L7^ Q.vFjs~vl.ǿu}쇾쥞nh>~K,PUx蛎b>snzPp(8+(!Ip0k,  = Ԧj 8-@ 6`v 0?k ?kO,j`/=._ o#j}#O$8J6 OHK1S/C?Rf`_G;A/tT{tn?X_8_TZ86>,0 -r!'"` hJN@`jp 0bo0/$f5F颪; OMP)Mo1N_c)˗B3iЧO,iHt~ 5rQ"ESۨaGB$PɊ)W̙#KެRʖ> :Zs!)Sk_}?{@M}QjO]xɨ[qΥ[]yA^q{S7[*`x p\`xP .gܙf̠5{.rj13APϤe,Zصsm{hy '.۷nWG:s! {`s~ǫ!oy[W~d]|??ዿ_cS/7@衏w50v$O}`_A@ЃkABBv''ė; aoz;׼AO#b &q|KgDqEȣǽ%rvc%<*T @bPNuCADle!>,|@$ 4G2$H?I3|Ѐ0p'-L % C" Ĥ. H@ Ҕ$*ɒ̕,QYKErmԈ)IJ4i\%~24eXLg2vMj-ѩδ$5fʂW,g[Ċe5S*U Xm^1b>r@obQ]ذ.MQ^%->ڰwhs*ju'h=s-O8û.K`׍v?ת/_غpt $ 0M }Ů 7p);7ÄovGwpQ\e~<Cw.uRX ,aƥ]Af^413cX ^XA6O P;c:0}TƗ/^į)V'[a};fb < L#{j4l~ ?1mBvS62Rn!;}{06@]<Qe7 @* FقO8 mCm_vl||yy_Ͷ_~r#Cۮ9퀃#\Fo/p l% 剈C?HDN4*uk^7$պgP8y( fvu D _GAxÛ}g<.Ǜ셟6vC~I׻ ~GA>흷|azȳ=E?Wc{M _7]kSzA0{"E яׅ_G/OD>}CJGT,81(y87;?۟s?3@SOhډd@ T @$*Կ@DASA O@A( $$c"?B",B 쇅O>黲}g"]`ƪ)⅕ [jШ:C̺>d?+}pktX07Eúb]cDBZCÎēPAD)SDYHEQ*B4,~ C[$\ŻDŶ aLDDE]t>ԇG+B|ƎcjF`,DbC<[ycRGDnn>MOw~ ڟ~]k]~o~U~ӏ*؏X֓X7k RoZ[R@W ~vе?4P!C%RQ#}&\aD^,EqƁ* rLIpeZ Ss&/ ju*Zr՚!V(z [YF]wbu7Q-|KO_c] W2ˇ/naɕƨb|3_pԥ\<*ؒ'Qi˅-])K}ߌ?W8e݆Qrᐟ~u,<7{iy/;yEKob˽|e_ݙjs WpV}%XU xO  iÃV`\]a?㤐wBU *d>\ ?O I5/JcPi%Zr%p@h:&y%T3g?$ "7Hlq gv%byRj"VC Iwgg.%ª *~Zji+ar-J?[j+QJyU^I_9fgf{iw')jjzAp8׉[UY' VP?IP/ TZ}CVшV7xYI?4+Um0N0'$W!p(d E4KMDF#]QW4D8LO-_WtևӁE"O7CbuO}7sgM7`5|=(uW~݄+8\'.7Lc4^O~7ٜc^x0@pV&>+x?A*{H\H®@Ε 6O &XbT%BaaP '~>8???9Gg$~ "XA?r0=hO`KAP*L! BЄ~b5‚qTQXqPUXnS&Ͷ<QUU.sK[3Zp L4L<ӧ\Eϩ55EӀ5s>o<~s|U~C*qs{9}/FGB ah,,jBf".a84Dထ?o}gL?*}~Y?F?ȕA:  , BBҟQ_-SP UC-R >8  6 z i_z ^ ^!jZ`j`BV za-.bEVa_ h{(dF!>ęp<@r4? !C!&b!B">@.|#B!R"&"?8">@T d %""?\"2/b $-"..">)zb$Nb--"1cr /cC3BI.#/4*c(^c">6v#0R(f#4n/zc5.c826r"2.9fb~!$_!V@< 8AEe /Bߙ a>@-@iЖdEfd?lxH$2d-1GK81WTB<0  4NVCO-Lr.$ݤWz'@TIUf 2,NJ:tDLUEf%G8[VYVZK~%IX`FGd^BM.N6OLdNeƤIbUb$V2eKclefUXdDƦ<_x"lRV`D fhF$gSHt8ȁLG{$bA+@uHo$Fxgy@|@ar4u:zz'G}&g|gzgp*~ćq'*Hq"pcd8qptBhxƅdȆθfodU(VWd?E&AɀUÕMN/DHDC􃌞NRK8Ŏ EDB(O08I; "$iR,c<E BԨIC@Pd.Q)2bԄ&KRO)hEGHDEA8I 6KjDb)6EL(Jjf)Bp҄TP&YxD_<>CV5\Lv 2@ d,A ւ>j ,D ɱVIC ĊB+f 2I^1`DAPJ :-,k<+2'L+/:1ܫ?|B. l,L$ DBHlVE誜bl~t܂3l .E+B,,j̚lҬ ,*klzl 6k-.Ƭj b)Z#B>d"'/eڲ"Frc)ZBr^TA7b,1Jn>Pnnf-ަ-^nْnnN.b.n~.nn. fޭmFoZ../瞮?dސ ɿ ?$$8,vmWC\@Ó3d1ح0X] Hod$ hy28Ch3̤do p (0f&%RƁ @ zy_0piLbW \ _ORe ehe0 c ndhK}p /rc LH_qKI>KWpbpq/W 123`m$@ -VE"dW@A>[5CsZ TO(>?$$;@%_r-dq>*33d)ׂ?P)i*.l'([3\FL'*{-X#)r)2/w/\c,[255rc@6۲787sb(s43.'s9w%]<'[c;=s/3?4;*C3+Dz--S2s6;CWXd˄L x@(Tl AL/2m*_dEŇ_@>(6B1-3B[s2PG5s>+}3 5aDu*#u?(uV7/U<<l/P5 5SoucPuY$BcaT_3(5a7W#QU>vqdu_'huPw6Xuh۵V^6lWU/lskm6V3h@E{HF/` = !IC.4`@[، `oMd_JE\f}mq0JF`*J& /kI(£&0 l-1np`Ұj00YJ]3o q+q8k7/ w1|8}/70/VJgր77HXgo 99 lEr@o(T( Ԃ+Ԃ \T7~r (-Fn/bmrnm.jz2-l B"F#.:z޺&/2oF:".o8:^zJ6;bo\;;GC $O(;9]UE/ T81 =ih "+Jm̞JF|iMJ7KK<[I;`@K8#=p rd5@?+ȯWS2K7+Rx_|k KJ4˔Jk\&=k}C+ǟ}|Ə|/ݳqErO `?9;/{M*zEqo>!fǭdG-T/pB~S0D E ~\A3CEx*~7BD>)1|aJtQ;5X(k v$X=`830+[os? &qAXx ;f d͛9 BƒZtʧϟ[÷ڟ׺&C6?ܨUv j^~+}ť#r<(Zlb $aFݼj6޴>ҵ_dۯ? ԧ:m Bs+-lP6oR10Nt82NSF+?*૭:L A6~' jg xZ> 6g2,8@L^>P1ǼlHNVdx% H}Їc  'vAdvO@%PDeQH%R3~)PYGeJw15T l'1ĉ4&$NH%WAw5WaD[x4[SO C]T[nUO>UwrtEewOA EmE|$UBY0P#݅J FuSV=QmŔA-NcY5.TMUX![9x@ ݬ\1 9m34G-~apZ`}Qi:knj]ZƇV7G;[``y)( e 1~v N#|j|˷k~6?gN̝6]][=tG_qcW]םs{>l{F13yv,4PEô3 }ᇀ]Xx?~aG5n>}?C H̏ x LgA j:PAFxΠ4 L=Np uaFJQ ! 21ZB4l>D(¯% D?E-ꏋ' bpHcBw Avx҃Dc )X & !8@fH=,2J|ֽR3"E яO$2I0샖ĥ.2 L}3]&5lns>v+E@ahAOy( nw`P(@*ЁBPG)%,C&LԡhE.!u:&:`Ԣ(G;PhJ9њ*25L5R.a")LyQւ17AKln&)) 3K-5Mu>'~*+:S>&1xP '}BO>.r<ðp>t5?$+~ V6=Mc6ma ˏr4h'QTA`@  IHUhV{4Bnla ׊" (@P4`ntKBns+z׽vVծx{V]/u{]b.8\׻n~񆡯cYkY鴚.X@`y")@>6 \ @brGxa*+PF0g Thlc@<H5F22ȑUuK'(C[,@F +נ NA9P= `e(3 ` o.ÛLhZVhG?ґ)]iK_Z LNsp&Rlfeya[6-Spy w{]`@f5AGmǹmݸ7m6F[ٽnbxˉ0S @@å;^ܿMU._yis3yw^<9Uq/=LB ؠuۺ9m{N^W^{ W,pbWbQ2 6V- x 05$ H@DE@~?|xK1Ox#waB= ! B S KY !dW~_}c?v?ڏ&/// 2@'+/ N2@>2`\`` R`lF+ +M3p@" a6x!ڊ0+<@T@0 sA P p P  Ő  0 raġ! Ӑ  0  q Qא q`aifV L pBPCh^Crp@0+++4ZPޠv{Qy: {paAQQ.Nn"^,+$N\10PN e@VC@BvA 5`"D`4jAq !*!2"5,0 !!#"%r$o!Jr O c%[!"RFf$Q'+4a,@fa &D(U Y!G'mRp*!+#+R"A &%,,CR--%3 ɒ#!_r"r R#n/$Ӳ"W&r#%S$"k-ht/cr&*@׬1Ā4K4O4BD +kVJIS,:nDI3نn+taj&0F|aX–94F:O";;;Y9ӯ3)Nc:3l=s==!$SƓ>3H a< >= B<>A@+4<:5<ԳtGtEFF3GS=9?]BSER֪JJ+nAz!b" ~0H*7Δ-<`"t WNDx5R 'F!`H"*X`%xa9ttaPPMQb9VbOURRk(,5Q35'8%AUb@ l`\ flUPAUEub#Q[CSQ huBPY"ZbOT[!PÕTɕ̵S#U]uTY2Q˵QUURSe5_Y)]UQSu_CU 6SfV@׺z  Q) B3<vLV,43QAO) !O(B !fkhgR~6h+hhiqv6gVj`hVi֖Vlla!lQ6jm)a*! @ @ ` ZaLmw} ngSq+%r(r/5g7R>r6t)jIgAg!u}hAj-Viei{n6lwallii7mmjlnjy7if@bDԂcc=LA0+htyd'lntwlGzum@wwbgwfgywgr!\, րl(!t&s,v~vWsxY8avwjli'GD3{٢X10z7gַ3Д~}OڥdcFdjR8d8Ux`ZW:%eelM掭TE`8[]emeL` `  \aaE`"_eZ_e_A^PQBYR"ƌOY'8dxcθbdx,]fznfTzA@Xq.{ʴ3B`10{N"Q=?PY?@5Aa5rkCAy:Y7y9uotK6Yڗ^1%4)_C7dA^ tH! "ڠ'A3Zwz5yCڝG:GzM%♩Oڨ}Zy9>ak%zZ ڣG$Jyř3.fCB3d@-)ˢ((:'_ó>!'4.[;'*{s5?WZVc.+?ZZHf lɳ٢y^#;Kګ?Z5D\[N{oAI;%{ۛ)U9k۱[A*뚭`MԗAdy3.O*攫RQa;S@!ex~PoRA6m)g|ۘR e_٘gVv5ȇ\^Riek!bJ` @o RʯCEKOF\|\eR5=|ͅcRnwaEo<E{|e|cf+`zUS]W}yUzAN_o[B3N<6;Nm=B'u$k=+l uvfkٻۗۮٵ~OX۲nŽ߸]-~ Y`. l!4=ګ]!=ݝ&ݒ½}⽝˝ۥ=/\rIG}v{^臞}>0|3"DGSWRfgmƫO|~ٶQ\ q\yg?Qƻ^yn+ET۾iՖ6H~߾tkaiRa N @O `*J gxC?_e?V~1쿾 ~[AD~3dM{cU#B5B$j$t zB!?@&RB)̿b$h?) bS7Ve"±/^򵫟?^c>^nO@[𡯈+EQ<\&E y`Do2YPXƂy}8Ō;~l ˜Xa-_-~~.ڗZe4өWk:ڷs۷k߲MnӨKyt譧#W}wvE^hx:fޙf}h' 'k)[<`A-@ 0g7"cC8`e?O>glȾPl>k2\1O+om+#(25,..{lASѬ)=2&3?FJSb DB C|CD/5c5jXO}wN1]s̃g5m8wϜЅ7I4LzMVcY? SMDC@BZ~BIRU1r ?ג|{||5{ZR.`@ s<t=_ߝz[j>oz5?g8h!Ɛgkc` TЃ (h"{@ρ <$"/s^gXo%Ht=1B?Nq~CR~vdS0$`x PF|FHj>1[@o'ѥ}Z|M a~H{9H|DNGGr C&rN~r$ =┏W9Q㕈,P H2%qY$b`I'`||$?X}dLHjR(mKa#S4cMw!tH3*KZTtjPiZңSiUizU]d5[J԰u)G"|aRJP9[zp-uC@0cP$zuj)TͺR´7+dش:ֲR,PJTQWAT]@tmmc*Z3?0&%P8ndXKHmu&JpċȈTg}.[c]WS[GQ72{-*bn $jWԴd_ḓE1 0\ SࠆXmjC<L`G0XgMm{['Nn[媘Jj ^/׷wۤ MyKV1Ѐa>c˘?ZԥK xi*JFf j|gTcg63+v]xzs<5Bxv>3:Ѓ3g95͡3RBU@BiCa?p)uӞLsclgDszͽv4:Ȏ,h>Q2b,0<ekU x c)P^?nG(ՂŔĻ&}Z߽p!o/NG "N qArx8IN{g+xC P\ ׇ>b4s zP#@zp!\`0O8&.ozۛwם;y۾=s'~|yNr^t!Ƕ 'F -Gt<F)nɔX eTMY)Qְ0&`+0+FFc$G+   qa hΐ6oН 1 2ٞyy Y <(WZ*ʞh ڡGɝ$JJ,.1I `F p ~O [ MS*MLNGc0 ` t  h ɝ! Zy٦8Jy Z/BQYF P00pR"   ` :2*"੠*j jJj "zŪʬଵZJ!Jګ"zZʬꮤjЭъP|@F@KB!/`4ఏi' 2 ӺJ (к$@eQZ0:< "K˴MO Q+SKUkWYX; ] c{ H 0 pj^д s+<[L9IF B QrPCP r vd&d,RZb!$JJ빠0R ̲p*$MRbD[ %G%@ HBK{=b%,2+ABt[ ۽IP'׻,+۾GR @pP  cp`` G0& ٻ,@0:hXs0A iM0dP&5t + Ȁ|[F;k:0xC11 cWq@1OŨAŤ1#SUe|[]4W o,oLon*R@N]S5]RV<^*%A^SVYC8RR=3\n]WaN]^F>kNnU}~~\qņNG^yN M16|SS@ t厎搞@\ُv}~#nmN۶۹"nݿn^ܮM`ۭ޴-^Оܮݰ^ԝN -M p ` ^ཎmﵮ^:ηpy[ (!#CI,. #eg ,O$?1D7m_~>}^x̕Wxʹ/|yKe<ݛ=>ׅ>c?;P?1nA,?C|0 B O8|kY,qAŋ0jCr#H#_Mڎd24اj1v'OR@^>AH]Zn9)kI,!R142oaS]ђˌrʬŁ43jԒ7 5CuF$N/3=P+AST^HTFLO'tT~JՔVT5._5VG୩L&Y`ˆaE8]L&Wk V靭9 , @_5|/w7Og_j1|j n:9]'=K?8kg}]Hׇu?ww gw֓o^v_x~n>QϾ{_}χ~}=~E_ſ_B?/u^&}su?y)=oy`9)s\  _jRP%)@FE8r-RIÍ/d2bTc. Caa>JUb[Ed-_J b,DOVrQn DjA8␊tK[dH M١FC :cH!j<" 1cq1%i%:ePa}Е9iR"O>tzqG.wK,1OLe83)P󘺴.YaB2)hf2NlV<^?-c׼7'us>z3n|G_)>sPϧtk@֗s=R{~\8yUg;DžǂT3 jղ ,5I"ao g ȣmO<揞<~bᇦ+,|%)f/=6h[=Xrߵ_$a- N|W~´w=]LO~?z/~>1Oﴉ2C')o9ahɓdltɖ<G1K9v) HQYDєr`I]U av`abYYI|fQAc5QQ \n\@qI+@t D@* $Sy %߰2 Aqaxph9;<C Q54 !4ClDIqJCIDH@tDCREF+y!C1 { EϰȌR 0Ȩ Ψ H 8Fx ( k 3(7,z pZ r4 AƲu$ GEpal_<~f Fd; e\_t Y]0x[k⸅ӑ|c¸td$}PɏddII@YHIɓɚIɗ,J4ɚddIɣ,IDIɡtɘʟTJJJ\TI,ʐɨʔIJXKʳ˴KLʺ|˖˝K ʪ˧˽̮ ZD|X![ȇ<_p8^P9g}`Q͚j*τQt<0͜*_p͗ΜM\Ѭ͊хt㬞qt|ִ8NN}N9O$͜/ dOLՌOMД[OTMldeM|ߔMENMPjpLZ 0 H ȩy?O[ȇO8xO8&^xrXrx_)Qq=]! ]"R,QpZQ'R1R Rr"M#͇[xRSi %",MSee9)RrP:=EVH]qp @\ڇ<e嗖 Ud~MOkMӀ$P^h`67VHֶHZ&.N~3TUph狆۰iϭNq]Udc0]l>Q6^n7$h $k_}NiUxN8gn ˅hMm^ fa)^WņZkӸfa`6  FNokuoO 0Pve V]Np)pz&hkpX p!^l$ZiO 6qx Z f]lrVd) _cŮ`dcd r@Or%Eo c~ >=ަcup UM$P\&hrk?aUۮ j P-^jk` m 0pmP P.GO%g\_hxmW[Ї5 ^hxX jP\P$ j7\xV}_րխ]MU^.PWm^XnV^f_oV{r2p]oG=Vwz>$mzi{>}gFg7 @'7GWgw?|" 'iGWgw} ;PKzցPK.DOEBPS/img/cohcw_dt_006.gif+xԇGIF89a'O򕱕虙歹kkkȕraaa߄x𠠠Ѻ{{{ܥ---pv÷͵ٴ101][]޾耀>>>ҼLLLVYbϸppp䑍ݺԿ􋋋@@@ӅitjPPPrxrenvq{ZdZϪrlr292c\clcl;:;8<8krywww26;848Y_gbibGKGUXUJQXĺ58<^V^hhh*'*SMSqvzӘ{q{%),ˉ˼8;=PUZvqv۷HEHKUKAFKFILfaf~>G>D?D`ej \8ǟHt[ItBS]˶۵Q^棋BgSЛ"`:W5kRtbKG&S;lbg\B&700 ;X9~=e5gtQȓ+;H*IIp~h UfO|ցbנ +B@A+pfqy %X!%։%s@CUE_j)-]Q~_ewq| `"e=QT@PW%NR%z US3^A .dVL0^cfMd\wqjE׊e\\qWT8&h'-މ7q5 N87h%bBU!hpzfYivzܙTSb妊b~g^3|EgRT2YyY@'9) 4EgP𩖣I+P`ʅn*>✄1z}7aibΰ Wi^2X. uHz̦xXo{)fwзT]@MbMwDYz+Q[( [/k5҄D,oQQwQzgІZܳKPzl!#W fy vB^kA^sA[Pn7Agcmx|߀.n'7G.Wngw砇.`騧ꬷ._B@//'7/ G/ԇPw}·/>ԗoS?K~>$_w?AN(:y$ApC}nXu-x?mK W8ZE!} p<N3pl<@0La 4R0s fĤ-y㵯lg *@.6 p{׸DHnr3dV Ѕr ,Ȯˀ݁xq,&ֲ-nw[^ nq6׹ѥu]xhog _І (pcWyED^>Ϡ|kwrpKUuYP!;X0 a S.7ax-{Qnq{\Z.uL`2? /LmH#|8y!~H)w+}e5VA8Bfsߌd /Ngиo ]CϘ 3c?ZC~\9g y'eOǶʡnKS;WѪ3#ֱn,g[Ϻ6+MLe` o-%FjE@D;jWC ?PxqɜiI׉8橞ɞyI:3z m!ɜ9zq`Y9$ڞ)+ʢ-/ jנ٣l@*jʡXLڤ"QjTjVzY\`7; f? Bʦor vJxi|ڢ~0dڠh9m !JQ*'}ک]z0 P NJ{xHﺱi:ڨ8 ƀ xPiR@ ۞r70 G  1 5;<머=a:Djp 6p گ* Pb ǧ`̐ P^:{ĚZp`Xxыӻ֫p A;Cp0`++ ʝ` ^֚r\ mlȀ 9lpJ P4ޫ9^0;农"X൨0$ eC C@ `  ͰW 6 ^C`~\5~8\5}qw. K,  ګ ۠ 60贞:剮׍FEQ O ;ܽƀ ̐G iNNZջ8p ePF ʎ͠\  -*`ɹ,^؎bk z ~ æny[ "*.OэNn(Ȁc .+.[ ` yk>P P ̰Wm^#ȯݬ,۳-(?o \|1,?1M>MɌΜ+_!*ү&-=3 B*M/[/گͿ,9ұ?ӳ x TF,\ǡCC#ޠHŋt4n cG!EqCJ)9`K1eΤYM9uY3EA pQI+[jSsVNիnիW,aŎX֬Air2%ʕ=Υ[]~ Zff&\aąW ^lfcǏ%G^Ue̙5-ܼE&]^D]`ڋ9nPv `t[o # 2",n/`\TS!SLB!/y_sϧ_4PV~ [6pa7|n;N97s: ::.O#cϽDS Tk?p6$7= dA p:n6CO{DJX JMk$ u1ARH '4 5@SE^rmܭLy49tnۤB$ܐ:$ķSP.P1o4@TA$B 1P%iI62T`Rsq0QV[teY)T91WNU[pqcFC 4g}5i+Z[-]Up7KZ$KsiCwUD]GWjWmܷ3wLS=4avM]xcp#N%+nA`XA YYUslYWR8a_hg?5{F zh]a7iisu=uƺܭm̄U N7%b%_3-wUG<蔣[$e ?cKO4:Q >DbQxF%hQ`H722ɤ >\GtZS0]lK4$Cѝ1_@E$ Ėy 4zB}n. e z l ])ʰ; 2P e0GІ2!ltPڠ3A)xNyY?qY֪a`/HRP!wP) !hNH.>L|FBPbjRG=(=pOM*@!%9PcH@DZ e" "nX0]QT<=ψ3)V烔3Lp:xC@JP~$8y̛6XPn HE-GUB| rlXa.!e$ABol S~|29-3kz9.˕oF/fh,-=Lnx-iMwkWcgEkLot*\TWVd)YQ?hM+Ƶymrp=,ʎ٬.im򅆬k_2rpti\uHOoWۅ?J[Ÿ%tWM떦ylWu?*ɟi?u@P/'=Rzyhvl~k!^V%96G>c/L ^rM.K|mQ:Evok=w ] W[^׹vbw])=~=Wm\^˿?|]oc_<ڷ=5Fe-s~PBo;pef^Hsa?Ap!+8L{!6=H)h%"sT𯕡g9[ȫ$ \@>_2H@%>$h؝,[(K$9gpYypb A2A.hhO%K%I b"ݱ]H2pXZX8]!؅t+2?0A12ddhʅn(k:TVb"|,'DbX0%CYx8s-gڅ\bP#Nd%nb&R((gghX"qEEH>DN(TT:laLE1NHRT瘀Oz-*Z!kG~Fl2I,O( Iр%I؅IȂEr2I8bt, Y~,Tٸ @:Kp=(J9Vj$K0[P^JIhchѭzD4LΜ13MA5*VM;9Ō.$04θ)Iʌ?s㴐 #1JLNc#$iME3ᤱ胛`XZXXXX]T YY`; hX@f8} '77'X'pYڙEUŸeG+X( Z((++p-u(ZZӥٔuBpX7p탬Z(-;xصUژuڢeZmU}͵-[pBٖH\XGÅؾ=[5M[[H7`B'um]pUӥ\R%݅;H][(^}ZZh5H;(^ҭ>PX}ݗ0[uZ5[rsZp>H5W0;X] Ѽ_Kߑ_`.`>`N`^`n`~`` ` ` f ` ```a&` a>aNa^a.a~aaf Zaaaa b!b".0b%^b&nb'~b\=OHb+A,bb.>/+; ھՉí 04^=ٛXcmcdJc5hYx'`[pە5P[hXUZh_;P<>+䇅՝[x8f (pZ e杁5ZO~IVJ椫`^Z].][u\X\>K㖐37h_V8^]\nޫMfJMbf\hu]Efa_\nR]1pgY[`[m\Z70Z(hԭR[HBX>v sۜBP؈Z$&Gep-XJgcH衣eiHQr#_ i~\.j Nj^jnj~jjjjjjj5k.kFNk^kn>kkkWz1kylF 8lNl^lNlxlȎlɞlʖlllkvkmk>kՖzlvŽmnlڮmŮllk6kFm6NK{m3َmmݾmn&n~Vfnzn nnmon>o o>>o^owoo'^Ƕm&&p6Npgwp߆p %X Vo]qb %/lool.q'nO`]2؂-( h-Xj5r$Wrɔހ#[Xnrq&r!rԆV!` A6W08sr+l(2r0s&s6sFV58T%Z[M-MWP -`dT)XN8ױROuX؂ Pu UW-8B:t`[ -rPvPrPtfFw?sI/nJG`)OA?:}~&^AX81MywzHOzoOm`=x`؀Km}R8sA(-`<(0Ɯ0@"ExB#B$8  ŕ rL-KXɲ(-j(R2m)ԨLPjj5p+bǒ-kv쁴jײmmqYd-',1% Kl,0%6L,d%ko;xLP]I@Z<@軴JйAHy +0 ;0K ]T|;x!<2%|2)O2-r˜1kULʚlU1x)8j<[n D9tU5;mΘ> uLM;tҬ._NolNEMakе_ovG+ZgvT7Ssj8n #r7@ >8$~8zRkm7y7іjoyᨷ?{WYn{_Uy\Ky廤x.^c+QYXRp Rz{lN0F`qnd~ujA,?ۂ;t hQx2A`@)L@o}[lq(SdbՒ(+4QR'D%jo e`I_%\CQL ^Q"(L|| [c vpLkBP`  "& 2g0C?)N806iIXjL  JjDx20J +kc(p(d 4\-(a ޣ-D2ό[TMr }LR)`ڸ:nS!,fF9!,ˑMJ$qCqQphHދ 1@Pe؀ QP@չh`/st5)DHN>`6dT|` !D1 fS@\'s:%[g^N(I~ 6HTi(N8R-@a  0P ɡb(&i,@ PІ>ܚgm_5cX g=MPXNznt1ɱdjD\$'TSzX%)X~ʬ}/t܁ b CiF0F_y4Be Dt$MB0-hX<.W(Y'E`5 UL[(CNKޡp "Y9>L-@e_7D2^ŨXN-`n4I7ؚ&y ,dLSظ{>C@I!OJJo 7MJ"LZj- R$]x{](9tIZ XyT3ٹԭb}]&oy… ?=usR!\ 9}m"j7Բ [bzla֤.u@mݠ2zk%jU۷ek;[.۴Mls Yf}7.߆<89N@#.S8 aOkRЅe'S pTF4F]g#2a|--?Rr\ v@So;xϊJr#¼iez]M9IN{=&/?~U3 Qrc ӯ?ϟѧ?x , &, :=pV\ 2jtz ;`9IGݗY_X$@;TAD `pr`2_!2.&D6a>!b^V!| b!;v8 ^O@n`` aԡ~~'pa!  " !b,$b"# Q]X04j6:`rNaZfaavb!,!!-- "!"/"b,0b?S!1a*~!+b,"".b" c0#^$^ %bb&nt':3b)"*z*+a,b-bc6j rc/z"2"161&23b!4b5- $Azc?# Y99 a:n";'(>?^#@$G/"&$S,Rp@C^߈HdBE#F¢5d jcGz#H~Q$`%^"JJcK#<ʣ)bEbMM#?V@"P"PQ.EQ QD@d3ƣ~`[JT$?jF"PjeH2QĀ$R"Xb*_&jbYvYZ`ZZA=eMdȥ,Ub]d^Ae`&Ή3!brbF=cF-$7Vef&Xnt |:'"ii%*[e\N"l6f7 %nQfQ&pNfqR#UZyJd*bsst^gz;4;|C  cp>%=)B!@\qxC]l^zc{{f-opgT~aybe^*";TQfh(uZ;hBB@(+(AfwB&( :(@ g Cax-!Ɋ;xzb`&Ca}"UBfr imBgg">4(KrAr=7C;@*ʀ @ @0t (}j9pi@),d,>!))C,z;!' x5zB)ACx'h:B%M6(^%r倲5X<dhN;8`0C %=(9+hȀ 4h9),&,T)jB+Ø!?B&Ģ +,BxЂ8L0嬵%'_>{||'$[x:kg*'AsEkkX6)a7&x )  36j9t` |),&B >i,|A(@l+'ii` p"-*ozN)jjV" 2I(:RF)nVĭ,hBm0Ѐ&(&Ȳ,l ;&B)0nx;B⃱7Ad.CٯО.Q$P,-gR$NnZf*WztRgue *@  o!H*f*xl.>j #0,)H8NN,t.v.;/P00OR;q!Fƫ ʼ..a;hBm_`j \Fzlߢl#&㖀'Hnk!)80CC$q\r-&Sk)ԎV%@)'ojp*+ o'ܖ‚ ( W!-B.B|a);!#+|i+؀.b#;Ln6loe@)+nGm+wrqqz-g-/jf 3ұLc B <ï~AIg#0yV4LC&g8x&'(ꆫR*?-#+zB9tCtJtJf'Zr db2f~bdR6pd64g?S[a:AB-RR#@>UX+U`.Vg;nʣX[fA+N$S2OOp\5Qtj5R5^"`B[-7CukU6hkfru@L6jq55ZQfO)O}?Oh]d]vkkC_?`.v궅iQJucwS&A^@rgvov9w\7mH+{Dz@j7Np߈CkDD#Y6[uxBi2]wZǷ|"}r7ss7tc(Zw^j.O#l1sbEK8o8XjkA˸ >vO[ SQw7jS6/68WUG*nE#vbw5pgqs/.xQ)wΜgIS"o 9+wSkkG9m0g:_0t: è:>8ǺԺ:纮Az{ $󳸢͔ [_ֵg'zO2wѠ`79{{8#;A${$! A ,| @{ρ7s| |<<kk|ggHK<w@́;p#D@yN;#:l*z`{;Xx ;ϻ;{$<7S//55L{w׀ȗɫ|ü<|C>  $Hȁ/l4ϋ}yWW}DvFh9XyFtn}ק{#|ۿ}}b}}{<ȇʳ<߼CO>_~k{6P$;@v![3=l6p 4I S8A (&xgTeJ0%Xq)Fhް'x(ڵ@РtJ49rx2k5G#Fd)ōkHpK.2: $ p"  1. X`5*V8s憙1OѢ6}uNq:Lٳe}6'Lx[&6.! !FXbƍ?Ydʕ-_Ɣ͜;{ :hKWCJ9Zp XȒ͂V-ܒ.*䢫.^k 03 63Xm4JKZ5hÍF8 GƐSn9C0ڈ#@)L%,TƒH\2& ~Љ|A])gjsPfeG6Eu\qj ]0d2w5D44M{MENM6B߀SCrX+$&IDAx@e}cb'p(U\*mR92lΥ;sϹx)C$Bp]mo\.LkOT4| J7ณKnň $=2[ <e|medIp6e/b:lP!kXXv |@30t"`1,Q9Ř( e( 8ԡCr-n!;0v˝bMQV0 E`id@  P+vYAEtl!u!] Ѕn!wr RsʀO| X)"2[56A \D^aq>5Q Y?ægei.@T ؅% $ p:ܢO߲!seZޅxxȓ-qq+H-3 j+ft"x,fQ| nT0yy#&E)",)\ Dِ .`?:HP$Q \( PD,?9(@EYB,t X1 @ AS1sf Rjf6-%wq4` JVYeWYz :H!G"ސ;c7{㓢Tx^JK2*a}ig[M詵: - /ziAlG8̫K̼S^,>czNNযﮏ(ICJpdK A<(' PR.Cgg2Nug7 1xx0kn۾S$':S. 1`DP WxZ|tL0u 7 p) D O Y a| m /ΏPd0aF>ztJ'-|g7 .k /2yƌ;Q_0ad8N #* $PWJCOXoQ'tqS01ZE@/ .T Q .qy"P#e_(0qǰGAGqKIjn#t!@T1/j"* ICE4@ ?z,$O% _K0Wfk&W0K{Ry1(Ʀvb))"} k*-"1#M$͜-_c-K-%F6k6o7sS7w7mAQ\889S99 8 2w(Q+ 5 ٫4̍EʆeX5P H:52bH>>?3?I?@S@I@I# TAAA&@%4B'B+_S%;F; 04GSœ=r= Sn>%#T@GG{GC4DH;!;t35֦6 Fe:c-#2C)2H-DR4NVR ͒EE%FܲFW26qTGG}HLTLtWEI 4mN $335ɔ M E4]5N`N߳Na36M#TOTD;TPIQgDQT@QKR;G.ENcS)<1@UNGuJ5>OOUUyU7R4e+#Iku$PsUFv6NUUXQXu@ VwUT S1.ITuU^3/IqVuSO _]^ kuXa5\)Vɵ\5 t`uZG`mNV[[_uDU\W6 V5]96Q7Tf|5 ^GdGOgcUeY_f}`l > bsmVmVmmnVnnn@ovoSE!Wpp pp@qqq .TivjjHk)VkkcQ9kvNovP!Wr&wDqdpqX Sx=P?e )QO!0 ErrOi13Bj3baubUVhG7St5uUuuLI\.aQ/R(|0%*0r?gu/0|!@z'ir{s H{j4hǕ|Vdl7ڗ< S~_IX(b=WEZ/  XfǁXCezzz3w!gA2P#f V}Q1}Vd/i&WLxX)|40w0ӈ7go8Px1xRa?sA7tŗxOWu_#hi2؆Y s8Yc@xX\DPYd{%HD'U+ْu|cuXuW[WwwWPXZJV;ou9P|e$tY.s|Eef5[xEyJ9/屆mQ7y+u }q(Es9hʪi#ct1טZ9hi f@R!,Ȣ @~z v@Rl\b\gj|{n;Uy\%֋:P; { ɫ#m@\6A&(ʀhaZjQͱ \A,`n{RяN\`A?{21sUw}˖ҍ`38W=&qQb¢|6 q0I& Qe{,HMx! tN yS\hʪ@҃]a@߱韞;?ԩ>VA'[ 4j4^X<(^4|xm[ϯ]~5ax O` -N)_e4@"~3nt?~IN€@8x0"p0ЃF"$FY'#GJ' UxV2bd l$… 8іy(aᝉy{ﹹ 2<)Tv~k0zJUn"8F8a.$Dhii**z88jڏZۭ銱N:G4ru`jH=yhN^ ?LR 8;(b!^/Sk FG,fq~|Xjٱ^)\&Ҫ)5mgg&VJ[<1c dU($+yLnldL #-TN貗 0yd. *zL߽ 8yt˜fbNY3vH*) :ī*BywxE kLkZӃPzXt\WާMXin,iI[zו޴ݐW {г.OMTUI6B hۚ͐m'l_Mh;z.jXU-;{ӍkQ[ a{߆.lt.iXyϛ޼ߪNh|1|$/Orm>|2o|}t]Xխ<~/ ~o4F- ߦ?mC\u|n|G;;k;\o)/*|෷=a2ߛOܶ>'_Ϟo5p`/6?o=]y?SHh8gify0p }(}H}g}fjȁkw k(|X{j+Ȃv "{$X&X|(h-;/"Gg7ƃI?82A8CyE8zGKX']_a(cHehgikȆmoq]4`wy{ȇ}(HhX(Hhȉ艟(HhȊ芯(Hhȋ苿(HhLjɨȌ(Hh׈٨ȍ(Hh爎騎Ȏ(Hhȏ)Ii ɐN)IiY] !lFkQ-/I1)2)5i7iQ` I%{v+)/0MI7 & =8ApDi)hHiK NIPSW 4fiV`)-Iei6)&͸0i&ɕiaYwy&Q!0Wfsuif qiq)IɘO7CiSeɚ[.0K9 ljʹNpͱ9 QOR0] ` 09ɝh <00BpPZ7 0K `S`[0` '@y8vɛXf K@u0uO2z4`[p! .9JYƙ*آ.jщe <PB[ WADJ[KNo0XvKpS'PI` HjعLZlڦ𜶠ZyBPu'c0bJ0SyɨJjcv'@:[0`<3J]**YyZz*q j&_j Z'A犮뺭YhwzY庤pʮ7JkY7_ +٪jH9LYٯ۰*K,۲Kz7k;= KuyH!+ɴ9R6.9T{V +[;%]Qb[d?A+`J@Q&{{жy+V˸:P_[ *Ra;L( 0h` *9Iy빞1Qlu˺[;E:<u0!0 Kcjuv;;KB˛ۺmP;50< <0c0ePY ,uzP+ +[$˿D@SV:!1<[ዬ9ePA J){E%_кžu`KP*cР;eO"*Ŀ+ElėDɫ$̼˺P 5q[`>jл @[F %B`cj|m̳{\{ǁM̼&yz:j` 60<::9h<ɔDLKtaͫ 1Eau[` ^:0::м͑,l˓`"[* zlʢKl<Α3:ɪV8L{Џ pp|еt<9tjL ѿ̛FS <]}}5;$@a0$]&-HB=^hs:`9 Y V [ti< kˆ8ּ<5U &%@7p]Oe@"~c0ڠ]WM=rmi ,: p e 8-P ܦה<բ=ؤiU\@pcpyܻXl*̓ {!hme 3/ MniZJʰݣJ[@4<0i!,ޤܡKbEָܡTZcP^zwʛ?:Ί=y0<7v١ %e!<^ǰݧ1cL .Bj]ޫE ˛?~N0 Dc⌍Z(.Bu`{u: ,3/u}n= mNo/-: @Pō}<r}c0lϕz׺'^j3願DŞbB NY{vm C `׎ٮޠXߖyn Xi6|Nj-}mn^oW}f vë+ p 7}U8k ^O}FiBh=  SHn,mD1b+"?$_1T[@kWTxHJ.:oQIOAoWzY8+o7?D-fj/}[f Q(vpL~/L=Ey/v/Ov0.N' x2&5c i.@ |j :+00-L@p ~@$. y]0֚Q3O-ׂ3AƏ6Fy0K`@)yZ@ DPB >QD SDY1C# "1"ƏC7~(F(PXS 5m>E ݄<`,Qp"[]ӥLu$(#U^ŚU+~VX /Ȩǐ#K˗0ͼys.! =p!$A[%RV08VʔŜYfϢG1" φ'2=N\qɝǟ3ي$PRiλlb%\=l)B!\8=L>>ND10B -#-Tn:2yg=c\X , %+U2K,[A@gTHSлdSJ*߄s+` p̸h<3M$8sN;e,dك26pB6`) jw2ܣ-Xb DoF^ڧxO.=c˙)+e̼0N !&}5u88RA$ܖwQ@.CJ);mjm -^!BPM]~(b鎬 7\c#F#axayr& ` )&3ZЦuρd:b^ֲ]">c܈x lQ *du`.h* qh_gP@J!^)^v.x.` !ux>C  @)` Lq-ЍaG*` Ύv#D%*1YLֲYѐc+.HF6ґ9G@VRY,T!Ii|}b(E9Q yd*-4a2/d, COieZRKVRS˂,eIZ.e2CKf^„DYcVSlf63hr4f5vdjӜ/pS$*Ltsdg;N\d=@|Sg?)O&K^A z%T ehCPN--:N>Rt,)9Ҕ"m, )B_ڢ.4nӜVt(csh@dPʂzЃ4;Ύg& K&VB\1Wa#Ȃ H d@ABr?VPLsiOkllg[[*V$ ?Ӈ1 D)@Wp8KR,qe-2]Ҷ-v Z֒أA؛ u:^!c0.?If/lK]^-'כ  X#l"h{Ü~_;bZ/k!ex \,e-('e޼/TYX-r$s5c EXA)@_VgY_!wmufO~N(Cb F̹1G(xUsm Y ru[=Dc 2AZ.$>%- >y:p .[fغ̵-r[׳z#jQ^+mj:{U5\jy D8CmloGܬ,|f4SWݪ5kQg w^w=zoWLV5tlnKp2f6=Txq%}m_Z!ey˅pœ!P;A6jtR]y1`> ݩknt2wVA02Uf)q']=b׳p/=}-v 7- ȻbmxybT 'K6`pxB%{3Wmcg"n/ IA< >w^voex oq. ,;^|BPcp/P]}sоǚ|+(A?S?s{?? dk{C04 ;ԃ8z; \ ,>9S |㋁GL;4s&@A۾D@/`@z dxt0Bt s>2Ӆ4 ]XB&zB($\A7,8G9>8?G`)C?#CRpItL'3:9 >=D-C &`VtWL(XQ[\R4ETDE 8[ӆ[3cDFd<]dftF^/` gkF[Fi̒BxjlqtFFnTm8Ap$wGrA@gY؃vtxGqG0z$7}~DHf4g1x=`GLńQ(І8G$ɒ4ɓDɔTɕdɖ4x0%XjHɝɞɟʠʡI>;PK%0x+xPK.DOEBPS/img/cweb-mgment-s.pngPNG  IHDR e"sBIT|d pHYs  !tEXtSoftwareMacromedia Fireworks 3.0i1(prVWxZkv4Vlč("߳opv@zZ$qg8,o=?foF,o#ozUa 8x l&U6n77amo#5ׁUT?N]+/,^mKlM@$Tރ}*)"hza|C1Vy'73kzjշ]9bl3B=/Q#-o ƻqu`杝rZakLƌ`Ԉe)Cq|ީ/$4~ؙzv;UVפN)^;Bsd*2t8k?ZY1*=rɟ [ϒ_NfK6MR`:,y? Zʊ~TUkaQ:#wg8Hɏ6O< փG[R Ɇiw \a|0>I_r wsRДِOoFCh~DiX w&LEI ?4~tGÒٲ<sH)s,,V OqiL1L O'_?Af-VCrUM[v%~~O}~l)an0 a ;L럛MfXx 'M쎱5㩅H2zPk%f?XRw%?c<6*_gQ},j;|?f xo7_zKfg5DgiR쭓G:?'y6HQ^~>̀Y>۳ٺy*?%ZƗ?$Usd߀pYWy7@BK_a~N_,CabvLrLG'~wc_ :M)Dڟ?&Dk쳷W_(N' s?Ska=3w>E t+%uc"i7E;`h;3 cr>ޢ羿ϵEd;x7{&{lDD=&R/`HJ~kw``ozO Q ?[;QR~x!"To4n8/> H7bHnJ*UTRJ*UTRJ*U6_+x"HmkBF)3mkTSx]WȒΝ =9{#ƀlH2/9l%!LVUHj VK]Uuul_/X }m^uESחqp k펂E|-]jr@?`phriSjCmމv;؇u(9CJO?ӥ9£',ysѓIӓe{KT6Ӧ=헴97ұ7m:z9`'GÓE]Ǭp>6rYHHTҶ{hP27(svk((@2*3arfrcrObrE֋=ar]?zphx͜ 3lm!#&G=]iLHI/o2,30 1O ٸ-9͢~R/!j/&fw}ETk7]2CGg!0AVݢ421+D4f pߒӳY'ʈO0*&0q"N֙~M`;QIDj!:X8wiUM)Y ՁE$K (*Qֆg̊jLZ󖥥aE{,OA9C59xBgq O__m>bpo  .]+ 90N_nBAA9UJ1sLn.y;aLFjwb| |Ces_(bqIIzƼZeD(e]pF>E"ci 9F%"ER!Vܗ+4H 9*#z(0D=rgŖٍ|٘'QM l'+۪n Q<'a-:Q鋝cCBkL4l$9{xsHd3'3 !rb0&XTN`LB?pqXՌgɂDVM- w9S%hia=s|A%ͫD3!5^6sHGhuf?hEҨ"k%2vD7F1i s܎'<r2EN#!ØcJB^!A6wB /olPQL4B*Q%=Vَ3emFя卨;"f<;\/;xI( \蝔Qj ǵ$22t]Cx+ʲ%+mTk dSCC|Ɍ+U%KI>hAkRc`|{C|y^ g)2Dc ѩ)84'z [aђj YwM 8|@)I5}֥a ]W4X "AQvQV &^T <#s%wZnG)AӸ?t3Ax(|5hw']#I}p08ʽp#\2kRԳ@>(k2@-HjQRXR H0+P0Qx(|5hwudHu髢eGe` b-ڐ5n~O)Wkێ1cGVȎ]ewQ*5YQ*=f%6S346.>Ulsݑsi-!۠Ous2Ik,xaKYX2hQn7Y&xaf3,5[Fvҩu62j*AxAas;¦,u}snr̃ԟؖvir}4wӣr׳nqs1m5iZs;u's_7zvƆڢsD"AY \uPhM]elVli(pUƭVH)(bsƚ#36!M])$@#zWZ!DEjY-*Ml?i4uH3'wUCCE*o9=|=cfpŞ"a.ԾZSg͹9-#zwveJ3󛐝dTFzƮVlX]=wÜG3Lq^\Irw8^tvvKrB+p4¯adg+tX}z[cO:-]3_`߇3fiM8׀>]ـ2ԵPFm}FCO7M];lQ'Y*^KihRg :G+pil)Ҧ'qHkŷQKYÊؠw.av}_?/*Va-"攢yN/<\OW`sb:b:H/?&|5J5G>(XɐD>N9$?R[9R3"f v{t@K'dsywy Rtˆ*lʋTSkɚWH%DDCx)!{U9Y\8]_e[ͬ/ηvͷ5>8yԑmʹ_iik}pL+Cٶf/ͶnͶ5>8+g[Ȯ fjߚ85WDٶf/ζ*ol[¶ Z W5WL{6Դ0[ V]`z5XͶmjo֫j}x|VL{^ V3cڇfۻjm֫j[[ V]`z5XͶ*v HQcl~U_y'U-͆ ׼HU&JԵ7z-"Ő)lΣצ\#CUЧ=1=ă5Wɰܞ5KF=ֶMmQF?q}ñ%k_-EcJuyJU?;WǨXUnlAl eԸfۚmkl$Fmɷ8ߊ?ϔFͱva)u+QeR<:6foiF{ɜExUȨyͩ7T]TUjFn3j0">ER~ew˳&ͽ&&DWȩ&|tɳxAiDo75@]VòL_TtuzSE7bwf<ZXvQ|Z=㙜MҖψqg- [ )<oEA?4Ғb“ڀL@1vy - w8z i^SxօEz"(\Sߙa?}?N{8߀~if H9mg؃ϪmCy@#핑SpolBϑ(|˽[8~MScx|3W$r}A9"f 3dI*.}Ҥ~*øƯXgB:E:^gTR;Q3hU} Ej X~J4- #wc9j9ETy5u U?Ak&k:;9W!<7_/^v/aextvw=7BN> sw-s$,ϵ>aOd-'YLy~YfϘJS3Ӗg qJaE/Tr*IۊJ91&j1F>6<[|&opǯ_O-=>J5(թG(֣9JM8;/UӶx'C1^в}*h$q(>9-yۉ;twX7'6Spy-%;rގ^|Iǽk36xA|=S<q`RlT7"oވpfޤcƊ9o t,S d%[r}LUQ$-yVmiW36:X3_|\59W( \kn{1@׋W'x+H=hxGߴEҝ׋[3p3mwpbm8懀fDfwÕ0ދI/1s1"xa8bYo477h}ck˃}:\dG@ 5ujґGmt85>ۣ!m@-ov7/{?jkk0; /ߡsoO=uz2y֙a fkb6FxFK8K1ט%;d,/3uL4t[vfxkȻL`'HXnxLfa-Y;iAe$BzHf L#v'E{c R#@O87behV ~59V#[wWyE5q mFpd6^-{7lZֲ ;={zfRجG}x`s=DkmkBSx] 0s5|MU65t#lUjW,&ZEcѮRIPY3K*nڒ7CZxأ#Ҳ0,<;@1X ɦ~ =@29G;P1JnDkF{YH YKߎsofx?N^n*mkBTx}+$+nʔiSL")HdJ,DbH$T3;;W֊z]@&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw⿭e!mkBTx]xUŶ{^ ^EAH" ޤBo !Bl"ؐ7x&L6=}w.Zfڅ<=p~n˿3GC4w.S^˸|=9w.S~z7-9ugg_pݭZhU='f:>Ӟ> ;gϻ[[Lye9˽p@6.!Uv?4\LwWȍܛF|+w^`&%"ȼQ֍rsngUƇLoY|W2 T^f2˹s#,گBa 嗀7FF8~DQhз` ̄csc]srZ{3Wz^f6㳨 cگ1ïٱ8+egpt-gte^ɻ']ɦ.rW:ɽ.1#&+6<.Fǻs]m%cF[n͛mPSSS3v(H=1\{y%VZ`ϻw޽{gϞ;ouQu}Em ˕+w|ӦMزe B+¡{<ͣm>(>݇aW3ӰsN>=e20T{ݧc{{զ6u믿.az%&%a΄ݱn1]b'3*'b&t1Ƅ0oD$n܈TqoGREKیkPwۻ5:kѓG"!!iT.f?q6nkԨ~ˆ!!AY>R*Vƨ ѯtY.\Ma͚5H4>** Ú6F' cT[/(Ta<[z5 BѠGMTi]~U_ |Q }=՗ӹ/qMoذ!6l؀,(իѽrUwZ_č pl,.Sލ_Z!'%mDnxߐ9|?˰[uLxSؘ)K~h׳5R |Ka~X4]VS2#hURD; ѧg?&ܗ(GS!~]6֭ExzF%q|E7̛ge!x tc1B'ezQfe*z>?~Qݤ8>ySƺ Y'm؈3Pƃxcr􋮇=bo%nZwj =o侰ƽOjܗ(.е^zCllm511F-D{gJ=K%K 5sX$N*EǸ7c_FsNHjW?nKJDk W"Ⲧ4!, 7 &6k6mLAg aadzSL71bk; 4+`_9 |~~og&gzԩSGۑ1CgJq Y6nԩk /؟,t̗^FcYqlTU\  Wzz\* &uO[䔺Xn9Deɿq}2Zo?v)Ƭ1C`V$4A.űte-CAN~nu/jk͸/+PJW͚5ۡaU&U[5B3z-ood)[ᆰӟ{_oH3\#:+{~/ZZ7G#2y>;NkU³_DY/p,< !{!T?D|tEN9^U.u(K of6/qOMޟq BCCCrb;4, w&! Aݚ7[>>@nX]&xy#tudkdHGNud|5F|6f ˒?*"#Xr;¿苤o|h|; Q'!ZcժU Zgm~P!s/fk矱;9 PQ@jժwr,W⬗0s&,'`~Z)lp5D.|,~]G燉__{a.lp6Ve$v`dHfۅ1{#~ =]·&*g(@Ȏ>_ɾ?f}26)muʕb ,_D{֥+\  a^ )SG L0ceBLFZ2n P:;gwvAZ5RwaB±,d!zoi1-p_Sð|[WV`Mt W>Cfm{Xdz~y,[ K.͂%K``1c8n7aZ:akĽͯ!H_Ĕx$$!&.V\3Nԑ¿SzcDZj5l:`PJd[hlV ;%T*bhQ>=?pѯmBX^hZ aV`8_j\Wm?m_~EMk T:}Ѯ];]+8raOm~%低 Qm& 8vnw֭+~Y_~][ڸqcxRo+u_b/ n޼k׮97n ###s;<83vU5ٯo?y%p-YIϞ=> ?3_0q_~+p~Z^Ձ 4p?yBs|2d<{\;w>\"؟ڵü3(zQۯ:0S/˒z .]ǎrRɝx~0Kc*WOz?| 밪v݇X{Wg{|uO_ɿW6@CWF}Q( E? 'NJK&ԩɓ^m_yDݻ˹n&ݳgOYuG}w}WΏ}Y.X{߾};:$Tx{gnݺaΝr>21oppF8^'aj/cmVpeX//"Gh֬Y1&J,)ҥ TN{}ѫW/tUVuUVxꩧЯ_?[^|EYy#Ypn:2yd+V ӧOܹss1~x>}fugL2zÆ C\WO><ZnAc2x*:ާf_/2\hB'?,uvg0ād0'ѣGe=Xx=ϘpbɘpǤ ^Cn66Q.:q7c!Ƃ%ǺA}6i>}dl.2F2sGβ0@*m, Kܦ-|㪭eLL~С2V$Q/M &L:1|I?2I1٦?>67!Ur2V[o#Fyqt̶6`[GYg,Y1^1yK1X}Qs'ʕ,NbY;! ,?A]a9Ozƕ=X2$B㹴+^$$$Ǵ93M2qypd R?ů8-Snk(c|X*>q*>CS1ƹxվk<ԜO>>s9:fϞ4 [XzGND?.Y Ց?r5W_雐(AbӦؾ} RSw7Ⱔ[駣cw76o[\m ^ŤIKO۟yOy?ĬKxiKòe'Ш&L*q5}II|+""#GNzp̝{PXч6?ȏdIn}963rp1sc0_/ I Y=2s9H}OL%E%^D`߾r}iʕ7"F!DY'8WMg~Ϝ9Vy$^`ݺu3h|:v>'b| 9b|`.]:/WrxpNJ@̙#kw8߄e# rNޯŒ%y {oV;vp^}-͋AÆVZߖד \#+1+|`~g' +RX˖Os4.:_?}<.t9!fɌ Tzppmǫ[8wOzR}R#r:uG}_ /srͶ6"m>9?|W߯X?''o asLl:Alͮ\, HH8qv]ZEy* Ma%K-)%e(u4hi.r/| _%F^:ڶm+ LQ>SO{RO{Rɒ?<ߵN뿬͌ >OO???'A3H>v"8i"R#\ 4y/:j7?}B,?-;d͸.'KK96ǵ#}zK~ĝG0-,]ց3_q0cvL یɁ 8wZ=~w'|&M9J:!t8}qΝ;K߽4aj|0/.YEk b8| 9?;gŠ%},WK~hooo9:uƱ7n\o8@q;Ǣ|[b\Nb{56ףSݟ>*U7w///9|{îHLݏ)>a Cwð=-{e:0OfE5kj֬)}OC߿1C2ȱg5|&[.R1 ׂk\Lw^&n3 (V^3KrGOYcH>(+bT$Bax6mOf \i^`Ùyٮ0挱~Q1DV|319wv埱N㖨F31P8.WǫU {,aql0/v?" ^S0HXKRO}qYWa۾slsIO|J*xLev[o%Qs 1ОPvs`u?{&LS*Vj'%_PtlB=mD.$w -bCYWƧQ=3. c8w@|d;0D9'zEGRr"aXywcyY!h7{#:݄Ns6 IF9oyh>&{fO{!u2eH.f͚F?f;~ Q_qqw&>ѣ3vκ|=zk^`LD#Xr;w6cVUh1N`Wg"uA@|6ʫ9~.ǝV?|m2,`Xy0&Zɳb%3@?u,C\ ܺq ׯ_~kchkH"⎔`nmkBT"(x[hWǷҖL[ED|0"(>J#( "5^R5jLKK7xh5Qo_?v%;3_2=9̜D$@!:;$}R>Ku$Oӧ7߶M:}:ÉO~8h`wI'>=ClD1xիX/Q9X$>q h˿ M. NOG ~O=%>Ƨ߈Iȑ#^ܹsbjjjŠ 2to BTUUÇrطo~ŊҵkW)))b={}ԨQ2p@ٻw/)/z2pi9޻woٽ{7)l2ٳɞ={T/C ˎ;OA=oɒ%Fuɮ](m6SPAѣǍ'GC`ć}?ƍeΜ9dԩP/ P6mdy7|1b 6Ljځׯ'>/\P'6؆:ѣ}Ck׮%>m={ӧOE,##ӤI̘yMc0ޯ\߁;۷#6mw:u:ڀr //O222d֬Y&;;Ļw q+(pt]>vxΝ;MG#k~,wĈ"=zϏݻ&&ŋƍ&>?@p/ L8Q/#G}6 gϞ5}(磍-P?yh|7{+7olwm7ܹs\4}tmDhMu2c 9sf\}&_h:@q:@0~Bu:b1.-BA{!̙3b.\@,F;0%;럄B!=G1ˆ`x///P(F*1:W^5Y)++# `~uuqZ?X-NvۨF6oQmns?nbiDE󣊊 t-Y *++֙}1s̝;WjjjOuV&נA̼4s~~,ZÝ9 `۾}= Mo7?0^s?>1'[vzHh=17S C"ͫcyaEEEo///w0G8ꍸ_|~9ƴ-mkBTq(x ӹpZukjEmQ j,5 1P i̳"!"Q!J!sbcB޻+]9'$9r{]kZ;{gD%JgyJ(Q fIًfI%f |sg~NU5e&GqD㎱.Į^zi);wNvo~z=ܓd9ݞ{h4{m]qq!2}s={>>=4cy?1EK")tu1?h\}ѱN_r%nō7ޘ,l0ҥK\tE>?яM=dc0 xg?Y׿SO=5o zUW]{GL4}$Xc;|+B۷Ow}=#EI6h*ْltMc7b/4S_ZX4}v 7Lotk=C E[60Y'蒟3Oh-tn%5 Łx!'?v1d"G S̏>؊zo9>8g;ϳOз+{2Ћy^sY *h-طgVꫯĉ 5+Ҫ>6/"; G>SNm15op|0aBӌISLR{s>c 3996CMQc->ɳRЍ?n츘4yR0|Ot7{옱ɤC9~ SC2?#ʿ oϭ!h|{}zhݝ5ѣ18T?n祗^JsC7~U?^{-ѫcNt#G6xEsC>X|Ӟ|Ǹqq{ [K?Cc09ͥKV¾z*tE^KGԾIm>/4< `MAgOXkҷ==zH<ƾf{Raơ/{4=iLz'nwa/59ͪa^xW~q=ȍlFa<ˋFU[?ӫk*>r ɨFr;Ĕ:(wː؟Q{ }Q@t_J&O 4=ԒScE4AO$ë k)qV9 }cwug|׍CbŇQ&1fO&Q_BSsQM ~(rXf;˳ ?T'*4=7w= Xq7/ϧGr+vj _7YCb[И|znďfٵs5UС?t0GJc1ݜw6Rm/d%517Ɨ4|Y~`yG>[v9Y: s==~'}ZJ1bD>5G^6oFcƋZJ߲2S|X;'!WЛ|BmgN>2&Y=6kNK>Ի}cЍ9obMEU O_˱W.GrL~KT}<ܫM/ke̓h9xFtrf~Ve>3zv#z]^6՗d!sftQ޶g|w@f$sTc}Wy߃&XXO5֜nQ4-l͕Ohm*ϲ,,(%֗%(Q>Y_D(zok%J(E?,Q,.Do^J/TX4w%(zYD%J(QD9XbaZ}%EŢG%Zݛ1a5rlQ-Gr9L41Tk or-GwߎD-.kޏ'EReߊ,Nxb5Ohyh~c\8Gq#"<01Wp߈i\v^<%Zuƌz%8qЩqˑЯwWGcCN~ Zi4ES=h[ǦDJbmUP668>7#;3_sm ?<:pGljNkpsή$U(6fXvѻ4|;w,\->ؿ4`J7pJ_~]hCdzK{][qI,v8 %Zl'u~'%<8*~q,ZnSbϳłK,ݟ[cwmh;PmĶ' C~'q#(Z-0'c:Q].(^rLhYJƍ/ 7]}t%0MƁ̱iӦ:cݻUHiƌ86m~kf|񇅅iܹީC92WR^Z5?c'c5aS^z%?M4VǍgۀ zȊ:?*WO>۷o_S?EF7ԃo8֭k|Κ5\6QlcȐ!f|)STϞ=]$Jȓ.1tQg͛׌>-j| 1}`/Ȟ1dȐ mstiyo[ ; ?_GxgOyNOed9:Cݺu3m r/bJƍo3><}tc+!ߤIXbU96ƿ2s̎;,Y7E_~F͛g-[RJetX@^C9;W|6駟k7)gL'cF|ƱwdE?}P\C| @?sSYkCV>-6;ӦMkO;w406(]t?htǜwh2FS##}`%֙ /11w|v̋%>Y;0n 2%V&m}kc+{9?6@"6A_9ϐ>CC6~ 2f"  &32f&dB†@N|6 xM1#k_|z<S-ϴŏ3#""L-OS66H NXq7|[&.`ȃ>E y Xؘ C\C.q"SbC]E ߡMƍ l~QƆm xC1b 1BO}Auk:ybOo[OK;쎵.9؀L kgI;E^6߶m[8 ,ϔk,ֹԧm޼}~|r9/!;h_t\kԇE:rgO?d. v2r:!}ʩG#Ǯui>FOSփg{J!Gvj0^N> 7pea}'׬,Y7v|>?}цyʕqӗm;RN[dcG{x)78PBVвrCW\clK61-}W]2>C:mMa">- oDW{_շOLm]{ܾ<{5*n]~ļ@faf}mƷo|{ bؒv-JO.ţiu vع<=qڵGW^56\xTo\Y@rJÃ)!Gt\kCe \xpҥxSB… \$`;wpY"88s} O~pԩx`Nlܾ}[׮݇/hqx?}vG3lĦ;|Yc;ǟ ޫr?56JZL29HxʀA~fUrjfob `LG' nPFއw]O}~/=Ҍ=ҜX}Jj{ɃS>ZBGfn5ewSYE4T24E>pL ~ub9icwKs=#pܟlk+v7 N*x2 =*EP5CSTcYZ~;W,$2*G!?`:9IoߐS^ِυXW jGbxX=GD@u<'I-~>?v_C}fo;kr`6b=A|w/yDndɒFrt{wϚZ.:JESw͕FUTu{2MN7Iȡt+MrW:T"U\=,D%Z7LޯJ+uVSNR*`9/fs-L9@ @ȏ?AK'r [vD's9;,uĉ+oO-\|󍙷M%!`薸׉5kxrmx.5쩇gs 91uJXn5\jwV_)eP~ZDTΊT~ ttcoR}W7!B^sƑ#GL&7 :$ۍhC&[%4 a?"kl3m>RT[[~[EWH"@Y&DP%UE~c#4$Admz'@B b:>On#rK"g! I䷡>z >.XOص`>}CNCnO)A2a3q9vØO ZEMPFYP|<&76^ZF86.>w wY9mvu&;vQUr)K0U8Tc1;h Ku2(N P<*ߢZ^i}@Oxv{γq=؉?^01:kmL|6al~{7[8q~lw3|}UOkStY=_Dy0͹ܫ>9ճOSױԇLǖfDyPYi7uG~ްbwu-Է-kw~^Qg4“qENNy}?u)ϵ C# +흾ǰ9ǂ? 4y[X1xLg3y|6\$\DEEH .&ET]$\{"{v]pEp. tp..WEpk>t… .\p_`W..""?"EpqQQGtp`oGl)>C£VaF~Ç<]<6mvC=e;xxSy=Ǧ#1c1| ckWX-0噰9l.p3G".! ywglo:p'!@ޜgWA?~6 ]7z0PgmїN[G׿ hAu_캩_v%E"g!MHN+}_+{Ey2%~F:%<%kxrr}M2r'Ǧ:j}>GiAON٬ݞ2SƵYo`w75f!-p~ad@.0ӓ\q$'^myMc=Qfr=y篡uɩG^191?y-]gZ6|ټö:1E@&9zN߬yCkք-WԨga.RQF/WI5}f;:VGeo•>P-r9vRp4K3{9}Ч(}zoW*4rIMzM~gۮnzB*^켭);nkwŘ-Eȓ\mO=u{8q'ے\9r0kb\76y_:<<ܬ'Ŋ39!8iҤ>qtck6ȝ=&$6b cM=ٱgL3b_/v_/uY{Mw롕d!L6 .MNوmky+ETszeV/ϣk(_T|1TRzJN~[4Vjd!.Mٯ4Ypiu\~CVtp#Z|zݧD\,y_RM_ܕ(CҚšKJ)V`ӑ+,m5Nv_W&= 69mWgm/w]W>:wtF:+DfOrŒȖ?|)g&.0 2yk|Yۉ\C3 vM ,ko'7͗x |b#do?qo)Qg{;sOLٚଷkti=ƪR>SYTAkks0l)DyQONhMtwRVk5bE:4lE)OZp-ߧUTj< Mv֙x#w-lG̩`9?AY zy;@gG2?S׬N9skC6nuw{u89!ꓗgz 1W>goֹ[rѹ;#=/;ؙsvs\䘝}sw^|ѓ,E=琧g{n97~V:6{p/Aot}<0?=56^gzק=rƊNA.ع7pϧ= 2n}f}nx??:6ʽ绾D3PM|9Ɔ6wv8|qDС6p5Æ0+GDDAl;I ?.\?"ׯѕx]LS;6{Dw9{ë{Bfrs9sODYXXXXD/_> _ğH9-k&mVDL]=N[tL{>:h8 e uw'"Q7m?P{O2[D4=< ${w>Te e2vLw.uO}lz眨Ý\BYD4,Y"r!7n`,["etl˴9,Z(K Ȍ3dzy]xq.+O4I|I駟dܹOw}'YAV+V>aLL̙3G z\|iN8Qz)%66VJ._~F1K:KHӳgOiժUFyHg>RD yWeܸqٳg}B 2h 3fJ T7&LP8P~嗌kbڗ|y뭷dʔ)#FH5n6mTÇȑ#UŊ~ʵ%KJe̙?(S|GǟyO>+W^zI}O7P?CyWTIm{C x@z->|gԩSwA5j$iF5}O>ڧx ޽$$$Hݺu%**J~С)RDm)::Z9y`~EExѱcG!_^=Yp?߮XEJvdѪ|TRҩS'kժzI&rwKӦM}2l0^ .a|Ʒ~Έg~'֭ ӧOm۪tIn[lC?;vywW7c >䏾IC@;j(01?OOāf. y~tI,5| $^ >rO>'_| 23qMQd[ _{ LZ{LZhq]{zOyo^7-"Eg\2lpnNn]z"q |rB^StWdP e/*MnjPڤ7.\pF Ο?+Mfϝ;VpJ 5RSS-"gϞ`9s&W~>uTɓ'- 흜tzmbt.pzg,x.}ޗ]d%_'.pY8[8+WRիqg9X5^cP,*6mȐ!uN1_f$ RdC:ᐤȳQܹS  q6KX(c)ReǑI7n؎= onǂb! DFI]~;J7ow 9kT_|@tk׮Ut+cA+RddIv~2lɓu8k> 1WZv.USRRu9lfY$HKӶ㲁r_~]u#N4,_|:6983*lcOpRLv+!V^mBTlU}1_E:,Iv oJEHv&I73ⴲe*ϚC;wVnZnp2JJN9i& G"oG-!QzJ5}HcHY,\L_=k׮ZSuEyb(WTPA|Blro*Z'$Ȁtټ/%}^Do0/5;Dc)PrݻWuW_):A_|i$LdWZ|?GEQqg)VVW:N^/c v4Y+Y]~M''O|s4rvf$|E~1(?5f3;ߛc]p?ܟg pKZ1ɮy)Nܳ"ö^G\J3N[^W MI" h,I7Ic9ck>oZs\9{'^zI߾}ur9Rono7:Z>ݻyi7 2qagE]x@ǜ_` {Q'-8!/l|i?;sli߿[oӼG>mfx"5v8|6Fȇ}?m.Tڷo/+WmK*eƦH}5k-|Oؒl|RO#/+wȏ0` mNK[Kʋ;{C<1V) =Q`2G{#{E_ Ao#u"v7 pine]oڪbŊ<6pbTNFtSٟ? 1z}DFfM3dMےzpy2} 6dpkt\6b76&&Fɋ_c3%L䃿1pp!׷s֭+_~q 8˔)eadG&y/^\ʆO+RrobX dRPbсNel%_1?4HmS61plt1\g\/`_Q1sI|^/LK{OSGocf|N1WVM'|#Evħ,YRka?pg7<0[;L?ȓrS&iG,I:yq/ >LOFȣi=c; Gȧ s }<%B^荱8s?=O@c1y1gB^ybh7>[nھ;8:u(ڇ2&+mRmH܈/ m(<|y4{=lԓ}o|962hwy󜋍{cb3Ms͔S^ fubtd 39 e1s=]7r>l@`?P7gVq}_yig~utr a~CKYġĕNxo9B80Զ#ՀS]< <9 ;qhux"tp-,,6柲p|"rpv ן[8 ?Cl>7]mkBTaxiOVtt32DDXD@,D@ ľ m;Avb7^k鑓\󞘐ސ"| ^6X뵎WNzZ^ihsOAއԧ\(6u|F-ޞk1`V o5ecusz_zE.5B5}*Z/}8'/Zyʬ~B]?P9zoaBl>ߖfT+sȯ!}Y[Zfmfve>~>YocpOvjUD>ҵAu@56z۫ۍn}m19+}S>TWz(ZewH?|/?C_/>_sH?T<@2%N&h4O8pRWN0544$R `Ob1`Z[[f`,c X]]0VUUUVVcXMM 0V\\ { KS0v;qwߓ_dW( ugGs}}kﻺr!؂;??NOOsvvvnke;99q#WC\VCsppk/>bw|,nM?@.t@ΗH$ fgg60㯩IyG/y91::*nF`byyY "(U122B!ސ?oȟ7-[kkk`TfoooC(5`?}M!ب?_ȟlCpޞ fff2>-iRn x||}O/OӘV`?_ȟ7 f7Â~4׉JKKEcc2cXKKRݞ{]_ʊE !ސ?oȟ7 yC99Wfx\NF1e=Ԕr )Kah zommI|-ȟ yC! U1ʒH&/))*++pXDQ5`yD"^Osś =iv199)-gZ'‚2:dzzzR^")x eI Ad j3mkBTVPxKG_5V~$5MVרոnmV R B[JK?!E./rEwwӰ3;[9<3FB@xz.4I"ˏxFN$zCCqDJi@Qj57Ǥ|1D9@m5W4Kɚu :൐0UʥhzV Iޟ ㄔpO &M/T|>LIqJsVh-@?2ic5@6Q~7kxki)k^%¤=A?#sUsN򺦓hA,3֭7tOr.S!uIj6 wҼJ @ސ;i5p.C P ,?zJt?kM]I P?gAP ,/--}Y*]_~U,$ݺf5=͆h#u8,Qu IyDܻw|>?$=@M&#~HJ3{?{ҿY_FFFIi UC\JпB:33/`fY+BBVTƥ4Pأ{s!?e}I~>!cjjJi Gz6H CP)WO0g}P_R,H&!qМP@loo=99x`Md΃ Tx@σ蝀(yCw[[[7&&&>L0ܼQ,%egF0NN#6665:v3M6ٳgJ џ<.ӛBKz8. B7OC׋:zj^U`yVߠUVaɒ%tcNJT؎&!ԍnwv=(u؜VL|M1쏞x hZ۷wN>=t}CCC̙#3^xh38y<FlU]7I\kଐ$Nibe[L?QցvOav5Sj`XyCnȺ nPVDn:O?Effo`/~ ͛'Z㩧8>p`z5ms/OGssMe#-((c=&:m;(ѮO6\r=m  xa/-[?g%2pm1*!ݭPhFIzZ#%׼v۰Ng O /8,Bn_oRRh+9d@V52~P{l^{,V(]g@@.q|> 3Nj6qO _چ}]^;Rq3!sU(͈]= %˭Q_2ٹsb#s6^QQQ!>˲ {'| ߘmOKfPUU$_UH|% by KE>?+Ĭ~}#%Dp/--5?ˣ< =A>~6 B[](+B^)(y­P|J7s|W<裂ӣ}\qNGxٲex衇Oa`+?!Wsry9lp}P&i_O݂#'pŌg9G.]‘#Gg?x }u#Fp59  Kgo@nSoAt?ܚ.T#i~uPǻYX/ };G9 m1D"`%t_49h1̙3<̈.\K`)Okfc5i4>~ U-p6YͭV|ᙪkrl-G烂g/RTxDٳg(}ǃ!˗/7 @O^f \o12+=*y&4X;UXSa|DD;"# ^yQzϋ_ZX/8ກy"v1e۶mKX87߯nN܀R/BMs#m/56>z4迦Fh/ `͚53)߈9!X :Ad$R/j)xT^sk/c@-\ߏ3f w/RrP"IdRxD'!6) iH>V%;59׆rmxG`*cF? g7sɳqYor!AӊIJVė6CYV~C[~f?h퀮{N%j 4:S|)ͣ>˲>*ߏ#|֭[0>(g__r>lCTʄm apP>\-X?ޞ"{ ⌵6{eC w<9.UQ *lJcb9uaml%# A1DRffXꟜ+s0ylNۅM)UB6&U!+`hVF2=bqȜ"M_O!ȿݞq$U&VkIFk*JeXҰR, -aZ,t/g{ǎc%ZcAӠb|""|XEA9чh{?jGc"9c|#HQSq)\xorwoH1 0c(-{y=t;xW{ ~C#k0;y7|G,p܁0s8W{oB?9~j/rƇ߿]homAKSıY\}=4OvCݘOekƅ_RDAP\v :g 3=iJ=6(hNiҢ0+~^:Ml-Hk7߬t*b#wBCQF|pM`5(shpB=pla82bs:$p4 +p Mwr 3bC( G̒"vb7gjus*/!`O m $\M^ *3PY!uΞ='g^.ʡڊ8PU?V~Ԝ`*BǸ|lؿEydArA|܍# ~?qq1vu\1u?n 9%?rs!g7dq=*aAAuy)II Eya*ғC <VZ?|Hn2a?enj n:,9cF|Sql ıvBm*#Vq+ܿ%aҵ9q1u>9lQQQ"'9Hs|gK0{3yff&Oe@wj#pG}i(̊CbF4@+\MBVh,_٧9ޘρ}R$ y[h}Ù1d?<`kyo!:u*p9=5q¡Vx=u1ޢf.;ܯ/E,'r :=a ƛssǷ~[><>\...j{xǬ0p rH a/Pc㸧`,|9_\c~`R/y y382m?%%C`XFkBO^TJ`| _ W4ǘI?O"n yo!\gΞAz rPZ l φ}H&45K?3(%Y *x)+; :$$DdIZwl2Qcd w^O' -؏}Pw#,oBrvU5|ᒨstxm6#i3r`ޕ+W NNU ["~}eMzPN3Ze? Þ s r/:Jiyonf^cTEף4]V&t\Ђf5a%qS3&ylўvO{ y>1A:'$ s7^O>(7ڃwVժU,&ǂ@R/A$Tʪgf+zR ,#s"sZeޟDGu~*nHLlb+66/#"tOϰ/Hmʺ6c sO?Gžz+b !GWc'X |>J,2w:uWag|};q~10roZ9?dyUGp96czHu^ b隭w$x"2}=-K?3j?Y\N[U^+_] $9+_.՛{r%w38r$JP\ՌF8tC[bR."֡j&=X%1߁ LvW؉qؙS:IaLDf Yp R 1Wg<;h)++Z8s;@[%c ǁa&kIUԈu(Q:l؏HCdnlfo&nb<MЮO.p48?ڃ͛'x beg^Tt! NjiCDI‹ZRzxŘ F^8J_grLӌbC `}M`GJMMPI?pN!^et J.} oμ&xmG|,]0Nc*???_p 9EG=r,!V& AOdYQhS}<3Xx1N<)l2_5/y%NڃS1^?#ڿ| @ -ON 7Q we-k*#kH?4H )K>`:X`;v#0g.56bCr6$UQH%+%W**Za Ơ1@9!Ok+Xn+!Hސu!+R?#IJ*-ǚr1Q:mϖDTU*ۍy}@\r- b<"wσes~?O߯h,j'Q]Yr 8}]*Hq+ցO]?U[]En9EZd"3B"#%PAUAm^난ivCݐBhhۍmqNȇg6Ə98}<6&1nz8%ia=MjDu iBtm2LrN*lRCYՃ.(gr -oÇ:HRgэ[oI||^;))wC;ɓGfϞ-=4h@)SFm&m۶_hO?iYׯO>D#~mٴisʳ>+ ./B>#+@|gCO[vȹ8[x U]6ӛbo8xn9No;r䈎 ꫯuo?Cf57nر#`/O-tNS`>тygXX|ikV.r:tօ_~Yvz!5͚5G6lz?|ꩧTF8WgRJ;>yׯk^믿O=$""Bl٢ 1B^y6?l9s樌1c`sKj?yX_x=[d K. -[vΟ!%XP&cd6as ψֱ~}I:u2{t>b yeitaƋKccciӦ2`#r^nw֭Lv-(;@V&ׯ__{c~=?s+B8}2:K֭?v.1DzgP?u[;uꤺ`ln=pcKbb}XwYϩ^KjF9RmK m޼y;6-YfrWuH /wyI3w`G owT;#'8gěV\9s\p'v5k&F}Bvt)Շb@駟yz{'`< }H S|MW1m4݇|ķOr]{6 OCd.]t.VZ?lu 믿V?uT5%zƍ%_|:μkQ~sQ|wh T8$>}Æ zLƍu΂Fjؽ{W]uLX,sPowҤIسgO=w~sui[]dqժU5[lzM[6Qc=fΥbw6kt6EW^@SzCh߾Q8;ûCQo~3*K%ˉZN)me}Đ?& cbb2x +_xm=3S7/-9OyUpui< Ql߿X^| ;#S=(uyqq?l^o߭|Gń t?qa 2j(}i ~d99r m }b֭=c{Υ>r>[s޼yO > 9I&MS~ w?}͛I@Yo6|66p@-ME Y?=[9'vlm>٧O8!+=ЧZ/ccW\._=2n'O:,{/CNvyf78 [h!P_dhg/mt͚5cfX 99)ks:0fjԨ~g?71?șffu[Z;sܚ\G^Xcc58_d;6Wzְ>Y]Jx nn9Bd%`:=%st}`[NwKnǿl!Lb ǶkNg4F!%~|cG ?.i>'li_8O?w# i>mmA[Ieۇ=y!q)g춠P2Si.=KRuԗAT3mjcvI[vdIݙV<2oJ61i^ѝ^OAJ #H܈~_pS%wݲ]b m7?O>gTlD[Uό?x~$S/y[{ ~0နky|ԜTԇͺ7r$߯m诤8;}ω~'[Ifӥ?߇N-ԕq+\m){9?vo_}ǴldKKhg$a^sOJ[WvHtz>YmNSc8$_8g~ҽ7X"~ c@OHMpS'K"-2mmď'=iim3ԗ ەUIƷJF5SQ2 %:;t&Ly: \V)sʤa$z῭\\&QzqaJZ@;6]#S6{J𫵼|OLO떗b]l)4TTA뗕EޭuKJZ}%zj}j&ڇ S E Իi]LQCȀm9O܎?>~SOS",cH\ٷ@94yDDQjG)jEV*?xZ0ﻱBZΔ *>咊 $7¢c`˥Q-TQRr Sv'GSn F4BQJ6Ruf"fulo)C)`ʎVbL[h2S Wi/5l2kDJ +TΕs?q3g:@|aGC,:`bºwLL R]Wh{VoӎIQފkdX![02UYFʛ~5}6ry\,i}3fT 6<_X9\D!RSb} 1cy 1uV޸'qÈ5rI|u5o*[l;U ߠ_X,RMɜSOHN{X~a#n6?o@l`063`eڌ]VY 2û,ㆇfi-NоWK}-<%vH3a 1[%JĘ~g/[SeOqs~:}|S+L.)WW cBek1Č-zc*scdB't|g ـBA .p9 ?bv󞑍ͅvw*VǪ'^K]1Bu~&ybt *_: i:Yk9gen5GۡqOk>gftH'9K[JOrR6u^‡%t&m[e'0;!mgNsv-hk6m<N/g<\!K'W0&sl#d7|9}VJ/| "O "u_ǒO]쁬ݿ"y/^|ί%Z*oq!v?rA1rMcDO3Qzcȹ @MG"f ? 1,'w7u\1+W-~rc]O 䌠M>#6abmwr۸qC0E2~>9=|[@?<ٮ hwX#­?8 ?w5%֛ܞ`^>?(>}^u3dzߏ| >x?ߒ#26/~n_x?}|nm⣅;p.]_x?*UEƇN:w/20orG?}=>e h}8Qw^ѣ3߰` ?'w7͸|.\P rD/X'uH~ 3^ pzX5ofƿ]3HSt^O-~o1 F3x:xME!7:xb2kmo͜7o~'b;?k׮)n;xb #(C}} ߡCG8"+7X'"#2ey}zZ/pYfm_x?;/_>E<'XȹsQ ={9?=d;e߅Xƌ0|K3K.Xag{].9_8s7柵e7`@7;؋\=<3d2 >apl׏`X Gļwr/s~u5c|A,Y&cnѣS9/ J!#)a#̝;WA_|#)"ZR+ YMD7m~pܷo|ϙ3G-[6a|+&21cO /NTpa7`KĦ<ᾬ!%⟼p3Ǡ%y^kB|Qжm|HVvt̬!`A;GH^_J؝9}-DoCZx?zOfCo|;hK9YGwʵ9,h䈶@HW#`3)oy^×!h7bĈ@ pE(1!cGƞ<Aߏo zFCs,~n͑GOu`v G?guBf wsh">?<`g O{'/;w>}FcS $mkBTʘx%WT+v&m۶m۶m۶m۶~W}IrLUujΜؽj^{j9樶jjE[o.aUW]z/O}O>)?sGy;SlɪO?fi<o46vi[oU-w}wV\rIu]WvmSO=U;o|sGW~[o{- dbM6:ꮻ>?n>my/ۋ~{-R}7~xuGV>hj>mAbVߚO{}lbכO~>>+磏>.cqt} ~(l%:Jnثt=TlM;K/gGqgtq5ۙ{6[_};C=+ |ɮ?Η;njYf)ؓ/_,XĚkYqj%c/g.R?)x5]-ZQ>!~k?; ^{j%fyꦛn*LJ߾`^{m5xU2JSO=`%O?Ղ .Xb Ķ暫b-o7_[ δ馛^r6iqp@ T[9fnr.>W_nYfjf.۳>[Ze잛 r!SO]}嘧~Zb%Ygk;Qo.Yg/0`NO9j."'|rs=/s^4WmY?p5Ӗ{6h27|_}>sV]tQN_aN8oN;9Rb^~.W/x3޼VX z3=7޸|=أȊ=~+‡ 6ؠ;'X9SV'tR)HqXh ջ 2^e)(@<](',> b-ܲƦ7h饗.ma7Vk\|ťmτ}~'V5GQ t;1>92g|7EM2/ځetAEe~gqƩzWt}'̶ұԉfm^}bI'/<aV76I 9?_ǿ99v=,ه ;%qK c#~a*]OYM-AnKZTba*{ 31^dқ ({GYc`Fd F&[ƦqosOc|5rdu , Zq͇*π}u-~ _": $yEdڳ6_WuH~Y} ~fle<3?/\oQG-f l GL_ dGm0t,&An+@ȳD9X!W҉`jH̏?c:&w2t=U_GO4~Dl19;=oukRC$lwց:WU F=!> -Y`5KR3 w}Fxn#2uIgCzٜf\ Kr=1XuɞkF}:νȈssl5c$~9>5﹏Hd jH ];˥{4|#18Gv g 5Z߬r x7n)q9G %ge_'䚹'6xpOg[H2`Aٛ1S%C=tٝ7y#3Z#ـ8F]0rX$#0B={{ !xgdOGK3zc?7zF/]Ic2+E-bzZJP@C<]Obxr};=9'g!O0b6ia-5-,̞=P61|@tA]ߴzyQCC OO?1u?$vAlu/v˞g6i߱hdT&[lY"l̾cNt}zeNܞ:B#?=N^x+J$ ϱ;!dg߇T}|a˭_noC;k6̿?lejol3zM;| IY..cw̷Z.?a.[,X jkdLd`  txAmBIy |䞞,>`CRiWR'M;0G7Ը 6$W[.>^#7Gc\1fݑk5+?;(r=.#.T7{#M"veV>{C 5PC ;7k{bvq^ yĂzĨrLOWu,كHĮu\S|@>Olx^!~c<nmR\;5puȀ$o\?Jכ `ryy]-:x\]ɳ<0u`A)t^Ez$o;~59ܿ5#)lQ_C'X|s.4~秏PpsTg%R0wrYzO=3)!wze{9K9͝ ߅ D/u"S<|Nm/~^<%u7;F'x:彥x`Fv.Sρ=2d.G#|uvjjx/MjT< 5PE&QzQ\L?i au?s {dIJ n~"~~dmcݣB<Իbm|_)$2>88Y'x:=%yM9|V!eߩ$ߡp9:$ׁi꽐Y ׃}u⓲_L1٣ L9OX:~uu=rz/N]`BOa}';a2lm `|tNVѱDNC>6DR_e96`{0/<[p¬35[q]ϻf ؊Vbު ˇ/,~qd;S_t768y>=>tOm+8Oj3 #sRZ;_|wZuXt6{qw sM;5ԥ' C\Ԗ+ƱwFwE?`3jqZsn߬r-WYzxψ&^+"?bGZiVl^jjߒ~ \vlsvc |]Δ=zϡ_xn%ׁEd_NNaCb1LD|Κ|=9۹e ~Yo+(_ SkK]>0}81efOv :a0n扎:j.ua0=9[|>ޏ=s}F$ZzO^3,zd~__o&M`r0l-ʿ\y\eOtF_mb 7_/|+}S/37pG#ޚ:-1VEElwHW.к4'r]:v/u26"z۱=f}[om dWW:NG:es xԉBw Ay L`?pY5fb\e豘޸|Rz>6Xbe0vΓ%)kJۅ<_p'x^̝M6_HLٍ9zgNl lmc$0>cֻį'S`w5zyr=[˥8\ݳ+rx}=^0!WwOL.yÁ#`'Yq|p@UgyBZJrZ{_JO?._c xcgx^OIOw ;ycdȞ} ' A;<=0<Dz=?`J>`!\ <6 YTuO)`x\xntY;`)yZNng#zgo>WȧGxsǽ0 LgW o e(i/9 6L7g~杯x+G,̕yϰNjjӝs13d(<՘`Ddg?u g5>g3Ƨ!sxnk˞ȺOb_m'x,ajo%gcOWԁSۺ-رWYQf255 c+1d>vRDb!rm~:ؙ6K> p=.g-aE0I^Otn~ׂ鯅f;r_ ϡxN` f(o=LA/adFΞGg/ z~Si8dKAXS8&1-2i'oORQ?{aa-\xk+C=t]L)|ҟ;%:,HCjp>x{æS+Cp| ?|xnH t^/`?oꉮ/\σ  J7"6Oɺ ׆;'ޣJ5q8߭>a95 NJwb֫k}H @+p=w8P+4&n=x f5!k8vo#=%\en_gͩ<൵t|[!b:GmLj:dE;WG'k#4H Nh?A~ӱW[yȑȢgSnZf}UR]/LG{?Uwojڝr,,o'8B߈ɍKڝ^Kn~Ibp5v黃#vz{;d\םL9lu= N Sӑ 蕂k Of͹YNѓW;^K؃~;q;>YR!cMorveIrOAX'Wr/7tT3ѣ`df<;k'˖g}Fz;8߳M];N?8(c:n\ ^HNѕol"wI}I`%B0A"yt۟0goA8"&dm_gVNSkiDij{Cr~jҭgboG9>.9)Sv߭iȳu=@C C?jtd¹~c&$~{!_듓Kog ?K=ɘĎl,k'kdJMaì'0IlƇmkBT xE` -E2cN`ƬL(FP1bNQ3愉 "F ԷsEدߪݝ=gf/"w}wމߟ}Yj۶m?r4qt=;,+ҷ~[o8M6_~O>IڵK?LlIz1~aԨQOoFȿeVo_}U{tNŠA s_mzl2l+LlAؖN:)]|.ewy 7?@p]vJy~t/^dT:*l~J@Lfr`_~y/o)>@=8weUl~j8=!?7q1B뮻{~.%:4vA߾}c?]ޭ*஡O>Q8WjhC=|y'Cb|S>_.VXat衇F̄:OvOo=:-"qnzT \-_lV,!;ǝy"L@?/䒕qKx^6uEUt属\Az sNJ9}1"lP v\s喫=r!{_>my^|[Зcǎ6lX\&isɎ Х̯l=.>S&\H}8>M ƚ5#39:O㝫<2K*>e6Kz u37`_|Jeg@wi\sͰg3s8]};>wMgt7z#}80Wpe,76f{!ob!d͛WK73V9T~7˾5cv6lXYZ{Zк?K“ZoX-#z+6WwZG#ve=Ώ)kX8n<Dž^2sr,sJ c3c}--S&m<_7T/܆>!kUW]57_^͚55&.4dzUOgCto93|Ulɵk]Ǜf.-SV'5L)XqGQy1 z ס$xg=xq18_K/tRG'\\Z\ ԅMҍZx .U ltrYҹ f-8t ȇ2%6)4[1 ρ̼.^|-fw38A5AϗZj/ef>dqz^rْ!7cEbpKb|OwtOoYfe*}j賕W^9x#)i?N7S8F5LOW\q KK|m)HTw|0:IAdt/U*u?Js*jtK>9d'vMFgޘ})6L?2cRY%GeA]t̻~)sM]߱{{ G_NaY|;Gg))VؕcHڨE[<6}9Cq>Jgq}z__O2nj2u|1\]] w!~qC+ g4>c-#;vl+֟s6VyFƍ<S^Ɇɀ 6BW]_#[<>e7x?eNrۦ;s g/9/O̱ƅ#+((((((((((((((((((((((((((w m{kk9? Y '|E yS.a}[?P_ /^^Wc}rF-?7(Cc|s!M7t9P퐏gL,ѩYS홸%qA^gznn"l^rG}ó=ݳ=^o3_ zDw x_B -(hsxIyCAAAAAAAA};m-q3묳p콂e]]Pxd~{=N߂^{vgw4x<߽.xww|{Gg=yqj\>nj((((((((Ӿ[髯*y O8qbׯT׿aѣG2uQq_C? &[ou?>ի{K.v;80;6 |Wcou;xv8X1=:dM<_H[ou?~KhR޽d'Oyv7':4wqQK.$ig~{` cƌ ߕO;>+ǹ^={wc#o>=3!79+ZkG}=#C?/;dd/O_Ȩ!(u~JYdMyĈCإkeqGW\:t9SNVXa>}<0~#8nrnѢE:c?~v-F7owS8hР]llٲr:(]ve΋+2r!sܹsn}I^{mԁ^zu=k׮a;cW?Z:uT> zLF<ިgvҀBW#>K>@=`C|F2 9iԨQ!aÆd[2qi'|2(|<T/ ?<_I/x׽@O,c@i2'tuvy\KBqsc$%Çq|)bFnaJ뭷^4iR YXb|{.!C~:߼D*ȵcǎQ'x"n&s 0iqiW17V8wfHƍw"Vom'tRGa';N@x7?Ⱦ\ "?߯|-RWK2;z)2뮻;=W~joF:y A `^eWи`ߦMf͚GSxc95n^ ?r}giH "S|YA *O?}k-k6l:4W{Uى4>ȑ+((((((h0'+!IWy0rG'&7[˭+f ~qyS/OZn~+?kg .H,wϸ>r2nԤIxgL)2' Gμ72 ^{-~{vO9s|Fɛv oZ6xXr%+ Ws.q!(R.zΙ7ʟ!y~e})gqF;#(>`!ҩqYgUȄ_:-䒵OǷ#1S6kQ2lذ6y{|pꩧ߾|wn2dHy}+B9Ze}SN)Çsi~kx;S54&o^.|{;短yu+}ϐW{r=[o'ljMo{&>ok '^wީϾ:vs_Ks= 'Њ߿n׮3[,Ufm4LSj6K|F+gyfc=fmVZhO?g6l5w߽7,30Cwy2,15wW_ZN;nrɪZ綾^* (J0mݶg-zh*})-\N;lCqu#暲2\ve3c[jdk>hZqWôN[}Ɠ;r>6vۭj~g/oF͍ދ/X㘦ᡇ*=XGn_&oveYg>_.z뭲+n5` 7eKc=~nŋ/e7)s{˂ .XVZi{W_}:竮x! , 6ؠ3͑6{o:蠚s5W]4CߜxϚi9~z gWZ` <5>O?va5#=Жإ q'Zw1y^׸Ddϗ 6 3qW?3uGyP.QFU<A7+~aX?]Y~P]@j O`{=o߾0s1t{zZkUzꩲ"ѣG{3vz.ВٌNhRX/b4l0:餓M +=6Nv>Bk[3#< &Nk[n_Ķ /p+]4k fq`l-/'\?sZ¢.[l?7W>Ty3<| M+׫WOώ;:7doYN4u%T;kV3/\YgG՘T8y]xX_E/Zyw呦OO|c:}ӻ5ܡܥZ ZY]^z.ҟ|cl뮻n r=p \&9}-Kaz'>SIԵWؘ^f+5={YC'SW?֗!t裏ֹUV'ӏ}h#I(@#nGuT 4o 4JvMci>~}8D|m,0㆘UsQ3Ѐ\E X/sv_}Mό9ШҸq:v`J#H?C1o$I&Z%)fP߯Qj1u=OzW6Qg?1bj5kRQlj:{=Ǚȑ#{.վ/jT`wcoѣiAڟM4ѷuyN #՞|4LugcO2>gz:MD'QQqYIvݺu$z~Q0zr1ⵙCUGا-청!zpǾ >gϞu_ǩ_>>RO޵<638c&c41W :lP[s5kعra74f7'agp/ơO2};k1;݉Ig(Mٿ /Pg-6~B/)*}/4'W'k=Eyo1fA^7~ks f7cdSwυxK>ݞ'_VF1ED'z,ds4Fa8aO~[u'ΪOw%n|yM_at}1?e/2ea};K 8_K?I|Ҙ@qn~w#ј<`] Bz2>9xTy&߫UplS?Lu1_#[GЦ*^5ַsQk젇gb-o1yL.׊g5c;z ȞgMc>nԎ|)K^PT7yhk#&x?=Z T|Nb:)G/?3m>s5KsK|#u޽Ey&˚\x#o xN?>_lmS'''Q*j^T*>u|ckk+;mlllۊRyjvtݹ]{_.㝝9=/{l6/H^ӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?; XP+mkBTp@x۪P۳xe(( A}.}>DB1V.~O0d_in럫j{/s.‡.yxax;Vn{ª*CըF7_ /Ëw[?W߮okWߛfڟ]CQr{7fgm_Y:U○߷mJWoվ~ %_?[s3$;&V[=c?fvH77ϥ~^lcժ,9rgX?N?l٦}ev`3g3gsdrmy!6?ϛ??lb3gsO96eCy666?JZ&6?2r666?ئ|/?JZ\ٜ`+.wrM_WO.lbsCOa۱ϼ666?z{?lS]Ol96%w9Vw/?؜`3g  $omkBT;@x]t\ՙnvlv7 9!K $  BI)n1!nKeK e5KFz{U,Wlp]*2,k,K}g̼7o{wY^'a,_S؍KMnvv#>a {Dž(l?#Gutt{ .ɓHOO ___LsJ撍C6\ ٺKag{|-p SC^+ocMY9{Ǐv0:;юCh;tm}#'Wzۿ7?}ToU()'ƻ1ME9ػgD)>Lo5ۿGDnj$44T/:?A˕3/..NϜ9s%c]z༠v,UpW`i׬sB-;#9OX>rz`B tp"܂'6X;(t9^;|vB=w~NjJ'yu%H+"8Yp 1baX[xc{"Sy'''] 8/})7&wQZ;ܦn6w#82#cw7:W݆~Ǔ#͛7ԩSc>w[ɟ\iii( ;`(ރ&7!$A9  z+nqp Jw'|>gJ#\jy˗/Η_~s<<<ʁ?y˯o(RgƜ9s}]]0/<e7 7bnx {cW-w)jvGW9_vBP&^kR?b9R'޿O=7"S1;. p-aK>zB0 OQz58\ qT7FXUM=+kPZQ ըCeM `AƵ' C-1fo =B-O'aos'|R㿦`)s[ "w !QEbDe(@t m BZMR*cWAD53ؒPp.ڐl8nO\#7s 0n_zc̥׆C1eHBJAiUm؏0Cxy69CyMy\;vLg!GEaϟGYYLgE'on7?P!J#Fm8PCXQmBPn#Yzx3C~2q}I^>N^?9Jr?HRf'.AΏZ15O? (oWm^ڰ<4 o0s/scerc*.[nAxx7Ș>1~388Xn3㹙317WrԐCȾ?y_< ϱ/pk¨.~z/m0꽮prFi`j}1¤˵W`5$111W}1 ?a9V&{9E;c8v͵,T {s9_(//ǜ/犬GbX%՘. 6`@|scH&Ź~r^"[l3g7]iҥ#/gq8i+9Ίm~v\wM>6ODL@;S^8=KAസ[eXoV5G_ODsFO˽Vjr}'`/a{< DӾyx>꾑9P?wxOWyr>>>rBGW'qo=&qԍc}ƚ6$V!GNj*om`2*hS#on_n&Z[o%~f O6.DWK?92nh{X,܃f kh^#s[xjR;k5\U|{ߓ%sgLҥKe,':0Cg%Pc~{>0^1a-Q3&$5} jwl̑;o'= i>g gCo g=R뤖фE>?c˒%mjz1fב2˄e_7ԡqoNl2Y}x2஻uj.C*ˍەJx7;UXj{k ۚ8- Q*1sk|9\+9 s)cL99ĔbCB >ߚ|ϲMO0?5^}ǕS9`F@3'ö϶̙36;M-y*wHX;`6;{,+z82\|g( d]lzĵK퐾ٿSa_u =5pr22dj}A ۘd~٢4|jyX7yU'Q9M͗e[fOG2o'k)쇸fHMM?S{_k6^&޿τMdzsܐUSܜ>y'xm1$:o9%U3f#֘tD&!"ވǥ ",:9CG繰m_ c,M]%OچmX"Ӕ5Mc\Cwaci8z|žm)fPײU Bww.T4A*aՍ{v+[ y?OJj/>|F7QE-*lFxN= p K}hHź #15t\\KRMCU=Kmx\8Gf}Nd7t#0:\ӁتC*;. / '*&K}f ^c?g Ɵ*L/uw>W'M'`#;=zJ͗{w0Sm p7Kk's1>َU|'`ƕfgg7TrjM Ɖg`fS<cl݂Rl>a^cZGz#3nP8n=5\![z>pug۱:w慤A0w!ˌ2}5`} Fl+>؜*)=n=R1w[r?ըJ_Q: \G>ۼ>mc>\r>øD*$6>s!1J,Wrlls ]tcJK.]dIO,gd^[O j?hJ>?NY{?5C; ~ڵ{^<0G8~(`}g9Q:E_F: dfa; D2aKC bgsAVI:%;nZgQe!ϟ}:97~| G_Ԍcj!;uJ`S8>\4la^㛉9~/s}P7#]RxƇ`8brȱ^~zR|:>9=G95ba'ۿDt V|wWc;>ٸ}lk֮(n)aoM }ϵHC`\ 38vtwK̛338߷o/ۇbuv:sg\q}?8p- q,ik'Oƾ.oBg1\}C1ŋp JR$a9b4|*'W`u{Cjy am;^q7y'&&?q.{Q?GZhv݉>1Ag5l"Ddޖ]&ˌ*@//55x jbɩ]qgo,b"t/JVD ,y l@P^+V]ڟ%ǧxV?Pv S @.\SS#9}x6j+'&&j"i_D|HA@n+BD[ɥۄ{kلCf`RP"ߑSǚ3`,Y#YYǩP Ln ?YFss2zg2wc~6R+2tkjx *zy1>pqqzA_q܏cFY7dۧ6@89xLߌb{#>sm+޻1˜{s=TYC _2&q|*}7Xs ??< kZr~\XX(#1NX"cnܬUX̀Ur5˼5%2tUo<(DcƘA? {G=Ur Ps?ݦ89gjyy`LNoXx<98fs$##C?͛7m ~ϐ|X}Z,!_cl{5h|Ukz}>e¹mojx3Ժj{;lS9g=bٗ<䓚Ķ6?>4coهm0., :w x~ᶾ,[ٷnu]3'_=^6xIz1Oa$&?0 M0 M:BDTOYhaz'mH4M:Bmچk:mچ%IO:RL64,t_mC6,6mc=crB }mچk:mچ? _?֦"mkBT"`xe\UpR\ZJqww- ݥw<ٲӽO6;sg?9*O?>'Lg}xSO7pC-ܒ_t?{w?/7t]7*{4#FH{gkM7ЯXcMkf>vuץ/OoZg?O:kz:\n|iȐ!s=4tԿte]#L=\~?g}6]~yE9GMs=wk ,L:Ӻ뮛s9YN[mUiR~ȑ#رcz뭗=leYgI}r /[,3&wMnaz۷o:QG_?=iРAoɇQFui:+^xa0`@'V]u̵u]8.߿[Z(d1/d=oL(]pi%H^zi .`6秘btgOf7[AXCzn#o=+t=k@XQ=PooT%wܑnj~o[Q~;<ߞ@q;>>`Ͻ{`R|{;|+__yӓO>oy\C)>`zُ,}|x| F@>1qᇧSN9{( /VZi +d= :o: /b~|Gd_?P(-^\CEi/?DHEi7lFܮGW4w5tnپ߭(o:o9gqFj {9_x6lӑ'D`GLgY\w1ꫯ<;Os+Ť<}>iv=q@h%??vioBD vRK嚰2ɟ~i;(ſK/tg}ʡxߟ^zN]KofK5M7~W9hw{ƍ븾[DV=zt>H=s9#sqm5eEN;qȭ:Ǣ(˦78Gm]Æ cE-o6Z `Kd8!AgN8 ;B!:ŴNcZcɺsبl..irAikV5=䍨4 #jZփ5X#?6^}˯+ѓZCf[q;q_göֵNNhyB{w2=@z3dVc>/U[ ;d]8 DM%\Ξ7O4|u O~b?Y0agGrP[31 k’K.u kw_Pr'tbz5 @ߣ+vUC:=Ad+=NG{@ 8so:r5?anO~p6A#Q6L3)c>|ye|uȰE%?y<4t oVo@i5f4,^>tСtzzS,JO{<0ܑCaw͢w69^l)t.OY}"S<`#*:i?qw#A]tQGWtwOO3| ُlǩ*՘NɜsΙ{D/aSsf҃4oOw`C-=ʱy#O+>~zߓذ-/_ ^Ŕ5|>.w, M/^>''|Gb\b1咈!{H X #IпPk͟_P'SO<1tI=c|$Qglo@5'r8'`.zԼ5nfk<  GX+1.,|q8#К1E턒?YL!y}dE=AĊ}D *?s^\|h]UFN^;PBS1j5R=xUUXbr@fU4_v$^'> b+Ǥۼ8\>Vሾ ͡qC˩Ƿtc/|fQur0iy4br3.=w"9B@&~: MV4{$7%gR,;V{'oNKlyVKr[~+';%/dgs#?g >c6r}MTtF)_9r+_^ 3+Q rՍ@Q1rB9߃虜\pN{zj(yh^J&6spx~+#qcl]PWP6=cL1ǺP(k=?}%pV]0)ޭ u}jŒ~<\ ]XNkDp+joΉEI/߾|b=]0 [ݠAԐrJt 37rȚ✉Gn(c{sz??V7rv5_l- =ՏsLDoYXs|1 \=c,׀{y}D칉ZS:ݠ5zg š0ao<V5z݋{$4}zܵC@)sz~eRi('x^a7CQRɶ>~95jT>7WV4?Ј#/H->t lE~btz.'^{}qRhկQ/lDX jeɄfQW^,cdhި7*{$ra(imڌށ< +/YcoP_G^^@5'y\]K}`q 0 }_~<}+k$G^ r*C)q*G>?a؟z@7 G-`E( yu\SGM`Z͊PR5 bO@F忽QooTCWP߿G/_O|#9_:{}>!@@_'F͢?vׇWkK;r~zJjāwӧO[ȑ#{l/PE(~oz `ذai>SWEUt/JObz3J?=s9͢ǏDGףK͡F忽0V R%"mkBTxgeU`, DJAJ(ArID"9gTDɂd|l\zff{USss9w׻ާkn{饗:xg_{oyow-w}ݕW^Y>|o߻W_}s}^?}׬q-t_}wW_}uck}ΕsZjk/w+rw`~9.ҭ*}os%o9K.=ﻮ|i{{]g$cyv}2;mGM1/^ro~E|"EYmݺ?~^+y7"7 fmwM;餓{キwmݬys ,mݢ.ZtAګZls9gOO~RW~_>>ne{!qlbM6)>/2,L+t+Bw}Yz饋7Mɳ't/?;nn*߻뺅^|zc7<_bqW^^{U^pEG׿v,wn튝}o2Ne[kFw=+vwyg7s~~w}c_ ~SO-2_gug+\s>`<\ cb9b-VC|o^_`'?-y;f꫗1'_~Gկ?q;<"9+vm_'pBK]1{n/@}⥗^Z Ar}:1;"oկ%G2YgUOv"ƍwsQm*u*r'|bt8@Wf}OF/z~hu-z@_>t?)ӟT|y駟-r%re ׿/r./|?^7>Vf-? 7W3G;ug~[ ?JL '~_ 389}.Kf3?8Mws6 :7,i> ̩ UW]]tEeN>ȼ}I2g<>lL'p)>5px!9= " 9`@^on*"s}|uW'QySZC˥@6v3wIxoԓ/Y4yA8?>|<߄o]>_ B?-1#ݓkr!N;T$^O0 %=ܳ܃R#Ww,>gMOGpf'j=;p{u=<4҃Z1c=+r}qd.=\;dGg1w(a'`rmk_Z{cW51SƀZqV]q+?a<و?n$p] a<v+cXğ/jCGا9op K%|'(Ǥu ;H!Fy|B1S3%kD'Xq=q$u/Wot;x܆z AmU:Bͳ?<@1u)\L W0z2r;c@NX&csy~^__)O-:9|+#8@/|j+q~MSOV}h^oxAMz7fM1Zo0x;c_&'|^ޓ7p?U3ݒ<q rsO\Oy΅S >$>H ~ƥf 'c.?\.? # G9x`u1~Goz#O=j"?~K/ȃO V8Q~yýSٰYEz\yMW?67ss>p=WcG:;¿%ƫSAlp?b לSv³'?3s%+tV OՖ |Cj2YfpYK6!/~2{alIN'7a`Sk(A/u1*T8zxE[`SS J'rqjby>2k!ŰO_\5ckΧ\)2kҏŽ/N99EO3=󩭋)KOn@ [6+#\נ22)oPao; jػ$Nj2w|]/TN;NP Ib+$O)螒#9_/ݾ?}|1qYǂ\\>@K<>:5yйq-4^k823d́Nh<7SΗZD Wg 'Dc+(qx+U|rt@!E3} c0&ƃş `f {Kpye[[ۨd-/~}5[߰szTM16NS{<"zr]zG'|E8+s[\*=?{i5I?M%/;7>_΋`|O8>NצxX>%6l=kׅ{>T݇Lp68r'p\t {/.^_![ǰ}O/_1s ~-kR#O?}f\ ye >S0/0ٯq8F|_?skj5V]{_8-O~kW[k1`?AȾ^?~#>o=Y0չ̗^?;}|Yc/S/FG&x⾹ڛ1űg]sdk1>nɃշ/0/|O=ݷ:!kbשgg yyxOYϧkO+ϲFt\F]$沑̍y ~WX'4k"K\^$97W /1K}|zD`O|"{r\׼=g[G#{ɚDGu 'Ӈ1i~هa\úğI: Hُb9?^!{j}V/oA٣|\~~G ىg y@%ƥ$?S9F6^\|nVN\Qz>\z={3-꽄w8^$7+g'u;zqJ*|njρ  McV,=}Ɲȳq=|{~+y`|1y>>Ӳڑy'oxb~VqjK~rl٣>CnEÐ-Szv.{t 煇 0a[ك:[ccq2M'}xφ?,u#Pކs⑽O8ޗ+?Cg!/qqwq;E7g_\w#2䫍MW;uFc. :5Y5&'6>lܭ+:Qmʦŧp ߭֔9uAk~[}s_O 7lʗn{alou8s9; 9;> ѲoSjK7_'m;!d/:|> ~ߞ^7s,~0=' %k_ż_W_ z``n\CÍ ܜ|o$uCsC. _ ~Q! GS;Zu?*P<*u=\HU5#:gZޗ 7of]0p K,1H~/l,p&~/߫״ gt6k,/ƽK dO|\ =pD?^o^Ļ}pt ؿkkԤp=EPE>ϕ4+77µդz sQup52K'Yd=^?8Q=_Yg/z1y &6@ŖOM ~">Hm0s5Nx:d|搇+?j왕88_!ٱrr£x6l_'[_3Zzǯ[O}?R,cgIO_5"830zXy3yZ_盳B}U-_yZX">=Ro¿ggC>U?|9GLx` ԣb?OMF~/w~}>33?d3쟼ɀ=%Io1O8r۲7zxu^?fJqOpgc[.ʟdO[6@ bquR 7~~ah }ze| n6tI]޷|{wIg@Cևk&>,As(4[Hmv'|A^W%5ȯk>`tϭn _^COfkG;J9S;6s{k:$>! AO9Y| l=\[.x[\}pw 8^ qogx98Y_G#3ܐ;~Dyz=^{TqH8<òa_A~l ~Astno䏳Q?mO9唅k<]d Quq|<~ q oùe'k([5:Ƶ#צ(v! qo|?nOk-e=%vj [0cYPd:wé'9M56ars?| _/1 9jp_ؽe8ub4ZXMfnig7-OL2IyNjBt D  |WbO{_CB֒R1C^&֋j;ٳu$rYg;_WW'fߡV^rĄ\K~ G]iJ?=o!/bal &ش9`M0p񵃁3' a#WT!Ͻ7=ȥ=w2}xu~)0Pq T-oW'ݲctW-͚v_|P/fzo<;os㡆?~T^ rL%l3p9luz^׃ su8gk.n ,ckfDy<wYO S5 \j[ 8pLow?+0LA#_6?I 7Eל/^o& ' _>tC~Ayݫ0jZ{߂θͱuj8UBWb`go160:C֍{COo.́ ƾza6F7j~Nبu9N{1-i>?}> ;Ls$'x,9l0u\u897y" SD~|x3[{K'՟eO?.anx0)\b懁>G1҃.ȚTC wzj>Q=SDwߜEgAUγf9ϕu\zEp #}r8PjJ(s3$]LjzqB}8'Lz_Lx>y7q3F{5 ~q;Ldhy:S+A$wG"y>DG8 am<ؙ`==p4@9.nX?y٬8cc37gϟN%/(POR#Y|p]8#"Kkzg.78|>Cl>8_gSLoGn-޸<_6^7`fNnٟyX'婳8mޘlqé[/б'~sYƠXOؿ\{,ytX٧&`~^5M!H!!k 2GTc6Xz}y_}g30C[0#b$46`m=wjhhhhhh0}qG扃UF_Y zN?qD81A(S@HxNBlK 9aU-F^WgXnf 9.Ž%޳w#\gȓQcr=Ef]MAZvL8~^5 Xy*]ZK> 8Yȳr 7 ߏ/ggGOP7~;eS 8>OnQ@ܭe׎7՘S # Md͏gy4^+w75%7u9=Rc$]?Zr vuH<;bY;?%6'>@m4~9XSػ1qZd}M ЇKߵO>ϼ'Tr}wxnG/ \IُP\"?JO =k7l_=^5dV'Ta:s9O-X~ k, dYY?权(z0uy$t|X#87?kGcnO|~z|}/`ev+f8^>'_cܵW[ \=W$~8^S';y&zF3<^O'w=K6y@Ι~#9c|gosڮMz>L@܏}>euj Ԃ{02a c{h\ mkBTxwT?EIF\,YrNc!YH$%*\HJV2(NUϛ]X\(s3sftZ5<}Tرcrqٵk<~e }޽{ri9rϨYƌ# 67ъ~׮]~AvܩRO{HH[N׮];ԩ9%Om{k;{B{=u&)3Fåt3i6l53moFONZ[h}_xQJ,;k6jH6n(O<{Ν7̟?_]{ǽ'O.}=:}]{ٲej_URJv N;˖-lٲEߣ͸c/BuArȡy}3gʣG$s̾rhƧ~C>}?h޼Ƞn<ϒ%Kc:@[%VZaÆ(Z+C`ޕ1cF #I@;VVM>0c4h_i_|1͛Crчoo:f0 lmgR1C?1c'wcu| (ljg*n</siW?xegM8{y] e#letR1gC1 0 #xX|>n>\rYƳ/~U#aM _>3 Ak9.v0 0 ?~} o@l֬Y5;bm;tY&M{QϏ?RсKCm)SdFtߗxipl۶-2M6?ח={vSGn˝3 0 0ixr?s9? h8krǍ'&LƆy1BƎt$-N8Q ADq]O.7aJfv=+rۍ1[uM| M!|^@.;!hEy ~Cg/>Z:\_ËkQߣF '~ﯿZuMboؓ6:1hѧ{b˹u uM 6h7룏>ҶCh^y6ӌ.0`^@%;ڰ/k\}U|ErY15B߅O`<`<~nh7?Zb)`Ȑ!>89GA}FS;ߵkWm{hIGy *@4%9"~Q #cΣЁmzHyMw?_c 7F<9VύiGq9Ga^kQ9{\#Ӯ3P/B `n0X`~|y;Ȯ+Wc+ZF˫ꟵZqX+3N]`Ycç4#?XƿǯKN!Y=|ݬ7>Iuq>cmdF0 0 &ޚQ;{z{I,~ ުg~/%X%>N`3_GK-q@x bӧOoc7{~O^[]̷ ֭[vsoaa7w:-ȋE 2G֬Y~ oށFc%v> #t JhhhKfD 4 +V,5>^xلb$I,C>9r{aaa]琐k%{ljGf@'?F?~\bƌ)Wp(8?y^)Fo{{4ٟ (ă[ xi+0 0gc얶mkBTShx1 @c`,=30ufa~{"$ݟk9Ns^g۶y<s|6˲<Ϻs\f_oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿM6oӿ9T' bmkBTϰx۪P۳xEQ-(AA//s!!Yi+d}'!ՙn7r^,#·5| WCxކWexax;V.kan5 BwP?,_߷gZ Z5womB߬n?%l [voX:W}_Jw:/yg;&;ҜJ?/(9ծ_;&i4Α?ۘc/mLG)we?۹?r6?`f[~7,?'1926?J?C_tOlټ'66?N6?Pua'6?N?lٜvLa'6?`o??lbSks1gsl5߱a?ml/'6?fcOaf۩gڼ9666?؎}Olce'6?`;i~`Ol'66?E mkBTPx휽SQ^*DAQBbc!ϥH2M UH>v 'K7Yk7ޓϚ,庑e\MwLwMLMKS40}3}7jZ,a:|l6 $l6N:FQjB?(Ӓ3}0}u+EE_5:EQ >:_? Np5r~z"FSUЦ{/צ Oks_O}gKm/m׆6>׆_X?ksh 6?ig_!ͩ?`׆Oڜ#m!M4׆6m~W_?iCCm mbOmh4׆Oڐ_mh'm!M_Y/0kP` 6ڐ&'4`׆61u?a6]}U_?iCC?5y6?`OmM 6҆6__?i' a6?a6ڐ&mMW?4׆_k mb*/a6mz_k'mh_7;%J+mkBTĐx+kL[Q $#Eu@,J)#Rm!K N|Odsكz{UOOOrqq!?4HvYeyyG9Kzz{>^222S13x`߯f8!!AdooO~/˥o8L<5?3^ppk dSwvv$++Ky'%%ErrrdffFjm7{Nacl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6ccl쏍?6[l/LS%sssdzvAnoo?=Ȯ1 >JsA0s` +N ?6f_gQb&mkBTWxETY5lXb @NpwwX`݂$M N7Ӹ$eN03~UusϽ6KƍСC=k׮ِ!Clȑ6n8=z_xю;w٧O|ݖ=Ǐl29seΜƌc+W;wعslϞ=?}{_|>|`_~M͛m…_RkKIIaÆYŊmƌ~}ڴisNo+Zծ]Ξ=&L`*U޽{G{Pݽ{7uV3gH׮]=7.]ڦLbϷ… ۼyKͭx}vF<??Cȑ#~sv-?8p۷L2Yb˖-VD ?FmժUd+Yx¦NMΝۺufVX1pႿ.99ʔ)cϟ?}t.1%K[`9s2d`˗/mѥK۰a?~Zny>]P!79+3ɓ=6GY:uFvuF;,Zڶm}_RV^׏֬YֳgO#TVs D\oo߾N\qaÆe˖$իWԟ?~/_֭1HرcO_g>}ڥK sж;E0F?}ϙ߅n:oӀXؿgցN3X+=spbq|F'rm۶yL8!爈HX۱̿֏a?": 5jX ?4h?|:1爋}Y8qk'N6m-رcQG 5߰/p˖-ʕ+K1bl2Gj'%mþ V۩Џ֩S'ȑ봋/Za?OLQ-if͚'soj8aר+W w|ؓDk䐓'OF~/_>={vT-.]-!^*U>jժu#3~,Z  W͚5. ~ݻr͚5~C^wqA7 />3Cb}5[hwꭡOCO38ׯ_Wܗ13oxk@g!uƍ{na/90'O<>fP&Wq_/{wǾ.B_bs`r4+v ,d)K;MMfAb,o޼^_&)ܛ\`rРAC͙3'!ic|e_yj)39ݾ}ߋW@1Cq} ϧ]mK`n)Z7s5kOdllLk!WWWz&233#2IJJ[IFFH~~JxxRYY)bIIRζGFF:AH끁ե///z\\)pm///299㻀m'I}}8s`\1˵?07Œ̜񝝝z755>&uuuРsOwww:]nKseyyc{f޶S}VVZ= Z[[%((H8>{0>>>2>>3#?o oa'}|Vpi1---ӂ?=fuqv#n ƹ%nF!B':2 %mkBTjx1 A0FŠ{ ?&}~]L*nUUALB] mkBTxӽ@Ft ;[ QCb%bX,x a#,sh&t:neY4M_wn[u2K7Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nv^EQDeYTUa3<1 n _۶_k_.q_v~M?{?{$!mkBTPxjAQJDQ]O<ץw1 gg~߃ zj{\^t]+÷5$| :yxGA(\5Hr]'IY*bgz1yoCgj 9poJI\gt??fVRXhy.m?ϺncyWZ:\OJM_W2gϗ?ۦ/=*r??lvMyٜ`n;نr_2gsuϛ??lb3gs0OlH?a'6?f۔?_6?3G;['v96=lb+Szkb'6?f[iwU?mJ?lSοc'?f'6?Jj?l|?d'\o_/6?9'66?ئj?J??lb3gs[O/9f$ K !mkBT x۳WƷ`( (!!&$ 9(hE$!K|Ew**.T@Q% TCLΚu}9=~=3g}ګg0Qc>s/XhieNW-c--,ZLL̰}ݻ{*Rɓ [~QϞ=[*P@_ͯLe/Oޞ={#G׿G:KYrt'N@)uT*\ߖR R*Cm+տ<տRӖLRIC?|ci^=_5ɪM#|M CBgckDy?Nuq?fQ+KHۘ#<׿ԟ_{寪%ȣ(Gd_\oY|L=2gIҟۅcǘO<`yiPIoootڵѕ+Wz (V),_DSA=c?O6mߺu Xv5kWתUYrX˗l2tңXdI>{,&s+!P3D5 jb5>z>IHky#z.m+^ޫs7)#bQG 0) _{A?wM3ֵг/ce+εŷ/̨?^h k@^H}ZPxiP\_2S >0:r^6y< ;1'`^y[P|X_|(甤\}`>Tz=@yTҺAՄrX/qxy|{'^s9n kD@\>^ oFNx񶒋j@ @h=( c/o}"}džIysX:z<`]s/ה܄k}W9@.кpi>' /xZIǴopc}]`WkAB-0y`i ^}@9e}%%Ybķ3򜓏^xO=? ^r{Gy(|2y}(օ|>  Չw+GW/ ^ P<*|@z ϲ\s /=\}9av 內sMJ>\rׂ>PMsՆ^?<c|{Żƻb/3Zԟ @y5Ԇtf' ?!ŹO>'Zd- ԄM=.@1fqsy)M|sʪ? 7  ]!f`t;u8i^K:V)?T kM >l9y3;'5Zx@<^9.Ӝ3MϟK5uLsr9}o@r>@.Xx2;xN\ 0N0>`o}]sʫ\r<9' '1#/c[|>)>t|QQT|/=! |;=ʎsJxO>>90:$9)Q9#y'd4<I .?pOH_#iZ92>#&>C%Cfgc#ZOsLE}FjS恐\kƐ$>$Qv|7dߗ |^~y Op{U<䂐\^HR.o<ꟲzN߂'xIڸvW| xB)ROu+(((((((((((((( M FmkBTq@xKVA2/(rѦE Pl+ZWnt߸ yw̜;f4lgg' Dڠ/;/;/;/;/;/;/;^ Hj$aaa---%Y[[i9ML`R\#ϵռo^XkkTP /ECL՚UQF~w]zWoڋq.J00}Sjl9מipxoKS=5o; $n=߀h^h^h^*ic.қt.}2wդzW7{;x3j{jNͻ3T6O޵XeTQ&I:#T˓i]&i'9ŵ՚PCOXLz7cG0d k5,koC<4U8OfwEԜNS̻B.OZIu + 595u;% kP2w)ƻ:B~en=Ez<sS=5}ZRTOK+2hb]`mkBTx;kTA7DBXdA  AA(hO* JBT)R'pVy̜3;\3{9BFpm$lkk ;99Avww$Ю$?ڱ $ ku||tollonn26scm=#%?Ƴh0^ofyYNo:)::}׌qs7?=:kN>y]Ws+9X2\HhmD'y^zeuF|QvBB;y.~Ws{nY̗-s[εz/IX\礲շ39}|5ȵT|Go;UCNOguTӇ|UwNͽ[Ly:I{B^^QKy[Nk﫻S;ܯN~RKƺ_32/;lyutq7]Ţ/*9-oIrNrO.мܳt*sNZާCN>yם\s9jymm{!Ou8(M=׳X:żôvzhx .&A|~>;rTͻ:ɿ)v0rnۛ˳>$t~ܛ6̊Q!gBvETt+wӘ;Npy憇랹餻] tc.v;\]2涵M虺2Ӆ;η]/z Ȗ7i<dxǴtyH޹;NgWy:53F4!pLy mkBTqxylݦjڴHTD)Rk:`E T!fiY$$&6lTǵ0b1J$`c}~0 sFgιیLϞ=#AAAAQQQAuuuT__O n9Oҋ/_NsNJIIq vTVViݺuH+W۷ݻi׮]n:ի4gjWcjkk#vщ`οs͚5Vjii֖tfmzZTۗN֬YC˖-sjkk;J^z}… 9OTWWڵkit9/jZ=c ݾtǹsɓ'1UxUWWQ'f55o#`EGGS߿?ƆF;Fkkjy\7>N8A|h:ʠj9V{~Jr 2uf?=o޽zjcx'˗/e@̒w$SlL,דA]v˗/sJP{*瑢E4i$k<rwCPRn+s<*+*Y{[JMMe=E'OLy(p6]UYa>uii)m۶@~~>Sp4uTЯ`3]_['OPrr2Ν;s)SpaGGECӧOsY;a^`{LL >|t?M󥥥AseeeSSzy1ǁ'N#<`@vI k+%?"?s|0n8^6̞= F/_yƁa>z(_ F߾}iڴixb.>kԍp`=z4)_w ~927]3gw@ֈ+ӕ /1C=8} 77:{=Α_;gϞ很y~kK:4hk@=اz=4{Lڼy3ɇt"Gcpa/ WX,s~t2Nox_t)-Z1Cݧa4r vm]Nn߽x8}%}^ Sp/[^\rEp1vG~Ip/vA͛ob      <RAjj깇_=5+MfH(/8W+Su婵gc6;&#\T\aFo@ˇZ)6˯|${zyjzyNLLm'鋨}7Kŵzj:vۤv,RQ[W/fkVtjetz`dFվd3Sq>S\yjɌȦm fm2S3|&wke2vjɟgM\ ,Y롥M|6"z)m\MjFf)ZSKgF0l2 Ħ`U+ϨX1>}k* MU-Ϭ_xs;j(j^QɌ>6L0kÇ&R/Vj& dT>X6UKcVлhTKuթֆ^9l2[g&-2 _q?jh镱WǦ`>C0l _CaSӋMo4R5NOW6 z6}~'{!dtlEilm<'cV<|AA-Sm!TN:1'x~_ Řo2<ɔuKʠ>M9lȩXtԉĺjl.s**o &r=G=*T"88s҉݇nnQW\J|)Wmeُ6lsdN]/`]?quY[&q3&+Gi߻l[xr2woc-ul⣘9W`/j_>|.b_;tuN&kE6'yNJx\9L椊W͙LAlG>>R4*DN:r9&are |3BHtUUۃJqLxY&sf ~9נt:}wZ藵x}͑96'UXf09y}qAm7ٟk2wv⑓N %.C68pszx3r&N%PbmsXM 3VOs=}Zw-ٳ{%o߾7 8p6:t'ZG({kj[Xeu̴oNd0uZk%|߫<Ȧ5,s_rk^USy5AsΞI󹪼%w*}y/ާ9M+ʝ{\_b,kNzJַeD]gya,)8J\Sy/f/2>_'̡g]eYUZ2J|2e>A/*m65g\{ SIZ:~ۥI^Z!%SMa>t6u.VT{{s)Zju.3GyKkvFzAm=$ݓk^œ;=g"k| QKq1ױDO$!nOc1Z*Qd$yYjFGv}xzNZ*D>Lxժz}4檷5LQ7\)=y^絭3QJF@f 7drVY!ܾ <9 džM]cyAӓ&qmϖe[=os :ƇT{ {B{r`m+߅ #Ǚv})l*A@am+,9%Q_k)jjY+HO;2@2V }6Bŭ/5ʡ'_}>LoP!b\#doo+ᅰ%l+aUB!\. 3)cp\8&w a2@L_%\h|`/ Eߗx_2[d}Sm/u?%>YwaCb'_mcd[ /!>tW7]c_6C\?o߷za6C%U2t?9_zɝ}?ۼ|m _mC6To??mG۰o? 9?:o~SG۰oo<ǃy.U>u߳}r墽1}pxko_66;TOe?p]W̷/gèw.{{Ǘsl꽞ۚsOW]38Y{~wj~?Zowv]{?wT>;rnLzy[=C){~Hq_>Zoz9,&[Cj>ٯ_g;Oy}=}Rܐ̓qsuNew2_?93Q5?K qmkBTx Ȁ(MHU߭sgzfNUmYn4 `0 `0 `0 `0~zo[?>;Pzx>7.|ի] ޽{>V)C߿=zҷ4۷oߢO\ |WG}K׫tW:/}Wm8Ç|tpO=ȏy\zSo߾sQї JוWOIׯ˶I&x}:+Ym鲸oݫNҕ~ݐA6_:StsTˬ:H۩u!=_Н9`s%+@.]2ns?Xf#mUwD]_VD# #{m l:ӟ#},%L?ȈKoޏ۪-=-0^磼QJr;#=^gɮ7"q8ڗ92(ȁ΃2S1mVw˿OON4 ۹,tV폜v_q^F#[-_OwߐSg6l:y%?/e%ֹ.ji*C큾F}nB}vWtWR⼐1JS|Zɸ<H+t9;e:x#w f׫;_çe ?b,zLRGe:yw`0 w{ swsui̻G`]-\l.Y;;K^Ήު-/Ug>G=;^Xa~~3q KUJ^Yn]P Ǚןx,sG yz5-$k2_* G|c^L/E2라g(qYۭb~?t:=N@5P>Q-ҕ_UN޳Pg'V8Wa Q^uzù[ySgo̷iv˞7[,tvs{ p|wd5^l?^q `p)X:t<.<ލG{g`Uױ̳?G\9O|kU5NGA\D[XnXdzxN뀜ptY̽M|?Q-?b[?g~}c:<wV y(Oss#blyboC[buf?J[q*hjwq׌#`ׁS;Gx _::[eG/3ê:] 12{Wel>Ny9U#uK_϶gxc^#to|@վQ>Z o= _;Õ[q;0 `0 `0 `0sŻ%Bs>}{g $>ؙS1«9 []{A2?skeG]UzߧSs*F < sGOi1B\S9|?wg_&ž WOx>蚭`2 DmkBT x: R d(H^U}f^vWnϖF#%        i8?~k{Br+ݻy˗/{!w~zAn 3-ylm{_umٻ߿<==^YV_߿Z*vvpV۷>[g۷, JO:ѡ9WSyҵ${]ETS_:Fz_I#t;id):]f]Suz[K\.|%P9ң_V[KT>]\5SRx6pN[KmUQeoLo7xBVr{T. +gs㎓ȡ4fwۻW6+!7tn|KM rSyH$ϕwytKU3kX%n xct^?Ɋe8w-S6[o3l뒾62?}p|`WLyIV+?b$om~5q} =_8˙mvBρK}[Lʟ[9'Yk )/gͯ3טq[3nPP:>w{g|Q#4]>e ך7u{?  fи%cY~- gY1"=/#}hǙ  s+.97^uA|N# T/{|_>.o9/B܋Af7|GñsF}&G;ľ2KugeϜcf=;803?qWr]]_ytKN4F;}M{39 V}qE)\R6pm8Gyf{BWf={ To7O܈ͬyV3+/S  {@FЮpO.\x.g? .8yp/.{ |.;\`   N][7d 'q#{}sg]CVo̾G72ڽf%--: =ާ|]pcpٺ=#o~An֛9/{teg`W.?iwNcYCK0H[{8bzvoaFW"|&h!5׿)H꺯Uف<ʎOc?zp}m0tk!F~' k׀{)g` cя87ދ5gw\PZo2>}qǠK@~>:5F`ē_KSdG'wwe6:W>| x yY܇VԀ??k/Χ뷞碶< 9ok /ؿ ~Tp`7dGyf_tG{^=_Q{ 9G8j|uPr1'kû_v0kd[w~qs?zr)9:O E%۩MaKuG~w OmF蛱 6zW6|NQ|zaO;=>Ƶk_h:y`43e׽Y#1   ^܋[֘Qpnl6~HSuQqK\#:fsl·Nqޮ3չ8@6*c=~N^5 ?"kYyJ;W}Pw:y㼛\q/2y?2Vޑ/#)ϸ^tkk 3bxm_oOVOs]Gk9^~^ϛQG\[:۪Gc.ld\?X9kY]Y-ڿk_!9>g)^'6ȓ9*3]x+:ly}W99+?8+LBis)       `i9>}jg8e)i?|%bY@Y؃At%Y;A(Ry]i RuQ- -կ}2Vq*d} q^y kt2-31G2=!P]px+XOxWF!"hf[xq_Ie%Y;8o=ۗ"^dĆ{=ĕ{îz^!71|5ИwImkBTxM@aJj: :*(h(!ՋFc'"}(Ǟo<ؽv777iϻw׋#mz\'l䗼~#ǰs{]9'{{_vJ"N[؟ms(kfm^}'ȸXEږx6&i,www}iE~ԏ8'N]]s vuN&1߭ٱSHv|1<Kc=T<ɟx.=:8'Xu{1Ǵ!(HLӟlyxZ͸絖v0u,ӿ[2m;/Z?$MqSH w﹁s22oQ9}6wKogڷcoioh+|r ?ei}_Na9O3Kl=S|20;KϠ$I$I$I?G߹~&߯*㷣xߺ5ZlKN=_-1{ֵw{H|wzz\W_o{f5֢zov1kz$ԛ^F$SǾz,mH> K>96R礳6f_"옱ރ8ې9.S֭P|oһ[z]I5qӬ>[ɧ~]_J%>7~b.kֿ:P1Ǭ;xf)}CSe%fN[{Ƕk1/z֦?{N{~w[>w3ǵ[ `M^bs5xj1/`k1 <ށ?}op(Sfgvi伞S{;r,{qH3>x2/G߱F:OYW=^wlsz6I]Ƶ}O>:*vubog>o14|³UҺ.뻭~?/I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I?=IS&mkBT xM#1aJjHt@<t3UP-5PBVH$yZ"}}񌄏OOOG>p8l{V㯯2777Ƿrގ#qtHDR sW2WWW[=+WSz~~b\O&C|:GӹFƒQ2e[v#}븈k;f݌s{y7n=G*7m*s ʤMb`z98ܿ}*Ondsب'%=_󔾏s趈`4S>M^)G۔I9ySs~jjS7ڙ%kn}?or߹}z&Ϝpziպui~[?gǚKs ~vkUjNy~wgPrɹ#gx3.2)3gjH%=78}sg#3/|}O_OyVV5r>%ƨkT~w*m0d/[OȱC]ٻ߫_+)3bկ{{1S5؁J3쿎uƑ9}=jm|~}˞Faf|><#z(kއώyN$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I_K=mkBTZx1 1 Al! AHsp3͵'m7d۪=ˆsk?ä&@IDATxwU=gĐs%E{]E~7[puww dQArɹsC=Mb3UNH!@ Lg@ @ |w@ @ 8mT’$y^7 (@  鎎O7H8I`!@ 9Nlp"6L|F]YE5:eyJ4e8itQq qxDdzxㅕ ]ɞT?it6la$Ii =n֫c[ch 'sZO~G;@ @p6+Mv,~̬Ɲ7ami@ %b M[UOx⅔D@ @ЕkqԸp-mDbmHlՈ$NZ} <#7n64Mnv"K @ g XY !(Ȳڲeʇ~S"~"ڏظ;0OjL_.s~ꩧn?Ȳ(]@ H64ͻaÆ?PGk!CXC׊X$iV2;̂HH&迺P"~0!tLIdr4b9|^f8Nd0ȗ+WQ{7`I#3Lֆ!2aEeϪUT|QA9|lV+Z@dddn–5c5[սGMt !DpVk(I?^7i/;lÀ, Mdy,]Tљdl>{*E(ǭM^?ܝ4MC,q@:(l߳g;vs5X-H,&ҏ $@L>5 ()&|l6*bٷ¢"s~_>EcMfVJ4z uulzYL^nt_m>bwϏVR{l1o?edd-/ƺ+?o!{@*lL&xHKKl6 1X,0LXVTUEeEi54dBl6܌b Z$Ɉ_Q#>ٌ=`a;=~f,c2|8Vrm[]DSSt:1L$Ә $It:;dYjԄ8n 2Np8l6(> TU%b6ZaѨM&fFVd|l6~z[v1cƠby87nh 4ٳg;\vBmm->W]uyyy-&Ip:[J.rc|<իٲe  +h=>Zn,k.V^W_M~~>^Ff3pz5x^/^Ç^رc|,?*C.]_M(bԨQL2ƍټy3@K.Çc6?oa\zvYv-dɌ9>#lقn ##h4СCl۶`0db 0󩨨'? 6Z~s}ѽ{w~rM71a„nlܧԢ*H|>#VA̹X`g%DڎBFyS̯ PѨDUå8wẒbz8֬LB[q֭gy6eR*sp*7r.:Dp律wӷ̡t'{kn@j_L5^h2 B;)EX-hZTaX>K.!ӭ[7.,Xw?%K0gp\a>zɓ ddd nXXjyyy{@0\K?^z0455h"СCq8TWWRRRm݆vf3P͆d2  ØfJzz:_3f`XD"8㋺n741 bZWg]ll6c5/u:|W[|ͼk 0^zq?[l?fȑ5 ›oɊ+8q"yyy lD0͆ DF[_uAc2(2vEQZ(B(2F[iAB& N45~~?v^x3fo?^/w}7V]v_eYf!IGIl7K [NEA?ŖGoSI ΗP/6Oe<… 9s&<\fϞ_V+3fi[lo߾1IXj?OOίk4M/`Ŋ 6!CP__ҥK 7hDֺ&TC"Q7]ê }"(`m jyf6m1+N.$F)yumBkGIUׁxS_5w޶Lbͮ+b:k$~%dqX֮Eں4K4bbV)Z}-T yGnhi6,J8!.r3͌&"bd3Lg=5 \ VBdvspU6H Cd8~?ݻwgXV.2z)jjjhllDQرcp89r$^x!>C3iӦ*UUU MX?Ǔ#<ݻ4h1 3Ryի(_pM7Q\\̊+{nOθqB9r|M/^Ν;^`޽ݛYfQ\\ҥKңGCee%f֭޽_|^E]lfŊ,]=z I'NdĈ`?lСC呟Z̼(%%%qFF}B)o۷ons-ЧO-ZD80{lFŮ]xwgL>Io=zt2{lxg)--.cԩձdٸq#={dĉ;(wAII `3m4&MDyy9|{fٲe 2;3yi&fϞɓ|XV>3vK/Dff&@!Czlݺ%K0uT.~?ͣo߾|'t֍n ͛Yb@[o!CP^^3<áC߿?f";;_uu5555L>zyk5p 2m4(8BFvcO^bJJJݻ76 K^^w}7۶m3F8fL<ѣGcyٳgyyy,] ڵk)((`֬Y̛7ÇnG_dϞ=уoٴitM\.-ZDyy9Ce̙ƻ[73L޽+Wp뭷OEE ,}L.\HUU3f`d߾}۷3gҦ QSJ`EfVcbeO+386cҾ L1jR-룗IEZVtl Lҳv9ki&Dt\8G {#ߎ{6, Q$^&琙NVziN퐝f#'-4QJ\&TA륲#G[o1zh233:u*999|,^0u4e˖O0|~1`V/ݻwW_?96lhyZ *A@U\@b ¦M|׌1łl瞣gvz)dY^{ݻ3~xx C`Zd Pc2rHnwΓO>Iss3<Hgyp8̑#GX`CK.a֭]:ϟd+wߥ/y1{lj> ʨwsAh4J$! qw^~?k֬w B 8?h"Ͽ/9 Ă hllbpӟUV~E+?> s=G^^> /ȑ#(ʕ+ٹs'r 6m^`֬YA>#y6l~;.D"ϟϾ};ٸq#6mbՋ;#FxP}QRR,˔HYY^ݻwOsM7ڤ͛7cXXd k֬;_Yyg袋xͥsDxGhnnfܹ>g:t(?y7`ȑXV"GQ[[K >cΜ9Z`0ѣׯvO<_=ٳy7>}:\r%477 9t萡P`0Hcc#n#G Ƞ;w2zh;w.D" )//7|,yxG$gyP(ěo|=~C>}:oXf ۷o7z [nꫯ˗D;w.$#PWWdz>i[vqOzz:{.Ǐ{v`0xƟb[WTUՀ1cd&J$#+VmDr‡nv[0YQX6ĮXqhiFv8~ <,r [PA͎ ,d iQrݏb2}[p8jG3p8!n4[ QB!²auhUh@)> &dggs܌j7G{K/EUUrrr())14b;?Gy8} /hKss3SNeŬ^lzÇ믿$--k甕!2&L/gϞ=|x<4MniIFF| dΜ9rW裏R^^N8 /dʔ)(J`XwD"13fxXp!555lڴpz6lp0U1lݺ ?O|ڵsj'ѣ`Ք3zhvE$jbyWjB\y\xD"vASSZRTUL}}=3fd21zh6l@uu5;wbGQ__OYY={$##3gҷo_2333f ˗/2كf|>Gvv6{[nj_Gd"-- I/z߁S6t6nH߾}5j>!CvZ=\n7z+GTUU*ƍ_1qDJKK9t/q\~<䓔b2e#Gw^uFEE|7ߟ1cZ:m?> .d>|zx/_΂ 뮻eO>3g>Z o߾OUVN -#G2e /2cǎsΡOFFоo>^6m>(vbƍ\s5 >q͆K]]nbĉZ >LYYwqyyy\~<Ӕ3vX^~e{9Oil6\.aB'LSQ H5\"UUa [~Dá8D&Փ>Q2LHMQ&$`_f\hDa Ntl I($y[TvV|C7G [ͱ@>˜>H0L+HC|>1PV^{ &`63f ^{-MMM [nO?СC-i˅餪IZdddtɄB!뇦idn#MIxNCC8m2ɡ@ 隣ѸF/q:1ndffrbZ6F? &0l0.\jeKzTUU_2455 X,s=G0䢋.bHDff1ᠶ4M#F0qDhlll6ЀEQ>Pի+ ##$Ikw^f`0H޽y[nF8EQ uohtY 'UU$ yfy^/s$~a'Q\paR ұ={yw {s3aƏ`۶meȐ!<̟?g3AcZx^ٿ?PSMM 4662l0b߹fC$j5Z&xWf֬Y,]_H͆李U fdʔ)0w\y[ի.l SC+$Doy脞L lX0ҏk&'z y&.Hn78H4XR-q!8.]^) Hf `wi#iCGh/edq9W0y0\'6Ɋ,PpJJf[YCG 8Ī}PRRb8>5j|Çg444ƨQx1,[~㡹677fnF6l)S4h>vw}vx<*@pAcJX}=z4+V੧"--#G,lÆ c<Ӝs9X,>L޽A .gECC>`zÉ[4÷ P^^Nx<ݻ#G2`h˖-r?~f3HFC[x f.2Ҍ2d'ntra4i~)}}]wl ~5M󑞞aÆ Ӈ={R^^_̐!Cx ,^o ny0`^J6nȨQp:Fp0e>Cn76lgϞQPP5kxxO>81p@~mK,aȐ!n-[Faa!#GdǎYnv24BN G9&WfŠ|cHIGiu9'i8ZZO~~~;*EoJ4Ɩ7ߐ GNJX8XS2/%#Aq`vebqs`z23 =;šT`ղ]AVkYң;vET񒙞@07e[K\<׃*ėClb;Xf H?&v;5559rK߾}ijjbÆ 8p={r_58x Gl6ӣGDl6j*6mڄbo&//Oii)n z$I|'dddp3_UemBDŽ 0LZ 1blڴ}PDqq1iiiу/tE'OqFJKK4^zYrOΰaÌ:ӧL>sV^̀ː$CRZZg}Ft^^nQFq!6mdrV[4СC \M7݄$Iu먯g̙t:0`_~%;v`ذa\y啨Jmm-V"''p@/,,ɲeocXl7x#pPSSäIP=77\FECCׯ7&uݻ7YYYlٲZ 9ؾ};L4fwᠤĘG8cƽ={2tP<ΠAݻիW#I7py 8p>}gy*6uM4֯_aeeaՀn61RY*ֱ'x$:bĈ xƧiLVf&vϾd2.&JZ~xf/l:JWŝk)JmcS;xPbx$[kD5tO uD^-W 8ȲLee%'##\.j 0SVVFFFƔՆyZZa@UUaۆ˲ᠦ׋l{i}`WWW Um^7''* NVVDaaq]ee%@SjHh4J^^UUUȲl\۽{w*++[M ikjjfufMMM455iYYYdggtuJQQ1rss3hF^^I!`/ٶm_|1YYY455ѻwo~?~\, UUUf$IxuMC[n)**&#ފ v!JEEhHCQ|L&FֶZQ \$IW_eѣ`_K;mb2u._P0V7z !2| ̙x"iHLfNNI尷C!|(F8:0Jx$$j8fB( 4 Oc$}iFfz6٪`P᠆o! ug1͆w#n $D[{x%jxEK4#FݜHUUC^?k_ǧQU[2<*b;eJKKIOOK.!33u-:ЯӉ|j1ϸTU/\& vߵkv2f :t(^U?׏֫տ^MuO40z@uzݵWqizb[=6||C]ii);w\FjuVy}}B/GzO??$I۶moѸ_] 1,D}@3j%Ȳ,l6;o43h$b?T[DQ+U45J4j2qra?Q%bEZhp$bl9N-,ATbZOiidffr5+O04 *ƍcɆzS>ς Ջ~ X&b9"VƎ3ah6M:: V2xxIZ 椺Zu0Kt33}@ _c ψXْgALjm[M$>ÕB@9/;:Yy+AŮNIItJOutxgZrn,C +j5rԧRl)a$2t '@ 8sg@ icx FbC Cɘ+ٱ6M:)6{2gjjjZ4662m4? 'iKY2'tUU "`/~)դ7|xh:dqL9U~&8-|:,ݶ,@Rq}*Iʼnr}v.DF-I@%Id~%*MӴc}d2:y;Y8N.\ȢE'? ={D4-Zdn6LB8_'//rV\w͘1c 3۶mn+4 ,#--;zx<?4>СCq:__~H$~ƍ(Y#GϼyK9s[FşZWAѷ}LRTOŶ˙Oso⇭T0OOslz]$4rG[>ݱ +*L+*XA#YZLWNݲe cǎ%==P(ir裏r]wgfΜɒ%K(,,?dڴia|A>cyټy3ӧOz˗#Iaʔ)7[n{;w^ґ&lolǪv4UU@t餠u5$aX3zh)--Zf:sq:466rZ5dN'h*Eaƍ|g <S__$Ia h4ZLEȑ#58>|p֯_SC4TU5DPHzΓ*m(ڮcJ{".ul̠x^gIG zg1xD3\%R, &J= H9}SE'K/cƎ(B! fvɍ7H8f޽3=^]0PU`p8lk5k`2l7J Gx,,Î;%ݻIOO7D"_ϦW*5CΑJ^8t=]qg2DXж;ODWBo\[+ zE4773}t z~_϶m۰X,[o_m۶*3gDQ8(555@Ѐ P]]M Yfp8L4.g}~6lÆ p8Lmm-ho9s?κu;w.2W}}Q:^!%6!̧+|W~WwD̢%|@M.^S,2HB",p8lwA$ UW]{p{ /@=z\}v^/G9s&LNNPge8Nnfs!++ŋƠA(**ⷿ-o;v`„ \.袋xG?>O2uTcƌ!33UU|~ 4P(W}INRmRѹ:":>gym:zt$1DZ' hc5Rl&17m-Gsh&L:٠[4L&nP(dzz^~^/hFCC1cUCCPM$ Bnn.vFX,|>LvvL&tRWWideeaX TU%##fhAxޤ7I2C ,gѷ'^RRTKNL&ӧOݺuV21 ُU1Z-?,qܳ`uǮpLm#&GKQ0L@iN4Jƾ`7fFTVVV 86\mmX(qb&˲!q״um>"e!p)٠IzI9H6Iˎ!޿'#9WBodfa2$5OW?m{aOFNGGm/ϩI_Q*r۩o*1 &$R Ʉ,ˉ&JjkzaL$|mm--:EZNpr8w-r;s ۭ+ s=+3OWK]we9 YlӶHh hNaÆu @ g3& a!!]?l!IATRK @ id2aS+?.3M4McD"BN2& 1jtu5ZL)$f3NQ$ aP%{XA 8 t%ђp3?-5TB@{$ SOIB$V+w/$ r(X,3S>wW-,gDk]l=4w/PԿUUp0rHH8!϶.hď'op> m! 4bX|vSҭ[ }v$I"p]먪455vd;JD}}=YYY]J#2ѐQ4v́o\C{g{NeX|9>sFC8> qi@Ǟ?-`u$+~# `2`ƍ~uA.fdYu#++ tI$UtN3d5253Q'qyЭ[.y gI :V6 {"іӊ8$ ׋n#;+ Ϗl:J FL&E9+$D,X,E!ql6Ѩq,PUH$J$i$IBec IJxniÖuD}0͆ډd#2J$B0Qq@6 Jn,`|{biy ^3F8-B$vX,DQ/ʲdBUUVeVk{9 n )|H>ьXhS`9L'Zu@"44M#t8DȲD,444oczNVVVJBz**Q%XƁx׹߿?H7ÕW^?%hUUQES5͙kq@IDAT( ͣϏL:/<'p8]w̙3ש%IBUEiW1͘L&~m֮]1c ~~;zQ4E!Ж{d%Lvrѐ?͐14mUGr1z("9D5D UѢJR nglܸ뮻ݎ~VXA^^7nd!I@'|'ryZ|Z|A@pZhKVNq2zoD7-j3UUQ5&[a֍ʖ-[i&,X}+nd2uVz!֯_,˭jZF,ഒhdt<+'8 D 8٘L&v;hE re(lٳFl۶5kp7b6yg3f ={_v{1j(O7dY{%//W_}L>S$I?1:;wG?Ç>7ޠ[nK/{aTUeݺu5iӦQRRYjӦMK㡛T 0`+WBx A}}=?8{l;UVQYYICC֭'? ^^ziӦq5`Yf / .R>cv;+V\uU 4Jqӽ{#8Nv[oEnn.w}7W^y|ߏjC$xdž x뭷[oeҤIl6/_/L>}XV/_μy;0)aߕ:ML$* & ". b`XQWż/*g(,JF(90303C0 zꫫN:uV}K8gņ \x2ssٷyϿSuG4 a`ƹ'^/EEE 4~~i.Æ Cuq]w{E8ϺG"&n7K;H@m]{-a!5 43^ ;,rx^|>>J7ps'Of_^{R]]wV^_K. 7|-Zkf֬YՋӧm6GϟO?ᅬi[|駸#ΣO}~?Ջ>#~?| c&wu,ӻwo|A"K.e񔕕W_ͻK۶m1c۶mcٲe~vimۖ;oP(Ĕ)Sx7ӧ_G4͛ٳIII:n;?Ǿ}СC~)--%gfϞMAA.sps1c N?t^/wqmڴ!''~I(++ctڕiӦo>/^̝wgA˖-ٴi?r}1h .b@ Yt)tܙRJKK)..@ a***Ì=;wx>}:;vছn"##]yg5j}2qDڵ+</2o ,-[x8p̟?o0XnvBUUzĉY|9 .9s~ϟOnn.{/$7{1f4i­\(<ڵyq́D_":2g3f W^y%6l`͚5iհaØ0asaŊ :0X|9fh޽{?ɓ'SUUo'%%UU?>sxޘڍvӀHp8G+Ԙ!fffү_?V^dݺu{1tPidggzYbv|w,\.]`k֬aǎ4k֌7|;vpUWqO^Y0ę LuS$}oˋ6A7 Jl'ɕ(/=_CFa[0":-WIɎ`keP.:{-0EٰܙMٰ]} M ]sH!Kb_@ @Ϟ=IMMe|>ZjEAAaNϞ=ꫯ(//{ݻ80MӁp3, AjcnGXA44H,_j]>:^(TTTc_/%%%dff5 Ұa߿?ݻw7ߤEvD(ZUU$I񐒒B(raק5Izz:P3xj"09Nn7SLO?EQp8B!lQFꫯ6l^N O<23l0.|In6oLYYmon;=v_fdd( H \. Pe(==@ i 2_|_~]v1uTb?e :%I"55us\dffڙ$/77iӦ( <kMl,xNp8LAA?:u*\s >,;w!e;sNmFDUU{Vܺ7oĉ޽;p4i͚5cڴiY;3^zꫯ#p7K/0 EaԩD"FMzz:ӧO~`}PW{Q\B\Rl$ NM"4b>{>nᅣSH@U_{#LrjEG U\-ߘJgF\n79dpi NӀK^yw4d:]YKAU]qi\r%_ppyt2dq,Yyk0tLplݺ?AnnnCK/$okKb4k׮]l߾*c&^B{<%( \֭[v@UUbڵ̟?n͞yc>B!1 jf^ Ps#жm[{9<(x^Gcǎtԉ{3fFYYY zmzj(,,}HĘ1c|ddd |rVjEa̝;Yr%?8Q]]m;6k֌C2}tn6 hT$@mK0"// *^/Pw}z]wUUU߿g}Caz3Drg&]vK.L0{t~[sg VbͼL6D+(//O?;v@4?1rHvA>}hӦ 2vX;HêUٳ'w}7=Bed&ҥx@6C*wD|ޮFSI@WEM1-Q\\Õ,2&c2rD0>d#@d3 @KMK>qTQ%p;  ,3bNJQQ?0P#z^zE0DutRcvXXO`ؽ{7b\ $ivM*Sߟ!z_;;:1~Iė~*/HL딖ҴiSRSSŃF HNgߚp8(¿o֮]K~~>o5jNK.x2vXRRRp:tޝ4dYs:Z"-- ]ܹ3lt]'''Ν;#2&M/ cԨQ|駌9]ڃH01b_~%FښXE,cayyy~h<@YY999şgL'e˖QFFݺut*=ztҿƏɓ1Mq1|pmF׮]i\|̚5QF,s$f͚ѥK[x֭A۶mNgy&yyyu{gxN۶myǹ{xꩧ0`]vs /䮻O>=\^/=>.w,{,Mҫ~;rssx<?Mҽ{w<C>`ذa 6L-[ƒ%K#33 60yd222ӧsq}_̙3Yz5&L ++{w-Z<7Y1"ND8̭AAQ3<. k3,Z%5+$(jy>K߰+3L`I6qd~sd.6xV^wȺES~'Ian Rձ )xIgGV n@[ơj(?٬Y3Zh޼9ӼysHKKc̙hm۶s$_ bFp\hтz+j_[C<VL#f)zGy X, q. 5Œ|xZEo߾{jώ͛)((C )--񐓓ivd" +Ljuu5ö7Mcjvk 0^Kx<[iڃH$i8`̚5\Gjrrr&"BCUUdY& v:4M# t:N էӳ! D쾱LH," DHJJ⥗^?7ިW0 rrr@0̲,۹06B!Q- mEQI^uH$bYǺ.`4;qϦim>mݫY,Stl,jTspY53jrH2wGJCRjMӀH `v40jZ/Jp'#`D [DQao9!4u'nxmѢE yj:Z&J~x8QcD~QRh6J8j/Ce"%%%i0YP1@Z8FUU Ȳ,˶eXa{UGp8>"u$aرv&XX,&jUivfV{TU="S#b=:uk5(o&99ٮ+hz}g3ugDC}_D;7Z&`K/c1':akugUu!2!]hDG2]28 " 1̮(@ z!DC5 ui9꒘jk[L,@ @QБ v%)QG @ hl$o<^;n!Vq~<xJ"GH,UUQEhA@ $ ]㖉Ҁh5d'p4( o}FmDݒQLb .NFf4 UU4MB/2޼@ @pr5֏5OXP'tqC5r,ۇ,|>nʮ]HII!D @ X5N#kD,F ۸{ BhFff&/"#G$55?c2qD.V\Irr#A4.Yu,QEQ4 EQ6X-G @ Ѐ< V]҄;$A$IA0dǎ̟?n!CsN>#֮]iڵ / 6mo6 6p8h޼9z)))6$H$),,r!I~۷p8(**)˲Y@ 4B1nJ `xb.%"uY4A&+jVVn.]t:8s7otܙp8idddx((( 55EQx1 [n+s駟o>̔)So_Baa!WSNL>`0O?͆ rk׮@ ACp*AcW&ču<H]x'!]$زe Z:K.om۶fz~hƺu8HNN?fҥ|ᇬZgy/0vXV^5\Í7+=z4wuW]u֭t2w\>#N?tߏa8NdY@ रyf7oXHmxi59&0ҺKz$Ν;e`0HYYwy,\e޽O?@u yxw{С<۷JJJ8p7tP @0K.\tEIrr2\|\{ >o1c`&EEEG@ ' UU)--7nj r ۛp?h\p,[a3H$m ,˄aӧSNe4o˫: dffrUW7 `ܹRQQaȲLEE}v~ZjEf8ӄ@ r$''c1w\JKKi޼9 СCHD0 $0 ap883IIIaƍ<@h(ٓB!0 @ HIxx厉@,jk:Lր^6i@|*SVVƦMݻ74 dA0HIIM6(ʩn@ $K&a)jGk LK!e^c'2 V(Czu5!I nw2QM" %1#IM םFD$YB Nr iJo7 iЎ N(]"![Md,˄a"a;`fԣ%I1v=,#I{ iWCPH$,hV}}VUU5޽;/먮>NcSX}KNlRVs+h6͛De+]}%uV83]v>{ IIKKC4gl4Y~=dgguXLVN _0P*)MS NP 5ی@"I? BPI wRRBD>a`]GWl=a~TU%++ ] B'Ĭ i ^O̵i~ħ>E9B Kd_]ߡC(++#++9ɞ,.[cղ(//'??6mĽ6քg0"';[DNi~$`U_Z k1ߜxc^z>DžahZ Zei; ѤIaoiݺWؽ{/|d;СC$IW^FMzz:L:Yf_WrssYp!O<}\r%'tI8<.C&C9< UVUo|G{IJ % pNLb>еfN=g;7ﭧ&S4? qx{h <:}n_80Myg7MC7H`۶ml۶~!I$zjͭs+|8ԼKEaʕӺuk*++4.]PYYIVVEEE׊:pA֮]KΝIII9]M .^{LN(:,swP\\iӦE͵ԑeUU E 8A@Zw>QMSa5x< III :P(HfL )Pyj7ׯg?>zzn'x|@ Y2d'/0q%DܯT׬X4Ѝ/u˾g HN~FEI14gBQ!mē/$cTL\n ÀpD$TFX7ܼpƔEq&jp֔ux" LÈ;4*ƌiu]TVV??ٳO7~m;"|> )) 0PUχz$%%ꫯť^Jee%:u"++6x<5|躎ȲL0$ *.6Y7t fpoE|'\.K(bӦM\.rss{k=i?#`Ν;:vmۆ/' yf<URUYĬtRڴiC~~>,˶y纮&Ma o*13>裏hժ#FpV`0dҥ3o<HJJ:Ͳ0,$ փ.YB px˧H$B۶HJ4MvJ^^M6EyC("33:0EEE1UV?2a6nO `ӦM̜9n'Ȕx!i=T2WoP9./;=3U͚ysپyG0c\~ۣ,}mՇX|F|?ZR9-#.vn[oa\vtԗ9'=.cʕY^q3 +i*Ft{TVV*TWWd8@rr2C25kFٴi .dÆ ۗc/_N(UVuYD".]aHD>}HKKUVQQQA&~|4,a>-_o>V^ͤIڵ+>,}GfҤI4oޜɓ'l2 {hժn(^𫥮< 6jLX}RuvG EUU`RUsΌ&8΄5 V;222x}>irs矨BLv20XfҏKd‡Nqoǝ|:فC(:PN o'ؤ5"qڅw3?>x ;7zϿYTTk_ ߼kOL&Xt Mے32Vo÷>Id1hsWsВ<7j\mSo'~qzX[d>XNЋ/k׮dffRRRiÚ5kزe fG]v0rHtڕn-[O2m4&MٳYhcƌ̙32d_ٺu+:@Ҙf8,ø\zM~?M6% _p饗b&`@ iߟ+WsEOZZڵCu6nH^^gu8:t@$aÆ vi駟 0`jՊN:_lk׎&MPVV)((gѩS'rrr?>ӹsg6l؀iу5kְrJ d ={DQߏG9pmMβexxp\̘1zAqFƌC-4i۷o'`ٌ77|d,,8pmrUqstBFF\p6m3$> Yvi^ ~&Xf'ui@u%)Y}#$Hرcq\hlݺΝ;1R4uܺ&Lp襤$^|E5k@zz: s4M7?~xZn֭[)**BӴs_zٹs'^We_U9R)hL#^I/J!l^B=wq=h,8I񀂎@Z h˭@rH4d(28dCD>܎rde#LT9"@HSe܂tٛ3\@jn3қd2f'xo ~t6yᯭ*΀G1MEϞ=yWؾ};]v4M>B]taҥ<-_Mx<ٓ}RXXCUU{`_?'}v{pmkpjưn=LII!`&zo~CVxȬYHNNc@,_4 _~]vGm3o%z[$CudIe/^LII ;vdݶ0cA+!HZw+Lu,avyK㕟~?zj4:?SRRk}XeIH$bk6 ðjq\|>GFFEEEz}< HrizJT$k@4My>a6"۶mRYW6m*ݺu;b]ZZ7tQ:F Y Blܸ/j2F$4NUx,{9 ކ$feY3Coolg벏z`ngJt;H #XE@2$AK?έY84msNaUA36t⛷ֆe~~lZ"pp6vnXIᛏPP7,QEH(bȐ! 43fpS]]ʹiӸ+AQ֬Y_͛)--elذ gڷoP^^nڵ |lٲ ڶm˼y9r$999TVVziժ]ta̙\̚5s9$At8d>s$I躎uWYFtΓXXuB!0۷g۶m,^]IKK4Yr%$'')))I&B!_HA"d[H:(//Genmb*n͛7SXX,LӤ+V|rؾ};ݺupVB!k׮%++l=aSWxʡCzkUWWہ"}M#СCF^^׿hӦ :t)41"F\/P\\L8>jzhzi (*uԀHT\et\z"4*$Q]]anZh~eȲ2@B!S@YJ.{55 sӹ#ѣ C ߡcpJ`ͼٜ,z?,hn3췜֡=R}o2_@+oW_wq@ J̾eoҾKg.>z>+) oDɺDqItޅp1*"TME36MT^yx z)*nfܹs)))駟iӦ?~E]ȑ#ꪫhٲ%pѣGcfΜe]W_}ƍ7n۶m=W\qڵ#3OOsYg?p8ok6ZlW_}x"ٳgţ>z&{$bYXXHff-8IzzM!CdVXAVV=z8l܎ 6oL^^m۶%%%Ů3%%6m߾=Yd W&%%֭[ӿ[6oL޽ٻw/p}h"vM&M83x<1tP/_ξ}֭:u"СCh֬\UUŦMHOO{8Θf-ڏfu]gذadgg,< M6/ IIIv_>2333INN_vw^BЉJovD"ʂ-8$H1>oF֢>oO>)gr `׮]x8x eeeٓҘ.+V5ZrW')! ڳ( 8p:,S}VVВfY [34UA$t8)5an}U#hNkB|NC&Dnr:8Ms$TTWC8PK$).=R>Xsv5%(ִ-)f?CoPs lVʳ<b8[X<:\.ӦMc˖-k6pv0 ~me~cM XXNfYVP(DRRPv#˲7x&,S]]M(-Ӊ$IO }=V9˼rѶ0AQ;H&fi\~6*Pnk0M,4:t:m>5P2Nr9VXfD/[ٺ#F0|>Kjj@~ݻiѢZuoXp!z:"אݻw/EEEG=;Ea-Z'n#Qß5XP֍kQ'P H,ڜL M$J~yRpZO~i傫% PeP8TВb)V#óUfͱà)z~Ok;]}a ZCR5_-րڲ}GD=V(keZ?EXYkn>Y'z5w:v k}>^h?w"y A[d6uݮ*WW}V+G`Xkf]?^ױ~C!^(iku}#8}Eu j P#P|>vA=X/?uIU*3X@Pip)mxYz;k:,b  8b{$^#yy!+ zR%7]\.]vxxxT*__'jbpvuŽŊ打k1]aZ [݊a]EJJ 1113_ pJ*ѣٳg:t۷s- ̙3bȃҢE ^36mt:fϞ @bb"-Z`ܼyÇYW^/\~SΚ5k~m/!!7s>HH 0W^4!~o  7n/bHARӳI!-SÌlҳrH!#+l5jrh:bJJ br&+Vлwoܹ3k׮%99WWWFĉyqqqٳ`߀\5j0eXnTVӧO\.ˋ1c0qDRSS9s ; ,O>T^Ǐsm{=A_wtk#p}:d֬Y1sL%J1c}Axxx0o<pssW-s̡o߾l۶W_q%BCCqqqK.te4+@ӡRhڴ$H44 JRSVK||E6:ѼoʕdggӧO Ѭ^Yfzrrr9r$֭ш^B\rt:E 7333W7>>% Vaѯ ?R\$"4UqjUW߷&#ܴ%4L+&"---[ШQ#ztpZ*NNN\xLFtt4˗G&qBCCqvv&11?eRT)ih4jh4j6lݺuCT/N\\GޞUIOOh4666b"'''Ν;ǥKS666D +MBi`xO@ 02\9 ` ''G ܦMmᅬJ̌$HwvK.+vE>|ŋsI=ʭ[q]t ;;;wNnݨ[.ƍO>1}t??~ԗ$$$$ `0^b_ ȓ0w~wӳ/h:~:x4 zV/t:9akmҮoRIQ}A@.cnnfffҵkW8ڵk:u*;wd|gXYYPFw';;WWW<==֖$\]]>}:t:)2;BxÇ0a_~%*AQL-JJJ8( ABÇ133#11GGGYd4COGP y^0^)&H2F\%mۢhh4TP~ <<<0)R瓝͐!CʊaÆ\.gԨQ8;;3k,6mڄ X[[caa! 8XXXA077',,v舅ƍ4l^Zfٲe iӆŋSxqLQ*, L*x5ҳZviC_6s9Y& 4xy[ұNh#Y`00BQ*L6-0i$ a„ d2.\#HKK/TR( &O̾}ݻ7;v=Vˌ3(S̿\+++A|@-L&/ =`0Pn]񷛛8wB! * AeRlY  PR%*U$'%K`0PH훯\^OZUVmJݛěi (/# PТ*y> Uq)?-XYYVٳgNy? zA@7b46BAx4M֣wӸqcbbb {{=sssbbb?iժ `ܹk׎ӧ3n8bbb`ڴi [I#Q9=]XxmfffX[[q}Gq G%$$$+\UGtT4%MrAPbBSHHZ%WFrу߬EPjٳgٺu+iiiOZZ#G3geeQzu>sbcc… DGGrJBKʷRIZZ/_V%^ )))8qB$$$$^1 A"ED ~ #>w䩼0{T<6i@F#jRIڵiܸť0dd5d:Q"3AK_&5bQUT;w2p|ۗ/_ξ}=z4N#99[[[ɨFAPjQ4jԈ@)J % * ///Q4maP*tײ"iqLux}(Q? r? y:ߛW?GL^;wy]3> d24.JEJJ n2aJgek@d<:Z%KҪU+z(ѓE0h X~)?3_~%M6EVcnnNrr2ܾ}B:uݻ7ݺuF#QKEGSgggIc43jvpp ++Bb4qppxU`0h4/ߔ߾GN^BMco ʀ%*|I*LSX ['4oޜ?𑋀Z#VkRkhђ֢"'7oƆ;v_D>} ȑ#5"Eh"WoF||<|-Z0T*3gΤxļxSXnfĈ=k׮zܾ}2e )))|7ܿqF:9roѣG7pvٳ_&Xf;66۷2%M&NB:!Cpfo))) 4Ɔ 60h FA||c۶m , ))EoM8{]$fΜW_}ŋQP 9jRRSS`Sj*9LNo7˳`ffFzExh%n&ZkkOOOfΜI&=ښH.]cƌy{x{x={RT)5jZgfLի)SVիW2333׮ 9>d޼y+&[7Z#}@)؅%ϻqڑgy@TwzUP `0sCWF1sL.ϵ$$d֬Y]taÆJʕ>}:* KKKq2niiɭ[4h; 3f wjժiӆKIKKCرcёI&QR%k+)_G$** NիWݻ7QQQ_̛7O<߿9seVXٲe ,X6nȑ#Gt;wyQjU"""Xd ˗GV3ed2}TT3fi8s :tgϞ\zCLJ9s&*P~cĉѷo_7o΄ ػw/L0*U`eeƍ9~8JСC9h{ &O ŋ_~L:;wR~}&O @qww'22.\HRRʕ+ԩS)SpQ&MͣTRy& >L4 ̙3)_}:uGXXIIITP3gr9-[-QQQ 2maC-L j:'<B`߾}dzfΝ;Gll,ǏɤVeڴijՊիW?rk֬A&oѠAMҥKѣxNrr2#,,Çk.ݻ˗֮]hUVjՊ%KO:t@HHAAA۷wrI[ڶmKxx8', aÆ̜9 ϸq3f @O 8q"#FrL0VZq Y`cI?yeŊ|駬Z T*{N:@3ydQJHH &&w2tPf͚ƍYx1o&%%;w2zhܹsTPرcYbK.e$%% \{Rre~pppߟMRV-VZE2e8rz~QJ87XbZ 0tP/_A$z`E-xnaE$s\\\033ڵkhZڴi͚5 >#qttu#>; B|Ɛ3fbL`` ///J*E ƍܽ{: ԩԫW+++7oNBBʼnuؑǏO:={kkk7oh… xyy;\pϳ}vLݻwIIIARZ5:u$^ĉ 6/www8wOo߾ڢT*~:111L8_~EHO>᯿W^ ∉aڴil޼YVcǎPhQbϞ=*UJLT[pl0off%˗/gȐ!|;wJEC$$$;G&55jЦMڶmKPPH?c<<bR r'yMLŽN6lؐϔ$8)JlիٳĢm۶ԬYMbooOnXh[nG LJ:0|pZhN,zI֭}HLjwF\.ZM˖-iР;i|vvvdgg +WAI^'z^ =鰵%##=zO?MfL Ezܹý{ERSS'...L0=zsN8OOOP(pqq!33d'̙ L&W%++P°ښӧO#Mɒ%:t(666XZZT`kkk\" ٓŋ)C88p SNh4ҥK+B>'O>1c_-Y ES;il9s ;vH"dddp=Q3Yp?L>"FJ* Ν;:=n&-e||Sv)_E HIIdɒʼnn>R_Ȣe<);knܺ}MNNή8;;HcXYY1p@Fɝ;w#))6mбcGFMٱcܼy 񸸸йsg֮]+NZnMر#C ߟ֭[SJ;*TFAVӥKXp!ԬY@޽+4'&&C @Ν4h*U"55t:d2ؽ{7 DFFBhxXYYҥK51MJk"""8<T*._̅ bjN'Fܽ{KKK>c"""W {wM֭iذ!aaaTRӧO3l0~Qӑ)N233Y.]իۛ'2h ?ob$%%BѢEܹ3dffN6m7n 6d۶mL< .gT*666( ڴi#5m۶sr=RSSʢW^ՋzQZ5:wLͩV| c…DEEEwW033/`֬Yxxx@&K.Ӈ+Fʕ  11Q,޽{( zСCh4+V-ZP~}fΜIzpvviӦ,[ϟݻqNNN7f4i{{{ZlIFFFoڵ9}42Ur}pqqK.Y&۷Yf 5ŋsN --GbeeN:ddd5lP!''G_ƍINN&!!%KRV-8z(KfXZZ}[R/!!!8;;sYr9˗Q(xxxPR%N8ANN!憟!!!xyyqR ~!7n !!gggJ.ZɉҥKs};iذ!ݻQ|y)[} jժ4iOOOr9Rn]t:86TX777\]]bŊr*WLNN'N ==Ν;ӠA~1Z2eٳ'QtiJ*+WJ(AHHe˖QTPʖ-KBB4oޜSD ňmիWO>A.s-N:E"E(JN:͛7ڵ+ժUJ.Mݺu&##Ç鉽=˗hтL.]hL2T\ڵksYF#F'''D &99wwwY&666\t VJ2e|2ʕB ,Y듕իWڵ+7FR@RTRHHLLJ31E{ Rx|&Lgr6l{y!w1ɳ=}?yeY^@[;S MG nj fo<!44?7o#n}Q*ɑ#GhӦ "$$$L&CшzyBE=zܹzr |/Wx<73{Ir,C ^1+R֋g0?Hy=˛ j;w޽L2KNO&;;AvXXXpu\]]رcܼyԩ>]vxٳBAÆ \\.8::ηo VVV4nܘ+WеkWׯ$- 4*/DaQs_RvD(d#z,LFf5q;'[Jz8cp^(只:7nH\rFF>} ԩS~:?NNNΝ;>|-[rmFJJ )))oߞ~ Rre>IxdTP0o>%K|e{eגx[$^P Bր*yRSޙir;4:tzT;ÙP:> Eu`Ғ'O"B>ӄ*U0aի˖-lݺۣ뱳c…Ҫ FR*% ~c 3*2:VA96rO4WԠ=yHL&:%)J>|8_|5jᆪlٲhZ1QBB ,@ J;իWw744Q5 :t`aaA%_G(*7##x\;..ww.SBٳ>}nݺ={b0Xhm۶_%##>|ac_6111888`ooϙ3gHJJϏҥKܸq7oj)Vr6//^?uOӱdbccի#ҥK]vqEj5:- !x;ij_ \PS0<?n;OqOoC\|, ^>CfXܦMqFmT*nݺťKT*֬Y|ܨbzWWWT*'""iӦ K$Ѯ];L–-[0Ç9t?vVVdΜ9\x{E\\۶mG}ĉrA} %|ވPW\a׮]/t^gͤZ9z6m{LNNرc:N"66$l2d;vr5C aҤIYÇ?RFy,Xɓ'3p@>|۷ .O?Dzz:n"&&UVѺukls3w1oī) _(?RPmSp* !ժU㲽w^?p-Feo-*{2_SGxz=*|G9s_\ũUJBӡR[.Zzꘙʕ+پ};*VZPN>֯_ϔ)Sҥ ,Y'b4%ٙ9s戚4-ZĹshժ;vr'~-7oޤSN={sҩS';?άYpvvfСx{{~z9… g̙T*:u*իWkkkINNf޼y\z.]ЬY3Z-7nɉ7Ҷm[|||oi׮}s z@IDATK(֮]ˏ?H`` cƌA&1zhѣ7$%%qe1bׯی=Ż~ZjEٲeY`Y'''ƌ-)))\z7o2n88y$3fwww>#\]]7nڵSNFV\ɮ]h߾=;vD0e/ڷoExLBll,=zYfر+VaðɉӧO3m4jժE3f2h j֬I\\{gyf֬YCvO0 _777{֭KnXhwjժ1{1rH?~ÇYhN",,:uꐐ1cP*?ggg}6 P|y>Cd2k֬XbaffVeĈܿ &ȑ#Y~=ݺucbhꬬ,/^ɓ'yѣׯVLqrrB.ɬY5kׯyhZܘ1cc}It:ŊcѢEb2Ɋ+fĉ1qDݻnj3g׮]TR СC)]4׮]cՋ$6mD޽qrr"55I&qqƍ:t`޼yb~lقcƌH=7nRJԮ]ݻȌ3hԨ#GҥKtI ĐDVVkJO?Aqi;{$ D*P|Q}A>}#oD|~-QrͧNʪUh۶-}UVzjr9C a޼y >(8p &Ls׏˗FVXv-_|~)dҤIM$=z=6l`ܸqZMٲe߿?K.%>>AOgTZ *Vg}ŋiժnnn| VZExx8 4@T2}t"##9|0ǏQFɤ1 0j(nݺ_nbҤIxyy7мyszLcVZQxqfϞChh(]veܹddd`ffٶm͛7端b͚54i҄3f[nѾ}{"""i%rYnǏ}iRR>c\vK.W_EFFdzlٲ|eS\9ڷo/511UVpyz聃鄇Vo_>*Ub޼yjF͛7ӧse޽lٲɓ' 8֭[Ӈ9swBS@F/88{2auFzz: h4ǖ-[hԨ-"33._lQq͛7ݛݻw\.g,Yƍxb233;w./k׮4iV˸qhӦ k>r\z5;5~x6l+Vr*E*U?{`bVlB+W&<<ATUTm۶rj|}}>|8֭ʕ+,[e˖~6lM8z8VhZNNDD#;F=SN|ϖlʦJB5"E$*%NT)RT`}TEA@l(]TH=A $4e$!=׵wy$yyʏӻwoիGׯ͚5cdee1j(͛ѣGIIIaԨQ899Ѿ}{>S.\ WZ@Fh00*2/< (zJ-]J |zmҤb~~~h4BBBJ|pGܩZUVqOd]V+111jԩ 4ܹsfRRR$1ÇשZ*|ԬY^x|~WΜ9CժU]v<|z~"""%l6T*DGGT*ILL~˗/@*Uشi .F#h&'OׯS~}?~<5b 2 j*233ٷoF[nGBBB'2'/"ʕ+?O?www~mۆ' <^dbРAt;BWNʕi׮paT*III>`ĈO?w^9r~: ͛1b߿ѣG8p7nQF 0m۶IȋsIضm̚5vI dggMF̙3L2Q% RSS EXVrrrػw/ሢEZjD۶mKחM#ˋ#FRXXȞ={x饗prr*!9c ׯ/yj5Gtt4eZZM||={b6%(1({Ƒu\[VKNNM4aڵL4Df͚UVUz]>>+,,ƍԩS^:W^M:TT*6W_}0)џXVkk`kժuuB2m4222D!-Z_~y{/pwwCJlAnݺnRIQQVQK۷UVѫW/AB!;jF# .`0!2C޽),,䣏>q\➘_~N:QPP`@E}Yw`ڴiJ E<%J%ݷL&Nk׮|#Gҵkb厂/!(Ń>-((: 4YfJ6myܫU o݌cx.#WQVy~~>P(ѣWRfMxILL͛x{{˅ С111İ{n i֬F﨨(/_Npp0...ߟg'BBBǏHbb"O[nx{{j%>>֭[3h 8@BBoTj6ll߾'''~WСdddH'M6M6XV"##֭[ ޽{gq \B`` *Ub$%%gڴiCAA=O>… ғ'Oӧڵ+~~~$&&bX0R&BCC`ҥ̝;k׮Qvmի'm޼0n޼3f~ٙzI f0 |,HбcGKbb_>ndW1SۗΝ;d"??_۶mf]v???V+%k׮,]Xx'QDEEѨQ#.^ae˖޽*UPn]Z-iӦҵr\7~wCϞ=!++ 6mB!"ܸqWŋ),,ĉ bf3ǎ#))[ҩS'>Ywvvѣ,Y^zqekJIIR^gɒ%\|gggrrrjYK,!CРA||| "**Jʑ3 {n7nLÆ IKK#++  8~8 ,ƍ` xnݺj֭[ҹLOOرct҅ʕ+sF#[ǏsL&*U(Jԩ#ݧ۷o',,@hh(l߾]N<(CUTʱr wݻwK ΢EpwwE'$$FÌ3!**ǓA@@yG!_~sQ4 RZB0}t6mʫʊ+dYb ]&Ud:qŋҥKٲe  `ɒ%<䓒\ѣGJBA:QQQ̜9@6mhѢ/֭[>}СCQT3Ν;s%?0aMRvmf3cɒ%3͛7<%K0qD\\\7o`&9sT*͚5cҥL0T[T/g޼y<_ K9|Νy9rznݺ1uTӧ6VZL^j|4lPԩ?ϋ/HJ&99QFѯ_?^u͛G^^Fb޽9r5kpN۶mӧUV-7@׮] H Jݏq׹p]Ǫv(%j@yrz5`kݺum*@%")))TT WWWrssʢe˖dffpٙSNfiii+8?22Fr(JˋX"##xl6[޽5kְa)d~(EEEڵ vEtt4?SmwԩSi߾=GH&MDvHJJ"66 |||prr|B>L~8tZ`0hc4IOO'00yR$""bΑ#Gaӛ `n)Z],Y,8mbg+Zt`{`%fq%=QMq*x'X쫌5Z-#F>dd*JBӱ{nJ%}l|\%t:*MCV#{SqHBIOW53(,A![\dvv6RunݺEPPMJJԩSV"~l:u'|g]xWWWI}qnnnX:d#j5/"EN}DqTsHdd,]x66B_R*Z#K.q;jƛL&6m*U-)<%pJ*.lJ*f+fՊYN<֭[ٱc pA-ZįJrr2YYY4mڔ K-MLL 3gΤ~z֭(9r2@u놻;Ν*"5jԈ_] 0!#GMѣtЁ#Gz>>>lݺ NJZZ˖-#11_~nݺpfϞM͚5Z*rON&MHHH ::<5jCSyo4hЀJ*=9y$enܸZ.@yf:De=O:\jJ[G$o&M2hZ*W?_n (w/_<}*S Oo?ޕp=E(u壏>?o7777nL֭y饗hذ!Zbddd0a O<gϦ(L&{JY {9֮]Kaa!̟?~ݻd233={6ժUf駟RTTļy8v'NdÆ lܸFE||<̚5 QY&5bǎ:u^z0Ԯ]3g7uxܹ3[lØL&ڷo /ŋ:&M"$$;l2t:+WDTJV<ƌCNN?2r9rh"\ؽ_aaa,ZHjRTT 4-;wvZnܸ! WpOhzɓ7nÇ/QnL&͛GNN=ҰaCbcc{Xq ?222222H\Vdk܏=rݺuj[,6mzxq}"u  Et#Eb AR;EZM`` k橧ZjԨQ `4i׮cƌGRqqٽ{7Z={q7oŋ\rAozԫW#GpU& "effsNƌCrlْ3g/c4),,Dйsg9}4YYYiӆ|\\\hڴ)l6i«j=z4qH7o ..^ҥ M4A믿rM2339T=44)S#RRR$7Xb[n-~׮],]3g`6_Xr%/_X,Xx"gϞ1m4:v7|âEh۶-6m͛\rÇsQ~iBCCEΞ=ի}Y,N<)ru^yz/ÇYbȘ1c4i_|_}K.ӓSNj*I[3g裏عs'& VKFF֭#..Njw^VZEVV`7.]fFF(b6ٽ{7+W$!!A#..T>3I`͚5%s)>cI^FFFFF毢r"m_y a<(UgϞFի=ћ & &tF3 z"Ydb-p30n8F%fYzBl٤6#VÃM6Ѹqc>PՒZo5eӦM3h f3cԩ|(JAb $"{{{KJ0NG6mP*t QqrrĉL4< T*%M Y|9(RPT1(Kff&JU2}t1 c8998׮]cȐ!9sUV;0sLy&##~WkIW a>l6{!U䐟Oaa!yyyѱcGV^hd|'hZ\_|]9r$YYYȸq$ɓIMMh4^رc,[#G0g)|LJΝ;KR1}t;ؕLllddffdyWڵk9pdpt:H^^7nJ3>˗/eAYf=zT, k&44LDD:u͍>".]D۶mB?͚5㫯ի|4k jFNN+W&,,CѶm[rrr0 ?~|"##Z Nzt: +W&<<\_Nf0̟?seiݺ5(mۢV1LU8Q端BTzj/^Ν;ٳg}˗/gtԉ@f̘[ol… R* #G׿E sǎ5jᄅ1j(AۛٳgӮ];F# `2pqqaxyyw^J;5k€ӧ֭f͚\|8rrr cǎ7ޠaÆ:t ŧ~ʈ#pvvFӷo_V^J"!!7ҼysƌéSHOOGTܹsIHH^?3gdڴi޽{l2V+5bڵt:oeԩJ:F2222221J7/=/ka+sL2/ذؔEl'x)eZ&ZJl|9',, Qڵ+ K,a…ر?ݻT*Yx1IIIL8www.]ҥKT 4`ĈjON^:>jS̙3cƍ[oRdΜ9 6 Ghh(` GVh_E( |I ={5Ν;sU^jժ4nܘ'|M2m4rssҥ 'O$44 6|rڷo7(2k,&NHTTAAA,ZjժTv횤(?'OۻDxVZRPl6@ff&iiiC\\\?>]v AcƌChh(jtoߎV406 6 ͆R$33|}}~:/"ԩSšT*h4J*TRjn׮]+q,ݻ;vpa1>lڴI2B& N+Wrʴlْ'Jq0Ο?ܹs5knnn̙3Ν;Kxߎ\߳TZ.]W[FFFFF)'s} `U$[vJ-Q'ۭ/~ڋ~݉|ҕ`g߿^z Z->>>۷R+B&Mhذ!Cetԉ4^uڴidbرX,j4.RJ͘1Szu6m @ٳ'ׯ^O޽ٹs'K,a={.]8j֬Ɋ+xwdРA,\ E~`Ν;Gv4iI_ ٱc=z_&++ V+'iZyV+ лwov}h4R*JZV*Ff̘Ajj*;vdr_J9He)=!ev/Vѹ؎e@ (oV^..^|ulHJJ *UՕ\hٲ%8;;KM&iii+8? yPV#\n4ήpXR$//\%22BrssZ( Wj%..OOO~RRRˣzxzzr5*GժU2Jgggi[F~~>g:u(,,$##5j`6pE$bMݺu%bD@@jJRƍF\zU r]"!!///*W7ܼy @TORRa0pvv§PTs5R `0J`7`]&SjUz=RNYZh4T*FORJYFFFF$))XɉRu 9|0СCjJDp1x.G. y1>Zc_󿊟ϱx{9-hhР$#####7QVRY* e XTE,e9(T[yHY~!S6"#f*J%?嗑NBtFys?='!ȕ,N$@y1 uP^Ckg1ܺu Ǧfedddd*q/C/堬XHLddcS9XO?՛cWx,SqenȔ)S9s$'>z/I9sصk}gKRSS2e :1;;)Sꫯ2j(f̘AnnC_l;ә>}:3#`0кuk:w|6">y<VQ$ (l`E,V+&33KΈvhj\2?#c[q/AXVOZMNN*Uӓ[nQPP@եdIƍ̘1>}"7nܹs7~g&NHժUQ*`Z^:>>>FAA999TRZf+0 2 "00RInn.C qƼ+XVt:T.7-- "% J%jZp(;UV i {%Ud재dvIzz:=$RPv_~t@6____rFMN[xX-6f*_ QD!Dk% ???zC;]__ o68991i$zۙ5k >v;Dڵ㏥һP͛73vX._ӧi֬7o L&7nDς k׮r%yL& .4k֌O>K/?ǏgРA$$$Vsk<:u*> L6ѣGg +-ի\pAQ_~a<Ӓzdd$ `ҥՋH>Aĉ :^xP(ܼy.]{nٙt@ԭ[=zk1i$.]J 駟8}4III\v:uqɼ|ڵxz=yyy䐛(tؑ5kW_Oн{w-[XϜ={Q/2222ʒԀ8JctZ%)ecz\t@<==ܹ36mBOrmV+:lVE6E6 n]y|9~8:t@T7oF2dF믿&&&liv=h̛7~ޞӦM0P((**"88ݻP(_>O}( ɐv(ytbccҥKdffRPP{$ϟ' @28x ...AP)nݚ޽{s )(( v||<+W H֭iРtGU*"\\rMBۄPn]J%ݻw?l+F3: тhdlhb0ZŲ/%e@JUTիt:233yg((( ..Nj7g=ʼy)!hشih4:wjٳ( E QK%HZΦ^z] ݡ.xn6 g͚5ݻFѰaCΞ=K|||xzz%}z*ժUl6KMa0GxǕPK>3+Ə_✸R$###,Hſ fHy|ӳgOԩCZFh0#VlNB"q2cccY`{e̙ >5j<#--wyzhh߾={eʔ)Bnѣ֭aaaTR={xb222ؾ};͚5jsN\ڵkZ*`={6seٲe^]pB/_N͚5Ζ<:,gj%++ JӦMywiӦ5;QTRBqDQdݺu_8ƍĉ%̣A9ey@g~׶F^ywKZԮ]Bmbj"} `[;U,aN=0MA+Vpe, NNN4k֌O?-[ЧOyIKKrtU OZf ̝;JEXXd|5s̼yHOOF,X5kƼyp( cڵرcqw̞=-[vVi۶-˖-IYh޼9ϟGҰaC*WҥKٸq#:^{ WWW{9AŅݻwꊏ-Bj >WWWY iӦʍ712222 Cm~_mm#sA(Ŗrz5`kݺum*!")))TT WWWrssʢe˖dff;!pvvԩSL&xWqngG0[l(۰! H<P 6o‹ȥBE_+:U*呛DFFG)######WDll,AAAD:>|~q!Zj%w1xPcǎ믿h4%={ݻ+donݚGve%eddddd%Q^^HkQ:.,Gc6cEоݼXc[YZ h*T_9@ѭJ,,rvaMloFA_0@PcB)(v(T i[WWWl6#$$~aÆ!ϟ_~ 6lĉɓߟ'/<}4}_~>>_[n޼ɰa۷/.\̙3'''pww'>>ѣGӫW/m؍%K_w}?Lݥ &OLnؿú222222 cv45/smu;*]m0r.IJl<*km(D=)IՋ[p\?~h-s{;9~h(=P٬(5Z AZ[}JmcQkP" ʺsAf1"(5\}Pk+PJ(5\AٍsQ4(=5A1;A鄠Troc!(T釠T#(sQ]톈ѽMǼyxy'7n:Ç̲eh4ҳgO>c;$=7xz3f`Z9s0m4X~= ,@Ѱajժ``̙L6SO?Dzz:* _fĉz;ٳڵklڴ'OeX ?СCb\~Kһwo9q 8>6W@IDAT… ԩ|EʕYd ޒHB`ȑ,_ɄB`…\tQF1rHN>Tׯ 6ʛq*/5"VQwԲ0=yOyx؋Wy>v~G=FJDnIУ.nz1W(]| q hHՃh|j"?@[z{PEXP hƑU o]7.~@AR4p(J' j&hɵP:sq'ƻ޳A 2UcRt:5 |yS5G~Rٹs'aaaiӆ`ϗ_~I^^?1iii޽kרQ`?0l0 =z4߿/JIm۶eܹ4lؐX,6l̙3Yp!(J8x DEEvǾ}bȑtܙh0xyyq|TZ[@s6oLFnݺL6 FW_}ťK8qVuLL `nZy۷/O=ޘfԩÁ7ojyꩧ0a+W&88#F… tDGGAnn.W}P^DY)#4B4`˜{Gr QݝMQo~bn#gəlP< w0 LL)x@Vh/pܷ@0d^ƑU DJ'FŝXy3/lEP(۞ATs! ԤO~a$f-s*6s 6 APtr##z9IGP4B P(Q]P]-F2}M+včk(qhFPPޏG[qEjA| AlT*l6[yyyѻwo/^,d2QZ5^|EƏO^^̞=;vPV-j5jZ:`RTbARa4ʢjժmۖ?ڵk?ՕK)RqbS}.?R,_~ؠPOpf?F?fGUC^Qy ,Ll6fSTzsM SNaY)L=Qn$جxnKPo=+Чǐ}a qɾsA:( 5k_9@`>NU:=YǣF(5z/¯`^ 8cN2h߸Hvc`IF[) Z(H㉎h<AjǬƻ~/}[O-[omDt[nq9iӦ 'N>CV3h x78z(/_&&&D`` fΝ?~ǏEY&ԪU WWc;?Jrov$A"ATĊժ՘5KTQWhԨQ5ZAv~! {}m1Zx=3>|.y{7oNdd$(rQ:tJ"##b7nV֭[ٵkwܡI&ő@VViiit҅ƏOxx8aaa۷ .FJ%<<7n̔)S8uhZRSS1͈H||<^^^4i҄;wPR%WqttСC@^͊5eʔ!..[n:wJJёmKJ(SL!5[ C!FCtzjemI %D@D]ze,5{R?VS) hB1 {!єIF8ViRDZX9z"rɸq;: c(/x gĒ{ƞǬ˼cMEҠsG0`RCff}&r٠E&S ddž#Ee cV9ΝsO|;-"%bwiJn_-hܫcȊGOCqŻl:D(lrM^W*Q d$]@_pax1JM+npgs52D[q݃İiH )[:Q.wo2^m>ETss Zg=Y YFjw?nnh6QQh}^%>1!-ݘֵ2_zR) 222HOOɉ˗/өSel<\|oooK":ٜg^HYwӳ<IKOcﯿpO&i،Uj?#! d?HqQ<36*cW3V_[oń U VXAJ8y$[n`0iӞ #<:u * qU •+Wڵ+Zb„ I J Ԯ]Zjqԩ= ' -txHI?cFQA%!LW 4ľ};v,#Gd͚5#IJJΝ;8880i$Ҁ4ZMHHÇȑ#sϚ5 Nǁؾ};-`20 ?{{{KԱcXd 999{DGGs= իڵ+ ̛7cǎqAp>ywINNի :yҥK #""VZq=١Vy9Q*ԪUʕ+?HHHHH<" ɋJ+R^" r6F7d1M$nu.]83muyM%g͸sMzݻ9t۶mf͚}Jrr2w&22F!"YYY|Fzŗ_~Iǎ9x +V@vEn&..]^ݻXYYѫW/˵j5ǎ#**ʢӬY3N8͛7ghZ9BRR޽{IMMe…hZ7o΅ (S E^ckkk &ʕ+3g˜;w.'Nf͚|Gxyyͳq֯_@o` vx!yXl>[C\\VVVy΃*T 22wT*$$$T*-5*M5j`mm -ZHnn|/ vvvCŊqss+a_/MBBBBaQRw<%E=t-FХW"np_;a'NO>/mӦM{deeL9p@{xfTԯ_ߒٳ'u`2oO?EVc4E\WrrQL̗_~ɻ ՠ|tڕUVPjU8˗Ԋԭ[;wLvv6/_&((m2zSNoY-::իs5rss֭[ԩSLFNNnb߾}bo61( d2ӌT^1c0rH>c:vh,As,Zs$!!!!OpY7*ΛzCILKgUL31ěs3@ӓ2J*w^zAff&TR{{{~7֬YCVVgϦnݺ9s={ 9z(&Me˖X}aggǢE(S 9997<<< dРAرEȼy󰲲b޼yh4>ݺu/J*|r-[ƦMh׮SLAfϞMٵk*#Gdԩ\v?3g>Yyh4='''4 _|/^^`00a5kSLaߟ>}0fyʖ-Khh(͛7LӉΎ}ҩS'u놛*SNeժUٳOOO DHH+V$** {{{2d]vEw7J[[[dԪU'_h bԨQ?7|{g;wfڴiԪU prr"NNN8::Ү]; Ɔ ]s A8q%"kl2KJBBBBŠHE(֗LO./pay1K~V_U^ CCCB\]]h4BPPIIImiccc'7 ܻw=ٳ7_VZawo& $kT\5kΕ+Wغu+?~ݻw=WѣrJ_پ};Ԯ]aÆχ~_|Y|9SNE3n8&NȪU;w. 6GW_ѯ_?1cCeʕzjΝԩSz83 ;vsԩFo3x.x/}иqcDQh4RLȑ#gggqttܹs\r+Vp.] =|pjԨ' er]ùtV"22k׮Ʉ ]6舳|X[[h uu*[l! 777KzvvvdD}@WWWT*qss+d>pqq)Ɔʕ+Xuuu-|䏭NNNX[[T*dh4xy(TFA˶5 $Ywyr1.![+mzƫ57"Rv+cBFd2ѭ[7ƌd"((A0 8RH_e0ڵk 6Mi16r%=11@ZZVZh"PL&xϒqww]vfRY(Q*RĿ4JjXv,B/:Da4mQv=J348$9F8[ז]䐚JzpssoooۤիWIJJh4WOb4IMM%==XңGk>soߎZus-JMMt JIID\ٱcGuiii!HJJSSS̤jժ?~ӧOS !!!!!!!!4x>OZ^R|d%|@݈O㤧sF"ڤUj})R|HF\22{{{L&>>>|ٓxjԨA~P}iӦ|уׯC)[,:lrrr\2K,aѢEb9+ `РATTZj1c 6l؀}LJCZOiذ!Νرc4hgdx{{SӖċ# ,]N^yR=hQFMv5e-B/ʭ;$/:ǏsUXl3gΤm۶uLUe^gDGGqj|˗/͛ԪUݻwtB̙3QO=%-- p Yd 7n֭ۛ[?ױXr%6mΎ?s.B7X/Z^5)Z|n毴gV^R^XVl~G޼|bkkKVV˗/1cƐ'|9{,f"))e\\:uPhTӓ޽{?aH;Dϐ!C8<ǏLJj׮ͼy{./DEΝKhh(uʕ+| MFRRcȐ!xxx~zҨQ7oI&-[ 7776mĉ`ѣ(Jn߾ܹͫsywfa6L0>={`2غu+vvvqF#gϞӖPFAΝٵkm6O޽3g hGX޽رcݻ7>>>[m۶Fjj* lٲxbAʊ 0p@Krr2{4oޜ 6yZ ?oH޽bݺuܹݻ?c7y"...ܺu9LBBBBoiuʊgϲe-Fbȑ@FMyw,w裏h׮C[nX[[۷ILLݻ899P(ٳ'zo2P*t֍-[ZFVرc2e ͚5fϞˊL&~,Yȋ@iDꙄ)WxgYR+Pi̞q r(Z=2YC!̂@u_O>kf"""}@ZEPpBO۷1 ;we˖yȘ1cP( :ҳgO<==֭AAAdddX A 33INNё#F0n8Uٰa+V4mڔ5kMݺuIHHĉ,Xe6ʕ+tRoNŊٻw/ڵst֍;HyD{tԉׯ3aU%!!!!xH9DI cӤ`TًTk..t ^>Tl@&^LQQ0A$'ȝS 9 ޽{XcggWr9saҤI͛7gʕ:u JŘ1c,٪Ury*W 77nh4Q*|wTX.]'ju֡h0`+VΝ;3???gl޼GGG믩^em۶2dm۶\r[xyyq<<իW/dP(]vm˗o߾wPT߲?p4ҋGTR^= /)?2O_tE{{BE#GG)bmm``ǎ\p6m<`4D!'9+lSaE33frt"SoMhh(ojlmm~:FΎxMF֭6mgϞϏxZ+8pL8-[OJB`ccÈ#q={8%RRD~@hlDz럅@zCZ" deeō7~:۷}B`Ao0c6EuhȜzj֬IHHcƌaؠT*;w%W}͚5̟?erQNMΝ9$Z `6ɡVZyKBBBǍ Ŕ_:*ݪ(j.]cȑnWWWZhjF:t(ڵc̝;oy>[kpvvfONos 4Ǐ[[n1p@bbbBV3gJen۶-[r5"""/{ϖ|;/^dʔ)X[[$!!!os)?(A=l&99FQE@&d>Q$ ɡpz;S(dΜ9|d293^o sӦM#33>Ȣ>sL9رc ܹsL>Rɂ EԩSٶm9ªUHJJbҤIhтׯn:9tC%55qѡCn߾ͤIHNNfΜ94hDLL .ŋ=vqLdbTVwpB.]do߾}^F1ĠP(pSNEү_?Oll,o&&&ŋ[6ҟɓIHH୷ޢK.\#Gʖ-[0 oߞL>s9pFRJN8Yl~mƲe˰gܹDFFݻ7˖-###ɓ'm6AgϞHHHH<J(Ymmyܓ="uz\cw9h)'KCNY1rfN͔9W!w2'SS kX[[cyE urqquQlYlll,5lؐ6mj*rq5T*UVkd2a6رcj}O?Ddd$gΜARebcc8q";wnݺ?F#VVV|TZ͛7/?p;w… \v,)QرdbԮ];vЦM8v>>>ۗ%K`67o9m۶: <Apuu\||79oA0,_FA~prrg|gۗ#FvZZ9֬YCJJ iӦ̞=ɓ'ӽ{w֬YڵkIKKc3f0b;lmms"55Çӿ-[W_}Ett4,Y޽{S|yV^]A`ذaԫWCqm> QZ5fΜСC4hk׮ZX_!CмysZha,3g0sL-ZD=z4YYY8q^ٱcz0j=7%x-J/I[b4^QWruzY fA,]@D&#ɐ+rP(0LdddX_v֭ #))0|pEۛ;v[^OӦM߿?QQQѣGYb999;wQ1DGG0:CBB6l&Mb٤p96mDRRoߞ!C0i$>˶>ٳg\.Ύpd2ݺuiӦݻ+++ @&Mz*ܸq JENNM4cǎ1`ʔ)CΝr ͛7Kz:tt= K.MFm >|ڵk[T;4 YYYoԬY\,VGBBB],(9GgϞ.]ӧ9r$DRacc` 33zJ%999 x <<>>0tPvIdd$d AC\\5k֤aÆ߿bbb<3##c"".\ݻ$''JTT7od2:wbb"gĠhh۶-G%55wb4}>!%%4iBpp0͚5z긺ҠAf͚elْr!YvV֭9re /b\KCl222hӦ cÆ ̟?kkkj׮/?35_UxyH9Dє2Ō3,o>ӂ^G,j˺zm"뢷w^MEL4 * NVӓ܇jo(J‼_S?%)%QğX+ix$fZm 2zt:666$&&Rzu5j ۷ׯ3`w`iLСC\\\ӓ۷sMV7JzakkL&CVSvm,5&-[ŋ>>uQ5kƹsGܹ3*T ((Rs;N#88RI =UP5j QFT^;w9s&)Sڵk3txV#j.2 ݻwQwܡB d2f38::>`gr6o|,&&y6p1Xw@S`{P>HsX˱((˱PU_/ lWbFڵkJQ'AFCzz:)))T(|^Ξ= Oܻw?wH ٌ-QX=䞞 z83 ;vsԩ䙤FtຉBaÆDDD_رcFRqIʥKcӦMoߞW^yٳgӡCvw>^ CIA|J'-xXUQ^ %tR-nb|w#C/z(`0 M7MF30:Jdعs'uAV#wW_ymXkժEvÃ7xxLƍqsscȐ!f֯_g}FqssO>aժU5EѤI +LINNԩSYA= oO?eɒ%lܸ>V%>>жV郔Dnn.aaaCff&=&a08~8/_~Cx<Hq%E>^H~G\Ξ=pI1EzzZ)o`Dg03MMf&h44h̚5 ٌd`0ШQ#PܹsUC-ˋVZq ,Z-gΜ\r 6nݺagg ~! <BgKBxx8}eݺu|ߟ7n<9-Z-Zo}"f֭/_p˶qLnnnϓѣٸq#/իaBgOFF]taҤItڕ >!IHHHH9{Εyx`F#*jժ1|pЈy&ԨQsS.]ѣGb׮]tܙ.]&!!!!DAWZ8y@%NRQ"˨, Q,VJW^;4>&<,=j=9y<#::zjR)ǑΝ;y饗hРwEDFF7od2 lْ˗/SSS "--MTB"\q9//ҥ%y\z:ݻw'=={b :<@n޼\.g̘1,]___WkɄ-ӧOȑ#1am?˗eذaqmvڅhk׮9r{2 ڴiYx1L8?+VO&Mpvv[nW|WӴiSڶm˯͛B$YhQD?~f͚VssƟM1He vEFYP z]ڻ!+<6oԨG}XYUNLPS53o05R31ZRիWA%)J5jDZ>|8F"11///Μ9CӦM bʔ)P(hԨ#GdԨQ̙3Sbmm/@gYf$$$D\ %dffT*K)JF#:uc7mD^8z(\ tڕ&MC޽Qr$mɓy7h߾=Gf͚>}x9{,GChZ֭gΜѣ4k KKKz=/jۛ˗/c0 %22^{K.1n8lmmqtt$""dQF믿`0uVZ*'OJ%*!Fq冀.!!!!BQ^DysNV+!Xey7*<ѣc7Lܽy MMP#.ȠS5Xþ]vk׮%؈1.C1cFCeС%~\.gҥK˗WcK}JŰa8qg^\NϞ=5j:u" ԩSۘ!$$$!*ڲn:ƏOTT:un޼ɘ1c/򢠠s]J%DOOO._ ze333y#)=/(_ '?)51LF.BᏻL.C.W PYY9͍VZb 0 ̟?6mDر#͍ r"##EωF AjrrrY&l߾sNuFxx83f̠]vtЁŋcaa ZNGǎyWCh4$''i&>̆ ؽ{7 ̬YXt)W&::-[dgg1 dddo2p@ZnVʊu$Q9u֭[~:;wM4n%$$$$3,󺟆HA\ = YC_ƒ%K۷/&ua͛7'((7x[nѪU+5jڵN:ئR+++r9jBT2gƍdž eС(J6l(<Qnn.lٲ&M`2Q5jԠo߾Ջ0͉ٳhтA̦M̛7 5k.\VZ矤rIv튷7/f…9SfMfΜdW~O߾}d_^|IHHHHX.nVb۶mK'8L&qqqʊ, bEi,,,INGRRC xvhZ222^FPMVVѳgm033+UdKc0P*3 AЫe+^٭<ͱPĐuqqqxyyJ|<;F޽9z(!!!h4mZ-T^zBA=>?~Q zl3[/Z6[7*JT/tb"?(IY$$$lll*IN}dOTA2>WQVDSyyU.kɺd?GIOK5dr9Fj֤޳D d8*r>X˵?oYL.Xc0(rd(z+C VWg;h  +rTRGzSNu<Җƾ5#2t; Q0 &8[\en,[ VKj1bDɟׯɉ;V8۷-&Flmm:t(5k|Yh777{=VZf[nE&= l0(җ^g( _~rK*CZZIIITvUZ-?r|iii$''ӠA獍Zj89Iʢܜ'i'!!!!xyy'TbmuIh QQhz<=#)((x2yyxW8q":/h"Ν;^g},YYY 0/+֭[e֬YOeΔ)S}dۘfϞ-~׋;w.ΝcyQ0 |wtЁ#Fطzj  .+lْVZ|LJ$JJHHHH<QVu[s!¢)opOl-=+,,,qW&00N:U(hTHM._I(@0zA&_.FIJJb͚5,Z\N=QPP_~ ;'NzZ={j*v튍 G<_||<&L ''___KT*AAAt *ٳ3f Ɉ``cc93gΤJ*>|@V^͖-[Xh;w ԨQO?A7nSLwULN|2~~~$''s V&I4n_B`ͼ+l2zʕ+_>'ӦMd1zh[iѢݻw'==\6lݻYz5{?fРAtԉӾ}Fs111,[L1sΥN:3+W駟2{lLBZZ7ofҥXYYѿ\]]iԨիW'%%]谳cǎ,XOOO֬YYd '''vqܘ4i?8;;-̙3x""">}:oԭ[F|rrrr1cM4aŊQn]WNZZ#55sss6mDtt4sӓe˖rJ,,,033d2` ֭[RbX[[ӳgO6lP믿FDDZBݻ_ jggxcccYlQQQlذA2@$$$$T(]JP (QqeŃ=*Y*gu0 rqpp(?tD01ѓёёՓSS3P7QM? Lz=K.?;UTN:8::ʡCA.Oiݺ5^^^Bjff&ݣW^@عs0 RPPy6l4k KKKڶmˡCвeKz聗"RWGsmKupp`0ow}GNFc08x JluɓEٳi֬駟2~x֭[#7oŅSNq8s NzH9Zfܸq|W>|4 m۶e֬YddduV֬YCVذaˋ%KPNrssɡcǎl߾s f͚СCYn~~~,[ Bl޼;w2w\\]]ExRZ)!!*UT*Q((p3f`ԩԩS4F|@6m͕%$$$YT*Q(+qc tTh45]v?QFՒёы|\|ΈFg@a,0@fΜIDDP8,_4 (>9(kZqү*LʵD1ƍؠh_>gæuA&!tT _jժdggs-qZ-[q͛72az=L&iӦx|!033#11(zh4Ԯ].\oͥK땟O`` u[[[t:δm(|rȤIU̙CLL ݻw'55R:tݝ7oVvڑNCTR΅ӽ)/(NNNdggYYYb~ѣ8q˖-7L6홌]BBBB⑔'Q68J3RRRС$@h|8x{{cccCݺuYt)6mAA_PXZjr.^ɓ'qssu9rwN||</^^od2*Z777lmmY`?8Q_`oo~M&:OOO,--pPX JhzWJ՛ܼ߼-[rU233IMM%--6mڐG^w%%%NG>|8;v^z~" (+ x~ZϕW_ǧA @K^^>F gy@|YIs4nܸ6KKKVXuPլ\KKK~mϰbر|7zА5kV u'?pe͛GHHժUcƌ%Br9K,o%;;ɉARpuu> +c͞=KKKF_$Q>2e˖ɕ+W$''_ʵkרWr{z;RjUx Zl)N)Zښ &AJJ SLJ*ܻw.]a7XYYch4% Z(;&TtPzM-SAk2h׮jXCR1eNʺu{.ׯʕ+Gƍ iӦ79"77'sNt:}atܙAѾ}{Z->-ZÜ:u6mL&cڵhB,moo?,IHHHsecqeN\4O=X.frwbŗ۶m\:d2 VVVdeeNpp0/7‚P ,;6VPu! @Sy]7jȨtB ;;,+ٳg133Yfbh $&&&pI,--W$%%"z ߿#*dP*ƒDƍR P~)))XZZbggWblQRPP@NNUTvX"tرch4bڵkc4IIIǗ\t۷ogs)<<T*d2wjNBVZڊ}瓖Fե0 ruqqqxyyJ|<;F޽9z(!!!%Jd2Z-eU(ǏpN 6ceSuS9DPC/%߆Q6§F Ʉ rd2qJ3)?BA׮].ɨ^zmvvvbD& h\װaC6lXe8VVV1RYDXXXZjQVc-~W^P絶M$JT*iҤIJPv 3ʴ{,FұbeΞ*XP*/KS!O^VH]i 2,뽼#y"<<~f̘!t?ϳ~z ?+W`nn.L&ظq#?^^^$$$pA9qfffo̚5Œ3hҤ z\Oxx8{Ӭ_lbbb8<'OܹsJP*sNw… 駟HJJ"%%+Va>C^ylق֭ŅN:1bƏϢEQ7oСC$%%q]:uU p ׯ-\tLBBBBoIU}~+4@7T¬^*XJ33: NA$\4s!#Ӫc  tnܸ!j$&&2uT222Xp!W^`ر;[nrA-[… t\pWMDaɄ.\`޼yܻw3g*O>œxl,,,h4یF#ZZ-wDDDpN:ŤItwˋ~ r9JR\677ƍ$''ӿxWHHHf͚>} .0dΞ=ݻҥ z @AA[&<<\]]?FxyyCj0 dgg3k,.]$~ -î]Ϲ}6IIITV0ZhS([x BTAP*F J(ޮxG!>iHe櫱q{zRkndϽ  K 2.駟p ܹ;#;v &+̛7m6A`?iӦѺukj5իWgK4jԈˎ;d >LN8JҒ#F0|pT*I4Hw^qǑdȑ#R deeرcO>h4d2h0M:4F#666FBs[[[BCC9v׮]_~\r#Gnu}133& DժUKVܜ/СCUe0D"//@qƨT*kFŐ!C{o L&~ANNxd3e途^|HE'տ.A  )Pxm߬A kw 4-#)//p-Zĝ;w˗IIIaʕ899Nkkk1ۛ|QFFN:8;;9 EO9_͛7o^ 5xr,,,?~<˖-cժUXǣP(hժbnnNw6l_rRSSdnDZZ:A{.t֍O>+V}vwNhh(GƆMrY@hժiiiL2UVq9ʕ+^cbmmM  !11iӦ1g.]$Aڵd9ZqlݺC;pqoΝ;,XApss3x`A`ʔ)|GS2@$$$$^ I(rUS+ys~|xy`OΟSx8p2ܵkC*u:h4"ҥ dذaOԫWWWWfΜYF!!!;FPPJGGG>k޽{]6fffzL&rKKK񉰏̙3G;==Xf?!CÇ̙3֭[Pn]֮]Kvf…lܸ\4hJO>ZjbDEER:u*_}.]b9/_?fff̙3G,DzeIKKc̙x{{sM<<<ښ{\+K.e4oޜv쌓&Lŋ7Wb2ӧ)))$&&2p@طoFҥK|8::>ѰaClš5k'22sCF%$$$$OIRHaW  tCǾ9 B?Iܜ\Gqn6N`б* gǎ˜>}<<<߿?GTqFjTT3gdʔ)|7XXXpBN:%tؑ~?ӧҲeK3f ͛7*>'t޽L+++^BBB )_---E^z#G|}tRb_XXaaa%t:T˜1cm۶m,ѦQFݺu[n%+?!x4k֌f͚=aHHHHHR^)yJŭBTp';)~?mC\ޣU7( 0Uǎh4"˙9s& ( gذaaoo%-[d۶mSZ5h׮A/BVVVVV|7ܹs Q(lڴIJ>xSzuA%$$$$$yN6paxʲBJ{@Z~= űstэ\^`ff&T^DvM*U;;r§VVV@ai5J/~n hDKHHHHHHoy (o< yOo`ĉd JH81I ®JUB_"Pq Z-M6Gr]T}ZZ111h4lmmWsqqqziРA=,?5k|(O,nܸꘚ.!!!!\t')+ףIHH~hҽk.VXA׮]:t(P‚Lǎ#''_~ YhҤ &LիsssfϞ֭[ ?hLV_~m۶=,v؁?3Çˋ޽{cii۷/QQQ\vI&Q~}ύ7:t(iii޽777 @:u1c9oF*YP(Ƹn:F#'Nqpp`̙G}'Ǒ;vj*zo @58pm۶%Ϟ={㣏>BPsNHRT9/sssƏ%'Od1nܸ͐xbʛ痞Wj_q*]L ^*Xmrnu\1K$+5=,R3h#xUF֭iذ!'O 665k0l08@LL gժUDDDW_}Ν;r * 333RRR;w.o&׮]#::ٳ';wP+V;{nΝ^>`Ϟ=4i҄O>'''7nLN /@RѼys+ ެXhVZ۷iԨu֥_~XYYB޽^g2|N>СC eРAڢYv-7fٳ8{޽{ERڵ1bӦMUڋ?رcl߾~1cдiSN8! yrss?>o.]b׮]O!!!!!!H*ch+20*32J,(zZ~a|8lܸ333݉ƦPKjm[ĉd2شiAAADFF4 **$&&rINN4jԈʩSX`666L&9s *W^}Uɓ'Q(ꫜ9s+WK&##ҩS%(ʛ7/+YL#qCj9_e<]nnnn77GOſuki@5z7L24&#D~{7Kƞ#444z 2tt:oaʔ)Ef͐dj Dhh(P(tYTLJ 0{l_>ǎ tޝЫh~N<8L`Q$|pppZ& ^L&C0L2~x݁BBAAJR44Qn]z=Ν{H4o̘1xzzVQT8.sѹ P <-Z z^ܹsԩ 4tFAϞ=1\.Ν;L&yiԨ} ʣ]U(&Wd4^sLƱcXd h4VL)^Z6wRNM%154fp~iYef!/U*&&Fȑ#%11_nݺ ƔϘ1ɓ'GtRZ-Pk.L&r^رciժ| pYvʐ!C{.D9BRR:777ZhRM6 0@FR$""'Z&??`hذ!nݺ8;;srss4hsĉܻwXn߾Mxx86m"!!SNh4" 9uP(4h:tʊOŋ1 ,^Ʉ-ǎd2ѥKƎիWINNܹs={ҺukիGBBt֍{o>t: „~DXXr @ժUxzzܹs?_~n߾-^Ϣ eZZ&88kkk7nKsCT^cHE )k2H 666dgg/0|+8B^ބN/ &hBo0Pƽ=z4O_&55@ 8p +W ̙C`` o۷oҥKjߏ3۷oG2ydΜ9>|8YYY̜9 w}w\:̞=Cry޽;fȐ!׏{RdlPP=z $$(LWO>aܸqӇsy~{=ʄ 9r$/&%%ɓ'ʠAc899RDTL&^ٳر+VN=ٳmۖ_~(Ν;G~~>.6m̙3̟?-Z0|pFŪUpuu>࣏>"!!___N:EDDcǎeʔ)DFFr=zI.]0`_~:tLFhhXwa8::ҨQ#BBB߿?a2hܸ1k :u7>>>L4H^y~͗FBBBB_M%Zv.< ; Ju./vby/`(+mS>X.z/,ضmDbb"...XYYEzz:ܿ!",,,$[NGRRC y4s!11JFܜ]Ҷm258`4@0$_@V2? >\-[i֬Zk׮o>֯_Ϯ]Xv-PhRV-֯_7|C޽aTT]t ۗ7|gbooի_QB>pi*Gt:rf͚ѹsg1^ӨU0 &tjUWՕ-[͛ >6 %o0k,<<3͛/5I&%4NJNNXah3n8t:_54oޜ+V0uTN>MV$c I9 *h#yR hd2ߊGaUbwV*Js 6aÆfccìYJl "((ĶrQF&M*ѶFY>?<A~:YYYVFCff&nnnb[ 8d2l8~8͚5K7?SNF͚5H%$$$$JQV-͓ ey9*^u`=x:!LFF`zRX_&+޾ 0,\ .ΛoY2xeػw/ jZhʕ+TZ$ @߾}+}{էO6lHTT+WD y'669s3gd6@/_Nxxx ߗʒ' ]JHHHh<"\*5+BE)QZz^pur %$ [sz0waǎѸqc\.\Ņlmm1Lb ƍ[.[&%%^{ www>CmƝ;wذazj5PZ&)) \ѣGܹ3r~Q bϞ=$%%ѧOlmm?1c0trz͛3j(Yd ^z&..'ORfM""" #*XAsoL&:vN>7nX#.\jժ\v kkk<<}:lٲ+++7o,o3AN>MTTk׮%''O>HT*6mbILL @Ϟ=b˖-dffk.nݺEdddS(?b ذaWҒgâ8>|oeDPW-v5Fc`{c4Y5vB1]RT"Ҷ|;/ `1ٙgs;;wӓZjaXݝ|r.]iiihdʕ>}`0֭۷ogΝ)SPH=zDttt.A 9" 95(,h_š<+ɥ Y!dde[9ed^6NNNl۶4iBRRԝ|ʔ)hZ8X;vN>}ػw/[n}Z&""ӧO3qDغu+%Jv >f͚3h޼9 .O>,\T*ׯ6mɉz>&M0|Zh'|±cLjAt҅`֬Yȑ#Uo&| ʕ#99Çc2Xj:N?/୷"44T:̜9mϴiر#$&&rkV3ѣGܿwww6lqvv&%%۷o `|hт;vֈF 3g-dddp}BCC9y$ǣhPl6Cbb"k׮ܹsTRÇSrejԨѣGka-PFFF_BA5;R{7ܼi"_'`DPsS(ʖW:gכ ɀ{;w.LJٳgV#͛7o߾5 ZbAEpwwX#7n̴ihҤI)S'OҦMΞ=#fmj5jywի4lfʔ) 43gpEWkTj׮M6moYj]~ $edmNM(WWWNV:t;w^.]-[`={6GGGGFRΝ;;w%JHƍiܸqJII`0燓ϟLJGR\9X|9&MHDQd„ ㏌?Db8;;?QaX5k+V`4iJ%]c22224 ((`~/\go?-U~޽۟-/ԭ@bT.]ڵH6HԫVp'C$*µDGbcc6l|~%Ǘ/_iӦ\rEZO?G|>2I֭Y`&88ׯχ~ݻ0xtXFx[.|˗/]v̞=m۶1i$<<}:fȑ{1h ~\_}e˖`07۷'..ϓTP(r-ҳzIzԩ ,sNߘ,ըQl(_|dԩÃ$hZ.\X޽{g8>OVڶm[իW?P$Ť%T LwhQb̈ `fl J:Nǘ1cHMMٙaÆHϞ=֭[DGGSF <<Hdd$޸Kjj*E[5pwwD~7o_wedd^ф燇vvvԩStؑ'NPn]z}m  ;CRѾ})O>զ7fx%k۲P1(z~?TjIHH $$K.ѺuBsUJ)z]|'iHj)>'nnnRXqr9s|X~GBCC3gJFܹs0`fFL&AAAhZ\޽{)[,~~~ѨQ#V^ԩS%u%RILL c͚59r Y|9:tҀ,YBŊY~==߿}Ė-[y///֬YCr,###Qjgj (####Z#3Pls$RϢ)Zqpp|TR%W܈dd6a<.t, H 82vvv̚5jժ_SR%Z- Eff&59FԫWO֭[s `2tR???bժU8::(}/Ah߾= ,ۛ~_~ZMdd${!""BSk&&&WWW aaa9sSNQN_~,Y'''ùsÆ #66V*$h4nݺ-########<<.B/uFA_F#BFFtޝ EddMdMgԛHכ42661 ;L69R=z˗bP(DFF믿RH4 9iN`` 3f@`ggGŊ߹w'N ** OOO4 ݺucݺulܸF` ;;۳zjW& Ln2dHn FZ-ׯ_gĉL0~[ROL&<<mՑz!E͍?l∉aذa 0ѣG͚5I&۔+Wu)ɧÇٷoiiiу͛Xk׮חf͚=~(RzuZjŸ28rqqqSZ`ڴiƍ '''h??z= ,w+V쯘߆ݻwf<<<?~<%K|SkiVR~}@rmN X,QZDk(R@T;"&pw4IT*t¹spss#((OOO:uD"E(QmƍG2e(RH|g}&73f dgg3͛7H"ܼyoooJ%mڴ~͜9SwӦM0sL=J1ob Vb ʔ)Ò%Kx"jŋIOOg͘f3gϚ5vݻDŽ ;w.YYYR/B||>>BJRRʰlHW Tm6QTܻwO$$$0vX}Zl)ي- F)`3M&Tj5:Di9CJBTB;y$ΝTT Gdd$-tdgg7jNJ߾}PUVEIs>8::tsBEbccy7… 9|0;vѣOȼDz;3/6BAy> MynF5QEEk4DPB:"/_ !FntZN`UpɩdjywrQ\t^zI߭jժTZlaСzSLcSDZ:uRɭ[6m`uڴikL[k9ݣ}|Ϙ1CQre,XVeŊs Ν;G6m?~}!Cp}-ZĚ5k$ܟӧOsii8Xz5ׯ_ɓ_/ݻws|}}ٹs'.W^J*:t+v 0 GqYM_|9ss6mqdffrEG HHH`֭;wI&ѭ[7.^Ç9r 8A9s&lڴF+ZA.]ҥ :'2{l\]]9z('<<Ν;uVVXA9r$wrBBBݻ77o&$$>}pQ9{,Nbȑ޽ݻeBbbbwwwnܸ!; 2222<70Y SKz7:y^JB#)P*,YR)tЁ *н{w&M}W^"\Ç{||4i҄ݻw[o`j֬Z&++gJ-ZrJ_Nҥ߿?...+V ę3guׯ'99JgΜ VK%pӧO'++K+Y``Μ9\pA&իW%JPdI"##dڴidffj+"* Qr ׮]#%%xRSS7 *ضuۥKqsswOOORRRx" 6Lj":P(DQRdddddq3 :?[?y AP*+WS2a5kӧOH޽ywhРjՊ5kְaϯ X<<< %%LEQR4ŋS~}T*o6Nɓk׎͛G~`pp0 6l p(̘1cR }j___~z=W\!99i H\ mڞA@P`2Q .L&ԩ=gQng-`3_o{gŊcȐ!RdEEȐm9%%GѣGlN`` 5k|mSݻ8p .\?bŊzZ22222/!?^$iu(5 9pGt1WwRJ$''ӽ{wڶmJb͚5Ra3 2eϤIVxyyH9r$nnn.]E~vJQT̚5KJ/oP(4m4W]ѠAW~-Ç԰Ə֭[Զ:v( -T*ΝKHH$jqwwgӦM={̜9st=???><<o}} RRR RHKKÇ{'CBB-H"O4oޜCiȼ4:BcSر#'Nnݺ\$}}}3T*۷rXm}`~s X< y{آ'_ewBϙ'VPJe$&&y?HJw6oqySj%Z4iLjըR:*W!⛔\'<5ļy?~<`@vvE7nСC1LtЁ7nKKKcR:ȟbŋnsM+Q-Jn(S ӧO?T O/ꉔ Fƍ,^uҢE{{( ?HA!Zl/1 ADE Pi0չj舫+{K.ܹsh5j RzLhh(C=>}:~~~|'ܽ{ϓÇݻ7 6DTbggJd21i$;v,^^^\|{qn޼رc|2#GXb$$$0e\]]3f ;v Q9<=bرlذ#F2yd?Nhh(u%88;wСCJ%ӦMZj}1V\Ir6l޽///lB @GP'GFFFFFFx (N;9?U~m=?QjX,9‚ 8z(},@I`m6 "F$b2,`X"eggGӦMٵkM6R/3۶mcС-[uѵkWJ.ի9w ƍ#55UJ-svvf8::ŋK.deeLz ::0qDTBjj*ׯȑ#t;;;N:ڵk L24nX*ٳ'6lܹsxxxOZTk֬ӄ1rH5j͛7EoSRBf̘ALL ggq0 g,f/vU'tZ111:tHAћffF3Ɍd`0[DZZwڵk4k,WQh4tڕ>}PB߿?*T <<^O3f sՕӧOPդqAZ-:Ǐִ&M0l0ڵk/| ݻwdeeq h42d:udɒRoVh4t:qvvߟ&M/I~Ԯ]~_H|||> m۶\22222?O)xV[x^$o(Nyc20L4i҄>4BZtlsDHDтd"``.<b2 RJSF BNJ%E^{yyִJ%Iڊj޽Kjj*8::2p@===k|bŬlx222{.%KO>Հ(֘b QQQ 2~ ێ3X, wspp@Ւdooo8#NLL bbbHJJz222^:_ҥKYr%c6d '**֭[s[>O?(.?$o,A0 *U֭[SJc4 Xz4m_CFF"(Ff,y -Z`Μ9,]ThE \& {{{~Dff&>ߟ@$N-b6̔(Y$TRf͚I6 RdBף0BCll,ҝewwwnݺh`0ViР˗/'55JE HMM,yARSS9w+W̥m6VXA֭9r$`,^fϞNcҥuظq#|7+V PxqmFF2d4hЀk׮e8;;gIwzM?GիдiS={6;ڵkk.VXoI"E8p #Gb4>}:%K$447Vl6¶mؼy3Eݻ=Fqf̘Aՙ4it ,^D6nș3g bԨQUOMFFFF% y 9mJ./,NJWy&RKVӦMLF20 d2z"b֚A|l._L ([,JF{nqqq\r( TZtRtlٲRlٲzQ2e #GSNxzz""*UBV3g8@6m(^8xzzJOOOʕ+fbڴiL8%KJ///$'nĈTZŋӱcG*VHDD&^zqi~W+]vAtЁ-[0m4\]]  *. S tؑʕ+~Ο?Ϯ]5k:u c7C aڵ8p7o?h"&LVeL&,Y®]۷/6l ::۷~zٿ?nnn=z3gsNܘ2e :tS۷o3n8|Mz-DQdԨQk׎s""nb >jժn:A`ԩtؑl2A`Ĉl޼B`۶mR YhԨgϞEӑw}Ƿ~ˣGػw_|>Hxxl-ZGGG._g&####'PM>v gȳxE9y64>>{J)hrVc%?/^dҥ8::J&M$k[׬Y3ڪU=z]}lˡ|\JŊcҥ899{\ߥM6iVZѪU+7oNW?s>i9:Ո#1b[lyUP_~ŒɓvѢE3x_P*̜9r1`.]qǎ#**sQ~}Uә={6ޔ)Sٳ7n`M3ݻ6mP~}-J>}|2=*Ul2ݻJڵk$$$DHH ^z;v ___233[.ÇGV۷kD>W^TX~=zb_~|hтxoNll,gΜɉMvv6AAA8p`zMpqqA<==qttdժU̟?Zjo>]ǹ}6윾JDQ;IE)SFFFFGAT؜"_("tmV#Zj)JTJ%@?otڕFpc{X,ע#9}Uѯ_?Z-3gΤ^z8::W_}%E;/^L=ؼy3UT!$$?`BBBP((]Qtڵk%i""">`ر,[M"$5,tȐ!*UERD)MϖC222+`RN?t]::uн{wɉeСgRߟ'NNjj,,###"gIEAbS/TfGk@rRP^iX WX1)]e2MTT+DEEQLZlquudɒ#'NulܸwM\\/E3gΤm۶ܹooo*T{0N:Ŕ)S¤$NIOOgDEEjY&ݣUVRQvvT n6 vڈȝ;wy,\ӧͣG(_<5j !!VZP(0(8::Fjj*̞=}vΟ?Oɒ%iذ!VBTR|~usl۶ݻw?RjUW%####("o4$L?˼^X$$f222Q(VIMMb<"h$$$@2e8q"%J --ӧJ޽iݺ5v"66nݺѺuk\·~3gqƔ,YMǸq(Z(sɉwy777ڶm @]aO7|Ihw}_͈#Tԇ6Zfܸq,] Һuk.]D۶mYn{I&DDD;w.Gjƌõk8x ^^^1uҰaCEzb RRR3%Ujժwߑ㟈T*t:jK^gҥb ͛,]J*1|lBJ0L<3XhZ~dbőBϞ=ر gRg%;;/۷oST)xw㏟iGrgr@Lll,`Ϟ=1mڴg_GDD?#GS޽K_2222dR<޹}#m)h9'BMJ^&jVKZZ6m̙3|B"bDp b˂*X:o&++ ڵkөS'vʕ+iܸ1Z;v0fO׮]X"=vb͚54j 'IEL&fԨQlݺQFď?Yn6m"88 6o>ի`?x8v˗sz*[niӦۀ5Baƅ'Od4nܘ-[RfMsQbE;,, vMÆ [.'N$66ݻwKo2HNNfϞ=$$$йsgʔ)X,k֬!11=zhtѫW/y˗/L2t^O?DHH;w`0Hp< zBEFF111DEE1h BCCW^8;;͒%Kprr?k*ԩիWh4l2J%"dv… v<`h4 6D ˖-#55={˗%%C@= Aʆ 0L׏3j(z_| ,YFC>}ps* @IDATssiڶmKrr2חݻK5u9{,+Wחjժ˩X":uˎ̟3BtCQ5m6賐7*~BYRXhYH϶i07e0e0n0m2e476Y0yFJ%I) ͛͛1Lhт~HݻGƍd޼ylٲɔ +L6 . X{Ar ++ÇS|yO-Ebر#ɀ :u* pB~wƌ` B 9s&%JKrI _I&0`FMbb"F"99Pk^;wRRR3f `uLvqssgggvɉ'ضm .`ĉF{~g*=l0̙CBB...ի8;;w^-[oF˖-9u?3 4̙3ܹ0m4 e˖-֩zmظq#۶mD߭3gͩSXf 6l $$$vcƌ!##CƮ^ʔ)S0 6'O``޽nݚk׮d6lPƍǽ{pu*jpppƌ"""`zIBB+WPhQV^MHHǎcܸqt:VZy!'Nbi&3? AgmR9y F ۗڱlx']o"]o$]o"Co"So$Co"h!h&`Bo6#Je׫W/hݺd$կ_n߾=*>}P~}i;m˗/3|pLJw[ X ܿ0.]͛>|8~~~deeɓ6l/^ʕ+>}?%KJH۶miԨ&L@VKΝ;ҸqcΟ?XSʕ+0`YYY=ÇsL&m۶TV}ICvS]vѲeKԩÁk$+66SNɄN9re˖1uTZ-GQF &MD=8w9ۻw/۷o̙35g0۷/TR *_rE~w/^ŋ… Ҿ}{ƍG"EС5k$,, k׎aÆG',,ٻ𨊯mB(J K$HQ: (@@ADA齉AAiKIBB!lrIHBH :xW%-_r?qڵo>N/"wUl)XfMT* ;;;"""HMMe˖-d2iaĉ={իWK ;N>-TT JVz+kkkbbbHJJb޽$&&Һu"W1 ^{5~WRRRHJJbܹsGQ>|8ݺum۶lݺKry:uDRRv}Zj ɨ[.3keeEzz:ǎԩS;v+Wh"ݻG6mETh4P|yr9˗'66+++jԨ,/Xd /_~QZ5P(\~6n܈5zF sSTy”xQГƀXQkƞ ƌCJJDV rL!ɒ W EF|/tܙƍKWV}]7n2L:K.4iV;:rjժ1i$֭˴i8}4Ǐd2ѯ_?iVΝiԨlڴ?gggOGY}?Djj*FWWW7nLXX*Uݝ?\:l6ݻiР'ݛ@:uĄ 0PNOƏ_`.h4ңGΝKh4ͷ~K>}x7СzƍsmN:S;g4tTZGGGBBBppp3dddFHH}ez/^իWYr%&)hZpuueHyĉaΜ9|X3f SNeС2eA%ԫWѣGӶm[hݺ5ƍ˗޷O>lڴ LBm۶nݚZj̕+W ̷moo53f`Ȑ!xxxPvmfΜLm۶|r|||5jfbرW_}︱c9'qqqԪU֭[=| :RIÆ iܸ14+bccoL&c„ DFFR\9:uꄳ3u%88;w2dt"]F.Kʕ+Svm:t@ժUy&7odĉL07Jڛ4ioM-cǎ{OAx&J`yiח H\=< *@v[UۼM6۱cM&111accCjj*III4lؐ"EfP+ :OSR1rF#&2r92BNNX[[V9z(?DXX7nGZ"3hZKGPFjj*NNNd"55dʗ//Q(8::RPըj<==dFRRRP(R櫼Y޽\%@c[[[d2X[[P(j 8993*n餀f'͍,,,,xΝw;##LWz=ߡV8;;;i)V̍+, \QOYYY&>>WWW ( \]]:?|%%%NFF666$''Rd̙L>)fk4qtt|: %Exx8˗E?,L&CVJpp0ǎQFhԤdhZݻC BA??q1rz3湟msTOnzn@ٜMjٛMZ+xNB!;æMΦr|A++WO2)EE?,A8# B W\RŃPFSeIID&K OW'd8 /*+++)HE IGy@KVcx&;y&;5JG>Wӧ]Y<##$٫zV0A#V# :/I_TwRȧRE=)b2Q:&DVz ?& 4oHիW̤~c( 9YZ= 0cF3r r&BJY(:%zBPp9ԩJ">>^J!oaiiIϞ=JDtt4u%337obeeEU&Lk׮)ȷo޽DFFҽ{w*T@DDZjRzu4 ׯɉ+Rzu6m= R+WУGtlڴ +++*WL D&ښTϰaÀg}ƙ3g(_< .ޞyq\\\IKKcƌ$$$Ю];/B`` `04i;wf+WH駟pppŅLƍ۷GףP(4y2e9m4qqqXYYakkˑ#G~c̘1"g#.\Hڵٹs'aaaDFFbmm͕+WhѢ;vӨjϟϤIl6ӽ{wuƬYΝ; 6~;w>4"d*tٳgYd gYA݊+Q0`jޢS}Iq3 %X6v瑆Bٳg}t0&@g0c0Aflf&3f&Lf3 LLUL&-YѣF???vرciܸ1;w}2w\*WLƍ)WvB滲(ɤAL&CSn]j׮СCU.=QTܿe˖СCY~=f5k_~-ZիW ɓ9r$7=3g֭[L<۷os!ߏjѢ'NL8ggg5jQQQ4iӧ3l0z͔)Sh׮'ueܹiRIvv6.]m۶@NUhJō7Po&JwwwVĉンsqW\!55ׯhthZjժ%xyyqURRRK(JZtnZMfͨWW^F/(4\~!C0m4~A ɛ9QAEJ4d^FzmۖUyd"-K f`4Ff( tr9  6pU"##Ev1c[nёʕ+f]︼ftN;;;r9FN']U*EfJ%qqq(J7lؐ $`mmhf\.u8ԩ QQQ899TI?eR7'Ofoi r~ " uҭ[7͛Ǿ}=z4@NJR///\TTWxxx`2،+ٌJEL&T*U"qJ-ZKr_O`2P(8fvܹsR+Nu:]㳲W<2!!}Ҽys{=qAu  ʬG^eR\J<%hZС-[,n^zlT}fd3r N^_|ɓ'9z(+Vf͚~z4 _~%Nȑ#XKKKӹ~:X[[K-[. tr WsSfjZ@TX"JgҺuk:D֭lݺ-ZvZ4 g̙8q]&u6s_`0HyQ8pK.ѧO']t9sǕ+W۷/SZjErr2 @fϞٳY``0&џZ櫯b׮]h4μyؾ};ϟ'--ڵkºu82Aߡp*?b}By<*hE,c@F#u7ۻDdk̨d39̄0!Ca:: V\.UVt֍jժiӦ M4aÆ( ZjE׮]Ν;d>`׮]ԯ_ggg7oNJpwwd2ѥK>CD&T*{Xr!ɰcL6 KKKR̙3 ,--gҤIL:VZJBTP(R}L&O6Yfk P*UDϞ=ILL{@N|ѯ+VD&Ѿ}{6lUVϭ%NӦMoooV\޽;;vr"/X *0vXr9~~~lڴs ڲsNѲeKVXcpuu;;;VXZNNNٓraggǥKۛ rM4iBʕV-Y/ JE&Mh޼9rDT*AAAԨQ VVV"D_pB- WbgGdy;β 'y1y?J@g[lQٯM4yuΝ\n2 RSSIJJaÆ$$$9oeeŹs瀜 :T:'P%#\EK 2y)'g>>e,AA `2QşY\I Dƍoj:uD;:Dž vZgϟ'99Y n/P?JbȐ!R,]³q֯_Æ ˷dTAw{D8DIb;.o?z %''5dff>Z-zTYt)}Ҿ>}0yRɓ̘1WWW)Ɂ`RP FDD:uBVe(~A^x%?֠SpأPF233 }3f͚a2Xl͚5O>2h민dffꫯh׮ .reee0|7oN~uSM}ҥt҅> {{{*U͛,2LJrJׯ |7,ZHjײe˸scС|Zի1h Zn͔)SW^tM*d(<%K`0?>| [l… ϻY B)G(j#7)LWy?ԸgK^t~~~;4jԈ5k93 ?3qqq:tȩ1~x~Glllؿ?wf 0ǏÖ-[ؼy3Vjժ;l~'ibϞ=jr9:ul۶.]H1ٺu+nnnR۵kڵkپ};+WVZՋj֬ӧ\TRE1}td 3fߧO>,_齅1\zڵk9 -Ab< x-vRQQ[XrOς%6SLa|'_K.%Kr tЁ#G ɨ]6 2DDӱo>vJʕ4hɄQJ&NH`` >>>ܹsLF@@ܻw HKXx17oޔתUCӦMiܸ17ndӇ˗/cggB@PìYhݺ5#F ))_~˗/BOl6?H3ϴdʗ[Ax'/,"oRwǎ{ҢRw AxZ-E^P(0NNN[) ³Exx8˗ QՄ̱chԨ&1Z{P?CPн{O8q0<ͻmnM ɝ=]`6y]U $ˌAA%-\HO+C˫x8mC"   <<<ؼy3Zcǎ8::uV FZZ/^aÆԩSrqIJ% Ǝ˾}0,]ȩW\aɒ%R1ƍӹsgꫯaر"El[p!G!55{ҥK:vHժUwA2PPE=^0=o/n$:>wdTX" ___WNV￁YSvm6l˗0aJ.] +8uOfܸqԪUÇ3eƍg} | ;uĮ]ػw/-Z8{lٻw/oz[yfpƍ`0 X~=۶mŅڵk 8}4of͚59~8TV )չ g$rz%zȣL n l,WXXXajԨA퉈ܹs@VVrbE_NVPT( bbbhҤ d26l@ =z4SNȑ#DDDȑ#8q"ܼyBA1LDGGsiZn`wNLF _'44???vAhh(ݻw';;kkkf3 <8ڵkLjj*rxxx|9҅'c2'oggGJJsn *QT_~~KR:" 4P,--YhÆ ?$<<,N:ū* .VXAjj*:u"&&F1o&OL1d2VZEvv6NBвeK֭[ہY+++7n̡C>|\NժU@9fV;v' www)Vl6}z^ϭ[CRFAcaaADDcǎe֬Yb0Vhт)Sзo_1R:w˗}6ԯ_y7KA(#)lWʢaa(ؠŠ PFbcc ARG}D`` oߦUVo3~xiժ Sʊ>}peڶmRd֬Y닕*Tooo,,,xWظq#7&22Rj^bET*^^^X[[R,^///ʗ/o?gΜA׳rJfϞM.]7ns壏>Ɔz1sῠKxx8=zl6qFݟwA2RHK3(/{P!VB/NkAA<B/nҠ =H;)i*¦lAxLGhŋdee9ٴAAx*՟L;۠*!'R Sd6Y|9{R:ǵpB[?~Cg}&+ӹ~Cj|'ܽ{;C~xw8pT]({gϦqƴhтA ="W:mI^1 |)qZ#&£ݹs 餌E?~_~Y*8|0*f͚RٳTZ7n#)))=zSN߿ OVZxzz'0j(ڵkGVVׯ_#((^zѩS'\]]?///WZ˵kpss#;;[*lfĈ4lؐaÆIY@rϞ=i޼9$&&b0"--LIMMETr96lBΎÇ/?n̘1'NczŅ D*^AD @ EK/nRXߒ6Lă3``޼yL6 )N8m4bbbb…s]hԨ111L>JEZZZFakkˈ#HJJb׏z˓Ve׮]K,Zf͚|2J֭[`NJtt4Æ ˋMRBlllpvvf…ܿ LڵkqwwO?Ãx&N(eЬXuɊ+Xv-k֬!66{r!fϞMpp0ժU#66͛Ǖ+Wh44jH @رcjW^AT2m4N>M.]wA2gٌd<Գ!-zԺփ=*X;J6Yn[lk׮dggsq޽?{`_bmm͕+Wx"/fРA@β(K"ضm}'&&ZM`` ?3j .0{lh֬tЁ pBj֬Irr2iӦѸqcvɓҒe˖q1&L@z0;wWjiii̞=9sqFZ-[nE.Kq"Fl&>>^{={puJ%۷>`[2LYrvvϹe SP\DFa=POz4P^~eN<%ƍҥK\vRSS`޼y|nj3FC VZlݺȩ͵kh޼9 666ܺuӵkW g"99'''~'ʘ1cDRIVVV$%%CϞ=v[YY7|C-B]v~_RJlْw\\ԫWVZq5  _- NGJر#2 WWW222t2Nd29LiIAxaU^0^Hif-C ;;;FիWߟ ?ӫW/f3-[䯿ݻRԩSYf 'OiccC 8<dffR\9 C{WǏ';;(d24cpww|l Fٙ+Vpi޽{_ݻ7*U";;իWK5c0y& L&h4pf3rٌFd2I :LFFFJXJ^V JPXX~)^^^ܽ{CҵkWΝ;GvgϞtܙw}NGjը_>.\`xxx@vv6{AѧO>|8+V$99YF222=zݦM4h'߿?k֬A&a21coW^_fȑбcG<<}پ}{vŹs簳|xxx0tPjժEbb" 4gggVZEjj*իWh4qwwG.zjݩR WY~mhl۶ƫ$ <}Ev48fzHq'E@"e֖-ZC\FH۶m\xxxЭ[|IԬY5k;Ɔ6m<Ԯ *Hi|}}َtZ-;w.rOyM[p~_goo믿! <;%h,XN$=WI Ξ=ݻIOO7ޠiӦ}_~oo#22իWR`0`2իj|?3gp1ׯfŤ1h $..y摖;#dee1o}0|p233QL6nݺ?pe0 L6VZDXXcƌ᫯K.6luaРA???n޼ɍ7wFb̙k̟?KҴiS,Y;w0`-[L&fϞM˖-ڵ+N`ĈDEE0eO.\HHHSN} Ɔ#Fо}{;wE۶m‚Gri >Sټy3qqql۶'2rHʕ+ߙ %ZUpH7)LWy?8Kʎ'Os̛7Ǐs)9V:|'\[[[89r$S0))uqA~7ڴiCHHjp.]ʉ'+ݩ Ҥݾ}F#[nˋ 0eX`+W֣G[~'Z-;vfΝӇ222q\x777:w1c3_TrKKKR|.OOOFرciڴ)^^^۷xb~.]ŋ:u*.]֭[ߟe4i]v@pav튣#={DF*U3f x{{s޽"ۥP(P*h4ԩ'00~+ Q\t͛7?Mjj*Gm۶ӹsg .]N[XXHceeS; .{y&;wdΜ91w\pvvwdB.caaQ~AQ!y˛9$ 1 %!5mڔs~zfĈl۶C0n8VZG}Ç`4mڔKR*ؐh4lmmdL|ǖlFѠj1t:4 2 \Nff&-[d֬Yl۶ JNGVVt:lmm1$&&"UJ%߿??۷˞={hР#==WRjU4iBjj*DDDBx.GA(Vau@ c)m^LWb >ɄhL&L&111{&IUS==ewee%A,  fM!^ &*y`胂y<˃Hp<*ݬ {߹uΜ9TUwOwMZl-ZHGy>ouZ .ŋ%Iw?pIҜ9stjɒ%㱝|Zr~JE_|ժJ>)c}cӾZtFGGu1.-ܢ>X{(\뮻N˗/M7ݤ_˗/׺u;qz]<>T*7j=X^Z7tyz:c$Ir.Rm߾]v^WK]~zo}K'pB yCZ@\zF{YL^2N\<*rIRز1H7ww?-.X@ںul٢+W;ק|P46n8~ PTCCCz3_.m6mݺUڵkuiMq]x ]Vtϟ?/]Eڹs~q{׽N gՒ%K&3N=ϭY^H{6G%լ纵z$'ql\DgB7$-YhleL+k2`1훀ܕ#$66h ]ƄFmW6fBd뮻twyڨu>Ƴ>-[LxsLnܸQ^{vؑ뜘Z۷o{t(KߐFW_P"ڵk;<nvg?kxk֬?kO~h%W^iߡ!r-ڽ{C=wbB6oެSN9E_W~Pg&MJRC__ rfom`?t5SNwҸw]Wxnлn}[ߒ$?$;ԟ3x 7ܠkp D;~>͟?_>n6]vezާ{lիG_җ4000>W_k$IuwIE]:kxqw[[iڤR駟wZf~'Аϟ;C￿*ϟ^xA?OtaIzDZnp Zj?|=Cկ~Kkz'TTT.cHz]z߮~M6駟=ܣ?\VgyihhHjU~ߩ\.ٳuMoz<@qڵkj˖-z^͛7'?ĈhLTe>=iUW&),W|03b^.B}ӟ??GUEںu\'|$Ӓ%Ktiizk_믿^7|>KJj٣sJժzzz488-X`|} /0x"cVdg͚Q=3.J*JVzwwz'mY###*Jڲe5o<}W~~O]wnF}#iޥJ: =S1zWÑȬ[$t`;c9&<֬YM6^kU*-o~r!Xou\.۵h"}_Խ+Iڽ{*Nx,a]w:Ҋ]A:h~;?/BzztYgi:''˵qF)_W:pB}$~?N9[NgyfϞK/TsQG}GtG\.kժUя~>͙3GqkϞ=:ꢋ.RE?cyz߯;ngիW3_z_^qֹ瞫5\s9Go{t!+3< .@-/иN;M^x=\o־-n$V+q!*FQddxDz$^Wƞu\=?Z6!z~Z ,Pnݪ-[hʕzU*mJqF}344_|em۶M[nռyvZvizcM;+B>FOhڵ:蠃4[QiΝug{^: N(344g}VK,T7(:S?f͚{N?"iT󨱮f=׍u#i=2h$4>-4Btk^Erh2o s[q +i +WtNBBB3:;M|v3 =h$=U HޡHFe`5OlHFJϝDI f_p:3ȤbƲgV${2^43Z@BurW*mq$-ٰΌ @J$@캾]wkwfF䲗- oz ;7ķۭt;:m,]嚚-@xFZO=|hc3`GtB ž)1! }rAE5h_ifg<r:UnʹdS@uMp] H(8`2tHK46 Vžз8I P\f]/$-jtsB_v䛦@Hp5TCsL< tH[얎x +,Kfx6Pcvly@ e׮캽h,H07+h(XF$`jyCZ@y OwP>$4MRAEjP˥3nɊ%Ŵ'WhDWI2횀\o7BdNBZ;1`wp- i4vec&t`RCd7y@\}=\v8V]ITn |ae-F (X@eI4rI,xoP5+r͐:uy]ǝ> A}=b^Fm+> &ă:5Tc`ZBN`eP*K~3 Y n7TƄ`]$vXR(X@w4^FUkWӺ ,큧|e2'!r+hnPoP"I +Y@[Cu4Z9|mF)!p,nf"$_V @ezlthU$"yg,3_UO:p ߆PlS"3#*[CZ1HZy' 7KÝқg @yCdKm+KoyWfK:\3KC+-C m1!/Py3C:Pu^ʹ$\=C#I- @g5vă9BZfh &Cc@ڄm+xB=IDHߐF1;ʛP @Z@|Ҏ3IgB2i,Z@²d0Uш na&-tT~S2V$$i)hk%"4nVJwyߐFW+Gg|^PJwWґ.Lf&"Lqout,S,ÀP2C H}5[t%H%}N8oC(I`֍Z(6_W _]W-X֍}=(^oz7s ĕ},_K5 !F;I8ufC#:"oL&+$ Yftx\}@Ln_$*["N@ىChοаNb !$^onoHUI_-)MJR'}oK]C %I}@httTwyG]h"N׷ukVHpffP_甗 -cU*qPVtXE(ҶmO\.LL#W뇝MŴuiΜ9ڵk֭[mXt \.O:9ϡ"3 ;XL$4*"͛7Oô~Ѕ*ކ5`ߵxjȤ- \&jJPS$Cc@D M@&,se@qshHJwP]?4TI&!il Cdr;H@dn%#Iäדc,B} Y`Ӈk{!ۭto2jY}>obJL@xCZ@\zL 2i_jK;$$ WKieYew62qa&΄nrzeLZ茱ƀPm䮄$WV$谱ƀF 7&4L۫j(Eӳq?cqA O]Jwu4zZ>ht8UT4g=zGc'Rhܹzk_8@۶m {a> Ѯ҆W 0m͚5K/o'… h"UiWqHwֆ t:z߮t:<1 vJ@~L fFLG}}}z'կ~UX :mKZno+ԇ>! /k, vBO%{G%R.s骫}OTǪjڤcˏg9N\S1::J#8B?h``@_W422r<)u}Iժ9̌0TUzz^N;Mw֮];o Mx^x= /\.kxdr١!5رCug?Y6'?عC`ٳG;vPIt^|E}׬Y: gN8lyЁ팉QVkƍ:餓cv  ^iVSmt򣧧G{+K.QHq=V)*i֬YSVW\>h~ )RTV_2}zёQ);׬Y)RR/6ZSooʥ3Zڨj{vQOG'tz!=쳪TZ1m"ẗ́pak/%0m$C>#Zx.\;wVr]ڼyfU_Js>o}zQzt}i:f1zꩧt7i}!}׫\)둇_zEHw5{l\ro1:_mzNǬ8F~ͫU\6ls?#8BuqR=+FFFl2]V6lЊ+nh w#Z57|fPSLZ甈NdddDw^IаjJzo_G5{lUU=3P__SGm޼Yv҇?aUsN~z[ޢs=Wf>죗r}k_ippPV9眣/\?U4009Xz]=.Rŋu%hΜ9gxo_ZMqRsj…ڱcz;bT*ocBp4ffBl @EQ2**z=T**JGE~3|ɺkuWjٲe[ӟTO>Y_Wb o駟Vڼy>h|zᇵzj]veZjoOw}-ZnIwxm۶_{L֭Soo8˥zzzT{M===;w8V^|ľL$Bu\ufPiӺGtBL'䃒T*ӳ^ZZKjUz]˖-9眣={T*ZjӦMںu/>hmٲE4::8E.\7񍊢H7nΝ;u?VX7_qxZvUtGjʕ={8I{G*˴n ͈^?Z>];V.UT{nU*ʹaKZGfϞ˿А>яG?8͞=[_|w_IҎ;&ӣ(Wק>)p-[hٲe뮻tyK/j(T$FZgZmZMw}U*+XwPAh~T& y"L[qT*iΜ9z488yMHBB(޽[CCC?իWo{щ'׼5:ChxOOƏ})h͚5z[ߪ#8BK.E] .@6mҶmw{~}_}ݧ۷kٲeV?= ,\P7po?u/}ݧ_|Q|z{{ڰa/^>Zz]zNYt03piSz}@|`itzj?\|+588={^5TU͚5K8$@wt;:m,]嚚-I& ӬYΒѰt?HYml֐N.?# d`oV ֑VqRA y\Dz|3 Ka r:UnN@S-c("-XݧrUooJД<{J%4}3Z?" ׶$$v;w^WꗿeN4dddD;wHvҞ={?dhm= o+)IJu!Ti&EEQDȥT*裏nIKYw IĜЗiϝ-J%U*U*oe-c~Zd VEHí )#Һ&w 6 S9H(\l٢7ںukI<0Sh ,7oH x( Ml]Ipd^kܹz_-[T*VtAկV3}BBs FlNEz\(1u;Vg$#H+ 8q7;Mh,A"2^Z>u֑Fd>Q^k˖- JQjDM< m`e%^v΅Qtp$[ٺŷ> KktLRI3 H(h/IEm"4`fH*Jyo 5(|dŒb_ HE;wv5]kddDks= OV$ L^7&2gUU  <`fP__$\yc~ۮ Friu H@@6͚5KE@q^˳ҺxL7 @RZoHNvS=}d$%@}3Zr5>HNv)L82ԳqơZ-xCkycI8O\}DN&Luʻ}Sug`i$4TϺh1Y7X~4 5$~2Dq}l]EQl/roܸq8}˕+[fV䀑(Yd]ERyux]1{ƞֶْ֕yydߌ-v2C54{|*o?I+?1eI):bntɅߚbR fcucL.416S+cc}]js<2\4*icc(g[7Qk>bYFj%ko cQpZ,M֤O޷1ɱܪ~֦YguY.goM{bgQ3 z$4zs927̌* [ ɛ$&K 4[Iڮg}$]o=es A&L06ʻ%%>u+N_+W> 1Sk?˺}־f:bⷆzd@LeVC)0beK@jf.'re8Iy@uQIb2ܤyH?njQx;2Mi4-jLP>-&Svfbʲ_k ߿,hLc*fg]Ę|ZL&߱^5(<5c{ޢƤ C1ebk9ybXv:y)vq$-XD#Ĥ\6KDrrR2nK@BC暭!Yӕ&ͺ41iJ'14q($IZFɅbff5w",󞣕Cҩ1.bLW5mNԍu3oԔ}Mۿ1ugE31km&Y;_l4$ym^=<'+c$`241IӕY7[)Ѱ\mY[Q\-!gWl^i +0;ِ^J\\EFĨGCJ',Y9]1%mTO'qZSsOZU1uZԘ1=t{_[SE)qZSs}M߾nn'ctl{-s{l0c% Ia'J+3!1H{K{߈^j0|ډMdmˢ:G#1Uk bc&^C;-1Uk bc&^C;-1Ukhkײa-" e-'BϽIH:@Ʋ9`d,:JBtB/-"^13qn)"^13qn)"^t)bkrWWa>8/1/:Fyf&&fk99úTEdֵ]- sv+/H#JV&iNPL8jF|r9Ԯl?t3oǿ+,_!ML0r~Hn644HۮH>05wەfk%$vNYn3/.I Wf%$vN6\9ڵ**:t|SS+f^CEzb|B1bo&|1$G<15c;_Zƹfl5yry{lwDw:ȕɲC4OlfN$5ff8WHC}xG|'c2N:ں>LM91ug+}u|goM5S[c[bl&'!iCned_ &% q+nbk{9yRaaH/-(}qC}\}_PWy{]#14S-|cRU1옊J3nuLILc?ij?k~kYm?|l[׮PeD,͍tBߜkb#L}?cZ3? lA]׷ͷ+OLiM)ZSk}u0:}u߶5[o 5֤dǷ-tMLgm23lICCIoS͋_'}>&c[?Yr}q\o1gkB5ScbjgzbϺh1MϚ~kbⷦ1MϚߚ[5=ǑܝǓeW;s長u0YLFmkU#)7o?-#ir6mUYˑUFxT$8z#H`,22ccl0ɱ/iiGLy瘉ЎstKLy瘉ЎstKLy>YϮ$—|Z:.-.<- f v7urfGuYed- ڷm:_317BeS+1{=JL51uk/͇""d/6Pzfw(ef,c>i_48L[ES7(ZĘ05Y1nP1u\rs~6o %"I2Z/[E|1ʍ& Ml~d$K ^/鰃seYewwN$OV1E̘E\ok(ZԘ|TLiULu&&3&s߼P1ש)Ӫ\1{֙䑫rl_70L' ;H;FZ KoׅZABe}H9n)c"9)=i0 -{P[2tbEb*9f5S^Eb*9f5]>K=YׅȘXI@v1r,w߲F>$ϗeϲT.1iwLS>E;S7~Y_~Eא'b:vŔg{r̬Iwr"k[B׭(oo?f7@L8Lv[bʫ@L8Lv[bʫ0b US'ȝHY%Ȼ-Z]SS#@L8Lv[bʫ@L8Lv[bʫl^IDAT0bʓ%$5K4 }۲&-Z+kZd<2$KL3͸={ӧްx(}#Ӯm-ܺ7p2p@ ɕ/sN[}C^S.oqW{7X| S~aןk(x藁eуV~afFa~^š`D(,$[&bY+v(㌨e]F 4d'cBZH|!X|l6< SRb]Wbe1qF7&QJ" &XZ&IsV=\Z#@?yiŞfvJPcr?ly702o}N*X0lhp[Dm@Tڢ= uzXz*~bEE:V Ѓp 0(@o~>)VX0VP»Y?=9ƽrІuavp,,6Ed mI.AjpX Hcea\ֻh[l0̂\V_8E(o] S5{ ֆ |.ccD[F0٦q3[ ~+4y+ [lao x \p2eg7vm6lQFpH'_cD:ʳ?e6X`A7QݾnO2߯x=li@O`ijW&7H+;>yn~͟n  `Dli^EYHCp,$p-8תűm)lBmP"Tpa|60®0BSP` ؕg? "!p #T 0Q.|W'6d`,F5%K,B3 V, \  TdW?0Xx[r Xxw5jV)`|$T)@@[Y-Fl` |%8RVq?j`g IK ,{-q31n-brBeślCΠˌRnڀ < ϏnlmU[iH.3 \#.I{2pe\4w%f|e_6A¨>C*?#J̈́ԣiP[&适z?KgT/~]g_8-`4e>fcOw0@B<%@f.i غ4 `lՑ/㥟LL=IH$t=h18FHqY[Ȁ^ǃ'͠JOw+;9eXPp 8=H}JIKg*ݲ J#`D.ư4Z,P#'Q%twӄl 0–bܐj~@9,i@P6xK,P/a 8VuK s? lm[qU*_l_ۮ in7ފ) [d$ZFYb%diӺ,F$`RkaAY:ʕذu}/ ^ vZ/kJ VDl0r" g?xIib *ENǗ6z [BV< XY6',h)HZum6#O \YN fRwjPQ4)4I6[ҫNomLwJ}me;vq1)w!$m< @nsަv}fFߒAG@[ϸ7{ \6@B0Q@+8$@3xЇ HO18Nԧ.XVb`).@_g΁yޅ۽ ;-po'. Qo.u)~ (6 @WG铯z+g|ЋGU)0?ja#^!K7~?姽z}16{G*`x}xw 'y~y^~y'wzwwӗw^P }]! sޗ{g {7|wyǧyb~|wgzz2#{sBP 9@3 @ "ЄNPR8P"`XxZ\؅^`bp@s! pTxx8Y[xceX"԰6'\GH P%hTHs0qPq0R P }<0 p.4(('pxff@E0Eh@m(;ms`r8@  hCX8Ř،HxIHw 18 r@(ȉxHȏȊHWph(h0}z@ra% 'َX8hؓB4PG)f@yPI@ jw? As Fx %^/)24Yfi)iA?jɡCJWvW")(YYz8ڞkٙC)y١xYP Ր9PN .*y5J7ڥ:  hjP)oz9<@x ʠdi~:j=꣆ g*i: (KC*z- Yɥ9Ycjj щZ&*)sh0ʭ{}銋8i [   e:ڬzLeNH *VJ93*pP NJJZwp':9PW:&j; {>ՠ2{kzJ:,X|ʞ}M x . h𰪺7۵ظ]г}q;BD 2کk ~ʞK۴WpBy0Z꺮۬`|e+J'@`.:N)Nrzj۫۶{KPtt@k 4+u\kza iٺቯ *+o{ WPFp ` `*xIw˼UFJJkכWp- *7F`{{+z;0zɯk[࿜0h`yO[ et۪h8мΫ,+tSՐ ZKZpzBi˶7ɞp+ti`;5\lzG>ƃEZ8_:> R0w Vܜι̬\wGLAzYĭ"I nwv<Ѩ( {} ںͻ G쿬 iK͞`Ϳ[4Lߜ_<@<,g̊C @ 0cz T} 0=K̤ e\/ li  Y puܢ'kn* =e]ܛ=ݛ}RI CmvM*=?|ܦ̸l};ږmE9m ZvdͼM-q :ٔ МʍHۥZ,#v%~'֙ -Z\+_+0d^f>W `+pnr>t^v~x.]B Eh]^`gfy>n(pQS~) wp ^`jNN:+ް >~ꩮꬮ>~빾d:pu)M,G=PǎɾNH`{(@wW D`&~ NVෙV0jNnu|POpOQ , :rԋg*8K (&Nkʺ׳*:\m>[B ;6N+  l C,LL< Q!5G t +rL2 3'[qpH-?.1t HtDAMMH!u'΃ʣG IǽK.! QHH҃8%&j5JǦ 2;2s3hN?EaPG-TWU(:PC@QEu`T'f5:u9#X]lQ^ڰC_V٘tT Lh-TFZKhôZTe$dxcQ" PEdSee]@*y`CH G wr%Njr_:ڼ/<{&;;oZWzw:3gCx#@UJ LTxTH ˥ 10D6QA-#v]G><̝,9Lt4ͮg/| @fR*)[3iT "=y|#}cq..E9ۯ$bQpH&>UA" :З(v,AA>S"Xlc (HG&ȠglB*o8N &C_@Z4Vc:;,^N oV3qm|c zb#&1Kl))VYb'] bsq @R I&tlatF3l_d@{&`-`P3Ln`<O:V!%H_Ujग़m3 8)s6SQ2*] 94\&hQod ˝2Ea#btHXEڸ-#p3BIЛS d.ef*0a;MGHn OAz ] , R*S U2HV*ծA(&SEԦNyʛr%{#IcyY>Obs֩".M4|fHc5JLmpRK b$AVvA;Yy/>)"j{VoUJoM4K ΪHHkZpN>q{RҒemYV.n & #|t廟`mxhԴHWM&L=M}{ECxp+&7j:Iaw"&HL]X\ahWX |/x$ >m b&#/odU.>&;wY1k,ޣj6y397g.o;.0+s+Fx~-vg1 ZNr_wf Mr"KeWPpKx=H4rCjhXCHh]qr0VFج.ZA%[_׹sJk(znzĥ%jXr./R#.^5:6s$:L1DxJ"iIr3}p)6M3ms+‰{҇V( Ň"hL!'Cv ~+v?2)Wg~7?#ak~LoyKp65/m!p=N~UrB+Aw.u-LBׯX3 6kKŻ4k?K8>D'c+ӱ;5@S>ڃ{5,#AA"B";8B$LB%B,@{ ,B*\B+DB-Bc0 CϐB5B6+B$ÓDXC56|C8-܇ CA9 AjFlDG|DHHhHDKDL^ A9oYPEY(ES܇9<A1̻2PxHE`dIDbDoNKEPU|FhT~xE-;ZCB?i^Y(HtLvlG*xyz&|GNG+,H8H=I\~U ._ ` ` ```a^`&pʥ%pdaaaTPX_ݚu!b".b#&$Nb%^b&Vbxb(b)b*'F b/b#0nb2.cb4Nc++Fa/b1c"6c;vb5c=b,n_c9c:cB>=>d4`8ddA.;FdJ>d[TaF>G HdI.J<~MNO6cQne+F>e0N#^e2ve\7ZYdZe[n\eXeYe`f<fWe^YFf!V[fP.?hfjfbkegfXH(gs6Hgu^gvnvxgygzg}g~#^gZ@bFZ`s>gw~hVzh{g>H/H]F]5]M=\eo5KB ΉFjWBvNUW8i[M]eօŭZ]iiiijj6>S7F=i]Uinjٕo#kY2@kP&~SȃZ8*n_`몾.]jk"5Cl^lvllW+.fkEam,,n΂D0nN^D(~X_Pn}nfon>o[hXo.[.jnɞZ`*]m/nGnfnNpnno}` '> Wo^ooo~E P@qqWQURRT@VuUHpxvZPEqq+qr>=U U\Ɇ堘f] 9t,uϩR'OIK.:*s)3Ht3 "h"HHtBI/Ђ xkHXr-9}hRe;'IQTM@>B/EOtGoHtJ'y[x듦bBԲsLR-MVN@t?$t2ZuFw]^'ӷ)+6psKI\~$NSMTPduJul/.ZvEv]^trjH$6G((Ց,hw{P BY~G[G'5bs7H(KxRP~ѭ|yuu[\'G#P btp--MdsxwAzn_zOy-S/w<6PBRFtw') _if)%gEnLjgy 뵗"z$+\a/^>դe\;n꣛ J'gvRHw*yjzQvty+$RE|6oA׮b*Gi.zb' }1щC9 Y R*'{G-bWp/ec,IS:j1tZ̛r:]UJM7lwe'%J)ژf9pT8(]x7w|FٲzgtxFhb[|Cv4]QC_mի74x8[ī}rCkیHxy@"gBW7=UuGXὑ*W xdn@YO<I;TmpPb|K%p;Bl\ WnC'-t| 8H8׹E[,69+D;ߡ)M‹!hAKzQ !H8.%ܑ⃔7gYЏbYCB`AH4ґ$ hʰ}M$ OڶLYq`߽1p ,lVzJl"FE$azLJz .I]zQۼvHqql%:WuR2x %'A 6((H`l I&d$E ꒞kXF!+=.rb^wx.t+RH!r%-]JT߮=/z+\^}/|1n[?"x @ {80 P@B:p2 :Px K(pvV`VK<j#8dP: 0'p8 vӇuizj8q\`'X ~0i\cgx>_(+>\b81w/ VXNb;jP<Ydh0%7_^sEb7SnSxˍ)Y85\ɁϜfC7œfwc0?2[`M'Z7α;a1y^,ۮPNqgmA:ˋ4CH+jd6g=lD{\d[Oj޵M~2/uoZѸwÜ+:2}kp;zn6N}|H$v1_[ʲmmw'[dq]it:nsy7!5-Yv@1s6g+k][| NeZ:wLD A6=qyK"_C֣?]Z~7Rnz =M~o/Y~!zf?V_xܱ}rݟ;ǎbi b/O;| .v~{K|b׼zQ aAoGKr峍rn׻Qcz8~îzgVC~֞9ywx[ɑQE@709ڍiAA iZyY}]uޑM]й՞@Y&dmƒ)@G !%&l&8*l6DXA̤<< -DL`x]فFr.!!a!NJ&6NXN!`q_ a \BA (*A]l1X"6 "a &%,X4A&(q$aa6^ R01^2*#3:A4"~D)F)*A++,֢m-$' "^)Znf*(6A&`&c5c.1 a P"&%, A((HX32Q#MXFi#$\_ JK¤LҤM:mAH4 =dDNdE^dFn$&t$ d;>@dy"B"C\V% APF9nBp`b"̃NbH)lB&$ l&`&$&7` ]L:\@dQ6q ,6cAdN Tefffg&A8}[]\e]e^e_J_`&aide[.IɦI&PB*:K.* %7H<(;XN '$&lC&l]RB&1`DLL( |]Li^#j_ch]h.h&RhhփS'8ʝy{§|ҧ'~ dvp'zg(*d'y!S%<ÂAdBm} (~gLy36!&1A3.<(g-ih(PP&ݔ"eR$JibR؞)kmUf٘jj)A"b}mA3 "h5iq ,<j** y$jr`h!z(C޿)Mkf:X~k⚟A='"^* +*"+)k)$Z2iBBxJ)3lA dB&Za*oJe=,!i5Š KRbΕKf6Pr¦ l,,BdeE*džȖr"kT-! hRjgxm!lQ*]%f̓_>i(%&Bnº`"mb#&*ԆgM*',\eFn|*薮݁e-An).*n-ΪI ,_̂(9Bo.a~/kkJ~/~h% mZoI/Ro/*>ƒ-զo ^uZ @S~Bp-()jboӺf[2u ZK0˔.5 op m_ ۯglsͲfp K 1ߺIOss( #A'1+{sK;1/kBnrI܁GW'sN?2$k t,t-L i.Bn'rv!rGmo=F}6S_C#qC7yyxAzAw{w{Ƿ|73ŷ%A~%7 x5v r KpL ȁqzW7{7|||t{~8+Xw,uCoxv|A$hqkQ0@B4 L)YLU?*IHo2oĀ)s1yW#᠓[ͩE-::C[zpӕo_ Ajz3{RRS3RCA:<8$'ԳU+yzmNīKzg{)öM:  A6:¯KLκHB;/yxA+|þ6|ς D~_o>w~+ >ꧾ꯾k06x7ASWg= \C2 wg.8@O~g_>'>??G@ C $4S/7|wB20&?7 ?.?׿?׿Ľsb,`= `@Ĉxp#*t']H4yR+Yte.3iִygΚ7z2e Nq#F7NTvrTZuFVfp}lXcɖ=v-kٶ !n\pqo^w7W0|C+&@/aG^~n'n35%ޛm ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞ?_域Pd( X@_B!^2d(/.\lcC<(5Ą9f<Ĝ|툩7'.r.WQ>JHd*Y#}D)GL4Ư׬ipӅC-j+OҜUfVf]9ָEJiu׿;l؋ulY2瘟X 6kFw4׺ffm2nr TDwj{ێRgC;>wn)߶,4gpӛ(o7_1nwҍ8q(p_>OƥDPS\Q (43F;a'qAy;p (mP5T8 McJWiv;pj @7/a]!dІ28&kx ?: zۀ $@Pz3ge.x \A -(@ "-zl@F6@d@ 4!0AҔ,l<vT H` `4,( O /ҭAo-A$@֡LKW Ҡd, `j@ /H`IDj֪R޼. `@`H!l# 9SH.AFa\j@+z˷0<̷0VBkQѷM  00`, nN @@8@Є06AA^HA 9@ =MkPF D v*;6!:$6A@ x ]@]1(봊 pFO5A4a q MO&- *q& &` D  4PaUq]Q!J/a1"""FaPzK q FA&k>`Qoc`*y/Bww* 0}}!p 0sD9s|y3Pww)Bn ~9| zN870w|=w1xpsy(X%B n 8=%G_NXSLX8 8;mƆ'B`tX~}X .%Bh ؋Xǘ}ՌXXnd T`dX؏9 C' ;PK|RRPK.DOEBPS/img/cohcw_dt_003.gifj2GIF89a ٳpppttgtg󖵖z{|Zd[ژ޽,-. NZN@@@Ƿx拘KLMZ\]ʹڶ壣uy|ehlʧs{s#)#==>292бܺbgkkkl:<=VbZ톢\bi7C78:=qvzVZ\ɑꉊ]_`쀁sābibYlYSYT9<9mt{ڄCKCq~,6,ԽGJM^f^ijg۷69<~~334QQQX[W;;8<<;XȱǏeIɒ" B8ɲKcʜIs8s3?ѣHôӧPB-@իV?(ȇI` KTYRӪ-N6z Kw'ٱg]wۿTaw]cRIrGh졳 ÄQ@Өnzk%b~B99r玓w>֬9¼MH.xJ͔B9{ :ҦQV]uװeǦ6n9xq!sG8] Q݂wi6yꭷZk7_msܷ~%B`u f`AC C LAy^ס%g~q[q+bt/Ƙ]'eif8c$imW"p¡ XyvyL~y!ސbJ.fqOYtig3>g^V珂7 _- `QN9gV:P7bgh*憃硡&>Ha2q)x~(ZHz:Ɣ"|BGm۪Yg)[ߡٮ-okv*Rh^*j̖\@%z?0(&&b wAvk =\C h ,h $~Pr,0B?TJWr^\)ſ MJaDELDI0Xk0# !X ?6 C|H'l;:.Fz$,ٙOB L h0&;a\;$@?,D &83@!bk@ L,bA8լIJTB GńO(JR 2MStXG`&ȷ<0#Ax.:i nZL\WZ 7x2YEB aq@Ht+^zGp&TU1{6Z!6]";ʎf; 'P| R2L:D8$L©DL%@~HxOr HLP&-~S 5( `3L IP;+(IE ڰ=,#]DԠJ1 3//fvkb]oK'3,`V03"ϩ0(ȡrhA:?sy%>qŻ7g\y-e2&qsW\A;]$h\$ cUr-ўDn̩ULPLlj|TB6.A:z泟ACj)E7z5 Taѕ>i @ 5kiz` x pT"Idmʯ5AV-alNyY\&6q瘀Z`v"+DI2rdQ S @=A3 LV; 6cM }[npBjspf$ᮋHroC><+0gs 6ol)}WS[W[bh;dc[v% ڶ'+ KF͸Ϲ rF A`XM2=1D6W$'Ҕ xeԧ#;}>?gwS?A*E&=D$Ez%ڹ;+F#I⛽lNȄzr1x.gNjWZ.r^tO^yN>nC.-`}bNd׭A.-N t~vR >M,Rbz ъۛi~.Y^J^#Nޚ达ݏNܑ>N `qҖꚑ>.>Z~N~MZ~~Ȯ~Zo׎N͙._:pĢ%=MEĢZ//-/&~ؽ>=^F7P ?SUN -R?':o)jK%_>D_w%H}1ONܺ<MowO */Qi.0ohݎ {0޽ c0۞u{jOč |/wLWɟAO_6qX߿/Nx!|P:.d05%PE5nÄ!0ITdIK L$iAM9 Pg٘AG %Jx d 0rUd`t3H 8@e˚2i~YnϤK pjÇX+#ǖ=yKL&~֭NqE`(1k/!8 @؀c0#Ol2Nx3CvZ:iSX:GC&.iJc2j@&5,vӕ+&RfӈeSj~J>*TʰKl1ƾS)ʳk (orXF)BlPA5t:+좮* ò4t%-XHb܃H 51q3-(X(b"״ ijPC\I1 n8,ۃD=.ϩ3HsMU:4غ;A 2MHBDfLQ*<*D8e4b#,R_2UTeU`U>͆W]y`aq=c$TYgw~(H9/$lcʀޗuV@: z%gM8sWw\*y w Aߩ}Ӣ8Q $ cku+Ղ`E %b2 Q_N=z#P#ɤ3o2 L2L X LI@1ڃ$0qje)H8NV­ځ CF[vnEVJo{kH|_M0`"ƨ92`snx( XfML uq$P٫c_'םr߁ y>;?eo{VCM첶5ZkƂk5#p2'qpz">\I LD8¡,N0W,t۝%at-x j&q0zx kt450UA6ɖLeOAp obq &0&Jn9ʰ 4{bk^01^ĸA2(?"] =@(;u@P!E“ bEUe8IB۠dV 8q?)RN!2Jj81`JjJM7,5!/yP*tvS&We=k#xZ1q,JJQ+M9YG9= lLT*KC'6 HGL,^j4!%;[ &=RC0+H &0J~`QckݹBAF*2W#!&MBs]\vK: yC6Nao{{"WVՄlk\c@,*P j )ރv6>8¹k gX0Hg'$0qexm}$sc^rÆ#N' %Xk\&M8EaNS^VWNNhSC4Ʒّ{&Jr@gz>:Y09l'MX Fsq@dЂEpE2uAuUY:.]uLܙ&5s]ת03= FZ4lZ(5)@o!6ÊQ3vYj:q[#RFu=Et×G݃7[51&,<o-hBsݞ]g 8;l|z"AmF@%_72A?F*w}gS۷C_֊1V\ x'@;.:^?_l6w/q/?wՍL{ >t7 uї-uǼaT?N'[GRCFX; 4zIx~o9 DW;x=I/F?q~3^OnVp\DF~OgZK @@<@L,)b=s= [;@4??@@KP@<@A@8< @@A,Lc~0:#R  A$A?=?)t[(( @0/B0^?ذ?8!XC6\4xC8L9C;FC=CC?@ D@B,BE\ 4`=>C@0U pAH6lC89L;,=C?CADC4DD\DX܀F p=C*r362+uD>\EWd AH I 8$t9ɘqIA& KL33 =lHdSyWCDe}WqN9XWXU!"Lx]X^-EӇW\pMd ؁p֠V+uzcYdOlP=BVWuSQԦ@W9Dy0>YUNeQWE=Z*uٗ 8I50:D2xPXtԭmU[)Eձ%[-׽xUXYݷZ۞=Q TnEDז%Kd,m J/, v`}\%Vm{֕mӿ\ @[.]'\@:՟eڽuݾ-V\ L$H\~T3SS%}z[(XEZ5 ȂX2L8]^Pe: NX U)m<nڴu^P߶e m޵K?`Zb!V|PMP ߦ ܠ4 D0xҵwSC6a28mx01#F>fM^1@L6P,`^$dCFdE.ڰ=Uxc%%f TYNfOe%-TP X^ueXPY]&]?z}*F6C`.3-cNC%a=lhfU%5.=_ϣ;F vx<^_?R8X]H[PhQXH5V8VhIG>vKv8#d`8Hid磼瓠*C6@f? Fh<[`hh&RpRR89WPi& hema 6暆ǜz,X8ꏌ%4_,\HD]~cj$c@c͵sjiK僯3oDRHXOk k>)psXMTPl>wncNi8f89V:&F S`xÀ_x_X($`OA X0 uxB5))0wH$J0U]PU0`+Hhv 4i`ȁfiM_d+P+e@<_dcn%n6Hn+0o8<6$8]dnFlvZd6pW `p06@$wX _І,R8Gd??qPoBp qvbn>S>V 4x "@r\&THwV@N98r-$rHm82W.6u:<&%F.4cXE؀~ >M+0$pK0)Ȃ W]VpdnpLv4InEoi '^?>p,e)@v4VXXK[gJ("0R0VȂ3pcP3hd_vghvAxqZvicvimOn_iq$%x @V}Xuy{}w3Ugn0xsouNfFnV'ģ{ {!P:tPIU`FoI`y5mt|c F84P?v_u`rc $uІ uSІkpx|FtpuΆk0xAxvVjiF3`{OώPG'hm8zO3df pf?01зGMXG?wh׏ %٧J?}ݧ~flxgGsh~׸Es=^R\``tƒͅpHPT"G,$cà;vu@J Zw*:\d)9@r-PgW-JGJi=Rj*֬U}Ƅ u2xa,;B8h lHE< m AA1h(wHu;m.pʑ,r U΀֡Ѣ FX"N1Ȱf `'pZQY(ҰuB%<~\7~o(ċkHʔDh\CiuX 6qYW[s%E słFG։)(t]xWS詧g@i "}Kw_~V n0@)|h@luPB4ƒV!`yP;$PW;X)JJ@`v3.z i%l1Vuۮ^Y V#ȩpl6+`BI dqҷ[@ ;KiA TX8'^ 8A6B<@DJA 3P6tj;tR#SdfZ  6i)s6W0 U[ gph$,h;CP V(6c ,&b;g }D(& ǔ:6z/x$p#0wUS+eG>9W+txw "vT|i_$,$91Hp4JR u!m#%0J!mЁV.0s :iE:#uZDgG}f ], . ޗF1kl1ȑ(a6`H6BVHA3`!# |h")++X\&;O\T)8p)cqǰ*F[e-o]R aDWu*;1Ap@[x }ԅFMmrsq 8PNґpJt# f>PALbFp|Q|)UFEO5H?rŸ}gE|0JIV>LݘJO :5V*N7 p0ť>]PEԤI0#IJVԥ6&OjT3YMfWUO;YѪ0#y+)wTWהfOU~4lYˬ.v},R%Kx="JY/nX>sENpfkb{Uln䯛f]-k;5nm=S]͢ |۽/`<]2X5nYϛ\2vͅ{NWojnW4ibL8=pkkT&8 6!mV^v{[(44͓݄@z GΕ mU<\ ٥0jC|,ljUZE!V v|7k_WЎ;|^l=0\`J~4Y?]p`! 3r UY&1+ӴV/g bf)p3YV^KIF3^AE8)޲ yU bXz̳.1 "?kZ BEh~.43]h75S#L͠uldXǖ is_D=nx i Zrʾ"ܲ}|:>2n`c%x˟)g6"a3"rIB6 q慾7W-S y]}nt>qp d)wK]Cg߸ Au=CtUiclqr $,""3nŷF|SvƯhFg<9']G  |GwӠ%Ҿ?}o˸y~z/٫я~j '8;l^Eש3=^iX1m1_^} 5|ÿ`㥞uU^؁f1]A][)Z&6YRJɝImF#B]E B8ހ` `l\@! ,J޾^NaYX5maaZ >L @a!&^*A0N{%\n,b ʈ ``GbE$ @h"!)nޘ:"1#2"-㪝W#؜և-=baC c1&#:2Ha"44R<^5B6j#'f ![8p7C1#:*:c;>#<~U H:%\e\X>LҢEFFZ[ʥ`fR T"M6Md%O pL&pe^&f^l&gvfff"h&i&Yf  4zZ%VPm@fezgAhp&j'dk^emڦn&o&h'v&&Y"fq"'k^$ "%GHttffuzufp'w!$'casFdgzbzn&hgpifr&)P%l6s~f (w& px~#geNn$hZ@jRd&^eygtgAR|z 4f.>fZgJ'h珎&x划(z.z5tfJ~(snu('`hpnbhF̬ި&`(i-).aNi ~Z"jj"hfmUBh*iz&\hrhN*n)oj\)hJ jizh#t**e)o6ghh^*#*z@rqj)N&\밊Mv l"8h&^fkh5,R6ʮ,Fݵ(Z@o֫v6lFƬf'뱚^AӪlZ\Jzj&A\TΚ)-׶lR"ګ&f6x^mg.+ۢ&~".Vj^&nmgᆭm,zl*&Bb:-Ծ,ޮ.Ʃ$ȮҮVB!."2nLl۾z"/g2/ʌ82lZoےA.j~ئ/., Xi/yo_opf.Bogg30i:A'fnb0j0iBڭ.V/@ ppoVpzh #&w0,. .gp?pǠ+ q!0Zpp 0Yׁd1DZ1q ر1ghB ?o!2"-sB!/2%q2T2&q#w#Vo1Lr&g%(qou:l+,Dz,2-ײ-r.5$.2000C 2' -73߲021O35Ws'32g33805926k6'c3C834 39=O:'*GQ */VYX 4AEt0B/4C{C?4PCESt\t(Fo4Gwt>4H3tGA4B4C4<4DKTtEctFw4NotHtHK0C tJJ'K/4L?84M[E4T+OO:[IsV 5QQ+tR+5S75FGuNS5Z>X'  FjnpxW4LG4L7uشYtZHPӵ]uRDSG6Hs]asuQ5^R76M5dsdO6;X6\6J#vbuXXcFGjvP ]ktL5_m6n#H6P4pt^^;vmro3s6a?\A#4g'lvMgvoU{?txKt7g'5_zv} o;7|Ƿk];4c7vtr+w`77gk|#u'dSvc6p7KC7zw~T̈8kGuxXqnM'wVfwxrOobӶNs7gvb{W9+xkx4x9O8X϶SuI% 9:4:':tm¢GO_@_:O9Bĺ:׺:d2躯::(\:/;3;?}?C<׿߿? 4xaB 6tbD)VxcF `ǐI4yeJ+Yt&F?gN;y(˙k:hPK6uҤE &`5jV[v*#H~5{mZkN[,[sֵp={lp'=m)W 8s.RIK.59~r 1C y9rM7y$_vzt(hҦK~kزa׾w0~\r׷OC7=R[^MlM mރ/> 5*,4; <c=& 7{p? AmCA5ֈP FJx D#! /AC2=%8'l6|.D aX{8^F6WYdAMXp4Ӝ1(S8G|ŽkL&\DMD]aTZT̔^uܴ䲌 /AX6ޖEIetwn~nXvd1ք4Y݆1MZl~ů9vX5Q0UBxSV W'N-=T81=~6wcT6 7瞵N (@WhY$\AMbpwg:(9 c_si5A4jx[{'9nV#5k%kbrp"'s3"EM#YH. .X<<5K}Wx8y_~yB zoqBqm/Z`vB֋/gy饯zC Ev (o};?Mz} Aș1#u@6y$'HpLi?YG]0B* 'TN /z kDpxKaY(rja8(fbVC$eIQÀ HB:|LM`h`j%0ȡy\ YGa?*<^n?P+DBabvСֺ[֊h\-֏qhs[L-vqwrPށo][ݣNٕ$+_FOM~L% z+WߕXֲ;!<RXkl \`OjE\c@@pWΑ.fI 5c:.PS, ҆d%y)8 x+~0We=Cxpqq!UyG9ld/>3uɬT~j`3 8`-Ǹ 2h'_3X} 3grCP>k">ПI] dT̺6_B(3x5g>@ކ]P%VfG"ʗ:}>5e;ri ^j=@%f"l3G" )Ԝ*$UpFh[<'!xI7=0 CLw:it]$oi(G6M{_]r:=@Yҥ6vY +P>,A7SZ(Ng(WoQ{aDNaHڡxUP9|)՞*@0~WENtg"|ˡÇ۞P wzpkgoqz*N_~vXp. Ю9WD9q H4Էt>o PPjaLCoJ@/1pv!A:p-p@`KA :&bR.LLI( 3Ġ CdDUXcP'O$&\F0l GC ^epkĤp%L3#   % Ed ԰$唘`Y23V@GP1gA@zaY3S>s*8a>S??<{% $@@@ @ATAT" <bTB'B%W+4+8CuC"DbD?tCJ4*P*TDEE"F[T:ft)l,hMp4(x(|T8SHHHITIT JHTJTJ' HJKTIXL4TMTM MN-./c0O 0PP UAQa#%ARa LєM75SN4.T0O5P PuQQ72'R: ^A2utS;STRTNMTQUUU QcUV VQW)3R04OY[ `]R(ѿN)X%HDfEf`8ԀBc[9u0O\U]ϐ]'!EKU5iA.FR(%>u \ TUU \ӕV֨޵`Db=l*V0_[e[TdWuP`M%+SaK"H\j`_C_B@cfoV``IaO6+#veh$i=)f߃F8c 3dv\w\K]WRhhIhdb_lVfmhj0sZggQvKlVLƖjbi6c_mpjVq6aѰn6HovoeLlerl+ms?6tGntV!wdXr)o/vv7[;jmywtqVxFhliaw7,6F27[j9wm6UEgIn7zUlVr[u|3f| lyswOWggxqW7r{Wiwyyzw7חz qݕx!vrr{oE|, w q wٷzO}7h;u?~ su7}ׂx]aNuocwrE q7nuiȐcׄUA+8n/xa7{9~meWfkcom8Xa87jYE>|d?A1w n`ؐ_XssUm?D`8a)Q4@+ flrCj$W츌}OUuAa؊ו8_`XA~9[ىY9t@fAw% q3! vvM gVSXL@@y~cKn2 2vwY˷ xwYUA La>-q5X ` 7 8ȹyz1ꀅA VaR( Ln px{a^a4dcQ @ \aPDr@Pp@ZtEaWu(D!]{x@xC^aG#4n@ r``F ZX`@QpXAUա u\ q! @}?LHFa2aN%4!5Xl\acD_ [w7 &`LzRs =|5@@ PU`!\ @ `pLc8K|I)A +ʀawNsïa`YwL٘÷T[E|&~KzwpxH< ʠdT ^ M@L`X uiȾ7`ͻ]gA&H]P= xz! F# 4`JޠlL`@ `@m륁]e<g'$FY= s$ `ֳɟ"ؓe@C p8`;V \~`D]]-ڹ@<_}|5@\7\ L n^Mzy\\#Y }ԅQ<>xa~aO bg`ʧp@ ._i\#7h8%A&a@DA+ A A r:U3vğO>b]F! O^^š5Gi"„z8|X1*F,`4QF]ܨ$02$/^P2&l2TLx̀"ˈyU;o#W{\y,([6&d6ċ?<̛#w.ƌxAbD_S&Q%Iz}$&7q#H?7~*"g/Q}Oi9$+ p@$q(jpnaA-PpQdtE $JL]c3Ā)ex~7T4&p.%CO宗9E*M$`ZYd_Ӌ x{ c%@ J/™B*^U<Mmk>qJ>+90+laC UaD =U=ɗ6%/ myk"HB iFʉ3#X5b?û$@›GP򑅤 WZV!u8W6ґd$Ʒlr}e-Rh^&b#"WV%61|3!oq)e Չ15\$#{HjC ֠K^ޫEIЂX-Urylvbs ЉE:t0 uyiF0(ϨJV]<ɞ/TBSjg&2VQ#qp\''Nju" P{!%4*ҥ22EV^\rO*q{-j)MVӚT? ZT՗pͣպCegX/[6R30*юpYhj#t2XB-R3>gm*Y +C4iIW஖T [.,n<^4,iPfW]"eWV.5ٚmr-j;NVƵaXZF@)tmFUp=pH]XS6}`9m[NGox<ֱvyB.2}$+yLn(Ky l+x\r d#Bvd)K 2 8:&&[DϺɘGD+zьnDє/Lkё? jJw:&5N !ZihuRkX/`ֳno\_`׼E`+y. =5@fl"Ht.{t~-)h.ύt{춴PjTzBhui]k\׿6dMG8" rh8HxOqhhǶMo9+diJ QL,o_/7-k|ߺV/o2}i#< w8'.q 'и/w#q < d}lG4MmU<^{VѣMm/rxġ.u[ #-$ w *@p]V$Ћ~~{0j޴w$o^7z3#:+ʠK7AÁ~~M>5|?zX 3?DP h+ G!hd>}nw6w:o>w'{lF~I{ 7xNpPGq|'0M!GD$G6Qw I[fK ` PGXifzj7~h~{؁VtQw"~LGxR7uq>mCQ5un cGvA ` h @Lh?@iJpiLVsz]zs@'wh!gxmqrȁ nX<8(hh(p BHfWxh.ֈhB ֈ` hfJpvH$Lh X@ȈwhX~ \oq.s.AwyM;PK٣xjjPK.DOEBPS/img/patch.pngW6PNG  IHDRH@ pHYs+ IDATx] |T5NrΙN[nb)"*( PU𮠋WDET.׽WP WP`+ P uY!Ng+3NA]ןpIOΜ/_O>q"Z÷I&Бf 1"q!D) đ1RP3uSPI4ae\eN#x+" QΩݟruyQ!szن-Q338Ax X8; 8crxy[NN 0[I*~Xdbcl1[.CG.†&G 1&7ՐIfBI]!r`&oLAtMt8@I<!x턄WPPP8dɣvo{BL%5|!1v*ə7R3-2(©֜@ȁ9㒼,p/_2B;iM !FiIG?x|?GNb$w=3L(w/ SV _)'go; C&{z~s-rj 6??9=}׎9#fȭOl7G9&t.dA} ?9RPwƈ#f"B ctY89Ђ3!vzr*󱗜j>z!#"R3j˹=op*A P]Ţ 2=ז+$5Mn[NC}EΌ ʚQGu6P l!K׿YզiNC\κIjtTAAAAswNYjWJ*jx(A꺒]#ܧk5!ɟDy =[9U&-*ԡ8bs0ؖ(ջU(lPucp>2 [S%:`F$olw[Iezօ-ΡXI=ѫw'yeT) cua3PnjpFp~V[k¼%qM,`90 \U; qKǺu\ښnϑC>Cv:$݇4 1=]vMG m~zsOOIS==nlj.3.(ecՏU?D509ŏ G1٩D0fÏ h!psuW}2z '4f8|Յ.ld4/MBK_7ʁ|w b}X.ہڹ?MHaȽa<`Z]疕:xso,{ܵ;vƘo~ |#+ HiccxhD+n9K].;+./ywɓ/ÎXTS?=z]8N!Ia7Ji˔zG#o\9en-Id<1ㆴj}*JPPE tqQ Ym5@bo\'b:<4< ($[o)N$6X .\H=`xrmX>ճ9(%!ozlKG?ZMhXO0yt_KuEwtvuc_۩48vX7%T0ih?j, ?@vL3oʚI}J-YB ېuæmdSt0tB2%4 w9ko[/Xw =R-{ Q];(q~coӊZ>? Eg\/xdmyue+J5kٿw+ç& 5nN _7Dk_b>XE3Zb5깦1S2S㈋uȳ'J:L [!=m5(p+Q0cv*=sXWfk&<`␴{Ҋ~[F%26Bh6Yu33:Տk/Q}{SDZ\.%,G"q:ƌ$o`d,@*_l ̈fȐΫ 7Va0Ț duK';#9#e~.]]p/N8cji h ~Q^_w~wGiV7>ˢ+~+cJX]+oAzAkT|İsvM v}Y6=S^hQPK]y!m[pP=qiȪԁ;{z]_RJ~/B?Ք \ci]~ 0{tk?w]:? 69=*ڥ \Ƥnqc{Cgb{;+v@qb9 ?۸{d41Iڱ i:P~g$pA=l:ܶn_;1^eם%zFth3tD(r|gr>jMhzFM}wբvzr'_:|y#nb }J/7߾=(JvNOTp9fûy=Y\:x)٩xs9׌:r7YWwq3(UK4Bہ!0k\爉#QٿKL-n-?(n.>Aahu(L T1s۟zr;3 xz`!'Z TW埆.XONfc9qch&3sӇ^lz#1&YjTC6V%GDʟftO#[/z.'K4!#<ߌcmD }(gvQO6u?Ej`S3,ˍcE'dt:|ࣴx+fa˧k8GZ"{;w܆)쒔XUP7&6d*0"*0&ɉkŀD^ԪVfiƕVMяI,A}U~#Cف V@O<&։`oAޝBAK@G7C.x'4|\bV)|Wxt  k^_pdT6B e'%O|[ct*b]=̬H^YtZrfۗH;x=#*޹ 3ky7Exޓgb\ih@xX"qԉϥ<`jSɨ2I!2IJ[^k^^t)H\ao^$1`^<}> ^oJ'v5P8)P u򾮯1o3gqX'soPdb9\&%s!Aw90R Btŭ e!bJ۸;{c:%]#IiVrL}Muu_P/븭Gɑٚ|qܶO\yyIrٙ}v8q ~bwҕ|UҼtmꃗ޾0K _cACwZݵ4QWo$+sSCt=:b99nO1 =nqIL ΃K_zOT {϶Npx랆gA;^ ܐ=2/ nq 4 l2L^L' o9hԈ()|_%P8)`J+4C"&?qoU.oS;4Ku9~m/C?TN WL,8]iaxbт=׿("[ }N+o:3_?ܢ1{>?zO+uM0&;S/E59ߐiזmhGsی3unòZ;g#؋y[C( JfQ2oy1 ++/YLqn>[lBDbh}6 UʯxJJFY],NYv3ھyA'"iSuYOqvd葵.NƶlS|=qזs.4Z4W;셩cy[5P.{> ^abqH*GCxN UQP )M樋PAl>ŤD G96)-dZYb_Y)mELZ]= #,a"lsd3$ּQۣg(5HPW{'m 4]rX̧SOdLx!2>ckBJj>pH@_@Kp YIX9q>oYNP/DaɼLH J~(DySqpbx\2z\ cuH.FMqDBUo7E20$m>'^ֲ,v)|_[W* `M}APV VSS>9VHs붃h(zK9B~C,6gbY,:\r: k7MHz@eլ>=h#81^؉ H=dsq!Yot7U0Usk_vk(j#k%Γ1|L8ËYD(XON530 br-y݄O+#N@VdbE윸;(2 GD2:" Nr>AGFWpG1\ h| dD"q)*5fऻgЋJ"iFCsnWϳ9Svڵ__UIwyes~q&~[gwU?agjF[17~r.8[qLN2:Wns?yn폓=k~߮J]$םV߸eW*Jv5^1yU>XvN^ͧzjן~#)+rjnT)vqW2vΝŎJ>Ŏpw`??]V[~WgjK]{䮸g*Urn(/WwmrT;jnR?5E]P7®77{O) `bdzΠ'#[d2@/2[(ӯϗ?]nx;Iѫ\h>XsI]ԄИK;XW%'MFI_Ҧ׍&BDNNR$yhD=o״U 8,z{뭷0 T-4ML_%?tiD/-}R.+\`8]U2B~4:}"xNTYݝK9SO=5crmg>LSo\" g.4DsϷ`t:OsI@gc9F'f$|;E3>%NO1A2w8I8grI;:YwGC0*h:]5^Ơw8:]S&{[ hd2w7q+E&/BӅ3B׍,]5 wsV:dO:ƾ=rV@_Jkޞ"l%s7D7w}d@7@/:q]߸q#9Л\{\Au@]t`zeBF`@?,WLt}7w~_G2z| 7nD] 'oX"]_f}z1ǯOw<]߶zꙐqb.V7"gcRj6Zʭ׾wg3 .`$.^7^)[nj"ak)j+t }o姄cXkU'S,]X>.w)ǩnԵwc-w2"^/Bm٧ #23SE]Dan]鏽J/w=Swiu=E.RSKgF‡:"zOyw*/Q[_rկ6"ytWΫ6.&|w=^fNk^3X8@Z_]dk !#ĮG<-W6:X!OhdK=4_d^Φr |-L?]tWY~fD]_Cy^}@nΆlɵn?y(!pxQ߯jm8ni-C9-4{}w^6Uщ;Ys7m~[uJ9Ӹauͺ2vOn~P<է3}͚j7nkv(6I.#_'DSvxhh*ۦO{Pj)f߉ /ȩ)Q<]RFؤVD_^xg߳ʫ~rFuV/^{SzYo|Po G7Kٮ-+]hL~WȩF$b&яQ@GIvsï`*}e]6kC?޳?-~NO{_=񜄟|dYGrk~Yp[hMMw,yҥKۗ%̟???LLըuy՟QCYT;c݄݅>ua9w Vo)6688%{ȶr/wCJJ7tud|s8>jJs@뺞N566t?ڋ7E[d)#?;@IUiqW5t.\ ȽrC1k%L*arhy"Ea¸keqzy6˖]]lvrQ^L,(Wɑz)E$gp T|kQ/{;0?7=r#a􀮟swٲO IDATO ]7x<LMi O^@ϔ[nOӯ7nFϚ5/ViOLLBmq7gMR۟8G[/=Z4'ۨ.aj]_zR>pMba“]$%sIeZTW 7fZ3.YRƄs|\ Şh$do^5Ngf]`6H zsϏv߼j՟ Yjt g WfE%&Y>*u7cJki6r3Hc,WsW@lU_e6Lkak^n o@ZxyjcjY{l<:ЛvRB nƾ7Oq{kYk/iʣ}ԃ V{ ߥu=][>juVEl\&4<d2`u=V}3 eB05rKTT vXzEb|8w2.2 Q]op6_o9 S`L+OzY[nM9bE'z Ct=΂=CG}tw͐GQg4i 7یnpk]=3O9w[>^{ uQt1ڕν1iw~miXl9Es~šl;n+W. ݱĿfcc~+ZRdWwh}F)V^wYӜ[0sG+ =KC f@c;wW1k bM]r[|zicU:A97>uk;?ą`w BD]/|Mٳg?Cy?o9['*;+S]/5ےīwQ-CG1uMJ222B&@P{}vEEW_qɳbbg}knWX1),Z(Dԉz.浶3uab0__^uwlr w۝*x8:\¡+3ԼrTp"[4^%XY߮^ysP^R~;'<;9%tPPkd5CaڣPt(i]'ᣣ_~Swrޫ,Ct^U/=rΙSc,;/N ܹe͚%>@ c[~߷n-8``RY݅9200PTaMVX}]Ȉ^nW}+O=n|`i 9i_f$ڝVXӸh=3դk.]k@@_g{֑ 1)vuڋ7}='N^ڿz{EkkM~co|,/D`w PNyACQSa7Fh0t}zf'ꧽ|ݯxNO>F(9mѲݤ]7*y['rP{W14te:ZLsɜf |kZš3 A>u\E7T}{D}br.[7}KkR妺DKF>?' ؼ=Լ5 Z^n`ԵnrjN]uE<2v@1fZ8@wZG}t9YܱC?&ӹlAWW {zmmz߱|ÝlӟϚhwTz@L4di.I6!S#_n3ud,Ua~/ŋ.=3gBIN` UVjx]30<-zP~$'QH]^Q.]4 tY1-qI5^)Ӕ3oZկ[k՗RM;([]Y]V0ZQzӕ&l8N؉彉ȥ.lF4QkJ !շ2rUj-O+W]K9tCG? :|ɔ~E/zQK/w*9Cz/Ȧ?}vs:#ѐݩT~nq*g3?㑤.1}A"Tj5*94Ssc@T]T:FC YS*8l.)2vp]WؾZRSL"\UtTzf;آE27˖]=(+.n.f-mfV,[V\|uq9?XR1,ڑ.??"?6k)94Sӳ^5+}re\3B*LsUFze @KӪyɐb zv~.;o-8swG._vy(k/Rΐ8I(L3?GUS(Ef=\1]˳y=؃eΜy ! iۋp2zqW-_~ܺuڵ+6@z癮}-hm,ϴ Ys!"1h%m&=􎴪*ʤ31윮JZ nYլeQ3ShZIw-3uf bfNLÙ}p= ʬ u]h%ڝ+l~:jϜ9ok8>GQٕ4OIc.z 0Ά':.n kW>Բ$ھ ! M{t^it&3D6'_RE˧ڗ"6F}M4B%w=If!-s؝fN%M|7nIrH%ai̿ѤR9/15_:]']6y.:40:",$;[{a.1Jf,̬WLCԘQʕߴ-h4r,"]X'guS쯕ol&<۬JcܥUZR[[u4FtVJN6 Jqzњ]MDM ߼yyAMo2=e{+QMh^^ujtejfzQ~s*㪭}cт3XҭMnd}'+z3g޿usbb"5^SE'u1o^; 05H4JRУQ:m=S.CnQ#񑤙fXCScF,XJSR\*mRӿN`,y)M^Q>h8q}]r2I6RܙΪ!C qƺZ$ڳH&O гDQpZ4i)w=P.t;Sa)廸Zg6y[߯@?UV =JKy֖Th0/073pk~Qa @eO=ٳyT+GU[HM*8@; ]Kt 2y/XNV@ק n^~ @{[͛O<昹'=޷mY٪W2H}G{"&\TR?:3%/{,hG&ʷѥX]o|gӵ^{ٛ>򾋏8bŋuވ)YB1+MnhԢ/E$Y@Kղ*M G/-åL1%JF QF] v=3dر/+_VTLfCce0 | WȠ){<3q_<}^zBQ\װI]1­` Ό9Og-h%@x@zzn~=Fzkybֱ'0Ese2J;í ;lC'LH,&mI{油*"X1;zh5evgvNzg^ך?^.jmhhL:T˭Ќk@̏zhRKׇYrQш,f^f;@-GWxؾ'_o:y,ON}4SYAa9 3O3שo7=(zg`Bt}O9gOؾؾp'_dS[~;<.t[I'd6#*SIOjCa,]@ק'_e}|򠹓bgΔ3E=M'Z}­91t3:^0 u5n8zW^ĎsVf͒.̑k\7vtrܬ {>Pfgs|||pp0u>ϟs[􌡡xt~7lwm~S4B{gIQ]o8JVTf݃9P _u6Ѫma 25k/\~U?秮rozڛxŵsMI|C!9NTȡEԫM['޿М 7БJ&<83w ߌbttfM?E|ݯxNO>o' ր_ԽU;X. yQlmfϏph{%R*0ӆyjrJ2[TSnt)Db9No|`;w;{HrՒSO%#55%{7kHɻJk{2l}[{.·;Ĝȓu:N-ZzsNW3w?^,rGW4p^~ny;)c(,sLcw })1mT{;fO׸ vX!w.))3%{1hdZѓ25;}#3S%4Y]|n 58݃>c YIilwqEe&3gy6ь6ͦ>G%4o5-en]~قaD6n+e_cw"~l^RҨ-:t~")bJNMwm~3uL7.Lyk۶|QJ.J>-2Jp]5?$ܕ.<ʄ싮{rR_~qIn,hc;dk^WuMr$n{<ǽp3 kޅ+\(yGWIxJP.kG7_]PT:(IlݭŦQh"#I&I{\|TqhI t x![W>>վ$dʹ>3_?@%{!8.uێ渻# SsJ'g4all,:muOTX=ԡgQuiF 8놔UƽK`?7USx\y|r]l~Mi O^V}.bq b HB-jgt h:2u3OApIA1o2-DPҎpx/][63L||IQvLg]w|[S:tttP#%^x.&VQ%$gWi:4oʔOom*9aMfz[XZJ|vm̈́?MpZR$Ÿޒ3=^i/]N[îxUf57u 7Ze|fGKS+D/di@6VzeټyQ͵q fTK,y衇BoG}?8Jܷm{བྷиІdƍ9?^+ڬ KeVzާs w.}~T~V~5Z치?Ĝȓ]u`OYΩHxgyj֬'9m۶-yttc'ZZJ5NÛFE%ih]wg_P>'u^.~g]]u uV]WWѭ0&{ Lӡ5lU7wte]/۫7)?XcDw'l^GC0{$mZ]̦p wfʧ))6:wfey+ss(3Ǎ`S_ݽcrz^o͛Msh^?_63p.*ܥy#u:oڅ`-:eqzٳg`zIfLg]{^v'kO9sNuQ"ʩcZ}1w]wޙr;x-箽14I͋tx?1@ {{9f'׮tI;K@E}?zܢ2ŋCٖn+VszCCCBM]1uƺ;v_\vsB]79-tl XK{/yx>/uF|KFז:c%SiSM];Zޯ,P]we~1VK/.>wMagm%ʯ`: z1{6|ܭ~V_k&~%uj=tm6/^l@PIDATQpq,['|msG<&2wܫ|?{S7}VWE~__O\~<,&v' /G>~Ŋ]{O-͉j浜y*S:||q?lZ֩ee5N~do}]}ɯ|Nxj}699m~y#K *Qt?}|OkSo'Oc>B fځ?]^b<H]wmˊ'm_xwSUvO]z5#7v혮.yb0uݳ :߃{ޜvǾ }_$b5f =Q.%9Sѳ:@kX ]R^di:::::::::::@!`d`::8###36Z]~Ӷ^l` wy?8#:z/o[UW2-msIF:.N)iRw]󺎽3'^k_u;zxp,^XtZ_e[_1ZwqZpLČB`F3*qqVp[7)M4q0~أoચjwU)k/#0uф=51=F˴ur .;Pܺ3Clko.{fk%4ܵ0WBnI@_w h=MN-YL8%"z^COёnyt@u@R شltDZm:::3yJ@2u@}Tuu@ƍr+5p7|J~:ЏUq+Vh,׼5v[I6lHHrRW4][]U["F,8tpTb.) [\h~J1 ć60[YЋE쵮k7:kn'7GѶ81:42lFCKr]N=QߌwK\'g k+Vį.ѕB7؄6uGB^)\O (U:@;pfMnDg=/0&з^!nLtO r.2t{`q! ::cMNo\*/.ՙtM*z ߢqg8k_UL6ɗݎ*v?\ի;41NiT}pue%KbZEE Sw"O:]Un˫7[>###e+5{.v.3#U[K.:%I`IXHaP5N.A%)L ܋VOZ:1>>qUݝ #n$0d )pR)KҢqD}rˡO]/71]R}; <|FZPQ,wl%Wrʄ.)_kHaB0A.B]Zhq74}I]#:gUk寫LuX룣Q^0yrG7,uǰw4ixxxpp0Wa6佐bo$Z~)YLyr#TS@'! ɍ뀮]Z͖ﵓ5bC@/: }MV(26u]۾R_<ɄSO¦']2=埅зJmlOamAxݹ}[;:ͷ:L(edžE;hnm:s Q fMST#'&rӃc"!_.jՎP#|2(!OPuOyDӹM1btErK$J放-%,$ah&燥 2J09gy&7pIrFSjʡ"4F0~t'^]/JVӒڵf^[r̫*j޽ a贾)l"3u QGĘ>%bϓr&lEt2"UV3ʐԹTH:,ީzMwzjd;zu(CƩiXD'G93@u@z vD;ˌ4Ffro&IaxN O/P*E?Գ97|f]!;ںh)>&% pùZWzM0mȤ0ZK=IwZ|}6:SY3Z[V=n4ԭǧϖDuݥD] 5_yJʕ ' ʕY#\sCBo1"5Fd-*wOUDixx8Y22:(DG>yY'zb/RFIawjttT+/T{V~^?SY-c%s&h0Y$09+IP:id}0)^J4攄+t[= Pd}i_$R.4 |'m*b[K}2٢J<{ZkeT|Ur_f/ȏy:xꦛNˬCD»D@4ދ+sݳ" tRH4Ld!ᰱ7Biqj;hF&i J9mD[ˣ vMu\j~׮1*ow*~z{)OmݪzhZzދ|I0K] t-]P[ Mv,MmҔV5&nXT{q [}W'k_YtrT:DŽPx_^S%Vͷ'w,br#. {GmՕ̱%p*gQمQ ˼۶+u("]p7u}}óљkl,z+j%HD^>_>f:Kxj/{<ѽFAX7K̺a2s#?hg@jfL9>`[%XECZFoUj2˰#p3]uQsVs3SdeD&WK"]mؙ/[J~ݎX5%=׽: 2õ9첚4rrVzK֫dL2k8ŋS«rʩZY]7 $kgbqInxYt`y߭ZbRkĆZTi5 jDQWSgBj}kr SR.J&b,%Zb(eԿ, r(!h[~a>'u֘ 15ݵ_;H3oQg$J;L"fv (Lh@jJK-x}XOnZ콡.͛lfܽQ+t~=-GCJiױթtj"?Ч?%g$G# :@R׵N~^:&2Wfi}?maH1jU]|/ԛ%\ttzt{u@JW\Le:@}l}[{= ;u_IYtU*zYWT]uƨg~zOoO{ȯX o h7't'hwVE)G 賈߁劐TgsoFvB,u-@gλs:?}mcT!`.T jՇ.<(wiDcɺLgWK=virxHQ~٣-y ]6z}wyjOoAXͽҾ>zN >@|L(IE&TR*iܐqQɨ&?vϮ^Vi3bZfӏƔɺ:]Z·8ULQlwu + ų#-"sgmUau&%Y\R֕&KZ nyD:k0ZvwL-UAl?kД){"RL3ԇ biDM]heZ=J5_‘i:?JZFBKpȿ6gi#Nok&|:SQIڻ ѽ=ܾ.nHZ^ 35U'ueFaz : e;jtmv<1{/úHѱV5uneL]';a.g/*[:[e:CT2GbIW љqE0_ou3ٰ3QobI3ʣmks{:w<0%ߚNS)q]q@dܣ׌vA\/3wЅR 9fkV333_Lߤ#0̺T"F<\2!,{gtktZƶoIC'錘u"B%5uVR ɁrdzY,/:@̙3Ltu@]@]tZd:::=:u>]tu@u@]tutu茮{u@]@]tu@u@]t`&zu>]tu@u@]tut[*@S^3{u@]t]tu@]@]tڨμdnܸ1zjhhf< z{pU޳?@B?Q8R =PY^]@]tutu@k$Sz[wC^x;]yvvAl߾?0؁ZݽqtIME $t'IENDB`PKuF>սmdm_X_vqv)')qvz̒%),FJJRUZ8;=zpz080DIFI~ҷƿCFMoyoξdhkUV\wwHPX~`diꎖ,H*"I5G8\H!D9QĂ#`Y`)&ĨҠ$&[ɳOI0#ЕП1dt)"Zap?Y#tr*2i)ҳhӪU \C$$"=]5a0~s8('L (s߿Zȓ@f0_U3tf N`զy u#0PAY!TU @#DY[e)W5jhnc|{(fzR1 Suh7vɝ܍\S )Ш ®}#bou{$ڛ:q!`jcǮ&6S̍@l_ւNUӪae.r+B&,NX_ @|.誠hꊛcKnCr1qM֘5h.h\Y$`qgnʝBQ6wo1\_X 3ï A,Ђsn,5bFk^AXJ ZgGV6h^Op-tmx|߀.n'7G.WngSBt砇.褗n騧.|.`/'BG;WO}g?w߼yC/}֗ok?W۳ϾӫsN^@ 3>)Pnk` (@ N̻A g0+dpMaE8 6pp # vxl@ ,)V` r`9p*w i0*FyITԘ(a(m+Ѐ \Q"XQAT !) QNxE'PEЁ lWB^J/d|+ǓOr[@09N_;9ۥgw57 ?AF/jP&} B4]MEpS .Bp HY;k5b+I|# @30 Tؽx(HE/@ Hݕ ::|&wr(fr؇kkiUzrwz '@\)@{ 7qjP'F p vjAh׀gQvgnmG NpHJ0  L{7x) Op `U>uvo:y<}7z@HeO[0n`n5 Ð',p @ U Fof pN`gx88dkHim؃o}wVzgc_6jecch}oP}w:?_m[8lVlf`!]Vr} H<slȌh5eX`Ԩx(ȍ;;?kr[lF];授jؘFlhphe6Io )RiHW&l(jXcavh R0^HƏ|f-\Vjh葮vPȓ 0Gz gBE钴Hj騎&]f9H-1b,pr9tYvyxzrihl i`  9p  <yyК9 09ɰ1bePxpIɜ``}  Ppnnn HTPIPAApyP ɟASd Yljٜ  jyܹ9Y깞О$ 9y * ©٠JIP`ɝ"J I)+-)KC5j ;ڣ?:JPz ʤ#ZP)TZ1@5z8ʠ:Zf*kHoM*RZUʢzڐ|:~j *jjڦ"i'*Sj}ʥ9ꠢJ > Py n *H ɰʞN 0t:zYꛀ *Np| P  P ڡP ؚ w(Zw⺧ʫD

:A+Jg3^:*RK }} `^ yfۯH@@ ۠@ @v+S ;ȧʉZ Ԑ*^{) ` ڠ Э[[T˷G;;P Pp `  | P @ji&Jֻܻ [* N)뾘_ PP @π NʶsJ׋ڛ;۰ܥ[|` P j  nP{۰Z /, ?{8;+<)AEӚʪ뤰wm @ rlڜz~ p+jLȆø2 *̣u\zpꪞ\zȣpKǫ@ljZk˯ KH ʷCˎcjʉzܨ ȝL|kJ͑w\z nʪ{Έs\͗JAϻK ]zsΤ ͖lP ͶCͺ:`Ѱ6}8:<>@8l0-@ɘ)PMRVX-Iի`]b] ɀEGm ᛠ͒]i'Ml- Aҁ,ͥz|מg= ͑ɝ|]zml٠Lr=<ٔό͟o\1ӶŒgjھҏƗ=̍ʴ=M&ml˃ڮʽ=ϭɻ  mڪ# Ѥ ۭٲ;Ԑƚ * smn0̡̯ P`{L-L԰ u@ ^\M [۰ ) ۀ`J`M C+ 7nȡ! pYP堵|0<0 %'g`kڨŚr& !erPmno%|w.}/ugfE28oU!偢Ia *l U.{kDGYNE߲ߚwsBZ q!'gڨ f\z3ѽ@A.4Bִ%w_ _b8!)c@ 2Ѐ#V7]{߻&IMKKaaqay_0‹P+oSPE QІFc W@=3a*kp4Dj@ 5qQPXépTg cpWQ=ԂyC(yZ8s$.HhHP9tAP.|"'ư/@~a@(qF"p*j6!0D(b ~Hd*c*ҕxi-d 2FF* :U Mm@~QӜS02e?&ʸO@is͠ՊU%(xƳT(rL߬ r @J29׬jQũw U Kb븹ii[Sfr߾^ fow4)DiU4knwkfoeKJۥ=muݙk7nGY嶆*\e5+ZW,9NyGO+zvw`r1k.ے:W/n޶[gOz1ruXg7h)Xf;t3)2 Uh*h&KTXƒn0Fk/~) 9`ȉkS.`=pv3 7KRzUrɣ곑<~"eRqP *'ȡ C #ҿ[5o&+ta wpeo` Ԝ@Q6 pepGr(9A==E'P,<AGzl4B0"@`?n@B=*,e92@yU sxxI#MN5L C*'(CB웸p1h.K.\`@BGpGW|5j'p p72 c=(DKLS?S@ TAS,$HC'BxTHTITJTKTBLTNTICETXhSPBm RӔXRMF]P9(XU ,p9p_YUT\ UW UU(sVpB]WX=ȃȃ`]Tjpim`fUVsV, =VpV,Pה $ sV۴WsVPC׀E-ؕWt}VZ}XV,QWUXpu]Pͯ$U9f+H<XYxT\X 98XBH9,rU8TU$V݃=Y}ӔE٥] 9Um݃,  [EۡU[[G$p![[[[[[ \\-\Y]\m\}\ȍ\ĝ\˽\\ܿ\\ ]]C=]M]]]m]}]؍]ٝuڽ]]]et}[B,^=M^[)ٔc5X T]U.9`X E5כZF~ /y=W`̓7E5ȁSmVS_:U_ުceEqu靅5^f֗m`̓$P^Z֔`V5WBY pW8(TE{ETQ-W ^J_[dehi>(i>iNi(Sv*/iiiijj>j6(h~jhhiijn~iki6>&j&nXjFh넞jhkjhkjk.kN^kjNjnkkkl2%†&kV>>Ȗkʆj˶kkkkRmm.>Nmfjn~mmmm3Rݎiޮim^k^m6FVn>H3`n~Ppn>)0o eRF3!n*nnNml>nhh 0 (3^oF6/ ׁdϮR!pF( 3)(pi/p>Hp_npv%Hh!/#$' ."/i (瀔vnN Q(r, @ *!,(?@H: `'Ѐ>s "X3.7~qq~lq_hgpOi3083uNׁ3 P3('NtOF`)Uootp" pVG8^ׁs<.!p3'vj7)tW`Fp3VׁDWfFoGtIt3@r0 gF"X*G zw///,oNx/33(u04,i3{ 3XDy FwVw.HxX 0s) voPFw>"pW. hzՉ'bY& #\ed:#I02 )m$:5!OJIb&^Yvw`9&y(n*jaJIg ]i]- _Z(n(:hr*7)Rwiuf韝)Jꢦ&jh *,:,J;-BX{(z-;.(`{- K@V*aR+(;ڦ +fJ;"`*O> +sp,p/+qĒx1ʟjq,CF6Xlp֫ > 2SIs*st9 fgӃΚl 89'OHuNwݏCb:c20UxF2pK [{̸o{Y<&ɓp`._G ܈PޡP ޛFײHi&՜$`̀31ka Q91/ pNds w" =0B'XEA٣30`!GF!%5+Jq:)ZB3iv H l#6R38 M` f 23@`6`P+8)R#Y0FA 8a fA03!DtҤx=g,!g6N3@$ ҵJ%t#+ħ@`#PT('e@`0Ey>_ɞGLE@'걝A@@?bC`L,9:v4p6~9E!Zp :wr\"ANd=9n"3`21s@TDz9M 'x%DYLb!.9E'8D3QBjP!ORb'6Ё*dV0Q؀FbϹ3Fu %0J rTe] ā aYfV8pk`fJjH@6jVSNet @ dȈB('`r@p?JG=AJeM3A 8+9$VOADl!#0W"뚄(j^P=I4n@Xd 5`L9%BJNXg&M98I>4T M5 7K y 'gT_U r3bw,ap+),D R͛,"X"'9Dob^\ ësldCtNzAzW}VBfYTf8i@rS,4Qk432cTC=\=6j*47-NР&c @UǙ5kf->7ӭu~U` 7}{7.pv+ef6t>=`8#. IsC.r&&0^+ Xb.69ss=8Уw\Fɓ蠠-yF~jPyRL#`@$#)IVc4hѿ}uơmw; m; VNٲfG{^u]^x^yHҼu hٗI,C9t{~f]0woS~*K;RNϞ`YpO:s>aS6_)z>z?~¾[ПcoT}^ޙ_a%͝r_ر)]_d_i9~ދ#?^ d6nc)v#cy:6d.R/J$! c1ң2nd>N&Z#((*ߙ,` ڠ-`!;/!V1c2$3^Gv4e5zH$IIbJ!KZZءLc;b%0eYjbPVcZda%J\zK]RVf Lc`h e? a"P!Q cŤlNg^%EZ$OgGfy% gR, cc:'dBd&e^%NvcWv=3Yhp'j ,Q@p]ѧT$e n"Nw'pin#""r*hs>gtN%u$DF/R(fZn&6go`&Q%P\|R]:h.NM(A/Vh_#)G^)Q)Q$(, ^7BB*@hm.e:C1_Bwr¡: `5Z1?rzziPZřdMN080b^&#C`枚f6QP*S&&\7De*|(8juBR: <h~jGj `"/B# 4 nj}i*. BD )(A,111@02/@? Bi*+ : ΁A0t= l2a H9$|' C<'1&hj,<=A1؃:A*TLb"-8&/0چP>(k꿺| ,gm(|9&@ܩ=)@@#8-H)Z*D˾,-^90j*8\7|;NB/L 0@00d0V C/8@B/<+C*dƂ睖 @&>CC'i$޺jªNjjN;fj|BC23?l%.4BA#4ylʦxE!ݠ`.~C0@~7チ0f@0A@,(01'@1=@ 0@B҂xpK>17ކaT 81|8+1l!<4ikgHjɟR GkBƬ^9A*@|5а>m0-Cj06z,ʃĞ1c)h)31 7 _\ q6q+iq 1V'<|UbB!1bj#b#6@4wo^~&#h''%2 R^A/r*5#+@/ o-*8T/ hA/B#Vi8=e/@/&)@f `C| +8S8qαe:sM¹ &ƒxSwtrC(p*6*+U -e-0- B01/<+$3>&tpn&l1l/4&10B/S/^[&iU?| u''Ă&&B2v7BjoZ@ Y5Q]']Cb'즂\ \ERS|'@*<(BD ^A**C$ C* )?Dr#CB/l$-B;)|/1ȯvSmq`/ivn%ze=jhz蕪7'P{+ r(/(`'l)&WZ' B^f~fr'fGJ e;ܫp󐫅qS5;ާDjFwxJ Y_7geUz7Dʩ~bR)Bh6`CZ^,avBDkz^e)eD̤k9`"?h9 n1v^CKohv]@z9yzJzE-w{'Uz 8BFNf3SVZ;sfgj緃Hɉ3Ӂ:?*֨^{KB9໾ ۅܠ1 -);;˻< ;<ͻ B:;9 |n  @9C,$31o;}A#Ɨs?}:-Rmf/|=oK#ٛi9 Ǣ?43z5s|dSeO* ( Ăȃj&WH{=ۻ:¾N|C> D&CX(tРAZ89GOyzp#1}$#E1iRJJ+U^(`@̘(ԴIb̘$0hPGl8@)# 2AS MS\eEV [NTl c34QBI 7E6o^l\BoMF @1bG0Lp< I%JtԩsVU+WI`XXcY|"vB9yM*rDqf D^$Odye`49Ϡ@ -j4Ҧ b ~U=,1j)܋v97_ 0 1k&4ӄή /DAmsn K,X8GPQBK#k3 )[Pj;l3@+ W;+-Xy # ?P0L2.lAXp%ż YcA&9g'^XN̈E_D^Q9IǠ#G {2"5Y3®+7/,LUM os9YDA5l>CTU݈qbJD.FtJT{Ӧ@X6TRℴ\#^mPR>+qi˾+K0dl ͩ5{)8H{DY׈ !n!AXVyzG#H}إ>%\ХumtM8y%5Iȫ3'Rh;XeVFa6?}3x;j4ٺ#> [lr@xM9SNM>vťVL>AQ|,K>Lh >ak[.sn궛㮶6o=Oanٽ=!/tG'tQ]M߅Xc_SoQjT݉G=ӏ ծ&JeXZVN ZV^E N:FXp^Wu` [XdBzǑpC!cX^lfY~{(BStw7.(Hlg[bykjRCTd+6&U6uK>Aki[]-oG~ҡS(t۔vɺzw]2jŒ[_,%sZ^0.{ ^{hP8-)|k_:/`@;-ٻlűU1RXѾ%q[ !Hlxq\ںRG$vse)O~\d ^pLJ.C3_lTv] ?6 ]hCщV -7D0PiK_ә9iOѡI8,XjWֱi]k[ ]l`kx}l' 4Mm \moXbLD nw-o$b6(kQmo\k(9 O-_7)C>q,!`ĸr-I^|6u>[S^k.>y}f;Oz)|t&}4 D^viWv^0^wy{,/B _xW</8%[|9yc߼GoyӟWYz׿-@q;]IN2y䪛8RгsV(^c6_66q髙T>Zo,~{_=ӯP.nlPOP0 P7zbCPGKOP- `Z_cPgkosPw{P P  P  P  P ǐ  P א PPQ Q#Q'+/3Q7;?CQGKOSQW[_cQgkosQw{;@Qm`~@P.K9l9CQql ` aK֋&Q&Ƒ `Pݑ 1@qK챷1qrl +` ,Ϋ!Q"c""#@82 n!;.⒯$MR"SW"w 6& \$kox "#Ry2}Q`(0ր&+&')Or"R*ϑ* 2+C$iK!H+!9A*`,˱,r (r+` ޲+c @'2/ `/2 Ͳ@0 ` *4 6S3@j*3+&ls1s,2/R.38@@0 Πt@ ` \@fA1R6}6k o3Q,s0sN0*8H*Aj"1d ;;322-s30S AI34(9A:@?@0e6."@P<Ǔ+7n P᎒4B3Tt@&~?T%rDm@qAm84 ̠!9_@d`3Cs*46}'3HD fK4M d8JH.k"P59)ɔEL6N+EFK@0u,uQQMTRd@8),QSS?U CUTTE dVU[UcUVVt-.yUS7UQ5XpXCXr)0[U}Y Rt$5SZ.U[['<0U\ǵ\Q@O7uZU9CU^0]k5)rWU_[!5RmUڕ6av V]`o(&,c5V`VU_bIvaa![̽@6dEv\_2hVhhҫdSe3 lfr\uV^ =D z.%%^(k @ =%v3Vjj5T6k ak-klvl li t`AR `W@hiOmBe%nj,6"|@ ^lau40@P Nm?` t@wnCiw +Orsn@,BoC#tVl`pi 4cVΠM  @M\4QSnxstoItzKz+u3t5T0 tM1T0F0vV5vywoEWt t_ |@,IeTi7wAV?n(1-m08 7oGWS2SPV@iWFT W{؇0yy.E %L1eҷAmxEowOw  wQ  1y׋x9X@+Qh 8{Q,Yl W=1 W ֎Xr5@WVs $f<> Vb$jO] ?Օj#C`'/tvςQLb٘;tϘ`v{ٗfL91٘oIb7䣛-z,ԜDky䢛9jeqOy(B"NE l8@G Bcqq_k@ԺS#T 3iE jb4HcNp 7)$G@@)(Tq+KTOa@Ϡ{k j^NIZKuPXr-Ϡ8ڶd/w/җzz[vTTXiZb|e8Z׮8- =/s8x rWx |AF@۱ +У " W3i2m Zs5ZE @xi4or[uj5CvVc7@)8`q *SԶ6P{!X%; Ϻ6*|?2 @5d@0dB WźR{K T  jC;£& 됔h $)2 * I378KWvI= 355e=qŋ`pa[Y֜<СH|̋k ݼ0C!K<ίaw[JnZn &}*,/ӵ$ӫҕo ]7ԇ2U=olc!,(,aryF0Pv#gE[=хp˽ jO6Z ؕL.ҋڝؑՕ= QI]םݛ+فN=E,l}}= ~/~]yq6;?ɒaՒsw1@ "! !a A!"!@3g 0 N?R^ , fu^<K,   Cs-ak>w>~셪 ؀Z\ Th >`qѕs>>^ fR,*@` @  K/?oqiw~Rs ` ,` h,+_mnm=?C?I ?1?1@ ~B XC SL*Z1cE:z2ȑ$K<2ʕ,Q _,@!BEDA:f (x ZaA g\$PPÈj<{c˵lۺ} K1kfϟA-zҦN0clf`+*$d3h1 :ѣҵ N{[`P2lDN S\,17ԫ{4-&:*HL 7>=U;n=+׵=5@K(CJ4.z=iЃ(QP( 0 ;|0Aڰ H@YPD 6ZDѣeHEj)UiK_әԦ8iOJE^` _I&,0ֺd V 'RGR Nu)TZӛԪX j GL kp$t gVZp6̐ J<[גεULiJU*  DG@Xft@TyR`ͮ.gW괴Y2aHL̰$dLuBcs[ҷ.K ә69iiZ`m}ƄG,PXw (@vָxUChEw },m]WY8?)G1Ғlj$[z^)Οuo}IR~F < ̮&ng_Yq#0,Z޵6Ok {'^ūa݆6([^V+VʴN֎Rzk>y}*_0wjV6φFwcr+^Dz{Gζ`Ksf2@ks`@G+cC h{7wA H\gq&H`:G.FFo"7zؐ KE:p*)@WXxXE@s~sGZXp.}].p|go7zwz7uddz6`G&$<φl_@NwVF^pVCxkO'CSH uz]haXkN(_ʠkȆm膜^('uhdXӡwVR~8(vHM9(Ȉ&h}($Xшȉt8`K`$R׉dl08"PphRh9($ȁȋXX"^PP( K٨ȍݸ(Hh刎税^eq#P@Gȏ)H%8 ɐ  ) y;PKAeUbbPK.DOEBPS/img/cohcw_dt_005.gifGIF89apvWXX㠠HIIƼݼʗ*++lllһ==={||Ũpqp왰ζαuwmybbbĹښե拌ZahੵڵTYcemxЅxв粩 gsgӼ̲///sls393vxvǿip}ꏎߵƫ𔕗ZdZ959?EJ^\^+3;傍16;ؼdfe⇈suy7::MNM~u~JS]!(/RRRtyogo?JVӾѾ?G?hhhð\gq뒒{5?J@@@~},H*\ȰÇ#:t `A@0 AD\Ly .1.A`Pɳϟ@ JQ̊Gߌgtӂ|!/ϕH B-fͣpʝKݻ u `mKLfFf` RIeC[)C `xiǪI5 Uʝ/] ,qm呓7#$ڭhѕv&+YIn|3.1 Rrvn 'hQi8u.dHU %Pg-RPV6 4ل^UD[FVŇm.dDb)DSV(aGVh 0"mANV;.H\1ZhU袒mؙ`tbnwSd)tab30LjT@|6"$ cgGpRT't}VaWjنqکꪬjgX%E<'vS:EXbCKwh͍ dn$9"}2 l+AU۝@GU]YxeY1<y{7j-tm X/aVlt}ni%Q vO *w,R,sQL8P8a@-DmH'L7PG-TWmXgMT r1˔]v($j>h3 &1xmv&7 Z܄>lpLnj۝7{l>gypPw;ؑ/3&T+DM(.nCG2iHP|8PRHQK-DK:  А~CiA.{ 췯~/o H hxD gvE@- B@ Fz`.$ gHC 8̡g/4 A"HL~&Pl@X̢U `1  ,zHa.3 5cxC# M *t"F > EEH 8WdЌhԁiEfȎwai=1!B"?GsH:&IIf&51^ГetBA-'JX;-08,iYK? y_ >gF"3 9AIKB$iM2jPL#,H p>c@ۀNuӆ-̳G}R<)@-t\#vzЄFդATPR_Lt g qcrMGQ$UIR.'Lϙi\ ӺTlB- ׾U lRB-EтU\VՐamX ҕ38,$YyiZքPC8J[M@nu& M.[UEXUAXɾ^m'f{ҳ,t- R[@ *WB DmP$ n 4 .p["w˭UUтzDw1n c)ˏZ#R73>.AZ\Ao4&%n^@8Ky}L[Sȵh~ߝ.5,#x@`,g*T g.:?2D/>m`)l@~ .14pD/h}̠4%1$M <^ Ĕ2oկF1̹k_ jTc͂jfYγh kzC . ?o'ͳb$-axz; yo?G3ɠd:@F.ԧr~Zf-\> 3}kA@w˱0C 8E 2 nhQH;]Ṭfe)  Cg)Xcy띿ۻG{:yEX~\Kw p֯ r.%t-p/ @4HyG+3  YM|CҀ> w t<< m^`KDj:p4G+Rsq o (@p 8A'XAGk!|݅3ԍKe((Zx;?y` h΃/y( Sgb$[?'n<֠ i}s {S9<( ({Te0|[u0h|V( S}89}`! | k l#] qR`3` r6Trph73 z'r?t:䅇8DhYgVeDŽ (8*x`E%`[[p8η(If]-K[hrw_hJ耋?DsLɨČ (P euxe8$ 7ivu HK@CTxiq<&6 c,Gsyvjɤ4(4 98p%Pe {ud$yg 7p]xS7-),B 4[P77RpC36K!冘F^2dEyǔ"TňWY ^ٕɑ\ (bq sYׅ]buLynÁ X{/hY`7%1r6KɛDz9Yyzٟ@$O^UE]Ie )Yڙ#f CC1tIؕ]_,ڢ.*a"04:Cp8C<ڣ.@?JB:B$HnKNR*2PUXKK0^r0Cbs yeud eЕe`z+8 "JG)Y .1Z6>AJFHNSj2\ڥ`*r*p*Ъ P .0 6` prJډ}J9":YIy=,**8:DzڤOTjʥ_::ڪ ?dZ8}T :]jdǺ$;~=i~nrR;I?ت-ʭ5ڣ@:GJJPSJZ 5ڐI0d@[P};&a4gJ0z[K[Pr_H +#%ˣ([*{/ ^j7K:˳9^idII[!ˬ ~ G &+/d/$Ql7;sfI>ٚj:,QwZ68˪ =?Fd{;!P۸7Zdc۹B:x i2N8 |`wЗgFP6 s'0< E>jK$';L:Yvڮz}:ӼZC FK8D k׻N˽6qd0 <{G6 wA  Rp 2Wx [pY\|P  8 w@G*ڻ PҰ[N 4|{NjJ`X3F [Ƀ$^)Ò, |g-ɜɅ ʝʤɧlʥ<ʫu| }S  \ P# +D CDZ0Zih$x7T?r[0mF> ̨83@ = 3 o3 L İt W*K _:8;[8i6¥^(-d$ !8"|$mw:s ߰@/wľ0J,CfX\G]:1ZƏz @$PO$ 3Pn0 纟3ಿ[P pKP0m@,ȃܪq`Ȉl5ZiE\j|]ђ gm987C)Ӟ Bq&2d:@ӥ}C-Pc0`acMF;jP.@b t]Pbjh2b_ _ tp;=.SsUY4 N _Kǻ 7@@Z4-Yg p^N}:@ $JWgN+ӂZ2t'C"mKC`(.  ܉.C* @N8ҍj-U<6 ª*p ˹CI}뷮٩ѿ p:Z@` ʾ[3J9ܭ.@Lp$ ' r=n@[Q@y3_# Eާ*68CX(@} |vg7ZP^+!$/ٞ@ Cpiy_//00tLǺ Rzt@k62 C/PëPos EoCo]|݉@__W@spW+ C ^cactn !5$^~"m)[r wۮyЀ MVY@( lA .DQ%EqE Fqȩ)Z8j\21MC 50BOA0Q,eڔ)QN:UYbĎY"ˆ`Vp]̥;]nH_zR 2,%ˡ,'e̗UlojF $OLpt"0 3k#3+D]SPU"YFmGz-!%HHb(:'@\ؘ178`5L=jyfhalA)w~@ @Y-ja\)j^~>ϳ4.ADЯ  #J/4MC3T;xR84qVy #cnZU]V_È'YjNEe5iQ(ՂE-l" Wu1Y@KO xx?>x|+BNXnbH%^C*bDč=|s!O-Xmuަp8E`]$Qn}Kd 0!З!LՈbMj~l!Ke] lD}0@حA =)dGP=Fr\e.wNqN Dk`#. m6'KYPNrtD+]v3.;,1 [4 z;<5)hjۜ7@ 6o|`pG! VvQϊOeA[*>5!PO4W&'U 1s"eb jZ8d YNi,fv7)qq `-p[(WOhnd PS WyՋʗo'XfjPb' #VQVVH&# %8H.|53$)=qQ0UZ8@#;Y5o&ǣ ׯ!E>rp2ٹхrLe*cZo f0Ǘ C}\f ֠lӀӖO Ts[g B=xCn b"7@a/" EZA/+IH 43ɂƜ ?mPԣ6JQ"IN2edZCYʸv_no]c9in6]cLxM;sہ7BB6 +❇HϝFG$ han%ۀN2c// ǒj߲zu\k[syyk`Y(OrN9勧7x 1{: P՛h ݀< `3(鰕@hl^؟u8F^>o-nfǵue^$GOnl"/ȼNbL{B4 w>:P 鐈x{:Bp֫BT9:#N>+>;>sR5#;S8h.ݰ +S2ӵ2 2a136c;Bs`?ۣ[A{ @( @Ԇ@#, >@ @L>;b#+ARȅ:3Ȃ8Z; 3/Nx>b+" +$xڠnm4Cs6@r,8AG[vT2'.z|83C\ dDbą,) (x2xNU66Dgki hlC̄NPI+$HxI$ۉDkI,-1 ɟ̽D 4JǤ=J1&hWw}WxWyWzW{eZƶKu֤SPJMJ:,N`PUyHྻY%6[U Uk҂ NYČ?YA\-^Ωܒ\A\a5](ٝR+%ڟY p_ՅeuV]=ؽݪlPt=_8ޱM.;FܲGX^U+\=R33\)}%eЍ%25Z]U>ڦ-O-U`t NԐ ֬u.D{K^NɵbYԕᙽ%SF_+"6"#NF&nb(Sa,; ]2; 麵1޾_33f4^cJ4xcAeAV) c\(=~LA@6d+"dAVB HgF~H.UV ,`L>{.0552XMfaV_8F9YZa'M*ծ0(j*i+P ^dveT xgi'^`=ugfP{.PstVgbgV 719T%>h/)-R6mh6 hh=RjfGh%. b-n>.``>,vDRik }9c_g\dIh~Vf̆jTʾv+HjvbH^kkvTf5 V^` O,gU5ngn^P:ZvR ȅnR%綂`4Z&+l`͎lBHA苦Ήv%e p_FOp_poppVf.A=_>ƅM0ԕRң>V+xMgVo?H7˾XojH· Y)jr(wr)* *:*2h*/Wyڪ*5r0#G j n̜\VO'&(ȅan\a\Cqhq@&r;r&8W(r2 XM";pgdŮ횲tf/RaC3 R/XePXTYn0%8hun,.hIv'NwKqtt N4@O<ʊsN~%[WXr^RKd;@Yc?vHe'4Nس>vGPE-3`qѵB\wcsWwwwugzw}w*o;L>s麶?aa"EoW D7V[v#eU{wyKqtHtt ezoֆcOzx&o~zFxz?b酌}}7VDҖ_}'ʆwyu'z |ƆXG/dOgP&g޲cܫwxazO "r*= )/E{?}oV?}w}_t}߿Pj(h „ 2l PإF:OF$ ʔPhr 2g\a):wNY>B)h@J}hÓR*֬ZfE*BS'V`(#qѭkőz(߿rҽ7B0nqƑ#QeB-Z$᳄4^ʄPc7hM-زgXb?v IhR6 A!D.gL8SqZS炞>eNP6}AtӦQJJ=]%!jfѦŁ[q$av#J`]Xf:VbZX*t&giǘjc&-dm\F$oKJE \ =t8`u=i' ADR9{%XXශ~fV[oas9h#Y`b]ᆏagهFh$vZjCm3ҸoTeAБ 4)Yr d2)IʲB3wt vQt gY%UVY:-V= , ўu)nr)aZ(cN.fو%XQ;Ci8]<Y,(q̀K SPdL.0gӒ!P 41EtT ,h0TxWRж'-EiԗFjǠ0ȷm)ySfrba=6ي[v٩/"6)^c4ݵM4(OQ]@ , \2AI.’,PF=dv5 3x>7 xY7\!MM} .h;F5 ;.M<+;xv6ܨ m0Eyk4޿A!c+ͰɑSBtȲ,h O8lY2yyPRS03؈  po"oOPYqxp+<3̠ %8A&2X,*ʀ3f8SEȂRґ#,iy4W`n$<)yҳS(YJS3DA!NKSXH~ @)ʐK .h 4J@@&!%PbW().F4 0CP)n0(,@_29ȳpF=*RHCN% h"{NTЭ%FIR+dHʉIL`B$$'MP|R@̱7*&BA0)$=jpS:Q)I`ڪA׷߈gmZ鴕IN\*m֕ wlR|ŧ@ ʖ򶷕l2X*cQyQ -lnjĵl$agAVю=-\2י.ΥҞs~A A;η+Dd[\B6;bp^A7ӥ.XKٲf7H"m[Jas-];`a"=A':`=a_"Bqto)5`z֬gu+ SհǧЀI ;F>MI"//rϔ#qܛd(vExyd3 nv2;o]2O lAAuM! 6?p3< tt [Dڑ/ Qa?}cܙz66jЯmv3U`8ùnu^^L1MWhќY^-^E%1ӡUյ^qٟ_;^AAl, 0 {[ Eo- Xc_Bm_yDB^1`չ y `uVZC=ɭ&U#ܓAUXO/T-C|!:] F^] j   _B9!%ʆa &U@&Eյ0"@t6p+2%_"]&n"%! Ҟ_a3r$ɑ -S! )H0B=8p1C>*cCD4_& f#` ~ՠ8b**::dVczxX=HM?^+A# ,"t$4\E  )~8ơd:B\J1$"B&KVR `*h&$N"8@OArP* eB>B@$ISR$'Z'"7ʞ7ޟUaH +C(X6"Z6R#,[Whʥ\e?c+}C%5}%X4)&'Fecb]F_dJf)9^ff`rBg~@?$:)Kͽe=h#<lΥhB?f#nnj`gB'bJcjdsaG#V#uVfgvngzHxW #yy?'Mj"'}J}~4JDV&Q(N ޠejeu%'Ƣ>+! $ d=fuhz({Jl" | P C}^ :Yabc=g;;P&i)g" X9-} `b<PZ)<+hA}g)' }B*0T#(c #0BޞȂ,ftuhAH(!Th#@XYj>i-d*TjZʥ3ni6"*PCj_Ũrp` @ H]%T  ATU(U@%(J۹*a2k OU ,"vbu:""R*V& A BJ@@n+f.a, <%@%|%~B^(?0ץx"lÚŽiĶ]*+Bx&>% B*b:9@PHLf} <"ʦ,얺,l̮\nA r|R@+RRЙ6e' C TA*-#- .<-#To.BL GFgrA:"B<:Y}o= A&XǝMMtpK/V^! N.zb&3l>碫nm #A傫FF@&B $B%֙%o"A0A%Xb/n/v~S/ /=1?I"d^\0(B.5`ŀ6 CpF-&., xup%\WӪb0 x@%B%Tێ-,0Vf07osA"q}()C1* +_1gr&3|q~. Uqo2I*^0Ap}q" c'\  A2T yX/"xtV2iuZQ &+xrԳ (*2?@*C*B++cjq&.q2@<20sRcҩ,7s%Ђ-T4Ϫ {)AL 7o #AH <\a2s5}GuT_*6XnDGd,6p7Xu+uuBWh=[w\N7PX7vu+ms1Gg(dwRS*}%%03*3y $y o7<,8q7,O"<9CJwDw ugw+ %GWDi6.!Ƹii{gx|CwKTy y‘?79 Gu;8,ul+PCz s–Ot_Ե v{w^2'yn$yÞc&S wl7#y7y?o7PyqYg&ħr_рyC_B4(?:G݉8H(7r:U霒z:W8S{9=z#+3{;{/ 3TA2փ/< \3zO ä4PSAmú詩qgéyz{$yc\@y'+; BO:c1CB8|\A @ʫ<0Dļ̫{މ{:y^B{xя%*B'?} BWpWXc}>(, ؏ګʳ<4ƽ}߽6x> &>JA/ 83|3GwAcx3*&?Aڳ돟>wb";߷83" 4xaB 6\CD)Vx#))tU%"d 3-XVA~鰩LN0x֪ՖWRQGQ Mرǎ)QJZWkɖ5Kk^" sB{{Dp& ŋi rdB|e9w E@h5}ujv @~IT>keX3gԹVIx=!Nkm͛իYv -kɗ'm[q}._~6|q~ǒS93@(AI3Q%"z L:)Z .j xBB_"䥡tNWިQ++,#jK/K,ۏ?@ \2, ՜0GhIKtзA$N@4&!fh Ё 7 >'B+Zb8V9&}/F ~7DvC-3@XD#(4'FQѮX<<"W6mmQ}LWFO>ϺjǼ1@? X;*0P*(ol,eY@Bq3d1 ^T]ȭ<ʕhIs'9ԡalFPbF#S#+WTg:kI[{U%Ǡ3#۷as !&#͙T. nDe8U +r4_Fi@S}P_N1b3TP6˓9fH:zӛ#9rbRU*GT*Bӑgg \Il*(M] fC:Tw,2b}^Tz WT%2U5)ݧVX*t`fa([DRA\fHcUjW|뚤@ 8UɆ9~0.YUS^"Տ^|E< }G߉ zMJ1t 8A5<|]Y_v~{GB]v'fS`*|Xh|?A`}9|%.Joz%*t̃Rof-.}QӰ?{po!41VawX:lhdbN./N*//ДMcON3*A&bVSPW` XO>Nbf<t+QV'dka/<@ "`. hA1ah4`gt!3B/"BЭFJP5Zp[:vqn˂v)GJ+%+!@"f %DBva@Nn N@20cdM: Ǐِ,oQaPLdFg4öem]p/ m!^ a`t M>aRv2 Epi!0_ꐵFr,H1l-_piˠcU QQb%m1nǍnPMʕQ R"kŠ.Pl1k $EH$V`**2%Wp%nUkpr%n2ezOナ"e.2# Ѿ)@b) R002+S0^h6OPΤ*tR-&S,R.c&(Kg$+) `^6cS6*Sr+cV ܁1'2'eʙLL4 .M4/X!`6;i6YBcRBLΜh$;"Sh'9l(S𒳦3V;;t; o7`1/"%\ 1R"i>nK^$/O/?B@S; %1e"lϴRzF(GZ*+ 973͸9>3gs@? dH|Nt AEt6YT%@P1NJ]Z@LN V@\OUJ t^T]"hژ~5$՘^#_u_Dž\H4Nrg2-a a!hvbUb/v4U" )^Gv^)u+8QceY6\6e8Z=CAuna6[TJVmUTVV;QFlƒ!d%4H;LRSjMjYVkU96fa&f0J`i0$1vgD5 (svm]5EV+ѕ;jK/=snj-< 7AVGwww{wxWxNUsY3s[yA7\E7@I1V1uܕuruv`Sv@$`җ}}~W~~~ۗg 7 syWzW\Kw5i i| r<Ηe7x:؃?CXG;g{WWUX_t x@z67uL{NL#{oXX7؉A{v Z_xVezm{o&XKV-}NCXwXvcmxw3vu?&kψx'I8vX\g\kt)RՐL 3'3~8gkٖ`{y7yٖb 8xciuO*v[Y+w@ٚYٛx љy;aV?a6-O;,zaZZd#Z':8 Y7zy9z?P9y D!B}X~K|࢙8Zw:?ڝXuYM7QAs!aRej-(Zٝ:?bizy OuVh:ڨgZU:h2Frw躮5A{V9ؠ!5UjyR֮ ;' `[ca;zWXzz3G[8UNقd[[mfk[g1yKڞv}O;ﺚ۹K ۽߻Xb7ۏ{'` ZY{k$ȱ}D->o>aʱބ%2ԟ;`d_߽|\P_0… :|1ĉ+Z1F},x26Y d,[v(̙|g'YzI! &L1ҥL#2cF6RZm͛[Fرd˚=pȵkMzLҥK4漻g {b١:*լXr8”+[t݂+%ݺ2mͩwo߿+0~g}փ{] gΞߞ<7hҦO:<3Q5;6S= \|Тcڽ\/_7گvgx Hk硷Iȩ$rvO?EԀboHXVz"ƞ35G62Č5(VmZrcBVHXpdH.ydgؠ{4AYL0]1@bLd? iM&rRN2N%>e =tgYj8.(JxpF.бpPGZ1ʷB4'=T@CEO}Y hL. &gbMׅf֜k諌.j΀2eTړ}Ǝ,3~;GˎKa"nk J,d+)'sJpD˰hБlR뜺{eop 7-&K_t̲+|lN pZ:0+Z4FcцIҲ.S: V_}# PLp`vؠ`J`c`JjZ#r=` ; aM6emv#8 5n[\'t/xu7_ ؖ7&X^x&Skt AQslo1=9}c8&cpkykNX9`DEAc;n{1 ۆ[tB1\EtaÀ~<LJDu \ (7Yk{fG;Pv8 su&LX <uLCQ0 +^ h, ,,l!^ d(&DDH5;*= ?>7+pBo^q PL#r)" ChG&QAHP8ܖđ7%k#17GF#(zv ! ?4L@B Je:P#+*^+8,](0fnVj$g$f Gf0|C` rPb;ǤhFyK1:D Ļ<* 8=pBL"3 먡Λ8˖2QQg\K0EGKj03t CQNTy24f$}dj"0|ޒ!Uh֊x*& X`+ҰԣԋLZpx0lZۑƂEuXSX[VʥBeGdKZ*!(חpY0Sʲt,[#v@;,+@4zN  Jwԭujww;ϒBj9Ulkg |w}_1 /y״sy Yvzc{/ k}? D+7PV(ocv8<@MR (x.^ZcFxT~,ky\ 0yd.ό4!(1w԰8J&mj@%PB5gXyЄ.4@eSP Pzxγ;:pfTkBvsiKp(CQV HE"P+yvIK,姪nz!ֲfC`IW66 lo XKt?;E ^4>pַεn7rDt.8FָX[z@_<-YXw5O)L (^;1y2T*/RL.zy.!XkzepD5͈5T|kmhtx:1Nt\ AMI@'D׀GR׻7>ANT1&  t @ޓG{/ >7;JP0 xo}]ֈ3pqD: LW>-;Rʉ#J3/*Tπ~™$"GPMDsMLnЀ88 HŠ2s T 0<GEOLp  =0 hoVdcV/XGx!HydGP00AųA@EPPDJDž]_a(cHeH ptCf'fdafHuhw !WE}L0AFt'JXTEpI|gPsLh([VkȆm膴q=0fxLE'h>DvicM=ͧ:C>`փ@U+)R-e ЋgnEpƲzBpT~RnƃH^:)8&,U[- j85H-Xl<81Ʋ0 IY, `n  Y,d%ihF)*ɒⒿ[2949K6/;aLHApG\+-KNA gE3TVc- P\ٕ^8bIQrȕ^i40p0u9!z3ISi+P)^%1)cJiɖ 1LL %`즆f@piIÙ0< R R ZI1ש٩1A؝F0MhQ ,Yhy3PMIOHZ֍jPN bzyJMOƙ¡:*baDDT)!Ğ*z3<`9;ʣ=? A*CJEjGIK: SJUjWY:ˠq a*cJe:ikʦmq*sJuZy{ʧ} *JZʨڨG*J 0`bꦝ꩝j*vꧥjjꨭꪭJAfʫ꫾z*JNJj ʫ Jw*Ū˺ꥷҊkZ*{*J ڬJ * [{*jˮ+[ ʯ+KK k "K$&(*;02;4;6[8ۭ:+,K.@BD[FHJ <@PR;TkV{XZ{L Z Цb;4 dۧ 4 6Ǫ\L^`p+Jʧ$+6۷{ Z˶m0`|j4;+ zK6kK;ZK>`˺+"CO[:0Z{˭:j۹{ [J@6 z z 6{k拾+x{ۿ 𿪪K +d ih3`Kg;0|-px+-@4zJ| -`6 -P- +Ċ{å{:<*3_,{6 pY,G@ \*:/p5 4˼0?[p {Z[~Rқ ,:P\`LĀ Lq<:0l oly+˹ڲ'|@K-&|pP|ќ6 `,06sZ@;`Nw;[ 0 | ,}a[:0 @虞 B]0 ͽ鞎c>mmϽ : pjLU4M p Ln

n%-|zz |0X>;ÃK\B@Р=/Աmˌ.j-Q᮰d^Pk.Kn ?&mlOpZN;<[y[Ln/@4.\<+ݘ3"?Z+y< io?}uD=4C}?γFCŃs0 ,ϯ:O_?n֪;kdK-lzޏ鯨 1@@ Da=y6\:@D-^ĘF=~%MJL`Sf5męS΁=}tBE̘TEM>=5@ĚUN] QypZOݾdJ-_jU^}Ö\`p C{djիxc_c_HXÝʥ[ǒM㬜z(f֛]{=R*UVߎyZ7ժYv9sU&xީc.tk7 vݽ^xj͟G^<_|g0@#@A(dAx(li)'C 7s1DG$DO41WdEBdg Q1GSlGF?*FpG%<s!LB $id2,ф'.& gԊ8J,j,Mܨ͓D.4:=M1ԿNMSPUF zUY]s#.(6%SOWuR :UZ>99AgSY_mu] 5RpuKMgV[%mg6iEWWr%Ya5Ujs\}np$v#c){ፗajb Nl_l ŗ:q!%LCK6aue7Yw^Xy1L[+ڍo[QAC`ݙc_Xd-+lE b6ꚣ-b8()f()Xz(؍6šg `nw1$C NahĆKh@()Am8t0eLDL EhYTM> kf%~A$;lZ ~(G =}>h"g20硗/-mPTyiG6-he {@2$ja fgK <BX.n:6-kDtF i9 a#4xaH<(v  D(=@ǃQ >䰨@%2] A*vp~Ku;΄~}q~&*Qgȣ t# up̠t*' rdK@m65ɦn]fᾃJ-h<>98LJj:G=7yM[6l+֐IB@LLTP"-DDOx!/}0+VB+\C̈́#d,щdFh@;fA6)'$R;r (8gP%`C (N3@t10|Y+s9JRax A@!%G7 :"6H*ԃq<"mD8KHΙfAˆF R9DꎉR"3)6w E_eؚJ Dӻb/ Dr*dr*"&ISp0vM@(fH^v|/)‡s܈lJ,&ֆ]!;\ƨ ! 1Rw]7m`Wzx)M.k|agx8'L!ЁCj_4~Yow'J lorr\n6dL;8ȢM:P~ щֿxlH!/yMz00ȜFc+Wvn񣈀 ~7YD:` ֫ާ4ԭ.`lPDa@8DLlj^ \XyЭu420t3UI76IBtra.!U.0lHtL2ȉja!WY̢@X8v1rliRG(+s a ǹP!"}wSqE<tY)l(ߴPv uݒx W,ns}hp'|JG0;ˏ,ɍB=֗X =*Ƈ=cωqޒ^vO)h,@(p9#g<uoBlĂ%3gy:@<ғǚˈ!4m2؀y=2Z|"  dF{ Tjq5È7y#?J@Az3t=$& d\:$ BhT,ē!* :Bp'(L)*?A7/ $sIC5:â٘܈5@ ʻB4CGCS*AC(&=DtFtĦH0E8CLeHZ[\]^EZ< X_DdTeD4Q\Rc`klŏPEEmp`2I)a4C9K@<91tȁH D#ҏ<lt0H@`wsĺHy|I pAGyduE)bDGȉ,ȭB$\ȘƇ HȊ .8H?hRGv,GebIRǁIGH̉.tHS1TKD |.,W,h4˒|J99J6 $I7yƱ$~DKK Ȍt 5ˢ4JL;y jHL*#Lɑ̍NLLz,{|Ƽ}̈]@B-T(Qa\ D:IJT/LAN5B=Haω-pWXUZ% \Up^u_U"7S=SNu9N?Rc0(5jjMHmDPoR R r%W!!PuhWWxmyW1]V)SXWV6NJc]Z c[EZRb^5a5؆}Y-Pa/tdnH&p^a^^N佭R}PȊ e3S~b(6Ufeue_XYvАbeCe^Fd4_掜LbF }:] c]Ѧ]?ZBeU|g6[JF[޶u!&RA|ebS6KTNUhߙ%1v[ejVP4hbhf0C5Lf;^ܽfHgha;fEa_ff^Ja6rdULdwjgj,jfj_4h1hꑕBض [hvhXhgjPcTEf:VvO8;:>?SiPjeNjM&J~ling۠&ng}lAUegV`ݞjL.݄njǝqX8XexP%"V-p x^=a f]#6sRdu86EX`pLAX` /8A`0`-l0n3qiV[t^lwno~>I(^Y3ovioks=pePJSର8%y8xkU2ypXt6SM^q`U]h/HZ0f8p:H(@yU Y'AP9 8nrrH^&qi=td_lfv6mb}A08bopr;OU<m={8tAׁJY8 FzhJXKgL?cO]?:O@_mixW?[]1SUXa$MmfoĆ.6s/Wvg! o7s@srG5Nwu]܆j}/;FsP}t+xX\ʀoxmokdFNOx]1uO?::] =|bCyk>ezbriR^zolmdjx*wY>wtQ%ZCMO4:m w OTB8dYC@x*;b jV_Av52>K8՘dpR N`ܦKx FH y l< R}_!X Ũ7J:ῲ '8ATAutUTR䥭 LҞ(ESf4TB_V2p(½[ kr<WQgչ:.>9;UGx8"(1n7<.3%$P%<JZ*b<0d^[$NPXQ !,' 0͢ͳ:2C>'(a#[*5 P!5}YԪI +h%0urefZ xFHT ؀PAlKXz  )n7Vٯ?[4#ΨF`xj5GQ+mq1@ߦЊKmjTzWnX(,OѸ)w쵯A|{cT2v iNHNpۜ_ mex$0f\%2)o[泟~XXt"#\q @ 7 ZҴI|jWEWq9`# u1mdϻt0IȖ t128Eo&ex8+t [t9cG.SϦ}`:ъ _x c6go/%Q䍜ɕiq^y^W^asꅏ^^L^Y@lۓ%3xB-m y3'x+ @ p`_gaǰZR}~zԝ)M@TcEHU1lោ)am,E\}Ziv=NDM VU ]ZʄR> M `%9p[PDX `IBo b-BfCgb|ۅ܍_v`{ < yA3d 19_M_a4Y}z؇ `^^ޡazNM^b<EtMX%"8$^1 -x+Pzptz?Bp̂ %āhHȁ[UZiIL%+l%*XCf\8h8'L@_*,C٢"H44Af\fȟB2D2 `EvƀP^QQHU eR*%| rc:H:\q`l?Wz=Xe!fT'Aٕgh,,6 Q d *00bHNe5~Pi#ʥmxcn~^o9cp^ qjLrve1gX>'YF'VTj Yb'-gcgAfd]{|'3OP'6(meڈR悚B(b!!ɣW:"t~hZhZw"LC(IF~@R\M&.uc(" #gzgƦl)&fŁܷ#2E)-B FPiR(f`1u)Oxnਊ(vj-&-霦g"{2эhjOz#@j'&"Ba+Pj@\:niՄQ=birϳW)tjˈ ăH2:曶h& ZvG Î&bNNF5NPb^]m@o"8:"f v r+8g=Ϋb͊ҽPr)~jb kz)@mْf̦E$+\j2b빢kq^)К͢ͻ~&kcҬGъ'ޗ*)zVeԌ*{{2+^nnnB;mfZBu˂'2...+(₨:mLNn ooj:q,ooJ"oKp#/ҭ޾ʲ,=@R:ðD2g,%kN/H p p ?$P]Hzoyo &3o,y`ojqpq0%vZF"9RZDc $/"^Fք ih#l8 !gA"'202#OL@$G P2%O%_h&A'A <G22˔237324+dkJKKL?34qooF5Wäq x*\94F7T3ˁ'T@`Vo'(& Z+XƜg|[c> >N~{>c~苾9)6URec,dU&dPl |c}Ÿ@ @@{:}&z??'~c]|烿7Qk藾џ6-ξ>;/@ 8 JCF3 0xԍ,O* hpU:3e!YnX$2D}z!MbF$W,3(Ѥ&~Y*s<FNy,|.I#3pQ$C-7֮`Î-K6Z 0.$/JK+A *1sr3dC@ %JD\{-xfMlH*ȷ'8%St3=j@{ѿӭ<3pSP=N2@L1,L2rC9 3I3B5M>OSsBB-<4CO9tH%L4Uaea9H_`ӴEET7n8e3ZxJ` li $< 2>RY0*@v*ic3k Wq;yO +w UWFEuw׳OPe ΁*hB5M7 4r`W ʘ[W F y#0۪3JStU;>鹄vm=;gsPC1|F:3=ekA1:Ρl͎vә;lt#z1NK)& &(h:b AXF*WCq4)Fr\;wL4e5*38-vI[ ̕u=] nQx&0kКVAsaPWYژ&]n%e:S ]¶SrL$3XT:֌SièJU *9ȁqs'X6ֿ5j]+aTuv+m4ʧ5` +2scm:}i.Y ^K,+=@46F#RhMbsj=6V*32hMR}gpK\Od[5lh_[]#7 IX@lzc^ځ^ 5Y1<걩3|*gK[/8E@$|3 Pap3 mKE U-'e|2U;7%zqF`xR=&͏g8Wp dj*ٵ1l2 mVYUaKU 7&7LfX/V3 Wek]lg5y\@&t (j2o miOնmj E@@D.ԧLVư թzkY7kϿe=@gVF6O"DxEM0qO"~G|Nи:s%ɓ82^KUǔq0`=t]Cчt/=.]uG]rXokv{c7;alwv!,V߇o]`؂6yFz{BcL5kwf)z/$|ٟFbG7`-ћ.uoHٻpiS(Xk=Q]֐K_շ>k_@o;Џ~xh?X?;@ {vOFcւoQ@@h"4o)7fzKVgN馎\fOlr/wjL#RB2 j` oA//ҏo oOANB2 l° @9O-DȪNOGc/f/@~Kd0hkO/ P / p 0 oƐ ːf iG c aD:!#Y"?oɭ Qni/ Qom0/1{61? EJ ՏPpo oPw}1^݄:L!1oKʷ1SOH m/ő^)hp!j1qh;1?1EP1Rr! 3!A#"n","*#5r##$L$'-q%UWq5n's2r3R(R)ˏ))@*q)Xn1R7,@,p"e&e p@p37us7y7}7s7)0^nIM%q鶑@ %Q0&erzQ^^5 ss''E'(ˊ=12A2q)*3 4 +N!R5\,Mdh3*b욜jIFK0t4TC%8387xx$˪9QN/2v@fJϑ3<πp(or==s)s83 ?R`?+@P<1C 44ɒҜ,Ӣ̐~~#.C?`CC]# Rr9R/X:H@0%0G'@k(g1=o2 31>?sf1445@Dt(r?,DL!AOE (B }޴BbNtC5C#JDOQPI@ `jOԵԵd TjTa&UX!#)z44\|Я<(R=)=M53tU;U3VVKWeWML}LUX[XA!4ܔB[)NtZYZZOI-PM-%QUf\c< A4 HkkTf @f0).5SM QvH!T(! ǯTUUt^ncGe:AVddeW#XtX^ YUf{ȶhXNuv5xOg.1G0Ġ N@ A tt<p/xFk*la"f GeR`:<t2%vbpO.vp3vB6Q c0EvdIr~ɂrwr=L3GҲlfYGt?@Pu4=u9JDhGP \OtAĀ ]x!]eFg@^jtf4zm}HnvGToV>}p#p!"{uw~?q7C[;CeaV_;@S? nTJ$J@b$}%0Fcb>@Fdl^`qgۣKĽ=@ă ݩu/]]t``@ ^*o`hAN`fOH>k[~] ڨE N_U BL(3 YWLwBÔ) .A$tȱ Gȑ(MDڀ/@&rla"OGh0"&tPIH/tW=`DGu2dxYe۷!$!gwU$ʠ~lhËԬO""@>H* LI$-!(1'u`Ɇ۷(0.5{M|O t\,`H0BkدGνӊO|ԋ`[X֋d̩@EPAPMAG]̰B!`! 3C ,`YQGUzp2dNʥOA UT RMA .LUGnqĈ ^Y'V# V[o%tz}Ņs?vc-Ƙc)Hep¹ٜt av"`۟pw\r12G`=gMfg)vewu*y{^35f|}WD8`R0: r(t@˒剣-M1)BeT:*ՔS>)d$'xBav2(C2V^K5]x'\aXkfFB睪xH~ [Ro m uM:y3w恩^J,ݩϥ zk&諯+jaRv!̖7-3Ymm#Q1=Fe. Cn$zEu]%n00'ycG옛Wog* ,))q-3 =5{;3+! Jm+\k%4ӳzkF?uO&[oït6Lպrw;TwnEʂ;XQ!HQ8@g 9hns4t;LFD8a՜Eg:ɝv߹;C>xWBZX1i֫`+{9=$ߊȗ6}Sar$\@@~_!Xs8GZV9o0 ܇1M2f;aOYA&"rJXLb^K8-ԆH5I\"Dm1⋲}ˋ#22]Bry go xP쎕>@?2! yCLd$(_QL$&WILqrg\O"JTU<<W ,(4qIƗKk];ɢ/.o\ Sw$1(*U]HT┧7j7ģ>> +XHsOHgLB؍pv%S8LRT>g'C}vXysGDQ! ehDѲI %MΗQrr?*XJD.Ȋ, . og0CY5dQ.o%'̩-s0y>НjE7x7U48"v &{*{^`oىֿ_@}@{޿W?_uQT;>GSplkQ4 <,k?G~=ߌz4 -xF8XxG|xiz\63||g)7}`wx}}$%wK6yt6uw4X6E;^d'l;u&P-DFx t: (h&FTXVxU6l#XK1Xb8cXdxfhj8 R"kg)8gXĂ"BHEx(J;rzG|~-\HvGs1r 7؉(`ʱx-Gg}Uy0XsHcwx|T|#885RHgUb 'HuȍxnG8(J8'9Gx>сP؍ِ9uW wb騎hC D م)CUȅ.9y9I 98y)~B~h#P׃ )"Y8ɏMVFYFBB5i7iVT~+U0fyhjlٖi pr9tYpu n|ɗvprw*^YXwZɕиF}0*8PLٙ9YٙZ !wٚ\PЊ>` [9z闁ٛ "1CBЗmʹy fSs< yؙڹٝXmp y虞))Qix[`-yٙiB3 Yʚ`>О#t0YZh09`  G؟,չ,"0 <`|XY$ɣ@@z&ʕG 5jb-:v5)<*EjV*I ]MOQI _)-Cl: ]9.92fzx0<XDQZvzzڠ Jʑ۸j| Pzڪ8ZzI-&0ZzȚʺڬZ(Aq Zzʬn R z蚮꺮ڮjEZz9褿Zs;E87h6o [{K۱";ر* K. Ɉ*[, 8%۰([6{:B+J>,۲B/k͈AxL[#KR Tk^{N |hXkEcKvjJr+>Nzxz|۷~U[{>@ip;[{۹˹i`Q-3ۺ`;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\| "<$\&|(*,.02<4\6|8:<>@Bd^r>=\@SNU^|;,.z^:\vNk{\^r阎Ú+Nnç后y>^4^.an.2Qon Rסq R G Gzý40!g륜u l&oP 2 66@[FO0֩6Ո~)ubz@!o 12 3ڑ":`=  'q & b<ꈌS+eV3N @ ڗ p M| ԩ|  =m<\-#]*#׭RݑRpEP|p6'ҡ?cÁu 1_/  ԾO:WMoɯ˟èu[^Z:-:"`6$YҤITdK1eΤYM9uOA2èQVbH,u=zȐ˒%#ʑCbIĊ'E+b] [вE Z$ KG/!).fcȑ%O h1)eԩUf:+ذcUvڵkeώHŕuo@r˜tiϠZ4ӽٷwm^μ8Nܪ}ХNq8pKN99S>pC;253=K. C{ " -2FsԱ L@;SoR…Zl@ VsK`d.:f$sLA$p3 Dħ Za)gt^g0<L2UtQz$.!l*$GfkL,)СtKk@-{VeW`L6T)]ͧ\`QIGW^s>2SxK.5W[y(uݒ6_^|qrD!dtcJ"I60@Ht*JG  Wݪ)0@weY&=6#؍D-sM*09MBp/tn`)h`X yl`])ZoJVUK_pW?wXxlQBFO䍣 :A d`{#s? &`P, a Mxn  ScAd` mȓ}-lQXC P0̓ D&Q2ywCQ-t!hD q[b(N1BTEhka"0P?$(%4{GΑu,8C>&DAE@Et$d yAQeHFR`%-yFdeO$e)M Tqe< KYMr$-O첗 +Y4&2LffSQ|&49M*њ6&g2&1iS,D/т@=*lZ`7,w{6-Rj^ mC Ejv(ͯ"1 v#IYb(1nXPF0"W27@BGjci4s c<8Foevh 3)F yBpMU]:g1SxKp| vҫ24y3rEgRLu YPWZ>=myI%5y B3x7D +JוgJҀ+𽢃v[W~G ('p F "l_A}+ӀWఅ##?S0CS?2s?uz>s#=?U:~8A04jW0P y8.jdsY+++_0(X;ҀgZ?S04>ȫGF+跦Q,M"] SH)gQ=$]0$DUmR0 S2`t@5*X8*L=T?SeAJT}G" UY\]S/_}LS֪$Gx+Ucf% N-58Wh UQuL VkVoHp WWm N=WtԔV\S}W׈WzU{N}SP]BXk%Xx4؃ŝ¬ˆMWu XF%4@LYT`R، WXW~U~P}4XQ-ЂLY`tYyY{XmٝU ~V x x4g@yU$@D:EuI%N.)"YY=-LZZJ?x Idu48Zi4AH:HU> H"8fflҥE-\WY*x˻WeDd Ma CEDKAх|.Hݽt 0V*ghU]ݜ]K^DL\CER%]]0U>#=V.E_Q_] ^5^|R`(Y ^DaC caA}KEPo੤`]˸ 8^eݯug-P.G8c;U( Pm-ghaf:*XKl_}_}`u4 XxRcA p@F4cEFYm}F{A,ecMfKNKO&#_QF^-eS>ekdJKdՅpeYeZ*Q-Ee^\e܀K{vpeLNfmPfe&Weh&e_fUe` 0afohgNfrcfVfnfwgq-S@gNXvnwgyyga=MڇЁ~~gh&I$*anhb~hhe0{hN.XPni~iiii雦0V5k.8jNj^jnj~jF4erZjjjjknD ;PK+ S)PK.DOEBPS/img/cohcw_dt_001.gif9=GIF89anٳ\biXc[JKLyyy<==uy|:<>ܺVbZgjl--.貲fjleilYYYx޾WZ\ƮppphhhYlY޵ڵx{}ڴ𓗛,6,;;;䅈μ޼z||^`avvv͢@@@Z\]˧fil!(!椤X[]dzdoo+-.۷߿CQCݻ ٴ¦{{NTTikm]f]N^N7C7㨨IUM̹111[[[ȉcgk餮Xd[nrv(((ޏ cnfAKA`nznpw}ꀊ,nH`*\ȰÇ#JHCpXȱǏ3I$IL\!ʗ0cĐߕWɳ4@FѣA*]TPJիXjA3pIPGmʖ)շTʝkXe<T߶ u< f!6޼|M0a‡3J,gg0@ZӨO7XcMۀ 4hPoN/`K.e>|DΝ `)AJFҤS^ذkƝo߽Gp!\sA7u]wہx噗^z|7}wn`pw\r!܂ ^vJ^?Cy!}Xl,X`r&HR4h݃9^8Rhf!6"%򇢊(ʨ Za:أ^F")q6v8eg\v祠aX@"*Iⷤm>[Mc{NxI&ABrnd`MZ%.88jz+b ɹV^nk~*Pj}&uJU6,J;U+/!7l,zix$> ,7[#lJ. f ^koN|"PZ좁:w%Zj-ЌK,4KtFVϥ&t\*'r2z:+A*;_g| ;gW+?6w{7gkvlG[.i.%x 2k|Cy~mތ;伒 jo8tx+k䒋<ޢ5/; 7m>} Ӡf6~+̹\^Þ76{g!Iu  p0li);,J.a耼O _ a !Ţ;Ud|D!nD fvFD`_8$Ct"~PX;ίoШFn@1\,{cx[ c29}tt`#WsR lwB(1$& h:@S"ЌUzZt@,gY[;DԠeֈi1l&Ef~ȁxM*oyt NCf<'tLZ4 Oyҳ#43jt YevK$A`H1r@hFfo-ge3Pp; 6aU Q/Sэ"ɣ9) @NT)`:`!PڛfE5jzӜFgi:Ԣ 8  iTu0ժZ* f@ DB`!*2e2f[:|qvūa6*!2 @D@.yldJYbV/Fъ ~p_#5:#@Dw@|xsB@VQ;DK  'P x+( @`o(s+R.s]"ZS*hav́: @b7&}+7o\'XX0C|s2j ^p7LNs~8#.wQ|;| N+(`gBLjqb"XD"`XÙA%z޼cK,1 +Yn?tQE׹1Ai*5(Bi`b^~o:i_{۱@ C7+.b vƒ{ԍ 1}ah8) mPXfq@3t@3{4ҡ+EX!p*@ X86k~FoS  "NTPw0ng)WwPٷ}}'~g~`9~F(ʅv@@dALG"WL'`G=Jhx1buVrVp0~v~b Wz$w#XvDтՂ5FNB@VpxwP0wPPb@(DxPFxHքOP~Sz2z g;A'{D{{cw|jX^ ˱;\Xgi(c@ @YX~f7:!({DLCpT`qJ*,'r8PxPS(Fx]87,aH^ƈM:TͨZjA_fi~`GTjOY8kH2]xZHL]wE@ hPjR.Lq@  (FGtpk%h=D lAFpltJ`06lJGV n2Kqʠ +{hazA v)k;yk?6]ŶpTqq@NpbW Zy_cЕ_Ih ؖ󖾀QvQwyIt|ayx8T.q&PRpmaNPfn 2T0dpy:w_h xxDxp@Pp;ѱ`zBƉ 577z7v{@h 3]U Fb]PcP/E gf XX7K~j~ Is1ٜo)jpׅJic odtP JץچiTp,%zP(*ʢ02J69*pÀ0ƠeCzhDt TMQ:VPU)#0Ģ 3JK9`'-~0`cp6Xn 56t@cp@Vfq%6bjm~@aiŨ#W*:oꄗiZIk%h$70F CKFj2DCeU1` 4@nAw +\(+TbB1f@ FXӚz:QD D 7YZs$G!zCf!{Vo CpJ\C0v EjR۱ KWdD/ˁZ$I@c`@t#DЍ$:=݊CKLehA^D@:w@, PV'Z˵^kr!1dS +\ ۩I%HÈ"TRT4r4>Mx?C{ @sBE;7,Foi2'p/{*rR=+#0{Mk++"Ve82323D^)"%ʻӻ[7P ?k=M۽6B3k2x%";<;뼬1 {/@ۿ 5+![Qk/S$#8>@o }/ Q1\9)\ L4!<;;:R5lUtHw᛹0q?c9Yc/JLIZ1C;V˽ -M3̹37lKlL1yCȃ4jl T( BHhLȿˢ< P)|؜ڼ͖ߜ<\EpJJ%[\|\l,ϥ,`p ЉL]ܐm <ǵ -.p4M"p7:&=@$0CF I=L=!OR-P0X`^((@dMnpg@е */ 2]6;>mA D]GKPSmUZ_ b]fnlm(tOp2=t"p<{-D}F N=S}Y[ cؐ -қ5٠ףצJګ խڈ-]ն}e$l(o=םm;z}Mڪ=!ڮmՈ=M׍۹t}}ȭ׀ެ]؆]ض4nr^x-{T E=^9}~}-.ݹ"+]68!.|m@=D^-~䏍'^DK]v;Nڥ-*=/~e!gn:iۗr-nNUN֮xN.ʎ~RWܾ?//B2J6!# _Cc,]=cOo%]lح.0;2`o O꥾|>T.؅~y$N>>Y[7",dCyxtP'mZбc.)¤I)Y`2$dTQS8GgAz Jt *д@ &dUYnz #`ǐ I^8iRS#-M|9*ɩ#TQGUQH.eTR *Qٲ/ڨ!Ef=bH+d 5;ݽ*Ȑ !|(|⤌?,˕3oYFgѦ]Z5ktcΌ=m܀wȁ8bCFaB#N;I ND@`k;!wDjB rH"5392D4 J)YlʙTAK.2(x }"м,È&r>, *k&pM k K@5Х#LQcC$+R232ѣ 5HWjh`WrFpȡjBnkfo) =8!H8Kߔ4N9Ċ'R Æ5%de6,!i6?N4LibJR-mއ|%?_~IWAkfj֐V"4P*8s8ݧko*N&)5)X  ISz9C?>@Zr&?ɻzj^jYVnͯkk C:8a0N1^ye0HQ@" F)mgɢ 8,j%pG!ȪI@ZM9WE'0eAÊ9tUOO}_7,<",qfJN# >j-^x3Hqme,{^RB=a/'B06t{5Xְ+>%};"g?|G$?p4Ds6\A(hA jsۗjd {qJ@ c1.I"L$HH@P @2!DF ܘ.4Pl/)Yxk7@ Si3asd#=$~d%(c%qJ<-*J$5IJp:cI4Nz<d2HmN`h' ,$KҖԥVŞ.˅*5Ξ9O42aLd ò D"Nўv)l@7~ۜ[f0ze`k5a zIcӆ!Akg0FMᲪr=nPd4Z5k R 2򖓠;dPOr|/$7 C D'Pvu8?ݹsI_z n^SKri_=9AfGH°L) _w6@7=X;8CGmȏ{׊đDKC$*y& O21Na{->?ˍ ?q<5yA[ɾ#A! [? :|¤츿\A@ D? L¦@0?0* ?? lA#B0%\Abj !0+ ? l8,AyA%>CPB|@,C"d c?&+DCTOP9$EUC2UAVT !ȄWd6LDQ$;ÎI$N B-?[lDRSDbjpltCc&/E?ĸb\Gc|nL@BEb'{ |_LPGFnB/TFL!t h41ƇHDE ȊHGTCi ͣƷ,KI\ Ŝ׌MLLGtKʼIHI Nk4dNB9LGd"\LHŘK۔$4D4Cg4||LtcBTH΢$bGDF\P}&Pt*DTNMtFL"PDO$Q PN HQ]S8.JTOUZTTU\UQUU>V'XUb-V]=VdUFR?m`UY-VidV]]+uTރԟDoVp Wq R(Ws-W*HWu]uZ`WxWy]WgW{W|!XU_]Wq Xs52Wv}W]yW}-nX%ׂ-eX*Xu}XuUӃW{؋]ٌ؏UXؑ}ؒVYm@=Z0]ڥUUG  -Z%ZZ[x}8[-Y5A٩ٝٞ Z%Z=ZۧUZ@ZZ倯-\۲%[M[R]*A۠%ڡۤ[[#Ё\5ܯ۱M=֓u՜ʵܺۻ}Z ݬZZM\]u]$˯܏\ݦuZ  ]- ^^]]PQz٥[-ۥ^pZ0Z߲-]}`_}_u!8Z__M_S}[}^]`Ձ^^ FM^em^0v_]8^Ua%`M\m ~&_ b`-#f$^bmb}(aURa,.!b`\]afbY^Ma4[#a#P+.dC>b0cV_'dJFZU(qA_N!&"6bGNߊaTaUa eO.b;Ree>&bP_ 3H`&dI3eΝf6d7~clfDepnfgf%>0xfv` g;\^]_[E}u^ch&c56g%}b6&ygrNe\:#1%ngw悞\gFe|K&Yhdbhq>e⼽^+-Dhj,hj.[ꗆrE dk8jxVibVfZD 0脧ki%k<6ZE (Ö6ilfꖆꘖi[0lXm8k.>Nmumdilٮhk1sdRviS.chjn&]VljNkӾg^Z̞Fhvn>&n.~k5[7.h 8Tfzfn5NoomVZ̾ͮnppq /qp޳^Z7q_7]< !jpo/mJp!)m p.pjr4WܶJr9?߭s„6 ma{fs=o,/s ?W!rfp*w8-r#?rqpO'sItstL'suu.pK_<068}OXvfoe}r)u0Ho-t px0 v[vtmnn_7\pws0ѮvV1OGq4g {|hvhOx/\}>Ox0EY8Sq pQ'X$.w{MqmvO+^}ytUWu"'Joy$?Hvs}u5PGVߐ6gLhLhYhzZz7Ekyڗ7{ROxGG{{utWxf]wv'A#{e[O{ugtOoq|7m޽r|˷qo {osч|ʎ}v{G}_|Gw洛vڇ:CTc}G/}^upk}_}7aWg}jq `P 0l!C'RƌyxTx#ȏ FAʔ)lL fD`M#v)B,ڰ"R2m)3ofu2$ɒ'Utu@L4Dh"` A ҍLmTzkV\~mX8!c۶;K.ݻx.[ (l8lbk?$y2er1g{ϠEl,7!#ЩCoe_P3PSo*GxFxL6K0D䰗[nn޽}uab#)sgT|͗n$WGNyGu`]i}W֝w@ l[{huUY݉(JXÝp CXTyv9aHMv 9Kra =PMY"HY% *nYM Ē6i\fPfA6XED:ɡ~Y@;ZQv%i9!p69PCb`}*'!p t(eN?6}zGF:ijj%Қ(C 3lVzN&^^My W:ʚri 7{*K>jXd,\w^6-Tp&'f|0f㒫jpKae!+˙f|3Y`QjY<l)0`3\aH#(;}:UKsXIzM2D.L]TWM4߁L_'\Zv ­λ:f/Ty櫒Zu(2ᖏIfkwp=?% +?;<_X=kxx=;xrc C<C?sE'@}[xK^">!}h F<"%2N|"h!FUD2 ч-n^bb5n|c+ Rv#+𱏨9!HA<H[0IGdHCrٰ#Ѱ"&3Mr$(C,vыb,cx9c 9!D&0 Tp(M t2u8Lb[x$YiƢ6 VC: 'L#%:өul')_\؊;$-`K\꒗f0 cvP&3 MiRӚ& `Qc'҄&=)JSҕr2g1 |ʑ# jE2%~Q$L2)hRԚռ(Fsp u0R ,*X*ֱӥ`LՈUԕ'xj ҠB%0PFT[`4 TbHBU 3n# +d#+RZY*Uuni,gZvEh^zԇ*S+E;XZ_UAUv ,p+/E+ϸٵv֦}Ahȹk^ЇLD`gKMD-ny[%E/ Q<Lk_+.cEkA_*ѸMZgJS֡hzKTvډ%#N2e/SIQ"{1j0qPc Z@ÈX*cدRP.g`C7t'\ zu(D7 :P y[8A'N23ً`;/k}u=!~8(pP4h3#Y%cɚr[Gq% U{EXي ]qOHLC6Y(5xi X2*dN#ڻpq8*+m *khmH^.z= 9p-c[pqEmVzS˅c]y*S-햯fp=<_Yas|d?>"`B,Ϸo @@/s:+Ş]gBo[4f.s!4"PUǐVO{"|e5\%\]_.Z+=8"/9ecLX|Mi,7tB='yh4~opyfQd82]0SYFseN⹦{xNގ) {F bD~L߼uULWKuˀ2\l?G|ܩ1Q-e]Y]M]5w!_YyuQa^-2(B-`-2\Eܡ!B1BUW€ש-5½PymR e\BT@y aXݟ)Ϲ*T^A܏E. ٍX z1D"C/.W"J#aE,aϹ4\0LZ=!F!ݔ-֫ @eaW֮֘MSu:aנA,W݂y3~3*Qڀ~-|-Cɗ(P| .|a#IH@v.S_%RB4 0u82Uƥ\ U:VN>yOju )XYYr+́Z8͂ <&d>%eVXZ>fN?%j`UY!.nA,Z2fH9&d@@ X&n&J]d>ne+W,%Cka&+Ck&lb[>&:2&vf( U&XٵҔ=WNeh_PҢ^!g)a6-CtuDlf:0?h'&եfFv&?b]h qnW2ATQ6&6C|6|2f}}:0 (aeqQ9*Qqi!x',<\(F'Fl(fίj2jk2̮j>wĪj*bn rzrxk*LF+DjjwD+KN+V+ש,+v+}+(nKtl~lV+ߠ,,Kҫ>HƦ,J,|lƬ,͞򫷲l*ʬlN-n-a,j-rmFвøB,Ȇ:mBm-ަͳm>2R".-.Ff*nܦ&lᶭ:lm߆"+jr~+mZnnV2bkjb.d^,ߨI?~"/o//Ư//n/0oگ/0oGoW#03o>0b0s0 +;z0İ 0 װ 00 801pw'?1'q74ED_1L@;PK,}@>=9=PK.DOEBPS/img/cohcw_dt_011.gif-dқGIF89aٳkkkgug,--xڼݼ{{|  Ʒ\biNWNZ[]߿YkYڶvy|KLM393@@@ܺux==>虚sys蕩pqp#)#:<>칹񠠠ʧŵ۪filߕ:=:sw{yyrrϬWZ\CLCouzך8:=Ńƅ~7C7]^^bibݠ]`a,6,۷cgk}}69<ʂRRRmy}}P]P```ooGIJ000־SW[=CFܿƿvx˯6:6swMQUkpuҲ߾ξкۿ16;!$@DHDKQÍ,H`8*\ȰÇ#JHCuXȱǏdIɒ" F8ɲKcʜIX$Bɳ'%@ ]ѣ4(]ʴӧJիLiݺׯ:PpҺK8}9-ҷO]JnUVn5lXC EpmE:Suە_ *BuLZ)dR74cˎɀ۸[@%\w@xX> ,K?i„bwGO~<=T} 48@[o'prutQpuav}@xGy{G}' _Xo 2E(!q!wn(^|zX("~,D_|x9>NX!H*$ȉM"9[m%p!`5cgbfk"iޒ":sFigb`8E١EޤF9ĥU z)Hff)$k*6ꓕZjg]kcZjb$6xꩮL|Im7^`Nê٨tJ9e¸%Z+orBC2 B+ jpt";JkI rՎl\Ŷl1~鮫@[:E8\ ITaRmhǻM7NhE,J)\F<c<8`$Ƀ21`IqEvS >T7JÁ1=3uib- |$$IIKJ6ao:r#"a}֡%`2L aRh` ҒDۜMo0X~U.WX(BEH"G ( + h;ձl$n9r3A q`2dppOEPXc0Ѐ ~(h GxݤT (au"ECxb4GC &JUK+ݰxiLgZӛl !VOEZS :4H3@" O`l(a&DC%/X;) BQC^43 (Es<4` FRІ Hb h20зL(ys׼U8~u`{A[NP %HSjAyJ6R=4p1ΨViC8APg5p L`bp w ]. Fw} A. $ h;wz8~P 3*OCGP֠(a5+yK Ch%>g08ڶ>q+MJ 1@F pP eA,ɍ kbC/P@XX@8P@0\nBk%@&XP"5R@c F#ZlW^%˜3y8cSiγdb6 LAgLAqJ7ӛze궮^0+)p]nl1ku+> uX5)X (,@VI<bm- ^o涷-nw{ 8(" L&w Hn΁<|<`+Sh"Rd#Ł;,k]ތ mLߎ lS 3H%J!5)#XW'N(ѝ"("CāS# 6H2|4iحf7?.:խ㔂 5΂:[k@]rg%ph@ aSA p7H8 Y\>e#Hx:GC:ߝX# A}) n(iUiPEw0ub7kȑb c="} A )7O~ d~Y;$jOUf"etGgtm P}`|2%~N U]G&$8pV*8|vYBdDOP, ,p{Eϓxvx+؂/2(~S rUQ;NXEF*6dĄ8GRHal'N <<۳)TegQ ,Q25H5u+L0j$P5 m: &pAd1\z>|> CH{1kG9ѕ9:Է)Qrg kgJ`{tb;d>>T*/ ]lp<˺"{#RER ,l@ QgQ ¸c3Ƽ ;!4[K빍+2U#R,6K: 5{6<<\۵OO+[l蛽2L.4󺰒r_{d-K\>sA{IbÅt;p[|{[<+YO[Y({@ mSHۘ-(0B]UERMk\Edq|B -vM! Lm\̼uBn&D %][qҊ͒c@o3]0{ӌ v"A?,Ƿ>) S|`ng@g', Q;=m;+;PmȦa=6f֨i|o|> -m=00l0}Em{բ8|s;=0: ٷ֣]ۉEڬ-VURx(pեSAD-*5 [7P}d S01wm+iBsLםXpQ]v]]N&u ߶,MUlQqGSPS `ipwahFMmCMH#.XN .ؚ[3!ݶ%k9[ :߬rP-lnIrQV eE~&J.MX* UWrZ8Ů (c.,ϕgjXp*W S@kP1Љdx.7|^3v~NˌZVXd葮rO>D( ݤCϏ#l3OGB׊3 ?b@d~ 1 gX>węNjѾє܀ޮrdNAk#v>B~%^8an4Ձ|yMKcg.&/#GJ쿘A@k 8*/`\.xHώ+=/#%vA,iV>s4`gǶؗ >7o;;̸nQXf] e'a@^, `N4}䀞U'XU ]Pg gN!%7oxY-79?C*퓟/*ܠx.O_7/-@< O q h|o$O*{ࢋ*O^c80XV`.4M/ "J5]`a+ ) H:#R+S+21 YI)U$@%1eάRf t\ю_ ZtI`ZSQ$hB!JFA**Yi_œfU:v TѢJ6u UjTP:H kX6 6GflY(Ӯ|*q dhPy.e >11ōGvL0d2M55$4>Q-/ S_쓸K[- rV)8F,/O|?ə[5E$D_UDLU56PA=۔Y>/QS6Im}ֶ6ͱYg{^LWOa㓯UW_OVZ :zUKTh]"0[K]-TGpDF<_a+nuMD7i7Ru!D_4/|7Sy;M8KmxTJ%ڜ۹m`Vcދa|E⒛vUVgP?ܑe5ݟ]/eYښiu4ky&:)EZ0e].k.o<Ŧ-n)mpC'Y%O:nu]oIri+]-N{g#p3=Cg^S/|wb{X[Wqt2U*~S 'Yt<9):&xEg D>eXA\BP3a mxCP; ')#ZC$&QKD"{VLjLbC'Ñ6W$cDQ`3%4atPhHsxG<6@{c G@$d!PD&R`d# DR\ ,yIL@ԅ@~_B.&A:Q}de ]YCR#mIIJfRܤ((DGҔ<*>R,$-iKGr$/u˴D_PA1vTO&e9;YiʶfioRs̫^W@F nZ}$WJS^Jf]_W׹ll6Rj%bvU_d]0 ZO,Uk_"8vs+ضDDZwЍ2"71oe>>I[ _vDn%{X\c\ԢͰ ]1:Œl` D-@\9}1B9m0E3 \h]r3^6iklcHK..igAt\_Nand;Mta]Fsa_t:kl;Zyh0XІl3ҞiiJ~B겚Zfj涚%l5:׻.u "!4C+ْľNrc&85`nkgAlZ⠖$7yQsSSO-Nn,hR4x npp0z?m`;#΍6@@3$qP;a8o.$}zt:ԥNuc]> hC%vO]r;L,+k)a cկ|j#e_{2W,?^1)>9ˍԯ=Wc::+ h6~/ o t ƒU73˂"k?6( Z(J{F`OgF@DNZQ74h)$+ k9_8<6Hll5 @ @ @|CC?O(@dA6 :J,A5F6J|N<XY5N\U] &UP( V#bT4UĭO4IHJd%Zn4o 0SS}R(#XJ Ƨ?5Q SݣN ?I ?EXHX\$Or VbX>zKs7?jÌ$XA M44h|Pٕ]p2Ճل5N9=*"X@ўu5?$g ) U6UML?xZZ ׾+WZ>ZX 4{6D IFi@e@d4 Z#?Y4'b$mYM(-]<]@R0,K3MeQ =4ۭK]]]mĬ?CLpU5N2ӣ]DU+m.8$݄TXV:_U_RYZD;u4>2@B^^rD&.MU91 16LX]/b&4K!5*_5CaRߕ_aK#^/~a(=!^_}&v=<п]M&3+>braaZ/3@(V'_Jb4`nb )" 4`F(fƒhPB-b; ~`E^d\2c@cٵ~c8u`!S<0NPv_icXnb!>d7vb)BPP<=fkfk=qSgr.gs>gt>9Xgvngw~gvygzTA*R ldΜbTHgNqgnz~hzNs9`)aVh6iwhւ-(ec- (li&gi98iF~Dffi>Hl8%VKn؁~ҚFVn^uk-nl܆.H-j ꤎ乘P>I`F%ll6.mFmn^(:>QP !8qh'6enO/GqVk> r!0v:o;'prvn)gvq&qqq5Arp$5&v.k97q:n;mn>_E.0'tCGtE$htIj=< _dn9L)_;o/tS?2r50bY'%q^Xn&_ 'v<,r?_@oRshOtEj(:8Y^$'v();/<=m^w@r0B'sy@H{w}eHo(>mpGdqQoxWp?BHOxx.yvs?Ėq.t0BWt8y[") @ОwA/Oq?y7wndtuzf?h@hG5o(gK/xMOgd{vxgsDx!|6P8M|ywGu-&|"xwWq.pzeاx|!qz' eߏ^jntwwr'ux$h[ 0).((G AZ!mbF8ARc}F䠔VkR2!`K:INBUt(R2`@injHREP`u@6"T!D[*^̸#Ȑ$Dp`ΌI3g/*WG |Zʴ)Ԩj5k2l0Dd1gǏuBimA+9 'DK]>൉A-k6)ԩU-c6yװ&B4Gi[{vm=[rMAg;W.l'`HD 8XHH̘C6Wu 5Nz[ 5dlaR6-|'E0My8)`< N,:w"`FPЂ%p|`(C 8qRΈ܈s2Ç)N\pg:X_MEja ZB#E}nXBhE/QٌQX#bNvkiSt!3ըHR>"4ʪݞH2i4r M` x0 .hU+d"A,S@߰h)WVf Qo~3m X@'&D<+0ʱ AaN la(%P|cİFC&!d7]0lHq7{)}^J"YkgZKp$L-jк*aׅbՔR,}8t90'``+J:p aXr%1aKt} q0r Rذeb=>:80'1Y})c 0^Wt#((19D"+cUyfSmt`vg@O18@s !\cPgn} ,!lP/%ՍV.ŊQ> L;3D}O.:Z`-N siօ$6},[Ye|NV $m&N\ od17n[-:]2ReTp,(7qp; {c-Z#E oGM mz *MK[n!a&x#yqaASB GɑBHwo]/h(7Wxk* foBۿ"$vžku8) Cn9p=hjؽ'/x+7B?D*m*Dž jazԫ^⬇ao>=p-ަD;N8 d?rS|B\x~X @ŸAxq1ל)6PCA]HaY]TXVdM@ L@@ CA\8D5]77" j+|HBU@ ,A QYXD=@)<` Z d=F)Bx5F!_۴ $ $=}ޮPF@ޡ!EO L P^! YܟT|BS.`E\b&nu"|b +T0C)F B","@V!"PqMECg@:/]v0/8E-@:XBN-07j-[ CI"\ai!q0bJIT B>n0 3dAdB>Y)@C 7[FFvmA-!b"*I刌/2 KJXLfed?CdmO[PP% %|kH!TVaL%bb=VYK*x9 Y6#DV ?75S D3^[_#:ԅչ UlC@A-ĦDp^Á\w |CЩ9Lk|$9!c*}۠TbFFT\ pJ٭Ȯ'. hBi uZg__"U⅜xyRJ牨'/d".9Xl} ~F/ZtF f!Va@/* t,. =Lh"T(|i(ns^Xt(^k&`fflah; WyʉdPC8ʌL'hIhg$ީwr!"(#V\ ))#H@yʚG'ŀJN*(ix)GIfX|^hDn雦hiODF.M*M ꬝K>HP9biĖbjmꮦO"LܩLtkF2h'l 6ʾpAҩ~+ $Vkm mE k`+ƞƂ):ɜ\ +p@Ŋia|=$Ȫ-,lFlҬ"F /[lnf..k9n*mꞪ+,p.꓌ȫɚ*ʈmk@Z*&ܮ欭 .mJg&ުdnnb@afHRnl,FXC!n\۞,Ưn/n$2z>,Z/.0BAدž.r tn0)k 1qmp}.S\GoS11q՘v4oW8 "9쎲s<ӊq=p 2/"?_-߲p.#50w0%"s2q@$ĴL˴dB8N4.[}X04Wd+D83jKˀoJBnVCnDKtе?GTSuN(V?@2W܉%3u7LS[ GۈLe_6f[6l6gw6ghhh i6jiat&$v(L3OO-dg6okg6p jwqBkT'U6Vqp1@o6ppwwh7xv!1,74[5Aq:5Tvvcv{w{wxw! 7b'bC]c{{ |/87?8GO8$4y״l6F{cAS8xxT6zWڶt׸xЁ'y'. ҇'&ܸ/yx8a[x\r$l9w977yϴly߹9@99[x`9빗9 :N\߹;zCS:[K9USyoY{zS:/wS ,_9@z?wm3::\3{5x(bXӺpß7@G4:;{LzN;;s<O>~w臾9_5=77,>>C>oDR$l\т I&fV5$4cz6aч!E)T#^5kW $6e5vm[o73Ʌb SoW!᧬aшRS\BŏY 97ʖ/o\s`~4Mh=4nԹug6n߻{&<Ck|\*#CO}%gt [ ɗ?^=ҳ'+m>Z[p撍O  4P4C;* 1'EN063Ec/т-4O&+G uG2M5 I\ö@̈#P&Lń$SHl`G& *ΤdH$O\JRDzL5ݔN=LM8&RM==VǜΑ4Zm[u-UV}LhݕOY(M{A Ux^c6֑~\CVX[g=b-|oa[H&\fe9f lw Lv/袍.䤕vc_rڂyy>l{9a}ꕥv꙱ZY&[x. 4Heۖan[ƹEyJm /\z[n|}r-s=uֺs׏=v ݘM!og7?w瑆U~ʳ}{޻~h~t#0~}o|ǾOzӫRW> }\;\Zg5N|hW?̥ @' x&赯N8-y`aE8B%PA'PD#IT'>N;CHYE HK4N "F6VS#XG;f$(Xn 8( cwTdG>1vX#!)DCBp\&FG A;ZPJST*Yx,Yԥ+aK_ qp .YL]Øɔe0 e>Ȅ4M QNi6Mo~\A"!NsܜG Nw< vG>N{n79PTB0eC%ZQB F[Q~hHIzёhJYЕ1IeZӆ>Ԧ9eKuӎԧA)NZT5@ENTNOiT*ӦVWVWCUԫ_-V RUaE+Gպ֍խk\VJԮwU^I:Wh^{MVElN=<d)[Y^fNvYfڋ*ִ1 XZ׾li[[&F`EFj72Ur\>ѕs[‚jW]~i4U_˚]|[vՈ~_n/V  e=r `j0Jua!I\b&^CJܑ!1i|b釉o\c3a7IV&d'?Y\e+ Ye$\aü 3f 7͡܈\z@Me?{́s 7 Ή.Glq:+y2)=?_Z˂tӜhOyDn)܀Fq N5XjoQ]2*)q`]}[i# 

k Ks:}9p#w{Qw6̫np+<9F~ qb8Y+/R:r~s^|,o>{\oz_>c z9&|Ǐn|Y? _81Ow5 q$7tȻT<= ׁ.xSf=~{_opBN/np*N4.X.x8TmoO.2@`N!"pXdo6l0?/O O/ gopvp {PUP^ j / q&O'M pP(0 51ePz UdMU P ! ^`AfN p[ y1XE b1RP=00I#8 Qm YET 1PկzoXPx@R Y /1\ R 0XRW0"%ڮ1#?a$N ;$Q{T%]&eiR5RxPbMq !0Rdr&"u2/x %1QAp`5 I ZeLRg T{JA r`` @IAHA2!ற r昰 M//ol 01f2IH2)235:3!`.k*0+Pd!b69f1uF @ UR@ A vM @ 81 n9s"Q.# /n#p XP0XA"@4z X<lf%Y-Ih 0!@ \` RppR Ҁ p bE@< S;X4A_*A[AB)B1TC94<@TDGDMEUt <^4FgFo4G` j:s5T²I1TB0Bm-T H )lpt” J^` .ԔM? 4O5R`$T"d!*ObT`U!DX@3Xgbaظ΀X  X@Gq`4LUU`ݤFPWuW[WUXX!Yw Z@ZU[[U\2 MSN5YX^^S@"`%U:pZ&;`BIH p-c!&ŀ *`) b@يvT#vb'bUuX۵cnP(1R-J11p !@m J!΀^ @m AP]ˍ]']W## khkk]2lrllvmca mvnn6 ho *nN36vj# qQ#UV,cFer-{U"!@WmS6Rt naTIi)@V܏.@Af@n$Mr%}o0#Nn` vtR@n3Ѡ]H]5w|mOQA^q w7b~1Wm׀y7XmIM .'ox@**a+vm(w;@e1w}_@ p >9wb!V@zzt m*5VuWq 2ag0A `Rg@5X2` `o1 Ё[-׸YF‚#; y m_ؒ ІُN]d Q4@IxH6UfT ghx.ᑷ)8 xo6 n{8S#$S@ @C`Y6fLzwKF %!#nKz R/ pn)ـX0Y&ru1`i+jS@o"zE6,: 0=EڝGq"ն҂!. dAYufX8 :R7VMtZ.L1]10#(8d H;@BC1A oa"J`ŔWذ3WD& pp%`!΍Z;S & *3[ 8?;G׌3R{V{ ҀH4rZg{mncۍ# Nts RRR HN w!H84`ۯZrH5pE)(O nÀ/6hŹnhRAdAz;VR rB|!(X=`ah2ϱ~ v< Ϥȩ![$H-۰6QR\:Z~qɡ< [ Pټ:.ι!p0Qha1SN[ί\Rܰ; /R F}R`!ԉ '0͜(\Qߑ݋a΃)}QmA+ٓ]١R]է) k9} 2ˡ(aΩ ݁: c٥n9M'n Xࣼ[i1"9{aN}A=/;~^]=ԟ2"25l 7U$}= G]-pG;pीۑ r>S~Y5$[淞۵SP@˭@,se~N2ѝWwx_}۰!~>کIǜ R_W@\Agke!w__|`FZ?__]y_?Aa B@#,h$… 6 X$c;z2ȑ$K<2ʕ!9tHL4CG/Ν<{ 瓠D=4ҥ;2} 'TV2z$ذ ʚ6l!}+"n t7o^|;A<~'Z<Ō;~l%LhD͜;{ :Vn:Z3p˅_9iу;nFm"Dȍp/Z8&GFC>xǒcRY)ۻ_蓬\Uvmkva[mo wCq%\sEtTu vMx~JGd/M6 b.cSV_W%WzGm[ 1p r\ tYga8ȠVtHfq 8`"Ld (1Igv&U/G~;Bk?E% QN^YapF^nڡH+y fJH8pcBj:'I&wފk1|&akw j xho)$1TB(!ZDid *7>2[*!^G+1H3co6އc~;*(^~D鬒2*-> n(mV &Ǜ^nˤ{Lo; +BuSAxƳISg2("|@.k(H&:qN6(UNr@nwFævz/4x:ϲK T80u,NxPUHy H5DhP <5UxYǶu]{ 6 V|g=&ݺQy|8딃;%>ݣN#C@}Ľ:5q}s#ML9 f>sf!.pGjhsFvuhjíӔwNuRɝ28ʢ')0>qO`b>זbGK$JI̢M(وIZI )I.PM0J$ = @2|r0&b{3lB)ʃB45)jI꽏'ֱt`4P:Jko%֕"ūqãW4SG+bІ3"&^ׅԉ)f¡x[3 WAһ; BI-@3&x:W_k\&LkfmoFkԪV \5( pq ban_k'mU'8jb"@ *v'C+i K|b=kzOkm Љ?3tM2[Szt!=JZ$t3J9\G%` CpLzphK;ֳvGj T6Q\K_߲ݗ }_:n]t i˛֮6a2}x{VePV.&5(SCkDZX%FAӮKRkKLu n.ziIlbnk#8 )q757o5]@嫣˟%HT:m~8g| x9_]0y2ӟ.tzAucǪW_ZKb[7=|̻ݍ:Q4>1ԫ~o_~o:6ܟ@ _=w+̇ K_]CC_'/`_o*?vXvpk ~h}~ x~~'(X0! Hhg  %18}.P}7R'z'1a66A(@EHIKȄOȄL@UhW[_0__.HeH11t o T sX3=@(AhFJȄNQ8UHY[]ahi4?Pqq8r8qw y{ȇ}OP(Hxh5h΄wvx(GHOX腰؈Ȇʵ؋X8RhǘϘptWQ5በȍȊZHXx79莼xXȊ菰X3艟{X ɅHوX>Ȑ" x*yq)ט 6)h&y>y6b.9X JM;ɓ討VIDّy4ٕ68dTɑ\IJy$YaP8i~ٖn^I`9OYv)f/yY)Y!IL)y@.e Ii ɛi )IÉljɩɜmyIeЛyũY߉I穛ܩ ɜ隻?@iɟ mj ֠  zw;PKˑ/l2d-dPK.DOEBPS/img/cohcw_dt_002.gifk`GIF89aٳgugxz{|MVMҽ޽ wx,-.Ƿ@@@Z\\򊘊紾ZdZڵKLMΧɧdhl߿tztuy|393ܺbgk==>$)$jkl:<=pqpȪ8:=7C7]_`\biVY\bhbQ[Q9<9rw{YlYn{CLC,6,69<||nt{ռLVV۷𥩫GIK炍ooPQP```344INRRW[έ7;7WcW/4:$).05:9>Aۿaku,H`u&*\ȰÇ#JHCC YȱǏeIɒ" >8ɲKcʜIs8sɳgOo@ JH*=ӧPbJժ Dϯ`}[tYQF֪*&v K.ٻ@U˷iۿ%8I_{/_=МL9 2kh$MڀAR+Y}uk c Pqߡw4oAxȓq9СNݒ%(ءPo@ysgΟw&]AV+q:6El΍bwo޿7\qur5sс@]uew 6x䕧y&{ jg}űnpōP*`>(BNhH` 4ha}''b~Ѣoo42cvhHYenaJ瞓%唶4>s8iM]Ay$ ("Aiߔ*yeZhؠ<&:!F$pg+)/hܧy)j: $dF^IbiV򉫟k )]fA:k~yVim(c-* ޅY:_Fbkﶂm ;,Шhke*/n q[9lC+TV-{-W㖫@(([fvl9 ʮW0j")-mp`#gvn]շ hD ʌS->'v8vJ_6yfO[S})܈[*ݣOgqݑhwǞpյ՞uw;Ffov沓<@m\ ~?f|,͕w26rQ*jЌ$Q#BODk01AJ`şXj9Ul%[*'F X<CMb PќAVe1S&s (˩<!irF15e-^[˞XdxT\?Cr:đ.rk]b(a }DjRͅU`L,|pA  6X^3q/(!0~RA2PXܨqZ8ZL h+@TCpţٌ tp3UB.*̍\`2Š[\X41u 7ǢENL 7PJfr F 6|AP-s^L7<2XM/?f7Ùrnq7#~æ}pB )NZ (2pP `v4E iP}D&|03op6!A1@#n3TSZñup\`56 f^) /Xbf`,icA6 _``F`-CT*f?pc  09ۛ{;7G Pez.r[ Bt.@#xa:N~X*Ojj Mk<.W@0\~l2+1Ȝ6ugA?Џ`h-4'KaO&TUi^M^vW4koۋwvqx3p3#e  E)@P n`|IyhMF| lDbC p cdɠ&0}ڭzֻ^io{=HRxN pp@S FWr 44@rMMed0oy@ lPZ0R5Հ >HVG0ul0 $,VAm!>D fm@fMM! :UdRs78#X'wՂ/3X6E<<l y8!Ry҄O4dys]8_(wUg&'ksd_i0 PAHRZ  ?dwXyl|!,(DD mtTSЁ:3@~& w؉C8@ W S>u8xM6E_ d0-rEMٔs5w s0 ikLGep9|{ ptEX`Gh I7蘎P}$H蕅ȅ#7rc؏i y4Xu0{` {h4‘Hb 9#y$j'3*9 ,~MH h#@ PY: vBI.sηPaxa; h^r~_ ~ťS͘%aYdi N8+l5(`h0h  Pmc '@SJdrߔ >(i #XRl@  Sfcpf  vvUm$%钀 Xch`ќϙo@ yEyAVI!7yYcX ZЕ_ 9WPى˰ G? $!4tX}!uqAe7b@Mi(Ȣd0*T37tq7dh p 5 xXafd p^E dsChc`4d R{GT6kpU/zϱ `N eyAeTL[Xb_@Xd(hOAPF& *Ǩjd *ةU^rwb2mB}}e֫6jeztbpc>GnA 50Rd 0`t%KJR@|-ő>UHhcd𤹩 _0cD({ʘʥg[kN 6R'HppHHa IJ@d@0 cp0E`FcqP l)oFd0 a 0(`WQ y@ R!W@c T;ֶ`Vt@Dc~ t0g imKo;orK2bxŷvPJqpKaKfK+F'J{; ~dP )tVI r ,:=0!!dmT`' hn'` dثսxk{+ 4 @L |B4$B3DC=##zuw$HA$mL$@47::>6|:B4|$iŚ'Y\>[-+^l+E`rzAtp<_ah>3P$?] `_l:qRA +i<-C2lLr,5;!3DD2s21,A_MCOl$!A,CjFHFʡN\I:=2d0%E_ŗ n?`8ڻ]P=]} n>~n"pi N~.~!$>& (y=9!0>]}:nƍ#ٽ4<90 -MmY%~?=9.f~hjSp~rtN&n =,.PNm臞^' ! >kn.S=n>牮nx>璾ܔ^L>N~~(BB$|^~~"x@ꦮGKRnn.^.a¾5^n~~ wD1߭ ;~6>n hN!n%~,.T"5_@.M?.2_N0ɮN%'[6A/f_n8שl?@T?ngjȒ_t~6+/n.1O^69*O.┯夯 wȲ}^p/O_E P93/wdenb?ob9?/O7䛿 A ,d %JƢG!Ez yD1e& ln"O *P 20R/ ::*\L T0iܙs'PB0TR<*jիl& bPy6˵loj Ośw/Q 6 ,0c豸G`,s'ʖ/{tsw4O_8%KdڶorPݼ cċdp@Ǒ''u}v,.l;  0=cD>/S @LAH0<|$©{> 7|ÎVk rcDUIE΂+˒~LH 6&r:ʨ62BJ 6Haj(dO-@i/r j@NJ4DM6ތs:[lA=PRP1?mG#M. yȿ,Rl z-ب&#] U_ # u9hOx1| 6H4cE`:{QP|r ?B UQ/ph\ ==/ܲ/3I`vS$2 H); n*j@=%T!od!=9ӱR 6 yON[~Ngw֣W0 ER|p褗F*u`Q-# 4"nXvfkdR納b8ᖛe/^{Gv{dm1`fp q|(np2`;8B#B)@ $o YatI4uXc; {/雵Ɉ {o@== ykP(HBtLiH07S;_׾/lCH=A*x,%&P-BgOKu>0BzHajdh!yHhJd`i$`sk1j8AJ1zre+@"Nbs{ (<&>dF Id&A 7IL baBh8mCPkbX'JFt$$7fA$O&7IN:{t-ܛSK pK2޲' P(NqM$'1Ş 93qDԁiV2e6<53hZ`P M: doCdƾCnSpYLfGDwI>]Kc\ڼQixP24rbIbqԣ iOFڬj_ǛVRO7Fsbu.uYS̎lik4;4 mrʶ!DEgV #TW+JJ x@Qmo ͭ8Qn d 7=ֻo[,ڠbg#Ԍm`?pqJ0<="TF4= gåH>L]ծ9k[R ؐ;PL 'RD6a=( *|wD!~ӯf7U,Le24yt W18˙!FAվi7$BY[H`C'F "LX@̑ez+@EӛCF9dim{' ao#D>x2f8{֊[8ϸA6q{u5FFm5{'8^7pLủvn|S<>zЅn<ᖢ9 NK'R_t?ǹ'yN.},oy~pK4Wvcky7;NtH4}'?Ŋ`FƫiWG_;ꎿn sgϯ?(@->>:!IRs;>/)#thy#^Ae=.3OAS8?@l? A T+0"|@d+e<d (*Ƀ3I !7C9C9TDSPLqI8ey0pP'H %QEE<,ORQQ]Pq:O45O˟ZOڎ?A'+-ړmRbSUZeZA%TXWҋT0XYYhZ*ʂ%\r5QMdܧǕȵyN0YY Z8zIMZUX]ֶڈV3ү} #}85[ UsQ-ޗ]]Dž\X]qP;[۾-pM=JQ=vmݙeYḦ́O[Ů酥 pӣM)uY}XDh%Uڄ]] a }µ^=Ն-UV`m^qVZo==mYT_Eٕ(9} `ѕMҍE])^Q~ۙ]^m^5؄\m<{`b=(_`6ntWm-!AX@A aEZF%,%,0^Fo.%_M?]ԝaQ6_GKX-n.F/b2(!@bH BNTIXFUheF\KV(@!`hLV=kfvVnN[`+~TGFdt.Xv~wg4>{!@d8瀮YyтT<@gg܀X\w^bIbz۬hhMd>S/ G`e-E0G؀@f%vhXH3XiVٴMX08 (gqFZ!=9e}@`i3X0ߚllnV 06mNN-a~/Fg`j@f@IhnBX PYZb0^ E`Vr!P6 hhiehH>?p=^Ƴn؀vg3\XHnL!X!o.UhVovoD @> P% l[pĞG^]]tp `BhXMZrXL( Ѕ?q-UqwqV(h0퐶'b'ٖāhxmzZ@Tr&_ZZ(* (-}!h>h0sFfFs]EnjxjߍX3pjHXhphB3k!,!!shWZXpWUh8Hvvpyp 8@Opq%H3HH"wghp%uZǂsPe,Hddw veNjvlN3/nGG/ lugwnwky׀ 09,H3`|GX)FTUxdGxZSA vq xŎxom?h7wg.p;w\ufyO@y*eyNVsr`b5b/xyox t?pM_^n8p.Vu9.u!pWO)pB^HVIpT%NVЅ h %y5wm8|>Pmgnvsn 'Ljui9@.9`ow,0\`|)Tr6@ IU8Ap}'A z}}rw_b 8 9,T8kH-,fp"+Z-ʒE f[¨VZjˑm[ sF6BAa( o&0eJZ 2᫝QΌf9S0 >.f#3VZ פIt!CF04ur%CBzJТG.MZEQXhCVx:!VY#Ǒ9(n qŁ$,S8GrA6KQ p &C;/YOQh+g +6'5f_Ydl$XQ QS 9`$lEL[YJ0{nyg޺4YHVZ  pqBLa!-9 ^åkqe~Ji@rS+_RK VaI6X%0ԐZf0z! C;P]8PҗfC(DV*[쵪-x"Pz묝wjjl9,PN ѬH4@…B|B *HtK p9HH!iPN {n)a̮z߀Z̶l`pQPD4#\p! Q4p)&!Xrzv5eGySw/F}ZR,?~r.q+E$D@/8¼o  JZ5[-" ~ςF d>m+]1(!EwDc-ՙ@}BR.b Ui1)\C8Q`4yF]W*>J<ӛ @ȢsBD$`89ʑs" *ڠ0\@K8dp DЀC+nbQ0?q%03! _Ys BqeI6|6OyltE t1b$Ydg`1 )3y0-NT%%V\@ZEpD'$\ .w͓D&6O'YH CEјA RP^X*\!ñxQ$c( ~jS@'2+r[n ;4sp#Vg@,X Q;bAE$iB GQ4e g׻UҤ 1d̬xPgA1gbY]ꀼj +ؿBI( tц†Kc vHlfQ=C|9mjZe`ÀN$¶Fj[W5.r\YV}th]욭)) [~0  JBkzכ7B+$ 9P)NA?&{/.U<&*X H=.HX, {]qK\$D< Vvx[<^q+6f,)ʄ0-WH9JNFMBiI^ =]2f[ꚹٕٚ9Қv,p^"{E!) r D/63JѦR*}kd;sz]&B? ʓ2ѣUrZ}uq>ǯi SK_ȳugFy؀.(߰^nLA9=/n&J/ZIo@Hom#92*w!D솿0!_U]}IeQ ˑE̵) I ^V),Fm.Aޑ!la:a|a2TZ`U^)Q\ ٟ >hQaa[M1(_0}YС%UPbYd @%8@6_- a_.,Ѡ-`>M%~ a%aj a>F ].b0 b`" q":!91H bb&aȍ!'6d VW7b^ $n0C3 J#< !"!AViU> *j22vd4B2$/jY&Ѓ$b~t0F!GRqH:HvBI]Cb%A"*b7~c8aiA8$,d:BO bq0aRaLNE? +<,dIb.jcQ e)v#EVdh 8JEn@%0 t9ֱ߹e\]@ @TeVf|Lcĉ#`rZaN^E1bbȣj \eA>*"+GQ&f Z'؁#eWS`nGF%:J#' %Il:g"^2E_38@~~֜-ʔ3f隮$DAh:' ffX&&'~'"(*t-t."nnn+0}gz臆*͑((ҙ 4(&X>"P'S3A8l((~Wi^ډ"8z!{'j<uյ1?z4)*.yB #gYML(T)fn(h(hF3p*j:KBtڀ"*XY*V,sƩ^'lnDN"^+ZXv~:e+z6@f aLNN6:+kfk+kmk>!ikjΫ+Ē++jjViRkfF,,.\챶g=A:"l†촎\+kf*+,<*`BbdZТ+~:m,"V:)fm5B:ׂmقkںi֢+V$jm,~-@ٚmZ)mт*:-^7`k:V-].8vB+ݎ쾆f l^.⩂.)L-֮el-*).,oJmV6.nbkLޮւzop/@ƭf+o/fҠ('-/rn.pomNm/of+|0c- oǶ0Zo>0 .֯nW7>FpM>_pCp~1so1 ֯^1ΰV,0&q1f@{q *"0׬_ 1.Dc1Mp%1"{ 7Aa* +2x0-sLo2\&3-_-2+@%qZ?sF.7H(.(")O3*2V#Ԛq:sfFr.C 3s/˳W5B2)k.[@3A% ,A53C;CG2De7/&3qF#,F/>+;쬠2<{^=-3"P?H@ttO TQ Io,SkTKPSt3t&kV4vXs. p Z5[guQY{oR/^^5[wW5U Q6EkJ5_wucOuƒY,"ob/[5XH p608$'5XÂ?8GOBgqs6KxS8'ucvsv#88GÉ׸'x8gp6589xBR k@TyӀl9wy|9A,yA9#99v$4QmK9kXyd9w9+Gy/:˹ 5?v$p8{M9Ukys |93_9#zǬ kw:3z+Mp#P:eɔyg$z/:::3zc:?K;z_gK:[r::z󺺷9;{#z{˹S ,szO;;Goy+ ::[C;˻[<<+̣OL|+3wC}k{{Kԓͣ=;w|,<ȇ<;y|==}ٳN`_|}}¿zc<}G;>Cܧzݗk~{þ>[<BPCJLZzQu\F+ wHzHӀL&dHt*ƃ,ܒ.L.`284\6ݴ5K9Ӄ0ܳ2$@4zԜъ83O> O3 R7+ +TXDRTUFq d堄Z{U|`H 8ր PBZ (8P 7:7ta Dx א**SP?``)SU]Wcn͕^ vbMvfvjE!m6\r=7uE`xאL)F> _Mx'XUXgV\uW`-XdeZkݖ7A\rEW]D:eYvYӿ8Eb}TTs޹eMxw-b'^b1z㎵ݺd,i7鵗ߛn[>Zb+n錥jC֚䮿F^y%["wmY}F8h~tbbhM#QώC8[` 9<&k(`XVQTu|Wc5ɼڲ.pAEŔ $V~ђ[,$^LLU?R rdS=Iq3!&9M>~t.w_n7ps)\^rEOn|5x*j/.cB0ftҽ,'EΚN*hG"9 jbXC bAU&Pɇ&m > Tn:PogBJWzkJ )+js5ѩA%ۯ#&8Y ⠫=!AG$ 5CNe]: 'XՁ\zYX~ r\tJWЊ\Ȣb0K] Xv!W5LKDu,ds]'hz޽6gEX!kk]Y;yJQ[L(ր Ё+A8B'\(+s WLK1Ab15F@@ i2 Ԋ/NUg\c'̸Ž{ GNdeIʃr*pAp` R (ڜH('\a³ M84A,L_a!u:aq*hGbJ(0 n 1]&W+K Rwu9 f` A+4! v7ÄfVg#8S\ FRP#k{;z&4!+ff oy5wop0T$| x_1 pcd8iJnP5s%Az Mz `w\: t_* `ًs D 7!#8zҗ5kmz L/\ 6W"D`>@$_` Uqe[w+^qQs6nWq`F,.us=XGҟ>>XZw~}P CtF=U=|.>PX? k^ @B` |Ta R`/ҏ2J,i­$OAp@Kj|ɒTa{_p@cr L .F kk /gxw&4a 4az놿flsp( _a0 ! *4A?3@ @HA4A!B` Z,CEC9tϢg6GD/r ~´E5E%bWbWb@!fx|@L nHg^EVEp]PSF]9![PsVfHG\z]A A^q([]"u\YKLVZZz*U뛐(.R_е6Z?5#JtVofcuh fa!^ѵoNe!b*c[Y_c?)Bv^WU k(\qĺc5U 4v\l6&`JVUg h6 V\bvi ]/oKJi_t[Ɩll슈p{6b%[b)5qek]o@o'|l_Pr!vmF_Fk'eC7|,wWp*wgv[bRVU\e @WtɅtKw) `ujzW_VsF.@tww{jFVQXVs)_U~v_y?|զw!uIV[uUs {iw~C7w`|"̷ioQuz xɌ48u\FaЃE]֠1zj3օc LEz5h mVUb mY~Jy_Y5E^<tXT!؍X瘎؎X؏  Y ّ&+ْ' 2Y79'?'F !:8tSy!cYgkٖoݘ+Y?yG9  X[.A!99y @ f@ۀ'a@ YڹA%@@`~fY\f?r٠Zz1=9`999yY Y9癞ٞe@\@LוWڨZ۸} 9+ژYٙYٚYٛ9gՙ@AgQPA)] `[󸩟#Z:::ڬ:aZiZv`+An`^{۷{[6`۸[!1Z9:IڤZC 9_:K:s{9ߛc(:JA!A8iY['y{5 ;OzUz{ ›ٺm:9 !qۯѕcmݸ <{%!۹!ܪ7z=:G5׺ڭ;qR`+]iEAt|Ǒ |ȁj q`aX e!|y]#;!a1/\[˷ܻ={Q-~kߍp]\#>@]ٻX ``eqip^9ߡZ@  -^z BSX̄qQ,R:&IKԘT##%pZmy sL-<{ 4СD=4R<0z ɳTZ5֭\z +2dU@KT#p@l۪X,w"V̸j4U"G.\mZ ,[_S3Yx 'ع%.dѰK"R$d1L4vqFHKJLK1iyS˛?hS+PYaô۷վQ 29T[Uh{ VUr EW`La ."U% eaFjǴlFmvn!ąB9q]FyH$Yv,w/^xme^^{w_fi25Ȳ_0{tL5<vac@9hzɢ5 0ܵ:jl #aȱr 0ϜE/|08ck&[m:9C G\D\F=tm`;WmVz(, +.]/#{QunFtJkjƮk~LJr$s+Cפ%̶ljnvPaBvߍwz[jC]mHIV5m lJ/_W+my^-4#sw馟:XMkKDžk#+^ܯu`G>0,b|{|N}:gl>ո&7ѵ,6?$ߟOqboeo랎W%W]rŜDZ}و~ß?Ѕ O®M{\خ| ̝2Xb|py'BHxѨđhpW%3p(A0x>%q41E<&БMVV<  -f7`; }' 5Y3qTkBa1|!# /.:\8 "IVrՊc謐k{1d*sl3 hFҬ5lj7La8cJ(9ϩ]r[MtŨg1{s?O:t-AЄ*t @  Qf@E}t@ ҐTC1ыgG_Ё~t4M/8a4: 2tOAbLE*>aT}ڈF( NWZ=YִF`lފ4$`t׼u|N Pz -;ؤ*K}jZU^YjWUgM+ZۺַUu^Ots(Ea +&"uMucYbU,4KVhwҚ{Ujo%aK:,eyUVd5p ЊMsdb6jo1 vֳuhkչumuNon:Yr`%KU+/v?@ar/3`m=nr^W= cwͰeo<ްWd!p_d.5ްo,$. ]˙),ugfޖ4vf*ظWJd .Se>w5ȇ+ +dsxm4t 9z';jFZ>uS-hjՆri]Yb&5a_ê4j! ]f4c&S6P"}sg=,`7|ߛ7# <( W7 oe Kyf[{r| /dD|5Y끌כxC> OYtV$ +}LoӟK}PTw:'BXk}\Kix}d/;^7h}t}?a ~r '^= ;PKRCp`k`PK.DOEBPS/img/cohcw_dt_010.gifeSGIF89a!鲤ꓓ@@@iiic\U,-,vsҺbbb鬚߿ҙsdRx[޾ԹåVH;[[[ɭúܺlukɩǪxxxŲsڶЅʶ<<2fԾ۷ȾӢt¤my_UKڴʹ´ٴ~BHB}sQUQv˰kɺvǵQUENWNҾĺ߳ٳзÍsZòyvh͸˻´ɸ˴ƺkW^RRVHzz~rϫԱǫp~ͳ94+kTah_x˱·۽ڹxٷ}ݾϫIG@сZ]M=;5{˽}xqξͿl,!(0*\ȰÇ#6EŁ$jȱ+:0ӄ(SIp dȬ\ӧ1yJ*UP *ŠMAlh][p@Bx߿ V@pÈ(^ c" 05d5 [,ڳkٺm+n] /` F|x1cǍ#CdŮ5oL3 F-}]Xvvl h׶wnDJp0ڪI 7s&n<Km\ԫ[Ǟ];wA^4D 7{ƽh5'@}u]( x p=|u{%!}Aw߅a!d+&q)r-xxHסw;AFe Bg,At4_M[ Mp D b%!gZd 'A5`eZ|B81ڇf(m8@NleghI^Z2nQc% "AaDXr~y7z+!z*q 4DV<]$plEAl΂+dVBǭ=t-i:@j.Bel xPk hۂG$ՃXEU-h i -t*@ !SVP$@2q5ńPXsN qhPB"Lg6d1@ըz#/V@N(xa%L 9-=AQ9M8 αHH].6lI6 O5``5-_˸!FBȬܩɁ/ ThB(ЂT ׻^B 90k{0ӘciʮPիPpMp@!5Vk b+w cЃXl퉸۪ [ u p y  `4a-Z ٠* a>-^#ʬap`n&ypSy\~"xIzXժjX[k%{1)ѻ4^_?=Q5cA=Y[?uuf[V `Lci\tI=b̪կu =RdȊ Pl~!1|&wY^kgm "~RxWKӝn0X^YvK_h"/:Sz%T%OB{u?9Z1]y+m~bfYaHb> K?Eo[v>?wy'{g 0 ؀ h6Pxȁ]`]t@ @ { 8.؁026`h- ] Жn>r9t9vyx9+|ٗ?}03P @p#8It рϐ fyLk Iy}9+pi6Iy9Y^ l9vɗ9FxeAPș[/ R)"@y`iYs07  KpT@PYFyt/y"B h0m)w9k iYʹ Iة 9扞b I0 :@ ac6٠^9 ] LY?0yɹ/Yיٝ0yy( Ydz}U)pp'(i% BDZiÉ)Rڡ ɥ&ʞ\+ʢ9a }(&"2^9 {@y| ʤzڡV Y*\Z^a:Z``6nj9s: &p A{j :YJRTzz:d:T1ڇ*~'i0^YPSʡ:]꥔*k xѦZph9a` Ʃ R0jڨz@`8 Zد P۪:I ۤz>ۮ@0[ kx"[$Kp i{ٲڭ Kj8[ʫ"JJ*f;30HJaL; 1u;JFZ}K6۵9[!$ʮy+栶Zpukz+SJX_Z[lؑp'L8 +C};Z;iۼdj3miaq{ g+y벽뷴*\Uj+aʸ 6[%p8@iɽ0 A@-~`c@7 ?~۳ ̾zhJp[Aʻz /c<5 ܼ2kE̲ܷJ [ /`Ū=.@ _7?,xoˠu``i':c Ȓ:K/ yD|pA[ @R0̝P뫲 ̸  yڽT!-O@c',ʺ<` ˻<,XmFGIJj` *Fw Ј˻?Li+ܪ-cO@  *N0`02 i<5Я}>0--cp'M~04)}p,Ll=ݿǩ~@ _ .~ @c c~ akËvc g}<=|  ։-`) [J"`N \^8}B|k- Ƞ_ن[۩Ǎ:б-aJ۶%Pۙ荜mi~ 9 c"@ʌzm6Ь5@h DZ*c _ c 7lߊJͮ}Jг^_ Ի,€䝻 ާmݜO- AyMݞ^h 'N)NSVkݭ j_ -JP=L䘐P> SUX0>JO @@"r䳌 vn 箱; ̹_ @.0w@0pn&:Nq* NΝ- [n绳MΞZ@A5hANAN:. r[0 s8QV }೺[_ߏ Y *NJ ڻ]~3+ī??&?MװT^}~X/l [+X_J'o[` hɇK@PĚ Zk>O?wA yk 蜂J*2!E $TrI&'r(=J,rK.ǘ r<A{δ@AI:N*rO>t1a rQ@ecpN9EJ+I2&а,Au?`;8GL͸B&!C H@?*Њ Ģ% x`LIHFьL\qE-1z8F@PLj R4`HQz\@%xIdOU5c%kYʁ!lW 1Usk]zWU{]5p&u5^zX&V}&*XFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wlt @u fW1,` z`vEu^Wo}{_"2#P0Ao{`'X vzFXp-|a gXp3 KsX+fq]P /qmb u@XC&2b|"'Y*4bE|e u r`*G0Q~Ykf[~ 007y΅rmz&t }hD'ZыfthHGZғt-}iLgZӇ.UPZԣ&uMmu@ HpjXZֳ.5 J:dhE891&v pld'[f6lhGӦv!pmlg(S0}]K`f74[ vPm|g[v2, ?uĆl{K7}ZS$ >t{ o?{8/Z[hy%|.ON{h_ZԢz`k+P޹{s|.ˏtVBq:yЅ>yR9~}D/ܑ! H<>c탏PABhvC'+oZ8n/<׺ oms`p\D؇^x~zÛo(_U}ooV`Nh~ԟ?u䒯oV$B  a8 Mb)3=">is?[tӀ@ÿ5? \:K 2b1hVc8:(@s)g{1P9k9c@qA=+@##,{{)@10@CSAd ‡xh!(A2A)a(7@+h<6@ID90]? 6x")@7@ @\@[46|8CIC*<A$D0DDD28Dx07@!@ @h{6@Ѐ!@PL"YE5 )8`+`=4#`7BPD(@!28ElD-zP` @)gS:6h7@ )h7hDBx18% &l{} ȁ,ȃB+CHx$ikP@9@`IT11G` $t)ɟ J[Az$#|hE\h282h> 0Z !*D  D dZ6! ii+R$ I@ȁZxĥ\LG4@LdLDŽLbDhʹB@(!p7ЀeckpЌRks$M"΋G@:181~`!#8(ʥ0#8Md#4MԄh+Xˁ7 +N(#"PEP ELu`a %R*P 8J86Q<6!@H R%10їP2bI+hS XL!mȤA+A,́#(hdˁQ,Qh#K! :! PEOZ6bS7S59m`N? T'Kw;RlgSi$V) K!OU1h!LlCHShCy*)HJ(8(PTE1xg1T}6"xA=` KkP=Vkl m%P2V=RW2 WseZ4U+e6 1l@XI!5Tj =WTEAiE!'xb(8#PlV?; hMvH<C봟mTmgcEjl!hIZٜ7lIT8tmBٟٝ퀠Z@ \ \A@$<\SFeTzSMtg[Mjck+۳}V%<}Yc8US8?3#>/,5_Mƃ_٭߈<[$JM??]5⅀k`c _5> u> >^a>Lr! n ^b".b#>bف@Yb&Nka v$b.6b%~b1qb0ށzUGXiX1a )AhPi1AFBq\,s 6N $x`6~c8֝9c1Id)dC>䆩GvG.:4&kmA^e2!7(I10A f j`m;zahv]F>IeVAfYffv@fifjlfn ZN#zc^&vw~!fz 9fgflf6n6`fۍ`"eahueIe`牞W0zhhqf~jCζZF|8an@.D(".벦A@kXknkrK(KkkWff}X9rF`xjk6kVvk͆lkю]@꒮؁{U|h 9 (005m#(: ؋ހ ,:0/Hji.g@~mf2vvn覉)>Ӧ,X @|AH@oA 0 .%X88q*HAXq8s^fiQ5&amD H  pp񡈀L0qWF\Hh;p0&MJ`pDn ?nȋ '^?')?q8Hq*s i;7&$`;Ԑppps"7n#7 o%; )>s@q;H7017!{PyIWs _ !pNGrsPoq=/q>s@?vCD`Հ246v8?9grHQrfrT 0_ru~=o `/QnbXru QrRS+sijkv^ ]q_" t nx.xg>*0O!~!OyH?ȍ gv/f+߂XGtYx !⦍WPqzxvBmyY|מ3(P}P|Py P P?~~}P_wrw}?G,vj}dȄ8} )o z0lߋHȃ  ʮ4&d8g 1"#bӒ%pV¡ʠذΜ B)sLGJhEˌ+V#F)$H:ْ(Y #ŘOE`@Й1 |r}!tL_)`=K4 H8!eaO}hJ=bjvUZ^|I,-D$pw6NQ_ (a-t!T7aPDiJ8jV"z}cD›x B#:_#19dHJXmƝg7U]ebl[%bCB8E#ݑ'.wb yJn'!:+4z%ZΖ,g|!@ ċ<~cl ~h&gpa- ʤrxJb( Z"u_dfM")=١VYz5[|B'ㇽD'02t0 0 a*Ҷҧ^8(gaqWo Lr D"K1& \9 'ö8$OK2I&mTLa0FBO M##_!M#|*sAW(LtŧXe|\EXKwT8^[X+LBqC!SSڕn c<AՆ[m'ْʻsK- ~~(SvUֳҴ(h ll ˜"`QU[at7! na'H؀h0 4,{D'-sM#fEݲ̣K \5yv g9@=1b@D91p,]3Ǭh噹i~frFAhE:daRj4hx5aYӚ֗%n]įa.6e/s԰;W4?A6FMjpZխvZZ5 l`^ c<{:PC8d=_@ $l . шR85 \P#2*p HB^!WF0ܠf x s:9{ίXwKW6-M^p#\ w8%.x=򐋼8yWr39ss`m߁!`}/( K?xtG|3s_Gyr3?{v7t(1VM#8z~p?crɏ|us} hȆ /Sֿ>[?HAM\mn (=ӯ?iOo'M8  &  (@< 艞U`n v P`P   ֠  `  a &a  >!V!%@ F` ! ` ``N!@har a ޡn "!:!F!""!D>"$F$Rb%%`&^!#zb b (%"ntb $ʢ)"&b.""!##b'b$`,23#4"5z2^f#0nBJ.zZ ;H<ƣ<*=c=>#>n?c%c%(@2AB.$;qDM$MEZ L6TAX7~# P<=>c?#@$A$B$C.CFdDR$N^dM;P.X:v\C%l$Խ^]uˑ]Zf!8c؁C=*A~+;B %EY)ݞQ͙nqeW~%X%Ye0lC?TaP 5H %%]61eY]eT%ʉ`^=[aWe(&Y%c Gz"9H;X&^]rfg:SV_hU_۵mjfXb!T-4!>0 C7|g7Ђx'$yg8B/A1g1ħ|},'~'(`( ((Ƃ+,.X%l OuD+pgxxy$Ag{|h}g~~(&肺B>(;F.BQ^7<OQI7)X\ke@C,Y5Hamja5HC 0 iYE94iUPF)liHikr+uJNǒA9,&Tr\3DIګxŚTڌ,9eɞYhn8Brl.kZAW0XlՉrNBXb$dCJl QYzRڦږହ~A,DK ꄕmk[:PmbPmL Єu -hBؾtӪ\+c@. 4N@rĒNj{S}k *Vm4 X-7X"<?B ~Ј* ̄rJfo4$$CaG5/W¯ү6B8\//2pzMTݮjԊbIp}0!$?0[CZts8Hpo̎EhdD*-Cg xC`;4βz3mB8t@"L8t!臽X M LEh:Tٶ6M6OyX|  @dlwe[!av jfs71X/ɚB6J-}۷;[-Ws*rAxB?0*~)2 3Y4k^[M8Ḏ6BlqC7Xu*L5$M9sYT*AunJv15DI8 R8n5y_9 _rkcQd5T֒L"иT1nJAADEo-gTiS-[)mTeLQL=-57o?W0:ezTQW۷WUw';=Obl,!#y`TQ@^a}Vy,u;5S5t.CH:]UVXn0@y^W),By:B?(I F"pn9۷pI$v(UX#)l5t!)V؆69vYH#It*uw@L% g ɨT0$CvGRHq;t~jQVGUV+,6-s{W ;tLpp'rУ@AT)SPʡ*V]}UVlٳi׶\x] B3klSHOJj a2楚F \-k7mݾ" k0w6bƿ╍*gڴ> M2ͺZM\<#.@chlʀ2"@xi(IQ]|QeQUlmtqJ|Q R"Z 4!,"PEEҘ<|c@-XeVl\ ^}b=b1M]}5'ZUjo[lݖnlό#Yhq]k͖]_}^cɨ%&40PNEwZumxȁ|͍Zv )Pxva\#f⒇mش\s?6dG9Hc9ߖ}9֘eYۚ5cìa 8^蠅袍roZըj>y!稧`& vYmػme;9 \p.ޭs"!Ȁ\rAN@-w Z!VrF!uߝ},{ 襏78 y=6A??MPN>g=P@域ٿߟ X@ T@>)XA ^9A~!IXB)T YB1 iXC9yCAXD#ITD'>QXE+^YE/F XF3iTF7=__-ycIG?}l YV1 Td"k%$)9I\R)d I}%f 䈿Zo"HVd'3%kX9._",P f c)wJrtd$%IXnzE,]f1d.ә&4`jzNf6Jn%FN\ 뜻L0Nw.' vOk'#Jot`N ]g1 xКE2htQG- RM\#[IsДE&D#*Qhr4=L p}j%*҂ 'E/c2lE-b$=͐ d%jX p2e%;җUZz*M®?DŽz˽~ Vl`ҖB4[qX>6l G؜H[+ت->u#!ج`YЪ$FMV qhưL-`@H a 1 :\*S!.͕sc9d Nhp u=xXchZ*T+-qjV9\I@ks]( xY+@O5J3Y0M_fչ.&'ǡNB)8 qm3[c+1{ AD`QXC@ ..`1N   X ŐP QQ nN@Ңa 0abAB X !,` ` ;g`oHb, mY!xEz+Ro,@!-! &`("&> t: 6Pjgj3 v1pߦ Xar`ir[%!nޔ,L r*r#g/r9@ !z@J T ,e ' -VVkxP((-)e4 3*+r*Q F!2'ޮ,^vsz,6``8R*S ,S-HNCZօd;N;f31'81O(7>3 "8A%4p3:䎤AA_>E`BB ANHD) 6J@P@RL&p0 R`Z 5Vt.cntQYQa"&uB f!.l85Ceqo: : PZ@\4&[ ll k X˽` Z3+@ |Y& h;@@ ( @07$IAeIT@cDXa^b, pZZ-b @!tR`h"*֌)c[IT7ƀ\od r 0@̠ʪ5P 8 uEgot6 ~`x҈7cI5lqdɼ6e{1rm` Pce, ̖b L`a# $@V#@H i dF` `0%Gv 6Vmqrlg s`.brqZL ҁ@+,Z(, 28vZ *`,\wvPʊ1׽h4|QkPau:| !( 8`@ck`8 `^K.P/ '̠FtVė>ny!aGVAD!L"nGoXD;FVx.@FGP@EnSO:;1XZ/ШO؍߸c*J`-sX~sN}ߝ\Oe@YfEg6Qbٲe1e_ʾgϞO<1b7]-=a߾}˗/?|1eG~@_eF7w?i)Mo6蘲<sq[ǂ[zٺ#o'/ n@wbd?@-ou2&К;]U|/eKOZb|̬m{I6UKNPt`/V&K<~RgcC۩ޫaz]}'I dLqt*UZƘl}Chیkr| 6v9^1Na}u'W@1{" ť2ZEVafk@n>l;뷪I-C1Иs╋?pQۤ<]1]n+T{ ;G#clVa3c3eB}"kܗ{1ʔ-X-Sh.wkܝ\ s-inm:z吀U>VlmSc6&>3e|VR%B{z];Zlޗr_3= X9þ76(\$0Y(6οncyR+IL?5 3-g-7}V^=l+x5)9P8>t%1=@>Pխ[h>+;~p!+e_A,]v0}4]Q'gE r&6m x+',AMFkYξܼ o{M,AB_|?3De='~߼'˗+S({"oo^/ʑ4[^tPD82%#םz*BL `뼤'q\e[Sߢ{^xVAB\?n$^_:=ۈNd%y#joT!^zoj>`1.Jҁ|,5 S\E"s6YO{Q%蕍Fyw'L`zxG־~P|vYl[vpѷtFKP]sx[\/U7/u9Dv݅:w^F\NB?!<}Zfr Q#GGG-(ʖYh~5 t6s 0Wӊ~2f ;(;wlp햵]q[ywF:z}O,A;o=!ڋ>֪oCГȺ;n{]<!s&/(*ҝJfBtIPmVaڒF?gZa|DB+1Iߛw 1 ZH[0hu-}v65Q/̨0zPaBcloiѱMBqwaQW/ ;S %7ןnJ~"}q :7j^m/Np~Pv@eeN*-mmA)D/IGټd1 rt:F65ʒ#m.w1B~[n<Q-:z}^ f*Rk6UB;1z,fgZ_J@ao6h~rr-/~=kdqMK<:= ^6ů%_ZZq)ˉ^w%:eE^1n43X|t~r/n{lyEAU4>{칗8JWz#> ٕ8jV^VmlބX'rbv{Nnj 㬟۫#R|FBJx[_$gq-yLrn˟gzۖGoȻOGQOⱏѤ*_wI\uTh8Vwk,7L8:ƚuͶkvrI/'|G١S߀Ma@/&xB⮾:}Ee@q(;Jrb1}ї9=X:bv@eme,wS~*Fe\Y_mje[3_>amm.Ľʾ}N3CĀXW2X:TqQ;< qRscڵBru;ݵ|b=6@atviAn+{?Du!>:םZ>K P맞N>n4GZcv_|u~!(;Fe3YHvOB'Z7 Uֶ) Qw%e]PqN.U=FULǕ%q ,2njFb{譲#i"zmj|38s$?BbY7bF,B'.fύyQW=2, GɺM=& {;tk$it];ʴ\X׌PXӁ|ZP\-JD]3.IwKW1R\S"zuK 0JoL#kXy^訙(rXk¤wm;\YOUW=ݡ%5] 7dHNargcZu[8{C_8HM0Ѫ\7vAkF`ʮ?gލiD#W=W$ժivIiɷcuu$S1-!~8ei{ƅ$Pf)Ȓr"=-fzM[oUdߖ8aր٘ff(kIQvNɁeePv@@hɏ?l/:{ bwkz,6 mOo h_ƪ?1;(;(;)wq13f*8λPvLه,x7)@g}84쳳K$>Y+|WS4˗oJz=SjUy&u@1;V̯Ы몚RydZ2't9Y #mݱ!ԧwc<^')LBcޕh@G1Rv蕲?_1H(׾gJePv@Pv諲رcݺu,Ydɲe7ǒ%K,]2l (;(;(;(;(;RxڮV͍A^Sfwuwt˞!0)=浵lJZs{v#Yɴpam#~o;nl-D놲;htg?7u2% 枒қ(;0-4Iٴ4M23U2doVU[=؂oWᎊϪW1nXU[3c3U;"][)͈ 2sH\܈v ]A]ec֙=s[]fl蠸U\ӁdֲYlU;9C VbRܙXTwק캜E3}T}Tٮ\,4FRfFn;LC ¹;+pr]nZ %ɹA647m:-Ϛ{rs4f4IHf {/fG;ͭ/A ۑc̜H{-]5x[wIwvd6%*:0({BjHPvRJM %VV5{EI)UҒhAJV } dz¤;펔Xu1FRvRJE2%l/\Σq b@$ʖk1Q{RJX#yfF2;)>ZgwcQ7+uK)$eȒ棥ƨ1;4o”RvDJRQ3NJ)¢vl5PFJ>̘*f'TT^g( rEn'c e'TTeJ)hMe( EJྸs!c(=%Gyº7SDAث[5JTub\qSE5LA9ԄG]E)ʪS "clĽre/btk-sßtw̹Y;D伍JJ&ٯжVD*1WnrikYjpJ$,x4vkU8 ntﺆW휩b\Wm}SyHNeϝEH4ߔLvʺ43){?_$V:H$7=%{I*'7rWxId,a, 8%S T2Iٞd K2>$"q";ׄ^"iO"d`ON@ 4ĚID5I-s Ϊ#sEnU+njUZhR ;ۈʜ]W[/ٞ+ h7t_d4Gxj<85GwEmZ 3  7xÕr܃Y󮈢). =3&~d}EJهeǣQ]}aճ%މzmEʮd|7\\%]x9^'I^3Zt^G߅&W u%*F\1?h}^^H`zP$̈EnI&`ԿV'cC_wmJ:<]b3m[i^gV2;r{u[~/|lw?]z-z"@녎"-@p+x<<I`fv\<@N3%6Iͬ[mRJtolhmfmVO~W_?=%ʾ7<}S=Tř_i 4%lik3wƻ6!rѻ >uQ-tз-U/G>El-]p7nL$.kw1N/E6. Mj9<G#( ч -q JܔPt.`9Ӧ{f~']:#hJ|ޚ}XγCq2b> sC__:ᵹA|UaJ -$x`%m"f°[ٟzj?MSIҗ7=z|Sw֍ʙyxv;2S1-Jnac!NJDY%lPS(qq[6XcY_8տ骫-"Xd o0]AL#Ia$mv(16-ʑn+1sY4$Z|CM/KxK_4jQsJ|[G \*i ~qahᔋs6f >6]gڿas\W_;f*\ %'r: 4)s:zٖ{qoc{ߍ=K|_K߹;q- 3Z1~tgˮI٣ /%EWؤJZnvT3nH_IDAT29ijƣ0CB$ixfAǫV6YUaP8n6ƨz&wW$^ӗu1,p ^aM⍉!? ]`,]w J]Dmfrk{7&7v'^'ZYBWvhy 7¹6\J,ߎ䋌Lښ?yl-I%zjr4빍7G?u$hZw'f'@wt0w+BePv@e@ePv@Pv蝲ܹS-W^VXdɒeSu֕I[ K,Yljl 1(;(;u)7|YRۿ:?xG`*fzzba>#]/E/ۢu>яwjͷ~}oj=Qv+$+Yoݸ9 ux0xǿP+vrUjK7(7.Ծ8^\^Ɲ6YW_am_VfϻBU+>ᒩ`3W;U>I$Qd6&Sn*1v|ag*s p4jee˟_򳴬_eδӛ+KDѲ#_޴sDBc0ѷ5cp/lQ\oYb!fREfɢMbzh1nSR_"빖$uX4+t7qH6 36SAtUk֍ѺZc/\t͆xSxt'7wW6.FK ~ Τw003Րt.;M J__fd]G(>>ڷګ/\(zه5?*g(g%q-+e=sc4]-˹;6m*ەϫ_M=>-O1xꩽ5ыOE'K_݋6G?O2oIf&Z/̔g'l{4_-̳Kvָ_i[CKcLSGN_J}?:n~HIwcb}ϕXCe̒hjC J44,F]/hQIaXMÚ}ūYۺ-rg@{b]< p8~=]J޾xGKswGDF߼x`\PT_m촟WlڻGjֽ݈`-;oO:=3Q|[ G>vLur=20`kD}GWUڃn{RblG`֢h&Z,wNnliv[ iPv˺#WIH!qwZ3+Q^͸!a>Ї`Rw %]!0x"OpX?(; +u))kPv<$4VDZCrMǷqpn'(;@OQTK+8TOJ2_?Fܛ(;(;(;vu K,YlpY^Z-߯VXdɒeSKfcPv@e@ePvQW͒j{w-L~ߟxe(3 ,,wsyzn˶;ox~ +R-ojͷ~}oj=Qv"J[7np|)k[O왝U˹J体w6rMN+e_Uqlm>iYWKy;_*|%sOPZl-b ^;ukڸ-뎘r܃Y8]ϻB5V}%SgƓTN:!|Rh,IT,ɔJqEh~_%uؙʱ\_٭nSv%os?쿸'.-Q, ҧ}R5R+ wwķLu{Uc M'%fREfɢMbzh1nSR_"빖$uX4+Km[~/|lw?]z-DJBGk-wD2)Ǯ}a }w7kTÌ^5xmpf^;[˹~M%1@h:؆R$/ ߧ4%u? _}`f,R+8ئM]PsimF|7[r+z]ƥ\`0ƹ_ ˝2Γٸ_few``PϾp5CegOEp7nmayL}5RYDKkwn?8 L5d+'m:NdS`Q4 ^e4{a?>o> |ٻB&@`=HSIdLam_t.*شnlW>~5P.uSO築^|*:i_^j]ykIe?cv%#>{=S c29ZgȒl d' AOG&=lyH&pш-Ӗms߉ I݆`]v WRǷdo7uH4 @!~lX%j6(;@KgfZ-0EZ;<$4VDZ͈%X˷Ma e^ *nÒjIu+J,LhvpK^aBeeߓ+s|W\rlqٍ[5EQv%7П<#d)jEy9IQ}lFPvhLօmP%ЋtܝVJ7W3nHΙ%]w %]!030EE FMBNdx%ԑXq3~BjJRijQv"/D&b"!(\ %c8Dh /aC Ԩ(ipenL (:J e! S A`=)M#P ypP h+ʩ*Ƀ W:D+$&QAt0ʕڴZ6<#itIPt'cQZq@fG *o0.w;@|!F9;#07׍':8tөuj2ӌ"8}P@p2 } A' u<.#k%l/!|89}͡nHpH-xR{8an"vl-xc}((\‘pX#|A+a9057I} 𭿰Nz݀k_K Wst'{+NkU u<"$(J08VaN؜FA>#)~u iRA;Ȏi pf+v_}69I  dS;o!?˭q+lw\FP Ph7 -I˜eZ A|Ђu;SP]/-!dDG4 ==x?xGBED8c8@EWԈ81TH#Axɸ>xA(>?(ȋS?n8;1ʸh;؏x#ڸ蘎A84Ɍo"9$Y&y(">.ْ+ A3Y6y8:x)3I9/0*yH2,ɔ4PR3?WpT@`b9PPP`j lɖLL`r)Pvx|ɗ=3PII")9\0\iCٙ QXA^ _9bigkٖq9`wxٗ~ =0i3٘Iy@陞 AP8/h]ɚ)9miٛ 9YɩI) Y1ylOf] 9Ypy驞QIiٜ CWY Р扛{ٞyęi9)k@y 8ڝީ Jn24Z 8jyɣ=ꡘBJ>?(zMe. R:3:6ʜ BJiX*miITJzYzyڥ<ʧ !*dj1f:I),jn 9*z>~ʟ Zɤ rU v*x٧bʟZ1Mºd ڨq J}iw:ZʩZ*I5ڭખz:iWjЪa yGjj JΪ :ʩ)C᫚xʱu)uj!\ʮɰ  ש'ʝ6;詛TKPpP1 B :9Fj.K*L۴pɪ^KV_ ^K X #;%{ FʨI[K5j8W뱮@Z0XX@> C*  ;OkQk_@XZp0 [ {+[uK} }P ;s+i˛ЙikKK᪱` $*akꋺf˩I;rk⪻ {YD` -p@pPZ{?@+/[1+ۢO {I _  P#,ʻ웙 \-KR{ "ƽ軡. ã)ñ[oQ x }DILm qL[6 KǕui^XpI+tܾ˺x<\7|:лi ^۹= +É$+& j&$ Y v y̗ ",΃IprR#˯k춷LOü˼З} ЂIl}Z V,IҼ\|ɎÄOЗF \PLǖ1ϴl73{ϔ[^e *3+3 s s͕ڬd]٠֋0B0WhJq-ϖ-[ڳ|؈-ґ`oMϐrջ|˺yemָݡB۲; ۗ[zMl=p{ݬM\w۲ M8m<܏<4m\ߺ_ ^>7!:~k+^ݪ-M}܍dR֔ ؐ] Rpr>* u~vz|Q|zN膮[@(0*,@/1~s靎砞}>{p ~?3Bie ^0Ʈq~^^9*PY^Ǯ?g!0n9P: Pp驓0[TuneQv^Ȏ~[`@NnQY`~.]`8?:_ K>@J0J ΐ.۪ /U@6c=@OCoY`npz 3U;[AF Y,1?4V:O>owOF#%BHK /_Xb_ ^EkmSru n?Zo )/+NO6OUyILo?C90P`Dp@Çܠx6^0FM8?Ό I99rtbKy%9ufгg>Y4vR䙒&Qdf%4ĩSI-n WB`(Q8@ETe㏣IOVIɲ1gּi =U5Ѵ(ȣHUezɐW @a'Vqݏ!GJޛKOigbB5JdogJ0Z{Pٳiv\D}eī欂81!Ʒv>醓&x .R[j(6$:#pl(>O|f«? 9/HP<Ԃ̣ E47,{1>/ k,X\/Lĝ 4d5 jM!. Ske,'";2R8î0o4KS!OlKlD% `RD||ƖE)@Y pyIPCTAϾ,1\ W\T"!)jSUVGr$9b[s5b&m3SoJ"L7͡O%[aάcf7&/1 >R¥>B[-dզI ^hCtT#^c0W-a1}m }V86G.We{2H xN8~aQx#B؂f-TI4  X&L6ɖR-<[9cyg\}µwf6xX}fpV49/ڵͫ=vOt}2@᧦@olTg0htc=ܐ^*=Käl2^8rnjv ~f}pmu^k|\@@pS+9R3}5O<~/ sT{;&c]j=;-t?\o{kOD4xțT_+(mK; [7Ѿr/<=Z lz z!]4wNO}_} {O/^u_=ϸ˧{7@o/%?~Vu3^>~3tEǹK|7:c>Csü|C$DVdq`D|ElDZD[E[ԃM 0AKAڳs*8FdeLflF(xgijkF&FXC(qqs͋@F*PelFgF(F0FlFn{2pDr$tlLdGM7`\PA"bcG|}FHF,HS?vE\EQ+lSDMTEuS:mT;?TI00QH+EOT QUR-URMTMUU]UVExUXUYUZUYuLUdRTNU`TSamUc5V[MVeUV\OM@_ Vk%VlcU]VoZU]-*VjBklVn}WpWyuV0Ct5uev-wVy deOXU(WgQ|} ~=VXZ]w3X؆ׇֈ؉mU=׃U7؏mّ=ՒXX5zW x8 ZZ-ZFHZ]ZmZ}ZZZZ͆Y%XEXQ؞[ZZM[em[uۋ؝XEB <[5Q[ \-\mQuuD UHeمuY7[ \%\]E\eŅuUXi\ЅtN$IF޴ptIut¶ӯ.X^.u!]55ȕɥ:Zי3x˝VdPfLΔNmݤLG6,^:^ym^^Y弄}5DOݔML$ާ3M_^\^ߖ-K_|ఌ<ȴ ~ `^ۅlΐ̈́a-̥nNahX^.T^ f|MdI ~H Vb-^^.^UzN4]}d4`)Mc+n9=bA8a]` ]]l78+;Xc6 3 M|ލabDGUd,JKdMN.P^b5^cRNd` bHeFfeX@6e%V 6^pgGN9c Ftc=^icjN^d(cPQvaLbn~&dsfvfvWg\eB6{(6/ViV(L4G,i8PsfV֊fg=hXvdlhm&^O~iVGUi,XeM^g eyniFɃ|-'Bc8G8胼&cj.jFWUkklvCf|gk&/"k-P ;c.h>X".i巎jnbF~Gxc0>sP`C-`ejf.VX N6ɶgn`VXs8pB]nVunV\˥nhEG_,,](vB"0mfnvWfv~nao_H-HnB7x&j hU[^k3iok6/lU ]x(p(n-X("h _UfKv觮glrv(WscGtxqw XqV@q~l4c W '>*.krUrrsɆjqEG/iBB&8s(?HfVm=sO^?_U@A=iCvbE4l tPc"UpT.r>u1e48_(Ptq`WU@bqB_Vuo6eoqcGkwB>_^uwwT%wRgjS_5Q̄g,(pVGm8xH8vox T cdWv r7"_ uq77 7Mt_Vysl OS& rdr)}wGU/LunvFiWiU`,dnz$A3MGs, ǝU n'$}N޼O7vCe3F_dh]wޭ˷P?|u}>s4~^Cmk~_;hk{݆8.gs|EITz(h0BP.DN%2F6r("E(YJ3Vҥ2cNi&:u3HBdwlB)2 ܨJ` BqD/f4#ȏ#IR%/aΔyn͝zu>04($FC`pq VbժC`Î-k샴j׶=2n˗ug⽻w/пDZBS 2׮_7O\thF)4Vluξ.|@Apx !2o߿rEϟ*g޼Ra:v\WQG%eMTTMFVmpaqb\F)s巟j^ŝ%}Ҙ1 y >dz`Y eFXچz]\҉8b^ 8T%2q%Yj%\ѥ׌5ey&i&jfQF׉V@߅7}B&Y9(Y~ (>\ȩӒB q' !ey YxjG?j!T9E:K,G:L*Jʀj*VN8zT+izDJ ;lw8 va-c2؛lxlB۪J+rH",>Nk߆;.[UiPiwDM9¤2{jK\EjŻ\ʖjK*s7EU{gx(K+Jܴ;h-G pv-wqՁ ʠrКݯh4{?-n ,DHN_6^SN뮘4\{Чo蒫ʹí/^wLymw:Ճlx$.cIݼVGAwᏎݚ.Qۤzg]\;n>_[.ᅤ{+㒗|JBn2=YpRY)*8x䝿&H ^|iٜ9%k ^߂ejbxPc 7Ung9_ZQƁn[!AqSB8)5\"X3D}G<$896tO P _(d=QlG$ a; ʏobG8*bia(=JĘ S%1i>y3§B&&mx#׍ CSdD#>0Ve*X0HJQT)E0?_Ё ]hC} T$9NuӝJ(5R V&=x8?us-e$:|!$6h Ueh +3jjPhzljaFxA#кH4hb|AS}`YϚWq]WLq@RTBU]UUz!j~Z5m2^ET׉/S!BD;3#@~kZ7@D(-lK|2,YTB`_0:إzɵfdC^YJ:ҥuq]Jq6wmsnqzӦB0/38T\P D  ƒq",B.HFH4xA@hf@D W B'^0ayѫ5VެW|AcYD62d'C(b*fal+ʘ6aX+7C7V}8CKrEuMЕϠ5Y63E4}"Xo0x7m&Jy5UeI^~ojVֲh[5_uLjfk#=Jҙ= jp2 ݾ H m B]u-_PD`1 +I=V\ 8 q*0Uq -(|,+_8\B_Y\5?%5ELTߠuI0_5K ?K@5T7tEU>A9"(L,܌9t,I'TTm[ ]*!:aVB સ` ` 2(JGX!!^%`q !0@L%):R>vDAbb'шNT )>b$$Rbb).M\ * !f"*ↅ P"و(b\Gt镑-p.f)_*"+j bbm,i-LҤ1]'fc9*tc&&\,c3:J!8"фbA$|#h 6: >c\*!j@;b Xb\5΢y@>"rH$AX># $j0*3IcLV#J5v$PP NZFp$ #AbeV$jKjSIM~e-9^$Qڊ?nTMV"Nb^$RRB $bSDS2b5A_N_X (nF#b>#fYZVJ$tgXwbfa.4r:&dV~N09~p2 ̇hvVFNn xy&z z&sʦ\g|RL}'~bg؃vgRgu2@qaZa'"Fs6&.)6:iT|-<^)")d P;R)v4A)jhFiΩ5t[A4r  *<**6j6Djq;H*F.*fjBlJjr**&맦DhmSjTDdCXF}s8D~j3瘦nlkeHpxWXȸŏhȆ}+ )hi߃ȍTbID&,«*֫ckUzHȄ4ĎHkl~,[,~j <+:lRPk:f:bHkZȅhlr,,’,!40)Fb"~f0mr+~,R-ê+ -^k5PV,{\٢Ӛ+F-ξªZvךi\Ff{kEG~GrHniD:#Ю+-frmǸrn[Jm..j-:.{jJn,jnI-.@|//A///A"֯/A`6ƪ/G0ί_0ׯ mL+@>8 0 0 ǰ 0 4pf0԰18DpN.lNq{_o1?11"~@{f3'u111qD=4qB*A ˱!gq'1#7213f !!"oy8'߱$oo+lB;\2&grs2+3'2KBG29 *2'201$GA1.2+'0;lmzu@~B3W344;2HCf9A#|38s393sC 2 ;s-67ӳ&GtC ,;;+9A 'B3C+Csp'@;({ lCǾOٟ=%ǽϽֽP}ދ}lַ~$Ⱦ~> 2w>=#@;?ˀH}[c#rS 0B 6tbD)VxcF 9dH!ɔ$e +Y43i֜';!S@PHp444p*TSɀ[v,<4+ɔ-[ƌin8y)thQI:mթV qbŋ-{rڔ*rf\s t;{2u 8` 3vv솎!זe253hѣvFڵFɖe1L}r4S98qE>OOZ ](ҦVN%`bAYL@BJ胜o"`o<8pd=I@!-/#j/:A ܑGL-&m;8I f p |G pcP 3xFqԱ4G AZȘpNGnA8t:<9 -02qH%ͨM7AG|$^"Bf\ d&Id``IDqFkj*H'؇*uSrOΒ[%/},KvgeϺ}ow)j}MzvIS|~ssm!gW˿,o?tG_^W)}x G?&|UAv ȸT;P_rA F/^ pQb `v# kI#tYh2xP=QP~1r }7,O V!1b0?lU$X Y'Bq"UW)z4"E06("Ff_"Kr hrK΄c@d`m۰$! &0;ǘ푏a 0C['Љ/P)NRGr$UGr3h6`G "(%B&ɩˣBza(pR A'(0;-խpkzH!D 򓫾 P&",9YXA ,jd5-Tv&ZD$r[ :_@txyj#jԾŀ7q`%'{rS .),r AEൣK8E.@0^ۈR)!KI N0]($RYG yѻjX,L} /V -,&;9..-}d!E*,a@*`Sqe._^a0],rJ`Nƻ2$z\L.4Ch0{t[iI0H.}+\L;Jʠ+)E&uNDKR9 z\w{A0A봜dDP-\b-2ਜr/t&Zu7cCF7HЦ6h iкjJdHpHE  5)Z;9$Zdul3"B1xa~#$2Pt6чB;:8F';bHwJ0>X  0:8#2`TeBY*0m$/sMy[:Ȏ> Ⱦ#F JU ^*|hd5lgc?BuR H[ J`#QL}EL!!YZeNJBkpԍ졬!`C3qS;Au;8ax2,(k/u|!Y:}UpHxRwU ŇWk?oj!t P|r, A $"rA V \OJ`B.jok# Ϥȡ_<OjW v nZ p("#`"r!T d^`X@PϪ&fY^ɚz.ưbiPR*pPv p̀6 A abt 1;i%M S\_`✄J@^C,"N-. A>a_!ء2 xF&C}'2M3DqdXa!F@ytzC1QMvAxj'Ѫ&QwɱgcGc#kqH1 RQgB!?x""!52n#?D$$9'%Ur%MF%qN@&r&yfd02q2'Y@x'q&fAH**+R+++*e ) -R-ג--.R.r-Q,W+ ;PK0#mNNPK.DOEBPS/cohweb.htm Using Coherence*Web on Other Application Servers

PKPݚsiPK.D OEBPS/toc.ncxw Oracle® Fusion Middleware Administering HTTP Session Management with Oracle Coherence*Web, 12c (12.1.2) Cover Title and Copyright Information Contents List of Examples List of Figures List of Tables Preface What's New in This Guide 1 Introduction to Coherence*Web 2 Using Coherence*Web with WebLogic Server 3 Using Coherence*Web with GlassFish Server 4 Using Coherence*Web on Other Application Servers 5 Coherence*Web Session Management Features 6 Monitoring Applications 7 Cleaning Up Expired HTTP Sessions 8 Working with ColdFusion Applications 9 Working with JSF and MyFaces Applications 10 Using Coherence*Web with WebLogic Portal A Coherence*Web Context Parameters B Capacity Planning C Session Cache Configuration File D Session Cache Configuration File Without a Near Cache E Oracle Coherence*Web Extension for OVAB F Cache Configuration for WebLogic Portal and Oracle Coherence Copyright PKaSnӍPK.DOEBPS/myfaces.htm Working with JSF and MyFaces Applications

9 Working with JSF and MyFaces Applications

This chapter describes how to configure Coherence*Web for JavaServer Faces (JSF) and MyFaces applications. JSF is a framework that enables you to build user interfaces for Web applications. MyFaces, from the Apache Software Foundation, provides JSF components that extend the JSF specification. MyFaces components are completely compatible with the JSF 1.1 Reference Implementation or any other compatible implementation.

This chapter contains the following sections:

9.1 Configuring for all JSF and MyFaces Web Applications:

JSF and MyFaces attempts to cache the state of the view in the session object. This state data should be serializable by default, but there could be situations where this would not be the case. For example:

  • If Coherence*Web reports IllegalStateException due to a non-serializable class, and all the attributes placed in the session by your Web-application are serializable, then you must configure JSF/MyFaces to store the state of the view in a hidden field on the rendered page.

  • If the Web application puts non-serializable objects in the session object, you must set the coherence-preserve-attributes context parameter to true.

The JSF parameter javax.faces.STATE_SAVING_METHOD identifies where the state of the view is stored between requests. By default, the state is saved in the servlet session. Set the STATE_SAVING_METHOD parameter to client in the context-param stanza of the web.xml file, so that JSF stores the state of the entire view in a hidden field on the rendered page. If you do not, then JSF may attempt to cache that state, which is not serializable, in the session object.

Example 9-1 illustrates setting the STATE_SAVING_METHOD parameter in the web.xml file.

Example 9-1 Setting STATE_SAVING_METHOD in the web.xml File

...
<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
...

9.2 Configuring for Instrumented Applications that use MyFaces

If you are deploying the MyFaces application with the Coherence*Web WebInstaller (that is, an instrumented application), then you might have to complete an additional step based on the version of MyFaces.

  • If you are using Coherence*Web WebInstaller to deploy a Web-application built with a pre-1.1.n version of MyFaces, then nothing more needs to be done.

  • If you are using Coherence*Web WebInstaller to deploy a Web-application built with a 1.2.x version of MyFaces, then add the context parameter org.apache.myfaces.DELEGATE_FACES_SERVLET to the web.xml file. This parameter allows you to specify a custom servlet instead of the default javax.faces.webapp.FacesServlet.

    Example 9-2 illustrates setting the DELEGATE_FACES_SERVLET context parameter in the web.xml file.

    Example 9-2 Setting DELEGATE_FACES_SERVLET in the web.xml File

    ...
    <context-param>
        <param-name>org.apache.myfaces.DELEGATE_FACES_SERVLET</param-name>
        <param-value>com.tangosol.coherence.servlet.api23.ServletWrapper</param-value>
    </context-param>
    ...
    

9.3 Configuring for Instrumented Applications that Mojarra

If you are using Coherence*Web WebInstaller to deploy a Web application based on the JSF Reference Implementation (Mojarra), then you must declare the FacesServlet class in the servlet stanza of the web.xml file.

Example 9-3 Declaring the Faces Servlet in the web.xml File

...
<servlet>
     <servlet-name>Faces Servlet (for loading config)</servlet-name>
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
 </servlet>
...

9.4 Configuring for Non-Instrumented Applications that Use MyFaces and Coherence SPI

If you are using the Coherence SPI to deploy a Web application built with MyFaces, then nothing more needs to be done. This is the recommended method of running MyFaces with Coherence*Web.

9.5 Configuring for Non-Instrumented Applications that use Mojarra and Coherence SPI

If you are using the Coherence SPI to deploy a Web application based on the JSF Reference Implementation (Mojarra), then nothing needs to be done. This is the recommended method of running JSF with Coherence*Web.

PK]g#PK.DOEBPS/content.opfI Oracle® Fusion Middleware Administering HTTP Session Management with Oracle Coherence*Web, 12c (12.1.2) en-US E26051-04 Oracle Corporation Oracle Corporation Oracle® Fusion Middleware Administering HTTP Session Management with Oracle Coherence*Web, 12c (12.1.2) 2014-05-07T11:35:23Z Describes how to install, configure, and use the Coherence*Web: the HTTP session management module dedicated to managing session state in clustered environments. PKy7xkNIPK.DOEBPS/appsessionconfig.htmF5 Session Cache Configuration File

C Session Cache Configuration File

This appendix describes the contents of the session cache configuration file default-session-cache-config.xml. Coherence*Web uses the caches and services defined in the file to implement HTTP session management. This file is deployed in the WEB-INF/classes directory in either the instrumented Web application or shared WebLogic Coherence*Web SPI library. Table C-1 describes the default cache-related values used in the default-session-cache-config.xml file.

Table C-1 Cache-Related Values Used in default-session-cache-config.xml

ValueDescription

local-attribute-storage

This local cache is used to store attributes that are not distributed. This can happen under these conditions:

  • A coherence-distributioncontroller-class is configured. Attributes for local sessions will be stored in this cache.

  • A non-serializable attribute is set on a distributed session. If coherence-preserve-attributes is set to true, then non-serializable attributes will be placed in the cache. Table A-1 describes this parameter.

local-session-storage

This local cache is used to store session models that are considered to be local by the configured (if any) coherence-distributioncontroller-class parameter. Table A-1 describes this parameter.

servletcontext-storage

If ServletContext attribute clustering (see the coherence-servletcontext-clustered parameter in Table A-1) is enabled (it is disabled by default), this cache is used to store ServletContext attributes. This cache is replicated by default, because it is expected that there will a few read-mostly attributes.

session-death-certificates

Recently expired session IDs are stored in this cache to prevent reuse of a recently used session ID. By default, each storage node will hold up to 4000 session IDs, and session IDs will be evicted after 24 hours. This is configured as a distributed cache.

session-management

This cache is used to store internal configuration and management information for the session management implementation. This information is updated infrequently; therefore, it is a replicated cache by default.

session-overflow

If the coherence-sessioncollection-class parameter (described in Table A-1) is set to com.tangosol.coherence.servlet.SplitHttpSessionCollection, then this cache will hold large session attributes. By default, session attributes larger than 1 K will be stored in this cache. This is configured as a distributed cache.

session-storage

This cache is used to store session models. By default it is mapped to a near cache backed by a distributed cache because it is expected that a container will access and modify a subset of sessions multiple times (if sticky session load balancing is configured.) See "Session Models" for more information.


Table C-2 describes the services-related values used in the default-session-cache-config.xml file.

Table C-2 Services-Related Values Used in default-session-cache-config.xml

ValueDescription

DistributedSessions

This distributed service is used by the following caches:

  • session-storage

  • session-overflow

  • session-death-certificates

The tangosol.coherence.session.localstorage system property controls if a JVM stores and manages data for these caches. Under most circumstances, this should be set to false for Web container JVMs. See "Deployment Topologies" for more details.

ReplicatedSessionsMisc

This replicated service is used by the session-management and servletcontext-storage caches.

SessionOwnership

This invocation service is used by the sticky session optimization feature (if coherence-sticky-sessions is set to true).


Example C-1 illustrates the contents of the default-session-cache-config.xml file. The cache- and services-related values described in Table C-1 and Table C-2 appear in bold.

Example C-1 Contents of the default-session-cache-config.xml File

<?xml version="1.0"?>
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--                                                                       -->
<!--      Cache configuration descriptor for Coherence*Web                 -->
<!--                                                                       -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <caching-scheme-mapping>
    <!--
    The clustered cache used to store Session management data.
    -->
    <cache-mapping>
      <cache-name>session-management</cache-name>
      <scheme-name>replicated</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store ServletContext attributes.
    -->
    <cache-mapping>
      <cache-name>servletcontext-storage</cache-name>
      <scheme-name>replicated</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store Session attributes.
    -->
    <cache-mapping>
      <cache-name>session-storage</cache-name>
      <scheme-name>session-near</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store the "overflowing" (split-out due to size)
    Session attributes. Only used for the "Split" model.
    -->
    <cache-mapping>
      <cache-name>session-overflow</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store IDs of "recently departed" Sessions.
    -->
    <cache-mapping>
      <cache-name>session-death-certificates</cache-name>
      <scheme-name>session-certificate</scheme-name>
    </cache-mapping>

    <!--
    The local cache used to store Sessions that are not yet distributed (if
    there is a distribution controller).
    -->
    <cache-mapping>
      <cache-name>local-session-storage</cache-name>
      <scheme-name>unlimited-local</scheme-name>
    </cache-mapping>

    <!--
    The local cache used to store Session attributes that are not distributed
    (if there is a distribution controller or attributes are allowed to become
    local when serialization fails).
    -->
    <cache-mapping>
      <cache-name>local-attribute-storage</cache-name>
      <scheme-name>unlimited-local</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>

  <caching-schemes>
    <!--
    Replicated caching scheme used by the Session management and ServletContext
    attribute caches.
    -->
    <replicated-scheme>
      <scheme-name>replicated</scheme-name>
      <service-name>ReplicatedSessionsMisc</service-name>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <request-timeout>30s</request-timeout>
      <autostart>true</autostart>
    </replicated-scheme>

    <!--
    Near caching scheme used by the Session attribute cache. The front cache
    uses a Local caching scheme and the back cache uses a Distributed caching
    scheme.
    -->
    <near-scheme>
      <scheme-name>session-near</scheme-name>
      <front-scheme>
        <local-scheme>
          <scheme-ref>session-front</scheme-ref>
        </local-scheme>
      </front-scheme>
      <back-scheme>
        <distributed-scheme>
          <scheme-ref>session-distributed</scheme-ref>
        </distributed-scheme>
      </back-scheme>
      <invalidation-strategy>present</invalidation-strategy>
    </near-scheme>

    <local-scheme>
      <scheme-name>session-front</scheme-name>
      <eviction-policy>HYBRID</eviction-policy>
      <high-units>1000</high-units>
      <low-units>750</low-units>
    </local-scheme>

    <distributed-scheme>
      <scheme-name>session-distributed</scheme-name>
      <scheme-ref>session-base</scheme-ref>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
        <!-- for disk overflow use this backing scheme instead:
        <overflow-scheme>
          <scheme-ref>session-paging</scheme-ref>
        </overflow-scheme>
        -->
      </backing-map-scheme>
    </distributed-scheme>

    <!--
    Distributed caching scheme used by the "recently departed" Session cache.
    -->
    <distributed-scheme>
      <scheme-name>session-certificate</scheme-name>
      <scheme-ref>session-base</scheme-ref>
      <backing-map-scheme>
        <local-scheme>
          <eviction-policy>HYBRID</eviction-policy>
          <high-units>4000</high-units>
          <low-units>3000</low-units>
          <expiry-delay>86400</expiry-delay>
        </local-scheme>
      </backing-map-scheme>
    </distributed-scheme>

    <!--
    "Base" Distributed caching scheme that defines common configuration.
    -->
    <distributed-scheme>
      <scheme-name>session-base</scheme-name>
      <service-name>DistributedSessions</service-name>
      <thread-count>0</thread-count>
      <lease-granularity>member</lease-granularity>
      <local-storage>false</local-storage>
      <partition-count>257</partition-count>
      <backup-count>1</backup-count>
      <backup-storage>
        <type>on-heap</type>
      </backup-storage>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <request-timeout>30s</request-timeout>
      <autostart>true</autostart>
    </distributed-scheme>

    <!--
    Disk-based Session attribute overflow caching scheme.
    -->
    <overflow-scheme>
      <scheme-name>session-paging</scheme-name>
      <front-scheme>
        <local-scheme>
          <scheme-ref>session-front</scheme-ref>
        </local-scheme>
      </front-scheme>
      <back-scheme>
        <external-scheme>
          <bdb-store-manager/>
        </external-scheme>
      </back-scheme>
    </overflow-scheme>

    <!--
    Local caching scheme definition used by all caches that do not require an
    eviction policy.
    -->
    <local-scheme>
      <scheme-name>unlimited-local</scheme-name>
      <service-name>LocalSessionCache</service-name>
    </local-scheme>

    <!--
    Clustered invocation service that manages sticky session ownership.
    -->
    <invocation-scheme>
      <service-name>SessionOwnership</service-name>
      <request-timeout>30s</request-timeout>
    </invocation-scheme>
  </caching-schemes>
</cache-config>
PK35FFPK.D OEBPS/lof.htmu List of Figures PKmNz u PK.DOEBPS/dcommon/oracle-logo.jpg=f™JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222'7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEzE7V%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((_ğ<+F; sU%ԑ >,BH(uSU xþ1Wϲs${wgoQn_swB/'L\ܓFgԏZ ^dj^L^NmH Ҁ6(?nƓjh%ةlΣ /F6}pj2E3HgHЌ(UQR8oX,G8OB]>o9@$xWy'ڹOM=ҼWb"٠9-*r⬻zWokeh͝(F@n~X=q+⟇1b>ƑeIX.~C,o5የ-m;D Nʬ` `+CcE??Ki!R!cxw[ jvc}&Eٱ7T)8&þ/?os$wSn^bo:-4^js4JKm!#rv89>' O59t , \8r,Vk|IgxEv((RmĜ+bkz6,u/}-|.'<VÚ~tk,^cH61¢ !;M;Ėz[#CuAƶ+j_&*/;Q8d ǹHyAsM↷7l-6rò,%Fs;A*',}'f[]tݷs~UWhk?:4JE]WpcY=" ƚw/|_xSw(kycH#r28,X7D5Kh76 mɍ~0H;6194WpGӧգ%8Z&GdPƧo6kcO5Kv`{}fyq \`@?Kv=26OޝyAe Qɼ芍H8͟2敮j#;iѻm؏6+wTx;KYY\-%'Aӣ?|=\-ٴk+٬$ɷ[$ISPE*vyPTaĜT`J|IgxEv((RmĜ+~~h ާ2}0F9|g=m5+x1h $)\  sdx^JfbKXYPCaݎ6-mS] mgC&>d, !Ƥ(p窀 V?IgZk:kHꧽsxg7__hÍB97 +9nn_o9Wc/m8ր=Y#t9? /q'#  Y}icמ o-{cŵ%'s s G^mqRwا s@W>w* O2Frk]k1֛4mݬRIp8F`F@kMvN&R +7đTT!zz5φ i]V?חi(adg 5<'a{+%DxVK Fu4 )w^q1@X,ZwE@x?q"<]7ū h7ZϢ5l}R͑I_%N XPh>?##ٷ |gQ^foi|C~xL1M%,, !@E WG4?n0s Ҩ1®88ۘ(+g=KM\$o Q< 8JI[|GIյk_OyTݶgQ€thbѸ~w;ggV/:O.'gNPKN=+1]}N3>apdq2ܐz x-h%@WR2#5 ~#?Kax{RP}il -jk&- !;; o7<# 4k+m ZY~էvFJF(F獡\WQ@W ),R\:H]B 8).@c#$ i$vC0y/{yeFPİ'CV~=f|> ʹH-p0w(6fմm17o\[ GHG~$j'м=i5xE7)m=FHqn(h+R; ʝ ^Ey޿sG WJڵ蹲i⽊FELR 6R8$0N6_|)_uٷt|gok(?Q?/?zFscޏht߷}]<299#Q@tMF?5k}:~.>g W@jg+|BmF!{[x'D-9 λʯ5嵜pGuui:No{<2-wL9RAŠ((((((((((A'uo֍R-28GK{Gd.ڻnP xkA“n/v5аgBK|Džlf V_|ktoXI:[ܶ̓  ckq׿-o:lJHdn4hqI 0Cge5Nꗰx/’x3j;h^IX˂AK\lot&.c$>e7O]Quq/>=`ƍ|[dЦCmV@v6<~"ӡk/엟hd.Ap*KqKòx3:]V͜~c ?Wo %! A(U%6G'O~{O%ԒUմEu1TuAQ|FkZo+S`5bclJ(k#OjMOurq "R~vHg@>`fG'jX+}_g'^ vE $`8 FO?Ҁ; }ON̵&GZ?x^Yy6Kʐ+ƹn,q<yZ襮ſWOIր1A㫍{핖OĻt*< G'WWi$\>A<+ {xԎ8I< BdcGi}|T 񾊗WVz7) #j;W%Ϗ3nkfc]|H^xZ3JOp;sO$|A)4kMZ2P)[YBI^Ⱦ7Ğ 5+Au'Hl컐Ts0^uq?'ZxQx{A?i[6]wXzuWuo*' >kkuUܨb8%w^uq?'ZI<+'|IĻ=VZkh֪%+5-䥸XwoT i|E{iQػCvZec ;/;jP2!6Wb2Ғqkvj|it,/&%8r;YkxWeCA=I*CUA ^|@,׼9JTY#(H{d@[i"ĽOSK>Z%rzkOEܻX6RJvpO ^p'j<%%{/?S¾8]STDԴwƥku +JY 9=0fy{OñJ5HP0 Ŵ@oͬnѬVv񴄅 qkҤ=.MyZ<\"򇄤D<`H h>#-u{mV$ "+##@0>VeJ]G?k[/~5eS+GcG"Fn0(`ǂ73 .4i-~u$H[O)pr2:ľ!< c^K=>X :qAO!pOGLk9<[h_i*pyu {O9|1sgy_7ڡc|_9=@ro=;^?txi3@xk5LJ 7$LKaT Xt[ M+LK[Bql>ASB۳1 bIrH;WĖk^業[Wr)(\6V~_XkIЧ-DVQ E2aPn g85LӼagkk]:Sq;QC<:?L5zy,8mb0H<>jv>g\hox{iȒ<1PĪl'nh(%q$ g;b5'i6s i,mڧ@8 2rGb2]NVbL4G=ⶡ1;dyK# Hg`m?RxWj2hԭn`R W`+!U'#Liog7!GCSđ^-n e/ Tќi WqxWž"^_BK+ŜkXج zxi5kCTC̊ŕHݜ2`QEQEQEQEQEQEQEQEQEQEQEQEQEQ\?g>yiv6X+ρRMף{< Πd<_x_[뺴v΅F6qI9g tV=  ^?`fN~NBp9o.kzu/i$R,"[ì]ŹfYyeB@S[n|_ QWe2ϱSl3ǽb;0FIlq񷈵Omy~eP}(/ḸӮa%ԑ:Cq< }KÿUn>xOp/dѼIcAOʝ#[uO#~i5_eحM02ypfܐzE?5޿W!LrG8i''0h4k 8[XSq;Q@ 2y8uu߰l_ ?:nٷ0819"G_E.o~#Upo~' 8(j9oТ7>:qw1Yۦe~?$9$2M\=_Q.Qx]bhdvP 8(x\廝vvLiЌ,c+b8j9?ovϛ;7>1R#w mcWu[%-8v$Uu$N&t=/:sj^ڶNɓ;InS[𾨺ER۽dsGBhk ώ~#7WۻY#;/#.}7i</?/x|k71XC?*< NLi{ҾxE-+ 4};,[FGPq]%XmoR.>gSp08=h c/Ofoy|}gux_CUkow^t dL|Unet/ً]sL5H'k2h0x~!q=ƅk<I #m8ؐ3@p3P7VOlRZ@(т&̮x/p_> wھVeD۷nvW& 'I=ŏ,I]6fmagkkC n'j(FO'? </=$$YlrǓ@o*-}kg࿚ TU ـ26t+7;`s97nO_O;;jCӴILӥIIm󹳻;Ij:֗Am~"$w(t_[YwwW[ ˴e98V+Px7wHtwdK!#,8$nPS+ƻ[cHU I9qw< 77uu+3qؒ2IZ+i{ Al.OoNH;nqzZKYiVI2@V:w7SK;C">n7寑c۾ߟuh’yBN5]*\4N;;,OчG F .>}_7͍-swlՊ𾨺ER۽dsGBk?+m%դ\<2 ܔuꭂ<>)̕

4 Using Coherence*Web on Other Application Servers

This chapter describes how to configure and deploy Coherence*Web, the session state persistence and management module, for use with a variety of application servers. The functionality that allows Coherence*Web to be used with these application servers is provided by running the automated Coherence*Web WebInstaller.


Before Proceeding:

Consult "Supported Web Containers" to see if you must perform any application server-specific installation steps.

When deploying Coherence*Web on WebLogic Server you now have these options:


This chapter provides instructions on how to use the Coherence*Web WebInstaller to install Coherence*Web for Java EE applications on a variety of different application servers.

This chapter contains the following sections:

4.1 Installing Coherence*Web Using the WebInstaller

Coherence*Web can be enabled for Java EE applications on several different Web containers. To do this, you must run the ready-to-deploy application through the automated Coherence*Web WebInstaller before deploying it. The automated installer prepares the application for deployment. It performs the installation process in two discrete steps: an inspection step and an installation step. For more information about what the installer does during these steps, see "How the Coherence*Web WebInstaller Instruments a Java EE Application".

The installer can be run either from the Java command line or from Ant tasks. The following sections describe the Java command-line method. For Ant task-based installation, see "Coherence*Web WebInstaller Ant Task".

4.1.1 Application Server-Specific Installation Instructions

All of the Web containers listed in "Supported Web Containers" that can be installed with the WebInstaller share the same general installation instructions. These instructions are described in "General Instructions for Installing Coherence*Web Session Management Module".

A few of the Web containers, such as Caucho Resin, and WebLogic 10.n, require extra, container-specific steps that you must complete before starting the general installation procedure. The following sections describe application server-specific installation steps:

4.1.1.1 Installing on Oracle WebLogic Server 10.n

Complete the following steps to install the Coherence*Web Session Management Module into Oracle WebLogic Server release 10 to 10.2:

  1. Obtain the coherence-web.jar file from the coherence/lib directory.

  2. For each WebLogic Server 10.n installation that will be running in the server cluster, update the libraries using the following command:

    java -cp coherence.jar;coherence-web.jar com.tangosol.coherence.servlet.WebPluginInstaller <wls-home-path> -install
    
  3. Follow the instructions described in "General Instructions for Installing Coherence*Web Session Management Module" to complete the installation. Use the value WebLogic/10.x for the server type.

4.1.1.2 Installing on Caucho Resin 3.1.n

Complete the following steps to install the Coherence*Web Session Management Module into a Caucho Resin 3.1.n server:

  1. Obtain the coherence-web.jar file from the coherence/lib directory.

  2. For each Caucho Resin installation that will be running in the server cluster, update the libraries using the following command:

    java -cp coherence.jar;coherence-web.jar 
    com.tangosol.coherence.servlet.WebPluginInstaller <resin-home-path> -install 
    
  3. Follow the instructions described in "General Instructions for Installing Coherence*Web Session Management Module" to complete the installation. Use the value Resin/3.1.x for the server type.

4.1.2 General Instructions for Installing Coherence*Web Session Management Module

Complete the following steps to install Coherence*Web for a Java EE application on any of the Web containers listed under "Supported Web Containers".

If you are installing Coherence*Web for a Java EE application on an Apache Tomcat Server, see also "Enabling Sticky Sessions for Apache Tomcat Servers" for additional instructions.

If you are installing Coherence*Web for a Java EE application on IBM WebSphere Server, see also "Decoding URL Session IDs for IBM WebSphere 7.n Servers" for additional instructions.

To install Coherence*Web for the Java EE application you are deploying:

  1. Ensure that the application directory and the EAR file or WAR file are not being used or accessed by another process.

  2. Change the current directory to the Coherence library directory (%COHERENCE_HOME%\lib on Windows and $COHERENCE_HOME/lib on UNIX).

  3. Ensure that the paths are configured so that Java commands will run.

  4. Complete the application inspection step by running the following command. Specify the full path to your application and the name of your server found in Table 1-1 (replacing the <app-path> and <server-type> with them in the following command line):

    java -jar webInstaller.jar <app-path> -inspect -server:<server-type>
    

    The system will create (or update, if it already exists) the coherence-web.xml configuration descriptor file for your Java EE application in the directory where the application is located. This configuration descriptor file contains the default Coherence*Web settings for your application as recommended by the installer.

  5. If necessary, review and modify the Coherence*Web settings based on your requirements.

    You can modify the Coherence*Web settings by editing the coherence-web.xml descriptor file. Appendix A, "Coherence*Web Context Parameters," describes the Coherence*Web settings that can be modified. Use the param-name and param-value subelements of the context-param parameter to enable the features you want. Table 4-1 describes some examples of different settings.

    Table 4-1 Example Context Parameter Settings for Coherence*Web

    ParameterNameDescription

    coherence-servletcontext-clustered

    true

    Clusters all ServletContext (global) attributes so that servers in a cluster share the same values for those attributes, and also receive the events specified by the Servlet Specification when those attributes change.

    coherence-enable-sessioncontext

    true

    Allows an application to enumerate all of the sessions that exist within the application, or to obtain any one of those sessions to examine or manipulate.

    coherence-session-id-length

    32

    Enables you to increase the length of the HttpSession ID, which is generated using a SecureRandom algorithm; the length can be any value, although in practice it should be small enough to fit into a cookie or a URL (depending on how session IDs are maintained.) Increasing the length can decrease the chance of a session being purposely hijacked.

    coherence-session-urlencode-enabled

    true

    By default, the HttpSession ID is managed in a cookie. If the application supports URL encoding, this option enables it.


  6. Complete the Coherence*Web application installation step by running the following command, replacing <app-path> with the full path to your application:

    java -jar webInstaller.jar <app-path> -install
    

    The installer requires a valid coherence-web.xml configuration descriptor file to reside in the same directory as the application. The command creates a default-session-cache-config.xml file in the WEB-INF\classes directory of the application archive file. This file contains the session and cache configuration information.

  7. Deploy the updated application and verify that everything functions as expected, using the lightweight load balancer provided with the Coherence distribution. Remember that the lightweight load balancer is not a production-ready utility, in contrast to the load balancer provided by WebLogic Server.

The application can be deployed and run in any of the deployment topologies supported by Coherence: in-process, out-of-process, or out-of-process with Coherence*Extend. See the following sections for information on deploying and running your applications under these topologies. For more information on the topologies themselves, see "Deployment Topologies".

4.1.2.1 Deploying and Running Applications In Process

Coherence*Web can be run in-process with the application server. This is where session data is stored with the application server. See "In-Process Topology" for more information on this topology.

For the application server:

  1. Start the application server in storage-enabled mode. Add the system property tangosol.coherence.session.localstorage=true to the Java options of your application server startup script.

  2. Deploy the coherence.jar and coherence-web.jar files as shared libraries.

  3. Deploy and run your application.

4.1.2.2 Deploying and Running Applications Out-of-Process

In the out-of-process deployment topology, a stand-alone cache server stores the session data and the application server is configured as a cache client. See "Out-of-Process Topology" for more information on this topology.

The cache server and the application server must use the same cache and session configuration. This configuration is generated in the default-session-cache-config.xml file by the Coherence*Web WebInstaller. The WebInstaller generates the file in the WEB-INF\classes directory of the instrumented application.

For the cache server:

  1. Add the tangosol.coherence.cacheconfig system property to the cache server startup script to locate the file configuration file. You must also include the system property tangosol.coherence.session.localstorage=true to enable storage for the cache server.

  2. Add the coherence.jar and coherence-web.jar files to the classpath in the cache server startup script.

    Following is a sample startup script:

    java -server -Xms512m -Xmx512m 
    -cp <Coherence installation dir>/lib/coherence.jar:<Coherence installation dir>/lib/coherence-web.jar -Dtangosol.coherence.management.remote=true -Dtangosol.coherence.cacheconfig=default-session-cache-config.xml 
    -Dtangosol.coherence.session.localstorage=true com.tangosol.net.DefaultCacheServer
    

For the application server (cache client):

  1. Deploy the coherence.jar and coherence-web.jar files as shared libraries.

  2. The default-session-cache-config.xml file should already be present in the WEB-INF\classes directory of the instrumented application.

    By default, the file should specify that local storage is disabled (if you are not sure, you can either inspect the file to confirm that the local-storage element is set to false or add the system property tangosol.coherence.session.localstorage=false to the startup script).

  3. Deploy the application to the server.

4.1.2.3 Migrating to Out-of-Process Topology

If you have been running and testing your application with Coherence*Web in-process, you can easily migrate to the out-of-process topology. Simply set up your cache server and application server as described in "Deploying and Running Applications Out-of-Process".

4.1.2.4 Deploying and Running Applications Out-of-Process with Coherence*Extend

The out-of-process with Coherence*Extend topology is similar to the out-of-process topology except that the communication between the application server tier and the cache server tier is over Coherence*Extend (TCP/IP). Coherence*Extend consists of two components: an extend client (or proxy) running outside the cluster and an extend proxy service running in the cluster hosted by one or more cache servers. See "Out-of-Process with Coherence*Extend Topology" for more information on this topology.

In these deployments, there are three types of participants:

  • Cache servers (storage servers), which are used to store the actual session data in memory.

  • Web (application) servers, which are the Extend clients in this topology. They are not members of the cluster; instead, they connect to a proxy node in the cluster that will issue requests to the cluster on their behalf.

  • Proxy servers, which are storage-disabled members (nodes) of the cluster that accept and manage TCP/IP connections from Extend clients. Requests that arrive from clients will be sent into the cluster, and responses will be sent back through the TCP/IP connections.

For the cache server:

Follow the instructions for configuring the cache server in "Deploying and Running Applications Out-of-Process". Also, edit the cache server's copy of the default-session-cache-config.xml file to add the system properties tangosol.coherence.session.proxy=false and tangosol.coherence.session.localstorage=true.

See "Configure the Cache for Proxy and Storage JVMs" for more information and an example of a default-session-cache-config.xml file with these context parameters.

For the Web tier (application) server:

Follow the instructions for configuring the application server in "Deploying and Running Applications Out-of-Process". Also, complete these steps:

  1. Ensure that Coherence*Web is configured to use the Optimistic Locking mode. Optimistic locking is the default locking mechanism for Coherence*Web (see"Optimistic Locking").

  2. Edit the application server's copy of the default-session-cache-config.xml file to add the proxy JVM host names, IP addresses and ports. To do this, add a <remote-addresses> section to the file. In most cases, you should include the host name and IP address, and port of all proxy JVMs for load balancing and failover.

See "Configure the Cache for Web Tier JVMs" for more information and an example of a default-session-cache-config.xml file with a <remote-addresses> section.

For the proxy server:

With a few changes, the proxy server can use the same cache and session configuration as the application server and the cache server. Edit the default-session-cache-config.xml file to add these system properties:

  • tangosol.coherence.session.localstorage=false to disable local storage.

  • tangosol.coherence.session.proxy=true to indicate that a proxy service is being used.

  • tangosol.coherence.session.proxy.localhost to indicate the host name or IP address of the NIC to which the proxy will bind.

  • tangosol.coherence.session.proxy.localport to indicate a unique port number to which the proxy will bind.

See "Configure the Cache for Proxy and Storage JVMs" for more information and an example of a default-session-cache-config.xml file with these context parameters.

4.1.3 Enabling Sticky Sessions for Apache Tomcat Servers

If you want to employ sticky sessions for the Apache Tomcat Server, you must configure the jvmRoute attribute in the server's server.xml file. You can find more information on this attribute at this URL:

http://tomcat.apache.org/connectors-doc/reference/workers.html

4.1.4 Decoding URL Session IDs for IBM WebSphere 7.n Servers

If set to true, the coherence-session-urldecode-bycontainer context parameter allows the container to decode the URL. This context parameter must be set to false if you are installing Coherence*Web for a Java EE application on release 7.n of the IBM WebSphere application server. Instead of the WebSphere application server, Coherence*Web will handle the decoding of session IDs.

The Coherence*Web WebInstaller, when run for the WebSphere 7.n application server type, will automatically set this parameter to false unless you explicitly set it to true.

4.2 Coherence*Web WebInstaller Ant Task

The Coherence*Web WebInstaller Ant task enables you to run the installer from within your existing Ant build files.

This section contains the following information:

4.2.1 Using the Coherence*Web WebInstaller Ant Task

To use the Coherence*Web WebInstaller Ant task, add the task import statement illustrated in Example 4-1 to your Ant build file. In this example, ${coherence.home} refers to the root directory of your Coherence installation.

Example 4-1 Task Import Statement for Coherence*Web WebInstaller

<taskdef name="cwi" classname="com.tangosol.coherence.misc.CoherenceWebAntTask">
    <classpath>
        <pathelement location="${coherence.home}/lib/webInstaller.jar"/>
    </classpath>
</taskdef>

The following procedure describes the basic process of installing Coherence*Web into a Java EE application from an Ant build:

  1. Build your Java EE application as you ordinarily would.

  2. Run the Coherence*Web Ant task with the operations attribute set to inspect.

  3. Make any necessary changes to the generated Coherence*Web XML descriptor file.

  4. Run the Coherence*Web Ant task with the operations attribute set to install.

Performing Iterative Development

If you are performing iterative development on your application, such as modifying JavaServer Pages (JSPs), Servlets, static resources, and so on, use the following installation process:

  1. Run the Coherence*Web Ant task with the operations attribute set to uninstall, the failonerror attribute set to false, and the descriptor attribute set to the location of the previously generated Coherence*Web XML descriptor file (from Step 2 of "Using the Coherence*Web WebInstaller Ant Task").

  2. Build your Java EE application as you ordinarily would.

  3. Run the Coherence*Web Ant task with the operations attribute set to inspect, and the install and descriptor attributes set to the location of the previously generated Coherence*Web XML descriptor file (from Step 2 of "Using the Coherence*Web WebInstaller Ant Task").

Changing the Coherence*Web Configuration Settings of a Java EE Application

If you must change the Coherence*Web configuration settings of a Java EE application that is using Coherence*Web, follow these steps:

  1. Run the Coherence*Web Ant task with the operations attribute set to uninstall and the descriptor attribute set to the location of the Coherence*Web XML descriptor file for the Java EE application.

  2. Change the necessary configuration parameters in the Coherence*Web XML descriptor file.

  3. Run the Coherence*Web Ant task with the operations attribute set to install and the descriptor attribute set to the location of the modified Coherence*Web XML descriptor file (from Step 2 of "Using the Coherence*Web WebInstaller Ant Task").

4.2.2 Configuring the WebInstaller Ant Task

Table 4-2 describes the attributes that can be used with the Coherence*Web WebInstaller Ant task.

Table 4-2 Coherence*Web WebInstaller Ant Task Attributes

AttributeDescriptionRequired?

app

Path to the target Java EE application. This can be a path to a WAR file, an EAR file, an expanded WAR directory, or an expanded EAR directory.

Yes, if the operations attribute is set to any value other than version.

backup

Path to a directory that holds a backup of the original target Java EE application. This attribute defaults to the directory that contains the Java EE application.

No

descriptor

Path to the Coherence*Web XML descriptor file. This attribute defaults to the coherence-web.xml file in the directory that contains the target Java EE application.

No

failonerror

Stops the Ant build if the Coherence*Web installer exits with a status other than 0. The default is true.

No

nowarn

Suppresses warning messages. This attribute can be either true or false. The default is false.

No

operations

A comma- or space-separated list of operations to perform; each operation must be one of inspect, install, uninstall, or version.

Yes

server

The alias of the target Java EE application server.

No

touch

Touches JSPs and TLDs that are modified by the Coherence*Web installer. This attribute can be either true, false, or M/d/y h:mm a' The default is false.

No

verbose

Displays verbose output. This attribute can be either true or false. The default is false.

No


4.2.3 WebInstaller Ant Task Examples

The following list provides sample commands for the WebInstaller Ant task.

  • Inspect the myWebApp.war Web application and generate a Coherence*Web XML descriptor file called my-coherence-web.xml in the current working directory:

    <cwi app="myWebApp.war" operations="inspect" descriptor="my-coherence-web.xml"/>
    
  • Install Coherence*Web into the myWebApp.war Web application using the Coherence*Web XML descriptor file called my-coherence-web.xml found in the current working directory:

    <cwi app="myWebApp.war" operations="install" descriptor="my-coherence-web.xml"/>
    
  • Uninstall Coherence*Web from the myWebApp.war Web application:

    <cwi app="myWebApp.war" operations="uninstall">
    
  • Install Coherence*Web into the myWebApp.war Web application located in the /dev/myWebApp/build directory using the Coherence*Web XML descriptor file called my-coherence-web.xml found in the /dev/myWebApp/src directory, and place a backup of the original Web application in the /dev/myWebApp/work directory:

    <cwi app="/dev/myWebApp/build/myWebApp.war" operations="install" descriptor="/dev/myWebApp/src/my-coherence-web.xml" backup="/dev/myWebApp/work"/>
    
  • Install Coherence*Web into the myWebApp.war Web application located in the /dev/myWebApp/build directory using the Coherence*Web XML descriptor file called coherence-web.xml found in the /dev/myWebApp/build directory. If the Web application has not already been inspected (that is, /dev/myWebApp/build/coherence-web.xml does not exists); inspect the Web application before installing Coherence*Web:

    <cwi app="/dev/myWebApp/build/myWebApp.war" operations="inspect,install"/>
    
  • Reinstall Coherence*Web into the myWebApp.war Web application located in the /dev/myWebApp/build directory, using the Coherence*Web XML descriptor file called my-coherence-web.xml found in the /dev/myWebApp/src directory:

    <cwi app="/dev/myWebApp/build/myWebApp.war" operations="uninstall,install" descriptor="/dev/myWebApp/src/my-coherence-web.xml"/>
    

4.3 Testing HTTP Session Management

Coherence comes with a lightweight software load balancer; it is intended only for testing purposes. The load balancer is very easy to use and is very useful when testing functionality such as session management. Follow these steps to test HTTP session management with the lightweight load balancer:

  1. Start multiple application server processes on one or more server machines, each running your application on a unique IP address and port combination.

  2. Open a command (or shell) window.

  3. Change the current directory to the Coherence library directory (%COHERENCE_HOME%\lib on Windows and $COHERENCE_HOME/lib on UNIX).

  4. Ensure that paths are configured so that Java commands will run.

  5. Start the software load balancer with the following command lines (each of these command lines makes the application available on the default HTTP port 80).

    For example, to test load balancing locally on one machine with two application server instances on ports 7001 and 7002:

    java -jar coherence-loadbalancer.jar localhost:80 localhost:7001 localhost:7002
    

    To run the load balancer locally on a machine named server1 that load balances to port 7001 on server1, server2, and server3:

    java -jar coherence-loadbalancer.jar server1:80 server1:7001 server2:7001 server3:7001
    

    Assuming that you use the preceding command line, an application that previously was accessed with the URL http://server1:7001/my.jsp would now be accessed with the URL http://server1:80/my.jsp or just http://server1/my.jsp.


    Note:

    Ensure that your application uses only relative redirections or the address of the load balancer.


    Table 4-3 describes the command-line options for the load balancer:

    Table 4-3 Load Balancer Command-Line Options

    OptionDescription

    backlog

    Sets the TCP/ IP accept backlog option to the specified value, for example: -backlog=64

    random

    Specifies the use of a random load-balancing algorithm (default).

    roundrobin

    Specifies the use of a round-robin load-balancing algorithm

    threads

    Uses the specified number of request or response thread pairs (so the total number of additional daemon threads will be two times the specified value), for example: -threads=64.


4.4 How the Coherence*Web WebInstaller Instruments a Java EE Application

During the inspection step, the Coherence*Web WebInstaller performs the following tasks:

  1. Generates a template coherence-web.xml configuration file that contains basic information about the application and target Web container along with a set of default Coherence*Web configuration context parameters appropriate for the target Web container. See Appendix A, "Coherence*Web Context Parameters" for descriptions of all possible parameters.

    The WebInstaller sets the servlet container to start in storage-disabled mode (that is, it sets tangosol.coherence.session.localstorage to false).

    If an existing coherence-web.xml configuration file exists (for example, from a previous run of the Coherence*Web WebInstaller), the context parameters in the existing file are merged with those in the generated template.

  2. Enumerates the JSP from each Web application in the target Java EE application and adds information about each JSP to the coherence-web.xml configuration file.

  3. Enumerates the TLDs from each Web application in the target Java EE application and adds information about each TLD to the coherence-web.xml configuration file.

During the installation step, the Coherence*Web WebInstaller performs the following tasks:

  1. Creates a backup of the original Java EE application so that it can be restored during the uninstallation step.

  2. Adds the Coherence*Web configuration context parameters generated in Step 1 of the inspection step to the web.xml descriptor file of each Web application contained in the target Java EE application.

  3. Unregisters any application-specific ServletContextListener, ServletContextAttributeListener, ServletRequestListener, ServletRequestAttributeListener, HttpSessionListener, and HttpSessionAttributeListener classes (including those registered by TLDs) from each Web application.

  4. Registers a Coherence*Web ServletContextListener class in each web.xml descriptor file. At run time, the Coherence*Web ServletContextListener class propagates each ServletContextEvent event to each application-specific ServletContextListener listener.

  5. Registers a Coherence*Web ServletContextAttributeListener listener in each web.xml descriptor file. At run time, the Coherence*Web ServletContextAttributeListener propagates each ServletContextAttributeEvent event to each application-specific ServletContextAttributeListener listener.

  6. Wraps each application-specific Servlet declared in each web.xml descriptor file with a Coherence*Web SessionServlet. At run time, each Coherence*Web SessionServlet delegates to the wrapped Servlet.

  7. Adds the following directive to each JSP enumerated in Step 2 of the inspection step:

    <%@ page extends="com.tangosol.coherence.servlet.api22.JspServlet" %>
    

During the uninstallation step, the Coherence*Web WebInstaller replaces the instrumented Java EE application with the backup of the original version created in Step (1) of the installation process.

4.5 Installing Coherence*Web into Applications Using Java EE Security


Note:

This section does not apply to the native WebLogic Server SPI implementation of Coherence*Web. It applies only if you are using the WebInstaller to install Coherence*Web into an application that uses Java EE security. For instructions on using the SPI implementation, see Chapter 2, "Using Coherence*Web with WebLogic Server."


To install Coherence*Web into an application that uses Java EE security, follow these additional steps during installation:

  1. Enable Coherence*Web session cookies.

    See the coherence-session-cookies-enabled configuration element in Table A-1 for additional details.

  2. Change the Coherence*Web session cookie name to a name that is different from the one used by the target Web container.

    By default, most containers use JSESSIONID for the session cookie name, so a good choice for the Coherence*Web session cookie name is CSESSIONID. See the coherence-session-cookie-name configuration element in Table A-1 for additional details.

  3. Enable session replication for the target Web container.

    If session replication is not enabled, or the container does not support a form of session replication, then you will be forced to re-authenticate to the Web application during failover. See your Web container's documentation for instructions on enabling session replication.

This configuration causes two sessions to be associated with a given authenticated user:

  • A Coherence*Web session that contains all session data created by the Web application

  • A session created by the Web container during authentication that stores only information necessary to identify the user

4.6 Preventing Cross-Site Scripting Attacks

Use the coherence-session-cookie-httponly context parameter to append the HttpOnly attribute to the session cookie. The HttpOnly attribute is used to help prevent attacks such as cross-site scripting, since it does not allow the cookie to be accessed by a client-side script such as JavaScript. Note that not all browsers support this functionality. This context parameter is available for instrumented applications only.