web/wp-includes/post.php
branchwordpress
changeset 132 4d4862461b8d
parent 109 03b0d1493584
--- a/web/wp-includes/post.php	Tue Feb 02 14:45:47 2010 +0000
+++ b/web/wp-includes/post.php	Tue Feb 02 15:44:16 2010 +0000
@@ -1,3794 +1,4036 @@
-<?php
-/**
- * Post functions and post utility function.
- *
- * @package WordPress
- * @subpackage Post
- * @since 1.5.0
- */
-
-/**
- * Retrieve attached file path based on attachment ID.
- *
- * You can optionally send it through the 'get_attached_file' filter, but by
- * default it will just return the file path unfiltered.
- *
- * The function works by getting the single post meta name, named
- * '_wp_attached_file' and returning it. This is a convenience function to
- * prevent looking up the meta name and provide a mechanism for sending the
- * attached filename through a filter.
- *
- * @since 2.0.0
- * @uses apply_filters() Calls 'get_attached_file' on file path and attachment ID.
- *
- * @param int $attachment_id Attachment ID.
- * @param bool $unfiltered Whether to apply filters or not.
- * @return string The file path to the attached file.
- */
-function get_attached_file( $attachment_id, $unfiltered = false ) {
-	$file = get_post_meta( $attachment_id, '_wp_attached_file', true );
-	// If the file is relative, prepend upload dir
-	if ( 0 !== strpos($file, '/') && !preg_match('|^.:\\\|', $file) && ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) )
-		$file = $uploads['basedir'] . "/$file";
-	if ( $unfiltered )
-		return $file;
-	return apply_filters( 'get_attached_file', $file, $attachment_id );
-}
-
-/**
- * Update attachment file path based on attachment ID.
- *
- * Used to update the file path of the attachment, which uses post meta name
- * '_wp_attached_file' to store the path of the attachment.
- *
- * @since 2.1.0
- * @uses apply_filters() Calls 'update_attached_file' on file path and attachment ID.
- *
- * @param int $attachment_id Attachment ID
- * @param string $file File path for the attachment
- * @return bool False on failure, true on success.
- */
-function update_attached_file( $attachment_id, $file ) {
-	if ( !get_post( $attachment_id ) )
-		return false;
-
-	$file = apply_filters( 'update_attached_file', $file, $attachment_id );
-
-	// Make the file path relative to the upload dir
-	if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) { // Get upload directory
-		if ( 0 === strpos($file, $uploads['basedir']) ) {// Check that the upload base exists in the file path
-				$file = str_replace($uploads['basedir'], '', $file); // Remove upload dir from the file path
-				$file = ltrim($file, '/');
-		}
-	}
-
-	return update_post_meta( $attachment_id, '_wp_attached_file', $file );
-}
-
-/**
- * Retrieve all children of the post parent ID.
- *
- * Normally, without any enhancements, the children would apply to pages. In the
- * context of the inner workings of WordPress, pages, posts, and attachments
- * share the same table, so therefore the functionality could apply to any one
- * of them. It is then noted that while this function does not work on posts, it
- * does not mean that it won't work on posts. It is recommended that you know
- * what context you wish to retrieve the children of.
- *
- * Attachments may also be made the child of a post, so if that is an accurate
- * statement (which needs to be verified), it would then be possible to get
- * all of the attachments for a post. Attachments have since changed since
- * version 2.5, so this is most likely unaccurate, but serves generally as an
- * example of what is possible.
- *
- * The arguments listed as defaults are for this function and also of the
- * {@link get_posts()} function. The arguments are combined with the
- * get_children defaults and are then passed to the {@link get_posts()}
- * function, which accepts additional arguments. You can replace the defaults in
- * this function, listed below and the additional arguments listed in the
- * {@link get_posts()} function.
- *
- * The 'post_parent' is the most important argument and important attention
- * needs to be paid to the $args parameter. If you pass either an object or an
- * integer (number), then just the 'post_parent' is grabbed and everything else
- * is lost. If you don't specify any arguments, then it is assumed that you are
- * in The Loop and the post parent will be grabbed for from the current post.
- *
- * The 'post_parent' argument is the ID to get the children. The 'numberposts'
- * is the amount of posts to retrieve that has a default of '-1', which is
- * used to get all of the posts. Giving a number higher than 0 will only
- * retrieve that amount of posts.
- *
- * The 'post_type' and 'post_status' arguments can be used to choose what
- * criteria of posts to retrieve. The 'post_type' can be anything, but WordPress
- * post types are 'post', 'pages', and 'attachments'. The 'post_status'
- * argument will accept any post status within the write administration panels.
- *
- * @see get_posts() Has additional arguments that can be replaced.
- * @internal Claims made in the long description might be inaccurate.
- *
- * @since 2.0.0
- *
- * @param mixed $args Optional. User defined arguments for replacing the defaults.
- * @param string $output Optional. Constant for return type, either OBJECT (default), ARRAY_A, ARRAY_N.
- * @return array|bool False on failure and the type will be determined by $output parameter.
- */
-function &get_children($args = '', $output = OBJECT) {
-	if ( empty( $args ) ) {
-		if ( isset( $GLOBALS['post'] ) ) {
-			$args = array('post_parent' => (int) $GLOBALS['post']->post_parent );
-		} else {
-			return false;
-		}
-	} elseif ( is_object( $args ) ) {
-		$args = array('post_parent' => (int) $args->post_parent );
-	} elseif ( is_numeric( $args ) ) {
-		$args = array('post_parent' => (int) $args);
-	}
-
-	$defaults = array(
-		'numberposts' => -1, 'post_type' => 'any',
-		'post_status' => 'any', 'post_parent' => 0,
-	);
-
-	$r = wp_parse_args( $args, $defaults );
-
-	$children = get_posts( $r );
-	if ( !$children ) {
-		$kids = false;
-		return $kids;
-	}
-
-	update_post_cache($children);
-
-	foreach ( $children as $key => $child )
-		$kids[$child->ID] =& $children[$key];
-
-	if ( $output == OBJECT ) {
-		return $kids;
-	} elseif ( $output == ARRAY_A ) {
-		foreach ( (array) $kids as $kid )
-			$weeuns[$kid->ID] = get_object_vars($kids[$kid->ID]);
-		return $weeuns;
-	} elseif ( $output == ARRAY_N ) {
-		foreach ( (array) $kids as $kid )
-			$babes[$kid->ID] = array_values(get_object_vars($kids[$kid->ID]));
-		return $babes;
-	} else {
-		return $kids;
-	}
-}
-
-/**
- * Get extended entry info (<!--more-->).
- *
- * There should not be any space after the second dash and before the word
- * 'more'. There can be text or space(s) after the word 'more', but won't be
- * referenced.
- *
- * The returned array has 'main' and 'extended' keys. Main has the text before
- * the <code><!--more--></code>. The 'extended' key has the content after the
- * <code><!--more--></code> comment.
- *
- * @since 1.0.0
- *
- * @param string $post Post content.
- * @return array Post before ('main') and after ('extended').
- */
-function get_extended($post) {
-	//Match the new style more links
-	if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
-		list($main, $extended) = explode($matches[0], $post, 2);
-	} else {
-		$main = $post;
-		$extended = '';
-	}
-
-	// Strip leading and trailing whitespace
-	$main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
-	$extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
-
-	return array('main' => $main, 'extended' => $extended);
-}
-
-/**
- * Retrieves post data given a post ID or post object.
- *
- * See {@link sanitize_post()} for optional $filter values. Also, the parameter
- * $post, must be given as a variable, since it is passed by reference.
- *
- * @since 1.5.1
- * @uses $wpdb
- * @link http://codex.wordpress.org/Function_Reference/get_post
- *
- * @param int|object $post Post ID or post object.
- * @param string $output Optional, default is Object. Either OBJECT, ARRAY_A, or ARRAY_N.
- * @param string $filter Optional, default is raw.
- * @return mixed Post data
- */
-function &get_post(&$post, $output = OBJECT, $filter = 'raw') {
-	global $wpdb;
-	$null = null;
-
-	if ( empty($post) ) {
-		if ( isset($GLOBALS['post']) )
-			$_post = & $GLOBALS['post'];
-		else
-			return $null;
-	} elseif ( is_object($post) && empty($post->filter) ) {
-		_get_post_ancestors($post);
-		wp_cache_add($post->ID, $post, 'posts');
-		$_post = &$post;
-	} else {
-		if ( is_object($post) )
-			$post = $post->ID;
-		$post = (int) $post;
-		if ( ! $_post = wp_cache_get($post, 'posts') ) {
-			$_post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post));
-			if ( ! $_post )
-				return $null;
-			_get_post_ancestors($_post);
-			wp_cache_add($_post->ID, $_post, 'posts');
-		}
-	}
-
-	$_post = sanitize_post($_post, $filter);
-
-	if ( $output == OBJECT ) {
-		return $_post;
-	} elseif ( $output == ARRAY_A ) {
-		$__post = get_object_vars($_post);
-		return $__post;
-	} elseif ( $output == ARRAY_N ) {
-		$__post = array_values(get_object_vars($_post));
-		return $__post;
-	} else {
-		return $_post;
-	}
-}
-
-/**
- * Retrieve ancestors of a post.
- *
- * @since 2.5.0
- *
- * @param int|object $post Post ID or post object
- * @return array Ancestor IDs or empty array if none are found.
- */
-function get_post_ancestors($post) {
-	$post = get_post($post);
-
-	if ( !empty($post->ancestors) )
-		return $post->ancestors;
-
-	return array();
-}
-
-/**
- * Retrieve data from a post field based on Post ID.
- *
- * Examples of the post field will be, 'post_type', 'post_status', 'content',
- * etc and based off of the post object property or key names.
- *
- * The context values are based off of the taxonomy filter functions and
- * supported values are found within those functions.
- *
- * @since 2.3.0
- * @uses sanitize_post_field() See for possible $context values.
- *
- * @param string $field Post field name
- * @param id $post Post ID
- * @param string $context Optional. How to filter the field. Default is display.
- * @return WP_Error|string Value in post field or WP_Error on failure
- */
-function get_post_field( $field, $post, $context = 'display' ) {
-	$post = (int) $post;
-	$post = get_post( $post );
-
-	if ( is_wp_error($post) )
-		return $post;
-
-	if ( !is_object($post) )
-		return '';
-
-	if ( !isset($post->$field) )
-		return '';
-
-	return sanitize_post_field($field, $post->$field, $post->ID, $context);
-}
-
-/**
- * Retrieve the mime type of an attachment based on the ID.
- *
- * This function can be used with any post type, but it makes more sense with
- * attachments.
- *
- * @since 2.0.0
- *
- * @param int $ID Optional. Post ID.
- * @return bool|string False on failure or returns the mime type
- */
-function get_post_mime_type($ID = '') {
-	$post = & get_post($ID);
-
-	if ( is_object($post) )
-		return $post->post_mime_type;
-
-	return false;
-}
-
-/**
- * Retrieve the post status based on the Post ID.
- *
- * If the post ID is of an attachment, then the parent post status will be given
- * instead.
- *
- * @since 2.0.0
- *
- * @param int $ID Post ID
- * @return string|bool Post status or false on failure.
- */
-function get_post_status($ID = '') {
-	$post = get_post($ID);
-
-	if ( is_object($post) ) {
-		if ( ('attachment' == $post->post_type) && $post->post_parent && ($post->ID != $post->post_parent) )
-			return get_post_status($post->post_parent);
-		else
-			return $post->post_status;
-	}
-
-	return false;
-}
-
-/**
- * Retrieve all of the WordPress supported post statuses.
- *
- * Posts have a limited set of valid status values, this provides the
- * post_status values and descriptions.
- *
- * @since 2.5.0
- *
- * @return array List of post statuses.
- */
-function get_post_statuses( ) {
-	$status = array(
-		'draft'			=> __('Draft'),
-		'pending'		=> __('Pending Review'),
-		'private'		=> __('Private'),
-		'publish'		=> __('Published')
-	);
-
-	return $status;
-}
-
-/**
- * Retrieve all of the WordPress support page statuses.
- *
- * Pages have a limited set of valid status values, this provides the
- * post_status values and descriptions.
- *
- * @since 2.5.0
- *
- * @return array List of page statuses.
- */
-function get_page_statuses( ) {
-	$status = array(
-		'draft'			=> __('Draft'),
-		'private'		=> __('Private'),
-		'publish'		=> __('Published')
-	);
-
-	return $status;
-}
-
-/**
- * Retrieve the post type of the current post or of a given post.
- *
- * @since 2.1.0
- *
- * @uses $wpdb
- * @uses $posts The Loop post global
- *
- * @param mixed $post Optional. Post object or post ID.
- * @return bool|string post type or false on failure.
- */
-function get_post_type($post = false) {
-	global $posts;
-
-	if ( false === $post )
-		$post = $posts[0];
-	elseif ( (int) $post )
-		$post = get_post($post, OBJECT);
-
-	if ( is_object($post) )
-		return $post->post_type;
-
-	return false;
-}
-
-/**
- * Updates the post type for the post ID.
- *
- * The page or post cache will be cleaned for the post ID.
- *
- * @since 2.5.0
- *
- * @uses $wpdb
- *
- * @param int $post_id Post ID to change post type. Not actually optional.
- * @param string $post_type Optional, default is post. Supported values are 'post' or 'page' to
- *  name a few.
- * @return int Amount of rows changed. Should be 1 for success and 0 for failure.
- */
-function set_post_type( $post_id = 0, $post_type = 'post' ) {
-	global $wpdb;
-
-	$post_type = sanitize_post_field('post_type', $post_type, $post_id, 'db');
-	$return = $wpdb->update($wpdb->posts, array('post_type' => $post_type), array('ID' => $post_id) );
-
-	if ( 'page' == $post_type )
-		clean_page_cache($post_id);
-	else
-		clean_post_cache($post_id);
-
-	return $return;
-}
-
-/**
- * Retrieve list of latest posts or posts matching criteria.
- *
- * The defaults are as follows:
- *     'numberposts' - Default is 5. Total number of posts to retrieve.
- *     'offset' - Default is 0. See {@link WP_Query::query()} for more.
- *     'category' - What category to pull the posts from.
- *     'orderby' - Default is 'post_date'. How to order the posts.
- *     'order' - Default is 'DESC'. The order to retrieve the posts.
- *     'include' - See {@link WP_Query::query()} for more.
- *     'exclude' - See {@link WP_Query::query()} for more.
- *     'meta_key' - See {@link WP_Query::query()} for more.
- *     'meta_value' - See {@link WP_Query::query()} for more.
- *     'post_type' - Default is 'post'. Can be 'page', or 'attachment' to name a few.
- *     'post_parent' - The parent of the post or post type.
- *     'post_status' - Default is 'published'. Post status to retrieve.
- *
- * @since 1.2.0
- * @uses $wpdb
- * @uses WP_Query::query() See for more default arguments and information.
- * @link http://codex.wordpress.org/Template_Tags/get_posts
- *
- * @param array $args Optional. Overrides defaults.
- * @return array List of posts.
- */
-function get_posts($args = null) {
-	$defaults = array(
-		'numberposts' => 5, 'offset' => 0,
-		'category' => 0, 'orderby' => 'post_date',
-		'order' => 'DESC', 'include' => '',
-		'exclude' => '', 'meta_key' => '',
-		'meta_value' =>'', 'post_type' => 'post',
-		'suppress_filters' => true
-	);
-
-	$r = wp_parse_args( $args, $defaults );
-	if ( empty( $r['post_status'] ) )
-		$r['post_status'] = ( 'attachment' == $r['post_type'] ) ? 'inherit' : 'publish';
-	if ( ! empty($r['numberposts']) )
-		$r['posts_per_page'] = $r['numberposts'];
-	if ( ! empty($r['category']) )
-		$r['cat'] = $r['category'];
-	if ( ! empty($r['include']) ) {
-		$incposts = preg_split('/[\s,]+/',$r['include']);
-		$r['posts_per_page'] = count($incposts);  // only the number of posts included
-		$r['post__in'] = $incposts;
-	} elseif ( ! empty($r['exclude']) )
-		$r['post__not_in'] = preg_split('/[\s,]+/',$r['exclude']);
-
-	$r['caller_get_posts'] = true;
-
-	$get_posts = new WP_Query;
-	return $get_posts->query($r);
-
-}
-
-//
-// Post meta functions
-//
-
-/**
- * Add meta data field to a post.
- *
- * Post meta data is called "Custom Fields" on the Administration Panels.
- *
- * @since 1.5.0
- * @uses $wpdb
- * @link http://codex.wordpress.org/Function_Reference/add_post_meta
- *
- * @param int $post_id Post ID.
- * @param string $key Metadata name.
- * @param mixed $value Metadata value.
- * @param bool $unique Optional, default is false. Whether the same key should not be added.
- * @return bool False for failure. True for success.
- */
-function add_post_meta($post_id, $meta_key, $meta_value, $unique = false) {
-	if ( !$meta_key )
-		return false;
-
-	global $wpdb;
-
-	// make sure meta is added to the post, not a revision
-	if ( $the_post = wp_is_post_revision($post_id) )
-		$post_id = $the_post;
-
-	// expected_slashed ($meta_key)
-	$meta_key = stripslashes($meta_key);
-
-	if ( $unique && $wpdb->get_var( $wpdb->prepare( "SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) ) )
-		return false;
-
-	$meta_value = maybe_serialize( stripslashes_deep($meta_value) );
-
-	$wpdb->insert( $wpdb->postmeta, compact( 'post_id', 'meta_key', 'meta_value' ) );
-
-	wp_cache_delete($post_id, 'post_meta');
-
-	return true;
-}
-
-/**
- * Remove metadata matching criteria from a post.
- *
- * You can match based on the key, or key and value. Removing based on key and
- * value, will keep from removing duplicate metadata with the same key. It also
- * allows removing all metadata matching key, if needed.
- *
- * @since 1.5.0
- * @uses $wpdb
- * @link http://codex.wordpress.org/Function_Reference/delete_post_meta
- *
- * @param int $post_id post ID
- * @param string $meta_key Metadata name.
- * @param mixed $meta_value Optional. Metadata value.
- * @return bool False for failure. True for success.
- */
-function delete_post_meta($post_id, $meta_key, $meta_value = '') {
-	global $wpdb;
-
-	// make sure meta is added to the post, not a revision
-	if ( $the_post = wp_is_post_revision($post_id) )
-		$post_id = $the_post;
-
-	// expected_slashed ($meta_key, $meta_value)
-	$meta_key = stripslashes( $meta_key );
-	$meta_value = maybe_serialize( stripslashes_deep($meta_value) );
-
-	if ( !$meta_key )
-		return false;
-
-	if ( empty( $meta_value ) )
-		$meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key ) );
-	else
-		$meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value = %s", $post_id, $meta_key, $meta_value ) );
-
-	if ( !$meta_id )
-		return false;
-
-	if ( empty( $meta_value ) )
-		$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key ) );
-	else
-		$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value = %s", $post_id, $meta_key, $meta_value ) );
-
-	wp_cache_delete($post_id, 'post_meta');
-
-	return true;
-}
-
-/**
- * Retrieve post meta field for a post.
- *
- * @since 1.5.0
- * @uses $wpdb
- * @link http://codex.wordpress.org/Function_Reference/get_post_meta
- *
- * @param int $post_id Post ID.
- * @param string $key The meta key to retrieve.
- * @param bool $single Whether to return a single value.
- * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
- *  is true.
- */
-function get_post_meta($post_id, $key, $single = false) {
-	if ( !$key )
-		return '';
-
-	$post_id = (int) $post_id;
-
-	$meta_cache = wp_cache_get($post_id, 'post_meta');
-
-	if ( !$meta_cache ) {
-		update_postmeta_cache($post_id);
-		$meta_cache = wp_cache_get($post_id, 'post_meta');
-	}
-
-	if ( isset($meta_cache[$key]) ) {
-		if ( $single ) {
-			return maybe_unserialize( $meta_cache[$key][0] );
-		} else {
-			return array_map('maybe_unserialize', $meta_cache[$key]);
-		}
-	}
-
-	return '';
-}
-
-/**
- * Update post meta field based on post ID.
- *
- * Use the $prev_value parameter to differentiate between meta fields with the
- * same key and post ID.
- *
- * If the meta field for the post does not exist, it will be added.
- *
- * @since 1.5
- * @uses $wpdb
- * @link http://codex.wordpress.org/Function_Reference/update_post_meta
- *
- * @param int $post_id Post ID.
- * @param string $key Metadata key.
- * @param mixed $value Metadata value.
- * @param mixed $prev_value Optional. Previous value to check before removing.
- * @return bool False on failure, true if success.
- */
-function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '') {
-	global $wpdb;
-
-	// make sure meta is added to the post, not a revision
-	if ( $the_post = wp_is_post_revision($post_id) )
-		$post_id = $the_post;
-
-	// expected_slashed ($meta_key)
-	$meta_key = stripslashes($meta_key);
-
-	if ( !$meta_key )
-		return false;
-
-	if ( ! $wpdb->get_var( $wpdb->prepare( "SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) ) ) {
-		return add_post_meta($post_id, $meta_key, $meta_value);
-	}
-
-	$meta_value = maybe_serialize( stripslashes_deep($meta_value) );
-
-	$data  = compact( 'meta_value' );
-	$where = compact( 'meta_key', 'post_id' );
-
-	if ( !empty( $prev_value ) ) {
-		$prev_value = maybe_serialize($prev_value);
-		$where['meta_value'] = $prev_value;
-	}
-
-	$wpdb->update( $wpdb->postmeta, $data, $where );
-	wp_cache_delete($post_id, 'post_meta');
-	return true;
-}
-
-/**
- * Delete everything from post meta matching meta key.
- *
- * @since 2.3.0
- * @uses $wpdb
- *
- * @param string $post_meta_key Key to search for when deleting.
- * @return bool Whether the post meta key was deleted from the database
- */
-function delete_post_meta_by_key($post_meta_key) {
-	if ( !$post_meta_key )
-		return false;
-
-	global $wpdb;
-	$post_ids = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key));
-	if ( $post_ids ) {
-		$wpdb->query($wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key));
-		foreach ( $post_ids as $post_id )
-			wp_cache_delete($post_id, 'post_meta');
-		return true;
-	}
-	return false;
-}
-
-/**
- * Retrieve post meta fields, based on post ID.
- *
- * The post meta fields are retrieved from the cache, so the function is
- * optimized to be called more than once. It also applies to the functions, that
- * use this function.
- *
- * @since 1.2.0
- * @link http://codex.wordpress.org/Function_Reference/get_post_custom
- *
- * @uses $id Current Loop Post ID
- *
- * @param int $post_id post ID
- * @return array
- */
-function get_post_custom($post_id = 0) {
-	global $id;
-
-	if ( !$post_id )
-		$post_id = (int) $id;
-
-	$post_id = (int) $post_id;
-
-	if ( ! wp_cache_get($post_id, 'post_meta') )
-		update_postmeta_cache($post_id);
-
-	return wp_cache_get($post_id, 'post_meta');
-}
-
-/**
- * Retrieve meta field names for a post.
- *
- * If there are no meta fields, then nothing (null) will be returned.
- *
- * @since 1.2.0
- * @link http://codex.wordpress.org/Function_Reference/get_post_custom_keys
- *
- * @param int $post_id post ID
- * @return array|null Either array of the keys, or null if keys could not be retrieved.
- */
-function get_post_custom_keys( $post_id = 0 ) {
-	$custom = get_post_custom( $post_id );
-
-	if ( !is_array($custom) )
-		return;
-
-	if ( $keys = array_keys($custom) )
-		return $keys;
-}
-
-/**
- * Retrieve values for a custom post field.
- *
- * The parameters must not be considered optional. All of the post meta fields
- * will be retrieved and only the meta field key values returned.
- *
- * @since 1.2.0
- * @link http://codex.wordpress.org/Function_Reference/get_post_custom_values
- *
- * @param string $key Meta field key.
- * @param int $post_id Post ID
- * @return array Meta field values.
- */
-function get_post_custom_values( $key = '', $post_id = 0 ) {
-	if ( !$key )
-		return null;
-
-	$custom = get_post_custom($post_id);
-
-	return isset($custom[$key]) ? $custom[$key] : null;
-}
-
-/**
- * Check if post is sticky.
- *
- * Sticky posts should remain at the top of The Loop. If the post ID is not
- * given, then The Loop ID for the current post will be used.
- *
- * @since 2.7.0
- *
- * @param int $post_id Optional. Post ID.
- * @return bool Whether post is sticky (true) or not sticky (false).
- */
-function is_sticky($post_id = null) {
-	global $id;
-
-	$post_id = absint($post_id);
-
-	if ( !$post_id )
-		$post_id = absint($id);
-
-	$stickies = get_option('sticky_posts');
-
-	if ( !is_array($stickies) )
-		return false;
-
-	if ( in_array($post_id, $stickies) )
-		return true;
-
-	return false;
-}
-
-/**
- * Sanitize every post field.
- *
- * If the context is 'raw', then the post object or array will get minimal santization of the int fields.
- *
- * @since 2.3.0
- * @uses sanitize_post_field() Used to sanitize the fields.
- *
- * @param object|array $post The Post Object or Array
- * @param string $context Optional, default is 'display'. How to sanitize post fields.
- * @return object|array The now sanitized Post Object or Array (will be the same type as $post)
- */
-function sanitize_post($post, $context = 'display') {
-	if ( is_object($post) ) {
-		if ( !isset($post->ID) )
-			$post->ID = 0;
-		foreach ( array_keys(get_object_vars($post)) as $field )
-			$post->$field = sanitize_post_field($field, $post->$field, $post->ID, $context);
-		$post->filter = $context;
-	} else {
-		if ( !isset($post['ID']) )
-			$post['ID'] = 0;
-		foreach ( array_keys($post) as $field )
-			$post[$field] = sanitize_post_field($field, $post[$field], $post['ID'], $context);
-		$post['filter'] = $context;
-	}
-
-	return $post;
-}
-
-/**
- * Sanitize post field based on context.
- *
- * Possible context values are:  'raw', 'edit', 'db', 'display', 'attribute' and 'js'. The
- * 'display' context is used by default. 'attribute' and 'js' contexts are treated like 'display'
- * when calling filters.
- *
- * @since 2.3.0
- * @uses apply_filters() Calls 'edit_$field' and '${field_no_prefix}_edit_pre' passing $value and
- *  $post_id if $context == 'edit' and field name prefix == 'post_'.
- *
- * @uses apply_filters() Calls 'edit_post_$field' passing $value and $post_id if $context == 'db'.
- * @uses apply_filters() Calls 'pre_$field' passing $value if $context == 'db' and field name prefix == 'post_'.
- * @uses apply_filters() Calls '${field}_pre' passing $value if $context == 'db' and field name prefix != 'post_'.
- *
- * @uses apply_filters() Calls '$field' passing $value, $post_id and $context if $context == anything
- *  other than 'raw', 'edit' and 'db' and field name prefix == 'post_'.
- * @uses apply_filters() Calls 'post_$field' passing $value if $context == anything other than 'raw',
- *  'edit' and 'db' and field name prefix != 'post_'.
- *
- * @param string $field The Post Object field name.
- * @param mixed $value The Post Object value.
- * @param int $post_id Post ID.
- * @param string $context How to sanitize post fields. Looks for 'raw', 'edit', 'db', 'display',
- *               'attribute' and 'js'.
- * @return mixed Sanitized value.
- */
-function sanitize_post_field($field, $value, $post_id, $context) {
-	$int_fields = array('ID', 'post_parent', 'menu_order');
-	if ( in_array($field, $int_fields) )
-		$value = (int) $value;
-
-	if ( 'raw' == $context )
-		return $value;
-
-	$prefixed = false;
-	if ( false !== strpos($field, 'post_') ) {
-		$prefixed = true;
-		$field_no_prefix = str_replace('post_', '', $field);
-	}
-
-	if ( 'edit' == $context ) {
-		$format_to_edit = array('post_content', 'post_excerpt', 'post_title', 'post_password');
-
-		if ( $prefixed ) {
-			$value = apply_filters("edit_$field", $value, $post_id);
-			// Old school
-			$value = apply_filters("${field_no_prefix}_edit_pre", $value, $post_id);
-		} else {
-			$value = apply_filters("edit_post_$field", $value, $post_id);
-		}
-
-		if ( in_array($field, $format_to_edit) ) {
-			if ( 'post_content' == $field )
-				$value = format_to_edit($value, user_can_richedit());
-			else
-				$value = format_to_edit($value);
-		} else {
-			$value = esc_attr($value);
-		}
-	} else if ( 'db' == $context ) {
-		if ( $prefixed ) {
-			$value = apply_filters("pre_$field", $value);
-			$value = apply_filters("${field_no_prefix}_save_pre", $value);
-		} else {
-			$value = apply_filters("pre_post_$field", $value);
-			$value = apply_filters("${field}_pre", $value);
-		}
-	} else {
-		// Use display filters by default.
-		if ( $prefixed )
-			$value = apply_filters($field, $value, $post_id, $context);
-		else
-			$value = apply_filters("post_$field", $value, $post_id, $context);
-	}
-
-	if ( 'attribute' == $context )
-		$value = esc_attr($value);
-	else if ( 'js' == $context )
-		$value = esc_js($value);
-
-	return $value;
-}
-
-/**
- * Make a post sticky.
- *
- * Sticky posts should be displayed at the top of the front page.
- *
- * @since 2.7.0
- *
- * @param int $post_id Post ID.
- */
-function stick_post($post_id) {
-	$stickies = get_option('sticky_posts');
-
-	if ( !is_array($stickies) )
-		$stickies = array($post_id);
-
-	if ( ! in_array($post_id, $stickies) )
-		$stickies[] = $post_id;
-
-	update_option('sticky_posts', $stickies);
-}
-
-/**
- * Unstick a post.
- *
- * Sticky posts should be displayed at the top of the front page.
- *
- * @since 2.7.0
- *
- * @param int $post_id Post ID.
- */
-function unstick_post($post_id) {
-	$stickies = get_option('sticky_posts');
-
-	if ( !is_array($stickies) )
-		return;
-
-	if ( ! in_array($post_id, $stickies) )
-		return;
-
-	$offset = array_search($post_id, $stickies);
-	if ( false === $offset )
-		return;
-
-	array_splice($stickies, $offset, 1);
-
-	update_option('sticky_posts', $stickies);
-}
-
-/**
- * Count number of posts of a post type and is user has permissions to view.
- *
- * This function provides an efficient method of finding the amount of post's
- * type a blog has. Another method is to count the amount of items in
- * get_posts(), but that method has a lot of overhead with doing so. Therefore,
- * when developing for 2.5+, use this function instead.
- *
- * The $perm parameter checks for 'readable' value and if the user can read
- * private posts, it will display that for the user that is signed in.
- *
- * @since 2.5.0
- * @link http://codex.wordpress.org/Template_Tags/wp_count_posts
- *
- * @param string $type Optional. Post type to retrieve count
- * @param string $perm Optional. 'readable' or empty.
- * @return object Number of posts for each status
- */
-function wp_count_posts( $type = 'post', $perm = '' ) {
-	global $wpdb;
-
-	$user = wp_get_current_user();
-
-	$cache_key = $type;
-
-	$query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
-	if ( 'readable' == $perm && is_user_logged_in() ) {
-		if ( !current_user_can("read_private_{$type}s") ) {
-			$cache_key .= '_' . $perm . '_' . $user->ID;
-			$query .= " AND (post_status != 'private' OR ( post_author = '$user->ID' AND post_status = 'private' ))";
-		}
-	}
-	$query .= ' GROUP BY post_status';
-
-	$count = wp_cache_get($cache_key, 'counts');
-	if ( false !== $count )
-		return $count;
-
-	$count = $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
-
-	$stats = array( 'publish' => 0, 'private' => 0, 'draft' => 0, 'pending' => 0, 'future' => 0 );
-	foreach( (array) $count as $row_num => $row ) {
-		$stats[$row['post_status']] = $row['num_posts'];
-	}
-
-	$stats = (object) $stats;
-	wp_cache_set($cache_key, $stats, 'counts');
-
-	return $stats;
-}
-
-
-/**
- * Count number of attachments for the mime type(s).
- *
- * If you set the optional mime_type parameter, then an array will still be
- * returned, but will only have the item you are looking for. It does not give
- * you the number of attachments that are children of a post. You can get that
- * by counting the number of children that post has.
- *
- * @since 2.5.0
- *
- * @param string|array $mime_type Optional. Array or comma-separated list of MIME patterns.
- * @return array Number of posts for each mime type.
- */
-function wp_count_attachments( $mime_type = '' ) {
-	global $wpdb;
-
-	$and = wp_post_mime_type_where( $mime_type );
-	$count = $wpdb->get_results( "SELECT post_mime_type, COUNT( * ) AS num_posts FROM $wpdb->posts WHERE post_type = 'attachment' $and GROUP BY post_mime_type", ARRAY_A );
-
-	$stats = array( );
-	foreach( (array) $count as $row ) {
-		$stats[$row['post_mime_type']] = $row['num_posts'];
-	}
-
-	return (object) $stats;
-}
-
-/**
- * Check a MIME-Type against a list.
- *
- * If the wildcard_mime_types parameter is a string, it must be comma separated
- * list. If the real_mime_types is a string, it is also comma separated to
- * create the list.
- *
- * @since 2.5.0
- *
- * @param string|array $wildcard_mime_types e.g. audio/mpeg or image (same as image/*) or
- *  flash (same as *flash*).
- * @param string|array $real_mime_types post_mime_type values
- * @return array array(wildcard=>array(real types))
- */
-function wp_match_mime_types($wildcard_mime_types, $real_mime_types) {
-	$matches = array();
-	if ( is_string($wildcard_mime_types) )
-		$wildcard_mime_types = array_map('trim', explode(',', $wildcard_mime_types));
-	if ( is_string($real_mime_types) )
-		$real_mime_types = array_map('trim', explode(',', $real_mime_types));
-	$wild = '[-._a-z0-9]*';
-	foreach ( (array) $wildcard_mime_types as $type ) {
-		$type = str_replace('*', $wild, $type);
-		$patternses[1][$type] = "^$type$";
-		if ( false === strpos($type, '/') ) {
-			$patternses[2][$type] = "^$type/";
-			$patternses[3][$type] = $type;
-		}
-	}
-	asort($patternses);
-	foreach ( $patternses as $patterns )
-		foreach ( $patterns as $type => $pattern )
-			foreach ( (array) $real_mime_types as $real )
-				if ( preg_match("#$pattern#", $real) && ( empty($matches[$type]) || false === array_search($real, $matches[$type]) ) )
-					$matches[$type][] = $real;
-	return $matches;
-}
-
-/**
- * Convert MIME types into SQL.
- *
- * @since 2.5.0
- *
- * @param string|array $mime_types List of mime types or comma separated string of mime types.
- * @return string The SQL AND clause for mime searching.
- */
-function wp_post_mime_type_where($post_mime_types) {
-	$where = '';
-	$wildcards = array('', '%', '%/%');
-	if ( is_string($post_mime_types) )
-		$post_mime_types = array_map('trim', explode(',', $post_mime_types));
-	foreach ( (array) $post_mime_types as $mime_type ) {
-		$mime_type = preg_replace('/\s/', '', $mime_type);
-		$slashpos = strpos($mime_type, '/');
-		if ( false !== $slashpos ) {
-			$mime_group = preg_replace('/[^-*.a-zA-Z0-9]/', '', substr($mime_type, 0, $slashpos));
-			$mime_subgroup = preg_replace('/[^-*.+a-zA-Z0-9]/', '', substr($mime_type, $slashpos + 1));
-			if ( empty($mime_subgroup) )
-				$mime_subgroup = '*';
-			else
-				$mime_subgroup = str_replace('/', '', $mime_subgroup);
-			$mime_pattern = "$mime_group/$mime_subgroup";
-		} else {
-			$mime_pattern = preg_replace('/[^-*.a-zA-Z0-9]/', '', $mime_type);
-			if ( false === strpos($mime_pattern, '*') )
-				$mime_pattern .= '/*';
-		}
-
-		$mime_pattern = preg_replace('/\*+/', '%', $mime_pattern);
-
-		if ( in_array( $mime_type, $wildcards ) )
-			return '';
-
-		if ( false !== strpos($mime_pattern, '%') )
-			$wheres[] = "post_mime_type LIKE '$mime_pattern'";
-		else
-			$wheres[] = "post_mime_type = '$mime_pattern'";
-	}
-	if ( !empty($wheres) )
-		$where = ' AND (' . join(' OR ', $wheres) . ') ';
-	return $where;
-}
-
-/**
- * Removes a post, attachment, or page.
- *
- * When the post and page goes, everything that is tied to it is deleted also.
- * This includes comments, post meta fields, and terms associated with the post.
- *
- * @since 1.0.0
- * @uses do_action() on 'delete_post' before deletion unless post type is 'attachment'.
- * @uses do_action() on 'deleted_post' after deletion unless post type is 'attachment'.
- * @uses wp_delete_attachment() if post type is 'attachment'.
- *
- * @param int $postid Post ID.
- * @return mixed False on failure
- */
-function wp_delete_post($postid = 0) {
-	global $wpdb, $wp_rewrite;
-
-	if ( !$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
-		return $post;
-
-	if ( 'attachment' == $post->post_type )
-		return wp_delete_attachment($postid);
-
-	do_action('delete_post', $postid);
-
-	/** @todo delete for pluggable post taxonomies too */
-	wp_delete_object_term_relationships($postid, array('category', 'post_tag'));
-
-	$parent_data = array( 'post_parent' => $post->post_parent );
-	$parent_where = array( 'post_parent' => $postid );
-
-	if ( 'page' == $post->post_type) {
-	 	// if the page is defined in option page_on_front or post_for_posts,
-		// adjust the corresponding options
-		if ( get_option('page_on_front') == $postid ) {
-			update_option('show_on_front', 'posts');
-			delete_option('page_on_front');
-		}
-		if ( get_option('page_for_posts') == $postid ) {
-			delete_option('page_for_posts');
-		}
-
-		// Point children of this page to its parent, also clean the cache of affected children
-		$children_query = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type='page'", $postid);
-		$children = $wpdb->get_results($children_query);
-
-		$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'page' ) );
-	} else {
-		unstick_post($postid);
-	}
-
-	// Do raw query.  wp_get_post_revisions() is filtered
-	$revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'", $postid ) );
-	// Use wp_delete_post (via wp_delete_post_revision) again.  Ensures any meta/misplaced data gets cleaned up.
-	foreach ( $revision_ids as $revision_id )
-		wp_delete_post_revision( $revision_id );
-
-	// Point all attachments to this post up one level
-	$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
-
-	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
-
-	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d", $postid ));
-
-	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $postid ));
-
-	if ( 'page' == $post->post_type ) {
-		clean_page_cache($postid);
-
-		foreach ( (array) $children as $child )
-			clean_page_cache($child->ID);
-
-		$wp_rewrite->flush_rules(false);
-	} else {
-		clean_post_cache($postid);
-	}
-
-	wp_clear_scheduled_hook('publish_future_post', $postid);
-
-	do_action('deleted_post', $postid);
-
-	return $post;
-}
-
-/**
- * Retrieve the list of categories for a post.
- *
- * Compatibility layer for themes and plugins. Also an easy layer of abstraction
- * away from the complexity of the taxonomy layer.
- *
- * @since 2.1.0
- *
- * @uses wp_get_object_terms() Retrieves the categories. Args details can be found here.
- *
- * @param int $post_id Optional. The Post ID.
- * @param array $args Optional. Overwrite the defaults.
- * @return array
- */
-function wp_get_post_categories( $post_id = 0, $args = array() ) {
-	$post_id = (int) $post_id;
-
-	$defaults = array('fields' => 'ids');
-	$args = wp_parse_args( $args, $defaults );
-
-	$cats = wp_get_object_terms($post_id, 'category', $args);
-	return $cats;
-}
-
-/**
- * Retrieve the tags for a post.
- *
- * There is only one default for this function, called 'fields' and by default
- * is set to 'all'. There are other defaults that can be overridden in
- * {@link wp_get_object_terms()}.
- *
- * @package WordPress
- * @subpackage Post
- * @since 2.3.0
- *
- * @uses wp_get_object_terms() Gets the tags for returning. Args can be found here
- *
- * @param int $post_id Optional. The Post ID
- * @param array $args Optional. Overwrite the defaults
- * @return array List of post tags.
- */
-function wp_get_post_tags( $post_id = 0, $args = array() ) {
-	return wp_get_post_terms( $post_id, 'post_tag', $args);
-}
-
-/**
- * Retrieve the terms for a post.
- *
- * There is only one default for this function, called 'fields' and by default
- * is set to 'all'. There are other defaults that can be overridden in
- * {@link wp_get_object_terms()}.
- *
- * @package WordPress
- * @subpackage Post
- * @since 2.8.0
- *
- * @uses wp_get_object_terms() Gets the tags for returning. Args can be found here
- *
- * @param int $post_id Optional. The Post ID
- * @param string $taxonomy The taxonomy for which to retrieve terms. Defaults to post_tag.
- * @param array $args Optional. Overwrite the defaults
- * @return array List of post tags.
- */
-function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array() ) {
-	$post_id = (int) $post_id;
-
-	$defaults = array('fields' => 'all');
-	$args = wp_parse_args( $args, $defaults );
-
-	$tags = wp_get_object_terms($post_id, $taxonomy, $args);
-
-	return $tags;
-}
-
-/**
- * Retrieve number of recent posts.
- *
- * @since 1.0.0
- * @uses $wpdb
- *
- * @param int $num Optional, default is 10. Number of posts to get.
- * @return array List of posts.
- */
-function wp_get_recent_posts($num = 10) {
-	global $wpdb;
-
-	// Set the limit clause, if we got a limit
-	$num = (int) $num;
-	if ($num) {
-		$limit = "LIMIT $num";
-	}
-
-	$sql = "SELECT * FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC $limit";
-	$result = $wpdb->get_results($sql,ARRAY_A);
-
-	return $result ? $result : array();
-}
-
-/**
- * Retrieve a single post, based on post ID.
- *
- * Has categories in 'post_category' property or key. Has tags in 'tags_input'
- * property or key.
- *
- * @since 1.0.0
- *
- * @param int $postid Post ID.
- * @param string $mode How to return result, either OBJECT, ARRAY_N, or ARRAY_A.
- * @return object|array Post object or array holding post contents and information
- */
-function wp_get_single_post($postid = 0, $mode = OBJECT) {
-	$postid = (int) $postid;
-
-	$post = get_post($postid, $mode);
-
-	// Set categories and tags
-	if($mode == OBJECT) {
-		$post->post_category = wp_get_post_categories($postid);
-		$post->tags_input = wp_get_post_tags($postid, array('fields' => 'names'));
-	}
-	else {
-		$post['post_category'] = wp_get_post_categories($postid);
-		$post['tags_input'] = wp_get_post_tags($postid, array('fields' => 'names'));
-	}
-
-	return $post;
-}
-
-/**
- * Insert a post.
- *
- * If the $postarr parameter has 'ID' set to a value, then post will be updated.
- *
- * You can set the post date manually, but setting the values for 'post_date'
- * and 'post_date_gmt' keys. You can close the comments or open the comments by
- * setting the value for 'comment_status' key.
- *
- * The defaults for the parameter $postarr are:
- *     'post_status'   - Default is 'draft'.
- *     'post_type'     - Default is 'post'.
- *     'post_author'   - Default is current user ID ($user_ID). The ID of the user who added the post.
- *     'ping_status'   - Default is the value in 'default_ping_status' option.
- *                       Whether the attachment can accept pings.
- *     'post_parent'   - Default is 0. Set this for the post it belongs to, if any.
- *     'menu_order'    - Default is 0. The order it is displayed.
- *     'to_ping'       - Whether to ping.
- *     'pinged'        - Default is empty string.
- *     'post_password' - Default is empty string. The password to access the attachment.
- *     'guid'          - Global Unique ID for referencing the attachment.
- *     'post_content_filtered' - Post content filtered.
- *     'post_excerpt'  - Post excerpt.
- *
- * @since 1.0.0
- * @link http://core.trac.wordpress.org/ticket/9084 Bug report on 'wp_insert_post_data' filter.
- * @uses $wpdb
- * @uses $wp_rewrite
- * @uses $user_ID
- *
- * @uses do_action() Calls 'pre_post_update' on post ID if this is an update.
- * @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update.
- * @uses do_action() Calls 'save_post' and 'wp_insert_post' on post id and post data just before
- *                   returning.
- *
- * @uses apply_filters() Calls 'wp_insert_post_data' passing $data, $postarr prior to database
- *                       update or insert.
- * @uses wp_transition_post_status()
- *
- * @param array $postarr Optional. Overrides defaults.
- * @param bool $wp_error Optional. Allow return of WP_Error on failure.
- * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
- */
-function wp_insert_post($postarr = array(), $wp_error = false) {
-	global $wpdb, $wp_rewrite, $user_ID;
-
-	$defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
-		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
-		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
-		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0);
-
-	$postarr = wp_parse_args($postarr, $defaults);
-	$postarr = sanitize_post($postarr, 'db');
-
-	// export array as variables
-	extract($postarr, EXTR_SKIP);
-
-	// Are we updating or creating?
-	$update = false;
-	if ( !empty($ID) ) {
-		$update = true;
-		$previous_status = get_post_field('post_status', $ID);
-	} else {
-		$previous_status = 'new';
-	}
-
-	if ( ('' == $post_content) && ('' == $post_title) && ('' == $post_excerpt) ) {
-		if ( $wp_error )
-			return new WP_Error('empty_content', __('Content, title, and excerpt are empty.'));
-		else
-			return 0;
-	}
-
-	// Make sure we set a valid category
-	if ( empty($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
-		$post_category = array(get_option('default_category'));
-	}
-
-	//Set the default tag list
-	if ( !isset($tags_input) )
-		$tags_input = array();
-
-	if ( empty($post_author) )
-		$post_author = $user_ID;
-
-	if ( empty($post_status) )
-		$post_status = 'draft';
-
-	if ( empty($post_type) )
-		$post_type = 'post';
-
-	$post_ID = 0;
-
-	// Get the post ID and GUID
-	if ( $update ) {
-		$post_ID = (int) $ID;
-		$guid = get_post_field( 'guid', $post_ID );
-	}
-
-	// Don't allow contributors to set to set the post slug for pending review posts
-	if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) )
-		$post_name = '';
-
-	// Create a valid post name.  Drafts and pending posts are allowed to have an empty
-	// post name.
-	if ( !isset($post_name) || empty($post_name) ) {
-		if ( !in_array( $post_status, array( 'draft', 'pending' ) ) )
-			$post_name = sanitize_title($post_title);
-		else
-			$post_name = '';
-	} else {
-		$post_name = sanitize_title($post_name);
-	}
-
-	// If the post date is empty (due to having been new or a draft) and status is not 'draft' or 'pending', set date to now
-	if ( empty($post_date) || '0000-00-00 00:00:00' == $post_date )
-		$post_date = current_time('mysql');
-
-	if ( empty($post_date_gmt) || '0000-00-00 00:00:00' == $post_date_gmt ) {
-		if ( !in_array( $post_status, array( 'draft', 'pending' ) ) )
-			$post_date_gmt = get_gmt_from_date($post_date);
-		else
-			$post_date_gmt = '0000-00-00 00:00:00';
-	}
-
-	if ( $update || '0000-00-00 00:00:00' == $post_date ) {
-		$post_modified     = current_time( 'mysql' );
-		$post_modified_gmt = current_time( 'mysql', 1 );
-	} else {
-		$post_modified     = $post_date;
-		$post_modified_gmt = $post_date_gmt;
-	}
-
-	if ( 'publish' == $post_status ) {
-		$now = gmdate('Y-m-d H:i:59');
-		if ( mysql2date('U', $post_date_gmt, false) > mysql2date('U', $now, false) )
-			$post_status = 'future';
-	}
-
-	if ( empty($comment_status) ) {
-		if ( $update )
-			$comment_status = 'closed';
-		else
-			$comment_status = get_option('default_comment_status');
-	}
-	if ( empty($ping_status) )
-		$ping_status = get_option('default_ping_status');
-
-	if ( isset($to_ping) )
-		$to_ping = preg_replace('|\s+|', "\n", $to_ping);
-	else
-		$to_ping = '';
-
-	if ( ! isset($pinged) )
-		$pinged = '';
-
-	if ( isset($post_parent) )
-		$post_parent = (int) $post_parent;
-	else
-		$post_parent = 0;
-
-	if ( !empty($post_ID) ) {
-		if ( $post_parent == $post_ID ) {
-			// Post can't be its own parent
-			$post_parent = 0;
-		} elseif ( !empty($post_parent) ) {
-			$parent_post = get_post($post_parent);
-			// Check for circular dependency
-			if ( $parent_post->post_parent == $post_ID )
-				$post_parent = 0;
-		}
-	}
-
-	if ( isset($menu_order) )
-		$menu_order = (int) $menu_order;
-	else
-		$menu_order = 0;
-
-	if ( !isset($post_password) || 'private' == $post_status )
-		$post_password = '';
-
-	$post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
-
-	// expected_slashed (everything!)
-	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'guid' ) );
-	$data = apply_filters('wp_insert_post_data', $data, $postarr);
-	$data = stripslashes_deep( $data );
-	$where = array( 'ID' => $post_ID );
-
-	if ($update) {
-		do_action( 'pre_post_update', $post_ID );
-		if ( false === $wpdb->update( $wpdb->posts, $data, $where ) ) {
-			if ( $wp_error )
-				return new WP_Error('db_update_error', __('Could not update post in the database'), $wpdb->last_error);
-			else
-				return 0;
-		}
-	} else {
-		if ( isset($post_mime_type) )
-			$data['post_mime_type'] = stripslashes( $post_mime_type ); // This isn't in the update
-		// If there is a suggested ID, use it if not already present
-		if ( !empty($import_id) ) {
-			$import_id = (int) $import_id;
-			if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
-				$data['ID'] = $import_id;
-			}
-		}
-		if ( false === $wpdb->insert( $wpdb->posts, $data ) ) {
-			if ( $wp_error )
-				return new WP_Error('db_insert_error', __('Could not insert post into the database'), $wpdb->last_error);
-			else
-				return 0;
-		}
-		$post_ID = (int) $wpdb->insert_id;
-
-		// use the newly generated $post_ID
-		$where = array( 'ID' => $post_ID );
-	}
-
-	if ( empty($data['post_name']) && !in_array( $data['post_status'], array( 'draft', 'pending' ) ) ) {
-		$data['post_name'] = sanitize_title($data['post_title'], $post_ID);
-		$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
-	}
-
-	wp_set_post_categories( $post_ID, $post_category );
-	// old-style tags_input
-	if ( !empty($tags_input) )
-		wp_set_post_tags( $post_ID, $tags_input );
-	// new-style support for all tag-like taxonomies
-	if ( !empty($tax_input) ) {
-		foreach ( $tax_input as $taxonomy => $tags ) {
-			wp_set_post_terms( $post_ID, $tags, $taxonomy );
-		}
-	}
-
-	$current_guid = get_post_field( 'guid', $post_ID );
-
-	if ( 'page' == $data['post_type'] )
-		clean_page_cache($post_ID);
-	else
-		clean_post_cache($post_ID);
-
-	// Set GUID
-	if ( !$update && '' == $current_guid )
-		$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_ID ) ), $where );
-
-	$post = get_post($post_ID);
-
-	if ( !empty($page_template) && 'page' == $data['post_type'] ) {
-		$post->page_template = $page_template;
-		$page_templates = get_page_templates();
-		if ( 'default' != $page_template && !in_array($page_template, $page_templates) ) {
-			if ( $wp_error )
-				return new WP_Error('invalid_page_template', __('The page template is invalid.'));
-			else
-				return 0;
-		}
-		update_post_meta($post_ID, '_wp_page_template',  $page_template);
-	}
-
-	wp_transition_post_status($data['post_status'], $previous_status, $post);
-
-	if ( $update)
-		do_action('edit_post', $post_ID, $post);
-
-	do_action('save_post', $post_ID, $post);
-	do_action('wp_insert_post', $post_ID, $post);
-
-	return $post_ID;
-}
-
-/**
- * Update a post with new post data.
- *
- * The date does not have to be set for drafts. You can set the date and it will
- * not be overridden.
- *
- * @since 1.0.0
- *
- * @param array|object $postarr Post data. Arrays are expected to be escaped, objects are not.
- * @return int 0 on failure, Post ID on success.
- */
-function wp_update_post($postarr = array()) {
-	if ( is_object($postarr) ) {
-		// non-escaped post was passed
-		$postarr = get_object_vars($postarr);
-		$postarr = add_magic_quotes($postarr);
-	}
-
-	// First, get all of the original fields
-	$post = wp_get_single_post($postarr['ID'], ARRAY_A);
-
-	// Escape data pulled from DB.
-	$post = add_magic_quotes($post);
-
-	// Passed post category list overwrites existing category list if not empty.
-	if ( isset($postarr['post_category']) && is_array($postarr['post_category'])
-			 && 0 != count($postarr['post_category']) )
-		$post_cats = $postarr['post_category'];
-	else
-		$post_cats = $post['post_category'];
-
-	// Drafts shouldn't be assigned a date unless explicitly done so by the user
-	if ( in_array($post['post_status'], array('draft', 'pending')) && empty($postarr['edit_date']) &&
-			 ('0000-00-00 00:00:00' == $post['post_date_gmt']) )
-		$clear_date = true;
-	else
-		$clear_date = false;
-
-	// Merge old and new fields with new fields overwriting old ones.
-	$postarr = array_merge($post, $postarr);
-	$postarr['post_category'] = $post_cats;
-	if ( $clear_date ) {
-		$postarr['post_date'] = current_time('mysql');
-		$postarr['post_date_gmt'] = '';
-	}
-
-	if ($postarr['post_type'] == 'attachment')
-		return wp_insert_attachment($postarr);
-
-	return wp_insert_post($postarr);
-}
-
-/**
- * Publish a post by transitioning the post status.
- *
- * @since 2.1.0
- * @uses $wpdb
- * @uses do_action() Calls 'edit_post', 'save_post', and 'wp_insert_post' on post_id and post data.
- *
- * @param int $post_id Post ID.
- * @return null
- */
-function wp_publish_post($post_id) {
-	global $wpdb;
-
-	$post = get_post($post_id);
-
-	if ( empty($post) )
-		return;
-
-	if ( 'publish' == $post->post_status )
-		return;
-
-	$wpdb->update( $wpdb->posts, array( 'post_status' => 'publish' ), array( 'ID' => $post_id ) );
-
-	$old_status = $post->post_status;
-	$post->post_status = 'publish';
-	wp_transition_post_status('publish', $old_status, $post);
-
-	// Update counts for the post's terms.
-	foreach ( (array) get_object_taxonomies('post') as $taxonomy ) {
-		$tt_ids = wp_get_object_terms($post_id, $taxonomy, 'fields=tt_ids');
-		wp_update_term_count($tt_ids, $taxonomy);
-	}
-
-	do_action('edit_post', $post_id, $post);
-	do_action('save_post', $post_id, $post);
-	do_action('wp_insert_post', $post_id, $post);
-}
-
-/**
- * Publish future post and make sure post ID has future post status.
- *
- * Invoked by cron 'publish_future_post' event. This safeguard prevents cron
- * from publishing drafts, etc.
- *
- * @since 2.5.0
- *
- * @param int $post_id Post ID.
- * @return null Nothing is returned. Which can mean that no action is required or post was published.
- */
-function check_and_publish_future_post($post_id) {
-
-	$post = get_post($post_id);
-
-	if ( empty($post) )
-		return;
-
-	if ( 'future' != $post->post_status )
-		return;
-
-	$time = strtotime( $post->post_date_gmt . ' GMT' );
-
-	if ( $time > time() ) { // Uh oh, someone jumped the gun!
-		wp_clear_scheduled_hook( 'publish_future_post', $post_id ); // clear anything else in the system
-		wp_schedule_single_event( $time, 'publish_future_post', array( $post_id ) );
-		return;
-	}
-
-	return wp_publish_post($post_id);
-}
-
-
-/**
- * Given the desired slug and some post details computes a unique slug for the post.
- *
- * @param string $slug the desired slug (post_name)
- * @param integer $post_ID
- * @param string $post_status no uniqueness checks are made if the post is still draft or pending
- * @param string $post_type
- * @param integer $post_parent
- * @return string unique slug for the post, based on $post_name (with a -1, -2, etc. suffix)
- */
-function wp_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent) {
-	if ( in_array( $post_status, array( 'draft', 'pending' ) ) )
-		return $slug;
-	
-	global $wpdb, $wp_rewrite;
-	$hierarchical_post_types = apply_filters('hierarchical_post_types', array('page'));
-	if ( 'attachment' == $post_type ) {
-		// Attachment slugs must be unique across all types.
-		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1";
-		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID));
-		
-		if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) {
-			$suffix = 2;
-			do {
-				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
-				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID));
-				$suffix++;
-			} while ($post_name_check);
-			$slug = $alt_post_name;
-		}
-	} elseif ( in_array($post_type, $hierarchical_post_types) ) {
-		// Page slugs must be unique within their own trees.  Pages are in a
-		// separate namespace than posts so page slugs are allowed to overlap post slugs.
-		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode("', '", $wpdb->escape($hierarchical_post_types)) . "' ) AND ID != %d AND post_parent = %d LIMIT 1";
-		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID, $post_parent));
-		
-		if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) {
-			$suffix = 2;
-			do {
-				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
-				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID, $post_parent));
-				$suffix++;
-			} while ($post_name_check);
-			$slug = $alt_post_name;
-		}
-	} else {
-		// Post slugs must be unique across all posts.
-		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";
-		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID));
-		
-		if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) {
-			$suffix = 2;
-			do {
-				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
-				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID));
-				$suffix++;
-			} while ($post_name_check);
-			$slug = $alt_post_name;
-		}
-	}
-
-	return $slug;
-}
-
-/**
- * Adds tags to a post.
- *
- * @uses wp_set_post_tags() Same first two parameters, but the last parameter is always set to true.
- *
- * @package WordPress
- * @subpackage Post
- * @since 2.3.0
- *
- * @param int $post_id Post ID
- * @param string $tags The tags to set for the post, separated by commas.
- * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
- */
-function wp_add_post_tags($post_id = 0, $tags = '') {
-	return wp_set_post_tags($post_id, $tags, true);
-}
-
-
-/**
- * Set the tags for a post.
- *
- * @since 2.3.0
- * @uses wp_set_object_terms() Sets the tags for the post.
- *
- * @param int $post_id Post ID.
- * @param string $tags The tags to set for the post, separated by commas.
- * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
- * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
- */
-function wp_set_post_tags( $post_id = 0, $tags = '', $append = false ) {
-	return wp_set_post_terms( $post_id, $tags, 'post_tag', $append);
-}
-
-/**
- * Set the terms for a post.
- *
- * @since 2.8.0
- * @uses wp_set_object_terms() Sets the tags for the post.
- *
- * @param int $post_id Post ID.
- * @param string $tags The tags to set for the post, separated by commas.
- * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
- * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
- */
-function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $append = false ) {
-	$post_id = (int) $post_id;
-
-	if ( !$post_id )
-		return false;
-
-	if ( empty($tags) )
-		$tags = array();
-
-	$tags = is_array($tags) ? $tags : explode( ',', trim($tags, " \n\t\r\0\x0B,") );
-	wp_set_object_terms($post_id, $tags, $taxonomy, $append);
-}
-
-/**
- * Set categories for a post.
- *
- * If the post categories parameter is not set, then the default category is
- * going used.
- *
- * @since 2.1.0
- *
- * @param int $post_ID Post ID.
- * @param array $post_categories Optional. List of categories.
- * @return bool|mixed
- */
-function wp_set_post_categories($post_ID = 0, $post_categories = array()) {
-	$post_ID = (int) $post_ID;
-	// If $post_categories isn't already an array, make it one:
-	if (!is_array($post_categories) || 0 == count($post_categories) || empty($post_categories))
-		$post_categories = array(get_option('default_category'));
-	else if ( 1 == count($post_categories) && '' == $post_categories[0] )
-		return true;
-
-	$post_categories = array_map('intval', $post_categories);
-	$post_categories = array_unique($post_categories);
-
-	return wp_set_object_terms($post_ID, $post_categories, 'category');
-}
-
-/**
- * Transition the post status of a post.
- *
- * Calls hooks to transition post status.
- *
- * The first is 'transition_post_status' with new status, old status, and post data.
- *
- * The next action called is 'OLDSTATUS_to_NEWSTATUS' the 'NEWSTATUS' is the
- * $new_status parameter and the 'OLDSTATUS' is $old_status parameter; it has the
- * post data.
- *
- * The final action is named 'NEWSTATUS_POSTTYPE', 'NEWSTATUS' is from the $new_status
- * parameter and POSTTYPE is post_type post data.
- *
- * @since 2.3.0
- * @link http://codex.wordpress.org/Post_Status_Transitions
- *
- * @uses do_action() Calls 'transition_post_status' on $new_status, $old_status and
- *  $post if there is a status change.
- * @uses do_action() Calls '${old_status}_to_$new_status' on $post if there is a status change.
- * @uses do_action() Calls '${new_status}_$post->post_type' on post ID and $post.
- *
- * @param string $new_status Transition to this post status.
- * @param string $old_status Previous post status.
- * @param object $post Post data.
- */
-function wp_transition_post_status($new_status, $old_status, $post) {
-	do_action('transition_post_status', $new_status, $old_status, $post);
-	do_action("${old_status}_to_$new_status", $post);
-	do_action("${new_status}_$post->post_type", $post->ID, $post);
-}
-
-//
-// Trackback and ping functions
-//
-
-/**
- * Add a URL to those already pung.
- *
- * @since 1.5.0
- * @uses $wpdb
- *
- * @param int $post_id Post ID.
- * @param string $uri Ping URI.
- * @return int How many rows were updated.
- */
-function add_ping($post_id, $uri) {
-	global $wpdb;
-	$pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id ));
-	$pung = trim($pung);
-	$pung = preg_split('/\s/', $pung);
-	$pung[] = $uri;
-	$new = implode("\n", $pung);
-	$new = apply_filters('add_ping', $new);
-	// expected_slashed ($new)
-	$new = stripslashes($new);
-	return $wpdb->update( $wpdb->posts, array( 'pinged' => $new ), array( 'ID' => $post_id ) );
-}
-
-/**
- * Retrieve enclosures already enclosed for a post.
- *
- * @since 1.5.0
- * @uses $wpdb
- *
- * @param int $post_id Post ID.
- * @return array List of enclosures
- */
-function get_enclosed($post_id) {
-	$custom_fields = get_post_custom( $post_id );
-	$pung = array();
-	if ( !is_array( $custom_fields ) )
-		return $pung;
-
-	foreach ( $custom_fields as $key => $val ) {
-		if ( 'enclosure' != $key || !is_array( $val ) )
-			continue;
-		foreach( $val as $enc ) {
-			$enclosure = split( "\n", $enc );
-			$pung[] = trim( $enclosure[ 0 ] );
-		}
-	}
-	$pung = apply_filters('get_enclosed', $pung);
-	return $pung;
-}
-
-/**
- * Retrieve URLs already pinged for a post.
- *
- * @since 1.5.0
- * @uses $wpdb
- *
- * @param int $post_id Post ID.
- * @return array
- */
-function get_pung($post_id) {
-	global $wpdb;
-	$pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id ));
-	$pung = trim($pung);
-	$pung = preg_split('/\s/', $pung);
-	$pung = apply_filters('get_pung', $pung);
-	return $pung;
-}
-
-/**
- * Retrieve URLs that need to be pinged.
- *
- * @since 1.5.0
- * @uses $wpdb
- *
- * @param int $post_id Post ID
- * @return array
- */
-function get_to_ping($post_id) {
-	global $wpdb;
-	$to_ping = $wpdb->get_var( $wpdb->prepare( "SELECT to_ping FROM $wpdb->posts WHERE ID = %d", $post_id ));
-	$to_ping = trim($to_ping);
-	$to_ping = preg_split('/\s/', $to_ping, -1, PREG_SPLIT_NO_EMPTY);
-	$to_ping = apply_filters('get_to_ping',  $to_ping);
-	return $to_ping;
-}
-
-/**
- * Do trackbacks for a list of URLs.
- *
- * @since 1.0.0
- *
- * @param string $tb_list Comma separated list of URLs
- * @param int $post_id Post ID
- */
-function trackback_url_list($tb_list, $post_id) {
-	if ( ! empty( $tb_list ) ) {
-		// get post data
-		$postdata = wp_get_single_post($post_id, ARRAY_A);
-
-		// import postdata as variables
-		extract($postdata, EXTR_SKIP);
-
-		// form an excerpt
-		$excerpt = strip_tags($post_excerpt ? $post_excerpt : $post_content);
-
-		if (strlen($excerpt) > 255) {
-			$excerpt = substr($excerpt,0,252) . '...';
-		}
-
-		$trackback_urls = explode(',', $tb_list);
-		foreach( (array) $trackback_urls as $tb_url) {
-			$tb_url = trim($tb_url);
-			trackback($tb_url, stripslashes($post_title), $excerpt, $post_id);
-		}
-	}
-}
-
-//
-// Page functions
-//
-
-/**
- * Get a list of page IDs.
- *
- * @since 2.0.0
- * @uses $wpdb
- *
- * @return array List of page IDs.
- */
-function get_all_page_ids() {
-	global $wpdb;
-
-	if ( ! $page_ids = wp_cache_get('all_page_ids', 'posts') ) {
-		$page_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'page'");
-		wp_cache_add('all_page_ids', $page_ids, 'posts');
-	}
-
-	return $page_ids;
-}
-
-/**
- * Retrieves page data given a page ID or page object.
- *
- * @since 1.5.1
- *
- * @param mixed $page Page object or page ID. Passed by reference.
- * @param string $output What to output. OBJECT, ARRAY_A, or ARRAY_N.
- * @param string $filter How the return value should be filtered.
- * @return mixed Page data.
- */
-function &get_page(&$page, $output = OBJECT, $filter = 'raw') {
-	if ( empty($page) ) {
-		if ( isset( $GLOBALS['page'] ) && isset( $GLOBALS['page']->ID ) ) {
-			return get_post($GLOBALS['page'], $output, $filter);
-		} else {
-			$page = null;
-			return $page;
-		}
-	}
-
-	$the_page = get_post($page, $output, $filter);
-	return $the_page;
-}
-
-/**
- * Retrieves a page given its path.
- *
- * @since 2.1.0
- * @uses $wpdb
- *
- * @param string $page_path Page path
- * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
- * @return mixed Null when complete.
- */
-function get_page_by_path($page_path, $output = OBJECT) {
-	global $wpdb;
-	$page_path = rawurlencode(urldecode($page_path));
-	$page_path = str_replace('%2F', '/', $page_path);
-	$page_path = str_replace('%20', ' ', $page_path);
-	$page_paths = '/' . trim($page_path, '/');
-	$leaf_path  = sanitize_title(basename($page_paths));
-	$page_paths = explode('/', $page_paths);
-	$full_path = '';
-	foreach( (array) $page_paths as $pathdir)
-		$full_path .= ($pathdir!=''?'/':'') . sanitize_title($pathdir);
-
-	$pages = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_name = %s AND (post_type = 'page' OR post_type = 'attachment')", $leaf_path ));
-
-	if ( empty($pages) )
-		return null;
-
-	foreach ($pages as $page) {
-		$path = '/' . $leaf_path;
-		$curpage = $page;
-		while ($curpage->post_parent != 0) {
-			$curpage = $wpdb->get_row( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = %d and post_type='page'", $curpage->post_parent ));
-			$path = '/' . $curpage->post_name . $path;
-		}
-
-		if ( $path == $full_path )
-			return get_page($page->ID, $output);
-	}
-
-	return null;
-}
-
-/**
- * Retrieve a page given its title.
- *
- * @since 2.1.0
- * @uses $wpdb
- *
- * @param string $page_title Page title
- * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
- * @return mixed
- */
-function get_page_by_title($page_title, $output = OBJECT) {
-	global $wpdb;
-	$page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='page'", $page_title ));
-	if ( $page )
-		return get_page($page, $output);
-
-	return null;
-}
-
-/**
- * Retrieve child pages from list of pages matching page ID.
- *
- * Matches against the pages parameter against the page ID. Also matches all
- * children for the same to retrieve all children of a page. Does not make any
- * SQL queries to get the children.
- *
- * @since 1.5.1
- *
- * @param int $page_id Page ID.
- * @param array $pages List of pages' objects.
- * @return array
- */
-function &get_page_children($page_id, $pages) {
-	$page_list = array();
-	foreach ( (array) $pages as $page ) {
-		if ( $page->post_parent == $page_id ) {
-			$page_list[] = $page;
-			if ( $children = get_page_children($page->ID, $pages) )
-				$page_list = array_merge($page_list, $children);
-		}
-	}
-	return $page_list;
-}
-
-/**
- * Order the pages with children under parents in a flat list.
- *
- * @since 2.0.0
- *
- * @param array $posts Posts array.
- * @param int $parent Parent page ID.
- * @return array A list arranged by hierarchy. Children immediately follow their parents.
- */
-function get_page_hierarchy($posts, $parent = 0) {
-	$result = array ( );
-	if ($posts) { foreach ( (array) $posts as $post) {
-		if ($post->post_parent == $parent) {
-			$result[$post->ID] = $post->post_name;
-			$children = get_page_hierarchy($posts, $post->ID);
-			$result += $children; //append $children to $result
-		}
-	} }
-	return $result;
-}
-
-/**
- * Builds URI for a page.
- *
- * Sub pages will be in the "directory" under the parent page post name.
- *
- * @since 1.5.0
- *
- * @param int $page_id Page ID.
- * @return string Page URI.
- */
-function get_page_uri($page_id) {
-	$page = get_page($page_id);
-	$uri = $page->post_name;
-
-	// A page cannot be it's own parent.
-	if ( $page->post_parent == $page->ID )
-		return $uri;
-
-	while ($page->post_parent != 0) {
-		$page = get_page($page->post_parent);
-		$uri = $page->post_name . "/" . $uri;
-	}
-
-	return $uri;
-}
-
-/**
- * Retrieve a list of pages.
- *
- * The defaults that can be overridden are the following: 'child_of',
- * 'sort_order', 'sort_column', 'post_title', 'hierarchical', 'exclude',
- * 'include', 'meta_key', 'meta_value','authors', 'number', and 'offset'.
- *
- * @since 1.5.0
- * @uses $wpdb
- *
- * @param mixed $args Optional. Array or string of options that overrides defaults.
- * @return array List of pages matching defaults or $args
- */
-function &get_pages($args = '') {
-	global $wpdb;
-
-	$defaults = array(
-		'child_of' => 0, 'sort_order' => 'ASC',
-		'sort_column' => 'post_title', 'hierarchical' => 1,
-		'exclude' => '', 'include' => '',
-		'meta_key' => '', 'meta_value' => '',
-		'authors' => '', 'parent' => -1, 'exclude_tree' => '',
-		'number' => '', 'offset' => 0
-	);
-
-	$r = wp_parse_args( $args, $defaults );
-	extract( $r, EXTR_SKIP );
-	$number = (int) $number;
-	$offset = (int) $offset;
-
-	$cache = array();
-	$key = md5( serialize( compact(array_keys($defaults)) ) );
-	if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) {
-		if ( is_array($cache) && isset( $cache[ $key ] ) ) {
-			$pages = apply_filters('get_pages', $cache[ $key ], $r );
-			return $pages;
-		}
-	}
-
-	if ( !is_array($cache) )
-		$cache = array();
-
-	$inclusions = '';
-	if ( !empty($include) ) {
-		$child_of = 0; //ignore child_of, parent, exclude, meta_key, and meta_value params if using include
-		$parent = -1;
-		$exclude = '';
-		$meta_key = '';
-		$meta_value = '';
-		$hierarchical = false;
-		$incpages = preg_split('/[\s,]+/',$include);
-		if ( count($incpages) ) {
-			foreach ( $incpages as $incpage ) {
-				if (empty($inclusions))
-					$inclusions = $wpdb->prepare(' AND ( ID = %d ', $incpage);
-				else
-					$inclusions .= $wpdb->prepare(' OR ID = %d ', $incpage);
-			}
-		}
-	}
-	if (!empty($inclusions))
-		$inclusions .= ')';
-
-	$exclusions = '';
-	if ( !empty($exclude) ) {
-		$expages = preg_split('/[\s,]+/',$exclude);
-		if ( count($expages) ) {
-			foreach ( $expages as $expage ) {
-				if (empty($exclusions))
-					$exclusions = $wpdb->prepare(' AND ( ID <> %d ', $expage);
-				else
-					$exclusions .= $wpdb->prepare(' AND ID <> %d ', $expage);
-			}
-		}
-	}
-	if (!empty($exclusions))
-		$exclusions .= ')';
-
-	$author_query = '';
-	if (!empty($authors)) {
-		$post_authors = preg_split('/[\s,]+/',$authors);
-
-		if ( count($post_authors) ) {
-			foreach ( $post_authors as $post_author ) {
-				//Do we have an author id or an author login?
-				if ( 0 == intval($post_author) ) {
-					$post_author = get_userdatabylogin($post_author);
-					if ( empty($post_author) )
-						continue;
-					if ( empty($post_author->ID) )
-						continue;
-					$post_author = $post_author->ID;
-				}
-
-				if ( '' == $author_query )
-					$author_query = $wpdb->prepare(' post_author = %d ', $post_author);
-				else
-					$author_query .= $wpdb->prepare(' OR post_author = %d ', $post_author);
-			}
-			if ( '' != $author_query )
-				$author_query = " AND ($author_query)";
-		}
-	}
-
-	$join = '';
-	$where = "$exclusions $inclusions ";
-	if ( ! empty( $meta_key ) || ! empty( $meta_value ) ) {
-		$join = " LEFT JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id )";
-
-		// meta_key and meta_value might be slashed
-		$meta_key = stripslashes($meta_key);
-		$meta_value = stripslashes($meta_value);
-		if ( ! empty( $meta_key ) )
-			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s", $meta_key);
-		if ( ! empty( $meta_value ) )
-			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_value = %s", $meta_value);
-
-	}
-
-	if ( $parent >= 0 )
-		$where .= $wpdb->prepare(' AND post_parent = %d ', $parent);
-
-	$query = "SELECT * FROM $wpdb->posts $join WHERE (post_type = 'page' AND post_status = 'publish') $where ";
-	$query .= $author_query;
-	$query .= " ORDER BY " . $sort_column . " " . $sort_order ;
-
-	if ( !empty($number) )
-		$query .= ' LIMIT ' . $offset . ',' . $number;
-
-	$pages = $wpdb->get_results($query);
-
-	if ( empty($pages) ) {
-		$pages = apply_filters('get_pages', array(), $r);
-		return $pages;
-	}
-
-	// Update cache.
-	update_page_cache($pages);
-
-	if ( $child_of || $hierarchical )
-		$pages = & get_page_children($child_of, $pages);
-
-	if ( !empty($exclude_tree) ) {
-		$exclude = array();
-
-		$exclude = (int) $exclude_tree;
-		$children = get_page_children($exclude, $pages);
-		$excludes = array();
-		foreach ( $children as $child )
-			$excludes[] = $child->ID;
-		$excludes[] = $exclude;
-		$total = count($pages);
-		for ( $i = 0; $i < $total; $i++ ) {
-			if ( in_array($pages[$i]->ID, $excludes) )
-				unset($pages[$i]);
-		}
-	}
-
-	$cache[ $key ] = $pages;
-	wp_cache_set( 'get_pages', $cache, 'posts' );
-
-	$pages = apply_filters('get_pages', $pages, $r);
-
-	return $pages;
-}
-
-//
-// Attachment functions
-//
-
-/**
- * Check if the attachment URI is local one and is really an attachment.
- *
- * @since 2.0.0
- *
- * @param string $url URL to check
- * @return bool True on success, false on failure.
- */
-function is_local_attachment($url) {
-	if (strpos($url, get_bloginfo('url')) === false)
-		return false;
-	if (strpos($url, get_bloginfo('url') . '/?attachment_id=') !== false)
-		return true;
-	if ( $id = url_to_postid($url) ) {
-		$post = & get_post($id);
-		if ( 'attachment' == $post->post_type )
-			return true;
-	}
-	return false;
-}
-
-/**
- * Insert an attachment.
- *
- * If you set the 'ID' in the $object parameter, it will mean that you are
- * updating and attempt to update the attachment. You can also set the
- * attachment name or title by setting the key 'post_name' or 'post_title'.
- *
- * You can set the dates for the attachment manually by setting the 'post_date'
- * and 'post_date_gmt' keys' values.
- *
- * By default, the comments will use the default settings for whether the
- * comments are allowed. You can close them manually or keep them open by
- * setting the value for the 'comment_status' key.
- *
- * The $object parameter can have the following:
- *     'post_status'   - Default is 'draft'. Can not be overridden, set the same as parent post.
- *     'post_type'     - Default is 'post', will be set to attachment. Can not override.
- *     'post_author'   - Default is current user ID. The ID of the user, who added the attachment.
- *     'ping_status'   - Default is the value in default ping status option. Whether the attachment
- *                       can accept pings.
- *     'post_parent'   - Default is 0. Can use $parent parameter or set this for the post it belongs
- *                       to, if any.
- *     'menu_order'    - Default is 0. The order it is displayed.
- *     'to_ping'       - Whether to ping.
- *     'pinged'        - Default is empty string.
- *     'post_password' - Default is empty string. The password to access the attachment.
- *     'guid'          - Global Unique ID for referencing the attachment.
- *     'post_content_filtered' - Attachment post content filtered.
- *     'post_excerpt'  - Attachment excerpt.
- *
- * @since 2.0.0
- * @uses $wpdb
- * @uses $user_ID
- * @uses do_action() Calls 'edit_attachment' on $post_ID if this is an update.
- * @uses do_action() Calls 'add_attachment' on $post_ID if this is not an update.
- *
- * @param string|array $object Arguments to override defaults.
- * @param string $file Optional filename.
- * @param int $post_parent Parent post ID.
- * @return int Attachment ID.
- */
-function wp_insert_attachment($object, $file = false, $parent = 0) {
-	global $wpdb, $user_ID;
-
-	$defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
-		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
-		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
-		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0);
-
-	$object = wp_parse_args($object, $defaults);
-	if ( !empty($parent) )
-		$object['post_parent'] = $parent;
-
-	$object = sanitize_post($object, 'db');
-
-	// export array as variables
-	extract($object, EXTR_SKIP);
-
-	// Make sure we set a valid category
-	if ( !isset($post_category) || 0 == count($post_category) || !is_array($post_category)) {
-		$post_category = array(get_option('default_category'));
-	}
-
-	if ( empty($post_author) )
-		$post_author = $user_ID;
-
-	$post_type = 'attachment';
-	$post_status = 'inherit';
-
-	// Are we updating or creating?
-	if ( !empty($ID) ) {
-		$update = true;
-		$post_ID = (int) $ID;
-	} else {
-		$update = false;
-		$post_ID = 0;
-	}
-
-	// Create a valid post name.
-	if ( empty($post_name) )
-		$post_name = sanitize_title($post_title);
-	else
-		$post_name = sanitize_title($post_name);
-
-	// expected_slashed ($post_name)
-	$post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
-
-	if ( empty($post_date) )
-		$post_date = current_time('mysql');
-	if ( empty($post_date_gmt) )
-		$post_date_gmt = current_time('mysql', 1);
-
-	if ( empty($post_modified) )
-		$post_modified = $post_date;
-	if ( empty($post_modified_gmt) )
-		$post_modified_gmt = $post_date_gmt;
-
-	if ( empty($comment_status) ) {
-		if ( $update )
-			$comment_status = 'closed';
-		else
-			$comment_status = get_option('default_comment_status');
-	}
-	if ( empty($ping_status) )
-		$ping_status = get_option('default_ping_status');
-
-	if ( isset($to_ping) )
-		$to_ping = preg_replace('|\s+|', "\n", $to_ping);
-	else
-		$to_ping = '';
-
-	if ( isset($post_parent) )
-		$post_parent = (int) $post_parent;
-	else
-		$post_parent = 0;
-
-	if ( isset($menu_order) )
-		$menu_order = (int) $menu_order;
-	else
-		$menu_order = 0;
-
-	if ( !isset($post_password) )
-		$post_password = '';
-
-	if ( ! isset($pinged) )
-		$pinged = '';
-
-	// expected_slashed (everything!)
-	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' ) );
-	$data = stripslashes_deep( $data );
-
-	if ( $update ) {
-		$wpdb->update( $wpdb->posts, $data, array( 'ID' => $post_ID ) );
-	} else {
-		// If there is a suggested ID, use it if not already present
-		if ( !empty($import_id) ) {
-			$import_id = (int) $import_id;
-			if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
-				$data['ID'] = $import_id;
-			}
-		}
-
-		$wpdb->insert( $wpdb->posts, $data );
-		$post_ID = (int) $wpdb->insert_id;
-	}
-
-	if ( empty($post_name) ) {
-		$post_name = sanitize_title($post_title, $post_ID);
-		$wpdb->update( $wpdb->posts, compact("post_name"), array( 'ID' => $post_ID ) );
-	}
-
-	wp_set_post_categories($post_ID, $post_category);
-
-	if ( $file )
-		update_attached_file( $post_ID, $file );
-
-	clean_post_cache($post_ID);
-
-	if ( $update) {
-		do_action('edit_attachment', $post_ID);
-	} else {
-		do_action('add_attachment', $post_ID);
-	}
-
-	return $post_ID;
-}
-
-/**
- * Delete an attachment.
- *
- * Will remove the file also, when the attachment is removed. Removes all post
- * meta fields, taxonomy, comments, etc associated with the attachment (except
- * the main post).
- *
- * @since 2.0.0
- * @uses $wpdb
- * @uses do_action() Calls 'delete_attachment' hook on Attachment ID.
- *
- * @param int $postid Attachment ID.
- * @return mixed False on failure. Post data on success.
- */
-function wp_delete_attachment($postid) {
-	global $wpdb;
-
-	if ( !$post = $wpdb->get_row(  $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
-		return $post;
-
-	if ( 'attachment' != $post->post_type )
-		return false;
-
-	$meta = wp_get_attachment_metadata( $postid );
-	$file = get_attached_file( $postid );
-
-	do_action('delete_attachment', $postid);
-
-	/** @todo Delete for pluggable post taxonomies too */
-	wp_delete_object_term_relationships($postid, array('category', 'post_tag'));
-
-	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
-
-	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
-
-	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $postid ));
-
-	$uploadPath = wp_upload_dir();
-
-	if ( ! empty($meta['thumb']) ) {
-		// Don't delete the thumb if another attachment uses it
-		if (! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%'.$meta['thumb'].'%', $postid)) ) {
-			$thumbfile = str_replace(basename($file), $meta['thumb'], $file);
-			$thumbfile = apply_filters('wp_delete_file', $thumbfile);
-			@ unlink( path_join($uploadPath['basedir'], $thumbfile) );
-		}
-	}
-
-	// remove intermediate images if there are any
-	$sizes = apply_filters('intermediate_image_sizes', array('thumbnail', 'medium', 'large'));
-	foreach ( $sizes as $size ) {
-		if ( $intermediate = image_get_intermediate_size($postid, $size) ) {
-			$intermediate_file = apply_filters('wp_delete_file', $intermediate['path']);
-			@ unlink( path_join($uploadPath['basedir'], $intermediate_file) );
-		}
-	}
-
-	$file = apply_filters('wp_delete_file', $file);
-
-	if ( ! empty($file) )
-		@ unlink($file);
-
-	clean_post_cache($postid);
-
-	return $post;
-}
-
-/**
- * Retrieve attachment meta field for attachment ID.
- *
- * @since 2.1.0
- *
- * @param int $post_id Attachment ID
- * @param bool $unfiltered Optional, default is false. If true, filters are not run.
- * @return string|bool Attachment meta field. False on failure.
- */
-function wp_get_attachment_metadata( $post_id, $unfiltered = false ) {
-	$post_id = (int) $post_id;
-	if ( !$post =& get_post( $post_id ) )
-		return false;
-
-	$data = get_post_meta( $post->ID, '_wp_attachment_metadata', true );
-	if ( $unfiltered )
-		return $data;
-	return apply_filters( 'wp_get_attachment_metadata', $data, $post->ID );
-}
-
-/**
- * Update metadata for an attachment.
- *
- * @since 2.1.0
- *
- * @param int $post_id Attachment ID.
- * @param array $data Attachment data.
- * @return int
- */
-function wp_update_attachment_metadata( $post_id, $data ) {
-	$post_id = (int) $post_id;
-	if ( !$post =& get_post( $post_id ) )
-		return false;
-
-	$data = apply_filters( 'wp_update_attachment_metadata', $data, $post->ID );
-
-	return update_post_meta( $post->ID, '_wp_attachment_metadata', $data);
-}
-
-/**
- * Retrieve the URL for an attachment.
- *
- * @since 2.1.0
- *
- * @param int $post_id Attachment ID.
- * @return string
- */
-function wp_get_attachment_url( $post_id = 0 ) {
-	$post_id = (int) $post_id;
-	if ( !$post =& get_post( $post_id ) )
-		return false;
-
-	$url = '';
-	if ( $file = get_post_meta( $post->ID, '_wp_attached_file', true) ) { //Get attached file
-		if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) { //Get upload directory
-			if ( 0 === strpos($file, $uploads['basedir']) ) //Check that the upload base exists in the file location
-				$url = str_replace($uploads['basedir'], $uploads['baseurl'], $file); //replace file location with url location
-			elseif ( false !== strpos($file, 'wp-content/uploads') )
-				$url = $uploads['baseurl'] . substr( $file, strpos($file, 'wp-content/uploads') + 18 );
-			else
-				$url = $uploads['baseurl'] . "/$file"; //Its a newly uploaded file, therefor $file is relative to the basedir.
-		}
-	}
-
-	if ( empty($url) ) //If any of the above options failed, Fallback on the GUID as used pre-2.7, not recomended to rely upon this.
-		$url = get_the_guid( $post->ID );
-
-	if ( 'attachment' != $post->post_type || empty($url) )
-		return false;
-
-	return apply_filters( 'wp_get_attachment_url', $url, $post->ID );
-}
-
-/**
- * Retrieve thumbnail for an attachment.
- *
- * @since 2.1.0
- *
- * @param int $post_id Attachment ID.
- * @return mixed False on failure. Thumbnail file path on success.
- */
-function wp_get_attachment_thumb_file( $post_id = 0 ) {
-	$post_id = (int) $post_id;
-	if ( !$post =& get_post( $post_id ) )
-		return false;
-	if ( !is_array( $imagedata = wp_get_attachment_metadata( $post->ID ) ) )
-		return false;
-
-	$file = get_attached_file( $post->ID );
-
-	if ( !empty($imagedata['thumb']) && ($thumbfile = str_replace(basename($file), $imagedata['thumb'], $file)) && file_exists($thumbfile) )
-		return apply_filters( 'wp_get_attachment_thumb_file', $thumbfile, $post->ID );
-	return false;
-}
-
-/**
- * Retrieve URL for an attachment thumbnail.
- *
- * @since 2.1.0
- *
- * @param int $post_id Attachment ID
- * @return string|bool False on failure. Thumbnail URL on success.
- */
-function wp_get_attachment_thumb_url( $post_id = 0 ) {
-	$post_id = (int) $post_id;
-	if ( !$post =& get_post( $post_id ) )
-		return false;
-	if ( !$url = wp_get_attachment_url( $post->ID ) )
-		return false;
-
-	$sized = image_downsize( $post_id, 'thumbnail' );
-	if ( $sized )
-		return $sized[0];
-
-	if ( !$thumb = wp_get_attachment_thumb_file( $post->ID ) )
-		return false;
-
-	$url = str_replace(basename($url), basename($thumb), $url);
-
-	return apply_filters( 'wp_get_attachment_thumb_url', $url, $post->ID );
-}
-
-/**
- * Check if the attachment is an image.
- *
- * @since 2.1.0
- *
- * @param int $post_id Attachment ID
- * @return bool
- */
-function wp_attachment_is_image( $post_id = 0 ) {
-	$post_id = (int) $post_id;
-	if ( !$post =& get_post( $post_id ) )
-		return false;
-
-	if ( !$file = get_attached_file( $post->ID ) )
-		return false;
-
-	$ext = preg_match('/\.([^.]+)$/', $file, $matches) ? strtolower($matches[1]) : false;
-
-	$image_exts = array('jpg', 'jpeg', 'gif', 'png');
-
-	if ( 'image/' == substr($post->post_mime_type, 0, 6) || $ext && 'import' == $post->post_mime_type && in_array($ext, $image_exts) )
-		return true;
-	return false;
-}
-
-/**
- * Retrieve the icon for a MIME type.
- *
- * @since 2.1.0
- *
- * @param string $mime MIME type
- * @return string|bool
- */
-function wp_mime_type_icon( $mime = 0 ) {
-	if ( !is_numeric($mime) )
-		$icon = wp_cache_get("mime_type_icon_$mime");
-	if ( empty($icon) ) {
-		$post_id = 0;
-		$post_mimes = array();
-		if ( is_numeric($mime) ) {
-			$mime = (int) $mime;
-			if ( $post =& get_post( $mime ) ) {
-				$post_id = (int) $post->ID;
-				$ext = preg_replace('/^.+?\.([^.]+)$/', '$1', $post->guid);
-				if ( !empty($ext) ) {
-					$post_mimes[] = $ext;
-					if ( $ext_type = wp_ext2type( $ext ) )
-						$post_mimes[] = $ext_type;
-				}
-				$mime = $post->post_mime_type;
-			} else {
-				$mime = 0;
-			}
-		} else {
-			$post_mimes[] = $mime;
-		}
-
-		$icon_files = wp_cache_get('icon_files');
-
-		if ( !is_array($icon_files) ) {
-			$icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/crystal' );
-			$icon_dir_uri = apply_filters( 'icon_dir_uri', includes_url('images/crystal') );
-			$dirs = apply_filters( 'icon_dirs', array($icon_dir => $icon_dir_uri) );
-			$icon_files = array();
-			while ( $dirs ) {
-				$dir = array_shift($keys = array_keys($dirs));
-				$uri = array_shift($dirs);
-				if ( $dh = opendir($dir) ) {
-					while ( false !== $file = readdir($dh) ) {
-						$file = basename($file);
-						if ( substr($file, 0, 1) == '.' )
-							continue;
-						if ( !in_array(strtolower(substr($file, -4)), array('.png', '.gif', '.jpg') ) ) {
-							if ( is_dir("$dir/$file") )
-								$dirs["$dir/$file"] = "$uri/$file";
-							continue;
-						}
-						$icon_files["$dir/$file"] = "$uri/$file";
-					}
-					closedir($dh);
-				}
-			}
-			wp_cache_set('icon_files', $icon_files, 600);
-		}
-
-		// Icon basename - extension = MIME wildcard
-		foreach ( $icon_files as $file => $uri )
-			$types[ preg_replace('/^([^.]*).*$/', '$1', basename($file)) ] =& $icon_files[$file];
-
-		if ( ! empty($mime) ) {
-			$post_mimes[] = substr($mime, 0, strpos($mime, '/'));
-			$post_mimes[] = substr($mime, strpos($mime, '/') + 1);
-			$post_mimes[] = str_replace('/', '_', $mime);
-		}
-
-		$matches = wp_match_mime_types(array_keys($types), $post_mimes);
-		$matches['default'] = array('default');
-
-		foreach ( $matches as $match => $wilds ) {
-			if ( isset($types[$wilds[0]])) {
-				$icon = $types[$wilds[0]];
-				if ( !is_numeric($mime) )
-					wp_cache_set("mime_type_icon_$mime", $icon);
-				break;
-			}
-		}
-	}
-
-	return apply_filters( 'wp_mime_type_icon', $icon, $mime, $post_id ); // Last arg is 0 if function pass mime type.
-}
-
-/**
- * Checked for changed slugs for published posts and save old slug.
- *
- * The function is used along with form POST data. It checks for the wp-old-slug
- * POST field. Will only be concerned with published posts and the slug actually
- * changing.
- *
- * If the slug was changed and not already part of the old slugs then it will be
- * added to the post meta field ('_wp_old_slug') for storing old slugs for that
- * post.
- *
- * The most logically usage of this function is redirecting changed posts, so
- * that those that linked to an changed post will be redirected to the new post.
- *
- * @since 2.1.0
- *
- * @param int $post_id Post ID.
- * @return int Same as $post_id
- */
-function wp_check_for_changed_slugs($post_id) {
-	if ( !isset($_POST['wp-old-slug']) || !strlen($_POST['wp-old-slug']) )
-		return $post_id;
-
-	$post = &get_post($post_id);
-
-	// we're only concerned with published posts
-	if ( $post->post_status != 'publish' || $post->post_type != 'post' )
-		return $post_id;
-
-	// only bother if the slug has changed
-	if ( $post->post_name == $_POST['wp-old-slug'] )
-		return $post_id;
-
-	$old_slugs = (array) get_post_meta($post_id, '_wp_old_slug');
-
-	// if we haven't added this old slug before, add it now
-	if ( !count($old_slugs) || !in_array($_POST['wp-old-slug'], $old_slugs) )
-		add_post_meta($post_id, '_wp_old_slug', $_POST['wp-old-slug']);
-
-	// if the new slug was used previously, delete it from the list
-	if ( in_array($post->post_name, $old_slugs) )
-		delete_post_meta($post_id, '_wp_old_slug', $post->post_name);
-
-	return $post_id;
-}
-
-/**
- * Retrieve the private post SQL based on capability.
- *
- * This function provides a standardized way to appropriately select on the
- * post_status of posts/pages. The function will return a piece of SQL code that
- * can be added to a WHERE clause; this SQL is constructed to allow all
- * published posts, and all private posts to which the user has access.
- *
- * It also allows plugins that define their own post type to control the cap by
- * using the hook 'pub_priv_sql_capability'. The plugin is expected to return
- * the capability the user must have to read the private post type.
- *
- * @since 2.2.0
- *
- * @uses $user_ID
- * @uses apply_filters() Call 'pub_priv_sql_capability' filter for plugins with different post types.
- *
- * @param string $post_type currently only supports 'post' or 'page'.
- * @return string SQL code that can be added to a where clause.
- */
-function get_private_posts_cap_sql($post_type) {
-	global $user_ID;
-	$cap = '';
-
-	// Private posts
-	if ($post_type == 'post') {
-		$cap = 'read_private_posts';
-	// Private pages
-	} elseif ($post_type == 'page') {
-		$cap = 'read_private_pages';
-	// Dunno what it is, maybe plugins have their own post type?
-	} else {
-		$cap = apply_filters('pub_priv_sql_capability', $cap);
-
-		if (empty($cap)) {
-			// We don't know what it is, filters don't change anything,
-			// so set the SQL up to return nothing.
-			return '1 = 0';
-		}
-	}
-
-	$sql = '(post_status = \'publish\'';
-
-	if (current_user_can($cap)) {
-		// Does the user have the capability to view private posts? Guess so.
-		$sql .= ' OR post_status = \'private\'';
-	} elseif (is_user_logged_in()) {
-		// Users can view their own private posts.
-		$sql .= ' OR post_status = \'private\' AND post_author = \'' . $user_ID . '\'';
-	}
-
-	$sql .= ')';
-
-	return $sql;
-}
-
-/**
- * Retrieve the date the the last post was published.
- *
- * The server timezone is the default and is the difference between GMT and
- * server time. The 'blog' value is the date when the last post was posted. The
- * 'gmt' is when the last post was posted in GMT formatted date.
- *
- * @since 0.71
- *
- * @uses $wpdb
- * @uses $blog_id
- * @uses apply_filters() Calls 'get_lastpostdate' filter
- *
- * @global mixed $cache_lastpostdate Stores the last post date
- * @global mixed $pagenow The current page being viewed
- *
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
- * @return string The date of the last post.
- */
-function get_lastpostdate($timezone = 'server') {
-	global $cache_lastpostdate, $wpdb, $blog_id;
-	$add_seconds_server = date('Z');
-	if ( !isset($cache_lastpostdate[$blog_id][$timezone]) ) {
-		switch(strtolower($timezone)) {
-			case 'gmt':
-				$lastpostdate = $wpdb->get_var("SELECT post_date_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
-				break;
-			case 'blog':
-				$lastpostdate = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
-				break;
-			case 'server':
-				$lastpostdate = $wpdb->get_var("SELECT DATE_ADD(post_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
-				break;
-		}
-		$cache_lastpostdate[$blog_id][$timezone] = $lastpostdate;
-	} else {
-		$lastpostdate = $cache_lastpostdate[$blog_id][$timezone];
-	}
-	return apply_filters( 'get_lastpostdate', $lastpostdate, $timezone );
-}
-
-/**
- * Retrieve last post modified date depending on timezone.
- *
- * The server timezone is the default and is the difference between GMT and
- * server time. The 'blog' value is just when the last post was modified. The
- * 'gmt' is when the last post was modified in GMT time.
- *
- * @since 1.2.0
- * @uses $wpdb
- * @uses $blog_id
- * @uses apply_filters() Calls 'get_lastpostmodified' filter
- *
- * @global mixed $cache_lastpostmodified Stores the date the last post was modified
- *
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
- * @return string The date the post was last modified.
- */
-function get_lastpostmodified($timezone = 'server') {
-	global $cache_lastpostmodified, $wpdb, $blog_id;
-	$add_seconds_server = date('Z');
-	if ( !isset($cache_lastpostmodified[$blog_id][$timezone]) ) {
-		switch(strtolower($timezone)) {
-			case 'gmt':
-				$lastpostmodified = $wpdb->get_var("SELECT post_modified_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
-				break;
-			case 'blog':
-				$lastpostmodified = $wpdb->get_var("SELECT post_modified FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
-				break;
-			case 'server':
-				$lastpostmodified = $wpdb->get_var("SELECT DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
-				break;
-		}
-		$lastpostdate = get_lastpostdate($timezone);
-		if ( $lastpostdate > $lastpostmodified ) {
-			$lastpostmodified = $lastpostdate;
-		}
-		$cache_lastpostmodified[$blog_id][$timezone] = $lastpostmodified;
-	} else {
-		$lastpostmodified = $cache_lastpostmodified[$blog_id][$timezone];
-	}
-	return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone );
-}
-
-/**
- * Updates posts in cache.
- *
- * @usedby update_page_cache() Aliased by this function.
- *
- * @package WordPress
- * @subpackage Cache
- * @since 1.5.1
- *
- * @param array $posts Array of post objects
- */
-function update_post_cache(&$posts) {
-	if ( !$posts )
-		return;
-
-	foreach ( $posts as $post )
-		wp_cache_add($post->ID, $post, 'posts');
-}
-
-/**
- * Will clean the post in the cache.
- *
- * Cleaning means delete from the cache of the post. Will call to clean the term
- * object cache associated with the post ID.
- *
- * clean_post_cache() will call itself recursively for each child post.
- *
- * This function not run if $_wp_suspend_cache_invalidation is not empty. See
- * wp_suspend_cache_invalidation().
- *
- * @package WordPress
- * @subpackage Cache
- * @since 2.0.0
- *
- * @uses do_action() Calls 'clean_post_cache' on $id before adding children (if any).
- *
- * @param int $id The Post ID in the cache to clean
- */
-function clean_post_cache($id) {
-	global $_wp_suspend_cache_invalidation, $wpdb;
-
-	if ( !empty($_wp_suspend_cache_invalidation) )
-		return;
-
-	$id = (int) $id;
-
-	wp_cache_delete($id, 'posts');
-	wp_cache_delete($id, 'post_meta');
-
-	clean_object_term_cache($id, 'post');
-
-	wp_cache_delete( 'wp_get_archives', 'general' );
-
-	do_action('clean_post_cache', $id);
-
-	if ( $children = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d", $id) ) ) {
-		foreach( $children as $cid )
-			clean_post_cache( $cid );
-	}
-}
-
-/**
- * Alias of update_post_cache().
- *
- * @see update_post_cache() Posts and pages are the same, alias is intentional
- *
- * @package WordPress
- * @subpackage Cache
- * @since 1.5.1
- *
- * @param array $pages list of page objects
- */
-function update_page_cache(&$pages) {
-	update_post_cache($pages);
-}
-
-/**
- * Will clean the page in the cache.
- *
- * Clean (read: delete) page from cache that matches $id. Will also clean cache
- * associated with 'all_page_ids' and 'get_pages'.
- *
- * @package WordPress
- * @subpackage Cache
- * @since 2.0.0
- *
- * @uses do_action() Will call the 'clean_page_cache' hook action.
- *
- * @param int $id Page ID to clean
- */
-function clean_page_cache($id) {
-	clean_post_cache($id);
-
-	wp_cache_delete( 'all_page_ids', 'posts' );
-	wp_cache_delete( 'get_pages', 'posts' );
-
-	do_action('clean_page_cache', $id);
-}
-
-/**
- * Call major cache updating functions for list of Post objects.
- *
- * @package WordPress
- * @subpackage Cache
- * @since 1.5.0
- *
- * @uses $wpdb
- * @uses update_post_cache()
- * @uses update_object_term_cache()
- * @uses update_postmeta_cache()
- *
- * @param array $posts Array of Post objects
- */
-function update_post_caches(&$posts) {
-	// No point in doing all this work if we didn't match any posts.
-	if ( !$posts )
-		return;
-
-	update_post_cache($posts);
-
-	$post_ids = array();
-
-	for ($i = 0; $i < count($posts); $i++)
-		$post_ids[] = $posts[$i]->ID;
-
-	update_object_term_cache($post_ids, 'post');
-
-	update_postmeta_cache($post_ids);
-}
-
-/**
- * Updates metadata cache for list of post IDs.
- *
- * Performs SQL query to retrieve the metadata for the post IDs and updates the
- * metadata cache for the posts. Therefore, the functions, which call this
- * function, do not need to perform SQL queries on their own.
- *
- * @package WordPress
- * @subpackage Cache
- * @since 2.1.0
- *
- * @uses $wpdb
- *
- * @param array $post_ids List of post IDs.
- * @return bool|array Returns false if there is nothing to update or an array of metadata.
- */
-function update_postmeta_cache($post_ids) {
-	global $wpdb;
-
-	if ( empty( $post_ids ) )
-		return false;
-
-	if ( !is_array($post_ids) ) {
-		$post_ids = preg_replace('|[^0-9,]|', '', $post_ids);
-		$post_ids = explode(',', $post_ids);
-	}
-
-	$post_ids = array_map('intval', $post_ids);
-
-	$ids = array();
-	foreach ( (array) $post_ids as $id ) {
-		if ( false === wp_cache_get($id, 'post_meta') )
-			$ids[] = $id;
-	}
-
-	if ( empty( $ids ) )
-		return false;
-
-	// Get post-meta info
-	$id_list = join(',', $ids);
-	$cache = array();
-	if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id IN ($id_list)", ARRAY_A) ) {
-		foreach ( (array) $meta_list as $metarow) {
-			$mpid = (int) $metarow['post_id'];
-			$mkey = $metarow['meta_key'];
-			$mval = $metarow['meta_value'];
-
-			// Force subkeys to be array type:
-			if ( !isset($cache[$mpid]) || !is_array($cache[$mpid]) )
-				$cache[$mpid] = array();
-			if ( !isset($cache[$mpid][$mkey]) || !is_array($cache[$mpid][$mkey]) )
-				$cache[$mpid][$mkey] = array();
-
-			// Add a value to the current pid/key:
-			$cache[$mpid][$mkey][] = $mval;
-		}
-	}
-
-	foreach ( (array) $ids as $id ) {
-		if ( ! isset($cache[$id]) )
-			$cache[$id] = array();
-	}
-
-	foreach ( (array) array_keys($cache) as $post)
-		wp_cache_set($post, $cache[$post], 'post_meta');
-
-	return $cache;
-}
-
-//
-// Hooks
-//
-
-/**
- * Hook for managing future post transitions to published.
- *
- * @since 2.3.0
- * @access private
- * @uses $wpdb
- * @uses do_action() Calls 'private_to_published' on post ID if this is a 'private_to_published' call.
- * @uses wp_clear_scheduled_hook() with 'publish_future_post' and post ID.
- *
- * @param string $new_status New post status
- * @param string $old_status Previous post status
- * @param object $post Object type containing the post information
- */
-function _transition_post_status($new_status, $old_status, $post) {
-	global $wpdb;
-
-	if ( $old_status != 'publish' && $new_status == 'publish' ) {
-		// Reset GUID if transitioning to publish and it is empty
-		if ( '' == get_the_guid($post->ID) )
-			$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post->ID ) ), array( 'ID' => $post->ID ) );
-		do_action('private_to_published', $post->ID);  // Deprecated, use private_to_publish
-	}
-
-	// Always clears the hook in case the post status bounced from future to draft.
-	wp_clear_scheduled_hook('publish_future_post', $post->ID);
-}
-
-/**
- * Hook used to schedule publication for a post marked for the future.
- *
- * The $post properties used and must exist are 'ID' and 'post_date_gmt'.
- *
- * @since 2.3.0
- * @access private
- *
- * @param int $deprecated Not Used. Can be set to null.
- * @param object $post Object type containing the post information
- */
-function _future_post_hook($deprecated = '', $post) {
-	wp_clear_scheduled_hook( 'publish_future_post', $post->ID );
-	wp_schedule_single_event(strtotime($post->post_date_gmt. ' GMT'), 'publish_future_post', array($post->ID));
-}
-
-/**
- * Hook to schedule pings and enclosures when a post is published.
- *
- * @since 2.3.0
- * @access private
- * @uses $wpdb
- * @uses XMLRPC_REQUEST and APP_REQUEST constants.
- * @uses do_action() Calls 'xmlprc_publish_post' on post ID if XMLRPC_REQUEST is defined.
- * @uses do_action() Calls 'app_publish_post' on post ID if APP_REQUEST is defined.
- *
- * @param int $post_id The ID in the database table of the post being published
- */
-function _publish_post_hook($post_id) {
-	global $wpdb;
-
-	if ( defined('XMLRPC_REQUEST') )
-		do_action('xmlrpc_publish_post', $post_id);
-	if ( defined('APP_REQUEST') )
-		do_action('app_publish_post', $post_id);
-
-	if ( defined('WP_IMPORTING') )
-		return;
-
-	$data = array( 'post_id' => $post_id, 'meta_value' => '1' );
-	if ( get_option('default_pingback_flag') )
-		$wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_pingme' ) );
-	$wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_encloseme' ) );
-	wp_schedule_single_event(time(), 'do_pings');
-}
-
-/**
- * Hook used to prevent page/post cache and rewrite rules from staying dirty.
- *
- * Does two things. If the post is a page and has a template then it will
- * update/add that template to the meta. For both pages and posts, it will clean
- * the post cache to make sure that the cache updates to the changes done
- * recently. For pages, the rewrite rules of WordPress are flushed to allow for
- * any changes.
- *
- * The $post parameter, only uses 'post_type' property and 'page_template'
- * property.
- *
- * @since 2.3.0
- * @access private
- * @uses $wp_rewrite Flushes Rewrite Rules.
- *
- * @param int $post_id The ID in the database table for the $post
- * @param object $post Object type containing the post information
- */
-function _save_post_hook($post_id, $post) {
-	if ( $post->post_type == 'page' ) {
-		clean_page_cache($post_id);
-		// Avoid flushing rules for every post during import.
-		if ( !defined('WP_IMPORTING') ) {
-			global $wp_rewrite;
-			$wp_rewrite->flush_rules(false);
-		}
-	} else {
-		clean_post_cache($post_id);
-	}
-}
-
-/**
- * Retrieve post ancestors and append to post ancestors property.
- *
- * Will only retrieve ancestors once, if property is already set, then nothing
- * will be done. If there is not a parent post, or post ID and post parent ID
- * are the same then nothing will be done.
- *
- * The parameter is passed by reference, so nothing needs to be returned. The
- * property will be updated and can be referenced after the function is
- * complete. The post parent will be an ancestor and the parent of the post
- * parent will be an ancestor. There will only be two ancestors at the most.
- *
- * @since unknown
- * @access private
- * @uses $wpdb
- *
- * @param object $_post Post data.
- * @return null When nothing needs to be done.
- */
-function _get_post_ancestors(&$_post) {
-	global $wpdb;
-
-	if ( isset($_post->ancestors) )
-		return;
-
-	$_post->ancestors = array();
-
-	if ( empty($_post->post_parent) || $_post->ID == $_post->post_parent )
-		return;
-
-	$id = $_post->ancestors[] = $_post->post_parent;
-	while ( $ancestor = $wpdb->get_var( $wpdb->prepare("SELECT `post_parent` FROM $wpdb->posts WHERE ID = %d LIMIT 1", $id) ) ) {
-		if ( $id == $ancestor )
-			break;
-		$id = $_post->ancestors[] = $ancestor;
-	}
-}
-
-/**
- * Determines which fields of posts are to be saved in revisions.
- *
- * Does two things. If passed a post *array*, it will return a post array ready
- * to be insterted into the posts table as a post revision. Otherwise, returns
- * an array whose keys are the post fields to be saved for post revisions.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- * @access private
- * @uses apply_filters() Calls '_wp_post_revision_fields' on 'title', 'content' and 'excerpt' fields.
- *
- * @param array $post Optional a post array to be processed for insertion as a post revision.
- * @param bool $autosave optional Is the revision an autosave?
- * @return array Post array ready to be inserted as a post revision or array of fields that can be versioned.
- */
-function _wp_post_revision_fields( $post = null, $autosave = false ) {
-	static $fields = false;
-
-	if ( !$fields ) {
-		// Allow these to be versioned
-		$fields = array(
-			'post_title' => __( 'Title' ),
-			'post_content' => __( 'Content' ),
-			'post_excerpt' => __( 'Excerpt' ),
-		);
-
-		// Runs only once
-		$fields = apply_filters( '_wp_post_revision_fields', $fields );
-
-		// WP uses these internally either in versioning or elsewhere - they cannot be versioned
-		foreach ( array( 'ID', 'post_name', 'post_parent', 'post_date', 'post_date_gmt', 'post_status', 'post_type', 'comment_count', 'post_author' ) as $protect )
-			unset( $fields[$protect] );
-	}
-
-	if ( !is_array($post) )
-		return $fields;
-
-	$return = array();
-	foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field )
-		$return[$field] = $post[$field];
-
-	$return['post_parent']   = $post['ID'];
-	$return['post_status']   = 'inherit';
-	$return['post_type']     = 'revision';
-	$return['post_name']     = $autosave ? "$post[ID]-autosave" : "$post[ID]-revision";
-	$return['post_date']     = isset($post['post_modified']) ? $post['post_modified'] : '';
-	$return['post_date_gmt'] = isset($post['post_modified_gmt']) ? $post['post_modified_gmt'] : '';
-
-	return $return;
-}
-
-/**
- * Saves an already existing post as a post revision.
- *
- * Typically used immediately prior to post updates.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses _wp_put_post_revision()
- *
- * @param int $post_id The ID of the post to save as a revision.
- * @return mixed Null or 0 if error, new revision ID, if success.
- */
-function wp_save_post_revision( $post_id ) {
-	// We do autosaves manually with wp_create_post_autosave()
-	if ( @constant( 'DOING_AUTOSAVE' ) )
-		return;
-
-	// WP_POST_REVISIONS = 0, false
-	if ( !constant('WP_POST_REVISIONS') )
-		return;
-
-	if ( !$post = get_post( $post_id, ARRAY_A ) )
-		return;
-
-	if ( !in_array( $post['post_type'], array( 'post', 'page' ) ) )
-		return;
-
-	$return = _wp_put_post_revision( $post );
-
-	// WP_POST_REVISIONS = true (default), -1
-	if ( !is_numeric( WP_POST_REVISIONS ) || WP_POST_REVISIONS < 0 )
-		return $return;
-
-	// all revisions and (possibly) one autosave
-	$revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) );
-
-	// WP_POST_REVISIONS = (int) (# of autasaves to save)
-	$delete = count($revisions) - WP_POST_REVISIONS;
-
-	if ( $delete < 1 )
-		return $return;
-
-	$revisions = array_slice( $revisions, 0, $delete );
-
-	for ( $i = 0; isset($revisions[$i]); $i++ ) {
-		if ( false !== strpos( $revisions[$i]->post_name, 'autosave' ) )
-			continue;
-		wp_delete_post_revision( $revisions[$i]->ID );
-	}
-
-	return $return;
-}
-
-/**
- * Retrieve the autosaved data of the specified post.
- *
- * Returns a post object containing the information that was autosaved for the
- * specified post.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param int $post_id The post ID.
- * @return object|bool The autosaved data or false on failure or when no autosave exists.
- */
-function wp_get_post_autosave( $post_id ) {
-
-	if ( !$post = get_post( $post_id ) )
-		return false;
-
-	$q = array(
-		'name' => "{$post->ID}-autosave",
-		'post_parent' => $post->ID,
-		'post_type' => 'revision',
-		'post_status' => 'inherit'
-	);
-
-	// Use WP_Query so that the result gets cached
-	$autosave_query = new WP_Query;
-
-	add_action( 'parse_query', '_wp_get_post_autosave_hack' );
-	$autosave = $autosave_query->query( $q );
-	remove_action( 'parse_query', '_wp_get_post_autosave_hack' );
-
-	if ( $autosave && is_array($autosave) && is_object($autosave[0]) )
-		return $autosave[0];
-
-	return false;
-}
-
-/**
- * Internally used to hack WP_Query into submission.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param object $query WP_Query object
- */
-function _wp_get_post_autosave_hack( $query ) {
-	$query->is_single = false;
-}
-
-/**
- * Determines if the specified post is a revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param int|object $post Post ID or post object.
- * @return bool|int False if not a revision, ID of revision's parent otherwise.
- */
-function wp_is_post_revision( $post ) {
-	if ( !$post = wp_get_post_revision( $post ) )
-		return false;
-	return (int) $post->post_parent;
-}
-
-/**
- * Determines if the specified post is an autosave.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param int|object $post Post ID or post object.
- * @return bool|int False if not a revision, ID of autosave's parent otherwise
- */
-function wp_is_post_autosave( $post ) {
-	if ( !$post = wp_get_post_revision( $post ) )
-		return false;
-	if ( "{$post->post_parent}-autosave" !== $post->post_name )
-		return false;
-	return (int) $post->post_parent;
-}
-
-/**
- * Inserts post data into the posts table as a post revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses wp_insert_post()
- *
- * @param int|object|array $post Post ID, post object OR post array.
- * @param bool $autosave Optional. Is the revision an autosave?
- * @return mixed Null or 0 if error, new revision ID if success.
- */
-function _wp_put_post_revision( $post = null, $autosave = false ) {
-	if ( is_object($post) )
-		$post = get_object_vars( $post );
-	elseif ( !is_array($post) )
-		$post = get_post($post, ARRAY_A);
-	if ( !$post || empty($post['ID']) )
-		return;
-
-	if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
-		return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
-
-	$post = _wp_post_revision_fields( $post, $autosave );
-	$post = add_magic_quotes($post); //since data is from db
-
-	$revision_id = wp_insert_post( $post );
-	if ( is_wp_error($revision_id) )
-		return $revision_id;
-
-	if ( $revision_id )
-		do_action( '_wp_put_post_revision', $revision_id );
-	return $revision_id;
-}
-
-/**
- * Gets a post revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses get_post()
- *
- * @param int|object $post Post ID or post object
- * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N.
- * @param string $filter Optional sanitation filter.  @see sanitize_post()
- * @return mixed Null if error or post object if success
- */
-function &wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
-	$null = null;
-	if ( !$revision = get_post( $post, OBJECT, $filter ) )
-		return $revision;
-	if ( 'revision' !== $revision->post_type )
-		return $null;
-
-	if ( $output == OBJECT ) {
-		return $revision;
-	} elseif ( $output == ARRAY_A ) {
-		$_revision = get_object_vars($revision);
-		return $_revision;
-	} elseif ( $output == ARRAY_N ) {
-		$_revision = array_values(get_object_vars($revision));
-		return $_revision;
-	}
-
-	return $revision;
-}
-
-/**
- * Restores a post to the specified revision.
- *
- * Can restore a past revision using all fields of the post revision, or only selected fields.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses wp_get_post_revision()
- * @uses wp_update_post()
- * @uses do_action() Calls 'wp_restore_post_revision' on post ID and revision ID if wp_update_post()
- *  is successful.
- *
- * @param int|object $revision_id Revision ID or revision object.
- * @param array $fields Optional. What fields to restore from. Defaults to all.
- * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
- */
-function wp_restore_post_revision( $revision_id, $fields = null ) {
-	if ( !$revision = wp_get_post_revision( $revision_id, ARRAY_A ) )
-		return $revision;
-
-	if ( !is_array( $fields ) )
-		$fields = array_keys( _wp_post_revision_fields() );
-
-	$update = array();
-	foreach( array_intersect( array_keys( $revision ), $fields ) as $field )
-		$update[$field] = $revision[$field];
-
-	if ( !$update )
-		return false;
-
-	$update['ID'] = $revision['post_parent'];
-
-	$update = add_magic_quotes( $update ); //since data is from db
-
-	$post_id = wp_update_post( $update );
-	if ( is_wp_error( $post_id ) )
-		return $post_id;
-
-	if ( $post_id )
-		do_action( 'wp_restore_post_revision', $post_id, $revision['ID'] );
-
-	return $post_id;
-}
-
-/**
- * Deletes a revision.
- *
- * Deletes the row from the posts table corresponding to the specified revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses wp_get_post_revision()
- * @uses wp_delete_post()
- *
- * @param int|object $revision_id Revision ID or revision object.
- * @param array $fields Optional. What fields to restore from.  Defaults to all.
- * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
- */
-function wp_delete_post_revision( $revision_id ) {
-	if ( !$revision = wp_get_post_revision( $revision_id ) )
-		return $revision;
-
-	$delete = wp_delete_post( $revision->ID );
-	if ( is_wp_error( $delete ) )
-		return $delete;
-
-	if ( $delete )
-		do_action( 'wp_delete_post_revision', $revision->ID, $revision );
-
-	return $delete;
-}
-
-/**
- * Returns all revisions of specified post.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses get_children()
- *
- * @param int|object $post_id Post ID or post object
- * @return array empty if no revisions
- */
-function wp_get_post_revisions( $post_id = 0, $args = null ) {
-	if ( !constant('WP_POST_REVISIONS') )
-		return array();
-	if ( ( !$post = get_post( $post_id ) ) || empty( $post->ID ) )
-		return array();
-
-	$defaults = array( 'order' => 'DESC', 'orderby' => 'date' );
-	$args = wp_parse_args( $args, $defaults );
-	$args = array_merge( $args, array( 'post_parent' => $post->ID, 'post_type' => 'revision', 'post_status' => 'inherit' ) );
-
-	if ( !$revisions = get_children( $args ) )
-		return array();
-	return $revisions;
-}
-
-function _set_preview($post) {
-
-	if ( ! is_object($post) )
-		return $post;
-
-	$preview = wp_get_post_autosave($post->ID);
-
-	if ( ! is_object($preview) )
-		return $post;
-
-	$preview = sanitize_post($preview);
-
-	$post->post_content = $preview->post_content;
-	$post->post_title = $preview->post_title;
-	$post->post_excerpt = $preview->post_excerpt;
-
-	return $post;
-}
-
-function _show_post_preview() {
-
-	if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) {
-		$id = (int) $_GET['preview_id'];
-
-		if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) )
-			wp_die( __('You do not have permission to preview drafts.') );
-
-		add_filter('the_preview', '_set_preview');
-	}
-}
+<?php
+/**
+ * Post functions and post utility function.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 1.5.0
+ */
+
+//
+// Post Type Registration
+//
+
+/**
+ * Creates the initial post types when 'init' action is fired.
+ */
+function create_initial_post_types() {
+	register_post_type( 'post', array('exclude_from_search' => false) );
+	register_post_type( 'page', array('exclude_from_search' => false) );
+	register_post_type( 'attachment', array('exclude_from_search' => false) );
+	register_post_type( 'revision', array('exclude_from_search' => true) );
+}
+add_action( 'init', 'create_initial_post_types', 0 ); // highest priority
+
+/**
+ * Retrieve attached file path based on attachment ID.
+ *
+ * You can optionally send it through the 'get_attached_file' filter, but by
+ * default it will just return the file path unfiltered.
+ *
+ * The function works by getting the single post meta name, named
+ * '_wp_attached_file' and returning it. This is a convenience function to
+ * prevent looking up the meta name and provide a mechanism for sending the
+ * attached filename through a filter.
+ *
+ * @since 2.0.0
+ * @uses apply_filters() Calls 'get_attached_file' on file path and attachment ID.
+ *
+ * @param int $attachment_id Attachment ID.
+ * @param bool $unfiltered Whether to apply filters or not.
+ * @return string The file path to the attached file.
+ */
+function get_attached_file( $attachment_id, $unfiltered = false ) {
+	$file = get_post_meta( $attachment_id, '_wp_attached_file', true );
+	// If the file is relative, prepend upload dir
+	if ( 0 !== strpos($file, '/') && !preg_match('|^.:\\\|', $file) && ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) )
+		$file = $uploads['basedir'] . "/$file";
+	if ( $unfiltered )
+		return $file;
+	return apply_filters( 'get_attached_file', $file, $attachment_id );
+}
+
+/**
+ * Update attachment file path based on attachment ID.
+ *
+ * Used to update the file path of the attachment, which uses post meta name
+ * '_wp_attached_file' to store the path of the attachment.
+ *
+ * @since 2.1.0
+ * @uses apply_filters() Calls 'update_attached_file' on file path and attachment ID.
+ *
+ * @param int $attachment_id Attachment ID
+ * @param string $file File path for the attachment
+ * @return bool False on failure, true on success.
+ */
+function update_attached_file( $attachment_id, $file ) {
+	if ( !get_post( $attachment_id ) )
+		return false;
+
+	$file = apply_filters( 'update_attached_file', $file, $attachment_id );
+	$file = _wp_relative_upload_path($file);
+
+	return update_post_meta( $attachment_id, '_wp_attached_file', $file );
+}
+
+/**
+ * Return relative path to an uploaded file.
+ *
+ * The path is relative to the current upload dir.
+ *
+ * @since 2.9
+ * @uses apply_filters() Calls '_wp_relative_upload_path' on file path.
+ *
+ * @param string $path Full path to the file
+ * @return string relative path on success, unchanged path on failure.
+ */
+function _wp_relative_upload_path( $path ) {
+	$new_path = $path;
+
+	if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) {
+		if ( 0 === strpos($new_path, $uploads['basedir']) ) {
+				$new_path = str_replace($uploads['basedir'], '', $new_path);
+				$new_path = ltrim($new_path, '/');
+		}
+	}
+
+	return apply_filters( '_wp_relative_upload_path', $new_path, $path );
+}
+
+/**
+ * Retrieve all children of the post parent ID.
+ *
+ * Normally, without any enhancements, the children would apply to pages. In the
+ * context of the inner workings of WordPress, pages, posts, and attachments
+ * share the same table, so therefore the functionality could apply to any one
+ * of them. It is then noted that while this function does not work on posts, it
+ * does not mean that it won't work on posts. It is recommended that you know
+ * what context you wish to retrieve the children of.
+ *
+ * Attachments may also be made the child of a post, so if that is an accurate
+ * statement (which needs to be verified), it would then be possible to get
+ * all of the attachments for a post. Attachments have since changed since
+ * version 2.5, so this is most likely unaccurate, but serves generally as an
+ * example of what is possible.
+ *
+ * The arguments listed as defaults are for this function and also of the
+ * {@link get_posts()} function. The arguments are combined with the
+ * get_children defaults and are then passed to the {@link get_posts()}
+ * function, which accepts additional arguments. You can replace the defaults in
+ * this function, listed below and the additional arguments listed in the
+ * {@link get_posts()} function.
+ *
+ * The 'post_parent' is the most important argument and important attention
+ * needs to be paid to the $args parameter. If you pass either an object or an
+ * integer (number), then just the 'post_parent' is grabbed and everything else
+ * is lost. If you don't specify any arguments, then it is assumed that you are
+ * in The Loop and the post parent will be grabbed for from the current post.
+ *
+ * The 'post_parent' argument is the ID to get the children. The 'numberposts'
+ * is the amount of posts to retrieve that has a default of '-1', which is
+ * used to get all of the posts. Giving a number higher than 0 will only
+ * retrieve that amount of posts.
+ *
+ * The 'post_type' and 'post_status' arguments can be used to choose what
+ * criteria of posts to retrieve. The 'post_type' can be anything, but WordPress
+ * post types are 'post', 'pages', and 'attachments'. The 'post_status'
+ * argument will accept any post status within the write administration panels.
+ *
+ * @see get_posts() Has additional arguments that can be replaced.
+ * @internal Claims made in the long description might be inaccurate.
+ *
+ * @since 2.0.0
+ *
+ * @param mixed $args Optional. User defined arguments for replacing the defaults.
+ * @param string $output Optional. Constant for return type, either OBJECT (default), ARRAY_A, ARRAY_N.
+ * @return array|bool False on failure and the type will be determined by $output parameter.
+ */
+function &get_children($args = '', $output = OBJECT) {
+	$kids = array();
+	if ( empty( $args ) ) {
+		if ( isset( $GLOBALS['post'] ) ) {
+			$args = array('post_parent' => (int) $GLOBALS['post']->post_parent );
+		} else {
+			return $kids;
+		}
+	} elseif ( is_object( $args ) ) {
+		$args = array('post_parent' => (int) $args->post_parent );
+	} elseif ( is_numeric( $args ) ) {
+		$args = array('post_parent' => (int) $args);
+	}
+
+	$defaults = array(
+		'numberposts' => -1, 'post_type' => 'any',
+		'post_status' => 'any', 'post_parent' => 0,
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+
+	$children = get_posts( $r );
+
+	if ( !$children )
+		return $kids;
+
+	update_post_cache($children);
+
+	foreach ( $children as $key => $child )
+		$kids[$child->ID] =& $children[$key];
+
+	if ( $output == OBJECT ) {
+		return $kids;
+	} elseif ( $output == ARRAY_A ) {
+		foreach ( (array) $kids as $kid )
+			$weeuns[$kid->ID] = get_object_vars($kids[$kid->ID]);
+		return $weeuns;
+	} elseif ( $output == ARRAY_N ) {
+		foreach ( (array) $kids as $kid )
+			$babes[$kid->ID] = array_values(get_object_vars($kids[$kid->ID]));
+		return $babes;
+	} else {
+		return $kids;
+	}
+}
+
+/**
+ * Get extended entry info (<!--more-->).
+ *
+ * There should not be any space after the second dash and before the word
+ * 'more'. There can be text or space(s) after the word 'more', but won't be
+ * referenced.
+ *
+ * The returned array has 'main' and 'extended' keys. Main has the text before
+ * the <code><!--more--></code>. The 'extended' key has the content after the
+ * <code><!--more--></code> comment.
+ *
+ * @since 1.0.0
+ *
+ * @param string $post Post content.
+ * @return array Post before ('main') and after ('extended').
+ */
+function get_extended($post) {
+	//Match the new style more links
+	if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
+		list($main, $extended) = explode($matches[0], $post, 2);
+	} else {
+		$main = $post;
+		$extended = '';
+	}
+
+	// Strip leading and trailing whitespace
+	$main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
+	$extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
+
+	return array('main' => $main, 'extended' => $extended);
+}
+
+/**
+ * Retrieves post data given a post ID or post object.
+ *
+ * See {@link sanitize_post()} for optional $filter values. Also, the parameter
+ * $post, must be given as a variable, since it is passed by reference.
+ *
+ * @since 1.5.1
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/get_post
+ *
+ * @param int|object $post Post ID or post object.
+ * @param string $output Optional, default is Object. Either OBJECT, ARRAY_A, or ARRAY_N.
+ * @param string $filter Optional, default is raw.
+ * @return mixed Post data
+ */
+function &get_post(&$post, $output = OBJECT, $filter = 'raw') {
+	global $wpdb;
+	$null = null;
+
+	if ( empty($post) ) {
+		if ( isset($GLOBALS['post']) )
+			$_post = & $GLOBALS['post'];
+		else
+			return $null;
+	} elseif ( is_object($post) && empty($post->filter) ) {
+		_get_post_ancestors($post);
+		$_post = sanitize_post($post, 'raw');
+		wp_cache_add($post->ID, $_post, 'posts');
+	} else {
+		if ( is_object($post) )
+			$post = $post->ID;
+		$post = (int) $post;
+		if ( ! $_post = wp_cache_get($post, 'posts') ) {
+			$_post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post));
+			if ( ! $_post )
+				return $null;
+			_get_post_ancestors($_post);
+			$_post = sanitize_post($_post, 'raw');
+			wp_cache_add($_post->ID, $_post, 'posts');
+		}
+	}
+
+	if ($filter != 'raw')
+		$_post = sanitize_post($_post, $filter);
+
+	if ( $output == OBJECT ) {
+		return $_post;
+	} elseif ( $output == ARRAY_A ) {
+		$__post = get_object_vars($_post);
+		return $__post;
+	} elseif ( $output == ARRAY_N ) {
+		$__post = array_values(get_object_vars($_post));
+		return $__post;
+	} else {
+		return $_post;
+	}
+}
+
+/**
+ * Retrieve ancestors of a post.
+ *
+ * @since 2.5.0
+ *
+ * @param int|object $post Post ID or post object
+ * @return array Ancestor IDs or empty array if none are found.
+ */
+function get_post_ancestors($post) {
+	$post = get_post($post);
+
+	if ( !empty($post->ancestors) )
+		return $post->ancestors;
+
+	return array();
+}
+
+/**
+ * Retrieve data from a post field based on Post ID.
+ *
+ * Examples of the post field will be, 'post_type', 'post_status', 'content',
+ * etc and based off of the post object property or key names.
+ *
+ * The context values are based off of the taxonomy filter functions and
+ * supported values are found within those functions.
+ *
+ * @since 2.3.0
+ * @uses sanitize_post_field() See for possible $context values.
+ *
+ * @param string $field Post field name
+ * @param id $post Post ID
+ * @param string $context Optional. How to filter the field. Default is display.
+ * @return WP_Error|string Value in post field or WP_Error on failure
+ */
+function get_post_field( $field, $post, $context = 'display' ) {
+	$post = (int) $post;
+	$post = get_post( $post );
+
+	if ( is_wp_error($post) )
+		return $post;
+
+	if ( !is_object($post) )
+		return '';
+
+	if ( !isset($post->$field) )
+		return '';
+
+	return sanitize_post_field($field, $post->$field, $post->ID, $context);
+}
+
+/**
+ * Retrieve the mime type of an attachment based on the ID.
+ *
+ * This function can be used with any post type, but it makes more sense with
+ * attachments.
+ *
+ * @since 2.0.0
+ *
+ * @param int $ID Optional. Post ID.
+ * @return bool|string False on failure or returns the mime type
+ */
+function get_post_mime_type($ID = '') {
+	$post = & get_post($ID);
+
+	if ( is_object($post) )
+		return $post->post_mime_type;
+
+	return false;
+}
+
+/**
+ * Retrieve the post status based on the Post ID.
+ *
+ * If the post ID is of an attachment, then the parent post status will be given
+ * instead.
+ *
+ * @since 2.0.0
+ *
+ * @param int $ID Post ID
+ * @return string|bool Post status or false on failure.
+ */
+function get_post_status($ID = '') {
+	$post = get_post($ID);
+
+	if ( is_object($post) ) {
+		if ( ('attachment' == $post->post_type) && $post->post_parent && ($post->ID != $post->post_parent) )
+			return get_post_status($post->post_parent);
+		else
+			return $post->post_status;
+	}
+
+	return false;
+}
+
+/**
+ * Retrieve all of the WordPress supported post statuses.
+ *
+ * Posts have a limited set of valid status values, this provides the
+ * post_status values and descriptions.
+ *
+ * @since 2.5.0
+ *
+ * @return array List of post statuses.
+ */
+function get_post_statuses( ) {
+	$status = array(
+		'draft'			=> __('Draft'),
+		'pending'		=> __('Pending Review'),
+		'private'		=> __('Private'),
+		'publish'		=> __('Published')
+	);
+
+	return $status;
+}
+
+/**
+ * Retrieve all of the WordPress support page statuses.
+ *
+ * Pages have a limited set of valid status values, this provides the
+ * post_status values and descriptions.
+ *
+ * @since 2.5.0
+ *
+ * @return array List of page statuses.
+ */
+function get_page_statuses( ) {
+	$status = array(
+		'draft'			=> __('Draft'),
+		'private'		=> __('Private'),
+		'publish'		=> __('Published')
+	);
+
+	return $status;
+}
+
+/**
+ * Retrieve the post type of the current post or of a given post.
+ *
+ * @since 2.1.0
+ *
+ * @uses $wpdb
+ * @uses $posts The Loop post global
+ *
+ * @param mixed $post Optional. Post object or post ID.
+ * @return bool|string post type or false on failure.
+ */
+function get_post_type($post = false) {
+	global $posts;
+
+	if ( false === $post )
+		$post = $posts[0];
+	elseif ( (int) $post )
+		$post = get_post($post, OBJECT);
+
+	if ( is_object($post) )
+		return $post->post_type;
+
+	return false;
+}
+
+/**
+ * Get a list of all registered post type objects.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.9.0
+ * @uses $wp_post_types
+ * @see register_post_type
+ * @see get_post_types
+ *
+ * @param array|string $args An array of key => value arguments to match against the post types.
+ *  Only post types having attributes that match all arguments are returned.
+ * @param string $output The type of output to return, either post type 'names' or 'objects'. 'names' is the default.
+ * @return array A list of post type names or objects
+ */
+function get_post_types( $args = array(), $output = 'names' ) {
+	global $wp_post_types;
+
+	$do_names = false;
+	if ( 'names' == $output )
+		$do_names = true;
+
+	$post_types = array();
+	foreach ( (array) $wp_post_types as $post_type ) {
+		if ( empty($args) ) {
+			if ( $do_names )
+				$post_types[] = $post_type->name;
+			else
+				$post_types[] = $post_type;
+		} elseif ( array_intersect_assoc((array) $post_type, $args) ) {
+			if ( $do_names )
+				$post_types[] = $post_type->name;
+			else
+				$post_types[] = $post_type;
+		}
+	}
+
+	return $post_types;
+}
+
+/**
+ * Register a post type. Do not use before init.
+ *
+ * A simple function for creating or modifying a post type based on the
+ * parameters given. The function will accept an array (second optional
+ * parameter), along with a string for the post type name.
+ *
+ *
+ * Optional $args contents:
+ *
+ * exclude_from_search - Whether to exclude posts with this post type from search results. Defaults to true.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.9.0
+ * @uses $wp_post_types Inserts new post type object into the list
+ *
+ * @param string $post_type Name of the post type.
+ * @param array|string $args See above description.
+ */
+function register_post_type($post_type, $args = array()) {
+	global $wp_post_types;
+
+	if (!is_array($wp_post_types))
+		$wp_post_types = array();
+
+	$defaults = array('exclude_from_search' => true);
+	$args = wp_parse_args($args, $defaults);
+
+	$post_type = sanitize_user($post_type, true);
+	$args['name'] = $post_type;
+	$wp_post_types[$post_type] = (object) $args;
+}
+
+/**
+ * Updates the post type for the post ID.
+ *
+ * The page or post cache will be cleaned for the post ID.
+ *
+ * @since 2.5.0
+ *
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID to change post type. Not actually optional.
+ * @param string $post_type Optional, default is post. Supported values are 'post' or 'page' to
+ *  name a few.
+ * @return int Amount of rows changed. Should be 1 for success and 0 for failure.
+ */
+function set_post_type( $post_id = 0, $post_type = 'post' ) {
+	global $wpdb;
+
+	$post_type = sanitize_post_field('post_type', $post_type, $post_id, 'db');
+	$return = $wpdb->update($wpdb->posts, array('post_type' => $post_type), array('ID' => $post_id) );
+
+	if ( 'page' == $post_type )
+		clean_page_cache($post_id);
+	else
+		clean_post_cache($post_id);
+
+	return $return;
+}
+
+/**
+ * Retrieve list of latest posts or posts matching criteria.
+ *
+ * The defaults are as follows:
+ *     'numberposts' - Default is 5. Total number of posts to retrieve.
+ *     'offset' - Default is 0. See {@link WP_Query::query()} for more.
+ *     'category' - What category to pull the posts from.
+ *     'orderby' - Default is 'post_date'. How to order the posts.
+ *     'order' - Default is 'DESC'. The order to retrieve the posts.
+ *     'include' - See {@link WP_Query::query()} for more.
+ *     'exclude' - See {@link WP_Query::query()} for more.
+ *     'meta_key' - See {@link WP_Query::query()} for more.
+ *     'meta_value' - See {@link WP_Query::query()} for more.
+ *     'post_type' - Default is 'post'. Can be 'page', or 'attachment' to name a few.
+ *     'post_parent' - The parent of the post or post type.
+ *     'post_status' - Default is 'published'. Post status to retrieve.
+ *
+ * @since 1.2.0
+ * @uses $wpdb
+ * @uses WP_Query::query() See for more default arguments and information.
+ * @link http://codex.wordpress.org/Template_Tags/get_posts
+ *
+ * @param array $args Optional. Overrides defaults.
+ * @return array List of posts.
+ */
+function get_posts($args = null) {
+	$defaults = array(
+		'numberposts' => 5, 'offset' => 0,
+		'category' => 0, 'orderby' => 'post_date',
+		'order' => 'DESC', 'include' => '',
+		'exclude' => '', 'meta_key' => '',
+		'meta_value' =>'', 'post_type' => 'post',
+		'suppress_filters' => true
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	if ( empty( $r['post_status'] ) )
+		$r['post_status'] = ( 'attachment' == $r['post_type'] ) ? 'inherit' : 'publish';
+	if ( ! empty($r['numberposts']) )
+		$r['posts_per_page'] = $r['numberposts'];
+	if ( ! empty($r['category']) )
+		$r['cat'] = $r['category'];
+	if ( ! empty($r['include']) ) {
+		$incposts = preg_split('/[\s,]+/',$r['include']);
+		$r['posts_per_page'] = count($incposts);  // only the number of posts included
+		$r['post__in'] = $incposts;
+	} elseif ( ! empty($r['exclude']) )
+		$r['post__not_in'] = preg_split('/[\s,]+/',$r['exclude']);
+
+	$r['caller_get_posts'] = true;
+
+	$get_posts = new WP_Query;
+	return $get_posts->query($r);
+
+}
+
+//
+// Post meta functions
+//
+
+/**
+ * Add meta data field to a post.
+ *
+ * Post meta data is called "Custom Fields" on the Administration Panels.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/add_post_meta
+ *
+ * @param int $post_id Post ID.
+ * @param string $key Metadata name.
+ * @param mixed $value Metadata value.
+ * @param bool $unique Optional, default is false. Whether the same key should not be added.
+ * @return bool False for failure. True for success.
+ */
+function add_post_meta($post_id, $meta_key, $meta_value, $unique = false) {
+	// make sure meta is added to the post, not a revision
+	if ( $the_post = wp_is_post_revision($post_id) )
+		$post_id = $the_post;
+
+	return add_metadata('post', $post_id, $meta_key, $meta_value, $unique);
+}
+
+/**
+ * Remove metadata matching criteria from a post.
+ *
+ * You can match based on the key, or key and value. Removing based on key and
+ * value, will keep from removing duplicate metadata with the same key. It also
+ * allows removing all metadata matching key, if needed.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/delete_post_meta
+ *
+ * @param int $post_id post ID
+ * @param string $meta_key Metadata name.
+ * @param mixed $meta_value Optional. Metadata value.
+ * @return bool False for failure. True for success.
+ */
+function delete_post_meta($post_id, $meta_key, $meta_value = '') {
+	// make sure meta is added to the post, not a revision
+	if ( $the_post = wp_is_post_revision($post_id) )
+		$post_id = $the_post;
+
+	return delete_metadata('post', $post_id, $meta_key, $meta_value);
+}
+
+/**
+ * Retrieve post meta field for a post.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/get_post_meta
+ *
+ * @param int $post_id Post ID.
+ * @param string $key The meta key to retrieve.
+ * @param bool $single Whether to return a single value.
+ * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
+ *  is true.
+ */
+function get_post_meta($post_id, $key, $single = false) {
+	return get_metadata('post', $post_id, $key, $single);
+}
+
+/**
+ * Update post meta field based on post ID.
+ *
+ * Use the $prev_value parameter to differentiate between meta fields with the
+ * same key and post ID.
+ *
+ * If the meta field for the post does not exist, it will be added.
+ *
+ * @since 1.5
+ * @uses $wpdb
+ * @link http://codex.wordpress.org/Function_Reference/update_post_meta
+ *
+ * @param int $post_id Post ID.
+ * @param string $key Metadata key.
+ * @param mixed $value Metadata value.
+ * @param mixed $prev_value Optional. Previous value to check before removing.
+ * @return bool False on failure, true if success.
+ */
+function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '') {
+	// make sure meta is added to the post, not a revision
+	if ( $the_post = wp_is_post_revision($post_id) )
+		$post_id = $the_post;
+
+	return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
+}
+
+/**
+ * Delete everything from post meta matching meta key.
+ *
+ * @since 2.3.0
+ * @uses $wpdb
+ *
+ * @param string $post_meta_key Key to search for when deleting.
+ * @return bool Whether the post meta key was deleted from the database
+ */
+function delete_post_meta_by_key($post_meta_key) {
+	if ( !$post_meta_key )
+		return false;
+
+	global $wpdb;
+	$post_ids = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key));
+	if ( $post_ids ) {
+		$postmetaids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key ) );
+		$in = implode( ',', array_fill(1, count($postmetaids), '%d'));
+		do_action( 'delete_postmeta', $postmetaids );
+		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id IN($in)", $postmetaids ));
+		do_action( 'deleted_postmeta', $postmetaids );
+		foreach ( $post_ids as $post_id )
+			wp_cache_delete($post_id, 'post_meta');
+		return true;
+	}
+	return false;
+}
+
+/**
+ * Retrieve post meta fields, based on post ID.
+ *
+ * The post meta fields are retrieved from the cache, so the function is
+ * optimized to be called more than once. It also applies to the functions, that
+ * use this function.
+ *
+ * @since 1.2.0
+ * @link http://codex.wordpress.org/Function_Reference/get_post_custom
+ *
+ * @uses $id Current Loop Post ID
+ *
+ * @param int $post_id post ID
+ * @return array
+ */
+function get_post_custom($post_id = 0) {
+	global $id;
+
+	if ( !$post_id )
+		$post_id = (int) $id;
+
+	$post_id = (int) $post_id;
+
+	if ( ! wp_cache_get($post_id, 'post_meta') )
+		update_postmeta_cache($post_id);
+
+	return wp_cache_get($post_id, 'post_meta');
+}
+
+/**
+ * Retrieve meta field names for a post.
+ *
+ * If there are no meta fields, then nothing (null) will be returned.
+ *
+ * @since 1.2.0
+ * @link http://codex.wordpress.org/Function_Reference/get_post_custom_keys
+ *
+ * @param int $post_id post ID
+ * @return array|null Either array of the keys, or null if keys could not be retrieved.
+ */
+function get_post_custom_keys( $post_id = 0 ) {
+	$custom = get_post_custom( $post_id );
+
+	if ( !is_array($custom) )
+		return;
+
+	if ( $keys = array_keys($custom) )
+		return $keys;
+}
+
+/**
+ * Retrieve values for a custom post field.
+ *
+ * The parameters must not be considered optional. All of the post meta fields
+ * will be retrieved and only the meta field key values returned.
+ *
+ * @since 1.2.0
+ * @link http://codex.wordpress.org/Function_Reference/get_post_custom_values
+ *
+ * @param string $key Meta field key.
+ * @param int $post_id Post ID
+ * @return array Meta field values.
+ */
+function get_post_custom_values( $key = '', $post_id = 0 ) {
+	if ( !$key )
+		return null;
+
+	$custom = get_post_custom($post_id);
+
+	return isset($custom[$key]) ? $custom[$key] : null;
+}
+
+/**
+ * Check if post is sticky.
+ *
+ * Sticky posts should remain at the top of The Loop. If the post ID is not
+ * given, then The Loop ID for the current post will be used.
+ *
+ * @since 2.7.0
+ *
+ * @param int $post_id Optional. Post ID.
+ * @return bool Whether post is sticky (true) or not sticky (false).
+ */
+function is_sticky($post_id = null) {
+	global $id;
+
+	$post_id = absint($post_id);
+
+	if ( !$post_id )
+		$post_id = absint($id);
+
+	$stickies = get_option('sticky_posts');
+
+	if ( !is_array($stickies) )
+		return false;
+
+	if ( in_array($post_id, $stickies) )
+		return true;
+
+	return false;
+}
+
+/**
+ * Sanitize every post field.
+ *
+ * If the context is 'raw', then the post object or array will get minimal santization of the int fields.
+ *
+ * @since 2.3.0
+ * @uses sanitize_post_field() Used to sanitize the fields.
+ *
+ * @param object|array $post The Post Object or Array
+ * @param string $context Optional, default is 'display'. How to sanitize post fields.
+ * @return object|array The now sanitized Post Object or Array (will be the same type as $post)
+ */
+function sanitize_post($post, $context = 'display') {
+	if ( is_object($post) ) {
+		// Check if post already filtered for this context
+		if ( isset($post->filter) && $context == $post->filter )
+			return $post;
+		if ( !isset($post->ID) )
+			$post->ID = 0;
+		foreach ( array_keys(get_object_vars($post)) as $field )
+			$post->$field = sanitize_post_field($field, $post->$field, $post->ID, $context);
+		$post->filter = $context;
+	} else {
+		// Check if post already filtered for this context
+		if ( isset($post['filter']) && $context == $post['filter'] )
+			return $post;
+		if ( !isset($post['ID']) )
+			$post['ID'] = 0;
+		foreach ( array_keys($post) as $field )
+			$post[$field] = sanitize_post_field($field, $post[$field], $post['ID'], $context);
+		$post['filter'] = $context;
+	}
+
+	return $post;
+}
+
+/**
+ * Sanitize post field based on context.
+ *
+ * Possible context values are:  'raw', 'edit', 'db', 'display', 'attribute' and 'js'. The
+ * 'display' context is used by default. 'attribute' and 'js' contexts are treated like 'display'
+ * when calling filters.
+ *
+ * @since 2.3.0
+ * @uses apply_filters() Calls 'edit_$field' and '${field_no_prefix}_edit_pre' passing $value and
+ *  $post_id if $context == 'edit' and field name prefix == 'post_'.
+ *
+ * @uses apply_filters() Calls 'edit_post_$field' passing $value and $post_id if $context == 'db'.
+ * @uses apply_filters() Calls 'pre_$field' passing $value if $context == 'db' and field name prefix == 'post_'.
+ * @uses apply_filters() Calls '${field}_pre' passing $value if $context == 'db' and field name prefix != 'post_'.
+ *
+ * @uses apply_filters() Calls '$field' passing $value, $post_id and $context if $context == anything
+ *  other than 'raw', 'edit' and 'db' and field name prefix == 'post_'.
+ * @uses apply_filters() Calls 'post_$field' passing $value if $context == anything other than 'raw',
+ *  'edit' and 'db' and field name prefix != 'post_'.
+ *
+ * @param string $field The Post Object field name.
+ * @param mixed $value The Post Object value.
+ * @param int $post_id Post ID.
+ * @param string $context How to sanitize post fields. Looks for 'raw', 'edit', 'db', 'display',
+ *               'attribute' and 'js'.
+ * @return mixed Sanitized value.
+ */
+function sanitize_post_field($field, $value, $post_id, $context) {
+	$int_fields = array('ID', 'post_parent', 'menu_order');
+	if ( in_array($field, $int_fields) )
+		$value = (int) $value;
+
+	if ( 'raw' == $context )
+		return $value;
+
+	$prefixed = false;
+	if ( false !== strpos($field, 'post_') ) {
+		$prefixed = true;
+		$field_no_prefix = str_replace('post_', '', $field);
+	}
+
+	if ( 'edit' == $context ) {
+		$format_to_edit = array('post_content', 'post_excerpt', 'post_title', 'post_password');
+
+		if ( $prefixed ) {
+			$value = apply_filters("edit_$field", $value, $post_id);
+			// Old school
+			$value = apply_filters("${field_no_prefix}_edit_pre", $value, $post_id);
+		} else {
+			$value = apply_filters("edit_post_$field", $value, $post_id);
+		}
+
+		if ( in_array($field, $format_to_edit) ) {
+			if ( 'post_content' == $field )
+				$value = format_to_edit($value, user_can_richedit());
+			else
+				$value = format_to_edit($value);
+		} else {
+			$value = esc_attr($value);
+		}
+	} else if ( 'db' == $context ) {
+		if ( $prefixed ) {
+			$value = apply_filters("pre_$field", $value);
+			$value = apply_filters("${field_no_prefix}_save_pre", $value);
+		} else {
+			$value = apply_filters("pre_post_$field", $value);
+			$value = apply_filters("${field}_pre", $value);
+		}
+	} else {
+		// Use display filters by default.
+		if ( $prefixed )
+			$value = apply_filters($field, $value, $post_id, $context);
+		else
+			$value = apply_filters("post_$field", $value, $post_id, $context);
+	}
+
+	if ( 'attribute' == $context )
+		$value = esc_attr($value);
+	else if ( 'js' == $context )
+		$value = esc_js($value);
+
+	return $value;
+}
+
+/**
+ * Make a post sticky.
+ *
+ * Sticky posts should be displayed at the top of the front page.
+ *
+ * @since 2.7.0
+ *
+ * @param int $post_id Post ID.
+ */
+function stick_post($post_id) {
+	$stickies = get_option('sticky_posts');
+
+	if ( !is_array($stickies) )
+		$stickies = array($post_id);
+
+	if ( ! in_array($post_id, $stickies) )
+		$stickies[] = $post_id;
+
+	update_option('sticky_posts', $stickies);
+}
+
+/**
+ * Unstick a post.
+ *
+ * Sticky posts should be displayed at the top of the front page.
+ *
+ * @since 2.7.0
+ *
+ * @param int $post_id Post ID.
+ */
+function unstick_post($post_id) {
+	$stickies = get_option('sticky_posts');
+
+	if ( !is_array($stickies) )
+		return;
+
+	if ( ! in_array($post_id, $stickies) )
+		return;
+
+	$offset = array_search($post_id, $stickies);
+	if ( false === $offset )
+		return;
+
+	array_splice($stickies, $offset, 1);
+
+	update_option('sticky_posts', $stickies);
+}
+
+/**
+ * Count number of posts of a post type and is user has permissions to view.
+ *
+ * This function provides an efficient method of finding the amount of post's
+ * type a blog has. Another method is to count the amount of items in
+ * get_posts(), but that method has a lot of overhead with doing so. Therefore,
+ * when developing for 2.5+, use this function instead.
+ *
+ * The $perm parameter checks for 'readable' value and if the user can read
+ * private posts, it will display that for the user that is signed in.
+ *
+ * @since 2.5.0
+ * @link http://codex.wordpress.org/Template_Tags/wp_count_posts
+ *
+ * @param string $type Optional. Post type to retrieve count
+ * @param string $perm Optional. 'readable' or empty.
+ * @return object Number of posts for each status
+ */
+function wp_count_posts( $type = 'post', $perm = '' ) {
+	global $wpdb;
+
+	$user = wp_get_current_user();
+
+	$cache_key = $type;
+
+	$query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
+	if ( 'readable' == $perm && is_user_logged_in() ) {
+		if ( !current_user_can("read_private_{$type}s") ) {
+			$cache_key .= '_' . $perm . '_' . $user->ID;
+			$query .= " AND (post_status != 'private' OR ( post_author = '$user->ID' AND post_status = 'private' ))";
+		}
+	}
+	$query .= ' GROUP BY post_status';
+
+	$count = wp_cache_get($cache_key, 'counts');
+	if ( false !== $count )
+		return $count;
+
+	$count = $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
+
+	$stats = array( 'publish' => 0, 'private' => 0, 'draft' => 0, 'pending' => 0, 'future' => 0, 'trash' => 0 );
+	foreach( (array) $count as $row_num => $row ) {
+		$stats[$row['post_status']] = $row['num_posts'];
+	}
+
+	$stats = (object) $stats;
+	wp_cache_set($cache_key, $stats, 'counts');
+
+	return $stats;
+}
+
+
+/**
+ * Count number of attachments for the mime type(s).
+ *
+ * If you set the optional mime_type parameter, then an array will still be
+ * returned, but will only have the item you are looking for. It does not give
+ * you the number of attachments that are children of a post. You can get that
+ * by counting the number of children that post has.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array $mime_type Optional. Array or comma-separated list of MIME patterns.
+ * @return array Number of posts for each mime type.
+ */
+function wp_count_attachments( $mime_type = '' ) {
+	global $wpdb;
+
+	$and = wp_post_mime_type_where( $mime_type );
+	$count = $wpdb->get_results( "SELECT post_mime_type, COUNT( * ) AS num_posts FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' $and GROUP BY post_mime_type", ARRAY_A );
+
+	$stats = array( );
+	foreach( (array) $count as $row ) {
+		$stats[$row['post_mime_type']] = $row['num_posts'];
+	}
+	$stats['trash'] = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status = 'trash' $and");
+
+	return (object) $stats;
+}
+
+/**
+ * Check a MIME-Type against a list.
+ *
+ * If the wildcard_mime_types parameter is a string, it must be comma separated
+ * list. If the real_mime_types is a string, it is also comma separated to
+ * create the list.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array $wildcard_mime_types e.g. audio/mpeg or image (same as image/*) or
+ *  flash (same as *flash*).
+ * @param string|array $real_mime_types post_mime_type values
+ * @return array array(wildcard=>array(real types))
+ */
+function wp_match_mime_types($wildcard_mime_types, $real_mime_types) {
+	$matches = array();
+	if ( is_string($wildcard_mime_types) )
+		$wildcard_mime_types = array_map('trim', explode(',', $wildcard_mime_types));
+	if ( is_string($real_mime_types) )
+		$real_mime_types = array_map('trim', explode(',', $real_mime_types));
+	$wild = '[-._a-z0-9]*';
+	foreach ( (array) $wildcard_mime_types as $type ) {
+		$type = str_replace('*', $wild, $type);
+		$patternses[1][$type] = "^$type$";
+		if ( false === strpos($type, '/') ) {
+			$patternses[2][$type] = "^$type/";
+			$patternses[3][$type] = $type;
+		}
+	}
+	asort($patternses);
+	foreach ( $patternses as $patterns )
+		foreach ( $patterns as $type => $pattern )
+			foreach ( (array) $real_mime_types as $real )
+				if ( preg_match("#$pattern#", $real) && ( empty($matches[$type]) || false === array_search($real, $matches[$type]) ) )
+					$matches[$type][] = $real;
+	return $matches;
+}
+
+/**
+ * Convert MIME types into SQL.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array $mime_types List of mime types or comma separated string of mime types.
+ * @return string The SQL AND clause for mime searching.
+ */
+function wp_post_mime_type_where($post_mime_types) {
+	$where = '';
+	$wildcards = array('', '%', '%/%');
+	if ( is_string($post_mime_types) )
+		$post_mime_types = array_map('trim', explode(',', $post_mime_types));
+	foreach ( (array) $post_mime_types as $mime_type ) {
+		$mime_type = preg_replace('/\s/', '', $mime_type);
+		$slashpos = strpos($mime_type, '/');
+		if ( false !== $slashpos ) {
+			$mime_group = preg_replace('/[^-*.a-zA-Z0-9]/', '', substr($mime_type, 0, $slashpos));
+			$mime_subgroup = preg_replace('/[^-*.+a-zA-Z0-9]/', '', substr($mime_type, $slashpos + 1));
+			if ( empty($mime_subgroup) )
+				$mime_subgroup = '*';
+			else
+				$mime_subgroup = str_replace('/', '', $mime_subgroup);
+			$mime_pattern = "$mime_group/$mime_subgroup";
+		} else {
+			$mime_pattern = preg_replace('/[^-*.a-zA-Z0-9]/', '', $mime_type);
+			if ( false === strpos($mime_pattern, '*') )
+				$mime_pattern .= '/*';
+		}
+
+		$mime_pattern = preg_replace('/\*+/', '%', $mime_pattern);
+
+		if ( in_array( $mime_type, $wildcards ) )
+			return '';
+
+		if ( false !== strpos($mime_pattern, '%') )
+			$wheres[] = "post_mime_type LIKE '$mime_pattern'";
+		else
+			$wheres[] = "post_mime_type = '$mime_pattern'";
+	}
+	if ( !empty($wheres) )
+		$where = ' AND (' . join(' OR ', $wheres) . ') ';
+	return $where;
+}
+
+/**
+ * Removes a post, attachment, or page.
+ *
+ * When the post and page goes, everything that is tied to it is deleted also.
+ * This includes comments, post meta fields, and terms associated with the post.
+ *
+ * @since 1.0.0
+ * @uses do_action() on 'delete_post' before deletion unless post type is 'attachment'.
+ * @uses do_action() on 'deleted_post' after deletion unless post type is 'attachment'.
+ * @uses wp_delete_attachment() if post type is 'attachment'.
+ *
+ * @param int $postid Post ID.
+ * @param bool $force_delete Whether to bypass trash and force deletion
+ * @return mixed False on failure
+ */
+function wp_delete_post( $postid = 0, $force_delete = false ) {
+	global $wpdb, $wp_rewrite;
+
+	if ( !$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
+		return $post;
+
+	if ( !$force_delete && ( $post->post_type == 'post' || $post->post_type == 'page') && get_post_status( $postid ) != 'trash' && EMPTY_TRASH_DAYS > 0 )
+			return wp_trash_post($postid);
+
+	if ( $post->post_type == 'attachment' )
+		return wp_delete_attachment( $postid, $force_delete );
+
+	do_action('delete_post', $postid);
+
+	delete_post_meta($postid,'_wp_trash_meta_status');
+	delete_post_meta($postid,'_wp_trash_meta_time');
+
+	wp_delete_object_term_relationships($postid, get_object_taxonomies($post->post_type));
+
+	$parent_data = array( 'post_parent' => $post->post_parent );
+	$parent_where = array( 'post_parent' => $postid );
+
+	if ( 'page' == $post->post_type) {
+	 	// if the page is defined in option page_on_front or post_for_posts,
+		// adjust the corresponding options
+		if ( get_option('page_on_front') == $postid ) {
+			update_option('show_on_front', 'posts');
+			delete_option('page_on_front');
+		}
+		if ( get_option('page_for_posts') == $postid ) {
+			delete_option('page_for_posts');
+		}
+
+		// Point children of this page to its parent, also clean the cache of affected children
+		$children_query = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type='page'", $postid);
+		$children = $wpdb->get_results($children_query);
+
+		$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'page' ) );
+	} else {
+		unstick_post($postid);
+	}
+
+	// Do raw query.  wp_get_post_revisions() is filtered
+	$revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'", $postid ) );
+	// Use wp_delete_post (via wp_delete_post_revision) again.  Ensures any meta/misplaced data gets cleaned up.
+	foreach ( $revision_ids as $revision_id )
+		wp_delete_post_revision( $revision_id );
+
+	// Point all attachments to this post up one level
+	$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
+
+	$comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
+	if ( ! empty($comment_ids) ) {
+		do_action( 'delete_comment', $comment_ids );
+		$in_comment_ids = "'" . implode("', '", $comment_ids) . "'";
+		$wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_ID IN($in_comment_ids)" );
+		do_action( 'deleted_comment', $comment_ids );
+	}
+
+	$post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
+	if ( !empty($post_meta_ids) ) {
+		do_action( 'delete_postmeta', $post_meta_ids );
+		$in_post_meta_ids = "'" . implode("', '", $post_meta_ids) . "'";
+		$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in_post_meta_ids)" );
+		do_action( 'deleted_postmeta', $post_meta_ids );
+	}
+
+	do_action( 'delete_post', $postid );
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $postid ));
+	do_action( 'deleted_post', $postid );
+
+	if ( 'page' == $post->post_type ) {
+		clean_page_cache($postid);
+
+		foreach ( (array) $children as $child )
+			clean_page_cache($child->ID);
+
+		$wp_rewrite->flush_rules(false);
+	} else {
+		clean_post_cache($postid);
+	}
+
+	wp_clear_scheduled_hook('publish_future_post', $postid);
+
+	do_action('deleted_post', $postid);
+
+	return $post;
+}
+
+/**
+ * Moves a post or page to the Trash
+ *
+ * @since 2.9.0
+ * @uses do_action() on 'trash_post' before trashing
+ * @uses do_action() on 'trashed_post' after trashing
+ *
+ * @param int $postid Post ID.
+ * @return mixed False on failure
+ */
+function wp_trash_post($post_id = 0) {
+	if ( EMPTY_TRASH_DAYS == 0 )
+		return wp_delete_post($post_id);
+
+	if ( !$post = wp_get_single_post($post_id, ARRAY_A) )
+		return $post;
+
+	if ( $post['post_status'] == 'trash' )
+		return false;
+
+	do_action('trash_post', $post_id);
+
+	add_post_meta($post_id,'_wp_trash_meta_status', $post['post_status']);
+	add_post_meta($post_id,'_wp_trash_meta_time', time());
+
+	$post['post_status'] = 'trash';
+	wp_insert_post($post);
+
+	wp_trash_post_comments($post_id);
+
+	do_action('trashed_post', $post_id);
+
+	return $post;
+}
+
+/**
+ * Restores a post or page from the Trash
+ *
+ * @since 2.9.0
+ * @uses do_action() on 'untrash_post' before undeletion
+ * @uses do_action() on 'untrashed_post' after undeletion
+ *
+ * @param int $postid Post ID.
+ * @return mixed False on failure
+ */
+function wp_untrash_post($post_id = 0) {
+	if ( !$post = wp_get_single_post($post_id, ARRAY_A) )
+		return $post;
+
+	if ( $post['post_status'] != 'trash' )
+		return false;
+
+	do_action('untrash_post', $post_id);
+
+	$post_status = get_post_meta($post_id, '_wp_trash_meta_status', true);
+
+	$post['post_status'] = $post_status;
+
+	delete_post_meta($post_id, '_wp_trash_meta_status');
+	delete_post_meta($post_id, '_wp_trash_meta_time');
+
+	wp_insert_post($post);
+
+	wp_untrash_post_comments($post_id);
+
+	do_action('untrashed_post', $post_id);
+
+	return $post;
+}
+
+/**
+ * Moves comments for a post to the trash
+ *
+ * @since 2.9.0
+ * @uses do_action() on 'trash_post_comments' before trashing
+ * @uses do_action() on 'trashed_post_comments' after trashing
+ *
+ * @param int $post Post ID or object.
+ * @return mixed False on failure
+ */
+function wp_trash_post_comments($post = null) {
+	global $wpdb;
+
+	$post = get_post($post);
+	if ( empty($post) )
+		return;
+
+	$post_id = $post->ID;
+
+	do_action('trash_post_comments', $post_id);
+
+	$comments = $wpdb->get_results( $wpdb->prepare("SELECT comment_ID, comment_approved FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id) );
+	if ( empty($comments) )
+		return;
+
+	// Cache current status for each comment
+	$statuses = array();
+	foreach ( $comments as $comment )
+		$statuses[$comment->comment_ID] = $comment->comment_approved;
+	add_post_meta($post_id, '_wp_trash_meta_comments_status', $statuses);
+
+	// Set status for all comments to post-trashed
+	$result = $wpdb->update($wpdb->comments, array('comment_approved' => 'post-trashed'), array('comment_post_ID' => $post_id));
+
+	clean_comment_cache( array_keys($statuses) );
+
+	do_action('trashed_post_comments', $post_id, $statuses);
+
+	return $result;
+}
+
+/**
+ * Restore comments for a post from the trash
+ *
+ * @since 2.9.0
+ * @uses do_action() on 'untrash_post_comments' before trashing
+ * @uses do_action() on 'untrashed_post_comments' after trashing
+ *
+ * @param int $post Post ID or object.
+ * @return mixed False on failure
+ */
+function wp_untrash_post_comments($post = null) {
+	global $wpdb;
+
+	$post = get_post($post);
+	if ( empty($post) )
+		return;
+
+	$post_id = $post->ID;
+
+	$statuses = get_post_meta($post_id, '_wp_trash_meta_comments_status', true);
+
+	if ( empty($statuses) )
+		return true;
+
+	do_action('untrash_post_comments', $post_id);
+
+	// Restore each comment to its original status
+	$group_by_status = array();
+	foreach ( $statuses as $comment_id => $comment_status )
+		$group_by_status[$comment_status][] = $comment_id;
+
+	foreach ( $group_by_status as $status => $comments ) {
+		// Sanity check. This shouldn't happen.
+		if ( 'post-trashed' == $status )
+			$status = '0';
+		$comments_in = implode( "', '", $comments );
+		$wpdb->query( "UPDATE $wpdb->comments SET comment_approved = '$status' WHERE comment_ID IN ('" . $comments_in . "')" );
+	}
+
+	clean_comment_cache( array_keys($statuses) );
+
+	delete_post_meta($post_id, '_wp_trash_meta_comments_status');
+
+	do_action('untrashed_post_comments', $post_id);
+}
+
+/**
+ * Retrieve the list of categories for a post.
+ *
+ * Compatibility layer for themes and plugins. Also an easy layer of abstraction
+ * away from the complexity of the taxonomy layer.
+ *
+ * @since 2.1.0
+ *
+ * @uses wp_get_object_terms() Retrieves the categories. Args details can be found here.
+ *
+ * @param int $post_id Optional. The Post ID.
+ * @param array $args Optional. Overwrite the defaults.
+ * @return array
+ */
+function wp_get_post_categories( $post_id = 0, $args = array() ) {
+	$post_id = (int) $post_id;
+
+	$defaults = array('fields' => 'ids');
+	$args = wp_parse_args( $args, $defaults );
+
+	$cats = wp_get_object_terms($post_id, 'category', $args);
+	return $cats;
+}
+
+/**
+ * Retrieve the tags for a post.
+ *
+ * There is only one default for this function, called 'fields' and by default
+ * is set to 'all'. There are other defaults that can be overridden in
+ * {@link wp_get_object_terms()}.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.3.0
+ *
+ * @uses wp_get_object_terms() Gets the tags for returning. Args can be found here
+ *
+ * @param int $post_id Optional. The Post ID
+ * @param array $args Optional. Overwrite the defaults
+ * @return array List of post tags.
+ */
+function wp_get_post_tags( $post_id = 0, $args = array() ) {
+	return wp_get_post_terms( $post_id, 'post_tag', $args);
+}
+
+/**
+ * Retrieve the terms for a post.
+ *
+ * There is only one default for this function, called 'fields' and by default
+ * is set to 'all'. There are other defaults that can be overridden in
+ * {@link wp_get_object_terms()}.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.8.0
+ *
+ * @uses wp_get_object_terms() Gets the tags for returning. Args can be found here
+ *
+ * @param int $post_id Optional. The Post ID
+ * @param string $taxonomy The taxonomy for which to retrieve terms. Defaults to post_tag.
+ * @param array $args Optional. Overwrite the defaults
+ * @return array List of post tags.
+ */
+function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array() ) {
+	$post_id = (int) $post_id;
+
+	$defaults = array('fields' => 'all');
+	$args = wp_parse_args( $args, $defaults );
+
+	$tags = wp_get_object_terms($post_id, $taxonomy, $args);
+
+	return $tags;
+}
+
+/**
+ * Retrieve number of recent posts.
+ *
+ * @since 1.0.0
+ * @uses $wpdb
+ *
+ * @param int $num Optional, default is 10. Number of posts to get.
+ * @return array List of posts.
+ */
+function wp_get_recent_posts($num = 10) {
+	global $wpdb;
+
+	// Set the limit clause, if we got a limit
+	$num = (int) $num;
+	if ( $num ) {
+		$limit = "LIMIT $num";
+	}
+
+	$sql = "SELECT * FROM $wpdb->posts WHERE post_type = 'post' AND post_status IN ( 'draft', 'publish', 'future', 'pending', 'private' ) ORDER BY post_date DESC $limit";
+	$result = $wpdb->get_results($sql, ARRAY_A);
+
+	return $result ? $result : array();
+}
+
+/**
+ * Retrieve a single post, based on post ID.
+ *
+ * Has categories in 'post_category' property or key. Has tags in 'tags_input'
+ * property or key.
+ *
+ * @since 1.0.0
+ *
+ * @param int $postid Post ID.
+ * @param string $mode How to return result, either OBJECT, ARRAY_N, or ARRAY_A.
+ * @return object|array Post object or array holding post contents and information
+ */
+function wp_get_single_post($postid = 0, $mode = OBJECT) {
+	$postid = (int) $postid;
+
+	$post = get_post($postid, $mode);
+
+	// Set categories and tags
+	if($mode == OBJECT) {
+		$post->post_category = wp_get_post_categories($postid);
+		$post->tags_input = wp_get_post_tags($postid, array('fields' => 'names'));
+	}
+	else {
+		$post['post_category'] = wp_get_post_categories($postid);
+		$post['tags_input'] = wp_get_post_tags($postid, array('fields' => 'names'));
+	}
+
+	return $post;
+}
+
+/**
+ * Insert a post.
+ *
+ * If the $postarr parameter has 'ID' set to a value, then post will be updated.
+ *
+ * You can set the post date manually, but setting the values for 'post_date'
+ * and 'post_date_gmt' keys. You can close the comments or open the comments by
+ * setting the value for 'comment_status' key.
+ *
+ * The defaults for the parameter $postarr are:
+ *     'post_status'   - Default is 'draft'.
+ *     'post_type'     - Default is 'post'.
+ *     'post_author'   - Default is current user ID ($user_ID). The ID of the user who added the post.
+ *     'ping_status'   - Default is the value in 'default_ping_status' option.
+ *                       Whether the attachment can accept pings.
+ *     'post_parent'   - Default is 0. Set this for the post it belongs to, if any.
+ *     'menu_order'    - Default is 0. The order it is displayed.
+ *     'to_ping'       - Whether to ping.
+ *     'pinged'        - Default is empty string.
+ *     'post_password' - Default is empty string. The password to access the attachment.
+ *     'guid'          - Global Unique ID for referencing the attachment.
+ *     'post_content_filtered' - Post content filtered.
+ *     'post_excerpt'  - Post excerpt.
+ *
+ * @since 1.0.0
+ * @link http://core.trac.wordpress.org/ticket/9084 Bug report on 'wp_insert_post_data' filter.
+ * @uses $wpdb
+ * @uses $wp_rewrite
+ * @uses $user_ID
+ *
+ * @uses do_action() Calls 'pre_post_update' on post ID if this is an update.
+ * @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update.
+ * @uses do_action() Calls 'save_post' and 'wp_insert_post' on post id and post data just before
+ *                   returning.
+ *
+ * @uses apply_filters() Calls 'wp_insert_post_data' passing $data, $postarr prior to database
+ *                       update or insert.
+ * @uses wp_transition_post_status()
+ *
+ * @param array $postarr Optional. Overrides defaults.
+ * @param bool $wp_error Optional. Allow return of WP_Error on failure.
+ * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
+ */
+function wp_insert_post($postarr = array(), $wp_error = false) {
+	global $wpdb, $wp_rewrite, $user_ID;
+
+	$defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
+		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
+		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
+		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0);
+
+	$postarr = wp_parse_args($postarr, $defaults);
+	$postarr = sanitize_post($postarr, 'db');
+
+	// export array as variables
+	extract($postarr, EXTR_SKIP);
+
+	// Are we updating or creating?
+	$update = false;
+	if ( !empty($ID) ) {
+		$update = true;
+		$previous_status = get_post_field('post_status', $ID);
+	} else {
+		$previous_status = 'new';
+	}
+
+	if ( ('' == $post_content) && ('' == $post_title) && ('' == $post_excerpt) && ('attachment' != $post_type) ) {
+		if ( $wp_error )
+			return new WP_Error('empty_content', __('Content, title, and excerpt are empty.'));
+		else
+			return 0;
+	}
+
+	// Make sure we set a valid category
+	if ( empty($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
+		$post_category = array(get_option('default_category'));
+	}
+
+	//Set the default tag list
+	if ( !isset($tags_input) )
+		$tags_input = array();
+
+	if ( empty($post_author) )
+		$post_author = $user_ID;
+
+	if ( empty($post_status) )
+		$post_status = 'draft';
+
+	if ( empty($post_type) )
+		$post_type = 'post';
+
+	$post_ID = 0;
+
+	// Get the post ID and GUID
+	if ( $update ) {
+		$post_ID = (int) $ID;
+		$guid = get_post_field( 'guid', $post_ID );
+	}
+
+	// Don't allow contributors to set to set the post slug for pending review posts
+	if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) )
+		$post_name = '';
+
+	// Create a valid post name.  Drafts and pending posts are allowed to have an empty
+	// post name.
+	if ( !isset($post_name) || empty($post_name) ) {
+		if ( !in_array( $post_status, array( 'draft', 'pending' ) ) )
+			$post_name = sanitize_title($post_title);
+		else
+			$post_name = '';
+	} else {
+		$post_name = sanitize_title($post_name);
+	}
+
+	// If the post date is empty (due to having been new or a draft) and status is not 'draft' or 'pending', set date to now
+	if ( empty($post_date) || '0000-00-00 00:00:00' == $post_date )
+		$post_date = current_time('mysql');
+
+	if ( empty($post_date_gmt) || '0000-00-00 00:00:00' == $post_date_gmt ) {
+		if ( !in_array( $post_status, array( 'draft', 'pending' ) ) )
+			$post_date_gmt = get_gmt_from_date($post_date);
+		else
+			$post_date_gmt = '0000-00-00 00:00:00';
+	}
+
+	if ( $update || '0000-00-00 00:00:00' == $post_date ) {
+		$post_modified     = current_time( 'mysql' );
+		$post_modified_gmt = current_time( 'mysql', 1 );
+	} else {
+		$post_modified     = $post_date;
+		$post_modified_gmt = $post_date_gmt;
+	}
+
+	if ( 'publish' == $post_status ) {
+		$now = gmdate('Y-m-d H:i:59');
+		if ( mysql2date('U', $post_date_gmt, false) > mysql2date('U', $now, false) )
+			$post_status = 'future';
+	}
+
+	if ( empty($comment_status) ) {
+		if ( $update )
+			$comment_status = 'closed';
+		else
+			$comment_status = get_option('default_comment_status');
+	}
+	if ( empty($ping_status) )
+		$ping_status = get_option('default_ping_status');
+
+	if ( isset($to_ping) )
+		$to_ping = preg_replace('|\s+|', "\n", $to_ping);
+	else
+		$to_ping = '';
+
+	if ( ! isset($pinged) )
+		$pinged = '';
+
+	if ( isset($post_parent) )
+		$post_parent = (int) $post_parent;
+	else
+		$post_parent = 0;
+
+	if ( !empty($post_ID) ) {
+		if ( $post_parent == $post_ID ) {
+			// Post can't be its own parent
+			$post_parent = 0;
+		} elseif ( !empty($post_parent) ) {
+			$parent_post = get_post($post_parent);
+			// Check for circular dependency
+			if ( $parent_post->post_parent == $post_ID )
+				$post_parent = 0;
+		}
+	}
+
+	if ( isset($menu_order) )
+		$menu_order = (int) $menu_order;
+	else
+		$menu_order = 0;
+
+	if ( !isset($post_password) || 'private' == $post_status )
+		$post_password = '';
+
+	$post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
+
+	// expected_slashed (everything!)
+	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'guid' ) );
+	$data = apply_filters('wp_insert_post_data', $data, $postarr);
+	$data = stripslashes_deep( $data );
+	$where = array( 'ID' => $post_ID );
+
+	if ($update) {
+		do_action( 'pre_post_update', $post_ID );
+		if ( false === $wpdb->update( $wpdb->posts, $data, $where ) ) {
+			if ( $wp_error )
+				return new WP_Error('db_update_error', __('Could not update post in the database'), $wpdb->last_error);
+			else
+				return 0;
+		}
+	} else {
+		if ( isset($post_mime_type) )
+			$data['post_mime_type'] = stripslashes( $post_mime_type ); // This isn't in the update
+		// If there is a suggested ID, use it if not already present
+		if ( !empty($import_id) ) {
+			$import_id = (int) $import_id;
+			if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
+				$data['ID'] = $import_id;
+			}
+		}
+		if ( false === $wpdb->insert( $wpdb->posts, $data ) ) {
+			if ( $wp_error )
+				return new WP_Error('db_insert_error', __('Could not insert post into the database'), $wpdb->last_error);
+			else
+				return 0;
+		}
+		$post_ID = (int) $wpdb->insert_id;
+
+		// use the newly generated $post_ID
+		$where = array( 'ID' => $post_ID );
+	}
+
+	if ( empty($data['post_name']) && !in_array( $data['post_status'], array( 'draft', 'pending' ) ) ) {
+		$data['post_name'] = sanitize_title($data['post_title'], $post_ID);
+		$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
+	}
+
+	wp_set_post_categories( $post_ID, $post_category );
+	// old-style tags_input
+	if ( !empty($tags_input) )
+		wp_set_post_tags( $post_ID, $tags_input );
+	// new-style support for all tag-like taxonomies
+	if ( !empty($tax_input) ) {
+		foreach ( $tax_input as $taxonomy => $tags ) {
+			wp_set_post_terms( $post_ID, $tags, $taxonomy );
+		}
+	}
+
+	$current_guid = get_post_field( 'guid', $post_ID );
+
+	if ( 'page' == $data['post_type'] )
+		clean_page_cache($post_ID);
+	else
+		clean_post_cache($post_ID);
+
+	// Set GUID
+	if ( !$update && '' == $current_guid )
+		$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_ID ) ), $where );
+
+	$post = get_post($post_ID);
+
+	if ( !empty($page_template) && 'page' == $data['post_type'] ) {
+		$post->page_template = $page_template;
+		$page_templates = get_page_templates();
+		if ( 'default' != $page_template && !in_array($page_template, $page_templates) ) {
+			if ( $wp_error )
+				return new WP_Error('invalid_page_template', __('The page template is invalid.'));
+			else
+				return 0;
+		}
+		update_post_meta($post_ID, '_wp_page_template',  $page_template);
+	}
+
+	wp_transition_post_status($data['post_status'], $previous_status, $post);
+
+	if ( $update)
+		do_action('edit_post', $post_ID, $post);
+
+	do_action('save_post', $post_ID, $post);
+	do_action('wp_insert_post', $post_ID, $post);
+
+	return $post_ID;
+}
+
+/**
+ * Update a post with new post data.
+ *
+ * The date does not have to be set for drafts. You can set the date and it will
+ * not be overridden.
+ *
+ * @since 1.0.0
+ *
+ * @param array|object $postarr Post data. Arrays are expected to be escaped, objects are not.
+ * @return int 0 on failure, Post ID on success.
+ */
+function wp_update_post($postarr = array()) {
+	if ( is_object($postarr) ) {
+		// non-escaped post was passed
+		$postarr = get_object_vars($postarr);
+		$postarr = add_magic_quotes($postarr);
+	}
+
+	// First, get all of the original fields
+	$post = wp_get_single_post($postarr['ID'], ARRAY_A);
+
+	// Escape data pulled from DB.
+	$post = add_magic_quotes($post);
+
+	// Passed post category list overwrites existing category list if not empty.
+	if ( isset($postarr['post_category']) && is_array($postarr['post_category'])
+			 && 0 != count($postarr['post_category']) )
+		$post_cats = $postarr['post_category'];
+	else
+		$post_cats = $post['post_category'];
+
+	// Drafts shouldn't be assigned a date unless explicitly done so by the user
+	if ( in_array($post['post_status'], array('draft', 'pending')) && empty($postarr['edit_date']) &&
+			 ('0000-00-00 00:00:00' == $post['post_date_gmt']) )
+		$clear_date = true;
+	else
+		$clear_date = false;
+
+	// Merge old and new fields with new fields overwriting old ones.
+	$postarr = array_merge($post, $postarr);
+	$postarr['post_category'] = $post_cats;
+	if ( $clear_date ) {
+		$postarr['post_date'] = current_time('mysql');
+		$postarr['post_date_gmt'] = '';
+	}
+
+	if ($postarr['post_type'] == 'attachment')
+		return wp_insert_attachment($postarr);
+
+	return wp_insert_post($postarr);
+}
+
+/**
+ * Publish a post by transitioning the post status.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ * @uses do_action() Calls 'edit_post', 'save_post', and 'wp_insert_post' on post_id and post data.
+ *
+ * @param int $post_id Post ID.
+ * @return null
+ */
+function wp_publish_post($post_id) {
+	global $wpdb;
+
+	$post = get_post($post_id);
+
+	if ( empty($post) )
+		return;
+
+	if ( 'publish' == $post->post_status )
+		return;
+
+	$wpdb->update( $wpdb->posts, array( 'post_status' => 'publish' ), array( 'ID' => $post_id ) );
+
+	$old_status = $post->post_status;
+	$post->post_status = 'publish';
+	wp_transition_post_status('publish', $old_status, $post);
+
+	// Update counts for the post's terms.
+	foreach ( (array) get_object_taxonomies('post') as $taxonomy ) {
+		$tt_ids = wp_get_object_terms($post_id, $taxonomy, 'fields=tt_ids');
+		wp_update_term_count($tt_ids, $taxonomy);
+	}
+
+	do_action('edit_post', $post_id, $post);
+	do_action('save_post', $post_id, $post);
+	do_action('wp_insert_post', $post_id, $post);
+}
+
+/**
+ * Publish future post and make sure post ID has future post status.
+ *
+ * Invoked by cron 'publish_future_post' event. This safeguard prevents cron
+ * from publishing drafts, etc.
+ *
+ * @since 2.5.0
+ *
+ * @param int $post_id Post ID.
+ * @return null Nothing is returned. Which can mean that no action is required or post was published.
+ */
+function check_and_publish_future_post($post_id) {
+
+	$post = get_post($post_id);
+
+	if ( empty($post) )
+		return;
+
+	if ( 'future' != $post->post_status )
+		return;
+
+	$time = strtotime( $post->post_date_gmt . ' GMT' );
+
+	if ( $time > time() ) { // Uh oh, someone jumped the gun!
+		wp_clear_scheduled_hook( 'publish_future_post', $post_id ); // clear anything else in the system
+		wp_schedule_single_event( $time, 'publish_future_post', array( $post_id ) );
+		return;
+	}
+
+	return wp_publish_post($post_id);
+}
+
+
+/**
+ * Given the desired slug and some post details computes a unique slug for the post.
+ *
+ * @global wpdb $wpdb 
+ * @global WP_Rewrite $wp_rewrite 
+ * @param string $slug the desired slug (post_name)
+ * @param integer $post_ID
+ * @param string $post_status no uniqueness checks are made if the post is still draft or pending
+ * @param string $post_type
+ * @param integer $post_parent
+ * @return string unique slug for the post, based on $post_name (with a -1, -2, etc. suffix)
+ */
+function wp_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent) {
+	if ( in_array( $post_status, array( 'draft', 'pending' ) ) )
+		return $slug;
+
+	global $wpdb, $wp_rewrite;
+
+	$feeds = $wp_rewrite->feeds;
+	if ( !is_array($feeds) )
+		$feeds = array();
+
+	$hierarchical_post_types = apply_filters('hierarchical_post_types', array('page'));
+	if ( 'attachment' == $post_type ) {
+		// Attachment slugs must be unique across all types.
+		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1";
+		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID));
+
+		if ( $post_name_check || in_array($slug, $feeds) ) {
+			$suffix = 2;
+			do {
+				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
+				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID));
+				$suffix++;
+			} while ($post_name_check);
+			$slug = $alt_post_name;
+		}
+	} elseif ( in_array($post_type, $hierarchical_post_types) ) {
+		// Page slugs must be unique within their own trees.  Pages are in a
+		// separate namespace than posts so page slugs are allowed to overlap post slugs.
+		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode("', '", esc_sql($hierarchical_post_types)) . "' ) AND ID != %d AND post_parent = %d LIMIT 1";
+		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID, $post_parent));
+
+		if ( $post_name_check || in_array($slug, $feeds) ) {
+			$suffix = 2;
+			do {
+				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
+				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID, $post_parent));
+				$suffix++;
+			} while ($post_name_check);
+			$slug = $alt_post_name;
+		}
+	} else {
+		// Post slugs must be unique across all posts.
+		$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";
+		$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID));
+
+		if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) {
+			$suffix = 2;
+			do {
+				$alt_post_name = substr($slug, 0, 200-(strlen($suffix)+1)). "-$suffix";
+				$post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID));
+				$suffix++;
+			} while ($post_name_check);
+			$slug = $alt_post_name;
+		}
+	}
+
+	return $slug;
+}
+
+/**
+ * Adds tags to a post.
+ *
+ * @uses wp_set_post_tags() Same first two parameters, but the last parameter is always set to true.
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.3.0
+ *
+ * @param int $post_id Post ID
+ * @param string $tags The tags to set for the post, separated by commas.
+ * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
+ */
+function wp_add_post_tags($post_id = 0, $tags = '') {
+	return wp_set_post_tags($post_id, $tags, true);
+}
+
+
+/**
+ * Set the tags for a post.
+ *
+ * @since 2.3.0
+ * @uses wp_set_object_terms() Sets the tags for the post.
+ *
+ * @param int $post_id Post ID.
+ * @param string $tags The tags to set for the post, separated by commas.
+ * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
+ * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
+ */
+function wp_set_post_tags( $post_id = 0, $tags = '', $append = false ) {
+	return wp_set_post_terms( $post_id, $tags, 'post_tag', $append);
+}
+
+/**
+ * Set the terms for a post.
+ *
+ * @since 2.8.0
+ * @uses wp_set_object_terms() Sets the tags for the post.
+ *
+ * @param int $post_id Post ID.
+ * @param string $tags The tags to set for the post, separated by commas.
+ * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
+ * @return bool|null Will return false if $post_id is not an integer or is 0. Will return null otherwise
+ */
+function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $append = false ) {
+	$post_id = (int) $post_id;
+
+	if ( !$post_id )
+		return false;
+
+	if ( empty($tags) )
+		$tags = array();
+
+	$tags = is_array($tags) ? $tags : explode( ',', trim($tags, " \n\t\r\0\x0B,") );
+	wp_set_object_terms($post_id, $tags, $taxonomy, $append);
+}
+
+/**
+ * Set categories for a post.
+ *
+ * If the post categories parameter is not set, then the default category is
+ * going used.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_ID Post ID.
+ * @param array $post_categories Optional. List of categories.
+ * @return bool|mixed
+ */
+function wp_set_post_categories($post_ID = 0, $post_categories = array()) {
+	$post_ID = (int) $post_ID;
+	// If $post_categories isn't already an array, make it one:
+	if (!is_array($post_categories) || 0 == count($post_categories) || empty($post_categories))
+		$post_categories = array(get_option('default_category'));
+	else if ( 1 == count($post_categories) && '' == $post_categories[0] )
+		return true;
+
+	$post_categories = array_map('intval', $post_categories);
+	$post_categories = array_unique($post_categories);
+
+	return wp_set_object_terms($post_ID, $post_categories, 'category');
+}
+
+/**
+ * Transition the post status of a post.
+ *
+ * Calls hooks to transition post status.
+ *
+ * The first is 'transition_post_status' with new status, old status, and post data.
+ *
+ * The next action called is 'OLDSTATUS_to_NEWSTATUS' the 'NEWSTATUS' is the
+ * $new_status parameter and the 'OLDSTATUS' is $old_status parameter; it has the
+ * post data.
+ *
+ * The final action is named 'NEWSTATUS_POSTTYPE', 'NEWSTATUS' is from the $new_status
+ * parameter and POSTTYPE is post_type post data.
+ *
+ * @since 2.3.0
+ * @link http://codex.wordpress.org/Post_Status_Transitions
+ *
+ * @uses do_action() Calls 'transition_post_status' on $new_status, $old_status and
+ *  $post if there is a status change.
+ * @uses do_action() Calls '${old_status}_to_$new_status' on $post if there is a status change.
+ * @uses do_action() Calls '${new_status}_$post->post_type' on post ID and $post.
+ *
+ * @param string $new_status Transition to this post status.
+ * @param string $old_status Previous post status.
+ * @param object $post Post data.
+ */
+function wp_transition_post_status($new_status, $old_status, $post) {
+	do_action('transition_post_status', $new_status, $old_status, $post);
+	do_action("${old_status}_to_$new_status", $post);
+	do_action("${new_status}_$post->post_type", $post->ID, $post);
+}
+
+//
+// Trackback and ping functions
+//
+
+/**
+ * Add a URL to those already pung.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID.
+ * @param string $uri Ping URI.
+ * @return int How many rows were updated.
+ */
+function add_ping($post_id, $uri) {
+	global $wpdb;
+	$pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id ));
+	$pung = trim($pung);
+	$pung = preg_split('/\s/', $pung);
+	$pung[] = $uri;
+	$new = implode("\n", $pung);
+	$new = apply_filters('add_ping', $new);
+	// expected_slashed ($new)
+	$new = stripslashes($new);
+	return $wpdb->update( $wpdb->posts, array( 'pinged' => $new ), array( 'ID' => $post_id ) );
+}
+
+/**
+ * Retrieve enclosures already enclosed for a post.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID.
+ * @return array List of enclosures
+ */
+function get_enclosed($post_id) {
+	$custom_fields = get_post_custom( $post_id );
+	$pung = array();
+	if ( !is_array( $custom_fields ) )
+		return $pung;
+
+	foreach ( $custom_fields as $key => $val ) {
+		if ( 'enclosure' != $key || !is_array( $val ) )
+			continue;
+		foreach( $val as $enc ) {
+			$enclosure = split( "\n", $enc );
+			$pung[] = trim( $enclosure[ 0 ] );
+		}
+	}
+	$pung = apply_filters('get_enclosed', $pung);
+	return $pung;
+}
+
+/**
+ * Retrieve URLs already pinged for a post.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID.
+ * @return array
+ */
+function get_pung($post_id) {
+	global $wpdb;
+	$pung = $wpdb->get_var( $wpdb->prepare( "SELECT pinged FROM $wpdb->posts WHERE ID = %d", $post_id ));
+	$pung = trim($pung);
+	$pung = preg_split('/\s/', $pung);
+	$pung = apply_filters('get_pung', $pung);
+	return $pung;
+}
+
+/**
+ * Retrieve URLs that need to be pinged.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param int $post_id Post ID
+ * @return array
+ */
+function get_to_ping($post_id) {
+	global $wpdb;
+	$to_ping = $wpdb->get_var( $wpdb->prepare( "SELECT to_ping FROM $wpdb->posts WHERE ID = %d", $post_id ));
+	$to_ping = trim($to_ping);
+	$to_ping = preg_split('/\s/', $to_ping, -1, PREG_SPLIT_NO_EMPTY);
+	$to_ping = apply_filters('get_to_ping',  $to_ping);
+	return $to_ping;
+}
+
+/**
+ * Do trackbacks for a list of URLs.
+ *
+ * @since 1.0.0
+ *
+ * @param string $tb_list Comma separated list of URLs
+ * @param int $post_id Post ID
+ */
+function trackback_url_list($tb_list, $post_id) {
+	if ( ! empty( $tb_list ) ) {
+		// get post data
+		$postdata = wp_get_single_post($post_id, ARRAY_A);
+
+		// import postdata as variables
+		extract($postdata, EXTR_SKIP);
+
+		// form an excerpt
+		$excerpt = strip_tags($post_excerpt ? $post_excerpt : $post_content);
+
+		if (strlen($excerpt) > 255) {
+			$excerpt = substr($excerpt,0,252) . '...';
+		}
+
+		$trackback_urls = explode(',', $tb_list);
+		foreach( (array) $trackback_urls as $tb_url) {
+			$tb_url = trim($tb_url);
+			trackback($tb_url, stripslashes($post_title), $excerpt, $post_id);
+		}
+	}
+}
+
+//
+// Page functions
+//
+
+/**
+ * Get a list of page IDs.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ *
+ * @return array List of page IDs.
+ */
+function get_all_page_ids() {
+	global $wpdb;
+
+	if ( ! $page_ids = wp_cache_get('all_page_ids', 'posts') ) {
+		$page_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'page'");
+		wp_cache_add('all_page_ids', $page_ids, 'posts');
+	}
+
+	return $page_ids;
+}
+
+/**
+ * Retrieves page data given a page ID or page object.
+ *
+ * @since 1.5.1
+ *
+ * @param mixed $page Page object or page ID. Passed by reference.
+ * @param string $output What to output. OBJECT, ARRAY_A, or ARRAY_N.
+ * @param string $filter How the return value should be filtered.
+ * @return mixed Page data.
+ */
+function &get_page(&$page, $output = OBJECT, $filter = 'raw') {
+	if ( empty($page) ) {
+		if ( isset( $GLOBALS['post'] ) && isset( $GLOBALS['post']->ID ) ) {
+			return get_post($GLOBALS['post'], $output, $filter);
+		} else {
+			$page = null;
+			return $page;
+		}
+	}
+
+	$the_page = get_post($page, $output, $filter);
+	return $the_page;
+}
+
+/**
+ * Retrieves a page given its path.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ *
+ * @param string $page_path Page path
+ * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
+ * @return mixed Null when complete.
+ */
+function get_page_by_path($page_path, $output = OBJECT) {
+	global $wpdb;
+	$page_path = rawurlencode(urldecode($page_path));
+	$page_path = str_replace('%2F', '/', $page_path);
+	$page_path = str_replace('%20', ' ', $page_path);
+	$page_paths = '/' . trim($page_path, '/');
+	$leaf_path  = sanitize_title(basename($page_paths));
+	$page_paths = explode('/', $page_paths);
+	$full_path = '';
+	foreach( (array) $page_paths as $pathdir)
+		$full_path .= ($pathdir!=''?'/':'') . sanitize_title($pathdir);
+
+	$pages = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_name = %s AND (post_type = 'page' OR post_type = 'attachment')", $leaf_path ));
+
+	if ( empty($pages) )
+		return null;
+
+	foreach ($pages as $page) {
+		$path = '/' . $leaf_path;
+		$curpage = $page;
+		while ($curpage->post_parent != 0) {
+			$curpage = $wpdb->get_row( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = %d and post_type='page'", $curpage->post_parent ));
+			$path = '/' . $curpage->post_name . $path;
+		}
+
+		if ( $path == $full_path )
+			return get_page($page->ID, $output);
+	}
+
+	return null;
+}
+
+/**
+ * Retrieve a page given its title.
+ *
+ * @since 2.1.0
+ * @uses $wpdb
+ *
+ * @param string $page_title Page title
+ * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
+ * @return mixed
+ */
+function get_page_by_title($page_title, $output = OBJECT) {
+	global $wpdb;
+	$page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='page'", $page_title ));
+	if ( $page )
+		return get_page($page, $output);
+
+	return null;
+}
+
+/**
+ * Retrieve child pages from list of pages matching page ID.
+ *
+ * Matches against the pages parameter against the page ID. Also matches all
+ * children for the same to retrieve all children of a page. Does not make any
+ * SQL queries to get the children.
+ *
+ * @since 1.5.1
+ *
+ * @param int $page_id Page ID.
+ * @param array $pages List of pages' objects.
+ * @return array
+ */
+function &get_page_children($page_id, $pages) {
+	$page_list = array();
+	foreach ( (array) $pages as $page ) {
+		if ( $page->post_parent == $page_id ) {
+			$page_list[] = $page;
+			if ( $children = get_page_children($page->ID, $pages) )
+				$page_list = array_merge($page_list, $children);
+		}
+	}
+	return $page_list;
+}
+
+/**
+ * Order the pages with children under parents in a flat list.
+ *
+ * It uses auxiliary structure to hold parent-children relationships and
+ * runs in O(N) complexity
+ *
+ * @since 2.0.0
+ *
+ * @param array $posts Posts array.
+ * @param int $parent Parent page ID.
+ * @return array A list arranged by hierarchy. Children immediately follow their parents.
+ */
+function &get_page_hierarchy( &$pages, $page_id = 0 ) {
+
+	if ( empty( $pages ) ) {
+		$return = array();
+		return $return;
+	}
+
+	$children = array();
+	foreach ( (array) $pages as $p ) {
+
+		$parent_id = intval( $p->post_parent );
+		$children[ $parent_id ][] = $p;
+	 }
+
+	 $result = array();
+	 _page_traverse_name( $page_id, $children, $result );
+
+	return $result;
+}
+
+/**
+ * function to traverse and return all the nested children post names of a root page.
+ * $children contains parent-chilren relations
+ *
+ */
+function _page_traverse_name( $page_id, &$children, &$result ){
+
+	if ( isset( $children[ $page_id ] ) ){
+
+		foreach( (array)$children[ $page_id ] as $child ) {
+
+			$result[ $child->ID ] = $child->post_name;
+			_page_traverse_name( $child->ID, $children, $result );
+		}
+	}
+}
+
+/**
+ * Builds URI for a page.
+ *
+ * Sub pages will be in the "directory" under the parent page post name.
+ *
+ * @since 1.5.0
+ *
+ * @param int $page_id Page ID.
+ * @return string Page URI.
+ */
+function get_page_uri($page_id) {
+	$page = get_page($page_id);
+	$uri = $page->post_name;
+
+	// A page cannot be it's own parent.
+	if ( $page->post_parent == $page->ID )
+		return $uri;
+
+	while ($page->post_parent != 0) {
+		$page = get_page($page->post_parent);
+		$uri = $page->post_name . "/" . $uri;
+	}
+
+	return $uri;
+}
+
+/**
+ * Retrieve a list of pages.
+ *
+ * The defaults that can be overridden are the following: 'child_of',
+ * 'sort_order', 'sort_column', 'post_title', 'hierarchical', 'exclude',
+ * 'include', 'meta_key', 'meta_value','authors', 'number', and 'offset'.
+ *
+ * @since 1.5.0
+ * @uses $wpdb
+ *
+ * @param mixed $args Optional. Array or string of options that overrides defaults.
+ * @return array List of pages matching defaults or $args
+ */
+function &get_pages($args = '') {
+	global $wpdb;
+
+	$defaults = array(
+		'child_of' => 0, 'sort_order' => 'ASC',
+		'sort_column' => 'post_title', 'hierarchical' => 1,
+		'exclude' => '', 'include' => '',
+		'meta_key' => '', 'meta_value' => '',
+		'authors' => '', 'parent' => -1, 'exclude_tree' => '',
+		'number' => '', 'offset' => 0
+	);
+
+	$r = wp_parse_args( $args, $defaults );
+	extract( $r, EXTR_SKIP );
+	$number = (int) $number;
+	$offset = (int) $offset;
+
+	$cache = array();
+	$key = md5( serialize( compact(array_keys($defaults)) ) );
+	if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) {
+		if ( is_array($cache) && isset( $cache[ $key ] ) ) {
+			$pages = apply_filters('get_pages', $cache[ $key ], $r );
+			return $pages;
+		}
+	}
+
+	if ( !is_array($cache) )
+		$cache = array();
+
+	$inclusions = '';
+	if ( !empty($include) ) {
+		$child_of = 0; //ignore child_of, parent, exclude, meta_key, and meta_value params if using include
+		$parent = -1;
+		$exclude = '';
+		$meta_key = '';
+		$meta_value = '';
+		$hierarchical = false;
+		$incpages = preg_split('/[\s,]+/',$include);
+		if ( count($incpages) ) {
+			foreach ( $incpages as $incpage ) {
+				if (empty($inclusions))
+					$inclusions = $wpdb->prepare(' AND ( ID = %d ', $incpage);
+				else
+					$inclusions .= $wpdb->prepare(' OR ID = %d ', $incpage);
+			}
+		}
+	}
+	if (!empty($inclusions))
+		$inclusions .= ')';
+
+	$exclusions = '';
+	if ( !empty($exclude) ) {
+		$expages = preg_split('/[\s,]+/',$exclude);
+		if ( count($expages) ) {
+			foreach ( $expages as $expage ) {
+				if (empty($exclusions))
+					$exclusions = $wpdb->prepare(' AND ( ID <> %d ', $expage);
+				else
+					$exclusions .= $wpdb->prepare(' AND ID <> %d ', $expage);
+			}
+		}
+	}
+	if (!empty($exclusions))
+		$exclusions .= ')';
+
+	$author_query = '';
+	if (!empty($authors)) {
+		$post_authors = preg_split('/[\s,]+/',$authors);
+
+		if ( count($post_authors) ) {
+			foreach ( $post_authors as $post_author ) {
+				//Do we have an author id or an author login?
+				if ( 0 == intval($post_author) ) {
+					$post_author = get_userdatabylogin($post_author);
+					if ( empty($post_author) )
+						continue;
+					if ( empty($post_author->ID) )
+						continue;
+					$post_author = $post_author->ID;
+				}
+
+				if ( '' == $author_query )
+					$author_query = $wpdb->prepare(' post_author = %d ', $post_author);
+				else
+					$author_query .= $wpdb->prepare(' OR post_author = %d ', $post_author);
+			}
+			if ( '' != $author_query )
+				$author_query = " AND ($author_query)";
+		}
+	}
+
+	$join = '';
+	$where = "$exclusions $inclusions ";
+	if ( ! empty( $meta_key ) || ! empty( $meta_value ) ) {
+		$join = " LEFT JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id )";
+
+		// meta_key and meta_value might be slashed
+		$meta_key = stripslashes($meta_key);
+		$meta_value = stripslashes($meta_value);
+		if ( ! empty( $meta_key ) )
+			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s", $meta_key);
+		if ( ! empty( $meta_value ) )
+			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_value = %s", $meta_value);
+
+	}
+
+	if ( $parent >= 0 )
+		$where .= $wpdb->prepare(' AND post_parent = %d ', $parent);
+
+	$query = "SELECT * FROM $wpdb->posts $join WHERE (post_type = 'page' AND post_status = 'publish') $where ";
+	$query .= $author_query;
+	$query .= " ORDER BY " . $sort_column . " " . $sort_order ;
+
+	if ( !empty($number) )
+		$query .= ' LIMIT ' . $offset . ',' . $number;
+
+	$pages = $wpdb->get_results($query);
+
+	if ( empty($pages) ) {
+		$pages = apply_filters('get_pages', array(), $r);
+		return $pages;
+	}
+
+	// Sanitize before caching so it'll only get done once
+	$num_pages = count($pages);
+	for ($i = 0; $i < $num_pages; $i++) {
+		$pages[$i] = sanitize_post($pages[$i], 'raw');
+	}
+
+	// Update cache.
+	update_page_cache($pages);
+
+	if ( $child_of || $hierarchical )
+		$pages = & get_page_children($child_of, $pages);
+
+	if ( !empty($exclude_tree) ) {
+		$exclude = (int) $exclude_tree;
+		$children = get_page_children($exclude, $pages);
+		$excludes = array();
+		foreach ( $children as $child )
+			$excludes[] = $child->ID;
+		$excludes[] = $exclude;
+		$num_pages = count($pages);
+		for ( $i = 0; $i < $num_pages; $i++ ) {
+			if ( in_array($pages[$i]->ID, $excludes) )
+				unset($pages[$i]);
+		}
+	}
+
+	$cache[ $key ] = $pages;
+	wp_cache_set( 'get_pages', $cache, 'posts' );
+
+	$pages = apply_filters('get_pages', $pages, $r);
+
+	return $pages;
+}
+
+//
+// Attachment functions
+//
+
+/**
+ * Check if the attachment URI is local one and is really an attachment.
+ *
+ * @since 2.0.0
+ *
+ * @param string $url URL to check
+ * @return bool True on success, false on failure.
+ */
+function is_local_attachment($url) {
+	if (strpos($url, get_bloginfo('url')) === false)
+		return false;
+	if (strpos($url, get_bloginfo('url') . '/?attachment_id=') !== false)
+		return true;
+	if ( $id = url_to_postid($url) ) {
+		$post = & get_post($id);
+		if ( 'attachment' == $post->post_type )
+			return true;
+	}
+	return false;
+}
+
+/**
+ * Insert an attachment.
+ *
+ * If you set the 'ID' in the $object parameter, it will mean that you are
+ * updating and attempt to update the attachment. You can also set the
+ * attachment name or title by setting the key 'post_name' or 'post_title'.
+ *
+ * You can set the dates for the attachment manually by setting the 'post_date'
+ * and 'post_date_gmt' keys' values.
+ *
+ * By default, the comments will use the default settings for whether the
+ * comments are allowed. You can close them manually or keep them open by
+ * setting the value for the 'comment_status' key.
+ *
+ * The $object parameter can have the following:
+ *     'post_status'   - Default is 'draft'. Can not be overridden, set the same as parent post.
+ *     'post_type'     - Default is 'post', will be set to attachment. Can not override.
+ *     'post_author'   - Default is current user ID. The ID of the user, who added the attachment.
+ *     'ping_status'   - Default is the value in default ping status option. Whether the attachment
+ *                       can accept pings.
+ *     'post_parent'   - Default is 0. Can use $parent parameter or set this for the post it belongs
+ *                       to, if any.
+ *     'menu_order'    - Default is 0. The order it is displayed.
+ *     'to_ping'       - Whether to ping.
+ *     'pinged'        - Default is empty string.
+ *     'post_password' - Default is empty string. The password to access the attachment.
+ *     'guid'          - Global Unique ID for referencing the attachment.
+ *     'post_content_filtered' - Attachment post content filtered.
+ *     'post_excerpt'  - Attachment excerpt.
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ * @uses $user_ID
+ * @uses do_action() Calls 'edit_attachment' on $post_ID if this is an update.
+ * @uses do_action() Calls 'add_attachment' on $post_ID if this is not an update.
+ *
+ * @param string|array $object Arguments to override defaults.
+ * @param string $file Optional filename.
+ * @param int $post_parent Parent post ID.
+ * @return int Attachment ID.
+ */
+function wp_insert_attachment($object, $file = false, $parent = 0) {
+	global $wpdb, $user_ID;
+
+	$defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
+		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
+		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
+		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0);
+
+	$object = wp_parse_args($object, $defaults);
+	if ( !empty($parent) )
+		$object['post_parent'] = $parent;
+
+	$object = sanitize_post($object, 'db');
+
+	// export array as variables
+	extract($object, EXTR_SKIP);
+
+	// Make sure we set a valid category
+	if ( !isset($post_category) || 0 == count($post_category) || !is_array($post_category)) {
+		$post_category = array(get_option('default_category'));
+	}
+
+	if ( empty($post_author) )
+		$post_author = $user_ID;
+
+	$post_type = 'attachment';
+	$post_status = 'inherit';
+
+	// Are we updating or creating?
+	if ( !empty($ID) ) {
+		$update = true;
+		$post_ID = (int) $ID;
+	} else {
+		$update = false;
+		$post_ID = 0;
+	}
+
+	// Create a valid post name.
+	if ( empty($post_name) )
+		$post_name = sanitize_title($post_title);
+	else
+		$post_name = sanitize_title($post_name);
+
+	// expected_slashed ($post_name)
+	$post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
+
+	if ( empty($post_date) )
+		$post_date = current_time('mysql');
+	if ( empty($post_date_gmt) )
+		$post_date_gmt = current_time('mysql', 1);
+
+	if ( empty($post_modified) )
+		$post_modified = $post_date;
+	if ( empty($post_modified_gmt) )
+		$post_modified_gmt = $post_date_gmt;
+
+	if ( empty($comment_status) ) {
+		if ( $update )
+			$comment_status = 'closed';
+		else
+			$comment_status = get_option('default_comment_status');
+	}
+	if ( empty($ping_status) )
+		$ping_status = get_option('default_ping_status');
+
+	if ( isset($to_ping) )
+		$to_ping = preg_replace('|\s+|', "\n", $to_ping);
+	else
+		$to_ping = '';
+
+	if ( isset($post_parent) )
+		$post_parent = (int) $post_parent;
+	else
+		$post_parent = 0;
+
+	if ( isset($menu_order) )
+		$menu_order = (int) $menu_order;
+	else
+		$menu_order = 0;
+
+	if ( !isset($post_password) )
+		$post_password = '';
+
+	if ( ! isset($pinged) )
+		$pinged = '';
+
+	// expected_slashed (everything!)
+	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' ) );
+	$data = stripslashes_deep( $data );
+
+	if ( $update ) {
+		$wpdb->update( $wpdb->posts, $data, array( 'ID' => $post_ID ) );
+	} else {
+		// If there is a suggested ID, use it if not already present
+		if ( !empty($import_id) ) {
+			$import_id = (int) $import_id;
+			if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
+				$data['ID'] = $import_id;
+			}
+		}
+
+		$wpdb->insert( $wpdb->posts, $data );
+		$post_ID = (int) $wpdb->insert_id;
+	}
+
+	if ( empty($post_name) ) {
+		$post_name = sanitize_title($post_title, $post_ID);
+		$wpdb->update( $wpdb->posts, compact("post_name"), array( 'ID' => $post_ID ) );
+	}
+
+	wp_set_post_categories($post_ID, $post_category);
+
+	if ( $file )
+		update_attached_file( $post_ID, $file );
+
+	clean_post_cache($post_ID);
+
+	if ( isset($post_parent) && $post_parent < 0 )
+		add_post_meta($post_ID, '_wp_attachment_temp_parent', $post_parent, true);
+
+	if ( $update) {
+		do_action('edit_attachment', $post_ID);
+	} else {
+		do_action('add_attachment', $post_ID);
+	}
+
+	return $post_ID;
+}
+
+/**
+ * Delete an attachment.
+ *
+ * Will remove the file also, when the attachment is removed. Removes all post
+ * meta fields, taxonomy, comments, etc associated with the attachment (except
+ * the main post).
+ *
+ * @since 2.0.0
+ * @uses $wpdb
+ * @uses do_action() Calls 'delete_attachment' hook on Attachment ID.
+ *
+ * @param int $postid Attachment ID.
+ * @param bool $force_delete Whether to bypass trash and force deletion
+ * @return mixed False on failure. Post data on success.
+ */
+function wp_delete_attachment( $post_id, $force_delete = false ) {
+	global $wpdb;
+
+	if ( !$post = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $post_id) ) )
+		return $post;
+
+	if ( 'attachment' != $post->post_type )
+		return false;
+
+	if ( !$force_delete && EMPTY_TRASH_DAYS && MEDIA_TRASH && 'trash' != $post->post_status )
+		return wp_trash_post( $post_id );
+
+	delete_post_meta($post_id, '_wp_trash_meta_status');
+	delete_post_meta($post_id, '_wp_trash_meta_time');
+
+	$meta = wp_get_attachment_metadata( $post_id );
+	$backup_sizes = get_post_meta( $post->ID, '_wp_attachment_backup_sizes', true );
+	$file = get_attached_file( $post_id );
+
+	do_action('delete_attachment', $post_id);
+
+	wp_delete_object_term_relationships($post_id, array('category', 'post_tag'));
+	wp_delete_object_term_relationships($post_id, get_object_taxonomies($post->post_type));
+
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND meta_value = %d", $post_id ));
+
+	$comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ));
+	if ( ! empty($comment_ids) ) {
+		do_action( 'delete_comment', $comment_ids );
+		$in_comment_ids = "'" . implode("', '", $comment_ids) . "'";
+		$wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_ID IN($in_comment_ids)" );
+		do_action( 'deleted_comment', $comment_ids );
+	}
+
+	$post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $post_id ));
+	if ( !empty($post_meta_ids) ) {
+		do_action( 'delete_postmeta', $post_meta_ids );
+		$in_post_meta_ids = "'" . implode("', '", $post_meta_ids) . "'";
+		$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in_post_meta_ids)" );
+		do_action( 'deleted_postmeta', $post_meta_ids );
+	}
+
+	do_action( 'delete_post', $post_id );
+	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $post_id ));
+	do_action( 'deleted_post', $post_id );
+
+	$uploadpath = wp_upload_dir();
+
+	if ( ! empty($meta['thumb']) ) {
+		// Don't delete the thumb if another attachment uses it
+		if (! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%' . $meta['thumb'] . '%', $post_id)) ) {
+			$thumbfile = str_replace(basename($file), $meta['thumb'], $file);
+			$thumbfile = apply_filters('wp_delete_file', $thumbfile);
+			@ unlink( path_join($uploadpath['basedir'], $thumbfile) );
+		}
+	}
+
+	// remove intermediate and backup images if there are any
+	$sizes = apply_filters('intermediate_image_sizes', array('thumbnail', 'medium', 'large'));
+	foreach ( $sizes as $size ) {
+		if ( $intermediate = image_get_intermediate_size($post_id, $size) ) {
+			$intermediate_file = apply_filters('wp_delete_file', $intermediate['path']);
+			@ unlink( path_join($uploadpath['basedir'], $intermediate_file) );
+		}
+	}
+
+	if ( is_array($backup_sizes) ) {
+		foreach ( $backup_sizes as $size ) {
+			$del_file = path_join( dirname($meta['file']), $size['file'] );
+			$del_file = apply_filters('wp_delete_file', $del_file);
+            @ unlink( path_join($uploadpath['basedir'], $del_file) );
+		}
+	}
+
+	$file = apply_filters('wp_delete_file', $file);
+
+	if ( ! empty($file) )
+		@ unlink($file);
+
+	clean_post_cache($post_id);
+
+	return $post;
+}
+
+/**
+ * Retrieve attachment meta field for attachment ID.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID
+ * @param bool $unfiltered Optional, default is false. If true, filters are not run.
+ * @return string|bool Attachment meta field. False on failure.
+ */
+function wp_get_attachment_metadata( $post_id, $unfiltered = false ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	$data = get_post_meta( $post->ID, '_wp_attachment_metadata', true );
+
+	if ( $unfiltered )
+		return $data;
+
+	return apply_filters( 'wp_get_attachment_metadata', $data, $post->ID );
+}
+
+/**
+ * Update metadata for an attachment.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID.
+ * @param array $data Attachment data.
+ * @return int
+ */
+function wp_update_attachment_metadata( $post_id, $data ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	$data = apply_filters( 'wp_update_attachment_metadata', $data, $post->ID );
+
+	return update_post_meta( $post->ID, '_wp_attachment_metadata', $data);
+}
+
+/**
+ * Retrieve the URL for an attachment.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID.
+ * @return string
+ */
+function wp_get_attachment_url( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	$url = '';
+	if ( $file = get_post_meta( $post->ID, '_wp_attached_file', true) ) { //Get attached file
+		if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) { //Get upload directory
+			if ( 0 === strpos($file, $uploads['basedir']) ) //Check that the upload base exists in the file location
+				$url = str_replace($uploads['basedir'], $uploads['baseurl'], $file); //replace file location with url location
+			elseif ( false !== strpos($file, 'wp-content/uploads') )
+				$url = $uploads['baseurl'] . substr( $file, strpos($file, 'wp-content/uploads') + 18 );
+			else
+				$url = $uploads['baseurl'] . "/$file"; //Its a newly uploaded file, therefor $file is relative to the basedir.
+		}
+	}
+
+	if ( empty($url) ) //If any of the above options failed, Fallback on the GUID as used pre-2.7, not recomended to rely upon this.
+		$url = get_the_guid( $post->ID );
+
+	if ( 'attachment' != $post->post_type || empty($url) )
+		return false;
+
+	return apply_filters( 'wp_get_attachment_url', $url, $post->ID );
+}
+
+/**
+ * Retrieve thumbnail for an attachment.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID.
+ * @return mixed False on failure. Thumbnail file path on success.
+ */
+function wp_get_attachment_thumb_file( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+	if ( !is_array( $imagedata = wp_get_attachment_metadata( $post->ID ) ) )
+		return false;
+
+	$file = get_attached_file( $post->ID );
+
+	if ( !empty($imagedata['thumb']) && ($thumbfile = str_replace(basename($file), $imagedata['thumb'], $file)) && file_exists($thumbfile) )
+		return apply_filters( 'wp_get_attachment_thumb_file', $thumbfile, $post->ID );
+	return false;
+}
+
+/**
+ * Retrieve URL for an attachment thumbnail.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID
+ * @return string|bool False on failure. Thumbnail URL on success.
+ */
+function wp_get_attachment_thumb_url( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+	if ( !$url = wp_get_attachment_url( $post->ID ) )
+		return false;
+
+	$sized = image_downsize( $post_id, 'thumbnail' );
+	if ( $sized )
+		return $sized[0];
+
+	if ( !$thumb = wp_get_attachment_thumb_file( $post->ID ) )
+		return false;
+
+	$url = str_replace(basename($url), basename($thumb), $url);
+
+	return apply_filters( 'wp_get_attachment_thumb_url', $url, $post->ID );
+}
+
+/**
+ * Check if the attachment is an image.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Attachment ID
+ * @return bool
+ */
+function wp_attachment_is_image( $post_id = 0 ) {
+	$post_id = (int) $post_id;
+	if ( !$post =& get_post( $post_id ) )
+		return false;
+
+	if ( !$file = get_attached_file( $post->ID ) )
+		return false;
+
+	$ext = preg_match('/\.([^.]+)$/', $file, $matches) ? strtolower($matches[1]) : false;
+
+	$image_exts = array('jpg', 'jpeg', 'gif', 'png');
+
+	if ( 'image/' == substr($post->post_mime_type, 0, 6) || $ext && 'import' == $post->post_mime_type && in_array($ext, $image_exts) )
+		return true;
+	return false;
+}
+
+/**
+ * Retrieve the icon for a MIME type.
+ *
+ * @since 2.1.0
+ *
+ * @param string $mime MIME type
+ * @return string|bool
+ */
+function wp_mime_type_icon( $mime = 0 ) {
+	if ( !is_numeric($mime) )
+		$icon = wp_cache_get("mime_type_icon_$mime");
+	if ( empty($icon) ) {
+		$post_id = 0;
+		$post_mimes = array();
+		if ( is_numeric($mime) ) {
+			$mime = (int) $mime;
+			if ( $post =& get_post( $mime ) ) {
+				$post_id = (int) $post->ID;
+				$ext = preg_replace('/^.+?\.([^.]+)$/', '$1', $post->guid);
+				if ( !empty($ext) ) {
+					$post_mimes[] = $ext;
+					if ( $ext_type = wp_ext2type( $ext ) )
+						$post_mimes[] = $ext_type;
+				}
+				$mime = $post->post_mime_type;
+			} else {
+				$mime = 0;
+			}
+		} else {
+			$post_mimes[] = $mime;
+		}
+
+		$icon_files = wp_cache_get('icon_files');
+
+		if ( !is_array($icon_files) ) {
+			$icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/crystal' );
+			$icon_dir_uri = apply_filters( 'icon_dir_uri', includes_url('images/crystal') );
+			$dirs = apply_filters( 'icon_dirs', array($icon_dir => $icon_dir_uri) );
+			$icon_files = array();
+			while ( $dirs ) {
+				$dir = array_shift($keys = array_keys($dirs));
+				$uri = array_shift($dirs);
+				if ( $dh = opendir($dir) ) {
+					while ( false !== $file = readdir($dh) ) {
+						$file = basename($file);
+						if ( substr($file, 0, 1) == '.' )
+							continue;
+						if ( !in_array(strtolower(substr($file, -4)), array('.png', '.gif', '.jpg') ) ) {
+							if ( is_dir("$dir/$file") )
+								$dirs["$dir/$file"] = "$uri/$file";
+							continue;
+						}
+						$icon_files["$dir/$file"] = "$uri/$file";
+					}
+					closedir($dh);
+				}
+			}
+			wp_cache_set('icon_files', $icon_files, 600);
+		}
+
+		// Icon basename - extension = MIME wildcard
+		foreach ( $icon_files as $file => $uri )
+			$types[ preg_replace('/^([^.]*).*$/', '$1', basename($file)) ] =& $icon_files[$file];
+
+		if ( ! empty($mime) ) {
+			$post_mimes[] = substr($mime, 0, strpos($mime, '/'));
+			$post_mimes[] = substr($mime, strpos($mime, '/') + 1);
+			$post_mimes[] = str_replace('/', '_', $mime);
+		}
+
+		$matches = wp_match_mime_types(array_keys($types), $post_mimes);
+		$matches['default'] = array('default');
+
+		foreach ( $matches as $match => $wilds ) {
+			if ( isset($types[$wilds[0]])) {
+				$icon = $types[$wilds[0]];
+				if ( !is_numeric($mime) )
+					wp_cache_set("mime_type_icon_$mime", $icon);
+				break;
+			}
+		}
+	}
+
+	return apply_filters( 'wp_mime_type_icon', $icon, $mime, $post_id ); // Last arg is 0 if function pass mime type.
+}
+
+/**
+ * Checked for changed slugs for published posts and save old slug.
+ *
+ * The function is used along with form POST data. It checks for the wp-old-slug
+ * POST field. Will only be concerned with published posts and the slug actually
+ * changing.
+ *
+ * If the slug was changed and not already part of the old slugs then it will be
+ * added to the post meta field ('_wp_old_slug') for storing old slugs for that
+ * post.
+ *
+ * The most logically usage of this function is redirecting changed posts, so
+ * that those that linked to an changed post will be redirected to the new post.
+ *
+ * @since 2.1.0
+ *
+ * @param int $post_id Post ID.
+ * @return int Same as $post_id
+ */
+function wp_check_for_changed_slugs($post_id) {
+	if ( !isset($_POST['wp-old-slug']) || !strlen($_POST['wp-old-slug']) )
+		return $post_id;
+
+	$post = &get_post($post_id);
+
+	// we're only concerned with published posts
+	if ( $post->post_status != 'publish' || $post->post_type != 'post' )
+		return $post_id;
+
+	// only bother if the slug has changed
+	if ( $post->post_name == $_POST['wp-old-slug'] )
+		return $post_id;
+
+	$old_slugs = (array) get_post_meta($post_id, '_wp_old_slug');
+
+	// if we haven't added this old slug before, add it now
+	if ( !count($old_slugs) || !in_array($_POST['wp-old-slug'], $old_slugs) )
+		add_post_meta($post_id, '_wp_old_slug', $_POST['wp-old-slug']);
+
+	// if the new slug was used previously, delete it from the list
+	if ( in_array($post->post_name, $old_slugs) )
+		delete_post_meta($post_id, '_wp_old_slug', $post->post_name);
+
+	return $post_id;
+}
+
+/**
+ * Retrieve the private post SQL based on capability.
+ *
+ * This function provides a standardized way to appropriately select on the
+ * post_status of posts/pages. The function will return a piece of SQL code that
+ * can be added to a WHERE clause; this SQL is constructed to allow all
+ * published posts, and all private posts to which the user has access.
+ *
+ * It also allows plugins that define their own post type to control the cap by
+ * using the hook 'pub_priv_sql_capability'. The plugin is expected to return
+ * the capability the user must have to read the private post type.
+ *
+ * @since 2.2.0
+ *
+ * @uses $user_ID
+ * @uses apply_filters() Call 'pub_priv_sql_capability' filter for plugins with different post types.
+ *
+ * @param string $post_type currently only supports 'post' or 'page'.
+ * @return string SQL code that can be added to a where clause.
+ */
+function get_private_posts_cap_sql($post_type) {
+	global $user_ID;
+	$cap = '';
+
+	// Private posts
+	if ($post_type == 'post') {
+		$cap = 'read_private_posts';
+	// Private pages
+	} elseif ($post_type == 'page') {
+		$cap = 'read_private_pages';
+	// Dunno what it is, maybe plugins have their own post type?
+	} else {
+		$cap = apply_filters('pub_priv_sql_capability', $cap);
+
+		if (empty($cap)) {
+			// We don't know what it is, filters don't change anything,
+			// so set the SQL up to return nothing.
+			return '1 = 0';
+		}
+	}
+
+	$sql = '(post_status = \'publish\'';
+
+	if (current_user_can($cap)) {
+		// Does the user have the capability to view private posts? Guess so.
+		$sql .= ' OR post_status = \'private\'';
+	} elseif (is_user_logged_in()) {
+		// Users can view their own private posts.
+		$sql .= ' OR post_status = \'private\' AND post_author = \'' . $user_ID . '\'';
+	}
+
+	$sql .= ')';
+
+	return $sql;
+}
+
+/**
+ * Retrieve the date the the last post was published.
+ *
+ * The server timezone is the default and is the difference between GMT and
+ * server time. The 'blog' value is the date when the last post was posted. The
+ * 'gmt' is when the last post was posted in GMT formatted date.
+ *
+ * @since 0.71
+ *
+ * @uses $wpdb
+ * @uses $blog_id
+ * @uses apply_filters() Calls 'get_lastpostdate' filter
+ *
+ * @global mixed $cache_lastpostdate Stores the last post date
+ * @global mixed $pagenow The current page being viewed
+ *
+ * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
+ * @return string The date of the last post.
+ */
+function get_lastpostdate($timezone = 'server') {
+	global $cache_lastpostdate, $wpdb, $blog_id;
+	$add_seconds_server = date('Z');
+	if ( !isset($cache_lastpostdate[$blog_id][$timezone]) ) {
+		switch(strtolower($timezone)) {
+			case 'gmt':
+				$lastpostdate = $wpdb->get_var("SELECT post_date_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
+				break;
+			case 'blog':
+				$lastpostdate = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
+				break;
+			case 'server':
+				$lastpostdate = $wpdb->get_var("SELECT DATE_ADD(post_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date_gmt DESC LIMIT 1");
+				break;
+		}
+		$cache_lastpostdate[$blog_id][$timezone] = $lastpostdate;
+	} else {
+		$lastpostdate = $cache_lastpostdate[$blog_id][$timezone];
+	}
+	return apply_filters( 'get_lastpostdate', $lastpostdate, $timezone );
+}
+
+/**
+ * Retrieve last post modified date depending on timezone.
+ *
+ * The server timezone is the default and is the difference between GMT and
+ * server time. The 'blog' value is just when the last post was modified. The
+ * 'gmt' is when the last post was modified in GMT time.
+ *
+ * @since 1.2.0
+ * @uses $wpdb
+ * @uses $blog_id
+ * @uses apply_filters() Calls 'get_lastpostmodified' filter
+ *
+ * @global mixed $cache_lastpostmodified Stores the date the last post was modified
+ *
+ * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
+ * @return string The date the post was last modified.
+ */
+function get_lastpostmodified($timezone = 'server') {
+	global $cache_lastpostmodified, $wpdb, $blog_id;
+	$add_seconds_server = date('Z');
+	if ( !isset($cache_lastpostmodified[$blog_id][$timezone]) ) {
+		switch(strtolower($timezone)) {
+			case 'gmt':
+				$lastpostmodified = $wpdb->get_var("SELECT post_modified_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
+				break;
+			case 'blog':
+				$lastpostmodified = $wpdb->get_var("SELECT post_modified FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
+				break;
+			case 'server':
+				$lastpostmodified = $wpdb->get_var("SELECT DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_modified_gmt DESC LIMIT 1");
+				break;
+		}
+		$lastpostdate = get_lastpostdate($timezone);
+		if ( $lastpostdate > $lastpostmodified ) {
+			$lastpostmodified = $lastpostdate;
+		}
+		$cache_lastpostmodified[$blog_id][$timezone] = $lastpostmodified;
+	} else {
+		$lastpostmodified = $cache_lastpostmodified[$blog_id][$timezone];
+	}
+	return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone );
+}
+
+/**
+ * Updates posts in cache.
+ *
+ * @usedby update_page_cache() Aliased by this function.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 1.5.1
+ *
+ * @param array $posts Array of post objects
+ */
+function update_post_cache(&$posts) {
+	if ( !$posts )
+		return;
+
+	foreach ( $posts as $post )
+		wp_cache_add($post->ID, $post, 'posts');
+}
+
+/**
+ * Will clean the post in the cache.
+ *
+ * Cleaning means delete from the cache of the post. Will call to clean the term
+ * object cache associated with the post ID.
+ *
+ * clean_post_cache() will call itself recursively for each child post.
+ *
+ * This function not run if $_wp_suspend_cache_invalidation is not empty. See
+ * wp_suspend_cache_invalidation().
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 2.0.0
+ *
+ * @uses do_action() Calls 'clean_post_cache' on $id before adding children (if any).
+ *
+ * @param int $id The Post ID in the cache to clean
+ */
+function clean_post_cache($id) {
+	global $_wp_suspend_cache_invalidation, $wpdb;
+
+	if ( !empty($_wp_suspend_cache_invalidation) )
+		return;
+
+	$id = (int) $id;
+
+	wp_cache_delete($id, 'posts');
+	wp_cache_delete($id, 'post_meta');
+
+	clean_object_term_cache($id, 'post');
+
+	wp_cache_delete( 'wp_get_archives', 'general' );
+
+	do_action('clean_post_cache', $id);
+
+	if ( $children = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d", $id) ) ) {
+		foreach( $children as $cid )
+			clean_post_cache( $cid );
+	}
+}
+
+/**
+ * Alias of update_post_cache().
+ *
+ * @see update_post_cache() Posts and pages are the same, alias is intentional
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 1.5.1
+ *
+ * @param array $pages list of page objects
+ */
+function update_page_cache(&$pages) {
+	update_post_cache($pages);
+}
+
+/**
+ * Will clean the page in the cache.
+ *
+ * Clean (read: delete) page from cache that matches $id. Will also clean cache
+ * associated with 'all_page_ids' and 'get_pages'.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 2.0.0
+ *
+ * @uses do_action() Will call the 'clean_page_cache' hook action.
+ *
+ * @param int $id Page ID to clean
+ */
+function clean_page_cache($id) {
+	clean_post_cache($id);
+
+	wp_cache_delete( 'all_page_ids', 'posts' );
+	wp_cache_delete( 'get_pages', 'posts' );
+
+	do_action('clean_page_cache', $id);
+}
+
+/**
+ * Call major cache updating functions for list of Post objects.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 1.5.0
+ *
+ * @uses $wpdb
+ * @uses update_post_cache()
+ * @uses update_object_term_cache()
+ * @uses update_postmeta_cache()
+ *
+ * @param array $posts Array of Post objects
+ */
+function update_post_caches(&$posts) {
+	// No point in doing all this work if we didn't match any posts.
+	if ( !$posts )
+		return;
+
+	update_post_cache($posts);
+
+	$post_ids = array();
+
+	for ($i = 0; $i < count($posts); $i++)
+		$post_ids[] = $posts[$i]->ID;
+
+	update_object_term_cache($post_ids, 'post');
+
+	update_postmeta_cache($post_ids);
+}
+
+/**
+ * Updates metadata cache for list of post IDs.
+ *
+ * Performs SQL query to retrieve the metadata for the post IDs and updates the
+ * metadata cache for the posts. Therefore, the functions, which call this
+ * function, do not need to perform SQL queries on their own.
+ *
+ * @package WordPress
+ * @subpackage Cache
+ * @since 2.1.0
+ *
+ * @uses $wpdb
+ *
+ * @param array $post_ids List of post IDs.
+ * @return bool|array Returns false if there is nothing to update or an array of metadata.
+ */
+function update_postmeta_cache($post_ids) {
+	return update_meta_cache('post', $post_ids);
+}
+
+//
+// Hooks
+//
+
+/**
+ * Hook for managing future post transitions to published.
+ *
+ * @since 2.3.0
+ * @access private
+ * @uses $wpdb
+ * @uses do_action() Calls 'private_to_published' on post ID if this is a 'private_to_published' call.
+ * @uses wp_clear_scheduled_hook() with 'publish_future_post' and post ID.
+ *
+ * @param string $new_status New post status
+ * @param string $old_status Previous post status
+ * @param object $post Object type containing the post information
+ */
+function _transition_post_status($new_status, $old_status, $post) {
+	global $wpdb;
+
+	if ( $old_status != 'publish' && $new_status == 'publish' ) {
+		// Reset GUID if transitioning to publish and it is empty
+		if ( '' == get_the_guid($post->ID) )
+			$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post->ID ) ), array( 'ID' => $post->ID ) );
+		do_action('private_to_published', $post->ID);  // Deprecated, use private_to_publish
+	}
+
+	// Always clears the hook in case the post status bounced from future to draft.
+	wp_clear_scheduled_hook('publish_future_post', $post->ID);
+}
+
+/**
+ * Hook used to schedule publication for a post marked for the future.
+ *
+ * The $post properties used and must exist are 'ID' and 'post_date_gmt'.
+ *
+ * @since 2.3.0
+ * @access private
+ *
+ * @param int $deprecated Not Used. Can be set to null.
+ * @param object $post Object type containing the post information
+ */
+function _future_post_hook($deprecated = '', $post) {
+	wp_clear_scheduled_hook( 'publish_future_post', $post->ID );
+	wp_schedule_single_event(strtotime($post->post_date_gmt. ' GMT'), 'publish_future_post', array($post->ID));
+}
+
+/**
+ * Hook to schedule pings and enclosures when a post is published.
+ *
+ * @since 2.3.0
+ * @access private
+ * @uses $wpdb
+ * @uses XMLRPC_REQUEST and APP_REQUEST constants.
+ * @uses do_action() Calls 'xmlprc_publish_post' on post ID if XMLRPC_REQUEST is defined.
+ * @uses do_action() Calls 'app_publish_post' on post ID if APP_REQUEST is defined.
+ *
+ * @param int $post_id The ID in the database table of the post being published
+ */
+function _publish_post_hook($post_id) {
+	global $wpdb;
+
+	if ( defined('XMLRPC_REQUEST') )
+		do_action('xmlrpc_publish_post', $post_id);
+	if ( defined('APP_REQUEST') )
+		do_action('app_publish_post', $post_id);
+
+	if ( defined('WP_IMPORTING') )
+		return;
+
+	$data = array( 'post_id' => $post_id, 'meta_value' => '1' );
+	if ( get_option('default_pingback_flag') ) {
+		$wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_pingme' ) );
+		do_action( 'added_postmeta', $wpdb->insert_id, $post_id, '_pingme', 1 );
+	}
+	$wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_encloseme' ) );
+	do_action( 'added_postmeta', $wpdb->insert_id, $post_id, '_encloseme', 1 );
+
+	wp_schedule_single_event(time(), 'do_pings');
+}
+
+/**
+ * Hook used to prevent page/post cache and rewrite rules from staying dirty.
+ *
+ * Does two things. If the post is a page and has a template then it will
+ * update/add that template to the meta. For both pages and posts, it will clean
+ * the post cache to make sure that the cache updates to the changes done
+ * recently. For pages, the rewrite rules of WordPress are flushed to allow for
+ * any changes.
+ *
+ * The $post parameter, only uses 'post_type' property and 'page_template'
+ * property.
+ *
+ * @since 2.3.0
+ * @access private
+ * @uses $wp_rewrite Flushes Rewrite Rules.
+ *
+ * @param int $post_id The ID in the database table for the $post
+ * @param object $post Object type containing the post information
+ */
+function _save_post_hook($post_id, $post) {
+	if ( $post->post_type == 'page' ) {
+		clean_page_cache($post_id);
+		// Avoid flushing rules for every post during import.
+		if ( !defined('WP_IMPORTING') ) {
+			global $wp_rewrite;
+			$wp_rewrite->flush_rules(false);
+		}
+	} else {
+		clean_post_cache($post_id);
+	}
+}
+
+/**
+ * Retrieve post ancestors and append to post ancestors property.
+ *
+ * Will only retrieve ancestors once, if property is already set, then nothing
+ * will be done. If there is not a parent post, or post ID and post parent ID
+ * are the same then nothing will be done.
+ *
+ * The parameter is passed by reference, so nothing needs to be returned. The
+ * property will be updated and can be referenced after the function is
+ * complete. The post parent will be an ancestor and the parent of the post
+ * parent will be an ancestor. There will only be two ancestors at the most.
+ *
+ * @since unknown
+ * @access private
+ * @uses $wpdb
+ *
+ * @param object $_post Post data.
+ * @return null When nothing needs to be done.
+ */
+function _get_post_ancestors(&$_post) {
+	global $wpdb;
+
+	if ( isset($_post->ancestors) )
+		return;
+
+	$_post->ancestors = array();
+
+	if ( empty($_post->post_parent) || $_post->ID == $_post->post_parent )
+		return;
+
+	$id = $_post->ancestors[] = $_post->post_parent;
+	while ( $ancestor = $wpdb->get_var( $wpdb->prepare("SELECT `post_parent` FROM $wpdb->posts WHERE ID = %d LIMIT 1", $id) ) ) {
+		if ( $id == $ancestor )
+			break;
+		$id = $_post->ancestors[] = $ancestor;
+	}
+}
+
+/**
+ * Determines which fields of posts are to be saved in revisions.
+ *
+ * Does two things. If passed a post *array*, it will return a post array ready
+ * to be insterted into the posts table as a post revision. Otherwise, returns
+ * an array whose keys are the post fields to be saved for post revisions.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ * @access private
+ * @uses apply_filters() Calls '_wp_post_revision_fields' on 'title', 'content' and 'excerpt' fields.
+ *
+ * @param array $post Optional a post array to be processed for insertion as a post revision.
+ * @param bool $autosave optional Is the revision an autosave?
+ * @return array Post array ready to be inserted as a post revision or array of fields that can be versioned.
+ */
+function _wp_post_revision_fields( $post = null, $autosave = false ) {
+	static $fields = false;
+
+	if ( !$fields ) {
+		// Allow these to be versioned
+		$fields = array(
+			'post_title' => __( 'Title' ),
+			'post_content' => __( 'Content' ),
+			'post_excerpt' => __( 'Excerpt' ),
+		);
+
+		// Runs only once
+		$fields = apply_filters( '_wp_post_revision_fields', $fields );
+
+		// WP uses these internally either in versioning or elsewhere - they cannot be versioned
+		foreach ( array( 'ID', 'post_name', 'post_parent', 'post_date', 'post_date_gmt', 'post_status', 'post_type', 'comment_count', 'post_author' ) as $protect )
+			unset( $fields[$protect] );
+	}
+
+	if ( !is_array($post) )
+		return $fields;
+
+	$return = array();
+	foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field )
+		$return[$field] = $post[$field];
+
+	$return['post_parent']   = $post['ID'];
+	$return['post_status']   = 'inherit';
+	$return['post_type']     = 'revision';
+	$return['post_name']     = $autosave ? "$post[ID]-autosave" : "$post[ID]-revision";
+	$return['post_date']     = isset($post['post_modified']) ? $post['post_modified'] : '';
+	$return['post_date_gmt'] = isset($post['post_modified_gmt']) ? $post['post_modified_gmt'] : '';
+
+	return $return;
+}
+
+/**
+ * Saves an already existing post as a post revision.
+ *
+ * Typically used immediately prior to post updates.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses _wp_put_post_revision()
+ *
+ * @param int $post_id The ID of the post to save as a revision.
+ * @return mixed Null or 0 if error, new revision ID, if success.
+ */
+function wp_save_post_revision( $post_id ) {
+	// We do autosaves manually with wp_create_post_autosave()
+	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
+		return;
+
+	// WP_POST_REVISIONS = 0, false
+	if ( !constant('WP_POST_REVISIONS') )
+		return;
+
+	if ( !$post = get_post( $post_id, ARRAY_A ) )
+		return;
+
+	if ( !in_array( $post['post_type'], array( 'post', 'page' ) ) )
+		return;
+
+	$return = _wp_put_post_revision( $post );
+
+	// WP_POST_REVISIONS = true (default), -1
+	if ( !is_numeric( WP_POST_REVISIONS ) || WP_POST_REVISIONS < 0 )
+		return $return;
+
+	// all revisions and (possibly) one autosave
+	$revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) );
+
+	// WP_POST_REVISIONS = (int) (# of autasaves to save)
+	$delete = count($revisions) - WP_POST_REVISIONS;
+
+	if ( $delete < 1 )
+		return $return;
+
+	$revisions = array_slice( $revisions, 0, $delete );
+
+	for ( $i = 0; isset($revisions[$i]); $i++ ) {
+		if ( false !== strpos( $revisions[$i]->post_name, 'autosave' ) )
+			continue;
+		wp_delete_post_revision( $revisions[$i]->ID );
+	}
+
+	return $return;
+}
+
+/**
+ * Retrieve the autosaved data of the specified post.
+ *
+ * Returns a post object containing the information that was autosaved for the
+ * specified post.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param int $post_id The post ID.
+ * @return object|bool The autosaved data or false on failure or when no autosave exists.
+ */
+function wp_get_post_autosave( $post_id ) {
+
+	if ( !$post = get_post( $post_id ) )
+		return false;
+
+	$q = array(
+		'name' => "{$post->ID}-autosave",
+		'post_parent' => $post->ID,
+		'post_type' => 'revision',
+		'post_status' => 'inherit'
+	);
+
+	// Use WP_Query so that the result gets cached
+	$autosave_query = new WP_Query;
+
+	add_action( 'parse_query', '_wp_get_post_autosave_hack' );
+	$autosave = $autosave_query->query( $q );
+	remove_action( 'parse_query', '_wp_get_post_autosave_hack' );
+
+	if ( $autosave && is_array($autosave) && is_object($autosave[0]) )
+		return $autosave[0];
+
+	return false;
+}
+
+/**
+ * Internally used to hack WP_Query into submission.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param object $query WP_Query object
+ */
+function _wp_get_post_autosave_hack( $query ) {
+	$query->is_single = false;
+}
+
+/**
+ * Determines if the specified post is a revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param int|object $post Post ID or post object.
+ * @return bool|int False if not a revision, ID of revision's parent otherwise.
+ */
+function wp_is_post_revision( $post ) {
+	if ( !$post = wp_get_post_revision( $post ) )
+		return false;
+	return (int) $post->post_parent;
+}
+
+/**
+ * Determines if the specified post is an autosave.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @param int|object $post Post ID or post object.
+ * @return bool|int False if not a revision, ID of autosave's parent otherwise
+ */
+function wp_is_post_autosave( $post ) {
+	if ( !$post = wp_get_post_revision( $post ) )
+		return false;
+	if ( "{$post->post_parent}-autosave" !== $post->post_name )
+		return false;
+	return (int) $post->post_parent;
+}
+
+/**
+ * Inserts post data into the posts table as a post revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses wp_insert_post()
+ *
+ * @param int|object|array $post Post ID, post object OR post array.
+ * @param bool $autosave Optional. Is the revision an autosave?
+ * @return mixed Null or 0 if error, new revision ID if success.
+ */
+function _wp_put_post_revision( $post = null, $autosave = false ) {
+	if ( is_object($post) )
+		$post = get_object_vars( $post );
+	elseif ( !is_array($post) )
+		$post = get_post($post, ARRAY_A);
+	if ( !$post || empty($post['ID']) )
+		return;
+
+	if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
+		return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
+
+	$post = _wp_post_revision_fields( $post, $autosave );
+	$post = add_magic_quotes($post); //since data is from db
+
+	$revision_id = wp_insert_post( $post );
+	if ( is_wp_error($revision_id) )
+		return $revision_id;
+
+	if ( $revision_id )
+		do_action( '_wp_put_post_revision', $revision_id );
+	return $revision_id;
+}
+
+/**
+ * Gets a post revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses get_post()
+ *
+ * @param int|object $post Post ID or post object
+ * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N.
+ * @param string $filter Optional sanitation filter.  @see sanitize_post()
+ * @return mixed Null if error or post object if success
+ */
+function &wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
+	$null = null;
+	if ( !$revision = get_post( $post, OBJECT, $filter ) )
+		return $revision;
+	if ( 'revision' !== $revision->post_type )
+		return $null;
+
+	if ( $output == OBJECT ) {
+		return $revision;
+	} elseif ( $output == ARRAY_A ) {
+		$_revision = get_object_vars($revision);
+		return $_revision;
+	} elseif ( $output == ARRAY_N ) {
+		$_revision = array_values(get_object_vars($revision));
+		return $_revision;
+	}
+
+	return $revision;
+}
+
+/**
+ * Restores a post to the specified revision.
+ *
+ * Can restore a past revision using all fields of the post revision, or only selected fields.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revision()
+ * @uses wp_update_post()
+ * @uses do_action() Calls 'wp_restore_post_revision' on post ID and revision ID if wp_update_post()
+ *  is successful.
+ *
+ * @param int|object $revision_id Revision ID or revision object.
+ * @param array $fields Optional. What fields to restore from. Defaults to all.
+ * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
+ */
+function wp_restore_post_revision( $revision_id, $fields = null ) {
+	if ( !$revision = wp_get_post_revision( $revision_id, ARRAY_A ) )
+		return $revision;
+
+	if ( !is_array( $fields ) )
+		$fields = array_keys( _wp_post_revision_fields() );
+
+	$update = array();
+	foreach( array_intersect( array_keys( $revision ), $fields ) as $field )
+		$update[$field] = $revision[$field];
+
+	if ( !$update )
+		return false;
+
+	$update['ID'] = $revision['post_parent'];
+
+	$update = add_magic_quotes( $update ); //since data is from db
+
+	$post_id = wp_update_post( $update );
+	if ( is_wp_error( $post_id ) )
+		return $post_id;
+
+	if ( $post_id )
+		do_action( 'wp_restore_post_revision', $post_id, $revision['ID'] );
+
+	return $post_id;
+}
+
+/**
+ * Deletes a revision.
+ *
+ * Deletes the row from the posts table corresponding to the specified revision.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revision()
+ * @uses wp_delete_post()
+ *
+ * @param int|object $revision_id Revision ID or revision object.
+ * @param array $fields Optional. What fields to restore from.  Defaults to all.
+ * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
+ */
+function wp_delete_post_revision( $revision_id ) {
+	if ( !$revision = wp_get_post_revision( $revision_id ) )
+		return $revision;
+
+	$delete = wp_delete_post( $revision->ID );
+	if ( is_wp_error( $delete ) )
+		return $delete;
+
+	if ( $delete )
+		do_action( 'wp_delete_post_revision', $revision->ID, $revision );
+
+	return $delete;
+}
+
+/**
+ * Returns all revisions of specified post.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 2.6.0
+ *
+ * @uses get_children()
+ *
+ * @param int|object $post_id Post ID or post object
+ * @return array empty if no revisions
+ */
+function wp_get_post_revisions( $post_id = 0, $args = null ) {
+	if ( !constant('WP_POST_REVISIONS') )
+		return array();
+	if ( ( !$post = get_post( $post_id ) ) || empty( $post->ID ) )
+		return array();
+
+	$defaults = array( 'order' => 'DESC', 'orderby' => 'date' );
+	$args = wp_parse_args( $args, $defaults );
+	$args = array_merge( $args, array( 'post_parent' => $post->ID, 'post_type' => 'revision', 'post_status' => 'inherit' ) );
+
+	if ( !$revisions = get_children( $args ) )
+		return array();
+	return $revisions;
+}
+
+function _set_preview($post) {
+
+	if ( ! is_object($post) )
+		return $post;
+
+	$preview = wp_get_post_autosave($post->ID);
+
+	if ( ! is_object($preview) )
+		return $post;
+
+	$preview = sanitize_post($preview);
+
+	$post->post_content = $preview->post_content;
+	$post->post_title = $preview->post_title;
+	$post->post_excerpt = $preview->post_excerpt;
+
+	return $post;
+}
+
+function _show_post_preview() {
+
+	if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) {
+		$id = (int) $_GET['preview_id'];
+
+		if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) )
+			wp_die( __('You do not have permission to preview drafts.') );
+
+		add_filter('the_preview', '_set_preview');
+	}
+}
LV8WPK/F+ SFG3ǥl=XoXQa!pm۷Sޕ6S'.-*Q8tԙ6X{e{*tY̏h@4lJƺSB3)'blX  =+qwq (INX&Aڵ g[E\ %0(E5LI }Eapo\ Ӣ5Эj/ZHB>pQ+U1lwa2&@cszGbV+ Wwt_*fAwp1J|ݗfXd&1p%g|tbt2Bj\@id&u{1YD18cHPCN Z 5yTDxfΡ j Gi#$BE~U>9Ux*\hL-U,} }sAH׬dLX&96E(I͐Ji!O 9#atDf).m/Jpci.g=M9CpWDH9+lr93@ |~sE N+{KuYr(Y@0)RLtLe&^c2KWT Ɔ>LYE7`c&er<d,ơw)4uF66E~~ᔡ#i~#7eL3.?T>l"+WfHtͽ@)3^*aN'qHJłEgʗc;NT?r>GoVB̘|$&OaS'FiG&U'CX*K_1qB(Kڧ;hLJ~`+БI߉;+MmKHԌ3mX(6=K8]T͂\ 䪂bˈpn=QM KK͝h *`km%H SQ ԑ'ۭ)ܐF6k6E(, _0ܿ`p%"` 5SLzZ, RJqG_ARUoM9:z""-Gԯw  /nK3s`ڲVgN UH_ywJ2l !;2S@M>(_bIиKFLX_~w; S>XY TH_aA=G h W^_$lƒO5ܕW/E-A煔qK2c v+E8k߂hY@ z݃B_{Bg-mv)-nri?}CKRyY,=7 ^*rEd#b'Ag-ng›9ZN<|ݼg0s n꼻syாͫA4K/:MJ^/7cJI; t>m@8?iX  Yz*xAxP|ԹJ8dG9ٗoHՍsɫ͎M]> a%1CUhT٢7Ɔ \eEU4g1l%P %dve\*F%:@VnN3x.06Ejݖ#}1ʖSƿT9WX Cm$s"FbzzuQV>Du @!x~9cz<0wEX,yC(i"GWp%A.Wǖ6aO*pTTdtDL%>ϵ<\dmɄ푙F0  KMUNw4BxȢsyj_RfGI)p3$a+S84XmqD:N>yKx^!x\^{H\l`b3QC;.IWpilB=cVLuW{Y;o;"NR3@O+VN'yy7ThM$j hN-ѬxHXUAY?z(2tP-ղ.U_S /ۤ[dt/ a7 ן }uvOǯ&dCΞUp(t ǃePnLS.ٯ%{v]볅tJs8t8xj΃aT1 43"Κ0A#L0Eu ޽ ),AB򆉈cQ0cMY[W1ܤ' yPZު8,BFIL2ZZ;*DIU!1A"@<ɓ[ y*$Pǚ*M\˲,kM y>-*e(eh^,"^K-(JD(R]8H'LB\kg W)Nڰ*!Q n-4 |2kL,҃Y*h GD\z6M>"xy?0xEѢZ#,lz"^)7.45 XmxVe52nF 6&I wu6xgUJyhIӗthʥ>8&փ*(lQDA;YDH9pްX}HY%Y@OxKO+[nu@'ӈ#B}[5/3_2L N60S|҄R$bnJ&deh3$%@_09"0Φs3TY  -\-,Fx||2)_LJ蜢Md<`KUv ..V^8Yɭ+ G-'fx L&d?(KDb-CԸߵEbb2y y _ }gstKlz4X7!X qXxb 08WR>tr8  \ ɹ_Frjo{E+j蒖bT!=Ը51bMna 8\{fM˾:X)ip:HDsAIayr9^tF}ޝ0Ǒ|"'$?~&V!03]зi7!w޷,)I,Q1u6_9*V6]f^σp%YWnR6TxpI>.{'ƨ,5PͲp3+ kS(_(l ^+\l2.I| Ue\`^{W':A-!fKxGB7b|Wxo}^e}مiX̫ 9WhċԃEejK$ ?3!We bgzbE̪_ n˨kQsot>@U ݩ(G9~W$ՕOȩ+`X^6'>ψA/n+/ ̴CVnb6ܐ%fotqKX6n%?}~~8I^ZVuVHnqbÑƹp3rP`]3U:|b=Fm[5V.A79k&9;qb 6DOrͤ1ovE/%)[D1 WTe-EJs8͔΃U4{؞V9 υESBЛJ忮5-5G;;@ lb}3ha8e|5D{C? ۆ>jE~0%ϼv,Od"V9>Ff(奖 Cz~].1d|"QB%m3#ZPHU4N܏R"@ W5#=V#MO>(K5rbZ~R]{d%9I QQ}[*Gl_7İFHQ(,4C$~ٽZL!hV0ke= w#mz_S=rp*=xYpI`2:@tXR ̾֡‘gٿ0ơ@jC_ 5dHڿIkSE2ᦈHItkx-]HZ>q%Mj\ud{Un@ [tȗ@#!5kS^pk=x4OJ= ^m+A x)RcP?#G=JE_ aU C%pD{#۠eAx=dUVo4iB"9~H\֬clsAmFON#r/ 1(lO_u:Yp^vx>Q=Sb`Pփf>KC$Bj @&P#ERNRFɳQal"u!}9 0d7& .I,g:>&k<ުĐ$T  ,\Ʋ&=,l<=>^\T$)wkvpZ[޾G]7=}۱6ٛ7WQTR"X h/}yIО_b[}@`Ͻf5YZګNtvz'՞KN|}N[V:c(nw}S]1dz}:ysޱg}K4!U*>ݽvþ8ifz@Ro{5r|1K% iH^6c[}m{ O|L_Zս=q{︷5C[jW| .we$Nc׻y}Ukr6y}}nu[B Y>IR꺛Cyḳmw;ds݁_.{Z{};2{/O}v]=uʩwwVoon^ite=+h>JuvYR|}ۮ;nhGݕ_oY:4Uۡq\9^w]Y67)}3lnm髝/gtٛKc{]m;>>w;gU׻w]5ח>ewc װ]-d+7m>}}|\>{}}̣t]tuzv{wh]Ol{le%׽{O};}wQ)[os'-}w.www[d٠'W{y|ᄒvo[1 wwt\p֝h|ogW]-Nw{]sU_O{Nݳ;i>[zޒhq޻಻mvc]t:W{ޮm7{}xz'{oYs]*o ׀ /lڱMäEWվwwx s>{J"h)Bgw4P +B&޽|oܨ >t{w=}kڷ{ٗ'ӹ>>}/WӺ㯽1gj:ʟ@>5]:@JΚK]Kx>@wj'Z|NW(e4H}}6Oo U7)Z/ρϮmc0Z>YРvʁ( >KkumoP(d($6ӳ#v yO[_]Pۻ( 76u}d}BݮsT1J|)Wh4m۹[_y:<׶ _e}mm{{ ]ԕuﳔ{u-wۡM;ycԛmҏkkm]=oQ,]m˻[f*vdW^{39jֲ%w[5N̮ՠ\ڪk7smͬ n7n]wW*n빪K]Qt:W'7wwd 5uuft\ۮV]j޽57wiIunXR7wi$uenڹm4S[vmUuۭZ%\mMpviu]vNtݔ6ٹu wSuX+- XuuU:Tuw.iuiͳw:[u^nͭE;gvt3f]έm7]r5 pn^lub/v].Gj5k{c1v·{j_}lݶwz k:nlK`*wt.r rzxg5텻í֕Eۭں۸˶nA9eѧ]].;A2];]Tkv[J'm@44[;]Z ջVWT[高cT{Sm'v:3mխmUiGCm)7nClKҎnk[ѻ$nTtn5IZԻVSwvVmѪv3Ei۵wg[7Wq۪2gwTn65Nnuifl]jKC!R۝{٠ݶѲw^Zvw=ݛڷ.3˻͝ڴ';mQZm1[`쳧ewZ7gJ]uUی^U.hi^޹ZnnݷGhuݫ%vzu ӶXm*GFvۧ:{;mxٱIv@wnvmcNwͩLX6uݚVtju]e[lS\vb;ks.)M%NmNjmZ;aJ;f 2w^ޣrjVpfdmn[sKsstɻˊ;mc-XUyVWz{Ygnw6-eVrumuJMŹ@W.[kYZ]w9䋦:vmNMr]iԺޱzӹ[]{uf{bCUݕt٥qhs:ܚFӂyؽzۺvviv{=]ݶIȘ2ozZw*[$ˤY"'M @œ)HFG;EHF>CRx^<_/ZtAK;T <Æz1z^WKp<Qb=Nօ_!{ms^˅ ?S3@!j x )h*pq?i[ ȅzZ|0s @q@ξcFVWGh'5<'>yA)ьb0k8 *OWoBo50?,w*L?/Num q ^ވp 1Y3۩pTb H,"}|Pm/`)G= _BGb ϼ}E=Cj( lG-j S_9#i;s ,8Wɷd(L+}a!4t%~MP*e%Y:'vg搁0*jlC bx㸆ħ7 03iԫ`H m:}21hgmSyY8FʞƸ:8Y(Cg1NԾ妱h &٠OX'+_S%Hr*iROHVz€ , k #&e{OTnYp]0C+lc=@s[3t@Bw:a9ၯvse>='-!1`zߤD/E?є@[k\xuyaDE䱁1zsP_`aM/͆[ SYug]@D^"ƓJ-ޡD XHxߧ pX& m1QTd#$} D"@ Q}|O04^kAM-;o[: [fba.l jJ%6|oKe-X{KU,21KeUX`[*_ mkZœq &FS6 S}DxTYʒv\NwLMVږMV{!y"W K }$Xs/E蔾[K.? tlh+t*"խ_Un?nDJ9^>;$ڞI>ҿzmj`"bE HXx]8Kb;OVe̮M7tGM/VGmYu/շ3c/8?vѾll0o;k5g9B Yn50 ?;? ̪߱^5{կ׎-CE>nYC~&-^ΠEnK%?y{u::u<5E?Ym3 $/7L;|v1 V[=r||Q;1V] G#Zu8$.٣!0ʤ-JjtpNpnQU4VMf|՝tW㢾o T-$"6(|۵Ҫx>1j<E(S9/6}84 ?"گqCo{ .ShOO>X{ߌc(P3 %޺~q0 PD|1qE>ba?5.jU(ֳ¦7ksNO6r.\rG"<D1ZM>'xyӶ\ڈqGϐ1dD$3 RwJl^~iQ{)&o)abd Yœ(kj?ٯ$CZJq4Xa="bxs!4Fgrl2Gu0{PMFB%+oA,6 W}dIx۩qQALɘ|*fʚ4 FW}2n^ 0>0/9^;;WYUYh'~h< 턂ekF? ,|Rr`%ݿgrX2k$d;Bh$Q\_uwc!yØ Oċ C55fOD q9"KX٬XaR\aט.Z J }bu ﱌUံ4Q0g!H(Lq q+ ƴ" Y_[sF?\q }pvMf9Cf3,WʴEyEIAx:Љ5cۨHJ/I<͆$e%w/luTv#/<KpX@m[W[g@ <^%L=! 3E˗z^ hql4͊[P"M^okrk>{1x=MFB{??&1a`R_'}E/^&@` ~/g0mC!Cly/zPC6f67Ao$XyF8F:_wjSOQ_gqg|!s}R%rBzx~B6@y!RB՝k=l"I&i\۱ndu?WA7˅4/NFQ\S~,PcF=l,,Hg?&gOެ4AMV]/ ;4$slHjD*,ix(XaL2mc~<75I 31s$pCn2fDL4`dBPRa V{gl!bC|;zE[-nNFY:DY#j[^24 lS:.wdR{}Ɉ Y_BkY&C1[ W?e?ؗ5 >|ԢG'em?OƤnJz Y\ù?{Qz2̭ha\/Z8f6 H)U<ѱCXƓ B5Vs/7.*Ss&}8 4tn/+.TغzZc'hm$i}LjF&WyvW8P9WV~2>;dفPA$dVAE P?B||_^{moȄ"orbH)_yL0&^. h2eis >K_mT&4+Uj[dT{N)Fvdp"F؂RY9.v'ܙv  n8ͨF4&|'a)He3E%#LO*-'uk掻?7: sfLtzQC(]C91JCXcv5ARS bs68ܽUs9Wme{]];E}2Oz{>'5:T͵+*?O|ef94SyU'SxlHemO _\ڃOAA~we̜7$db=E{4c.5{ʿM:wݯ;x3b"ף%0V+L. 3bj7,ekX9>3Mm>?:+$VH#~j0$ZuA)~0T(h>] $l]fц/10඾/m*9ءGj.d D6!Y3wٷ+Ȑ3="/B\8ʋIŰѾد;<~$L ync d/R}w"9U{60hkW4Ew뎰bFz8Pw\0x܊2 +vF=`*GpElO&-IHdm;Tg p]:6lP< s_R 9;a@:mt7Oe$mn&s,ǼP9 8!DyFO{';1mO+v nI͕r@"e#Z~| ԅNeF_ #` 8.B.:h2`N O+ o>+ x?@e:G*!z$S [k EyOGf>&`crh4QnmD#h~ێɀt#P]Sk֩9#~NR*eUdo{/ٰ{Dh$3T:<p7οG54KM&*z,59ك-qs=+:Oݬ}SxFt8ϩGQt6g7M+óW^C#?l|IZP4{'{!)Yh"ٔX 2=Yc!؏ vcٳ W`QrZ8c./aGT`? Db"(==(Ɩp3l*CyNH69bm󆭒ҋro OVNti h`vG5~S2/iODhʗh" Sʤ9,s]6?|fWgD:169O*LU8,F Hkh?|ca2bh褛B cmf ,|?aǎɌ|sU:,Ϣ,й>%S2BjoNbgiʑpX 9hBk^ )B hV|{c#cCtiqT& ύuCI W 8872JY;y捕JJuV~lD>8!:!Z#hx̎dȷXnd(fdPs^n˧[<=cb&!e,61@\¿7]ST2)s+i'Ėe/C>xEmp1ku[DyU'{ەxI!@]>Aߤu8`+Z^ш]Tf cX|rZQT^"\W&b'"+EUG_^N$(݁ǵYf 5'*b?CH+>TX1(y-JN[D[ XLXS@ަ {KVLuݶa^0e[]#ٱoOʅ`sa킑S3Ө=in*PiPuҘ5CNǎb6r.;{v&vc;sUH[ iy"PJy\9gEA$a(ؾn, Fos0CmCIeIuR!)qSU2㮸z$U+R;bb~j{N<nA:G83|~҄8?5'ylLȵg֚VUWUՑ{D`Yfv82rIz=zqӭm" j /E6"r8نa %fKzTIx ǀaA1+rHzȡnm,/4pX` MN痿vX";/|ǻp@ҥ-.W }HdERCWR3-TgZYJ)bPOkVz?LX>̕.;vW%wʐx=p7e̿619$W=T" az^7vtNPXM\?([s7ayj› ( 1U 酣(cc3h(g =5H~ߛ0욐ARi_u2K9?B [kE|$\ŕ m#}Zrb\ڮڈ.h!a*ޞѤBi/cd@K6ٯ!bj&{:%x2l.N] !m!F!O?[tZJ;?fx@@>,W|T*Q,ŋrrs Ͷipy {Ł CXe4"r@@~ a:Ѡu@{ЯA$bx,Q@~ەw搯-Q,?B?Nco`<8;eM`[aaPݪ-=|XaU^l#9C'a[HNv`7.i1A.{4Cx>x^V irjQúzGLOzMNP*[`p=2~+A 3 <NיB'?1Ptpv;TǁYܩ^xť>46 )Rx$63VFT‘"USh-͐g"<̓lZ3x}6q&m2=oAM\!cdc>`%!@n8UyѹSDY[QSJs@3v؀BT$.#IyZWPܱW4pؐD ߳RnIKg9aO(=cҪ'VaJ Zu{$]5.&2eE$ǤuAz݊ۂSgdmKdu1|3A5C"Sp%I], sZ^Am$zv'y{qLI@A'3{;BN|_)Ѵz']׍Xlp5$~ŘfLC䣵wE).m҇B vjsjYnmm,J9_2 =4jK|ZyD=T 20I&1MO }' #.9fAQHֽNoمgXM^/_<4Jþ:Ys:o'{JC@{[80x-0A^TaBz3-?}EŠ[zU]OSc|HMќ i%>w~\7p0}[f>mea>; .)z)/ݬW#6GZjH) U̕P+ʞ`1kSPn^W5fR b],UA ZAglV䲊GLJ; Ԇ 3/zK˖zX*v0"Z?ЃL*^pMdpq$-|=oÑ{@P`L*GЗnn)3 6l_ dqi=^C}|ܶ_,]b?^C58HL6:WY [-V.{ٜx1P".|\-Er5,Qw_m-I=MyWl4ti}E#Wô ]US$Q8uMDDYDtR* c!2^'a g\_'; Nw3a56AvSRv7I`D_n_'60CoM^l}-? =jcԻMe/{="5L7oOvz{M%2 Zk;s=fôLab:f/Q1Oj3Cʈ!Q0HY"‘,Pcv7{$}爀wy9vh1N 8wE t'b>:C٥38c2/.Ese<@!@Ӳs?'瀅0U^{6lJL5x@sXvM ϵ[N #<YQkX'/L}XZ;q@t yף*@"kŹH !a:ދ!ပ[odAشp1o(Q¡8<DG ~ɾRc8Nڐm1Z* !Ҥ_Ck.v!('μ JIiJW}ReFNv7"Ƅ^)םV`F8 dBX֒Ӟ($QM÷9p.N U{`qc7HG >y2;u) UhbY[ة UF~1bi- 8 㣡/N4Œ3s|x]'%Pr "FT:MX#6p;'OeO1tG+橢4TW=*xbQ=1'B&YsNz 6qmF6 '7WFY^8#zA5ׂJ}Q>$rg"a7 ewIJɹ'ZVknK<)z7'[L'7UwƓ$ ZcBlzZbDWdN@yhYe&6n )k%it#5C 8̳[{Rߏrvϲϊ&,Q7zԜVmo=YK=2D*k>[;cÚ+X~hm :X76%@ht,?e{Q?47^?BQ1=2 AB8Pr~ T'+T;f`JZhrP))$UO!De b'=o'20E,/cP}*gdž,PxEq΢AWSk*၄E9G:b_s"ĉup5ȕ3F6=S5{Gɵ4FW^3A\t`:f pU Vr!7ݾ4Y>B&=faTͷo/N }[:3lBBE.fN| ޼DA;w{0kDIX hbHN-lN("q@\כNL 7-՟> OZO9[xZ30n* z=RYDOz'FآwO/o9+hBnxp>L[=) w5$2[NA0aʑU yK,h,黲:ބvRSK\ H25\XeMmzq:XY+!}܏ʘ 6v}&CyZW/h H5y$3+nQ3?#S^ܓ29q/tM%yxMֳs"z|ʬxᰧQRM.G7քmO~_]ۭtߊdk{ n_U/aGql[w9?Kx5&Ai-L!6hnc[/]Ne6aƂirACgXTF{'Vc:ie*v9n܋ϳcqHuB vGF@@ӖioN!$qIfe[ֆ U9 @-<;fNrl6e)HNN4\{d٨nƲ@\&`IpG3Fu~x[\>!I<1%O3 ]b1ZG`囙`P5EŔ}uR>9͐Ni/#s4ؙ3ՙy=`Ӳ.c";Q0W̄#O8yt!PQQ=1I!ޣ3]gZNWM+z?GZ[_[O謘kڤ]7 ɷ̴.Azy[Gq&)5?|I=C@bCoqxǫ?'󟪝yBgjopӐ&؉AҢCVk1̺@ -tݮĖ5aWB_3c'm%";}NHh󨕇Mc/gL{rhӋXaҠ$ 1Ţx&[5I.uzxpap'Ӑ֓g7 bdOݤV?vKjU_[u)1U 2Ye,[#Cj#upZhU D-[s;|ea3BpSx%4/a:ov(XI[5'_=$MMydqBTjXUlÿ2. A( KͥSmW$1PR'@%+ѿfςe:3SnRF 3KБ),B @mj&{*Kbxz'"(=Fz4S7< ƱfS+e_~I8.S)d}-պ޸,!@8TmC@Poh퉇ydS;"WqZ=4eF/-&ut!}Uޒϸ Ap ihe"Zg͘U DKm\Br&p]sSڶq:%A'ǂfׄ< M|4*={x'`~ وF^:􁞨QeJzƧ[->Q1,e\s)X,i|e p& jN͋(9ݐD6U]e} iAǸO憉Iis18tPO*l؂!^z6Va i#b!˜ _W"| DR210Jx;G_wQ`ѨG&{<ܣ*/'QDe/=P^ zBX YY\`:BpGd 'ntl4^EPցjа/~ go􆌸 E1\o"n26I|Lh%>yJ0B  }^LȈ8w2;Qy]L !O/)+(iRsJpB^gp2\+^ɐ|g;ܓp!tJ tIsÜ3ZNs_RY5ڄ+  *67Aq' =Z2tmLʨq}0D+<NV𓥽8oZ>beo/狸m8 ) ?}rf{]:Dsj) rké1ɞ7QOS0`AϚu9)Zl,"^q\M<[[w>E#a>ٍd0vCv6ju' mm N,gO^ ֣Oh5[ Y{k4g$?// 1IKL[J,=[WiZIvgܔ ? V`_@ 0t6*LRi$ZC[Nj]As܈Z4YRAR}e;9 g(=6/#'$࿘)C*+CίKuL3bp!ʩkvG4оWёZpJF36ɬ9G>sc: GCнmw+;YН!F,x5ZR]?LaxTQiJ绉5"xVc&f'KéQst mwTuaDxxߦgdb5L1``s=D 8Ο%$|:U V3ݹ Ⱋjgf{q^XOTzCVG:#{w#{ۡtf Ѽz[􂗏b#G-ZT[En0`pxyƍl4DFJP׵iȼ^v<+5bWC/'rw tiLN(Ӎ_R;ϸ }r9ު< t|P.e=-V>:*N ݰoq֏&z=v`] =wn3Ctj {fxkގgFLZ8&AU)̼W?QX6~ !\$%'+Z$t5IL:hOIXVJxzrw++`vth)@Upt5Z\&H{2bvhgzB-Z^oJ*+ px͸.F~'dYL}=oqJ=Lφf[oCڹm_6nd&<S QzH t`xj۟KIQ  1bw?Z?"Nhj4Bx-js@3i%ki5/ @SQhU7ma!>y g8DT- x>8O\`}{8s8-cվ2ʂ~P wkaF=oоViV=LPŜ7f<-fhHM ^XpmweH#N@ao bfc0ؙw_8|kǏ} uT]I,Y&Jzgk-;Mj4<囷'1xn>:Tĕ ^ڔZ~=C?ci_wne~A븝yX Yp͝B4[j"93Db*{ơ5SmDXp"8.Lt/ƅئT)\%b/7~@dDh>Z+Hß |U*Cԏ2|95S%d6i0O^!}!o(&fZ 7v|2;EwR$;]^y[fyFt4n.3 `=` Ow)3z4 Ywd3G0|/t$-ήA`AKgbCŪ>D'zt?9H+;yNDYVr'gu/֋-R:YZWJJ↖^qhajܩ >x*HL]wi'u8||nߙ==MQ>OPzEaƅ{/ǁZ"  i2[%G|-o˺DOO YBiw3փP!~[/b!04QC-u]I*Ҷr%|}Фc= Bu]oG 'U(6g3 Њ#O38_E<kn?yzWg_n=q2DPd Zcqe10"h>Y\KB8zpȎO TXNթ>}*Kb9[S4 `fZ^N%{=hZfAM (Ycc OLeס; \7 Bv6S'fU1dLϠPֵ{.qUoվ=ANcJtT2hn-DOYcu=߫KΊ:}\w3 %t7>.]۟6]kPH_ Ƨ9o Z;7EKfk% T%l)s~([k¦vJL敥Ϳ W*رO8\0vLjJ]K|U/1"q@d m 3McW\OwD`xsBU)Kc F Ykbwr-D^99*J;hcgc'd…Z[UL @]ň^Ԥ.e`xva!Nw5W>\QN P.F$O\ؾlT{(ޏ9v% iqb{"vVM9 #`lü~ mTE`b}{ѣDO3o|mds7]Hl"qij73-"S"<L%2!|PLmrрG/V#*HM@HVC]Y=5fc:rR"rPPU}޴]f eE[d'W&ݤ)iZ~B935\G^81;a]06 9gƟPYfDB=%SP#wIV{fsYS:JeV.\)u 4g;aL?}vJ"BRx3*N/i<'5 doDDmN gYY3T)̍rOnLO/SPqPub2\hё9C΢mcEꋮ90#:kv(8;{$I&N6OϘ|GNˁG&rG840 6YRxbO dmef:/2aե񮋃t{iO ,*Mt ^} p<'zfM@<$K AF8dn]R.Y85XB"Ӷe+p_y5*vTnYsÅP#`P2UO9QB\/olnA<аv J#\ɩ P<2׆皨q@(ΏDJ6Y ‰:Ӊ7B " /0]aSPk ^ЀKGw,˪_Z/ZKyCΎؽr$'$ˤD!}sJ&<'M99x-Uzp3Mgꆡu 'Wn`K~3CV'=.I9KnٟwIJQDhC{zBZZ ;Eo.B`u 5摼Osn]CiQ9Ҕ&yЮ;ߪt{q)LkIC0SC||`.4j7.>#UbRvvern@D2T D0#s*Ej$$(@qۢ n@槳 -Ci s'!z/X杖>FI4hw~~ E, /UtBYvoc'Cu<RN JmAa@@OC_`AĐ@a$}/$ RVP1KDhQ8_$JWw KDKEp0X `ft,b "'}`+hPSD$$1G>sDv Ơ"X ҸA™x[\p ȁ8xSTݼ4k^)*~NC՜['١ds VJk ̢L8 ӑ9`XΤ` Lv$6J6МR 9rӪ]_nށ m^iPTF pcQBA<!!V,E*F,،(!-j % I !0a LhJ! TJ͖Ё0$d@FHA@J-ёˑJ! Nz #hA)#"RbPS=gei$Ai HIBDX0 2,BE H0d`D)IXFB 0x0P$dMpD+U1 ЙQBI1()c`aD d ؄@ $oDH I(vpxũd0y]#0Q=p`! BDd KEDe@YD3PXR(/j&έ387o4iКb&)  Kl :ɨ`&=rt^H&&yYb ylCLyr.$^0ʌ@A#5Ea$z)Q$ZcBBP5h"T(U ,YlE"@`"e@ (M!ka$@!X$!.XDI()̠@F3)h(IIŚhBq e)c@ $ؖ!*-\"6^LW .r .+$ $HHc!B!(s'Bj!La4T+(K(FJ`bZBRJjH +QN$, IE Zn8 # Tvr @$Jm$OtBzRZ=EM xsA7蹰6K jDY "FTA#V4]Z+"HTIk5b̴ BБݻ@bB kxVhXS.P1##AD @B@ .\j%!KAh KEdlh!LhDgT$]`"C6D. gD)4]"B@$m+J)% , JTV`L 3){X]ytؙs-"0\Xc6W? \sU@>q `̮IbmD/;kXæ=+A1`b#&?c?8o^wۅﵱo&㽢/q 7 8J2/Od 0:ͽKvq+f!UX!0 m* !NOE?BVk@ۍd6$F,`@t=?g¯oHƛM.c 釄W~ OU*V $9{J8*p:*AuDv5BֽU7)|W5 ̪xXY*@\e[:L[$9R)峁+SǵB͕8xAqǘ񗙧H1.92GUTHT# tjp -. l@r)8qaj`C%#K3YY7x|EFx v{qʹ輤S`$wm|t?1@0̭lؿR.^߮  _ģ9||`d0iZtD{ OL|QQ?zT"81ww,5FMK3TV0#ڐfR.1Cd5b>HyQǓU99 Ѭ:t@ @G^gU.ݑy89Z$VKQuр3:'wilxek#}3o^.4dO]T/: } sos'1;w1!$ x?.B=Bhנӡ {h$Dv k| I{^ºFgB"\ B}4a, Z1¥lR/wNG~G±\W$y"Gi6sQ{CLL/# }kri~e۩; :P>n2,`#H4#lWd|Cfk;:(靖92`ʂ5l<ȴ>6'ڎam sN7ek& dXL^9TaU]"WD`d:RQ2\,lt̎ǒ28}k 9273&JZlٯKj/uȝi#=K:mn9$xj`']ËWjR܊>8E,VlZ31%EBb{muS{ܰDї5ˆFJ"M{@`k: dsR^. _UTTSfL__i[2zo+ZS~Ou[I;{ NHm΃7ɿ4Tn-&󗑐oỏNiPwm4_ \>ɝ4p -!jiOt5ne8kc^}\&zoAciuϦD=0彿s>|(AS(;tH\4C;\?,!FrJ3~7&!3 =wL$ Ez%4<&4M<9eSL'; VaΏ{~b~6J+WvB{;< X '$qr9'KbƾW"~Q`oZ59;:'wtb6f{˙zXܺh  {1/+'WQfZV4<]ߢbg= lʺ$R8tYeipx&a._wJY܅*t~m[%.@Kŵ_\syb䶰&]j(\1E#b1Kъ[|iOkXN gjɭ =8}R)+ܐrj(xwYQEikh| %%"'jĐ[Ip`b s[RУ,4r* yz@Gu¡} ʾ{&h}K<2^^RzJ鮃.ߝ d|!͖$ iE+$U]2w*amH G\\@ۨ u/]U$F#3U*-+fNѶe GzzV2\@>D&}d=?:6ޕ zkc_Tna$,ܲ)Ro<,MM{byyDTwr}e=`y9lTEǙ +;ر-ܨ`I$9mEl"sJN9#_ p:J4k F$4:I,hvæ?bӏ{ޡHJzfb'G a I|hh}1-p߈\>*m7$K  Ja*3toO6iiS ud0ZTF/jɿ>{:v?ѶI2C'PդrqgW(& ܲV c26H#(seS[z(T+܅sӡ."h~2rdrZMq#Ab'17vzdF6ih.t6d>Y ~]k{?by.@$Gd&(,*pKpJ9riUDD26g0eu$v͈%j4UZUglO|sƘb]Jtg L_< c̶smJ :uɚ)p MIA[ 0A.vSHgoaЭغ)bJJrX݇ABH,#fu0qr7.$&^ѽr%[Sis2ldhdSiFZF^ȟ$tE(6ce=?s8 +i=6gS:}oKDwSC ?C8E%Wּl A7ᲇ`&P˵\ SgCi@)L2 | 0Z+?07;"#9cq)ߖtqɠf-Y9߉&)&*߭pB@H„jB;#@0x; ׳W<.f;^w<O HEL5'L !1Ft7ۤ`P.fJl%ˎfp2ffٵ^1S}ߺD- 0-։!\" @}8OVY+""%#츈"Dҵ5 (yCa`8|ӁZB'D`Mk As W q*-EƜLJ:/g´nq=l۶$ Gn~U]Gg#0:F^"´&hygU\+ho\$|L1<3ITݷk_(?:ZW5<c*E90# E A%[m[A&*ژ+rk [;0=m %o5L'Rm>vȚxH٢V7>Ω!<ҚնDߋro6i "ϔ:A Il^S2 {{޾}Ŷ.wk$#@ݙvHS1?Խn%'eR9zw2МƞjEF&݉Փ>/ʒ[i%eS'zMZY섷p/ϱ/X)V .t-TJ^[a &G['q&M$ Q0T"R_=]I8aq45?wx;zʆJ}M0OH7>LR/8D&2 ܑn͞ڹ%AD 5=KYpADDM!m]T5 sm7iC콖OLc8+Q cOaͩ-ߡ 6~93&qFG/wa)w>>/U xNlAd& iZ&hQ`l7!@O'곈l W\]?P;չ6s7TH3HTn9v6-u/m"W|3(Xb|sPؗ솚T$ߠ3nǓDPBԡ⪡zk R$9TxNA a49+hc,c1}vi("(9u|7T'2x HV?O(Xcq mY}^u@?nC/yz|vݖ] !AcJv&8\NXx!x_R~ 5Q`0C`M7r@f(GF8-@׎sz[y,:RscW-j8g&[@ i{qXSNifm?g*j}V-ߘp69cg$:ح0klqE!x}xIԲ7f'0Ua;2t-&xpDiT8jV|2ԆzM/Ǎl/-#UGg AhhPnt#"LGBO)SN?[JeJo -iETU8IG7rhx۠Pz# sN{;h0?Ç2W"Tp"SH<˨@S@(pjFr--$:ʤ3T˱SE lq<-fN̦hZG̊)8i>YcX FZ2Q(CR5NO.)]NĻKpB6wBHRؔ$a#C{uh߀uJGwU^BGD KJRTȋ3)œyv^b?hpS@O^1>DlɪynW:{ aO'f!=E7FYbC{uTS.$7M. :* #FyO*!r\5ښw@ fW0H 5V=7cօ٭c(,HSՐOSꏂV {9gͦ*(vk7?|1UqX3܇^q&;}DΌ׫SLj"g[ 0擅VVej ө^ҋ-G15*9{eՙ̀0E 7ݟJPҼ*q"W' qsG*ήY/a#pvbp8 KXF@jΕ Eɋ_gLj%-wI 3=k= " IFS,0#6CHKfkGm،oMH),<&Ĭ{,SGZn{AC;$ e/i| _l9UΉ"ǴTuS}]SG⽪竁B G$=1/hhmFJK9j D?[TBeWƳsXd8k4f6dJk{$$>oݾBld)x\U+j]Jf+1Ucqh H OU] ַ38\4MsM2fma~;Qkc獊ȆɆKLl,1hאrh!˜dOj'fCmã /$4߻w5߭Ќ*70OT.#SaLgǨ7wZԡ<>tC'dմ qk閊YܢyG;$2kQӤɽ\&~uvSOzsq-f\5V:Z/D$m'$R/e [w}\+Q̸SmviX0<&:Ů]tFh<#!5g!?E#]$^ jE?%`j {s%G ,@" m"`gqŽfLʟdEX Xuߛ |i\r-ؘLzyjs-v3wb| y <LQ6C;~{nES㰟n 4Bת60S\t*Az57Kfv5(:5ųgϊtlyv'(-[fʝFhS(} WFG[#{k^*$GD)ᦑVQ*BZ8[v_ (_җDWS$O2QQ ! t"ŷ7c1)KGfqǖT \Kg4¸uZzhQ/PgĚ66_S)aiٴB"11*k~SmFr![R hrơyrnlA$O-'zlmm?%^.P Q.yC`2oeϨ-R/I k$Q:t0 a&;|["H Wp_T%cߘ`4Gg7,O38ϳMOgX 0ӴlvW/d\e Bj>H},R9Uf2;X,- 3TGs#|G K<_=x#>ʄ$cb1 ?Gܮ#:6X!]N=߀a-Xq{ O"Hx7]1U'hLMc?`MEbquULyQQK,LH0XdTfE/gVz`uԜHS{gIiqXfnFpanL؏X}'O|٢>h Z2!.).9Qx~&kX]ZH6;δBAC>ҳ|+3s*b`@[j§5(6rm7SQj!('gύ> ;nOa)JZi;e -r Ͽ;#$$ssNrc&=Fh!L9ؤ$g$[hm^#6늖EܬJױӶ '"\ڗY{}P>eL&.xUkKSPAm+F%alCPz ]R9@mk7&Dp9 :*~ha.. =޴4OefU8ZƝ9*`.ֱLǚ}}cjΌ+pȶnSW|[uIͼ)aÄcu%r֌"ϧPSIt?n{춼_F sZvHҾL5/~(n.$t@Nh"ſx/gΌM)"c/i"w-5cWv_j0ژ>=xxXJ ?dUiBl{7:_ݟvq==B{E;M<XOA\mه bsH 7uxʯ)=cLDC-o|=!eJ2|n󉇊gNA/ݾen/yQJ"l_8`%pޭ=ywCdsg)TO]ZvәńHhgtA3ʡTôթ߲Li#c*\s;ZՋi"" rg z&Ǎp#.n)ا&I۟N]<A"V5okx+C{Y9z+Wkf(THyv4U|{\@ ]4EFYY•Qdz^S7J:.)H/z]o"isZih;4G RET?䞃ԫb._pR-"=Wuo.*AK3 LbV67A%ג~ts~a}:ˤ\kS_6ښ{F;ʏ shG'=Jo@#w)$ʮu %5 ɛu:W^2zZE-$n9CW0# ,hu}ߐgxK Vzq+Fasضϴb8]2^Sʲ[ `gtHnz?=@{e xWʨkda@ !xQEcӹ5- ոů5f${vʔ,;lR'?Ը)([ C ;+!pqNL U +!Ou^&%Bi / sc^x6œ0T4ЮdjJ*&>ޚ~;@%GVʌ$u-S3|? 퐬2C\`mYog΍6īj%9W<*utW+ku%hق>T{G]}=r>7bc־-,Á=̲p_2f1b ׏}<?Za1RxaUj3XJ\]Lxp$!tImY 33IluTa^ާ9:?%6_j fEb}֣g";U27_׭rNωOj{uZ1>?O&5R#v=oC?\ywO8'tW*`=)e9Ԁ$T%}\])q>_)#*vgF% r Rv( p,zv[ Hl2Sq$3yzB߅_a{bݙR1@:F,l)kf!މcAÒIR54? .wf \MGAVw%[<"/:̘`䯈hoMC F6&7 bt;V-wTNܜ "Hʠ↯Yl*VhsBIV&ozçzh 'QL}5&ɹ+c $32V]t,_< BL8™24볚퍦,/c ݣe bg!M1 -jƩ6(:cXfe\vw!@>}!zl &j6EL)m8/IGO0؉9{jcuN?^c$ݻqUM?'Gadg8qف`wjw^=i05 qot/>-G4'TU)@Waiؿ1.Pݪ p:@1%&;a;2[w0i{`,S R-|O3aB)[ gK"@sF|jXǔ?SUfh6W MԠ,^rKӿ>`I4z÷!<$meԆot Eu Kr8+e_Wd1XBɰlG  ɦe- sKEsv:O?z|a6ٰvzKNO5Q. Zl$S%3LF$t㮨Cѱ 4( 8l'&W4nMF֒%d&f4L5E[pnG}tuyPu'pE'~8°,( `3@@B L}23|LR隼Hm#}lJ3v(U D]DLYT"$gn֨%9w|Y{4h_CJU8(xAbH]K O&{':D4=!Z5%tfȹH_}eXW_`zb-yە~lޅBl'|ߌd+p> L m1;K=\JGVIJ#Xr:$8i<({luiA>Rpr@N_(jzd0KD7Kb{ {CzU9#/s7Gl>-HF::T5~3~a}묀ԝ7;Wy>8UwɈolaq@*?w0CƔGaO+E)6.X?'{*iMuņEjyS݊-\+˼.SYKڨD@cHJ_f8g*QUȈp#-@Y/<u$_`H~6ozQXHS&='QqnԯTQ)i{76 0#<# ztB|@?SIO):׼EM} [!øR<8Tg@&&ı>AXy4O̼L]ω䡝_o=UqtgtBl̛Mg`F@k`f%Mb Dɉ^- +B;qm|_I`j`kd&FL!FK} 9j3#f3la<6.k \*Βa[UMT*xe#| )H YkS`&lVPM5.r]WŭmaL^y8/0y5"P2C{s0`iw:; +6oSrwYƪclĵ~@ӕR[VU$%ytnRiVK +i5V5͘= ;󐰞6;_؈-;B4~n@s)[P)_]z}MDұ qЌBlB&jȯϰ9c{XUF8ajnM(xB) u3H;i*H%/8SJ6xX K_✏^dG^?%ogl0;d[Qh[nF&fCi"%rVeÄ,5:z)^)O,`mVjG+9n}k e d;/ݙJ*½^';r!D?pikmKq5ۂ""MF*則<:./\#z۱PlqBuE|E29r=[慉ԔCfP`+b`JYw2$V[N`uGK@.S7#>ȅ5V6@\ (`,c*c-Cѐm 2vQ|²4#{v0Z~"B|۴Gj4mַ:Gjfi!v!}&FX\Wϲw$|!I o߈K vPsl~ S ?r1p ԙr*3 e8F w!⺜QZ^T`]B:TQ߄tӊ5}pI:yIFZRԼ2K^$H'T Y""'-R)|`.'w-b3Zg۩1cįAZ8y8QnnҞΙւmhm?fJԝ|=e 8ezͨ+mâ `6T!B(t.IvmZk :/S-|IK&}tԝHTH2ALQz"w(ȏXT78c^(7NVhe ԫ$ڵ!M{SXR?(`"a3BCed7! L/A C6Tc\2AieX#jKTPqeP3{PgcWdY@ Inn'Xvhb/v%T,!Uc}dU:BmRjUgfhv= w7Yuĸۣ-GsDi$[=#R(dynjaQ4ҪqJ1ÎFE_gPP(#2ip>m?FŰ[QWǤZ1 %UI 1l;=}ʐ#M U0Z~p,sUBvmT;Hkr%MrPyWٟ6b#E4 jM%=L!ٮS 5< C/c΅;]y?)+n)2-GBE ƽS!-6 e:"pdv׮xd؄=G.hsfr%֖cw^{0ﺓ_y(Xc0oZs pQƕ$u8+ɋ2c=\Au}ukwn;uJ<q!̄m^βg tt,ݾBxp;0]]GfX*ܬb}>Pci,HhBH|xՑp7O56"H-YQ |6jR! BQB E;˱5 \r8(daNۈu%Q9LCTʂǁ^s)+}TCDx0)C|Y{m_nq{͂:(遪'A{7̧` þ1>?;hM&f?wEypc4qg<=YEus-3%?ҕ6HbhϜE15cq'KWƉ XĄmPAKT0JvN7>:@9ADY7[f.cl NsܸB $34"ۃpm\*B*qg=0ZXVF4 6&”Ds0']ˇ Ntni ¢1BH!] lW#/a[Gn5 o֟׿8 $K~K.]IBb{Z<=SBZQ,N:TT9-q$_P/Kz?Q#4M%E2 tns5 ;4}wL9Kt}3˅Vj(6L)B]dț`XCgǧ>c@Nv*z7 7m\)/sKK\l 3>))*EOdoZ*DI{B%7t r7I:$i(N%9xWwx }3 FU|"17wO8 NY"vu=N>ѬݪW];%=!jNC6P?ľFR~sZ="Ř!2 bs۵W,? ښѱ—ñ|S_%`yQoh@7dmGQ㨭5Я8w{W^6gF17sEF >Wj.i)aQ$鹳|7> Yh= Ծ-z$Bu(OV+YkҞg9}H坠{ϓ g1_ -lO5]#pk;wEBbMp%wsee8Fef~°\޸ iG&g|F}H<MsPS%`Y@gG3Aw= 3QaUlaT%^]/$f~~aI0VM`b!*ڌbUz- [d}M8cti[1iGwkaޖ(HGg Nb0V\ QL=F~tZNNY-A[( =Z]n.޿W$!,{-3FLʇiF+ް"brgbk-GRgvT`D.TJwh.PC sƪ5Ca$&wMK,8>K8/N=wmC*)!_&&M+.l2 hr}. o.C؃oP]F*TVTY$< wϵYڋEƨQh_P+zػhջg"kzqJ|{~3W ecǶK@z$Kl(4L"GܼK@ dK=+ +њnMa18q~pPskJ;V8AMS13q#x"ᣐG0PXah>.#0U!S:oss8_ G@/Cx؊/7-N/ֶ+l ʆ""-x ' qYxlv _#rGQTj`2EqI_B<%^C2:)eTqg("ְqs<+Y~EW/| L-Zx#=8h<<` $8heu1 "Ҹ 9 Ø4=sӑRz.\n]TAW|{.XoBϯ勗CP*AƁcS/1P ’kbPj{#E&/c{Ւ3_}ޭ*QͲ)ס;Xn =NTގ<×HRX2>7q hUqֱ{Eڴɠao7zZoB2i{+L!a'b}ePTZğ ɬ#i ݸr 3d}l㗋}nI& d5ABZFz20Py1+?e0(*{N*GKTz67+@+ר5UZA+ݞ _Tl/ʹA[]7 $~h|}6|S-O+DfGuA3׃|DoFaaY{R,SCRju[K5 Lׄ\3ܳ覊^㬥0 4Z^ sDI| lF.O2堣?f8&`$ĸV+ҒiVS{6 qܗ].L{7!EkU[$qz7I5+DwM7#ābEjzߐC(QH'(_`~tbƶ9#h-1@£{o'IGcxGDN*'/Pw""ه 6Ɔj!q}%fqԨ<RBж&++gLJ.mx<TjN߂﹧;*ol80l D_dG=*rIi;m mPo fO $ ؂h*##?/4G0Snh/t<է`(ONʯ8SJ2_ C#^=甩޼P*8y7! "[?uXI^R6qvp jc^CxPfG:,Y&|2dMg`KaB}˿ ܵM2woYY 3YFI ?4 Kz7~|ĥOtb뜢g EH{J5Em˗^342E*OjLщN0pO*p-jWʥ+/ia{d=ĸg{]_GUŸ~YkQ?-ߖH.m];%A7fs\f@@]npm=IUR\9dSqrnG0Luo۲\$ ,T$:ܢOxRĠS +K4/8J́((|}Vbir%l_ ~dη"kezI &ēZ)Gq^fgL}1$xY]P "@%U"ىmu59v!L{AVߣC{<n n% ہ\BP'$x0LJk-k<Ӷ3!Zss_K ȎJօ&?zP| 1ƑAr,T%Ŝ~;'AJ~.dIkG~+!_Wl{RYz88WCS;*U_zä# SkлsoyAsa{hYCG{Xwqy^iӳoYC35ye 4^ZԏdB/&8BO"H%-|]6 {lGuvR4H4ߌ`aUV:4dR'\\$Wp y~QC1;C%~V96::X߰vÄ:O}$!f5x?Ӳ(Me ]~Z_į4tZP)/uqȀWbO9{నGJN=8ڿ?{d $i 5@ϕ؍#8c['޻p"_c->iRoLy^N[`p$<@-]LN@M Scf0* y +o9S-Iܟ9<أ:(kelM5 @@<4N|=ClI{OAcj6$xx6DfxeP^+qyȕwOա%q_lfGYa f[mk W4>~WQZtUeqܧs{r乇( nKyn@YR>oz[Qȶt#4t&RxpZ ^We4*5|/oߝ5t#ɸH<{ 1-h~ O8/ED1bE PQD4̵ؐO`JWo>'beT;)D+FD,D`OF\j0S/db-Ji؏Sc.n.pم as)#[2$Hh0t)=44+M])`$a1EK| "xus7?Ŭ@da.&YPG[KT]*2!W|ivf?Z1ߟk?sy[ ++9M>hb6EW/ y<_Y_XI]+* ^ mp?!HXn/ WBaed f=ᓇ > İnVer(|/%T%X$b?Ϲ.`%QCϟ^nu#(=REȃϸ>ī1UDs[qYv4N;:n,f]Od&Uz-Q+_z۫=e'| Ɏ*zᄒ*'xg#$ #O i{L$x'ʌ-$k=_gj5I)*4.FE`rN&K;#? P_Ψ̿Jlff@7EEcJmv>'Cof`!S߷ΐ##gt&$_qx3 [Pi}^0 ՋxqeV2?2+ݫ VbS<aP8B~X~^-!UGyȨ aҕm]%hbB0Cwh -6$ʦ==t2Qtu'F:ܫ%[D}baqQN<' ]Sf' %Fn&Y+35q 7??:1!<WY2q`KdbMb+ݾmDl?pb. $tS3? 8L5=hvoA}v/560Lײ0f_tZߢe(bḙ 72x:=۲>Ȳ4/ |A!yə3N Sq2u|_-y0MI /Lq "yυa.VQD,L:tHq dta1Шp j{_ucLC9BL|֧,/atZ$5Ɵt8DזW/ pSWyS_YE [. )s̾eVKg>ՙ1V[*~s+(/ w(4ƿ$9\kh1:u\%DOU)_V(P SX?T u6k&xytxPY-;"Ee-#`>=U(i.h LOBb&KVUJ<*n诹Gs*w3Y쓄G8eFto4^[OŒ,1?ɠ3jӡ5b$B$k BE_nOZ+]D<kƕmUSr J$`T$!edHd&;y#!1?/Jf/P,z㼏gO'E~wj7V /]X"iV9{<.hߩyn2l')}XfzNv4a6 _&nyxKIr/s'! #_ Ԗ*#}^T&F2̸E8)dq]E ^VJ n`YݡKi]PV۱<P# UmA{PO":i9+CKш冉lCCkY>nᆞ2oJk̖ÃctX{\r YnButPpŃWxiؚN>1"{2LD<`yPxuHs |mLoNɌy8o/F欪# )f ?'Dwp$/ۻH)I?gM9I>yKC/d<"ilȰezI4*N$Q<ݑOw~, 3^Fgu*|׻ﲐ}it=Sѷ(2̱c*Q٩Hju+Έ9/~6f,m35]El;uz{JJr1Rm{ =#ct-˜.d1tt/<)Xf6L"qlq%vȃٲ7Abڽw"aRW͕AKfڮ}11&(lzp1aK3:~:x6~{#pv1X?!̧S8x:WW6EJbJt|n _r#- `wVcv0~W tq/8J; >tƮevl'(m}wA噚zdw̤DL;+]Stu|Yr<ƂT5;F tfN+ _6PprPv] Rb]"H.t p11-$H{U`;/$f(?9c@r=Bڤ\?OT/1&mBE K?}~#Ӫ#I^oޓ*7L!$!l{ U ^Ae{"^{J= N,cl*U'[km.JVLKvoCsbA9 ЈR=QKoO{TqEz #T9ʹ줈`` .ʟԒ^-_ǗFvt24(v]aSB[kߴ wr x6oD[]x V˪\X%GT@تOHߵ?>uɣ]سӪ3 P_9=is<\.Q?]ؤͷ( hP; /9:tGWQ~KFXI6ޒEC(B ڮWxzQ&7'uM })b0UxO}5p3(X݃v8fAv%uVrQfc}zx1pp.2@q3zD^[nQ K' 3̼mb Bج'vjq o4p3 ͘z4;abMwՐ(.[]H>A+GX%mCtG]gG뛁Lw;X5>H#EӓBTgΉ;W^e,Sw6Ip?2$h8kNeP,^<%˅$'-Gd||9fd"an&wZc3ass3DPjd:WM79;VU3! \qmMM:ܐ6ZbH|1 TA.A:C zH Ub/V'ԃ1^ND+8iDb Hx e)]7م(n;QkHep;ПF0K9\@}e1kH4F0٤':g2qĹk ShDlZIfҀeALbc3XY^ʼnKiY (oYX|N 础ӶYPM%1@ iRZ6N0= tJ"r/,b+kHwiS) :Ey@eI:$BA尙&s&Ojק$4w}53) %MiڔQ rP\Z17ݘWz?/%GdPC.PERkWw‹VQѾ'a.j,YDJun wu)72张^kZݓ M%5[ZrwAT%4 ~ a9A%~ njkRqdtt/}+q )y%n)%(Uy"D>-ɍȠ-H.B-( sTVP%;a+,oM vg~rHU0BzJ񈵴7o \>IG~fְ+SI|=}ԩ .jz X]U7`-Vt̠˺lFpcqg;Cɲya ;T~}۸)j,1X!'Aj7m%ҨE~F138߿bvCs-ˬI]Q9P(I-A #`"@ RdžZ LFo#;M-4CwfeC#|?ИH2şT。YHщcB- 2jCffg9υ47W4VO8]Wniwp`ՏA={ &GW,c9C ܴTn/x筊\x#5,C6>KYhADO88 ~}㧢bEx?R-wW{?BiY׷iڌ@~4{$@E M>.@O~!1b ' U׍{+DėerG0*_ђ_dHQxؒ,=Ejo ^J.hr6'UB~Pc ~?edp:::\g4^V͹@WtS}*n5 B's{3<NŗU⸙dA&E)!sNeU:nTQڿ6x){QO39 ۶?ڈt8ϴW /KVeׁ\'~l>J$$` p-]|쵂(_=1@4~9f07a:NV4Ӌz}yfEES-etoD,L14Wh-Hu'ĥL+|O 1N<蚪%&x|  ( c|#Z)ݴ^piWn/dХYd Iz[^<\Eڛ;+4䠠)~㍕ L.<:?d0?&C;q$mσ>~wLe,-g9xB}l s4YnF۟d_GQ:$A1 l x_{hfJN{}Z}T[ǰн-;8 xwR:o>{3\'3iˉ8H"92KnĔKUnߨP]S-rve輯D pGW`C *'څ*87}2" S-Y7om%HTÖk=M RцkBop!CLÃ>ɛ'0*ʞ(BzT%lրCdop3p9D|O qn8kW7U2!9-h{Yx!ۘELd2AY XZ?,0(Tu:mC* ,nZFZz׬N0 UK¡ƃVL1"?{jpfSOJ4Vo2'"gDЭD0膳/ѱPpŪ H$,ۜ/^/ZR<5jELD/Zv_7D:QcAarse% BR@Z8FP#0a RD!W ID T29"{"\)W!hѿ^L 0Գ)E&l .͸x=̩m~gIln܂Wut$Nܨ`*rA}."@̯_DN ,P8 pO$ k@Gr1 $>8`(4o-{8\!tư֋O7#k!TН:0U'N:kqlm}[Qpܩg)A{m*{g䵫}r|>[.<&ޒ^C;,RCv&vNqʬp>p~}5&KymW,Z9`Wxs;9Ѕޣ$4+<}8뼂@^K}5>Qa vʲ蜉 xgL@ٴ?e(ˏIFCzѵCpS ;ktd&Mz5B[^5ƨ2UB9 l"kqe0$G}FUks+i[jÍ+Q0˯7PT)хg ߞ\jV֋]JfƿfZġ>- ղ6B&o;W_ %> 1o9/+P0q$箍wᘘ&#"'0֛>#fyCS :jGW˼@Ώ}RK/(-D,]|eUT׼ѪH;x9#$xd_\Bgq FL:[} C1{}i.|n;? zdKa1w/~I;g /c`n/{ZAt1yK4/oݥƌH- ]V)xۆJko)Ae f";TQ0XO|0؛18{.%z$}nvËUG 1>n9 Ŕ=\-N6= [m2a.ɭp"5<)qD\_'N~{Vvww1&IT>K3Q2 8Fqm ;ͫ0W9XEWC[%scj_ F4xt39MLFќhMOlr&uE?c2 ްdvZ8 dT;h^Ъ/ 7sq2O{Oqx8hؤ\?Nzmn @_h#3O4)Kvp$?MT^==p&#MH˩|$8>;wlmz2siN2" F-2(:86ez4H4 bU[_4qq܊>d|tzd'ӟ8t4,Ʃ(oqEЅSrIӮگLHc˅zF{H [fcށ%B'Gq'( Z^ܷ^C6mèQ>eVJyEͱkW-Ka%_L lubcxt$ҾxV6=نAlM%NXУ&H0և@G׽. -(NICgK X[ c[1vm t(D9a]͇OK(qσqyB;k5cA-J4:BM Ty3q&a0{>O2Rpe]v2~VF|W28~ԆġE# X04 T~mqt^|_Dlofqye^Dz{`.-?}\N'c"Eq\M] ܴ]uY&/Q`kLg1`K]?0hxzs|Lgay܇JyIU Kq0@^f n҉K)P 8x6:%W 1*~8q֕w }7びҗQ] y""rGx̍ax}i(1]a'T̍ ֠Hʞ'D aA8jr޿zQͲe H#iR@61~usO9`z}b_Ax 5*-I\RNqúr\HtRCP1&a$L#SI:!,'l5=xԀ}E٥$70*4Uz8(2Ity KBA6r5Bd+qTʝ`Pl} jH fӧUvj<߬c^e[6/ukx]Z}ܵBH$|c1 W]=Ag?kv&凉Sypkt$86yQYKt|߾!4@ݜsq0Lɯ}݊%EP%vXNƖ@&qA [v՟g1rD`8n]x(a`@ ?!g7 \gY٘AU!c j@wY`}&D?Mui* e8UB%3Cpx7k aYK>G;_,#ؠ~Ӧ}mx]o45}[ФJtlHY11k{ cC˻D`]*#ߠ /IoW|PBވ SuҀ$9%B#$++WyUlJDJS5'ϖT$M.m§ڗԮ F{*1 8#5?jj|c.'= +[Qpibv @rpGc@]| &Ҵ^,Ejpx$W;1hZ{,iǚVmld Y/qAiyQ^ry㸢O8 6;cn娢)a\cf%FS-a%(q%6RתtS/)L8] _ye: X5@$*5DTd3-zB}KIWL;rg3;UGCQ@*r=fW:njOFrG/=qJj}D%=vp[mVŵc&W7|w'bIDgM8 I0\[nvo/%\3#z?5WAF:9QʝȢbO}wHkc X>Xi\,0]zcCGWP\0ӒT"#"Q0 DUM6>٬WS%Sót*ZMm0$/ 5S[yBP~AA> UQ19g\E0[A& 6 \|s?tR87!{d殝޽{ IK픏Ǔ`""Ҙ"p(}HRy1c=0[W1*O{i p"4IwʥŁ/ٮ9mOs{ף߮LmR-^H"5nPW@s߻¦6V!l0R/fX"  @ bj( O> @Gq=ǶP}PT* tV;`PF(*芢&5@E E( %(` U*(P~Pfvu#ք39u #AZa|)fN! JܓNlR2D>_YWw_?|ND@{)lnZZWABѯwJh(!EO5;Ce W$EM 1rJQUX:rCݽt [n%pw4u;9p+@ ?v?Kzoܗp q8;!\Ą B8x.޶3k T"c(r}EHp$SrˬfR Z us[r~pFK\OE"$ v@N&m58g./ ~7.008Dxg~!"@U; /~_ ' , ""DFBF”5(VJ 5. Y$ dU*ХY VDUӇw_z/#5]'Cq-g5(Csw,DIP$618+׺xl$:Nt t ^K)&1WrecuI[Fp{ sO]jUR8bbO%Ϲ]"$!@3CW7@a$`Qc0? ,1t6X'Nu `NkX"H`\ HSF83_Yw7@ozy@rHvﳭÒ!]G;G6o6?DLlApU 8ga? z>v{UBE)F8KgbbJ \BxL $#BkuvqԸ'k}odF(?z.;)} h^֔5'lQMFAso\rD=homfd:9DmFt:vnlHvRC~f9?sGx9nk8%qv縕\ 0H,FXuFxB:ľuzwakԠl9|_`_b| c 6,b>Yil\XXhl074wo5n 9^Fr; L aHѨk\ z5 C1'ҭ;3#FBX[SkBE BҴ``)G`zNrIÃx:ڊp ii $5ח3a60d㎡fh@ݴLgK \8DwЙՉ&n }Aok%Tb2) bH\THJQ+Di*JQ*h]Ẑó'Pg:B'؁Q zʧ/ >1M)81 -^ F)񅾻rՏ@CPu(; ̮ܨlVcǷhE$"F9pFqd<<.ѯ/Q{კPA^ >`V>!#>a>@1XB+ȭR["U/imt3W[~P7 DD!ERSvLOtiZ }{8揜d :;6BOi\BIe<X u&V wNn">MȆ$@B{|S] * HAy_B@IQOˁ+Ֆ0>aHIHY̨[|px>-g mθ=aܲj&vikP7 QWG tw6 ۰B+h@5q#lenS;@l¹Y 4a mjୄʼn|k9UVFD-;9$S:aV"a]bMі-֛2| 6 ]w 6 :ۣP lBLll%'BEғ6MLt `cЙq໾f69^6ƽCXj l T}er1hVEmw~ټaw?Ϳw' }*ZhLSRclBC t699!9ł1;/XFId>6&Y۝),{9njSMU:ks$`xsjb+Ii4[See6 `Z ^p>oo |s~YICx5u iyIS>tЩLlri蹺ZUHpnifwj/\M&7StlsK>z-{a@-& Fan 7cyBFàpFlx/< !o (Cp|Mcx`bf(e@8oƎ@֙gAYQ˭/؜FNںj8@rZ;wfcmh*g*V' 5f0ʬZֱ:7Vsy9!hZdfÖςDbEWP*#"0X@'W<0]Fsq6McR16nm 4h3cؓZ?ȒMaPYtbj,YN RDy[U؍:3lUsAjplNҹ= r%ׁ7mI`.Pqݮ#sη`KkU ΰw6}v8AS\=s$䣶:mx5"8 %5Iɵ,pav9Ia9sm2{8kx!cFEᆫ<4r) &} 4lE, ̲4mL1 D.~մlΜ! ;G+pg 8f30224qLW+rL?Rnb ! ?\4Ch CGx|mAu Z#*,<l@8| 䎽= jYs#gNA0L0KlB<iحXCES4lXTaYc^6XB:9d6~%tvFf =qi48|щI9G'cGcJgLSf,$284vulgk6 Šh sl4 ;X.M Ei1&8c 3-kɍPBB2K.7 hi¿'{wk0.Kx,yX%Z+xv`,]9c9VbUVt]7ɂkxA ptA6c`[ቭ+CYUsxqcV"j%'\tg 39cI|v~ms$fa&<S@&b͋lc|.m&bA .^ŰxU%(牳3&;&71b0& %HmY Z L`VZдfbe3u0$"`@!!pI,7n6V 5  1wLw0UPtlCLJ hb`@ [ ˖N`0nWB:"éf\wjۢrhHb+]gN v61jsvFsV8lѾ hAB+DRp H3&gײls-Z ӛ2q877v"! O/wr C?꿫oC{Wt_Y8w y=GD] f6)v'˦ܥq>n9ZD7ikunR"SѼ #Gi 4XxX$֓z5+Եֿ Ɠ\6Y!cg7$ aHQ:P szsϫG^@&.ȑg,qdtz&1ĵWp`t0?!w̩:{0Z,$_ʘK<.5XVsRuI)]xXl8Ð<*lA Un S}0>Anis:ef]`("#NqFv }~otJƁ!\ "Ӱzb-_dHzJN{=n/)͸+u*,2wedB OGMx*k<#f @J3sk Em{!:Th VIoy<ķ˖=Ey`-WܩeݸrcGl`R >~FO'xEm7=Q֗ey[| s kwuɜ-@^SS PfY&} q?szuܿAcg#d+K$`A?|c̝& _wx&~(ZlO?,Eջ˦GܻnԠ*`$:QfZbB|-u\" XLĝekU {7-PvH(a̯_Z+䜠ӖA\1])398L #P>^P")|3KHh[s8Le Eٷ%T~n]vRUgo"ֳ1H4W`W!7Gկ{!G&ʚ\Y?7U.󴚒$f4*۽SAX4n}Le00MZ90{+vTM;E7=eFkhi#,c$0;mx63Wq^4KEa(6NJ8$-T=L|nfO~81[`Y,SF1N+ZDIM)Ji9+}A0(ޟlGLe(<{n0P ]i9@-O?b`POR7CN NJ!2*Lm?33=Ƀ,0ojeVpn.gb򅇄'u/x?.}cp3=/H?!GC`|+z-~|!y3H/vQ ڹ@yCU+*"G1xJ6nfЫ62(R$EŦ lk-ZwKN<2G. x$I:{p(G^2WKWhmnWvZ adz^9GbP/hJ$3A8t~g^[&g9 |yثtk kYS2>8*oƳ2D1Gg$y9)R²鸆HL$:$jO|>s;FVx̹b^_ƨ$TkwBaUj:OYTU(!z6+! Xg~,Sn5)o,Óm0뢔q:,+f.tL`ƐpZ -!z<4xˇK|H 6 &O܈8|Կ„7G+ {O6s Ly'9?qV^(_OfcO=u?;Wc*rhUXv\C5f @;;ͦ#j-^>Ǵޜײ{)<+Ӑɛ~fZk1F Y])N#Nk]@||ԑ8NSS;uJID@~ه%rjE\3q #:[ e 0uEJO,`4kUc/t*? kqL0;B9#̈́ϗlbv]8-uy4S=E&@ƅpM[B)'_<5]ۍsG//Q{>`8Ɓqܳ)ߖʫ%9n|=}/~)\*mB~(k)I.]:=Α,x}Mcik7_cosP<߸ \zLMDRSޥf QqZU 'A?'~8~dt0R"B <_GCX(_B=3K_WC8jy.z!b JB !X!ʑ1ٺ滩 '׮ՆY͎osH1:Q^59eY7wp`0|,6mMO_oUN P5T_;pj{pp7!Ȍ Y9;AFTŘkԾ!4{Σ'9܍% wf'\tM p ףLz3lvM|(_]lrы:mMG`M9jYr==]>(|Zy#"@cƢґ>{])X 6elaRgWup7h!1,bYǤt|@Xs.D!FHs,nJTj` !VwP|%~sp<`0Ԍ0}o  8SS ]}q'j)f DI'Sx?q?Sa[ .5,yeqe b <*ځStI4b@4.{ul7H)yW:ZP*VhH/BcOylɁZgVO&%1 T&$եܢ4wuNq><Ŋ@& Jr2ȏ A""  |>˱JU)k>+q!˱厊1[3-ƽ4 'hiQ"q48M5qj!Զb -vȿmbσP j0p\5!\3Od;x咢jRUyqbEU? }VJGm~ͽm.{Pϓ=̕~ðοF dxU0haz}P=KmtơqS7 &"}46rgo ?voeNM*Agu9w[B +WU(E1 ,xHCuQ A¶Whsxwo9@ ?OS؞DtR" 7٧."R ?_lWo#@nrMYc.K(δ^`CCt= N;߯1D;ʾ<@ y@B@m{eZ*{fIz)NPwm!|7Cs@v7uA}DqA*'}cb" éMOD."$%d[Ϳ|tQ)[D=+#5 hi5hq<S$ ]r2FW$x=%٘;At=T[M஖czyÝ,R]ɹP4q1s!d?ױ.28ͼfɋj5I:㔈a1D47pzZz8(q !.3lu9?V)a;;b\5nq~+S?l~~m͍x]# WZ&9&ZG>'>fH* lJ\"vh}/ 2M^m#^º׿113К&jdC]p[*(@@# a3j\-lRgxONfY;W(maqO0uOqzGNMOt-u_7d %љP/0_܌,q^d+(7\#F3!XF'] >WE%=v?Q-[Τ\N/de߱S8cE:,ѿB?ԐnF'GJ;!f&B'~’C~eDf5ћuoYd`Q]'1uOSZLδf"xkV.unX#[䣽+츨1\w_}c\7#ZU,/ncQ~{3 ی9aO3MDw'Ng\o?i=jv*,5m/pivG۔[,GKMg6[9Þ΋%D/,v.wH7=ԴaHb<_db<{qg#D TFAH85r*g8+;bpphY)^+4J>6z\΁_F#@4j¥E RwD+ل?iߨRa\~V(NSp෦H7GbKpR"3Afri56P8wZföm nXŽ/ g)%=hr&s605jZifhH@h#tM"?7CLOQ<3gCIaYU Dq!EPʉH2TZf~}|14eEVƧ(芰 XW.?| *ucȢ@^wZ5-sO/U @cPmQ(+vZ‹FJnR W[c78Gx1cD4Cߋ<+W8 y*M# 2s {g ~K1'(S\ yΡC< SFV^ipVYGS;'dVemW YgZpDy\)ϒ?D]߃8dwDΧD|>!B \48RBQmN2,)EؘFHM|s6! ]{mArourvNRzhj-}ApC46 |IJl{26i&G}x\ƥT2I#UNs7WqcsVtMo+$VcÃ(RZ|+~K'56g5U[2I Z=`T"HA̻CqK^i(N=1HR-BnK%dtYQOeypT/ႎT6aP7hzF,E{ SšŔPp;2a@^a@bF8hkpT>X1~ 1bJ !xx8Aq_p2"<)|CnR>D[_8#Թ`)һ «#a3KZCk1rmrlF@R&&@ ۂfpnA:4~ŷl+*5BD`kڄOf)A<ed)ݜ@;& aUk5@?I9ghs7ȍs=YzUc:=GY{>㉶f`@:RhPSmd t[8nksq$o]<٭)o鿆o:}Ϝ]Y CQaג^ ~-mT9x\emPsR%IErFs*&U[RiK@M2L\w@vӇ]P?QnǮzpOx< =yɑ nVA40">GSĄXoL*сzl R8"eڳ t#N 2Su#fRLdis'A %0)R5BR^B8/e'ϘI0RH&$~o\C@@ʈ2zqH#PE$,DiC &:o" }h_#!A!Q {A^NevxZQ&SIBjIax8blV{\w4))=aQ6,|+uNBA8 40FB#Ѓrb02⤐P^ C}(IBwhLkV>(bwE@?NJcFZEb^qC{@N<#IR ʖe *m(C'ۼ35gTCjv+MLF!$hL:VBhi ^쫶eQigGb3Lx<΅p*HªXBjLz/sZA~Ȕץϓ'(:i[A6(,NгTNݘsKNcddpd|+F~C#(N$U W,#Kî;J<M~`K1Űv҆ _wUd:*!? Z3aoHhJgE$G^a֫]q.!:cmɪ~"f|cxq98T0M ϳ-Ikğ^мϹ"kZȁ3fWQ(O' .ǼI3b ڼT (h3;LJ (ډ qB>Nz[̠u? Tٻqu`ӠRBM"6F@ ySNm"c 8Nu5dstёuw,[Ԛpղ:1 fR'`1<;N jeýyB aM " MF5@JhիZ$>sB¦d=IOLjvvJ@L-(s!d ŸY͊Ϩދ]ȜtP]V<4:vDK*ɜV*15lTD/lX4H(AEKij\ L!aX%" nQQGCN|t$-1 qGfed4Et/;j\3|F:?H1gA<<iDW7RQ7trRJ1̽; usFe2.ػ/ OAȔ4uf!>0d..ӈt\R(]VYa5׸mi,c^W٤61:_(3z8 < 8K7ʧ[ֲ4/Oq$mGC(+etZ$ Ji5iGp3 l5;Bv,y-7]RN:ǰ8Z dmk76΅sԡu[t-^bddvzb_.y@D2;yc6gILAVI5#;v3^JKkS\jA:z|=\1[ESfWdYvi: [S{:B)nšx__b t!ud`6 DSṚ:a/^ğὠx,'  QHd0B-E'[HN&~)%P$PEN#Cy@ j{VzJ_ͬv8+p~(\"b5Vβ |JXgv|HKP-۪t>UF#-uqۏSk; -+ .j4 I.Iϭ"bAu Oy+"RܠG[ItT`~pL_Nqa.dΞm" M+ fyM .,n4T LA}~5%T:]bt0ή⻓(奿N3E`cb ι=1 }b_>"pxcyFaVb>{ |9?P6P|\eCYS c*w1 a=HJ,@Qz<@:>RzH|/|).{qMlԆ杋ML)v7C{ڝ.f:"[ƋQ`(`ʗUWR}z[E%ҩ'^uWtUOo)Sh5\R9-hߌ' na*0n~;M~޲ؖ% |6 Q?SE-kBP >' gZx~"5keED7Qd6lno5{U˘)pqz]r5m%kOn,ۖ[쀗AUاH~Nbց+22uu{CܪZOx@Z ( H #|W2rWlڹʦǗ%sI5FY7J rjf/(quf}l*060kl y=!0O3|fW&U3R 8Yc@=O,sdKI[ J܍LgaN'&M?qÈ.p_)lKWTnΙ=YЌ"}U-,)j`s·̗#q$O{@ #;c_@C\UQAɏbŻP *VI}[Ht=qڠX^ȥz7H}^`&ٚqiN&d/Q~FRkh 6\mlC^ѡd|f.L=Kk3"*?gZ8Y5 ub"KTt_ق$'\\yC%Sm^&Ϳ|G".P hw+;܁  т'iI5#_TL#D;0.^"N /KgNXכU &zGK+;Y_&.\"i^;jp,eT'tɥ/. 19Cj5v~ ޸8H.FXڱIXv:wB &EikLVeߝQYzܿN@lz ΊbsB\t$?wV8}J~ < |"(EA37l<`Y8}}: R!^TRd0I]=Гn.sR&)1~,ケ3Zw.=MdZ>w ^ ~ A9"Z0#x.JSk]m7R{8?R1Oﱧ{̥8 W[!ԟixwO^Z)3A"YmqXȕxُgEMfI:cbJFu}X-QŸ %7ka&YQ$p4EuhG@r,:<nmVFll7X\&,[` ԌP֏OF'=- M0Yt5V\*vNXS>5dS2NCEg4FlN ç؄x  tC&ς."y,`ύ}|Tn !pG q;!ҔJ$2__K>10-wɕGY1"qhPfy=7Kט#Rgȇ|+ЀXhlHTxw0䬻%͹Ր6.HM_;m"@&l/ydɦEDYQ/7tOlo6D DQ3~߽}-STܭ 1m_ĘQTCRt;Tz$K(/m|R67B .;%w-]xV+[Œigw ;jni$saut䞴rTNqC|QLpt?8ݖku6k8^AW&ڤw7д,cfwi~bcon0wkmDʀ43GA!>i#.q4!|ɇKjYZ߉rPؖ58ٕg#Fx.ۄ ;Z*+kuf< ,Ofp̤v6٬>j{CXSFAp.}" 8,B$L[o[}=͉2VRݝ#EXalSkYe;/0s6Z ]:6[3NCkW6Z} dm3\V&sY9fkhѼmfe񠱠uFfp7Rmtl4d2NƒT0b.'pk,GFDb7⺋[a~`2£IOXam·Knbfwt%bMhρc) 8@kU![YISt9pL4ŤNx 818ZQa ՠ=C `kF!9$,m\ѥ@r#H* csO3q_UTrZ}t! 949Ιs?ϕ&|AyڭKחi2kĚʅeD9i7MRh%b4@\"^R´+dL E );N]27^d8Aol<~g2xUi: kStN乭6Q|${m}5!'oF9718"UWу#0ʲp0n yz~-Y[P @q'=@'#7&?na3hT qğ1^ ;h+b5/*=]"LcMB1 ѢUbX^;Տ߯{[N|k(ZHXfg 26l> 0.r-89v| dMT3 !BiLvחcP7 _:v"eq%_Gު_N77G{8s&~Ƅz^MJ]i! `Ǡ^g5t~ʴ 1(\A!4(7y Mc?+2M=znK\Bi^4$Bۢ,uzIOئM+ 0m:J)tuJA-y}U*>J5'ObMOCҠ_͝xoG`7j;V83'G$c0O0 ;&GLpNj@u~ug"]G" ; TJU'|Riw)%jAv8 FlEo~f7ǽhȸ8UV4$*㷙OGҠqF^yq,Q}G~fK{Ft4DԬ*!KH^T$$ir }ǹTBHHRLj_w྿iPԉ(7OO߉=tj5!}՞Z'qc/~ C ~%(HgE}o>IG&K7FdWS1 bΞ$DtJr?aN;ޗCc^j ZB(~H ?? ("01 Dk̀v\w'~WM~Z҆ULDNdPd`*K ϣ\.~6^C^W)!S1h8\)1H1ϗEqUc[ֱ^>_/V)PtB鎸!Jip0uWo 9~,G=6B9YH-+>HBţhQ$ ibv43c@)cJxr58C簯mS>ʲHw~,09 A?^Զdqy(4P#gQrIjBed?IIl 3e8n~Z_ X_hCbvsfCߖy:N.3/vduvQO@Ă1 )!s0'|4Ok+j=ȇBS $2GhX&`g9Zz DVvGİjj!ihYO9𧄀! 蠿[M(1phyh'z?5gעtxFU!n`; ޘLOEJ-2DUj\KD-w&h8,iAPgq eä\> y]ZwYLFNA "s]υle-? *2[Yu`5 rH;leM\<>u7HMv+/U؃lE0 c^T_+E*xZS*Anm0JyUCľ t@/惀1Yh0]L: Pvfny07W{;Q}b2#߂FܜG>$uoRgfKbFؘ3h-cewoР_j+%@#'h} yˎ`xw0 %8.x/CMNڥPbYTH TEHT{_B áZe B[%|n-YY(%+@Lx}/G9}cW8I$I$UHI$I$I$I$I$I$I$I$B, !$IB%I{.%v!a4P zֆ(FUTY.ܳ%\VK%7 T($2D HgWgsJ{~_]f3MQ6M$ԪT DRE`AdAGIZjVc/eȏRAR @XB Ţ!*:۶d]VOunh44WJC3^*Z6iݯk_|Z7\owm9m]ՂC =fĈ[):1@}~04 >nORsZCJ; o7W0g5 %p 0B)t"uoyN& ?T% `1QTH%/q-Pt_D2# #iuWh~J ԗLK*Wls$4 6wZטlvFNuǘ" ?{mW 'r DjJ ,]dNW6ڞjA{4sk\ڈ/ ݦ1_vZ~csP=h 0͸bHk =/E|[K>E^]ko/, ̈Dۄ^m`k"#/H 0ae 0p@V%pq Dgޯrl^*m7Mn@{?9\$? QXM/j5[;Oj `ueO=t}=ڃ`8dZ4 [rO}>!8~tsa><c08 B˿弟MD`̓9saHB}wLtG?S1=G} 4#BL0=]o~G9eݭ O\ݯ/%SA jHb '2/|ّLn Ԕm}?Gw1{G ] VkN#eab10Y1)A0xPm>Q̓lv Tt q^\W/L[sxΜxw g 3.rpµnGp忕8+e gA a3#/P^-TLyHW: ܂1&A7݁ՄL@ a~H@T ##vE~} hZ*|'ד=}] G~c3^=Uh+odF@ O㈒u =UTtx~ș_k 3U,`tN[i!^{R*Hbt|Y$_ӝIUI:@ A|1iCc5RȒ#$ȥwV'&(d\ A!q h\([UvXnFb "* muy 5s~8/ܥqP|3r:_)fKk׼r]?݂">ΪrP >\c݆M}cQuno)0"+1{Dpʓ;JA#o1C~qDP$2XNv`ABR, ψL2,PфB+i0JHBz{~G37e}OI_]_E|G{>sy|d#E DSP2 !xrё&y`45]cFqpY@ +CAcU(cU,.fmk["i0L$0_z z d=`d+u bD`S_4,5yXGpZ50JojN#CQUV~D 'Ɇ~,Q6ZgE$$@d$B:,5g [E Eq7t|˜r3jC^85HHB a(h|<[\0d$ cnғOK<)TQ2FŪM쏕BR!|:ld;z aTB&p֨ombCśFi[+.a >20T27!K;_[52I!i,֜ ت  Y"%b#Na6U ۉlwCFb博"6nM1/kYW Pb[mH;.3E1 ?J@!$[ѭ.,`9JK[ tw) Dh~p` k];ōxԆ#"E1ٹ) RYM9:n`ɚ0E sݵ J4đ d{#V-h30r\$! my!J~ȉ!@m#hW3˨+Baϛ6Zs6h\3ϿkD0SJC2Zfq`>71lUL؋sH2bH_d[CȀo[2hW&yuec:o;|<;Su&@0/1v ˿x32߂̖;l]£eO Pf_S Չ }@M۶:FQ+(OR1l?t(u)ݞq ȿX65ۓ/` Ѻ'ŠLЙ$T:ka QeF* kHuoKl"}Bٙ3ga2߯:Y-v-'%Lj U z7@a6m9 RT2fNmTEۑ=Ol5v LI˙0D25P@!nV3c&,3-4$6NvY4L6U4`Bxxu>&b񏭇l,:>7b4TZ3bVXGSRho@;,<+d\d#&  DglB\hCpT`grw,Zc S 3B@w|ӭ$҈[ ~|ʢ7&n2{z|_ IhM!E<ģy%MXv!ÞjϻXI.vV|YRht4MAm iy7lxZMup`:M:Og\]w;.Z1vI?Vƒ`K a~eYJl /1 ܵ$y~ A^t 訴]z} Q,(C^ z \﷝$3݌7"(A\yW5Y0)\?RgJo?IBө'b[QX*&e8ĉM?D;͋ěol1Io(K,[6(.ռ@! 6yR?$iḰ SќGfhK=\1›J_Zܶ͡ zmm9oO]4yco vTzRsӬj8rxrWS\FĆEc,>jf#>MU&|=(EWlDpzTsXb@BXa8+ nxs@6I=qgz=R ]1ℼk#Xϐ h'|KLV3 4)1OLx 7D{njț7g5;+B8z͇`Lb% ;Ѿ4^"%}?ƱD̸NB ph%Ѣ@B?٠uŹ8]ͤo8òD$F<uRѬXC'MژDv$ay'߸N  %^]2b!ѻSR~\k6jNgLVbfyH8NΆ?,N1O{X8^D3LR5ϝT8CBh{kر8nj8j{v0YG3"/%ґUQ"> Fm;DBZn94C×x@kF}V,i(O="kAN=)β]}4}KuA '%mrD% |Ѥb fqvN9D!C,-w_&_:sEVeY8]Ib+)v.d?Jcdd#,m4/%3M8zݎX4Bj% p-P[_Zor|CO,g7i~Br? _)Ď EN\&KVmڮܮ;9pc,nmTS7$>]a<+h7 Tioǐx8RhF@o~\ΜagvS3`tI4փk |ǾylPSڐ: . *PU~~S匠-LyzbP^o?y8H?&&& (.X bgNwӵ>'PsۆmP+{90Uxg^CdÓ+{ԩ-rfePN.M_:FqFqK2o[׻ݕLj[5dHgX0 L6LR_)ϘM_kQ tԺvᅤs1}Fz#"ylGBeM.^&̎ל(DOlQ5Ybp҈"Zh(ف o;Oi%|t) x=seQMw@HTsV-a(eJͤILMg"-MLr>+z,7 ѻMY rLD.xVSf2k?n} nL['?ϒl2I>O.z`/ IruQ!&-V 제}n =#9oaVZ+nq$]"\"g߱d>tkvstچ=/1Kl4my@~rX%(Q>_Pw<B unVJw2cU1EJ19ppU 9]΅K"(Mf*2B ي66Ųw~Hb;QסE$VldT5h/Q3>PXec4UTb݉54UϷeN >;q_T0̢HJVt)@$=>Nc -d:Ҷo+Jp֯hf. ྡ܎Ep=mйxc6Q>ݗkbNߕ.}S?uym'qǞvJ Zq¦P2^] HI߮׺Gw)$zU cFMg5xKPrS! T3u M|'AG~8\^u7bpkboO럿f?ګktEdl $5:e}gY͞4Y{`IKV tQ%!(e9 @?(|;~x϶|JpX`gobCECl0)WQeEXcn?!V|pÀgc"l~OH:F{ UtXی6鯒.D&i. t) D}9~.5IrDAdlJ$=k̆6x̸u.WUG#*.?gYBߙ!0n@@ĺģm bE\0>dfP`@XLx =eTZ~';-9PQ%{ Kd+'cs[;g-p٦q bI8],m!̈p/ybn`vv8dh_ MƭJy.ew3oj 5bSxJ< 8zG!JPzK !# HEJ%(* P=z:-='O gёH">xxv7ѷ["@TRnuH|6n42 Rp@ȭzL,!HH# pj} Bz2G8Io=.Cw9|,9'{d!h ps~(8FGN 3&H`hϷ$u\tpL}m1|xd!mr J&J8޻` 78N\ }&fuunqS%l<Ãdt2M9j}Vwx!/ RgBa295Mg@UTI8Xk9Wo9"!/MJmDanؑ$uKz&S{P|8pa+6#WM'Z4˹MSH'vhd3t"0[~8rN/v5#ݑm^._2R1hjݟ" ފn9NϾf7}fHٽ5#@hk*؎8 M4!(mß~);ߓ}&]~6h {aI:ZF}@g%&.UeK\g#@:ߚeœ5im@U@'ee%"{r\w>(g ǁOV<#-|rt8FAt-[ٍ>ѕҁ,$h5cu C-,f˵r{Go:x0iP$T=2EΐĹFDx3]m+rvkAY.2r5UU[.5fQȝ!n?^RW  F (IQE0Orb(,}LlH&wȗ{+"KcuDn\j+H,M ʖ ND~\T?` Z*fD_vbFVM"K)4Aʐab&n!o.vv8ʶn@'bT.QܢGF7ː'f;d7wwr|f,Ѧć-guL,`UA)s/'zqD<9fKڏƢGQM1Lzŧ6tިWҘ\J)+]-O2>fs 6@:yz]iZ)C$/1u:vȺ!G#C!%Xj +3/&B(݃Mᐩ5P'w35*@@WA17yY x"D$gk@{mSY+RysOJw%Hf 4AX -2"+f4;ԅkQђD| -FV}q$N ?0Pxax3a9p;8g!$$3flE5fɆ`=g6#eRΚB.q*ڰϱq ml0pcW?xeNѲ$ I;i 6E 0 X?_)]4ҺSE\05dd _3/+~g9TxZDHZR  4u=\qIsgg^<"NRӋc'18:D.6fdzj6S`9yambpd Ԅ:ՎZ[Aé\EΙk=2 p+ 1;oW3;ܰsrn@f1ąeEZL>Mm#,0tL &{ꓗEIY 5ca65퍫MU^ֹ1ye$M2I$1LmYVf&|F5fbю4fg#-e0 /SFuZJȵ8WcJ3ؒˀĔF~O֘|ae`8-7K*41D%^[m> ʯݧ7ֲRk$0IR$)C"2`νNO_[o#?_-ɚ| ,qmEyK*FA?8Pֵ`LWThPX"A ŏeu9D6r.㮪6C!=ω~t4yTe5ioWRnwX*KJ#5QA>36B jt*|l%> *p5'h8hT̥陾Q2vTQZ+pd:$V XiDr/ofV;řzP~Z6t آALp{?]aY|ܻ័U>Lvg6p`Lu͙ϝwhq*9v =G ydwux* (7)qnnUI+F O6$ /3-[¥[1t)Yygzp`K>XܿIgյ!\`Bt0])Ǵ#QT7kudʢ-O`aTgp,I {C$^s`khqz O^JPsr~?`q>F6O&mq3E⎇z4K:֙(Xd"Ox`R#>]ljrB$5*Ջ 81CvZA?=(.t? ͉:BYTl|/ΏiA{B1,|f Uex:/9?~Cg-h ΓCzelM=rHHnjcG@Umzڬbc'SX{ROG_t[kY_u#A*+K=`orbZ:}0EK0Sw#MXͬJq%^=P(Q>ݺY;{? }Lc$\#Uypo}~`0&2C瘌L|3(Yε3jcU;.;\jO (aC*`dhd/OA4+谞+y/c F"#Nq/))vCPZ  q-'#$|EaAKf)@YU_?KѡoP ѽWb%>@Vlmd q-ľx[,wUU YV_(FsvR˒0``~V-`g/Q))?s'L %Y2goi>b'(1(Cq _^[_/PFmm"1[`vhpXB$k=󖐅mmet:t1,Wvb dDv>@/R=Nc,2I)oƟ{K;H˼~j5KU?AX28X k $'O6 xDʵRЉHl#9 o X#~sg.(9얥7|% k3c29da QBbW;8AF%~>/f(CeNsm};>:"NgзSJ1C; It4k6!bAh$W h p ]( 6:&5r^f&:]1КLF"MN5 c֐A@\Pd!I; G9$ ԬF!Q,H`hb~|8i2K&d>O\<nmz(pJI`mv!t~Xynecx} p)[Cše<8<& NJsIɃ+dNTD$Dz*S34DΑ-.ER,v蹛zkN|nQ2?{ۥp0qφ}>պ48PW/>t?Ыu`@M՜dh&i1- +s?:/;A6#sEgh(-bcU @[nk:QdK6jwr7/gad!51mӹ01,UD٩ *Q*Fֱp{ 3WCSF&nFᘑeZZ4]\mUMElbJs8߾G|;w$ CB8ttw.^% ^ٺ>&'}j?~zzNB7rhxNrǯy ,Asa $"D pF띎7igЕ{7,Pq8nR|y{NHa!71 5=ӓkZ3)m$jqBO)+j$ZU z~X~еO֟`_ k%{Zcp5K2zNamkE= 1G\]y: VY[?t dYye}DAvA,?f":~v>%螯UXS/}!'}G]¤ft'dyPIBohH[A~Qk߫I*bL5 {*0Bd='e@Ia)Ss_4`yjnJצ=OPy;0@D= Uk41(&LL8qHJ1(PfDŽvi;jq=b:׊u3ȨߢT'l}S4iż7FHINDle 9S_ `7 kz_>uEO֜+u6Fߢ_ݙv೏~ױhKع#M1ht 1hG~ .r=.}O9Rk_Ѣ!w~TОӴBT\@<)tPl%}{4⌊~D٧XGNuNqNҕq@Fd[;0tsʁ[?NbKDx]"q? 66e][w1 l2Qp/;*Ca.!1YrH Cf~i.&*z~S'9u dWaj1D</'C͵\a'|t1?Sp%. çWK(/( 2e}FQZZA7_tGk7ȚjAGBLzY3qc M{WptaX'̅'ܞo^Tu 9Bq?җ%BJtHȯ٠m'SÐp"&Ĩ2mLb9O̻ߺ @/gԘ)=~ 3̓kS> s0. ]IJ֫#&JmIb\;mtXYp|4x 6#Ʌ0G&Jm']:B\n=V=ĵner|X3wVx h{O`i@ sq؛.}? l/ k8[*ooNXx ?F>ߒk=gA؇ !e(N<'s3Y.8"FaJh ;ns}ή֎U,tm6*2)$I"z R]28 g7Osv | F:&2i>(i/@⏏d_;9^/{. $,\O)p4zhjra@_Rb{r2-Y }:mvDɂwSڌQWYY5E(4y˪thca7n`F_;sXJByWv_3:9=luovH=Ypo@"ڑf7R1G!|lNjA ՐhKѤlVjfM $ܒ.-P4\1~ݳYgPB*ò\x>l[{Ϭ+TxDɈ7;P>S|^ `'O]X,5䀈>LZ C#YWlFLZNǮ2,޼$e㯛=>bR%ܷ^Q|:-,%5k߱7 ɚ ۨk3jMd+G=IuLJ'6DJ$3ˬA¦"&&Xivͼ&p^z_|Oj8wp;p㢖\4!3?KC3 R ,t3ETI$+aDȿ"GE?z.?x΄O0\\sN !P'N 8{_` tr]>YW F8K)g݀yz:q9x͉J "g@(MqoU+m+өAaC9>οq(2 C0fZqUL P8 s\ /G7Nœ=SC&sC~ϸ`a !B {x]?X8@#LGEosΧUa%%^2S&TdtFzc*ᔍniԶ @na-J`Q]JzV{ v$(SZecEHv/m(`{,:DnJyZ`9^Tԗ/.D"6Ѐ)E\bރ[E;Z (ƃɾU? kնMØ(h\+5tB}I=\G[ݝ\'":>7/}+.Axj Qz<&$smdΧjwqpMyFb Z&b d VitUhCAt٩U3|O?v&2p` Ib"I7e Y[PFҒϭr3}5[C_쭕N)h)UJU}}^Z "=l`'OWd0kyOƞts<\r\jLK[t‰)l٩S|՛@2j87} A]vM;#] :4Z5(NbP :4+KYҵKUWF6m%1 d)j^S@GıMmV$ɝYDpnj@*G35 76q76}>] "-&Zw%{)*E9? wx5/Ѐhm >z<0~$ HCX 3n"x>MO,F ŜbwD^&̒6ⵐ燋6I3XrA)%/ykW%KN9^ʷ?V^HqyIڅ/m9[VlsӫV:\)sJ#c[Xp lldB'ٖH8ҧ>ۂ Gϑg܏CyyΗD$3is<#cGe])  CD5]6.539ஂK $_ cYL&5Eew//#"i7pVcS%" YW'"".爈϶y"(h*^!L"a֓}-^V'cӫ=X>G3uPC~YhFiQA JD_Uq '.XwS䣘6.bn %9vRo4Rڍjϡ\TZy0He[]\)Yaۑ[I5x.cMe!md4YKK.vyBݜ Â; x0[vC| _q;%u.p= 7?lPeN@cﻏ#z{ecvvޫ';;( HGT|?|:wv'\6 v ڥA>lQC4ZjBU!pjg9 hr (lVZm@C0P%)C(b{X3eeAA<uv@ZI(]0h]%ɟÝ[ߕ໽O)}~>dPk^mxϽӣQmYv妜wuhὛ>=c{YckT(r ނŦS6kZͽNm1՛-S=Kfժ+^۶|9\rCY˼=Ȃ@9m90)ǚÏsh#|~hk3C1V%K`,6 ŋ,X9_gwm5'AIUl; h/⿋=9|AMLT3Ig>z~'mlG9Ls},cbSs><)(h 3Ðhn8qݻ( E6"d 2*$9)P&-0JT&`x̳aZhS`LfV\,?[w>:3;4)]q8` hޛRkc sP0%]n7FI曡"D{20N9qaiy[ís|o_I Rϙ^迹JuMt_\T.ߡw^ geB7Xx.[qg}_69TFDw_ o3Z@9=yjoհcy!clXT {A4ڰ*PobGr?W6&o26 3_<Z\q8JkXXT"TўZRV-/5QV>.nH-ne۱C%jޘ_{my!Ap@rѴ7SE-t%Dn r\翧l ӧ\kUequ|pm{_DK&%mUN_Ŕ\A4滵B9d1I*Mw=`Dfކd 8(_J5ءk0"2FmZҧc8a(nXݐzg *<^׍ѭK#Ao˓|Uy}F_EDl4/GˋYh@s(Y~׶F/.Y\–c1U|M=˧}T`輿|Gvax k{Z-Jc a/p8bs9C;T:z}eɻG>LHPZO#FuhT!~:tbErCJh)ɞ+לܘ[Ru-KQL-0;*o7n hb Mb 1U|5]|C"d9,O%@,Z+Mr@.}']5nFWo~޼/2KmQĵp@|TF|P!7|]$FsMTD`6Ǐn(7m0Pp@DbLꕥ/ s}^2#DcJRC|> KavcI41`:'{c9W|gr԰Wh"@ (v+nxuH\I K%P𠦃c+ e=P~ a* e Z~}Toj / -fۍ~a57zs{2:g/FC #ܶnjC ݜW-XV!?k+Qz6C}M&I  ʨ6AߑB @F 95sի `sAMFƲCvvMICBETGg‹=T3'S\_exM$&HL+\ ZSQ׎lӃcrr,D+5Λە}(Iɽm3mÜ9{3wf޽(x;kvsľUlOY{_#Jgl.}zaV6*aݳ{g~x FMQ`5}(Z8HS጗Eװ{0*R&s@zygQ>^|Ρ!LL%0ĀC*f_Xĵ#VRb"|1 08@T"Yg@` v-o :k|Rm"B=MUÛTx/O8kϞ3颁 g ׊lz 5rPm~E@Gѕ"xnU\p\;;\\vWJ 0ZVTS*U|> PZgTxf"f 0˄ @i͌9zK:PN;1wvٸoJF3.&-qVR7}@ VSYA7v^oam"!0 L_£Ez;jy^f.|d݆qv(Ңph\`- p>1|1 lMMS2xV[n%u- l܌\a|*VizQsqBj/Obm -X9|1l@_)j?/nC3_ɑM*I/BKFʡsҢ3]`mlƵ/]W~a xSF٩ jEBlutH:nϿ~_v neG b![k9JG33 "$4+ wl K4װWIvZ62/,FTE"= J Qi[W>Ę3Y@?K|:z">ک"'ѩaHNU5Ց{IׁG$ыGgbіHb+ & ĄR-9ǥp?B0;:iTI sB/yKˣŷ{hohKrc'xJ,(-2ўN}"9$|oKE\CFXQߩ:"רW*_7K5< ;L=4j2rR4}ѨL0 9i߃w>?MIX6fdnM/[,"U\plL7 Яtk,,*/h1@6N8;rm@+0zC$- ~Y_V&W<%܈f轰zqviQZ=FiN׌_dr?_]'x mp &dazQ"WMj˹4~}(IJP:Nz<7&JE {p,.[Ï@#ݐ? NM4$-`]'jML-ƞ%]&hW֓P zA橜PYV3Ë"U*ğ#8vX &oE\YCJ?c6VILFیV{ x`!= aɗ$ LTD*A!8n3~ޯئVIIa};k&fx O~҃i. {St BA/Võ^ Ȝ_BMЦ&S 7wnT`u?>@>RF#l>Vˁe!TLش Q.A8 AoZC0ˆuX tqA捭!c[<(lAI ?9]5V\se<~ !gl6ׁIAc}0 (P L ѐ^T3a< pdrvtv.ۛokhݭ bc@o[52pWzo sw?}Y Á,Msztg)O97j#999L,iJa4cφѹK9!x0qZ8m8D!,a 5\0 j{ 55Ay>m)fCom/l{of"@0 A!8}\*{WUnKݫnwim3$Zi#+gGw6`Urj|Ar-ePl,t}k~ۑ`e} edvZn7*$^{bVШ``G<#È]݋hԫ|!ފ Hc*ZョLQh9;W;DZT F lz;T0c`W\0Ioyoq?Vj.Rqw|eOS݁S̵1ty 7C?/Qr*'1Dصo[ZMr 7ߥz z=|ys"C6u`Z2mr5q:u=RNoy҈{/g.q+~<X?6%H(,S$g(?#"")j~rCy{{(v&k@60W'Cs|bVgWHk!=g ˑq`LVsy;xK'>,Hr-Y$$:L_P`/\mU|7~.Kɫ%dlސϥMXO)I:f !ܞhЋ緅־NO^3mvQ$"!/V[ʥ(h13|c QaH[$e\M\BS͏;[|p(@1$dr[ WtG${T_ 0QA(sQ!Z`RR1 "Ce#}.סŠ^;GJi53ǁwA| 3JʀcyCS]eg}?Rh Ό,Rlޘ i5ƵH|D퐽=ͼ /-g,-F::M_XQ=uLڔr)؃sb$ p9C;:#Ы(봌9ELkVQ)E34̧!x1pjٜmjHf'2=Hl =CjݠPXf,tt>{ ܈MN (6kЗ]kHj:[ xA⫢1KE =#=A" Bǝj\";,ڏl4m<(dKƎ'nN^kWR͕$‡.VqIC6Ƶ4})Gd(&ؚQe"W`SyDX-7o͉w>0u(#!GfޥS VjjoĎ:Khr7=4j!D"9ZaRй6-GpK(<Ԕy]ɔc FGt&H·eebny= dRzuЀ 7-BEWB͸"H~E 15A Kia)擶&Bl%r,Q}^r6€ GQKRA,Vn畩0,?8orX.<z`.qp|͸X+kG\_=NQ`]0,1]iWΆpR[JiX=WMn]ղc%Ф*'1`H?`2e~$zț>x]$+`PWc}Ͻzjdﳁ^By=>@/(;F3~$&32{H@\E,8㡕ɑkL+]#RZScþ>,duZѳ{o2)6}nUެ3'i5HlSĶmQ}ZJ.h5f2IEz4^݇=6 (ll+N9 @@`z3#Sz4IݦƵQRZMv)T4Ǣ( y1+q>Zп|]H5QfQz`9`t?D6]N秭D.A mC8"i3ڭXGw- `0#r^;vȄU e@ ~g>SWҰr\:bUvT RC`CCD0}M ۩}10x)_Ǣ{uFw eX?jqdŚ v/!N׍~vi( nϚV4fy8*Z"1)`2SVx>օvX4pj(Iⳳ{֓à@%0@) '.c0۽*;lu7V:y稖]{I< r^_]w(Z~J2ij% 1XΎks=vc@PpwkҬek?/áTy%,nN2~BVo@\eyg*oj2 ~0x:Kb*;a2FcK}Ed~fnim2vz7 O`A t< D%+T7.%oRtVm5 k1 q~)qkޖ 3+ºt6vq-hD򎐭jgߴDaWRX>movv a&L/ߢ\<ja @D [lLJ0wQ)Ó!ͱqmb5n+l7f < S'j,;f|biCxՖ_ e4dqi:(_26E1G!>ԍ&p6G)?qzPXSHs,cerzcJy* NQT0ݷ1=L$ppct&=u][!.KoLeNzAt{/ p(/3H:20W|4Z1X!@z]Gx@E{zU.U <dfNb[ڞA%ag:J2ҏaEZXHRǗzG6Nf=†n=+^k _ XrRe*, @^TXoN qUyoF7E~3bXbm>wbezɀ[΂{{L!@esR$^lv:hIMpԴXQɩJ?sBĴGb&O\Tѹ|rCA ‹Dqjrs<:l*(,:&WV|X VS)Bkّ|4JLOU1ĀlnjqU;R dE./++QwJ(uͫAN1r! 6" i g.tAh' ',/q&PfL>TS#ky6Wm0 6@;<;Cm0l0" 4|- #BAs r@?0.:ݏ!QFsikq͕_I@J o;:|۰_* ?}Fķ踚vw-DehzjFl kFnEM@a&մ9qLQNT}@4,zʪ0TTYRH}1q 8-\q׾W5y4;&A^ܛ[s6M>{c*3|?-Xmnl>Xeiln;Ǖ " b } Tݣ3,sPz*j{+hZ;k%ԏ4={[ 8śKXHBBwTn%p`:Pi5$ GpT- ދ aaL`eޖiSAæF j\ӯ\GX}Bsr@֬B1ՔU} VTuCpݸwArsE̕P\_oWz%ٌ^ S2'Bzie&Y]noCups-~(sP2VxxQ!cr[|Re[vpTnc*&գ^lHoy$6gP |vXwwT5WvCU"#06~Kcd܈Du-Uw=_!gGbU6qlk)RM\?Fvq@џQff8ǬUBIl+?sM_a\!\ڄ +T&@+/74y^nHM\gp>>0.zsPxqaU+QTH,]nrՎ Hm%I)@@2b2"ݯE^i ֺ;w qL#Ub Mz:VP V -E b Ƶ~QG1&iJNRz!?DQ(sQ|v\֪cRx;0'^I7r4 Q[g6'Y{GXZ{h= #mΧ:2'D}{T nlsyTF[OCR(_lu-/O؃h%c7šsV(5 au)[wЕ:cV5%nwlU%uo}}@Tfke#n.VxF؝ y+ǯRwF\:ƪε t}Z/ ,Y)q7|zhq3ÿi w;A6QOLם™B8ЊJgo!=W'd#8+`"0ԯn&/,w`0 HvC,WӪ3 =G剨u\I$(cQ{խIqjU-gۑx 9c_*itjL_T{i;7fwGݽh0\e~ԢR=WGi@5Ȃu&J&,˹{/tK.;cyM? om x2$(NhTXdaZϸvY=OqzH8/ii.??KeX|_#%z3ujυM>ߗoPjs&HIN UCZB6V{D #bkFk 7e_V]ӗPG Mf㠢iujPCaL*{̃%ɲ{6.GxAt[!BNLN)W2FqB9*E3Hsgܼi)UmKLſ9jv<~߇צVj禽55 72[/gxϩi76uaN!"kVGډ 2ڢjLo=8K] ?!Rq1o-2{>d:8O61׿qeqo Pyc'4fEspC u:0 f;IPrP;T/?\G>>{֚_ޮ3ƊHJ4"q1ᱵ]Z< ޙE~*崊rD &it9L~t ]oiTҗƄ1 cB 5@V)8$ns]!hl3!ӹWS 崳+p|i>v~TMǹ =~'/;}/2OrpGS+`-I׈'@, vʢM.^:| љP a$Z0*q)Vc+}j_wuy"]%lsj(EWmU?6s)3{\Z=.K;ê,\TWm沃+߉/n6U`}hiy=UWSvJJFLu "%1xPXjo;mh*eSd lW_^{X@(un8ޯXZe:;iާ uf+`>\纕[7_nșeYIǟ2+$>^;d$";}P_Ҧ:J#RDeAwd1l$V=DQwzm]L omO.cN4y{/xN,X ;#!A+W%,4܀1Xhn;ܾGݱ+`#%FU:]|a]2xƒű%PQt]k',=ґ{ӑ>gJihhiNdP+A43,04XRn<۠AL¤xDADQ8(?ԊiTSX!S9 `D|ધ~fd#NZf›xqw2)f]5k5Mylec4l |nڼؚɯ܆E=h" Q_7t{+/KlC\ ;喃R(T;]XQSM0@nqklfgӮlhӲ]Սq~a]7x@C2O x% X먮!JyIx sq(.2Lz_vr~Uo;(ɫl{>.Tm$r!1ҽ){cM'F"\I qPOъZ,_21vZsڥV <)nѭe)'s)|`,'QF !j:pÕ1hvO ٟIBDF)1o'⑗]P Sızׁ&!^=uUHE.=ۡa %[{l?;m’PZ詡*Yvyfa0kG#b⠤h&c]}ܣ rmO1 \wAԋ\ҷ/_K~Qόi]|gwi)o{rM&뫤@} חS_&xaސp$=^]A&QjyhT[YeyoLք~ xW*(kݲ0<.9/p:^7}=泈Zf42-˅Ǝ2ŀ:~^w:bknU6",uFN?G19X dǐZmIm\'x4QL} (ޠͮ=ӺZ{aJ;?$-zei;m@WQ Qött YQL7-|m6F&'9)DoTUbp܀g6d +!3g|mr؆ڠhGBXQ)Y؛p7onSS* ŤD%á)AOݲMb C 9"Ќ0_& ]M>7ZEHN(BQ+*QLDp,enM젍[$̑&5hB a~)I߃b`'ei0^0բ6//ZM^keUua5ZZE  d.L64e+ܹ^.vF]fabV`sY"leYN%M}=?Qn[˖`^֐bj{8a,C[u=_:e7j:ja˱TGnLI%<h6\UI}&7 Ҝ8ҮWQI[=Ir& 3wu6];Y<2͹ހvsEЌہ ouOa)rZd4*"D A!--˴z-VxxוihL>x_hfMm'ãޛr8X.J[bx݌ n!S:Y~W#͟_n6DvaAj<y[ۚ/egow*>uȱcG7"fhͱADT6r_+o^Ǡ?[_jm Q HǬ+[H@O<*eQf _$^ vQ9 e9D8`l:C$'ga ק[gcun94L71 43Eur`Jւ* P? :_I Zs~XA/D "J62 -\=l湴t U9^WM`{BP7vg$5Yp$Ҧ 94r~wݳr6y'ŧIVz ..%Va;N-#t%fM_/'{^4F\հqz!p_8[j9)z-%Cc兩*,d 7e ei~Գcߪ #G襞%*M8'|O%zT *#؉ڟh0l*hd;]vn'9>(ްJupN{}$H| ,$R:˫N (oC/W+l5h؆5v/J6QۢwԂ6ZSI>3ufxg)W ޸ڗYUl#M"$2 6Dv(\_ MCDXּJe%*wy~z$\v TJՔ T.Zʡ+%3'ɖeyu/nm[p>yOj3g:>..ԣlJj >;2? ٪ fS"8c3+"{뭢A,iz5-AMa-#!P7GX{q_kt,,ĩ8u< :d('U\_29vx1}!ܧ£&'@$h?mkpק'כgR=MX;eRsAOf)d4Y []\Z܉EYF|%0AK0np}v>:$ciT\=rKTJꆋhHߚ Ӷ{>1<MrTY\,Av">wm%F}ogF׿T6J,c)X Lpg'`:&XI+E8R*PPVCK3Cڟ㾨'؅qtouYBJR4 FU&GPdt6٫in[jNqقnqdϭ xD3<)tY?0~&obMa,~HV̌nQ BfFb`D;/fV뽯g|5{o&vŤ*/Jln}V[mW5SDU(+uʹ L1ҔSayGsRĻyO.-j)Xque062|{o"1 Yʍs$oeYl $2q(L4C&'OXi}5*Zm_8a~b8P=l} fƕt~b D?~[b3] E5Ȟ5U D,m_>gߡ2kRK|ej"{~/ygd-*z;]<*iBw3N8^ٛzYԝYd\~p#nL3C]"p^z/iV|G&qM@5@@JX6|Fb٦;2B EؠHX6&1^TCJ_3?Q)HSvc A.~1m#Q6&[W0FN킮()][)ND@ĻeXIsMvԗ3yvJ]a6 `} Eg4Εb'к}!d<K .ّ*!>S؃θ- `W'ܖN)f7ܠĞH1NfA`'[#8\Tb$F&y C5~%,&Dd06sm^1zcκ|Ûl6SZƘ҂Be.̀vg~n(%Uj 9_]?Sye֞-,?) iwl78>.M`w79)੿qiem>`c}pZN aM='u 0ٱGڈl |2"4Z3s]N\ ̽DIe.<&WRB$\2+kDSЇ߷0~Lj_6gJ7^+17dIY EKćl4 ُ7r賖鴰F(x^dj(cu@i*|7wnI(A#uۄy&}{ٻoSb7y(V@7M_VuH˵יhxL%jzk`sp- 'N@^<5b D2NF $X4e");ƆBA!H GW͍ Вi6 #*3GQ,”܎&0=Tk k.@Qc?{>0?@ qksMx89d E,ߨqqgXmCMXe?k"sӡ|Ol Y$}DzV<(z^63 mk$a_&amR1*%wePeغxa,+Ks,ӌd҈ >FŒ Apq2 ֌-] &fBf/{.KP{ 2Rx!o{C_^\ 0"D/!υs:yj8q5¡QrYόO2ތ;~H߾P|(A9bŒ7eS. gfۏ@Lpy1C vsڰ2Er( 17V_J*qX/vɻpQJ_wcqr]SxW >`><5?{Rsm'yO}z>Q)YA~r?{ko}[m SS(0,6]Dž^À ɔ@ ;8tG @}@t_0V~`@zb3?ZL8[S'481iUN64@'6qHDi_]K ƽ Aߋ"zZ JjY8/]1 @H;ʔ /l[BJ'_Gri JhHzNGq~ ;8Yuhʅ^3_}4LoݧH܎2A>؀1dGe*;ّdx'3vADxa1 c 3GnD _0Vw7/ԝwAՄC&J[lEhx{d?>~ *p3pX?k1mEo3mcJHCaʦSqq[r‹٥& "P88_XzӅɃ%]g 4qub1W;}%h3BO6Ef7Da`,75_ nR$s᯶ɇkh8欆ETatW]oWxd_T|ncæl%+Yt&\D82]]I$h ӵ*cW$4xB=\۽ƫ9) &RN0X;w|t²`x 0A9] C?|M,[hʧ LC9-4%ƹ5NXTQL5eQ _Yz"cpiXq6`g(CmRg:nwo6VvΘY*~sJ׭ Eݢ[Ψ׺ƭ6dkeq*&xL\y['m3V5rTk1ҋ9xGU꽷e1 "|Gc!D}ILCz0_&O7aԅ`+U*$ʫD{6{P06 NZ9g&EJ# U[D328с@ekQh!YMˆfYsi /qӟf%| E \4[nfkCB4[;"Ћ+zh`0@BJ@ $3[0 J㉉Znl`fIt8,k2X׸lXuvǽC{W_=/k\ @$ P"F@$d BP"CДB7[5y='{qm9:W9Fչ+!-sb::?axA7]pd@xJ 2_n4f͒+>:v [aڮ_ lX~! .fl%(m֒k+~;稩 ^o昲1̻1DA;pẓM ^i0ebր0ѿ 52H''b":$eJ\YK+竮?|EliwvyZ#˫H[jLU -'sCKLQ0]6ͮCLJ`|x?.w5wHw Tcg& Y wڠE]3Z}o3EhieYi< l`bo`V.EQr4o=gǻ5sұgm[fs)i1 [<5/v36݀C_ 0d]}|XuY!jȪqAD S* \{\^|KwCPһN9؏JIebA8ܚ L X;_3U<2r~]h^H,V_uImc&/Xx9uxbJ*/xA#S|ښ+elm:dz&TpgH^y k5'N`EUdREKTcXpK҆|ZK9<(axg-5fQ/DVn[MF,ew>.O~eHz͵WB]S7H̖j+W:~3]1m`fl@>E R _ HUxVkE@،tdZ~'A%1[bJ맣TѰd 6ŁiߖeNėN䤏=Q@hrAv[;@o$)h֚ G%3%ȓMg莪5xlWjr!:wa=2rp-j˵˿ 4o0Q4qB$8Kױ5ǂ⑌p@gRYu^\M~WgM"x§Q w$zD#<RE֖}̓:ScoT9O Q^z-y뭟%# wNiס~4Z;x95$4n 3wiK;t.   QgfgH`.USت1URN*DTvQ$1cotׄ:dz^k"~T\ (*^mFZ6!԰APc'ͅ!?`#$q;À)N&]sÀ\za7#D^{^JF"8mۍkv^ϒ>)ICf ymw]_ӯV=󢇘3id{Ӧ"'eS+E,pۆ؊+P6hL͹|r-:5~N_dD8-s0 6XS" ?GdYa?E9 1={ZsKEŗ f]j&x4ed¢uW096SqpP@ـ l~ε_Sl KԙxVO(rG'ՊQab<>M=%z%wH+fs,cV]tN8NO.ЉFO#ʍa̪lYGH%[ N6H,Vn7˥ݳH)+\4XrBEb>uךWnUhzMjIu S QwLܕnJdo4J)s3 ~CSUxCt )$[LZ;X FzMa~a2B>>lHt M u^dH%&r;+{$K|w[Rͯ0W }.'*L9s?-|Ԥ)b}ظjkd}%jT*1 rN #oX){`؏T^;@yK7+|2' 'Z?&A?Y:4_ϵ/q3/H8.D-H;[u\Cۅ!/ŐH@8F%ktG)Ow ;`@,xגS1yN,!&^s܉_ʜݹv,ǃEL(G7|:_^~$p'Fpك{8 NLX.0?%vU_cJGҍ⨾pZ*Q Gu;gpyYU;Blb:] 4թe#g$pXJp"#ibkUQ|LA7^!ᦵ8;IպǓl6(JL nCg&j$@u%NF11g|oaP QO1fG.tcUY%9~AOk_1\F4 dgz @]8SЀtYqS,X$9~y$YnTqq 泃4ƽ89dھmSpTX#kP \,(k $NRm c>LO2Eߔ΢ǹeަd[VfXB1fo ic7[ċ?$iE(GoA'/qًM`Y~#MOv9渠i7Dm`\g$ lx҂|9:Fq{7_ӓ+ ܽ67?y:K. "S+K@> z׺_Av(8\jwnsr ƀ:įBWrh#u +wsw!@yYuPߣ l3\ Hi`_X]]s{O; G5(6n&4dP!<N6('yWOjVk`Il/0_゚Yc|lc1Ƚ Z^as || "g? |ᵹmrZ~V$d<^j;'8,vCŶ URM8\.u6yxL7 ӜxqWsW+ @y_>},>?[DY,U/بH|z~sKV<83 "hO%pT5 [d}3[CcD&ŀ/Q[pARY;8Ŗˎ5З#z6_HY6%#rq\l.eCZ8o@ADOA~;.KUuUahT@gҝ@rxݭs!ctkh2?O90B1ո(}v9;.5(b|׺쫕^OiYRmRsic'QL ԕa2ng"F8Cn4u5w0}q#Gۋ%W *N|aڣ!&k6=rAFqcnF% wP_>/^#h݉Igj 8.%ZEK:.-=dHVIRd^A /.ifi85&'C& "r 50ޘR*{+;KBw%K智7ErP DZ!e=&X6Ǒ$hZv܏6+=yz'X&rZ`sxm4뒌W^{U?Yeϐ&mzjpo0"ݾKzn7V&rBpK '𐲊/JQ \MQLjtE~1ܒZ3K-8ñD Kg*@|mӋױ#leNw~\`Z)&KxmV46I`qlmhHpscK[0e0#'Aő8%)`5^o)FTZA]eЬTeEz6/#gg9Q+2gB'"ql[SJ]8viAX' Q`rR]A8 I"uj7uʜ*Yɒ |1&Ue|c&NB-m*,j$EKqbNf,8\]1kLQ/3%$sFΐ,гf/ӸR$0B18gW[JQ_ك"S}b??)ٶؾ:#1:h%mӰlSJ%_R&MP|E1^6^ }{I"gޓX{W;@e l7oJ&ߖ?zPD >+@k.KHMgQcYO3~\`mkWYx /2|⁠cv 09|VI6?t>ȡ/P8 φ;P!g'<(qѾmiBdTC̼Զ6?]@Z5Co+b;ep c)w<Rg90.]VzʲN  Ҋ걗S:ZsGBt+p-yHC_<ĖS,,t9}Eʏ%@T"n8g*PorEKG!K;c{,PxPFGxww4۵m-+e=F-bGOss<4S?4מzgc{ܢG/\,-dU1ipG8=z Ĭ=IՉ}f7~ǁB7aRǬ2HLAbBn=p9Iz~b4!` Pq q7|!`w..yoϣdB9|DO#e~OGm^a]yo]`Np" @J!sۋ]- MQ-Tp>Q 588΂H{jS!ca: H?xbΛ;lDod%/'qk`a{KDZ\S/iHReE:% M(f\HNWإ40{@5 Xʴw]W{t~ nHÉ02Ep,;H呕{͚y>??c[~{^o[pr8jý h (*}iwGI"""i-UxЋ'k0xL}"zsJkq0-2@"#㗟ʉkҭ>ZQRg!/߀</\:Dr*4%P~I$+RQ3|{n ^Od0z U=Ϻu *Xy٨ks'#yb< k>3'ςa7+EPJ4ڐг9%nM杁47멦sUd|es#\9̓<pLrpu.\U2b?^:u[ޏA ~L1>P.KS`c|ɓb/% =c͇8u P;۟M ((=|gJsH >`` b q {B\b 8$yk2ʵgHQR@ NN#OJɎL /JyBO55:c\?"zܗ.;5\E^Ʌ!Le]n=db7Ӈ( q.&4hXE9h%  Vol-ƀ 01uð/> \æJm-WO>6=>câNE)#=wU忂9=tUEw]h̺z{Z^bBڿrL6>:d}-SyV*n88nrHTK>Ypm/b_UY1=d"rPjG6iuTOͻ()ڧM`嚢4+&Bه-Q.efa0h_=EZS#Mp㰭UAIf7Z(t^ Se)s,5b`` v:nlKQ4NŌ{O>|×s?D<|e%+t'mtvŲEDǨhC>mi~6&>M)1 .,J7jb!7y{"[=z˲Sj }ҢBW'~*Rw-'DQ6Dv"%˜xjC:bPޒY+#4TH8Ĉx V02EJt`jՔZL5^ɿpZӕG]IQS.cĜzmUyQu!cPcx٧SiM_HaE{oaQñ3~=GƈTHRQ-Yxct(?0o,xhc$g^i3R2uRAln!BfԔ`k xN" Kړfi]|,B(Q`oNflh'u}Jk:ᐝMd$v_f]$6מ$@h[J ؒC$|'XN@ K+Uc)Y@aJ5( mE.&$[)U3,TvDbY6'v}vctS#khd*cM)g49sm,Ĵ@a7@Z#ƭ $=4M^><0%j 6ݎ"^ɞ`du8j[G6l6ǴQS[\;(x.y7ҚhUj0IwNxu]ܢc)Q(ة:Vh;OGhY*"2*3^h0q]㸤m[nVEd}KJ31UTg49"7ȣ@pٹ/U7μ\zw\x*Xd7#ݱ)]ceq#D}OKm=^G]SpnY4\q?p7/CQ f!u$Ӭ >ӎj.xZXq.xtKY_\tr~.ykkޙ X#k%lzq?{0h]7S?}Ͷ'M*z%f_po}oXc2:4ﶡ͉8q(6 BIn(acU:Ge茻KNpW4Z" 7!qt6bo֫-Aywa`m C[#iI @43m0|jEܨSf5Q9 / ef~B JԘnMղ ysGzrަoUfwZk;(4Pyb/G[=Ȼ~b 婷XP;Zښ6JgsU 竞d@4\tl#|eAg\+qzftॣ{Mp-WϗWMZ*H~.b `j* `XݿQ#^D[+IB<8(27|ؙ[a@ Vr"؍kZv.v͝[wGuXz 9,b#RX5 q1 Ƞ my(Qp,P%kV;c)a$TBaeYs(;Z :} Og1LwH=Hao%W/["R^N7zpwtH#~Ml޸j.7]>*$a[}ڏV.`=Ǭ|-gԚy\gQVT-+Hæ'e̋m ߎf's!@KI>Cԝ\l= D8c ƽ<է2 xʧ.79STo60sU7wI0e*wY_GcѨ%1!ezE`s-]o$i֥$!C5K iF]~ʳGdC٫0>ΩQ:{@GeKu>8#/B0xg_8老wonBIJW_$[RJQof^V}{՟{('O(eϥ="$2jfU ˇu#Xh}c#yRC\xEQ]6jcCW9Xf3'$ <3{W8ࢫgfdiĄc2tNT5]qSeYLт ) 9y*;p@+r}ZS<\D ^} eZRrdEB}4mR.wO}t>#:۔dg@;.מ`S gHNt%?VfE2nhܦ t~?aZ&C"?jթf5N`/2dPPͅhz7#_>th"{!o|˒u z%(CP!Z|= iqiO^=)7;hXDR Y̱.5-"")33pSm$};8 dZrN>jP{R~B7MIyzPv>&u{uS~m&/sXZ0Yb 6?ݔvz}r0C6}E qTd:?W Yٷ_ 5y-#Dxbylǟ`74.Da9Dc E?ם!Յn.ak3x)G1C^H0\9+x"Hx jyOJ?P?U5=ו;$J< zJ#Y82\ؼsjwKb ~ӵ P`Y!ZkJzS%fKw&nˣ<v:H8 R'ؼSwlxRXJy)zWQ]Et7;ˤ7Sj8.2Dn;8Efx*`,vyp<{;_1B vܢ;|i8Ws ~mUΜ`gsIc@!vE@I@'nu!}O+H!;l,5*9٬8dVV@ /(eNBoYZmE 8U<,;8\lqc$^Z:Pa5Pm{_^Ҷ1AӇE[Ԇ@!vU2i۲>-e$_ыp 3QNlbC1 ܚ3n}'dU^_hC'J,P&aB _7OR啗&4h0Ai{C}K f:ҏGsRd^_v[5YJN/% ˅V dr{y`d-dvVJxn>5צv;,:haLv2fQM"sdo-i29pr;&I [T&T4 /%iĐ A]|6m<p^O4/$BµߋB6r`4Wc @k}j wLkE2'zҷ6?^kɨ&SH0zA4Fhp(.;mMD=#yP^ZDcOkc 0N_q#f@b'/* +.F#i 0@cl͂ޤi)HuVD?Us"^!/Ja0'bOS-RXO(Җ/>:敬4+u2$fb(% a|1|w/ƒ5 998}MMKc Md.ᜨ9|!2m<? oYl~{_̷B G%#íLx^8|}F:Oi簄@+*r_ 7CꢡR ?aF4PB Tb@"IX@PP"ZHl+)*ZVZ*jL,PD!#L"@cČQe$ 4P Q F@R$$HF5QB Y) e"&)>]\_>g  ps/ddѼL\y-&r 1d,7}]BY|?<}CfT۝'lbԂhmSRldj6M瘶H,Ϲt<2 wYzb:dBn\4*J;JѢq4GQOS B_ܔZ O|dG$44|Տzn!nV㓬i J@%T!D H@@KV#&/ugEHOwYe׎Jn`>ns~bo%W l{T|1:!D}hPJ1ѪaĤt98 x:8ḋVyQ hL,as*&K> #>エѾ‰d?h4x&[ka{[IQGI10"D/8aЎ׸J0g&>PkseCjn(Kw6h2D?W9򅲄[ߓд)r11)wЙ+NW>)ZU痙Cь:N@S4%CN=2\i#j8f? D$VzxLSΤwHA8ۋ0Ytx8MbBUlmɯ=j6h[ 0w*jgXbGgz2OM޳@뮰Qa7l^y{D8#CV5݈dS8;. cM!}Tc1|:Yiav~#R ޘ$Os1->:qKʣn* H]Huɰ=9#hc<$ƞenW˾8ambmĴHgd" k  C&LM" OЦz/)>( e:@BګԼ&T(-(UA)ڪ*{a~"yN _B K,5D'Ft$O*Zx@L}piM`d+ T%k?prM#l20,FTKSU lc&֣bXMj"ly[949VwBg~&4€7Һ> YŗϴqR)AxJ>_tnkad\J=$ l TuSz_2F ⺱Tl<9祠x@&ьyىRh>"ѪL1g whIҨH~Et4  `:Xr֕B6&ʉ'jaW10y%[@/KDϤ'Byb&Hz4Xl灶n0>#L)KZ]HzPyRВ,}A{Ͽ!KEnSMfG<sM$MқAc @έ6=q:}aC!1GiWM7Ss#0J\1_Lߡ}vIK8 0kC鼟&T8hZ,64I+,KUI[5_Y~|vЂ,d: >05L䎷oeRߨVmrꋧ)M:UIcD 0.c$?ǔ#dQl(' 8D@^py)dCRkZNד;KScU> Ѣ@@0< C)r FuG,s<^)Z^Vaqnۇ4 op 4c[358 D> ww`UOh\)Iꋦ˅X㯨lے+*>)W&ۅQ(˸@xE4kU^*vADj{iDйͧH&)xZE(k J>"II") yb!1/({\I=89EaUIM"|!"lՔ5c;(hM> ʹ>hZ;lýnĠmzS]q*DJ/AK>j2~bqeg""ʟN]xsRYP,q7UmE@c9H lt@dnHj >ť Yfs.F_R$n¯MJ?S/Ƃ|.xUO!D{9`5( h{QVUyEs!Ε0vnj1 /@¿-;(eA\:WXL==';=%R*hA=}h,@(Sf~c~3A"0~cL"{[ps[ȅܪ8r319RuULRo#IӜYd)pK;i5$Tf0D_̈:R٩Q A(?` nF+{F G⡽ o^ĆvMHDnUM& E~3]';slz`n&Èތ%9<<%'`0 Q)_KnzCGnT|ufC +q;+yC]Ee_^dYDOE6$gM*JU=v}JIp2hxApyƣIͬT=4Ba3]ul-|vF;G19֛0NbZ!% O?)yKGaIѐ?os'MV~ZhLvXvojחݬ6 B`c0/@>` LDHȀfk~xo\˨'_fks{1X/Z-b0O/ʻ]lzuY" `z Ov,~޿tO'o?q,AU`@` %`9p0W  Od}WMMv}yiw%0 bƀ ^1 e,em_nJɍ#8&>Z*MO/6;o/Q~wnޤ'إU3nU6(}Fifēꗿꏗv-L#zIoM)~g cor>G@e([Z%7o;fHr"C> .~hV iYoE EDB{ՏQ(S IB#b>;V>E|UtӝQQjw x˜Y$S?^AӬ6X\r%\rI+4k|'F1+/1 0F;P^Hݜ mjj8e~!=K\F}r,b p!1t$5&K'scOvpO17^`7xJNUI,SC*of*UZ//oUgInʜ"ij !uc$Vc0`,1UU?x847XF9BbAOV"@t.|IM@g|5m6RBcYvf8^*. HO7X'U9J9GL/.?h([FqS?v_ XܲtW(D$:wJ+ۉ+7M ?e{9$lsS-xϞڍNb}8eq])"Gģv~? Q9ėsa:j ]@h|s~qt wi Scf䁽h~aRV]֒Q|q;W?,_INL*=Iela4Na7x^4!lцҰz@;RZ]wC;A*9q#mfLAMxYz5%G/~ K7kgεӢPexᘙϔJp- %twXZ(NI.<$r:6n R9Mb5']MѾ?DL [_7nJʉm뮘ӎ"?XU&CYkDnZ`nRx(B|_Vt ~{ԬKK\DrUs{v6_'wTr> {$钖*2 &mG-?', ^h[\2ch'_:&\?w*6[ ~1tl~E6Ÿ'_ jA"U(U$2'Qw>hk>- T  ']gGb|@9A0,(h?hL{:ˁ`t䲮.!RK֢mݷe\9g :Tt4eU`7j4 e"0Q[_TB!^"/ "< H]*`%dV>-5MW{Yn.ν\v/5 RC603݂ SҏOzJ,FI*K>&@ cg'yֹ⠹ O@$ğw &YD1E 1/Q@(!F W/;{5Zv,f`L`V!h CNYpd1>hpb>4)EGFvq:.P Uh/A|{/ 4>{͙롹^ptom4z-$]wh8,mu'نWE2,oF {sCNur~'{?_|nbWԦiz}8FƷ K ז/z&Xp'exx6$nDѬPAk2[F5@{__|؝ RCP|s+>fwJvv_];1%YIR3H7ZSd%h&ܳ>`TE/j؞G]b/8~\ 6wq0t`7!'e({N-Rђw C@e~r[ex{$mCHelU4O*ՉxuFr$ѰSn.q&DF?OXސ*ɨ[^U>xjMZߌ5;^^kb-)ھR*vbo8;xOI'n e)oK&S0 Cz"%:?{9K*~knjV!mv^gCRvk֣d{gQ- U`XjLq57w՟ 0>`B*EٻyL߭@?VVw "fcxS PK{wO#!M`~=~)|=?1;~ԋz ADD>AtdzMt ݣѕk U44ab$g:ڌKơTҪǽj Wp[V}cW!vmY;=!Y5#ϪFXbJC dxKc/p{x ?VER]M{ 9|4y[;=&tP-*C?PD4 J*?uҿA,]bl{:݌I[ `Q^"3;U^z/Ɠx=y.DiOVůTo` rι qy%өcK1RTpOw+L{d^Q\<$9nυU؟IJi@ ]6_o1NY&1}|8o_orгBvA1z<${JMgʯ` vRяBA ny(۩2rZMV@轣OX؜>Ƃ0)kgunz$ B= OzୈW9Deנ|YvbjX_Fܬ{֔kTZ@Y+9<ZYYP}6HXbc`NA.1OۙI`_ R tAϷ=*JZnxtC"ɚ(aG}[ɿeɒ9yQݿ0(+-ݽA_eX Lcni6$z0h^sM85 -'*)4 -AH2MRHʔpJq&i\f[b 2񕤽;?h"Yvcp1BlvR]2 1QK#J/7uV[d<8d5rb7\wԛcL桄13ecjnypɺI'5&@pC< `jSW%cb' !x`^w E!wz-(-R9ˉjE%d\K@Bm 1!"/|s$5)̢+$ZÉ׏g 0/Mmq&1X)p_[5WqycxUU&q񜼾bi~ "AW@@ @G"J9ߟ=nUC6By,",.s)]JwêV+DQ9?}P+KOLA@gf1xc z xyO g6Qb[k*xM%[Ҝ$gOO"3 /1>|:hل,ut5_wpܼؐ^n.8P'5 ,w!v80[^N~*w|uim)Os߳ @9V5k%tktQ.莂6rߛ4+6 OGf=mH>c3'}Z;$A! Nsn`H ',?n 0C9!(:ReuEDٰ2:8b%![oC/uudf;FԗFi*mo Eq[j2Dž\ ~cEW)0t UϹ'Besf;w"2p i'^XiRVg3sg#c2sA!&jUUk7$u!ĠyDq4@mlYc eEm;Ejjo%SxCUZ3k -3?^M;;9z7z ˦e̡?p3~BS\wa=/u@칻AZ\^~+2~ P_V1d(R޾Aygv6` #{9[:k0>JG~rGpX[Xw? Lb-aPIkT^S +61!)he zoHm@뵌D`*^B@4M00-;Ug^b{}O*Fyfpw4@#?D6cQ#IaW9cB&)[|V}4SGEBj/Ufu/y۶sNZֱ1o Ѓ, I$tN7"j3ց㚣gl9.4rDiEje3`| kځqV,kuġ L|=l):F7J;-r0[yNXf]2uf9c$!}vي=>Lu W=~gyt Aђ' mعّ η&%a&w~Jݶ=~O]: c){ ,^7SŁ݇ᾇ1 _嵴!VCMCvlj5ϟ;l"҆H0ڛZ|i,)9awvBoxuH=z0#/NR .&I?z>o{'$܂d2gHfQXDڤAI Y0Cx̝2 Al7@;CjGk-\KG/t}.Nns@50F%BQIMSo yted%>Los~UX!FpS׉v8xyyytjU2yo귂ndH~'ASvF Z5҆zيT@T_ 1)GmZI[~OU38 Bl.QM0  ScfH%@IrB A']—[0!'>Tմ{W mO']>?~߳~/;F)$b @wL?]/HAYve;~G G ͍Yx j<ޚ_R/Dk1m5yyz^Z#UL };dx"U]Z${?^n(Esk@עb7)yz14Ou'lxc˟6Y2vŏA]w+{~.u\rط&oZ_w%}`cA] T~QXeOMXaN 8܄(iRք@mlx_}="#] HbȞ׉r`.gSsv`?6"NCyTZcAy:sU. _+,)r#qud tmx%cf~),(mOᝑ(>Ƅhe>uC&% '|1A#(!Qm|NV8t-]'9 `0qOvoRo+cӘK݊(Gr #Q>tD; FɆ'|hği{gP" ЪE2'4wλ؏acWkچ{ʾ# W2[(`10h S SM :iqӀz;Zcok=McK÷v3e2t{[(p$ґ9mZM_K_Ȁ Պ5A8NMm` xݶ4pk Dݓw~"p6Sߊqn$4L={3\>j<@k3b9jy<*@_M4b8צ3hK1F51&x [%|_/˗v^b׋rFJo_O7Ma.7-n.ш5elgVxbqn|uhZW*re&L/a6qf](ɀS})B+8`ӝUM \[_3m7 ܘSo O/DnK1,WrB|^(g˴÷)Ya[LFi[_n0x/6L~ JR6#/˵f1'vi{0h: _{/*]vllƓ" J G&~p!U6UF"|7jb5FbxȠ9NM}Px)imQ _iOβ"/woY9ngF,䷃&!#%yIx,c_7v slXFRSu'ʲ7,D7)0$GpcǠfRz΄DgUnP<jOXM%:ª'; +qlM^{zW4֭ .]g2{̏8:%S,}%a.|iV'7V@)óQ5dA=u\zˣWaʭ+ۡiW!orӝnbl)DqX٥i;9!{$( =G(Zз\Zx7Nq6LѪp"Lݢ{~ xu4-h֧95bv܊%*K@t]90 ?s"RgyuE{qD%iC}2tRʲ׺: 4<\?:(7#ceݧL@㸌V4SlЫ\?%"Y\BH~cΪQ72Q v1N.{u v= uaX'kjk}G藇LGŎ1T2b= |jryč c-Pʭ/w(!6(zVP%fø9\Ƥ6+p`ˬ{Bz `Nݱfp;I-3~"1oH11An)Z>uTQ>U &Ўxz;vp0_JUkRv A Ks1vH}%5aXՁηUt:Ǿ`fwe@CZm:fx/#~lz9w%0K^ۉdhBvU҈bt/̅8YfU3uyhUX 3J?CsQ=`` {PRhRf1'8yU {OFGk}Wɠ0'{I(ߴ$PS^\dY܈#^5{~!c"σ/t # )&>*fbN;[21(BYxq(;]0nD}Ռӣ<3A3 _#lF$?hw4[[S/pk~ݶv/84I={ªX{WQHtfRBH2WO9S_2톣ԉCr"Jm6W+pوsUyLzN2V2rsTeȻTs{F_Lg:-S!$.R{N nLr:Yhٰ4Ux;}hลʹobQ<0*>^.?>dJc3P^V[LK)%y!LbףR] w~`;3'[5<̻} FuFw*i2=EF3RpH9zK!eƪh!zxdCO0sb<=(V#z`X݋U\rQ`}:Nѽv=,!XT{f```y-O1kvȻ]O>oX\7c̳'tMv!U@ ;_Q'sX`8ABR*Y} ihfLYL g UV#F#$ԥT0/wz cb | h86;|1wU9dJam Ssx;Z랕2Y|6~g?VNPݗt)9KTg鈃k?Mc}@Et7]ʫa&vɼ>ljNz6(M TO92Qde*ȎQw\Ă+)5rC\-4u.0+B{ @SM,Q# pO*n?tp^9c|(`.8%0zLAzi;@ \ XEu8r2U޻) TE?0!|QAHKe0fQ 9A_s!S2RlLXR3a:5HMJRkVzC F " WdI(8( &0tW Y- ^` 3DUמ)0a0 2j`ehQG3,Tѕ@r~JqY4!67Jٍ &]N!X@|e]/sR!8|!: [fy}U=γ\8TDbϧkw7SeYzj{nOQd~ %T]k,PLDhJm_`k}$q4Q|5 P}v0[x46qWZ쭺i%X)YE?&{OV|!x&ؼ+h/I<[q-k"Aw!1zF7BV0(6T)B*b8r;ݩ$ERud>A/X 7,u8' k꾣ףC pxrMQ>8VBXpQP)0J B9喘?3UB) P D-P8Ҕ.n\'vv[P}irze=] 9N<|uP 8vv[#YuOeaX]`f/Bȭ+ŸuԤqTȋ$x"Leh`Ӿ]IZFR%\=Mi9_ ,"vd\ f8 $|fuX׵rqb)8 A$3? *Gf ;F˘0C):H tD?2  -foCCW{}lwm pef=6ʻx>HnV8vgkM" b܏+X5Hq}p{ۧ12aKg~fW/W@ =Z#qy)v^D.bTp^{/z4^vk9-ڽ7batS]H}tK~;.  GV3YΡpFw P,qWpc޹`u= ?ud59'&ʯ1 C H {/:D#kC?O [~o3 D5@+` z4|z6#hP,;? T5a]C? x55\]#O捋_:138:Ӈ)L~FN~U N.WL@z"q.-䫿5: NKBE>EPOySŒ*5mVm1z+;x g X]h@zHEa3t#pl8,|<ȦXNh]r76X7#bhh\m-8H וU].fZ&MY&Y8CV}!1@rCum;m* DOf[?z#Ԋ1vlHi(s(O0pm"3IhN7s_Gڧ/}fH8?;힥GRvEϮA):ʛOd 0?z_E]iV 㿃|2;y>굸m~Vdf lwv1P,6`o4ߺ 4Q,wAR,S~z~sG*^҉?y(} 'C~,;'AB(L+.kk\gމg|X-8i{yUoy͙b6 KH̄\Ԥ4C&}Ͳ?rf e9ʧkXŒrJ7į n2NT,`ʌ\?2-Բ%.dԢ7n} o~Uۈ-T˼Qbe9=x+/kYM=q4_JScD:T_|%ި< SHȈ$('{,爐ZT"MLQ{#)FrQʇi vNT鰀!MdFI! Hn}Vο+qD˳_JLu[$ l!ٔ9Mg_dFg鑑lYqјԖ=eψէ%a"dk>]eFM6 ]a"2C(]-Ȧ)bo =*J/(^tLg F90_/m0DhS!P*rb^b>d+0jQʸPa B' Ͷ5rT~R"F"v2K8bAgH'rq<̏V _O2-5*0/w,675y6i+!}ӱč7i67o |Lz 4%r7 jE4<@[7b/c Յ/pig]ބ;v#BT܋ôº'e5N]f}6by9tAKLFȩ`u` WD{\'5 &YWۼkU=}k{A#-g.o[֕ TGNLp:䷠S@NEȿjƣțc^5D7Z0IIҸsu9s'v.WqK%Lw J# s\o>e 4Xÿ :m{}bǧm3E 1>."`/wdtئ&E2bK) hڱ$}Qxvq/x2i!}$̑aw þ]M}_ whC6ڼUv4ȿDu ۵_uԳM3Xds K5D~guuGi^`0(>mPذ`0vK=~1%(~DC#t41o*FҒ j/:`kBp):"P07+?OU?Ewףb+< #$6q?n8 (~r c%c0Zl,}JTT$b)F :\}8Nkvjo bFrsɆ2&T8#c=={6S5{p?&1/;*K?bl=-JWQѺ6Er9?2Z/(]ș 0wRփ8gmopA(R/(?g8D9 l2| - 0,I4C;* S jAu[YB\ :"R^FϜQfZϟmNpE8 `ph4uS!D^ UfsߨI:1ls_5#*pu i=ݹ .\dcSȴm3 q#Ŝ#І!e=RZK.{?sNfYh×`8Z w]b_tIxߧiYK |c>`, J`"`7ΔuO9Pi {B[6Q=uj|9W44GNDk#ڈRe=Z~%-ZAnɼ|mْzfA_s0, STffVZTx{O] S*q_~oYfm6|&`^vpCN؅቗J(ip8δuq!BW" ?"Qs2H ৔9d>^d$ZN̿buUeM%\99 gd<ɞ[\p(ZԐ=pgg 0yR73cSM&ۄ@Xա M_^@N#)\y"R  *PdIf+[7&COX%bxW}2VZAG#Fi[xz@{P%6h^6ƓWݍ}-Gˇ8˜&њS궆rKlKt쵖`J#B Rx&擠>]7Zmd-}R7nV\7B+H罅h/. k^"?R[#$(FN۠`w9grPOË_pm߇5׮ܻ {]yq:̔R޵ۥe >Ѕ[6gbt9qxYdrAwb1d8r $=Κd&}ѬK#jHFm 7%;忊yL,'nҶsy [%FjO6xmp XKdJ|݌QnE:,&M"R7˵Qʸ?z⎕E*q?k޳p7 ΍EBß10CR$VR{ʺѨ^# @6jޛ e|k;%>"~ݐWR0\ 5Yk5'U)"& -<>t5'JLqEi-Hzn?~og{)iW21@j`bh;A7t'('\?T89]n{,0#ӳb]3B p2;tdfHK@gayVU¬qI*8(EzˤEH,k_n#Ѧ9_)g;]?@;8塱V <_yT U13G!;J$r3uZ16(0 D!T{Fl t]aOxVgטJ񋲯إ"xItO~>U;ձ!ᬕԍXvs #5: T+f ,$Nc[}7]#f3cHVpqokRs-eE=475aaA;6!ْ߃j&p6f'7n]o3Qw#6] So$[S3g`U|M U_VUK(t,Dz1o^vPo 0)b;@$Z.W 畧SJy#Io@pڜ?H:Myx#<ZMsO=i0Evndׁ܉㓠]la}@u{E4:uϭ=$;FFyvW7^)4^y `q`CHk Z~&'ƻiWP*9MEBMym`{op !` H|ĴyfXAtQ"g,g⩧diltҥzc^na(BGÃ(O?>weBK]!r6y(MÜ\<042Y=nڿTS l3@Lv[HN/ ibh٠O;?/hdsnϔ+AAq@O7v܋W}PÄJ 9qb+(%,'r@,YǏZK".72 7Mޮn/8|{ ڇΦmpaT9 s' Q'JάwZʺ/huGjf@Du+(]k~[WF2{Q Q0 ,* 1e'XDɳ ;D &g G+cǻj:Geenc3{^ϑ\{&""KJ=z[]f/ xTQ$,/Wj!kx|"\<Xjږ!LMfivvYhҷ=u|dnUBDm`CՖk22B@E#AxԾ՝Z dh:ʻ#18o ?Ķ톊]ĩ*a.$su3REFSO:7_[UƥaH|;R^b0E"> Aa؂EMd3eXiCrLrXptUx”aGϩ^1'{YF۹XPo铢؟yUiXWeL>Sv,Eb,_ .=iIBfDjh(۫)[IjH"Dxhke#FWk 1lnб Gp~#hO`'2g 08fKU fg%* U57\=9Iʯv[sձ^ 1Gr. 8Nk5ˣe}1dmhp<W6B^[w;rwx'ʟҗ&$ד(*&8-03_toR_?l;J OujaF9}A8^D .E̯smj(&M@PWpj5qO5|o:CT#eog: TGw8@9`p6'P`wג-=Դ2Y;XWS,J)]FnWhiv0]=AVMhC,m Oe<8iJbzlnonpك a1^oj=S'fB,)3*K,ȢǴ"5/KoeAZ5D$!cK  l-exUkj"(844][.' {^&815 xRxV~ D*[k}--i D9Gv'>TP{(<6hb|x¨V 沌]4Rt mW: `D! V9 )mnn(wKukكf ]uA3ld^t\3"H ]kj4kß5`>f.Pz?~0L!壝gOݛj jE Q2PT[(í1::MLfєGw*'!;Y`%T\i rE0l23KEvQqg1 3 ?o LG/iun.Dm0FQH1:,)*_mU(8W=Z"iI A`:x̥v⌟C;iLoOԢ!st|-N)-ȷTl7dBh c:!Q/ۂ#|.UؠUBӭN#ɉ NnQ)o[t^@d&g>݊?^bv4BX{7 o =Ounfϴ]L 0+1uDHwkTYI9FVܴ48#Tr@Bl Őn<M?o4I`,hYn+j^ ѠǩKe򘞶[is|!ؿ=xU纞r/q- ]O2^c`/.ARD@XTO; MԧטZ6ϡ5L Xl 7m?@p٫r n+%&eڟc a ̌O0gul`DyBPK }Q @R.XTWv-mAp^J4.MXggtAulW`A8?@oͤ#ާNKe?H+>;^#ŒŬnހQg(Χه?<)03I?:TmIo=$8g'[{meBKa󯄭 TĻG!^,Zܢ8Qou WBf[fSfO7Ji܍ɓ1huōyPRGΈک[֞؍᎑E [3;)RC1k70GDB,b5X$$>D۷4 3c>"'LXlV`Cbʺ#\J^Pyuq"hAヂ$tq T͟_q)|7'k&!lK*ȿ9~c[MKx4(Dn*7~ JDe::gtY?geHFVv,i5 LǸ! tkv渪JuF\$D&br@A簰@˼&8_ AA/qjq ]v!NΧ蹐0 `A@t{|w⑲?,PH"S`,WY&@AX<>5j|3ad?OWzaL!0/3 ^z10O;NNczok P@C}m'>{|m< _G[Jzh&!Qp3_ s ;V20#vahDK C]N4Kju$`b`8F p8OKYnq6d`qă 3!+09:M.;]|fzTXwkzN^mHU*S9c8j̓2")䈒PYz=L=ϻ>N7IܑxYЏUQ(0 (<=Xd=k]A>н(~^8E+c`ف'{@I( T=3v ݖ^Dz/ 43ޠS{Ҧj`ʂWTvrC*2 (My=-!#2Wf]o~a~":J*DPJXnϧGl+aFW=:I{kVT߄uT$aUZOm<}KAJ13|{Y4DTæԱ "iXLdS!?(); l|ʐm>PaN1:c#+pT20}ίFqz,F" ٽ2t#x&q!zwXGTДB|+/ z^zH kb8NfLQJM-HEhY*#4ZܰвFwXC.^+Z\`D1AYX()*Iy9`UP8~ᝲ6C8PE~~ #eq8sHMEj 2h\mti1}b,lҜE~L5}V#^:\Ƙi6ILރ3EXƐ~ PSM:}[&T"nl:̗x duC$>EE0 Q٘ lob25C4>LB=oV|ԛ[Bv`A=\M/AL磘s0B`p =`AwsJ#HALRYdEp=7F?C P(|P7J GC鬰 azCE0|̅wG9=>.{\ĶwF?{~>~` mS~atS B%UȈ,:ϝ6oCU3vMa&gEz:sfAL04YS=1.ъaDb"d X~65oإ"";R%T`/NU4(%E4{3АGbb.Z4J 4 q4+20B6_y*={> a@ *Hn,ao ?kAlQv*ܗ />nەWkXQ;N$*;d煆0.&֡[:B}:p+a{MnS/8𨰷- ΕoDa.SѪu"̬w$7NgMɶDG馑˫z ?_>Yij7ͺz)) 3 9[?h\ eߎ&+r ^zٕ,g"l&H+H/ t溷>)UOknDa|?R:4>M9#~=~~;x ?+DD,QgI~oZYb?3zq 0S`k@wEPؕk l8esvuM)}(jzEJʎiL4-:"m&n[' QkۻR#IM(נ5A ρ @ptSrO{06:aX(eɅdf݌9󠘓 3Tb V vl7uOgR0>؀9Eh9!BJ^SḎ4D+脓\Eg21!pZ 8'&b70Zs99m+VyKKDQ38Z%㢊4RY*[ GOkHZȂ[p)9+`jr^ sӭuhgQ Ni,[?wy24Vv e@:!/|E+.?Lgo;hXHDf_;S­&`OYZG#|JЮ[e_n9^.,59}z aIj2< ZNj՗ t-GxnsR魬Lˁ& QBsCG ~LdO)hkSn 4e?bP8يڭ%H>$;KFo-RWgL=m k+eLK*$v3)$  W-EǙf=,9U]kw74@ b=67as_P}~M; Wx"f ݮ:i:QTXpGf1[> xuQXaf`#,?qttؓ@Ej/R'7_)OxbZ4ePe,n >kW&Y2<_BDt{io@wPL<:7gCBQ̘\]g^x~'!dK) {"L =Ug[~IIEO 4Lt<5JR1l 5'XUs!WgsM5QV"ΞY7 *ԻqJl\g3|EHQ,96+ Bzn2n-H R = ~mh33`& -D+nIz[@>W|;Tx"z|]"xA2JQߌ⭡ЄWR; \FBH~n9QRX*hy$i݄8&I]>O|-)rڎ_,Q  D{+u>TĘF4>~+ƃ͢mT%HLe˫kuKoK1Af_~l圎fC?S?[2>~ݏ _+spAr.c_I01 1Uttns0HDba.]%65c";bpz^fF s̛tTp1e( GKX9j62VjQx&V\a \Ѱ8wjoB#_i״%Y 5ί|[۫mx6Kw˿Gvj+8-u)tOe;ݩKϞpbF#[HETM̱m\Ζ@z4@oqG0QנəeQixh(c9lF S)cHKk73ca!=!ȋcqG|9yV;ᔩV{܆ow Nŷ((Y:ݕgbQvXBY~5t_V*|PY>p$ L.@^=5c uC)9n{Kuy-|>NyoH+SL5t[E]Wi^a{XF\@:cy6W,'Y!V6f@Zbc,>)`c1^D Z0e+13l]2τ4m3sYPGu+AUN(CE EWG&bySL[Ra?֕[QL@7)wceNn(* 7FF#OE䖈5ik3wu%wGP~->U2y435>1 Sd~i`0 Dq3w|oEc:?"Q[PNiQJޏ:W"w[tHa[8&p_ *H '20yMw߷4cC\h;^EOXP?Dd, ˯qvv{Qܲ+t8$2qF$Ǩmw( s9&gI 3o%: o7V^Ln`!=P ߔ0DqԼ+-0Az.0 C.emdF^~0qf7[iB-i"ݔԑdMEhXUAWb@5l,ҥKk 6G#APoRR hN!@%IoWΨ3 ڀ䗯cxY|Dy/zީ옊>J`<~DsTAώ#tA6Hc؉ 譌WQe!>c BnLGw58joTp}^>lۯnܰF]_EcvAYC[=wuk|EAj{jjw>ߣ/戢[WtvJ< ,w. ]> fuaM?AC;֗PRϴkF:ƜQ7b"amȡ4l蕢"͔Q[$&N@vtQuɭJ$DS'r^ٔ&07r01 -wu~Ad 0@ !qթ- ly瀺4ҋKzv€4YW4,QR$P- OɻSpYW^]9!z?si}@.l&ʆk{PaoQTӃgFo^6d7`Pr?szYM+p&}UsDij:uN>Ѹ ˵'rm;-m9?[wKڷ}^;¥qKB"<ݾY"zrCТ[l6V+Ryiw~ʩG Fl߇IL 7Fu"1߯ˁz=vt2 = R&0E+eA>X:~D߶b*7= EU_ "\D%6|X!̹aP?LpJ St7B?۸!as2u0!e벎躛 k<8C'g c.9XNJw[P< yPuL<ұIQ+|@nDBonGX毴Y V];~uzkAƩ_V{(!'@Q%O.c+ \-mv`7o%~<, A Ad(LAqnY͝μ::Qh}?6}ESz8rSG4 ~mEoR|31ѯ=bԪ#{kÄzw'~[hDV5)"17 ,Nیc(H vYPwrKP @䠈7ZxOƎYicVg4LRMPp/T\((H+*⢘Mt{T4sAٷ%ے.p}$-7'm Ẅ́'4\mWi`5] |6K\]! B@n/o l)`y~pS+iH]p)x< r0'v<k_;Ȑ .!3~gl<ܗc T< , T({cʂ0P-Saզ}Dvmk 2cuF8>%g{e>O/v;4<@irjɗH"KջJ@Ys:E T^01=\wbww Ԝ}݅Mv@izaq%1+>]NiɩьTއ:5 -WYȼ3́GqKK S]URKDɗOSI8gG{ X`È Y]G[hxv@bLҘ_y D1./ y{֌TR|^jvKK -#Fx+Ckc,܀Ĉ vҒ&k8dτIznt ?Fr|,ڮ[v$WFh7xi\ Fσq 1:@R ;DtфC m?ԊP1ܷPƢ"+ȁ` @hHH)ǁ8Ult F1Y=b՗;6V°14t{8T?,O%- 0 `%ͅlBaM4B0 E!?^HG1"T7@Eqm8w? $23ȑDeqKXY;ef3Cٚ5AaZ]$pE2 Ę۶zd4[ܤDk0o"޺DHR=gm(nm/)LOA7(F}sƅv.[G?Yo OS M͢;!^Ww˨ߍ}A9EIuق2B?PDT<1vt4aOAQ.r"e^ /tpkDAg`% mCFXzO`m|\= SM1-QL}dTs#0\~g"%nFKj:+: {G] -ɂFX:8K[fF;0v*_Z78?=f:( C鴉LJ-+V3/uX Y\ ܘ(ӋݳZ@*QfW0/*lBÞ+ɭ> l q[*"P,jAxemkˮx+HR`URWLu9hӐ.)W~"!7pT24p\`KBʃ8H0Tɴbpl?v~F;ph!UӸ]ǃ"8f9@>$~ʼ;Qq1WwI&IbФ!M[c}gKpz4X*{ @>$佟dwaeӟ(n=g+(0 15u+tmv\m[c aW4A+؆# M8cL܈<{{w(qmݭ(ߔD1(ad4*#_$NL9[}, Ǩ+̹ ^q~B|ߏ)*QYdRXԎت>PO4ZB(Orqc^_57Pp/h8xg }uجt/9[og ̂1uSzY泔Nbbz}\!f;M-n!wA%FM\J( Gb]^14QI#ik|?Ɍո_SLlTd=]pǵw%Fb""pv/z?;t !'Sw4L z>p?g_d2:vπ ŀxdDv5ﰁnwo UD| y@~NH$JuO*wTA@"¡:~Eqb]nk>FvjZa7>'mO.D|˟Β7,qI0`&< -zof]*vMn]4EѽOgGk.,F=W0>9cK ڈ,= ZPp0Yei .@r)'C,bP,7LӺ*pp@IZtƿz&B},G)Dp ϋ33& ‹3 q$3 .%|mo-Skre^xg #!jΩW&#ȺS׾)%H52Zń5}@T=8 ) ԅSj5Y>h}nך{۟ 3aDXo1:Ls!4";& Q|)re4B&nJ[m'bCƒY`iGCn*L3}-:RWO\OP]omE rLID a>ѐ YeS]yL暶* yU 1%߇(c>0_:rٓ T+ $Tv,>jF^3.9' 9 ;/IQ\}<sz&b/HY7Bјu?n=m6L(Ђ.ƏsA6q' ck'3"_҆aGTgd2UM1xFBRbrtސ+OSw'g> ' ̙J&{̀==eI4rs#d*rYlkJ2 N{#)@7=Yhg k<-J)2qր{IDD}~AkAp^v|o8M]0t]XݤR]AA}DlUNe05w;c hGWʆtq|7EΓRYIMPts ezR- ! K$Y̮4F1KѽE3)pĜY?|gm;/װ'VȈkTN\.U]r0A ,;=IHTV-epW'?v0C]ݣ 6gtggi]e@sвEp/r'@TckvcP:vik |zt@ϿMCMqbd剝Qw tAjOZ ۗPm~r>)|/}<Ar@rwa{rY%lbowH-ug q/hj!;~%`vxAytc|ڏpM\2Ё٠4#+T -ILYsێ5_xxPuN@rr.폏;hٿFo$gklF4m#xǮ+f|kYU*>;>C)̢׉99p 4EVy#ժK7D>n$ jx5(paJE_V4s/v;?~7C$HHI$D$@TRI$I$YJ6q_^*H Y}=^♖w6V8Zf6 _{ <?x7RAUcr[Xܣ C %t @o0[R'NƎMNTQ6vi@ 87z:,8u9|џ;SɖV3?3dnI14y1kʱaң[> >H~0y4>lD kDo^%b'&PPj(8 ۃtU")VXn߫zvwPľmc0og1سaS\IIv)J?9֓Pm()ևN?":Ck}Pn A{)n\^ ays!J\'@ .Xץd-OƽA틣V椐殻aG*;O{YrjZ{x'D:,OR2Ra _gk͚6%e_~+z_!F%|&BgRMzc"3sv3Q=miZXjv?OI\ U^=5hU]  371sF( %d<Ğ$ ?b7>E4Ne\fl: | ~/ mC"_ys*ըegR*fуqi[}~2W &|{-.,.Bdq|C \HTU,['6C@f1)b9 &2b˳>.Of<>/n! pJl{̅i[ <P3i_vl[& Ր/LtP,>| a֗ [lKuGHE=,L*{ W]gxnؼ>i4xE"LN) -il7ԥ5'o{pۊbyf/gyCawo D7oăr*v}9 @aec^Q[NCpNLPh-xv~hO͎?B@_re,{_F !zK&e r]x״ynHH;]ٓwFJ[yт:,PdnH}vfz0 h"&k"z&?5,2澭0ONTՕ+t7V`4TƤZ>EÖL&( Cȵ(/g]֦pK!:i2w8:oѼAEdq&1Q=Txͻt8X za,{G">HD&ZQm펜t&2 B'@ʼn>wl|l$ׁ"@#bP.P3Y+ @6bR 򯩇,ړjvJw-0eJn`C#VV.7"X˔t5$4gF~=F)O<kfc^y0 LwL\MB2p2ΪKof(*Wz) {vgh8 &f[K L㛯njyr9S1󍴬 ]@my3;=/ԛV B^@kwd:qDȃŲfcJcB\Q4(!D"LB]DvSmkV?MrmNB]Qb=7nhfP\#T/q6ҝqV5޷d\vX SM1gfH;חLmēys5>TA?|2g.Cq Dž^hMYͬd{\(; x.>;.Jߞ   L !:7d:&̨SqQ#H}yl(dTvsejXƅI @`i%&tEU$Y3<)  e%Uz1JHz nDs;LMShvW̡`:Qy`j23A(Ssh<$$(\ʶ58$i1l:1q(yuͤȨ?:ue~W1c B^K@ǭ >}(1m k& ]y-2! zAؕ)p/ bx^Bf.iGEl_(UxO#a}A^pN (5Ƈyi4љJ F<s|/ `;u'<!F'c i{(Q2O+ݷzbCQCi6*4Mb`KI x8946_CsVsհ[՛4 B?{{q2ҩ@ᇵlnxE4f]q.45"}2ƈU S]E/ 1 23Ee1}smQ\ֲ[wv3L'?; RWL)CqxH{C+C{AĨ~8ܤE3+_qgkFMUm K}7&CAv9Dj9vTs㖖_>h0mr^9:ך@Gʽ'82Q/лaEv:H 003Z)u718C+pp\NO pK\T ̳{ٜSP- #(ql%LUv+n﨔21(!|J^hd>Iu 8<<2z4D)A;$_CpË2v8|F9#+%@kOy sT!%Xƶ^a ʡ~k :dm(Ertۿ|jApcD[""+P:Z0 SeW=+_wpQ _L_Gu|9݌8jb +k61>-Ios`DN^yTB6!D?%Gh @ 5MD]_VΑ,i5 'էs8IEYoN.Dpx)mQ ,3\_ydV]ˡ4LR?v[<׭eKrgtMWUOw\ȹ -ۣqo!5Q uL9g@ @ܧq}tQd1x#<vJQg^pjf9[x~opaw='8XEWeq@N~Qx/XklPn9XD/S('6o+6$^&îJm!@T,k(Zl;*6%`@o[*1Yy:̞GU2kVl x[_05oVhd/2\0dtqt̟z=$Wd;\,/e<_>`o"OXfbGjHΕ6cYf=ȧOj@  Pg@zoaj\z!up>eo ]^=DU+w7 9 ٺQQ(0H!=s[53<H<2bƵgzr,s>VK/T [S1,X\,1C^PoIlG\N (OfAFv}}Ւwj"wi8ϒ+1|i-N @!ޗ?$ R"{nvClJ^˟+Ģk'h s/J:O);N|:E¦WվE㼙+.e %F:ivzdtLa MWBېJ(w.]y~:ipWO<4 IqV !9/5vP F1jY=KSAk@ h(` s=!r/bМiywkgI̸47F HɹA̿y|?jX  DD2Հ<e3-[iNq,>7j29M)6sV'^yj^d1ܞQ/6#r%A }SM5G%ݒ0w۸dz`۫@#$QQfH)8zzU; QP)+Dz &ïޏ:Xkoa!\*{_$zi7o4{/³r$fnЙ:!׍ş7,~sɬ?F4\k)>jUjc|#.70Weh谑]o%X'Dy0K_$PSōcYyrTB~p)S|-cN\3+.B\gF gLt8z Q㕎OLw+< x1 n~mi$M"6V f %j4b6m5P4YR#h%/MA0pOS1Jkׅv4 iU dVAw0jz6}o";EFE8ֳYZ i"CXhj2 ?hO<#K%Rn#5 @D=!h"~w>"ԕh:*T |<HGJrpظab*:PEϋ.l0v$JV H ?+"FvV%>b3QMZOUCUv.8lԉtCʅ*v%[Dja~+ݥ?.cxV U #nypaenj3I3T 8 x&Z{3 a{qS6_S[jg|(oG{!҈8讓 R䞌hB3`/Ə6\ `@(T@+S Fb%9ޣn}_^s*L'i i M$ab<,FE{~mg}rqKW?XJXZ% c=͒BA"7V% "sJ8% +2Ƅ![Wa$ĎjFQ!P@$PDHB, %)@#D8e=KA]zyqmm{GN'_%Hmx!Kc/$?W~%7 1PIQ*!iN/c To9ɾ-F"&'b(.;V ۣk0+:^CQF}]Xz*{̿5n .nKڰO1a`Lm o =o-UI=%4n|V . *%, mp̸vR`7?4 ߸c;5uWU%k ;l_"`ADP]];J7ϗRu/&>(;>@W~0Xxo Y 0.#OBD} YHҝ;$[V m[N0N*W8U-&_Hp9^qT`phn#T҇-N%t7|PKWe2؈^c$ ,^>{>@\?W%0yXf0yqB݄]eP˸dnݑUʯ-ѫlMEّ*s@kkY?|[}Xڡ HKD 3Ow"T\(sI<WN)kB$֟89gIBXxSlA#3RͯaѦZt5Ey39mND&@?FL]{[# oEQh÷#}1oۣD09M}s[[Qu׎eW=۝ 1|~*6WTTt>3ҺX&bi8J{$ 4ŕAk2=㎬yb!E㉮ҍ˒zV4~l\cT UF9$F"5BSבSBÄ[M^߀|A71 *6qCZ-s[ ּ]ǁ(#H4vbۏ[?G'ylPR> 3Ȣ>E!_m70€CɭJoYbc]DwS2 1c>TTrI"3r+E?:D~ TVfl?g5 66LSU r2!X)`s};<&x[I*X_2. փ1sJ\?UϨ@1 Ǒv[USlXA̡'31$X B`Xʜ عD(ւ˦ 43+`"jTHT$0Vr[eȈ=9n f$^ '<_%s~i^y-B + vOo6uZ_ն+gܯ񋘟qҴu|ȾU_$s45`8 /CWͪNY}dM "59\ +oDjޘR ~s=\djKjގ3W*>@"rxbcɄw>f]D6/VgrqtGm=.̓{cm&`Z(ւ8ic+%1'x)o.vN[_(%IfԆ^lj.AK `sSHfHDZQ#lCM$w`5S+A^"cWygΎ &$ $,նRX`EΠu=*YtzU2Ȣ\si w ça(gs0BE4\6~;Uu<[$@_2g:w\Pc{N=z,p#/s |6=b -LJ)#v-/^GetuDM&/O'B'>Pr3$$"qq U3ӶCj_ UYj-;R->L.Ò K۽BS DioizPj#C.@XM9Z\(~s&h x'ͳ)Rtb+Jaƙ|MtƔL {;;(c8ӇZH \M;!w2R۔JNl!^`N{nA5sص\qTQyXTd"[9]TpWEl8.@!!FƯ`Hχ9ݪDhj`r BOɖ8k5r*sqxIPT=]P5YT`e?ñ-|vi,G6O ɖR Hm~qS5}QY%X 3l. jcUlW OE7w[7K!&vy %3k(:sӊ:WE{ۚ7#a>V.ci x.yG[s+~u` f|{bk{w@.!N/F-=-ڬA)˳ .ΠEJZQָчx#ݲ!fJs'G<)t`CB{moϞ*\w:ew)}FxC\Ġh\Zူ:K:ZWxv>6lw& (a }̚,ñ2عPgM0=/2%-'0hPh2u{,>X)-'1yy#v]#t=:)R.팫a* X+n B,G~#P&J~=ޜi3Td>OUZ;kdrx*SDbO{HYڪPp=ÿOrI]q1x:0+DmT"MUa)j#bۅ2޳Eɀ;8 5a3:hJ))V$G[&_ n=f# p !am߻&>*Yey'U mk"ͼ26AkK\>@Qײ2=a&M_P5:LA)u&`47g ~W_P`jPM\Z_r&7؇x)؀>1gBV{[SUDz^0001r0!蛩1llue'w,J}z"ϺJzhRJ"c .PlQƱyZ6!8Ar*o1 R2j~+]˜MٿH|jAtU/ڡިq o(p7+s+K47$bd5.?VnK)[!h3gRq^uQMYs/}؄X4==fE@Fa$P!r#ŕ3r6@Kr}WCv?1T)y*~@OwI}|Gb[EsX/Kˇ4LsD۽`2kr)tH~J^S@m؎|(/nxw=Jeo h^8! 7ͷ1ѓs/"8`(3#WTPMx=gShU7@&a0NզkUf!;(93Y)J r0 nIPQ]0vZ} Hy}^a LH#`WS5 T1Ѐ@]<JIk= =k;&\fYmn&R5Z^E,@T\#BR2)niQݘ^lCKǯ <]'ȆMgjᲰh7 DujɠfT%@VQY9"8PKOqDq;tl ÂpwyߊCdH%%BUhS7Y%]EhvByVȂSjָh-rʼ14DL0wDw0ML"3f*s]![;)/5Yvk6bz@~ qL~:N)a7I[c.QRl\eMi$f֑U1@E{"P;.x,,!.}[UdwY6FzE#RxNM .W|p97m[15247[Pu#|E@hBnKeagїl\G{h2` W(6R+kqbz*v)><*8MjV&4C!*s%cDehX ʹQP:M.!Ŧjd͙,5q \i]z%m* /Xܼ!F 珗WG0M"IDrn^6ℓE AUg.\(tl-fA@|x۰I*GJ)ax8u.mp54Tqd#&P ˜cmFEA"@ϡY26J-:ʗ9~?Õ ,v*6_𻘄Ѿoa l' 4@*4\Jm'=l)L^!?~6> =G gT|n_H^rfv]cìl3~}di|-aP/ 촷YՀAXq{&=eb,Hώ\"Q,ٮou<@#R4]P4R> QGWX0S3[ ``R1=s!#Ǽ6`}" #Ette>&e+ȟOomcBi@T(ubTJ ji갡Й6t'nS?$-[b4EfJ1pIUKH̡ت>Y!9EpN 1}X'hTt;jO+ R3Abl)K`z!MOKr9in$3WA=*=*D,v "(U[c >"}NIPvEFvzprp1A+?g Ǽw\Ĺh]-hqqiDV.%qTI @DcƒI$Bb!wlNx6mK@qO\5n+iXOv_zcO=j>tS8ϾQg0Bj'S4=uZAP5fi87j!+0-.ݭwrx_WAfH۞ Bgx1 &h5isͧfTF͇cMDXYFϟz;2#qt*"yӶcfZ%)q@Cq,mdxaL_Yǫ 3<eBN6`t1PЙ:,AK$7 sQ&-ҳqŎֈҰ2 Q4i=CտX:^ȌqkJz+DR#ELs1e,22taK3MGO wYNc,=߶G1nIa9=ޓ6Ӣ弤>rOʼ➍iXm0DǞ>6N_|l̞_޵s4(iB gK N޽n=?sre$[sj x 0P+}Ph4Rcm %$X95J[?ҸF2p;0ra?Ϛ 0_l\hq93]R3;o}ho8ˣaŜ40mȠ\`2XNEZvHy|mQ=w.["B 4sɟ)x70 L[a]3TBաWOF$!@*5o{XZb]QY}QZsʦeQcѝ9蔊Jҟ|䌩 0j3pp@a߫T&EvX%I'iB楟kԦ~EwOeȼ0cs@,V ] X#L[YҟhWPMD(VgB~7\#u ffN& /O[)+hO,$O8Cn v_~=a !2A+VUEnRr5Ev;Y le2P0r-v 7 ~x\(Qt ~6[p3*uv ±ַY‰(p֛wwǏp5/5$v%)lT[6ÞCE|Aqߴ>K_<b1?wy=H c$'rHԲo?`'P^7j\R-eZE#[pEぞ0j(];ӃW/uaQ=WXl "zR.(U]{8Sji=e0(zjl=磫>#K/BRDq)̃B'r '9{IN"9/DŽ u ^1:Hk6O(9+dCBY]֑W 6 !"VU޾% aH\~cПsT r6`ѝPW? $\Ǥs{jDkJ2Մp~FG3a] -2:۞^`0M`Xj2UU Ϟq&=3~CyQ~~NA7x-u*'7F`AZ}%սtګAvܒ;1|.-_P{hΦlajr-yZZ+S]"'yT1 ƭ)Q׈_@aZJo}:HTS ,ۻ Qx?%~N"ͮՃ6ʟvڡ ޽+RϨ }oOOCkx$w%R?e3~yg%i3/#~*$uw,hPE)zM#ټޢLRD`JucM6غRQf`ɾ~%2}H;sАNRiiS a3 CdEg qb[-EOGLk k•^ VUH2㧂`fJȅ<R1ѷs7fm'*YQUlFI:SbQ oὓFE"r41Ho>8x/ʾS8Nb'@޾Hi{)i \ۤ{#KaFrt4#[ }X4X{]γHn~*1VLP+_BĖj/4:[ MORZ/(zq_6fSRMkvRF̜xxFÕiw1nVyz޸ƞY3{1Ky[vC-01v jT(\F:̟x`z".ɞ+O]sſc[(l+%LYNTR6/3,Aj;Fvٴ%öY2K&IjCZ08¡kXV(3PD=;`ExQL긡8 $v!)#.ۗWس#?* @ֺ:yc/KA(}y.7,hF:L6d1yio7ܵnX.I/~` ԡjl5LMfօ4bP݄'62w'0wMHڰ2) fmhI?C*Qgp5x b5.ۉ S0)4|);ācߩh9 ®9Tn`^6?.-Am&hzhҖS|ao< G~x9Ⱝ$<ұ2ot+{b]E 5 'I>Fh,žG fc~\ ZAr߮R6pRS҂W *i|'^ cs]z31)?M.Kw/H%eG,(s}` m>ͳ̗īaR+kwc @Lx@bp[FZa *;VH:-.z`8g_=5 X_o-%'`iZl-DY,/k7~޸lw u˩d = CL%(ˊ vl,82 :0cHB^cƠ2(Ԩ90ˍZyr؞|pv:egio*cGpvHjM.j{㏼k5?7F_ihw> | PÈx&j!/\MO$[Q"MJvƤ <eovҵ( NNoQӗ9T {iNk SJR o{O&0623ݚV**^cӽ qCX[4t2R9Vl5 sdt6Y8apng ْՕB8F +_=]{;5cՖftB3PȲ Ґ arX djW&B>NkB!j4`㰬AZn7g_kM+ڈG! T4KĬs240WCѰ4q~m?tmTMHς; ?1=%4K\О㒑k+:L VP`(qջʃuSV vnt~7H7vl]ӑO>G"W {8h.i4O9ڸ l#XX%6x9e+ن~nF$}K<։8(u;cVg2.d:#C`+-ӿ~JUZ`AU(:~g³DeMo^zسk C_΄VAzKsu=^JZ[^-&T @EDU1,[*@he%TTܩL *`[{u\qΔ{؃#-*JFkBz=/R3["TP w~pqsxM R7;Ij:fCmvb鿪,()@ ^bGSEDlJ(+FU^jfuaZFPj5HٍNڂA]p*a.u;)RA04o n+oۚJgv{I;nx9 b3(qC4q e2Eo⨑ Ѕ6znGk& 6S_oRDW d7i6inw:E{MP\Wmd7~5s- qg(/TMg aGŅ_fU}bE3u5!"I6\H5ItHb_4+0L >ԛEɃPJ,؂1t~~ffUijThхA(SE#g nt.9eX?evbo96ظe]냊.;i<ȂV:''|2G_g7yNhic<q$F#ሾj?6|yXZ!S  n?Zvكk>5Cc„  0|\OFi8=:5b&d#PˊȕX1lp6qSG_b-J%1cI~~37;m+Jx=$3*r+se&ڐT">xF>ط6Lpe=ͧ xzWJ/|KQZZv|_cP 7وweO[$ٳBxXUqv -\\,9M!#ۏNĎ1C]"@p\GR#^%NEfxr& -&D\!{K݁ak#.|<2өsx6ٸHX 8:HGOY9\&h+t'{_S3BXW,zX+5dh0a;)#4 (\DlDADdI᠄Dys[/S|RH"]&+WS/ɉ@nU¹{捠sgC2f>i27|^yD\83C8kp-q X}'-0eb[`SMKvo_|ukG?4 jܱ6gn @ʈ}vWpUPɍe,%diL ne<\蟇or~,[w Ӻ)oW>nf%COܱdH5P ޴߆^*%%6.bڲAI(\WL} kЋpw|rRwS4k~x;M hIPt~[N7ʰںWoI0" [ W]o2W۬q\e%@@FaYt)NxmVC<6LiA 6_֧7sM5%;>=ѯ| F;_b("лܨ['c+i"(ADYToTϡ(իx1xwֈ{ RC{W8rW׺Q 1Dqt_ȝ=W=N"ק{߫}xftʸ$!ABH2$H$FA pxDS*ڛd'FUI]@p;" f:óDsM*0%CYZ%~f4/UJkQ/r6.ldHaf+TsKA B3cbRb)#.v{ @(bj9\>(J!d!djE*\R&&@ʱYqpRd"}w|;@qC"]{ iclv!!Xa.|HIY7LOϘz~6N]*gp 9+#@ A` Au? ZgMI)>;mY)=~'zHCDdBB@ V, oĖ ׀,qOU+E5{l1ΛJ'UC۔!g /89^g|D)!N;~_r^ 0$})Y) ^ݬYSޘ8+ RaZcC4f;7:LD#A,[9 aE]!q( Ia,DʐRA !Ap! U3X*, D,% p,_-P U0a9p &&Gd* T%DײUJGi%ٸ`C9 &T>@g>vw$$Vyi=SEtD?@U`zHEa3pҀqRYdz\ kfb]1iĢ%~W%XZu &0[o~vw^b^c*?=0>ޔ]&s#k!ɋM;̟lgLkXVֳ̪Xc" ~ X,Ҋu^o|8yN|:.TP1Ҿ9KHqyW}^ȧ2Wn-s\,&֝`.nDeHɒL$VC@MTఖЯ@'+m=Hi8(#pBMӶ!)0; .t# 8"Kxޏt81/zUﰋWMyp[?+>CruإR7@<8ůQ}r䧸,^$Ihܽ7Xyܰbg[9 ޾S&忽(SC]A\hV ;2=MsUMAqc)&f ^4fѸpJImnGS(BaK{]VdPdebca2)9Ә6w #[f71\ !lͮX7f_4CT; I0N_ve,OIgePh?2 `6M` H~5!'FmgD:IEE+fK<(64]3VBiV%dqEE 8~/-ߴoy؁H9D;jŸmjk"65a!sN率ahgذB>]F|`x-Eɂ4(W NjKMie`I={(Kj ĕO2u(Wж8Q]Jp]"n4kQ2ii^ Xb(A[qHrR:N2¢][*ɓ\;h XVI\pUb)|3bo r:< irN.1nThe/p&p[<='RSl{l>"T=V}:Jvkʤ9<;bUӯVQVq&P{2!n"|5k\r(T;POVyPG8fe=9CŽAfU0I!K*$&~˜?@ {9 .su'Q a2I1ZKhO~bbq{UhoZiq.k#qJ4Vν@Sb=2{'v:QUݥ5ДsNmM/E "?ɤB\kiTnΞ$Y[|X|?ɅDbQ2t ՘X1dG󝃶)&>hfwCJEp|5דH Gk2h:ܞ`F zR@ Uad TGnC܂ # tэH.0%;Yȇx4%W>ч\:*ŀs.A҅'꒦Y_#{7tX5qVдh7MQ @5_J% 9OQwj8o ,Uj,` 5:w-#U ĭM4!& w,7skC=6υ](^FHŽ  |wz߆&YXbc& wp g^4!k~}!Exu^3Nѯ/1Ƀ "jy/oA0s{tjui?=r- ;=)nN {Ā G E?^#TX".tsXRY"\ Ax8z<ȇ㱑/ec,IPC8!8rbƑXHȢ@FfD` `A skeJDD4IG\X!n{{099<牨̦S! ӘMV:\5Y3AG#602a,j@Q>7?$l] ZMËkN71pH#j/z{u$UubChziw{NO͜8|*' z9[ Zv$ $>p.c5vQxǰ>} rnدx5C\^J﮶w<رhՉ\C*mĆo33)"x1MԵ73aߗe~sY.0kǤsq0}fKɌDC9JW!WPenك( t&Z#Pw)\(Џ Gvk&lɡ֒J&1pbյU PbjiPPurajN{ͻo f.(1bYجY=yh?<҉&^V}0',<3#=їÍY7*ed*|s#AK:8 )>s8 G)欲g;"Iw䨁֟+SoJOkhTknxƷ i ] ,]Ѵ#Ɖzc"EϽ ^oUvHP?S8"fޥS >3ji%-3vl^Y_FR+5ʔw)<]7LStzwc53ɠeWA$^[T:Ͼ7dU^u7f>g•1MҢnNqQu]*@` G}_qLkI5n~tfe$pgh$lYG09l<>Haͤ" [Diqf$rhc/J"_rq6d#@?)[ #:D0&$Ie/'TLkj'57N;\F$I~+ { ӡQ(dަRJdzvOP7#SJ+$kd0"^)N-LSW2'v(ݱlL<{FAWZ.8/]ȭց ;jA0|ʸK`1|nՠ8px$&ܑӄҘ-<܀}T) P{h?L\V[e;{@$/C%P|D ["ԧA?NӔ^hKM|[ڐ^"2\+7EwF`1L:N&Pk)>hZ.= Gȃ/K΀V<Ј\LG{C9InjD#wypLL$3b Pw]FD4 z٬RW(<ւUc,]uW/e_'V``:@~ŭ%ꋋx&HE w@a1WAq\?PR$3)&ȬNv : $ ?Oocz5 ;j~˳'gfJvv`TeHlYi* l\@q8dC৵G:iF KѴtG h$lZ._ނ^1oʾ*X,)Zl , {hVNCͮ %@[EBB! B$! B$$$! B$!B(<Ѱ\? fLق131 ғd PtCE, =tΙ +7N&^?OEoO6t^j+$q> |wM &bF`"HU H!`ȇ")pR((@PԕBgr"%Gsс19'Fċ$8b:ElʂIU_[.YBJKD@Q+PZ"p:K?}G] A)awuWWRz.^X<lLq%;Q>oո!fn(^RL7p!I" HI "@udS6CkF1/Q%ãorꪧZMUZUZ}U^^o,z\UkUlj<0cV$6 rdž dh8v0[6 QŔp#)JW`En ݵ+}V-PQl)DHBHİPpZʼn%K6!$!IN0]b0`O^I[oN.wk:#U9hu?րTKz޻k fy#B|FJ(H@BG`{O `=@ bQP IV,bZVDR IE-$Sr=5ޗ=\rxNp %e-@c71*;H>v@{Mb``zuѷ&(CF1gl5IͶ_w9lZ^ur+3P銾A@~kGt0de?\ /INq RX>RK!:d4=)RHqud6D*^$7Zܬ4yўI76up:Cz WJl5f+n;;:,{C`={S p`7˖0}܋ ϫ?tqδR^njV0(!DO[FBoP}| ŭd{{K@lBWT~&h04XQuJmbr %[lG^`\hؕ˼VpRrŽG\+M07ޡgkvyetHUn ʦb^j*rg1BI r7yݛɛP4i3.ΏЀ'7@f,4CM2%\˪Q;w Wi~HPB@-} ׈}0UTF:qqݩgx`}fX܏69;8xYx <\p"9Jx^b*|08;-D`ukzrjP_*Ì#aiԋ]ЧbРmjf!E8fkbab bYnһ@!-w^jw+:Ae.&lͳ$8XZ Kfс5PiMi%W,;{3 >4X}<*'1|.lbh'77 $\)$7P`M }K&U`~oI4;k,͊wƍ1 /j3i@]ysE` Yu/\Yv]YH67~} 1]@|!3Sb|Ы;Qd9-R"2b7*_~]:MkocI4NqgA~P(;/H,M)'歴Mh/_:jZ5!!bȍtHk>^&tWAK±V::L+h lW=9Np#.-6ڲY8Y^υ%B9>z,({&j&5~g|_9~ztWυS"rD 7%Ek Z 7sX,1%1/T0I4#ɺ ިZYS3hʫ\aH[rRY! `M#1 B 编lKL1 `2+\V{H%"$ xr~^0t޲FFc|7~;`&R:;|y? }:M=6EH Cӈx2r?8 *`|py7eC~'軷}GD ?[`/Y7??]ʼAϪyV ) nHH.D4F&#ډj5W݃ki~ۄU"`ARQUX~rp{,H=)!A2"Ѐ/`]5)"0 1 w۶SI}0 MŎC`:o\rj3ޣkIm:ϝ>}$efK3#0 7o x H1w{`)iW,돁6@QR@_#'3|WPn#e(otS͹⼮lz!~u `a|T04 IB2b]4bӛvΧО(!ܹuH|gbW+b (?BB$ I!!! $($(I$I$j$FH!! 8T3sEbՀKr0N&-[>Y6016LϐsT 4%Z߲꾼1yd}~wC>i2s:c\pJg5lX ́AsXs2hCc 6J9o8g $=~m~?Ԩ@'F1.`(!Z:3^?)-V]"a=Kv(Yp:PN Ǿ8!E/W5zMZC79FXJ .&H\m׽~j}u9nh*|9߾.Hw~bpBiOGWއe &{k4K(!]SeS΁ݰh2 BCʸ]o>8f@-xݿ%s}nÎ& /I3F%.Y'18*=AYV z^S#r͔]@(|/Ʈ@j׬/O:*>RLg$%ts9+XU,%}2nCdRyx$`gIŅ¿ńJ!NtwBm FV.D:M Y!>+ '.bn,Gg!>~E[cE!]&LCvwW:>7^Srlm7r{L6!q ?);6/ܺ=[DҖѦ ^QU[5\V/ |<塄R .~M^,ڃ<e)Az{`()߱w6~%!mfV`NeE_Dp JQPޢ ]uEEZIўO)X= LKL>V:$/ Ia^5- !Zh-:XaҭEC"(h,w U3nIhj{ 5`#d3 !lPDך: ayctm?M [F\MNL-:q$ 穪'X`9vJ+jc]g ^ro9["XaJd?$6Y vsބr)3^B |ZFV8<<謯wvn$?_Ô_Grh;̤X}PcD.mxHJ3}r`G,OS<֝6[ ߂{w>?xt`h"9x)P"tX c.oĪkN>;Ί|Y͜mGR $s@mPmw{!o< $~)(I;H;䡦Gq8 s[Y(0}޽sN_9/:ђI08F9t<*O p>i+l2aa 5.*as1ѠtY]+_"0&:4 !m"" .@ލBDs!HLcfn43;)c;9-67́}(lK|a 6vu2Jݵ f;oS#9s|6`ةF 7l5C6a`3YKژQAS>6lF,qv *!6,"A(3@ o=c0f`-:̊!`HdLSe7 04i׳m;d:4HCZBfd&7'=.g0gQaYi X-̴3Vou7h(3cto>N"9+a+nBMXCmk3筧pR;Ɯ >rUlB_9 &X&`&/d6M2f/qTD dg;Wg6 q͌d9Jc@$##eE76 ],܀P۳u $U@`XmHT[^"H$) Ee)`4RӲ  h ذ vLRb;! CD!2B$$ up HD;VػffjH@$$$)*='Fr: VρљHH?Sք]Ȣh.bbSF%}^!kOlj0l `,ePŹ/Akb"ް`r:Ԙ( Ϫg?6l;.76.JyΛu+ȥ7X.n !$"diCB|8. LU0 FAAB(ҖMi˻^&٪՟SSDļ6[F|-Z$.i@/OYzMHހls h B@ $K#3` NT3!` 9JkjCYu3֑Ϭ1S9I! Hx]1:cY4 ڗvT)f hx \Ɩ09㋆GX^g5%S%0ƑFQV4IV> :`2KQ}\}t&q%e ygF D\1`@cB yR%{]NܮB"'n>U /}>180?̗}wu w+ 7RNBJJh4!t  Ha+ZSOs~'>~N@1n7$)؎a3Kb],;k~UNE{]*,E"+}xQ<Jqˑ:NP% @-j^Tɐ8z{÷0= 2,?RZ~ 1 $^DCsu|곒f|k <7'&u/=TEiC l.i` @$Ԡ`@3i1S?os}~g{HMCCXcS%<] pWyYrdOԽ7;:=g֘\liV͋YTŃX/y$H"U,?M0) r`@)5}XXn]"҇DoU4$y軳)~\xKO C_{)|:Xr?S}"6 ~_<ϨUsP 0;Q~dq9r)"E9v@H9=Ó!$$d1$6eW{_h pmpsiSb.zj/SpUfl1\P& A 3Zwiުp@]j >NH B"!"&>W5q;,D T?4#l>Gv$rzF"8qR%+$@)9I4bXևRCrTAG:;a64{zRI ak؄$h]q/'OfQM xBstd\a!l;X <2Q97H^i[3ӻvHlD:Ic]Sj6P0(,Ļw(ŗ ڀ)a{ڬ,ǂȶ/MȱbL*JV- { 1 H"] %ȍR] :{bKX@NLRj H1)B["A>ka$"h O b {=W(~9ANvJF[[g ?Ц&\`.6JI̗Z1aT1%_&FYf`i&I jή%Vyܬp Xd^89$  f3Y4xjquZo0>+Y餑 fM*7,6b×P Pc=]qC}"ܮgr(ukS&ӭ6`@"bU t.ޔx 'MnjǷŗ om<@R:d&.ٌSiifRȄ$ u*6E@ V`TY.p`q\4l6̍ r$ق!~aKjT2h=i,iƝ:GN$ 33EE$klЄ4+(C`P_UkZVeXֵ%`̠#5GCN9I! !!,!R0oA6.J"@wdQ3C\D r%ȓsP܈@"$ͤ* UT"pSGBCP6S8Xʀ  0!!׫BxI"X&%?o oHĄ (L`礣 pb@!(1R $,H)$!cD!`)A# R9 q0cIۂ"JBez5SS?׺qh}xtwM-7Kj0,K,HLAr1B ")" sHr@Bso{F U cz޾&!6OXAI?CM@N9 -aaDH^r<(E䶍Iݗ `TɧƉlYNk%4sʔބ6X,1 4N{q!@/Hq8`D@&k* waW3K;); >3:mѰ.o)g;pYr0d*59 L -wEKw% B,]≆VhYf%Y($m4r֑lO}Fؚ6L@^!}͘)%6]+5ܑ{dVd^Q휷Bƃ@ˠDUQuO$:<+'3.~zN϶w]Q, ųx"޺6h쥇Lk~%;\l-še&‹l]N SD_PO뾑4HL V>cV@pA$^VG~}k NEQ`j{4߄ƊAnhlBBchOw ]xyV<[OUZcBcp+ pl*<021+0IL["MD ^-%97)f%+ B'}]4sYV\Kn_V%<+sq`=ם5WaTs٭dR[߾> H9qZ\?:KAb߽ Vԏ'S:0ܡݥKqRpx*Ԏ>dUEy_qр\L>R++ iM'A s~)l?D.GFiz$[>]+5q[ G fwuu6$?vbmzAZzc @FQoАC"q xlW 珏؋&}手kSV.Q[;)A6%9gɾ_xpP[ ]\& ˋP:OF!lg .@;O$v#0=$)t ,oUKnFI =Pi P/1^.{V x2TB9GG68 % 6]w*m5kn3Ҁ9+I~A 72oFe;N' ɑ+ pMm1p&~a;VXHϨ jY{QEfZ+9Avi(:_)usr")YRդ 3M٦HǓH꭯mۛylF- V!D:,88m(p!ܠx\)~0l/:ǝ|X9*H~Vȏ$xp8.RVk&`\~YSZf-N 6m޷v} g  s1?j\.Qg;qCQ$b"%R;Rj4Okn6^q3Xºb%  wXH8;/Lvf#2|}_3= wl}?֘>msqPz/_?XqCᩇjA8H  'NC 8`P clSluIͩQ;2RiK1 M; g$' fO΅iy]ߟmmi$}^O6?σ-@DL Uk -둂u7(&()B: aцwpBM&K7%<16KJ艦MDX4MZCW.ZFB0$_]/6Y15ohHC"M&UpPmnZZ[) EJ#BYt僓siDPennw sD+/6, Fѥ*ډ>#qn'F?o#iZb"N٨mUgP^blਆE]xPw1 Fb69ie%NmYs~0rQВF};g5/3!;dXۓ2 ]@@7Nf-Mdz~eXImDD?'̇9R&+lzEE|i5v>ny>ʵϭ7m$ KkGd\ht0o`?zjf'{@u$ɑ"HVjb,G,(($ iHew#ߛy= vs<+G'T g,e`F‰k jɿ#d%!b㈃M{RۣsoVo`V6PJ&!eZi1*hk?ZU]D 4`xm6(gy/s^cƗղxk/`m -B> U3& D$VT:"뮧ţ%&RL+0cЗՆ_[hslJؾe&nӰR`@zb4o+Ty J MVZH6,.9ܑ)?WM,ꉲBPNځ@AL8;T182s`@='aUnķgQrb/x%ٹXdXĉMՅ>6!H& .%6'ܥ^Tם 9ߤ/`>#rڼ .Jg1E{D|gecE9୎`xqq".D${OWdu a|nˉx?n7?gJD`` h##,_V>ph #hnyxi<~GOWe?X/b rB:`dX1o;Fd;xh0 C4j=5f9ADmv816<6}Kt;8؛1Lʍj5sEg͟I{]vE򽶵9x.mfxäB7ªJ0Rr/1͇7m@I P-CN<Il1|g$,Qc Ais@1f=AhȾ Yb>Sc[ZypM '/~v"DycC0"awiHb*x"` [#<6wV# OdBZvj|?-:Z9Cၙ=@ bW<_b Clm췛툞H,%&^᜼o~O&$`Q>99S/D")CKǻ6ht#Ccmj4]kOM f'F.nw3B9~ZUcxV::_ @7 pݟZY:cc"Ey w`4W&$H'Z:ŸļP`19|f(t؇t-WdsyFc{-z5|%? Zn3.bJSRYYL'{ 0Vp#tE l}_M:V=7$ťMMGF33_VX"\+:u4?@h w۪y3z9"Rr px3C`[fc/I@] '_Lr<3K3nx_1RRbx,ȹO3m~˘|hcoKc=oJ+iMlXm|sꀄH`,@FRL&f̵i_ J5hbx?cʲeҔhVPl5DBxk_h= )Mb $V1W5 Ȓ&F6gcv{ )&T DOقVp+G փ 2k5Wy?PߍM>yng$X"-6Ţ^./b o Xx@p5( ˾FYH=71KJ+* 5&qNuI|n-^U5}'/E;5PevУBH֘R'1aI8t[ދk ~3oE^yxN{laiz ttHDdI6\np-n㘙Og.a2ihpHw}o)9`SzW4ERX%LF~9VYr_UلOT>)]} tROS136!pqD}RاJ> V4Bke(NJqգ."WtO>@N&,c@07EDxФDA-p2Fw%M*3ChM*#OTD'!ʬƕփON鲧IV\}1'-W~HĆI3QխBOpKMÿ"m)wBGEki3;FM(([S9#t ]8^M#^mu^A ƂCcmGSS=Lhd;\K<ϣDS<<DB! }r |SA0%@r) BUPv VP H`c [*R|W,WSO6]v+iQV6[k'Ɉk 8?E "#JWTVA*FZݹN"%R FR5]_ƙgG2 g?:*y,mrE Wo1.QɋWDh wr 7K+UiY6M`>@>@q"";a*M~ 9 *%P.8MAD (-Z1 w[An2˝4R10qyn0NS},V mcm IQ~XR*o6g/H~%Gsj\RrC ;`7wABgnk}[W@H LdNN|&fw]d rYl.toǣ,ꇏ.LXZvKU<" M?0~Yڦ(&schv P.lpɻPƓ˚Xvq#%棆х&V{l3 :ھوFHBr|r!/bѱd~l )K0j,mW@& A֮x]le$6Ͽlt ^b* C%` E7jDT`T*!5 )"c!P$P_ud=<2_d9x"`H!!!#:r pϖIrf: P9B 05n%Sx}VSɭ*={o5pWhaf\PD,򘼢IC"z(s ֓:1ZEd`( "Eh"D;˂?L(%ycS{\!7'p}r!UU}@य़z"_Q#/}Gڱ ؞40@! .ZP`{}w[> P!~o|xI#]jk~6qN!Q:m;Yn\mc-,HsSl ,Rjk۾ӈT {;{/Oρr>$ptz'Td g} d5ҫ"nww0 [{!Gy?T_.K%f9$@Sb#G–/,3+ZO`Xć.Iq3IWyj:r hE$]-6BfoP/'`ZШ>?˶ul ~{sJhu",A㴻kvyK_ ĕhնJnb1" V5sVp:ԬoDWKbف "KV ;"{ٲ}0OB$BK'v շ@"5\({ c]z)jĄ ĎcdͨS]~a7MܚWs7ׂ,/|C~{ڕZjC* }bꪋ"G}NFiJ#kvy3Jrb=2++XbBmQ*4d=Ob %U\{_;)穏wT 7 \-T6( 0vMC>H{Ͼ޾O4ϚYl+ s,2xR{\؀&5)%J`f >Vlzd]ba!( V"s4NKz$=Zs>(Q80D~0K^ޢ*sS S>,&g9쟧_+v>ۺxh8~D]Ӧ4 3V:  794I$I%$)X7An:ƎX(|n% Tͽ[8HV+ !LXOx22HHiN}KY)0H>$?Cbp6pvu6E7ல 精7[|>gR k9p@ħ MA800z|_r\]IcRH@IbI! ".[+!WBm沟zk^_^,-ni$m_$D@ao޾LTN?Cu !8an=y4 a||ȹu/?zE*}gh)OIڠsΰ9}  "]t@ `"ziHw[A |uKHZF/YlC'{&+)D@S vpE2KQǤ8k i#yNFBK 4@M PE.j( U'P1N`@ΌаI_U{hUb6PW1;0dIM"o6WzA7:.@֫k^ @p Z,AX@H @ӛKu80)QI"*E{}*$E шc GRI% Q)j)w#<-PJH1"v ,DNj Aςf J͠ K#HHH @`6 VdiLA"q׌@yOcGgBo~ =_ ]v\ "_BTe5Tڃ+ q~dϤ*?KʫCTq E2*F/Y.QBG/Ɵxh-%\;n+5O4V_򗁃;nk+3hh ;Oh7] N-r:awp.gO2N^ jр&6 d T}zp 9ZcO\F-\ܭvFۖ:6{J\}t6ak}7b$To>bP 6W ޤ@Ww3" vOvzl/Zz([V,2^Mΐ+15ENe^^tTѽaSbOF֗ԭO?j# *PuQ ;Hq "UwMr8~MQ1La[pebx,Z/X̗X:";Zp嘎t 67b0ܶ3r{8wťI׋ TWP&'$l~R0e SF!tP_av:)Iד>ŸRڰ^1A:I~>#?Svgw- s[4 xX*˥ ޫȏEW 5X6) `խ@ЅaE 2)SXtBqڕDiz@/WЯ/&"`'xK1#V6LwDD1)SsɮRF\zhoJ_Bىx@};:-Dk[Kqt"Yv/l*#ãQ`b"łs' 8&dW!b}dž '󾇍v7_o saJk=G9  ,mK:&C!;Zg\"maQJk$A#FQh$p+T$G}O{=I}'Ǡ0(7UgzwsP,FŘ 0RnCR7s0m 1b81Z+&٦"aq1}saw"g?1#+=ze ?7#x\UgI;n9<氣rCyxs=|`?2ט91ueb8:Ӫ#O;Ӄ%//=k@%+4e xijErw0w}쳞O+, H>8[X0t3٬ 68n)@-g"kiSQg ߓs9 ǿc2"p~"1_Eaf0v•-7bVh1w؅PD~"Mצ+nӤad 21 R"Hq}}xPjL`g$xVFE\|! D0=IϊN2{KGGjfty/amX5 [BEf2lA*>)7Vczd5mقiklbk\:h㪧ƅj(TR\ ٩lUwW@ `oQs,' oMB 'aoBczfOn/`8>3^GKq4?`G"8UNp _YWY * t^|ڽ<+۵בAA8~0=*Z@b? dp F$0Hк¦C^(M\m IR8bc Wilo*ww2+TG~^Y)awr\O@`Sb qdIp;t]Z*ټߢ5 b@n7a@Yؠ >MzL0~Ԙy,⒣ bY" GX$~' S yхsr sK&%޻jdĒ-/J9JkKiu݈0=`<߉E`mo{ J&tC "`kv7|D8g7]&6R9MZBW Ó rW0{'!)yثJ=Un SjSۭڒ!Ą0vxwSr]xDmp8g~`Ns&K䕢+"bn@[ DSi/D&h0{Ͼ;2e`\ DRexٔm/a[Z ţ !Íwp.gwU'5v`x.Ƥs ,Tk a@F^ҘnLsL~yZ*d]E~K[6:ɓxd^!/h[Fq!e Hm#+6L4#=P>JB(UV+ ;a]l X$G6ʭK:lQ=cչ5 h鳳Ejj4W'_9$~ݒ=WgU5cWh 2ɞ:dߚ 0q -[D?P|2j'\R)`ƢU2M \]MF3s?EZMuk;}䋳"m Z 87_=r\_$` ߃.}l}̕5h(%~;⩳HlTnh[knf"4(9֡<8ː ?grUkDzffgN*`;|AܮyzaP:/yD_"6-q1^fǠcMu&xb/4e" "Uf]9=ɷs$9>!1iyq),?$ Y:I KI>?DrGuNriS6x%,+c!@T1Aࠛ\ :p@"^B:i }9Z`C3h OH>" ,:2 Xڇ [b?_A@EԪ@I$aӰT‹tT+mdBKt kSpŢ4P* F--%͐ m #(ʂ)0-K.9Pf*$F) 4"1JX,1*1|YUb a J&"}clfg@DUt犢VP(0N3NP*ZJ d@c"~/6dY?`pCQa8Bf6m˜&o,MŃ#h G U3T-|56Oߌ*-KND!$bH`$:kW ;9ϴYQP؉E  0 oT^Hzkj-Ԛ& t+D8(5K/r63XZTN &s#:4wD *@.7{X"YG޷oNOz~s^t-Cs4) 'KE" $Ъ"K Qr. UJ|Ӳ (0"Y qBDI/7A"MPwF빰܂b _~ݹ` ~q  @9Ic!Ֆ  3rפz@PVɂ/k;d}Y_hxwC}P{s|2`MG#8;=(y錉Eݻr$:#lLpn}$2 O S@{&cSBpD`1}{rezkqЇެxIѫa`ֵIQΩ U"dc jA;9gcˉB}<2{hhzME8 REeC6]]`,5u[8+>bM1'|2Ntq(n^HZlhG$*A3Ǣn2UM,=(&p<{kg+'DGm~a6bw4]ڬ'@^dnuܓB=S;be-h|$wI*,hU +*5b"薼a"1+ o/ Dʶύ9l$oJv'&u޿ځJQ[/~5{ PBf"D~ FUe huZ؀6ו$?7J"f 5؂uwmiaj|GzLh0!J\G,dMʥݎ[_4Ÿ.mӢFNv=:C=UK&nZ2l״p!62s2jVMDMg"U-gC/ݏ\4[ձxe40K+u}  $ )0e̤`HRRA,Ŭ1HG &)q0^Ib839`yaexW#joɯ+yrf NEӾ};\A *d0￱ݧ~^rd8Dm_׍'L~&V]zGm0?{k{i/׹ܤoHD>'sz2QTb`5c)"O R1.8ک, W$tü< \WO꫼-6*O:גj5p޽Ӑo ըrnFm|,tmC}HtEl< v7ewZ)ɛE"%| e`GB"nI.k_ ng,/{?R=- yfJI bU`*?L|1 f-{5hzy 5|QsQj(AlH>03jdO$@d5R@ta> b .p ! ?aSJ5j@(  @6?ٿ{~c.~Z>1` +@xU@abBlsv÷D|ls'7C+ HJ)ݧEG~g?E󝛻3a+d7n/{ @өi$b @t K [9~J`'ፓehZqa$4ys4 Ep1Pn 2 B+BJD G 4x1'wscW[R / fCE{:^tqr" g_=GEU9!5=7Ky { c9;S3mSn-?88_000lOh88D"a|4}B1_7s_ٺ^O:ң$߅+/g0t۩rvN1mǓ ^o4ĉRZ広c cFeL~pL53U//g|쵖I#UA)YɆ*;Kde˦E/g-lu">] C4yÏNsL`dGt5ѻ I xZD4 j18uIZ(.'*h kjcƺqJRJQA}gE%B"%ax| GDѦmb7gUY l[aqXB;K$3.I\舛鎮a9x+Ӹr, F+!n-40rOE>$T e^XK€"h"6[˨@;o()F)3tH^cq ^y13q|Pܛ\s-E(:r^&1s`0 MWEQ{;-lZeN%(̖ $:M, }̀6rEX y HQ` ͜zV9)US?I^w(Qin: % @ Zv"6l]{muV6>@BK [Pqc.cH=ti<|l> |p*~Q 5]Jx>a}~!x(n W,@ \jWжHƺ/xW!.(ګ`Ȉ/pml |93>芨|ޣ"Y(.m*ؿYC~Hvr|\ufIϿz^RMRE_AK{@ 8F :eAZ[?,&ݱј+D0{'j#}5(85񙈨1\RYM[n7;4.Ivh](aʄeU 𒺧ڼ`ré?XEkmHJvT LOEv#gO=u`&8c3|I?z_n9JyA狘b$>p  J<.5+( `^_`PBVXVZ$l )r* {5bTe2p$B)pK3elb\{T hTh3C-q*@i$u ]\ `d -Vww_v 6GVD%d3_w Hxk{^H"C@! ‚N `J cS!#f RL%`x{%ak K6‰.Bu0?6hOň'ӸNSq6O\L%X K5 ;C(~6C!%x47%tv*BZ &!<*Y൷G$ c:  p#GG‘LT/HTq;"IzKkYEɣ> H a lpk/~R)~,nþ!++,F{ "쓡1QA".08MpՠkY.)\JEHćUIb*\.;7t!)/C "ؽ7OI<m`ߧm)_4JRY }fcdz__`~#V!(btH%`XbV)z R_ҿ}eGpqLa!!S5I *-T4k̳i/* M,/ eJEyr40Ke% FHB$+-TD,Qb[9 Yb " HBG0-)V@|+/9^6% 1@!U $e8YPCi$pXB ) Nhd `A2A"\L H /?~YS\qK3l2?v9$;_yUʪb&,$@b"0aBHMؖb"T  R@cFBE y{)DA7;\Ǚ6u7nt3+b M :bzPKq;dE0l1eX .^2GH?uT|!R [Σlpst"0  ҁ.`X [1]w>kDq GB4.tyu5 ĈTq}wzϴ|N&CYM bM"B*DE&B!TX¡BW($ `%%7) HD$BŒ YYa”+N, /u.YR $U,EAE !LTMݳ{׈f@H=Xklc#dx 1Doazʹg`u^ vc״?8e0G P`vſ}U7~Φ[\2qW҇Խ6{Y$(sYF srJƶi1j9YT:#qk)@63xŒ[l:G⠡$Vt+yӾc6˧A_F|:SP`Blq;";aO dp/hl)K !nvWw_@J{ŭZnju4O%7c+H*ئ%Zy@  ?JnX33{L /hGAZ@ӥ(x^<'yDo9pv!=ʶ,kE(c!/BK5I\םJ{~`Pb웜[0[_Q5k/?>riGjlBx{Z8Uث`| .J3 RsH;.st?if"(_xR: @] (c2! iZ±űhl%o7~~ꛚK5汉:O(3l3.20]u!tGNږg;3Py.84C߆S(kk1^,;L,5 |OGiÃ:Tp o-  oHYL]!+<*j{6|Dq!cI3Mlv|/=GA;]}U^g9 /lOvөގ1Ks#p9@D-m ȻvMKZJxL2X; ϝ{RS)qOPEɥ>@JNc)\g,n'2Ppwp20mlx+.adZ>+~ zWF:[#44 c>)pFDLDu .䣐׬aXN?YON QFWεAsZ[wRV\?+Zs@Ȭn>!<7Qqdͩuƃ2aDh?a*I}pg+^0k>ױbXֿ=i0и]'E_j6۫ZoiwL\bjI#~<ָ,Ɓ(?mh}1{oaV-UՊ?y%o?D8)O9~xtܞkk:CӠACO*+sdWR69W`n*7lnO{Ñ^@K8|x3gCe̔NOX 6`;]}|$G0dn`n|b"P;J{7_+LvϽ7\  0Jfh\phugEuȈ$Hq׃ |S:Bge?7ن0)Gv8+qy|b\tq4QrkܵwIA#/8ؗD={&$Lc\V[@ b)p c|>G~3xC~Ӡ?10U_A:tk4dx@ᝏW. ~[@>aP$F,NR?>qR3}/,U ~( U 0 @@`Dl-AfFaq,&pS;~`{w9!qChx g;/'s @``=!wZ @1 Ͱ;o0@fFWć4OӀc,pd'8Ȁ0[N۵hHuw{'^A\`hNs)&q`R% H"  _]#Pgx\6!3d 5(d=l `1 @JTf݋M iHZ!@r) #!!*EnWz}I4B1"1ۈZŕj8iKS4)#Y J  T ZJ"ZPPJHQEevP$,Ti8CbԠCpRĨ EB@ `^G9i@ A.(mG\@ H5  DQ^'MC`C >^7Gy`jȮ|u KA}j;tChI|v.lhd5* D5i LES@ץ"c1ST~Ox1F˴{pz[c_Kl`J8~Ne]=Htwӯj4D29 wűG9fLd8o3 j|T7nn(QWg C=ɨ=9Sϟ涁R>Q !@)/yV]&'n+𻚊ʭƽ-E$ePSK͓ю +C3ǘ[׫RTҦ[4z(O!\o'J03RPlSj" a/Hm/Y@]yN)%<XQ̠rttyACFTqfվN}]sT]IׯyNCqZEdӫysT+éʪ J!);5X%N)ΖL-Axp'b8Ri_CL]K/t.ϗS!3a`5O_zcBTиMJB0^?ŜCnȐyWcho &$BnTYYZv΂VrY7ϴVM)=YդHw(F:dc[Kײ%=:ksY\0Zc.^` 4 $FnWjN*A)*?G \NЗ MZqreiǡ3Xv7\gNiS-'^Oeg~gsA*WIn),p  ҳchWSd|Xu2M.eBƽ>P :'Θ@zz^G;ɖ7cf!bB..Cg/d#7th&iԝOI -lީy:pGhȤ\t_G5 #$#ON=6QT(Q+2VʥpRVnW}URWdPslv>lQ@fO햞l-1o3QL 5JXa0:k^erJ={[eƃ8h1 AV `mKԘ)K ܸdۭ[7YB4;?8_ٻOW@Gwض^^vݴTV@6h0.(ΝbJ?K-sck7zC~ T"UA'\p  m^^d<)YfuQT-{.''Ȋaۼ&_:^{_50{\4m&!%ސRIsS~ Zb$Ef:A7U`Z>sFUw `v><>;zLVLo]] U*C['6|mT5#=Z?JP4ܠb}u|i)"GN?C6}_roRuR ,gTu%Mi<g 5,Vdnz6ʂEv)?Aۑ4p`*WvΟWKO`.M|f+WourL瓗7T߰jzkTm㐒'Ne[ U[ౌ塨} @` "ԑR a#ٞ+7xYy[UXSNI1t 8mPA]Z٩񩷜}Zш(L ڈ7_ab^^;0{2pөKpʥ &DO:q*˜:buZCy~/tNokt_,7z>?Y{+n0 `lЖ>߱5FcW0~MzR">@V ښ (vQg*8t"M1@E_cܮ<̀ E %DBq @|\.BD}Ū+`8!p(+WEi]))OrSB930fq(q k(+>a*S "0"rs\["|ϳ?{ x3ٍˉL$~W7ޡ|R'BbwS`tׂo6tGeD+5Ec@5 n,%9{?zTlˠ@hA;XD:a?zrq"!ba+*c8U*]m;W~/'8K\_~Ey[ ~$i[0x4< mC|`}ŷzG*H_&8Z|$NJ if]ȟOTte;Pqd%8z3,yaѬ1"Pe=Ia2rO[ 3? ͋G5kb<^~U<397((E1YŊGm'%^k .O&6J9 ȍk!碑|Ej0P} Ό% YgV/U Z]rقc*!Z11a)"3ؓ#3rZYD=CRF TRS`!dڢs|9/psDjε<#E9c6Cf20IPi.XFiS'Z1殖 p tF*?YJMfH+/ [@dHN$2RgdYD<~pi};:r?ٯ#Rl N}5$ƛXIX;48BıhdPn+@﵅y.P꼕h@|uB3i5ޱxNn9'I0cO㈶>I!*m BoV=e/S/f2L_v6b*8#2qDR|d A^e '̿q-?h$՟X86We|.NOlUt)ܳnC`gO:W rFfC{i^tw Yy;-#e7GVa$%C7ܨO] Т)I)Ks.3:-)/~6r:m: BKeʡ _2GCUž{Rly9: ' CHop湒ڲ?8Tryn[άǗ6, k|kl;P+J-Ov2h(zkw|VCPx"U`fS@D;u_$~`<:{ 'F*Z$bATSюǾDGtk@48fo#[ˤszm%:yu4"<ߊ*1NWӜP`8u&j)_ٔN\z( : 8r`)4w$"!pfu˗HфH<)do<а;텇}C!@R8ǿ0:Ex>WmQؖp˪˃: xsuh%HmN-$#RC@0 E aT O=Hk, }ZN^6!y[lNE =WM'ѮY@a1?+wcBN}N짚;wعy;_SgЩSv5Y_U2:5](1C^g淊@ ug  v-PVK% '%`x|dHFcE|X(Mnj/FحU0> ѤVI@aEQMƒPxkGۂNOBfd S'&rx:Z>,Q7.&v!P"T quxO}K} 9 9Kfc!#Y-cYeO_e^'|-PFж=>ǵUNq"e۵~[骳'ً$/z+ïc\M@yHWQs I +U"eawJҿ=8nMi) v+ߞE=ZTH6w1[y1`|!R qM~# H]= iA  *T4 ]?>z2Q{/wm;*d8M2\/C1}D}`!ɭh{5n^WJczM+bpr`+ } ;rFW۫@0"+wP?gRQ8Q/wP\".F;onahJaIȊpltj p{\ԴBk:sW$)HQN:Bz7j~:[oȟ1w+2G B 8#ϐ88d}2,UFE,A(!,dh) FA]/)r)+nYlܤ*K bPf-V(H"A'[q ((JXЅ+T 1BUDh(4*" T$ Aa%$(a)"$hdb@"QT$Z{I>OKv,?FDF1N8YpYO3ZcGgtn{_Efjôt' rRa>_nXv!ژEDT_}>Ϳ2Ä`㭕2qg9ZB s @pD(<bO(T: p8j7 f\esl~6 FD!@ޏPx3N#; )M#ʕ?iXٝwUHRU>-Nf^Yª mC>8kaZt-tȈgx/+$ ^˻lR~Ʃ15:y7W/>Y* D10 "|% (oGk~G:%[P2~NPCQ[_9\|Ji Z,j2߿AL_`yO:ai=t2lܸEf7jɢĦ8GD@ ;G\pGyT$P5]f `7^l?yAGP8A 㶳0H$.?߰r@ڞ&DEU T.!NtK{_y^),9 @ @>vb=tcWW^D% l򮖪hB,Pfq (R_PJRW??Q!ȚOȸ"O ٝtG`*| 606xЊO۰bX6 `#nq0rk[B0?#&:I8۽T'Up\ $ Bdgv^ TΟ 6v pan C0|x`60tgqpìulXi6#b[dBD $-.!#r(d n=?,_ǃ5p'GbN< n4`E;U?|~u""rA9VO)9Ou:K4 PiH 8]'lh g 0ȻQC dC0C'Q1MSuS&1߱6և|/7$v_G?-UA",HN.؝OSNtC'˂ !/<~؈⹓X15@:lhS&M|BGn4:Ǵ(v ˭L[IsO$2V@{Bj&)퀡yB$!MX8(wkbwv?'+@p_{|h{q=Ax# Aި6S_s{n}?(O&J\m zt\ʓ v ==QUf^ȧtsmEk}BKyuCFn'B(+(1;VnL@F.~hLowZ+ Jv?7SbjֱH,/"iq *$`OMuVm Vo<FAZH#it[&98/v#xmuh98Azqw%(C;5}qț-NQ]Wz;5?`λOO15}!s .4qVlwtdO*™P5ECh3|+<=‹,'@):^9-9ݠ~Z@"@ڱĹ~vF?l&4𭆲z򳍠X1[ r[<"mnwtv_%< :79ϟP8``hZxvںFjP_{˪Z?Si Ґ4n߭Gmk As`gOwPIX!#< Á)?zhfii]e! l:L@Rrq3] b\Cp5^JXCpM&bmEZ/+<.I͔;Xὁ-`7l-E0)Yej6qf0doQ6 h:+HabVp `kZS5$Ĭ\ HSJ邻6 ׅ\ f)K\ YI &9l/kQr9ׁla%(Zk-5xS,e(93v&%dž! B-TFXO$rz5۱uJSGfĮq͉J`'qBNQyΐ-q',tp-r尖Ԕk:]AMt:)f W9URB7oڕp #E)T ӻ!}9G}Xnb}n1V!Exwc:iΗ3&!iv@dn1m"[(m2*#*G9͐f_8C -XL!%;kx2_A#e]qVQqqÒGz*Sh "(856捵koofQ !h3 F CN88G 0 ``E]LȄUXf4PfRi.-f1) q0LD4s_AQ( !H6 m _+s@ɒQAv>4I\ۂXr#߳}ݘU\dVV[q*08+wZX[.O*8@`A0ǽþ)b  "H~c>8o:idBٟıv"c؃JҧsnNU%UUBQTlXJBxw:|~D.kۖVG{sZ &!) b/)٪3)9p .mӀ %? Hzy_'YigYdq+:٭51{gC8&@lp^{kjaC|{RT@EIYe))rǻi-1\{&ibm/e21%7`yx3Z\qDD@[&JP@.GabBZ;óXhyR bKֱD{3 *,vɢT{G?L}W,p9r~bxؗy Hu{$~X."0 L33sAG6\l,];E!F9NxL7W(J*L`b{\q\8Gd84#826D ,07BV],+4쥜$Y('R#m\V'fbB%8+PP?vİ0 hA0#e.1E `X. '^- +]`q)DTx pF$>dmUMQvL8L%GlT7ǀb8צBG?S]N×/?tQ<2," tq.dyAf BR*x1H4JI E!9bN<m eABF" Y-! B7ŸD(D,ف::($p;xF;e bti@0[=ߍSF=g>s R`r覨春g^{\i18$EiqϠ ^a ;b[s`Y7)]|Ex\#BĂj{o\WAn2o4=7lW !yf4g:_{cP;ܴOA\Bu+Օ BӍm쭥ݦJzzs?;񷙉[6fswh'5E{+yloC!~ 6o(F:geMca뻹"':ȳR{$_ԕ=8C䵡;Fa׶:øiVGKΚtbsl5Qd 4f˾4?&L/USzk fH8H_oxWz5/O ӐeDNW'(!3Q!xJL$ucLVK=%UZ/8~|zUX>:/mګ42XH4H|Ф&2 %RA-%1ӒѽijkfտƆ=w=%R[&(VYH$yCAK ]z)AS1#`*5̘=$47=(V)3TԲA`C>n2JhRk hͳE NV/њ-A5B0n3ᷝ}+i{/tga9OԻC;Pw(;>|M:+-j+"H3u`?c4"e=\$ZߏEϹS7h@6.,f`sǘG`BO 6[7"S.r]T?~xD _By y9SmZCLLv3DB8@:>\r`Dȸ!N^ ĽbUbKDʜ3zok?@]v6]y\1B. :kVX04`cVb3f>7_'FuBAK65QnB]@ URD4#*^+IX4$n. 0v ^#Q^b(*t194x[r9S5,FSCF~xэ/nG?Yw;V-CvýI* aR >LJ~޻|{c ͽB8!oEGOӺ``sa5N0j/$O)5ly8;jJ)dKrt dW42 E9xgԤ'SX3BEIC6W? JfĈTخ8Ra0u; a}<㘣`/RcL(P`@D^)1 + Dɼ~a{,@DZZ/A­z@`ǿ\obSN"L%&=J(:9<`8rkچU?TgJȣ/S0SFm@ P| ?@izĂL]}eL3/ܼx*CghЫsS bv܆r q <B0n7B@oN$ ){~$QX$j!H*K Z ($mJ *% % HD$ذRČ%EX UBH"Z%Dt.AՍuuz5HfVdڃ--R H"ٰTBbg?"@""b*6A+ E3Z"?)  p4Ib^ޥ000 pb.%CsQJE ,`s<ԴRrD  B =H>!~wtQ9'M|nw}$EB=|d]TD "@l>?KÀS GNG1/ UUQ/ӆE%+6;lPI$ +]gjʺf0; & '6 D @8@:@8HX$Sy[lYS݋Yz-0{WK͖Ws.XXE,0F㮨לhC9PeOyRɭ?΋]ӀV @ F @Z2LGr84ٔ \VfXŌEs{&gIq,BH >R~Wuj_]iuW&sXu**vB*0>Oy1CaD&H[`$$ q" |صUL/Sc9RRs=GHDS FuH !ADp1\%1C(4t m b;Q|LyoY09FϪzν A$q;T%-" abr7]PTg6:[o Vf։OM8o$ڰ+RpR|j ?IVW!,Zp(hq(it}&pX7D#67K0 F@s{ܳkB*>v+BLñNNfi$.I0 m5Mv:t^?7·%+~3~IlO AjXVq53R4뷓6Em60QQ"ؾwǐ-ͮ-gsg"NqA"LiViu+8Ӽ1v`e]Y i]rԠXL#m͝emAN @ =n ']x$VSX6;JCmfPS]G.L4;Uw Brfͻ&=5̲ٞA Wy}rzBbz1I)mLGH93R >iZ ȘCWxd/y\5-@p B!Dg6CO[~ ^p3w^zF)\0S" k޼WmךF5.2*aCEc ,o붵ގ8Wr`P&`iG]UFl- ZXv ,n'"D}3Zv խ4YFOC 'e*ek"ǯ 4V`!IM'$Ђn9*eyׯ} xd#X,_ڗoX z϶́yE vy GMTA^~=gS[PAaÉeTB'vB%13sZZƢIKUȍ"to$xfsnD*>w#v]=]J1=]Icxz裸sɒ9_먖> kY|*5ݢϜ]B`} )Wbb4klSCb}dYRؽV2^D.} F)A*SUnqǢ.CC#Ԝޖ]4sdIdN4p=U2=M>|i:el-xzl[7ٵ2h` 3PwVZnM8X,VaOOFgӣ*qWpaBWt^m*$D< C17.8^ G;w1=4Os(π:j d>{K!R7T+.Kq̕$Ҝ'f i'E۱h:#=^%'/*>}~5}f^فܱ60UhËjesDc4 lddf{gO78zҔ&AjrhmC4S;-4nBf}7Hj#*zك=!"%j*B)̌e9e - ̦<)h*gF쑩@dNmg^ZRڮXx:D[Ięfy2+͎PQ"Δ/tG6~ZˆWuR BF$y^LvP ?^DDH8'yCqE/S^RI%70DQx "!,l,P@a H`D  R(H(О MԤl!%?N|Y^*(NQ+Th",f,=Gc ( @_6o`.CG``W/GA?ܿ<M\`  y9p`C+4&9n 4QԢҒ4H1XE" @  D>|v9 Y[x3 W2RB$ L N2 "F2HFBdH0 b b@sP M.IZ.Cxn}(4?F EI`xkTeum:C8|#>Yz_P99%JP7l+.%78uz8Z",?$stT1O?ӕmf @22-2Ԍo%sGX쁩UT!c lU`>Th_m[!c `.QVgzqa3xRgu,_#;Cٔ uYʁ0'Ʌ 8 Td7D j.2{(QXB) g |mLxKEHSeI̠3Nm9B*&ev6(S1N"`͜v*! CJ;zFE`9ycH5zaQ!Ҙmr d׽3Hjݏnnsݬ]0#bn~9X#b5oRnyJ/;4bUz~p:}oT7koڑ*wUU7Tԗ1 5`4DtӊtnDd!OfuW1!Y3.S0aJG:BЫۋvؓ-PBd`6xۼqv**`S+?D}\&{P;;8B=C,//{6֐pVfˮ˰~u\ c?[(WnwZ01|}+ ,4 \êV (SpVޱrA5w?ĠGH3tOܷ2SMu,c/ `b#<) AvXB/R*H$U"4%)!@ 'OED!;A}u($`DX LRBUE#b;; ;_!c6P+&>`C/ ZرbX,6iR C: Db\X,UbV !X8 "$ J+c-Cal35?Lh/_7y>WyNv~@\Xt cg@9pbOwxG7ߩy?CnjZ#QYSZ{rH4h8eˉ-*hnD(λ2++MjԐ׃]70MY}EdKy ۫9v~Z5 쥅Hn oE#ȣuBu+PwSRfh\[ b_OB5cւ׫I1=Czh*+PcQ7XYhq@+~w8`CqD7#Uu0O_ì;WB )UoYtn04n|C-#JYx2cp\t۵wi:Wؘ8+)?oT|nzޕ&Tz\ĦT=wm*.h(Hk|뇢IP2 C ImlU~6&/%[~&)b M'^Ǻ - n^:w;h}E4}%b08S:!fS5{MSQzR +팀*F:m0d o$u¸Av(‚FWd%[Z2GyޓŠ`B'<̈́ė.i\^f$Sxo e(9bdKg߁Kŗ_xUz(la'M7ȧM΢rVS FRX>Ռ7 ӨkT(UpQaz۬/dzLQΞGlGe"b!6:T(Kl9;A+ RjDòQ >q@69#<V jQh e6f 1"ZoPP[B{gc'wlAɲ['Hl h6xf2.0yXiP5x!GQ边}A\?S}u $4 $BēPh˺:ɶ D$K !k6-Ncļb+(s1UKuQF5 MŷT@D;x_ -YP$(k Q66`ksg]jE5z/0o9##Wa$IX^,9oHn5mvlr|!ֿfͽ83HNS:ʴ'3$67YurJ&Z2o0r=OCH@5$W !-OBk_Pr{hfuBa+a ; Ev Ȓ]=dTX|Me^?~CL!V]C(1G(?%*YCx99 aL'I=Sd)e'H'<読8҃CH8;CKkyL"1!`) +T M姄#>+kn].CA@ gEM\ yN<@wO+P*OW z  jV~[Z#ɗ~#ľvvkēNI{n D(! 7zHc&PAnOR8(qLoH lwjV׉~5ʂ'Z疼xMG@tO Z0nvNn(Ɋflmw"!Ma/I8DʷskȔbn QAe*]97hׁ}G?&,X,9tn!qqHb*}ccf-W O\݂`iNr%X9^=60'ȧ*Z,'AY/Gn Bp>xҕBhU)y9&"&Ea)bAKu6"ߨ j󃜫=9XfAA鄵EiOLeV/2GkSL5?s^Lbd: %QV77_9y>p<1l\Ae#R7 UphCאR̤# mȵ$ 5&!e6JQÆ CXhގȽi>6,霯Gֳ9q E4N2hՆ*k2 "I?s}宖2yhwg ɕQ<ɤHj>#ItSxql5GwŸݞ q:.`] _MEJw_bɋ~Aue+w~ULψ}ջ[ƩڔB,uy&Bq?F@G/oxBќ"4*6m6[(T^CI;LU?z8MwW"90p/_eƘh~ټwuWilڻmwfvӀ+"ރPYZ]BYG qsҡFP<>9Α%@!gy|$6O)T"wvtͱʸ Y fR~'u۾7 E EH 0"b xLFF6~i U5:/Ci+DtI# cԥ ˱V{x WgOt/"_7v)kދ8U~u/c `Oz,GSdF*z)Rsf1ʭ-Ϟ~]{0 @)  <-6#2{ѤC-(8N/o^gaom j L b19!FJתj-z/_A6A8AU7K|* <`3E%"# RDVrOQb2y~SSӟ` C85Bu4ީ[=Le(aڣviw@L:wq_WteSU < FĢ χ;MIfD &yb'#*i1+syR59`Xm=Cw]j_f=q@aX쇑=`՛;kbT.JP> 8E 3+GTWڪ{b|I`i/=qBHϪi4mFͽ{e@L`5޽fWdK'ϬmRJ<] \Q3C!bqu:@{ J'u}{23~yJ16I G^F7ܯfٿPz{c$wX8(t}%[ʎ‡zgQv n6J3BX~␘Sk] Яש,8ۂl`5؆00N t=lH6Fp8=١u柬AtCߧ_j.+Е /+3.1}FT\޽I4i pmĂ-&fKP/i_Ў?YZ,䠲IoG!()w RJ*e ˋqƨ@ӴV6(E @w=J󩮐_Vr,4̪}acrJGqIG֞ah{iz\EK9a.(9g9<\ԊCF:S&*wSq)|D50p-IN׎+M G{<1LfYvJmq\Y ;qg()r5@b8fbqJN*E'fYY ܆/v90^])s>"0킅兾W΄DN\w]Op 9 8ͩ>QxhM9 ?bLJsG5_3E?7D&>n@2f_C9űQ9 $!#P_ʼnv.ȅ|p5t'٥0C+G80FL6T>f^_^{g3ܣ1&qSc!]M󥗣VG<.9TGވ9èClt= ET:=\6_]?3_̟Y7c={ɰkɐ?]BGaOU" _BBQgwd֩94X-D[t/w?3#]FfD$YyO"UO;v6qöw<3}H73 O7DL:u^ q(#4ň/,;Q FF -k?c~WI;r9+3 4=o =SR M w=@si.k7 E̘D4ן7F]X D7Nm{6ۏsEtd2zC v;(exfT#WXoۣ:i Blpe8Rc,1 MڹyU,.qI0 I,)wܹ aTU1槩aC<2mi&j]NݔU7A 1fCxր7>bw XBdq8uG{͈Q*h$#"A{Cݏs{Hω?"ߣ|ރ @z:ByORi^|_v<^|o9vä.)aH# J2"TD :kQUk. /:?[~o ) \wJ$ nn`|[2Ns旞YѮmDV7Y0UF]tW7 a; !ח1E"L^ROGx)4 bgdߗ$Fĉlof=^q JFW`` 1麟,0?P(kaЗb,+\Kj`%_m)rtupofQ^xF>%Gўǧ#@u)9?ϲ|PO[OلrpgrPhfOO,L! ] d}gZ+ڵ9!ra8SRzAq8r u9Y4.1R򡺮?'Te;9 qonBÁ$ g4maϠΝ@| jѳIq3 ?QA󛉦9&$֑A7sPmhJ#xvAnPś.8&F^{ ]C;)%<π WnOHTd$兵U ;u'8~.Q= /_.PL7-J+cG9?:Wb?ӫgbsɘz n.zl7}ꊨ8u.rˋPڹTdޭTU\$M¬l%Eϥ.gq=GifH *Bgua Ǟq&tB} 8r[Kt#Onל OA1) i!1܏G5ʇCH҃°݅bծR0No3/QwBc tYMl)c7x6 A)sKsfBG:+袽1 T %+~<1"@?W SOHv/Ў'@-42+#$\ ںݵtbS `t@(6S*+$B8.,\hmFn-w*s0PD"SՅ"_ ']4H4]@*Q_ʾk\D7r j~!H+2צx= `"ڢgthD Y7v}7ㄪoKZI#[ ;Pb)9c9Nb`o]yM^?E~hkA:LWwq&u`_=4܋0Ga $U wM.QckHoc za|J=&nH s)v.qYIWe%;3d"k(m?6G ҃Fp^V^PXl- 0H ,B:1'װfY27n1c=!zWS0L/q60D y/@Ĉ,ΗS;O.|W;C왖asV ?" -oA7= y$ s6F OQa paEefqOW`pk5$gxņRv%{ r.5kO:_cՉDVy=*fWYԣH쎃7)@ [fO-W" L"HvDDY6{9ycwg 'tҝ(dGRgXdHl֍7M+گhptVPTe߲@ݺ`\śn/C ]I[Ob& q"rFb~uHJ<119v_,!iu! Ro<L_[>C8s*]AP&Y_1jRSte8Mr/LnOdҘr%YZ$F> IHCՉ%Fn)#uY%Њf0SrKa\EPA4>oidyPlnkQ޲ȔAe `8A,H~l!oi/ҔBg@[55*HM#aQ~R=u|F2 PE=SJf]t{T WU1>dFʥ4Krı㋭X-q# Z$C, ~ hig*T6ew~$ь fc;8q+^{#@DQAh"AYbB@$  EH!" ["#dFR!s[O߅r =.?!y-"( x#lwGr+Ӑ;4{" j ~Cp[ bfіG (xki=_8"gGYw9Y tN)O 3D`:_ۦ 1szyQ͢O:Jto &W6 KN: g ?%̫L4KANJĎ̌|a2I,qs5mn=X$aE*0"4R<'vxaAL)uBAlu䪪B,%1/m`C{GD+JHqE^Ut/¿̧a,camRSiigo@FivTvq&0r窹">u'ȇRe3g-QQgS< ]ĪEFC{ƒ\p ^?}k.~4C-ν`z АF]Qހg@}*VF$ccDy;-Y$.*AB 2[Z 67qK@ ꐨrRҪjuN hbiڵ^-U<V" 7޳Ϟd\&>*mYA+[1fV)7_}|d+YFчWW>e$fh SCMR'l;Ron9|IzJ@/*{]oJrii 3 -u*t(zbiJy|Ft_l;6˾(?fTP3z"WժF&J8_5W'( TV=>_FbḣWlc2ޥ:11]>s11Mz%  >f0t_əkrG1<6u':Vk':-C_p[`EšC٪6z""ĭbfEZ g' ckpy[&EKp|뉚vG<c\oVL)FiJc8lo[}k2|ׇ%WHWbh\7'$ǘlFM,''T_WO)%X @=M8XW<(Q?QN̓o C ~#؁."V?/MnZ8O?(%cEEo̕V``Dp3<푻f K2-yWPG7zK\~D e ɪII$)p1a~Ϟ{tkOXC`BtNw) 0-y|[ #,q> .#-90+"{F?P-0 ;rwـDAp!T-b|f,fkVrD~ T)W 7XX_sZR;CIBk*V ijOo, NhX9bO6;vd%<9 򡱣wQJX8Jq'ht+抱dCi>2gI9p?0+Xkұ4Uۛmx*gLo;@y]|j1<' ~EwjH۩Xܧj8VeJNSᇴ}YD #Ys|4ʶ;Bia%$ Z`L PRjU8=P *V`Mh 5Bz@.6$6aw?ڤoNZq8-^1sx$\<\3W|JG$(yNT,qM7ucNp.5/8BX>!XDny8{0v^Vy,ܣw]x/Hӏԅtt`S{^|>7{&uvBZ" %XwҚ'k)x0 Chspgȶ˹2tU`E(&[DPg"0׵[ 5 9yi񽕴e0}^-נ9kJ!y 4yܝi`< f0n*<)ߗbwcY?fI;G.JJ~v?.&QJeosd+f4W'2"\iZ.G݃Qkًn|z)9 A?kR{Lk@^ç$Y( urbQ#  Cׄr<E\VA 40Oʉ^arQ\|ovT>f}2qe:ߙSǶq:`<Ҹ4iF(1 CkoCT=rg~Yy2L37!s9΅eB B!zhՏ(®Vzl+VɤlҴ` ']5/U(\Oc3^Ռ1;8j2@݆.tAEkw}U%8:9"^p-0F]y3PWaieb q=m\8}_@P\6eiT\jH< t6V]8۟frmOv5jW E >9^28,ϻ/oTpz5esq|P(?]ŏn8x1z=D1%ҹBYN*%#b |6wc}@-p1iHTF {@Uu(sW{ ^E6J(Hg)/L{>dl\N}WFԇ<ߌnL$vC%~F@hd M%ll)J,}k\`9[-A1 R"/s g iƒP7 7Qv =*Lg7ҕ[ҭdHGրd D$$i7fAfG+Wacޘi@9B]dF{'H?yT:ʉ`0E/j!d7X*lM-^qӃƦ|b2E6+R74| 7|dEUu2|w@ۭvlcEs?T M 9'{#b*&&3!Ϊ L{24oT7yOЭ6WI 6W mW!NA{ h-0 bwGԡIloԅݷ\i3n{{ 4&먼sCIB҉pESYRS׬4t|@bRs;)i[Y.{M ܷM-[ rBybL;p̹|$(A Af:56GGt+?ޕsmW\$Ai .4J6`o.p/7ȝQEMeb?BqMLgj -?̇Vǿkߧ ek{i. V^kyos=%x{fI&1~P. LhY/=-dK2)[b[BFqP][hG0Sà8T9լSew; , fF4ZLP$ȩhA‘7shlX Y7`0u oD7fZ*.UJ:-#AQE ;}CVhm+ψ= $7v`aq.kE<=#,m&@>i䯖W Hڼc g/5ݹ9I\46AIF!tEC Vb;[{HI$!&SsX3 cbLf!uC/XhW %,MR0?yQ :rPwѭDL62r’M}Jy_=S{ WG8Z0x:fWڂ'lj$B[r a ݭz dz+YdFtht3!3T3Tp?ZגVwkA)%"cm>C(?ш|3qZ ?j *DVa2 8 NM+>SjWVD1",]`/7uC9Bƹ&USI=eOG {FW}3{}#c=|_S2q I|qd<6)nq,%"%u/y "(5]}hCOQK 5K摧b#`i[l4VNBa#!#߆KW~}=c9?VegLzoBao*ٔ\9hV{`'톀n݉!Qʄ-tZ>+knT2&1"3 YaЬ:mNLKtnH?xED59MEgK]"ԶysFw,X '} }ƲAg55+Z~A//xIsf=gǼ/6 W:yRLνX藍wZ q:Z~*cz7\'DKTʲI$e>NPrygLtq8kƕ.Gl6C nkF̿+$K a mwVEזKi%nGMh8ohgMcʔX+5|´qSj:, N QtV(~* Je~ɒNQU1 ƞ_΂mo< )(mԅt+fPLCVґgJ44b#䛾vpdBO".Mβ;xhzBRi pT3F#޽d; %M(f(tіvUBn:,>vb{c){;q\效i CV/~0Q@:;6{^@7vYtK Y*}|P0~>yD@ͼ~fe㐇^{oizY /$X&7j(ړN,f+IԫhBgxZT5y _S*%bCrAm9䘕{0Z9jnM$ޮr@.of2m// N:`o)m$RðH5K;gwpkFdH-Ttb1dcݿW wc~WƆnqEjRUAGR%ih{%hW(9Ogr"bp1t8'eH*T~SO}Cױ R{c("ys:vR:ʑ;ڬ݃&7>8HL&CqXSErw V$h7W>&96[\) E!::#ΧDv>adOR+h}Jd}S`l1>@ƺ!1y< w) 't6KW>=ULl=e.'i| 즮ڞ$ GYQkƏb2S9l&$ ?$3nߪ|uK1#@ %KXhG}h]J@#b<|S:7a$zBpYD3?ȰE&BpJ&ېva[8M0Ff" =~dyHZI|Z ñVm Fa-JC9j=HxDS #&JцN6Ȕ6[a#Mq@q\![MBw'o0?~$#8ᬈmVM ֘OAUA*lu;'g\Zup&T6"82*9b:eJͻ @,0UslQ2^ґCvBy:lAzOwZ@+R 3uG˘]1]]/}d2ҥ3LF ;د|:RO&*S^xƁ5]Y+7'֯M}0I´YWU?BftEU!W_ =[a==2#x Tw +Ee(T[z!4QŽbQsv8+&h9ǩyţи4*|xW1 3ZEC;JPHƾ!FطhJMgB$M=D`i׹vټS))`n D vt?Jȟ X/x)4L]GT7I3 zQNtGnqmdoU`>ڤ?͊\yB ,63qoA>8lM}2Cag,̟ZP,b1]~NN3#ie*}#&XWkfӦjh{|:9F&;^eBTŸYG&d(L$j]T*g>h\9ܚ 1@+m׋`0S9>eSR ve*GΤIwH 3d "24ZGԄqo^{C*p,;>pW|Ja*n*OԈkdoRS@TWRlپ. f4Qrn;O=9D^G:品(}D|Ϸw~~/zN'&O,(f!j3:g`QlFmd2K,ow={_R]7>xALUPAoXq! !e9v)i|M!| FNҳVȈV!^y$*m'/h8FkK #ZmH41=۞[$BWO7}+ vʈ\ C@nfӞp-L멀Ԫ[Y7FZJZc5˭s%{09B'oȪbtHp1}l1FIc#]J.=H9!x)qZ <燃,v!pNPt%a^2j|X1PjƝn-y8 ZrR_?ӕ5ae2EvRd+|5IC)Ghݣwe̱HY5u\ ," QAJA 'r|KbǛfHT'B~Hl\K\οȧЀw΀zS_X moc?2_ R*P |&x{bZ(m(L? i{VXl.M}߄RP1K+L84QR0 waAI4(H"z`[e"Q"ʲvS{6_@9\"ݤ'$^&9F+ H'\Ȣ`hhT4ʔgȬ uǁQe@oeIS@bHբ VUVqPT~yXga3cgL9o,̾IJU=%),9SӁu,ɓCR2H$͈tbT}Y/>PAiiy9YW)K&KiUA1lAZ7one2'>@9S ;k *~l375=@PyV1Dˡaȭ2Ǻw/Lx}G¨䈘x^2/|kqxl :xui(0jq뻨mdɊf ژK\" fH]`|0>  E`]Ie߱Ҍ}Fh|l>oXir#xm"l<S萧>w#l0Õvjjk;| J=c #˓oW)Z#c4V;HT[%q1N㴔#1 r9!x=ȍa__8N5E1xuaAGmr("̷]AyT$ /G<'aJj0)WD*wƍ?jJGؙ ~ղ_^T!H/*zd( Fʜs]gj?{7 2>\[.h@pCXs9P &>mܖ1)ğm\F~+  ~ Na,; ;k!b:;LӘG(@۶fE8U;v}8 oS&xߕ2R z C {bpONGgl"qAD=$*OxG׷h4W"`v5mMUoAq(AO70gYVjo(,q Ё؂'@`WIjVXbʪǟ9du|4XN6 u\f'/SC,:>kW~)U dM*@j_%֑fs )."};X"?*@]\B&~Ä.AfGミSvLXHe߽#`BeI,#wa.U$ &VuLјҬ;tl_o&#ۨ ]3{/p D1D4#O oQmE0^E8~5^Iv塲0z?aD,||Je>% ex#Gh"ˉc͗^DLw~jg)YS +U?ЕrSz0 s۲>fo+ ![Z t m  ldJ *ސdq$`ws$NeZRͭriBrxFIˇ$rXgbCKttB hi!C $C{8[ Y. ya?iyCҸ`,%jF>HT]{d=W.*NCF{e y+كhaN5Jvzh]);Fgˈ$#!IGYU 9Jӱ/R{V9iRjT<5&=۹{[1y1`2iԛI %ێ\FNL]`--!uB+zkPf\FN.IID*8kdGءZ= y3] ]u&&ҷpdI1rX ^@i}{F*'Lh2ܯ"Ȩn\s"*#1dsR" qhҰ]ĻzѬEҶ(`;naz7 ~N#/r8 A?=_HPJLA͙i1\" b~4,Cak1YR;RWVgݠ{D,O UxP}_`eHH!BO"kgWGDw,!b(i J8idUhTewCMpgdnԧ_4ߠЮ<.aeƁ ЫSڭ|df\ʐ^OJy 0'3@p',r !(43q^?iHTwym3E_Fcw491#FK*8-7([}8?AhXJ߅8(/\C1z[Ga=8`4GU\iISo#E[`C`IQhzz[+bBV$!0\KQSƤbbu`[`Ac*$!5gº_gp[~q9x E g6b cmۡ_>T[U3yN9,>Sizkv\KQ#@-*CFZaIўeLHW+lR&dd+Js$tMkZ3T|a:~GB )6gukdKn@[n RRW ?37< Te*^RWk T:pS|4KB.UyAuS_>' 񔀔<ًRg8wXѾdڇNWˣ)y̓٘d̃+)kM2\_+~m=1=)pGfSM}eۍ5ۉOs'dnZ7;x?jASV8jd9PORE:<򶛿-EE\*j%*O3.֙NYDa1}~lP##߾‹<ҴfE_OOlg}xL34]_b+2NQki3TBTH@u8i6 KW ꚗ> }Y%2j*3FxZ L~v$&{!{z'.c45qI,z(Jv< TUuM㻎#2o8myE)~~qI2)v(竵)ʓϞ# P3Hɵ.ybMR.b([S A | ]Zb[RNwQ8[=jdr,322ǥ; NE3/C):K;&<%=[s yZsZ໢m5n ;"r8[3' KI"5 7v.M 9CLjx(`Fe.֔tF7b60ս HG[eCKK&k dmqd(s`KT'\pd#Y6jr<5t.%q y뜣+A0x=loX_)JVEʤᵘgAV>?DkFK_#éM'U`RߦFM*:I9*m[Gs{DNJYZ#FWQ5 '=@J/IA*3-WB`5)wfx7/?t!q:4-jJ2.t,Ͽ4jDIJ\ޝZnm/G/oסI~mKܥ-wyLmEk"B=;UT>vow,зvFTU%MDݾ1Se\MB E9j ik.~N]Jj/{A,6xj3^ B\?E kK0l&:bp d&1'S+ M=."-nAnpA#}!=4 R,sMЬa2.߀7tsG+w n~8jk)R1yy(W0 nو1_$kDzᾫ)h(y(PP{P?]|܁ Iirn/9G킫DnѸS:8EzOLUGT+DM5HY[6Mlk>ջ)CwB-uʙ;\  ?BuJU/j:QC+ƻDlҏqA*[~]4ZƍC ۶Tסn*k'=ffVr&zo~Er̟9DpXb+xtlW&Sf5/ b JȔRΑ%Y6L'HW BNqOe:0.Gb/oqУwfM{xlӥoX'{K3n$|0dH2 ҄WWlAY!;Ỹl^a7ob Nryz=E WF u-MJ/7fN,Z}\1ei,ͪq@+_H2[o d܆B%gZ"&YY6Yn4hBa2{F υzဤ%vin-wJnB $1k* P;|@x tE3?f 0IInP';DM1d|0P?Y<m9e c74ާ2 7W=fwqhRHBdbña=.VQb]${!9Z8A sg,kF䮀jOS_kAm6HтbpE׿r%6hW +( ݋cg4&.<e)v|*/~Իw%paPŇUY'yJ>>˵RTb"fnXt"5&oD(`i]Cȕ/f8n_.m̖6Z7 BlW4Q̶H1$Y­aIw,s-tҗ*c銩 Ux{fwIݯug Qn,'LqcL̐ vN^+庡GI f"R~*j/|9<|UlR"& N1Qho *Xi[&c5)SB?yGAʒa>չ]=/0B`̯u>fj̳y7pk2@ Θ<zj8ƼE $š[7j\d#/⃋mD;ɺqk}SlFXz hy< Aks7V{az#L"wkg NPS MsJ'cW'辪j,o;]g4FdG+6 &3M#((ZTXkyQwlup۸Mo>WJb)b&l-yT|>h0JȀ:G3nx; W8^8 g^"( }["$#7O]P?Nj^Z?hrwty83+O64)/8_Xs-$Y}?il\*^=8>4z]z<“w8A+9nR-?lGuߛᲤ27H$qT5o//MC}4%}()j.NO7 b nP ?gbLAaag*uNK?󼘣#ֆjgflYrB[!zΘ|PnMH t~LSKJ&%LAXm\RIopQ:Q`dʼqi)HA >FJ7aY]{ǽ.*ڍKm{9~s/p:|率*[s]i?UNq'=ЍW%n0FxhGY5()8ܜ~x=Վ8堠P$Qn+F%E i3Ĩyjfi/C7 Y%ז:T7=qy# %U2tKyrζ `?HMH q8tԫooOd%ouA7* Pmp03QG ,E,$cl2i#jNc:Ni6 J$aаi.DȞH"jR`<<ᔔF0S XYk8|a(vysUw=P$bƠZ#$CڑvOkmg$)ssLqi2BCP)9G,P96Ȃj\bvFzN1?f} ?QzOC."8eϟ70 My[25SV*{"Ѵ5foծq] :gVɅmҩ9$4=a/ϔeDy{rחGē3<4կyD'K4ҩXE"ރk.o8nQ/"@=F̌/o`,w8Z~O!9+}D/aH Dzfe>Yрf[]~vyGb dH_滚QOedx)FJE]B򬢓L*X:,86 nujoUNFtNe@% 6\ ?Hߍ8XK;v ^hd_(KQ"U,UfVw!Û𫣏oX V%ɀBOeUߒĊٝN`][P=~6w =s caG(ͮ>滍%C?`J8\d ɿ7۷?Z4~& <KCjdRr$s(~# *zr'vȥD{" avPpeyJ:(Na'&3x6_q3 @8]UnP O6(z29m<|sjq u P+va1L{&T;Tnf9X'-bg6-* qWx&G u5JU:FuYYrqj{S߄!EW~W鷵ѵu*kX6/*w Ԃ8"cGq^a|"9P@?3S M$=ٵ[qdpW;4Q_s,٢Ǟ]pϏ[lm;|Imv6tYc~,&(5A4TM5/Uq?$*:Fh\TzMA(Ab C-_Pb>oWSPbmDg)[AgZE:7,QqrzmkbPN4 7l*ȗyυv#I(ۀBu;z"(qdO+*UY4]R6*}rCpv˸V^]oqP~F~N tO:)fS2Եr#TL']d_wl@/4T6G0Zn$Q监NEPw]/٦]׋bE=nЊOZ_r1,7gi;0/[FM(v]ޖ^h%Idg ~P`T 9Cx#AA#uh*ŵ㣳,0QЂuumrd#5:ÊDʖ^>o5W7}'T 08uG|k_X ("0\m?9f|7ݠ}i@ KsW7;@!).wni\3y $x|}t"F`1'îwp]e[]>KTh;Z CsnaC\bզVm2!KT{Ҕ=YOh JРb֚٣22kr6H ɯzB)ɃrmD˴$f!CrJ`,5c ~e=+qN ׯ"?Nѥl62CSģ +-8$ |Tiu(Je rhMywqJ*{*\2Ѧf)o`^W^CS1hhZ؜y}k}Mg]ʊtDR`B~>p `ZM$|wk jȧվlוZe0,Ia•ַy@UnZ4 Cyrhn۪+rވ"cɐ#{,}02gu ?nZ X~z_=XJ4pЩ+2Xatt9&< " 1[-Ԯdh4W7I,|:'j E''g-pD&,c @4AFnt2VEg꥗uѝ; /&${ ] ,=%ộ:/p,E;-Yȸ0SLTiN#[&*7NAqOOcoo~YWlvH''a~f>61P/Cмot63)En &^$"%?۵}D^oK`iHMD~4c۱tه\pSŹIPYӚ(QZ\#w 9e aƑDFhpi0[&ڷd )ph#ڗ"RSSyЕdF` ==쑼[GCoq}j<1 g.Iz}F^&X+V_S[cMRWyxIp|L6ʨc܁c%?!}Ôevt?Zԇ>5ڳL-J_HDB35 = K:fmjMSfHdүm&T C~ ]`"H'{fae0עQP<W8AJ62ochxP/PW hB.G=,X uH:``^̏ [HN]qqGtI88MyWw)qZ> J҆i?O)`~P(?½J.P{lֶhB0Q HP$Y8?]˞!^JJa]0sQB>˔@/fNb5Kƭjʛpxx aC!qE P:ޫ 荾TdQ͝ ͛iƙSP[}e+,FafxFVzR`tbA|,PC5!k$r_6 Oq$\Pe2vWqcPwKGI(an ).f&n]HZnBv^EUnq?rmZpA냍cVfdU:>K+PewGT=s*}o*;b-I1Fw "rNw!1/[#.h )BF_üB2W"LMs6 sfg^J|לE`#@rAiƐo2m N$hgI ދ-n4ݎ|MQQR06lel)~aUc.rgrPcv$5Gvf'a@c'r^ag-@ " 4bFux-aCg?f]Gq @brcL,`&QNᰧtr8Їp;NQǁn;P2bR~.:qQ'G8x9tDtf /-cjd71"1 a"^,վFC^!*= $qW~e@mzU+eF nN1q[ꐓU@I>kT#\P=ߎ{mL"b:b%^~7:WYÂj3ۍb]x=2k >t*~ק`))odaˆa $j>]|R2Mh88D9-:}&aJۓoTXRW|td~\wINRpb܋T]/"p8+J!QR39ӅQw(iJd Pt+cyiPQ9HYQ4[ XžBƊTS$ 0m֮E2)ZA-p# K#xlʢ\x0+< >ۍ]W>Un*X^wyd՛?3u[y"YB^FSu 878V 8;$YNE`/1>faV h&\g1R_6GƯYZaK^ 6ƙ2bl`YDe }?֢.ba_9i ?iz6o:Ϳ> (ߦJփOy5>YWH4+r4RiјS&gӤY<unFqD{"g8l! )o{ۺRJ:ʇ'%Kk߇g-s<?W&Ӫ6Jv#j JfVlꜯo{TZMXP{rR:FtؔD@Dq$p<{~^솾w#7zff'H*+Nh-ah5_#@p_ӻCQfS?҇dnHx?1ӁVFaa5 Nw,Ce]W+pV^!rOY {4p'lxIB;Ĩ&zoUp{7Y\BHFﺅ2)/*(h6y՗0DTV/%YD?톅wc PK}KpՂ]Ck_== objzp`݌;5SǢǧ,H9 [.Ш`NBzD l#zI?j ثC_MK)G#y!+O§k؞՚0.2 n`ِP̛**Zҍq"!TḮOu&\>8l?}_딣-(#no{:w';,2D-/i!n(N(3_I{"&@Lp45|s L0MK&WPa":ف ͫsytSJ3,"677E^v(^8b| +e˦oc bfrﲇ ?5|u9~ A󶽎ɑf'dQ$?asknU.#er(Ȕ8d2 RL#E{\%OZS|r=rbw @g<&Ms &dqȴf_ ]> grA iׁ5FFtwq'HNU0읬7;w>.4mC FX O?W&+ Ep,s(G~ _< 3 st9ڂ"+u~cz<)rDZ5v#e^PiMq؅ !a-'C2ONX,ԳK飵0;"4NsR|էI5S` !odb͖7S.ʥƱX[,1Lr%e9@{C&a[2u?/@>Oڮ\VM][u=-qo'˴/c㎅j5!\־a{6=pO;*j:ޠmfZUCyqv.oK/4Sz ͑) #'Wr%9e: 8{I"}OdDq$ɯ {z3MPEf *z1< {78Lř3S`}?.'XyY)3v-c~$ :ISMoĄ?o(0 k^jRUGg:GM."~̞f!2+PGc1.ܨ^s?.$,A~rI{]cMI|W9?KD';wW˧CsJ1 5xF' A#*DTvByg| ҪS}JttDRH*}ݛT_dHSuvīm̊l\AqDJ2PX<Xmܹp9(m-J~=,`+xfz easb@| ʦVݣN絛TvO*]Qhzi+咮 1/0V c>RH(PbC"1 DŽY9KR5޻IEGUo`v,ye K.#+3&Q LA-~V>Vx贈5/"u~.wΙ 0 s/6ժDlbs3e¼F" SY{ŏwU4Bbz{e}1-; US |E(BF=ˇ&ގйvY҆d|XZIb145c(~veF&a,k,ٷStܶi+ڒiqe=4yX!pXxlO QkA=ꇚ@x4^Rf _ s`_ qDbj؎xnȈ L\Zû`3,ֻ՚3_zxs4#7UqB`FgX]|3y32dϡ*`?a-U)TSO=PXyDL.9Xj3HY%O&fK0 Fѭ0~TjGo*]vd\jF>4 nI'^;Q3[oD/932UNfOt rY ~0ԧ^+ 1݃W:?T0SX]'jXл4c!ctn0[=Fc:Rm7$ yL^W<@K"@rq2mʎQG [:yJ/gۮlj>]\ J%ʴ߇7m2e=r4Mse2]*ep}>S8h㯿9L_!vˤm6a8Ihx'DLà>S1:HTj 2[pV{ߧ3ϖn?7ԀtyT.)ܴ)!tpx:,y9gQ)Z|;/,5A6dW?GKSzNmƉ5p5EhMO;Óhυ;uu:sDd:;"gW@M\t=ჼ 0'} ġ1D\/AB 7+*\΋{_R+HMS{RH̹G=Sr/LVPK}*ջq/}{ زDݲxR"Si)QbsILѩ>C.hq^b -\" VvlM(5&ڜElކ[|2r$97I4!>ą_ !MOl+' 7IK0h?ۢXuoែj hKpfp$e&5f:;J voq=H"W#a=pl^6T3gN11#y;bhNRlk(  YVwLOuG2I#I&<LzvΈ wm7^ڢaAFCAg@ Z X7/+_5Db h(53 [mգ,㨐7f=W1>n,rw| \g 1U<$s ȗ 9tF/}f$y4owUp(Xk9~A=A' ;pd @NNx'͙| 쨴gt5l1BC;zEL˝">+ayu w*#nY$0{=s:ζ;]]/%q8V]Y ڢ 8 ^ͨebzkZ s-߆~4B;SWJk ?"xЧ/FxO{;k?W}ߋz>{Oӂu>6@l$@@R0@`\o`;{uǍ㹮-Bb.н ]9Ls#WgYL7svo!Ók`wy5ElA,\q30I[Ub d=SPy*-G>,JĀ׀{ݜZF6W3>n!Dmp!Ll6iÂ:Dn7 kcv,ȤO1\C*-K8r̰q\"Nt v{Dz×K vC;&Rt| ِmNF[&:4 0,,:mMBHt\%ߐqP63 9Gͬ;}v1JuRx2y }{lfDZI)菶rhN 1q5s qtMY`ݭ{@rP}w?,Ckw)k n]$W)pR;8kAD*Vϳ;M{ į5wϮij?|= >(^@#>פBC\9|@ખZg|^Z}+^ڒ |}4ZEɨŗَRmfPX'̊(q;kI8bMK0\u <2O쩹S) ?Ŏ8_"[&i^zDT&B8OJx;yg pkkS* !ŵ7|/>5x -Ϙ;E¢dI~mABef"nA\ٲ%oP>gSOי"5ǒa9RG ]ƵX۾ IԾ[cסK ٩׫>&`,/W+"Orr8n !+<>L)8?(ϗ ږ ̘3ۊAm?UimoX9bDiCO!Ξ 6S7uPgnIj(,IR$>Lea4:M0X:&Q3m3ϦytIX+|1rj/dN)FX5lPY&jv DEuZaӋV.lDu&1j  񸣧C@(c N֧e;e5puS69'pJ#dTӶuҩ<="U6cڷXF/uWSJ'eߕ lMC Mgdd43\UM(-;7_:,=iYp4|YkITLgiN%NCY<#=YtlOfE9z{o}3k|??L~8X91h5?u7MP8+#S"Vx/MI@tfyhyt~cdC%fm.\axS^Gm1P /{nͣ՗ؓaP2 C{d3LlBcyab(bE*; ʢå*Lxj9Fobڴg^6H:bi:Z\ nH룜9.O;g'f)ukJxp_8 -suӂcݧ,oaUJ:|ԯ_!a e ZLY "+.xv[v*-i@&2at7\WLR0fK/t&Wo*8{…2a*3Kl! z"JwVl[Mu1<SuF-NR@F_jC/W6;L;al3<5״Ntb6*P}=6ky])l.2wzX>:bxzEVm.8+(1#_"ܗR=z!A#ĄBEψ+>`j[9"-#3n2*D `SjU{FGKl'5<[_$5CK A>ӊ83Yo[ NPQLkdbUzZv0vC/1H$ol'| =T]lAi KKx"ypej$|ٲfFaLuK5D8s~ W1uyD7J Xnc aҁokP7mp 2Ec#RUJyQ Ƃ(n v $]OZ-~I0ܓڤ\:1^ڠ>Y#O3$6(~RBOie{F\a"GrODTNs7kAf(j4$5j߷ƒ8ޛ*w/w]9Lj=:[pLX׸n# >^Hn/'u#I*'G ^9f'tzEto/e<(ńzeoLnRaR=߆nowD@2 G+ *o)_h+ !Dyj0MDqҭiZ~s ^rl ;JK%q,ĬG.{V{XxNS%1 TA^TYpW542p]$)UT`RS>H9(|Ĺ!:t3c}dfxnu -ONc`wIӛ;fE4t/Yv+V81AYbp,-bG4tBOψDT;{(QS 7r):h mKg'š`zECBÒ5SX0<tLFDq;WpNnܐ&azh.tCzoZ#?\D+:Y@xKu#0a|߬?=8kpb=t ֻˮe 䣚SaRj}%dFU;Xm}4_Ϫw!tP(; ! FK.M{n Y'ut-vl_0<|C>}:g~g^:.H:ye-l5zR|iq'?PHP8{VU]9lg^5ImtzAx@ C3h^|,;c[~֛;m뚖_ʼ/a)y]=R݋BE=jɮi6?꓀&@L/ŕ eycv̘oIlOsKÖJѠLۧY.삺Bz0!hhOe r]IeU:AQ6F ٴ' ^tH=F|7dg{Içja/=l4AqUÛ 9)~³h F\ɵb ?k=ݿ"Bh$6_[Ke3&qؗ-M8< ȭ6g*AK4J+BE*Cjo߬I$̮pyIp;OޖJ;U>vYH+69kK}9(*#Uu"X7Tą>B͸#wg"R+´Nb *L+@>a/wjĐt:-VjzG)4ɵ J+H4*RfLP ;8p82 _!Ԣ0s-ƋLhdSh&ꫳĞ qLjTf `'c4t3Wշu hʎj;a- (4N28V}IxZJKvW~r^xJXVz#ea[hb^W`;qU ?T{2C7C' [/~̩`9{pkwauaD:g| \CW:E#z= 9DD ,{ )&y7l:." gjd!X}_P&#]e݉\-?j")}:h_LDoDWW%·hACQFw3H '~P7)%L'$픒TP찄S@et,\2򼚕B`@<3%8q3]NL*c'S qm₸;E5pAje޽o\܃Sm%VoZ{)CWD1DaJ̫k* i]&=B}t$f2ݯ}RN7En]6X`(ap%HAIURv!jZ  :5/>^Q4(6% Ow(&HJ_V+Vw_LjgG'Ck݆&6>v~2 =ڇD#FiP 3/lHxTqNL>ߏ`_s#*ȶWs"ԭ_yH_2ZAho%>E B8S@7 Nc - Ro`\,j•\39 燔"1],#އ';Kv+h((<\Uhnx-Hd=X &W*nԩݝغcʕbH6ĪcavAA礐gܰn˷w u)RqVBXSC#{ߛ•ЯXpZ}ZM( V2LQx!mnwUTDxV^nڏQIs5aj>dj埸HKWYyCp(:m<$T=ClȠ;oR  3 jӎ3Ї/7KB^iJqZg.]FqN$Fµp\|[Z;RJ{D-("u (8u쮍`o>8dS%K([R(N[7\3z(MJ%7 {V/T 8:{?E|hCBf ] ЌP441p }7n6Tmԣ w됒ͥncV <9 Jvo:ȨWQ6m -4Ix/y{7,g3\M`=* 0M{&fS Ҵ}6"y ͬK6wOW Wҿb:@N_J)W}A</1X],oMgvBIEL+"4 ͦ]ɐ/2^^I!H!Z)o`HZ:kPipBG M~@{tt}tg6'0ΈDIWY} 9N)10512lH`KZĎEWI).VA퉗=4+o'vԶ/W4?XS~h1$qf}}08 Q:$![]>#EHҬ‹*E^\-ό|˃6lc9".԰4)ZA0s3/v*qٗ>U8yIÁp&{7T?s؛7m?ִ`>}40 |MF :Gw_:,﹐;3L`<*ַNз0׸uhwrRKoZ#n2(Ϭ%23Ju9{o6ycyS h “>:x|r ug 5  f~7ZWrD ą* O9Y- %b,pi 'e"ݠD(E 늎c߸؆M[c؆qmTuѝK%@z,ni7TےRbXZV-\qzmjF;+k/&Ap`:)N¶0a x,Jr1Eb*wkTCSz)s(Lyp7 JH`2{n?E21psi Ad6$*7gg33>H6 ]o/6: N%:;(|kH-sjә*l0 }ԾZQ(VxmG;tyZ"{z_h&USN; 5|K/qjK)wIŶbr6Gݹ DHa DDGixLnvM5W38-:uWF*lǃ~$0Nu:۽+Bթo"b q\_C^8©Sj)o DF}(4Pd͘*Jv.(tPܧ-7;>:+Sy]G&)y+nw2ؾV9;<.xα)J'A<`nl$(l{tU!pXhPB;əgJRȂ̊q18? 帋P)ȧQO unGK0B'7, tyKEp/I(3688!bx֒=hG 5q+jcKJoAHVH)`vP 8ؙ>yX'7hA#zͮ UɂDҴ"|8S$fB _h,ڱ ==8教.42KHÒ;Z*ӈT%I`]Ʋ!"gn!dHmDr`&.;H)z޳֏(12aUry+4ejc(gqy=eXxXxߏnS)u46QDS>ҟS?eW_W\嫐} sR),@d'm[ &D ^$1~ >R$0V)+Lzmz%-GRϙcde'T`jiڍ%(p9/e11^#0G>otNR\q/A؁cw/ 3|1=8pob&N3\ιd~Cl_r# >.J]0NKH/s?1zGB[x;<8ܤ6HzDL1y M%ߦ@YtTl+f(΍EoVDz܊l旁I ~|8.$$P<9 a}ILd`@7%1W9 ^a෢Eٙ,Jl yChu>n! zFLz--;i۝s%r]@Lc2 (K ·,VJ6~3cY<eUٟPaRA\>T||NƲg8SLO{Κ[qc*d7`ntjT`B96O@ˡy;,EED7TVγ5ڟvn=j#r  +oLaHl轊fxORS8yԪj%{ZHDUn#_WS7. ^ceNeAKu :\{~U5|p OXGX=GOಆgՒ%n!:Au4pÑ.VG))O&&:w;\AZ8sKB#P њ9,5o?ՃKC$a{)iȏ:(E Lgl0-kM~7w{rUPʜn3|)sH!W]9?u.xYᣇ!҂0{3}̕s4!oopY\z>U ?VUkk'႒B@ C%ǥz,DHPG@`8 _M]7N$*$ՌA @ b:|hBOԥCOz܆_FbDvҰap ;Ҧ{P-L콰{U"}Bd-=$D}eplB!G)["7Z!+ޡ 4Ƭ]YOr_MDQdVX~Xm̮Sde%1hlK +<AS8ײ-38Պ촃G1|B~XL7~Ă4 g(ExJE \f뱠c0'wwWp;Է8 t(k4$jxjCXūۙ̎]d8I7 PC3cr| rۿRT 0}@y}DdsC.-ؓUfks.bur_ DW?>`<`b?`eOU󎕿wqw̯j|i5CRx8&Gf]Z)Ӝ/_C^ד/uVϖ6 ` ANCx"g b"LbJWm"l]2dTj2&@;#~<=]ŽxR~B+|ft A(!wٚ[S!|`/+̚Aj˿ja[*Dt䍻ِ\{]-Cha"2?WѲu\h2\R,aɲ}B07,yş3 {[HwZvq]ٟyIP -[O5NB`ɿzx\{&$\t#3!"-WF ]C;[w~(>?C+29W[*,f:nj-Hrہ1 N䰮Tې/]몳crC"dt:M6}{q_zY?T4ҬIJ%fgZBc\^ѬC{H.58+,ь &p_#P1"N!JM5*Dr-(AٖN.ISDxKfB/7ċ%R}~1~_(fIzȎSXiS""NVnoMi sbZ*x"kg! D9hx}dR| oSֆR&4w)lK`rm+ҹa3U.sm fPe<8!?؎ xVz5AvbW/Dm= Z:7S ,X)t)<ذ߶Rq!SW~|K6aCE D|p^_}̻= dak;ʀ(@MykZV\@ W%vCn+C>S#kX6rY~ Iс4[cݚzx{ Q,)^球TKaȅif2vT]4:thr'.Uv&AРң5@rPFlONVq!:KF]ViS4`w%x΅2:Ҕ[m)&$T<_U KU@̩Z5.P!_!]+$37&6&׫f"`M2u :M%E*WhpntG`ZǨ.%;zߪ'N_l~IUTntu3# M\H4F<!Rye} <~\ETV;Ϸt،k &ˮ36$n=M !}9{u:b n[-)X7'gfC{< O -qH>c\Ĥt<׺ϗ(9Xz=soޚ\wbŴk_%U!|MGArS&!ElrMx "[oT!KV-6?ݍKԱp(úכ/h8pꃸanڢhp!'/AG Ԃ3hɱ߂/;QI@K{X|bYd!qS>k ']@DhcN4ˑ=Wm!i1ô{H{{HF>S? )Y=KI}XJl aַhp^9ܓʹ#aZ5&mMd}UKwiG^(gC|'{ZUJդ:V.˽jU&~01OA?׈cmu 'GVml%,7]뎛Ā;i+|u[:EY[;iD~.9RP.X׹ A眪UG 6H!xku]q16ՔFpm>ux< Ǩ5:mn|a!#+m-4` iަeRW|cRG.ab3tbH1Yo(ͳYg0g1AξE9My_b0RN9-)pgC@aR)NJOԷ\.9NkSKrF m*5 {h|Amr~}ÔlḘ/ib=xst~(LJ_XȾ|8TZ0-ǰ0O ꊟR6^=05dܚ:M_.7*PR_P @X atYbL.o:Lu3D͡^z'*őpG{:X9#U.5ɕw6Kj$~RSL[۹Rz7$+>.qjN]ÁA[lB 0f}huL!l&Hg0p"!">D"§~q2J, L;@YBbfCȅ+C|e|I!V̡6K(}ii*v,Nq &~1RɀXTX^c5/oP&VK ;n[K5rxQNgD48lDֿ)_v_#* MćJ/0x@ʖ.Ջo- ȏ:oDp E.#1Vyyp{]8{M6FY g^.߅k⊃sl#ȶajG*.Exύˣ#t2Rj;j- #Fg,?@w?ѿ gDRj3)qѮWfc6b'KEPKRf\s&ږN@˯púbR7]7!` Ap/ߡө:oAX֋ |B'حk/pK5fW"{0",i~_w"l!s +EmN 7_9IpCTꆌQQi@.zBMh\a뙘䘻ɴNSdD`6 , Gq1 -D# r_>]ǣA"ذr4坶zZW6LnԳcKooAD^V:IL[0 oQ4&r%Jǖ6!H6%K,Wq?oEW_Xȉ)V͂ᥚ4!pVcM3p;5ɚG}살 fAy9qt[9xAMgJ,\.~T5&l(v5r!s;ڛJͶz\8O]b1O9eJhUl(2qt&{uf$;ˣ[:FC G ULW_ږ\ '+.%ovWcWj03h(0F&!0BQ꼠;\Q,߿eamvW%%D_ }_W27I-8<ςcvtnƔ)zC1iВ7d 4SkD}Eq%n`! chOkrtyP{ gKuoSxoà2*jZUt1xx-{Yՠ_z 8 E"|W=lP#'*4g{-wBcBu r3Tg@߯ccLVԯ69/>nQ:%s\6(`HQC"KԫPØudZ8J<:5i p~56 b4R졟1cCdb[ORbx}vf%!U uj~g*Ki@14صT>`hyg]D-1´)Ú4aȒ0jtM!:F2U&tF hϙ),\5]z5e'l{Rw]eW+:tUІ=G3-uDՄShꛜjD=ԕV{nW0cs,UGH, 0ˉhx&qW p%]VКܗ sh+f*Y/pmPRg?câo5LrI2~ YP):38,a;* lb6}?2Yy֋m@!NoM@zlI'aqȡ,)AWkj#Ҕ_ApQY*>e7 Fwif% 9khTc+pT QM@eQgA1sC)986ij•KQ@a5hZ['[NyyBChIbM-yKu:J(aO== w@LݤAs()zRZ?zNvUPOF-^{=qX`:OqKj󓊻9]kv˫XCu"Ksӧa{Z뾜ՠJ&&N&X؛*ꎫ%,0WFAJpY>`"S贤ZuwImQ0/$NUJ[ܠk6yL! aҗ qg,wf޲@ )6v9pUx:wĮ ؗYq}<̯ C^FPxXkxE`$gb8+\&NV<[4Zғ!JAS-&Zu-u\pNhF+ 6ٿA&u_W$$N7 -#4xΆulgQJ}r ޿ 8ѴB-I=n6hJjH9t,ŷ%ӼCliZ{ a8g{{<j - l/y@Jw( G -lӍ:k!.U$};xV,7/{ ʮ.Qt8UG[bQ@ Hb3Sd@[-z=57c7mсΈEMp%ypDa4R-cKeo"KE$(X|"cxwuOF3erjk݄wAuC͢ Tu+p&Pd1QeҒz(Cی[NvG3)=wL2B9T j5Kr8|]3>'悖qQE, 4Sԅ bIq'7c)J0lQS0؞~NW M[O ؞tP  d:(u۪6^j-r˄XO n\`IwwO!zvoxiRh)5^Gc3?d"dR?/G \;Uo.3N)%^|̻ Hi3;~@̄@E&rclšaܣX|ɃiN @%b֋F/4ߔM*Z ɣ! 0kn :7#iDDҋw@ l%ErkwwrMs? / O򺽼D US 8}y\ @eu ĤYN+ʬVWXF^24ls*QCB~ fصab,"N]7dG"eǞYn@&ʌ'$a=MôZ\Q!+cl)N9(NX2 yY{fFܠ>9$cJT(].2.má^A;E,y P3( ޅJIif7U\mӥB 5E}xm`iaXad5kMb))D~eimЮLa0`6y@?qᥘ8u AqM%uT9{a1PWQ׀׮MMQŠF uA[F1>ǔoFp  F<%GSg&kJ/ynΊl#=#sO뒳lWF _c(}WZo^ٸG k O6@Fw -DUQ a>ߌ^X_LseQlƮP]h rNLtWX.51 w*Լdeug '1f.6^ÿG<kOܹXO^Y!DM$ۇ+]P$ͧ2vF*]O/pN/f&/.m򝞩(S|yoDJT8f%îjoH)y:ˆO%oLVoRؗ_AD2/Ys%S3^ x)s!f#/^cs{Yy*C1Bu1Jvj3;5\ a)Wy|cvbDm ru.:Xoinj(2uWect= qf| HB^ϩlA{HNqt4UVF@RRPPz#O柷of إدFzd3d6!o>z*Oձck iC遧*V#Mgv&0|,[9s+U^ L_9n0qABX)d4OKX.^7ڀ?\NJ_+89~lTp0я[AEؤp:<2nV>F 7򇡓".'5ŠwݕNwojA冢&^jmTOV&m1aEpʻ˶c9 v9\I.ٚ)c{][ %ep< φ];c-o)ӆgNpwev8߱{A]K^6K:r'Iu#Eӛ)#+ö)ف*uS]NIZ>H&uLAZ_tp L?o/ldޫs0B-%rg4/%&YRKHe{+}pvy /PfթߟE=t2=A$0E8 $.dZ.)foh귬򚻸6E?0-JAB:dԱ1J76p=˭KL@7*%0jቀܽrɗ0D+/#k=(22Sː6" MI_r|Zy(X:( 0D+=R#9.7)al0N'D+M߱{'G;W:"_Kuxv71]r9OPBg Ff=A i 8m‰y]խ "nhDCo\H' {cv']Mt'R={.W D&B1EJ_{$B]HVU{ Cd7f&Ɏ~з[T}ݙ!n;%X\Wxn󨺽W9"ڎѮ55(Q=o|?~ꢬ2"*?lsS[*}}8 *#$q]I$r'Շ痣mlŞiEl+@yJU32D@b6/9uZ"F®T>;ljd1, 8pOvYrPΤDpx_H },ɗ _lbð*4*iގn6h#-~_cZ fX՚}lBy.Ѷ2z= abj}>̈́Z4J;hYM`rqSQO+/~:UB}#-DH |RviEAQ"!+KJK`'K)>s_\ ]'`*Ol/ ZM"(|dFOB߲_MU1x#ozH"l$IY%z:=o譏sO4SD\;^ͷz+U+\:W~}3tX. !eX=<.$4l5}u&CˏLa{y(7j 1G@0QT溦NJA*~ YGH!n۪ 3'`w!qeyK˜HĸhP D/*`yH*I"O HRvQܡ~ْ1cP'!ѵHmj>, =2Z لJYeUJ';9q͏zh,#G$WЊ$:?ߍJF|dC r 1~pbQ9]BUI 8YW%:ZCuy'+g(Y(L J_V%_y\M!CS {%Sd3*j3΁c1[b7S||;05WE`܁#Dpз_Ö[E-v0PFA _@X_Z7&oHRL^/?&5?q-OB~PˍVK.t@66Uo|B91: Jq[ĬS:p4eg$BewZ˟}(=bft(K-ݢCo:ЫQN_m}ɑ\g8 xo@Yљ93|NLid3jQ7kWVE[iwjsm;=>3ÇߎF!μdsqa'$ܱO9(+烁E, cDG! y(\eA}f{:b$a0$.¼l+'P+aԂazV=ڐh08EKreBtId.k0WoԛW _KSfQyc{E"h|,+dUUjb/sr'^I[E$>tMvNnGm+rP5e` ָH35Ct1NiPO=\q h,[- 07I qGmG9(I:Cvl1w&rAՉX+\npJA嘎r *UeC _@h> INjf=94G[Y֭T~ c7䂓yxqBmEo❬ ,VM S `35݌d8'xӯ@3B+))6R2XCXLƷI5TݒAL.?~}ߊ}˶.և\T`*ŗChaRs^D.vdWyagSϢ\6 PI hEe cAVJvnv$ogM1XR5HAV8_M1eĽwǿe/c|\e*Tt5!'A^m_R0-Bp5٦)w: 2p>3:iۛ[R[ ͑y/&$D%bMv;+p\)hvpG>>* cW-ۋ/a \R ?k.j5D"~(X7vClqfF^Ћb |K C%uc2d͎οU7d#C\&PZ9H)N Ur[R> WF i#Ae/?vKUMrBtU b{ڸ w[+gpJKt?՝L=aeu/=R +KfvOg̤ľ.=(>44,m{]%39{Et|*x#)t4WH0O5ѧRiY%h^)ҙ#/Sy$rqu$%!"gWMTaMRFã]\sI֡kS.)x!xڃp`SXS ,?{b4"z.":>8n$:6i/M9#˹wM)Ka$ [ h&_hY="9 {Oʉ ,OkA螵0t4*x;CZ]wVQ$붂|,4.DZ_}H\T>|d? <"6ޫ_?Y1_d[B qj8G=Pз>+|`$B?@X^Q[F׈z"{-!o{EFNt$3mPjhQ/@ڰ?f}zZx8Bn{/3|A":uZJ ns`MO>,ʹp1u͟X9۲/b{GO)eYc]4<#W,7>ζ/mp|৾OQ5"U1X4c _GI?v|Z;?i!5`L B)·*[,X0i vI ;+WgMUjd/3+Ր57lrS \XjHz%bwUxYT?w0"DZ0n@ł jwz(_˧o r.k*svrƐBIqF ]83>u~Nw|I;鎎/0!S*huUc:553&K!GFHRKeMb <UBj^sʌg)rQCQPtޛ{UP7Ի(8p RZdJ/އ8'E瑠gqZ;P/j挊 UASWF<&gwHT! F/C)254) sf:[079nhY;I@m]z$=7d卙'r Y'"f=΀_\}3:#ӦffXXjQ/j ǵ!-0o\Bhn½K#ݎ[ e$F;T4$|e RR+Wl:W#/Lќ]Cee~/?@]AB ^T{IE;ȠfBWXuHKAy͎'P1/!Icd9IZD6`q,NT Liw":/D#6=_tS6my[0H$ w5_)qqQ@50WHY`-T+'ȋy yS|,0}0-cu]th{ $FI>]][Vm0#=lNh]_5Op`f?6.P 1Bp6tܳS[;acui6`z?&/k!V9]y7I{]H\@oRd:Q }?7ͼkV\{o/ $S.o]Jf$e+Y./e3Sl`7⌺@Dvg)Zw! VJ7A` jԌ}"c8M]fJl9a"t;DԲ)G:f$v4s 6w $ ^O\PgfU _z@;=p2MTbM٪~OWS?wC*"z0E'Oh+Aol> ^,w1o="ūcc"?%ܢ䮣vD6,s NG10Rdf<)4p g()ma9zfw^xNZh#dZxjؼ"Fm8YNC FxA|⭶Ω2N Ƀҷ5~ho# Ή l㟈ZIesaMK IL~+EZTJVwyь"|V"Ǘpd %ǘ;E܇V!@3pXVdm6a ֑ԑEsdɖϮXݿ2hjn9FъUߥ.A\(W p#cm qIwdn _:&8~\掐H[Czj͵5Kˍ0mpR9B$nqIJÿ,&'oPj򴆹ZL*+oܺ1>٨.jsfp:~ x<. MmuZ!q[R삛*=}`jX_~dzI[#*⁾]W(ј4i,y"B5O}H(霁lPnvL9_1mg{[JNBL?a$#lw *ňu \qX&dV0R3p7B6;t::dAÁ{}) OV9,^-[^ չ?# (>*mо^5.!'^oY~\$*I<i֪wJ'+r©0SE=< ?0jj:Jιݳ} ods6&9ix@bGX4L^LE. F؏`-rkqi&SgmpHh)* 9E7BwRX.+\U.NΒP) Ǫ\u&gU@ JfSc-(؉ QЌ9IU}>= БIPqxu}Thc> 6eպ/,2 }PGBYYWPKЌ=|,O6vT9ƈ`S[(Cw4%Q)ƏObZ\2-aI.BX8dM\0 Tv3}W[œ"Q0X |!XjC..;8l)ns<8 uveZٸh5=`dkNBWZX};0:$\Žmk HR1 =?gYэ9Y>#ހ9H'^"r(f~^`i+ ֵb-Hbo@Y)RGLGfc]0d(@#_oU~wDnZz7Դx); =]B ic7vKLjiy}Ł]7Pm}TpOUn Žh~ ,SE@H+מކYc QpLO)!L"!A¡ ,DGp\h_-ecN [T wR?*09g{Sn:RmR9'#/0㾍>rH46^w9jA"ȝRht| ˎ' ]iqQCm[ozd$ hVS:\&[+A)Ori7 >(,86سJrxœqP-Ė]$*ArT&=a#6 uabݫ&$~ < y sĐɏ1Tkf P!ٻKSܻd."Le=Cc Cg@D}Z?q)*;$I15,(1Gz_ rTmOc'_I3C>\p\КA !n3Hʓ-T=P##EceiTĄ{|+T&;GY'Fa[K|MJؗUmM>oN47J%,|~@YjpqQ _8 nݹ9"j(I{A^A|t׫G~ZrZ׸mT>us,lgudv1nj? 4,s" m݋l)<ͿP{nu/ Tm?hM?9eΏy¢an&)Ӿj}o#pF>[r^&"d vdcgǂ LS`ܻ41ɔKv9?:1&l.T=kH~oAѓvDꞅ$5)2rLv A[#CLByռ'3y/<&SdI:Q~mEQJ(}P9?M~ 7JID>9ExckFB<^LYʡlz xgGWȊԚ1>o:B66K2pBg) ݏƷB򳜦&#&j^wZa8t'  nߢх2GO<1&YN=b̺6S+Ka-i3 ͥ1kuu|'躬u|ՎefA[1|~buS&NμxY|Gi9_tzsẝTjh]W{;ZrvH1/;KvR+G]Whl*{.s~Tx7`fB?g@:vĂG#]#J͞brMEM 'Cv bg8ص7:Qua׺Uc߷>L} #V;{(yyJ.;uVyш>~T;4%p Ŏ.3Riv\~Hu6m)sYo%j$5Pc4GjG?g-{?KM>@j1մnͱ%Cʄ)g闯08 w5΢Pu C>fWHhoZQ& 4MʓU=ŚsBSL/2_SKuU̢CsJX]Er=hgya(^w HLyyq[,~l5û'NiD[-B \o;Wzl|/k3C*9 !Vo7g٪7?:[}FbθѮۤZDշ̽,]&jxfo6rw~$7z>`[B q]~T}K0V5(!~Ե!wn\Qf,!"OLڸmA5Mf;+-Mzj5; jVVxd8[tX {x'R~M(eOW?Ja;X@#y>xt.kJIK] px5.v#0POѓEcw|S6aulZwj۽ec3!m>ca)R5@I:b/G]4AzVcaq<ɽ4-i~ yϤ@y9mv#Q=ֳnW'i^;E؎g{Uu׮m;Ilڒ`بr%5 %ޟa3sfHK4E tWþ!|+$ܔ\~!) m.\FҊgx8hoMl'm)\O)0e=AOVr|k_Z^fڸCS=E׶=C!" x%v k1,e3 з(agjt]0EFxד4l"N#q3{M!]Ce͛7W1L܅S)w;y<#˾=(wsȸcיP.6ߐM롍sP=[0c'*Gz6~k)3Zl ~R?Yރ/7mȞ*D1_ 凎dImMWW|MV,>' RҲ=k:ӂ%ig24<.-V@ɟBT1]8/e yL>i./sOk8F}-F1gj;~ܑ72<fq^~2=*Ѧ rl3'!J"PeQ-K٘V͈b!y:|o^,tYOުf=>^>}"h ljfTΣəI1!yud>c~}xtH;_CtڌS]uW t̃"wjވTw)[KH %P7r 3U1b6 T~]*M꭯f{h7:J9;M^NB BnTbL M+*{RE(%c5yd%Ou+xϜ<R_8NKasG9$Kf!QyA/Z$Akp !b<jJ ?cM۲=FI{f%5?WFK7c#&뎵:ı vMSюqv3i@t!NB_3.#n}pf?wIF(XЫҍ]YrL-.[m:Xh,yF#٤,=GqݵjBcLk0 [c"i4+kHD]=mk.Bx6%}trC4&!D2vyW!H\sǡ^]?@ȅeXv~Go̹ ~XRhz(`VG!Nk80E yWmՋbfwlQ1wT.s.{! zd7 '?\ $"mţO1{Y"w{Bٽ%RHw6lk炁O$ql^88̧g#I9jEovg[+\15+'Ry~\v)$009LMaH#cam #ܸ^PG= DK'2q`  BÐ@ƺ1 8UBĻbovmXNLc_J)`WX@G ~.~œY25 D'6NtSʪv*bMa8*=OG\ӻH u9!W5V\o/ߖ~XhY jN` )ve($,žwN-2oʊ%>(P+&C^U0!t]<4=*:Iސј5qyNq`K_ҊmF`q)6Xhrkv $*a޿kݬCzr^)Oڞ%k"iUtCߚկ b'Vxc--ʖ؝ԣ\0 ROz$50;VZȹ( r;(/ l0ٓ!+ -֝_v%X`刧4%1E:n9+u ]i"`[GD*F['h%َ&7 w{c,d (ȢY3a`=Ptkus^dUƠcIOJf$i#!.T|H>&(YJ nc5xsi :U?c!޻Mc^'oϤW Ujϑ&Ξk_~Yi|)!Hmݾ>͓rf#Ƣ`w rj˨`uS?qn/U2|7{e3|O.2d:T`-/ NNn_c%&Ai͐1J`Zͪ 5-6A=/d엸A9sc%E{;*t+oFWՁ@ÔЁt>(`S-$~W '+uR;8VzC|=|Y չMbH>')K&cEG>I9gJ[E:?[,^T㷠_%;³7#.+HD3)0 >j9~GGG;ul,C KFLla:D ȫl̖=TJzhϓh&V}C2P)P!GB:Zb6&+Tx63O%Y&a X :WMUۓqG}:Qcdl;Uҕ˫2"b,u(d-C<Zpe6"K+%tD?EüSN# rm0.%Տ6[;r2 e- H_:$2B691HW,(醤+q-fy6BUm謀\7Ǧl/oLȌ6XIXtli@@u&~='Zͤt͓!e%n̆]i3.<澝 X/6v}-;+a}^z.K7 {gͳ1 pqZѓմ=/.v!k*kܝ?=QdW*ouu =IKSOՐOK2s>+$?~Dd:C.5׈#8C I3 l8ޞ3O3TXYC!#h6n uAFD](ɲgӥaE <; tO=# R<72SQ?]1!kBZ:΅'k&΂!rN߳˘As[K8j)+Z!w6bjR )pgxZ8k?dfEqҍv\C%YKϨG4YkqowgŞ}Jjx[ѭCG&IL]!,zLﳲ+mCŒ ;iGd|uWT(*E&;?jht._Cjx:ذkF$Gv?pCWU)ڛî! ;TqJ B2a2~hX#,&\ԻU"Ԇ |͜~oQn=RѫK5-܉$ H.Ya1SoMтp;alHč]S Ͽ7i1tlJMk㌘[&`Lxq?_{[Pհb Q+h h7'ǿR= Czx]bw{k?sH ,ai*@mrΎASHIKh GhTf:vLO{qE-+|ulX$ܓۋY wQ) jG]pvF#[!/eXcpBC׃ F̽kCÀ3B=;_&%+Xv KCXy ֻjQu-(QɢnDt 4Xf6\Sjk6v0}d|!ev+ 4!"eO<`#8%^ٍK.8Ekv,oYc6VG3oZNS]W(q^ࢄu!9죁\WIk\efh[0$d5aZ/aV2N.Se2a8 M+ ,}oax_fvln!n1Y}cyi~bB~ i^0w)Od fECr"oX cy<Ոg205Un?yӆ L /wtSL{ψ!yHgay~,?L;Hlֈ6|4J-_BTFdPX} ҈hU~-q?`@mkK Sw8)yRo;Fcb@|ΣkUn5EQuں#5xeO?+[XoaTe_bX 󀁗m*Pԁ8dl$S,7;pƖ١V Wۣ[`6D# :B8B 2<ܽoJrK{?h+g*ØY\8oE5a *\ "^Sl)~ /R7iГQ^2EO!&-"sm! nGHSO՗ĭ''ޟՃvl*f=ˬqyXk F*Ov l*|8&9lL6M; #4imJe2<@KĆڷ>;qQ1ߴTK)(UH W=9CN̷To1>Gr?FMR*l:Ա`kb< q#s1ܧWD-dxnxV 3{AjS aS` Z;\Փx-I|vXJC gՖRvɲ_hXQ!gDžB袘IT0Wxo8bP(JZ3 :o00e*9o()Cmvt%^]EaoK7!SsFК n5ş1e}BH펯%-#$& "BP;ui;*jGju=Ro[2c7 q٭ֺ+ՂMCݒ4@=7!}e ή=^P$ɨ Kx!Pg,Sv'**N0n**ێo#<Ѐ7-ݿI-d^횞?^ٞcl?]v5r2YymU+=UXu 7^1Bti >tǑԷ}_po3G:oDUԪ⻕ʜyL$NEˡVUdAE3f@A j&#(Y% o~p%3eu9zW$ ùkQVgP;[}r$,J 4{I-XJr*)D2(7kf-87L!ZQjk7PjĻNTy6 al]\՚*.ViE9nu'_mjYA˓A?GTu/{}~L$7řTS`,=L?qhI- gcZL돪G &a-/gB0^MRG,./NMkK;f}%[U˪ueg^_azb.,0}WJ *F rĊCQOʜ ӐHh32W tn5xb-8躝]׸܏7=މ=~9Z(&*)0~J^XWG&7⇝+=W+܄KA1>yO̖" \atw܉$ Uզ-9 q{jgZ\"rbƴt\ |Pv5Q/ʱ/JdMڢc]"+t8>|siLHJѣdeV44?)9pb)B % rĸ&:(qr^dγ-OC]j 6uygfvuR[sb#(׾tg cv=|U0&?SbO;rznJ;OCJ'BJV #*!w6س-5Qe;Cd,T!K~$V}i@S &ɥ>Վ5I.SИ#_RqF݆Co{4Th\#CnS@WYX˵aQ_]Rkd CTB-# W$(tdc6}a_ D&cƺRfZO`GEŎRNUtVKh0{%˪Ux ;nXz5Źh;"ئzt=u9&3kqeru.z"D' zc^ Bjlsz{JK16vP D?[~VY(w6!d ĝ'X~E.O :膊,$S(~.ݭpGz kLp{])8ϴgTsӟ%ڶJm3K?Vќ}+{ZăY1/&cPoV3h,AS ξDtΓ󲲃8t$*;efYtF}x uJ, }WxB/Wތ-G07u'n-Gs6 淕Xv)alN[]a Z9yaiZ1bXLy#;k=05>LDCugf#@.܀n qnX'v%4_ږ697}&>ARXa5(A,g-;SJmV6 8F`Yo=@F E24϶P$OF~x;+8b"`( ҂>qRI> u<-ov\aWR=kWDwe|xz"fH0K!̢0< ڕ6c09X1MM[Sm@'^n9SXܦqY*_ Lr#*E}7f `<[QtZ~wf`9nlOnl 7uVI2KkF(^P|Fs3LFkH?0=؍/iָe+cdӷf&]A~s:}Q7戓'6岐YNSD(o@^[)Ѐ#xY36ܥWz$w7j_z(qy`.go6mkYe~ "W&69a$nd-DWZhw"dnFJLJ;[#>^7l |Q 5qXn1y,ևM"c煺l[0?{%mHZCA,fJk{{5:JJ~#=e͒RayTprܝ)FW@FLg8-&f$lH)CUZmj({ zvbDzlEBjoNꮅR! hkj`;5_-'瀎1]$K 'kߊnpJK;mLR[[Dcmτ !XYD^ GUQ)>tp mN{f!U$E(hN@Uy33/~췝- ozL&6ք)gY!nI]N1>@7d֠T-_Էf''t~z*_.z5)B|?^V➹|}Oz+akj̖ix-B3vwY=iu ed!kڴ]Z"Ui ̅=Dz&Ͼ

B1 ^jE5b*J.‡|X:E?'K~ 4'z:EEdet>3"Vm608ADq4>Efʥkd&'ǚOXq@yb I)`W+;ylWP=sef|Z\*>/i/ >XÕ^qUC蝑f=M5|$|35"nt>r:E0*^јkGR,!Ჟv0*nPGI(Ԣ5uE@;HVq!>: .ޔ"4kLaH)T4_kIerxdiG$pۓ@>9[$LBEcMiR C(\#lVF@3A63u^8=91ӆX3XhVWx'̀X*tOa-~4Uj&d"?3S;@ ]R3rQpa4]Z%"}cϫD2V> !χᝍ3},h3jc|P)4ؿ>t/UPhg-Vp3ӯp[oRb B '!kHK>K$/Zք +%{g5%17} +/@l;rvC9k)lzoQykpxwv0MJ7EhKن.(ׁAk̕f#!~\čG]EzBŢF'ä{!Ɇܑ6G/1=| or٘{k?9_|?fH͂p:cVjƫy=0 \-Sw&^2K[R,`"yh+_:69GXd>\Q- &.FwVX5Hǝ873A:P`ta U1G;-GDˊYEף~ LL_IkUk5daпChK7V;Vc찕V? X|xs3h$TJ>K/]L0xI$H%k/)3K[(I_G܁H =-g+.ͺ }]@\{ C/!@Nl=).3/sTi;\J*|,3Pm߻~*J)}>[I`۰xN=PcΨAN6H,.Os!uwg k꫓M+ۖ*j(bmF|Wtc\~l’m٢#BFzآkxegn^rk^ tx7 :3vivFMdM-16a˵y 9{NJD[-\e hyEvi!\Up6!~@rߩK$ۨ>%t[b$2 )}C2HCv8K )iqY!0~9Ǩ!&6~{Uӕdu;t&[kڮFL޽9\ ,$ >_XR<6 H*\f'sc ecXϻ:68w>Kn/;9/=jm; 7bׇ13XcV'bc%Qe-tXrq/I>MgU)ѱ XX6l-̔lr ݂#_f12}G2gm(*wV#Pf6^8rFJ~O@hyvQ/ႠGg<\: Ϯs*Ǯ>hNS4|Ha). 8m#h`[fmf a A{ PچwGk+"cڃi,CޅkF7..l5 n@m]Gs:_uqJf3\+ٯfK5ЋRxbC-r)/&aҺ 08?_Jb%Of& K'^uI X@Ve[7&h(k..<R s( |$"s<Ox^9eF(l'/eQk^mjō }__)舘`e^XDfA a~1 tz]>F!Ia+&T `@_e9ʼn _|Xu@If_fG[sÌ3*j%+zȖj2YLO ydƪhb`F2s]Y~pucĎ ܑGD~)O~F!0*¸I,Q6L㯋ŵBS xyvAFd?Drxu^d/xҝӱSBd?ÄE+i19c ު䝐(ŀjI@ܶRuxK[$J 8!޽VnThH.J~xi33 <؇ fhnيۄ+C4-?sm9rܒ#Y$eNLޘtbTf ǔH qMsȯB]|R<{gr0 ߓ |^43]x+` *&{;.L͛%'Әj Kp_JэRZ+"ng4% ?^lCV[?X;c3:M@k ަxNY7F3ܕ e+RE贖k#A[M[C#ʌ~q[1\LKQ*CȉCb UBhXho= O{v7Yߊy 4,re qf,q+ƐIPivWAӢw xS4ʍ)uk@pd JT7 a|d ꬕ)5;>ũݼQjy`=\l1kR6 ko[|~#`d%Cnա:!>ٍf*I0b[~oES D<(_30MH!P"IYL^Pyկ ?/Btk]mtH5YB.voq-o¬:IY!-ge+qN?[URg?j+~cΗ X8'bgD7f֟ Thn ©QO]TI#F\3`U1f?x2rmMx~SRjʿ@=^m?W駆ȊLJZ2{e,Fe$u &8MKmz .8a2.~]&E D-¶$}vZM`? _v}HƩH3;AVv7Yvrɍѱz[bdٿnD*%V"n+W61MU#hNDP"Am34 OMC&T]ϲ 3~h|1BpHYhd^CA`k َ VFFQiƝ5l)XbMQQԤr Syƫ4 U"K9}āa,BMF\lކuf`pԥǟ\JB)kh[}ߣ&UtrfRg[uqqu≢fbkn93ظKZʊ526f(dZyl~jkoDijW|MR -JvL?@h/7X/Rh\avXd=M_(kSiOR?J -( F`;T}F0DNj{ woɬ} nA;9ʹmJXjmqe\]#2UpUzqF9x+o ?z`xB'CH}vHǕ|k2H\C}Y$;?P!AI_[zZքt$yd\w7_evͲi@qdKL*Ҝ<<؃ >_~k&LvkT><^ԐœE~ 3xx[|9,SHr T2}bP?zH14mV*BsBkvIur9/V$9ɉ7b>?MHk v"l6:OMX{+:$l^+qwJxWob;Ԫ\.Ev\O*դ<+.k̢D5q#ҕ%Q&:$12՘A1PckM\zu1D~' 5P (MxU`91>wVPм*޳TwFVTMhhώMpHOWQ27|NUmU-ZRR7_gJ'4hVߖʯ黩~x!eq،SH%̬.ÒVZT1w$~rEUv?P/ic *|!4w=4!F &Rz6f)-e9v~KDžޡBHH1gmJٲߍ㸃W_4QV:32xj&aZDG 5._nRE|nM.#[S'lMaW%؛% P|x>q$^HZl9o!q\yyM\6Ee>lDעڀC_d@|./^+&DQןHw+pڿ׶1a[.cn;m#QdM /*ߝA' aKcQg/-]eBUP5.`Xf~I4K7 쓆C`{;G`'NG308xGc%tD#`'v- [gmSsT&֬5,Y7}L kI eXPkT;e7$AH؈M⓱Їv ?LbnBMjcTq|ؽ)B"`L5Gq͌U"Ǘ."UݳwU .#Z<9KoKhVJDZ¸XQdxXDCK͈n7ȉX/s W7$Ț6 ?\RBdgI>Ŕ֦s\t~%Rӥrsݛ?E  ɳnG_Քnp36c[pbFaF35ƽ2ɔ0D`#ގ"0w6%yL\2_$ԩm?=M=lR~Q̗ `~aJ[ue!laN<\A8H2iV8#+:`d_ ~|PGj߁ihrǣp3 yw^]ts…Q}_sf,v}ЅP.>ZW>y(A0<|<G}_@Ʈ=}P0S4,DrM6g=f+.N!\'205e(8 駎i|݈q&&\$B/ ^մRP/NRܐ-'6GtuP ndv\tpU:kBR(JXL5 {NB~_6xӍyOj뺗|69)8p@=]щWI <ׁܛԃi? 6h ՏݫGL0,GwK85OКvvPx2h-B&G +p@8ޑKq$D&Agr&4t\;T)M ˢd\cNolX9jH#%س߄ 3ʌұqnLwux}htrRV_Pǫ5&x1GxhZkoAaXךO'r@eAv oRpV#i/MtG㟟9IT\X^wP&9}ߔ SG\eGNTRja5zpF>RC͎69.Y$e2`K<$&4XqGvD#[[~Q9IC \m[ UalݏIB w@ {Po_LX?o)?݌PpX^|fiIH ?$ EWi5p8ZYKqn!&pb'? Q,C6wyVP0x~\G6a>}ZX׬ŶN8 %?ԄVƦfD1k$jsG"^T_ ;2_zKK?:S 9?%zb<-ymOGi!3}d! 6bzk]nI>SK8W룾j4bk\v JQ<7FHKز-&PRxk A*im^X~W|hCH)FK}#=Nq:T B%0x;{v]BZ4I@>kMM^b#2w0$Cю,sFB"'ٺ//jj,ܡ$'Au*@7ߑAA+Q9WUZ`w 6<'z(\8|T*Zކ}g]5Re;Ӄ"WtoT;KKR#BW+؍ZՂfmR wUD{!hH;r @(E~bf;6wZUmd87{: Kk>&]ջmV[Lni6i^(a_SmIf5 fF*>rr$4zrcϗ`LmD6QXڮRtF t*lLOjGb7#lX(d'?C__V60oS&-#utXeH_PH\>IܪL"dj$gɮ:Ңw\ה[Hljq)$!\Cr4Kcۍbaklz=/wtޅ'pЁGF(`WJ:c/(~']c\c.[@)TLnx SGd09&IQvWʠ Y*4pD}]+ A:B]&T)B2<# ˧tp)Hn'ɋm޿2k"p.a}f [ڟP1Sݥv.o85Nh*);uf iBW) r1s\ Z0226#E7ҁW $ <rVgGwyb|vmߌ&E֯Em @>H^:NPnމMh*BZa=dpx|ۦ4ozÅ{N F%*7#Kц.gd&Z[l9r©ِy^ԡHOB+35SY2H=L-ˍQ*;hQ$X)%|-?NrEؔPBЉٟ<֢% R)}9}g׀{} FoOLF4f*ľ(Wc̱C~S2 L2Qxu@.Mc{n< VӲkFooߺ75^P_˃>Pr.DqmQ; öC$y27P$&+2S[H8-})̥\}z 6΅l)5# vJK0P~/L*zS Ϋf,4ZNt"Ghj1No\#taª+'*|nMU.c'bo` kWsnY@1U`b&%xPJBQ)Z+phJϮ[N_5: 7`{/c7 V`@nqYcdNz/`B0 .sG*rgvCW~(?&;bmQ9/ⴳ̣M/%IA pI;8t)ZK094fwڼ5ƼRTP&`^|{1 0I)pO#`i+lYp(Hx' #ӡ#E4˛ {o`evwt`sYl+hs SH3BNk)k]aN YY,uC,-fa8rI]<3Y!^9?DErZ˼6OyQp]G͟g^K_6*Q0~SB%L(PGi(+Jk[0Uyy`*JwEB6|{Ǥ|{< ߤ,'Ǜ%,<Ǫ6ԥ*WmV:uYH͞ )l4)QJK?+ʌagbԜXîT/F},j/%)n=.M/)~Va1! le~R^;D%ӡ"\]._s^<*Fː7-bTwdѥ@6g\s6v,M~̆k> @پZKke0 oK<&OtTt[>aغ3Q_ D{P>o*i&uufʫ}zgK~fG[B*NxzH8dq$Ȑ| a߬ R>~@|C\j/siU ;t">Z#J]!_b׋0B=A~Cп[y#aE+ơh xAenMPG^ -Sv}?%ȡRɑp^I=eGƵEH&d\#G ^%3Wo #k5㸎ܥ?^vdΞ\ +.CQ1'[ y-w,X>ڷ*k'lGЅtc</BW^9L>ֱ]v3aԅB+.?K;dPIl:K2%K ²1#H66RXφYI ~O+S, tͼnp$IeH)Sa(LQn.{;>!0QhVRx%N "?5RQKDU'ħSzT1IƵXDCFgP7ǓLtbҏ:{8DbsŲ~.&.y앐2@Q7K1lU+^\R#Oǽ+8/֚pae=F\6d'qh/%!nX=pTx1"."&S(moՄBC@s1Չ-r߆}d2CXtX!)_`,p%/}0K&=xta%ف}> t߀qxSMS> ʠ#c9/ꢽTL);#Mkƚ!7W'R$2%<1WA?tё lef+$֐8 p'{ fRZn%)" s8Qr _@J֦ˉt֗w̻k90 u549Xs7GK(FE2``Enk5f jAMmΤv2ǡ˩g0xqr"`ۨ™!́WjՏQ^03wes{8A/g2bv"Ncxu&їGF;b_t+Ԁ գֿWS݊.=1#t.0(6ՙk•%UnԳb6T`GvK-E6B ) ]aemwqvlg@w ?.QgE!ω%)J Y:Zŷ&O "&)>y(1Y}_3c\. ?6T` ߀*S̋16q+0ja~ P4a(`$U^t72TYQܠC:9io,V}9bp&ok.){?NI]PP~u?H.+[Y ܹDRWF>'ԗMbL؞:qDwl>6L3TuԈѪb}Azwׯ< &鯜<@1^gv\5Ƅ'@;KNr>c?"3]{e  6+S#8'|~#>=Xv# VlmHӯ/MބicP fy2U رjtcJMvy*xfrTSqPLc ej}uN;: @}ڇW)Xzƶ Y&}MP?P{u,@8lc"U4л#^ʥ֏0셛*=CRK8O-)dc"j\E(q!>s IXMzZj97 t|(.v˻a%)p` h~ 8WܧF%ZO]w|oޕ8 J%e`$ ?F-@-h²Q% Ze4AMS9%|[wC\Tġ\i* v /S;Zܔj-Z7j?BhH,VΧ ]m(T^[ZE_UJ肃o0".wi#FE8Ͻ$Ąg8n M`:[',{#Pɬy 9 bIePP!kC0o: ?!SPl@%f,i7N=ęQ4F QI~+!hÐ%ymb(;hB+=RkV5rŲlSZb'IB HR%-’r5~82ˠQZEM)Տ(1ѯF/Tdn~Q$үdЍPdpW}pƕf2FA.HCIw ;i Gt$;u`OV-C䫘Zk)V-;7NָHw+NlAd%jM0{zs2Pȱ&}hOtz$KG_4{%IZ^crJ^<N3{kxo"kX_W-4ăRv]x6 gu $8FvR'* *lquԋ*mVA"V6Q RsR +7?v;j ZEBB KB˖%U z4,ڏ(I. 6mioʵ2׆:-H |-AJjL܊h 4Bb=mv-\| PzaW;bI NeYYw]nR!uD:ҦG^L;0m\!?ߋps ikI$fU²zto#| TqM;Ý.jNR~Hݦ6yStoA&ZL"O!,f])F?ߩ;'imd*;1Ma{5ۣFֱGд9ݎ蘉juh^ex+ 1U&BUR(Wlv 4ވk)#Xl&xW*oQ^W% Lh S4ɘexn{YcU1m R?:q@oo~נg;/ & b)isoV+4-E.g9R% e7>5[^F*\)#zp +s7h-i^E2Eut}-+yW[돍# kЭ:Uk-Tp_R1w_[)F4v'xE t\?={)e4Kq\GDH^G"ܡto!#>K--ヤPuء x^_CKmP<1ȗ;n.9#axPj\[yV[o$Tkm-ʞL# b:#/M6iHmL*/F8 zLwMlMh# 4}7B0e~$ 4b]h`'Iȉ=EPG:5y?#U7NBն7ښ]iK7FfWCHᆶrMUrqEb"KzM\޹pKReQT?㶎op"gYX q`)Χ6<N*G/?2PP&"i 9T&칊'ׅCjˤxv(]k01bnƎ!vΒ?@LZtkX.4f?8Sң@'wB5R:q¯Z9PJ. EtvqO7$lc ҵ9:Gۧ OWS*+N;6nFЂFtC%Ov}bO3EB8?a|# KqhPg9xy J}Gha~q>hu5j]}ƋA3H')WCԸ]Ý-z;bNB+RR+Pk4jX&2̭,pǘm$aT;Ssu+qu\E}qR'i/0t]J~&&x$l+Mb1a1HZ|::l.<$[jt`u>iۚD[+#re<}#.= '%dVx \`<˥do\Oo7עm1}?|~wԱ !|9HUGG1|.f8vӶB9ypSA9} g(2ɗ/jN7I!5+>q50t>qh25&'d]/Us@,'n1G?-2&Q!=z~G6Lҁ6LHY}rYl7 ?ǖ e $-H/˕ \JwA(ns;=,NQ-?Wխ ;&$=g[ ǰS^΂胚8DW_[[h)J퇺[\05=Ѥ#Wƻb<=*p(sQ&ELe*2#KNfe-ˆmz6U2$k[zd.$}|be\gK8B^>hVv0xi TґY_ŊiYvfhTw7F̍#"gVfj镪TT֧2k-D79 K2)Q|!U&?hDֆaw5os/ p ۝KjAZ='_h ׻~}Etr*\oܑV@P"H6Hxgp@/9WwLx ~rŹ$dSn!tQûkRP~c1{rf|[AXⷦ=hDK 2n^℆YhEH15(>[+a=_?] nJxas;UV,I(1}zgxoY<iEWc/#SN6 ;.<Njsb˼*|ɫv;.6>qEP8.9)seeВ&xb.]{OΐS("u[_"?Y~0ܥ.aēcRw>j[FDO"L|Bu؍yaSqNM!Nd| 頤>E3ͻp}/DRo o euj^{`jctF`K8V !L,F(W_NQٟꈡ.dx&7=݋Kd{u$TEu(?^eg:}BJB*t壟–"?.LQpGQ!#`A4QF90D70 h;H#;l蓸~;C<73_Y!K> "'kViJG%[ǐ\ja1 XPE5+9}oTMݕyjH+[K#7:/S2|Qm2P}k1K2H#T-WT`{9~}c}`閔F]#HBlgŏFʓg]j=#m,iY`v[Q|$WerE|c '#A0:PXojܮ(MuF*o֝$Ze$UD|̽ĤF֓ҩXf  TU갖r_"Άb]C>GIFׯ+޶q~7AWxoN`拭! E%\bGg*{20CXLF ΅J]fVT0mX%2ocaۍ,lZn >aܠA~ƒ\68DHwX2`.O/ܐ{PQ>.bO'}̹t`Fjs {씆=¾{V'ArjTBQDtkH|D@x` `#~;ʡz{w}@j;&Y‰ʛb@ռvSCk=67[EMzѭ#HNjmJ{o"%JV{!gCI5p woutgCs l* Ofg?B 6ҭ90'ML>5&0B, Ԁ/-"ޜ+nO$ƖjdyYgt\߰+Lx4"ĨL}!y_oi6m(ko٫@|=̻ rćpQ}6^?QoPT8RQ+=# Xz63uC:z;aK4B?qС2D+'lphBYAܗebXJcbHu}C.l_UssFD&\St.^bQm4 PvH ,C %PIQ~Ȯ4=_DwxpUUcQk׹_$m#8):>H.n`%_vܜNPJ}pR'$CRe5dq)fG"c\`:#@Q~xO? BZ -jYTؗ)r^g[m"9,HY;wY&mItȩN/CK$Mϸ/^~'%[<00)>W+O%A$=r⃼Q ;\)- 0A(>ԃhciTl_WZR?OVtn1PMt;'^: D0}H"{ŴRW¿y*4Z}5w#;!K%y?0 ϊw<\Hߜ()wC$XYbnZD(j0'WnUE]+WGd~\ `DX0 [6BCMa+(0 h)7S0OzؠP.eI/!z:N3Fu0 K * :+a,޸7`f*B&WT+q+€<|i 3cȨJ>Yrf E ,-T (ѱfbw<p%_%JbG`&o Z>tV{Z@ΐcuPL7]nh(95PGЧgNZ\=Nk2=bepi5޽|6]^^n?^V\wգC\2=M5iY 2MB3JVBȞCas ;/l'6Ҹ[4fO*C]9xGT}(h4~XEpK>ޖ$߱ðU D{<+uofx"'9i Op>E%&WB`VY!+l \wo _lBrD B#J jrSl+?[؇ج'>3-Ja$?4U0K"B)F݃LI^_z-@h?y=Fv:E8껇!|aY\; _,x,DC2 ]tr{IxYS=iD=a;DpO/f?1q;f\КdSdO*IKHW ~BWpqM}}d t;4 ~U{wnPW̢sr-@|%F?mHԷ3͊a Zk: ä[?S-оrJ#k߷%PP6PLer+dU _ix%F$7iGg3z~\gL2H5kҹoXUgyQ>Ei;rޅ (U%5L]gv nN%뀜cf8u('9RW$FԐ|Tifut1=4r$#q+.2% c8W~i1d| ÑZtKٷ5];?sR QX9YY}TPl#4Ng^S*5Q%!9c@YX>$J؉< w*׭ww vD<Љf4ӅM-NRaۛoB1>(D)iUDm?޻#LniKb1%a Y. wsbb )sR<f, ix~˽ 0DniPc~O*޸6Xb RzEK~:}w S{+òr֫ߡqKHS9W ڎ6C O ު1_: G+`a0ϲڹpj۟/'6[ԤȬՑ^I_4)@x2ה1|׭E(fRdCCRMɐ76DޚK6Q\tIjCE;ă1 cHLđT:CEQE2걉N)qG6=ۙu {7Vf < ՒrJ7avshĄ<qU"F+n gQ*R=[]K0 F&i){-n+Z^'7†-2=xCb?Q-am0 tk,:5?tO]J:h8Zz- Danez7@xʲj7{˭]) /$"XPte ןyN]KT6VdLmD] ʆ`r.ӹ̈'&|%"6v$ә) `"||`#,|   .آuw%(9Vq< 9Z?ϳ3j7ǒ4:LgJ!""gB sv;~m:`4n]'iJ:g G]60p(w5^=S`Ԅ5!FW'xb9W r/[/ (ӜĞ~z U9,rLFNʡON}|~QlhX(j(p{J4l*+MhaSD m7sN|d[V,%/ #+퓿ƼE/yB!gȮ/߯4ΨS#wQdn٩5SBR%%0x>V'ea1ɪ2] ĔôRkP5N~ME9 U ab9z{ l8~:}~h^WݿH@ WKX _/be=.1;HXþD6(0#Rg:T3(TKTOGPhNwtSd *3ΚkVL6%\1]ddugT62C'2`GRF|[ZzI`jۃfe|Ea[3_yݖxk&6s %g#wq3v}wh+ VfByF$0ɯ$O祓 iJ~7,eǯr~7@(ymt&\Gi^@}y`nҌ΋H=4P&0XK9Oo5lȚKhs%?l)7* tdZ!<5:1ҮJOJVf4jK<~d Ԇix{>YG"fٛYoݥf4x ǯ){i :|$É[IQ^cVܴ~06YՙWoiihx s|-ð뾿:O ɺSVJ$D4yHcO7>`R o~*Y\m @N4ArB`k֙*eWTMeh@ hy\Z*>_T,rž@Gjw}LX~V-O-i&:KkRS~Jޡb#~ə #0RL!DC/`̙0>ZwwQM>g`Fݰw K#!e~P"yEt(=I&ar}dgRGN<@1$\P.4gh8ؒU!!n&j+u"hnjSx Mp4)ylS_;S*E燋)L#R#+Qkk6UO} B t$ 84vY: t!h2U ψ)I>v' GC4(upZu\Ը <(?J]_gdq0}\XFy~1cwoE r?7g9 yLSO do":t/4*\KE]P3-m]~Hwr# qFf>m*iL85cmÖ;f63pTb/qWQSY]Uf5b/Z8P9#~ f@O@QI^-Y8L+ `լ{0ޅEJ8|/nY:r&:Bl /%[Nb˞"s)0%.7i5t}pRn p;GtO3<O#7QahXx)Dn@Ϳ* N-u1Ro"KkgΠEǥZOP}Ԍ2\pJ'YsRF A;\0ߩ%X deA)"`VJP|I6+U>vjeǔŹ؈ߧ8/y.]HH'p8ΛLR8^?TH6^?b0'%Cߟۻ phdg2q疏^7 1@ GEw]94qM7=c=>/@}; ]:/113?OGxnJ;B\Bʍ&w:]wx Vy qt"ͣ<=ĸ@j\?a_"d;k0_i$Q${m:)sR\Q`7x<*G]{o˦XlUAUGx{S" Ÿ=c%ad Xx[˶]dQf&{>n#VD*~,cs81Z G O qiq0N Q ٭0*vk:5Q#c`„FΙ QjxU1j(j h-q{G3AH'!3iWB0~?J"VUy >7f4Dahv2.2?D/}i2lD۳E5_0ʨPX?-A~Ѓ`ͤn`-6_"["pڪY"B m_Ru@ + h~טۍd]sƉ:"/j8(CrShp[#ڊ6f7($X+EUH)⽿^ѻ XNz(? v.tNLVf2oRKqRuvxbdl~J9~yn|@KR'[NL0@PMC6$AU>`ltv2A55&!yh2xg0~ !#(-> Ǵ-wkc# wo < >A6.lfTKξt@f2Shq%"?[1w OˑBʔx)sz?omإEW1 ƮAс˧'awݯk wꗗ oM2]Wx]JO.ty2( sig6ubxsf(ǭm>:3Q8,A@ΤXju}g; d-,';ٜ=ňLOnXb)T(1pQE"_CSm}{liIϏ&m4߫ࢧ[@+0k e5΂#>Џ$w!lЇ4jcZ#Wp-͡߃S5ͫ {IiAqc0(ꐆd^~d=S fZ]M^Κ#ۉS }߬ڀ͏g3[11"Y+O;0%}zȳFۤ R"蟉.!%1SuT7ުvp9LE50)`4oMz,x%O<m[DrI0];uVk5KQoUR^o)sVԵYmQ=KLT"ޟICJ1u>RDbS`•uxs% ѳ)OزPw0ǹ'a})P~I`["H2~۔@E].+g_K(irQo-rO9P+u/~Ɠ۽ĒY=ߕfr$./12Yw @rJə|_ɰ?}nh`qP rX߈TjHe(yQDc|T not _Od76Δ]"d, }*ErxG.ȃyIMqe(\~xޥh_75ӧRbMsNl$,6z~)*P|Ԋ8_W[_GfY?duҘGVۯҵx Bh*cԴ\kJ»`. .U: C"jjf5M浴.4ts5\/I;HVRPz ]IY糯P졄e!j!H};#DsV^xÕ葭T9pBV(.JC8;CZb^)-3wP!8،*~ؾ2i5 U5 o,~yK 5 ^W'eX_&bTOGӣaKs9SRHl728M$kQ9yI/ ߗ7m23J@rbx5:ֆfi.+BfJK wgR!0 Tp&%gLj@驿#Z= :vﶋA7jI4&C%K_8#[Z#t|.oĐMB ve ->CW Cdm@vT,0(B\jO)bx|.&)gIdP7MDlyƆ7Q*`_/P tbBwM!~F8{ Lr"{De(24ӍMSCDE fA gtFb5cO . O1d\ c|6DpJ0NaEՃ?`dfx_y6bqaփZTq.=:\7REėhS<]/BD4EOniUG/F-2.p7F͹6k ,.O(v'5*@AK/!XF*&g[f\J~{h \t&pXΎPR(tnkZhX'%"F@F-vpvNaI7D:Plz֩#{("h5*N |"ɾVTM{-b[LܪIcPFA}}ر{s ʏsl!/c#s+EZgcW:+;jǂKDžԈٳg(r{NyĈĉ2j"ygPZ?B*\]35(7/3@Wc1ж lQ_8em .N w'*bvv`rM;9r2t6T~f5{-G5yhSᨊ/#x>^|RKf9\ʋ,Ӧ>Q(2E-" :/\T8R5=,RJ!o.K7)18'C*lZu43 hF*M`<2ؓėu(V'TW6 W bAv6ɪ\y7z?!R=w#TMF{g5n'#S,.rwab?PjFx<׎ҹНZ_$Ā@ApD -93ոAcٰQ>xmJMp-8i?\6N 1<-oCbC u`G[n!{38:a@y@v 㘺f>>k9*&Շ½۲4h|&Y՛7 xo!Y ` )v-&1a&!yl|=++̉.-b\ )r rm. 1唬:XCRN^ eQyhb©xJZz/VGDB"y?WPh&2$ 9}\phWɺZS+cC`$| b鶃Cqj{N)r<*OUD [.'T4J-<5| 26DOmUqPahD)^A3L `9oFraG{+JҚ,P,NIi1(zV>ZlV""k#ށi<;[fI8<.Bw+q^Bna2c)vRH7J'YלC_B܌mFm,ƒNSXհXLD=G(!}Aq"*D큿N4Qsl{h5듳~PݨX3R3]E'-Gsɚ+1/,ncXnA Nh^'eW_ʺz<*w?P _׿!O}x4e]?}Kr29iWHvBfBXcnke=a0^K"(/9CWgȧ mu"P!);)x%eAW\|\%mN!K7_c$SQVgZ-|) j<~:'Cwdb;6{-e {2 ґO1Wސz՘"[Oc{"zb}XCD;% xlncE=-Y3a3@Xp%ܢ6KAQ7Z6ǓGR\']G)~lARċPBgh.vBtpO *" hX?(qn]dꤢ3]eoHBv@ D]z \VP`3@UF\~/K&7%?߽7p WXQ&/_etCԌlz[_ HtMMϋDjgi0[ *x ~ϪR+N˶k*\|­sxnη=s\S Wh PJ+rYRw$/i;mi.Bcw`汕x$,1 m=}w۶Xwq-pU "+ҵLg}FS]9i+U+ZfÈH _ӴϔbTn5 bo7މKhMn#Ĉ}4T<5nJw)'3.c΃f_m G~=f˭mBigS UHwe)quǥHFqA/f8aL)8QS^F S0g;U4-sw!TZ`>T@ NĪ3sQLRLbGyhnT׍0e"xk?((MW!xO1lsw48kUhݶ^Ħ[*xPfeKuNX@F0-ҹ;ֶC8='Ei{%I?w/CX"p5FQh S`R'_ J^zƽ}X@'j7N%>*e\Gml?oIb툜B-vErPϣOӸdQ97/ ?MTX Lfo&`ǮI.`'9VIKkN,@ܝ@f:ޯ?#=[dS凅{at_ ju f*>H33CS%ělCZ@=aK]g/0 nWF¤ {fH,qɈ {n`wv .-!3Gsh;axavw) YM@nMKD2j Bm :׾x*M8\:?.qM>x u^o'bCbD *aCϭMSwwm>miqM60߮ކ,GfK4LUGQ|lAJ̦ =C uV$ݦf'N'z-ѡKאъO+Գ3*da.5hL1>/aRI׬ fsDPo-5e=jnb1U2r x@e]a8~ovx]6RY:OXK6@Ҕm8`F =lUvS 2+4DΙO:C-h/oBfNw&ܡP|ƀ=e#M1тLB:g"muxiPŗ _gI (T׷,5)r#z>)˜k7T^٠wIf5%K-|$ N.~eL' 4 (7ZJK߻q4b8V9o73yGhn6Y˲t}BZt I9~?Q4U*^h.aB KIO4xThns0YcaJ>!ؼ0&ؠ}<{v8D=Nܱ{j>ES:_Q'R88JH!_PB 0$" m3ܤĢH:?oS`QX9遍R [>j]T-&\"ړLSs.ʹ)5'z){CUf 6.LRX t"74Aß7셸@pj9r|ޘݰ9C#M#wS`voY򊪐/GL C%^إwbn Vz\id]r$W9hK83!Mᛒ;gx7wyT^)%׵`iX~1H\sx@H^qBqxVUFm!8pY'CX€ÖRs}Fcچ1x| eG1\On`3k-LVU3UЉm2&SJ*Wn ʡXCȠns\!&tbd!/}ٞd!=qQ}~_}P'uc 7du?dCB7L¥vSUPAJxw؈s6 kH"saK Jնsg6.ͽ' <[q̼PMg5A/ɱa%8 ۫aᨤMj akFP'inR q`r7jÝ%E_d t#2~قt@at3U Z>ʛ%}Y8!A"lkNm.\ք~3 (5ga ?Wu>$$֯A(D2܃tX!Қ>JJmjbZ9ըR1Rr( d NX0y yX~5}#b dg8k%8fq,{%QX{\.[|T[:.\r)݀GnZU*]tbB lbOה(Lֽne:)%|FaF[2B`C5cj( -G1 )\>9ds=wDVaE/ rA /:ⲬZ #Ϙ E6$6f=cͤC+ ǿM5_w@bć1.K_s'Cqz+淞eG"Chb̏ܗRu-GvB]+fǢv5^[ ͬ2ShkZ\$4 %11i[ma4<^aCޓ¤J+([bDPpp"0#ݡ5&-þ8k=p Dr,U9~&ɍ @ֳKW}Xa;NOa3A@77|Z-XM qwM iǟ4#b} !E?D[ N\Cdǚ^C"jc,ߢh *Uz(җ<7"Fcgjj, \W5Bƀ*,jGi-Y.K wMlM״҃J4ߢg ]TЇ?XA<|YQEE!q2$: ϑnF_1{ F,InZRdʙfҬ&Q*8 8rNr\C\_qYO TI9"po~7r1ڷ2άe +yCqaȁ*dfp`?.ܳS CYJE2\r]GSK֒^j }o&Sj#1OP#&o ͒diQ$Ctbp5jʌ|G ~j }j'jYx_OQ[g[u /(4T@tʠU?/z{R=^\ߗiUjkc]vGZ |T$DҤvXګ{.+ ~X٘˩#{t0ٴ]U $1S Up[2:^l^8Д!>G<2KjlM8AiksRN[x1?:SQ*'o#Tig:'Y>WeOl7x'oϔZcg\?3 :?jo%Z"@n0& N 5Rfh}?RrfOg So*faOr8o^L>K?A'sX[ɅBCgtIRb22?,È ;of0ԎT}Av F*V.朑ۻGvmdgg_mjZ *!5xHߩӒa-yv(Ϥo\6I}h~ʂ}WKo&r'Ô/[@Is=NeDL_yJ_lڢ~)ee&hb3qL}r}(~'P=#Ba8 pályI]P NT(>>j 2h:$#pWnz%__& '{L( @mɟm5ҷHFz@r6[#lF_!{Xߍd^%9.1H )XluZ҂Kk:8'r f5ܓ=$7ZvSZ ?)nκfbRVn 1wM1ꊥHl0ֈFV`Em8\"(w귱fY3(YƪU!4WTv#?>L;^0ok3͊KvJzxvH 8sF\1$·SA8 h),>um&=Z.Xrc.:# t#EN?QNW֥6on"ةSK^2Xs[~߿Zp*CgF`+TU#[G\E%7%e>~YKlHW6+h4њw5 V5KmR[GP!%=Ⱥ"I4d1Y{pɝ8ǧz;P&uǶ9\ 6xf&Y|?@ Y+:VH'Z oïbǙ7t2U 鎑nEj05gVR+zqT/]N,^jʀdWgF -E>27 excL;V<_ňA =T!y-OLY0 &ߴtd X;z2(6 Q<4{t_=(oض\Q K ysc\aE8xqU>j{?1:ӵ ԩ9` 쪣]~JI%MI[wR>hJhO'0G̺lN m<3΋GɮobfJX?ݴcFP!RkVqk(DXK|[A2o?6~bd_ZT-} <)1ǚ +#Q\=ADΑ|wkTe#@(IȤ;_Bɀxbx51_wXDsFubFIOVk{eqN$q 1hF( -ǹ؝t2| zZdy(9a- JTj8*lʘ֞>yڅz!7OOD}Z.d^ Ѭtp?w>(@.a UxN#fK_ܬW1wBQUԞW~S.J:ôG:6_X\rq^!} n=Ѩsv o[})fzwj EF{.?s EE6@›VaB#M:ZfSچm;pu)?ԁg|-BUvbi}pc~W57yz׉_Ha] !Qt|-nC: > nUypeDwk~,f%>r ))oX0UE7`Cc:Dܡ۠n4e]Ex*擷}< +`QmY].YZ4bU~DV b!g(u1t W~g%al4K7KWFeNHH!ۀlgS:PzP }i3iѲe0tl LpotODҫKLc-_+:KZC@D]4DϬ/N̩Kj/h&y9'q;-8X楚E[(IiqEwg= w~g\΢jt3F͢:[Ɋ=HaIN612am޿l3^ђM[@7j(gv'@6 q7"ѩҗ`{N2PoC{Cd祴‚GtreUNJ|L&p>eS#$2R&Dgt7u!&'gtܘmZ2gak$rP_ʖ&/Tzq3 f h2/"$J??בȱ:A3/':FL];zJ93`d8rhe׶2beUP7~9j*v*%#nyɹI~p)J=n~x{tj1"ʶ}yF u[\ ~Xӣ ^wrˀmF4'иr42?K719<+Ce4sYz]UUX [i8ӸS3UUƽe k@V+$acƼFw)%' V.].$( cLPAjuK"#{HrX [\6NiF Zն\ihOb' V&( P1El5,^NYMP5ՉۨKJ(# rhHY`G NL% O![JDRJ:e&Pʚ.]D p`Ń+DUucTD1P Nؐ}`W$0+1{bԆcd8yD|$g"nf# CBᧅӱ;C]y47|8++' (q%&̶ Mt%-eی 6>,bU54Jvn]ba /i![+LmSfMQt"l|ݗ]j3g1phQe|{Jn}~iA-0s-ӥZ H /4qh*Re3.fh:4!$^U*`=ad@ Sؤ*2{p?b2o|M <nj?e:dmA4EnP::XhqDYJ"*W%lt$tV+Oprkm}nU ؄m0ϡ\,_q m7D zj*f g_q5-W+kAeѡ@nkkm\]B).ɰpK`jbt NM_3sv "z5gXP593AWg[? j+ #_k%Nydj +&1;̜ւW; {L>*\>4l’VBj/lͽ0*i94h' dlԽ WJQ檖0gx -T=@,a.jq8RcDˉhxf4TRqnIlO!6 KNY;֣'J>.,Ц2oQ$R8+? :f,N:%뺘 %o>3>c"ٛ2aMOe+!y,K)ߔ5L9VS$Y x(iJ {qbɇ{f}2jj8Ab ;"NbRB(͌ %=(GE銣 怉ۖM z{|Ui"eIqn2n9ȣu}p# ^./hAw%"ԹڶlQ4C.yCπ"l,˵ r1&o [ĩ]-\bl~tل9P zbMOD;d7)}{W^YŞ_&hHM3kY:ZdSOe".%^.:oUJDt$x99\ d|eta#N]<+៉m\DxWAȬ˟r:&cSNNhKҘ iP2R3yS5CgF[.8(A."͖Uw: {ӏ3m/ژz/[0RGpSb|y:}r 0<1ŐL 1cT2TsR#p{!z7d-m J|")%UZ#i2$i+z4$9끎j6y+DF^lq[G^،W$'WḦ́,ƈH6b;eRy%04란DiY_23?ZXղF®~t̳Y0].2m9e6$ 2NpD[>5? JCuDT^VAp~*tXD ̅9 1<`M ?vy,Lc oJi'jNV>`EhB(RDـ/#WQUF4L9ѩV-rRcʚ1Gx]< T[<':!<,{mW 0сZiP풁ܹ*TB5LPXT_hɔFf3c P?t#>RQ4l) AE0b] 4<$BBUɹk]R ,]%J22UbRW8wo5q.wIFnso:?G'ǎԺS1odžY+]$^9LOsڐڝgek q~Dܨܾ߯7xgFˌp Fq.@:"؊7*PkJ̓Ȕq%>mqzCQ5EfvN{򊮽/('B][.aGV23ZEbT^#֠9vP,4,7(R͛ =ȱ3\Y0\VQ~ %7qEUtbSYrJATtc걑vhԾ݂xXNX$C܀ sSe'F/EUoPٍA53a|o}u7F0Ob-LkC67z*j0KTL?9 v'=hgUU1&LaM =5poKڭ}QL5HFk|匃s^/hT`e]&_w3jxTdFKgI7ʉVȆR\@o>YAZ;+Jԍ+1RB$fMC^|R",ShL)h^@EP+8Y?3^T1V?>:?.HxVd_Hvz"mcu IBG |G,۟vˆñ9o. mfc`n? o6fu(ɔ$.jw!^yx `t֚w=юgKm,d!hxRpCqc Ϟ8W^;Z?[tOT^Er_&'vŴ47u΢ rǺ|*9ErK腧A;Kҥ}:[l]# 0.xX*B6o8W -N$C"D,vzI[%b+#m0̽fZ=x܌`7ɞ3IİCٖ֘54j+h$ہeq~Ș:ϣg2XL_ ƌ^ǣ>N"-g6)dB x č䖖 c(C;TA,d3&@~r_t#I/]Ҡ|^Ѽa4MG8c;g(LT٧j(.?k@Rׯ"nRXZD[D䂂w_Kcku)/'BWu?ElByU* ,w=*qSO+azjk"::UtGD8=@٧s5;Qi5 p_f7 yjWѹrlj{r19Wۖax ӯ/lQP[BYkTgG.KA|Gq/IWĩ3mv8k@2\lEbP}{LDMDSw #OTҫs^vF7d6E{O}PfIkVD7_ڏ1#U,("c]ָt۶WcVsH.֍ǔ,02ls\^dHo+$DPE6ƹ|w(G""slU jg%'ôr~kwq3Do:Zb\M_ V'X69?N8y|?r'e)`R4YZXvd~/b7q$]Sv7FXLS^#4Eω_!xP9D+qW\l[>Z6(3|̷B\7dZ# X젋r=d7ʔ:֌AJ8n  h!&$$,[+,#P Ӫzcg ~NeGed#$9{CIQW˝&UȲo59*m..9ciwQQPǰEPQc 8pi~uNpWJHLձP^Irw#K`b8c!e- `~xjZV;H.n"ReN@[_-$W45 ?P^a߶,}jn)tQP]?q{5h) æ~+jpl~f÷s%8 &Fl\OQo1]")N,ԕP Dٳ%Sjr]p6Dl%sR 2ѣ5w!c1$~9Q.sxcK<]ÄBUWFh=zFo3GP]f_nX\\1 IjFkcll_~1s-;ٙ\fKscEvspFc7&SҤlln)WS+nNGmq\bqy$1w&0ϧP9<~UVb-0'v#3%uމTJľ8t@_Hl\1ϞԮnd0Z4G:Yc,!Y_F rׄ9H`1 X-(F;c7#9 $o7.+<{ GjߤvCIC"8U)\\ F{r Ԯav |` ȬgMذ6nv+?Gq9\Gog>WnBʖ\q9+Բ0z{(FcW^`X9;Ƚ[!F崄:-Q5=[gj0Wʐ٥41c9m#MbD45I/SJ Y,Pc\P~`w 'Q$O?+:\oݳ% ^J? =+T (v<(M.ҲeӚ 6xAn"];:^J΋O'cI:PCr}g(uφJZ@~+1 C90ȝy\Bv. [Q]H*Y$2-9!~IÚa_"zozqWXt4oƚK[)@{Eaq a%opӠBȳn?7)JDtߪX(#UӦҎ_Fj ɜmޖgLu=:Z )v9`ESm>^zO v8XYXG6f+GLuc(`g51mP!3s9bD7VDKT4T h5+#6T+jr搶&0ςNr &3qE> nNo`&y!2mFP')zԧ_4bL~LN,oOn)BApD4p{fVJOg/DhǦƚi@0sd6Q:j!]b*~TS+:}D}$PGy|Y;Ik3VL_] ;H[`2%k@(S / 4N ]|~cx`FIABmxc+% S; pP]lx5R d٘ O&3y3M@Y%#| L=d-/ )!hsK?)C:hʒӡ[$V%Y}B#5^캻ւ ܦ •idߐ+^>'آ(xהGedBr<= []M trjkӖ撈b5B1㌟>QxRwq@;I 11hyT+qJͪӔr ȲWiAwjY >b Ү礎5 v\qDCp-h$)D=LX/_9 6sRUF \oI i[FD߬.hTtAX[V].|+ckW"KdݺNo0:mE{\܃o~15M1 }a^Q$D2Wt-DWya &W.w2P Nr39KI ]fׁ5߾x)B;]ٞ ƫ`s+6צ+dbz1nt x@SEz}k[C̩f&*K2Du6Gp\G$~)xi&+ptYje K;cX13Y ׂk?> 7k$9] LqێIaZ^C{tS(XW D'kyEcBnӢrOaqM4 Fck_ t\ *L,F!?~Ө.&2P14K掺gئ؇`:{ P _'_M g:< ^jϊrŐK\p%И^wg}\(PJwUEAza^s3kq׺PlϻܱKy2ϼ Ĺd"ɜ9/I3{:q`n<N0xD88BT9tȟRys].߷8fYh欞} @S3gfy$R1Zx8Cp^UO~b1L*,1/M$nZ|Ҹti=TUܧ9?N N[-.# dyZ*0YL#pWEi0\.OY9^T)NgbȘ/Wr+5 x=#C#E~PJ}.rPw Ab݉?x ߱n%R&ts74yFy%c B{~OCY噱D#X4Jé6B7 &ƻGFL&bt@8S;)u*C(m 'a5xO5ܟBr7wu w t/\`a24ɝ>+g#Jk d<O/VY#ȞcvM%3Yj3K鲃'@YƍDhǮ.$mhČkggŮ'_/Sd ]7ԆI1Df׎EO~O[5B6fPQə~ud]la*|aA3I $X=K<",*'82> A8Ĥ*×H2ܺBٰH r]*GG*=S6ۢ2ww9+.Xr>{ȝ}) z#S针)O~ k *qR#\jQ ֎\Rse|NFƖS$EFmrlD^rokwn~V] o?)#Zԕ>&jјϬt|زexc\Ccş6͗/*ydc_]7`s6:d~`mr_}D6"D.PKKmTA7*Ql>Nm\%\aRңk97ܦS) gCM%<r5-} d(r֛Z[m µ^ Yt*,iʿν&1ȃ'?#T ))zN -'xX &36u[H+Ɋ7;Phz۵猹9c2Aؓp6NfRz92lǍ1|2܆Rt]nh8Fb!lNvTȕ&H%ړ3ޞNq=J~!)C ̄ݢyL?X&~.|#ΏٿbM5l;=G!8?Ű&Cr/ٯD _v3o@QRbh7 HjA$ vBf #Tb2dK( )ײ|o1 BDľJ-&>~55\{e}8N's?]`^HH%ݻfB݂a4w~j u&ڷt9>FP(H;GIR|qpL^u2Xe<2ݷmo1mݰϹ7W<%l-HlCJ:hiWV$Euӡ*7>^,&ORj.ry R$u2HiѦI8^wD,ؘWeŻR%0cwCK:ȬbD?߶5GoK"lRs>m5~ZB_AJ+c׃S6W2K٧h= b` /9#B7jr8_l^$r7/啅$lKb46n!̴̕Q7jVײОp L z%#ڸ&p2o%V J-#+y q`6E;(@!СyzHZm-L?ڔcQJt vig렄=2~[#qo!C؋Gd8{Vլ_EifhIԳXI"]\Wt]o;eĈ,J Hǔ]a=Z ٶX,b䛀z ג18+<uE?os:/X TW*v85x_9͑L\]w#W#vNڂu{di: U׊[^z~ٱJA[%/uoy!N%.)3\IɊsJg ͺЛFc$2ybAsu;kצ/4AK)&sxX_HWT `w;.vwpc 2)⃡:j_"&fDYX4SxFHd(Pٌz1~GLH-#9UNjY }alWٞG HU<߫[s$y8:ީ0/m1蟤RA{<8Ecm1~i}1 p nw$ 0"A{cFFv8\G%=w!py ʖM ~Dao^;eflA<G'._[#کߤEݾ` :唍$׎DnrD=%)/$w rm'2v&үkt co' Txt%œ.iد(b*A ZƢмX]Нc.EJ[MYտBOq.,r~&1KKf `5K$;_bm5c0i!x~:Kfs\xJeqfcp&Yh [ MZJ'Us#hR7 7d3(co,_dézlw|NgKASoT]"&+c2(ilj =.[6<{E`[;?~QؐFqiX̬?7nKLU82I;n~<<`O{d~~@Ѕ$qF**TUDLZMB~1v/&4d"+JȮg܊ >H{qȭ'`YOd(`% c y xe;)gֆ_N돒~ZS}œ.2MD^Fr!o\!y(hWâ/w5]\wI^ϞSwBbIϖֶ'dKsOeYt œu" A\+i 7(;T,NCkmEIcĚ|-XTأ6I5Й_! L!U{fZe(ύb}-;Q^CI oxo.Sda2u Sh1`"Ubt[3Ҕ Udॗ4у^rXeIoM|cj97\=xLom-P/*Ͷ!ua6NGDA_<.*5 ,T?)\)fgt~x3WY{'P2hpla !3G=~v׶Iٌ2Vc孮 i/YЬ$n6 bG(*%2,Tj8CZ;Iݼ9 mY{?f\>+9bk>7#(ln^I̻PQ=W(Llf!m^iy))l$hM|S[vINo2uYsD yۉg2 bj*Z6ZR~+B}*_oayWTlQYr_MN:wآ/š ݶe3YLi`h[z bQ1h9*}[W†? ,5$6S܋=S PNؼ4ٜRgV/LD'\ DJ^(;c+,+`1'R_O)-.43aLx_ <.@$1YE@Ag:L኶?҂>EB!sW[W'Eia\/NAU輕;tyH3ҷꡒִ}lYL>LΨ?=N Gbe&mw;Ω^f55j54!6<;wKVĹ`%r?; \Z[ն{{qIR>:u)Idd)Gk?w -80bDAO5no1;HMv;Ǎ|ka*\A |>;^qoϼ6 m}|QJ'T:μz}^I?`twۣH#gK ɪ4(<_jPTZ x~BƗ%ؕk^w*Y k|>Gp5z:d.JhZi훖g-;. \;X1}JBo ;SOȅx.waկ$"\POd3V( QDۑB(2Y/;IUD*) w2SMk0*& dZ,cࡿ{nLe=c=Y9K)g7=oeX 쥙֚~=0Jk߹Ċ<_6h2j~x[tä[Z#aa'ҍ$Gndp)I0E p+Udfu3yBA^ߊR,o0bvocdAQYr p\e{Cٴ 2fKW}%zΰm 5nB9D=}K#OsaU)9~4&9U;+I>O5?gT n2ssg(rj\PVO>{D:hsw;j*JhFE;Z_٧xq#x ll =JҖv+ 7vE[bAp9tom\-4yVs6 !tJ֮}l$wq94t"w+OX$s~HoPXHǔ*YB`NO7{xևɷRf͇8G;'vrPϰ@U 6˷u"(Cp QŲu[\r;d'?e Mnq"5W~Yv+%.@f-ɡoz@}٦W\oܓ4<:I^'o G 0sڏ+"AM>P<%>]$̝AA @?iI53 u,X"NFD} /2fƏnQ5h3ZnrNJ1lJGʀ:PS5R௰61g#2$Bk -S欴^'W-Âg,i _!@?gM֚HL|U?r*SJbnvR(Y,\c>Ͷu/$i#S'9Vu{l+s"1VJc 6'K[^aRW+ce.gʩwJ;/3sx-~B 9$22'y[²>Ry#w3K=X ?t4Gwanm##IpnVKp?[g&:k n@Yj9s?S?Ha4.=9%D]J-IC`K% 8-l nM]NVj <(wE8}3ӕ4tx?[h+Gs@X NO^ˊ2wZ_AP,K['} H{GgxN#WT_ܼS `5م,qu*R[:v{S ~_Nb{ٟk~;Uhx@vw|𢡘8!4UW(ۯͺ[63[N/g3o֌80y,2@\g,VÝD^ su#Ln~ə {y)FR3ovm7coo&qз+>Pqc߹~"h8l hRE<@[8 kv+]܉lmࠒM!hG@.Vj#dv&qC2$4:G>0kʕjU6AOMZGDmJ*G@f:Μ\*M VɞXfj6u1];_Z@?yoe<T{ RbS!3=3=7KlY(N;gjU ֿc"=U>v<} F_Sa0nexMwM6WOJGKH \֍+douL)Jrmj)@^e7I & cnQ % B_⋭H16y,l#`U啘ERJDYn3>!i&!l:D)22B Fjn+?D *_*Y':QՉIgP6z{(J1IhS-4Ev(Nq9u} mkEn7p(__R:^a,2vt#3;\)md<.-uܦ7L^ArzH[Yh*{ h^Ztk 鐽PBu`zչ=}k>=V $4_ONoBt0.I -@5h -golx΄KxJi{+ 2ۭ_ \R.iz?k {㉻ &t(ɣaYVSr̝NG˨Ȓjs8"@ړBKgF ćvv\Дom.I}]I XâOMg͟zz/0j}i= o @I"7H .1$]S bVu4g.2wB4n)kL q́AixV$gϼL2[YjD :=}o[ _av>Bq)PA#gpoMS ֹ6%nÔY`CAZo 0W?^|azY֮)O(u['BG.DZZըXSW4)EA=Tj< k )~.a:VtbvEũ}pV+I!DpaY{͇hz(u PYKw3PdRW 0ץ ;R1(pSRfF+tp F$.Akmͱ- $o49jNlxy%t W8h'sXL3VzH,sVHrm4\]ͣ6c!EkFMobk}!ŌfEa6Q-YR~#䯬G/ vF{q؋%8wtA-ؕ_kd` qJ#Qx #݊3`8'YˣO/N7,knZ磁)GTBD//g+jB*/?3roV aA{f"(Y[>  㸹{GCz #j;:fOM^Ȫ<4A3 :oc;$hF!3O9# jz9W7#ju+rR@`F_JEuХB{bJv\FP*cg2_=X=3Z\|!tn鞍.L@Yi9H2Ek}$7tu!|WFΦlڵyu8Y(A 2q<[Q9 ttLI*0=IΓ(xa-B2ۤxuHD|ĚmioKJߒWqF}Jl(x`tb]e:E l|+^;mH&c9] l@RJ8NN FMאzJT2 JBXlq>ݤ'.w$L:QӲw&K@9Mš^Y'S|&`wz8ȃ$U`3b?ƭܳ ϛ%<Ll',•q&EK }yƺzz>!O Jt (ٴJ=QW3<˜p|CDi{dK.ޮҰ,$b/nfgi/Ms:Q޲Ihux'@|zD77j?o5aeB&)4:HsԅYޚaftOtId%a0MAW7R0,ַ:)H-xaШKl 𨙙sfrŀ4 ZAVRߵVded>sJ 4OI /ڏ`;5-D6{O7Aŏl:ퟐkgɊmm3.A<<{ď\ڶCHl hJ>P $=)֙1IH)No]e]w'H f^lxWbhC!qUH~F#)8S\JE ZZ@靅ߌaL :F-iM:Za.<[qNy"ez҃I$YY'+C)sgA^M0͜g˫Z,/RQF' ӽW%' n!}f0v0u-+=)\GYc;5Vh=,12^N -?I,ݲB«8Z  ~]ȰfҌ9YYp u"d?&ryѤ{E=DE=AIh?~i! 7n^C|e1I(ll\1vU,M %xhw: 5^i^7RDڦU?L==ɏu1c-'^CyFzaj %Suی?NEr}bZhGB uW ?ڋLZ)ڢʁ-kk,)][t6I$S"s{RݺƩv܏CBs#[;r*kf)QLDr=(~D Ǹ:f_WQ04WRNKԓĕOxݩdh*!a]eDx +׭AkF6Qς8^@sj xηSa<X}oHTU~^v1LmR`BҖX5]ۛSΊ-bq!ֻ;10X8[v;!3GmSF Pۅ]5pusvʍ˽Q!mQ)6YXBw=(ޡTY>hԲaYVemx ii_ <4N T~ (ӻ{@-Ҽ#bq :%Y~LD5( cHy?ӚuyF+6kϒ%f.5iW͢Gu`@:6?Y#UXI榨ۂd{Ҫ/l 1|yJ|3?;TUmֶxݷAD-D*JEqK1e#G_:Kr3D p;STd_ VnA^b!M$PDuTs;dSw}~:&Iғjx]~TkIѳ>3',̷8v3AFُڡsw*x'jҴqpTq7llߎ)Ćg?(=i)Z/N6rW(Uv1#~븪B粓,&̑/X , "ů꼶A-RwV" 'reawHT$Z,[9N9s6j ' 阝0Wm!Iu/E(Kx2rVllͤ&,PJQւ\ c}Ϫ;Z o妑#zixP^S\nn 竬A$Z˿u[w Ay(U5isGjA /_bM{pa$4CP ۳TK_{N9V(D: ~浴5Ҫp0abQ"4ق=˥N@  h\ޚKt1;YL?EkKvRr!0rh^4+ϗ*[9ę;4_$0Ԛ ]X HH͑/x꫹15(]`Zy m4z^ł$.N*ۣ^X6)4Vi@! r:~ (}cSGCt(\q)ߏ\eW:+dE_|Twt f>|lM:|ܹ˯V+XToHAiQ&),~w'΅|ʦ4a 7rDG*)3"=εD~30ؕXhT9Gp91t<dz;YJ\lOpJV㳿49o>:lBdvp-WRa9%JSvprog-!CpdL̝8(Jc3W@'1rM(/m-t}^?#Y^L|[~-RCiݛ!Wxn(nS:}Z2K :\LԐ>JmGoI69QEh'[CĉsZ>qo fߞP8 12b"|(eR$k4)**vߜ~rn/57_ W+:uj ]-MҏO;/C&:I)o U*c'pt" Ǿ>+_斯O _ȪT?ZOXY|?{zzH ZT誱PMZXks͛R,'O#20mgƚ7}ohj|ѱ3g4s g1JBs ?v1.nB<5 5㝊) T2kd\s OwbZC~}eD$hy)[F(%Bd KS$݃;lBy|&N$`u{ti&[>C o;$/z?mUOJʩzG>hqٔ#}_mڌvq}rBki\@}VnU˰!D& ;+StIW吋iW <3/b {SJJ ؜"P*2B x+q~0q:Fh@#DEBibs~J1uN"w(ؖvY+u=xtYV ~D r>:1q4F6lwS K /(=^O.T-BRz؁ħٸpd$YU;W)^BSӡ'-Pg:*lJs鶀d"or:>E.QS7 S'^)2-4X}Ib薹 V\rw_K"UŝB a˃KN\+VC+̼#uLu4oSVr|_]Ts VbE-R=@Ea'Eq^+h&D|jYЗ+$2 0a#@AB 0_:!ۃX N 5P%</%@m =(Njc-J,UFP^l"mZ~^; w:وDr֢< CgYCyqB,ʊa7EbNEK2wc[[EQ]$Ea}'elW[_iՇ-N+'5l?Jد," F<ȱ; d_A\SiA$*n8ȍ g# <&=7 4A Iu;5X 1a8vϦ)Gi(A*hazx;eX'V?aU3WuμSvդ(˴Lzs{阊HR4\đsm !<RmhctXemI0DgH5ܰ`4X.s/PN%p2qOR"avtNQ 9t?~0}^)P$HƠ[uη>((\/ YN "VGU]/vϿJfm^$iZD#,mjG-׺.4ɏe{ت~DK?^hU]~:f(%j+VG!g JsHz8?&I%@]RM^}ozV Ϣ īj1qۍT9v#w;iR>N_APjWE8K>i v>>x@kx" 7A״07XW-,8pvvBM;Vm`Y tX;in{&Jh)+|n>wC ġl-NJv{ވl%"!am`3;mͥʂVG^kWCQ)y% -龮Ci`#PYQk5WRb2+ՠ%؏T~ WyE uW `OQ\#)ٴA_ 8XbG>iUX]źކ38eb2$L~,95c̾1}7Vq}-aw&+-"XԤZ4&#t֠LOgSsSy ȳUYiӤO0͛ĕ*K؎M_sp \ۺ$R~j U(FD9;>6Kq%èXWh PyB#O["n$4f:PV' 3)#n7 ŭfc@xT1<@jDmݹjVuց:on"ѡwD8u!CGί?Z5k1$쐂D9WT2,tNl߇ӡkkP3 }OmҴ_WAokH:^{»㓞:"zVc#~Vz ȴYG /kcMȺ` }Wmjo{@7vgNd&V4}k=SҴsvc?&҆ok6 }S+ sg0599YsTuhx irhzt* 6^xߛ'[8 mT b7}^7E(_":H67 :l8XHdoVJmocWT{gx^%>,ppSmuzX#g`;'he#幚8P&R1.!;&@8I$f ^PzM2bF-r /f`F"(<,^2=!1B[ &g|L>E /]VK"891q>N7HB<~aJ򐦭 v3e!ŭvxgCQr KTtImVj} o/Wfg"1`$}L&˨(G/lLI4#Ԯt%^eƚ *v"}vuJWmd[9~?՞8#Up}J  .Ȍ,jQ9˛;%&Ą3lu#Nz9_^,hr4mm({;̟Q֣%!¦ŐtPȅPGmpׂR+!$OwBh&ÙڱѸPj, 6CTe`{àNȞ@yS'-Z瞬%0 !O0W)֨΋sN̺SKPTPLi)G+ W$}ec~x8|Iԋ@8zT-+iiRKENlwDd6K❌&ܟ)~_a3[A؎@YJ /n! '47r(6$ό@[iZG%i3JVrTX+rA5|Ey\!]zb$PN\$R%QuOcEn?¯`kkԿ&38u}4 |fnqA5"X7c7b0;3Rs9-g6d)j{=_S2VatEٖb882p,}I6^ў*6$z_}e Uk< ~>/}{ {G2\5Ԓ:Ku77P@/}/ĀV~Z磓 R4{f)gL'[;/DXk(")Z:"?g ?wEh-e''R۸6ɭ`~րM/t*R_`@+)7:ypuETqсorsqJzxVu -#3Qmcɛu\ U 0Q PYa~O67tc,rhcX^_+E2@pSռLYңp+əC$Ʒ32D¼W=cx+3ƾ)v\Z PHQD-h7J<"9gỆWfp0"8.rr۾_ɀ{9MLy~-[ 2Ll4ǙHQ V ݐ|t)r /An\37~B۵o}Il6Ei!zn$[ܥm i=Hs0: Cw+s}Stǒ< c*nP.YhjCC] C gunBEqVH@8Aˆ5g;|)j uL';ؓl<37TnqnjHG폑;S;RnhፔZׄxG)eZ]XSl+̟Y) M`q][Z)R"=è_\&?oP|ܚu&9KЃ 2I# o mvOe4ShnQ~XYBIfr_V"V?lP0^[ O:}_5L.kvLI|EK~dqw\;|d.4$T@Gsp0*(e%;֧ۂ*,it/Ӈ=iJ]C d(hmC<d-x&Wc`YzQ 8F)QN~MxSvVIx %ȌB;tmyƩuO9(@2 .t8U[OoJ0Մxf~9e#iPJW#$E/G,>CEo>uc,rAhY+x^#09$a \ [hG@?=D㡛1sb*@Ê(dRYdNׅ`̺7j> $IE@.Xf(05bw uƒ^Hih TNm-9wrW#FQ~+62q*ݫŢβVꗻAey+2`u$ƈR8_2ҫ?R])|f_{쥸K1H x Mt6h6{u}NYpQVFbcP;/}f\\H,AS Eɧ?G, )zqm㝷H.;qCšT?pݺs\U(6zi YjihT]b7YbZ"y0ΰ V7w8αK=x URdÎW(IlQrKyL/dڄ|R.t߄;;t4 6n1(.@^3`W޽)eAH<vsK6F*:הd30TBmd_?<`BkPg+m=FgUcNK+gZb"Obs iZr8[ȕh%!@?'֘'?3Zlϗ@iX? ^Pб;MH؀P KNo6f\Ю=HmV!\14GLhV*v|,e 4ٻ <#=4DSF7_" L$wBW y:7)oָOpchlM0#\Dyn:ߣ9vY8`J9jRTN#LY#_C T{8b܉Q=5+^ҹjɃC`S/ys;l? ǺރR<#W+k(aĂZڝM4ڐsdL'BDkazKzq冑UmsM};#U|)]F#/}gLR=w)&x5a>v^[Iϓ[c-Ž薦x4%)uiXa k03Q]u%˓U.U4;2)W X~#ՎxYZ`%Zn%TzV6rͷLG3Ի2!Fo*5UfMH87;xB#hF8\x;ۚc+U3vԩạ0K % vܐ`5aߪTI{! *F.z"]]&r"lLIz(ؕmXNر2]O1kxt95v2Im+X>p cT޾o [ C16l ݓY pP`p( 'gDY[3B ]_1l ce-i~&λH?jr[qBk^ՠIǠZj&BAts[cz^<f2Du؛"A9?VM y@V/oZoiz뗼6CqJgr!GLRyPhm Tk.>:?^30廲z9LVI["ޕ xvەV5*ɞY3*$Rib}kaԽd}ٛs//J0R@:zx˃Q}B5qs | Q|Ȼ.0ѿb)UGK䩭%&`Cj99  G?ȫеS+`Cf;[P@,0/P۾4ߧGhz |оP,rU)l;O)CRpmE*`/B3tK]Ҟ%_'xz;:Nȋk~rqNO4 pOH" !=pzK*(hHpښZc|n bm^biԹ6}v}pJ%deasvJ!̢, dL܇XLI<ڿA xohN2G?)651FW3`z1ABls"=qWA\Ɔ7ڐyZj@!>q 0|W8vCVV"e\g0waP$*K_`Cpc6&^y˞%dg@7j6DͅaaJkĤ:=w|;v| ʽq9ƈ9Eyfgʏ7l{rPr\wxlLGP5>>`5lBz{iP9vQFX"a]`47Xlk;.tn(1շWw| L{T$ImPZM/z6^ 88vt5_L -M6TP zZJ K&w[;ժ, Z z-]3ݞL)щB㦣^VDtjUB 6V*5O1y%JN QĠ;H"C}@qbaQM-*PJ" S02h^+y{MݙYy)YZADd:},"r0Ll"Tsl6%.?"k3I wۑ01,=*Ozjdo{)٘ 'L0Q"/ &ĹḶ M=~"|%$ K9SֽB`ꋚ*.Q]$9trb)"`sr"K~qs4挕It #$fֽk$/=&QS0K8E}Uwٲ.|w%) =<*^y{{4i)P [ K޲TVΣp&vƓrDiX E5zȐw1~:b0"I,M^ y3%ЕGg5v@Fdۇʆh?F9t}ڦٗ mtM {#O>DchLbߏrtYts! o;*RK2v;Q@1/ؽWbV[rkbk`dZD^6{mtIa$L0,x`qv{VJ&W:c"ħ=;1١SV`u^>3bLf7*^"S Jm#UttPXJab}JI̚`3}7}R@ ./ջ?{ݕ"-/U!ܕx Eqw<)UQp˙YbAgthu+eIY7eHװ|N'H6kBB&n$}\z6mJ5qUuh!4%GO.UXe)Ӽȣ$WױN|[=otrai fCLh&*R+\MWyG"˹_[  [ nc}>e}m?q#oNcf;joI0=Dj,O= Xf"O/8ف4]ĈVwɶY!2ȿ0]YG6G`.%B>!R͂bO ~\(E u\ϖ(wgքj~dmzQA唃[zS[r)T}%-@tfcLrOX m1Le[LC'|oPӇG4~_.4svb׿u/=2DvOʵ]%St}}):P&y۫ TQ+Y z\ك$]O12Aֹ$MDD6 Sq :5hq>ƒ R$`dl[IFTT~Z9Asg83cC`!*o:lX[$0i\GM=+MRsUL\bmq8/ d'×$Օ]OY{pHӹ7Keo`U/d0ր+¥Lϵ#[T>n@U6-ͻvots3+Ԅ. v"-_VsVzdbO (VWzHKj cmЍʡKph|y]~evo2݈-ՏbWW- \L2, ?; ,Z`+i*m/.}E..st}/e{kS]7֐,TOt仈 5,R{լQ+u[ȷ3<`0]INBA#^zIql-&K] 51&(mN<}CtþKMW>Խ|uUAK 7&2|UaqȭOy˶2TJ Ȯ 7bA?%½ĜNNAqRPԺ>W,3&)& $ dAnSD!D<+1JYLY$> [3ʷ%E*"f "]D *ӷ> a1#oi8"m^32baȅĝ ;UMd 3CDr{p/aƌpv^t98e5-_Q,b'pKyģ9[`q 4R.c=*O?Sߏw>ɗ(!m^pو"]JJVDgfܞC6=TxiCLoxW ;2V`TU#rfĬi) IÁ!qT?QM}ɠf]x/'FMK U?)(ux}o97;ɹ^2p"Wǩb{R4@D%>o(u6oD\hiFˇqO%b4p 5yW WdH|&^YZic#)rNDkHi~ak\ .j=-M~ۆ']cx?D~{BC' 5 M%jS\6wJ֧%ۭ1xB^(hm׼Gz2УBܖ[ʱKml-5YmJ"k?KS?~ 2槞֟]UtÊqylջ;-) $|1hrs`Oy+m;$Z9uS>;u;`8g[pk=u&oCs[;N}=L[dM8;?tJ|ZqXp~1h 2ϨQ]Hݚ U]Jx xc !1W\a\z%ځN+#h]:  X)m+Y0 ؖT4_$ Q96J Ht?]6>ʥ@? | 8r.CT QirT3!.s/[uA՗3[L$ MRJ1.]}m,Ǒ|]p^}% qPx0va~@ٚ$ՍF{)O|ݤ$- za{׃8G"_U.`Weu8L .r Tw^QXs-SIY(`&U_WP-=t̰`LBI1BmEs v 䄙ad5bK`v_ҳB189%t?!k3V2@($`8W\{!/HS_dYL~׷I/SjFU+oi(lCp=A8aq_4v@`m+^ʦsUX|}D/e+a2(N>Nb S?'Fx#y꺽%7wԓxa$DSA$iM:"jsOi_+0+3Ev(7%%sVt3; !xW]X8fYY c"#(Kr:dޖ%WXnڽts#eoB~Pt?t &Y<vls2bv6؆ L'B~nTAmK!3a4lk32*eW7$<$Yn)8%3L$3OTT5puo/;nG1P&=h(Rn;WT [b?`UU]0~$ְ‹eQB%tO`G6\[T[t,-ױF nm~ѹ"nlqJxKH 0K10zyB&\NL$!.ЍKTJW~6$ӎ_&ni_xʪġ0 5bw|&4+QV9M[韲ԋ'0>N:PJhAmmxI8em^Ne nhKh7] olE]_/côicK'\ϸHz9>k.rZ+td RVvBXhécgw zc6yڭݰY]"f? ה~'@*/FNV\v ىzV<מË.'ϗx1Yl%h~!?j2[r6>?ON H-R7w}{ީDw'p MWVeh1ȴ&W,VL7F==O RN(hr˝$@eneT4Z=?D]bʠ|%W$,sK`}ޅՂeU$I:\6PMg#Y!L>%_8oKxsm[*۶%AUŠȏH(LCⓌ}j k!=FV1dsK/?i68>4_'=)~MlhK 9įx_ͳŧZvXNg5 +wDiр֎)Ms^f|Dɝh : `'D%ڻ-XçzT~wPƞ3~ڥ2:)ZNӭ|J/B!Z4%}W'{<{Joݘ02g>R6f \^x7J+G4xE}px0^pX+,5`"HjBe7BN a5c쩒PFyhuP`Dq\D@6O-e6e%Z:{Y6Uma+Sm+Y@|Ɓހ:j籄yĝ¼5xX=o$N[قһ [_3O2aEAKDy2~ -#TƬՇRxt/Y o5?Rx,|R|)XR 񦒅-:QcNE[ XeV7+ H0uÉAK6 :Z hq1l0?| I%۲`Oc~6XW*z|6jH?xf-y4 8)J=T4FLKw.[ȕnG$DW^˔w0#uY N? nI*IJpl_WS17hmm4=UV~S'@ehwSM^|>Uw k+&7afZVWqkf+#%mO-įĚ&R`o%6?U4vg~+_`jK{>HyJu{zS%R]Z5cm @St]eoʤ}& ڃJ'QAWlee ܪNJ| =`x[_=}Fra>n?(Oj8əTf/)k ŇwY\|؃=5[I^/RH+h<_Fj'h,Q3[fR|vlE2D $6dݚa@Dg"}K806HM?w:| bi2TjhpA"3-ص,d (N?bFҙD=>S@DQ17DUu>33S?@d"=&d-]5k*XAC`o&R7դ#~XtEQ%':~uN`-XbR)A`#Ptcםsg.F){œmy]igJ^ f YFPPVH$L3Wi7W4*ĎH=oLWpp/q7ο3GMA"בPT/vNjmn͌?.MH;maot Rw#AV],V?╺ic{Xqe=Xo8vۗ* ̍UZ%n,J:U{JM+?\"W-UU?i^ʭe]vߏ~TkTXgΙ!#nQkzɇGe Mm}ί뛤~K$?h7j8~ΕU{AGstu^ iR]VZ$u,kfQY\^~Y^1'hhgP[sn=|7JCMeU[{wl `][økGGXyڴ>h+:g&iӗyNP~ݍT }oJԠR\wxSȃj^5!t !hg^fdG4ܡ0M(5m3= TR C߇ũy45@T~5Iy?XϘ\97BmT-ȸ›U*MTDO;[mp8๜;@{Xl2. ar#4없DR;f8͵4ok]rN>y Ř݂6c̰!t(P7byסE9" |6ޡ:LP_%gA1kWo.z`))W^ b Jbd<Ξ^.um~kHcKϩ/Mp! + te6a[t5v_<9{%9ݑ{и1 t-(.)mtV*ZUf"\w$g-jh{XPhDfEUȕcmWfOQϗ\ ~gQy|Agj^6nn0?, W9qȀQ$}&!:ocߟo%)%}L}[~ڮ~Wrp{52 [eS֩ b * !Q uBlu1Ak+ԭ9Bc}xdT8E6xh*ʡmNR& !>|`Zfo(s>( :qC劔\o&$ .ՙ~۟i#R@߳믛 Ga%Ua k .J~Awoo$bhxT(gz2hE>XM1s-`UVlP.&uƃrSb}ԧ<޽fAVc$a6LCѭ_Mi+io\2Uc\4\O"Ҩ|Z8"IB;~.^ګty`K WTHt &d0Iveu UӲ q*XG%_|(+9_jU|hZQZWudbGuS G]"[CMz3`pZKA(,)l#iLLnԦg!vc--zZ8-4 ƺ8)?4\e%K#fNt o|!M8^U)Ưrc <0ɡt+Cl ̝1ɬ:$ye ys/b|k u!D'hT\vXǝo;QO 緂%lɨa y0J(D4AV7LU?I.M*Zp k4 "p`av2R^^؎JB`V!+saMXX%$-)1r!Czmw~g8a*~ycR 7J~_)?e_k??O2iu.09\b}́]r>I.Ag⏡"A*xy$[[OhB XRO]U,m I-|筷ϴI>OW$dYYaXqYNv]ʭ`,=ٹ)w:2X⮪dC7L CS2PҤakB1xZz\?uuHvOi R؊sxgWnGȘSOˆeY)]wXL(#U{CX;cԴF8eO}ʷ ީucnk+༆'Gcm'1^oj)Hgi|sאfICjO`}HiF` 'sb36&%C,h_n`|1^ Vɪ$56#Lc'" ڋF.Y"3u PK/͌xPNٚL5b.{ˉƶu,X8nh=J+5w%Ppu-68!F0V@'wz1W~ 3j8ô[^oA4GK*sfTQBnҘܹc7Qv z J&'[fyjQ>YEWe_&?ub* n]e3wL*qNסft u>pR@%x+z кW_K|AoT+<:kD)X4=ۣ!aXC~6Kd1(Th7;5&P&>̃D]̈́0Jm!}3ߟ>-=QnJ429 V'Ec*(z#^q؋dv6_kg% BKb"7HݺD~]͹~1BuڢT`6= "ilsZ:@h|ĨP.9ydG,?Hjrj#Iľ~XqB(09_k/JtZtXw2X^Z ۦ^s/@YNұȤ|Cse0WMW3RIˆ4Һfsb(4Kc;ݭh 뇊#c-~*/ϼsM0-5`4lGj ڍ/FTU=fN!qG||Ś-Y:1tu\D7We#ଢbtJ!Yk&0AlӸ4 RW @ W/'y@SYDy~NDΩ]5&\ װ^wd/', 4m܇IKuAC6jfm TQEֶpTs2K տ\iJkĕ6Yƣ8zڲꯣTlwRa)$=. hy)8FX;v}B xJE1!yh{`4RB>>rl6X~{vԑ$C8B.A*A=#=ޘm_YJ:vPҚ$rXY9c't-W԰FGBUCN $OO92t<-mcNMSdfu D\ݏ~K'ὂ~]ZCﵓ'nP9j-6/Ҭ γAJ߮x.8KS% fl7z暅LÍC!cؾʭ ++L(y۪<.Bۇ[Z3SAQr|xA4 w{{>e R[g)vH4XLFl?o&ur@̟d<ܚřZSs͢G_@,״8<}ͮHBTҬ-q8"D ҮVrpl7ȧ-]nE\ x|}V需~q(ţO8l:J?-!lsNJ~c+eOj#1^BB+tw3\`sUď_WI{ 8܏~ ^^w>?|;Q@B\-^?q $w~`qB(JRjT H$y)7ȟb8u8$4*>T}Tjz& ᑂso[KavSEZ慧UK,ey"yZ)(?,tIzt\{67;Ds{?O!81~"hJO9uKA.Ko+N_߳\`_&,KX&:6GsD";dst#d?b)\yFsF1{AܟK.XB9UsU(0Dً(; j}%Xʛ_/".顔p[ǝ,Nݶ:gێ5ga!,YB x0̹blԅ4NZ h !K7z7͜><TmAu(JEϬG ~|(~}l_&Oi;R{&lspaOp]q>M:( M+y9Ҽ K~4E@B֛ą`%x7,@ůDkN1!r##eƣ7Y:֡iǁ<9۔;CIarLǘVj P^#iO(GcbYy={ hHT-\౪hMp%!;)fyHɝ}Ҋ Q*GI (`ay,AE۫0B2|̌/Fh-7cogC>@WGf#fM[2K N)~~04quz< Pa)l2v9jL;RJٕ *D! XaZl rt0=( )VREt`+wi8wF+p EVt,E ,r |Po#& aa+x3XYv{Bd9"]O~>pw"]?yvEqσFU9r 2*8/G?7['^ƬJQ`T{Z%uAذ LW긟21z.U@F~G%T'JToOYMUz߭h \a)1;ւ= i>Kun> dN 23 ӂ6,5co;kqk&X#.kD@iVCLT&W@Jizde,GG?'^u?h+9xvTIadQRe֧[j2ݘYI ˁSA Ub"@Z+'\j-ql)DCzLop g&tSԔޗRAtaouVbo~^QB:86Bީt#ML^V}nۊÁx\4jcx^Ωu5Va+"3X"ݭ7|z) ́Fc1>Z8*TYS|hW& RIdjɦc8s3|_ tvO+h4i2&^m]abgM&qzZq xq+ arh/F.q:_[FUX{$ 95#>韃qdfʥ2bw ='Bh;iԬ3DE2_%~#_#$q`|1+ _)>!n᲎+A2e Ѯ US"muP=+ƾh3ŵ%Otv`vH j],a+s8D|xWƴAv&~ ẙ.*Wi@Y >"8 V5spLejhVk evzq8/c-Z4ƻ|'a+Hh{`bFDV F_5Z (WAuK+,<~zUD[p]זf&QmXTse6_u90-.IP+ͻu5a6k\ĐQGY'Wt0Q'Ck֚)β_z9pCE-#~Wp10\këuڛCɽ7Mڼ(Vݝ tj'8nx]x(= չV)Xgoʝ4\GS="ZU1퉈zŇwfm!DJ4}ѫJ re\lEÌF  PK_!d&pir/N6f過G\g:^ _NY !ݳsgvqrj7t|iBJ&APZt7ʢ:+!r?IYj^F[P+Km9HlU "8 lm0`1%!$+j-[6WCq}}蛏7= 'p ~F"a:1;2pfw EqJ5f~1kAQsBg"^@2`m e # NfI{PTOl#7aDCR#`[>emz[`y@ռέ6(M ɸ{]/i8ԕKb,MDˍ͕2TbNpZ,o"HN͎u6h5v%RWgYԨ"N&'!(HVNKJ+, _[/j04}K]T `~랥>t@$'J\ڷ~r-|l[+˜348< ҅)11 nn1&#,J|Kkf} B -~>Z*`h"~ N`30ތίNpvT#fi'h MaadY' EQ)O}jkTu7Gr-+X ; <4ZZXd f6*y5y&W5aJhh PƌoMtz 3uw1vҳ(CBaS۔~)9ʼnZa|3C/`q`ʌOhL}'&Ly*K˷izP*_T+}߬" l6r*JP MѢ1mH}_,o&nآVw_:q_uB$(+whuͿ ԏ4u,XptgN :ɧ*2I"#]:ڝ|Os8]T-uqr*QHIũ`H;:yl8=Rt#!ֺiiحl>㟢PD'3%)m34OgmFb#@N9?XO9:}gWmgEhnp84sn߫a9wnqʱiwL3|\"WHb\fY)~<Ix> j ;j#3E^f 6l=Jْu6NF6}n+YAbge\i[ a%&'Y? |7ҵ ww)L!r  P93Q vn='\B 4IS0 j! 8VW4( />gKHpD?A\E(|?+\w S ޣ`L 4J om5 m;`y> Kvk ى?DHt%М3ԀGm7[+\:}^qsō =L[>$MgAZHl+֡KS?U 9[4fm=S*RXҿ.u.iSkaPpTic0^eu o9XcgKB_S}GQa$r0͠UyW MM1*CnS*I*6oduɌEyM1^gJ2·2#+T;CwuaǢ|;ur+ʼnʦ'F®8:Be|-!Lܱԃ%I>`8+؆)%D( mƚCDZ73V"HÜ\brS$˧l|{a3u[4JB_*I cawv/@) PpQt&̓.tapa#rB + R+*rfh~0؃r`vW^ V kL=ܛԦ"'oI4͂ፕQfK8c4D- `{Ȅ.i&fIS؛s#_jk DɯڸE*qw08aSCÉtؾM3%PCzL]lggܘyue=8H4f0x88$m yg Ks79K UQJX.꧈0w= qU _ P( 4нvcx!%ET΋tk*֕3ggRѴL# 6u\P.'lv Q~^D޿z!E&AZD b:Pqq҄AR0D؎x "<[2 CRhA>d,;|QQfۧ`B9 ЭF5z'j+VN xG^JiUhA=)ܚ[G=˴*5 ;K~i ,znv.+C/o>ϗj6w/*y8xL0+ZoocnZ GbJb:RtYEt~#kniq}ko3{z($DILd]$48a7#왍BgSl *M٥JpFx fNsBWbjqtK8$DdOZC()gs`3$_TR6#oIH̵=Nދ _ř8S(|1|&k˛q5`NBczJx+HhᥢM)j27@cȆi8zW$YJI nyV^xTs?Y#)/xAݾ_-X_bI7a&f.caƀ#ev)u!0PnR.Q!ir?% kϋ";IjҵAK˳\)ep;m Kx$uQ;ښ/'0f.ym99 Vò1YC*nc٢Ɩd >λրu~5Kf-'ζ{C)Χ҉]Ƕ"5+Uǐ^_ﱋfv!N^3G*c u'꒰OmAg1z‚J'3܁[~;.D9OX,Ʒ_C͇7hiz}AG3 oߏпnM4jȝE:>QpM5q`XW x!^tB(үPLCKB[1*4hƆE)C n)6NEpERLtL27O߼'V^Sj'GuK$t`i7mZߔ?ɹ!2J6Rż>a yڹgD3i9,W#F ._#Le1gQb^M?G<ђqbqW<>t)n g9PR WIN#=˨R;w7( cSl)m;E La3LaT|p1>nlիc8frs܈meK-%"6XQ4IV:o LtSk6W +cD!OR-PD#arSϦ<*u0F ]c bpOiTԞLGX^b]rLTN%VoQ~2 Ew91Gw1" P"N$ fan"s74ʑ LEzNRs!UwP#,4fOb$< `%۾~;7AygɁ80g>=:4~.KoRKe[D !)6 ξv,z-tӸ:nxRF{ٚ򘦐W%!E;F0ikW67yj[om$-"`6w/64/Z$gyhf;0!*;=VGO˨BYg cYÝYH?d/-_ +O쇶J1K5F$t|NIW5$]{\GL(h/Kt =]ox >ʒH5[=ԛ\ gpMtN@. RÑܒne%%1bJM:͜PI9P3?xpAF)ԌpSu p($<9<\+QCp;ݜ_I5/# 2l OyĮPbn^^~xuʷobD10_d_g eddS.l@=I &cTvPv/J1vhi>R iVf)-6mtKh@e{n4t/i!*&qnu~TPR+8M0v{GCJz`Uxv9N&c!IgxlFJڙO,U1' {W5de,0tw9POѱ9迾\C=!2GưseLJ`PO-"d>df流 9q@>hZZ5NcRqaKsʬJI45:pW&xN-+<;>/୴AbkΎ{KF sDzd\]nW߬"nNƑT1fX3i,C4Mf&#hg xt=xML$- 6{qDHQl(!Ј I7*fc)$)1f/V  U|LYA2+ ~SljiQS|JdLl1Vd~aD&tCC9;3.CQ_3Q2͌jB8vI O#mv'h,KnbAUBx /CS)xG Y!C mGϜݡ1E~5B! 3i8Yc5Lۡ}!T!㻮٪?*WZ_МM2G 'u5vz>M[w![ȓ.(0R4؟ !*,G1H|~tFvGƾɀkhU;~\r;k$j"6&G(Nd&X˫a«5W XDi<7l!NpeLy>*C"Jnbf(s(0bػP] _ !Bކ=H,<& o& n M0}f rG>|n}B{mJ#_A\^ڣ|)%_iQ`ؑ;%)EPwzGڙ8M%\p vCutd.D{&`hz ?A cnX.|%CUx7PMh.o>p4ls4Һ{NVxt;C4nӶd \P#˖saw=+P1ޣZ{nHV@fpv9(Zd@SN0|$zk+Uf;/ #֝K}aN 1 stφg7+C?.5q2jE(a-Ocoi}Ai:(R?(C`y$0L;!XGKZ8V*o4ҝ>ٚ\橽8C —oZNB>/ }xW<\ot8׳AP>4nFOe|Y4"iC[ٖG;X|Tk?g ;o#Q) t\ϺQI@Q&1}w|IE.V酱E >VMqn) |@dÕ& UY;%Q6c#Ϲg6Ms$/ϸ<z}.'$J3BI[="TjޟQJ1_6EQwu -nVűfl/|; v\ůibռ&D*K0 r&].Fs =ǠP㇂!iG\l,x1īӂp'Y!U*,>B!WJH5G|0dgPA˘y@O4X2El,j.qlzλT*>8<*ڗ[Q!2F[ "ь:[btaL^{+:if) 1$zMtMEXD@Qn0ku&o9lӤ2( `OAXjY<Ԏ[8w$> 6pyC t7wQMj#~Oj.H'"_F*#' v[b;6" ;T%aa(OSĭ24M ֈW5(d>G *j|aj&bQ[YfK/L=U8vVZ+9sC~qFJZYIndCc&TIۑ`)/ɧ,HoO>xL \;Z+#&Pסk[ s)V~6*% n$JU |.͋RZ, ohO-o$%Ȫ_#(i p/(GEziF_ =ET-|d8:F+ϙc]W8UzP͓gH~~&47.Vm6&{AY}e3IUrr-et[]:G*p#gW 26sʦcYVVyC?Wy+09CĞ:2@_T/wnT;5Uw,gJ!nt{~MJ,C_x*gFb : .&l l$]CR Oc}pSD{Yu?d WvCPX*53sI"hW)+Eݪ*nZX@8 (-/^xXL9vPhʈIUOS&ڎ.c'*wm5,9ʇr^hϡ'`W '&[=.lK(,daȈp6q+RAq / R?]DqdRVg>A72XtvD!,w| #lRܑ9Q"nހ} gu>A>n@]1b=$`|vЩ]: Sj3UL @x˺Ŏue輠,1{e WLk҇ EB?ыvaF u3ʬy%'y}6aF|j L5<$WeV*Hpє%́"yب,SoH}d][*p၈rLz9^FSA pnjEx*QL ̸+(F,y,O5wxL:9Ey^>qnT#ElfP `m(-*{1Pqa ?Ob)߬>~!l%ufjEHD%tuI?j/PYr>C̉å-I YT()>i1I!wޣOé3,щxܠK!g7tc詇d+OV }oe3a8 ](ögWFۏ?}q t=ވɆF;p9KW$ɦ>S]'$H %eѱ0͞huclU\Ž 621O7y Gs8K=Ӹ^gtEɵ "wo#oooKHM?i{ y> ÿ&V5 "RmZRi/bu Xܑ0w#O듖; GJJ}Rn |.IqY!R@;V4NBPJi,hUx%/&6 Nxi@:€T- vi8Z.rRqi MQqg[@J"-@rRqӏp#8+u&W_,q KUcw?Jj_f =]zFܳ5 ͧ<7n5Us(|rH$|[7 tw#ʊ7w n58̪b[D &TPѬ$,NU)&oi#lB8l& ־ E,0+ch y |Cc  `j0 )kC*eCvMJ'=>Qcİqhoz Icü+C['m -uc+#SŴW\C4a̱umsʳFoY9 j*&nsPn0Rg&?C qʱ\:fMX@q -M5 j܆̊JEJG_iJH o`qNCJb$%Ңϻ wX2ֿxyGnjJcDVk=P\X>~ "}gQc"'fS'<@@I}7nH-Yo ($`bJ#ɯ)"t)Q`D\of&'F %1?TlLkk#Ί0v7ơqact0}ƽP `8%4b$^kv:/ Q,|a~R-] rv2/`!v2ZLyPÓ kpx<߾wW A0vDZqgzs(Mˠ6=CG9uo[FY|gFz0HԈLl` _ : ]w \jg:R}K{ȰhG9" cwp];dFM$dsQ #/z>&pof\D$҅Rx4cxHE)6SG}єz3 y7hCa]Q72J9 :{A9RMcw[\_H펊k ^ e׻TBsZ?G#OaN0VxA! `1^(QQ`*>75B15#'Pw껟Y%T!lı[!c%]'o dAuYXbi@E-K6+Gqˬ< 7yZ$4Um[,T ŸiS6QEz[G7~ DDkn5ڕDY_#Y(K 1=Cm}\LwD_r*aAÈ=5,H(FWBB̟)`xs\?o6.bsP:lexgˁL,FJ ͗tWm}ߞfﴔ>qkʠAW +נ{U Km␶(n-HMv@#QWl㇬+pxT)6'ߌ]ӈ}Rxkrp+Ó/@mO9.!ޱSWGnjufNg }ͻy !$^Q t8vɴdGi;³ :?MƯ#GwS)~72*Tm$PU?,y4jQ/`@C`waw Q߿n ˝i5`tN2)XiNo3CsU%`ϰ]|)GDC1#>ύRSt@0+$º(qmy9. NZ`e~1 E|:n/?"i^M-lylTr\9 & Q셃]>wV0jꙦ\ͱ%jAޖA0 3Ȗ}8xaTUAEBT23 3 &ҍTODC0=O-s_)("?"Kbj"vS0l\5FW J?K䦪!kR\؂Rv f ɞ#Ѿ QGC84ذ c 9P ƥK;s0 5a1ҏ~ A]JyY!S0zxll(!rI.ak1+"=6aW͓hlpvX3[4U漨o Èy-\?L X 9ceߧ߽7SW|VPw4yv>̐\߸ .qGgpWIBZn|0b詊"R1*B^K),գΡY;}>Y }eBN tp1-BV^׏w4T+'n`m<У';C[T0KCw ~™ NK jɁ w\/+qݟRwlHU)e-_tWv>ʍt9hqjIӽ, /<~e#ЂtQ;a%HVEo=rJ\UM+3xwc 廢g"r-K2":T|‡Ђo n?ౖ)RدYܿ'mѿFa\AL,.!D AX}48{:PxqBvDHU<8i7V‹/J39mb&ެ>:Ŷ-^U[,trtb6S82j-y"I"(a +onxmQ9s*B*[  )}0);۬$!M9Hv"s_}]%Ã/jGI@ߋ4ҝ*+ޡrO6;ۦ9g6ux釉j~9~r;D/܌TE5$ڞȟ?GrrMtE/<SiTPGɧm#ETJ:qEXfCYzbn4[q@9Ɔ#jMo?>7/5,1_(R\ޥ;gAt|}o^Y^,CY[nٍn zS~׸" hޣupߑ^N0J>0k :^ ׮/ASDz%*Fa]al̑Mnwhu)A곉B Nukl O8?_ik̫rt'᠜ b44=xiq`hGW5OQkO0˘{͠)l/ۤĵ"u'pPt+ h (e6J3_ ŧtq1qD0#:ܵGC=@pWQ4u ,1yo> IY5uw/T7z:> :6#Cn5YXNb 6|y()ʖJWruW[mNHp]rIu٥@[% - PUp]6BLl73PWeC8Qa̼rb5pRfcjZ&_e7WEN+\CfK澔dQ!m=)skh Dy-g~MPAGM')"J |{6\o8MjOXBY׋;p.&GrM977$ː8؁{?P &e 9MB:sKo3a@K! ]MheSqC44B13f{lo\ܰ\.FGK=T[ڃ\]A "CZKmt&Of&9]Oǻ 0}?/l|k]cUc7ía=cߌ T` !/ۙؼ)%̜KsKeP% ~ޚ),hWK.=Oq$X290W3YfDt3wmP[4p*aa-#6d|ׇzZstMmg6^\ADg=Y}=1P|-ʙj' U}\-SBHVaHԷG!yj5.C.tH+ * EսkhC ;aɉ}/ksh/SF& { . 3(s|nݧ͒W_eئ .V{=_{ |%# ><CwICC .&&J&V#_?GFE&C2htg )CF=]#tSy7iHf4kIw9[Y~A+DicWSy=3 ME//I|>0S02eE_EVVvc8sbLUna"^oEG Ҧ364 V2>9uω9@;.wJxA^mgPX퇟ڏ^]$GgG1 f& Fj_Ty" YHdYaIcuNDxjlߠ{Nd#/C'CY2~ǵc!B8R(0amC @zZذ}Qlqj$(I|b dDh?:XŽ``YviYc ;Yw>㣋;T^.d;#=z.!ŝ)4VIfմL7~)RN;#s#[`)J7I/Wp􁵔Dta[D@&L.2Fu,[=op>@տK\.?I~-^ܘ<5Xjkj1cI_tӚ{VI@B a'ǡ I2wR(Wqpr_E0VXZ61wy4:i̸͔iZ{F?̤oB $(Q#V/p#AYH~b)bǶa04O \*lx.f+}YT۫\\mX1;Pяb/fbSF<<:,I3+VՋlCD4'/((mEGO535? 0°rpڧ1WsK ɴE(7%*mXfxKAZHsC > f۵;o@_sDyMLmkU$\*oh|xP*^dQ)#y5LOFXhڳ=)בotb[i k dP⟇\R뭚#Jxv@zaͻO(1yJc7Xt~YV}!rl*]t'K6Pkw@顩,5>oJO_[1#x[žf{% mkm#1}j96Vj,J X&mAwCdŝ~0luSqڭ``=sK%m&CLM##;1Eփ?kTLq׵I,h be5:o2T*?$.,P 0T!sUsc*zGaE "Da? i!5dq!>rE "%+ˤ6騮cƲ?|!HqfavpK(_`=j:< @oâ~ih4S2)@iEn680mU=PhQB` =z4y\7…cZ_ \ S}c0l:Lzank3=b1h,ko*Y@n yd֧/~6Ì xxQ:+oVTK:8ةm1Z6NoM& RE@쉆y̎PMD׿5zf4F*%:s+]SO`B~UL4SZ4X| `KZ,pnjOg mRnSZ 疩wz0}{g|+DYPG=(1dQAM@j kY( zZ0MOay+SHY;rKᒴ,,]xdc 魫;./n! o!%ʭ^z?lO1.C><2dddK b.qBԊ^d:\v Suڨ_1 H쿩#} Y Vr̖r>T1W79S ^$Sk S&kSeFgO]PщXaڸQ=m7W<v4OT k*9\˫xÅ&»O#c߀x>Vǘĭ\h3]*NV5=Ln;I۵ݩzד8&`c[VDK\.Na oSW$V|R#s*".d5+%Eg ha{(a8b*bmBD}{qdҠ}ƆLy~ ^.%&2-9Z*0Լ [s&2xuWTm+f1GH#{`SQZhgyqbKt^(?/ &Pk$M.(d8!qQ E%yTU8~ Ke|_uyrL  z{LZFUDb8~xMG`Iֹ߹a xu<bCZ?0|a)-.=~-@xPv[EOIVEm͌ *\4=aO%# h& Ozx% VcWq0h) F.U0j`|B*bMUZch-͆e{H=[e]jKKƩ-% tw fPaD/+ Wͼ`&c_Eiv '7a/dF?zWhd/!b4Xi|1gaM #;Y؁ \l, ь̮GUE:~$6D@cͻ[ƙ/&b-͗RBfE|9֤sgYo븎5j wOL3O{siJAre7e z>qq5AիpT์^Ak(M-+t.h+Q4,1߇wNi@(w1_tt̴~#m'lE)z6Ջ[qk6kTE z^ceBA)n֖a\P&xJ(ݺ\AJTYB6S]Ճ\auDjs;?B8k9a}%?0*a]/g?~Ytl5jv#J rlsoi4Ep"|] e08@mJKn_;Cm_q06~^idb߬߈"*zbh!dEkCDZMpLN~O}GMw5H=\UA #'޶3HhF@AM6g8T߶j=ԛu:Tqzi6Kǒ Jw&5w#yI"f^&% {>½͝󊕯 \bd:VdLBDEv1LU1> dΩm;vjȮ^i!HJ8 NJevʔ(h)%S>lk\썠!xu7#IQÎ@6ꓻ0QPV.4|%D' o#@f:T0Mĩٹ^sM,23! OØyhg{_:܋NB~X)z Vuw8 1 cLԔ 9DBf;f4Z:3JMr|l꟨,]Nhs%y{wvsp'̲<&PwR#bv1I儝5Ȫ+b\)Жw $s=Dlg 4BN= Lm(:pBy McT\viOpoPybgPz|g7tFa:fAЀ&/knM |tRjV8]:C,9>a(vzڈx$+*jT:4.yjp^8֠-8g' # k 0]G f%!);d3e}q.-3f? K9(0:^&ӤwӱTv ۖl<4|y-@;`'Ufuc`s,҃^\AyB$(/9T%`!ɚn~ x*P;~;Ր_ UBܧTjH;NQp||j4TtuolX`q09F݂F5b9mW3$8,y&ߴO!hrer&Ʈv8Wz!~]E→Ȩ LyY7Fޒ$% ]=5oGQT;w 5olUx:<ل{O"%lJPvPKnJ=^"^FTu[BLB)WTPhV3Tp廊A0Mq";SIa R< X7M7 |.&`ݓ&菌-9j&Jo%{zP%_:9O%^=?q)w-(˶D,c77ၫi^nX&ON8\%>֢q EV.߳&=-;n |lFM*2YO#wkP)i[簱LHMLc n7Y'-$FrP!fBm:g͚ZcR!Sشq  aGh/ygG}fHmf6 h@YD$ p3m' x}39 _Ȕv%>iYy0PYp3ݭ迯lr[Q4pC~v3?"`4HCsj߾s E!HH ;Xe^j&7`fδ>p׷y*f£!QC۳H|k늖jQe@啢)37t*{7uy֘'哙os.NT7Nۤ3" 2 < 7̒H\cXۤF@ptb4øgVtQ2;Eje|3|B 3jlҟ9uj.# V@ # MW9mziːp \2bDF/ Ca*͢WXw_k4q=h{mB:FC'(CBw샛Э]8r a8|#naӑ}䰽ֳA{aѰfӇ8 Z 9Ŝ+n+Bd(_vL?6Q<:lxu餒i|kl-N$8@i #zhxtrF[ xm"r L%(zi%d({oi+S":DP!wP!-vFG L9=R&;SeM$ȒwAܝ'vQ4(xh@!{>xO?#feXO&Ye.(* Kw.>'2yǟs*0*`haL EKLG|;-'K$],jZc{D5vy@,}4u!gWkʐ_5r/(q'<D8dƇń'6ZB_1rr@Y+haP-P32R Ģw惌[\=QS5ٙ.s9 Pzcy ?Գa@sݟGøv6qu1D~n~qsA~MEl_:J9)kzOXPtAV{? ;O'UVb&pgSPwjR{tȄ@K俆t؟Zv-\z#Q{Ŧ;W60Ϯ;"[617HOX\y")@0HR}n[r_Cm蔍+"2/䝗?!KŴ8gcەt9 Z1A8$֑btkHA&injq$?lHk#*S?.CS#7.o\ml X_씈6}B<{6u7AYi]+ʾ0HmaPx3D-ߩ?0SNX;MAp WqkQ *xN;)QlM^t %pLF#_c _c~::~ gO:"kpQ^ !5ZʦaB?Gc-Csٝ;@|%7f͕B7֮_` GE\dB=akrFyU \w#Sg0-+Zy.?TozF)Q d?8u@!p%&r+O6f_8xA=Z^E&.A(3c<#]-W65ثNB (̣vkٸCG\Ɂ &sǁC'5GD;ŷE}a^FBb}X3 =Zb:>}vEXC]o]gXǀ<0'ƀC̢c€Hd:uh‚q)C>#綠 Ffz(XETƶfkc6ZKÎV `0;y/BO3̇y=r**-C.b-KYAʧ"aq?L퇗cCP_ƶl$;7BǏ;7͖j3ѣXqA9/021QmTi?idJ=@yp(Dphʀ) V q CDuBȐT,sC1 l R[0a`b pXqwd_( 65 1v{_2h3eRW|[4E?8"+aW {%&N&_}$%Y>>8rJj x߹c |w`e+zݚvoR)=fP Z]az!_ɱ~1U'qɗX͆=(z `}ۇ 397SJ!0ԍ"Y<3tJ1 oMA"tbv)*3HK\#nZ3I_!nחwmOX¸jMәt -sU * :PDʼp0Ŭ3$]_ϕb dWX~vdᦫ 0ȟ ڍqP'f39O: =ޓ*NӄhjAp&,}C}D/hV?(#3L\Sxl`nVvt&ء#_"g,~cUAj#En ]ck4u2Z\ N)o;]_Z_z'PNjR w}\RI @g]q`$@%0N1pٛ*"1앝AS D7Ă'&q x,pȱz)zN-Нa%0%fL/躒>#[[`@M:V_ӅCkt)ZZ`̎!![,8v$c77؜YnKEyJAV5@b,n:>X׸K3XYo]}#7~z^BlF9k84HkiYIWWdKIs/B8)-du fg #RSNz RXFxGtlI{!iOIsa 4r@jߗˡA.*TOhd‘+kQ"/DG+Gu=}?̵5o?n)Vʾyyc"FƵL 4Ƈq4&'huWx>dw>#IfwZ2\-Mn 뒢2Ot5 q_7A5bmrzX`a'Fy{:)0G,saeTǤ vzpoA`Ꭸ.Nq2lE os0,j Vk-܀w̶ ؞hr tԯ&,d^*b@лTE*޷YC5Y C*rQNJ/a\1/+bo/2{r%H B=ȱUj&L|N7A /d x?=Gn>84{J%=0(ih |m9 y*PxBs\_uIïV +r;8ϓc]V/yvBAi$w%f-{p OhFT d|U | :%DB~V)hȰOM.>AT\p䝦K$,Ћ_˯2"n.&O4R+SʣH6. 7]uiLKL_)JrȞHS`UsړR>:ƧHu<\? 3+7园qbByIVb<\N5!}g_v]@|i;}q/\v?ѭnxԚ֕$Vg@eC'(toM 1ju'\"F&`({Ȍ BǗYOmTTc7,#EG3Rz9wR4"ywWٱR?=rɔo K,3u Kf?1fWNH/꜠F$%32%$졞D#RNkI%O N?p2"S?#>*)֨x?f\B'є/vбVW82,h)2Ml\2\rSPݣ]VPIPF&2$'AU֦ZE4-.PY=m`g|U/yxZH_ `>d\gH~~(;t_y>tpl p}R"K'XNݞ%>њԈ@'5ŅD1w҈/ Q8P92L[#[V?fauѭl꣜6TFSJpGMp؁7WC64uֻ^I|x^r}^9r"v^MD9U 7Zے%NWnF;=)|νb*N4H>o;aڄQK9󆢦dC=+rڔ&!FKq9q=I?Xw ];$)Z{ٷcb|u/xf,h: 19EJ+7'rxJ[Og%3jg)$W~n7ٜYwtȘHbߓ:/Yg3w6xݺG Ӹ0&{7gjD7' z5~+_NI}_7^(6\K5w GgtΣlQ+Nw9 rPvqЂȈ_| xdH ,0: 1n;`1?~&qHT(&wCh &&:Mj$UѰdʸm3)pU&nSU 043 6Rnx,P*NsHªr%f;J(}S:ZGl0#PiLU Ϭ)q 4r@D ?ST,MNZ١(\튚^_C!EɃ%0~u=̵W(@9l* 7)oԉnc0%X8]ilט]@M>SjKBFUM,V/&z+v S;@ta;BY9`~rIWFc"~D-dy~q嫃k[Y(8EgAqP[yG Y}Y) Pu^Z\ $qŏYUo]L]+`dP~ELO:] Ʈ8'=<6?=ЏljuBNEq Cq_&bm8a~IN<{<8֍ uhJ8%-R$1Kב"@6{^~ZjL #1D*"-ǝFDRT~ʊgL(ٮ]h[ 7EaSѢlع0bg @i s 1Np:0*^K!7z<ntKvBGP<ʏuq ]Ҁ.? WLQ苶EaF[m#)iIFrpeLV[FEasUэz.JJk!z^YRvuW`} n̺ᘯ$[9k`R;]d t'`J0P<⣐ÉfOĭW  vlmN@F )61wpwf"bUsS+4 &XFT5忝asK>L K كj~GXHʎ_"r4҃tN:6LLIaS/3=V͕& ouvCCs66=P7%#.(wGt&1gB+A   Կs2pEcpH0I!~ NeGR*?K4>w}>Gb}m'r䛃B0O.˹Aw?Rۘ@9!D&!wTYp~*8_1V0SZ>Q [ejxjMf WHu#D1cbWAcGaEZw÷uWY1 !U6.AhHj|kXJI)l|%~2RCw[ u4x'UkKdANHn̾v"C$˩ Ox&|W" }fAtA)_In9\W3! [n5I&kv.RYOBGyO&K iuhsbݵylnPsNiSbŠ "BVb7DˎV@&j2 n}G9C%C˯M PDSRI`%+AZ%:4s7P 4Rzv#)ͥ=ۜi.rʿd&ǻuK0E摌?#r^a_`AmgZ6ڑSVf,u}$R F:%lro7%eFQEF~?pZ:,6>Yof*𠺕$?R?'>g$!dB"OWzJ~$&Q9 I{'O|2S" a {zl7qP.=e69JMv1,HejU s&te42x0Z]A̒ E@Ad! =p"ɫȷ% *zہ7^~S+mO2֋8OLxږ{ w7<~D*Z[r{{ #y鎡HwTRx fPkF|Ϝ4G(Bj*Z$Nd n!|*f$Q*l\w&jpQ6e~'%:W J;蠂uW@Z |I+Wx*_yC$V~ieǂ·"_y % 3"ܕnhW}<|֔5U2Ƕh0 Dq2'zm; {Z*MSreGwPn4Y鿔}9/e&$eI ǚՍ1,*H} )FUq&uGD5CE?5n/qώ[F{3r ]l dN++Ǡ&II@urr<~ )qio#D"k(M⴯(T .UeDʐGm}4/ݠ%*+Cx5ּc5 y==a쟸O|wܐ~7AYr~#BY,6f?YRi2 J_%r|o+u풪2Z>^*1x(Qgqb tn?I#bڕ/ C[ؘ69E h  BH{9ܣè=#2&s/{X=D3M'.UHOل 14r&^I>MBH?|Y7 ZA%o6Gۿ|ؖTy'*\F Z p &,>!mb<7-7;s `;79v `/Ưkmԉam5yHJzZV1:Wr wϧ+Q?IR jյ!Q1 :#QhJJR2{բQ_V;Ms~-Ƒ|j|4#־G>mppgJ[}$IW @74/jTViP?ܾOE vDٿhzuWc BDy%.$sʼn,;HX/kYmc&N(;]{z_u{EqyoǷ68 de'u~b͊o?¹ZgZDuKê]Ֆ~uC5 v)ӊl9`W H;:-yN6>ׇSO(;p8'wPhmxKf޾{c08n@wX\N Y(ψϾUPg5!)az"C 8-R ٢FY\6\]k^r@Ju[kS/DU 8i 3\&9|, 0'9^.eTul,[9,ObpDq{@gw<0*(Y GorU.~v /]|97ȀVFe?{&[&_}UpyA<,Ş]/Bb[6.Y0@d@yRhtзBa6wOs!Y)`'!a޷ABũ#EJn4ц+Bw#"O=n{xȞ|"- q`BHGm mDy "nh2gz~Yo3n$昱{JbzM&X-95gD?+ '+֬>(=V)f٤tM#ӢDWь]Ek1sqћmykxANj뵶CZhN_TnE=Z@pI/`i ~#SKC|.Z*?=&oF\p  ޲Z2N.SCq;"ݩ"p>AzXش$ԞʀK zX[}ak~4|Dt.ܵ1iZ~~X/}CurGoE.9! P8Uc҆f+؀fPj\hg:p7`A4Y޴o=Oޥ;R3 \IKA`C0(Ԝ흮U\CI1 ʅXbᾔWՋ0,qx1`tV#<J+SBbzN9gZE M(H~MLK%W>窂ͧ'_p`Mqf?{פ`})dfi[!;e܋_n|q)kw3.⠦lk\zhUG?w³$A ~;n4EՃq ( _|փ:PdUBaX5k ɩ:u@rDSE tS`»&F n<}gS>U~[, Abܮ0.HgCya` ѐ2AO?̹8aܔ("Tŀ7c=-a Aa9 bDAASnfgZ6׆jeA Bx]FآD fL_8)Gͩܣ,ڕ~2[i n*mWM@QwHzP5ݸjuϠ0⥗GE{k.}֏I_cAqXL uQ7a:- %˻y+SP[r"[B'Q(绡d|d,H -Uf*z. ZgV3 3ywuL:3(,SO.Vbs MI{)8\OJeWfI?9^'&4?qK[0AR,lBrXP41c'RYH5 s>ճ:{p_$֕ Ca"3a8RFGPJcrē ϸ$P,^'fCهZHGYɆ`.ؚ*DX}bV؇y;o^`mLah@9NK!?ܹxY @|O_,#"3\BM=x́>!/(Ѓ1H = [;`aR+fGah#"_í<: C`|Z &*9ԆV 9X yJWb9vhau>W{fvhp]'i&u讈TBR\[`_M


3B^PC6ߒ#J>mhհa³Hځ}8ꙕO:<2*. Б\U2~`5Y,F1=8瓘MhCXߝxWR pV,e (Sgo fVOR#cF:)t'X /dZza_ͲF!\V{-$rZ!Gs^2}k@6;֯0QH"60OY6=A*qQq[y;Ŀ /zu`=t,;߻:}Hem C+kdM&YHb'"QXyY4(33\T3'Tg}MlYTK3|<>›~^TOez2D|*91z5Iy!KMEEs3BZ{PB!4yMHIS17\l~hL(sZ_?3A,K˶nM!"t?=C BҠd6Y%*TCIj(λg{!E2tYNB8E s1L c Z)3{RF5IRP=u\0|_"Nw3w`_<fq/Nmc.o$QVKڅ>١jݶj1 {^%[J^5/菻`TݩfutWGI3|9K:ߏZK#\0Õ]Kn-ÆP]GܯO['O_xv÷ȉE5]Tx'SFז-j/ etM[.h9}*̰K5tADQ#}TEĻ_? \-MD).rc&Mϙũ˅Io 5ە1u6ם@s7D_Rm\ Y4N.EQl촾gn+M^(~b/B)FqEd|IC]2q, O]Cʶ'>_b7&\]?WnIYPpSԿZV@gI *7߮Q1#Vgz/]}C>b`=%]h4Yc~R̻tfx(h{])s֙r}a9m]Id״BtHp_ͰaKo.DR&| iGc#t$yu}}'T =g;DXMii$aiRvDM|%H-n#U0Z0 -G;@[- 0DoS06w>t6$X˙Tz4 o ꯽L=̀y ep\&ԭWztOJpgu]Q+mwuZUg(x˦I\} C-)ᶞ+ȷ`NS׶ˏg>ȰH h5^*,M.iqJ]yb5c*Iwtm:I9p12ɍ/ c>*iBo[s?ZK0({ȥ¶UjbkZ۹*WfCw܉wܶnX?xMB\(@\Y|w<_\Y_6.ڣ:( u^&PsJE 86;!8A$dadru+?v{Ch͟Lܻ =ڤ@/XG*$؍ !Y٪%85fEɟ<^$F@pbMaڏ5҄!sL82@MLrAҺ|˶1YcJgv !EūfNiNA?TX~6j8ϧU⍢W^Qxۧd`ӯJ5)% AĊUQwrd(Ǔ:S':{(ձRDB2+ G̽1+jYHਅ|H{JWc0w %C=1aF':V'B< =MpT }ydUZ&*o̲kz`>ɭ&XmZvEzЊdZlfYwhi) l}'V5WP\],/8u^É44Ϟef:$A6!:e/Qu ~VN8%LxiAJ'AIXJlb2?hh_ dzde4V>6M#ğ!A9}O!b)T%POz@cI%nB zPȫZ8S81)n4%:fʂKWƒ6\y4nQ(y+|с}dF.t`vQ@b[b ыTt~\.;V?肅h3kP{quG>WՍ\ 5P )=*0QmgsGKҙOr!MUlGNnYiwyb m*YNJ% µ7n[E 57L9+{w2FEmN)SΘZwRDiq ս=[29s3&-ϞC[,@ HC1e(O: LJ=U} =۶!Qڞ?YjtPa\?iY0# kHu d{Xn9I Y\'Χxusu,~хA q-8K(|8$!tJ[d:Fnaf1/; :aQ}%6*j.Jɥ8%͢:-W5~1.+|9xO1\J jRpr4H_"B눶Om8x$^ h/2G2L|ֹ/>qXD4{%9 ?m,SE@~te ލidY"$ KTgN3 #Й{hd}Lë.9.X݌p9+D]m/o[lqHGbDe!$Xm@R#" +eA-W!Vס &kC^"T s>./gm\pj':pp{SJDd^VPSj״&VwGt@5;Ҹ܏֬vW=]N,٫ٰ'յnAOiWF $ A,V,u +9n>X=8Qy* qAҗ:'n̑Uŷp[QV$rDdyȆt FD G'bj}!c?<45 rp 5V*XФÉG. {RNPqڔŀb<}02Rև ,uO[\rcN;$4#M7_&(]].5IfajJ+d]{Pd`x?sI<ҫnjl岞whZ^lIn_XlM320sBv#EFd fݺjKɢX5V\YP(}vA ME ' Sd>Ezڔ&jlM~iԋ-'<5[@ *svz i߱ax,b!Vʞ6wuYyy'`2.j@XllO$"pmŸ2 ^D$N*[ E 4Q!_?_5ގj)?W$% $O\BUB##kuy?DwcRQY7McSڦ OVUo!~Yz e:QFq2pEP'FKu89Jxyslg| x*w07@H,nXv%Sv9):.Y"ܶag.PF0'tR\sD{p0R8k Xu^Xk.|-YJi&$^mF{ Saa%p {cuuh@.>N|@')^ehu.1{n}hK/F Q(eFp&|B \'%ǁGZ0VX}3`'nDo6Wh~`nJ쀜'A8|O%ҌS9BhG+3hSԤ7=%RA+X6# EUƍ tuHcO2OGR.~OT{㜍ɦERD / FSɋ{r%AR^N`KLBDqGI21oMro7mPдDK\60s'Iv=rnϾkbXRBղ/DotpyMqKPL_k:#rlҟ]o(3k0T R,,si<Cpd3=hR pƒGyt,e0hg{{ H脏sjb'ę..Th,=몦)_#%D$%X]}$84 va\X-]{n<[[ ߙrz yvjyde<;3Qd12y̸f6@-` TT#iĬpx0HRw}z&a-1C-."߳- ,zDz.׭`y>qdbX&&Bl=jZlp Fxd@^t:aiBU@TN2T}tN$ַ*)wc֙ru!.K0QaUPkgS#*͌" u$a[wR/sK%تMT 8$ZO*^>7;& #NTబ_38/uWUA& k8%%*pВ؋y$ Iπ:C;G>BnBjH/`:G|5['>1СN 2m~'{pbGvh.W`q{e\M6pb_x~N'>?>^||3=۪ےKY9 -hW[4R/r- 񳐲_lDX, Tgkة" 5#G5V\=G@u](MfN=HPmEy=TX[7b 4ld!D De , KuMH2055CwP !reVA yNW,z>tDDEG11/ma2XM3sZ7Ɯ~=dsv 7I1t&Xy<ߪu*=H@JBoPs+ u_+ƶxQڳRs8+L{&CgP%RcIJ9z*Bd,}B۲gP$g M9q`GM>IUu^kvҶ͕EE԰ 7V fCjF}CM^~}Z+k]tcDkU Z=2[߇Tjw>6"1eoBV$4y%f0A#D2gĖg͋x7coMclV-_6hEl  P3n/bJ=Rwd#lGP -\Eߪ". rQ_niUφf;mnՉ~ ]7 1DZ(< )-Rsj@E:^fKd3eHOeNT~vڷѶ;hHDqm©n&g'(uQ#+umԆqX`nec*u'x lTFj:0Qy*b,ws<~P~XۄGeTj nJP4䉞J``f0%R_aM19Y.U%]fvJ~;̫ 3&LOF. р;:f}L01mBmƙ*fC-E-DJ7@ĀAɡ.Rj"X*"ɫ)ʔ5td3y|r RQNj6|&d)CT" WPi y(5e1`dZ v]*YixN8I TLx䁵(c0d*t+!_9ra̶YLkj2%l }=?"&_BR{e*_ hr{e%ӝps~k΀p6SabGUT[?w]zt އyLQXvqN>pJ\>A ą.oT%a?y ny !=W QLOme(!`Y= 0.mjߒf9xD\GX$"DkXJ Mb&JSu6fGOwxG2xrޜeqL|H^ 1O4?I(8^ƅQDۥhPph**Hi-{ ŋOEb?ٖRgv9|Jl,=ɴw|dE:\ Ld/;{tb($}1Ydk:ByqGp_nZ MwDxnMe TV` (懰JܲLzFZpMQobȼ襣륌\+#Qٚ lބ(\jpƤ[D.8'5D{)1ȤORx`ſ6=sT)ʬךComiGgM[ecC"Qǚ=S~%f ꤦPams#/7BCߒUexW>UX%YLszj;OQ/3j6 < 6s1wK AVyf)m<>ł@D>,SkvT UQ.UJ/8J8z4Gڲi # ߢA%j=6u< f`BˎZX?0̝Kc4B|ccy4:?A>ƅƁ0AN0 y@@C4o$*4X#~7N",g7شaY2,d/"ˑ%62F(JH x W&.B]q7w|5eˉс",3Aw jJr?-蜃Q+ U~uPw71cڦ#V@X|pV֦&'Rc*-CJe4r·fJ2Ey5 ,LlI~*Hn) *ZN\=KG,v kF#!Ł N9@.~^+O+]& &U* RkE+#pYúyO{"nrn3$\`pMƛ8@, ",+ ZL@ơr*=];!i FK""VW=4P'$ F=5M6(h_Lhxǿ-HtE8w% ƠcA|= ;.^V&nZj;\9/gT,CijSyKq2=)V/ ]sF*%UL0hEHПj>NI#%aѫ- 0iVa=M={G%."[gj"|oʼnkh<_?xFH{z}(_Njoc\|>kZ\'WT5Pc I~U/Nn77j.Y OE̊#X*\|? Ncz!VB 7}WsHFÅSH}aU*ONbZE u\--Ix!7RPXUeI,P; ř~1Jy9GIOn|Rg#dJ`eY N&,U~~:/V~"hbIñd XDìmؑKfz^RN0=U\**% ]cpαgީK֜ƛ (䲉%SG NhYn5?!R6oL*ɂ._?7vdZxag7ڱ K`S KXC^$ 3[d)ElnT~وr Wh]\ .HffPEGm:lI qnML }xwEI4PӸ/B e""Wr}"Xm-?:U%&s4IJr+9=WW⽧9[ sbMsF[UFw6*^)o']hNd]b.uf`*`,VLl"<^83֚uٚgp ۙkkMS3[Z=.H Ց>GOS-٨ue2ό-$d\fxdgԀO:av:t3WUs?&hgx]InӤLq{ϡ=y9nP(T R "eŹhIBgm⽰G8trֵp=6fz*VϨ;mit(`2E%`ڭq1uuu7\)Io†r.rѵ^Z ,b:T%E?r~{}ocGpĤӛhxX;&뮻Ԉ>+ t+E* V3bZi0Ifɜ!t/!h•L%2kEN=daKv> \,\WA/X@q\_1H$EZYB%|\)8^ʱIM(),?NppmݴBaz;Р\=*ǵ1x3$a.y-)Vڹ^i].53XLma̚KԽqB-ʇÌZTѨY|̒`$OyJCysr} bAD[Z% GB1?K˱6XbJG#[G /N?NuD4#3堵p8zj2kK7O XWSfNƗ"T;IIy[G)KnAVDF(5B+TD\QNi0$nCh"=QE ۔^p%9cNx=qgUXr~y/ " K|2: `A\?':K8Y5-5s՝;4(|X\AD{~Zۢk !}i8&e+T3wL!2;(#ӛp,nfh*|FuiYܦ@^IEm=.̯UzuVk~ۻ6 D\Ҫc[L9u`hUUӓT%b?^ߍQ`ԏ ڴCoYbP~ 2Ǩ5;;@,В1e4*.Az]GQɛ?=#+CF}=60;8ہ#UTpAY# ok{A=y ۣ|&YW>@HM*{-uHX~ QwwˆZFұX:!e#4W7MQl:2*Aӛj g~)DlO;ɨ֦ɱd:Zi-nF}wvęzK6cA^|Y}glS:9:QZxHtskKͳ](9"rR%0 : >>"}cSS^n($M vٞchsA)`sIsûiHaL'A"E*81Le!$Ewv蟎Ykĝɭ˫Br8,ڍ&| Cc2lݛhTQM$Nj:E*1tNL h/T&?cu]RvQv<Ʉ{qo)ݹ,}E8I*o| vLqL~|vCdr6Jȣ'2!h=k9Α}LZ KB+ք )?S(P笯R0ehЀn4/Xg6"yh?C{V7й; '$ _4^)ܰUunu p{Pj `{9cK*t%\f s& b,5vȝf~Y)Z56;g-t1QJ[;2/OiC[`* K]vC٪DE_b=eQ=lVz Ϩ~'2.bv"S_U-iiȆ0S8* KiY\ok nkۖ?T;u|ڼde(Mj($7j+ Fr:Ikl|ʜeL;=)X:Ҟpٖ-9m:;Tvӕ*h{ttЭDS/`V.M^Sa#oz& jPEͬrpշoA0K>z(n킏z#I!Uˤ0lx.zOGu9SKkTh 䣰aCSRE CDRuMw=%P$;,|WI~:\PMsxg&E b0br@l[hj14cQv-S3~*))\ 2~AhSQȂcĨ.4^‘HL۬\ZY,R8"WgҸ$DBzf("d4Mo?2Wv˴[G{6ȇ+].s<)Q "ۢI}A׷6CJDŽsGiiy !yf8t,R?*|8I @-65/A衡Y0IQ2Xqhdi,Q`C)aRb'sla~S(ɤ!tЗ xxƼVNEzW!`LNC0f=t(黵^.y}(L>[X0}}˩)ɭn A_nB>P3[_"E4=ۮ5 Ԙ;5 %B]+hmw`$/ 2<03BvqMNw"׃o1$'3%gŊ,Wr(#i.M \x>LFF܈T FI|NJp5ɡa =I|k\S< @G? u. ;Spaa<'Mۀ9xpIV"F%D U!M pS@8gKst7LEdh$3uozʫw!ݽ e djh44n^|Fx_<Q4(HaiK-;h FO> Ȉ6'q2[vJtir\ !RfkA09?9.z@ N?(ÁM'8%iM~d8!O *q:#T ?3~xGtTb7^O:8{YfO=`VUwGU_GA UK:*^0~(u;>daw@ lpڼѮ$/Ϟ3ChzVVoݨT5U)TRw}ոҏ-TTCg9Ȫ5pWx{5^m5#Z'`[֯,u_;s Q,"uJ?[Fr3?o=8YHw&rD&܏Dj'f  (혏;]xx)M8s`47|+K7z( Z,NJ1(rjK+5-T$2Mo>4)uQek4ļ<Hб&ie}bTz#[!(xfF$rr'N;Xy'E cB59~V$@VB$jJႊpHbMy,UyZUV@Y'l(U4E1jjq3s laҜzW9ĥo\^63@ZYqdJ;f$;mz&8RF]7B>o -+84|ӎt-Z}{ZG%较P277ҝ\ȍ=hGhHskpa6K6XEP~0'SH25Yg;|׹bh%DW7%SPd-FG{pj{CQӶSSrʸ4x?|< BzzScFyWNS*'b^j$lr@3Έ7kJU3bD4`|陊!lDӑBd72W &iǛ)WB֐We,\yp_6cC^ܧS򴵯dTdc۳dm0<젮ixll\pMwl &0⁛ g` AdbJ288ESe ]ߓ{[bȹiM}Y\HF'AUQV.1fն<~ pYrZ Y+DF=Qw9WSĔآvHҐnL{UvZėXq0֥rKT6zc*m*v" eD@+ +P;]Ekm /O`@Gɾ"F4I T'FY" db7cn$T5ujhXunPt6/Vv=/9՟M=ɖw]G0<4a?u+} Ⲁ@F)v @#dNU`l!ۇ&+ YDpRv%1M.Ccϵ(‚zed嗍gdaB;SNKF8L\4wgذ.ڔLg,"I2ڋQ+%~g ބUM1% i9e|.54af$[F8r̋M_c1 ǩZ3|Ww_?gb^{0WnMj+OGbL&!Sw2 S Y>nRc[g

+ o7ΕJ24F/_j.c+-7 6!9]j"BJHHJRDeGS J㞁%Jvx,UO]Cc`D7o"$, <\>H7oB6L|Eg-}V@=Rr⾄nM-d2(@a? &k1'|' VhdY.ioJ]H M>XaV&C"5Vwwgin.A':ȸ“ \^ލKciu"pVD <6Jj(sQk}Z31__~/~FoMD"ǠdlWUj}o6Ů Y5FRyo]P԰=n j'XUnR` jP(>L8xKz$;|#4 9;Vq%-+rWd9m pM?ᷛ<ZCH3LUɏwGNA@?ۍ ,Z>uf?'] J,:g(j()϶"|ʵ4kܳHĄUUG_~L7` G4UG¬>xpƭ,ts*Lݰ$TΤX4KݚЃ2 )Bxk 8 JfThhd|K 8vS9 яQ&;јnfJxb⯯ UBnJ-rCP븀3|MFb)2}jdGOCct s >2)^J2aʌ;Hī@ۼ/YQS-,tx_/?aCP9y+z~%L^Ԭb"82JIf$L\:̡;y / @PᨿwT.~:TU(Au-lxcwl^2`D@$9h<#]5n ] [5\I3dLUJPKifrrݪ.i]h{aI3Z߇.fGPfAP`!d8{ѹ6<W*퓑ݔNFo=W9k+^fn*8 +D{GtcoQGdJ@wyZSa`LlΚ\*t:z{{tyK6NdPX" wf=NڷRyp H4̗NK>]2+l/N|g.2S&# ;6?d M|L)0 =UQ5"DxeagrO!j+vzWOOW.:n. 䦭@lR!Sif xKWs COL(.!+PRC-wiɃTBnp͒.WV&< wX/G 4S+NU_ uWN[ROo\"qk^/zh5% +!љ = grcBO1'd1_*y0*MJr -AE6MN@T/3 'Odiy-_J "!tIZ,&)7 ~wQO qRG(c\K6}x1 9搕蛎^y3*/1}}I5nN\8tECy Dwa, @rnq= / |O7{j S19,!跛"8ebVA@1KQݐaUu74PG\`rqc٩1YXC 8i|HBRC0l3GY9vFB;?JV$f)W6իMZ 61n$R6n-B xhbgt`H&%%HZN|s'7ΤϷ/u'TDU7k)"}G=TVV2g&~ ZL{ )u,]ka~țډK6b (eIWєeGǗyVX2: }Yc1 S2N4/h?/1i¸SW :U1-M$Y^TBw%Yf>ۺbԝ=-et{DLOv-^''Tf }"F"pG0ԅ,r8'suVUoA D\\M1xP86s*flW®{%G]kh!Ǹt[ymDr*꟧!]`3a1D0aPc7WSK #!XlH䉁cPA>j3wk37k']*j E Mp[zIK+%IobkXQZ@L?;!hwTf'j*2댌6ϽhBC̆di'QhQb HOOpJ{ xg!]?g .*ݠgHѳ a f~oBld )/ a G_'%Or]g-aU=TLc=P,!=\TGm}Z.*éS ACa4ӕLI* a닀c˶==2)7Lsu@Ӧi*~B "#$4H]ow-?r͸3_Nk?f^`/u 9oZWs"_zVe;5@[´"8Ȓ۷1tjZj2+90Bd#H +%{6a2y_$E0]Y2@tڳK0:vKgIKN b^[pޙ^,;\|EFf V}}j^&0۳f\_l<6r57cR/UڝY _#0elQ=BPdR h,a?-;}V 3 !ߖ.blAs`yd9[ktp~kcѮJ3հ";+ J`9\t±Cc6(@X(`YVVZᮗ+_rcqn[L&)[,P+V{9i228' OJ% {ֺh켾,&=wa'u/T=2dfd<;L:"j|NP&6 Ff8uka䉙ue+j]ݦi*4ɊO;ع3= swP6,-k&-q>25mf4J&"$T`;Wz̸a@D (doM$4*b:mg5Կ1$@c"bT.@zT4Ĕ^P*F7ר]: a@,\ޜ}kb^-:47J'>>%ft񸯌LZ?Ion4&+gоFiJ$Dub7<t0eB_#H\{h'V8εI`u* 7X,m o7'_gn(a: e\VX{2ص i\Z 'Q5Ê`_붕cX$ Sd߻`?5aTz :Կ>7IXv<>qg#2]L bdkdt 7QS.FTo1pB굸~SwLJ(5.|qB Č?)$@lmmEDvL<5A| pOOsU6=hh8`W?ʬ޽:&vip5y|;ʎgVN'|9.+ʔ*za,3lVS;6*`wk} 'Vx݇D8zvs ]p~mZO-9FӢ X@ne$9} ^Ġ, Ȥ57qcQƛ}%)3˃GzOO%E <1/d4ڳliTkk%契·z&NLY@۟ʮ$3mXD U2ts&Ca Xs7ᅏH(`NDx6J[[UŴRJ^;)#ICU%(M6.F^Yw3,r{:I!)-&p5x~їjE93ɥ| 2Ke_a=_r7/ph)#~^މaK"]yv󠳹Aʏه5zr`j.OSnQU 5Y+ "`3$->oCOD!60~W4_C ,^OE\ijUxKH X$7i~z`MtWaB1L"WQ'+y{&YCa-ZfMX(yX b +K;j&K6/.fnR&֔:fiW$ܛ7[O9cLT?jY!](>:?XЖ9q{ۓy}knpk65j`eCl`Gk4l}f:2XƦKH#{%CJ,B}v L~1ezp sdJZ>]E-AS0`3yBsɕ]yF[=(Ф Z|:q~x}vm{|OIE M8l;f˫rTAH}6#s^?8A?{I8GqWG=mQXV F mu:!^9WMFGt,qyz';3~*?fsJǥȁ]yh]CK/D x>& &'5$szR\r#ebV?QwLVqCXSٱ!~s!pP6MN*r* hb%2TX>Do/*\I/ 4 ev~!^ٿlBְv5`ekB`0(dv7I![8Eg]D*IRteu Pnݓ[;+$#?mQ61Rf_j=CDǘl]ߏ I$ԽUXkSPJA1.4,tw 1|+Ψ{3-e.B4,pVǫ&%Z*_ 8v#vH*JchU$]?fsYT閰ʓ~sbޮ6nHn~ݏ!N#mT (l)dY:iv l;%f#Yׯ>ZöbtV]~р(ƍ~,NV#GRrsnAId$FsM-ҠvvfG! 7ƻOMW+vW-"R |1 !+S˾{ r0VYߊVx"N6+a A]_mdF%z=~Vi+goj҂ I䪘(mCg-ə8MA%3oj a]ttPO Sz:"1"U]-HgČLdgb3uan#^7lj!6ZjK4=D\sC]Tw>0F!Sj4 g1.|-$nwpaqBNmyMLqdiHD|Rkыzg :%ڙ'Lt:4DsF7SYѓd/3e%` I U:~EI id<4 L·r2+F"(e`{ZbI L~_IV$Iw ' /6pHUC`cwo(ǞԳ$Q^4רE x uK=I2+u⁅`Y'd.U 3Σ4Z"me !guvsz&B,'zy}nkuSV1>$#I49t4E{ȫ'! 1Ԓ‚mXQLS6l)Lc\.D[[S=y`8O.djy`&k?xCqt ͙.̋T7V($x3qىHa E G1݃)q0TulK z?q ːL-c^a`K>U+b/$Iz]<\+3ϮNH|,X*y|;9 %wL` 4)¸F Ęb=|GF$!դfzJBh?Cں b.ш@|3[jXЭ+WkM]'14ꍛܞz:ttnX(c'kBw(ՑU;G<D#/# Wף060;P\¶ >/96ֱbXF$cA/ys)6NlL6Zz}m0z"ڑa CpBQ2ꢐ/ Lҫn+'f? 􍃐72MThEf,gI*h#xX1 T&jfOPC(T:-KXَI/qǙ)zQ٣Ζ8McL! 2- Ԅ_ʅ«GˎLr)q ^s,h2}{E#n@J\Ѓgey𢩐 hc$")OL1G*}\Զ*[p+?BUaDe`DcFzj n8*qB3_U8 Rn0F2TDd> N3P @%{-fFS!|6hmЫպt7HF.H̃5OpNxu)Bh15~ǰlE]AcW(ں\/0p+HȎbaT[U9| Dc@P pTDw~O؊b\u۬P>kӱ0UVnN˓bȂx2=&^&K<NιT6PB>fBcMߗqpIhߛUlru1aDLBF&FzKxRV8@c+l&$w:WhԪ)_ .H& VkeSIH3=(|pE`^YLdPc_]sV!m Yf́6^ʮ} 98 I4DR4-E2ϳ5}1,tℰ{~QqBt Aiy ܻA*D"A8o~7^cHqƖt6 IH.LqB['}EH(z߆ oD eKM*U.GC@=i1@!,_UN\Ê㵛^XG㬩{±)c'H`J{ k5֬.Wgb3q" ,|wtdH3ͻx v`xugĭE7U%&y6dn9' )`Ϣ < R"jba9LQp=) !C~hLr:$5N'g|g1 *"~DbS2lǚG>kTbjtlqM0NdMf޲ y~Ac p T]XIMGFhFF 4z"@,lEyWheQdVgOTx.&r&c=Lb9 udDC \M[UČDE 2W6 K ~&IW hiZ)r;kj-v@1CD҂[uFoE<(qh=ZD> D#94D4]SD%ϸfLh?D4&1Ĕܬ@CA aȆu5ߙGl+Ŧ˓$KRD`3tXdJB"xE{ aIU!RW35jjve1ݢlBXjPukc :Ư#8DKDlH I(s^!x -\Ȅu1R214d)Ձ*%m,Qo"j|o( XP]C3bt0j(Dr"4gE:B͜SD;s x!Ŕ%9L*q18X14pZڕ%tE&8hsuuYw N6q,2'IW67lAmrE8PŤe