rdbnomics/0000755000176200001440000000000013745355632012247 5ustar liggesusersrdbnomics/NAMESPACE0000644000176200001440000000047313745341126013463 0ustar liggesusers# Generated by roxygen2: do not edit by hand export(dbnomics) export(rdb) export(rdb_by_api_link) export(rdb_datasets) export(rdb_dimensions) export(rdb_last_updates) export(rdb_providers) export(rdb_rename_xts) export(rdb_series) export(rdb_to_xts) import(curl) import(data.table) import(jsonlite) rdbnomics/README.md0000644000176200001440000000474313732216355013530 0ustar liggesusers# rdbnomics [![CRAN\_Status\_Badge](http://www.r-pkg.org/badges/version/rdbnomics)](https://cran.r-project.org/package=rdbnomics) [![](http://cranlogs.r-pkg.org/badges/grand-total/rdbnomics)](https://cran.r-project.org/package=rdbnomics) [![pipeline status](https://git.nomics.world/dbnomics/rdbnomics/badges/master/pipeline.svg)](https://git.nomics.world/dbnomics/rdbnomics/commits/master) [![status](https://tinyverse.netlify.com/badge/rdbnomics)](https://CRAN.R-project.org/package=rdbnomics) ## DBnomics R client This package provides you access to DBnomics data series. DBnomics is an open-source project with the goal of aggregating the world's economic data in one location, free of charge to the public. DBnomics covers hundreds of millions of series from international and national institutions (Eurostat, World Bank, IMF, ECB, ...). To use this package, you have to provide the codes of the provider, dataset and series you want. You can retrieve them directly on the website. You have access to the API through this link and the documentation is here. DBnomics is hosted on its own gitlab platform. However, in order to install the package more easily, we created a mirror of this package on github. To install `rdbnomics` from CRAN: ```r install.packages("rdbnomics") library(rdbnomics) ``` To install `rdbnomics` from github: ```r remotes::install_github("dbnomics/rdbnomics", build_vignettes = TRUE, force = TRUE) library(rdbnomics) ``` After installation, a vignette is available to the user with: * many examples, * how to configure a proxy, * how to use default R internet connection, * transform time series with filters, * ... Just follow the link rdbnomics or run: ```r vignette("rdbnomics") ``` A lot of examples are available in the functions' documentations: ```r ?rdb ?rdb_datasets ?rdb_dimensions ?rdb_series ?rdb_providers ?rdb_last_updates ?rdb_to_xts ?rdb_rename_xts ``` ## P.S. Visit https://db.nomics.world/ ! rdbnomics/man/0000755000176200001440000000000013744116260013011 5ustar liggesusersrdbnomics/man/rdb_to_xts.Rd0000644000176200001440000000232013732202726015444 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb_to_xts.R \name{rdb_to_xts} \alias{rdb_to_xts} \title{Transform the data.table object into a xts object} \usage{ rdb_to_xts( x, needed_columns = c("period", "series_code", "series_name", "value"), series_columns = c("series_code", "series_name") ) } \arguments{ \item{x}{\code{data.table}. The \code{data.table} returned by the \code{rdb} function.} \item{needed_columns}{Vector of character strings (default \code{c("period", "series_code", "series_name", "value")}). Vector of column names which are needed to transform the \code{data.table} into a \code{xts} object.} \item{series_columns}{Vector of character strings (default \code{c("series_code", "series_name")}). Vector of series column names.} } \value{ A \code{xts} object. } \description{ For some analysis, it is more convenient to have a \code{xts} object instead of a \code{data.table} object. } \examples{ \dontrun{ library(xts) library(data.table) library(rdbnomics) df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") rdb_to_xts(df) } } \seealso{ \code{\link{rdb}}, \code{\link{rdb_rename_xts}} } \author{ Sebastien Galais } rdbnomics/man/rdbnomics.Rd0000644000176200001440000000036213732202726015261 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdbnomics.R \docType{package} \name{rdbnomics} \alias{rdbnomics} \title{Package rdbnomics} \description{ DBnomics R client (). } rdbnomics/man/rdb_dimensions.Rd0000644000176200001440000000646413744120107016304 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb_dimensions.R \name{rdb_dimensions} \alias{rdb_dimensions} \title{Download list of dimensions for datasets of DBnomics providers.} \usage{ rdb_dimensions( provider_code = NULL, dataset_code = NULL, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), simplify = FALSE, ... ) } \arguments{ \item{provider_code}{Character string (default \code{NULL}). DBnomics code of one or multiple providers. If \code{NULL}, the providers are firstly dowloaded with the function \code{\link{rdb_providers}} and then the datasets are requested.} \item{dataset_code}{Character string (default \code{NULL}). DBnomics code of one or multiple datasets of a provider. If \code{NULL}, the datasets codes are dowloaded with the function \code{\link{rdb_datasets}} and then the dimensions are requested.} \item{use_readLines}{Logical (default \code{FALSE}). If \code{TRUE}, then the data are requested and read with the base function \code{readLines} i.e. through the default R internet connection. This can be used to get round the error \code{Could not resolve host: api.db.nomics.world}.} \item{curl_config}{Named list (default \code{NULL}). If not \code{NULL}, it is used to configure a proxy connection. This configuration is passed to the function \code{curl_fetch_memory} of the package \pkg{curl}. A temporary \code{curl_handle} object is created internally with arguments equal to the provided list in \code{curl_config}.\cr For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. For available curl options see \code{\link[curl]{curl_options}}, \code{names(curl_options())} and \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}.} \item{simplify}{Logical (default \code{FALSE}). If \code{TRUE}, when the dimensions are requested for only one provider and one dataset then a named list of \code{data.table}s is returned, not a nested named list of \code{data.table}s.} \item{...}{Additionals arguments.} } \value{ A nested named list of \code{data.table}s or a named list of \code{data.table}s. } \description{ \code{rdb_dimensions} downloads the list of dimensions (if they exist) for available datasets of a selection of providers from \href{https://db.nomics.world/}{DBnomics}. } \details{ By default, the function returns a nested named list of \code{data.table}s containing the dimensions of datasets for providers from \href{https://db.nomics.world/}{DBnomics}. } \examples{ \dontrun{ rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10") rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) rdb_dimensions(provider_code = "IMF") # /!\ It is very long ! options(rdbnomics.progress_bar_dimensions = TRUE) rdb_dimensions() options(rdbnomics.progress_bar_dimensions = FALSE) rdb_dimensions( provider_code = "IMF", dataset_code = "WEO:2019-10", use_readLines = TRUE ) rdb_dimensions( provider_code = "IMF", dataset_code = "WEO:2019-10", curl_config = list(proxy = "", proxyport = ) ) } } \seealso{ \code{\link{rdb_providers}}, \code{\link{rdb_last_updates}}, \code{\link{rdb_datasets}}, \code{\link{rdb_series}} } \author{ Sebastien Galais } rdbnomics/man/rdb_by_api_link.Rd0000644000176200001440000001230413744120107016402 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb_by_api_link.R \name{rdb_by_api_link} \alias{rdb_by_api_link} \title{Download DBnomics data using API link (deprecated).} \usage{ rdb_by_api_link( api_link, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), filters = getOption("rdbnomics.filters") ) } \arguments{ \item{api_link}{Character string. DBnomics API link of the search.} \item{use_readLines}{Logical (default \code{FALSE}). If \code{TRUE}, then the data are requested and read with the base function \code{readLines} i.e. through the default R internet connection. This can be used to get round the error \code{Could not resolve host: api.db.nomics.world}.} \item{curl_config}{Named list (default \code{NULL}). If not \code{NULL}, it is used to configure a proxy connection. This configuration is passed to the function \code{curl_fetch_memory} of the package \pkg{curl}. A temporary \code{curl_handle} object is created internally with arguments equal to the provided list in \code{curl_config}.\cr For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. For available curl options see \code{\link[curl]{curl_options}}, \code{names(curl_options())} and \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}.} \item{filters}{List (default \code{NULL}). This argument must be a named list for one filter because the function \code{toJSON} of the package \pkg{jsonlite} is used before sending the request to the server. For multiple filters, you have to provide a list of valid filters (see examples).\cr A valid filter is a named list with an element \code{code} which is a character string, and an element \code{parameters} which is a named list with elements \code{frequency} and \code{method} or a NULL.} } \value{ A \code{data.table}. } \description{ \code{rdb_by_api_link} downloads data series from \href{https://db.nomics.world/}{DBnomics}. } \details{ This function gives you access to hundreds of millions data series from \href{https://api.db.nomics.world/}{DBnomics API} (documentation about the API can be found \href{https://api.db.nomics.world/v22/apidocs}{here}). The API link is given on the \href{https://db.nomics.world/}{DBnomics website}. } \examples{ \dontrun{ # Fetch two series from different datasets of different providers : df1 <- rdb_by_api_link( paste0( "https://api.db.nomics.world/v22/", "series?observations=1&series_ids=AMECO/ZUTN/EA19.1.0.0.0.ZUTN,IMF/CPI/A.AT.PCPIT_IX" ) ) # Fetch one series from the dataset 'Doing Business' of WB provider : df2 <- rdb_by_api_link( paste0( "https://api.db.nomics.world/v22/series/WB/DB?dimensions=\%7B\%22", "indicator\%22\%3A\%5B\%22IC.REG.PROC.FE.NO\%22\%5D\%7D&q=Doing\%20Business", "&observations=1&format=json&align_periods=1&offset=0&facets=0" ) ) ## Use a specific proxy to fetch the data # Fetch one series from the dataset 'Doing Business' of WB provider : h <- list( proxy = "", proxyport = , proxyusername = "", proxypassword = "" ) options(rdbnomics.curl_config = h) df2 <- rdb_by_api_link( paste0( "https://api.db.nomics.world/v22/series/WB/DB?dimensions=\%7B\%22", "indicator\%22\%3A\%5B\%22IC.REG.PROC.FE.NO\%22\%5D\%7D&q=Doing\%20Business", "&observations=1&format=json&align_periods=1&offset=0&facets=0" ) ) # or to use once df2 <- rdb_by_api_link( paste0( "https://api.db.nomics.world/v22/series/WB/DB?dimensions=\%7B\%22", "indicator\%22\%3A\%5B\%22IC.REG.PROC.FE.NO\%22\%5D\%7D&q=Doing\%20Business", "&observations=1&format=json&align_periods=1&offset=0&facets=0" ), curl_config = h ) ## Use R default connection to avoid a proxy failure (in some cases) # Fetch one series from the dataset 'Doing Business' of WB provider : options(rdbnomics.use_readLines = TRUE) df2 <- rdb_by_api_link( paste0( "https://api.db.nomics.world/v22/series/WB/DB?dimensions=\%7B\%22", "indicator\%22\%3A\%5B\%22IC.REG.PROC.FE.NO\%22\%5D\%7D&q=Doing\%20Business", "&observations=1&format=json&align_periods=1&offset=0&facets=0" ) ) # or to use once df2 <- rdb_by_api_link( paste0( "https://api.db.nomics.world/v22/series/WB/DB?dimensions=\%7B\%22", "indicator\%22\%3A\%5B\%22IC.REG.PROC.FE.NO\%22\%5D\%7D&q=Doing\%20Business", "&observations=1&format=json&align_periods=1&offset=0&facets=0" ), use_readLines = TRUE ) ## Apply filter(s) to the series # One filter df3 <- rdb_by_api_link( "https://api.db.nomics.world/v22/series/IMF/WEO:2019-10/ABW.BCA?observations=1", filters = list( code = "interpolate", parameters = list(frequency = "daily", method = "spline") ) ) # Two filters df3 <- rdb_by_api_link( "https://api.db.nomics.world/v22/series/IMF/WEO:2019-10/ABW.BCA?observations=1", filters = list( list( code = "interpolate", parameters = list(frequency = "quarterly", method = "spline") ), list( code = "aggregate", parameters = list(frequency = "annual", method = "average") ) ) ) } } \seealso{ \code{\link{rdb}} } \author{ Sebastien Galais } rdbnomics/man/rdb.Rd0000644000176200001440000002164413744122031014047 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb.R \name{rdb} \alias{rdb} \title{Download DBnomics data.} \usage{ rdb( provider_code = NULL, dataset_code = NULL, ids = NULL, dimensions = NULL, mask = NULL, query = NULL, api_link = NULL, filters = getOption("rdbnomics.filters"), use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), verbose = getOption("rdbnomics.verbose_warning"), ... ) } \arguments{ \item{provider_code}{Character string (default \code{NULL}). DBnomics code of the provider.} \item{dataset_code}{Character string (default \code{NULL}). DBnomics code of the dataset.} \item{ids}{Character string (default \code{NULL}). DBnomics code of one or several series.} \item{dimensions}{List or character string (single quoted) (default \code{NULL}). DBnomics code of one or several dimensions in the specified provider and dataset. If it is a named list, then the function \code{toJSON} (from the package \pkg{jsonlite}) is applied to generate the json object.} \item{mask}{Character string (default \code{NULL}). DBnomics code of one or several masks in the specified provider and dataset.} \item{query}{Character string (default \code{NULL}). A query to filter/select series from a provider's dataset.} \item{api_link}{Character string. DBnomics API link of the search. It should starts with \code{http://} or \code{https://}.} \item{filters}{List (default \code{NULL}). This argument must be a named list for one filter because the function \code{toJSON} of the package \pkg{jsonlite} is used before sending the request to the server. For multiple filters, you have to provide a list of valid filters (see examples).\cr A valid filter is a named list with an element \code{code} which is a character string, and an element \code{parameters} which is a named list with elements \code{frequency} and \code{method} or a NULL.} \item{use_readLines}{Logical (default \code{FALSE}). If \code{TRUE}, then the data are requested and read with the base function \code{readLines} i.e. through the default R internet connection. This can be used to get round the error \code{Could not resolve host: api.db.nomics.world}.} \item{curl_config}{Named list (default \code{NULL}). If not \code{NULL}, it is used to configure a proxy connection. This configuration is passed to the function \code{curl_fetch_memory} of the package \pkg{curl}. A temporary \code{curl_handle} object is created internally with arguments equal to the provided list in \code{curl_config}.\cr For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. For available curl options see \code{\link[curl]{curl_options}}, \code{names(curl_options())} and \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}.} \item{verbose}{Logical (default \code{FALSE}). Show warnings of the function.} \item{...}{Arguments to be passed to the internal function \code{.rdb}.} } \value{ A \code{data.table}. } \description{ \code{rdb} downloads data series from \href{https://db.nomics.world/}{DBnomics} using shortcuts like \code{ids}, \code{dimensions}, \code{mask}, \code{query} or using an \code{api_link}. } \details{ This function gives you access to hundreds of millions data series from \href{https://api.db.nomics.world/}{DBnomics API} (documentation about the API can be found \href{https://api.db.nomics.world/v22/apidocs}{here}). The code of each series is given on the \href{https://db.nomics.world/}{DBnomics website}. \cr\cr In the event that only the argument \code{ids} is provided (and those in the ellipsis \code{...}), the argument name can be dropped. The character string vector is directly passed to \code{ids}. \cr If only the argument \code{api_link} is provided (and those in the ellipsis \code{...}), then the argument name can be dropped. The character string vector is directly passed to \code{api_link}. \cr In the same way, if only \code{provider_code}, \code{dataset_code} and \code{mask} are provided then the arguments names can be dropped. The last character string is automatically passed to \code{mask}. } \examples{ \dontrun{ ## By ids # Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider: df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") # or when no argument names are given (provider_code -> ids) df1 <- rdb("AMECO/ZUTN/EA19.1.0.0.0.ZUTN") # Fetch two series from dataset 'Unemployment rate' (ZUTN) of AMECO provider: df2 <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN")) # Fetch two series from different datasets of different providers: df3 <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "IMF/BOP/A.FR.BCA_BP6_EUR")) ## By dimensions # Fetch one value of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider: df1 <- rdb("AMECO", "ZUTN", dimensions = list(geo = "ea12")) # or df1 <- rdb("AMECO", "ZUTN", dimensions = '{"geo":["ea12"]}') # Fetch two values of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider: df2 <- rdb("AMECO", "ZUTN", dimensions = list(geo = c("ea12", "dnk"))) # or df2 <- rdb("AMECO", "ZUTN", dimensions = '{"geo":["ea12","dnk"]}') # Fetch several values of several dimensions from dataset 'Doing business' (DB) of World Bank: dim <- list( country = c("DZ", "PE"), indicator = c("ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS") ) df3 <- rdb("WB", "DB", dimensions = dim) # or dim <- paste0( '{"country":["DZ","PE"],', '"indicator":["ENF.CONT.COEN.COST.ZS","IC.REG.COST.PC.FE.ZS"]}' ) df3 <- rdb("WB", "DB", dimensions = dim) ## By mask # Fetch one series from dataset 'Balance of Payments' (BOP) of IMF: df1 <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR") # or when no argument names are given except provider_code and dataset_code (ids -> mask) df1 <- rdb("IMF", "BOP", "A.FR.BCA_BP6_EUR") # Fetch two series from dataset 'Balance of Payments' (BOP) of IMF: df2 <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") # Fetch all series along one dimension from dataset 'Balance of Payments' (BOP) of IMF: df3 <- rdb("IMF", "BOP", mask = "A..BCA_BP6_EUR") # Fetch series along multiple dimensions from dataset 'Balance of Payments' (BOP) of IMF: df4 <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR+IA_BP6_EUR") ## By query # Fetch one series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) from IMF : df1 <- rdb("IMF", "WEO:2019-10", query = "France current account balance percent") # Fetch series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) from IMF : df2 <- rdb("IMF", "WEO:2019-10", query = "current account balance percent") ## By api_link # Fetch two series from different datasets of different providers : df1 <- rdb( api_link = paste0( "https://api.db.nomics.world/v22/", "series?observations=1&series_ids=AMECO/ZUTN/EA19.1.0.0.0.ZUTN,IMF/CPI/A.AT.PCPIT_IX" ) ) # Fetch one series from the dataset 'Doing Business' of WB provider : df2 <- rdb( api_link = paste0( "https://api.db.nomics.world/v22/series/WB/DB?dimensions=\%7B\%22", "indicator\%22\%3A\%5B\%22IC.REG.PROC.FE.NO\%22\%5D\%7D&q=Doing\%20Business", "&observations=1&format=json&align_periods=1&offset=0&facets=0" ) ) # or when no argument names are given (provider_code -> api_link) df1 <- rdb( paste0( "https://api.db.nomics.world/v22/", "series?observations=1&series_ids=AMECO/ZUTN/EA19.1.0.0.0.ZUTN,IMF/CPI/A.AT.PCPIT_IX" ) ) ## Use a specific proxy to fetch the data # Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider : h <- list( proxy = "", proxyport = , proxyusername = "", proxypassword = "" ) options(rdbnomics.curl_config = h) df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") # or to use once options(rdbnomics.curl_config = NULL) df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", curl_config = h) ## Use R default connection to avoid a proxy failure (in some cases) # Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider : options(rdbnomics.use_readLines = TRUE) df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") # or to use once df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", use_readLines = TRUE) ## Apply filter(s) to the series # One filter df1 <- rdb( ids = c("IMF/WEO:2019-10/ABW.BCA.us_dollars", "IMF/WEO:2019-10/ABW.BCA_NGDPD.pcent_gdp"), filters = list( code = "interpolate", parameters = list(frequency = "daily", method = "spline") ) ) # Two filters df1 <- rdb( ids = c("IMF/WEO:2019-10/ABW.BCA.us_dollars", "IMF/WEO:2019-10/ABW.BCA_NGDPD.pcent_gdp"), filters = list( list( code = "interpolate", parameters = list(frequency = "quarterly", method = "spline") ), list( code = "aggregate", parameters = list(frequency = "annual", method = "average") ) ) ) } } \author{ Sebastien Galais } rdbnomics/man/figures/0000755000176200001440000000000013744116260014455 5ustar liggesusersrdbnomics/man/figures/logo.png0000644000176200001440000007544013371134545016137 0ustar liggesusersPNG  IHDRsRGBgAMA a pHYs&?zIDATx^kՙ?/&fb3q]TA\;(A@䦀"((" (>\џcTbjRIa̔5J%T*Ij|_uڬ{g_ߪOW^g=W*zlLSs[G?3Rt̔w:ɜ^ |?DU;RZRI8cesb+3&@J`\Xλʜ6]eZL3SA칀IB:'yl*1!iZ&݈W|Zr?UZʔ ZMIjt̻|e! jșt"E4l2h9cWzWz%pCL.ؗ$=\DΜ-5 fF-VŶA_ A#<06&;&=G'˜FcHLpCmͦdl{͘ņ hkٿA3g3}vۘ=c,6lG͜?mLvM\0BFo^Sf X3g~ K`+27|<ɚ7n Fn;[NϻvlدM=}e`Ǘ_fG :ͶH9kq帿fQw'D?306t=ImÎ~'?o2J%|) MzxFΜ2վ"e^af^ikmC3qJVLeZI&jeWpi-`Lң=XpeZȤUfy?%#œ=70I^\3{)ISLTJTg*$3ysqf=s;qt§#g&S iNS]8]dpDƥC2TJTҸ3IH^IDƵIR|0W`WlD{x"V&݃kFܑ3I2Llxxsb$N ڝҁ3W0s 3W0sJ̹ap'}G2W.3v7|hg_Ȇueۃ[s6-g後t촗M{߭!7= n65˰3FPi,m~bqDܦd ˜ *茀`q_hlŕX ٗa^66`=+%3g_zȿazyI7ޡ_`or cm8so_Wxmm&d 79Glx3z:7m{mNG_7G<һ Ww7J,(Ǟ{YV!j;¬ڼu\+͝+XRfr""=*&{f 6]&)~h#NTMl:I^2r#N&Mrґ{")!I`o,K!gr0tIy qI`Օ/lVBg*(7ARwwsj+SAIp3Qզ2^'PiAx-pg*(7nO2<;1A_n&&.ljQn/ NuU*u:yc9Bh@bH{5 oKǩ+_Ԣѕi]*H@:7^4ɣ\I7w&T.`|rHWKHiLҔA]ʓnh e wƥwe)ږx eR9bxx\p+eTFX;cugRBDBxt5'v #ѹv} 2gVc"EẂrN@ǭS-$EJǭS-$EJǭS-$EJǭS-$EJǭS-$EJǭS-$EJǭS-$EJǭS-$EJǭS-$EJǭS-$EZ.R\v w[=EYܣR:0RZAR"U6nj)-`]~A"]k"Upº۰ n}nwݰkqx-V~7<ea܃BRa+"Hqr%.p> ߐ-ASgv_1`ceL{P0BΖC%Enj)-`Tqvw2Hq2|X=%ZºJ܊VnYj)-`:u`܃HIu`܃HIu`܃lDv oKw_ <2 O;FM R8M˳6ۣցrB$Hm/a,Y^g̛y_I7|WU3ћ_Suc]I}|<_knk`_٠?|}ZCW:/{uX,ȇæo2Zǂ~z{}y~ąJM.}=<,iūv|Q]6g?L{# ;?{Co ?whI7omFbIO`z L=r[x'2}=#VK }>|T}Uz߬]Q(8=Sfd07_rg])s_X!{y$E8r1$:RPNGCRϸv9w)'}$1HͿI R ZZbm-qe{ucVoI;|# j;-BF&L@x-^c`_؋'N{l5Sd`B L)W.[I~"[L򨨒 xTS0 ~`NO%JV5,cw*Jqp1*J >]!|]`:J(UNE739oLQT:p;bɭ,,mP"U)IϺBTR/~s8UmI9׀OMTTڊ3EB:%]mVrLR<uSQIH*O=!VJTTATR&D\:G?NCo S*$XC&=dD m/ͼM/QAI,pFJ 0ITW;¬6RZZ2Io>SX n(wxAѳ&+!0C*ZmԸ2 BUQ&].eT*zAʏ^U̝-D%,ey;xA^)ڗHʀFCwM?:|ֻXJU 3ب%jnʹuj&XZP&SLup7\JfO%22EX=FH 7NÑ L+3׶-HsYegc7Y 'H#YcXK]oN %T} [ibHH嬌?MUDIGLty`\Ac9*S-:J{|s2VZrҲj).VZSq!IVZJCJL+㩸e[=JCʪRVZǓ\vpj+ b$}XiuH֓:43VT\i)zC+춡s&q=)lEVo=N+mpj[feWYظXiŁ2Kl`~pǭ 0щa6f ㆳ@a-(| O@?(&(.wn 0TڲVȸݭ_~7n+w v|wYJHOumh ]pE`˽~Ȑ|%\ֳ_}6.7>ܰu?Ea¶J@^=vÈRimQ*9v=n1(Űআ-WU^:n+ _slQli@ˮ Vl\n|冗iJ+EAJ bns+{י * %x?f+~qU}}{ H+wq%]iQ}ZcvpURi_~7sBJ0vko׿vυ2Ec~֞UY*nMYx> , G}r7Q F—So>ڂ4VdyT>g((lCcʍ[Osv;L~-maT.v=_Tڷo"G迯n_r.qΫō{ɝ>q{g־*‚tXT1*uH]n'q KaC-;Gj9yCu՛Z9*o*mE̹u]m (}RP 6;*^{C1s~rmA.ye޷vNQ7v(?=#ϼةnXܬe+bσswy

&锪 $h˅R:T~gJ%X u˾ʒ>LҨb]0X.][m($*% ӭr'?+XV5I*T-0gc9%Bƻ\"$҂v1r89T 8]v0W:LT䲟IVE K UmIPY~Cg:Ra=njEVoTYX:jUf+lќ76F|l(* GBeܐ(*M AYo(WN]Oީ~qH 5#=' _4r!4|=uzgL(̵+DC[tad|jAG?qd$iV1u$՘ .0EL5 KDbw90\ưY*/ ̔1EO5ps#DR.4 XI*G]xerCreOW͍ZkZaE;%"2iHRJCI![WjTx*UZ+5Rrr9T5Rc~+9$U: V7 ,d+FױĊ%MTi"Tc%ƤӭOMӡ %:'+Vi>ʙ<:Mk.)wP* ,*4!.Nƻ960?NM k%(!Q)sNTSX:_X!i}KP\QK.)zB,B0-Oj"jӼ;VGr^w1Ajr&O9/柾?n'eդ R;yZĘEN$g!RF7%$#`m_$)5yژI2NP 4c&H:_DH"0fH!0fH!AKߐNBc#͆dU1+ "QFH Hv@c#$$;P3IFIhlِ*ƆWҨHv@c#$$;HN.NBc#͆dؒ{;sƻT: 4ۍW{d Bbl\u4$jla_失fCL.ޘJ|)S: 4dZeTFHTخ?DL!dMelRڤpCL.@ G7ZGjk[7I: ˢUi.zF_Hm aL%hl! V'I}}u8ch$9gQ&c Up}͞`R>kst{>>hL9`qY![#?텶tKA8ւBJEj5kl~?liD#jڤc7fKb ytE:+4`Cw uuH+QOVx\\UcoqÄJ c-N"%(x^D2pˈڅgis ^<m~0Jm\7*]]C¹X헌5bz:<<=ر$AzS$ ~tb1\z5m}a-_X)~b%Upm@Pp_)p~>,AJ5r+ɘ.P7A $jҌ*VAewb\V8VJys=!`%wC1Cj 46!\[ÊZݞ\R޾*ƆYIp;i#p.#ۋa48 𩖍goT Z1X.ERc*U-cAqFM[0N{,2oZS ga%U{{O_G^A\Cdhh*vӨ t6T40-aN"%FFH)c ԣ۶dz]znڍ-'or}A;7TY?ea?% C=_o/w?i/Jv`$E19rL{°>*1/߰ߴ瀿iA0sۖ:Gg>ȿsj87ޡ}eam;MCe>?x?r=hlyظ{`ו x`w<,0'^|Ea}ksu[>ߛ*K_}=o=x~^ϱoSog4*OK˗:uP*7B;*[37=y!]&5POzg_>eI_ _s_XRu<~S;c,}~۪gfu ?uC R߼PDZ.6sΟ1Ǎvw\ &P;z{8̐i\uUO_- .U1LkIAOhlSEE】P(`jnYtCcYmkoWߋ`{ ǠRlEZ\cCg 2I5$¸yJa|yn,6hd&@׷?}PhlضrV4#@>q+TmxPs4dw]t]Xc_jטu[ԙLV?nޓAφ:)":hlGZ^Q<Ϯۤ;lG]ϖϗ1=;GO9aSz;:{ ^cҝ#3Tɳ3MSl 36Ɠwzn>N Qacf?!6} s=#7Gu]T]QZO4@xbflרtm\r3yqf-C(C<Zv1B08=t0co4 Kl\΁N~muPMba޼վtͭ:]\cn^s kn'P/HOIu@OWweW`H jaϥn}u126CPog/kR\q!Ìo%ai:!mH[~v{*Ut 7XovX\4(O5MT>v;w?;OV*ځ1d$H "QyehLt %FFHR%֜!ځ1d$H "QIFc&H:DHBc#J46BdI2NҨH6$#@J!dI2N`1k4"۾ŘI2N 1b0fwt0n}2Bj.0 YTG-I 2)t Z+ULki#90gXwHlhӦy׶TOpFʀ!$.#/ۜH.|W-gbBW+DeLJv%fژR^wb]XXp#Nj;X*wiͥtP$пξbbɎ bfLsA'[͍gM({-p+i /{RkPqqvb+6|TOLΛc2F$qbIz>kq{.LonԊN.*'~L+Tk\Xg pebHNufzRI`© HtA42Kz/FJt,]%VhFDbASggNT{}fj$3yz5f Fi-'I> r9M7UB5ʝ<0ljt O$^_x{_2EO5Ե^.~Wbk%\v)Z W/;(0 aX08kl؎mIR~5)BLxBj\6ܮA^oجM]L̗LW(*y3yka4khnR%Ե8SU=;y^6402;TĶ^=$O&7ܠjNq.)l2qN^팤\ kXa`֓OI`:Eվ\ 1K~QCAk\2Y g&UR^jx@\!<y^O"Ӛ$WN4{Vޠ\ʽc@Q) !Rނ6?&9 EQp$Nd(*Gx<٨Α9]jS6\?&.STgƫuJCJ EQ$YF_R-|P9E+S!XDMQT=&O)k Fu7ɜWx0-cV\˟w9-E5A $ Ȃ`8~jal2|俜(bDQ'xIU ,'ќ7$_^ړD#*aK ?DյYqKݳ{7enNQrg 5C4(wلL.djWjȘĒDH |DJG8_Ϭ8U,; ̼1@5Ԑq$6zņEd!2T HJBegLR"yL릚zQd ,' 5 R>~Ke,U[+k;G,s <~1GՃbTxR#!ɁUʚu֛nE;Ib 遥ӥ AD+K T,.ՍH.STG 0HxqZD5vrBBv}beU[x#L3f &ǐ:ȴfvIPIKpG ybou*<$ Kz+e:b\JT2ރf+/֖: aoU,Gܗ,Vi -%𬕫8GP9qSd`Q%-dde<0N -gg,k~q' :\׬Lk>%wҼ; RiWy;i^f~dW*ĝ4/xZΫNrVqVF4.>LR폸Uiҵ';i^/'I L ;^R!RM0Vj"Ms8)#WyrWO|2JHP*θnL!=5GI2yRdګ60jڅ /HЛ{swnxeiwЭg(E16t@`Ѯ~&" `$I'R\R@2RDI[JX 1y7W.嵂=X Q ܼð+i6*l,(Pv AZ$#@J[zF)F1щa{N%mn|^}oWA5(VaA\ k`V6Rp#헰 -.R{Lt %%hlR $C\o%mxq3^} %I0(=$nDQ8W(gjB26(U)}"`$I'R\• ?dR8ܱ6)nx` Rk7Wb?}V!J򘮂$ܡ$0Aat1crw Ej I2NO r)Փt6M' "/&7 =Ӛva\ۋ^YCPl(f&헰*ج*`$ qF1d$K r)غU` ~)0a^r#AQ)f VQXUjlQ_Qk0b$I'H:h / "/&7 T3J Z6@jI2Nu}pd1Ԫ؊4HzguAb$I'H0d C_E)A ec0//M*U.v`1f$ml.)}pRܓ_XZ.ww#Jꩭj*}ܑ:(-c&H:As60RpASa- p(flG[բK0falF\ֳ_)}nX<.8, \Q؀Ua;$U{0zQ=c&H:F J* L2bH R͝TjkhXժW 5N|x}IY$#䩔 J* HQ )}Q ^a㴸K26'4&4Fz*@j؀+T0OnG;#LEjI2N3Ƌa ;6Fŕ_"wSJ.Vnl5br *E61d$ mcft)}n<@Ea[F-Q͂+ 2.z06VQMXP9Ib$I'bl4c&H:4c&H:4c&H:4c&H:4c&H:_DH"0fH!0fH!0fH!0fH!AKksc&H: 4I:ؾvcvqSw+ H/_t{oq-^߾gAFNs(|톮u_i`)ƀ3~ KblW_Nwf󮿽ݶ=ދ\zn}7;yc[kw (hᆵNڵ0#T|?OU7am9'yAzmuXeqӹA칿|֖ͭs|.ۇ_U]o=>&`,p.nl }]oGal9ڼߴ砿I[0??owAd>(_ixmѠ̜.Q^go;{{J7so0C6b|;ϼF;c4xTͽw8hD>wOu;;һ[wadڧlgqֳ+-woگӷikߧ;2x_ pɝTgP⦷ty _"/2G-jmz|lرW u y!'mDv6[o߼n#G[ 6e3mmSiGY@n۩es#s]p5ow(Oju }{"Ax/'S mOܧ215"Q_6*`%U!1@AYc٥T|h8q`̰cpklhHUͥE8p~) νGŇ#~cs},~80r8pH+8j`tm_A|xs2S<}>W]7xa?=xk9m` z6luN}*lcG\xs{ c{Wt+x?DDkÜkחGGge6:ؐ81 tn2Jel zxdwм{0ӗ,չ|fhЃ?M{:AiS m[{oËa\c6rä0ǢAظUdʛ#zu6'4m𶳖c;͖z'_^@6F]1"[sxv= < zVؐ/4fx C׿2.; piG7-؂C;^wGwqaslcf??ͭ~j$M)3tgۅuѻHv3f56T6zS0ႠP (kUn}_߱N[l롁wok@0iO+d4;FMPfpnR0c8׿oPCa?x`? oѦuA^6 >l^0du-F#J yro!`ŌJUNY oG!6]wZJ?VMVyO=1|:|:]ztIx4 bûHvqƦ :wa]ؐi&Eۇˍ1aQJق vG\F164@穂u]g־\ЀƁksAKQtP=۽ۮ,\~Ew7fa%hp5wGfVbl}I: iAĈ"xǼCoFkU^X.k`1|!SeabuxN`lCE1o` 8\èm`Cgqάe+>ol(y/ E?RPkl {Q}q`ԚcS ݠ ./|n(6Yt#}J jȂS7{$c1z1(m?HC٣˲lG#EH.o@ nA.X~Xx|t4F)O,1˺! 9`>#<5 nq7F=o$=_ܴ@~{>8EoÈbN16~OuҸ@؇k ;4 zT߈C1hӟ^ޖ-~o>E  AnݾaO:>><싚v)M=('N!!iB^-t͍᷻'O)m^j D@^^= †'L>?)T؆m,Hv@c#$$;$jlN{I'fCelc*9]*F ZrTFHIhldU1cfY,Hv@c#$$;I6Ihlِ -3_46BڐFH Hv@c#$$;] Bhld46BR@!) AMNBc#͆dc*Ec# bl[|9jB wbl`LJńHٻbU36̵+DR,|k]nl*!@S-A-g҉$n7Մ2hhR1e?N(1C"-ccRK.g9L|~9Bj V"Ӛ1YJP|T@jirUwr8=uRERے2v7MqU\K Q*\B,$ \ژv0dJ>$2IQɯRC΃1_a\v|ݢCS|U0 Ux6Zf˾zxhø-|KYqW׼ 7U}&R#ԯZ~MYGܩ M^偑Yofo~ùaj#T 30Bn`CAwh[uwyU*Θ6j[Z]~ĝj^akaJZDkT&Mĝj^3>qd}\p#x7;>N5]yKFP 02;T#TYviP(f7kS+!VJ ZQ*a\08כ5Gܩ}.uýفk?9F~U͟70 G)Q& ~m$zj|%C㣢~ĝ"  _?NQ(sƻT20w),L%dw*-< ( ɏST*wg ?NQK]su /Eŕ2%A#JI-YO?NQզnob(NSMۤ1(-%|˘ZHv (VBy8**ώSQEQT:#zBy.)Zʹ,?1hʯsQEQфye+/TZW8gOQEQm?vԮp3EQVxF)v1YMHse0Uj;qQG?0MFF7'XbbGFHprr˴zL(Qώ`+~\ݻ?H6-[;1ʘEQ$,Hsٸ+/aG-~4i.lc1jM 4&~`fۭ;BI 7+…)uw2O%Cu\?HMo_'(:uNQďVoA?~RsR[Yj.LQ Ӗ[Zϔ`+u3i.ܬ3gD)"eO%ezVv4t4 HkKHHj8R`&prr WL&~`QSqBH#unV'鮩bu# en8Ҍp[zy5g@1/>;[dBifR]5{n>|ֻX] $.qĊ$R]99,܌T'~䲟b+'~BH2 5#sup3jW+Әx(*U!H\9QR +e <~l*ł'R\ٸ^].(8|H*XB!O 77R{ؖج J*@B! nxA=ذeOr!4Xߥ0=ذZT BG,a7R{c#ұ=0!?X\^0nDF!бBi(!4 YB[sFjOHB!qc#PбBi(ұ\B, B!"2 ͥ RஜбBq!4 2?ʉ.B2ۯ= c#ƥL7R{,CF! !BHCx:idžJA!yeбBq!4tlBpl3ޥre!q)˱ۍ+-ѱBбBi(!4Mغ !g'c#RбBi(!4z Br[[f\ImBBHCAF!hJv=C RH~ خ?D, B!A֠He$!dɑ%Q7'?Ò0$cHNLB:FaѪܤ$y+ul-gRàckTFұA$'&!KH@ֱHW(gƕԖǝ$&8:He$!Drbұ4 tla\Im-RIHt,!$A֠He$!DrbұRF8z  YHB:6$c !$.Wh&FGA#Q>ЎGϿg?XTFұA$'&!k  Kl~6?~Swo4)&z3c;,$lwe&SˠQ6[rC9kKt "`MLU7ː>! :6j96 5D\p%' 9$d (gIIR$,ҒOAӰ#mRJCPSi!DY%B4{(W/Mpxp^]ڂÕ?moQR :$pccU'0Ix#Xstpq ڒ6*8RBڒX [PQBT89GZ:+%%NU/g WI[WpErxp5mX(8H~,[/G΁3:ti#`[G.yDZk8]8K|a;ڒ@85I hDF!rq#':6B!BHCAF!hJǶd0!?_"a7R{*DZ=0!?W,0=ѱBtlBqlϥKбBHRc˴fhHI]}.%ZBز7R{c#bNw_IiH2G;ʏ.ݿ@ٝZ\I=ն::倴[+)ۼM/[; _kPByf>5Q5b8"=G[_tp ;⦷t}\v _z׀0FSmeC?[nRشc}`Bì?eR[ W.h+@ο?*c.N,͵5ϋ}L86xs0,09?5un#'б G]cCl9?fѱ-~5#tl >w^δA0z(g$1'3eR5л߰;?c ޱᮜ4c|}-^yy{pψv]vc(cwl^g>;apq=΂o8GYV^XG{PpqSf?2;tW=؟)|t}iw,F)%+^N_|G_qČ0h?r>>Ry:^c:Qe.o2ߙ9.:6tn;Nd=DuPO?of {טus7eAcdotSM)<|5xBϘW?vX`[C! 3G p<:,Q߸{AYPHNѮt>z}H_62ʰۈLukO}αssW wD~9>Ϝ_rg1NaG=;|uimzԁ@(VqW:鉧W1s~QdžzB1/6^;BQiTMG/~0߹=ucGaGxDZV{X;U " PWOUhh?} ~~02gnwpa6t]on#h{QM5 :64 ảۯ*ﺁNt7<*)v}@F9gkߧK#x?h,]ayQxcrjcycj8nÏ;. 4^c}WmթXpelA`=~ҍ몾Cӿ[u:,wti61]߸6U0L!cC,P)KAzs> o86 6ث_Uuߺ :l)l0焑p,}PuG|0l>n>5ݠM|{ NwGE >|T]:SG\?p쵍t.mmg.GtTǴ='s e}Q(9q||m }-*#TGvUW6oگ8^^ s᪵:hҪ΍:N?u^8CcMg(j,Wc zQf$(tlVo~[s+G}߽vʶ D/%wmNL1Y;p6Χ:vTG9d:6#+w/`];jCT@rx`F'\a~G͛ҏiO~F?1o*<Y㛷ܩmfMtlhrBƕ4"(`{ņ;arv[e؆ ǩPhaF]}5rI 8FDʴՄKwW7r3U6f[rt?FcC1jZdž_i)1߱>x[ȭ07 ޢIJReP̱pn[He{ |8tfW>6ڎA* vǏ>!XA(::5 hUDžF*iu5OZcۭFT/;&)b43-8Rt0h`TC &d :HSaDaWHt1sO,!y[P *NJۈk1:XsjGO * #5Cs LTlw0uP[~ bx]:#0BpTŹs[Z\xz*s]>H F{qa 8uYʼnrGv;r@c&`f(҆ŦyC:NmV0u6QA-b?Pˇ1ij_tjx|gl;xO&؈uxq纁};ʱXHcTYcbf=c2~V $ǡm g8qc,[ĉvhܮGPum;u(smS}+ i`m+p >u?)k0ֶ7҆:mL҉4 H4cU RԲMe!8tlB :6B! EC8R92tlҸrƕԖ!X!4tlBtl]N BHбBu!4tlBplGr^w1!бBHRc˴zˌ+-+Ràc#ƅBHCAF!hJQbaBP%Ʊ]ٿ+ńBBH#aбBy~?ulGs)aбBH"a(ǶڒJ$)aбBH"aWR[c#b0ƱKC,B!wg]>0-k'!kO4csw jBj =Iw%Ԭc;je.%:.Kvl39B g796g+]e>.3ٿ;?==K,|B!0p p,r?grѸ0>37_kX1BmXUď(?[xKh<8]J.V!ty`?)VKGr8~#N0 %f;]zqJ7〻r;gv*sƻT^;D*O.5y{_RD9+/.XB3x5GX?wšbN~eNtw\@b$J2wv*?D[K[ĉU 7q5GAgt]<]cfpEQͯ>qRAGGjs/IpPx.1LU2Wb3 1T&~δz iEQJ{f!8^z/6+>c)EQT͙\Cړ.k9do-:)iڽ{+z7m3{rEQJ/ܜw(وvF"̬#s5v=?/{2{aEQTX*)8.8,{5&-, fЂ^).9]jEQT(텛\K} UБ٫s$LKR}?rN(ne.vn1Y~`u ]i7n!]ď6JgxMӠ(酛smίRv]yf-ELWYVb0}fGgwĝuGkv%'~P4:Q|* 7%F\W_)}3{{ѝp9/Keg& 3ULQռ[RZϺ'gnn5Z0nrf{TJ(J0S[y[kkbf8#{uev&#ĂéKe ֛ΉEQ W;٘`~LC5cqdvE8C{pûG4&~Qd(JRIif"-pk~Eg&M]NpJ^a(ٌͭ9ew1yP'*?,xUf'~`)qL1EKQEu\Wss 7pûz+mN|q!EQUJsfwf| #sRi?(@S Kc-܌Y!'o(jDai'A", proxyport = )) } } \seealso{ \code{\link{rdb_providers}}, \code{\link{rdb_datasets}}, \code{\link{rdb_dimensions}} } \author{ Sebastien Galais } rdbnomics/man/rdb_series.Rd0000644000176200001440000001040013744120107015407 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb_series.R \name{rdb_series} \alias{rdb_series} \title{Download list of series for datasets of DBnomics providers.} \usage{ rdb_series( provider_code = NULL, dataset_code = NULL, dimensions = NULL, query = NULL, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), simplify = FALSE, verbose = FALSE, ... ) } \arguments{ \item{provider_code}{Character string (default \code{NULL}). DBnomics code of one or multiple providers. If \code{NULL}, the providers are firstly dowloaded with the function \code{\link{rdb_providers}} and then the datasets are requested.} \item{dataset_code}{Character string (default \code{NULL}). DBnomics code of one or multiple datasets of a provider. If \code{NULL}, the datasets codes are dowloaded with the function \code{\link{rdb_datasets}} and then the series are requested.} \item{dimensions}{List or character string (single quoted) (default \code{NULL}). DBnomics code of one or several dimensions in the specified provider and dataset. If it is a named list, then the function \code{toJSON} (from the package \pkg{jsonlite}) is applied to generate the json object.} \item{query}{Character string (default \code{NULL}). A query to filter/select series from a provider's dataset.} \item{use_readLines}{Logical (default \code{FALSE}). If \code{TRUE}, then the data are requested and read with the base function \code{readLines} i.e. through the default R internet connection. This can be used to get round the error \code{Could not resolve host: api.db.nomics.world}.} \item{curl_config}{Named list (default \code{NULL}). If not \code{NULL}, it is used to configure a proxy connection. This configuration is passed to the function \code{curl_fetch_memory} of the package \pkg{curl}. A temporary \code{curl_handle} object is created internally with arguments equal to the provided list in \code{curl_config}.\cr For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. For available curl options see \code{\link[curl]{curl_options}}, \code{names(curl_options())} and \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}.} \item{simplify}{Logical (default \code{FALSE}). If \code{TRUE}, when the series are requested for only one provider and one dataset then a \code{data.table} is returned, not a nested named list of \code{data.table}s.} \item{verbose}{Logical (default \code{FALSE}). Show number of series per datasets and providers.} \item{...}{Additionals arguments.} } \value{ A nested named list of \code{data.table}s or a \code{data.table}. } \description{ \code{rdb_series} downloads the list of series for available datasets of a selection of providers from \href{https://db.nomics.world/}{DBnomics}. \cr /!\ We warn the user that this function can be (very) long to execute. We remind that DBnomics requests data from 63 providers to retrieve 21675 datasets for a total of approximately 720 millions series. } \details{ By default, the function returns a nested named list of \code{data.table}s containing the series of datasets for providers from \href{https://db.nomics.world/}{DBnomics}. } \examples{ \dontrun{ rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10") ## With dimensions rdb_series("IMF", "WEO:2019-10", dimensions = list(`weo-country` = "AGO")) rdb_series("IMF", "WEO:2019-10", dimensions = list(`weo-subject` = "NGDP_RPCH"), simplify = TRUE) ## With query rdb_series("IMF", "WEO:2019-10", query = "ARE") rdb_series("IMF", c("WEO:2019-10", "WEOAGG:2019-10"), query = "NGDP_RPCH") rdb_series(provider_code = "IMF", verbose = TRUE) options(rdbnomics.progress_bar_series = TRUE) rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10") options(rdbnomics.progress_bar_series = FALSE) rdb_series( provider_code = "IMF", dataset_code = "WEO:2019-10", use_readLines = TRUE ) rdb_series( provider_code = "IMF", dataset_code = "WEO:2019-10", curl_config = list(proxy = "", proxyport = ) ) } } \seealso{ \code{\link{rdb_providers}}, \code{\link{rdb_last_updates}}, \code{\link{rdb_datasets}}, \code{\link{rdb_dimensions}} } \author{ Sebastien Galais } rdbnomics/man/rdb_datasets.Rd0000644000176200001440000000541313732202726015742 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb_datasets.R \name{rdb_datasets} \alias{rdb_datasets} \title{Download list of datasets for DBnomics providers.} \usage{ rdb_datasets( provider_code = NULL, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), simplify = FALSE, ... ) } \arguments{ \item{provider_code}{Character string (default \code{NULL}). DBnomics code of one or multiple providers. If \code{NULL}, the providers are firstly dowloaded with the function \code{\link{rdb_providers}} and then the available datasets are requested.} \item{use_readLines}{Logical (default \code{FALSE}). If \code{TRUE}, then the data are requested and read with the base function \code{readLines} i.e. through the default R internet connection. This can be used to get round the error \code{Could not resolve host: api.db.nomics.world}.} \item{curl_config}{Named list (default \code{NULL}). If not \code{NULL}, it is used to configure a proxy connection. This configuration is passed to the function \code{curl_fetch_memory} of the package \pkg{curl}. A temporary \code{curl_handle} object is created internally with arguments equal to the provided list in \code{curl_config}.\cr For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. For available curl options see \code{\link[curl]{curl_options}}, \code{names(curl_options())} and \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}.} \item{simplify}{Logical (default \code{FALSE}). If \code{TRUE}, when the datasets are requested for only one provider then a \code{data.table} is returned, not a list of \code{data.table}s.} \item{...}{Additionals arguments.} } \value{ A named list of \code{data.table}s or a \code{data.table}. } \description{ \code{rdb_datasets} downloads the list of available datasets for a selection of providers (or all of them) from \href{https://db.nomics.world/}{DBnomics}. } \details{ By default, the function returns a named list of \code{data.table}s containing the datasets of the providers from \href{https://db.nomics.world/}{DBnomics}. } \examples{ \dontrun{ rdb_datasets(provider_code = "IMF") rdb_datasets(provider_code = "IMF", simplify = TRUE) rdb_datasets(provider_code = c("IMF", "BDF")) options(rdbnomics.progress_bar_datasets = TRUE) rdb_datasets() options(rdbnomics.progress_bar_datasets = FALSE) rdb_datasets(provider_code = "IMF", use_readLines = TRUE) rdb_datasets( provider_code = "IMF", curl_config = list(proxy = "", proxyport = ) ) } } \seealso{ \code{\link{rdb_providers}}, \code{\link{rdb_last_updates}}, \code{\link{rdb_dimensions}}, \code{\link{rdb_series}} } \author{ Sebastien Galais } rdbnomics/man/rdb_providers.Rd0000644000176200001440000000406513732202726016151 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb_providers.R \name{rdb_providers} \alias{rdb_providers} \title{Download list of DBnomics providers.} \usage{ rdb_providers( code = FALSE, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config") ) } \arguments{ \item{code}{Logical (default \code{FALSE}). If \code{TRUE}, then only the providers are returned in a vector.} \item{use_readLines}{Logical (default \code{FALSE}). If \code{TRUE}, then the data are requested and read with the base function \code{readLines} i.e. through the default R internet connection. This can be used to get round the error \code{Could not resolve host: api.db.nomics.world}.} \item{curl_config}{Named list (default \code{NULL}). If not \code{NULL}, it is used to configure a proxy connection. This configuration is passed to the function \code{curl_fetch_memory} of the package \pkg{curl}. A temporary \code{curl_handle} object is created internally with arguments equal to the provided list in \code{curl_config}.\cr For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. For available curl options see \code{\link[curl]{curl_options}}, \code{names(curl_options())} and \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}.} } \value{ A \code{data.table} or a vector. } \description{ \code{rdb_providers} downloads the list of providers from \href{https://db.nomics.world/}{DBnomics}. } \details{ By default, the function returns a \code{data.table} containing the list of providers from \href{https://db.nomics.world/}{DBnomics} with additional informations such as the region, the website, etc. } \examples{ \dontrun{ rdb_providers() rdb_providers(code = TRUE) rdb_providers(use_readLines = TRUE) rdb_providers(curl_config = list(proxy = "", proxyport = )) } } \seealso{ \code{\link{rdb_last_updates}}, \code{\link{rdb_datasets}}, \code{\link{rdb_dimensions}}, \code{\link{rdb_series}} } \author{ Sebastien Galais } rdbnomics/man/rdb_rename_xts.Rd0000644000176200001440000000201513731750353016275 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rdb_rename_xts.R \name{rdb_rename_xts} \alias{rdb_rename_xts} \title{Rename the xts object columns} \usage{ rdb_rename_xts(x, fun = NULL, ...) } \arguments{ \item{x}{\code{xts} object. The \code{xts} object returned by the function \code{rdb_to_xts}.} \item{fun}{function (default NULL). The function to apply to the column names.} \item{...}{Arguments for the function \code{fun}.} } \value{ A \code{xts} object. } \description{ In the \code{xts} object returned by the function \code{rdb_to_xts}, the series codes are used as column names. If you prefer the series names (or apply a function to them), the function \code{rdb_rename_xts} is here for that. } \examples{ \dontrun{ library(xts) library(data.table) library(rdbnomics) df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") df <- rdb_to_xts(df) rdb_rename_xts(df) } } \seealso{ \code{\link{rdb}}, \code{\link{rdb_to_xts}} } \author{ Sebastien Galais } rdbnomics/man/dbnomics.Rd0000644000176200001440000000174013744120107015073 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/dbnomics.R \name{dbnomics} \alias{dbnomics} \title{DBnomics ggplot2 theme} \usage{ dbnomics(color_palette = "Set1", ...) } \arguments{ \item{color_palette}{Character string (default \code{"Set1"}) to change the default color palette. If you want to use the default palette, set it to \code{NULL}.} \item{...}{Arguments to be passed to the function \code{ggplot2::theme}.} } \description{ \code{dbnomics} is a simple ggplot2 theme for drawing nicer graphics. We do not recommend to use it. It has been included in the package to avoid errors when reproducing the vignette examples. } \examples{ \dontrun{ library(magrittr) library(ggplot2) rdb("IMF", "WEO:2019-10", query = "France current account balance percent") \%>\% ggplot(aes(x = period, y = value, color = series_name)) + geom_line(size = 1.2) + geom_point(size = 2) + dbnomics() } } \author{ Sebastien Galais } rdbnomics/DESCRIPTION0000644000176200001440000000166713745355632013767 0ustar liggesusersPackage: rdbnomics Type: Package Title: Download DBnomics Data Version: 0.6.4 Authors@R: c(person("Sebastien", "Galais", role = c("cre", "ctb"), email = "s915.stem@gmail.com"), person("Thomas", "Brand", role = c("aut"), email = "thomas.brand@cepremap.org")) Description: R access to hundreds of millions data series from DBnomics API (). Depends: R (>= 3.1.0) License: AGPL-3 URL: https://git.nomics.world/dbnomics/rdbnomics BugReports: https://git.nomics.world/dbnomics/rdbnomics/-/issues Encoding: UTF-8 LazyData: true Imports: curl, data.table, jsonlite Suggests: knitr, rmarkdown, tinytest VignetteBuilder: knitr RoxygenNote: 7.1.1 NeedsCompilation: no Packaged: 2020-10-25 18:23:42 UTC; sebas Author: Sebastien Galais [cre, ctb], Thomas Brand [aut] Maintainer: Sebastien Galais Repository: CRAN Date/Publication: 2020-10-25 20:10:02 UTC rdbnomics/build/0000755000176200001440000000000013745341256013343 5ustar liggesusersrdbnomics/build/vignette.rds0000644000176200001440000000032013745341256015675 0ustar liggesusersb```b`a`f`b2 1#PH$f&妠I 8As2SJ!tgr# t0X X%gwI-HK î?"5lP5,n90{C2K7(1 棸(\^P7@btr$$ Yxrdbnomics/tests/0000755000176200001440000000000013744116260013400 5ustar liggesusersrdbnomics/tests/tinytest.R0000644000176200001440000000026613653300263015407 0ustar liggesusersif (requireNamespace("tinytest", quietly = TRUE)) { home <- length(unclass(utils::packageVersion("rdbnomics"))[[1]]) == 4 tinytest::test_package("rdbnomics", at_home = home) }rdbnomics/vignettes/0000755000176200001440000000000013745341256014254 5ustar liggesusersrdbnomics/vignettes/dbnomics002.png0000644000176200001440000026432513414003374017003 0ustar liggesusersPNG  IHDRMƜsRGBgAMA a pHYs%%IR$IDATx^wUgy/gfr}}sJ4YoКcoǹV d>:,Q_tCx'+~"K'LӝjM8zQs<3(#3uǭ6LΗЂާTc*ss'ۘ)9_=+LeE^xKCeSK=/\0Ykk}c9 f^y7-Z>sRL+˚3~3r9Q^4q nbYT>Y<;nΝ-}8mxW5y v2e #|6ܩcGˣޔGˇ_CՌKG=d7 װ;-r(,)UiO,Oɞ ٹOO.LI,=oiٜZU@"{_ ?߽PG~AY0mѧG'䓢?/ACЩSsg>=F[$ǧE?{cd/}('jMӆϻegG^rͰ'؞>-w>6BT[uqwOeytQsknﶩZG<{1QY\#;g1ܢ /::;E[1Csc-Ic_>x{l/~`ΰFzݸɣV-%{YCǥyU+3cgOFHixgqYi7?3cX3oܴ@n6fcXeސڟjs7N6hŠwh/3H> fzcnw[c>9K,aӬ7 qGAGLc\!`sbOyyy#Ӛɹfۙ5eL^1FwIwslDs<&eÌ+!3dĹ1ᅲs{fv-YoP[~1n|S3fH1sF?$.Yn.Qs;~Sf>3b"ԗNOwwcIco~Jm,2\;v6Sn4d:6!{L7/K[UrۇߥHF7:V;Gٺݞ~-xhOO2VgͼU:/>x\ ns=D-{p3ӟNs[94k~im:={Iż4{H;x.C~:jd;cF<|özlF<1jӴ,1qY:,5aqŭ3fHsΝuy2sz'F`dG<[$g!}{;njR eG:#ITҫwmNUL媉+iţS&8Cߺۣʝ>?O"7!{ԵVMbGQJ2;AO϶9dxde`OvUzz?uVݽcLj-hz)֙wG9kƌ0/>ovyCE?!.6#|uCo\oѐ!#[tQ_YUι|)`=%#qzUn 9= 3b&LQofdI(9#W\OZ{Λ! 3uYه<iڼn?Y1'%EJTԓ)sM em.̜1CRΪrnJ}]lXдS09cƓ1FG#3O=kG}gfjؚ3Fg<}ܟX<]OZ)3f΍$eў .$PLgL*Dg̐"&A \O}֞3՟$5cfCy%:MBaz?3qwoGaYc : RxFlMel>=c=׻=] ,GҴ=! 2ד3m&3l(z57'3fɨtٞ02OW"jg܃3(9sxYOG)@ewې;M}iM~/cp\ң\nag'aj!Ü7VacXCz䧴zΛ'dww 3_]Ԍ,mۧg>sg=oóz̛@mwmݼP tnX4a6X&Ҹ Wa7䚻G=aSyNnĊ;~[X}JzT<??=uݼQX"f9UvZ}njYU6=k쩫9ϵ۷sW9δoΗ6nQjD繞g9ڶ@ٓs䎡Ɠ=Qh챭}w]7׳'-~. z>jлYtK9X\ܹs٫^V*î',eGjn}(Ct[7 T\O&_K+jh+gZT]s=Yą>-SlN^w=$E'JGǹ%6oi7vQ/b?nWA[('ވ{?}oVvvvo&@$ɒ뉒S>4c;:Ή;|zѯ0ZL^w߬>zp88F%mWgwڴEΞnGǞ_rF?=7`svt+D(W%[xyzbXԔzwCFUgi:2lLe765Jgg疝,z61j w'쮴u["k{}e*z²ϝ;g`+Q\HL'uG/+jnzc[!P$2RwM؊XlNRA\ᣎxXV ~rp=J~vWڄ%;?vk;:;϶՞lزs%|6{~b'CF_ŎsO=xƳJeg>R3g8,\ROu;fQc[)|#\6qh:quYN\{✗z3{7 w89V+>=F\*ؠܲ(bɫ;vu{VWs%ΘqE\(ĹZϬ8V?PygΊjmLH 0Tic+{MS*{qys3g~JJS6e/7H*5*ي8][SVanrsoy8k~cYiKk;V gv7>=1V0Ky3m ;_o7Yq"N-H⍌Jf;#vI&l+W7y=lq/n/=vVמx-Ӿ(gL>rX3V[N\Y϶+tKnV tu bG`kIA/J8'>h`-">k ܾ->=Y\;RDO|ST"כ|U?}yP^`F?=R{Aqio7+b6Lx{ RZԟ^q5,}r%~zqnņW{1['|'bD{?+m=wXH>tʨ iƆl%6|t|^w;YϭPl+ޚ΂v(Wt T֝iU%C'=?3g<=Oi\'ҧ[&ʩӿ0Cپ' D8r70jS|^$=Ɔl%Rt#FnGGum+Eo,xu2\s˙OUo\TS/}ߎ{%M8H9FyTjtt=ٰT1UNl'gѯ׸Wٿr=ye}r&s'e]'jq%HKOSk~;Epé:^7'r2q=3g7*%w=1֞.>XY+޳]iχO44܋S~r'Ta}oV7a<)d}?`;nۮ'"Eٶ^- # f+; )5ok ^+6jJ,H\\gg3*,u~zjq\/Rm;Ӊy'׾o^cڹR͓{|~|UG>cW|^XhO|o {&`1{-E$z%ܲᣎxX,AOD#R$6kJ\O<=Oپ%n1YSs=qW|:aHy{Yu<G_"8K~e``H\oی يGY}xV̳yzt)< z!ps"U[\G/{w;:ʎLiHk鿺IEzNT],IgJolg=J(3ד~9zgNR d׺?<ѱ`=OLQVwR?z?-g#ƦE^ݬVD "i|I=6k6PqC{nE Ϥ#([J(zԓ'<:;q=F d?c%EZR}-|[x^'?@óԿ4qReuń%M^d+E|T{hleu-)r6nqrwIZdt%I'{}=OZԌ캷C3fWsDgsK=i2=,ݕjӖ]D8];%~Vq1GI+񹞸-?v⤱[9r=R~4$U/sxDzq癚%U繺(3od]'l-)uO.l/յ'<R?z'܏?on]is_x艷"M+xiɪuʊwHN6%rm{}eʊQsHןzG+=݆׊m37\6F1kJ\1wQvPmGz8st(ybJf%ODzw>:ssέذI,)0*ي2mnt~mJM!بr=Ά-g[GNTjFk&U٣Px,>E\c ҍX=c)gsK W/JOb4!1=4c,onw42\op#j;R/yΨteęJHDMR$<3H~~σ=r=yTC+5=~ό8XBwZ{G>Rzowmr1O׃x^KNbriskDj@xtV{83q_f$7osgFK\Ǟ% Z}D$O 3N56ֱ>VC.1UJMg+J\Cƶyn}6?g̈́F0(\YYeGj"jN{hs+U~r}oVml[[Je7:g"R?zBF [3gEI\opoyL,8ja^fUeA6">~"^tsk nx˶rW*ﴇWS"6=13ժ'(%?޳9yg z*z=P%MG޼-Ҵ Qr[wj#8?ϯTjZٸ-~G׹zܨ,b|u LC'W)ārD8UӞq̬ZiTQ<W4kggƷ-~.J)8N࿹~ybJ뤺ģvb; dkIiz\|.7 %^ޑ#e%NLx%HM)3>O]y[M+_$sKsH=b)/rpUn;I䎡[KNdFUEgsCutt(b&wB ok>׳Y@7oS&%mK*1sxIyσY|0@KX'nˋk/GS6߄%&ՍY:;;W,^z<y<>_OB"z%׫iʖ={*䃽{Ƣ K ynG{>sV|ҕyrBz玿uRlWrxD3_δZX3ayhnq$Svsk7ՋG]>޻k G9q5w?zsQ"TDUsX.ړ 1AE/bʎj\\gٶ3U51y^~ri4,RBᄏ@Nf" #M bqfWZGجQ3K!λϜ}StFĉZrq3_ym?(4ò%\OzhCG;" Q艷"M-"ZgCQ ;R{WEÉsD=OLYyۛG[ζړSM;zf*&ݕGδZ8Soz7K[Aq:;;ϴKrs^.f"8;ט8yݟwoũZRDԯl-lWx_q>(oB-gTM&NYaz){Y&v?T@2#K9^+6<[ jHfz,/mܢ@# ag{r?c򒧟ݕ~POybRI\/ 6xgwXsmQHlܹs/m,TV@# $,mCGo{}e֒ں:K<\u# uԞlɌ\/zfzԓ\ݎ-;o\/~vW^:z-)n#wC1-@l;re[KJ=~Yew;:δVmx?+MYE$k7kwV]-XWPnUMH\o^7 z=K|sᆖQ#R_7;Ymx[;Z]mwd>Hh} 6k*jcUMƮ+Y=wa̬FhZjffD]ڲcӬ=g SWmL}[rBozYB맘ՆOl,v=\dWMpiܵ4ewX.gjr=ۖ%T!~νK4X/ U.TrHp<%.BuuWӳޠ,<2sG-;$} [оz[ WexY++v[!v`P5xG{j(\>WMGW\ks)kX0TeV<^f5pWsLv'<7f\^fWeƶPx9k-GPçpͱB%9z(N-jcFuRH\]5z`WMNZ\oZciWޜj.e.@j\Żkی:bX.g^N#׳gm-nӺ +k(l9oFO>O" jHAZv3ӖZ5*_kvKlwb kn]oMݻ=gܴ33Z;#׳EBCozj=ZgM޺ M]kpKDߑ&_nRZy e\dPUbɤRxC^=z`2֜0tl:퀏\/C@j\Vuj*=rkPcَפ--XB3Ҍfɛ~m^8/;[>W5k{Ua#d@gΰ}z\2A>r}"zbor}]Zs YXPt6R^7s=wiٵy#\\L(M"a(O1y+[{f6k<6+womW!\fw׋띭\a]Fae[т-D,TSt- 56PCAVAY{di[_o{֋PMaxcl,6{S\Gmr=j'e,5+ʙbHH+:b6tþ-9i֐|:F`+}ƚFsGwgfx?8l_(kf֮:-:BAOmW.넚WwȐUg-{;mJfq]-vO{x; ̼!:R]`"\r= x!'r=` \r= x!\r= x!\r= x 9]]]Esܽ- xr5]j,Z<ޠ *_.MXUxC?gduvw[=i̛Ѥ-+khZp]ZNa}eBuN=&DZ/wqՌ`xgRY{:dl2 V^G-LP3E]%8#KFF`ޠݍ2j+?\(O&\c_}^nkh߼]ߓڳ]k MlCUZsQgJ5<텽z}\oPF}}y: 7mnaςrZK¼í{zcw/Zk֔mh1>dNHQzj00&5 Dz#W:ExK 3KTkgp5+Yz[4u">:- Uf{nfk,͹6iWs5oڼ)_eyM͛LiYuFExz5%/XM,(~GZx!Hu=$3a < .Z]]'vjpKn*T%>Cn5L/\/k4B7]dd!w jVZx,,NG7k^ۡL%ZYOTԝIjUi Gez+H#%z;2EL˝q.B;fXK!󤼯 +kfZ5Mu+3o0]dR; {*(ؙ6֖m>؂ߨNRՋސkҞl=ڱ<}Js`5m}Oex#>BW{2)m>Z^YѴ5| -֓=! Z 36QS렬m%ezOF}"KcZ]k~[_ dr] zS2ͱ짨wnj5'ğEY ynv1׻m외>`vwc+}Y>j+=yɱ&ő Z|Tjz4gW]5l]CrvW55MXWb~|ą]D0H"빣K Ü@V;ƃ&CVj1gwV 5UF*_&Rmjz}Z #ū̒ KGmݮƝ;6SުS9(#D,;o21|IJ-&e6qjdR[(XW3vi6s{i55]U%>Fu4/ 'y$ YijK_ ܢOrrI쉏|l}vOKvi'SYAs_~Ag $d`6\Zնr,fJB9hK:ېmc]#; E a>5miլgRC̚F<䥇!Q֕o5zh*dj(ŕw'7虅ɗl*Dۂ(M{gXrJ$lO*{*`VK:E!/2*Y:KVe]ސ眉yN,5K &=i{_ j%Z^5GkX{M:ߖ)N]x݌r#`b4dR_zf4-˕k zI_^J):LTr8+%Z,\v' #QɮdceءL,yDNY`vCwPfc/fg{)j\8ñ\>Y '5=i\/B%\=st 5XTs͎}#כMk Y6X2v-! Zo?73v=}Sfk`||@\;P0{>4x\zʒަVjtzK-?}z$db=j4, fW0*IGzzW>9D!B1As!9Pw%9#ՇMXpr"zY: 9x\k#3z$Vμoɸr=54S dee}Er=,Ѻnqw 0^r=&+xCNy6wP}Z,11BzyKN*'ڠ>*agr=[Z }hN&JLt's RYk z 8 ^ZP$P\XrqHk&UثUh,T+z#s1dr(!;><=N˧BKlЛ^f5:K5#\W!דe0Ĝ#AY{53(6yjsH Nч$`q6~CrPL#91Z¼uV`<&-ιs[- d9aBWs 3 7mQ뉅VeЄuվj=j 3O)9ڢ"G0x1=Ub(SPիs͚'ҟNr!RBe0s=a+uW]feSZWO"z6%Ruodոsiq"-;Z{h%y;6X~H [djP%є+D.}rԽmuk1Ӯzyh{\T9"g/Ԣ ݋YGWW(xtotڠ 9klfmɱ7޼8D]c NW4wx {d$wcB[/BS̃\OA!J[s6|3*m-yA_/Ӈc2ܡ}%8#4aUQ3 Vm"z×AGrRG/No+m\Urwbu޼ܚe QZk˶Ϙd*7R>vުPRU?_iZ:YpXz ,t|abW>nnm 5=3* {pWҴteYwK;]~sǗWRw\l kyp{ Ͽ7ܢQG'M[jxzgޫfR0wŝ EmV)jwېk_We\;w{R[\Fdk_X~Z#]~e+\s۰wnONݎ C{!{~X3CtwMXSQvF:/0?zز\yǃ/*sYM&z 3smSw2KKe[WSz1*_ yV Ts=iUzJ}bzC>ElGqoܺ}/Yݴ}._Ó[²MMWtxkn҃r#::*?xN`zb5#w뭜TYqzOmݞ&a[?-[+7YXq~vM%ffѯmўx/TnmvL*?8rKHz {?:*Y,6~UkoWl0}7*RU%7jXZ\\8 ~Q?_(`n.2{s|gO=ngy㦍e5#>ڦq_ a*,ǭ.?lp<=@ܺoT/zƆ\I)+}+h2u쟷HSUOjWez094C\s)k\OC6#fj[Tjvƻf:žRm 0Z#Iskw͖L#9i4FB4#23 2 \kt"s='2s{Nrҏ01fN*]+SN+3ho^wr*kE;דHEfFfݱB:݄yeva2۴ݡ/Bgv't/*??82\Fn #0 4#~9aR߇|f|Vf^r6 /LVo-7Л1o z|qz`#ٺ8r=\w?Yo1r8q棬 Vk9]8[XݲUNaQI_R]}x[ܹgfz=:\ u3כ>=JxDnܺ]vr[#Ny^=+hΙjqz+v6Dž\(fLn/\ ŝ-/pC Ų&-YXzckeo%/ -'q.+bwG-ğ?رvXڰaalwgչVfj (Վ>G@j#+8ƽOE.2;~|垏 t|a6^Kiyī߯W|{ÓȦO3 ;k_ կEv+\Q汧du{bܵۆؘܸCEKyZOw $Hm~s/,T<_ẑʖn.\~yMS}ҼOlvʼ2+kjvwq~x#_ogƈqz-˯;if~MepSy\̕yzu/d/k17(R\"%k@#.r=$^w q\C]zHr"@C1&wn@"Th_#t (NhY@CɝAxD+VZߏ8r=BJ Rhk=fa \/'>D?غ@\z]H*tK57cM (#ՈWzJ Giq@JT\18H %A*P`PZ$ (@Lz0(-HI| k &r= $>H5 JR\@)Rr D @b"׃Aiq@JT\18H %A*P`PZ$ (@Lz0(-HI| k &r= $>H5 JR\@)Rr Dۚ_U\:i$^|<WNuWWWk\u9ߦd5vRWW1쾹{[ɫ.P*Z|@B(Oh|Р.kx鈲?)@LH;3o/VW+nK_|vqPM}ҙ7:zhJi 5V]z`W(2Z+;ֱ|x[etTWA:QXY{:djޜbWaffڲc⑑sX{Ⅾ(Ck3\/3glq4hYzj]E\uvҍ\\H*J.k9R\W|ydWA_zWA[>JL}crouAXc-땞W.$- djo ӖP3E]ŗ̢ڳ59~$WHAl%דwuVRӸkih/-H˕XpMU}k{+|Qmv܍Fm59:YQ}Sr%Pkњ -U\ի#kwY3 ~g%T'n2?iKdڊU}aowڕX QwwrS#;\O'L JN T^Ans8v 2̮pj|4[S^2 EP..>ckI8흒S-j.ժIj'D5%N3Ju;zkvZϯ/.rg%T'n2YW64+]{\Os˫!\_er=H޹d>[yDy)&rݢ ;d!6:-1&T%W\}8EDTz@RQyzja]rcR%mfKvbQMY?)^"c/r=T1nȧzc1Ir ^Z=?}+69%gm.1TjWSM,z^PIEI|-[i^h'\1%6X~u/6w;cY5hoµ:眳UlyKߘ|w7M;͡dHHWe@~P\O&zJq| v)Ӷ-WͷXz7z}t@q^ۯ毛yC6Zmj Y8WN7WwJ ߬0u嚲6ㅮPsU 6'8P90Yc9֤?g( =( <#K־)͋%|ކ/Ъz7<}}/Y&9ݰoK{{ai;Xn5 wWu֫0}譠]3d^`Xi2[b }`qV$Af.;_Vߨ~~znX'^ѿ7Oکկݖ-F=m.o?XΏlE.Zp7_*4k}m͞szpqݾ0v.Z㿋?s.+oV8Jl(ڊ7|QGر}Vf?ifϵ|7JPOP~I?m OFS8|qg<ǯ kNMw_DF9rߏW3mZٖH&n;)e]ߟ9hUOj/EtiJ{_j:_xۯg0su&7by\/}vւc3Y|r{rW?oF msS1V_j[E"|߿Ҫ}f3%q#n|~VOFh硞\1%,{|WzMk}-Vϵ ;?T.vSMVֶ# kQ=Zk=׳q=FFuW.|\渞]-g¯_X| }m6VUK8U\O c뜝hmn4Z^rً$Mt~ƚPj[Ygjv*uABܴo2#&S6m 8zT )z6s;;C +5G̻SZΌG#>o8 YM7|JnpP-iK8+4C!C˻8i9ZʣC fO.OIfo*34)..u╾{X[l6.Z0jkQΎێ5hݞkת}g8B\{w/6MW`ZNߜGk`eos̹V.q|oɑ8ŗS|0chu\O|x[^cia-s Xndlk^#6 G%-Jwr}Yثol}S[Fc Um-v's;*\}3-ߔZu/!ڗ%G tk?Ԣ?^ ͗bW]k2ۏ/mԻ]w񂞢|cnVoDf?`](}g0ڵ;&R;d%POP3Mpu bK窬`KxK??Z{=-=ܜ6y49X.jYo8o4$0۩'?~s74D=ɓiޣ8\}f#ǽzs35FTVo42tܹĕ%>Gɞn=)-}lF`"dfvκSz0 eRP泚y_*RXwJ#/UzYZ81ͳI~Zrk=VvKvj?"x{ǝ/z1?2}U3 @RUxQD/տpǥ#2Z.q9L*޽qximR1О_Me(5y2xWݸFv xs=GI|08w5kqq k"dM&%5'FF/뤱 $>q ~䄭A>{Å2g'ږmIp-RiZ83r|VVTrm~a5g,e 'ǔ/8F,ɚgA+їVm}E8(ySB%K4B=yViC"3eZLAY;o?sVڧ)3f7hxZw2ͪ ô;^Ϡjr\{d4}֓ p\W J ڧFZ)+V}sr#>rk:V$*WU\.7?;L]A5'e}3>[gz|SO˝v=nUMezO/@{fA9ݛ- 5S"fҷ+vsL68y+_]|}V ٛ/bI\+%]I?sa<¬o>LB(-A\ ߿6)%G}*nn00Q۴dU.B/MuEkD[Ĉv3oqcoܵo,)dioGҟW kr=N)B&`DټǓj.Tަ.EUޥG89/Ty=Xppr'#V+Iq2SNX}Ƅ QД{f&eOz'׋ź&ηvz_~תbwTy[u\8?˶3ci?Ig{#ZnsgW>~~wVc_y_oh_;QN3ikrgbyyx}YQWѓM (Obz#T:Rw{7*k_"5q\n`N1aQ*!O(%K7L* HϠ֜.|^_)qwyz:nǫp>gb[KRO'yhΆr_ܦgL;8ћf^\ϻ3ikr|Y]3xStRz$>q♏Q쌬=p{?~rT['udd=dB=׳֕; wԉrzs9knkxmcRڤW.6KN}uYCrp}Ta_!jgxq۱tGiq7GrFٖG5D|}S$ J_FitIYP/5sjyޘefE#ʿn_[݃(+yR|$У?l2QJ_俓:yDj81FL"*;9,9pWdlɌ:è{Fp c&ηvnY_^Ͼ3!G8tE8^#.unO~=k==݇L;z52cQ\dzӜloH[SJ0_z4*G9m?~z)q^?hIWMOYr|y ܐ^ZxfľG4C"snȧ=oEtȑ#߹⼃{Cn>?KLM6YW5c7W chBr{7\Ԗ.o~ox7sr|χd9vr=9WCJ[;x\yߙv.HW]uO8OvON'G*Gl9`,:`z\Xއz3Gb4:A3~Yj}I9<]ze_F-Jȹ?k OFq<f|~ֈ.7i.kvkO'{cwAk }c^}ū~QgھޑP70\σwR&}ɋ>/:*3Bly4fa5swyud#uۺÛ's\J6]:I[]21\/e3hi/=~z)]*gfm\A+ikwΖsMZN_}wC+SG)-G[Yu5cV8]cǥ}Tl3ظ'dž7eq4cZ\!_o/+*KX-Um$CRyze>ӂ?|}lk{׿)+ /ϮnuֻNǘt2not/gW2zSIϕ/pE u|xr9w f?6 o_=ϚYcO_B%R;skʥ3F*',|6寿'|֨pE7˭kͱX+~ZwrK\O/Ļ|h9I '_|w܁m9`!+֡]f=MJ@P@Ei12ݾ(Wr]{^;"#CP^߂DR_ )nnC5Ezo/Hi!Y_I>kl{ՇkTCaS;sYYzٸk=\LWH;!W6.8o/5nSac^5(/qg@/h\٬}E}ԿBu%wٗdL.h]Q\+?`2+|Ic8ղ8򁙨˟i//Qq÷__jiv޿htKi^59okO`v9: [Qsleo8nwTs]]a\}汉COmݤ8!P]n>alѢa߆<;l݁26Ylƣ33%یPkfk`^jW{<Fo`P_p=|ƤW+kOw!r9rwwgنUg^UOWkw}Ӛָrڏnz'<5\¼23E%:ȷʞc?sxufQDhko!>PQ ~>/ߟAax W~PӤ9K+[;x\ߙo}HW]$@͖ώڽ{%_\Kؿ;B\OX{"~˶0;0z_o>s=AqB-{Ė?S~-0]zee, .诇$$>qx:{ɗBWjc>t-]}7#ʷ}mWhT{+tABof+skjՍG! fiө#c@{d1WVdnj %A*P`PZU_m#Ӂ%ѹ|7vgC (Rr D$6cFNYTivA (@Lz0(-}JоRAIh'jiX@P\X[Ro̳^ \`c@(Rr D@`Փ#cZ׫HzLW`P\@)Rr D @b"׃Aiq@JT\18H %A*P`PZ$ (@Lz0(-HI| k &9J D _>D+@L~s (IѾJ;[}0Wzw$AHD*-Pr lŕk &@z$!쥎nt=hom*ZVikpaD{@hk#ד3~¬LtE;-I;i4Ѧe%\@‘CD[)~@ " )l)\0@x r=V>cVoݱH֎{4';7Z̅#'>5aDbx8rKWu~@ Rr;yRHR7^3_W) %Uog$OR7[uG߾øP(T-JFN|JHR7{6o7 E R̅OFx (o) E%Jq>d$J[)~@ ;Z BI[P~2%Ń?| Q(JEId$J[)~@ "ףP(jAHRDGP(q%Ղ()l)\BP.J'#QR8yW %Wn-'׋;vm/ y'W_/_R GGP(q%Ղ(}l7woAbz9ծ i ZBb^ښ6.ԖDO);yOä tδЅӺf֗5/T޲v|G!׻µҝߟ_1tN2Eiყ\zC>:.OOFAwڷ2\A5כra՟NI%r?>^q2wĕ-XuX+|Z^c%#OVG`ze;b:ՅjoAr=rG<1btԣ|Бk<=}hQO>3-wS|OZ:j/^S~ ՚mUݩs?iT5y3'>igDqϓY"σ“ʨQ~QmY3ɘ>m񚢪^.}tro~޴7jm Wʚ.VyaK'gaezyt)>-Jό ʥ6Y{]t k-r ؊;Y :[g7rnͬ)\RZ9О++9$ݫuߨuCkYc%#fa +/oUN°[ gVlԞhι;xHk\` It<7eLQTЈ^3KVM*fs#ΛF3' ;jŵ?f,8qayo\0{S\ϟf쀹y#+X yhq8ΓodRq㐹U&粊^>.V)ѻA#^<| jMz?^{Ӳ\oSUGǬ%d$J[7xgmIXލ[ {QJ0Εf(ZH.$Fd], Rl*絿^Pvpχa]jz߼W8Chkc,CmǼc 3*rv'_Ҷ6qm}S2׋fY<-^XZx_8}/vfϚƟk|I=S?ڱsXdKU.}#.pc۹lNj,O+{s#+fb ~7z|d'.M[6iqϫ!o,/(n)'/-wcbe M}YHG\oԶeں6[k;| jō\oA\ϐu@OBY}DK+szö6Mn:K\pAlY?G|d2>'^uڦ%ɁRNr/׌㯆*Bvbc7??*Ҳ\GW?+1&k}zz`be';K"diOhg#cSzLv)~+J7rVr=Ru (3R9gG<\}卶jg6.4GSs鹛D (#5iSVoCyrʁROr=C-X2H9ڧGg7%v'{=Cn/izE,뵾*Gϫ_5 V,WU'GNm;6wЭ9%<׻zO\fwJ?%Պ\ϝٗDO)ocUů|O*_V aƋrk_Wa'#Q ؊7כaȴ ^Y&*=b-,( KzG+*.s[+\xاs"NnSZ.vugN\>fTMi/=\lV{Zy֌ cVq 7\OZAͷBYJPvdDd2;(8bt(xH˧1B.{y\6-s>ٛ)6IޒwҞxu톿5Nv)~,Jz;ҥ>7_ ?sP|꣯/}җ,fw?WEq]\D`Kz]]mvU337Օ)mnlܵ67nF^p]m䎊¡MM7ep%5Z';WF_]}1kZ{G6W7i2XChoSG\zz7=3wYkO?WΛK3׳Nȅʭ-lTx`K~^r–Mtzzcx.╣]:M;u[MznΘfLڭ}ta<^W({Q{p)#=Yޠss=' NGqͤ>ҟEI\O~wME-r5ʧo1\o_uNkv(}lG8sIV֞602Vն*G)vWWTthIˉ>,5f\Bj=*ߟ_1fө>fTEVv0sLIl-+sc~I} E-f07CqSش9<"%^)jQѓL˜+RlyG~fA2כ8ެi?fyr\`~p\O+{y{nKj5xz6Ǔ _qNs!haY<\C\o*QԓCG61sxBϢZq|{ܬ\o_?mhX|)s^xjZ7)?VrKRP"sid'""/T}bV*1Õ^ +[\eԋJ(i^q]:ɵ6qGMuvS\9i5QwG=J2%Պ~N_|t\/jҦs 2OluMHR\Ox.⌊4T@{ի`\|Q6givczyk~yR;͛}r9|]dַmKv),J>|Gz7HE>?'p%'#QR59oF}OHR\MLR8J.`1oF.]=Lԙ5R>ԗ^.N\l{Q,J{ڼ 7>){Hs=`2]#v5L^B鿢Zq\{ӫUXK" pR\O,;0C,|PyOL }zW~S9Dži'˵~v`b݌# tj]1cwwkd_z;| ߊjŭs#f7oz pR\KG(FO#t9Cmd+zz忳HQ_^кWw,2QO?~0v8qČMMVzf8=K [/oO~ܺc;HwDܗ>™yuV{'XZ}㓽.>OEIKm?[Sq召v?| %29Z=ͨ㟔K2=OQ"GE*pJyg,ƌvi域{YOĄF9i`ԔF? z]&m=Si8ݛ2v8Z(z:NNǡ>ng3tU߹^x6>׫XZ1m ҽçP(Vz+{]K7Fǽm_%W\Vo>|yk]r'HA 厪/,?;>5o+|z⨧} ??٫1g &s=Oc<+<Ҧ]*;{^>Ovy'޺ya>LY=kX إM{O}RM)bCe>cj <WcEF/>EI[^vֆˎ?^9';Kk?1"( e@%Ղ()l)\BP.J'#QR( %ZP~2%Ń?| Q(JEId$J[)~@ "ףP(jAHRDGP(q%Ղ()l)\BP.J'#QRGXejwA垏+ﴪe(Zb5%}^,&׻P]o XarR# z-X)Oɯ/]3}V~x#}TKE}mvmVr/j_ڽ\@BPQmGf<^SWlU[3r"DlֻWKxWIjw#cTvxH{lkL8ZHޮqF-[˭溵k7'7X:%)i"hXE<կYnuu {Gu(UTޥwQ)CQ -m0FG!e-mؖd\W@ ,r%BDȼm Qb]NUvIJyNwϴFFzzԮ3}4}"j qYgL]'y)8;7C/ݥLO[mcݵsM~0ZfwWnwשlַ~vg<lG^ cEY|[w׺Cn'2f w(lw6rgl}jZsp%7U5ZATWsz,6o5϶ZⰩDQݱ>eM=IX{T7~u=&ou 'V%~}by%$vNgy0r\T}#cϧmno.{}b>E VwNJMO5r$lpbHΔmaD~|DUoU9/p{f}[sDmʷ:zDkҟlNvt=Ξםۨ)I8oEYnSqZ7:^|d 2N9=1) vY% ^s?m3s3lܮ&yp΋ uguGs>nz8PwR= LyR%w]ҟh<|jeEV=39x:;fݱutAGeMr[s-jKܝ2f~ ~USfoڨQ?YoǚଟlE$4 (7>pĉ3;Ig`:ԧ™'dQs w'NvFD^֨^ur+UۘDrw9[B7K=7׻D $8tWdKeɖB+ ҢM+KjRz70Eo'R]r4dUg9; 8K/)Fvqo HF:Nʃ&ʔz$۝(jLJgƺG}#D䔅'^TQkmz%7 0=ptM W۽:[PףHo @X|SSN|t5^Eu7K0Ѧ;vRܥIF.O/׹xfSjNN>IlzdQ^\զsƻΩG"s3'gf|mE*vbM7q&Zq@&*ں[FH26r8SQoYMmmr#N꫖Q\ϜwmMEMIP |4;5vuS HUW3âZЄ9Mvg6Ml^ TT ;JU&Cy &݋ g85f?Έ46)%3ӵ#[Iw6!<6p+>^?ួ\45<܇XKm+w>%S"d9s_EMkC/đI]6K'z)qT~oM#uzcM/?Aw}Dtg̨zDo N}@&iWS޾ÉFkj]֏ɔD "& {\ @u}YCGלnգD5p~?PtN:f ӭq =^wJ6ToO[3p_7q͸m& 5iBA7^ؕ=þ=1sG3#ݗj;fӻl^;~V~'4'K >PDg}]WeWlŦ0RZ!-.mK/Lb.a]|;3X~ތ\o-ȗ{K/e%T&RdPz M|I'OjF;dǜ:R\/8B*ooEHLEw1em-rT\/<6D.]VΌ[£5AF;oL0d00ʬ+101~Ȏ?J$BWo'&zgGS*αխM Q>A{o)5j~^'2ÍYwP AT"9OIw*zXɪD^nNͿ_hdgifG-ݖ|g`Sƹo &w33\;,U;IKv)d):Y/Ń\o׋=\^cz)-~X@{ƙpc|P>L?(UzD^hV?{YoI;QB1=+ی=cnoRspتaOlQr}nYyO4tPV1ITD{e(Fԫu[㌸ ^!۫z ⢇p(^nM0qC,-eqL αcOtҥz#N{C9RDRqvD~):یuB[}o! /ռ6svL3E}ELQ_ň<`$W%E{#/m̸zФuyN,.G T\{&rgom 5e]2~zŃOʥF^ Bxsƕ+[Yn~:|ƕKOMu`~8p[3+ӓu5׸7.Xܝʷ%sZ(}zꩇFH{|P6˱|~Wȝ;/!hTUzJQ]]) ڻf΀'i,a3n5!j- w'J1K^j=<|Zϓmt=dU?Y?>39utJO(o?_Psњ~/0N$~>(}[^_S+ؚzՐUo}v߫D] /i6jlQQQ5Eo% 3MAۑ941GMgmN9_}1ǛVy|Ʀjƺ}k-qU Ry!:/vjǡzc=~or=$#ѵo*t~v8uyz[NMz3"}K*$֏K]k7ەEho{4f-\55=F>ty_nF=C`ùLHLh ByԦZ6'5dNHrߎ_d>99치fD31 IBTHjZFrg}Ÿ(j7Ǵp94)u$u3"WPXFr˾j'_]q o0?8멓}h/{W}gfXBo}Wrɷo98rdm㉱ӭGm)WS~_û^xF-➯Ţ܉rߺ"z_ ׻i[M!sZ)[sφMϙŁ2\omͳַXYdr]Ŀj|,|忮wx;:z"NLwT۶Vb>@5ԃ8ŕ<:>h%pf fۼ&V;7*&ܝ($ތx 1.6Oۭ^>J{Ό[*^Qs'Oݍ%^B"0ͣ \8uW؝kl%(a/86=tK^}љJEEYpGn`flNM}rVLY<_K^#r8wt3}́z.j،pŝG&xA[j&{m)XQ=g]_B\ 'g')oG7c'WРkh{l{MWh‡6U ZF#6=I>j!|QykҘ O]t= G|Hd_džc;O["'}MΙ3߇pw >qNvDŧ N6_٤Hz{NM wc|$QiLW7` зiyvoYV8]C׉:g߇(2jp(ՃݜNM owpŝGʥ%ȁi{u#Wp:H`G̔UՊԚcMG߳?Gix:V7ƺ'dH޲op!ЙWlͫ j ;'x\Op q#яm2Ƶp:Y6)W.gCHwi#Iڳ߬.qg|n0w4s+W.xF\Ϸ$. Ź/^cs`6VHݷBn"6mۻ?$K>Mz=h\e@1ru/mg-37=3?rU@r=Y>%qW.ukûΐopnqMfP~a^ٻzEW۷B^8q+6\f5V|ZNz9#׃|/K~P]Zoz'_ރ;3l(Oq.[7X^9۫[!.8ܻwr+?htG͘|y3\rz[7JE*YU}}Ok?R|=!2K}{YzwF݇yzy\J8;<2xqH NrWzw4}Zǿ1Qşg0EԃGMUo+̇,\t]X][}O6=&e6ފTpVtzݽkxhY5֩"<޵^"^:XΛZƀ-uO=FJK[dS߀G%oC 7`|A>mx*8Ų0aw*H* _p(<{3**r .'tr}Nw2Y9D,Fz'#?KV$7QOzgTK?}mv`KVkkoOxwz;%)5[\GK;:zόtOOwJokJ^vkiIy#ͺ47x?/4rH}ױܳ%ևp͝:ʷ˫kkl:^۳z̓ҋأ' ;tR Wܳ`DE7 4B;׻*k6&˜땮-g;h&1r= Bd_d,PcOc(VX*eD}:jr*lYqڢm:f3)+u}?V!z_Mtrnk+էj4nݴ_zZ]z=@r=[nn݅Aҽ(vaGU!*dr|7-'f͊ޝD;[ri>92`͚qкS73C|U׶=uz\BP(}u. ,:׋ Y6Us״r=I%Vq^P,ɍ"qObF.TT1gUU{BD}c\OU=&n"';N6XM^r\BP(}u. ,&Ʒ,yd2qn)UiH4[y{ݯY|5:3Y\lc[b7+$&pщk z޾f7jNJGK^40Ī[{@R&V(٫&jyaS-(HMY}wtT3d$E 4ow*3B\}_YX<s7\ ( }W뒱QR9«>eLiHMyኹ7ʞr=Q*GcpcG%׳JwԦ-S*ǏUmt-N?!j ]zz\8\/~(7&pKie!r؞X\ ( }W뒱QZ"{o,FE+ Uk:዗x"oYBY@FϨG/[5n1y ^NwZ5A#:ĺ#BV^}Iٽ%a6oڒ +W;o%P5z$f0\Ow`HJcz Bɾ諃uX`I:d|@5if] Xc=-'md(5*bq3 &Gŷn> jJ2$tZe@av~s=IGH5z:kg:Q-}id|@͎mEE/QJUOp @Q( %%cEd w6UsPi뻑~➡sX)J|rz?RTQ9UQJgP<͟ \/\|=ui;>*!e^NӞN޿F,Vޒzt{Y#5Qwr|hoUœ-'CĖ<|TQd{^ڗ 2zVw#Kkz Bɾ諃uX`^$7v=.Pr\BP(}u. lr=h4wr=#ףP(JE_Kӹ^ޒ-%[*`_| BP/`]2XY` /O$r= Bd_d\BP(}u.< ףP(JE_K ( }Wr= BYz E_K ( e$ެB=Qd\BPQI6E_K ( eyh/PO}u.< ףP(eW^v(`]2y@GP(˱C=Qd\BPi\B=Qd\BPo:X @Q( %%z Bɾ諃uBP/`]2y@GP(싾:X @Q( %%z Bɾ諃uBP/`]2y@GP(싾:X @Q( %%z Bɾ諃uBP/`]2y@GP(싾:X @Q( %%z Bɾ諃uBP/`]2y@GP(싾:X @Q( %%Is_\(znMOBP(˾4 uA\oGct( 싸(K@X @$4_W ٣P((r . .%Is=aGcS'|W_Q( eq q9/ eQ( BQE\ĥXc#766fzu BYfE\ą@\  fXpz@! PxCr=7G˗גVFFo;We-rPouzEgc;=!k_yǵϖ37ΏTW[$rW~蔨όV/e@_o: ό:ڻ^r=1x荞'cڦ뢫?Ԧ$3*֏vu_n/G ZW}w GF|PP߮]ne͞n^sc' heq ׋CXvnTwi%g8 i+hhMosGk.o$&\ 1\o!쎿I5Mѯks1F{zqQrheKD3 fz3/=) i%Fon_|^m>/+-\!,J:0ٻ=|+yP]}jz:8^Ŋ]M:F,\Oظa-z r=TQYߴo]٭nn[P2a53Smt>M?ɻ}/_:~˿PSQZRK#n_{QL|ĥ1ЩU)^q|63>(;[V67:ѳwo#J>0l8{br͏qj@Tc}ƌ ^XkU9c6W6y+g}f{m5XQQ}[8K~@Mk{ލ8Jw'+ urIu6w`NiQ$E!}fjW9>^}TT\z\t.^zm'ov@'O:=O:oY:ubT(lB&k)?ᚧVst}]G)?tJ$oWzOۺF|5-+YRƄ%zݣ}UZN~ J^m΁Q[, :ws79ʶ<:%WS_%YJzDž盪;۹lQEY9:͊ zEKϵ v;o[CNl2>Q/%2!)Dtl=)tau|yOs%w{tn}D5.q[/?3x禑IgQ6Nd?Q a!dQSl>qty8cW߬T;n?x `7ZhIwSSS}ם9>V>PO ,bf[' mb/J,'mA TRL5Jm4<ӝt7ҟu2yTƇtO' ѵm-ZJ5+P-zp&J*+{TS $.}i:s?j0z;āZ228SIȬsYC~[",vztؙ˲35 `&+(fKڻ?TF0}iDF^^ Gݖ܉9|l|UskӰIzzX')߼}J~o!MGQe`8Gz2 ^cc^1+6;vբ'"X*!s¢+oeWJ}xUҢ{d3[;Or_lcs?j:uG8Λ\oƲގn}%l+a<:%x{ot>P=objϟs[8zEOϲ*}X~ 4) t4I ?zhA+w:HiD Yn>7dHqtB.L tƘ'ȳBgKҒd&+cyil2O TEU ]MQ5;wF7Cn7{M sb2"~L'BuOwnt*3op~/r;a?iuq!Y.^.eͳ-n9_VX?q(XZ ay"CҢrp4>|mPx[m9S ts][6YlcG?]G}?h\oϾ3ꕟ[~=Է|[Sfѕ+W|'n~Nz?7m)sCkEF>;&}\zy<{Sp0/\/|Wr乞\ou_wiuR/,^ni9\{+|9rKK=;|Uy/%+Vokz%|v[J+iznnr|Eo~vozcS]'4<}&u{Y#qWg/K/|\_o98rKz'|kLZ^dߤY({/,\_ǍPgOHM-KJ~l^ٻja;hFDzlz^,m9juCr}޶)':~b# Ufbʤ(Seu-O4lz}>*>\,-KnyXϬ넇B}G]zy43wOo_Fw3|i%vNf+6Z|g| x(멄+WܵKo{ ,ӇOݪL=__]x͡w%Ȧ'HT cnzj ȋ/,[4oyNr=ϏeWTjLA&T=霻hz_M~V۟9ߞ 9oGʟO#ȋ?U/=9Or+pM=3g[[/ۍ5WmXTwh}śoXB5FSEy3|ܕ+8r:ֿ}?yǙX#0o7լ/}ƿxxźg{oNr{}^\7{_pC"Ez6Ֆû6eo}Q:n}롆w1[]|r];zy8[q7dWoF߬8KQNQJIY>;l*|TɹeVt7޵E[|f(|fތoo'Z[_TyxkvPOzZROѓx%V<,cgw-?z+{O3e^شYKC3Dz`e^kɩ3Ұw7Ն }Xcz͉8ӏՓ%@^&דʷI/oD۷j۷>gf+>荶go>].N_R~yr1oPCF*Ϟ!on  .yIj#֮~@\Q+{UZ}z溽8U'>jocd"+B_\uJzy1\o9rݿ_-=EGZZk6 " r=>ܩW-\Gۥ@z{o+\~oɖʒ-EYb JLy@Vm^YR#?r=F生IܣYӞ^O^~d?{,\dUy~{0Ӹw[no}7.U;4[۵ #m_:@SpWȃz߄$,+ya* )v0_~vV,~[|5v6U}/%)~3t2*SoysiDGȪ ek'[{i~9:jZE͗/#:n;MYE_K akkA޾ir,r?Ļ:=k_n_Yu&vhw]{o.[spaP6Y XzT~_89O-L@SpWȃ|ד˩-\\/\/] ➟$q^dHdI$i?2{%U#~IrhO@SpWȃ<=_% z*?O<%?p<3n=m̍wHU?}}yljK;Í4Q6ލ%=#*SaJϫ)1.(Mܓd0\OWfy雯~@|cz~-u"kzdPˁ,᢯%7Cym C=!7~ZXMyzWC]ٳ~:ȗZF;M?8G:cWu77=+#q/LG~__i8:λ~NG+MrV5ZO|a˩MkINMV-iy=mGzrck{_Q_V-~х <Ơԋb~}no-Is9Д%\d wU3d^jVP^َ@???|?.뽜 wLS_MUT] (0NS_ӱT|노#w>wf{d]4M~?iٴo~y1qvz^zZ}?}ݫnL?͟kN^y4?lfu箅;w.:X @,x4zMC*r} 2{r-WorٷL I~'D _$,^y`_\:?te{ntzj_gҥ{x4Qr녩UW O*|d맨B!^.כÁ,᢯% |^\/>RMwvٳ=uxVzX Ru7HѼ'dn~_IUw g^wg'2Oq |~serlk~b|Ջ??FQ> -w\4e }u.Vй4q¶2(od.\gA9C?L ʧ4{?sn/YY3=M?^㷟}dYt4qϒm?\#R`6[,;\JMZc:X @-*3k˒z97ϝ:;683!T޳}WNڹ\oe Dɒn&xs͍ʋ^ 9[}_Aƚ^KO~BVj/ ]]K^#~>VvOωC+B"zz&F4d<ДZd,,AO8.9ZFj)$5[9K%}*Kyk.vz`r=E}fmuьq |%Fow/\>_?ԏnmcvs\BP(˶諃uXP q^:z>6!pPܢ]#׋M-FdH=հ2j|XեzG|1nZG?g!ףP(E\lDIR:X0#K\obsB.QmV:zM%݂S3UXz7́A :=͕j ͡a|ޗj]/um>󫚛M1ynQy\2Dq7xSCWwO4=տffD,|ؒkM]=}n8*33zLEN~RZ~UWљQQEuVL .g"l~lLWml#O)j#uBoi[*ωoFˆ >Ǩ4-VMZfЖknY֩ܜ<lKPB4<*;{{WxVy5"j qCL]'y)8;7C/ݥLO[mcݵsMY4ZfwWnwשlַ~vg<lG^ cEY|C$uVNCe:#"/mջQj'˪Tjravq|SGu?Mp"ףP(ZdxF(ڋ[E_KRE=Ս_zwdϩ9ͱno᤹J.d߯O,DoOyg #G[I|E1ҩ?|JvH1S77-V3]`77{ޣXI^5&Sdw Y ݙr3۽-"-*nܬTr|N6Z@j㓟4M2͉zA^rzzst$lC`!.gMk蔛z8{ݦw遏!Cdz ( ܲqi:/'="VY|=sNG!i6OA3ZκKgp2uVZXSӪ'?3p&^OP'rGԬ;>(stOy >us6ݼE Swlگ|>/j*S]#=X Q&u~8q|',L944[8䞔l3tpNa?ΈKիOY՘Oϋܘ;w׆#v-佁5׷mIB, 'Y0IPd,4E72ݳ'[T3tЙgtI%>]7ro Ì4uzƕMJ)H;QόuFȉeOtF{j_ ZKn@zvo'0 (juB?ݰ3Ԕo~!$%zek*-o6f]}?[8w!WkNQuE}pOyٌ6'?aLuޭ]oCD: Gsno[WhN(fNCQcw"2 Du|u8\>w_tMv=ze.Zњr;Ŝ/b/`|Cf#tɦ^C']im0HjKG߷$NvFIg~b]]~^"1LLzA٭ex=7r= BYyڜnM6E_KƢQz M|'OjF;dǜ'=~)ay!7Θ\w"MLE{JϏ k3ZRS~8 wrEiŗfŵޚ 2jy$e!VfX!=ѭ ]&Џ?e%BWo'&zg(αmQ>A{o)5j~^'2ÍYwP AT"9OIw*ɪEnNͿ_hdgifG-ݖ|g`Sƹo &w33\;kE!X?$tgz/(f6{5WҶFGP(PڇgT67-q^(`]2Ң7iDR3ǐObO)CBJˊ~K݉`IRfߤvS>}sZ?;V ޓ;>hIDAT`,gijp}nɢyO4t뗊h ňz~uA5B,ӷWEP 4`(4XN[(f?c445KBG ?_4+,CЋ`BzB=Qd,B+}URTnWJ=i}n=[3 $%pƭ&Dm%D]4#D6#ryiK'^yһ)GqCQzGykv)<x{ѝ%YGo)rTz~MANckUHz;3^%۵f_φy4j6ްKf64'~ɷ#:[>1GyWZUtןC^GbG0~d:#u3MOH^9 |bvI N +6n׬Vè^q }f=X(+~x\/h/PO}u.՗d52GejoYq mz, .f;>\(O%=룛G_'C &rQC^GP';#u _Z\TJJNUlܮYUV ,8sH?雜WXTġ @4 (JNK %\B=Qd,FAB=b]"b4Nݯ=lq~wڮi݉᝷_pF%z{osP$ËN]Hћ"4ј9s?#<Qsf΄ w7s&y&`G!WwxkփdGTY@a(*8ho'7ͽ諃uXP&  &\$/#o+yTޚ,4&aS'dW Lp'tNuO~lCùqN%>}=} w'dGtXζa.>mp&EһsjZ>n|Wp}c Mc⯐0o7o:ay(~yvZ ѱU'ΛO?-s=u|팎kP}Q5L5U5;t,x; _'}ەT u_T'.tR=N@v玶 G!Zy;}U';KK>F#1S*WU+Rk5}}ϲu"حbj`P9{tBwr=3UqgJnѕDۓI`gvs#'W/(kSmK 0WzRWKGKޖhPڣмZO83AQߨJ%V];;bKf:7Fĭ)MpUM>~.e֪ 've1썪lG.t5іM ? G!ZyshtfT{e f̗ -<2]*]< ku>ix:V7ƺ'dH޲op!ЙWlͫ j ;'x\Op q#яm2Ƶp:Y6)W.gCHwi3zI U.(3@a(\d`l"DLe\KtDt,,r=:X ;X$u/{Y8f,4r=:X 3 X/3zE\sEG,碯%9>T7`zr} r=+__ Af0Wzr.`]23QrrIg.ћ#Mdr\r=:X L%W}gF'Z'`BB"ףPsWȃ~sel /]'|Mh91v|>;6R9;N.k{_|oGOO]g'x|-z 7%1(\dsN׽~Hku`(9o7_N-T\SPkb=7]w_˫'Qt o._ zz'[\BYE_K e;z.CN:;D`n|/K3 _><9jlG_|D|oևͼ [(\d ލ6}wF~rK/k^}L]}r`Hk?o'ro~7}VJ`\BYE_K 1^OFx/4rI SG<nј}pz?QS? Rcr?~˞WS?܇\BYE_K |=02zh}9|jd+Ojo4 +Tw|B` .$c:ۯ?pe^}2zWz^\qޟth\BYE_K 7o{zBy3_h1+m=S:]7Ϟѻ~T;7~BX>…w^|C>uv9ѹ_i8:λUJGڹ5f%G!cŇ/^Y|N͞?]zr.`]2y\2/=4e=k/N\OQ=kG[/Ppկ+o[-'%?}ݫw]g'-2׫~쯽e`. BdG!c'75̶Q(˹諃u M)I'#m7U NYD"UwZ`7.2׳:iPĸ\q4(dnzj_gQ(˹諃u=_/A4~OFNBE'hX1gG_X}(dԍg'nzj(JdWȃ|z2F{4:x* 9ZÏi͘>vs=G!YmBɪ諃uAr&[e(iFe "1ֈ{/j&n'mErߒ&SQ(Ȣ%y7mxF^7*{~ޗrțdPqb}2zj7B諃uX`Yl[<挔@*y3!׻k^7ïΛVpկu7djճ9%R~;}Vk1zIQȘl.bܢ+>^~[l/wQ(˹諃uX`:׫[dKE}Y|9FK̮Hkt]oU;gk_i8:λ}צ6DgV{ :W9 ͇;*gLB\O|#,񹞜(\d,0f/?q\ 9/&/T΄_g?/w*{63ī_\/y]}2z^-7bs+=F}.r= e9}u. ,wZZd/ϵ۟Jx^r=+\/nDz ڗz.]zr.`]2X(+'|^╚"m5b-_izؾݕw_v׮c--?qļYƺOZZ77ܲ:{6U4-hム~sK{y_M?Q"ףPsW뒱Bޚcr=2,,&gis[%vgw=}WL$WtIXaOE0Qxr%(X?P|N\{ fbVغݱY'.{rW(^qφuX'\/'sEUD5lUW.r\/T7/՗w⣾{駬5w?s,o?;[t*zr.`]2X(SDZ'1TP_m`Uxγ79J|j6uVܻh!ٌGʟkiix{JMw~_9ǏUo{v=yǟWS_-=[{j@'pHMuު w.ׯ١]lYbLvdZB?,yCrRoQڬݩ{NCoh%#֬)~H.ZŔ2r=#'́|Iv]g'GzF(\d,\/2dTq]3"PU\76=iE:KrcG}u\Ӈx|q=UrYcFd+P#|ߘ)S1tkv"'; OwޥuK3zgWUm/Zzc8^ɺO'T@a(\d,pYTұg5O+Ʌ̳cÍ76&{U[l%resn:iVzߞpwV-{kr>-cﲖRTݪ#To%۶Smޘzk=;Fd}"52^ 7X#B7rlzzr.`]2XLӍoYdR@i>Ȼ_?&jtg gژ@i>V%f8J!}CBbr=8@wOj{6xD?_ωxtiݏOCyǹQDKb2XY5Љt)WqE ^&ˬ;:ZjEբ;u@_7r\sEG,碯%c.5PKrW]}PsDrp|ИJ|tGVoSS7xܗ4C c;;V߇{a&kywC-ib\[fy7ג%Px.g0]uC}f w\s/pgvZEH4 (2+`]2X8zh\bņgYw5%*|"[*g eUz?4on|;^#z)x9}ޭkǏX3 gHYzWGP'e>f}ۼjK"B\zɾCՈI r=k'oz!q (\d,ˤ2>Se ̚ 4Y.XɅ?fiʞs6q2\W1n\τbcl[75fQl2 0;#=5( Zeީrm!r=}t6i@tᚢPе%,[uvdrr=AGP(e[d,\F6L}|Q\gF Q-}XgGXr\BP(}u. ,"O%UnȶBv* {{cO3tb+R]7Vo'Y\"?X*jsB錷*S!녋/gC7btG"lrkשzڳթ|Ū\[\/\ٙnϲػ>:}ĢY9^2X6n@yTDcz Bɾ諃uX`H}mEV$X4pj|$pkڿӖ&栗&'mj$s'=t555/EVmmkwՉx=A7Y~ѽKvUr%V s\zr [ƓZ}jSEzMh_2"׋|r=\#ףP(JE_Kr$άsvvGcz Bɾ諃uX`G˥76WS]w7tBP/`]2l,Ra Wcu\ gzxQ?BP}qi뒱tgJ'ȋ!r&i71yo:s BYE\ĥA\ K z{ۯ~+Q( Eq9qiȃ0O>ꫯ?t( ̊ L 2\(F B". `],1\Ozё3: B,".B .O,8r=\(+a}-}i:כj./oRMr8\^r=b{ßZzi'?fY^m%o8zzZiߠWr8zEIF7{o5tX-\OgޫXSBin#SE'l~Q勰m>/4\!,NeMVܕ&ۼ* %#+V:?3A#.۷:㧺 <7E/4b޺կN\/ ZUډg3Caee}N=||vZ9«T˖c'&+hD5wn̘,VU>VmC{esBzgF'ƓQ=|r/zۯF^_Tҁs盶xWt?Z"=1/uDM2F{ zEdb/"\7.zߩɞΫ~cޤz I9vviv ?El|׹ &eN` _955T8|R׏:nodyrXD:3$kZ|ù^NʘfZB{F:3$,wvkXh5wj|dƺv_?rqqclj_vcDW8 d1[R;⋃w]5>xI['lìdrSձws9݈;d4޼z`2@_M /P{)[(KTmsHXhvGEU>PJw0[Z4l.c"r=Z yAh~;X^'P{\益ԌfƁ̓~: m0HݺxMwT'^TZv^nA {=:}"ҷvZrv^lŬqmi-\9"ùzݩdr=ѫN%V7j4+C':n}Tvr=E9H[ջwׯ?e|'u}ۯModdR29B`Tme&yؠPB1R>rՊ{$cM/K\V ޹i$yҙn3DK6{bHGmz;Gk=vN%W`/z?取t7՞:55wyОSsou.7O'136n|Q %*Pa)Tb6r[G} }Oκi<*GZ{Oxr=3I #:L!\/MM!KʸœWeu*oOB]}:fc(ϟ{_['3+EdgB@NDRfިG$[#GݩAj{=^-$Yh)oN(*R/!K[t cEz50aZ-2BR- s>j&s`?4igi6ҜrdM~@Sۼbn7=骼)OHB[CP #'dd"l.\/StvRUU{^cE#}v1J%,QALEl6io 0磶Hrr}6lnT2כ-~~sou \a oB=n8:#1__}jh` :J5#Q3$,\OG]qq~wc~|Z`jWZQVM:UW|̧G*z3H\u~"?a>w֩dFeF5ĺqYz8q9DX3eg>jXMVQ~3}ޭ+Vuwͳ)`҈$4-1sR[Vo֦a$/ N&Ryd:B\O0pd1 9G47N bVlhWwEoOREUBEGWD+ʮݫE@g2v, nت>nSB~tp7֍eK'KVt^y0uJ3f}*e%?z,ņ;Vy?VpeUJ@hR M i29(DWt7&@\K}boȐ\,!215uCO;gML;Mϖŋ%LVǢ'd/ѱ2',:059jַ?vn 7<.o8#0[eE*UON39\TDg^^5lwNÖ.7S)\/3Cᙳ]6ϵ-r=gj{ufѹߍkΥJvćV;8Q4\OHx@W>pBr*WF9Br=\([77Z+/jz+\oSkzZ.= _Z[4P['oww.zeW5`>[um/49XnK_jo֊' uWkh}z-}cG:E?Z2ܧҽbGW!3]g6]X~'P'._x{`xgC)6jo{\90 `)]ЌGҡS4[1]&[z`>r؄Mޢ;xmDS +Ƨ\]JwYP6qus\\$ ҡS4[]B |zqwj[zc^o{{E%?)7z, `)45Ӊ >z7́A :=͕j ͡a|>j]/um>󫚛M1ynQy\2Dq7xSCWwO4=տffD,|ؒkM]=}n8*33zLEN~RZ~UWљQQEuVL .wBQ. Ύ?MD򦨍 1n<'vֿ13oo.6zwԶlZ5kqDNWA[vܮfU[[ssj-CS^? ѼlOW{W{U{o:c Gf:eeoZgd}57{ޣXI^5&Sdw Y ݙr3۽-"-*uYߩV\'mm'?Q%e:tzQ΁ґQ6?n|SnNv CdC=Nex ( ܲqi:/'=w-4nhݣ88PwR= LyR%w]ҟh<|jeEVzQG<3=!"'VO9{SGծ2걗܀z5)\mlB?_" VY'Dnc+>oLM:KwmWQE]Rk;LC.|K-ڙC.:T،uJyC)')ߑ-{`Vq>kT}x9~]D<;sy|p28|iGPZԯk)? tg:S ^m-#$gη} ì6w^OR'\lUKY٨}yg;Ͷz"}[$rRnw>;`_sO;j%FgƇE! Łsޛ쬟lXsؼ@.7wr p,L ?ό,qj<i.mRJgkGj,旧~'0@ ^swzÚnEw@",A>fhD/%. q4=R_wz)i7Rt7@wΌzdzDo N}@&IpWcnOFka1TW`QGz f|dYՄV[jս_/@u)}Y叮9ݪGՉjt 8=ee3v; Onu?b:uޭ]oCD: G)\7p_7[+H4Udst3 =MzݎbWv "2 Du|u8>(sFܻ/vͦww^^97<p@s$y_: UKt'%Jzu \vͶ^l #ի. |ߒ:&q9Ucqj;_$t>INE^9Y-Щ M=x;7#lvߣےo,}8בB-S;u3NfkGj,M#_cG'CT5㫫-:&PK[iQWOHy8nǓԝ^KV m3D%ӓ4=޸-߳I?&᫽G훣\/1jXc9 oLso^81oh!kSE-E&?[Ռ_f K`[vRANcõw{O]Mߚ=RKc ;q QoI;QBQ/#D6#ryiK'^yһ.qlհ VqCQV5NIu j.ZGwf(gƛQU5;!<{^[߹*1Cxc~=F:CfwBF6x"fD/v$*t\>1G /uWED#O:4;r=r`墺vowy$M'i,aS=<2ѷvEmp[gvB%]3DۋxkrB>* n2: w ErDgg6+'LQξH?Գ9#¿Z<9뙅-x=QH͕1I<:@",%&  F/ 5'Ot^7ĕ<* Kc6<~Bv5}t= G|Hd_dž;O["'}MΙ3߇pw >qNvDl'lR$=wE ǻ1wI>4& p͛GCuX0n5=_;gݦ3Cag}gtsCuSO?$\O_h;6L/oKn [s\>3̅5;t,x; _'}@{R|'tjjOs7e-< 8UP.-@L߫;9G;WU+Rk5}}r\/IvUSWg&s3NL 퐂h{2,}'B\۟7PߌlSQκH_9%NrF)Sߜݨۤ"s==0S@l W+os?@!,%O6xҍ XEϰrEaZyڞS&w#>贓]4Ϗ 1f,{Ky3EIv'rPNquN8I-ûWٛ'J7`ˎ0PUrd|c&Rw%wˣ%o 4[(_Quh~ 'P@yj7EgswN8ؒMIqkCwUsS`Kf‰]Aj{`it{FU/uT, rL_ZmD CmpŝG;FgLWZ`|)#ӥ5Ӱ,\WgmAY|c{B6-kf[y GyּC}' g<x6 "+kjul0R\Է:Ҧ==gvlηE]۟7ZI~tϳ~t,vz5\I{i3>n0w>ֳP\3,=zX$u/{Y8 ~ }.6%\bw6wr5qvx>eF>Q$XO6 )t\F_9r\#熧sP,+f)ըS] XG%\Go4u!r=` f^-%\ŪђΫ3#eqr=` suOeb PxCr=\(\[_f[w:nyf3ԑ%kf ٲ yIG9Bpkw9A\ZOLl8X!Gj9.)e~~H\ KKtl8izJrнI+YE$>r>,cŌc64'[UL({LܬEm_Ov6/mxBn.]' 6n^Jo9[>srh~גáN}/xxz `i G]E%{Qc,o=DgއqolL$o(J0 Ot&>ubs 6W=3\֭r[z2z}Zz Oe-UGliޤ 'e*m9!S1G\os{}k`Ewkkdn6,2z%&Ʒ,yd2qB JὕG}5Ws=e8J-1T 'mH ׻ 5ɍUu$V:ZҴǧ!VM%#^t#qgKjݡ1`ý]MCѰk<ݻ!4۷p`z+葃?wfV [fy7ג%Px.s `i G]KVLS3k]Pxi'lƪ% Tl$J|T쿹UPx뙧zU?b,!O N0"d_ߗ]rm[-x~ rUo &ZU#z{HbRz `iL!3\"ϬL5BTg5KsolTx{izָv#z&Lf+ߺ1+ʐ'gkep$!5lv@Ip>"5,NusTo \QM-fؚ%r=E\z4:a5;䋊\U*#ý*@tOu*PMn e%>-uF9fN^r=}-V[[[jQZEWs{0H 7,cBw.5c]o=ypwU'Jys7S'gת5;3zixlE \,/M9ZKC]bL'"ź; r=E\DD] w6UpBaFNsol{YbT*$KS~+CDDWTEmN(v^S\"QdضVpvW\tcx5ݻdwa]%Ǜ[bU0ze':x=j<9n)ߧ6Uުׄ%=r=E\ޚ:g DϷ 8r=#,-G˥76WS]w7t`iѹ^ޒ-%[*`_| `iѹ) /O$r=\(׻f}}Pr{wq띷jgM[˴S]+ ~%!ТZ[řGn} \U0WM s;ϾYX-XiǬ^"\Mg\?>;LX~8F{zݐHި__BݚyU3kz\ v͹U8/okls?_J*B% ~Sq͂n˫w$(hi`tazZ,r=˽o*.ay^hB=  ~Wo{q=P2Zyޯ]R;w>,MOyGՏvew'~?ȧN0zyToo=djא{=-A˺ylD/>;P7{hN;Zo~$дǴ>oEz6hδ`NvE׉ޥzr=@L{_z;Kd~MwUܠ^+[G|դdREͮ!SA׽_e29 &ToOݭvUQ&b>GU}͢K  7zcξcV\/ yi[p'aYvjUjؒ-ک7o&6jS +nʼnMmfVow-@nexTTvJ׎'La%m̷[*jq z7 |Mwra{#2ڻPB+ T=3r[=`- ̙+HX$y]U9ժ>UT\Qgsx[S7>xs=K+^κtv_<λ -_l;Xnvi$`yfCOjGf2ZJIZs{WM`k96l*YR߄%z}Ƣf&w9pO32"svsf;eR+-ULϿG|-?M?}0׻Hnbg&f-HȈN+,zؒV}C$/E!0Kڱn}W;BxS 5V$ ] t M0S#޹zQ졺s".C>5\r[KH߽cuz]/2_\naϽ=6B{L|pX( z#6? 9hjB=  RDSq7]\O򲈙%u}W>F'x$28I—=3˃7㙥Y5gY %Di"׋Xq"̾s8937W:*&}&h)2|([7[GpnsGIn<0؛qwMߙ.f>l3{=Gu^ PB1@'>pXMF$CN[$h0y tX !E{]'Vz,y&/'{ҟJV6+Kn r=I=F$L!^!q]c=ѷȭ\|غ:PxzB|.֠ŝyN^P]#r=@[EM3/s6"YΙ/ʈ$~,uɿ_忰Y^-d\ܑ݌_?E@+29=uU;kϼ$1CsȚ0a*,2BRѷȭ\)hPar:U-/pb^w&Iy2F," &2ʯ<B(]'pda瀑L=],ӻ@%fr^Ivdw\cMf}zr=Hӂ1=X+pG.*,[PKqF tOֿU08`y;'|qjxUXsFAG=d?Rgz7z }rЋzan'{MX3yϬfNla=#Ռu}sR=|v(Y1gSa1+RGf3k⯖S[ԿgWeaZD>z9-m%iY甑ia+LRYiSY2?i*#Hj(Q?cB˫ 3yvբ5{zϣt5qeCTC04{zXz;g #˰O¥)O{ۈڌfE&{Q&B{۟%ȁN륨dAFuUbr=aU@ tmEwEV~aDWDXs'9ZGmF  2K3'9wfW?M{V{0<:OG%֕9;.o{$?dڨ/ev XI tmDU XT(֯Zvw:pݔ^9٨A/hU5rW͙ejt[FհTF[.x@2`mY#ֻfhiƌJ~IiZ6g=z[T X=STVh=E]DFjMhssWB"mQXITS'99Ղ(`qS}ψ,iMj)_dJ0ڥ)/9yƣ?KܫVVckYE7V0t9ɋH X'Dw~0R(f4hcxĻO/I>1WV5w_ [KxG2UUoZzXƫ?{0X*_*XѢ16 X~#Be3yϬ/M~͝z_?[VZX0ŧT9OJhVKK0}Ug̝W3x2WL2#4'oٰY`C 毞"e\7K[aƝ+Y<ᩏwNV=榎\c{6G-XAj֋+F=|/:lҲٲBs,%\ I׆f̾]y@{ T+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+D !@H+瀵۰Vo{.]Z]ˇO6o?(;Ey/t. X&╃M^=TBxDt"qXg.Z~J~DᷕI@'ҪA#7xU+N-|{T2S}WfwM'+3hg_XXz3Lb-&]XȩO̚ 2`}tŒ'pVbQ H |eV0=Fy ._[_Vj&%$``‵kRM;]}[TK8`}ճYc澢I$,`7voN~JC OUmw[ I0 `}`ĸMZi{׳r:/}/[Ubv֬\HnsT--gO,Sc1٢*+?-X3V{_xkR?N<2-o=UkvqUFSޮ;,|uVTY9Y)7';Ś[G M5{TkYk mbּb{f(sy6{΂@pAnÒN~V/$W:wډ3]{護/c¶Q*Od.h:v>RڃǕ qdg>Z Ϙ|飔W)x\+7vJm+8IN4[={Z&%i=݆%g4`M_# qfυ+T|d3KI6ԪYvRbXl>qx/ =gįJ8zess B3қμo-ͽԑcAUkIe3jUJREI?+OgC OЀ>T XgR]G `sa| J(X>;gR! V~BA~cLx>{yɦݍ GO:wۗ*Hgt Q4`猂UyZ̨J)`zw KV*DA OЀ5+׬qSB|%?`.\ĚcLVjt Xg.\eEaJ/w]gUO._;y'cVYXD-X-;ouﱓ i7_hn+J+g?q撕6VoPFS~s5+YZ ްFLMUĬy,|'K_ݨTp{ehg- XHo:8 o8>oaGNXKB ,`Q/\P\2V{z'1HyqE󥏬%!`Z3hYةORjF7sM;K][k_U<:aVe֥n`%f17PUpB^z̦]\;|d Wbss_W<0b\VM9W XOrg™qK7jId;x%UO_Ъ:A9YLJݪ 9o+=/+1Gs'?kNh5֪=2Nu X>c}-Y{-̥l~11Ţm [kYo*aѓosߜcVcTBvgD X e-+5߄ K*kzAsi**au`ſ<#'޽xEB ynSiYJq;}kr{vz*5"B"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $VB"`X $V]6所t82)߿AUtRbWj\d*' ą8X@g'ˀh5!*xZV4ąW+do*Hb],vRϟ삕q!*V)QhXh<?xV.ą8X@$  &{Oɻ$'ċ8X@$  &{mtV2P `⸗ XX@g%  &{mtV2P `⸗ XX@g%  &{mtV2P `⸗ XX@g%  &{mtV2P `⸗ XX@g%  &{mtV2P `⸗ XX@g%  &{mtV2P `⸗ X=ۿ>;j~g/߽Y}s `L7B$8>3Aߟξ[dX@g% u2r/4V{ړ᪌ǽ~~97v F :+n(ck;g*2gS;6Z8jqs$!sW?0&1.X@g% udZ6F-9Nq/edzeaΒ]\OFȻ:XߺxژHƸ `L7!` ҜRHB_N?c:>N~pFTSR:*`AOWv_ݴGO6^oX˖ڪxT$Ͽ;`7W,~Ux:c=wi,P*+dNuM5%keX~XRipyNmy)FZ =X}D4R 5鳌o(/)Œ*jbNАVX.nWΑFkZZ*+e3_-?.sؚT`9t{2zWkq/wjojUh'% 8L3xgM׵̑sXk(Yh沢FV³k^俌 .}relZ|JJaȀ-BF_٣QxG^Y(iP7Шm|qfaFbV6זJ|mwTGs2k ^> CwiahNcSqηoҚS&pw٪-f/Jcմ^[UKrXso?=Rkp7M 5y]]Z'`f_3ܕ]*⎀tV2P [O+Oז;lafLG ͱMdېv֦[%F+QH5|1YȲGmvNscusHr2Xth-*r.\ËA%VwL++#OeйK/_D'3?} jZ 9}|mT, X|j^k ¦ʝw>Vgߟ_cNmNXUH_W/}rEX@g% udxӅ8euRQyOU"Z%["ɩwd KNIm#uT=I;oupEYS*4l-=mv X i!`U^M=GgCTI :#tG-Vd* > ck?%`jjMYN?5UstFOVgKl3VYtC)l w8;`L!"D)F/OhFJy;r ͵sjja֤ϊBjOjMP[?g6hZ}Gי?Nsj~ G[.i_ŵ߾|5\l2z5<2P [ƭ~]PZF׮WVg.2`-߇m3sEmޚ|jm+ ˕S9}[͹uɿ1"Ϟr{W7gdKl[ڻt]+vY+;|~*e5{ln ]{LJaS|1wy7]뵰5V°Ťj33״ǥ՟WdלO~r Wf W +W4Y|GXVAxkf韮5!uؒec.s" ]?֤ѹtC)lv X='u|)~RU1$[kvK(ڪ--7_߾[|_g׌rFwmuHYfj~kT-j\'&`h_2P ['Xz~_u_}|}QV>ӏio/f@eeѫ+VXKyà\oҚ)zZ`=!J~,=-}eX,mkq/?!y ÈߟظN}׊W}3֯/Xͺc1ILŻZ&{z;`nm1frQ?_963O|l\D\EVv% uwjUkֺ}}u|Y/7KrGr{( Q 76ڔogyR73徺-3:x_IΛJ_wiW?G\Z2_Vm5ͷ(-mxqqX;v)ۜ]o_ը鿿~tWk¨%<BKlo/طg=˯>nӎHS^Fg⭋3Co9 X4o[+Vkim? L͔pXomUpFJJaʀ5iÖWmڠ$|\7_d:C /UpF {O('VбtC)Zn޾'uupd*' R[++d"ȰL) +N 7l%`L7B$)< VX\qjttV)" WɈY ``TA) 灴瞗lfRCUH :vC[RN,9kՀyJ{ tBcc}P)75CYYJy8i1A+`uӓV[P7X@28cjr8P)KBOͿ=ؘ>=Ͻ-fԀ \1%My tJ?rxrpmFpuhkYw- ]z_+/-nϽdP\h۱2s/ ^YE[ƑFbVA : WzW]wLKg&F2Vt4t|zt@g c%`/択 "߻K8X;Vphj+ X#9JG R+V- `pSk$cUQ:VЖFտ"`ę 9JG L櫂+0D+A|lw#VVFbUW2տVMy W5R% `pȓv#OM+hV 8:nNy[Zy37TK&KN)'HY[gK1},j(yuƼKtzmG?WbM^̼+j9)9O|wdG䙱>`U=`5 JGz6W__+SNYWsn[M]7̝+k0ϗ.]`qzƌ 2uaFY/ ]>=+K j/?T]\0%U;'-X} BWz yƃm:^X@ B^=Q[,y7G7,LΪ9+Mbek6.}~m_yь-8X0y悴š#G+&mᢱ5Z8sތdwKN[m y(6#͖͵mǟuVό]LW=}l+Pyo}u5%`=_:sSVIj{(`-_)9/ZOXSzDn#Hhc(2٨ X09_kêO̒Eo]fUX X@{ BZ=oKΪ9)!``ŒgY}ۦm;jkͫ" sf2WTzz䔍>oZ[5znw3+tU<ά=`W<֟vo٘n9sĬgj_^W2o%=Sg+` 8.U o\Ґ7BFrJ}s١SnQ~3??T@#~ 4/Go˹ bk8_Ye&ҧ`G:MliymD yΚ_TrzUSͥoEzTm-|Y]悔yk}k6ft]k]$w,K\6Y=Q!wQ˯mrgW fW9uaZ~[}#{Jn7 6hٮ>\oYc8X0eQQȫ7oXyp-]H /ٞ1wu$ӓL|ic~Qf B!@->ZW'\!׎n.fmn'~>uM[XyŬj*2Y[OiS0: MeFV16rmVGcxU[6eAZqCݑm~tk~qg{$sx?f݈QU+`:7fo͜JdLoKFI5|e,yK]kzʯڠX rϚ%{[k,RqQ蕨*1~}4Kh d}w]khM.Ʈ<-;cd<1/N_n Xu*h6h 2T=Zac켴uFq+d;z/צY,Wv}{c~餒4_Q5|y)Ib|ǐO=}g%lRM^cy}- XH֦81Ǣ]D}VAWp:}sJ댭 7G:مB=` ֑&17_tXe[ozbՖo;xxqfV-c%`qԢtUG_XZũdjC<kk ]]Tavr2`u.WĩT1o~A_ MGMZUІӇ S}׌r}j6ߔ7̅sF_xf,9C̚tV3c%`m!DjKW;ZzJѿjPk)kdD2;ǯ.˗87 DI - X?jin1ŵ *}k^*˴q~WfI[}^RW^46X̍(`շ^Tqfvm5uH+-Wq_U `櫂=`O >ڊ3drdo"-nQk?`; BrDcE}H(-[2s:FR1=;BC;>X=ʽ XZ+ڬd'.ZnaO׏ls# X S GZsĩ3U ^2`c f3e=,Lx̼d4s+A&VQj9B7.5T;,r8"*Ku󫵞C *}~}cG`NFs7G-/AL 3=t;`5XSIVO<5[ٖASkve7;=m3&s# X_ԭwHC\o\2Rn4Եi XVZ Zj}7+`JCFʼԼ7,ϙW=ڬd+/M]VXS}fcڜy3e悹pAZqCݑyn[i aAEoK֗i枧u阂Bo]lꕨ=`iiʲ=Mu۶{ y bS7Uo[[gĩyKwdiaĔei`ה7^X?x:πU|>=ej?xYDƃG`|qE{xzqD-Sچ]*Vбz#'J*8 5_:@w4,BԅeM 5^py)K7VqEW ]k}4`sKuG{F7%/i]虨F]0J圳GbSLLEyNF_}ܶ) R᛼%cЧK[獷lȐjĬ+`;T`>Ĺy{./N׬OՒ}˲TP@CyQaԍ,`k\3Rgn/*yI>DU ` 8+`E8S> +TAkd[:vVLW X;7)E6vi> 퇡OU `q"`M"`M^֡mw-کic|9)k;@ f?@ -V3 `8F XVZ I#`QYVX$C ÀU, ZaJm:v@ X=`r"`qC XVX$C A| X\V :- XG ?H4pVXd XLE ⃀@?֟8 `h+hk_V XiP>S-wȽXݴ2I-ڔ~](w| X}4tFٹ\WNREX<Y4. tۘX{^\JIdWqV-X}ddMճlM~myQo?3W;jѿ_٣RzT,Xm]/)fxVqJops=\ss9Ab7z)N*:^ޞ:.tSMFmz>{!OޟD X\A?GZǾrև+[DrS9OӖ_UnXkO7V*쫾ERZ٬5i#W.?Fض:7ebJQ\6榥->DҡN5Iu&nm(էЎiWk۬];:wۘo\w$$`7HKR=]jT#`pyԤZnE]=]t;w-~8^Mf5:ԩ'WW5Nl 9ocBEV5atuWڻv5HC k&}]j݄bjc֔IXEǾ yKbmd.hVXCjnozr Xo*}XCԟζ6&[de XFXY\K 5 V]3eiJ#Usrz$,=|~QʳګBe5t_c}2zfjCQ*tV5Aa~t}V{XhY55~d:67bnr)RUcJkg=[eyry˫;K?2i-2ru}&:*OmVMǼ6{o퇢NbM 0b[r?2/\yd3}1NQR˿m y\\4]쎴|j/X#r?<]*Ѭ[%2v1>A訧;/tiQuSD?մSiʴ?=BZZz-g]ǃk'1խu4mZkq4`jBgӝP71L Tl!\uJI?)ɳ=@:'l}u ˘VZ#Bl.Y+JS% P\Rtn-'k w-~WJ`qs֩S~ި?`DFkWk]+|q.{hկCwinh=^S[h^ڇ7nشKo,6͘L1\#hܒ./(_Ny囷l^⺢*ޘuR!7v/Iy\!&֤aTaIUbQ6)ߑd[j{ Gy|Bk{$soNN"nˬEb5hka:@wugh˳U,E.Ϙ˭8T-j7@Jf0+`yerc#\-ʱ\]"m#m`5>bW6>]K$Fm&HP#i$S[[̃F^Y_}Au)싄94Mg!92޴b5xm7]f-ȃDǚʋܷ8,?#=X^9QOw^lӢ4ziɧqd]ֈCQwAWyZ^ S8rx0>cө6tdΖOpċ 7N -Z_~5NϠ,1? )>]^l*%#ܜ~ӾWJ<̓X:*FQ^Xׅ(צb+;tv!w6cN}Z xq媗@;3IZ״U6lq0-Ffx0N)2$ҙuq]\bl>s!k\ܢ+9xx}Ұxp'k/祡fM'Ab`vEYXkwx]rd'͍]S{t 1- Xյ6:BOyYkj]~ ܧ9IC#ШF4y{qSn}o\lk;RkYd]ʐY~G넶̾uQOcr^=4[*YOf;;\kNn~vup|%QUȀUL *`4E4]v^_7JLN}q=P%ol`~u}J rڽHޞw*׿r t^e@Z/y*ڠt"Yd1-.0>1-i ٵ9`[+eNSn=5wy=M!{Le_8/*Q{Ry]5j#܂:a|!_٤CTdW`kۣӅ̽xԽm2n-_;y{<>+vD߾[̝{{="mkʝ(xvA賫)>Z_ns}v"Z.}ck6;݆ Zhr⑛Tsb5]'#Nd-'4tG٦GiM{ TfMBx.z&5ùUBBkSL1Z~khߪ\gML6ƹQ-ĸ\ x[O;?PgHW_Y~!nnmRG*;~d#</v/d}escw5Q߭/Ab Ze#m|$ru‘⓲Uk|m gmIXk{o¶)gڂz+,` jW\IӴi}Ogv]VXdo5`~-i]n+qM<-w5۸wd N5v J FCqe%_jӭ`ť`Yf{ Ȏ¨}khdذ6ڕ{ŝf=#׺ȯLev>c)?嶎s܏#{D).1ִּsICs hmVک+DN[l~z攳!9%;dpG >;/tiQsS>a`|pd|݇(CdSgؾ; 3l2&>)&{qU &]OV/r]~Ӿ}|{5mّ%u]}mIQ:%G|oPv3*#cV/41kcF˓ 31JwlQrJG>r!kFwDjʏFcIEU^hE6ZenU!g1oōUS\W@OTӒ-htZLomHKdߕkəT>G>ߨֽ^unV*&Z_޸TlzK|+<+0`5. {&y꼹]5"1;l5=y}u9ʣ}Gr_ ziWaU^ݽqS_S{tv.@'=?yᗏF]-swQ|;{Ol斻j/dt+rrܕֽN:_CqبM]Ͻ^fס5@fL=HivKmdle}H=yqa|/o:OM}MŞ[L q_h JlGkfM`_~M7Pkߕr9N8z>\t\wVۑ6 R >k㢟jt{^I$P_N >ڂ=3S&$+`Q{r5PIkv-#Nqٶ&Aբ1vG':̍mԔmjNy Qr4/kh_I_pw;Yln ߃%J0eNJ <Mm;͒ng0 kl{$Ԣ^O%}}G9\IMXе}?B; \2\MgM3\]6< ze {ܶUc]bu^Dsh pKlAW(;E_}Eoٲ+FYxSKouAW=㽾B zJT;}V^/̃O [AOr 3e ]JϣZ81} G>-{-zy8h xd9զU~4|W_}E6Q<;Nղ_mT=`=H`!JT3>MVkjEVg( Ɣno܁_W\{;>e'-X‘U,5޵H:^ʽrswQ|;MSi~o/Zel"y{qcл:!MS2Ԗyn`2e٨9o{[Xr|% x u#Mr,qݛ!^kvb~zֹ͑c4E;9ֵhl} 6ZuAfsj&i<Y y-%lpn SMk?j6ǼIk.ޛu^ =ljѮ.Oj0Jwp-dl4=kR}MٿQOerJGNymj=%A~:rRn$%6},>NnIq^1-,8h>yޝF_hO@t+gqyK%e^גu6&x]+ߧ@9h#;)zʖrU9Rn>v-c]t\6`]fD Xf\h&2VfgYqU]zhXs~zIՔWd&y'u<|ގg<)ޫ<A*_9%*gX́ʔN`jy󭏘) w<뮼.9Ry_w5O,ɶ`>wV': 2qC\k$sbȍQ;ڳW;m.|M}iRMXۋys{Sm\}ȅmvʻ|2ad8W1}ϚC:f5+rl,{=O#r \=%)^ɾ9ϵDZd'O7d]yToӽsK}ݕqB@\/yBϷn@K=/Ҹp 9Kخ}n5[W41ivw{ׅe89HGk;(]OJ'zyVldd?ʛU3_\呩weD9fHs2vykjd_t|~c:^\8xoj!-DFo}Hc^\Sv=35h֔eʆȟ+"'". N vdx=]S6ӫn*k}L6ëdžܤ1o'[+Fm-]]kS,Z>k(A~`eF>ǒC^3\<erdzlEύMwJU7OqtVUE`ʅcߠ_12QzX?Rc$[Zr[B?rm)z ׫Iƭ46pg6Jɩ 7unDQm@vǑ:•4C vX+)&9o CPZy.u4R!+ X}&ѸH]\Kwݝ,*.Z7=/wC*/.l5[-c[Zyym(+v 4WiW5l-7̿- {X[]kv+ذ5T{IVP-t\Z+3q_'-Ws m_U}+-vg~S3N:a+K1`>J >ڂ Lc&}(Q2fUMP&-~ڹ&ƣ56iޠ%_+nF,㽙3Ѽt5]\Kw5V]{טa͘=mi彡|ō;uA|)u0 TZfjhS8rtOkvc|_g-6Qu=yNNZQ|sؖcU}IٔF5Ƒs{j7хnn.v۰y/qjss2_W*{dfo* :* [_dn#`5:MhwҚsjF38"v D`xoXk(FU3&^:U[ uằtK[BYzbS@J*-Y5v<6M]5K"`psqN7ۻ~ӸtUصg|U$Yoo&Q$`z$;YkʪǬ?YXY ֖I*ZX.G=>j9qH,*nicSW7ʡjҝ7Yd`/) Ͻ-vP[8[G X])j&`~ AyI*D-}@C'*|+;,t+[ES <\ڹ"DՃiNUi`G k$&krL舺Z6blcV56U{X}G:AvP[8['1wՉOZ?_ V &~?.*c4X! 77GJzAwޫRr { ERc+}oޑª> `&֙Y| Y*dykl0mSSO~QhW$*/O1ߞzգs7_Tic"`F'~bVoVn0`=t(uA* V &쵅iO?YZ-xU+ Xm x寭DZmK]Æ X4tqdPWD Xf… dAj,l`a1F(|xhA OmRUm-po2jN?,m!֯.ӟWwZg5XM(a*&e"! ?{_Y>خd%_䆝FUc>~΅"nˀjG=m}&7l:j8)U]jO @+h7#㒓'YWW+ƭ=eK>=:Yk9YWfO,~t p2M{jۺ TVy,u@w9fx&}ƌ\~B.g6TUC̢ik"/W9#i3vέLȫI5jkv.@ 7`ޤU%92zUcFZq&@.Vj%sjKWSky,V^23߸H[-3V[Nucjey>Sj"`h68{v2D,K7*۷tk#`}X4wmIawfhj}n.fa4=m.j.]뫴 xFX;O ?V&ۋv(sbg^iq XeCڪc *πU&UӬtU'a+#!lU*Y++X$]?4QΒ5f/V%\V}K`5^9tTW*۽ggpdIJnw+1H4 XݩRZUS+ʔfQKSC )y:Z-K_>+`5;aTSTπXX$xIie‘U24ejHKΖ7X@c:6xSٱi$`CXπǖ.ҨTpx]fW:lamvS/!OF~@ ?V&g*PmT# WݦerXLnRTzڦ[FWڽ6kqRϠEEڤNkJ ?V&-X%}RQi;ې1{W!zoڰNjw*kcUMX\M&!]iM2~}X.jܾ}:5%`+DǀyezK9ZYE{pv[|V"54l-.KEז4ֈ9o[l=[_zX,FIZ}smڰ5Ԙ UZ֓V2kx5=[)+X$x5Ed[kL r%u=3ҊYwf% 2ȕl#3b5 ZQf '<>+N D5n>}X r+Y4}Nةr FkJ ?V&k|X@E tUֺu tRMXx@F t؀g}\~VЙH4-`ц/7F:G7!`ѽ?E7:?1wHT-`i_\:DXDU!V3+p+h+H`V* [.`XF ͭ d@#` XlDB ͭb\2lXij牍VZ$Vn?`rѺDZ ׼)W]j+z{XڒE|ɽO,O Xʒin%6Yvf?3IvZ(>;D+̮Ub'h%$Vn?`Lې<9"S"%ɓ\w+ϮOӳ-JFV*+s#mc:+F5s#il si\QwΡO]/!vC'L5¾x,`=ZK'c-IXpw5RD MB_o](ཱུZ?3u.ofwJCmu\#WWd'kMY|$ \|]oloI->_!v]:KU׮jU>8X?ؔ7t=֬uTѱ{G- >jy_\=X6PYn^٭sżlMX@IAdj5h?/_#SU/< }sVYϬ\M>RooҺ/ꓚLQ%@KÈ!vhkpDZ/`FrOY.nU]Q`{3ԅ4 uMWMe5M_Zٓib ca "`톀5N<VZc̒-O蝱_m7E*cvJzƿdZW#?Ojcs}vn $<VnX#`4\d0Һ^^G;{o*mw;vTzu3}wXɛ\deC;Yd]B kx}yd(|"wOݹpU㴇e׫kwu69p1)Cu`ax`g`m_Vrg__\o+YQm u|CΦ#|lz.Wۼ^h+4|vhɀ!ݧd }XIU$:VnX3`iڃ"gFh6{5?=z>krt 蚟hw!ZCH>u`i;>UordJ3`ջ+$O'g9Ak+:X@Iujj҂oQ&Z>ɻWIL4)MD7L|>jhX,1"`i;QUW__[` b.E˻L{!{++?;εwM5HΣF_xVX$J{¤9,fsќHW>xhtg̅;8.*jj*2IOW1scuv5ښuM*xo7ǒV)RǬPmoL7#c5`5m.qd?޶ƒ@ `hnFZ[ߏjZk>o1⹺OO%F<#8[<*'V9NUzU;M5Ƕ6L-<ش컵W =KkzSӦoLחs˼zD^^-~i#dcҮ:_''2o[%m2 5Ǥmãf$[]m7#6ccn(wŚ[XX^#ZUoݻݪZ~?:guzcYC7N^'ܪM$;G~Ơ4dyNtR^Ez_F,zl`+$VIC1k꽶,kдy4 X%i ަU,sz- X#~Vг]@@ `hnFk5U놘U,zCx5t&2slIi黚vVG2J^&~\ǒK/9:HIƍp*^}T(ٴ=c<Dƚc٣#ӑ#O\Ľ.iN.u 6fFm.U﹨}vi5Sf7Wzw%zޒLcabֈWRUڃFh<{2ju!`A 䀵nŞ7Ua\i[k'Mʌ*+F'+ud̦ŋEU9[ qt;iXo,J6zHetSTj`k0#`Jo̐c++Ϛ$JJ*vqn^wmsvgǩW"`A Ѵsn?q@Ez+$V&1.(ROw(rd-c(x#`A ѴUX: ہD @!`EE @i+DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DC +DCvPߟ.O/Ly p `hXNޤzݽlL9_ER X$Vu}ӆܱe'H_Hh +ډ Sʪ$.VDv;_-㓵wZs>) @!`E߿G-I{I}SGJ0*ᭅOg_:Exqbی)m5\TV&JyLسsFU{O8aI?yT)O\X)hr^uzR 턀+iУR]n}dVi/4zl=|I˲k{=,+Ѐ{~=>6oYv^Ѳ?~Oe5@K5`CݮJ5$V"`=z=5wIK@*Q#\jo+g,_ 5meoLYG>!?m긗YL{Ѯ|o)$Xq#-'>[CU~~=n={~=*Q|SVXVMes}-CS ޞ†̓g?+XuEU{ʷۼo;OܡLXIkBb?eo{a}{Ox㿶JKl**?U+?;{|Ь ̚+~l4)l+{UHukZiRz\+t9kW<>;bQن vUzOY_2q@立 fѻgMY0c鶺K_*\\t__W7Ql{bUvT99˲ʛ.mF3 /e:/X NeᲉ)ZJOܸX<3Yo_^W^6w6 ,ݶo3'͙}8}oK{IWʂ2uz&k^gN^ɉKךJrm5s†ӟJ`5wgUZ_yFYo.ޖ!_,I3_ܳ5Fm** /ojNֶ櫗ktOፏ&ʛ*0CٶBifٞe[f|f颅71`; `mtJyt}?wg>? F?}e͝# cχGO_^Sٽeo=k€9l~gۊΚ>{{{ gصWTSQyobe;DMENYokNUIڊS%y??^wOr ~<`q&#E;Tm}y-{ drZ[ucMMV^Yp=M7,/e|2t$Zh Z uGVn(0c+`uM`ƦչG?7%ּ mT].,꯯{OqaHK.ycF漖nJO4͝V_ȵF;|.5`][[xAZaMXwcE>1O\Tl=5K-H^\&ؒ5F06ݎ9yK,w}῾VX۰3W UWS1o-Xe(*9JS64߰ ;onNrJAe7īFSFho%?6¥klj5=>٫W>Wrc(*?쪥kl~{׭=y0g:os7hyz?rG1ّ:?b;G!6&`OE;On~nֵϬ){kݽI<DWϝ䴍>_+u%/ Pg˰erۮ%Mf+rmQ}#rᗕ^2J6)j%5 6W9N䌊vhFfYw(4+T:_z=|k!`p>O(uϯG\zʧ^/zS1a ѮCÿ>:m{*VWW vĻԞ|aS/͟v0Ybz?w};dg<Ը1cxqϬ\3 [۳~؅&N\cäe~}n 6_qX"(?(erp)GY:Rѥbk_etQdŸeѤtŗ=8>뫓=UwzR=ԛj*B12K<V猜}E٤BVzzGW9挭FY@CŵvoPV󷟎ĸ `X=~5?]y_*^OO^_}rN~]y;5/yk6{Ӊ7,1?9z@tQO_W|q[Y9U%+7!nY+nx惘T~A__WQߔQ9X=CGbny+(+&qщK^cv %%DUT氌4*l0⣆2952Yz5%(ʭ L5AC&}':`{ҍj-J#:I}"mcvraQWjҬ=`ușAˎ ^k:Υ^%< ~G++fdNTͭhFWGzn޺vՉcqSf_V>џ4zUKKkr/^⍍*_}+B=!شkk,޾v!|u+66!0-#plTz|5OŌ%߿_%?ڭo ~Z}5zgrj3!W#` &9/k@Šg6=[yym=x Иg(DboMg_ZV!ˇ_3 n(9ZV՘{k|#M.־`rԲԼ=l},X[厇?_k~?Լު3O^~zNszjW_RlӺC-Sr sn(tuGKߪxgw{(ڷU<%wяyn֜+|I ʵt漚'd/bN]-??pʊEu>Tܒ9`=aw뇳"O2`[Z 0R 9:A֫{ uQY:AZx42!ڞ'{#xn:>)zި^]k5hF) {ݾVC"c[kHPT=65{ԣSQQ"ū)_~p>o~CӦxӉ7O.۹QOSG:|%uvȇ<7K؎U ׮66ĉs^5FF|vJ-Ջ=ŇW{ˎ׌Hޏ3t ~%wcdm{e9U\UKhE1(ufbJ9VJȷS%Qwj$,J-Ɖ s[>ѣXG Y}(kt6SڶCιzVnmkxM5 3=so~V.vMJQVE??l[UZꝏ=T%\*ꈚcm?H[wzñj7l fZꡪ=ϯ8ma]e2E}l쭚.On}ȩZ' Ee9jG>1eŋ(I~q~ZJ|m%M{{~I,?}e=?kBߧ'{i(kj?-@JF]DEԲcf%6ja69Y:vjCYc"17q.ѲZ3طT%r5`he^:CWŀƛq-ׯV-N^Ԝ̪ߺX_Ypħp֬ʼےW}|si˶%)ũyyM0oiҊj[Jjڛme^QXzyj5޺w:sGVYHBp?4)綴֫0nUU %-ڭ%b]yZ{U;BvdˊDNebEY_my(ΖmⓍUe~[ߜQ/׭bO'9c[Nj~pLvqζf.ڵm̪'.^z\v._?v˻Ζ&3g½Eu_]CQ)SR&sZusJrM%~\y KCZs+s9C.l8v@zJ?X{yy+SoAꎭ%nkN*f׿+'G_YTzw\S<]ֽ붥杻߼Uuƍ6iCJ-'_.ŹS.ոE^3'\FbSbЄ6ϽXa>F֦¶3{Sūfc@/+BW&'o{Zi7wok){_O5|noxvV[^:'OY_RՇr (G +[ǎxqBz+F17# /+ϼ3oX]գX[եW6ۛuto|V2(dS-}cEڀ`r[_*J[vJxǭyKS>\jK؊XOJc =%umv_^)^Hۙ/_]>e~]Uc/+ Yy2?K[/k#.2/I_=ȗyX=?lΑ}tU/ '5}`c֒:ooKWimeV:=sq QoǾ2'KI}ReaRfQٔumޱ?c}s~wF29ፄYʗG-[fX79`}{)ڗMZ7Po:uWrΖ]>UsתnXg/GZwdߛ3f[+oL5v?!qoΘpOS OY3ݙ.U̗n_q s e '&]#HVM Xڷ+ 'O?7|ԵΖu=d~k疓Xy`gt#o߮=U{|mX7}&`~=*X[ԳS7}=af=WNݿ|Vc&R7\\;sA `@O!`ѣMҘI[N.s^~g]I-5.Un*98cerN>:u$nٲ#9v z +qG5<=x q~6zI)&&Mx^I}3yO_V?hή=~ZS9gʆkmҘI?zk|Xo[QLz?!-uǎyzc?aԊ׭1`ūSv-=}rՃ/;fV-yNX}('ѓ7}{<F ylkt{ dز1&Li} JG?Xv6U?h:[:q]O7pw 2]p熏~]-l+gߍ{{ܿ;Y./4#mg*?Xrκܒqĭ*7; d?V+}lᮏVܵĿ8z ~1Wz%VM?zk.߿c5Gqâމ}fH1%nٲš_^ɽXqu%yO\ꅻ>z#a0>eMrul4_,PY# X74fĵɇUgĤE_>+fŻ3?)fpQB%eϟ@2Rxnht[??7~@_C ʀFǿ*L[<]5mʽXd}Y2p3Rӛ_3iЄR֬>{+N?pXsQoNJS@E 鲀3wˇ m[6x/4J7\Lpqϼ3 o$?~@ei/֮?g#\M[upپ7n*9xVtQNÉ_^ԑKʑ~ưg?~@ekƬ_ߕqk.Y2ha -?nٲ)n)}Kc&r@E _,xt),xi$u熏a۳ɗ@e샵`Ox!q4n@:ngߍ/'+VᕘƼڄqo ;ⅸO@ӕ+@PVc{hYɳOds֞<Vcyzt󇎙<{qs ef+19`ؙ䪊{_>R `=9yGYjܤY]l(T `=YMr˗߼;sK ?Àz3?6gQfhn5[y]Q~Nޟ4mxɠG63:yWu%BƝj &Nv%wa} i 4qނ ?mvܺ~HZ]tO>~]&fXWe:L V K WoD\u/e˻|_Fx\M9~f`ܺ X4yL'KɈڝ9:(Sə'M3sOuu *kHï$k̴e)շ3wiUپO-g '?E[gwN/6tAΎbro$w봔pNW[`v|b8;rfcVkmZHҊtL5[fDd ` ~6\6T 5/)R֌uӶsG!9]ssA}oW0fZBW'}Okr>[*m>ќhc[JݱiRU/Gj5.?_2D zLX7g:f?뿝>+~>柂RNSOk]T01Wy3Wv(+u0`;N}#|rVR-_VᚮJK_d ӢvJ+1}>`p/?](*;-^7wlytuQznS?4k1gu2?WlݹΜ,_KpF_?3q5ڟ2[s{<@+w:`yXsʟES~,)rt7%`ՅuZr0+8uT i]|Q=-y9Rh9r ` 8]qꆋh)1jۧw~Z n{Z7Z'hA~/:8ok+#ȳ72ƌ9gCnA[q7!.ۜ:t%bo2ğns1=蹵ֶyNY{ 7k>fTʳj/:i3`ޕ8:.|ԭd5pV_-V; t!Ӈ֯(l}Aswퟮ4,]nj=mqݵe7轸:>cќFzh6MTM4-C[uK$'cv ęc֝ ӷ'G-ړlq:R\]l,Z:R 7:Xu`@+1}8`+*.ͦm9$m'!uk'+$DgNwnH_ s e6-S3ӔmNYM3λ5oֹ%=Wwrhy.Xs_M;s{Zjю2ޡj-vx jj\ XC"`=&X{AM϶<_Y{.Mۿe)r6ዎoCSMo'{zOw^SzЇH* 5bW p}d0%ָ]niSGF+c4&P*w_$ψ| VL[Wc/kHu⬅2[rK`'e-[,do F26cMGfmwfZAM= o0 VtҲo՞:`NNWX-]iKK.Prjrl?-G*WACv Pג];#h &` >NDfd I˕$k*|rK!,N=#[`) [&-JSեU]q3fLSn?5]YKt6XPUՖ /w[v0hzA6Ū{EonN ֐X@5?mUzenLgb4XT5235D_*~Ŧ@}@oXEz=m},:훚枲l-#w9< zRl֎c߉Sȶ"8Ӈ֢f~:{ꛟ=ӿoږc$0 q7_x@_nx~qv>qҥͬioWaxj˟{֮z*~7%[4 26͸l]Imt=-fZ_w$Oi. 3_7dGv(f5ڢL٦U[٭~dݏ?|z@ROO ե/U@+1};`}hd9Y>:eێ fQ)lujfۘsVe49Eu2 \FRVF4m|qm X[Ƥue,=9iYi{dT;F6gҶKduϙb?)i}FᅻEuV+֠X@TTv:ukً'Z-VrD!ᭀ'+1$` Xe!O.VcX0V}iW~LC z cVǻyYt2[TVVy?W kwKnX 4'WXӵ@.6)k2*%VcX7tszYn*zI4X7f,`}t=` /c9 +̬X@w#`ߘ+nl C- mf&&=iUZnfa㼕8g9+S,OY?{Y\V >2V/cVA >uY A]"@YV.i*(d?t}jXkty:cdOW X@D ++pE Jg2c%`Ij4buXV=`Uj'+:z^2`7bJG9ttN[s,[+: XC@uNUOW X@W鮀FzK:=`}tV!nX_;@wmB4_5tN^| i{޼1t-Q|z {Ez-r348b\]J= Y UJ*5NOW X@׊%@X4DX%%U13DNDF:w+5R?,Ѫ`0t5DUVЅ"XjGk,*LW%%Y.Ut'@kJ PV/X͌՚he>v\.=]@ Vk^k1[+qZ"d4`#`][{ pdJD18Ơ6z9v\Nz#t|U` u&` ވUFjĬzW GXW\Un6J-3V.yX8L=KƪƬJ51(!^~*WthBV .Ѫ?>tU `] ×ȈD2r%OFIm JP.Lr {bUZ=4.骠T>:GUth+_JbƬx8@WQ5;jr0k ZHJͣSUAX@׊,`̀5Z 2XT%LJ.PVAF J^AYUt7b ?ck5FyS^X)d̪^K(uAmt.`]uI# (鉟tWtJm~JmKWEd X+rB2VAQ@>Ja3UV/cuYdBSl@\>J]aca̚GVDVkЅX-1,@\vJ-acXhUtEX%$vJBIgEu *_}bd̚W+&]ԈU0= JK؍RW)F4]X@8`,wXD M%4%x)Wh(J !J u4c|d %R&BJ(ZK^ f'Ut6bgP9K9yG3533:4{um@XV~edk-ɩ0U Xi`ujDYfy|缶ӛYz*'iFUdWSAUiQE-Tf=][μls*>/C+% kS\?-IX|66;y QsŮrL]Q(z'x8HuΘi/4!s4*T{NZyxKUrOrt(NP؅G-7 \,V';o:@Ju!²aY:s:U6@waC'~8$?sğ_N˔'g|_^?s׎_1*Β\<&J[7Ӓ6y[;u-/m/[Tߩvdy{v_T'>h>l>ze9÷/w\<|9n/VZfesWʌmM-bi՟Um;0G4w鲆7l;ܜA_j~޽7/(m?4mm]1-kD'w&c텋V{Y[*^ ciV)V[yNd-p۹ՍLYd'?>{mLLs;-ܦL\d){{\¶!3^zPtzm^`NEn:t`AV^ܠֶ3E%*Z'%\Ժ{*4W/εnz+6mW+!Ъ? t4yIxK}'mç؞P~{_x{@e,ΪoIUܯ床ӯ胰wlF|)6ގ esNⵗ>6ZF-Kcr~mYzQk./?w'U~س..26U ߓ_-P oӦW|._݈Z( T_=j[.fԶmbyR[e0Vd4en 2< [E+IgP8zQ޴%`zZv55ӛ+>[Q6[^K6rcJۮ>}^jQVr9hji, m3vT}=*ˣR-vE}IXY8?WwگɇRok\+k|rߤ7ڕ֕ʻaWk|_ 'T;K>v(ڪOmryu wPa|+K{=_$KҰD>449>\-vʷLYz^+2]؎=E961~RT_!l#)`d*XY{-e[E:GDtPe+vBzvKstα`4ҼF%,6y/W+}V˔Q[NjXݹ&4xQ_i`L X^l~؅($Re_ы /9oVkTZi<JXUڿ-0`u8=i~x2}T8o [%8^NmSrq;j PSI{MF^?}LcGT]2֯~{!mog|_kzm(`Lq XKjIٯ[~~l\KTtZz~}9q́z_s"6lOOF{SuhplmJOyS|!G|D1\X);ǜM5Df26\M^l?֌Ii |3x9L[;}I\̻'ʲ%OsS\~lU>zT2V,5g$[y(D;/kVLE툗sA5`5rKzǶն5t[-]RS?K|Sgkms^eee8*7Vqk~CIqou۷q$o=we[8mlhUP [j/i7$3|RVQz(МnNVR|BYJL=n?b E#gTgVYBq(O,'@G-J ڕ'ύ9IG`=`@st%~}3t }1gmՋ<4 9׿Rp<h!@u禇jҐEr tU1uVj#kL,WǥA,Ƈ<]WVor{S%Wvy/7(X` 9TG;cN:5@W?"Zqr(=^bNPzՇmsΛcVQ6cXSS[mpJO|}舚 羹~RNԂ 6e˾Gm uf0M(kRI)zzK|Ai1eY-5̕։Eٿi]y5+ϭ[aL,f+>˶h)n;4Ɯ(:`i%*Uȕ>u׮6Q Ēۊ<\՛ȕU?y9;bb{[ٿԊqZRQ1ڦ$ncin rB6JwV nS=uټ> *Ij< XoPȼgIw75~(6]-7B}ΏI.78Pȏ⶘) /lgyeN{~F~6=> XN9/-`@ !:y( XJXdi(de̜Xd\sb'0yntL< :,9"B+e+K"_A)fuj2 _>&6>X~cNpaQbSCghP>y;r j(ޮJi 9ZLJ19O PYnfc~G9q(^b_Cˢ YJU9F~VNi_?5_Nu贒TmX^ryͭgnݷ7E˛Z~Kj9Y3"\Xa/=yKQƳ_[r1XNsv2}ļ++?ǾnYm2-ezXMW-mK}J9vpl߂mcg}ԑ+'_RۀfliEN¤ )Vi8@jj?dZ+)ZAssM ns;-._q!?E RN-uve֎QcPI.Y XWswJhS[3H6o窂RD=T -3ڨƷN=0ɻX_Kc9Pn-d-6LJmTYIDzuinλ^A{Rq)ӽse.G.ਔU1Ѓtڙ)9 < sJ'Xf}p< ٦攇* U8GDtPekk$-JljNnm@U;.M؏uSjH2wہvtҹuJά|6vd'm8Wr6M'%׍{Q[NiߔɟδZ6YJrŜbCFJ^M7Q\c#nB\:z nA9@\+XA!qnX[J5Խ)Py}wF'se][Q˕?"N7z]E+^Ʉqq+j+| Jq{Q>l`7[RslR gs&eVw ^25X_K)A=^/1Np<r瀺.5:y8:sBn*_pQ!ְj*7bKMo։C:PWF8\o>yeҨܓg[iiElZ dsoTVj_[~y\(k>z~*`^y+?>A–`~___9q̮}#'_TX% "{'t9@t=l~l<zZi?BlJ veVK}T:qu;ݧGZ~WgꦔFn@@2`^n y}?W,5Cd[!ԨloY~fr3㦥<(xCvkO?.nζ6'Zu MҩwA<9ȥL^΁=}HBU.#zk>cLZ Z`\Kۡx9jm6f'!tߜ9"B0Y+;~~p?HAGc:j-g Rbj )@e @O q:\y8rmעpvT@'luckq/j)-ݬU,*,GJSr#QzT]c{\96i`vP es:RLw6*3f}tӕR vo(Hw^Dpzx9.^?%s[Q+5brdpUt_Qqq+j+| Jq{g2F;[Z9^~VslR gs&eV%qk9z@g%)arP^.@u&fZ|q6J~b=:@BЭWeעac3P1ڷG^]vu[uG!OހS9"XU/2{m?kmklO5z*#`ֻxx}Qg.csKeZyjU %{u⦻ <}6]mKзjZ+&PsR9>* o^a U%: "Ҁhٜfb7 A+ aܴ@!8| l];D祓lۺ\6II[_q;{/@˴-[ߒ]y4#!@+Ig,z Ql3fV,]0K+{mv'!tߜ2{r}N_S z9"B K,P3 o%MAYX mԌ;'&.Gfͩ vݧCǍZUMgJUs>VkX{Q;%6p|{W~rD--ԠTﲢP({ٳNyWvع2BqY뜁>ڹMm Z@gus7ǭr;Ub_8 Fs[Q˪b}NT^WʲW2a_cWXW! g]koXslRn($"~~=j-W~RTơz,bז^T? }S}UyszZêܸuj_ X21ʇƟYI,@+wǭ헭z8P8IMw8VVj/V^'i ih.nuچ}X4ɜzbg-NIZwK_Ze(ffDy8` Zgog\{vߚ+^<}IJ7-YG;(!Qz'ˆ\bױI:ct:ߗtbpml罜]JMDOvJ¿&ǡ`+xU82Mx(=`FW釾'9N9/םGĬ҇ q8"˸k1KQ3jAl5sр|}*ԧCeᲯ+C)1e͐딀z½U"6@Etc-En]#mirw]#7\7*"wHaM]É߶Q΍ۦ_^jD.rV:] mr|u;Ux8~d>v9߿ $ԉjUJ&+| Jq=eb;T.[IXn[u֜j! 릏BNrJy<Б?j%%C T'(<A%y8:u[vuqkުVIj*7gVLI5:um /`eö7[i_[_MVj-*;d8}'!Jo_+gv1%[ʈVMSZgych麮h \\wV[%/[gs?Ϝ_?`3ii퓲 şjV̰'=h:"\,ާeMGzbO蠘h.܌(T2>[LԖçBlF/c$ E"(<ݮZzS¹igI"|P(/A#גohFֺYPG~M朽,ϋZf_ܔf~u{)g#ZVNNS^b-nQ>;(_ܕ噩 Y%?Xb[\KI .n ڳL\]e#1#!>@LJ6JQ.~%F%q}3d[/iHU@ ՝mn\^:y24d7lvqŽlr%9~?JL8e\ EdY]c#n甭ƛFsxܐEۡfZQhxK~.hBߛB ]k;/U$rzQJ]Kvފ轪jA5X[+u="ЕV2Ttyl¸R\#5eltXjqrO=`uvF6ǚ{=)@Y=(gVA.]4UƲZ8/1:!m27\wr6v Qc;TnϺ[*%Z bYeo\mxVVaIEl[͡^Bk/#&_jxz0?S?ߴOxYvWZ:%6ѥZQjΈYwO=U̜n~VTc}cl;zyVZ\̀ye_iy,Ԋػ@ y*_AV1}MQ?pQ V>&XZO5jT^u{ji-tK>XtrbSE;KmSk{z5]ۧN:]i'~ԢmPٌʬ1TƻW/mwkZk&%5k XfV!n!ͶFjܴ?57Wa^GmOKn^4>UU`h%cZuGEǠ6h]Vɇp@f`ojۣuQqQ-0Y|;Z_$g{oס>QsQ协RͳE 9ϲ\`R3zi?j)J5shz3ݭAZ 퓌 }<kѯmz9o^Yȣc}uǎ8;3Ԋ_]U͇58q@?,߅|Uwnz^Bpj:yU|׻$\{Q;NimTa\nI R3CO߱Pw*+j".MαN/ }s Č鲜 s\^ 9ҮwkYi[h T{ aPĎ8KZ9^.1:A>vhCJ瀾Pp#e>tqaTJMONg]_m`$<)VLLtIXi;sԮK޸tFԥ_4Aˌlmi\ۙ/^:ҩcğ G[ޢkiuxڥuz5{1Xz՜J󋓉J+MڪKnv~)i^77<.mp}O3jJ^J3晡ިm[zf}:bWyZe|w m5aml_}uXD~}.5`ON)W%T:vx]'i^=sNQmg"-;ȒbY&s84m,;zQ-}Y]2O+yCYw)/ӶYK3ku*`gqR|CjZ~4j!̔vJы;DQc]^Ӫ_l#jZuT'}P Ӕ >W[&M.0),me^%X;gg> 7F|3x]ikPcxXIj6{PC7#x:BkSJX~QsC l{<#Sn?SRC<_zq~1&ۀg|FۙP~xf;Xlam᱃zL.S<\f5l;Kc9Ю՝mEsV5*} -T +ȱv;-ղZs'tVޗ&Sky:[|䵓6QYV|Fz; <2\*wSi 6?]9 ύ"\VԒQ]6ԩ5*]Ync+|M˕Ȁՙ*aCnu(Ɩ{z(Tt!;Kͩ/szEq5\N4u@X:@p]K2%^', cB>*ܺurMqTfܸu^$Ou=`)5`o_jCղgZK X?5p]Vg:dv泚ec6nMt V]^݈7/u\ښ0U,kZ,jFo(7}-&huQ>ԓ5m!k2ΎğcVm1BoU8S{] 1k7֜2cM7ȣ3כq6褴Ϭ?fxaQgc蜟&U}Se\GOTv= 7^"]yqzo{4fj9{ȾI}Եg*hSo6ˁGC?.m7:1f݌Xѽy]ͥ9-Es+m3n\>u=1W^^ѕgO8ڎ羹De*S)x= Л X!2*t݊9ě}nʴjЍ&,^R_Ub޶ n@^el$i:KZ^̓\?ӟ̚Ӎ6^;zV_{iSOF/G "`@X B!V+D"D "`@X B!V+D"D "`@X B!V+D"Nuʍ{~oU[NjR>ͪsƥRtNn۽+u_P n(*IDAT?aX?rLפd4"+mw*Ϝ6=lы_l1ijUQWX,VP*Uc[f̊4},ir9W7]i} W>-=ypH Ҹ^wr?4E-YDߢZ]ݝ2@1߮OV~Fo\+-j63?rkӧe츠,qْ;3Kpݒ'3h lQ_D+xH 7_^nM_2q m'VÝbkAL, X;+$]6W^XCky'w1]=be5:x{ 8Rl}5\_~K.NY^s`qϨyky8ZWjPtK YSztPk!S¨n+ݓh(P=FĿ"{GMi{hyVboɦ%/ǿިfj`*) kJoZd$`@_MF|LBo\]3?A/xKO昶F!8bN=}9e3W3o8TJj[tFL[,Q_5ZQ)֪DmuuV>yt{cO$`{脷Ӛ|yTS7,o /s~^yuuld\1R.\EB[OoOwÙ)n._SJ.Ek'hNK`*x X{aAzaa~%On샵4_{ըlcK'{(9וʖ٧JxJs"U34hǞ ~jJslcOYxX3bDemo];e 1.晸OvО/-\{Z5e(`5vv5cCɰ?Zsp}Yrpm=({#X]q/oTenOJ}+FZ;Srmk?nO_i@/v;U߻R=Q수>WXqX[V*\Z1j/ΆxtS^Z>ReT`MT6Y֜91k>D Wn\Z1^yh}D'`X5X,cy9֫&Q֏TH\ %i,y S"`x0ycq9^?e XЗu WFǦrhL.}y.@߸-QzSգ@TT~|JE3--FjG]U%AeZ脑.iҖ6X KUZ/V XuCXk*YzzY[X$KB=sq/QHd{d=^̂-ZYVM¢jٯmQ!V.`]ciuD rI/+$‚ Kftxb}-z^o{OhcŬG-[^m3nt{7ʢ}w14AeV(ЧUjeb͠sUV[.AKzQzX$A\83ܸs82NlƽYEo̸.ʍ skA*NI.A`Ka}?evr7T[uCi>7DF4s^+ X޷e)+N^mX;5+,5i+pV+D"D "`@X B!V+D"D "`@X B!V+D"f(_3s烣|}篯3A" 29`;﬚?wW?{]e6vy<닣'1}ֳCF*ӻ" wfߋ=ĒS/Jz=aSy{뉀#2Rq#ǎY/v2s=L7SZos~աEHk'c=7鳤wenQ{RM&\@y[Y/N޹pyS}GN ue:`h|ܲM?8^ HO^(Ty颸e̙ɔԵ*\̪)VU$ԽKΖN\,oS^tYvSo(eL-fɿZ}KneZK w}|옧wSrղ9lGşgVMڱת8[zɇ6mL&LMؼuJF'͗mWS !Z8cƉ뒥[6:Nߟ,3U'Þ}7nM]Sh %ɻ|j1j"!#ߘ>q˖m;}?Z )WܕZ)~pѠ S̒}Y5̪̙7 &\rJ/GU<ⅸqoΘ=qmche?XM!YI'sReŊi֋w%QoA3Ƭ`q?^Rևwj~ynͮ= ){+o;;#}Sy/Mٰ2R,o{B ^xqBZ+/e:[*Hۙmb3_/o: &~ҥnYW"5jO04^o` D0Ug[Ǯ ġ_^)l9qWU}=a֏G)oyg+/}~n濞Yb?9E@$֛US\v&%3w)teU_4 b3 /jm7>eg}1llitb"ߘ>!#6]>uu۷,cy[dgB$9ղ}Yb s̗ގ4ax{Fe)͕׉5,?ҘI/č#a`J~ 3^X{d熏mKŒsΖ.ۗ5N.VZBpVFˑڽeG?/yRu|ʚW&'7l3jTogzt^o$zer3h{w1Ez?-UkG[6=;ƺL.4mQ՛Jo ߙ3om^RՃf!jժ9e19`}noHڱux qO}o fO;#e/]Lhewe36oTr0ZNj4S݃WNp %]gK)2F;h´eF-_{<=x q/{7+ӃK4a갅en6{/i]upU+gmMˮ=~쓳79c qれqQXj'jA+:qXsG4zҏ޲5h5;[_ ˹9VS/ XIIZ݀#2jXfUQ&`?^F,Ysb,Y[9Ikzxϒ=OٔĭS/_3gE&K1j?nc7) DWU lG_b]K%mrF-ߚuNfMNM|ekkGCnG?{EW9gTNo1Vޠ~9%*1%\㣖\cKogDff|6 -7RQW^-𽫣BvCk[dリtc<mSGYD̴{Jk5aGE2Kv5*z"i rFۦ8mJus|S9':q踆fmb~Gmrʝ<.u|{7mj/I#76ݶI]gߍYwXCvq1XxvHûq?x有%թ1jg36oTr0Zɻ]8yjձO4-ٓ9bX;VySXUkHg2&]EzT_Svٜ9\Z-Y\Unĩ 3s7>j}1oE66o}јmUXKSZ8ؐĘbI5ncBsN󵗌,gwL/4W N/kH]oXeTz(n{,CIZ7ivꕷW5Ct3sCD6 g~=U߆þd]/ .$@NjYdN 㴩]i[`rvYhIr3#`֮GEtpe4gj^2lw#0L-f;tA*d{{ͳ}xI9,ـGO^/9/ 0uE:V[Ų~\_rʌM%yfٵ?:uⳋ7={[ K3mr/fC斚izQ|-@-Qb-O9_̫"0^9&6ᢞl̵6ތJLbI 9VId́%2.lJO3[ W6cT2>+RloZh9gdkf~f-ubS4v\S>ȟGZoR[+i+?Qp׌zU#i#gG fڍGIq"8{/)*ԎW ɾx;Lll9iq*ɽX1pdg("`}E'O.SvfuGerl*;&~MyOm._[k|옧W@ocDZ6/YW]8C_+ӿ}߰ʒ! 2@̔S%#3{㾧^_dMF I Kr9?uuҴ"ez@3s8`u gJʍbv- ΈꪖXQlcqF~k=XT.Ю/ʀw:y?m%.;j{0U;SB?95ZJ{rtsKF~h}Y8)nNңخ XGO̿WԽZ"@qW&dޛ_MNt,ܰ/:8N߿\~BVM-, Ԫ97o=8JBQb 4k>azlRmrQj#S2'm0.[ m k_<1e3`64։FAS3=dʁDMX~4fSN^hJ0Ne?,'_g}Y^5g^<%ӜxF.@'t팗O=xt RdX14AwXᣧu5LAvtUXɳCޜ1{m޲]8YIeŁfâމ}fHS烣;EY=ϙDɦyD˴H)cy1prf?2Z[V6R\+ek}s}䎷䮛V!Sڎ,~IcvMԻV1MN^Y&zkSVW[w*` ttld7]O^av5{ҽKјjʆQľ2ק?FjڋEY=-Z:|S  Yjvj`!*kߩ_ejU/T1?% UR(XN?8`%5r,YY%5Ro XcVehK{ﴑ_6Z50` zt{<&–Yl`2 vLKkO 'E ޔ1C룖>9 ԧESX< 1a\<#XmGUd!u-4y=Hot ЏGE'_9c>6@crl;^c8`LJS# :3fSLyk{ؐ[mi6ـU_\\tϗia[+T pVVm1rZf/wI X[%s6vC*D%._y뫶c0[n'-u.9讉%ꡭelW^2`zR%ʳ:}{ii7|= Z6y5ku"`ԣ!>z<&!*1%<5]X)&Lx?]o_/wL_o[J@?CNz;'1q1$z<9xw>ݿyw[@?CJ[Ǿ>{ְGW^+V+D"D "`@X B!V+D"D "`@X B!V+D"D "`@X B!V+D"D "`@X B!V+D"D  .H(JL+4@X "61IENDB`rdbnomics/vignettes/rdbnomics.Rmd0000644000176200001440000011442513744125415016703 0ustar liggesusers--- title: "DBnomics R client" author: "Sébastien Galais^[Banque de France, [https://github.com/s915](https://github.com/s915)], Thomas Brand^[CEPREMAP]" output: html_document: highlight: default theme: simplex smart: false toc: true toc_float: true number_sections: true rmarkdown::html_vignette: highlight: default theme: simplex smart: false toc: true toc_float: true number_sections: true vignette: > %\VignetteIndexEntry{DBnomics R client} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # DBnomics: the world's economic database Explore all the economic data from different providers (national and international statistical institutes, central banks, etc.), for free, following the link [db.nomics.world](https://db.nomics.world) (*N.B.: in the examples, data have already been retrieved on april 6th 2020*). [![](dbnomics001.png)](https://db.nomics.world) # Fetch time series by `ids` First, let's assume that we know which series we want to download. A series identifier (`ids`) is defined by three values, formatted like this: `provider_code`/`dataset_code`/`series_code`. ## Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, echo = FALSE} library <- function(...) { suppressWarnings( suppressPackageStartupMessages(base::library(..., quietly = TRUE)) ) } ``` ```{r} library(data.table) library(rdbnomics) ``` ```{r, echo = FALSE} reorder_cols <- function(x) { data.table::setDT(x) cols <- c( "provider_code", "dataset_code", "dataset_name", "series_code", "series_name", "original_period", "period", "original_value", "value", "@frequency" ) if ("unit" %in% colnames(x)) { cols <- c(cols, "unit", "Unit") } if ("geo" %in% colnames(x)) { cols <- c(cols, "geo", "Country") } if ("freq" %in% colnames(x)) { cols <- c(cols, "freq", "Frequency") } cols_add <- setdiff(colnames(x), cols) cols <- c(cols, cols_add) cols <- cols[cols %in% colnames(x)] cols <- match(cols, colnames(x)) x[, .SD, .SDcols = cols] } knitr::opts_chunk$set(dev.args = list(bg = "transparent")) display_table <- function(DT) { DT <- head(DT) DT <- as.data.table( lapply(DT, function(x) { if (is.character(x)) { ifelse( nchar(x) > 16, paste0(substr(x, 1, 16), "..."), x ) } else { x } }) ) DT[] } ``` ```{r, eval = FALSE} df <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df001 data.table::setDT(df) ``` In such `data.table`, you will always find at least ten columns: - `provider_code` - `dataset_code` - `dataset_name` - `series_code` - `series_name` - `original_period` (character string) - `period` (date of the first day of `original_period`) - `original_value` (character string) - `value` - `@frequency` (harmonized frequency generated by DBnomics) The other columns depend on the provider and on the dataset. They always come in pairs (for the code and the name). In the data.frame `df`, you have: - `unit` (code) and `Unit` (name) - `geo` (code) and `Country` (name) - `freq` (code) and `Frequency` (name) ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` In the event that you only use the argument `ids`, you can drop it and run: ```{r, eval = FALSE} df <- rdb("AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ``` ## Fetch two series from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, eval = FALSE} df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN")) df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df002 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.7, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch two series from different datasets of different providers ```{r, eval = FALSE} df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "Eurostat/une_rt_q/Q.SA.Y15-24.PC_ACT.T.EA19")) df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df003 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics(legend.text = element_text(size = 7)) i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) legend_text[2] <- sapply( legend_text[2], function(y) { paste0( paste0( strsplit(y, "active ")[[1]], collapse = "active\n" ), "\n" ) } ) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch time series by `mask` The code mask notation is a very concise way to select one or many time series at once. ## Fetch one series from dataset 'Balance of Payments' (BOP) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR") df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df004 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value), max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` In the event that you only use the arguments `provider_code`, `dataset_code` and `mask`, you can drop the name `mask` and run: ```{r, eval = FALSE} df <- rdb("IMF", "BOP", "A.FR.BCA_BP6_EUR") ``` ## Fetch two series from dataset 'Balance of Payments' (BOP) of IMF You just have to add a `+` between two different values of a dimension. ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df005 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 2*10^4, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "s") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch all series along one dimension from dataset 'Balance of Payments' (BOP) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A..BCA_BP6_EUR") df <- df[!is.na(value)] df <- df[order(-period, REF_AREA)] df <- head(df, 100) ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df006 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ## Fetch series along multiple dimensions from dataset 'Balance of Payments' (BOP) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR+IA_BP6_EUR") df <- df[!is.na(value)] df <- df[order(period), head(.SD, 50), by = INDICATOR] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df007 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` # Fetch time series by `dimensions` Searching by `dimensions` is a less concise way to select time series than using the code `mask`, but it works with all the different providers. You have a "*Description of series code*" at the bottom of each dataset page on the [DBnomics website](https://db.nomics.world). ## Fetch one value of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, eval = FALSE} df <- rdb("AMECO", "ZUTN", dimensions = list(geo = "ea19")) df <- df[!is.na(value))] # or # df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19"]}') # df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df008 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch two values of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, eval = FALSE} df <- rdb("AMECO", "ZUTN", dimensions = list(geo = c("ea19", "dnk"))) df <- df[!is.na(value))] # or # df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19", "dnk"]}') # df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df009 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch several values of several dimensions from dataset 'Doing business' (DB) of World Bank ```{r, eval = FALSE} df <- rdb("WB", "DB", dimensions = list(country = c("DZ", "PE"), indicator = c("ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS"))) df <- df[!is.na(value))] # or # df <- rdb("WB", "DB", dimensions = '{"country": ["DZ", "PE"], "indicator": ["ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS"]}') # df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df010 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_name, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 7, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch time series with a `query` The query is a Google-like search that will filter/select time series from a provider's dataset. ## Fetch one series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "WEO:2019-10", query = "France current account balance percent") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df014 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "WEO:2019-10", query = "current account balance percent") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df015 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = `WEO Country`)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # ggtitle("Current account balance (% GDP)") + # dbnomics(legend.direction = "horizontal") i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value), max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch time series found on the web site When you don't know the codes of the dimensions, provider, dataset or series, you can: - go to the page of a dataset on [DBnomics website](https://db.nomics.world), for example [Doing Business](https://db.nomics.world/WB/DB), - select some dimensions by using the input widgets of the left column, ![](dbnomics002.png) - click on "*Copy API link*" in the menu of the "*Download*" button, ![](dbnomics003.png) - use the `rdb(api_link = ...)` function such as below. ```{r, eval = FALSE} df <- rdb(api_link = "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df011 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(period, series_name)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "s") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "s") points(x3, y3, col = cols[3], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` In the event that you only use the argument `api_link`, you can drop the name and run: ```{r, eval = FALSE} df <- rdb("https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0") ``` # Fetch time series from the cart On the cart page of the [DBnomics website](https://db.nomics.world), click on "*Copy API link*" and copy-paste it as an argument of the `rdb(api_link = ...)` function. Please note that when you update your cart, you have to copy this link again, because the link itself contains the ids of the series in the cart.

![](dbnomics005.png)
```{r, eval = FALSE} df <- rdb(api_link = "https://api.db.nomics.world/v22/series?observations=1&series_ids=BOE/6008/RPMTDDC,BOE/6231/RPMTBVE") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df012 data.table::setDT(df) ``` ```{r, echo = FALSE} df[ , series_name := sapply( series_name, function(y) { paste0( paste0( strsplit(y, "institutions' ")[[1]], collapse = "institutions'\n" ), "\n" ) } ) ] ``` ```{r, echo = FALSE} df <- df[order(period, series_name)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 4*10^3, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch the available datasets of a provider When fetching series from [DBnomics](https://db.nomics.world), you need to give a provider and a dataset before specifying correct dimensions. With the function `rdb_datasets`, you can download the list of the available datasets for a provider. For example, to fetch the **IMF** datasets, you have to use: ```{r, eval = FALSE} rdb_datasets(provider_code = "IMF") ``` The result is a named list (its name is **IMF**) with one element which is a `data.table`: ```{r, eval = TRUE, echo = FALSE} str(rdbnomics:::rdbnomics_df016) ``` With the same function, if you want to fetch the available datasets for multiple providers, you can give a vector of providers and get a named list. ```{r, eval = FALSE} rdb_datasets(provider_code = c("IMF", "BDF")) ``` ```{r, eval = TRUE, echo = FALSE} str(rdbnomics:::rdbnomics_df018) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df018 DT <- sapply(DT, function(y) { paste0(": ", nrow(y)) }) DT <- paste0("Number of datasets for ", names(DT), " ", unname(DT)) cat(DT, sep = "\n") ``` In the event that you only request the datasets for one provider, if you define `simplify = TRUE`, then the result will be a `data.table` not a named list. ```{r, eval = FALSE} rdb_datasets(provider_code = "IMF", simplify = TRUE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df017 data.table::setDT(DT) display_table(DT) ``` The extent of datasets gathered by [DBnomics](https://db.nomics.world) can be appreciate by using the function with the argument `provider_code` set to `NULL`: ```{r, eval = FALSE} options(rdbnomics.progress_bar_datasets = TRUE) rdb_datasets() options(rdbnomics.progress_bar_datasets = FALSE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df019 DT <- data.table(Provider = names(DT), `Number of datasets` = sapply(DT, nrow)) DT <- DT[order(Provider)] display_table(DT) ``` # Fetch the possible dimensions of available datasets of a provider When fetching series from [DBnomics](https://db.nomics.world), it can be interesting and especially useful to specify dimensions for a particular dataset to download only the series you want to analyse. With the function `rdb_dimensions`, you can download these dimensions and their meanings. For example, for the dataset **WEO:2019-10** of the **IMF**, you may use: ```{r, eval = FALSE} rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10") ``` The result is a nested named list (its names are **IMF**, **WEO:2019-10** and the dimensions names) with a `data.table` at the end of each branch: ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10` DT <- paste0("Number of dimensions for IMF/WEO:2019-10 : ", length(DT)) cat(DT, sep = "\n") ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[1]] display_table(DT) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[2]] display_table(DT) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[3]] display_table(DT) ``` In the event that you only request the dimensions for one dataset for one provider, if you define `simplify = TRUE`, then the result will be a named list `data.table` not a nested named list. ```{r, eval = FALSE} rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) ``` ```{r, eval = TRUE, echo = FALSE} str(rdbnomics:::rdbnomics_df021) ``` You can measure the vast extent of datasets gathered by [DBnomics](https://db.nomics.world) by downloading all the possible dimensions. To do this, you have to set the arguments `provider_code` and `dataset_code` to `NULL`. It's relatively long to run and heavy to show so we display the first 100. ```{r, eval = FALSE} options(rdbnomics.progress_bar_datasets = TRUE) rdb_dimensions() options(rdbnomics.progress_bar_datasets = FALSE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df022 DT <- DT[order(Provider, Dataset)] DT <- head(DT, 100) display_table(DT) # rdbnomics_df022 %>% # sapply(function(u) { # sapply( # u, # function(x) { # sapply( # x, # function(y) { # nrow(y) # }, # simplify = FALSE # ) %>% # { # data.table(Dimension = names(.), `Number of codes` = unname(.)) # } # }, # simplify = FALSE # ) %>% # rbindlist(idcol = "Dataset") # }, # simplify = FALSE # ) %>% # rbindlist(idcol = "Provider") ``` # Fetch the series codes and names of available datasets of a provider You can download the list of series, and especially their codes, of a dataset's provider by using the function `rdb_series`. The result is a nested named list with a `data.table` at the end of each branch. If you define `simplify = TRUE`, then the result will be a `data.table` not a nested named list. For example, for the **IMF** provider and the dataset **WEO:2019-10**, the command is (only first 100): ```{r, eval = FALSE} rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df023 DT <- head(DT, 100) display_table(DT) ``` Like the function `rdb()`, you can add features to `rdb_series()`. You can ask for the series with specific `dimensions`: ```{r, eval = FALSE} rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", dimensions = list(`weo-subject` = "NGDP_RPCH"), simplify = TRUE) ``` or with a `query`: ```{r, eval = FALSE} rdb_series(provider_code = "IMF", dataset_code = c("WEO:2019-10", "WEOAGG:2019-10"), query = "NGDP_RPCH") ``` We ask the user to use this function parsimoniously because there are a huge amount of series per dataset. Please only fetch for one dataset if you need it or visit the website [https://db.nomics.world](https://db.nomics.world). For example, for the **IMF** provider, the number of series is (only first 5): ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df024 DT <- DT[order(-`Number of series`)] DT <- head(DT, 5) display_table(DT) ``` # Proxy configuration or connection error `Could not resolve host` When using the function `rdb`, you may come across the following error: ```{r, eval = FALSE} Error in open.connection(con, "rb") : Could not resolve host: api.db.nomics.world ``` To get round this situation, you have two options: 1. configure **curl** to use a specific and authorized proxy. 2. use the default R internet connection i.e. the Internet Explorer proxy defined in *internet2.dll*. ## Configure **curl** to use a specific and authorized proxy In **rdbnomics**, by default the function `curl_fetch_memory` (of the package **curl**) is used to fetch the data. If a specific proxy must be used, it is possible to define it permanently with the package option `rdbnomics.curl_config` or on the fly through the argument `curl_config`. Because the object is a named list, its elements are passed to the connection (the `curl_handle` object created internally with `new_handle()`) with `handle_setopt()` before using `curl_fetch_memory`. To see the available parameters, run `names(curl_options())` in *R* or visit the website https://curl.haxx.se/libcurl/c/curl_easy_setopt.html. Once they are chosen, you define the curl object as follows: ```{r, eval = FALSE} h <- list( proxy = "", proxyport = , proxyusername = "", proxypassword = "" ) ``` ### Set the connection up for a session The curl connection can be set up for a session by modifying the following package option: ```{r, eval = FALSE} options(rdbnomics.curl_config = h) ``` When fetching the data, the following command is executed: ```{r, eval = FALSE} hndl <- curl::new_handle() curl::handle_setopt(hndl, .list = getOption("rdbnomics.curl_config")) curl::curl_fetch_memory(url = <...>, handle = hndl) ``` After configuration, just use the standard functions of **rdbnomics** e.g.: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ``` This option of the package can be disabled with: ```{r, eval = FALSE} options(rdbnomics.curl = NULL) ``` ### Use the connection only for a function call If a complete configuration is not needed but just an "on the fly" execution, then use the argument `curl_config` of the function `rdb`: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", curl_config = h) ``` ## Use the default R internet connection To retrieve the data with the default R internet connection, **rdbnomics** will use the base function `readLines`. ### Set the connection up for a session To activate this feature for a session, you need to enable an option of the package: ```{r, eval = FALSE} options(rdbnomics.use_readLines = TRUE) ``` And then use the standard function as follows: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ``` This configuration can be disabled with: ```{r, eval = FALSE} options(rdbnomics.use_readLines = FALSE) ``` ### Use the connection only for a function call If you just want to do it once, you may use the argument `use_readLines` of the function `rdb`: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", use_readLines = TRUE) ``` # Transform time series with filters The **rdbnomics** package can interact with the *Time Series Editor* of DBnomics to transform time series by applying filters to them. Available filters are listed on the filters page [https://editor.nomics.world/filters](https://editor.nomics.world/filters). Here is an example of how to proceed to interpolate two annual time series with a monthly frequency, using a spline interpolation: ```{r, eval = FALSE} filters <- list( code = "interpolate", parameters = list(frequency = "monthly", method = "spline") ) ``` The request is then: ```{r, eval = FALSE} df <- rdb( ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"), filters = filters ) ``` If you want to apply more than one filter, the `filters` argument will be a list of valid filters: ```{r, eval = FALSE} filters <- list( list( code = "interpolate", parameters = list(frequency = "monthly", method = "spline") ), list( code = "aggregate", parameters = list(frequency = "bi-annual", method = "end_of_period") ) ) df <- rdb( ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"), filters = filters ) ``` The `data.table` columns change a little bit when filters are used. There are two new columns: - `period_middle_day`: the middle day of `original_period` (can be useful when you compare graphically interpolated series and original ones). - `filtered` (boolean): `TRUE` if the series is filtered, `FALSE` otherwise. The content of two columns are modified: - `series_code`: same as before for original series, but the suffix `_filtered` is added for filtered series. - `series_name`: same as before for original series, but the suffix ` (filtered)` is added for filtered series. ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df013 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(filtered, series_name, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df[!is.na(value)], aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() df <- df[!is.na(value)] i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 4, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` rdbnomics/vignettes/dbnomics004.png0000644000176200001440000021266513414003034016776 0ustar liggesusersPNG  IHDR~ sRGBgAMA a pHYs%%IR$IDATx^wW{f=sf/3c=x0`I&IY EAd02 alB q  ƀMϮջ[RIꖾY,T]aWuҮw/VCD=kD}6Kmn=[КuuƀCՋYOkVRݗ $[>ڸs0XwiNwVZ?-5;xHNuy"'K3#zӶ>~>hcj_Ƶ/}*X?tM9yUC, =wM\uMcKu_Ͱ!]'sZAYkgc5Lۯi/V33?(^-xVFկms\ޣvRnf Q]4]`GvfKbJ5)>4/'+#z,&e#J6Y+oٲh630ͻt ]_k`EM}~b[֣=&zpavC^Ƶ[_~m!0Y'X#cO^iQ_|b[EٵG\|Es+]s[Wk׫IAѳ<Dg} VJl0N/zeѳqt0G:Hm\g]ob ƍ5hDsjZG,1==cYgdm,A:C~" : pBڣvuĿ?5׆գoZh)zV@:zn r 3K=ˇ6QlP{>Htܨ&}K N>e+Ѯ$@EuRlRO|kz|+I[f ûY10h}^ Ra +fb"3jգ]/]u1YX%_|qڢokdr } uz*-j>i-}Ѫ;_oU7n׿iw=[L!}U'W2"^Ye`Ub;$=[Af6y߬s߽ޤTm]4 \?a~eiV=-|g]ߘ=idlާ룷ӫwFu1fqJ`0SZV^DKō(gP`mՕEf>ynqGoEJ?Dk3 q؈8,%3ee@oTHu:ݟ=m-H)sn}?`|OVa@ß|{M6]Qa[i "%z^n.c}|CGr$/k6K|8ġ%0MAoT dgBEn8#k%D 3DgE :=(B сDgD TZ%};&Wx~y)U5U~_z#26d8tDA|an^Oy* . f(,J_LQZ=Dlc^Ě:{b{投hޣ?SDL;L̮}~ .CGKG1}XD~O3\iVrdd5 Kޘ]iev086F7cl:+MjGJ\$|.:\t*G/5n7ez;ė-3W8 o^^J3DHuuڵ{K[+-^#;~h+sU5MYn :wlٿZݜqݟ79xHĜ?c9n]-V^!?p萱Ȑme^n.cCBXiݮ}0ҼT8q08`acmB)F[%Ȏ:sb 7B*z.%e.CgYaF7ՙ[܄bͲs/7m'ʘxJ0ݱlclk_Yw 3^-zM+?D¬yr?c?0W&7ZuSeK?eYIbY_-}JkGbO)s3;^oiuk[y=R[֮0zFl8NPfw$E)ELӍa)ӕZLOw_u=UM۳ÊD:ۼOL ƲZ)%תߐùƬ]WtR})úZbOs<0z,N7s)/QKV1څSakcbW؊y,j߁:ؙbw$Aδg*T|siJ{GaecvovÓ9KIbRͪNsu ?可V;;~{SAsN?gE*ZZii~ZqS4M(Ui)8`N~ͷiW%W8q"h-]Θ\k:*͂E'gQ>l--X#GOЃ *GPʫlt[Ū$LQZ*qWT ̣yz WD =;yHbъFkK48 [!fejf/YnW?zNJ)jm!1u MرE;v}8#ak:{;S]7y=r?]F~!E+,*((H_}kr J3G{9qn vc#ak`@pO<ߠN# ˆE[c DZmcbفXE "S [v촏8p|=r+ V<\{M} yRKBp#ǽl;=n2ak쯙, JLtq]2\%]&DώA q^v}r9竫!*؏^$zQBEn[:`XaƷO0s/OY' >ؕnp JR6oUx0։]cWak7tQbyVWyeoH~=;v{Z}ZCGrSf +zvy 3"DZyBDZ}KX%`Ѽc>JgV˭ֹOXepGb+}%v؉J_}F'5M݆.]TPzѳ`aMۥ,K?{ԘuV3툞@!z:nH ˓h >\D{:wlJ`@M6yT.2_b?c^[?nn?%7bGҋlĪϘ.{C*{DpSFkKc]@ z:FZoLJҰ[CGK憨cO9yA )3ǥ))"ѳVpeFVû+mdLt42qjf:{T9ZԮ={v4v$:aGiqS+ӥ2_=/[Z)kcקƲ}u87EJb7J5z~Ma=n@ѻ>Z<[v4f"45@!i`Mؽ5ѳV0XF&*k}bV׮?/:Dtb+y`mo=V;qęJWdE`u>e_L.Z 5ۘ m۬(pIMP$gJ!2pI bÅxo2%(JZv@-:ojmXi:Q}JֹIb1HѴ5fr"tO"'zJiYՙ[Lӱۤi|S =EXQPѳ践uy6fm \#o6Qb&XyHF9c*q4vQ!*69qb6nR^ Pƈ*je<}y=[b{c(s3p4ѴXQs)/emޞr"~= 4ooe)G}sW☟{MY*"BU) P4|, WͲY(xظ)gVo="A,Ҽf0n~$LqN,XM, CJO=kUz/}/N+Gl2v(꜈" [){*7/OxN,r7xb&bTPPp$qS}Qzlewv,Bv2C 3cD='wM |A-?7[>˅kWg6WNА}^ׯӕ銹[jsXn_e// XVe1]˗l\gUaSv{e=wl}hpTJ1)O2l_k sfAZoX'v\uNϷh_n.o=g,b֑:Rre'rٓ/97Jo _xM# {zlG7_7텗.^7~cWHZE 'gAU=Ϯg1}.a,=b#z( fdl/=2zsk=+|g6nNɽe/}{GZ_=uk5=xh9i׵fNX`a-:1"=MYO~2;mi ݹ>_bDϷ~yxrր+o殐_OK2tz{ ?h_?ˬ{b?=7|m;Z~)gQO矔d)yrַ/Z׃N sb_\rAqtr9mΖ0W "i38v\3e#zz px KTqw_S=D>V@ޑmfA7sƁL=ɝgTlD% 7Nmȣe|l}S5f҇e竕骩W~X-G+[|=~{uCXa/'#u?J~WR>-ezmIY$c==.2n9Oe-wsܼ}7/zM7XV{; DϨ؈(7J6ѳ% ^͇ b2Ris\9)iyt#w- Xxl1_ѳؗ :tXOoHok\s&X϶-#uFF>0_`>}nˬY,F-gTlD% [$D A܍kOx3`?m#cÒPw/ڱz9ݶD}flg+#l|)om6h;1:bܒEl=z6_+g3F D@"z( f(zg:xkͧ[!01C0PAϔ(|GDtir fLC*p2zcZ{>_~DobF r$:RҲc}megT=Pn3le=;fP׿P~ڌ14ߎFO gʍ`g1f^<>>oN,7[9т;{+=6r ;`O?sP\ֽ2{UjmæV"zNvz<8 ~}/GOKOZ?0>L߸G|U'w+sÔ=.A6 ‡}@;x_ANC?/0W{Wmצ=r$a㇅l.m<·W˗^PTk- (޵Wu̳EYo)%W_#/_UEWy.Qwojߺ+ =\0)սR>cZ]?^M3{}Km2ԛed,xa9%[bGσ;v|L߹~Er[lYʇ2{Ώ}[M-~x1<nr$aѳcn$zz\oUxօS-/4,u#,vjiwE>`0̼g o_|yG>{O76DzmãVJ%zwo?gL^F|,^rӻ׏Qi*~ s+BJ= 2i$΢́FnosvWE(e^ kbgT=Pn3ѳ7\DeqhC􌊍r$ȳYq% F%eG\=b#z( f(z~S+eG\=b#z( f$zUZׯmߪs%G􌊍r$do޻v]{6gA٭=WrDϨ؈(7JJ=o;߾݊C٭=WrDϨ؈(7J(V+9gTlD%DRv{Dϕ3*6gʍ`"J)=J3FI0s%G􌊍r$Rnu蹒#zFF @QLD)eG\=b#z6V 1uNTv{l;=W6sAD/gM>CQGDeͬcmi]P{%D$vb[qH( (77k䘈:b'*սg7Ǝ{ۧu~mbwn=!$@"zv)3 &t-Ǐ NM=_lQ̈etמK7eǮ=0z~㦘UBO[v<ެ.3/ʗcK!bH`>4X՟mز]A#Ə|xY?;tb+N|h|[w}/}qH ;yqJ=2]ѣrݻbM:[+oL-"zOevP^K#֭ [v =q_}N9zWsa8} [߸i߮\bisU(|޻rqڪO˕͊WnvǣG;w>cm~RÇ_a-c&MG]g>' 1E62>=kq%bvmg?^緐+Ah|Xu+K$Ξ/2S2uǫWm.Kbge/+OS˫,N>zInR؃jmJc_ČH4b|Y'g>z|Ҍ#AT߿c1f?rܹsk+Vo{Vsߋ9$LPΝ1#er'*E7ZkԲ*Tm9 q<$߼_o)]JEoeصsSRCD'O}5mNYc~=tďVո"p; o"]_ 9a Sj,HMrNJQ MY~+Wҭ+oLkO^x SVHHL_y%s+tmmbуF$nٵ3ug]ٓbn6ox{Ib}7i]{ː7tɍ2geLUÇ{{VĤ}鋗ɢC޻'ȉc'}~'TY8zO,,,ѣߝ]Ft1-M7Ї2w3yORB9+q\t:@բբ{gݝ;bʋ)f^fEʼDZ, #GM"q2{bMb´93I4 =qƭo4n,!&Ď4z4iᶝo 亍0uJX5uO8}1L>oϿ蹰aΑcⵃF>=CGO+'wⴳ_SeʆsvޢrrY_7ڻT@11C*P1ۙ;^XX?q<!dŚ`fܨ`{?6VZ3O~}=V;W[4K eQ9vXY%x ۢ!!s(P%)I{/ID.]9EWZޫbnb>@-)XV#l9f=|h\k3|]No}x /?x`QbD7nn| [8mNS_#8G&$fe"#{1cN l:fɇ}b m/suK 0eϜ}ݻ>ٻ_lqmxRt,g(JUGek|I~$ʦQ8DeU9/\t@Pq6A(:GtȄHmG&o;'n9;+xgb_((s|o'O)eSDKEJ]qs-:/G Ízr7+P{d:z~'{GMf͑]q㦤\$ܽo\bj9Ѿ]2oɹNa:.xxbǽPG6=(XMSLeP!Qr_hCэ2}o{嶈2f] ǒ+cc(g\ blL͡"PE2.\,ۈRB{E $!q\Ag´97XKFϕ1~=2o;(/=?y9ǖ^?mfl&zS<9bD~[w|(Fϣk>r6f,Cv9̅l#c1CE։)d w/>"sN1GP_Җw2ЗU[qEu2 sqVZ0#i9T1թFhL~e;;vX`ѳ mcLRf.;?72!Q[*r_yP 6Ϝ]8M|9\ ם9K&L؁WDKDEυ]!̜ 2sME)c,>\bM̈9H9 M4SE%;\ȉgzbѓ]*mzEM'&hNnL!Cl(/4WX*sƽpiٟe171O%ӭke3QܔKFcq3LZ+?S}R\a.G2*u]{FOff|v]Ї}gɲb%sRR߼gw?\&2%+Μ=g@n)sKDE{oˎ]޺-X#<3|TJR9簢g99)_}[0_)\1cS CL/ ]bw3v aC/4WX*n_6d=z$sXWeCD[J)se)'Vbo~wTRј+sѓCl{/I\LmDK^OK׈U!(iQ)\%c'{^^O<[AF3ir~rCždY *=si+ 7e@ M:ۚA=2o;(/=\J^G+VEf8m΂ϿaW`22zW_J1gJf،/vZR^.ۘѳ-Y28}5TKLQRH{Q%RXX龃'N d;"=.`]+57‡{>3iXCGO8DRј+1c'&Hv,g.Z]?_r&q2.zCˋeĎ>sP"u%k?\\bY Jߟew1~_x\'ɓ'ݲcװ'M{(XaaWJ_qYɬSCFMߟAgķśA\rnaEf)%6DXso3QJƸև)%()E^/Ŀ]U5C1qoFfu_?ϕ?-X7PפsSܹ^9uwyǍ8{~Sbb/X6hD>sVtݻ3v }T[Fct-mW]xYK<#9aly (>L8yŎ,^(^.fbެE/CW5љl[rY{A՟i<7l!:Cžd)cF&L6E=%8ߝ;Bc7EL8|h3dD1I3暋3g%NY1F$$O9O[ѳhp]Jb:&L!\{ɻ'H=v~O]bB*^lF ',XvZ^(V^l1gs>b=|8kh ۈ=8>q֔d]+t^Jdsr<(4&uHmTc&۔ufC((!Ǡ0Wúb_qS8:{A~)SD]S[Lylc-s8&yΗ,P,YA(ͷ%b#ڋX;,])eRquDQ'O~>uc& .8z`fMSRwjcF$$[ts뀹>,8圔DRJ\VΝ{>˙0mΠd}O)e '>B1[D5=z77ڷKI! D/zӵo6"=i)˿;w^L|h8mL8#19~l3LA/;pur'H8|srr=|H6.^ZnӨ S1?(DYKF9Ok?<~9)9G~a֭[?{`vhi{LJJ|뛷,f.JiN{_oxgbbbĦ 3⸳Dُa1Cbe*ōoֆ-;.xEۏ~'ކqѺ8|T4˦*hΈiݻ2ļvaӛ2Lg\M)TjeYvޙ֍-mQ#s/Rr)OJ81krc*U0mRvzɩW;>RT+* \#fype4DρVf }3/lJBk˷֯:7eWeYmnnW h/9W~pI\2W2s^1QԲ*x6D{viZEgSS+@ɱ'NB-~=Ogg^?7E]ĐD} i\ՒF"=vVaDϫcy},˘[V|kg){'oUŋ֯wĜe}>ۢe[RVFP1sv3o(Xɶ59uI#J'yav\̹%fۣsS|"z(***߽1pvY`l75+z~6e1pfS6pۢg1Jj ,8+)~2=OS#ekC`g|l mZC 3EQQW=gQ̎nEiSΤǧvQIbbXѳyCSl>fJ,RSe=N{ZMIk` m#܈^#z(**gC1kئsb_ߢbh1ۢg~5;h&(preԙrnYgejG.T=Y|ynaK-ѥ~YڶJQ&D@LQTU4F=bfMiP߽1aYhw̉7 SLy#LiIBVJfϧ}׺SZˌ]}rݮ=2u~װYm{#YQڰ$#SZ7_hݸNܔ]{Ege?5طwѳ1?+(g"'z>y2XjpM`l6<}7mjNm[7srnzmi?W]a)-&^-IU='o_L[V&n/a7Pg^}N_/_#82_Yߊ7eg|S̍u=rnSJMk/dIzg^r9vNzr&?J虢HjXM`ܪӼM;-NٽmYj‡;&yV[\^oSԘQS2J|z\|OkϬNXE10mجIfb3=,~ߙJG:/̞:ø=YۊS⭏ t= { 1³IɧH^8T7a"z(**hRgSgSgSgSgSgSgSgSgSgSgSgSgSgSgSgSg~3h׿0zK.?_1kN}8hL(<9|mf$:e[޳όYs~1ɻ3oնð.1)H=|0kێ6;^o'O?1hH]fN} |_č]psn[?Y۶(8)+S~9_G/^cƍlܬ읏=b)1%{&[ 5FvXS_rU,g(((H/gQ7o֪]DzEg>./V. 6J,yvaߝ=kLݻw.[ޠq߼yӘ+1ELYmr Jg*83RTe??E&^r޽Uk7ma:Xٺ'O>۾Sמ}S}ӡs#GI&Ǩ""]dFOgI^_W_LJ;Qc7ky6s[Y6gڴyK:2t~akK믿.Y^REw={aėbm7p ZF˶ޛ:=uR1n.^k˯kxtckkPj/~V7e9dL7v#/.9^+oTйgN3X_jM駟miުM1:DO~{ODʷ"]EO<9{cnmwlpl޲i'LtrySjjͽ{d۩KMAyIܸ{nѳ\Μ5G~cŢw~p?Y/^9:~oN+u[=knrZׯ__Wި^ =w1Bwĉco)8r՚S)*Š EZ,onݶúѧ8뻽́ m2uϳf'cjCViGϲoPVVOwiߩ?uΝu7?{𫯿; Kǎ/e23tfmFQVD.2gـ @F[o470#iYe=7lҼOA3gUVUp|,xW Vݻw/c՚M[(syy[i~_r՚Vm;~DtRDT3@Yܻ/JN V?޽go}{߲M}*+Wiۡ˲_3rtŋIAo4PM9nGwjު]|cǎ7Cnu|}ʽ"]E2~mӾaeleHݫbUfE "-z~Ώw5m^}7#G?ݳ˟_=w^6׭xK/0ya7nƯ(^,J.:~zC_1QO<;?DI9^b+fM70Fl1I۷o/O_YV׫.7&8{֬r_1"1Q27)۷?L]ҬewjѺUkD߳Խ{-Ow)*B EZ,KVQV_jױ˔'4j߯9kn7 fmkֲ .],^hӾu y /aq#GXy^Ŏ'k?,fGyv%uM2Ll1""]FϢ ɍY7dڻm;3йC?/[ -נ9hyܹM+ogξr%` =Kʕ%˖Ӭ_P;I~st軆O(34qڌ~ɘ+1+WېnbETy&[͛"f2._N[ޥ{OI֪`¤)' q_v\cEEB=D+sݼys>|$ʾݻ"cUhʷ"syՓ'O0hyo޼iL-cØPT3@#z.ǺuGK{^s7oΛos}e(*t=D:/?!fXrvC>gKVܾ}ۘJQZD虢+gHGLQT3@#z(* =SuE 鈞)"ztDEE]=D:g"3EQQWD虢+gHGLQT3@#z(* =SuE 鈞)"ztDEE]=D:g"3EQQWD虢J='$-3Jnӣ] G&#R&Ή,]DUD2@oaJ˽Y^~z6yZҩ,d{au8@Ze#RO#Le_%Edl['ez (7DEE]7zW3{R?,<稉jwA=N+6%ַ}+->yfa6$ѳ)Lw7BSՅey r2٦g8fMrl׺=P2ܦ;l_OL8C,C["kS{ݝySvOc|Ɂ_#;Ma^vҥՍX41iX a}a?[w;]vBu5̟t7+b{a:k%NiS]i}{lp^A.c)~68O]wazz\wǨ ?Vx'a ݴVlxu.z ۽^S}my4+;*oMN-1\"?upysv3[>58n<,u^7J?M~Yǡ9Y?x/sY :@<Y\EЍ==OW$\:2U=;m*k+m,ppsj͔s~Ѧȯėw_cqu9܉~*3]qYv2 os짵vO/̃P?nzN) O Wwn+o-/t~_x芾pwXCrʵ) vV!g>C^qֶKMn,Ѻ\vhBSE%H3EQQW%bxC8MlH9 ISRxbSJ|66'Y2gY_Qg0E_$?W:d]cI>@&OnW=5|֎Jx:=y|+e}(\83LަmHF2Yزw\XʹK |q͝&Z@gk0԰۠|}/vT8˯=rj8Q\lxA.z2_,:vj~m?9x^H+fZ{Jt6T#֥򻲥ۃ)Zɾ[ PD=m%G=Ϫ>G;ByR!Zro`>ɤÿٞ mr&;M|HvBlSTc/eab˳U%9B[\ϼ^u3vq;i Bn#OȤ#ڑ_Tosp8-ӆh[wu=c>& ZRdΛR$qmO]W"?Tol݀ǟȷ 2fXoPyCzXj;o:n,OON&]ܭsظxJG^Bvqܚ'd1+y+/LQDl;9;e\J H6##|ƦxYjsFI[>ppB~9]/C%Bړ+yk[Gj,߽^rDžrs_#(DEE]. u%jGXͿuO'7-vp⛡%7kGSI– zd=){D߾m6g=e%7?KՋlJrG8@)q.:u2ӵ9=X(8xYP>ख़+VJ2_?ryhwrߧnS€ &5c3@LU4rg q]1`FTㄌGufS'sڤm:hw4n0_Al2֝TnWmw}d/gD֏U%:"5إoi75l$YjUwom⭝>2𶻢vwzf[#,o:uS\ǃ/l`?q{s]rJTk1]s,g l҉|wFO䖓p-˒[-A޶l C}F*˻x GQ(q]iKW Y{꡿v2q9s-Za^ ^K5M& X15gs9p}u-|qE]x(0v _ԅ7W,S"V҃ԓzx/ߘ^q; q(+DEE]y=k.A,،/}\u@b |֦TA^:,zV[?|2S2-qŜ7!}7ڤpb0pTOJ,~ z>nY3JE~2w/UEQ,HT|S v.y{%suHp Wf3CrSVuoW}ғs THf51>`bG2bF۫rV 5#QliXU>)>O ^u6Nb=V6_4?Θ"Oӣ!P/۲pNqgG`pB\)nN># 2tPq(Ș=_A7}A޶o)659pY:==9R}ßqNl'l5%䚛SZtba^W9[^]yeXo".<\Hu~]-աb񋼐vBaNg'چ.=zx/ߘb^q< T矯Ϙ5{>4&QE,%s"R" e B Ipv8atiGخck+ПؓY7?Zzu5;klx.;~nwuLJ!:xO>ޛ$}yVw#}Ii7+͸N?RrӖ)6J _2m g1vU9fäqp,rm\:d\x*Jx<'E3J1m5-fvwQYҴ߅܆xpwp}ܾ|-mk)Lo:/̎9Wӛ?EƚNn[K6{uCRm!m ~8pn,GPW'gxNmVॅ!qzZ;._&P襇SO=-Żry.y@)(蹰nyN!&oFүǏ8;|ҴO ZܻwhK/0 ȸs~6bTB/GrsǎKV5i/QOʿ]AcsylWSLK ʿ c~w@rBuH[CHcA{ĘXVeڧ/&3qzW]@y vJJ3ԩepEEIѴQ#AͤE-3}Lk;wp)Тn/Ӕ8x8߯͌eʰ O 2Q5tu~6y6eu۾).%<;+k7AoO{:ƕF}[q\-p<+i,s]ݮE}mNگ%[ rFe5/]}Lw󖷯|or2tanOD\qw%4t'3dvb2zLD.|@`{Nٕ[` >$&|TvֺSmh.dlfvBG0Eޡ)/BAY׷hKY?Z}qnmQ!d} |y[ն T}ԡ3N-Kz<72Gޗp&}ixJʉE*` }-73w'4lVg|4z[ -?pg<~XLrߪ;o~͛7e3Q2 nѺ={e"۷,M[Qq}wVoӜCGd,C 7jΫנXC} UbqU9HR?l: ?v@Oq|ݜnOc z 8#W~> 2y쟟)Wű[~ǿ=ltVQa-3BƁvSGS@/OӺUK43&:۷vS쵁)A1zFx,'}Za,˔1t`3Y'MHoLYz ] -΍_Q[Ky{+rc#]`N!޶n[k+f[UuA8v}m~q^qp9ƣ;QSV# v1Lwvs7.<\Hu{ wJ7S϶ՁǼ_W\.O%>o(Dngy[AC駟̉GrvܭY6f,Ũ۠5.2z٘útyx1)Hɡ<ެYL=z]M[beק@EU.zc5qE^ ngyyI/x>jL l9~'G*T7ͺ!V3+l[o' w9 Gmq`sKfW=P>{;MyK>7Ǿ26%خqmS!jZ[z|*GQpgǍJk u͑C_=׷Ah>FOdGY ?)^ݹ|{ܽ\xKWp`'NsV.2ʼn|~(ugj< mۢ-]q; s(+Dnw.]W;w=zȘow]" ˏ?l6;0/4??E>cR8s].;w;{ɓ'}?|Ԙ-dm!ou coIUQټ% +ƟfdGVʢ%ڙv/䥕-Uml|[]:2 JNkHjVIK5в3Y~lμ)qjO դtٮȶcjlџr$LV2pѿ{Ntm3-Ը9x|=(K~J&eg KfI) G>fڥ}n]#ki!v [4԰Ym}j:׷+/ǤyTԩcRXzvV2$V_O}hoKCAϷ.sG_vsE:7S0+)yj:(][UVuzuAOZuf~u`=c/-+rsoDۀC M\OĞ3NﹻsWW>|Qn~:q};%zu6bs;gj߮7_tI ދ蹰p歍9& T!Æiɓ'?tmum;tK 4k"ڵk%sfI^_W_Le~>jXXcd[Qu79q M/h"zoԤ֬m:֭۷?ZV~)Ϟ~4>sղ߿r՚^}CEST)/gwԤicRmJY=[^K[kO\/K[(?r8U+]71+f5=;3Y&e`sr sO?y+6y_0liMdⓏvkuli XJS#*+/<6cR۴c2r粖+&3C]vO;>+$) xp'E`JƲmƒvSeѻ;Ӭ[q&u&1f|օq?%S{FڜNLg8/.иݖj,Nۧ[bn瞷W[a7߹Bw X8A߶:K atYcz@zf@~Nu AȬVkd;p`_yכzrAWwp՝(ąnP vʕ%{spK\˥?y駞V|ӉPc2rI8#@و̻0M2'/nӾGKnݾ-<~8h^=נOÅY6j}&MIܭ/cH~cfM~1Wb>mѺ]>ߛXsƷ*2z8׮f-lvAJbYScԡ(X\~-ܠ*Ty=!j/ȧħ܈ qݓpυMͪi ß/G ׶Vt'%W:O%]jiu}< j웢ݛl.i#5;3OGҟ tE'f})wdJ^e]aAtiIFN'di]uϓ&L}V:E$b{a&A1̀W߶cR| yLMk תŧ+8onSwǷp֩X& ǖ>\IHkVX hW|k;U8 O kG;hY$C93jWOŬ)pѳ;w^V׿u}w5g+чb7m!vẁ^/Jt`|˗4&QTFϕx}*6Cxя9-Z 1o7#)ysc,oV2z.j"IT^s^~FM7m4{<3$w^ƪ5;u]f̚nPn0uI-=F/̛Һm%tqHQY<O<9p0MN/ R~r=zѩ/5&[n=l!)Z广4o%3t}"z.L4R2JL/g'T)E=0s [*ӽ:JGixmNEyEn3xƎKngc!5|Ԙ]>b,뻳gc?֭[ ?\ܩ2Gv=߽{wɲ1CÃT}*Ͽd,ѳ8Q04nYzWmYrըU3ֺv3g 6ȧRTts kda;io@c<ͫUór1rEy@?GC* }'H?~|`N!S_?2Me ܤys߯נq aC +zUXX=-ZkиA9Hw{us`!%%.6n$3Uk )~, []#SZY\~:..QR ;y%@􌲐0-i|.1o znYQy2:zȘj+7ѳ\~߰T}LMoT9͛7OY3g]vMN,v|x~=qEl{^wwͼ[788v/(B3@suM2]mն9lЮc-ZgLoܸܹ*7q3}.,,<{={߸!t=м)7EN1Sw 2oNoNm;ƊEFϧO={_~e,sҥi3n%)׮]>sV:okkrl)JNVs|ߥզQDڛ4oڢMNK-qFǏoնt;a7 m!׿ 0rL|z z(}ҴoԨUu2etFoΚVٳ1CYj,%׮Y1C洘"gַn0qrh#_{kXL'Lk7Y0/eԓ'Oع5  ,z[&Ua ҕWv&sYs_4mE-ubѣoNN=V׿U}!?]cHGrcFokܶ#].[oo={E^w1:1oTp_%g떚8oܼwU)6DxFm1o]}LgQof:W^8Q PT)gHWs4֓'O?py#]DlE STXE 鈞]|~Cɵi%;`Бܣn=D:g%<4nJ+WS#X;`ҴRT+gHG fm٧$GO<1C?A>*^=D:g"3EQQWD虢+gHGLQT3@#z(* =SuUC-[YÍF. l 虢Eϱ}jhWE*5լ8fG KDEE],zF,) %R;*n~U :A^=3EQQW^FeF iذ]{ ?^o3vtn%KQ*|C [L|A/ ߳Az\{9S-ZdYsyq['c(sUmseAV5z }bfm̲DF㌽3Ω uZ4F~KC kDEE]flNmeLT\*f(~n|4{vo $$4;aGFj`,z6Qr3ݺ9E,S1bZ\7,YLCZZڻ"5'ѻugs/4͘wZACT3B|mzg;ɫmŶjj?55TKYy?ؗkUi3D]=mג屭pXBh%j7= 3EQQW= z33z#0]OHۯ2WT6uA ӂ~?ؘj n#&&R mK_5o6=Kzh/n=ZkAs^]O>KfR*Gwmdqvc;[%m>ջhlz=3EQQW=ͦ !7i5ڈ#eSb^=;_QwnU7ahN/Vj-d>s 2G6F(y\p~Ŋn7遯LdP?}nL^Ui?fˀv2z\n0nlۣY^j}[_17p虢+ϣN_(R;-K$Bv]9g[F_1}`^,ѪjA9#7x'NL!S.rǏ5"]wlnMuz1;7Z5ѷBK/s@E;y'xۭ}4nDw'IXٷ_9=3EQQW=SzЗHō_{A>3g`w Vyo&@mr=jƂWBx\ABw;dPd\w4 >?Gkk?괼u:`h 3=Suy}6-Vb>;jij{Qs-LN5Gj?./aT610_Uk^\K(B+ZUƭNHݪ]}G0'yQb7ĭŸFkcn3n[oVGzQDd!J4blk}AOp虢Ru5kk|]^0ڌxǯG:NH4N˗og91xtJ&/$tTbl-=EfdNzg\#z(*lg9Xp/?*ej _[\8}ƁKK"=ж}zxsT٩%Ws3_~0nl!wjev\{׈)*oWbpjh/?SFТjԣ1)wPC*3o_O99zv]. #FD.FL$LD%1$1jDc&Lz$LDQTU׵4Iu*Uz׻_λDs59W9w(<rlq$*Xl+O&4*z[G+ b[?s֯?@_gqEZh%O/&B:* z 4g&&7-0Ft3NgS2}}#/#3}?{Cc.Hɏ zO~Ө{Zǽ2枘yMDL:O1@Wgn=1蛈ݩK+6\&6= =3yMD.ݢÇ<+n}?{*k/o:ܿ{-uY^^t{;/獷Yvz9n{ŚyΕ6./kg׾;B$Vt^|so~'&/U'|ɧk6\_|cU=ġ#e7oe{pQ:zuUx`ȝbmbfd$ ߯X]-ā*VۢݖX۶&E|Gß^xza zO$&k4QbNr./q\ĉ;j&gtsU#w./w{{_Ҋb$ػ/׉a麍nZ};7o+\ry[oޮk҅\Q^UfZQ񒒵y믿1rNzeU7vxuk?'~&vAXXlH\V&wSez]Zk%Wn3F{{xꛭ2\wc}l"^+f+ŗE[{[nuXƪ{y#J+w銞*knܹfCbxDGǎ}|emb(.بޮXEɻ-YW Q'b?zQ0!g]8G'>xY^u8DkGPo-3@KZ]_C=P]{Gs9rZ}gub(^{mwxEvk~w6oiy=zgxʚv:rڲc/{Ž^=W_wv[Yw6[xСzn[!W{Um>0/^.V"V%s?wUX}o%f%zu4{}cm'#=Uuto>#^kEnu~Ul~;>/ )^UnCA,ɧm!W=W&6JK7zDuAk鶎Ě knÏ>~O/uV$' | 椪0Vl 1Y3Oxtږx_ ǎ}~U73@;UrGEǂVfO>LĤQ+3g۪oc^'ׯaǣ7<JnuxPE+ʫvw=V_lElKO[;bY{dߜ^qL7s|qaZwc;~߽6QNQZQ]%6!6d%z}n5ۧyn XQo 2zvMB\Ï[Xs-⨉cy[:=#wm_XIN7u`JqN +6޺?}:Z+|:?-Y!(ѣ^㭇}[֩$D!knZLw>kohz5ᖧyN7AWz1=#~Q6QBQN1*}(u+Z)vAU?V9]ѳ~}W_}媨O?m1?hz%CewLb&+_1}͡'xʛn>Bf+ N֦{SlQ ^+%F?wb}tWݴt庒5~^+^b,yol v?r_|[ wm3zS=e%(\L./~kDŤ/֦VZwC-f,㡞^~ksɻ-1'lY+|l.k/R[?19}Ϲ6ܖ>Gժյoc"zHw'?zoXy'c clcCS8¤Վ =j:%ǟ|޹|1w,M/lySemھ'0i'"zHwDϩNt,}~~qۃ;ӏ"4'q#Gd'c~g{uwb'g:IO =j: ѳXXRpu"EZon|vpw˝d&v<&gtGDG?|Ïe*-;q=ptOG,Z컨Q6x?5yҦYt3ӈ3ӈ3ӈ3ӈ3ӈ3ӈ3ӈ3ӈ3ӈ3ӈ3ӈߟ=#j=5g#3@#z0=;g#3@#z0=;g#3@#z0=;g#3@#z0=[e`og{>Fqkʫ:ű>[[=q`tYP ûϯ, *2-E Jj݋=PwSnjAY5{:j_ܴ#wWc˂h)DF gmNoi9ډ_)2kl!)Ɋu秚;*m3ssw&lʴf!y%HgJ۵T;wDFgV<˞ *:u(=glEc}Ʉƃ [/|R\DLצi[lNGV7g#zvs0kۖ;4ֈhGm׌,r+i)h7.z[BR& z^P;e\=GzϠӇ'~Y,fUލ+kTt<3[|Vpz᭛2o2j 씝k-ݼ[|MoZ.kV.4cm}gVnلԒf..m`C79qa܆ F[c4X@wc4fpNl׮=ZZ!!wDV__/\Ў9mt%7zۻ0"=褃ޅr+DF/XW͜eAp5*,(vdjb`Vpz4*Xq˗Vt0ga_$SrV޲Mc]qtFkb] 2".ȦmNӪN\ggO,W=Ѿ;u.iY2w.9Qf%ŋ#2nьb3h-Tǃ]5ЙˀA+7ǡv9յYvu>4qV}6$밴$.la*P-}[uآP\muΚ5|ai?~jY{m%]K7;gɿ}9S~{O\ >hS]׬zmoO>Y?y;o|k7z~7\>ޖ> =c#zQJHutpY6]"ÌqeTjKTdV#"^kzŪz"uUH]l:z[gdP5FϽ]=2PWd[-[[sH[|͡hW̃\sNHzL[wnEX7={ck>}iF=쮰86z{6WP>My-CdkZ&_|^IiglʥΞ3e欹Ozž]Ϣآbw\ x깿{$kn̜_/ɼpzC7zIg YD0Z866g quװ͈&[Yhi#Ax jrG5}ZCEQO}MKsgO*D;ѳÁh~3|߹w |c;b{tU9FjV1@gJ9:Aί"(8ѳxX񱫕xw}1ֶ .zoAƗnX!91Zj>͢GޅIW*kCxK櫯y`^xżrmmO?s-rſg=S,vy_sI=3F:gfH^c8Olt bb:#3F8:x65CwMCpfoĈ&sCm! H`W暾z纭>E:ѳY9s{|{agnW Lݕ78O^uL՜E{ko2/6BOpd+ i@_qkL*(#O4@GC1ж;zP6DϯQzL?7۫׬׿im^2ѳǟ74Ξe뽟C $F/Jxͅѳ=sj cUhw`+{ BFϕ-тc[42>W/Y2GaS{Dv{}<7tM,i|O^k~EϮ6ΗQ9Ƥ}2en46v&S_ntܛoߦG>yyWXK7^}f!(zC=}ż|+%zE JwxPݨeS55ʸeoYs]zUXZ?);d?.-KYvU3{O5cwlѳ9:s4,AHRI"z3!S=ǫ1TB=_;]1/gC$/v>tդ??b=ҵz͡=[gf}بؖ 6:7ro{'+ zlO?hU?gw>#+n}xgQO>Ìs: -yb/ﭬpCl?{Xkޏ~1l߰3fz`]+T?;qj?"ٻ9|Za4N'h`<pѳop|~-Kyqzfc؍򑀾sLCEz {^ޯ?{I"z6nH7 [Mu۶o)kң]y\vWWz'5gK%"?O4MwZᩎb.%W_s%X_U}9oWԮC{7f_v/x`}EK]ž_yyc_,(zC7OŜF ~[-z kĿ.)6択?M;^/-gt ^'q}{_:EKXBanwi[scX9nҊfYƅܾb|mʼnZ{槚l}USrle͚RF,PRrf,[wN5Zwh(Ua 'Ԣ}6ӶqKkJ#طjL㵹gYd٘f_ =_ s篿9Ў+ܾ̏>tÏ>3/^aoTT?/[^2=kFK6ݟWGhŗjd s_ά8{e~ʮ@97w<{Er]9ٗV{냥+.'#bNj?=gsL4Wm?pnyKf?-ͿWYׯ,{u_ɝ1"=6p$n#UCM{Xueydm1 Cu4#x,[:_+6 =<&WQ{-*jfOGMErdVnYeE5ѮHIS{뭦UrpT,7$kiߐ:Bӎ{ QcfZ5ӿt#NlCu} {b)p+ ls91̽l^; UNeʲկi_X!ilOu|U7Y/vDGϟ3>xŴ#a㩍5b?^_rdz=NJz끎Ξ_>rgD0A{B?q+Ҭ\a?.4My`!rfi[W2D##Vy}[!gkʫJToEϓ2&om4:JuUԹ~*ѳ5BȠ9D֬ѦA#W5>Fѣ3uzÏ6ݵhq9 {^qEh[|?IozyjG{<|ko|=o{Θ9kIѵ/B ݝ#xWpÍ.:]͟@GƮuBBZokѿ: >r]Oˡ2EKNϿϔ_d̉g;MN=S~~99ss./ڦ=x -{gКWZK2}qerg,D$Gς8pTeA ~.t;|(֢e=۫׬_PlszEK\5{WgS.xܜĜ 9Zo;ֳ) *t֜ n~gtwg=\K4g}W-m,w^7]ls:"+?p^uܼpqXT_Q15Jg͸#ͣgXͷv<_0?v 3@;Gv=3' w=;+[d(pM{z֌]0'Kg=gSfΒ ^7+U?[lō7ݼpqљϚ2u{[>sb/(\U+gͩpʲs33XX^Rh̘9Klw ;=@G֌K<#e9gt7֢7޺tVjݨDC 8DC 8DC 8DC ̟ ]Scbbb!d=5g&&7=;g&&7=;g&&7=;g&&7=;g&&7=;g&&7=?5Ύ?z0111$.V⒥s\4gtuM|ue0111$.V%.\庠=8 [ھ;#abbbJI\J\ąK\\4g4;>/.,xWzطFĔ6c^~2%sg.3@ZNׄ4g?\FזV[|+-+ ( &L<;Ά8e\0j0 ň)F H1g@=RbD#z3 ň)F H1g@=RbD#z3 ň)F H1g@=RbD#z3 ň)F H1g@=RbD#z3 ň)6Hr|)={#[G΃eiih(po)ߦ̈ttR+0)j݃|1%}}ꌺȾny=V4rʮcnT=yNz?rޗpNZ:[2rzs~yN޴'0$ޅ_-8 <XeLSsaIWWTEWMtW+is1wAl#ѳ͓$nĕqiuyOc@sI:_ O=V)s@u9MI$Q0t7R#=esP,om54%O'oqݞ=uAUlQϯ;v?n=NYth|=D&9}}jzqL#3=:&C҉='DO,*ܞ=5{OD4 v(Dϡ%Q|I)z*=m;anM|꜠ lʝr==@o.D MM{w5_,Euݎ}#JW`C;AKHTyv| w z>Qؔ;$zNwDo.D ppx/ip/ eyE="#&6"z9_I|6&z%/#ESDψ w z>Qؔ;$zNwDo.D ˍwWZ@X[;Qx?DMu')[녻[n}KbanfӿnܑnuzKX}׊q_iz-_Z>8\z}ɠ[ הWt鱳cYXdJ 5+6rgagQ۾zks#ܪVپ۸ v45/ Ѱ*^z &j<\Ob:UJzukmkkC5Vpr԰Zab0'pg^ߍ*k#U66;z֬v7^diZ~UnX4ϫ|R GTQ/h|FJ.*:lgG,O1T'IP :ŎȪ QNmfP'E[:ćeVWbU&c$ e'Jj xO7kqKu m6XЖoCY9ђYXc3s u7l8 nN+Zn*AV57c7C+I\Bqƣ0=;\Y'_5~8!Ir}ђApJCy5m'{:ѳƜ{sQB]9õ|&-JJd#A['q66] 5};zWd k1)_zg%B.<]olPZB0o`Uw7?%F폩qr)UGo+)a<"v@K]_c݀ (vJGH@s..[pl Nn~2OX^O2Y(8+ՂqDnQ4G3ԓjfsT[ޮvqB*ӟkD 08|0[@v,o{Tλ_17a?({dM$,Y+jč`\qoq7=欻E7cf}V XBgROm}\LR,ϐz¾H-ga0/ݭrWw`S}q'-oc{7^ZK99B[(o7j_dQD|rCs Z[[9ٺo]cr u[i+GءTBl︗"˩5?B\h5l>%]e;23K\q%q%8{چ`oq38lK$6@uP4vnE%g3 n*>¯8v&ĕ![X3|3L_Jk߯*rgw~%)"9듸 wvtX-dYf!G2+v6u[Mԇ.}üPuC_y; S03nKoS:ο63چPǖq>}WpoJ]iabzvC!J'DOw0oh[7ulՒĈoRA7p-$+Hw'}b}cѿGO?!wUjOgO~٧~ྻL_#t^O*gWhFW ߰3؍^>5G[e +>ZwFk8nDE,jFNq :4>C{KGP+Ek$!fG_!OmRimHt׺q+5 9sfc8C\8%]ߖ%ss%A]p|jN_bP$>k>A9upSJb;7 qͨq3I:]xcr/t1=ܡ.M=g}enkݫu?F ^N ~5ܸ7rw9۳[K7i:F_wGy?þEn-Ԇ5'/WO}v?ĵv=*SmN|;qu}D wuđLl~}fП͛}O!lWŭNzX0nčU.C|;˭!ݭ>qܜyx??yGesG2ku}椌|Yf- ›v[@I#:}& OU'ޏfm5CχZpU`n?VX5ك c7jP80[v?m5յWU6VמR[UCCVaw!C[JuSV8N:G 7L4[aOm]ώTD;e֜?n.=kxB\Sd.q' Ȝx{ia&'Oc.I}+mqm!} n*ɬ:v&ԕ!H.q8fx 3[5~kKKӰ>Yj*sл5?u؜*RB҇۷bͣ7(ԅo\Nۙfm:|c L(Yӧ5Tˡ3 >+[g_i|iQ֍rdVscla6;q Kxg"P߱]w]c=XlsNL~o..bþn8ACr}wAR3>i>?ݭ8vz%|u]}~6U =m~s,[ ېqD/סt̅KxT'&X k32&ok0}~WP*>/וS3]rF5=2ZE5.^Z!?٪=B'p¡]>ߵ+[2XNFc!hn_hAU=3UEmYn1r7%&\{8~;RzO7u[]ij朐T<"2d !ql:uZ?n?+*N j7,׼;IP=~f1wgb$S{;zc@vaUF_OG֩*IVAs%t4CbC!J'\œ2zu5$Rǹտr{NLz]Ēi YIF_2^:8oͻf̊qd~,0;>X`ǻ7Un S@>zlcܡW)[α5Xp-5o@P:ËPpI5OلچslXO)Srr{ǭV%5CSՕ#Kuep~M>;jsjoȘpkU-ƹ?:4>\p}*[r!^4~]iYG^`KixZ3A0;T=oQuN\Ctq%Nc|R7Fm8N_Y1JrV$xmsBKpSHڻV;!PFtqk@ jm[m"ѥIIW>Oڨt>:uZRk^׊MڷT`~o;IP=qflшH9滊a^Al|+g~e`KE}|} /G zO9=O&}Unɷl7;qB*)eB[ dfqnDw~AgiZ^Ēi YF϶瓸T"8ol: 40;>X`'5fm*?fk~; =׼wjN?vߧNoϝͿ׭QncPpI5OdoU.4׹WɜذI`wu1SدSdhfcq,~,{|{+6i#/A"k-|I]7.#VЮ̹Llzmׯ>7-El Gѳy5y,.7r}i=S4{c&^UW t6s1 q ݪqm=V3HuGJ/~l'n%ci<:7yk6ߪj=w~Ak Q`@y,'AQѬ[Wg}N+gyv9QAƇ/?=ϙz{d)n>Jܟk5t s^Lp^r1~{Hq?%=W$/qG:Ą0d%x$WE%l]ý28HqD]Jw'_w7t.v1as>}JT1=uU'`YmkUCF'^%K]o9߷wmeސeL5V`ݭ΃]5 M\'=͡~W-0M&efvݴ=P ='xuՒm~l1l\ƄHGckb}s3wʛr>YX&ݍ;USTɚ5z]eNiTdYx?EIUdfEr|첫U,w=Ggy+C>{K[I7RR;4k#_Ɩ^{Q' d|NjϖjS;Rp}z[wJ5KE񲃤t 'wTѾ^wf֌Uf{#t<3CpR} n*>"w&>+W3xYGE}צ_WQo.zmWb'v y54 6G}Z-9uxmGo@mfƪ:q8W+YݑؾoN4  >X/u# פ1v[_Ŏ >#[gH1Vfn( S*!)/mmzp[ xGvg}P >"6v<ѳq]m51(BJ)S{.{=5 On͍Ad zxJhЯVݪS#s}[k__Zl uw"%StD%J`OUhL5o4*?={5O`۲YwڼlUa{_,l f<}oU2qS.<zIkVW꧖J*8^m6KQ#d*b2S8Ծt\¨f/~nJN{Q' 蠡[j=1.j5̩tL|̺O^2WR3/VIƻԛVjF?R-zK/NNR} n*ὉڤkYCm5QV(`s.IpmB]g.Fϯކϩĝ$nAجݟ7Tᅦ >?AW0s_[ ^&mP>Қ{qz:0o..bɴ|㋞`A]'7=ʸ v>YI ?9gLh㾅 ߠR-h=zӝ(pq$﫢E޺_a@z9k:k[[zšr ms#H=q tԦk:]KѳHgEt3]pڈ!DU|jyڼNPUmF!؞7g~ {񭱬Y3;F!XVG;]W{ ooD} }h& V='t V= H=4>|Oԥ#sL,}<N>m,iˍk5tL| /-.C] ;wyJq&?/¦8E݋m5qe$+Ħ[C\ |۶j_JU47q ^8xWmR!p@ȔE r*ցM3'EEK|iq?s*uxX}%\n\F4 ~ęYxWxoٝ4 p=`P-FI[S^m~5(\vUQNw=Up TB8 K%>ewYl]0.r1@ޖc:P~o.j~+0 HyLs'[v`-?cN @#08;ɑ/_ F=FA@ aL뮩w?Dִ=dOO`ңRy;cu@lяkD 0͏Ga=HB~}-1Î.z }2 !BV.[0>R֐msy|~YL@ הhւm_qd@#۾e`A wsN)c sioS, ʅlOOTtyҧ445Y۷i&yJtslI\^3Vg LKѝKC{S=N0nKW4sPwhY4zwUAaoss}Ku ]Jӡ}_6mifbJ`#z3 ň)F H1g@=RbD#z3 ň)F H1g@%Yx]5Kf4ڍ"Fpsɒisrɞpg_ƄKDɝVXJ 5k.sBkFX|uW?":_xޏ]g`9'Wbu/ʺpZVWˬ] _ϲ-E:6(ϙx}el̟^4maʵņYې=?Vb9,U]֓LsVTV˛a?^656BfsX#w'?u/8;#_/V3 g9&Jɺ8:~zԫ^e}Vg_D =iműe&\QRn̷MP8̂|9bw*z䭩ipK/:13٘,zs[Edɤ?xJtkw_صO,+ǯ4g`9y_s2X4ǘ_~9Xf??w HWߚW,7>s5ˋ&s#6xWsbN?' =o5bk ͸ZlbqygkgeXfTxEeS_xb#z߯Nιl~iI9EɈyٙZ\xaޤ"*ծZ[R= j1+z#0Wezo󏳽WLBþ.\.}ꏼvTg-ⰻOrOϱx twcU94_h_(_wK|V21+^9d= Vqm,Wz&׬ zƠD?ťYŪgFLV|arѳStv|ٟ%ySd]+ kIxNiMjicĉG,Zis\% p:z_xޏ|3uMj٩6 g[s>%O- ѷU| zƞ䒋gsټ^u=9j g^<;W~9GsvGR1s4=r]^|UIelחf=8_7gYE)7zvLV.=zK_o*~• .*_eeM!=_9=cO3zD;9h M[(u BW*pEdl#KĞh9[v6:=SƆdݍ]hYl4%:Ɏ1vptbq:N;'n9O-(B\tP1h^/Q NԒ~WLYϖareSϛ0gz\^e5Ĭg_VrՓyyr; .VWV.pV 3MIFו_lN25j^˸ݥ?ۻNGVΛDWUD?|C/B56Hi3012Η~]gg̪Kuv Bt\YYqmn,hy̗}oY c Dl=Dr5ֳͿ^iyZirpg]0m.qQ!(ƃ&ס'zƞFz`qUأCFƯP==)EԊ[[wq*Lv.ֆ=ռ*zv<̾^,+ɨ^sz `d ʺޖ8ѳ V"=ϳĜkvD6:Y^{UsN#BAc=F2{Rg-\ʗ؆`kLRw5m]{_̗C3{P{&$30"z^ygQɜ%ה˱/T$wqyB9ʹٳ)56t%9#f9Zt.BbM rh;MniZ7z>0dؚSE$bD#z3 ň)F H1g@=RbD#z3 ň)F H1g@=RbD#z3 ň)F H1g@=RbD#z3 ň)F H1g@=RbD#z3 ň)F H1g@=Ce`og{>Fqkʫ:ű>[[@-=D!ZfsOk>@ #ӂ޵x~eYPQ'i)Z WWU^,M9lLWkg.,w{kKTr"࠘5#_֪Јk#`[sgwuQg-W1%GVf@KZjY-_X٨XU5=lN֜vҵd[y_ܪif녙S䱶n-ZM;kʫzEVEm_zy5VnE>T߮=ڹˉˠDStV>רӉVu0q_15 XXy֬i*Fre0&nF^ grg@#zmEV왠>QNVA]k[t:WLhNhfU9{7Nm?Pj$hhY0&[1S뙇:ƠFh}Nٹ֒ͻef|`O6cm}gVnلԒf..m`C79;۰"{k nlv܉-ڵGK+;䎨R٪H=O*U;bWj/R8.O+>9o{W#l~g:%BBZLu{GB=Ȧޅr+=D9F/XW͜eAp5*,(vdjb`Vpz4*ӫXq˗Vt03)a_$SrV޲Mc]qtFkb] 2".mNӪN\ggO,W]ݙsI^g͒s1]Ρ2+)^\aYwjcuXZmzdVjɽݢ~皯TmCt֬ K]sVk+.1O\ggKYa]/f>~kȞ*#?u6l}_^e鯑GDw*mŶ!C\"]59wgDYMɝ;gtTGg ?rt$tPЃx z[Z[@UEꪸՑ;غuni ,2Ɯ蹷}+-ז~-EDc]lw fNc̃\sNFcbe5Ds+ƺi-O7awDZ߳]un:mo};nI{ [ 5!gWx&z`Sll+>cqۏqZs\+؜yj.9h;.D066$,ΌFzVrR@ ke*NP:o?'ܠ.wDNYӧ5T40GtDϮB=;9w}{' b b{`U9FjolZNm$ 'N.`/&c=V|j3ޝfi*^[E[7V!̯|g7˖ѳn-z@$=KuPaj0Py绫]uD8*:]UǽD*;hnK!gJɝ/g񌞪f^c8O@V(c#jTyrcmC1_* ȳLB3ꍑ|}5}-2Du[}trgs-: 䊞=7mC2> =.틍*; HM6bA^}L=-GI5e'~S={vM ([%WM&S:V6jR%W:6;Ч0x%DMѳPprg3|fOU =+q =sԍTW+LjRWsO{]LVw"ZpzlFgVYGϒ9 #TʹhsVc3}PAWߴ@Lj0tċ]!>_Fml0=i_qkL'S־Jcc{kR@R/Qի=j]A~EVW G4w&rg7!zQ@]So 3;qc6HnԲ?JW-~p릆u.CCr+,RQpJgUVmf> O׌m iYoxBZ^E:FBOѳn=zb8x׿&՘R*l$19i=gaRbړvǴ-T`~k.$g/1tS=[cwDYaF웪dLE֊Ԓ5n^Iѳ1&}{/4esy zQAۚ|76?t=+싖؃9 voK3Qfvw8:B ;7./a I.Ƭ_1uVqgޅ=[Ap{_nwwՔbYfTGcsPѳC5ͳl]ff~|6A}-ѾQ4*O~A-j3mF;}ۑ9>>^+VJ69k pѳ8)BrfdF75 Ҷl_vA% _QYkax-(w7t.o.#Z͍2D5bov zazn_ⶸ\9CM{Xueydm10]'3־Nlk@ BfRVJԃݚ{"*yVqg=5 =]AeS{t[ILGJ"'M=cKTﵮVƹ{hX~GKORѳܐ|}Cp M; xgGG5k[Lj0ZU8ѳyu57[Pw.àQBSk'-tK ?ab yqjWkb.yDW[^ =)A ?+T-:aMWS$w]i&C~ac)HHeVLjܚ.-[sy2x[^C]uߦJpl9A֬&+n/Cyѳ0~]iYΈQu5~ɣ7R!D$= Y26ԴgS}YpXwhY4r;CՀYڙňk1]˛b\l[š)v3 W-c@pA #z-_Xd^V8zB\"b˗Xwa\>D@J=RbD#z3 ň)F H1g@=RbD#z3 ň)F H1g@JM.4;sIENDB`rdbnomics/vignettes/dbnomics001.png0000644000176200001440000026014213414003142016764 0ustar liggesusersPNG  IHDR gE;gsRGBgAMA a pHYs%%IR$IDATx^݇__M/ݨFņ+Eb`EhFcbI,1cLb=rpٝ]>9s`6뛙^Y$ +E z^$ +E z^$ +E z^$ +E z^$ ?+U ֫y.BˁXݚw޿fv#b?lZPAyf鱭3>Y94ob]S3%)ոC{ rH/3SeݶC([ϕ+YAD7}{[o_qԙW `zO=T :%GtSJ*cnd_VM{|./M 1w}f-Yq۳W_sǟooduQRhFfYp/]s+WOwnm}Z_yP\Z[phðY+l]Ԅb], O9` ӔEz*?'rƍz([Tr„̯9 ˯N@qؘ>_g&l{}㓕S ?+e$?{:Ï_[y>خwxRQ_?GP k-vM\4eܚYfg7uG6[{VnDi| Ul!3?n"[M8?UO-Z(}bڸ7RQIX߮ZgÎqi¥e6ޡ|E?vs< (=J5~]$ϖ򛐓v᪵~A!;P/}̋ٶg*״A߬7ػܰb_-5vGݾsWG$:SٟakhpWM%ʽXujv фJH, k>ߩ>S|Ԩyw3޼u ֓ƍ͸}oUj9~#ݻ/v}NǾ%a]#>EJ>SDZUcW4y\UeMhT߳ݺ}{q=0~|*>z(k\7F~˿vܸ^1īpNHX\JL֘5?֒Q_Hsl'Ͼ)iodǶ*Y, [/]Qfe7kOMX)QnIixrRS2=߯ ( ?j^٧5_v]ǁ2=C„LSvG=(9NA|WʥUjԞ8}潀֛ B 7܄U(QAZ2* kUg*Tjj,}[), ҵ,-Z{jZ/,B￿V+>-oE*XwYSQ5uI<o[ X֠n._G٪vYdݬ7xƟb5l\ 'ϔ(7l$K2:uKuid+,}7۳?bIX\[VЉoψ>|8nj +*;kɚV3.U6I ?d8e`IX7G[w?\we7k%j6/Ğ~xDٛO]n+e[3yڟn _9lW O^X 9=a$s>[fbT kyF]eSX'.ݼuK|ohSֵ[_DeS,7 Ξ@$X֌Y W}?~}KWmۙh# kG̛SMu ͛*[劄zdt?hȲIsXKo;|;&v.{>dNVV6=BWrE /kwl*R$m砰NX߯ҕW7&?S{>]M"_H:yּwoI<5}+WD|+B -W$e7$ m(,زIO~!zy Sj ?yˢ;Y[m[= e5+>zWP  uHG6[[rtʓ;-o_ujW I/}X].M)in=)a.c{^Ў' l*R~<ۦ+a}ߑ'+= jiٳzs?\nٮl 'BݴX??r2'M"8Vy,zJGM̝ϴ5}W YP\klI: lNXNږM^-5~)y1#^PU3%ʾSySdeϾ HX+|~+ѣG|C~jz-aʦ"jVePd*غgxQLL]xի&8([1he-FQCS z>}dQ93(9Sݗ+dTwp}]ʩ3aޮQwꎥ>Sv(kY= =^rEpڵvWjU-8TT$ߤlLXbnݾ-^ߺUM)~QlReyS*[*N1C[2O;&9=#wJʞfx\VN԰BT$xKCZ}-kߨZ˲ILr&[=IOMX_)럻`'߬R O?o+?}!iZB$<)a}/'Rϡ# XO~{J5,$aQLNլSKSOz@^n&gdK7>CVVkRư)qeyD%e P^wW$gM$9?[꯻OXc-}RW)[MԄUxb ?_z1z5~/~tEeka~ C2 =++נُ ~5+[ݐ!krB׭^w'$x$(;gUohf䜄ޘPgd4KWL[5g̉Г [_zMÁI_䂖}D9eka *TI nM{s?\ٲ kC{od?)[`?wXe~5ܣ'NPO|O8ǹg +T7jʼndb;OXi3:K*;BgSܻwO) '%%k6s; а?;?|lVF* 3^lj5/VZ`rUC([X}\VBhT+m{>OV{YF$xVT}جkSB5 {uOݱgߪqLX8|TY'%␷|GgMWvNVsÎ)`;a֡FVU˺m;긍TrޢeC[WnZ[-7}1 e?2{9?z>}-]Igu@x"̰$ÇdsR-;wU-q ElVJBv}[J[R`2}yVvB'$ :z(Sp'Աk[I}3 oaCS2?geX;:%.ݲOvBXAxpRwHym+вyԮ]Z~⻭hPc}Z{ɤgD|W .w*12m>KAiz'%-K&*޿/, k] 4 Z vc&*}̢?aZuy떶'%B.=wϝ;w_\&I7h@2?_v*77k]i+u PN#1=m ;>Zx%j6{ϯ!zKe*Nɹs{YWe>("KTF}1K/oI%=:?F)P"nYF~4k bSc<>]דjNc_u{qAM{qZIC, )vxgO#MTʎB&=c,I6\PLvg_V`&ڵUqz֩A*'InJ)]d- g8a?tBZ~!e204:d-+` @IWɌO9XĂQ "j!HVf\R:hLrbLl^o[0mՄ_kJ†і=ƽ?z e*ZQ)o,lGs[Y4dLmQ6֗T }ҧ zM7;uo~'6.[#XSVOXVݣϞ:wA}8}d__p,bӔUFbwW1s?j)wب4klϾ+VҢ!zKX^1)%Z76#9->jM RHaOOX&ΔZkotyJrl|nߥUQ3NN{R.2 xO펞3#Yv˿o w I(`u3рȂ?ftfʷVCt|>욵oME8NyEC]ac56Ry 5E WQm(HX=c,BKO' ׮]o ņ=~EMX6!o4_ gr\*!ږ#yYUюc GwiE3o;%&hxA9ڷ&g ޴O+JW:FDʵ4޿6wHoسh*4 E&Bf 8};Z[>;T - 7IXM=tޢ՝w|~"lϰtrqK |K=ͷs lю#5YSHV_XZ9Э}(lJ(vkuxVVY-;X(aO7H0JnAJ48JWz݈Vу E/(|1%k[^+S-VS k V ,8M,sMobϵ'ϾV@kH5*ݨ惠%6OZPAy,ީYT K٪aެ^2V5%jo+FhO$Һ{k+[ {Lr5Խo|RČGoשtF8RŇ̟a-t'a:M16Q񅲩J_8F&gdN0jt.*6j򇕕$:W~VŔ%NI2=nĨ u.[Yhu-SW0&5я|,5ڙW(ű;kV7".0RV'R!V74T "?R32bwzਧfZF ,b h&݆3'5+;.~pS'sZZxOA$s3Z -:a^|"K3::SߵjT'oY#V"т"P@832:C45g_d %EE&'W,Kn똨L2Z$8)yD>f}"c𰡩 &,FXݜRoaf*/oU2kt59MB1qpLAp/=UeS):aRpSow ~i@lxikFb_ ʧOxc ]8OIX[p83eNXVq?Ua;{…^1֢׵l5+[d*wnm׍7LlB XZ):&D2u!0&VlJieQxp;LTֲMOʳQ?hO.h5G#ڬ|2H|zi@HX'^*7~s*<9jVzȄ "_|*5} V65E'.=r{Dvn>Xk"d$we &cq&?2cz7;I<~utm=06i!{l174/(yvYgΐhK<TOYѿV!wBÈ *nIz\B&F ѩ!E$9iÃO/#+JkN$ |Cc˱:|ZÔ|6ྞ9 q=/r OL*sȰ[(EфkXpip?.iS 91s}( JX 78j|ɉ11-ߤ!wj?&3N|)hyDNrFjV_oڿgF ,SzVQvԬ츤!Sl-萟 )xpat\AQ8aMϏEX Bɐ Ws O f1$y)(|bjZepKIHXOXQgl׿_Kyc᜘n: e_3b}]|m=0&MBrFfИV>!am\_J\dZ ԎN+ JHHK o]i K =#6q @QtN ޤۈS;>9D4C$1֖kgZ MMȰ >$HXŒ*{5Vv!aHXloV\)?bl)w}7z|UgJ!R_yQTzzYO3^ a5ҕ*6jBJWUzLBʛUjY^)F\+iR5F&7 "x -~˿Vϕ1nhE*4l>:s OȤ5b=KmX]{ ϖ,Aj[3&[oT!^yZ]+HLcڼE6Q^׌Jj-Z|BCFN#뭞+}du:}":5tb:u $4hy:7knA%nXqڭp lQOj5ϖԸk\)?!JKmҕ*4l.T {j-m?ӨT5jվ|`񊒰dyU̪F7*լZ'zEbnkl/^S{P/y[1*MZi"TvkRʖo5+6j^ux-J5 D. _iwG'bJbkfb2b5m"C͖<D%0,BVMGK**B^0W10)uXZ Yu C,m1m,~"b1g%~Vif̟-Y^kh'f+Z{PL@Lfv& kA#2g7MZWިT#%s]c hKկW1(9-&!]R}*&ͳ%ˏΚVu?kf͜e0Ke*Ǎːw-kxBBzf~L9!d''L8s!M;u( _PHʤ:8FMKXB䀡 '0jtȔ?~gJ1*=󀡝N̘ܲkomS6YG kXBF-ċjō8`MK4aE*\k嫍&jxZz$2Tʞ`pʸɚֺGb&sf~XmҌZ sȑ'1r8BLǍhVjBm=@,XX Z4qZW3yۨ#+blqZ*8:s8vdq%4Kk.ȔIJ4m4qIJ4! :=Ǐ$5w ׼K/&||]5MǴ)ӓ&NyDk73Snh9 Ͽ_Б; q̔߮ZGVNX{BQ1M[LKXUj"i1Z*MZi7mhUs.m+ Ku䀡F&k߾[=pZp(6ÒEZrkqP#ECx˘ib5/"-]͢ZH)c_+_O\bhTߔRvHcH|lKئ㸩3$վX'/2)/(D2NXGgu8LL -Vh<}=bb:txy͖[r+ceTzfr5{t*MeR[nYKVds DH*ֆ#MXfO m"ӢGUmma:?A-$JWѢm:kXB̹.Z_@^10T,}c[~\Ži9* )/EM.~(UZn:_]cg͜m xEPxv̼9%jD OjޥТkVݣlyJ5GedwOY&qa z3CXm~#[5[;[z@%+9&!E}f?ݰzHQY4v[vQauw?${΂"\=PLL 0Թ 0R~1 )G Ft\J5:?kl4iN97l4qJPqȡ=LkviSEͻ3yZ9ؑltQbtqPbxRM::blƬ%_,]I6<-]xWM{ K>6}LִBk*VCt1ǐ81y&F&gΜkIX'͘-&# ^߶xrsglN`&K?zh[2ףXc?~(;hN<P,OXQֽ% LJAOjQCߨTSjucRK$+WeaO1:sj${ZTijxZz29td_)[E~XɠIJԐȞڥBx-116CwWw3pSDt CkTcM>x8qtb*v;:kڸ'v7JY^1bnCnj/];[vɦv1nxB}PX'iA~N gڬAŸyT{ M"G%5[ RlԸbTVtCF7`Ԙ]z.}j䴱ٹq&6]k嫶/XEDޯP︩3YL)ܦgN<-urN.Ͻ?[в[)9b Ŝ>a=lqDZzZƿ_G,}LĦ)c-3P,OXא^$ +E z^$ +E z^$ +E z^$ +E z^$ ++Ѓ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/VЋ"aHX@/Vl0*&8Yz]Xur璣[}>o;Mڴp9#N:|P`[O p^3^Γ=yu3mI ɛn:uzfxzmҺM .h/>qsۥ޼;w^v_;{ק|~{Oo؆{]<cL|O6&>Njqƍ{ W_߾ѓ3f46GLJC@z#zt:*1+g5??a\*~vg;|6tʵi9ooH]KQS` 0%Ws%G73#atR+G}<7ai+f4_YK؁b3ѱJ(K_n}V>fO_˯O޼uo.=t8yJnNQXL O)˫1e)|֫U9SK|vO1ة n:nR.]2"$#fy}~)*\95gaظrMH0 +5J6?dڢ/7͛j(Y>o%ExfFCF,Z~)"Ω+׮ٶsDݕ9WGNVZnWQ.rHR|,Vϝwޕ:xG'w|͹ ?eua}{[oAЏ[,a6iӂԄ:*|*a65s''E˔V>ՐWԉ[vȅpa}vXC#YW\'ab&[|r!\[(>~#)“nAvu҅vgӧad/eHX䭋↼^ EA{*Y(|+k khAyV/v}4[;rOQ j3$aթNxsFqIS?jM*?Y'ϞYKЏ[VŬ}kUg=U3iӂVCR>S9>͗>UB;եצ.XZ#2aoY^;8zVشMg.[S=\#O[w([|'a,jkL-Bu$rv-o?jUđET%JCE$n<"}W|+؍kM=)>zTQr)*Vmx}w-ݰ%>UGhpծHRX#a_Kpa+O蝙Zqse5 ka ZDQz&^R'i~UԦzwY#JCORU$$*.P=ݶX|Ggu(n`]jm%S&IF̝쉑9< 3)=} "*.}5hG-[,L9(Y_m:}B.EĂlxo*-*1+G.1 0R~]}Wx@Sot`"HXU1hDe NNh?TY=Af%&Κ4)>Fŧ%yH^ZKo.Q/X9pOdY}OvoȵsHXPm6[ۨ.]r.V/y< [w*KAWˣO@F -$6<]YbGj#`bbQ|+ G1_{Vgۥwޕ]X&g4G\2=|0a:n<x{ǥbP#ipf}Vm1g9 J>")9dd1L˛b?bQ.۸UY% +p`rwTVx'g6h,&`Y<~Rؽ^<WniRVNቍ"{iJwp _Břᐹg}#PoF.垿uYV{<*'"6bH;eW-Q/r#zMJ[u7d#ǟ}LmڽWN uNSIke\C16}_v]:M(3` װ>Uܼ)ʢ#V%,TMXjtO,nv'&rΩeLiKԨEX_PY9ʸܳOE!VeFg$S PkҦϠ*մ[qs>;|LvBZZme_"'m^ݸyS@LUm+ݰe+6m} u=+CHXkX[q!auD zXW`XKM羟8k3~m^hsd{HfW#ݜg}PgGp/J:rL*$}'a]yҧTP3EGg`GTg:-\Pe zͿnmtq-n$BªS~ VՌ䁬Y>?v\˻ٽyGGQrm#/Z~ϛr`ʳ.1>eX̔dRg# k΢rՊMZNx)9y?Ā6~7>p䱎_aGN9'3xSHXأ/2#auиs%3=k1SἘ+A ܲӈXWP|6f5vVr[8+UFى{Y&eIT nױ2 Kr&Ulj2Xmc7߆4/^Q);sW[t1VuH*SVQwUFV^{o_4(-C•F޺CƤ;c;_v2 >ir+b}xww b ?y;9!MF+CQrմެPi&#׳| +nig9he mPR17ge 0qZrte-e[YPNX?;rL[ywj1\12D4/i9\~) 2rYN@8s: 5}ƟrE߭TXl'Nۇ@g @ۥ c.Uo"aZÔnxN2!whݫ͈Q)cV{:8o2UW*YTIX?2քլ{H:Cnju>w'9]#nygX>Jp(f +3HNԱZvÿS ystD`sXa]) =Hn}JIQE q$w 6|6.YC(sp /NX57krQ.VyJϏuyKWI;PYs)m]yr6vJ7l,^TߋxVlkXofJ$ۗV2US=Syʚ.t e\6e-zh27{%6a}bϏ}-g@ tvg6{zw ^@.=:LX3fΓtR?|^J[۰k}NhX۩gɳ|)ܓ=;KXCz):PWUں*~y;T']1vУ59~vhīhHX;xF4xJ6 Qv6IX5 zE)n.\LkxYZm[(m=E&18PKV(m݄=+#o˵pBƧ)[>\)QGo`ж$Oɕ0^#*۴{/*$}װZ%Q3W)cAV!+7 !.NXEUmQwur~־/(==݉n߹SY;pY_*#cB83r~gG)==KtQ]yJOko:~ mn*  +xq*T1uR%T3c[ޭTԩ|0ar`쬥pye=ٽnWUGNz=wyh2wJ%Z3K@D'e8?:{e I+aݱ2O5 뇍[ߺsGNxmۻ_i쎎ZcҰع欟x2׫Y3>u*˕j+ = v_"6RY +5ݕh,Wr_NX(︬Q';kYnE&a>Y̮j5Zi$ks[:x8 ۪-;;0&amK̮8p 8r{j)Jlݠ^[|'a:kX74TrOXw+U(E;k)ۤ**5osٽۜNH5Wp朅J岄5%;WڋSu Pa딀qcVrַ+zQ=Q"9 6l[R3,hޑMJ2^3Vy+rM( VQ*{;wcvr:#bCJ7oRIkN!_PF - ]&*)o?&aVRAG S`,o˗TikurZƫQdoɚH6^[|6a}jeǶ*I:b:VͨEӔw +t21a2ҕr]uMBZ |6XVSZG3o J5h.`e1U~cHX VljʋU i+xEŧ(̵裍r$#mgJHXgVa©J栔3!LGª3AY|GB'VaPwYmV[(?轇+#guoW!Wc3X6o,$yA*'dtRZy#7XQZK9?`/' {)I٬ a:VMױ;bԢiJHd-EZc=*U^I7IX%y]}nv'I?.kt𬟵|`_M߿/H_^{`:C`;/ͼ|9fjYjo-߸U<:a}?M/˘"`[NiU,L9; !_5XO쾄D>UE g 'd<vz&+JHXT6 9I\$eAy yϧro{\ ȱSV |0yMnGiYg1UZy~J`:zzKb>둰`'9(msU]YvX2P$&wy|]uR +mݓG'mcw)|Ag*Yg}L8`}J+RI< 5|BJn0X${=Gsd=Vl!ao9"wJHXAʲ;"}DnX6HXewD8;a/co)/tO=^` ^#^!Hݻ_S,L<듧y[NzʲKk=|P8kJ  *h/gc~OibTEϏ[HXu,%rs+u!LDAYpCx$߹{Wͮƣ֑#ogRZgk< V`Wΐ7XE~mtuû70=*ۤ x1Vl!a1!Yf&"a`.G?95kׅȟ0Fi +Dn*8DD>~z-ʂ;$;.CnţVCm:)|ĺQs۵+Y1r+ lHXM׾09vg7m? )$BZ[7%usPVN!yvPa .KXtoD lu[N`ݛd֊5r VhAJ+3_~`%MQZOy-{=  z%)J+&ɟEizu»= ?o*V9iբg`nt958m ūQgc:tފ[HXK5no۽2|9an:+S͕ !~{m2ur6F+W>cpD kDd9㬷WHTJ+yrF˯O*}ɝ  2(7 Xw^?X$BF %xsP~&لu):;.G?_JFwLwrȅSVfv.ijFF;8amѣG]/[xtºa9#u92R;$gcN?*Pt VIJ+kr'Ej:qVy.YF1^$x Vl!a}bM%xsP!L 3KQ|ĻvH1iӂU'w(kRX%ߴg8aR͔-9+*=݁G'<*gc|vIfQZ/NVf\OQ  Y)gcAqcW-ݰEi + KnV%GtH7&ΈWΣS:eܼ)OTBճ* W '}WLZWĠ8gl>O˘9OizN:~cJ+D S-3X$g SibJ:(Bvl+.`"Vl!af[ILMPȧ2F.,),zJe8/&1eF̝>}bIXv#[?|ZˣC_1RT=*I(\yg~Vc\l9K#*TZ)t⬔1Xuû)r?!{k%JOMHXUu$9D|'am1x+kkѽἘ_=+ۂCju ;%aM'V)=G'u)}|Gr 之V缳~,Zs}%9K#'J,VӉR`gʟ'0 + ig)1#OR6h6d$eUM4lv28BV7e rWr^T=Ӻ: t ̍{%!a=r9#}JQ7\F9-rϰx9?U~Ҫ0rǣVqV,VVpsV?$j˞}B# ` `n7w'B4fAg]*,jkʸ^yMPDxrmePW kp~uOol-.~ͷr6FjJQ] +g29OWQZcNk7(}$6X$gVi7ae~R1JsHXU07a5щ k^MSV: zf(n1+^VaB\]BY\<:a=Y9#~Y]RN=߮Xm4jt+^m 33X:Ǖ{,VӉR`}ؽ~ca͔X[JHXU07aJUkWV1| ޿VYC'L[5W9v'IY6y^xVѯdG{}aJb 멳lG?Vjr VRs;CĹ>RZ u;v)J2z9'#u7J{ ;Dyt*J9F gGɟyu+ֶ=P x Vl!aMX8V$ SYIowrr.e2 o催EC_}1C. ?e*}|Gr ւ5V炳qho+[ d =t⬔1X*n&ZNSge]ԤkePHXU07a7 :,*"tỆdn}ox/ .%6+}|Gm*EmTZk}_o3X(\oB\9#(}lo3X$gzb-之iu7rur%xx[HXs!3')MDjīBl]&{Re2^MV!2oӕ<:ar6Fj JaVr K欏'f:r/_1Rqnq,fHXM'J9#Cց#_{~!׈,Y''"aV܄u,HX i7r^ Nʔ$8|no;Xi2r6FjuJAr r7Sߝ4Xbt2< +  Y)gcܽ;?6ֹ ? &5M aV܄uJˍMb|QOᣆ+b; n}V!`:q?σ<:aKr6FjʵJQ~\rv0z|ڱʕ>}FHeYy*NEj:qV7o*}No>L?o:v;g0a^ l8 + &&"ac)eBZ)K27/RBʬ[%B%r{+k"kxtj=Qg-_6`lݩr=WjjKi30X4WZ=|"a58+lה>pkvv]'Wl6.wvT\ron[HXsքӔ&"am־WQ+HYbQ]21/n Kk;uZaoUںG'^1R3Tw4`>\y֏Ξ!lkw; g`}Q飇|"a58+lԯ\R#gZ~ $O޼gR8[HXs%ӕ&"aF蒚L˸[*?Tao}ͷVu6NX^!gcr-Wj5`6ڣr=W/W#~߲wcm#Vz7,VӉRHxWh,eeE/ϐ3a}rߞ#[-{P:G'7oݖ1R-VW/W`md\|ֿBxts1`=Pi|"a58+l7}gyV+_Qӑ` `nšʉEZXʲJa픅5muļ{&BH֑߼\y<:a}箜ʜP;^`\/۸U0XӜ^Qg>"<:agځ=Gߤ\"^791+N1 + $^ ~~v@rI* R,ݢL˸>koƒr0{+c<ؽ޻w_He̜T#W`Piz?k- ֕k]w^)Jd Ej:qV'N)}ju/fk74K9L`A -$w  _Beo_,EXq|21/ ?:{Ngo5_i$>xPHM1W;^XK}߱bMTZ9qxFW>.t⬔1R~Gݾ+6m Q$B*&/U-"% 5n+P,|AqU4(Ngo}+T:G'g+}|~5*O>Rizrַ=Pv1XϝWZ93ȉJCdEj:qVO8uݎmRG -:v&aݕdD$:MX7Vdey =+y7OXYW!-\j Ç\:.wwP\J++ȉod#mx\ˑ KXv1X$g1嬳Wy# H9L| +p `nšpD$t,3A9b[dOX]ߟ[=)mM <5=uu7/W-W`sY,}NX>#>FFt⬔1R_|}B/Sy){?rC_oҵr&Vl!aMX;t'KYC6~rŢߔļ'B9u9>޹{WHM@;^RWڱp`=PieνJ+d#Ej:|iU]/c{m$]ss(MDje>۶WX4PScbܕɁq}h+ ۷lyU'W`mۻ_izxeL ֺVfY~H-۰Ec`C$YG'⬔1R'|S//gu l>[U07a6ۉLj)+e&] yOIXS#~c[N2=:aq󦜍ʞD;^h W`m/UCw4j%ZLx,eHXM'J9#u|GͶѣR/^ˣ޼%'<>}bx(Vl!aMX̜7 ޤ,x!č$Brl{kcJOytz 9#5m2xfC kǟ(\xvkj(sBH>pHc`C$YG'⬔1RϪݾksV; _Kʁ#HX &fd(MDꈤ%ӕ&"(bmF V}7k1jrx{yoJCz59#dw]\弻WgAkf${mAX}d;daRH]w2c숔e9ͭw/Օ2y| +p `n:0']o"VuJWkX)2+oOʔOf-FU~3tVښ£?\1RyV)}|6`nۥrb?^';9 V>!K5RΞSMv4X$g$6n::vD乫>襫U3T$B*:^o"ΣGLaFڲh־5˾ڪ,k:PYUf``]dg%Bd9{CKlk>d` kՖJ++/8Lv4Xw{V#ݾ{H9Zc7`Nr6FڍJ@6kڭ1/Zk~Ub>}F^[K`nϙQ ۠i}f],S5;RN\ƺؖ+J >('aotG']H[es1=A-*)\ Ȧ+1+Gie.CGɎFʵJGȦt⬔1RnQxz&M_|F9f,;R| +p `n'+Mo"/KXo<Wx-m 4_Ą:M/\Ej[i NXzf JQQ+ k-J+s>SO`s_ie=T¤JGȦt⬔1R*tÖa'O]e.CĄU5rJOytu>lP M} VL8QM ˕k+!,VӉR`=WCi8_pXEmtRcD2"ފ[K`n3#Eo"_HX5; IW\:)zk4wprNwS&<4aȺRs1Rp9fqkfD- 0\5XRZ|VHM]T `Nr6*uVkԏrE4N=vmx@$5 kJNªi3b&J[j2~Q9^-=-&%lC+SO<:a=9#-.`.׺Yy`E SZW!b>hRi `Nr6V+nܜuʼx%VlV!c|%:rDJZ*Ԍ\zlfi7r2("t5ъDxE6xn*DJv?G'~oOеj2\r笏I'[S-]ە>  Ψޮ(~wu Q}HXkX+#&(M f:"oWu%޿V9dS,9rpVaŦmrBVJOxtwl>Zr eVVgWewլ='kuoyS0RwUZ9N6X$g*Q/XiĬ{XmdC -$+#"Sl*Lܸ@YjS4_VP\e{A͔|[e-v(ՠ\sGPtęr6FjJЦ\5cJY?:{n컨4~b|{rH0NXY)gcJ}h۞@Etː` w VءdHh3bD {V*%\ΚƘrU'vt=5V_X9'{kǾJO;xt7EU0X9+\ϭjƫF9oOg"a58+l VfmV@R~qD !aa}j]%FrP~&d_lTq~=/ y^s'>S9vRykqnӲFeNSzeJCz7r6Fj˞}JQ'\5uRY?}V޲UJ+ۺH4RgAc9rH0NXY)gc*WZ`ewꓘ` ;(IR0'BHe5!Y[j|@΄%G6++`Ê;bvJ+ k-rE̮zQ`J[C<:a=|gJQc kJ+szre6~qXHN1`Nr6zNJ+M,\QU:4` w yk%RrPΑ&"aO~տ2{r]v4ne_mUVcՉ3?]#64Aת*oeޑ F3ݯ4ģC_1R;TzU0Xs*\ 1 քsVOܣ|Mt⬔1XuwUZc7ծфGHXkX;( *m a"V|6ʚ;A(> 5˶Q(*: IX,'go4U驟G'~%gcv8"{U0XgWZC#+WUҭHl1RI\s9"a58+l VNN [e5^Q)HXQJ2!!LDª12ޓx }ظk}M+ Gl'M`&yr5"}Ҫ*-*N`g 8+l VJ+Ħ_Vō^[KpCAmLD$/ci2P7%#Ֆ=:ytj)[0\;[izyևDa s+ pHM_Bc.9"a58+l VV[yJSgWōފ[1Jk6P0 9Y;: !%†]{)JO=<:aݹJ?ʜr==돝:-G2XFVZYOo]TF-V,V%O.gcMlj?X8 +;YIRZ&"ah1xGB?KX7ks?,;wjEiT(}|3*iJ+s۳Qr$uWJ+k2m>#,V ;Q`=^ij5:E+k~b]=ps$]4WIfHX-ޭDY|*ʇU-i^Sytº裍r6ڍV>br VJ+s_~1CV]QdwSNdHXM;aJ4Ui1䯬q @ -\Ú*%isԝ˔"a~mPxe*l5|B6NXs1X[WZU[%0XVZ;g =*4Q)r#cJg,VE 1XfUZnȿU+k`:Vl!a]q|9bKڰkWl VAJ+qwr {͔Vg}z<9ZnҪyr:w' {6S`-h pOWkŦmJ+ +55:wV26uI a.Vk%+ !k^ ӵTz>G'v?665]i#~tY.z +g֓*-í[ٶKn0R}Z7q9"a5]9nn_#'N)$װdlj1x2HXZ*ߪ2`ͻ-}QyzhҶHN݇?[44prqr(G/pxXH5h $%"!"-{{{#swo;3̩h=)`ο|ŗj<"{ҧ̗ {FRk?^rccH6%=&;]Z7jN} 5* ~s/J @ ްf.S[@ Q/.VsjѠ5~ ^f3o~UJd93ͩ}Qlݜ?ԨEzߍW/üS/YTg3_chXC̩?|a/& d8g QQAYj=&"\'5eO֡K穗 rj-c&Ӱ6>^K5K2" +oiN31YiןOӾCի'͎*V;ڝQ]L6cF;/\ 3}5* +Nj5kNk5>LJhX}j9Iu-[ќz9j1dDZ]O1ӖVx9VըEc.6_;9I)`DTҽa>#Ϝ yH<\9Şz9-Ԩ2cnQ Ѱ6rU=ڪW  kПv@հ9~3i=!ӽa{UfEn{W^r=5nNjT5ʜ/5Rѓ51lT Ѱ%x5] h@>}Z(W!#մQA ͹zSo5Z k3 >UfĜs9jT%W3Shj/14pOy}evCƚs1G^?5*d鎆'5w~Oa>SL۞{?ҰjZ =z ^MkXłuyǏ<)ҽam}9A2؁_?kζhN 2[*߽Ϝsfk"sMx̘ըHw48 eyZ \*@ooKZUǷK8ӽafyY 2Θ1wU.iׯ߳ߜ$ʕRƜaM7=iNٯFs <5I4?Qe]1~ɍ!~ߙ+czF@aI lX{UZp{m))hXc̝B@z @ Xa9'~SgG {i?Z*S!yT^WϘvnLVʘS14Iuds9ǟQUt}_9m}̉$V4yؚ;?yg!>92<; [QhXpR!K^-V/$4U\UU&73go>/;t7Ɩ kaϓRc<qUs=г/U4_/G14o1G_C*#.]eΰǜׅ;TcC+c}=аF5MUZ(=OPаXBpFܰ%|~,1 hX׎1:{e9 ͹+׫U4 kNGH9H1s:<5y|p>eέ(Q]Ma yԨ489 wZ>Ubp\ZC*[P_i7=iΒ$#հ)"Ք$ñwN=mQcF׿I #-PO1s:<&;Zf4A񏚽МU2-uVGY/*ܢF@aIiX'n\ya6P ',B]KXZaΒ{IFa R0GmF1:oΧOz^_`NM|gjœf1 똹)/~ |:÷l6g{:V#DUl y_ը 485j[GnFbRuˏUH1VCA>9k?Zqs|ew>yɿV#v_r՜ x kRpSs籧~F$o=5︤>eٲT @ nXݰEUkE&7+G-l7V@Su9oMV[=׮]koaZ[1s|%oF5j{M kau1'chXmJSڀ)j_OسO 9þ}gVcM/T?DSV,Ѱ{/Da|9qrW͹_gmUv`s|eŖjŜ aMwF~ڦ1g{>M۫qQnךfۇ" Vddk_YTE0M3,ʜUj_Yc&m*.1g{?'ְ6806՟%ÖW}qk)P3%O>OuK4ʪ{9LU"ذOʜ>|gIf*v>eNbEG5ڴvW9~Ej{}^r^I2'chXSc|svǞjiѓ|ٜ_q{{D>C/fy#ӖV# а$M~󔉳v/~*R}v:YuJe*mO;s"hX-/' /w?{3s*; [1G\(kjё1{̈'mGb5(ȼUYs*ֺMh#1>hNϙFoمEd2WΞ;f8$48Iͳ4oS;TOJnQJְݴmaÆ,Z)`jOéd?$' ]ʜ`iЭsd䝿wGj^b֔ySO˜ӱsd53Oϙ7y^65|nR#UIJBA ֣-C}rȮS'Zz>ScK_ﱜ=wy{ܣaI߹TSUa:I-1#% ;_Gm8'oZom2wq+֪GC Kwy԰GX=5Şz9psϙ3 QcN_yMT3W%%'4 ^4g8ix*B|*Cz8re8eԜ`ź]G {}Dcdpp9:YjQ|Ns7߹~s5d ϾâvlV7{ܜV@ A V&meiXC1f`7Zu=ɜ% h|c>jwB] Xf،<^b?9s7z VF=߽jN\|ŗ SOX6i.U"nҢ~|֜`t9'4n_-B~J+199~*~ҲS>tGWIqy>7sȤE+KD{}DchX{)~}e6m^";{3sgjwҌ]Pn2ِ rɡg_T SѰՍ6i[ua ij.ѵq3l'!iѰ=~u9aG6^(LSWczzbsz kuỷ#GipAvzڜ0~>aظܜPs݇9zW SѰJ?T gа4}ZHZ66ǜ$$]VyDs˿/~~ϾJk20аVoNwH93W;z1>k|HyŗԫR>C-/<|F=۪׭.;|RR 2Ո'44A-EĦ~Eh鋮ť}svҨafj{HI˅}nz_ 5/ r^bjtSFr%蓳Z ^.\g?zhOԎ?uGRNx%'>xVc` {hXpBd5fÇ xBҍ3jҫaӗ1'= yo_mw#ԋ㖝F^pŗͱ'!uAhGX=zÜ$_O߳w6h^ןZw8evI~ަԋV 9'?NQNZ7n&#\4nnȘɋWzk9agSZ݃PаN)ղVW-L+z5g>Ԥ]*f\oN}Wfkgu p6ΞvWwNJZ.~i>"14ծE'-._~7o) Er :}ޖ'sc|oMz5Aˤ~&1t-z iЛ}wyZг/$3xjVа&֑c{1hXQjI>еx9%VudsR?:cڱs<ӈ =M6}E+lU7߾_H~NZ&邽>"14QtW˜= vW'_:(wΣ';>oEEw>;Ocb;WW>8WxsYmwMӗ^l̒G3q6o{x_?9ٕWͱ0jPCаUYlq^}RVn.]'7?OΚ i* kC3{U-4^bֈv}Qz0(w·bN(Ψ@A x9 J-HadoyZDUi")۰}sRcZ酽>"14~~sNjL_wUCGz5 +NhXŊû|gx4. _>_-: 8n3D{jX؜͉2jt^b3qZ7`>揨yc&9 E@ D ްyWItҰVi;  Ma.ɌU2*㒎Ղ0аFS.}2j|-oϜ߼JnfaImX ~ЪZ G`͛"vz\1 x2#\CY7nyeP{p~#~}w,ռ_Y-j2V̆uܺ%?E-@j'pŷ5?ysqH&5+~OK<܋-C]bsz k 2o0g/seE;\c09{5#G^փF@ G հncJ&H;t- :\( !=k V a.VaMGiѳn|kӰմe{Hϼ{3 }i{5w  +N2a}[g}VLROݺw쪖P-ZB#rҰ"س~p5[5GX=5}=_|a|43 KMm mMOt\4K/3&Pа$ֽgonIS\B 릗߿yŝLݭdy]K(ۨh"14ަ] Gs)TGsrQF=ɃH?5}}TM< +Nz̘ gY=gM;}F62~|[jjS=>cJIZdM  i%,C35&E{焹,_=3xoׯϽfsz kyGs<%sq$9_]^lunR*~Ϟ\՚OУ3Vm9`zݚ>"u) Njrsgܶ?u5R./+?yuP/ ~١{I3d=K;|.]??ԯ.[M @XhX螬]Lp{Jy;'?=/dsU_c=p˨ )k7&191Ml11ũo>¦J/_Ӵx#Ըn:{u1ayWG_ݮ\|'|Oy {YU}ܔuU/ BA )n ZYu}ѾMzi;xL#>vǞ?i6֭ѷvOVZw~SF=8 { HxínIo=[ӸyϒU֠[&}Zw.?.~Yq7?X:H6VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahXPX5$X{ߎǟT=I  7nv7C#Ԑ('@M]J pMڵ8RQd1sz# ` { T+mՐaRf6iتN^  #Qk⏨/&j0a5 +QA RlX&h6mbNuK7o^s50BDZsаaR5@Mjd!a9hX@B @TаDC }JPGxwgQа4FajmԺðq&L5d +J4142};CRk?+K lXSCѰM]:|5@(hXTaa~ں:)hX6oCѰ}Ұ5@ƻN֖5WU@J 2 +U9V аа QGQְ&@J 2 +UQ +hXchX7j8q2ur0T5aqNjfiXiX@Fa WhX @C#9Kߪ{zrCj05wfd$V~8u414j;7өuP?GԴ0 + +H4TaY +hXchXSցSfaa*LZ\#a2@lX hX@c5ai k44 #ѰP9V ̆5 5m%OaQMkXeҰҰD @6=аf6ƶbN5 !i k44 #Ѱ[4V' +jfzwV5+׫aQjXo{SAJ 2 +NkY 4@ n?Xil/Uհu5d$V4JxfN&kT!C8a?hA 2?n).&mlNc`޷mFDX6;T֗ GL˿6s|1dyۮj07R߰PO[wEur1nJ#Q5!UU?AY]?B6$c}\˼׺2|Q:Θ#Ywkoi;QY==2||lȦUcϛdGui3ht2Iro=jEwr$/w3w:VČk;NV׫*X8Km:>oɖ_iwVwcF#f-P)K2xe"cnc`N~ק6֒C[w,.58mkag-w*4t-,~Y*{u>#p~ZVm3(wOZU* Ѱ_9~lrP!ka;ƿ"NJse-*j+{jF$r=dI:oWBHS| 7gw6hydlZv{aSq,%v9DO r凲M]ajS6zwVs7nSl{ o~g$t/=vh5>~ KO2F^(G<[@9#rM/4pl55X(d,ے~!n-E Uާivh-SְuBz-e2X:*^NaO2H|" J jU K[>47\v@5dxvǞS[6,YýMۏ[rewV5d2=jo5{2UzϽn5(ͣH޸cZ VU,VnLvhW2/ U*^eڸ^7 _XtoGLP N-[z9gmpGCzzZ4E ݐ1O BoXokT$,Җ8SϲsZ -/&BE[DEfޠFɦ IlX(ໍZ;\oΪ_R '˒Ѱ>ЩwlTrH ~Rcժ{Rsy';ˎ&[Z]-a w{A/ N<2+k>jB5IzCPalcbn.uòa42W>ufy}|ӾC=%º0 :䓛OGBdCQcOK'o1$aөn5fBaQ X6TٰGb+IrۥOBqĄ M6PAQM%ܛnsX% dA5O(Ѱ`rzGA߸-?Ľ:xzf1X$}:R3^}Qk5moRe:7VfpVwhHva85fOdM5,ذ^gɦmY=J->V( >%!nרa6s?n_go?v~˃M"O$Ӹ5~I$jyv{M% isnpePU[15 ,ð 9Gb&})we'a;[և {4cB { B6o^12=YhX8.3՘}f?XH#42 "Ć ^g.ݼ=}=ںtkݦ[nns|ҍLYR -g\siYjTXY6#o{ٲ:.~UJjd[~5,i*xgtg׎q[X<عjA >."247\ Qhf:ķ5n@;rϖ mnEao{HN,X_M'y );M۫WI]bw =}JCfmGVGP ~bf<Җ?|~B\hm.箇['Gcrdd<VLl]YDX kUr,Y9`ʬ^yKO,ѷZ|vaaaQzu;{u3w֒CjxC&B1f5Xd6N@h~J'=i1est'8Ak9`D9 9;/hAnٰ_1k3*%amڷ+~dðq{I ?d\metVV2t<٤eG)9ݐ1'Nz~!یl굼JlXmQV団QySÏZtt|;[rd([: ;I,s^ˆU6[+.,G!y[^ZK6xs`Y+|y*s^eCf԰ʮTo*KCʆ={#ͷd^(d 5;&)]>%:H]lخb/1=ݔτj$O cxNj52-Vm#pڲd e yW#T|,4F{r;Ɂ]>i{|ĕ7_cl- ?rOna]ѭRMMv oQt@аpOZu6yo;s5jD?nIJ y6FP3Bmo)1Uoˀn_4k2S aw Z!SAigg-/ncsHb(;i/o( >W;`,ɘ {._42[۲}#ph`G9,%ٝ:'IXۨlW5 9¡9WOd#NC.Y6ʒMdY~a#=,?!l|DHY$eF,znհYav_ ryHR:|FgL󘹋n)У} P}Z!~vU>8HkT5,n EGY~%F~Q _ٔqc )vK Ur$ZwVnݼ>6G{_#&|/4;]˧;TǓG w]v1#Pˏ@ @a_"I7af.>p+kNd٠gP0[lr +2 tfw~$fW5;TAݤR=)KV'O]ZAFnw ˆEKKL6&ٗ9>T%_"&`:2 =W lvkMDa<ϸݞkg{6= k\ShoÜUK^) =ZL2;vKg_7^F}lM:Q6  kju8>:>w`wތkUٰʇ3w6hiy{C]6v%kXѰʱ]0f"E/G\˱>:czr 6Hz{OH]db,v~K32`Ow 51]?* Y6jwN^jlBC# ͮwx-9޺|Gw^Y_&r a[q;2ď@ri.jH2 +N"Ұn_~8id{}O+ 󗪑vCƨRw7[ =I 얺M욌1sߢčM\LlXVHnf-YJFÚkak!71nc݉(4iJMxn:mL]ikfœdQsa'E-۬0O4dz/5nkן9аFmTasA7rYG%.97.+[6M\P_nEY.|K7= Y^@6q #Լx!GCXg6|l=gfsʆUf{9,bQ8,mՐ97vա6`!檁݋^YhL  z-^rP#ST1hXpuR{T1x:sCˊvQ8MoyvbOd &F{$>ke+K?eڍ,H46z2y>VLݕU^dDza7vo{z*ә @`w2 eBH|:#e+cm`-Sbw{[Pn۴Qnc%orhװ{0eLYN޶'< 1?oղ}OSaE|lP;s! am>vSu} njv >T'd ]=/GLUήvAՐ^a5 SE 놽E@woe-*|l{>ep&P |yD'ްn_c,/]ZrY c-UOI<eDNG^~΃{^ERA^2swV +׃:7KW%^7uQ2[Q QhX-Ou6N .n\jv˞xT^2VH A6*n\id3,+FeWCIj< u)y˽aYSe{SFvלm+yS] A^nzkݦ2*\m^͎aYmuc k@S5`̫75.﷜ȮaO!G!56CCԐ)c|(c,8f'߷V_vs  +Na1n̽ĜUj07,6p7J<ҖpY^y{߮k"?e}ecb,An)zU#4ˡa]c^U ]gdB:fb5U`j܆QjT5|D 6W͎!sG̜&aQ Uz5">1,Rdװy7تqZ^0"7nS#Iiud5"7*DN( ~@dѰ p1X[KyZ &FޱW f)"E;w=*''(-Sz/}S57ԥՐn84&R bljy_(Avfy ph{zz^YmԯnT>|q[5 V5t1Aмp5 ˧~Z|]mVj$Sf!{"2,Ć5/aX~seQ5{6c;TC ,f[yғh6vG ]H;FkX ,C5dXyXhIS5"1tF(>@ @aIZ7퇎Uczneɨʲtm!=w=JMsNҷK3qOsbhDz^i̙ݭ7"f[֮aw'6v WDay[?iQNY͈Zr(%`7/SݘYajdA?[ڎ7Q;*Cǩ ov='8 >n>bڢݭ[ Y%g=j0BlXMxCtfd?lX$CMkX-N2V1u;n=E VOm_{_Rofԫ y 5[6I:(}48Iծz cN8>fIEnYLlݥKpVˆ>-Ԑ۬Cm`UYND{\ uԘ 9 ԐUlXvh6Y_7FV5^M з[6Qcwj5W44Vac E MYl*.MHw=Jz@HШ^ @ ,SI2z"5dԉ b%`奱?l,&w*5PmndM@ƽ fFjWp(7Bfhjaظ5W#^vBޱWMZ{MWvdHP,,5lX%Ԑ}w5fkdiXK Fd1:: pt& ?WIZ4 iBKkXYwjH5;^2 } '/'G а8eThv{9>W l97lUٝ&ӭU]i%–MPU)3z6Z * xsoO@l-94qᲇۭR̮K{Րn5 YjHngqktᣐf+{uWm\38+u~۵v쮡qh6sf_7|a87{+'%9_ F !#5W)kXo\'/Zare@*omF&5NװʇC5Nq̷j\hul}Gě$ՈY hXpBjyn})+,^ 'NS3+,SߛpŦY[5{LS V%aYjH]Fnn5hX. ^E*nհI_Pp&ƖJv5;LBj?t$CX{]FMT`i.jH,*O׋f* w6h"aoLr-Ʋz VCz(VK#j5rOaO=h,5'5?vwȑM&fjU #Zm^j.aæ2 +NhX-q򂶂`[C[OIF!6smV#+QU)3V WCz k̭uʁHrW.+2 hjbDuyeV"%}&NWCV) 5[MqjHg4^ھGG`i#_Ȑ |;[sܫ~Ő^ FkTU#~ˠs)y gܨz_cɧ,*ɟ]M 3wqWf/V9[mV;48aAKjg}75btIx0Ъ.6M4Q,+ڡ(ܳڍqoӪ%`YRsV /wW#1t1A U717j5pdF9g4C bv~5a2~ԢCjHZLC4z6-7W>!Ѱz5oF5!j4"TCzz*o(jl1 8]C5Mᬂu xiѰm='Fp'mle-1yk7_rd'4bj "sѴvWfGTy>nW,YW3G#$3fjlB"jlhXߤߥ2a5Pa~|L͑aVayU}"dWVMt2nrJ|ߛQ95f# k= a2mfԐhXOj<;TC Yj^ 9 Ԑ^۰G&˫W7>V;(j tiXefիCY,LRpjwηmqy%ky봼Qn~]_Y аULZ\AL[4(WYaƿ&>5p*L[~z W ųYGՐ>]n5d2aQY>p4xea 6O;ZrH ݪ)217<,7lUS%6>VK|nޮg<*vxt/ lº̂ujvBUj<OXxyN5W6,Rx!-5OMGaby!݈lÚ@Al_mMRc>uaq;蘶l䉀j =?ZTĐ nR Ujko&BZ(4ໍZ_749H ,ѰUuCge:}Ou -q%^d,Ԑ^5"eLjWS I6m9`qw;5 bs3$?ֻν8 'NSCنծ&l&A4^ɛȦ5*`^+ƳMx ذZ#x iѰS/!Z s# : c.VC:DADaft9YnKaeG VrXe ϋ2ݓ:Y*ܳFww}wgy<5^XޮVl-"2XnV8x}j!-V5~ƥ7mnУ}Ր,o"U>&>(}=j0g]LVc0۴$a =0l2cX nc` ߵcy]};4Cp 6|I."۬Fh3a~s˥vW-,,/Ѱ.٤, P 2w=rj A{Np |dԐ.Eavtn9\~MݍWmߓʂ0 Z]o5!Dx oXns) |e^`Pø&yk7|/}i85 +NfZwJQnXohjJ+cV0]C3Ԑnt uOBae8J J?oUMa[?i*On{e"\hCEa~vL-غ&wwAPtv56 4X>[A#9+"Ćs+>lX-0ܿn\ߠsi۟%yjHdS2810.|OjGA6W~h~аdҢOMh,QnXlnš?v^~K6CxdekwdSqɍ^N'>0{7igykʍͣj*}72a{ ֒Cl] Lv|S"VIjTÑ-?ա%92flw9j 2Z}uls|fYi0XzQnXN;!Ȯuz%Vz Vc31G$ki%'\dw`!n5f}Y~1kXs[}\oW E+`>zBvɮaݲg!!x Ej$O}& 5`U~s/QZ{-T [@ а.n, HҰrn㼽^şwTTsgF^~ٍ &>JKw<"d^<ݱ]:|FؽLjXewUc3ZvyvֺM-ONjH:(w'u*ƛdY^廧K$dzR6Cybɦmky(2I.uwjg2eE;boƊ=L oZ MַF7l?/wSûU,P[~v#n_ o, ٞ=]_Cf17lMF<%lNvc5͖&Aj 6w+1C'Ri ]kXl?"G˻ W_1r8U9n7${JN~+f\vhyU8NVe!{8A>6xj̅-#򢝾@Ѱݐ1?M[:=eM%r# Ym@CѾLJN\M:Dzkcz*BwߪҘHpo%'sKe8)yg#g/կ7 ԰ kb6>V"òVƽ[[TkQhXkwG cIyk7! 3%9~kݦFfھGAqըbd 1nJmS.}[;z$DGz؝^{_끣UU0U IVaw7r7oƴk./c:vcԯа y:frʺ&YY]۱%{'\z }IZa}]=@98ijH,#$[dv6βɞ0@ {uPo&j~QkLWB^ؿzO~*~پ!_ׄgu^doeqĄe_VSuWgS9M%>N:{-o,}I;SB[.]~_&CR-61֚pn ְ9 ?|FC:LF=L-+Ѭ0CQe//hЭN-8i9m+y""w,GcVn=t<tgz'퇎1se`KN[Ȟ8v^~VAjͬݐ1rXVxÂI]gM7B[ L6-YMEz] 2ۡ[kyB27rUN>ɱBic|$9{'$= 󗪉>@n-v]{ObN5{-w% G^`xsWQlXSfcOo{+r;f~ѥ*? $0m,Ƿβɇ~gDawb U.4d,y4!?:{C LY v r,Xr4F> ɇXҪsG S>l?F|{zE2 +Ufэx ׵ϾUBp3wލd9t0J>u˯!#tE{װ۴LܶZ[uȴj{|Ȓ|Ѿ9>wƊ_h7dzjtOV[{!*斺Mf\ii򶵼hq0v^Fl2ɟ WҢae?gap~_@r$nY~ꋷj-?Xn]V; 9ʝ->u:2XwE[Uoيbd~7 e!K#e r.Y6Ӗ{Ԉ9.ްUv UQïp9qɖfЄ,4Vsfw e/X& (4%w H3[4J>y&п? @DаP&}]zR2]V]oGͷhR4{[cKC.]YmnՒMBYeװ[+4!ZNd7k>y 5U]P3{#ZzWڍ,ScmyUlp;;ĤEjh=pT]K>ud5~hX$,/Yퟋma]U5cl_ݰ rѥ#&R?k*k8]t_j?-pe:b|y d'Uaw{+1*۴M&<7sK&LjS 9ߞҖRqF VX}O!cB9$ZW[>۸56?EJmjw '3 R]ed*~پ{Ѿ՘]utCbJc[Y*Hް@#h#B6*,93Whrȓrml_Q*vS壾$6on k(tpʯV!Qyk7gبo ao!jEVoY6.,.nWW{O,V:tim[ yc{QԆU۬C5rgkwU_8Hd]KvX77]Vlˣ_=Q"`j5aL;p尡4B2yU`YH,-k%քĦY Rb*aԶ}o7ȧpl:y,L5ꜽ`;_IA1gUzu;2UW0l #Ѱuz;{ +rt}.]ydvkqjuQS/%_wofHe{8}VU'M|,oɋV 6Ѿ[N'vU0eC7nTcO57iKҼss Fټm؜%%HM&@vgKjddXXXdtJD#ʞZean&}9X%sneE;dfGZroaqN]FM=E {,ްUv;Sv ]e YU{ơlc23V=gKj#,2m8evޚ1ȂZTeG%~&g+T 6tMMҙkyWiqLrE St֝ըDuuL!cr_?nȮzyk6f/X?gf#C9JY6E 2aRXeg_!b4s'&LR+j wz 6vpvm; ul!Oy;ETeU) 㗃Wva9[ąˌkSCMҥ&r?U}JC̪AXd!Fl6.dӶ+˶$[T242[>'G]&r}lNT} RhX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-V u`FIDATpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-VpܢahX-Vpܢaɷ6ay+nWH5hzO%Vaa:Ӵ(@XhXHU@XhX躱N#U +аѕxsfÆ,ݷu3߯d^;tlN,HV nkTի٫ՇULfF{ZT?p^+pw/} B!B!BIiX%+b4@}nzٰ!Ƨ%[!B!B!اF5D D 7Q hрB!B!BcjZtu@аQtW }[߽d~4 B!B!☚ְv1Jg<4@ݼU|úQgB!B!BԴlu@аQV㣀B!B!BHUi P$ +E4B!B!$4"VB!B!B VC D +!B!B! +aB!B!B@аQDJ!B!B!AB yhX(a%B!B! a<4@ѰB!B!BHаHV hX !B!B!$HhX$ +E4B!B!$4"VB!B!B VC D +!B!B! +aB!B!B@аQDJ!B!B!AB yhX(a%B!B! IA:juOz/o엗}v_?{~=g*5p "VB!B!B 6v捣|1yOئ~1yfC D +!B!B!I֒W<=דGg<4@Ѱ[gə5fII ̻e@Κ#?1weGϚ?HלEW샧~k┓ELѻB!BiIRzϚ/:>sZ$IyfC D аF(Nț5fڒ'?IMhX+zְ WkcOzz%crM?x^a%B!d46ǞsGߕsϪQ%: yhX(JYz^=;\[[SۊъJ,ūra y|dN:}1Ȕ+\eWhX !B!'usq9}֏Z?;~}z46LT4.ۿ&9oFaP̫ה5ՙj5²YXtO +!B!ް捣+?aboTɠ3HV ߰^~kwyi3+{YN}pˋ_|yS>W"/] *VR/ٰzɊϙ?HTOf.YY> ^O8 kkVWr JWϾ}t59y&B!$+6c \ syjeyIyfC DQ?)?GꙗDJ14f19jϹ#lE8 kkVW9ܚD5 ܻy&B!$/6PX'_(G>QKg<4@%a5ﺙ[5'VBêBZUhX384BJ!B۰{sYoοhNyfZ: yhX(Jvj. |` CBJhXUhX kUhX !B!p3U:2U wʳ]j]꽙ʞ6ge=wU_U.ynycf,zq'}ysfF^xƿpï>J _]1p髋_xꗧ^.Ylav+> K~ket5'2;o͊g6z>s *Ɯ3/g6 ׅ}ֺv҆ۼ{m4d[NWlrw8r|c{W,:+-JRN(twʖ_xqN]6ß?+ߖx칕f0ysfTi+W^҃́-XonSbnWVcb-2G޳!B!D%܆_.^P`K_+ϞPHg<4@%9c?tٝr+J~Uw|_ddǻKn- ]t<׾q{*ξ&Op1RߎX cKRL+,MZo+9-/_hb J܊(^?pk^-{&lo'w֦Clu^[Yא<8GJ[oGV_g-[UpǬ}KeӋOj  ǝEzвٴX e3u.luV/>w.o9Aֳ^wYYyc6sDˍm#ۻYrS_˒Y0WDcx|EĿJ5GO}^6+>yԜTĦp6mk&n/}Kʥ +O [ٶdlQT[9֍oy70}VweקKˮa]%O:4k}9g㑲mVϟ>bhl֢by r8i^{9SC13w1}cUF\u7E;׌oQʅG̣2c9Uj²7c9 9;ߎsgMcf?GVʌWe5e.%e ?o}WTz+WlBVh7FT[+oEUtQ椮޼"w^'{/ //\|in7)Ȝ5;X}}5/ĪbCK-_;w{ sv5wxTB!BH a_<ߙV%%!R$ +E)hXꙗIda~k+ʇV+?U⹗Oۥc_n̟<#<&waћ\=Q\~9Nvi\u+UO 0|Q%^u ?ş5. WqT,ɜz kk񏿯8d˿=_^Ӽtn[ԊNfE~ḣ= L.U>mmxX6X5W~scsi$n'^U8lN2!JX,$I5bنbQT2bl֦eeT+ԛopdGK([9񖭛/yc/Q\ayߖ׬UYIK)ے91P k(:q\u^z,w m _͟T%@tpgִ+vxKe,3o_t_A8:wsb݈!S1UO_nmZ1X-6>`sWy_^$k9ۥEseڒ;ۧ>ߖ׬UY8U7۪C%sb{s][Mߝ߼+^NQ6Uo3:N.slGKEdj,Cs<^a-}iR-ׅMaU_xBʊIrB!BqJ 8//^:]/?|q?6ۘF.u@аQT k쮟l5#[>'"_gx99peasb8vy~1>2`CV<.r**ʱe?jYm~UKϩ,Q'-imZc0ZibNt sfNC8Q\>%[ìoQ V+\e,Nk԰%w7cvO{st2x46O4ϣnZdx2C'*6=6ߌ$ֻ^E5ˌ76nv4B!Bqd4gN/+kܡF"u@аQT yr9gEGΘ?pyĨy rZ׊2,ᦸvIJÚek+r^|.P>_9^6=6^ߌvXk8 -$.*w4B!Bq$5B=`9+JEg<4@%a=C˕Ng?řk_8 ? _~kQAyiXĨ+->fuyV|B0beX-'=?)o_tn*z!+@S|*~9{nXj.§?6ιבӊ0^ڴoǘG&,+M}s}xUQ* M}q|>f-VȾX^;wd+ k6F|vXoKPH.$۹ͻ6Ż&=zտ^|X ޴*~Bk[SRֲI}/4V_-Ê(T>5Dbk5,)}X/Tٌڰz}3_Ͽh٠zBy46;!B!LVҳWT|l0"{yIF5Pd7i\9IŅN?{Mq^雏+ ЕK>x;Dw?)?춍jjcMC~xbe.~!naZ,C *e%k<󟊅川V6֦]Κe@& /|596l^cQ~_Y0&`N}Rw.yyc©ΚXqקK+[T=_&^)>yl{^zjݰ.H"ESmnNNka u]K'}޽-%Բ}حrXp8s?\qfM$gcېZٛK٦^>Nb{Mٯ,,zr: V_hRֵ׆Ϳ@Z鋲0^xx vy9-Db^.{_W?7lvz*0K!BiIj*F}~tK~~?2n<ld[7v$hďsᘳl+/?8\3C^vDeU~VɅEe巕%k^NiEKϩ,Qi;6k>O,e>dU`]'wɎw?2ɒʿR1IʦX 91.!g,Nͯ4)oW\lˍ$D_gt0nl}P׵{޹ϻ^eZʜϿiXWܜ3ug_<~1(4fښ'L[qxeyֵU_w7TLр=4xBiSisbaB!R5f޵'|xy <ܽՐ?y NUg-zȻ r{X&t\#8}WV/1$+ ׆,W/\Ɋe;o;;y6;r/o^0׼@j̴W.}[_9H3,X_bH!󮏹| Ōg*׎lX*+p;:s9%3p\.֦sd)-vhS`\9;/j+m`U\װB!BՍ[.W3s3wPC3HV ްB-W\8kVcB\Q0f)铯oeBjB!B^"հ%%/~/Vj yfC D +!D|f2{׆x&(EKOHT~l S~ŭ !B!$bZ*[W?z[ : yhX(a%Tʥos ڰ~xd:EK*OH4֫ǶOW.?|.&B!{"ذ{W`>9cr5@<3ar=νVudžeE{dH4g/qjHxʲ !B!ih6b>sZ[ u@аQDJH [(>{\\υ<&[ʙƠVB9ܰ^zkO̟B!Bz"۰&: yhX(a%쐬?Qh +IT_zn8kLB!>a<4@ѰRs=wx%gT9/(p/a +IT_zjQW͟B!BIаHV hX !B!B!$HhX$ +E4B!B!$4"VB!B!B VC D +!B!B! +aB!B!B@аQDJ!B!B!AB yhX(a%B!B! a<4@ѰB!B!BHаHV hX !B!B!$HhX$ +E4B!B!$4"VB!B!B VC DjX>sP> | GB!B!B!i k<3a&-֥Gÿ{h@!B!B!15a8c: yhX(a5@> m0?B!B!BqLMkX3HV Uq|l-OB!B!BSl3HV i:d^o| +pw/LVB!B!BqHjX 0H*V nk4a/Yn&2#QG DwT%kaCr ۺ@Qed8QMG@a:ײҽݼ: аvY +аQwcF xB ,4@zA{Zp1+D ,4@:Vw4lvWQ`GիB~θ?4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ[4 +E nѰ:?MTHPt_4HEAh&' u$Bu$J_i%^,@٬D]AlX*UH<3s;wfI?W)a<gf\9K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K #ϕ8_IHy9< nk 6S^>0,ïnL'|wns_^^^|ʏ:9{twONjD6VW :6x9]^<퇧g^m;8Plxuto7ytzN>w毞jeݧ擇_T~8xyiyHuɛKU~HXG].^*^'a}zgߺ̆o9 P+ 84.7oL,g?à !I_F'OZIXGݽpGz,^&!y|ܯϗ<,󡟶V^Y / L陰nWl<}zm}k,MZJUV2?8}f!9,|}Xy9ol"VV{ud.+8;lLqޚp 외z]mNũn2ήOw}s9|d#[J0 +_x,|6Ե>$auVV7>s&Uw9tqᦁyw ?e݋.-/]"^OJ!O&+:.VYHXWh[3Wsm ڜwc=H!e".ܻ+v󑮻}u೴|&_/-$럯|mڶ?{VJkH lE]cBº6VVzyZνVv"zֽ53.Mi-yut#;8|-=3dh;_3!8򥲪o~b`}-ȡ%J[Sm|lv_͝`wu,bqNrlhj~xz||u Ɨ޽0p;[-dO\hh+}gkzAnEf-/L\{sW7?w|cfl ڲt/K0fHe2ټkOkGKWO T.uxWW^|v<.aݴ{df(zw:! m暏d~=tՕwꝧsJt|:u߶׾N~e)gZ?kCGKW 0Mzjj2 ?z'G)l)1{vF.&͍t7L&a]:;T^cd?(}ZOm;X>Ƀ4S:w6^ #c*0}t/m + H:[{fZ\U֨]xzs_K˃Snw>S ʡ37Vr^:o^:΋6<`͓ =e`R5֍㮍 VvT8T3pymtn7pK(Vļ71$Y@i˭aaL~-Jg5gRIb|8@K"zL(K5~ڵڬ^Om7O<9/ξ_0mp Gܺv[WKܿhRPZoVQG$%< +݂lbk.>H,߸vҕV%BLZhͳسKyd/BC\5EWK#Od++A__b$W1&w/]\YSEU;zmH[é; زSh ̛ݚ:dvj|,67xbA; BVM3k\&?O5'C`\L s?Mvz '{cNO{) ;c3念ݝsEfm~/mɢVy ѕLoLVUk]C5xj5^~;Nf9Sx'+d̠‹oN7xU #eSGy/vɪuBja@ץi9X_OG %]#$)R2~?!Z|Wқ7k|0?eH>ኇ( {> +u`rKȞj zmAEKb+x|jdZ'ŕ[>Vs4+s\^8~7F5/<ޚ{Zanc,9:'k~^' dޑ~i[ gIo^f_Vۺc|&l=>nGfY/c]=~% ޥCY׽+hbkVs?ֆxnA" kYA;־YYngh,99j{glx 0l45+L~T eMs#/4ټ:z5ZyWkFsLe-*|Q2sv"y߲m] 6|׷|u^ dyp#˛m Na~rgLӿ-tB͚y ޛ׼;\۠yyO0't?3^mmvx ?X,%?@Pɉ7-|},f,ދpԅyj]v?v`poLM-Qe PC!t2Th'4OI0XVf[ mi+dv}f/%jTfgZ G2A{#]8y&fiІP:6O,'^%o׆ny߆>݉Jchf3~l[O(CtN]wCɁ7ο~ε皥u;MGLXC'ԅ}7 q[% 4WȄ2n_JC*iD5ItyRuxͻ_狽Sp +dzv yt:cRI@y֍'<]胕 P/VI0.D5gͶy耵tepk9rO i_Ash.g3=;ټ-9WACݕ{UnȐ2H97jZn?>UFOm>ʳh&XLdG/A|7b3U uԎ¼h9ᆩ-F܊cCw_m֩{kUU8S1pA8/h>lrc=Ņؼߪ++O UC G3zCSLʅُmέ c;CP֋ٲr~y>hr\!GW_hLjxgi>t%BCvF6yWWsgʼeOZ3mV 8aO˶\y륓6x"ʋ_mc(jR*ս13}:o-/:ćTY/ũ*M}AQʤK%&YWPm֩+D~4B@]#a-ٖKwfOd;=֞xԅn U&R;Zyb{/N{ѭ,mRpilVl.nOgZ^~~؛1NN論K6Vnn757Z&MGO9$݅9MC0n-D(0[;s~83}C짅^Vb֏J oAhtLՕ|:.{P,[<86gӽC|%[K?A)&]Hͻvg']^z/4l:kǭ|Ka:xZ#Z%xe\7agYɎÍ:M[8-+p"C&Y|FIg|Ƈ>Îj\d\9ST0RAS/r~bţCZױ7rgzUE};Wzl~/f3x]_PReҥʍH"jN]9W$kUUv]YY*Qݰ)̶U9RsѴPc*|"n R;͛Vڜpvٶl6;.N򗪴j%$kG)a$ MK:$~uZQ[sny?;oǞknu9aBScF:8$o1 i(y=?s~0C>n~d9\{]Q/[/yj+JUeQ_[P#cXZ=LUa /'*V#ũ6fXw*ڍW+]Pд"6ԕJVU}ʏQv)x..*a 8-[ڍ gk/8;Ud[w8Զ7tdOapdk[lkRר jW{wڪħ;mynltc}2?ѳ|v=ؕKGvGu^{(]{>8Px6 &>άsɶoʑW#^: PJKmZuk;gf?kzǧda/hd&u~)./=1ED};WNeiz2qTƫI>6{m w,B_Q 3aoxԮP__u@|ymSҵiepf<,VQ׫-QM/fҚژ%8mb8?{ko߹9zԵe뎓W,//]2?6{l<%$fX9kiN5<|s`Ut3=Pέ٫WrHǟy⪚M?~~n6<e .yĒ]|f2=u EW^\~c#y_NUP'iOtR_P6^Slޛ c~J͟hFSE]m֩ʗZUPfr4KP* ?/6.2a-oͲ- DboΕ._5#au=Z&NmauO筥Y{h-Ns}h4ԞMmR/L4Rlm-[Jt20Y:…_wѫ4fڰ񫍶QD{JY7<`;f/WӲ6aM<7ũo/Ox٥fw>Mc׻3ھfqa{yLnPFÚQ|F\W P(|`>amBOkUl}%m:m<<?jg^d%YKl2xf&l<<򑳍~;E_z/}N3g'+zn=1*YJ*wLmxuoӖ'%{Q ElkWpjW+Y1Vw qy:|YJ0b1o>3s1j:u'`PgێۋJv)VJz÷5Oϝ^:o}jk'9G[pSnjnL mSu}K|oڢPU3D:^Nur>ma];ofNuRfگ|Ur`W}:\5!7#];yx$|KXܔ 9>634֧pzj0fy1) kѳ^띄m~kHX#d}N:ԁrXY٬S#ܫ-Y7٤t떄GS\iWcG{P$]Z,`^x6zTIxY#[w|kri Uƿ#ח{Nf pIXx ~67>4dK#gN}$7$IpWa뎓7/V~HXx ^N;KW.^6Rٱgvք_\OZCHXxl|襹Y|,-޸6>jWC$agb_~獥 :"a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a%a!]TZx/m :Vycw'~z_$ NvW)oǣ7_?6 ٝ{$a.Ɵ} YKjs'JHXx6Rt_Bx5] oJg=]߽Ri}'a螃:d}@@ CsP*>fUր$UֆQ*kF T Z^"+$#+JLū= +Kdn*^ࡐLOū<,V֣jU( +*BV*kE!x5 a`] Yū +]ϐU WXKV !x5&aQ Yū= +f*^ࡐ_BXVXVXVXVXVXVXVXVXVXVXVXV82T~g7IENDB`rdbnomics/vignettes/dbnomics003.png0000644000176200001440000035003313414003460016770 0ustar liggesusersPNG  IHDR-jsRGBgAMA a pHYs%%IR$IDATx^݋wU?x=Yz|98 N ^@$ A% n!\$!1@"p1$5$! I !&$2(E軫vuuNwgHˮ],~upI4]$wDE pI4]$wDEũ3bGlZ5q|F^Ɗ =7fؿ R"#]?3>}_)57Y3g\rHESI䦿ǎl{|\tʉݩ7n6fN]ĐE}EtL8x V~lYq=s]jMD',3[]jR3GݯTvYJ5dEEl➧q>\OF}i࿍y^{i̱ZWƎO{v hISL&ѳO5?ڌc|@}$zw thgaZutkw٭t$/h)wW"wcF49?چg n˟"8o{7BHBQۃI'=qKF$z` $ڑ~5j5p{tm"DwOE/nLɔM2}|ƌIZl{V0|ТʳG{XO;Ea)>/J~;j)ĎMkm\0ߜ5fdquo˯=}f}ѴD#f$͸K5fx>1kBo,N~z٣Mt=Lw=>;>}ó& ^4C&'wF޹P7}"b'hY1B)P+I[bx'|4}lˬFrF桜>Ac;!JDyW< |^ue{[S؄(I$V=Õ[Dwgɘxo0V g>0ܷQ>e>8:c͠?.0ߠ]aԄ*ZMxhc'wD!/(1omNk'Ow/8Sc+g 6;#J8:mD_먉Wyznmw 2tm(3n-4*kd0exڋw=n|z#͓㢴q暇 LIcm\=6nԼ܋-lß5|?|2D'VL@AyӖ C4&:ܵ }dSp_7j3w?2$mm֔I-(7&u$S)돺!SVeIQ ^$Zﻕc$ھ0qm6laU#q߄zikokx,}>o8ȋ[ ݠ;&, {B)$z#7i!Z4hj{sgvKd'egqm3Xi9: Y+٧h>n[F٥ͨ80do,3n S`K$ietʾsk=ͳ!hqĚ|\azĨ ?ͷ婸6% ^("P"uhV!\-p“U(D?uwx<уtL39$z}S=$W[lcA~UئQŘh'miqɋmA}}ᵌ}3~Z&U[ɗ|1=$U1TWx|?Xg \0ٺMgRw.Wg;QoGkY_?PD˘{xs br1?#Z4A[nʣZ'*|鶥Klz3e=?ᅪ(Gz*s+/2I@leʼnʓ3vn+*|p* A;r.wO {3Y_nU$Zޮy(:;I7YZ-" ٥9#saG'%d*mU()wdAf9LW/hmckgzLy)U#ghIs#h-k:`o*sLkJ;j1L&JHIeNb5zRhI U*ڗD:X(<99f>0\hb/[r$}i; LwrII $5E{*S'ק^9q~7+PoW9a~ю I4_j-JoyJc*WD1w nN/y]I6X?E笉ÚVgI w=&2%͓U&ܪL!g_"6*Qߍ9^zٷh}4zވZ׵[^|qw@IoeW>[w*7aTz3G%;Lԛ~;ym@t+ѱm]PrLH'={oW,|t6  Jofi٣I/>V=Gz׾jLpヵ7vʙhs?0C?єTkkߨ'B\ӧ?+M+VZ} %VFX[sڵV .ӘʧZP&Ɇ֟L!x~rpz(ֵ %DϞ?iz!fEptcv{e=uf>`x{I0#lZR}_™YU؞QD >Gk[Ҧ<cĢ|wIEh(c٣'GڽV!+DV۳V!:JGU]BW $.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"$.hH"^ZHUcv RhQl/(19D}xoinnN^N &.&юD}COOww>uڸbK:5aAD[Kss#,F;z+=Ћ[ tvmuV3JO>\ $Ѳ477_v###A~kJe$Zc5cf)gr²%Zʉ'&(a$Z` k|)yN&Лtq-JS9ymŶb6h\^u.ڨThQʏTC;577ˑc>5N &]Dܼpw 84|[D{NWz`wqF%!7O9~/p)u O55m[a:@/ItAIRtk^SMMF#\I"+5%񄤮FǨ_j=8f $ݫkjlym^YMa/L;aԶzKH_h|tcgSvAҶ$Z+'N}HI}&;^g`)$@/5I0}q)"65>II8D@%ѿ?hcve{AR93wKʣhnn9|Hպۆ0]QٱԸ6lN=.щU*N4?zai'N#jj:ZS+.NwUh;J;XJ֫nLXZ^!.Ox=۳/6e+{G>; l^OCc U@œ)"Њ#".ْ$U5>I+q̷(6͡gݞbWں֙đ8)ԵXkuY-eģǍXʱuTvarwu[m/'N,}9ƻ#8zabatCnQR풯{ ͘^N77 hKu oGq* 1;=ڜDkWb-AV, ڶR Ey+#HDF%o#.I&e3Skf51xg/Mk0cf>OFP "GkVLgiw,ܯNӕIjV(riƠ+)j6G9]&#t E\ 1`ˍ=[+91yɆco9^h(k''ёc_(-?lT C(:*o9y xF6xض{C9,m,kcW 1%y}CDC̠ei'ک1sos23!F'H[SG%^V[w9R~JN9 ѕj}B+ȣcbmī囝D23N$OF et,MM2(w4`C1v +$C`Y= Ĩri'ک;d%1z#UF7=$(G$:mp/9-m'q!}!zĨ-OtӒ{n/Iua h񿌞_ў7W;upchQ_j.F8%n$Z^PhRţ77dw౐J+^~51s͊ / 2rm݉a/LSo$hM7,W%M\h`LI!ᚚNZ'8ctm-3{i}VvZyN477>6/uŠˁ>=uu:R){ֽ$ZI,uTt\Y)DS\Ԕ~C㶚&d FwBV=qb%a:'$>\tA/0BQItA7<P,=:/ląŽ4ݯECZM+ҚA=O>kh,6D;Γ;@ޱ1$z2Hm8TB'W-p}'W r:'v|82V+!I%zaRj䔙' t)_gLtx3f-V9ސ}_'\I5mQ6Y8@I;$~3v5N.:!v|s؟a/L;aT^ }uaeTN j.NGLqA/yQjm7\OIO!6*ՂhO]OE|xdewt.NW6vnOi͑Dw$ZXyhhl3WnYmG&N)9Ta<{ b-Bl)Y=7z]ÙEij:fKnѷ >'/o}h@]D6xGX忿!kv&l$$с+ vUUA, k-R{,f:B4Pt6)˕X5[r0N~_j||SrwT)MM2(teQi^{|־FY.ؔ3:.nXUItXD;*v] ڳtS䝨Wov#:!ǞOzٍwGL[|MM[,⥹)ʎnoxHT %AcgSv@$: fG3JeDž fcgKq s +;!vALި>D;އ6<ƿ?ȟÎSv>}z^ e!:!!#7w##WlhYƒq 4eǎ}E%&g.;}tBjШd)[wQWC@QRlPj D;;Y?dBR3 [%юE1s%ĶgRK⹊K]:~bwKD {K-%;%6j_ܖ8Kx8qc5A NIc,7v/t世]LRj"jƞ(IcJh}w$qF؅JM?q2[pcE,Gkf-uNEgq~At<Gg s`Y,&<19>-osss+[`O97L|4p0 ULBEt$/'=nc)X?4}IRS(a=v u{bwKD;Y3Gvj'&_h=7=$(Xږra䔙Je;iVGBONHw5,tB"t(t$zȱ^?b_DB!G6n7@)I88QR6/9:)mN_y-8Dtw;;kmkN#FOlre_;dMqacsc5>5N,ID5>o۱,+H sɣ}ձjVzw DԸ@Ii'&(ľvdĕ ۛ*KqVoQ悗ox#u͆ zxHSʏT=2qr 43}Vlؔ&yպͲ}oal{&¤ ]ESlw`=PtqEo$mE\ }$ʣnjE[]S+v7k=ꂁh喖'6n>vּAOWcďٯ(s pg-,J"ٯN^ .I:!:t D ū77dȄh#I(sX%plL8Py"n$:(V9nS\|hdMmQ5"n_k19mCij:j 1ڞ)/xesحAk7(GmG,&9 'Iԩ4lrЍ[s8\ygVC&M xg>t{buH]yf̌8Ȏ½r;mIxƂLmhA\m;6>~x+GslT(pUu(sU%D75>qa JBnיIVbx~%b/Lp_V=IhN屚2),7C6$ѧem rKNNqL+,;h=GcF// eCǭ$tsɆں%e/g:v ~Є9 M/ϩS>;hA4?bfw&l3DyKdXO55?qr_Ե ӅOō*޹ T E>clvauw'#_`hjhQG;[w 2o#ăۈynwqIA8|Itާƥݰ@zkvxv=/_9x7q w?Q_oGذ)9v;6B?2R<GDeӚO7N[܆Mw=Ld\q7ĭޒW>c&eN55M9y!6\1sE )6BQWvq '_4z5N9t9o}N^COT'gQ<ɖyœZZRW5 ZUV=fm#3)&8ExD_nds@ %'uDpǸՖټzTq.=GHF*c/f[ ak* +CoQYC U+)?)X ,h_9YUV㘫FF,/;&be5f9-lٴhZIĬz\%O}Uuƛ,Mzph5?2sD]D~┇*x 2&3/|cijp]Wh{,u#вiOQotHyyy7{=[](c;d]+NIuӼt6roń>+":fs1B\+NI沜f C'ͬL0 V Q<ߘA"">\S[Μ/ Z&FEԵ(30i^}xvroEme]RCqћsL[oQg7iŏ1 hQ0#ENN=r6v}+USe#}sB-nNWbFo6\и܊jsw|o+1jVN}ăj'hJڀJ=j.G~02}̻ok-21++12O2@``iU sQj-To:x.C_У4V]0FZ9`Y/ە?k(%i/7W&#JBqIcT1 H2_0vq'(ӿ3~6)9ڲ!NC0`͑*${w҂TKGL^/byhN| ljj7S{A!_%w hJefY)sR˜zz#;+Kϼ -SZ&a+ y8[Ǔ V%jixZj4Mz<57[KGᨡ5Jƾյ՞lZD:%rv JMDslD|]Syo,L66HҪ` s$ZxT"X'9^ @ȼ4y*;1{-D{Slx 6'fv4+@ LE6Sܺ:2@5z/5R":H&r-뗬m,L?ʅZo_*9pݮD<7r"6#._kmHrt2k,-<& QޤI奠ItmDrrV"*}/o=Ioh*LT g;0[qa9G@M$z9.gCLޣY`fmMUC,+nc=MY^и{;a-6gV&@$Zބe1GZyS(Jbq$!ehMsdne_ /}nQ(6&kYEs8Jj/@-Sc mqm^<ǫJ;* ٬eQhL2n^ؠϺ%ѶG-}$DLМˆ뿩22rZ`Q\Oҡ5*pyh_ŪQIx}ڜxǙMbܜILéyLN\_.q9AS·,;V}jQxc@ItD= 1G[3"w:WJQ6Wh$2dg\@hr#>;F>P_AaI:W~1'C.XV!ah9ºMI2Mmp·L&졮ז$ +iI ;Y{)sh\!'2yl,L4|Bhe#h[qrD%FD?W8 ]KT=Es-ʝБIttCWYh[R.h D 1]q1x@[;46NtQt?ON nIt3.#'m$Fz+oYIYffL)Y玡Qd:rڜœiSfD;R}g7z~m-k (Bk IFYg_m*g#Ph=4wGrg9d4ogs$X D}Yk=hvu1Ѣiv%['i4W,4v_}q226G*<$D{J2c<}jht$MA|dV)Sm/mⲒlbi3bTeWS[\Q-O]m D':Y%R/&JcqߨPFm5޻XyRWYQP^C:$ZbqW_Ó`U4[׳-(ח7lvU[?Uo "Zqnm,ϱg͉vUuF]#2eK+S};ZJ}Y2q6T=8mשvUyӈD D[KxUAnNQ]KS} ?~PZij;[훧QYorBCmInfoIEF,/U,#Zm;I VC˻#rXF7ܯYo -֧2m$蔬8S_E$Z{ Tx߇[}(qH샶]-a٦89Km1j%|ὓ+Hw-aT:f~.]}3SRo'ЗD;4ﵕǔJ&{%mQCvȏu0i-Z$ЗDK*smxqʳڹrʞU_H $Zn1tN&w ҕ9ڹ6âI $ZJ.^J͐DpэYVnf4ftSݲgopޓR::0c9whyI[Gʗ)+*NtF?H2}+^;TWθY&3h7SGW5gL|Piy/ܼIV7EK56ڒDK7JDg ['eIwIٸZ&;ȣcƽk62| h&2^k4 #_T-|w_ yL3tv۩h{ =JVh9w uxE=;ls\\c@D{Y;3V,T#c!$2\:$*Xc7B iK鍝R3d$ѷy'%˛GY?&ַdmLavt4u&Ph`s&ӄDO\yR-[og9=(+M]pAGrNٳڏCپêNmkpǣэbeuPX8Ndi>I4&$z~^ƭXݺ:"I4&$:ȫ=lp$E56fvryڄuy9gy0dN}:M3+Ѳi nItyg~Xrw^?v{*ƽv1xƊuym9yu5I4$:j,ecIEWEgZtmYV)kJwۼA&&55mjj4UټwK7խ N줚I-{2E?,Z$vJ.W=`VDiZI P pB>hItH $#pD$A>hI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$wDE pI4]$΍#nyx<1?$zgE^VHy{Ԉ?@qz%hSJߕ'}HxbP<@/C  FFw #g3'Ϝ2'~j"\E?Tt IOGT(>gE*=.0g4z~D=5|LE^}mz$(kDCVgƁ,R1)O=<3Ơ=+WJAyBޡ$(%zkPk9h2VK>2VσCI4{7Eе Rf4t_ z>,Z<',QػUzt&eH}a%Do%0U4z֓h%D8L?5$S觞Tw I4]$/#FA hIt_F$$t%辌$}I4HJ$}I4hDЕH2h$ +De$;HA @W"HwD$DݗD I4]$/#FA hIt_F$$t%辌$}I4HJ$}I4hDЕH2h$ +De$;HCVp꫚g =+>{@EonomW[{׉WnGgʭ=PBsDK./7Smӻߋ_zwsDp;>e-+ׯ]yӶi}/^Q4oΟx[$eZrOuyQF-VQ~##6oa_KKcMEI14jUQqstmZGhS֊V/߻6*¯B8FkAKmd%礵댌X -,1a_O/.Dx)?@s$1=(}>8h>T֣Օ"Ϻx)T벓'C'Ι]ƉgB>35JGx'Oymw k{E-Ԫ:}82I{GmU;n>.^l+otUUߘ!@BvqAÂ|b#-Of}I+"׉ן1fy{ޖi;s V~hU:73лo_:o||7K4:ݬPmSEA[LP;{Ggj?;ez#~҅l[Km3.#$I+WV:T\ƆC#HZ FEI+O}.Z_V_^x_wovQq/~wz"qDj9k/~~E#o=YOǩ󵗂'[~}$-[LۦsFxj ˬk4yWӯzÝ1zƧ#'!\wzyFi9= #E+.dVW^e9[ޔJ{qY>!L.Zd~hCUXZS>B66i)Ȟ=ւ#qY~&3YSQleb9wHϙ[N^ƍVo{֗D'lCCޘ!c&sCYKPU2>vVNx~D]V^--g )n1(߅]Uk5>9dnIA_꓏?I<~ʧUKjo(6|^޻3YBۛCFp__xᓏ/|mŗ!IsMe6r{mO?(TYG^Rs\;y{{}'+eHIF'HwtA$}m͙}Ʃ;F;[?>}'OnX._~h9&:w1.ݿ[!mw^[ڄhKi2\vqƴCz|nwW>kjE-W^ᜤNqZO;}EmNZ56da 22bVI) Y)".b=fdĪ =2Nb0+@ߨ՚cD.z4߀b[˹db^$ڛhSW-:ؘGb-Օ/")f5]51"mJ+ (#Qh-+FiXZcxZH4 rrI)X][5It()'͵ yJJt+ TX-{ 6'4N{园C##Re\9LjW D]f1߆s[ŌWL7=|3?B>U"/`Ni~}Vs3X&Կ#ÙmD|c#s<x'BbCd2{hv|u&x+$Z|~_Ǽ1[wG'[ď҇+w)M3*[KunAk+fO!#-J[v}XM׏}aQ bL4NOeRukǙ+_54y.==fRǏO#u ?6]g6y7}M0lX I(=-S/[Itr{ZrvfϘ^~l'7XFpjb4 }ܿ}& u%ng -D$_]zEg|u3^?$8ܢY>yj IS9Moln$z_z5ȓZi޻q*$ڞ/X/] #Y7ToJ'$6_AbNCPhb3B,aV;vRݳ`c_DoZm0߆XxGw D+Q(c[G6#LR;Ogatch$}Gg%r{ٟ>>?j~EF7}j[McFWܻh9oyyҫUt~JS!ɤ"#M\[owӐ'glɑјwN׽*c[FaDÎȤb1{{ z%Ō Nu y{6ws櫹H|olL)˨.jYDߣ%q4J($ړ3߷E#k|8^P︀+ylcÞh(BNsTrnʐF0`UZ'W* m fZ$ mW*_?Z7X ]>-m̔p MXȅOշ?u"oirR(X& ;V;IǼ1uAJD~|^uy ?Id|6S!&N!/'.J?3YOaf{i=~|w|UQQ-Fz?7rYOroEmwQ_ܙ 逥;$N(IJ^h&Z;'JҔ m8TFH򿯖jEG7STe6a#AR%#sꥦ"{eXnE9/7w~YY_Y,|0-퀷'z).+sH0 f&>TBrUy''^ V͒UAs DۺAσˡ?6A;N^d;NٟBN-ԥX. TKsY3I[}7ub>EJ}?g3v휯-`{4^UqW?yv':ʿ;V_T(mty r{m@GSͫҧ ]h9X(:KqLXdB}J\u-_^eĘ'v=reZ$ڈgYrK2z+>S} 4 It"FDgȘgI\ЉܟfU>7"7ge]~:zmsDyR}M[+Μ39'Z$|J@Oe»b+9OUβ}RriіN۸;Ue#.^fk,̘-rOut~t)ZTe\O^d 4SʳG$ʎ!UXAd\g:z*Fs&M\W]*0]f/y ?̮AhAj6JN)aڏs>ivUOڠ)k^lK^?yc~ !s1Cw#6:s~k-v`{O:V7 H~;ytrmLdÈh|?[p@}uڴ?,жizKm=6[Ƿ/$@ C-B)}ÖC.c0U[~tѿKw^NuIaɆM_yg)Fq詂GHN_hJ91emq09Bqi a2+Mqg`Ӳٜ ]zzp= FN/2%s|KMr1w˼,TM['ѡ?A:Nr+3 F:#oX7NAgѕWtvH#VރrJ8lHIt>3e NzHG]#M-f0Tq16;z52&L0*\r~leq`l@GSJ0gg'h$:-mo[tAgL!SkA_״1^נ(Agm-J{|Y1n&:GW$ѱ9_l0s5(_9)u]hZv[BI5izK(==Ui@\fa>1e멊c2b7J''a$XYXĿ'פ 5ȉ\Bs;2)2_R5cb8cq`Qǹ;BJCۜb$m>x;o_5Q̭Y<򛧬-8 p(hOIЉy=_ 0)&qr0zrNkv3ũ$wGQ0)f6h=,n,ܣζƻ")bV9[)">[.t5 o5eLX.1g'4o/_"ǯ V:=h.C򣴯<%]tF2=\}嫦M~iKTFl]\n{Zs~s+ˀWky8/?FL{JښD]_\:CgLP'x_Y[mzch_."ݼu%HuUhꫧ>?a2~y/|wY|4'0*\I_4^t g}i_pU9oMiQ.]g`ۜDO=J.p{>7>l 7@5in7SajQ++6[\:7_Qx9곥I U&}UVVe#j&VAߘ*S\QG5WTk5!9]S0cZkqj@fIBYAym7UY9EHbZ-O9ZEUyk'!?B8oW>pQsᎽQ_lǍ=eƜN}\K*v4T=of#}R>#v~ B|Z?CZN#,^w$}ˣw4@O]:vd+|x?Vf- mXg.t5 !P}6qǢw@4I~/\_n5/EQLTҾ+I.wnNi}5Y\I_Lrl/5%ooF:kW|']2ҋooW$YcBÎ]|6'3i9uIt_ڧQr֣7>QrwZz%gyejW i_s#Em?m,:+Z/N:j{ѻޗY O5kD~i?nBFJ@O%#$ki4*JvdLӒhwqћ?u욢㾋,IM~Lx[e.'u0)&촫*RMHՆF-f721xrl wx-x "f%枢xlm86Vk?FgN!ڛot|5xD;?!Ȉ|Oިߙu$ocMEYX@O]:'{0>',:#8ܥޘ#Npy%wƉA[I ߸iqd!ڿA{掎t>K;> X1=/ht$r_nզjhe#M\ʽ jr:JP:PZ׎$Zx.}qѵ?;[2vۨ=m^.^U e҆ _1菵C1O49N(=@כ6z%G&~kkdZ :8FB$$nvm̱v>5:#A,]D9Z t$}I4hDmQkt}Bh}–ڬV֡辌$}I4HӍ/h'%:O&r”9It_F$$豖UV%XK3*kuMdU\]S?RyH2h$ @L:#^E$Z[rьGAݗD I4]$/#FA hIt_F$$t%辌$}I4HJ$}I4hDЕH2h$ +De$;ZỎWK& $OqHF(O;Daf"F;xck~2 BE|R+-?$͚{1Bt">ħVa$ȿmr֕WBPwWSK|vO03D ЍnԬFCP(=O-=KL3Dt#$ 'h$BB ГDS(XHzh  I4@OBMPzb!IH)JO,$= I4B鉅$'!P(=D$$ 'h$BB ГDS(XHzh  I4@OBMPzb!IH)JO,$= I4B鉅$'!P(=D$$ 'h$BB ГDS(XHzh  I4@OBMPzb!IH)JO,$= I4B鉅$'!P(=D$=.ʏYjÖڦҁr,?89stOvXiٵdvscv{R퉆Cg?ZJGDZY!4B Гt~9fʊ5Sc<)IכϤef%,HZVZ~pUV.N9x$W_C%f9Zͷ)jj9Rڙ~ͷr6:c$ ]z']f_DE-ON/*+_Zܫ׮j~3#+[tIh˗kxiZH̉Oޔ/ZO?/_S͉Ch~e_iOwck'h@_QϽ=c 6V+=IK}WI6~˻g?Xe/oj>sJ^vx}U; _k{>9٫JZrM],jC?46lqh8ֶJwt]ѹڷ["P-:ソzQmł%[^)n#cٹ_YJ/ \du`B6]x5oWjfNkYH}#Yd"Z-ڮ hD[>߼mEeGB C+C,x({)sտtTG۔|Ն3oϮK)m@%ә߈%L[$4kAի'84}U\6ʏ?xuq2KL;x/_v=+vyÏAđY2kN4\rÏmxy 9\\=7xmݱ?0vV!~)cQ&ȍRm-a4#z9tZ}Umҏ{|wbRJMZ᪓oZ~s$^^$5r& qݞ ik.Ln~e/3?;{RġaSV~S좝^ꄴLtZ!~QϽ(che{_ hq蹺a-9MS.yzUMBZ#Ϙh Y%ϟ.'-{Yy.#ȁRV<\%yUqmUYÊ7b_swN:&?7N kX˗ڋol".c KH[93o~ s[|2'G\;ɧ}'M8.!5owO>5V2qq :&~^8Uŗ*RoK:\U#3E6c\vxWen\'?dq0zJnT\ե-U"7.HZvWʍO?7Pw¥l37q٫=C(%p񜋛&n}kq+MH-.^l1N+$/zƬ"Qբ(su$Z&e1q q tj"lz"q˩Y.y I\k⥰h Ϝ8{IK.IJKKLKYi CW=|8¥ ._7NI|8(.s$3ТprM|tNnK'/yiItr⌬v/̘Uqo}y+8_e/žh[^G_~]\UrVEyk^*O*%9=nb\'%^Ǒσu˜9PRY\CωO~[ ՍM-{֞2)'DeQVx ),]h@.OQkuS⎉&;#n^YUBQsw$qq4qskszko+9$% ¤vբ(su$w~!#3o}ŚWf:UM|띟~o-,-]YW(#39i> w K͎_jV)8u|rzEձKP"Hev%uEʔSlūt{VV.{y]o-8fO5'Dv~E.>=nɦm;}rʕ+U5uQi6ᄐ΂3$-{y}˙[{󟉍RK.|ek;g'ˑB&%>)qQv30R>ǧ_͛_~W׈h!~EeF)9YQʽb.Y).?>5{49e\ѡ[7ga7s|zyյ'\**%٫=C(nE c6{{(ZDjw .sȞE~)cmSs I4KЋ}a_}`#:3E+Ga6s2yphPVY * :f-XnA|q GrEn4"/N])[-7%SK{×n𜾮qNs.2e 5'rQރGhb(tr<O,pQ32֊+"y4e8y1f[űED7Y\p$:e9x<^Y/4|ާ&?ůkl۹w\fl|C=y6$W\}J+' OkzF%u$Ztv-2l8U{dlwo[r++1n1P ig|}˩-DwrY)AN)7_J!Py]NE6l[QqL/}}KJe;{R#G%?5#KܜoN.>N>NUCx5$Yݳ۔+~e{~r-J\ tDz>>-z9U>xQʊk_Igic*:g+&.AD֋c!%Gu.ȍDWg-LZfsw5-Ve߲ 47Z%  Vceb6jK+7nͳB8t?>9/&iUYvU)%=D1^6[ŘdcWv}vVoWʃ˙:̑㲂0|źFT+SX؛ᄏtpՂef4|_;tUrw(7|#.vqRyu~re{V ]~l)I4G}OwK\so$X=wQMT(y2T9$Zxo=95p4 ZZrrcrm|rzu 9QuE\U)+6;:1yq̽[̱ eO25,rqWO'Vf7y}cSQhl+R\l*3|v៯*W#ihu pW?ͷ߉ Y,\Xg>OKrFUYnr媜En/g?(7)Sc'K򭗐i ;Dz>>-15<م-MHպSƸf(ӱ ğPy:P2gfi^Ot^GE]1h9Sf%xh򗭉.EIDiWobիW= iYUEl\Krm=QvY̼U)tת-\qY #!ѱ(m4z8`։eȧˋ_)gN,Z-.9Oο}¥kj:,/|j.I%гlq"Pk|G"2gB:^bxzD/HZzu͏W\}.~LHuzܒ}ѹׯم= ~K_Wh\zkIY Ϝak}qw=+^{"Vm^h#Y"o|/A"S]|J%AWmI+By19/#+[lڔ4|ͷO66MG8Mʵ N-r U)t|Ms=˗O|r8W[iR.ʁ8y,|TrꄴL9YmwZ8Hu+Wȇmv|Q.bNRZqĉģ+zM̂_<^&]=?>=)w8ff|\\x/o8h~gU.cy I^>~+ 0⎉o~|W#'@ݒh9tT &.ab$-_r#R3E iٌ%by i^Ce3o/_^l6w3sA8UC]+vpi\B{ʊ5NHEO嵝9D7+؋3s>bWi"@ $LϘnS@uuuUuuWoAYS )Vlo>@N4A(8Af(ś A= N4A52:.nvt>DCd AdM1>,`[]8٣DCYS )V6oQn~}qf6]񜝐06]8٣DCYS )h+6hLDPL^P{/7Kz,8/ ]S\$d p!G 0SFGVl8#dڜC:6o#sN4T ' Țb|XLEXpen.scksCX pN4A(8Af(D2 =\v:uloBN=hFֳ۠J4R.D|i#¬$oi>]EsōhuhG b`|g&-Af:pѹU40uigEIyyk)+:G GL<:הsj 2ywz*sʝy\ N^Σ985-TKɤ@iOWiIEU=\&PZUvjmfr4d,8٣DCYS>Gn6` f;gG2t8^$ۥxi2>)">5qBʉ- RxBRNtDg(?9ݏIٵ cp;N4Aw?~Ȩ=glZ>{Q$!|F$n;z᭐UeM󖧗/p>)y!\o_=?qm?WCUH] m/ dDA)?4駫OjWP?_s\[qysuOczN.4{ٖ=:AsnFߡY;'@fGKAm*Ƈm6 tͳ7wN '"m`6ۉ0dQLiYD;W[^#V9{4BX ։^-- SYVu35 bVKrzOH}vkJ)"p;N4A(vd@sxPT׹M)?A['~^R'zD)ĖBQ Ug qӅl\hJ!TA{m`* 綐I;%S g-2!&qE=P'ݛ,iCNtފ^>_J()h+q/'nVx2st.'$!p3 >*'Z!㊲9zظ=įT b%Oe}ɲd!6>;Rf>[D5h A=VI8WqbۍB"k%߯m\rQ?-JW&/:Ѻ;b8CeAkm_d-V%!<ĹMV?}\yw=7$AwFU_J*hm*Unbgc!w9#]؜ΙD*<2T˰.͇v6D߫`͢v$I/‰h+N4χ3Wow3^8t39Qq\JmfDLaIbhq-bXmT%UäkcЉ 6~/)VG+ N4`W eN{{&59(ZD-uY"gP=#ɐ*m"6-L 3ҩOx>r rˢM'eD5T u(QwLiBP:#/ΝwL}mY!NtVl hA~;x?LA؉{8O90xYDK!8d8zq {ӄ։NJ!Eq|tt&ε&4ޝmCjÉ:p!G٢dQǭ=ӒE:H"f'卜{0%l1D}gy ),鄽ꟽx'zrTzQ#ge3etm`6׉\l nO cFHH":AM&:$6D5W>G1'Z]N4A(s͔KT"YNtCFyɢ97_zN$8/'y(9v:G L,&RUH.N7J[Ul˚A(Ƈm6v7q[Gg¯'rh{/?}z;Ptx%R\Y0SFGV,uO`)Q:B҃y~==S.1c{wABÉ&8*YuI~+GK+#*\+.Gw4D|D+Əc!ەa`K eNYӬ9w?eRq1{%u'OsgZ7imfʉ~}|w ;:ytӽ-'Qn0HXs(>‰6rڥHE!i-ED7Ԟb|fCh^yZDo$6^?4WE?*P'7GWɲf(܊mx:p!G٨=E6ST,<$9hݖ<~u9]rZ_lщV1r1k) H+W-bn٢`zV1yf>/ ldl?')v&e1>lN7@N4A(s͔|}L\."kNtci< -P{|TkNivLƼ_Q2Ž|JX")ЀSO% 3|۶qE5T|?$/gmY!=ͦ s/uD?<ʸf(ś A='\qi^slTE'Zp`= :f2prչ '+!#-T8FQ{:䆕_#emY!ͦ͝7O= H;q)Vlo>@N4A(sh,]3= LI͐ey74v,4lO$zf[:%N;&Iך s.M܎oX>KODFXN ܲCPaM:9K):ttt>DﹻGu{. _|So=ZjόcDž$:B6D D0"slwۀ7s{)wMhyZf* } j3(wgQ{;d9]^xe͇v66t#\{CKNGo>@.̘_a=а9c뀁_;pkֶ I\~[ֶϹo׬]NzIHƋ.I\7r?z0w^CO6"{c9!(CrMܖ}gϞlLyڤ'S"oLaȱ}Gt[fB-&?/ pٛQnM_8}ȹyW%Q|\-_Ȑ{{8{=kl6(IV[.woC%J[DVč偳i!. v7-چʍ!{/?Ro.O UZlj6~8n5l-\BȾ__c@/?w<)Nt7N+51KcGu <1l1;oW˗-н{3mO߲-˟Ϝ3cV/\Ǐډ&nٚ;ӿhc#⇈\Z]]Ԓe=_˄I$[ma"ћ@zr/׿y޽{w1.n~/]6~v-0hCr>zxmR򬀹NsdQ'QElne4HOݟ 4EOQ7^%77pv*YHN^rKqz{swKpLRFM}MIHz@[Dpf &U-YU@h'FN߯ں*?kt~MyUvMeʈҜIXOPwK˚A!Ƈm6r7O {aqt«ˇ\xG/55΅|ͨq/+VGBD w0iނ>޿yhkb]'l幀߭\$pqL ϓC޽~FaѾsUWZCI\w]ꞓoݾ]| szPHxV?HJC#Ǹ[D\zneݻ [:ќU9OJ' rSqmѓm84}/Yf6.V>:њh,n^->F;L:oƽgIg!M[DKK\i[Lͤz|$kl'UHvfR31W,55DիhMF5f_5XlDD$}HݛO^6ߔ7~yjŎӉp;]8Tov-rqܞN?Kِ:c#G57n/XӐi?ԠzM\רҋ/6o:|tڤ'OH I1z֬t: ATrECw!:0SFGŭ.|hq_8NDT̝;wi˗/>j|d>3f .]7;pS? ? \CN4A52:.nvt>l։nc%Z$Ơ>?lv-+zjgrU=.&1{!jԃy<'$?gxN.]Eω~K||if$ D;Nnޮׯ-h0SN-5ޏ&y;^ff۷#"z~}S,;wFDv!v' Țb|XLEbx:D766:6nŃT-c\&ϥ=HOTr، A+8Af(śA'SOtg׻5uqw'OMJ2!k/_R[}WJ oMt/^Xti5}rܡ"ȥ<'֭ۡ #_JShHW%$z7ߗt⌦M#J{y;W%$vg߶}ǫWT1 0SFGŭ.|· :tI;swɝPest)+5A3ϓr}g2&q&_MD_t]\0W^7Zr9rQrihQ'NϘO fƭ5UZL%?ьMZ7sv`gϞ Idc AdM1>,`[]tv-0hzgR6{N|aoa~8:d9A!/+ܼ]xmNxtK/G@ իW?#{9h~hZX׉R{/vϟ;ondk AdM1>,`[]tF||%H}a[:}>zy\vi `*),'ݻw?>Bи?3w 6._8J+5ɗrKR lMp!)Ƈ̔Qtq+7aN KPZa_X_rljv9fƬ4Ht{if&sˬ;˔ɓIO϶m2aƴH 9d پDCYS )Vlo>@h@w_.={o_?ƍ7;/xիmwL4%}K˗/ov`ˆ[n Ib@Coڜf߾}[|3gΆGFOJrʃH"~h ka3et]܊|ؠMP0KرovEٝƍ:ao5ȚZD{&yGF߾m2TTA <^vmG-$U1"3!>hIS׭4JԳ7:DCYS )V,AAu͟?߿HR;o߾=pШӦU9+эNtȣǏɯ=z:awz;wG/2A0eN4WNCR6=+FtZ,LR."9\ l1yacǍ1e۶;H dze~573 h ka3etCAAP :D 30&OYEQF=~ظh񋣗ܾsݻK!AW1! fm}ˬV覦.Θϗ+N1Ͽ~ͦׯsvME%? ^|YXoqo{/ռ(ՙA +88scAu1Vlg_3eZO;]YO1lQc]%fXru/˜Vw1s皚Lի 5?lQ]ubщ&( 9˯=_۷H}p!u"Q<ʊsCtٜ___Ʀ[oQ.MEL:RE @h+VGBjɸR6swޑ{/˯MJ~ Ft_fuu+9|Dj 2lM;wR{UUlƯH x9'@©gr\lenNS\7җ>W:Ħ QQK%w6KuNΠԲxH'&' q+-  YܠMǤtR|_աn\[qfG!7,8,#&6h5nuiYnWCh-p :MMMg+.VM,?uzK'O&%:\n[tϜ4kׄ$-"9t3S63AFpt9?([USU[H,es\!ezlD[8ux(̡#0~p&M'سkn,Dd9`P7dP>_ 4}/ϋ{R yiQmhֶ2p'ڠŋ[ϘU|۷o?xŖYN8/^rΝw\zlDEd&(Cr I:2xE;wFDͻtAEptGS?rl˸̘4)[X<)7NtT|:)V{=?n.Π9bif2"jx8y;u\jYOez'MR{xf˓t]lӉnll,ؽw"nܨRkΛ?~;vN{el|!=dVWjMoC%?N3toޜ\]f:94dبjk 9ƅԟBa>όYǎѦ+zjf&}.BPh]jX\'p38[׶ h{-h]O9 ܑu)Z,m8SIMnKߋC~ݷgm.6&D9egW^xDM354wޝ:]1C/XL ? 8"xЏǍgϽ|f,Y1?!öe4Ǐoܨ%L:~ϥhHׯ_޳w8Wڂq߼ySXLmwP[oNX?v)JIE'ѣG~_:7i3fhW%RTDT̝;w$=}jm9\7 n9R%ϔ0 uFzN=WG6Mʹ4ZeaݜG볃sDђV|N}3/рYI4vaR]AbTs˲K'DuԫF(RKI_K"uZZԲ8 /qEkI){drIL'BBe]I-]gpWLz#$VXݭ4V^ =G;0^6Tn zZ(ZMHL0VD5M. qq4C\r,RwAs䔟NA:n{ӹ<;nO{?bC#8\領ͽibA{/Kj?ٳ;WĴyH&=Tx;99ȟh'kb7 #Y%`fMy4Ȳ`t_&U!pi`3 )ͩ-R83/6RZLbi-ܲt:Љ:|b1ƺJNX+y/_ھc挭7oXft?).dzi? 5VoG'OMJv0IZUMuhiO&q-hjj:vlDޟ{O DqO,1 sCa%Y"ō!d 'c-UmZN!(/Δپ;(J҂1_2C 3_D)CU]>'Ye xʨ&V^Cũ3?_#cnӉdY`-M=֠7&iIEIc3s8<%ʝi̻[@ ĺ`Ca.h# qGF\`4* @VB%'jཧT;Zw@p ;eubMi%=9:הHJ!;h[˄&= |RPa]Kd&&}C//406i8#b ̶rfU7^\w<8&+>B kSpcGcEmМڤ^eҬ-Ќ mCS"<9|AmCtmd7#-`:]p53:&cIB6:3u03U`Gxh8 /ilu,Դdnű)GbgcҏU٩ >!#|~6Lgih .QQ?z&Wk| sj e9"\:ȦVA,}J<#Sў$\7-tWʷM+ٜGSOS̆܄=uΣG&J.j~U\SG9:$ f :Ob'#xyU\ԩ,Tt8٪>WYjfJ"2DDT@Bj ^ N4Ye'tۚY'Z8؟="ŻD K"bſN3UJ8\❟]yMeRU9=dЉVnp>NҩL,5G _냷(IΔ^5tqE^e4ډVQ>tj*ɂ(La4%CT9M 93~Z~F, YլB6zLtlFB0hdM@b<,j FV:fڕSa#_# UR[m[r0cEK@0cFljVqC}=AsMi=ENo"_OI~ !^:*wH\v=D(􃩱ƞzaxX~jV~)曠cI>2<2@(\Eh|Q{"zʹL sG13k(ƦrPoSI QnظMcPM;D-[?A]:+`/3g+i #xKB8/_Lߒ9m_a7oqi :bsֆ޽+9|dӦwlMDȹ oTHoI)'hkֻV~̀Et+'`Gg|C$m PWŅ٥;U_>A0Dj hןPsPU؄^5T4m=sT(|~rΎ.b?dj>5椗 4vW30N) ]]2i |j|It(4-N=LmcӅa8Zpa4{0xZωVqC}BU9CޢC#mY ]114ȡ_ *hQzWt!vɑ^;ՂчʷKW-'^}*ѫ"]^Wsj7 Cl+МЌ0ЖزMWMisFs͟1x :#Foڮ^ Lظ'+>'Vxܼ]_RƂ{ E& yڤdGo[Ç4eN4iO%'OY{WRsNpˆ[n I)d'zu`VWJ IՅ=\VZY~ w*A[sTW<1|)^($g޸XXFu噲m# \z#"p")%55ngm ѩc{L4X|mNikxrqo8;ֲZfW >ǯ)-5G}|5aA0he#h՟`s_XW tG1PRƙ^RNfzwvaZQ -㷔$fO# ۅ&)YĠUtЛ^!#t﷚I8Y"e}|MUˣcN6|>Zȷi]P ZJB>fzH֐V:wPsU.鐅)64M7B /WQX4U򁪂>˩z" Wz!P;z/F(oŀ0:և TQӫXz"ߺ"|zF6lլm-ʵo fw/;1c*\߾}{! 4)ƺ8(ď?|𻕫Gbt466OJ{ED.Pߙ4,rCC挭 tGoS-!9?Ūf9ѿ^4OA"ϗ_ ^G ?vt?0ʕBhRKYK򐫓~C"$'k=7RHHܼ]3ޖ .N%MJ 9wgHn/#NTKNtPRcINxo(I;2M'G7y4Wļ3{3)0`!*AVuE-\9: , _~<{^xb>Cdx,>RM ZRĿ&mqK-) 'QSΧ ;f@Y8@br\Ì7F ud||D7S֟hsJ1xzMMlFX:dFUu-̣]m| =g>ghXHOvjvAz՞oVx򞗼iz&2[ :Q?J9 %gDVܼsǍ1us7D# "B$CI\B =!Y{pcNѧkV z5:#\xar+ y\;=Zv6^ګӡ1ګj@{ҁN7#?>Ukno:|X$6y۷WjjW' <ÿϿ s/pҍ'OC^ϿhSqA'YCƴf>r\FzD7nԇ. :J̘uwdl͜鿿dY*r-R`sHRݿ;WE@PQ8g_~ߛ,]f]E#Zm<.Ң?Կ[?r{ڬ=m!́e? '#_ _eP_ H>؜Yqzŋ ̚)O'vh3tzvSNa+)U|]F9I?],U%eGF!t5eab!6 f,;nOTqSCG{Gh+kLM{j7.INĵK^ߥ7Z3MLܘm'}j=jTN_W7n~R"Zhl چҩ\ipA!N=dYs&=yDHa]!Yj'Pd5eq2:YȎA ǎ*:fμ?SqJ8H [H%LJ'(f9֛vb!bX3hq˰O'yR!aԼ}M<}>IѺoIk9ѽǺ/⊙?ýW/Ͼ5{܉?u>Lc.:gʇփ_/h!Qa>lRgM>{YieD4.G;Fpmϥt,%B gSC?+ rH!e19b ԑX\!8/*E2ܣ' 5=ל=sl1Eu$NJ* HY=iSb+@YIK +ЮbQ $jFjf}aP~nԋU(ȦGӋeȩRb?/@KƠUt/K_0T`eHkY .'̈́i}D ?r+WfBˑk9$pzr gFevDgNeb wAH:}"[8`.fψ!t0wE|΂CڑLW[;*2ȯi%ܹmf kS"O}Md+OűG+!_t<AoHCFF8uHwCQ_/j#OMج2~s҈0kmoKrÉh :Y~J$Dz(?uk AU8хMM] }M&hj':dX^!dcxoҊ&'LA"ډVٺƉ^<ДgzM:f~T⹃>3e0s-]'7v#f)$XBt6Du.94k"INDH2b0oSF4m8%.R/PW,Zu!-4͝}9y \JB Ne~mv|G9b_ ;. fY$N}3͕y!-[iL1- s+4K_ʌPucňvwlMIK IV,Uu^'kz4ΣG f+_~zeJiܐ۹jMP8%1E ͌͗NmP }_ю$5N,PInM|cEjBآ\ݽKDܔsաly=LK+̪Lpn)AR\`~q0up{xI]_[ZuVEkc:Q>~qNR_wBPϑ=u%ܐ08Z ==o *VXVj?h7< ӏf)':}Y:jX3j5ӉwI ́n c h5pa;mvFhX& ,p!GـOv!6NfnL{ļܞ|AnB봠,? sdK; رPrmƉ.m{rfl/ɱx˰ohhlƉ~"zT&N4Aۋ?  xr#nX ,p!Gـk,г:ѽWFKr'Z ڨ~ 6J:uxP8юH af,~'j πYS;|htXَ_zqdpF)tvsT>4rrhqc@7Oθ N4DŗF "[`+'[N4 eN4L2jW9o E]-5X1XE%̱UɪI^baj;UWY!'WG1C<{!'𾳧#G.1rY܅)?13B+Gr8h‡cdr&MD  D867$iBF ,p!GYʼnBtLD '6m]D '6NtcuqLa@\Tk8:%p!G -H4ƉptJDCd `O ' A= N4=' {h{N4A(8hQt/S|ŋ!.)2L"p!GYljף|Q:VAAD&250* e':{Wsׯ_YSSP6AD2L dj`& U A= NoӧO_xݻwBAPȤ@2A0S e':{Wӧ?~, AuyIL 6,+(I |hgF O$Q' {OƂh H@&f`Se3GϣB8@3 A= Ni^ByAċ̔P'zx6 3N4 DCd ALL{:_xDE͟:M6N Z2M 48٣DCAm":;0SFr"kvHx;p?&dXpǟ|0** ׏,N R~Eܨőa <C.aQQ:'x~87 45"IASʳ);<>'hp!G Dtv`FDD82I&YLaRQA^zHg5Pʟ] .DCN3TKNܔLj018LHIab;(п[as4D־NbN.==9fe'ڱhy ' jف2:v }`_$8,"f|mJ/drwXԁ !ȼG=ZӁryjy^TTOz3B2ELk~kO'ە[F!|s}s cN4]n&hy ' jف2:k&yoו̕ΙAushDqK $kT*=?}>tOԉ8TU=p?MyІv5uG0kn! & gکs[BgB3~ Tt8~(y0Rᤐ(e t,B!UDy"Ґc*Xie֎9˼Oj6kiI;_847oZ:cxܦLЈMw˂}[YN4cpJ[N4<:ЉXF%? f' jف2: L8×O,}͌`c6ްc󚉘?++~N4vu eѳM*tсԂ$_nyl/mDsP3{:x~]RuMNp~F:$0,8@ u| AL=';\ z5Wfn2N=iD1Cv1hΆZ`d2jEι䖽B]!_s4gFMͮ?sEK`Nnm0W^1'^| =Ǐ֤7X}@? 4߉mL· OBf}.;HhuͪN3Q6Si(E\pu~<{ Lȑt  'zOoh ?QȆ 4t_|UtyK~>~r] bw>y{SSӃw0D-.ҧ?N3/[6b%G ?F-]x)RwrG.ÅKW޾}+ ĭ!"#?xسg BK|٪uȉ—nښ} R _x\!-riRAr]S3Vְ||^K~ÉSgF/]Qoȹ| *nM3^76L-~SYyE}Qקe\+Su5iIo}}jwX#ǯ*@J#eȋܲK5i[.!ȍސEQDkBnܞ;I!߭I>yw*͛OoH:t;I12 644dE$ܗ/^ңFp!6)phfg!ag5R Yx!b:ruY1*QZ9Zԑ%4 !;kUG'vNU^XcNZ20gȳbeSQ*ӳ%Nt~uދηFuRt%44<2)E/ݵw?9$E/'-{ ڝEp!6)prt~kT)S:#5TX)`!b#%,2ށؐ1#fywTDlGLF(LjM=$Y hKvpkdM4AX5oǥXv9xpBD\u?}j@ʶ֚h f.>i,?w 7k:ܚhkkI5L9:Jč7>XMzc M}DĖټY})?d,Jژ^S{ݻw/^Hiv"9U**ɹ\]>w6g^qGXrAT쁒^毬Г8u/֐_XDՒ.MD*FC=ysִի~:+O=uܷHiI:׺4nEԉ&EH^y{c6j+NJxKzm˜=fj\JB"wd=$W_$'DH~#׺s~Qw׮XA:t׵i{=w7)Yn2R_O&eEu.rM[I{$ZLgIR[;ͺ9rMmSSSc㛟G~f}_j!8AP̔h8V`ČVo$/{Dͣ9za J%3$UΜ;OU?ݽo˜2o&)@tC ϹE ϟw08|UN#LNM#cpeUSSSEeR~'2Z$3q4Jקf\^ߚݹ{olRgի,VԽҲeEԉ-[nll1q|rr-G9$;{ GIDATH~9ڽ䞮۸׺$WT|&޼}+ՓqܬU4;\\H2di\k1j|ȱKWHί*cЉf\Y;-]Aw4ϭ;wS3N' jف2:rf"fX/<v8'hDǯpr =˗? _M UA$9tRfj N@GEKKׯz}mǝ ԗ&b<ִ:KW9v%RRJ$-哺zVK>sKQ! !RHdh)=KYQ?CZD/^xfמק7VX2}(%;ݑ:._uMr9K #!8AP̔P':xƀnƺ1OQ h9&H@tKLC /_d_'2R_[:hT1,ԇԊ,K|1kKWSl-dTS{mͤ+,^]W'-Zah(]aO !bEGZrm欜r Ν(- AL"vAN4`{quz$]+IQf_:!/bI\hr?DR zִ¥5LRbikiE>Vn$ERh-"({iR@yOZ<ؖK5&s-$_~武&R+U>d.g왑kU̪*8AP̔h=D769s٢%iFRZl4'75 4_QM?<2ooY0',:c[[Ӻkקf7?y.:D5#`ATk޽{GJ×Xc_sf@ ~7nk]%&'XrIoW~TCiִsƐJ9vucWKO[#ͷԇYKH't`_֬X8u[wHCnݾ\N.ZzQ[w7r"w +Vҕ6-ywoll襃×,#%+sI v<Ӛ555]k"oPbEk}64*Vm9*9DFZDCjEFjHIRHn$)oZfK ^Ztk(w/^͏4$`bů]"\̵$ǖe&E,]AQj+gy{[IJn_1x[wnښM2Т $͔!8AP̔h=vD555ߺmgAXr$~*jR Dׁ.[`q?.%%gP-EK\HZ:[v _ *~SgtT1ڴ9J'bH}HHH EI<‰&5[DQCJD'[ԁҽL|e$1`AThEU~I۲\k?.Z)d%GUVX2{TPt^d>\zfZd:\EXuǮk߾}K3t |r1)z:ĉ.Z̎Bj,;PYjx; N4AdȌn MDgf8VT8{?GQHJzݩ3KK]UV^ѱ+۳26h y364)zD[QmD2V]{ٻ̋vl"M>sٙW%oTTV/_~d7nަGYj-N4A$Hόn MDgf8VT;8ѤdR?^H~c:f-zNX-$,_»w|M5' 2ImF̆&3eZh+覦ڻDtm̮[^&LZMNz鍼=o߽GG^jTmAp! ftmh":;0S ' bEDtv` @ A= N4AֿL' {h MDgf8٣DCAm":;0S ' jف2N4A(8AP̔h=p!G Dtv` @ A= N4A&3eZhQp!6)zDCd AL' {h MDgfD/ML~ւ AY_tv` @ GDCAm":;0S#p!6)zD8AP̔h=ph MDgf8{N4A&3eZh=' jف2N4 AL'`X>Y^~w AE&25 2N4ӏ? ˋL dj 3eZh=b'7lӧ/^eAȤ@2A0S#Vp ٻ N7/џnw1 DD?kx^U}~M1c]?{?ŜyE?lSܻ !qEuo0G ;ٿ?=雕\/gUyxzR"ډ{~BbI[3=zT"p'@'WjF/Y?ٿ3nX׾|9z?3+Lr_ڤ9L+"ҮqF󏞽)N_)ؽYsN4N4=QNWϞ>㟽_vlqW5W-سR~[YyN8cۤ ~{Ccn_3M$ٲw NReNtk 8DG9Wk ]>h ?x}X(riߧlt=E&MxQRrʘq3>y;I @s t$eQlz=n[__^Τwb:ĉ~̬ƌnE;wWyEϜ66m{a>yg'yHF0h hC9G2rɵwƯ^ ï*6 KȪ/ίK:$QS__ 'Zeh~RrMކ|OnR|_QX߉`IXhYn2zW1!Nџ0)x_14zo}87nE<ܳW k%/:^ӗǭ1sְE,Y:f#GK_|uoc\OdSkg.i/AM.\=}$)+ΐ_/\$u^~BMωYÎS6>I5'g^,WK'R7 \:ēh/':,3щ]N\I0h\:5߉nx"=W'ܽw9k׭w<$fɲ_Q{|!3վԙfa#FlH~PA_t13Y/^s.Nk8e–YuzNtڐ&N/_:}>|䨱$Oc痎g̜}UZ܉~-q7?KaCN4;Z9GvWqBr :NDĥ+V ؞ccN4_Ɵx W74q] Vi~«i<ttݻ@:QzI&Zǎ;qP5Wn]'!ä֔WΘ9{X?)kyƌ4^ ޠg}:@8; XuVN4u~S\yE$K N49ўSTu 9^ 7I`άI3&=~1ٙqu}uz8C8Mi}|ӳW+Wݨ)n]'cjb܍[rNe.!=c3fW 8l|hL.˯+L-9G,ZS\4hal<*DaetLepœ i+У}QXLeWBmvl{E!{dri|+5)?=\A3%Mdq6'f Mfи:Nibn Nnb]݊Luwt2e0szmnrI4xZx48߉~C?M\ l2s^ޤ@Rڙ/_>|g.XgϘiq'O߲5}`e'={˗TӋ3uS~pzu N'L,$&N8\L9 虗s2Ǚxj8%p^3geǖ$^]º`{RU+:?%됟)QX:qG 򕗓PGE}Hzs)34%,Z9!j}>$i&dg2'Ym- o/ᷔ$GkvUd<~9 驵\ NtϴWi"҄-ݗ,K!$q&__yT}޵!$y.ouܹjpMˊ-Fd&PkϮ.`[rWά=$_.]wES`=g}C:AIq8j:ĉ&'zL:jXCxrl8NV|V9!qҢWG4A`5ds!gʊ 2X%^Jq\#2:t܉&g#)d8nBb*M 1c.EBZ[.hDu˾Hyxr6nav7SiWJ˝h̜>䔟uY'tZ@r6* 3xīOw=8Nqk6@C-qCo3G~"O1Ӽ3B'4GI?l܉&[YXcꐡvw)DGxs|35U;N4543]iģj뚄`\_v9:$BhUl j7љedʼnJjVBkUm͗~ k>55M2'Z:fSnf5[r_|uXN_)ؽWYǎscᑣ?OBjPg!Ö~\R~bdfsU~E̱W׮[?| : i=rX);$;G:h]{!PMDKoN˯/;lgM^x Й?&a(=| z@[Yh%5N u=8=7t"G[Ʋ.DAzXi*(] BXRJ`DwTF0V6:f4+ Xj5[r ?ؚٷ>6 )N/\-ؽ;w^8%jFUG]?]D̂м_I0c+PPu?-X.+Tp^9OaNMnr4/~CN雳Nlm4F k6D<}!?WǁǺ5fg?r4gҜWkEDF}/.5'4uf=-8c8ר%~8>')CsRh#GiܐCy8efWCj:.'JZW{C`F{N4;ELIfA+`)hi 8q‰4 ]H̯?7@! ˜=ĭklVi)PZj':$QUS…TFp~NfOډ֬A whWoޑ;={_ L)pL=߭+#Leh~<ZDpltqK-5h]I'ںYP'z h 8e06P#BjSy$&d`z8|du53aȉt$imʉ欞AO2lBSH3=)vB=uw,S{?J.yZD9M/ p1tnj'H*X;]I]i ЭCR|Y ) +s9d!*ySʬ!2Ք#2:"GD&[>,Σ=ʸeyfh"VBwtԩuZ b7s8n/: Y'Xt[\x*LaJwtؐߵiny'y(_tF?V te'X8e¢}(N4{&.%wNa9xK\tj}*h'(+y-y_a΅Ra:95DKu.̪L'Ϊ|.ј)uy)4:bw@EbeAX9>F}I\*Zh hDz!r2lt0eK>mNF`-P+ayХ|d8:/^:rsw7ꙣNtwPcRe 3_h?QД ZW6CR\Bn/GaΥ̘b[H!1S&!@WU+JySNR%a1,gYD;\NcN4a4$-L-ۜn9F2G[`f.ޏp!V[.Α㒈a74(1>s|Jo#Hj *Պ!-44m]|Gӵ]Љ^}o8#GK_|8]͉e|P?Y^A Gos5Reʄ.,?nX̃VիkFkuuV [ d^S {+3ۗ؃p{N4=e~̕|Njjd|:%~T{5;vU?rNt~+pi/8S0_aˀ-'pUODoQJnM::4i܉s{M:*_Lr+vD*8: $GpSE=QQ }}(o/)[$ZܯASS,'bތ%Ӝu_(t!S9#f}H+gI _`r9_S h#pm: XDgd,ٵ][9.1e׹ KDm}fIb2ЋtI9AA~CJi&"pVNqty ΊwZO?$.t,K X8{ NKF?(D>sJ-On}(E2O[e \$`ȉCS;DhE%Uh:ѽǺ/"Qg%7{O]Zz.þ3g=c/ʬnԉ&Z2lzSI#NҍAr?`#I`FهQ/l/pk'`X6K>ڃ=1CkM_ejB)s)N4 ۷LzI1UH.DllDxq@EI5D/ v(egz,CN|_YloFpU.a1Ϯs"݇ ucR Vkhk3N,*N|B@S:Mr9”qfwAe1Q'Z-qg$ΙuVLw<.x9N4` DCd-q呙G S}dNtɍb5N|$SS>̔;s}Ƥۮ-k{L'p!GYy >ĥ|AGv[*v,<}YW g-? }&oڈ-۷1lYpdMh>xE|D9| i!E b])ՎNt:s?0jF X8٣D^(*9 &ЖlAj- i-?ː9)P' π$5|;~:alB~@~Aayv,4_~"#"OL lh;Ѵ}J :sFyДI.a:&;h e'~ VhтM迴@tZ#ۦ˨ҖIA%ضWNt7SjApBũ"ZM'Wɼ̥i!M vL Cĉ(ʴa'*'p!GYɉpv۶d!W:7c(٪&/v)!Cu噊҃>4"\@yE%߳Ǝ[l-߷ 'ʠFlj&=/.^0>t9Ѥpj.\ԑy'p!GYщ %IkOB߉|8x. o-''?&uc`@ٶx's&'ڄ<:Gٶp6]ĉ>SiiCpkסϔ_*x<A-"o-"o0&'ZCe饂 ]]}x AD0mXT_( F j8@+zӿ|uJf7o VET}EZE`;MN,># ,UHN D/ G\Zhee+~F{ lIr8hh։(\-f`6t?h}X^BЇlh-CQMe&(hm hm hmK3hxe KLd" 3AǐG)>$APLzrw;W}gϞ555AuI)Ld: @NoӧO_xݻwAuaL dj 3ehbىUpǏ AE&25`Y4 bى>Y^~i, $IL d` M,;ѧy A3eh' jL Z":;0SFG1;$3V97ܩv"j #D+ZXPg)` 3;7a )y? ]Ptv` MZDլ<|\K&dlBƉ0b4P')@;ѕBHƓp;t#F)΄ ubف24 3%Og̍:Lm3aFCXtv` MD6ČAә0sN,:;0S&pAbƠLP')@8Ѡ 1cPbt&h̔ hІ1(1~:fn4ԉEgfN4hC? 37Ģ3eh'!f J΄ ubف24 3e?;Bdo]ze V ?PgJAٱ@n1OhZJ(Rzsw3džgWWExȦ߫޹%Z.5n4ԉEgfĮurvx1[޺hԬ>AL}EYqI(CR[ԝ<%w'ܺsJ_7xZqEƌAٱƜeu1p~FvnntåCݹt 7g wN5n4ԉEgfФU19vZ D+@ TNm#"K9-w 6xn:x˔r6קd/2mS6NAihZ4ZD_/[,'XɉVhK17* [% nRN0-qh̔I:u[Ë.W_j~IWca'ً'2Y F ʪ,U)US)'l:vVGt9f J㧡*&`ȵ} ;)ĉDR3'l]g剥ѻFCXtv` MvM4g: /J#Nhh'ENY "~:%.Ԙ Mh}܌u\8l t'S6;Vl|0IX ժe+H3Dܙf&fۚ ubف24i'ً';y61'Z;'3Jn,ׇ?s.tuWe\'}Xzm %n}tG 䋠Uo9*RjA`cr[6(θJ1D?;lf 挟Gg2U J:4ωhE9c鋊g 2'XD i8qP{z F80 (Jѿnkn4ԉEgfФD60Ę}^^ eNDxYj){%Ѥ%2HpM E='Z4PnKX2(~7ڼͯ6[ٌAi|(D60ZN~0KDӈ۫ey~NeΉnō:LtDhf1'Z?]b ѝK'xSh(gƉVU|ɲJɯTѺ Oj3ׄx&m*U JuJ,Xz%p5o['Z#Ne3ښN㺊c6f@C;jwUpZM3RK_57Ģ3ehҶNzBfUhU㇥ќ&,`}܌M~ޤ^@ b] P.d(E_uN4SVecX2(:qɵL[mDmhE3ZN4EX`2W_o"_"_vt-e )@6udE)s^ھq3D3[Kd˝DNSTwŴ.VpH#)R %Q UbΉ棑}Ć'=`'_Y"5^SL]*'4 Jrig'2sh̔IGYpN^$pywRw+yfb':W7 Jlx !8Z C~ډTӡbfBJ90ÎEgfФ=v,lmD%DTRjp6DKW)#—*b)Ų[Y*MIRUŢl%o26dj6f ʎ?›TK)4|\ N'%Y\Eўk6Zrщۖ$m͍:Lt!'ZksرzsOھm͍Axxju9+'mú}KJH,E ؼiӁ eH㶹[Ntó%k7>S,g5l' sM UcǏFtxܝAUay.g$mڹ[ak9 ϪH uVE;:1 9M_57Ģ3ehҕhnmr^/&,th̉&bmxQ=!N[:߬ NA˝T !ۂ}U51!D1Jat2n4ԉEgf`9? Peh~RrMtUQ^|hmNDr㍣0Ù6 cNtv+tqG+4; =+:;g>{)fKBf{rT׎i"f*3:-wn>CW $O⍆:L hr*GΑsuW&e ܓ4+;QX핃軹h8C~tv@)'h'Z!Ø#y;u\jYOez'MR{xvTh AuYف2:jX\'p38[$۶ ,!{-h]O9 ܑu)Z,m8SIMnKߋC~ݷx]8A6w5dP;̔ѡDNtsua%dg^+~;&aP^)1=˧06E;hu)㜙t+ Ad{Wþ_ u4k5ZWtv`:#fRAzmus!-8ib!gfn%:>AU~_SߌK4kaVe"]zDFTWXlI7- w\-]:$<^54E\ʌH_1G槥 in;vcq~mv|>"eWwtZ:ɓ)w7^(B ݰ6ɼ .*zIo ˣʫhˆ DYBosC[Ep,!ӥa#..s(+U%VpmLϑS~:ml)u=L hʗCdMW=q}kBz7uh=H3J3xY*Ws>ɞ5nؒh']C5)GG;)^;Oixy*q3kʛF8N.G0 14,2 (M-$s? M?snE:IO;7?ӊxrCDrOuwGh"l 9=]0ҽ?ڜ&XR%kNYzђm9ZΠ fs)ݢ4S 5gԐ/jrOI_h.>i]Ar*>woW]a'/uI][&c8UqeD+/@Y诂17VVw_,YGQX*557VLL*J3垙=!\.|TfY3dޝ|?q-&N]v0{8#.ԀJZbd| +~l5\GVSmf՝h;nO:B\OkJ -etx|XQ{C0߮%2>__41JOfXO}s^*ًJ/FFLCXHC)|C1?#16DhNmhJ2+c2_/t^wRr4fdBqseu32`8A6)R)TRR"c@tv`I263"MӏfRdnű)GbgcϴU٩ >!#|6L'g, :C܈D}Z5G …9Uxn~CstjndӇM+ [>rdiN4Bi9 Nm]48{YkzdK),!iqZUU\)8i8:d_HC]І$2_;9R+-,E>'tTv񵵞qǍԐhY89 7;s' A "Z2JjGQ/F²'=Yea }_[CEȍ575&2TO#rtxyܒfŷMBb _I*~Q{"Lm!\Z;Z^} VS"; XL1<|smf䖜G eDC٪sVC1eCف2ludSsn()|}gu "V*KFl!RϷiNCgP5G j䔅rxE$rMh]t@ 5L?Ea fi/]Te9biB7AԮS`mY!}VGӕˤEM4u7dΑ bng_?LJdEV ߲M7őj̰Ua ¯GEKf*a<螜#nptwPH/v5کwC4>4{_u5Ļpbh &l9kV$npvZsL~yb>ͦ2k-U=65 BU&׋&=fzN(>T,' Ȇ%ДV0oF7׆&3e ,z:uT}XrzO@)I?j~ :ma}`JL,5G ?>M']9J3W &]\W?.DW;4ʇNM%Yp.bd*i!g|X("KUȦZI׌Kv`𵅱zF -8"ke[MejWNN|!x/T}pZr0cEK@0cFljVqC}=AsMi=ENo"_OI~ !|_ds(y{a5_[}(o%Yz3 ȈypţmEm52--L]aVMeҤz疱,R%fh-&at2p!lZo/KJόn MDgfʰ1m -TS^T̅Q e9rgQ`rTy*'ZMU+Wm_@ &CW U w[mʆLh0/t+:ԗP#XBFHsK:J&'tuI3m)AM36:]6JQ cwA6JNzLO~h7'\MMh<2^JØzt/xduT(z~U=OdFHaxXzj_B~)z/F[Qc`襫 Q_]>yUt.D9e!ͣz=&Ch,z!뽾0&7LmXj/F .fʉNյKAz2APzkftlh":;0S ҝkkg{-3+HZ#zi F^6V 6G  O+cĭ/31aZQ -㷔$fO# {O&W[Ɛ3g< 7%]BGo5@3H[qD~K/PU'Wr9pUSp X 3NooQzˁƉKnF؆&3e$eF2HbhT)uA!Jv`k l|.cy:zݧLjWF.q&E~mHSda}L"sA=㩗K`ltd5džG AzMSXEsS$]~šЍXyM is I=5|1!t"X1t,1$MPĸ2:~9Fza$? !3i.bpG=o]LQMZ^|~TՊ1u^ӘCK3l3thMWCًs/D`S[O€ ȪRT6[cCف2lf㦱7F ud||DY2kmXb7OIW~<;UX']!1WzK7hW[6fo%=O#`셄R_;nOǍh3 Jۼ!j,NP"YJBhXQFګs>_ZSGi t[1`8#_ƞݷM[Lh;S59]3SH ghr'.eIk'.c@YO64h{DgfPBb*ܾCN\'jyD#Ѕ2 \dslrU#Qi[gqbfhA ?FKtzv)ܶ,_`L+Zb!ȵB{8=P#Mֱt3زtzu-m#u>-q[]r~3Q4.YqH;q}B`GEYf6-;^’R&1G_S&p{w'z+i_< pN7B7"qꛑD h iN#fh!V[(]RfL{(,F?`GnJZg$x+:G f+_~zeJi۹jMP8%1@ ͌͗Nm?ǦRkhB9>~%IjRXXyܚjFdE{F!)eq#8XBfU&qT7Y*/_\!L-m#uRŻ)FApXnk}_'sdOq]Ar 7$ CCpp-.n[ֻa'`' C/29טY7t.pph崮ެ'Fo:>VN4Av1_UsfJ\q˩{._i0N 68‚2F6(cA Ń(^iLeWoQ;.faT^];djOu[w9}$!?}KT"s SncTF#\{@0oPDNIͰQqnwvE#\{@/ 10o$ѐ Ur?ߙ=~#ܑDSJ.e̼ F i 7+|[鲧]3X`ADcH)j%~w2`z/4`ݔƉ9a, huoyfo[QD;j$ј;hZɥ ,}JK.:~%MI4P[$ј;hZɥ ,'Ν>cnԥ@DE#\{>?qm]'߽/9Xm^nMnֿj]H%w%h?+Sr\V3~/<ݟeK~=K~x+[$Vrw- nMu\Jmtw:w?1X$zǿ_~ߨ*J9twD3?gY7׿U$;Zϻ?7v]$Z/k{s-"\{q=;+$ѿٻ.Y6D_=NЏ~/_O c$h;=9 /=gf AϿrF>g$Vrw- DҡQDDUHi{tDKFItc,D{ھ=Ӽ?'S.u_-$K;xoQ5'ڎ B$G gp$WF}ѷlȻEoݣzD m':_{bR_̜97qߥO>.rB$Sߎͩ$_ʤS$K;xoQ:+C epS?{;8'?{d3?གྷJݣ>d{/~ɟٓ;&?IO?<#όj։jX}]I/>ِx[n%7]Vx֙KIM;6KFeߧKyIt]1 h.XO~Uv$K;xoQ~OtQEhqq̼=GgV~}_ gENIaݪMٓL#?ο;/9tw-?2(TJohu?uI)j%~w2<Ip-;lye3O=jokj68ю}u|ô͛ꬠ̳rN=֚/(IxP[Ɔ]]R~go7^ؘBID/;D˭i_tL%hZɥ;,H׽x8'VIos.+<#ߓ,ҤrBίEPb͍BIt\NWHN$z׺r>ܾ}d4]~ՃO6B& 4[NHsko*$Z۱I4EOٯ?:ԧ"ݟ%dW򫟝xs/DSJ.eaAןYoc\nW?ֺ Ԕs31+,m'wP$GVeΪ֯v@cj+/~Ao?#m{>b_O^#}: @y \{˸pV r:ymgWL_2u:wX_6ʙ1KKhQGJ# S%<h%J:z릴bg+-Sh} ՖՐȿ] cmNl$D_WgW+%xU!^~_ E[nk?ry ;Ic3uڪpd;،* ?w\Qfy_]M}i^vooжC9;~I?1/?;} wnW#{v~љC{}l}wv=G>p*JЭ5{눜%_)P=ѥ ~&f ^'H#oZ3y[%H 3 (Za;, gS.yyՓ/zy[CLXY8 8tcJ S^=_uIl :O=[w!g;TȔW; sJ˯Πvz|N=۲[UK"D뉼U,Pvh=c;ydߕĮG7H#Xĩ'\{˸"d૖|;/kSw?o3bi=Ć{v'_nݻY;p}9IEcԸZnYϖ}ǼB󻏈nIC[u|h_;eu;Y^~I>;[7/`CB'ίqn_b6ˊ]J,'Vy%EQԊ-eayI}퇒DχM/kZ"s<ܚ?c>ظme {ie_llvM2%%z g\'yx_ [_}V_?7vuU̔S}yݑ۶=}nɃj^Ywv8ZK6Q}]ɗe+oK>)\^׽ȁ̱/L-h%9rxv_/: vwW x8.A-l0xWGbk$H)9~w2H8gjUj23 onVqD3À1#9ɠ_^2JjbgjpTt#(Xs<1;09 N3c$:,+m|&'٦s.I~ڽ5G!8uB[$:0YYgng}7=n)moڰm/D (T{˸"I3Nֽn}`U7طIk^9"[h5O.DK_;%@͟;;ŶhA7^^衍 ^]r^j:_w-d-6)pOhg?۴G5UomcdItIDSEQs+ea$z1c}XE]$I4EQ5[V$ZM\fƌ#7I4h(jN;L']/5 eDN=^kx$|!Vp565}h`9!,1:==LL|+xhZINyΞcP%D,$Zش%DK+yOV2hRuM8g :Wޛ-T l5s~L}ĭ3}OObrSO 7(Ob4y豫fwƮu~4>vuR_=\jg#KGg |gO]Ļn01pB&ЉWu =Cf74A EfFnKRX[tɍtN$zmIWuGM^U6;jsL}t̔۱Nl.0.~B͟(pJu@ʄ@$0kI,~.$ѥқל!ZrlھޑaɐTT,`M=JnjI^[уI0nK2hϰ O=ȌBl5=f HPfdMؿ;0`H]a.%}It'鉆 'ό L&N:|.@$%IOwf4ʨ ,t+u4f.xKj3*cU Wf^Wi:^YnM;:Ȭ\9>8cf3 G>EHI氿QGO<2 TEFT >kK'v[ 4ӥ/9ItD̾R;QUM;o_f.Ͱ%iFޒraLӤ&՗杪\:Ja8vzIG'Ѷ[S7F_(5{[?5HUy)# к7|uky:őDj$P[$"I4HE -h@mDj$P[$"I4HE -h@mDj$P[$"I4HE -h@mDj$P[$"I4HE -h@mDj$pRܽqe$p>XHE -h@mDj$P[$"I4HE -h@mDj$P[$"I4HE -h@mDj$P[$"I4HE -h@mDj$P[$"I4HE -h`l=~_鉙n9G/4|[< KI4`9`cįॾv{-֮k LJZ޾L͞j~Ĩ+uzT4xhN61xvzl~oҰ/Ԫ&NYh>hrqYA)ct'oڞ>kAܱ5vJM}kJ7ijLSg7y+/i$sw7'ky[.=~ =?jAH]{k.^Pם<%^͆?娎fs/I4KI4`[mm~ȱt~ -p?,6sn¯Պ$MO4 <|g)[s# 6qsl=70fneG&nO [IZ'ψ1QT{ٙ - $<Ф z$k|rBƧ.ʛdk{;""͔7UfG\z+yb|)Yj=>!`!,#fr5ZD jDͳz才Cֶ!㮦so/)Bfu&o!`!,:)39Π=i$wpP-΍`:n37mi}kL-$t[j|tãNsN^=ȷ~>ܓ5k &'&mp]3]^ytf^3"˝M9KCN~jbnN69]w E:[[/ 툽uF>zG=1 fO`rC7Q?P1`{V-æ-ƼޖC=9vkEBy.O꾾=åXRҞ?G? quabXGãk]=׈j~ .ؼt>+}"ϵ2? G:vqӽN˖;sXWuoxtw\޲=7W eGxgãˬQ f?F|Ms ZmtWH8].BU"omͣ|xV-t׽CNLN}xӞ2'/զ@Y$eBM)~OtQΠ-O2o>귿l0u=/aQ۹~{5>7;]X3v ݤCi!6+$~Rw/VJNi9E$i9NMK/432'|TOzkrpjis5uI;iLt?h>˃6YP7C3"/Wя:&x:wx%G][&zS{i8Ɍ&?>p\F!.`1~gav7pY]>AXZ ANjv<({̰yNedIvt^[sҽT#\vSv+*˛9Ity Ns=p%~R ٓcՔXۄ=A `u\oZy/n:'7/~T/UW}5/NFx笉 gĺH0ehZ8{%9f\vi(7ݓvȭ{;mMw95mљfmH8?[l@鼭rk}벎j\sriN/ef>gߨ٤)E3ӹ]e'~\G;݋ɦesu'vº<]$,+D65zɽE1иK:˟8=lĕ96ӝu]2Agzřxf5څK#gHr-6L׷OugM7;4l$]&g0& _ztoVklP}51;5&%͟ĉK[쪯e6tO4I5ecq͘yK0_ċcS3to?/B](&dVzXv͜r9qswo^5=Fw !,+_O_3MD~΋PC+5Mb=T4y݂z{t|pz" Qkj'8t7J&u\v+]֏$#Kdu1XmUO&bIh;p$L&MO{sYtc%):̆i9Ӹޑa+GmzLNv+ FڇaYz *=&iVw&b.gA`2_=eMuƬ]n=]B&/'sWݤ̛~}OdPLfhi^9^iF\+b&K'/'P W;3qǹU_eZ^P"ʽIeܟ(|z,'עnl5,hx=Ǔ=}V|E [j8!]I3󦽦u= yUI{w-lJ2T:pEnRL5[ܑwR8[;=G\J 'p7wPj`Fs;#Luf5c{sMw e&6՛2, kt7Z7fr²0 ac߱$"[zv.gA3 c)CO4a7m ?Otp I9Wݻy'e\D)~E*zߐsB2ZkG9K*$# B.B]H5mVxXu/xуTKɄg 'pI4`j\s55W55*PZk_/9H JՂV@B48c5#X{o)j0u~+i 7Gg,#dsKoW+@&oNJ/^m}#t_##oy8`$U.==$\~omf^UJ~z,gozbv8c7'DjkQ3(_Կ5 HY0bgIMH:?@6˭G5P`Dk Ψһ]޸ǒޚqG^"J@Eå3+%ّNӄ-̗_ݞ}}eɜYt[˯)үoR6|a\%', -\3lTtړVwa膍^wd-s!臬d9D?7H*t%w"C2DzM@ x)gz^359Xc>>WC*",kzB_Gˆア,z`D k#_>L)z81:X+yz6fg'AuzϪom7;5/ۡx|X So?F7ƾ5΢/w%_g|M{U1U Ok}9a\#ցi o/'}ܪ&=!ruC8Mp&N?:) !o,>#7~K^_fcTkrFy<T} u+"UPi(MsV4xFϔڠԉ HCؕ-əxk Jt1c oߐu~]׿'wH=;$#ّV' S N8DoKqO|?n|t^vmn@d?I GHW5my13HsXGA9MvG2k3Y:.FbIDN.):mjpb5t׼wJFHC-鈊ѱz9;a3i鱫}ٰA5O{^O 6 l͊`ƙ8;[+ g΄[[/ uc(k8ٸ机6wƋI25=q);- 鞹9)^d2q򸂯S]n21"1x$U/}Q%Լ_0<#rF/\᫮vX,Xm:_*Z5E[ >>!NZ"",:ew%_?q/d}nSO&ߴ-7YxurLld GآܯVGKÃWLV\<"ٴjhux<W 1=bkW6>SǯȉGOFny55|UNl*IC:9hü=5j?>d2koMe׏_0s0hlw"' NCnOOo-NodI7N.wJkk)m][(v (pw&Α2B?x#5=ό 's,T8 qyQxtR}b[WW*4׈s 6aEjɞ3IQAmJך{Us˔O 'v"S,n߀ &Ez!ox S3p9s0R*{ⅺQ|YeeCQ$Zpfd`BM!UkQ]O\`1D.1S C]BSKn0S5cʉ{7[u]l$;lA~+*"蹓:ۼ>%o,;́t7F qm}ǒCeljy N$ έAur4iĐ [x;IeGO>4OͣǒKy|ºsP'8'O$B]8RdtsgޚԌv\}9/Mmmm=1 ݤzXomjꉖ!?K}&\,]G:&f'O8N02;=\hڸν ;6}߲gBhuE9$ 9SpK8r tJA^8*\B(y 72oY】rWB](֦O}LeG[SY_E'a^ʫ ,wh޾K= /X75=qbDN,{k0 $FݛrV=Q~+lRwvO?M, $,=+ԗP \:uJ=`=,h`:5zuxP}K I4KO N \LG7.FHedH~KĭҚ= K I4HE -h@mDj$P[$"I4HE -h@mDj$\A7zz?Vȶ3W}ޣVhr讗mixy Yzlk$XH˅Nl6>*I4ґDLvכwh$e#HF7>O<ҾFvU=ogW}q뽽/kɺW<]_r&=rg7~^WKxI/(ojkPhϞuP^䈂- O?׸=W=t٣v-ʾ&o3_7L;z^;м <-كoj' e{;ml!췽_yl}h~e弲GI4h$^qY~[$~Hsko"&HEDg[*jN/~ubQ)fX3cW%jGYxϣO 졶I2-fU_\4#զWz{_r%*/|]G^o}kž~qO{Zy:L[{6o1]'s{u Z~ImT]sl\t:if#ꓮ3k{֫fyv7,G}8qݘ=,<դ[<6/Te@$I4`و'Xps^-5/fRmN?Ӡ9Q]%я5$Vy_M*H=X)Vw\h6rҼ0}YOx̺[k%Rϋf̻3n*헬1Ey_s)$D0cAު̵gm/H3rR9Xw_N݌sյԗemk?޾c[sܧ{foy9=~KgW)8gVwg}d# oYЭ5{눜%_)P=ѥ3~בDhr_)Լɗ{Nͭ!Pk&qae3 Ϙ Nc,Ta{ K<9IyA牾g}7āzg yjGaNItl-޳-]$2O[Ų ow 3 'ZOmM]I4y#,pds2UewuO}],-3cF,-]_p$M{W77}/'6hW:ٲOVȔ~~¡M_6ty}KrNkH֨[_ݡ۝H9ܺI}:q~}s?<,{߷YI4y#,yI}퇒DχM/Z"s<ܚ?c>ظme {ie_llvM2%%z g\'yx_ [_}7Sx%׵V1SŃG^o}%yg)k-FIt'_9MX/Irz_#3Ǿ0I(Q< w3$tٶ^%ExA `HE$35*5778O~ɚ̘md//WUY_GmW5B8st*QvHsk9AlxY1U6>dNlSA>$zT?ޚ#ߐK:!hVpf<?<;"o'ݭ#آ֒D$\DhsgS{Qڻ$n2xp+yz 3f8k]m/l[}">ԹљBݲW"I߻5}o|sD<=тkX}9\R9_9$w$Jvm?Ewvm/=т o.CvuWu0~[$Z-lRhruϾij(9RI4D X.r'3f#"D ,JefX(_j#IѼqS5tȰ5o?zCo?M7]f?׺HRGőd{8nz6L OgОZGzym:sȞȹ؝D7myjbt6U g-ͪ6ސPYʠ=+$Vuo _2V Cָ#xspO Ц'd' sjsuZ0D^9{Y&$S2 K.g<)jbAя:ٙM}guvfX&J;'7=bL0t"UBϐͷM998#7;xCds=k#ֿ<.ָ|0]r#݅S1^[RbiGUQSWոM2z~\/%D>3v-LP' 3n|v-Lے̤,3"S%OYtJv㶰u1S=zv߿ZG3;548.s[Y20m]>.;6Lb&5i.׼Vqkgg?|zӖ7TftR6;9W6lMש_:.WS%s 훮|?SDWsBrA13ydNhbh I4` zt۟u|3Dhi}vW=G[z@J^7Otf\gwJNfIi\jB7g9e؟6L˦NJWi_'ɦ7u\<$:9 u>^Fgm%=Ɍ7Ov)$ڿpjJ/ 5J;|ޣ.@$NggOlȟ|6HuOԳnبU?Q2ez2Vnd4Kn.o:W:Zν#gM& 2Mw2HJId钔?Ot9Mw>6 Cm6aFJwN#=w]ՏsLׯz_&՟Ц'{:.<>32|30::ێoA G XI~ofL ²,O~|PGc&Rt6ӭ2VՀk}eqUV^ٴʕ3ff[?Ӽ`~_$|dud$LO#.AXdD*0ﳶth*?M9]J^>՝OYsԓ I4`i2SH?71D_3Ow} ̔Ko˛|GQ:8gM(D?rI襣Kfa .CDԄS7'}r_^il]$:ړ3je ΌZ}֖L,s:3r)+.vB{fGzvܛ:U!,Uj ZO}<7C- 9M+i"oyS$2x|X]Ga"T]n6^Rg3u];炰hŏvX 2Xt)M "2]>kK$nsdq5.9&UP=?T$d|*O|9"TkhQ{}g _wtA׭% %A'|pI%: 4tznn9kZ}IDtדI')`B&֊^Dݏ)=D:?k-B$iGU;d| lfbR::W~=T$t;pO_{|uNل 69?QZS2Dˢ(uk|f~}fW>3f2BIVf5m>#l#In'5t9 $YLۓےFu<nO~\Z *g:l;RYRص:[޸S2jɽY3<z>uϚAzyD譛6 s\}Icn'?*eLZIs!Kε6{fΏŞGƧ݈@Pсgqy]F6̞[NW(oU C!G}v=xEǵcOZ=?:ݚ1rB8hwAKiIPֽ}LC#^K]\s($P[$"I4HE -h@mDj$P[$"I4HE {!>#~GQEQEQEQ_nޯI4EQEQEQ0w[_>a4DSEQEQEQ VؓL<$EQEQEQB֙rODSEQEQEQ Y}o> V8h(((jC/`#(((H$(((Z"h(((j$xH)(קGů>ҁgudywf~kJ2qi-G句3.exDO$N}\~J-}}#}?Ϊrӹ]⓺:qC3|^:$)g}-7t[U;F<Σsţjrw" `5dKFfݯ)pM-LQx_^sڟ3o>^shAEO cbO»:%f#xMjvI X"Ww9e{&᎖XCNx}9]mV F~V)tENhғbǥW5CpyTr/?Ku'K H.vibnIyo Y{=\5ϑ_/SKC^J\w9InK泲Tg}\?Vl,})Վ=ީgty(~P:-uonSUP&U'T$9e>CZ D{XͳSZYrd(yJo)Wkꂵ_zj|bfZijku슴J3ܝWS#䳒6*d"m🫟uy/J=Cq_k}y#[yonGZдwOlJ@Dܬ$x-׸Gyt<@{⠲  s>(F$*U`!U'T0=iuߚD냻~zvhf'yp#rz/jrvֵOC%cµ_Ux:슜\ɆEvCP9MJR*uj:H6FN(F ;]-+$}9#3ܚD;_j˶٫2PjCg6r%לۦ^=pKM */A޵JXe6 %tAΔ*jAA/V_>)@ h๻h dz0oG>)Cq|:s㓺,qú<@]n0늬W}BvP[Tm{C=l}YLҟJMQ%4}\A{ ȜJگ+94gX)KIe=V]ER_nO-:8rWTɡO~imܬ9U*k#?&ɇ ǪZ8{-wvBrv\^~ r6hVY-*e+]M\ʆz(۬ѽ 1e%+ThGךCdUyaɕuk5ݩY>Sr{hbḱuңvFJ>ѻ<A1Tϵ`%: ul)hQDO!G3lrG6e>+Xӵ3sX&ٲaN,/w]SߌBU c/!vM9{/]nTkyd{}{PރUޱ5+k$GarYu ;+됓 G$1g$x3<}*'w>Kr>ͨO0ӕ}\ԇ*En?mI) l>[Gͪ >/S wǼOcN {R%{˪j_VMegY,s^~?~9GdҤynVl^i6#uX?#}: ݈(g;y*WvFZG"k_,kU4g**WIE ^> ?Gj?*e}~-1Q-ԟ˶*xT>r^bÖ8'E~QQ?F;NדUK{N$ Ǫ]ecoMץE* n`tNqXTAoˊ.,PI6'Gd/l2=7*(k8*{8UtwE^|[>rf~i"Ns{qzۮdu[z{w6Ra֬.Te`Oc4?m.~w U.NBZ'T4B8&\Ь1Hzm.f+ 7cyYP[{,v;b{ONWrwJR.T:A?ZlRMJ0Nv{L=T*4/biʰOm:{e72|>* )N`~Mw] _=:۴wCYņwVUypH'LEeX'|g"EGURKlS5Cn-ێ8!,(ǕVvDUGF)+Dg}~ /_I̚!Z߈hq{}y]"YϚ\Ձe7T:"*Tsۚ|q&-YGKYzJZmjmZ w3h1'^*u!*wtBtu[?s/ =wOQZ1Q3$U 5c1*7 ޑٴgѢ^eK\)8O+IresS-76;jeׂ_ лEGa FNV#.NpW埈W3n >,w*7샭}eWK.sW,Q{t :3e;@TãP,%\"iiJ׻>!G0{JW ~MK=XI).g}5U·BgѴGlS&[sXlP|-76FU0~\YE?Vq %O{v-I^ :;U҇;Hߗ-*_qUA\nYldlE@E~YXdSʖs-ls*<ݹ%ΝYKa*Y[aHّ]Pi[C-ˎ-]'GI}fQŲw-?fۉu~++!|s+o vŷ_IqڟZRc2W鱋d]MeN?S1_ +[%7k@k%/5WuImL>\w ;P-IPn, $gUaH޸7띎?YQfg,*T/?x>VP};f@dP+[{/]'r>JgY߉_XMe]*4P]6G%7heotJoko2N3)Kuww'IE׊.,SVlR j/xM%|9!8lY3V=}vJn$zաFzr dNiެjLreN:e(JZdj'c*/5t7k곯<%Ӥrr[_M7Eگo;}6>QOwJo0RGD 8T?価 ."9w+Ҧ fkIQa3BUVvihv8 !؍ε?GgDt({#UWOrӫ{\ vT{Ǜ~z'Vh^FғT,8<*֔BtR-r %wꍖgJjsPםl>䜣(4U۴ώ}\ɪtem9䥸odθ:I4Dh1H|Ѭ2g>oM3\9\>OCȧ#Zȧ[S곚mpn^ {:}T ܋ٰnrsMbv-Wvt6xn,șu-V}]dT ۅuBK&({{ZydN9h/3-}܂I`fqb?j~A(B8+Eۉ'˝)Qv#8@厢8LW[AYD.7btB'z ).|n"TjaI$(2}W۹VIQ%CZ$% #' ggplot(aes(x = period, y = value, color = series_name)) + #' geom_line(size = 1.2) + #' geom_point(size = 2) + #' dbnomics() #' } #' @author Sebastien Galais #' @export dbnomics <- function(color_palette = "Set1", ...) { code <- paste( " ggplot2_ok <- try(utils::packageVersion('ggplot2'), silent = TRUE)", " if (inherits(ggplot2_ok, 'try-error')) {", " stop(", " 'Please install the package ggplot2 to use dbnomics().',", " call. = FALSE", " )", " }", " result <- list(", " ggplot2::scale_x_date(expand = c(0, 0)),", " ggplot2::scale_y_continuous(", " labels = function(x) { format(x, big.mark = ' ') }", " ),", " ggplot2::xlab(''),", " ggplot2::ylab(''),", " ggplot2::theme_bw(),", " ggplot2::theme(", " legend.position = \"bottom\", legend.direction = 'vertical',", " legend.background = ggplot2::element_rect(", " fill = 'transparent', colour = NA", " ),", " legend.key = ggplot2::element_blank(),", " panel.background = ggplot2::element_rect(", " fill = 'transparent', colour = NA", " ),", " plot.background = ggplot2::element_rect(", " fill = 'transparent', colour = NA", " ),", " legend.title = ggplot2::element_blank()", " ),", " ggplot2::theme(...),", " ggplot2::annotate(", " geom = 'text', label = 'DBnomics ', ", " x = structure(Inf, class = 'Date'), y = -Inf,", " hjust = 1.1, vjust = -0.4, col = 'grey', ", " fontface = 'italic'", " )", " )", " if (!is.null(color_palette)) {", " check_argument(color_palette, 'character')", " result <- c(", " result,", " list(ggplot2::scale_color_brewer(palette = color_palette))", " )", " }", " result", sep = "\n" ) eval(parse(text = code)) } rdbnomics/R/rdb_rename_xts.R0000644000176200001440000000277513731206636015574 0ustar liggesusers#' Rename the xts object columns #' #' In the \code{xts} object returned by the function \code{rdb_to_xts}, the #' series codes are used as column names. If you prefer the series names #' (or apply a function to them), the function \code{rdb_rename_xts} is here for #' that. #' #' @param x \code{xts} object. The \code{xts} object returned by the function #' \code{rdb_to_xts}. #' @param fun function (default NULL). The function to apply to the column names. #' @param ... Arguments for the function \code{fun}. #' @return A \code{xts} object. #' @examples #' \dontrun{ #' library(xts) #' library(data.table) #' library(rdbnomics) #' #' df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") #' df <- rdb_to_xts(df) #' rdb_rename_xts(df) #' } #' @seealso \code{\link{rdb}}, \code{\link{rdb_to_xts}} #' @author Sebastien Galais #' @export rdb_rename_xts <- function(x, fun = NULL, ...) { code <- paste( " xts_ok <- try(utils::packageVersion('xts'), silent = TRUE)", " if (inherits(xts_ok, 'try-error')) {", " stop(", " 'Please install the package xts to use rdb_to_xts().',", " call. = FALSE", " )", " }", " nm <- xts::xtsAttributes(x)$codename", " cols <- nm$series_name[match(names(x), nm$series_code)]", " if (is.null(fun)) {", " names(x) <- cols", " } else {", " names(x) <- sapply(X = cols, FUN = fun, ..., USE.NAMES = FALSE)", " }", " x", sep = "\n" ) eval(parse(text = code)) } rdbnomics/R/sysdata.rda0000644000176200001440000214544013744124636014617 0ustar liggesusersBZh91AY&SY,yol` L V=9bwN}cϻ׾^ڒB =T݀[.x>`e2N}u_-=WF$!>ξ}.r_};םǝ'Jt w/<}Ԑo{[6)t ꯹}rPr }7wrP [@}FNu]'Qs2Xz>QmuG9,cUL>,/N氤n5pnxׇݗJ}cC@Vv-Y^p $_wrZwtݹt:1ק{Oky} Uw\t =htܤt&u݅v{Pr5h[Wښ=p;pYkhث@Po7y=tm @a4 Mihi@d&FF2=1242hOB 44jdb2hTjSejmCd=MALh 4HԈ2&T4MC F&hhz@ h4h hhhOU$I0MFQJd)F=@P4 4 RD4O@"z4L&i3Bfh5&ԏFj=2M=!oR=0(d=M'h&(jQD& 3@SģG44M4hhh2KՉ當>g$"R$gXBIєB)l BDbP"BQ DX"TieԨXDJ%,Ғ+RF*ؠҥ-ҌY~c^nhu=צg k\wc;VM~uA {80dBFtcL}O30$6!\FFUAAAslPꏜ֎A>hs 2!1EPu}-G CXA'A'Ar9|O8sKTϽ?5toKe㵇e3ПaaD9.3nУ=z;:nq>jAww>*t Ynt0ItÒ E9C=B_o8Wa!jp,\a{ǞsBW;81N=8 A;Bo'7ƘNgo oHqN;rA$%r?v5K 0s^ e/ V$-+F5^67McGyA/{/c/Uy"?*j"UW_q} ((oN\"7%b@fQjh{aպ } v)ܚW*NT~&A61Aϫ_eҪ |QK*[2%x$_O{pQ^n=?ݿ$%X؏CL l"*~I}3`̩45 -0&KVTX} W3ER`iµ5FbJ2`jObSfR+rI~~Ƙ>5l eqkt "IqLuX*V҆a7\$! We=Y!l<ɟsWGЧ>STB$*ث l_mn?zw`vח"&Mz=CCw~Oum* t0y*n";HQI AڞÝOG+ lOipYD ʬA$0_%UVb)ܔ'g#%]nnT$*E~*;TjT2Ytrgf_`Z0$ * U]ƪ?dTd<e*Sŗˡ]oX :SE8 R2E/Jl_]c[^'j̎v0/>?a|m D (IVC *k~p{G_.//ճ+aJzd pɓ$d'ȏ**RJBY-- %!H(6tTkk%69q~&Cp{]JX^M +K 0$8u4U3O|J|G8ooWi\{/l/ (P!@W9(AZڼ&\BJ$5 RaZ | dEᬠ~WSTlG/Rb(+eފ  =xҸs9'q8N'>,8s8mpp0000|Rrïfvѽ&i[֯ܗ4K.itKϡ,dN:6KSRtjM4A /1VPL]M*X!W!a^ 0*""""""i]Bs`Ӈf$|p]uwgυ]JH”LPs!$N!ռyGqƬZW'}m#Ix LzO^::7]$ <.9DC@]8d7έ{ 2 ̭W IK Ȝ$٧f$ wUg&! RbSŴͺN8} ._=>g?!'Q$eI ++\s)g6U%as^TC8.\^U$S)eDs0Z^ Mt1VA YwZ&VL2ds&KpcɃK_7.߶'' #vveU5qWJEU#UElMVekkkkk;_g¿U\0;;;]PD>볈 aD|5P"f~꭪|֔ #Xb̰W1`ɲ"""{~ "'`J7\֊1<{tn܊-$E^Xz"x< 3.Z ϰaO;(yW$yW{^mP>G_'Ï]s>ǧ UUUUUY$I$I$I$I$I$I$I$ynttKNt+LQ2D+LQ2DgKJ%)Dv0`A ` (P 0`G0B0` 9( 0 0Q!A 0`a  0` sPA(a 0`B!C 0`A ` (B"cӱ}&}2UѩV3IMUUNvfffffoOߢ$DDz|z7wwwww"""|@37 ߿~MCDWY{DDDb\8.p\Sݟ>FΜ7(^ZrM7"O=ň]]8g6EJUЧFE:vɓ&=|H?&{}yUV"iLg9wT+:ioNN/ۃȥUuC.&! gS)a5 nfpmհNoyEcjK:WfMqx=χ)'s^H\x0\(@UjUUյvwwqVmn.g@$CE$+H}d)lB(BD$V {|nG}CCE+}7o=*T /H%X|ٳХ߽ R,K3Z$3{MS8U6MUCDDJb."""""""""k33;md}鞡SޞqO{5RrPq4r[omnqo.ĒL ^kBzhW,3D^|orz *7u*NNWNE%+␤tH"ʼn%| +K&J֝:t$I$9RI$I$RYAN% #" 'kw$%9}`f:=U^o+^#ˬ} J,0S $j[CQn:^@ֵүN3 !񕇔5qKѽ^-S<||/dqkZUUUU8#_oQD|?s7T7mR)ǫ~qb$樒9,C^/{:px1b¯k:>S1Oʃup%g| Mua$RB5N}=E}ohTɯG=Ŀxk~Y ֜-a!iR)(@iӞ4r෦9iΙ1c.+|+u,TU+a8QeT՘;TPbNl̿t.>~ _4o׼1y5T?^ăj9`'vЏc\fmv-1h^̾S.-)Vvߏ>=SXBC,xڧNktxdICCݷK`3E4HXPmf ~cQ2Á/VYeE{TlnQ&oZڕ躼Y oW0$R  ZΑ'xjBt]B:I''ۜw|ŢwU|BO>$ &"4LD,=<`—IM/73q8NW=PHA lHDN}:O(*(ODFF[@X+3G[ě4l乣TC2  tkZԀ]HC*!A %LJ9T|;fUa(RJP2R"^MMVSV%) Ә)nsɭ8[bajꙂs!)1-0D3uT2gMe½7JqfyxGZfj!(q,֋~gV3 3ZaC&O_7wpEθfs[i*>¡ )DOJ"e̥0ROʩȪ~єDةQ bIG +Z}*٭kL֬33)b'U6]5N;<)o&UY2 Dw95b;,bŖY1$,g9&DZ%6 al HF &@[lEUPm"Q2! >+Z>Z ??^ )b)_{"ʄ62fk 9j TV\}7+v$-!}E/#zo0ԡBS xѷSBoB`R)#SZ"?_͜Ŧ2SGwȿs6xT2UVdSC e(dD1V# FL 1D)Je@Ħ%d#d0ʪʬYEʫ!0RSݐO_'E a$ CHI%c 1W@R~/v.7c HIJ}PNu@6Xb_]a̐9$".?`,@#L% T e,$]<:eoPMk<G{QާYI:~n!$̐0MddI<"I1hTB^GxIꡌ7k.k\ /:˰p7{>! Ƀo}'J9BThC }N^y0~!BM =6x>{8w$&1mYA(6)8E 2 ?WchQfBڦ^CF7[ _A\B]-qEO?¡[3QK;2g>v$?sN滻;owx\.즟-ߙK*fdru_ oKdı:71Tmk^my33W~Tvq͎gNxtuw;)DBHޒp-Xw1Jvs1{O^ҐozoF7Я} 9!yi7l-&}0GuNqPveP) bnnuuuua誫*+mnhA% AdM(`XK2Yv9)6毳jDh \H !JKi7 JCL42*i^G/L q00LIƗS2efx֚Pپ(jB+ VSNtbTy vUNA),SP*S&_PӞ!Їے6z [n0XcVgg/=ǻIҩG&2fzffe-cT_d<`vqthc{lKD L/##"c.I1ȜEdxbǸ~MZϹ-{qzoΆ;OziRJ-UBVLֶ"]ݍ lt3N;xӉM8r'[з3֮ugK335\Ggpݩ:W>^ M"R %2 8{L &g58HI )r#'G7͵M=6f3r]U%yeuE[:i9Փ BĤ)e7cMlaBFy lޚ"$?S.i[InN>Ř¼<)zo8FuZy=ӹIgJq<ܘ-ZUly51q=͝Ne9]Gy?Iߕ-\| גǞeɒ#\2qfE2jc_?W>MaJ@J\ ԣ,@ \+A-U]3$Ǹ6W>{52MQ)~wo^2g:YǰN׊N8|{+[J(9y9EUlSC}1VisO git¤V)M|wbdE%c+\6I6L<9LnKd& $6}sϱ I= i#zp]]B)M]AAJ $8P,A9=|bKIm(h:su|N.<^wi vyHѳ5->^e f^LUu۾<=U\`,6J9$9tFv=Nw9ɋQ9hm,Q0jsy#'}xq cK;Le7H1$Yqe+3 4,#l\waۆ"εӁoD"ͫM2꽛;q\Zs=\hMnRʦS.<!s,otujkyl[m7; \fӉo9$, ,GsDd(H0=}=s[N?t?u't[jפ<$ ]Jʴ[RllJ$($eҹ]6sjGrd X[5c--WY@03m- d4›LJC*Z-eT3sP-R= IN񁭾oʹIj[iJvM G]x%*j vzg9goIgL2`IH}>NuǧK踋lJ3]NѫK\6@t|m=1;4U`Igó,¶ۻҎ8 mW$9IP^|N5+ǜM7Ow<ۆ؟1A!%<'O# {GpQ.MH` 3X1Ög}]H>f69v:d@։;q&Ked}| 4upڶ m Ai'(9vzm-Yc0Q/~$cjDfX|plFqnfgm3o'3W/H.%kPUúR䲒sVW5D6vIz/Rd^%=Ndo̵KãY}Uo]"u SShKBʔTr`%b$Iνllq&j$f;7=€zSΑ@XxP`]ĝW\dyJ3~2rM&G{Y8{Aɞݲ콓Ck'.3ey:cZ9LsθVO.&_8+ 1Oa]"9w9G[bI$Qp<}B P`jA"j.6@ 7 g,++ځ3$ HHFkD1Á4-)Q*JQJaӢ1/xgA}+{2h!:OpVY0дAJ7P- 7 ^ $;;c92$h&d %tC@%zdֲ!Bl, [~~$ѣO,ύ 6Ӯ]U狳I{mNg0;~4mt1$tbEW>zs^NޥO׸mqu-&C8Y(O'ԳGhqFqc&Je{pշyw7[hwC<zhx ds+%2yc Bp7rIG7&?6~2FKܦ}.T],y5BL !$^O˯K3 q`̧s@,Dȋۂ4s$"g\fY8pے5qn6(qjшZ(űW{AswDe[3-\*:EFIILT($B6]l%`JhݽKL,iPey./XN(bؒ1 NQХ[[tT <,N-m”v!Po#|e|g(s@+"g 2( Ɉ$܆ BDjeUUUUi6B] fgj I)FyMј"6S&cd1A:?f*!Hp佼eF]:HpCDЁ骪֪Zڪjjjjڭڭ;ߜ9s88 mUUUUmUUUUUUVUUUUUUUUmUUUUUUUUUUUVUUUUUUUUUUUV*mm8BBHv Ih ēmڪjjڪڪmڪu w斗kO}m@Aw^br n%^.h+mђ;^.h+mђ;s\/ 1^9UAAߜ o:޴-)mupPՖSNNÁHMȝ=ySĢ:ڒo7Ϩ6JtJ8*0-ຐC!TH "p)Arڜ"J PNaT⅝GHd @dYO۝z^7*nBs?xb+|G=(rK=Db]mN0ڵD-4>EDA nIURW5M!DD@|5]ˋ7#RllJRlPZ5l `V\A'~ɩ Lkm.76[6lٳf͔p$$>ЪifV&70e PTO6TGZ0E$(H7rJZL FGI$ /:x33331"s3333331D˻36ULwwHP @I'l'I݁u$&7& XBtCoBt@eL.^x!323333330Nfffffffff(aK" kX2um;foH@!o{mғdIx3Z!1I4r]B\*2`Btb$@#Nü@کN ezd9)AT' fel)l;P(@0l9j!U6XL< :FN0X UZffV,řF&{B-d&K' ~&ek8|ʦw+3Q&Wq'4 +eVUeVUe[3PmitQR.4.{Mw+3Q 0`eiUT*UTDž[x]B*Ff@:,j""5ob4e*$83;PI-aTd!eH@(Dju:@-j KR -Arn$DcXb77jZ1mY(YH #lʠg)@"t@sxm5FK5VcZ\UUUPp9vS:,i!uDfHfP{4&Gܤ9!c'#Lxoۈnr㽣x_&14^x5I8nr>'_RX,9!lCtBPgPO cebnqgt뢛Y[BEU]PՐQ~wZyiNL3 000 3 002,Y,UoeϮgӰ;Ls~تPz7sڙI8NjebODPD7dF$mWl٫VZq{m̏ , opdVHgA=! qT@ݨJJj4P8* —[Zz#HI b2,1x(9 V 4H>0Sɉwge͝;|Tzk9YQxu 6^sE[og{NQHUA*r aJ#rw@Ʌ@, 3)@I$L(/!O| O5<Ȭ夸4F}ۺ@/BTE0GCʨi4SE2E 1nA98vs;ӎ ؘxLǪ5+[#vݐtwɓ/n@l5O2u4w҈ YA <̣o4vآSv{Oui,J@d"r{;8HR%MɂP;!U$ ьo YcY=BƩzA{-SvJp(%ۀA¼)pa:N"!b=ñ:$k`2txhÃO:iD*jъw8e[:wēBPwFJFVl*2rDD $d geaѝttA۠X:.G~>;n@ru~ިzp>=P9]]A۠Atw=/H>7zہy\bI9=l%t%ʮͭZ4 :{?+{na͔rĒ8V$,=dAI$G($gq܌Y *8, S@>C4#2U<7o)dږ-r!`8 L46I"rrDZehPr 򃝫#- }$4s$~vJT9~!zܘڧ>4I[vz$BWbxiGK|-ڽOCXY0pxgaAqNkʽ}|&p9ihx@ 3]s]iSxUOyZ𮨞Vo褡wvڞ'{8=vRjrO a5c\wsj8î䫺4B,sFɡ"7rThid9!2bxrsǖ7pxD\KET,PDȥ??fis^>t  A H$ j/HО5QXR|6UYnt#wD?g}z.mDXv43mtvZjիV[9ۦ`ʣT>ZLB _6YAXn*26 RQ2B+)I$v]r{:V[m̞ -J:nA 53<@ @sDDL7y|D t^`':3:3N&2Ok*H{;;w^{#ǛTɢ'Yo~o51G7E:6k֣+'[8Qls",|{l_R/ՙME_~c10Pxdzk/)6:8KV+rjU]Jζ6R YpCXmft" A H$ Vu oZXcME7msųYI"̲"oC38ba$;Hy,mlv6jիV] !: 8*TNJ@\ .<aIR|P@Kqa7R!ӱwoT: v"$a~O$x)LvR.pxaw }V7$N^lw׼&pFZuiW&k9ljb-=-|;\oreXKtQ;ꈝbhŮ67ȫ7n:Lp:[vHQܞ/ o8Hq6~]MEdcޒ,'xEޅ- πH"}/x_nʧ fG=zvf2I*=ox~zk-/?ogbl7O4">X/Jab_d-֓x=끠[ym5V 7o3zENwp3qp-Ը e`=!d,u4\T$aBfb#zCFțcK]+ۦ}JCgJW>:#@C5(FʨIXzXYd@@GmeI*U{ 1`mvZjիV1ƱRKVy{5:1E8.8hH&5;:5\2ІGJ;8`I)g$HC.@=|HL;30S*d ӖVPF]>ZFҀԠsYn~$0cpۏMf8-7,v8u#|OK#@`tVR_!H1܀;8ڭJU:B` +-GLhoh5.-YH/Cqw/]sږsQ'z^a5u᝕cCp-Zj@+͒׽2a4h 0 4oLMwem݋ܟŹy{U2r!(@B0I]ҷPSmuy$n"-U<("uzUWNf͛6lٳg'I#:yHz5cE]CE({H`2`gHY(HM85.rm4i5v,\Iپ$=Ly#.ǔFo@D3,V!rp@nҞU^\5~ĖG4[ 7s Es6rN4>{ &nM>>F*Xj>}g4/:[oa.Kw9@F/)43kwq ģ]T\iR(fhp4FM>t5<Njp*۠b6:us\vS)/Nܟ(EmV~OP~.roE`䉡)LZ,Y% L,nЖ8mz}ZjeucoF内2aWL+P쳄AI_KjBr;ǃ2F3e'g0I!0UU{yf͛6lٳ}׹]ۤ@*' QB;&%#j uۨpZ_6>6nKmmȹ4g7ٟ N>:˝o'.ԠY}%ʈ[@-W[uNޔrP3SoG8Q@0^8ZS*[@r?億zj0k8{8T࠭,+pv(/w`f]7>APJ)n>=]>2@}{*x*땯 {NEه}$ՠ4)q5eo7O-x9SK_` Rfax2c PRG8esKN@''q&948,9ct&ഋQ5.SY93ӡͦ]ydMtăΚӖm$ǎ^9q)zbaƦTa鈜-Dl6L})6elLLYMi, pI9,}`fanArۂI =]-Ù:;>s"HV0@9I @l94H ϮI 3JPHrsp)XOCTՠN6K}}~{wbC:Iܴ`Gg팄X~+8rglAC8q8a/mfc̆w?Ǯ4c$gϟXT[ l<|wQ kK=T`K;]v{".aΆ˓-|2GT#sp~,>\9)Wy}uoy9[8.1~ɋr3n]imMZe5[H|sX?|7!#Gqt'/2k UW9f2.p  V@Lwl97;z)=,6?S>?Rɩ]&$jLoIjHU^nJLܶ[S 2 ڙ Lɘ11RV IH2e{U\&-es[qS&ILM$Y"T&IL,)2Jm&L3&Z̦ə3$֙S$&[-dK2&kLYe&dok)RlTlV)߹\ #F6"MƸ3dw&QثJ?{HϙBlTSffٻ0ÏG/:ѽU7fOH6w~_8?ʍuwwQTK"x4R]+!:yL, !_$_(aJtPG 7boV@ͶgkkmrZř$ @Ev!$T=k^bC].}!/PA7{J$UotIZ#zG铥6;SJ1ERӊiV{ZNn{xpΆ |uQw7ůfջ D~\jSyGNgq<{t@K㑃@P E+!2S2k|ETD#>!I H+v}mR: d1ܘ"X6~-ʩ7b=|+ff2&Qw?Ԃ~iW^|vٛfVefm[q}֐(b^Ѝ] ,XɌbfdEs?ZMӟLc8LT*s\SҮJxYeYeYeYeYeZD (K/} bI-RAČEA$lϞV__(¯]^~ڪg~_*gE>>TGw~fIY%eK ˁ ^J4Zh_dNdQvT!"OA\7Mstd%7ݿ@8e]OW?|gGB/qV@%2mt"7rOdMGHWޑ~ʪߨ6ֱk7}uRצO7W̖cfjDWi:( ߤJhC5%YXL}!̋MjHJR~@V 5թ7-߄)2,5OIDHW/Ngkg/Rw;ݱ֞^L; &ImVk샅tM_/=4G;=;cݒZ)%J*aU0/Ѣ X `Sf{j/[y?BHI$S>Sqey@,|AK0Cv-]<ՑJBr haęj3:$ (e}RI$ޱefq$*'S#m-mYzްw^@E,sA T%$ G,P)HNt@$)UӪE8+I&/8|L*{5)ԫDJh0x$#Ou:w'~I~CϨDGL3# ,wBwӗ'fO ,,Uc/) y@w!~_rGfJwõҘtp5W}اQz(Vy%h]ꈺׁzL\ѯJui <*%{6'x_$ʊI]dG^+I=KӼW̟f^rίwm)=[*Y(mfsg7#)朎T p sFv$Ԭnnxn~ 5kdFl@_2hV 0>vZjFFL*~s۾ e,eG~!ʟpŝCSR_܏iQ fvWϪaWtNB:Cc ubY$*0@KA% <1X';W|2tY-"WaI3ee-ŖX)ID &6iwDI\oQ܎p- [;#ْ@n @o#ca_Ӏ{ X/?*̹ 2XrJ`:dG#+Jab\DO^ݣ|xv6%mǯɌXМKw ̀®q2A^0}ƫǰ4(O% G3. 玏[|G~ j2[O LA5 z OiO}hzI*AJUH{ )ф)cEZdc093_wqW|IJcÛn8gx_>@hۚ#vHz9QQ 5-y0A€[Yؙ%pffs2  ǽ34m:'D>L}5IZsA1PHqrK3#:s$Dx~?H:ӏwOm$&*Uix?>H=7* zɷȝag3ROiub*Z[mjZYLLnsyL2~V~)(TB@S֬8e2陹1}X2A}``fHmzN([ +xoPdKGs6l[kVmo\CT#4@$㩱r]nvW*Q羬+1]ζϫ9y#bV AiIK&r,DLO5|u:^KWcvd3(Hgo&=5?L?BQ$:~3>jjJi%G=3w\*2=oGlܓn,%,[2IS{&.*cb !b,ikߍ5[D8zU|?Vh@$ebtguCu|4>i>neа+1Zx$cA)[}ae9c9Swz5]c-$dtoaD2 %~D 08Bd}v_W+ [_sr$&_ue=]p<3d4^*"\IEPMbK&'Ym~+-kdCЇm 㿧=Rd voyJ/ ,Mr2IS+CQ(/ov<߰4]DzymLlp.MO4ն# [ Mnx]6i)dx[_-ɜØXLj-Yt7s| )$|MpJ| BW1bb>%E)9oyb"ЕRv5|5!pTuP fkw72gVz|1<_s|x7yJx?Z2c㯮seek1֯Vu9]_|>Z‹#aqxǓߏ"zDž99KwY v=c_/7oeT$X ̀pŸ>ܡhBw2~kVyyGprwzD}F8*.؝/ [[SZ-ޓ9)-鐗%k5e=m!Y]jd[4R m UUUTAaUUUUUUWDA@Ut{P=x 9BSA!$&WC]l㐒7Z3=8}2}PŲaiź}coe92&:a׳ֲە[zN0; '*~;1)ь.vӳ|֞Gw6Nmu9jfNR]D]{>6vv$9,16 ,QtaN; :ha6P|Ps*_1eǃ78QӠ<W^/1zIN|VT[)bW IoT؇>~S3+M9Cl35&8q  #Đz@e>U[Ng%x4L1ʩBI,Y0 jO3ht[j]Ҭ@U>IVųFyAVDCJC|$Ǣk?ߐYǃ5,UU9Z^iG'}g.ɡOlJ$J *I%ys3m2*wV!)ʉr`y 4/ NeCYgDxTzcFN{8y9L_,IMTB9D԰j=ΠlVԧ_u] 黶iXЇw%J=9S\)W}wXkx9^%zTC~ԩeWߋ4F# HhXaz8-#@=p`ɓ8=l~OI Lx_QE!؉;NeBS$ =p *iywwČU94)L2/ˣ"dչ1! CBg4/n&HS̱4| )>djVF?2MR^u6k!xS^6É6'9y$Cʝ$:L'uK۽$h֭́nrH"-~]bGO DHШV$Ѭz&[ 5/KޢN] :}mz<î}0$ށTt28;5[CW+?69񓃹Kiٲ ckWS/IHi"IR$.8(wWOwycW>Y,m R[y)J6LuHwh'TxHI@ TRBD$,=!2F*rYGpmߩἯ+qSi밽c;>_uc{xw^fçϕVr3L4NkUɔj3mjl/n<e{=]4ϻeEN=ryڜNB8Úَw<\/ ʗ9?~H,Y]^'WSu0m"?߂4y]FO> [{ ëeҵ:-qsKm}Z(t}#Wbxc2%ЎtnȋO%mQ,Zϸ>n?.Jǖ6ݽ'w}7k+߫#NJkL'H G#Ie-˫HT G\C{fL1cP`%`1Wh0Xo/O_szͲqp&PRZ߱-eŝƺk۱6B1h~?Fc.t0+qlxlK"Hg) 'O(C|ȃCZx>NkNThߝ%8cmIN j ff^;r#S2g2C'%1A\CŢ)8^,{8B+qH/hYhj+7)BO/*dd+>?{'f`IDn%Gjݒ!hPB ,˒fN&VWQAV䰺g 2CWA^@"`rq$HG_`~fD_rHS*i"!RF뷥2ecb1،lE%VT_laTEȫ~IoFɔ,f31fiS253iffYffLLi&fifM6iRM4meѩNӚPt*҅Jүӻ[9'*y%]76ENu*8~ZHF(BfLѾvt_V@HWp%.o!pAd0ɆI$2S!RSپ*nȣ&ChɩT{[6ҋpB4&'ZTFCdQdb K1 F̆4RRu-S iЧ4{R*տI;O0ׂt*1lmoݽV\6fxٚ#fmq4jǍ9UOϧޢ̐ꫯc*ߍsewmh , eIdrW9c򰇜ܗi98ݛe0564Tˁ|;ՊsUY[`[v3k"vdBŻ%tu}OoU7b\ K@bTς'zl8E ۫wQܹwc*.f̶iZ$R{$O/rܾn$G%M8[5S e;1gC;ʤ4CkĬ'DI0aTyC0MRs՚$$/''$i-0ZZqNtw/=xOG^!6Atk>׾'ƣAʝU|? e#SyQ2Sx׼#ў_SY 4UR[ֶS;y?'T+ʔVR=G{-+S̝2]Tj=h,{{ݭ322 0I >DPPnbSf(HuĸF8'ҔbA_Jm~߽O߻%J> RXy:j<{0K]YS 0#+c!S0By5kkűiJG<*NU9&fmb/*m}t:K^}ͫ#32E>M EcIm7#*XbUmF)}FIJfpZ1Qxg8س wc碧4[J}8_w&6Ǯjo_OܓW$OuCpg1 Cpns-L2S6̵yw˘a ֧0,Vk!8Ʋ3@ :Ft(4үEMz+ky-lղApn)rEsH$Hf1j,F|0m$ڧ<(2/}4vNΞb0sҷ]Y];,V`TL1Qm9溙%mv%mY3~Q *]2Zj;%B:\6~>BWl; _C]uLz2eAf>6C@UȌg3KhɌMg­lafP%ttI؟V/1[{靔陌NJ8](Id=olTӋus2בE8&aK=dI;-34Ԝ,8:]ǡ1%"+m#&{rMw~9T-e]),)nTIєb4eʤle a % F jڵ|e^={D\]=ă=c'{RMhSm8K8~9&Rcͻm-BL|NH+'#ޞq[1#K9sj%eƞݷnsx*YtrFtMg5R7๋ELK略2KJ]ok/?>"NMH-,i󮪧$kaz}^fEL0Toj{;kS|ziwɶR!a,ͻm|WDuq;# ǹѴefv>S|, O.ZҮںD86]:e0Y1-Z(5_Y^ߥG9 UK0ᩣ,f*A٪x2О&;1^fb)buºjM6mjU]caߜ(p-*2 A~LS3%NȲc 5%m)4xP1=ק{X!תTsz6JZmFdQA;Xz&8UjƲLJTE=Mlə)Jϕp2HL d,hYji0ڦHRlb$ !C2H6S6!)Ѣ6Z$RId4hG]UmZ;<+ԀT&4o'd| |`p7*P ƖLK&Xa+#*HCFUEEVa̵Jík}zb&jO)vkިQdqY0d D[*JҲ,%T5;, !ImԌ& ,h%lZd1J% @ke,XdJYD#UpWmS~75 uW#h4%%$jY[H z?ysv"D˥xޖuГ4S"+2T62YlYMka+M5rZ󣄫JZ0SfPZdzIQQ֒(.fX`L]͚ʱb5Pִ[i*RO [f 8- !YL6cc37Z\g/ WmcHH Alm+5jW.۬մW*<vt\QSU+'Dz*z}`bJ!eTS|ʔe,lj$uX6o7LF T=[L'L٭&۰ cf::Ҧ ΩW1SMf*2ȋ2Uξ=&I+su ie%([VC1d ن 9F se@CUZk U z9%epU5e"dZ,` H) m+̘KRԹhG -.L#jd EUį $յ4K%2D ř w4ʉvV3{ɪ#'G(KKP/>k9 Q>E$2o3Ij"[ByG)*ZeIϵ\k4V50RbTf+UVFe*1%2z<k\Ba,Fz1 ,2Y1ǯ^Sr"Ř0;LŘXbʫ%U[5Q5[d}W{S+"̓owo;AhbK I^-9y:5mMVճ @Kl &0Fv ~Lm MU_Uofe2N( 5fbX2bҽg~cϞOF*pNyZy . 0BrzuDAiIJ(_ Qf3!K$mY7E}<=o " 5fP 01-TTʏDIy)%[jI(AsjՕ,D$p,֋Y&TƑ02$/UᲉ!-FƮP ]TxKlݨP}=z2Yn M4BxЌiyEY ʩ})ӈ;u[DVQM Rʱ7%ď *|LM&wԊ^4ձq\Փ IL" ]09wٻg I5#- *U:%sR:<5yx9AGjv%9Vt;3p!yɰuܥT*$=MqV0˒@J0#'>JE}A,co&ϓoVTc`bd,+Z)m)0` jVY %LV-(Ќa%\e3%Lf3{K[DXkHXHX萐|Jp}ϰV[jl)̘— LT"m[cU"E'ҌF!,Z-JV?kT w ԙlC>O' 7ȷhŦY31,%0%Q֞wܾ]\:*Ev6R{xG^)1W_э#|;&"xrc `egʬ{)Lb0]j2a22]| :u_CD"Rb:jliQB"h#1DEu*Ǚt#ٙMzޗ0LZ$N%pt[b% lUv*Bɽ1Kcg_'˒e\0`8eR6%F3,(ʋM(Ҳ hlRSVx4u`.(f2+IJ1faF%ȕ;S3&V/Dz4a5lXŕfřSUЇӒwh ` ̥URrV)4)IBd$Be&6Ug*mmCQ,aS }O$<]Ts .3-b3kBP@P"0,eJ/x:p1Bp@[2τT V,_t~b[X3I'U2I'Y#lЍ.gL9N pIp/` P7ULދ6dM圩S|먉{õ-`kT,7;vi*d퀎X$_SO$Ґ2I%bZc>H)6BHnJ"@y,#3ФFcD(FaFK%u%H۝Z)eZYKiaj[\L8ێןxno u5%.a aih741upAr+E~#1&G${::O!4j[NbR d\^:!6e&,luEIݳli.ی1m˕wVUEZ!kQ]lѬlwiF8]ImU e6j[w_GWzq7YYVMjgF UZao1RmniS'NU ba*i-5žU5RZ7UTnS7ccMXp6r2<,8奛|8r88*Ӕ9,ʐaW)خ u-m7*•\N^,G3tbZjj[]Q"-Τ.mz1Aߓąr_z~zaHtu4T[z;nQ"XZm4m3jXȖe eQ kCRVWF pƁ&a]> @Vp=N; ^ j@sA(  YdqgNE&G*5ԢbFQWȧA\GxM<*V^\H_Vf}_@d`BP&!NbWTfsb؃T11YZPi*(lqIKR0JdnNVL,XKI׋ccv#D-47X5El3Ym&Y1oJmYj\ 6e-95U:V$a]dHtƒz! VmhPf@V))plsrfL*MluVvVzhT@08TS,G&n-gBB0 c`aTѐ!ƎY!3}K-eJFu\U]h.$\1%MfPd*N3UMސٸ)ڃ,ZbJ]TJ.*T2#{󤶪K"Z,ߢsvU%Aӽ[x[Jk m[G[u͝KgRςtxU*|Ӗ@fP.) ֎ 7%jtyܙ1X'VSeJ W߬aćLDOr\V2!yZUqRviUVj ..t\M̨VvX6r\:뫦'W+\8ΡZڹo2v3&1rI1)bYQ1f[jQ KFbIV֖[4g9+F---4ac(bB%miel[2iC`:E$NJQFU+=G'h&eEwsx ̘ᅭ%1fQ52e+*rjs*GXG }d)2Q]SըQ;ݦ,YVj EDe= 5a)Q-k,I&bfI ]Ma,pxrYg0p7$rիV!ݓ&3fZ4jѮb- bEeXd@U3eL#*#N:3%܃ejeZYI76H0^,*R7z1-t)6INS~!UleDX61V mRдҪcd9l\c~o7…c8͛$o3, ʱM74S9DE}As3M1.6le)U WڸӋm ,70Svh0fieIx;a)  `.Tѷ-(Y %2T[(2wϯa="ISi; Tj~*nPf#w, aq\AtȥH vN1Zm6_"F0ڮrn\Q\4T"ˋ<;LnH%nWH@$#9Q#88/:Ry^<~"VUV:Zѿb'ƍ7tvpƂ!w]4@o_@OI. Sq/G:TXyRK&)v>IaO];%H Dpe`|h*@^AL9?D *9'$Z$^[Dg4b*W3%fB1ɝGywaPj]%`>r1EMS\Ty-[(& ~%h@$") ~.ga WP6E$%;~'1OOۣprpz(vk)0\jM6X&;gLqnx@34E_0vKS,ڢ432G;zc6gLy|(//K#a~Z9R{~oidCߺjԓVZfɅe.JE?M@>_B%%~pf_Q(;z Oцd:ydJdcW=M4設U@!I+|fY§ }c_=o '5on3t9 -y'aee%(R?qpt$nm1<%?bE90mլ%jK> k]iĢQ(~śAӺ>w!"vǟ,Hy073$ȉǘ*$ף D j%=ْ5!,HtLd,.O~60;ہiso>'ӒwJ%ܷ^aH.GNkly6朑SU2Qq>m#A\{> |'eT6O{)=OdS!͏s){ge"[Ln"XW=I5)Ѡ<K[UIBHw;"@+02[L}b\m>|d e̤_ak}OqpJ]eh7@0"p_FE~@K Ɵ r9my"3(d: #2b0232rqN:^N)c% xP; ?] gV 9FYIX玙m{j#Gu<߿^<쑧@ d믫SJHM4P<2}^@`B=:kJ-2u:;$AF:$b fr[?FT6& w6U[io;mQ+}'IuВ59 y G'_x7mC%ʼ_Ey+'~m,yi،9.nJ}~Mzok]V'8'O/JVH7#PIE#8|;^CgHV_٭340q<O~E᏾bW_0D>-Q7ٝ+~S]ח0y{Gy)RI?ŰغPz- M=ܿZ=\+)mN$oQy#w\Q9R﴿hxl\ fitpa3S ^]l^Ul|7%y۷p|۵oo6Ǡ@+}#'Tl$J$l Q0,Ƚ4 Ut  2#@UN)`ֲZ룖PUjjCS 4nԪm@Jm=5En&R!ڭF0M(T$@h 4 !"0(hImf{nj(Vy=s ӄ`a:*fZHlI@+ZzgjV ߪЁh bbh ̦&Й224dx&И1G5OaF#=4ڧ&LS&&h4@"~IMM4hh4h!h4 o*4OTHi)iCz@hF4OP4# @jiS JHBh@&OS#L2=*?F(OSy#ISڞz?T6@=F22M@h M2CM4(mM6#*g7j?RzS4<=@hh4 hӯ/<>c.=T(S|{,UDfWHI^x%ɓ2TgimSCB3c@7mww{wQT733wwwwwi$DJS2AD#95UUUDUVfw(RJR#BSM4HZ`)JRbB*;<+ 뮸$wsFn8s37w7wvꪢ""""(mn7j)JR)JRcp(p1ipb i ii+z뮠)H%)JR4M4@SM4u]r@733337w33337wvgws37ut JR)UUUUP)JR +)JR)JR%)JR뮺 JR"R)H SE #SM4H"i cVJR)H뮺뮺뮺 ii wr23333.#'vwwjw@#i@%)JRT8HB)JR wws3.ڪ5UU{)JU)H)WY)JR)JR%)IR)JR)Jie)uU4uH JR)bQEPJR)JR)J@]uUUU\)JR%)JRJR)Ji@%)JRUUUUU]uXUUUTUUUUTJR)Hu\ JR)JR)JR]ݖa<&fnn"6g2"݊ڳ{s7373$nnfffJ@4M4wwwwwwLwNTm]nUU]UU^f6fn]pCdݫnno32337ww33337wwwwwr뮺$ JR))JRR)J@*뮺묐)JR)JJRR)J@)JR )ffn骪 VԸ2v3372g*JD)JRR)J@ffffnwww{qUS334MBJ"e%7 'UUsuU`6mH$mw333% %(뮺#B8]TMf{-mi5US;dԒǻ[<*fgr.t sM UUUUTBQcEQ4˻Ȉ!f$vfPJ[mw33337wws3236ꪉ̻orffg7wnnVQEp uVffnUefffffff)JRJTSUUF/*븛۪͹UUyUUS[T* _SA?o4xpT:_E!z\(Y,uc#KE]ݯlZ0BcE"_+r(e&7\ )(Kw}pyj;wnY亼u5԰dIktT|ۧfwmrYMN;+ݮI)J4(DD%,̓SPwqFtذA &IC]F H&짮.ݖI.m^^d“Fy dVr$Y(0ilF/k`C,d&R:JɳCC 6lǍtI4bi$W]uɲL21n%!uɀf^YJLJLM"onU$GY2L,e ؽn,dəQWi2OIo% 2=4kWtH!gj5H%J^.ʍ死A1 Av]iĒ*V\a 1#ƺ"cW52y)1Y+\uQGiX)%JI^ E$f%  >>O%_6yԫ|! &E)j=~YU?Fib`(Z`NUeQg ,+5\I^]h]&]QW7TIfHM(Z edCQ$)$- p o/0,aphL0>qmqBr Աh0UŠ j,щP)78pWZ63W@ !.foP~kj]ujjFL$FڒX(XؚiJMBTkeFJ))acchmů[nX5+M%^Ul[F3]Wu[Ŧ3I&+/v#IѣEj-e,W7E+ܹj,mYˑ&آhEMuɱ\.mZVܣZ3cmUM6_InL[f`P҆H&ec[ Lդy W],ԖfC2ZCPX,42\|,V'o#3{c8p(i(`֔S|3+KYPlh@܅,v# 6vrDP,Ňl.v!JHBHcDcDcDcDcb(ŗ}%^˜s7t: bzɼn'&Um&6HHl;ݰ!$4~{bn{͟]zS8TWuV ŝf;.W滘tkE}g|{ye]#E%B $B vsMSl 3J 2jV{ j@ wU7 :Y^!@V(瘩gb2XlmK#OۛNM vIOW{& x>C;Pv Wvǜ\VzӨ8x GksYÍqPO5!"GnLuB$D;$hR<}2HH0HW3PKĻRTu"c $ #b@XƊ X^ZH,`ة-XB̢ 6Bɉ$4$K5,6f (MW6^VI5 VAFeu$2tCGQ\"/K "PoC=|/z{[|y2K4LؑYTmWwl4c/'w77 GϯQ:· tiLOwgG}u=I' ?FmM6/~ykxƉ6 ͱAI mUIeHƓC6Vںxޯ7%y6漞O|)͙ x4L6@w N{g;fcVkYÍ뷅$xT t2n_Ocb }OC>TBRUQ"UAtsrĄ%BNw..%)Fd1E@1#B1G*?[ $ J+^=kz98Sp:ض6c\\,T&ۢS Z iP[yn2mA+)7I3n/%&JKG]]jv)o}v8l 0FH9 I`=0 _t2BF#CJ5dg?^4͛E,0is__L>>a- \2!$o}@)&k|o6^V36y&y<2`ݣ^hs27ܸKcvn9WÁrCBBD)@n%:Gu:غmݮR]v%N򥷍%-j{r2sʛmUmdH6"{McTdMWhg'xPGK.F$!#Ddح׳4pnup1( K% TBt87;s+沇3Б#] aj*_]}|(Z'CPdwK"Q%U'V{uwxXٵm6+y&ds0rpGL5bHL7:H\`ucFHhAEr209[-l6޿~[<=z[ȝ$ "to'0)a XXAum˥G?+ $`X]$rٺZu{Żywǝu=^e4@ @wg p㠫ە̚#  1|lCZ&Pk6ѥ)1_w}_5JF0_k.T/&"B& (j9ڷtMGx$ndDj363Mf,W}rUքSH,#&^킷h/ǃ^GCt kGJ\>nڸy鮁ŽGXeTۊ t9Lҳq5u_]mZ=x`F6ŚZae,-QݻNCKe+)K+<)NP&tB!H#&"ʈiqOo]P 6 7Ζݒ].gCbX" Fth=|M^N6Ϛ% |s?4ۀʳ00B@%v7!C;^D޳ݯ>GZ̼uػ9/Y9Okl,r䏾].zޅ "|_i>?ӎ83M5.>9૗?};].g>O}jصVG{p|>OzdʇmGL/OCQKN5%hz!lZ koxoE_oG׿|պ}+lNgwG9A|6::{o}cܾGovKa9!S|o~MpL.MK'c KK龫p_'e[ n}ge7w_u~7g/,ҿ_"̓A2߻p]E܂:Rݵ G}w#KE[Rd ]We%% AE)he~|)/!=_0"9\:?Vb847?; 꺂ć`$ l_ = 0dJ<ڕmSjyv# "M&q6 l}{VC̔^dG0$̔#Q(2Ffح |Z-Zg<~IUE7"t$'Q:H u:eH>Ͽ`?T$#$ }PgD2?Wg5ePZg};]:G>> P'Oϟ m>ȏK{'ć?;s'%ACTⰇ:?ron?pp!Y̍49y [_5jŁ a dcX*A5-V4ɋ6VmͿ^x,9Ǩ-+]Y4>H#9t`\ +$hrY]S9ӂ[E!e5MgCԉ$$81֎/sN.ZM_M\]T S"4Btݗ7ۏ]Mw\ &l>=*V3FqK͖Gqkm_ ,[&főXc6sӡOCɖ%.<$#!'!sf}Yf-sI)4\ q *QnWw^M5cv>vCN"5dp%ꝷػ=_eilٙ2"Hrt>n:IOA]9bh}_h ϏdQ+( "0e0|w+;Ȳ0 H4CS3wdx$eﷹ\;(wʯߗ7hunҙy|Z-2g47QN(YwUF0!'yӰiW|q17{=Uبš-6E hԥ3B*ZMfh cfKRZ,fF-"XfM )J6VɉclѣQ!RRcm0 J,UQ%`1d֘&e !A5F+Rb3"Z- k*Lҕ,mŲDmRbjh؃T)iYdDjhiL3Sb)hٵ3SD2RHH,D&:(ņѡ: ={"(C*Fn5΍ 2$_Vm@d!* yL,@!ΤvzpDH0e%XE|?ߧɵkYVoo8$E|'p7Cm/K#Vr5-dԫJ[D:] X9>'˴%OGhSE%ȇuW]۹rӻ'nһVޥbw{^W붟ޢ(ur,˾S׿zc2{ݗ<4&Yy䨅ov4\31*ll]R-;!VUF6Ib1fc0>ɯoɩ6 FM}yQ?8|qFȰ *ˆ<`^dBO$HjJ=9Cy*:Y3PQB7j_2JxLc4wBI_Mbx*s3MH@u6FƤlŚ,$kL cklmdj-h6ԍj%_FF^ l5BBFNR&VlX@V ya6*5Ndtb$r9p@9C-e^z~:t#CyQ}$KUC}1*/531r."lT4C`4hLp[ĕh,i*61ETZZfV,Xi[-JڱbQ VF5Vњ56TCafm$PLkAo$c#G$ 8'4r8P돧ѹ^G)>ߓߓ5Ea0 $~DJAW_,+UJ[$z?SUvAO"8X/ @QeW>ny13i93gߧ3ϧΩ/" {|H={d< }Ȋi6Q_dz4RAX/UAN8bu3V6) Vژ{+T/b x7ϙFNg4>zZw~Q6a̸6E! jPmLB3D?2CpixD5M{֏Kh`D# & @1 brffD]6C*b[]5 dܴD6vLE bҁ#$*z6 R3: lgk;I}}y vJdE"?;I}sA!C\HXFY$٢ykj\0G) VHƳ 9Od D ȁb%f*noMҏqᑈH;JRsi֪M7s b掕VH`BOh}];W yxxǢR)pp;s@`'1xIs^^zb/:hs*.B>8VII2V1RF\0[TQ!AW||@ҿCҼY oT6[d..}>pnvA"AsHO %"q FY]`ܣΪ';I'CwI \ Xo.̔skP2DKq:$fRHSH#O#g"lpdx\#ЊIPJ!gBgE%wƚjE$>u#p:>1m!X'~x}fpA% xl <>?\޶+`..#2hWCC3$=tچG?Yl,˾auL=v+<@8S!$\$Yr|77a"@I tS!#IdêD!Hl۠dEY4pxwD[!$"[dS\" 3iB@A$60`A"7lN`0$hˠ )vE+ZaX .8&!p653('NA# ZN"q9,`(l%ZY j *(\ _;X\<=ScW`1l`<-!*<x0"'f٦rDp2A2@UaTy1O:hq Ȋ ERAbPL~>Z2H Hײmsk*sAQi3=7.9;Hnɥ\:3WELIduҊ$3VBfjTPpC`*(璱>,m!(ƨ}o:cI"T(^2G]EfX&g7dR<|E@+QY|a7Y$"3$tɔ[(_BDAP!1b1d^Ըnq7PO&BkֈM\S  &ϸlRc0`zZ!A,{ł4_qi3O@=Իus!T9( =eۈ9Sn(tBHh&'AP4=u:f_qC`ӳy/Mcs[QE4$ ,ߕ>vhp_OW>V۽"(ԁ A BT2t1 !rI0`(AKIh2Q$*}8DݡKd 4&wUKnn$$A75`ˈl``R@V)bm-88fq]5Awįmo۞ K)]|Grad )*sEd. & X0pi(Jucnڇ4[ds*m*٦f&lT9=sUmC*G66LlmEl#aM\|۝{Vdơ:>ԐMVziϸjf=` eӤѣTjTj!L̛RSa#Kz"f6ѧO6۞>SP DNeU(ڋ5؟/゙*)#g4$\cӬo˷2})xiy!I/`6kn7i:Cc@A (&ftM0}3~_6鷫SkK&e>7n]x,!;boMՎp5g=Ox=㟮EAk?PTm1Ur|׏XDJ,D"_ $7 6c(ܦ Ys!PENI>MN-,=py`IA<@餯E@Q$D`q`(A Ѯ %ϫkҾM| it~Qw?4EXV $A48&aYB?80,SLh,Q @VasR@`0L Y`ƈ \.y.~$(̂xO˹rG0!҂'Y!TU@9];T|t LU)L=S!MSd lzFTK*x XM s",H Q"mY0\ByEYBX$Uk/e8'cdL\À,T)r8E 5aE%0m\h±=',g+{jhMˆ?Q}(RLzWԿ#詂vAGidtY#SOĴmjT6C:9C2s̢V蚔d@D"Hz)Yt A f DkDQg& $,E3<tP@lk~JMKR#@| HDD3 ,u02h M’EP}]FR%H$(wȒ'?'}$AB#_e(rR%z-9Cv?X7WV;ް$<+e80ݚ%[ 1{ Lb@f , |d)]+Ai#qNh X@.FRa֬jCĩ-^x8D #Ffȝ*0\zڤ3G׳Fm."dFc @$Kx$cL-X쑓"Eq H"(R+PJC*Pf1%~ \yu]a)lCu|Z,0aze˨ԨWrfbsǪY0D:U%-;梤G/,wBΆ0;+(DrP#[{߮$ƃT"Á_'ڐxp %97/)Ve҈LKĒЬUOfk7[I CiR`).2`2g鳮@4UdI@lN 2OlGLV $%M S3>c`3Otm>BAUTP慕SO33iwݷ9o ؎ $%zG&D{)B8>/ڥ@Np,1W˯Bpaǰ(C}z⌚^<_Z\TH>^s@#\OAOc&E}H@C_Q'sR1v"Fe -68@(rH;DbD ȸ0!" ` Oj, sݣS $vEI:kcdkIJ ( i)䉅< u CA&D  |\J!, . I#EOœ\4YM\">"LȌiSH:+Ӑd4kW Qɑ E KI&D> Z"*{z^/mr79j>]< 5zK 66`Jj%Pr!Wιgo0wy > )R \3'=Z|阱l$&fwjWҺ #OSEElَDP\t?!AM84"jp0Bs15m,=S) !?<灜򫘬 Ga`|xm,䁧<\ƸL$0Q}|nq{^ -ICq[JtKkYv@I{|}~U}~~"lkkK~EVGfDѪC5!}*:#ghSox7XS]>MJ1=6AKS}wq w<ƨFd4fo׻]~ A IDfs^._y9usFMӻ^f:L10&)~1^UPXβMO[17#"|Q&vQоuGHEC}8U k+9U*2P&:>T'Wqw_yuג=IAz{7`m| }`8B4lW\ӣ }p{~@"ck3QǵQ|u>xL Jےr>("&ǽ}ڟ4{z$)DSD d3_Q wGVFS3Z8fqxD( @ @* ABB4 UU TET;\5yֲzT  P(,(B rfv㿜I>_02WI|;wu{\( 7|M>N{Q=Kv+| Z 7$|Nv_\( #y|wG=u<ݽ!nL|{Pyڐev :6O@^痪mm$mῤMUDA*q*mۨTI:$IUUM~n3333YywwwyUMۙITwwy3o2ffg23332UU]&n D[nffffk33333?7عe%-7&Z 0 I$mQ*AK%5e 4SRes.6.-" Z1CEjćUI>]{^ݴ{tW+뮺$%ju]u]u]6V]u_}}ڮW}}}5}}}f^k Ǐ_Ŷۈ 3_+ši9`F1g}ϣ.H/OFF(^ӧwI$I$y{Hy~_P}>VЀ 0ݽܱwwwwwwwv.=;ant󳮺fcO is9 c@ʻÄWcf`UT8(ULUUH}?߯_ is9 6x,T^EҌ/#[VCCpT=kݤ|| |I$I&fbI$fbb"""*ff"(iikKwfY)scfdE hXa iwt>}}=zI$$I$DDJ0!|b fǏ`.CC@2~*""""""!n"!%?%Li'U#2LwmKws337wwm]]Vwwwv>7wwwwwwv{wwwwwp""""VYȅy$I3,6γ33&e%1fUUUnffffݓwwwdiNDDLFjpN馚e*SgRKhL#ĺDG[BޒI$I$J,2 N$pI$HݗLmztj1Tt 0V3lqwSJ;M[9og*-HEC\oאR$̙:ffPKx,4v=QeYe4VfBlϕQL~~l~㵒mh6[|˽]Ξ||뛗.@|>|UUqι.UUU~`{=~ $IrLI0 c~OɝRͱ=QeYeJP#%+l:.dC:*xkOscjt'|Pw{˸׿^^w-0 p@" 5}w޲>GPg9sbYv[J/IE0\W|Z^==*qٚw^W^qg a`Y;ws.H4(s9#.ǻ-Q|./+W9x۾w7xI$I$ׯ^Wׯ@޽^c1RcB˗.\r0ɒjQ9sbYvW%+t8^Y bʒ>!sԒII"I&}oANE9a u+qF7B++qU«z*{^AZCOxx^ރ!<0??~?O>ߐ?k1x?{?@w!X0~ǿ0/xN qlB39s#R²jhz_7?:(Ugn ܼo<򷛴a!R#H"?6= ~ܸ'b""""""m"QuUM<3/[ϬD)%l[mwqwwvI[mJꪪ݈̻ڪہѪeAm..RS3wNDFDFefnUU[[z*LdIT^fflH339\<Wp"".`H˥|qƸecN:t8򑊇4!iVUƩWNiMO\.@P4)y*fUJK1Ǐ; -B39s# KBBl 8 C#I}%~vm7ίf?iOG_UZ<-~ffQܾs뿆yVO1On4wsU\=\u_y|W--|fi2n6} GUw,M5Տ[,7.Q !ls46:p'o~;mWzߛw[=kܾ7yŭm/o7nٽW|y=65 /Bu_;9/__^l:1~+>G x_Gayz+%1]oIk{Ǻuy_Nx:nG-LJ#l<+{hœ[/G]wC[ok>5Swlr燃6[ܑWw5}w>~7%r qkſ@Kԟ~rT)p?twm 4$ @WLIӦ$1p T$L3L02%o?G ,,1 lZk%l`-ԂCO{Hm%6m[l6ڌc*1jI$d%1 IWy3T%ۨdq wwi$J%wwwwwwoQEP)JRʪEQDDUeQ5UR&eZI]D$s ؈ݙ̪&vrff""6y]IR LFEH%L6A3))|HBA0$ +;qEyUxS0O òJ-KE]M}IK6Z]u]˃9NLx|3ɝ/~׼zx{x^/aރF תOժx<ҿF~@w<?{?@w~xg_yjk3yf[k{(PBA窾cz9Oy^<?҇ay^o|?Opy<?`??xx^gElB ()"T|߽]uD~u<]gM{]fv:+e (PHQE?~}uO3~wлu~j$ ["Yn*dmQUwv-mU$I*&؈̻Ȉݻ&feKI<ۻEUUU[{3332dLS533uv-@%mw<& " OwF|`϶@s eqz _׮Ndc 053X5PU ۷n9ۡ=ӿ!'>W=&А۶qg=5綹N{_i!^81 A'~T`'o(A$]kcvD:B;Qm $}o5v۞:vg̏Qz`y?: rN:X` s}91ӧNyIK oc:tN< 뮖cD6I&I8U$J̪*m""*%IUU$I*wdLw39P""""'wl]dͻE݈ݙ˺ۻ̡UUUA؈3;2D"*kwwwwwwwwv`v\Ko3$ K$HJԝߜ &mPK0S0ANȣdA k!lE4߯^81uڪqòV憏U% ;뷎LxǏ8S=DDDDG޾_wh|HyAA 5%ێޚ9]u]o9\C D"H$$('B$$Wi`k u]uhCu]sϯq]4AU$RFhx~mi$mzUIDC E8ĩn""[mUURI$MLѪ}ffffDDnffeeU@;B.f[%mBI m˪ۻ͡UUUs$DDq́\A[m̐H$ . c I$Qsy& Q=S*ɫn8Tٚa(sRv;7l'+(& (t h0:s9^N./ֺu" ׯ^w8AJ;]n_Z8$:A LDz|_w}w}vӺ"GWI$IGyw⎢ڕN:tNG)I͜lz˿}Zoψ5&zʾ!E}oDCW||5E2ouxJcF׾oeBW}߂UPEu_cL/_L T)tm{e܈xu~/(Lw}|C#}0`|#$rJQUيU+#;nnQa}UUdU}Wʛגu4Q*.}o~TzΣ`u `*r6YudDa9LcmʉNt23<#OI}_Y~+~HP:Jo9 N[(FRf]#JReڻW6ի7jݛ6fPGq(1S2ə$ʓ2RTL4jR ($̩:tD\I"J1 !m33.:fI7 ]fLdzo`L?b_޾&?5Zk+YZkU ~ʦLk`d3-/_u}?tZy_}ZkK`Њ'w?f'ڝE~oȋq;}Cҙ.4>Ϸ ׻DXP% 4Yݵ z/sKu]7!ӝ Ų{שwSJKզ^?MEmZ-;QhZ,Qhj)QhfEѦW-[ldO܄?sZXl/c`61o7W~=]GJvm&O?Iפdo2IW\:MO[U7wwP_^w*G<ݑ~o&ԛ#b6SiAEF&dzq5UwwU $>Uv]!UBURT)؇aTE8?!(T yw B$y7ve!mPeR>+3v;:[: p(Nȣuuo D[c[ĊhYSɰϓ;L;7eaZ'¿>pQ+S9֥ zQϙ>__G@~/kZ?.*?؈uobTGtwЀ1:fm/ ̖N|dcK2v|?KgeU??(߽]=?sG]v_^>C2RBr7 u&μc^y׈"<^y]k^yڻ!ڻwjFۻwvj5FB@$PA~x汊P~HT1B@:֪%y׺oz!BO"?Ј&ݶɋ-32Z|KyNoOofff:;,Ku`I4vei;Y.sGt[ޕu-ƴwn/cq Zf~{A~~PnnbG28& @""CL ;6{_9ѶѩӜUˢ\y3lͳ;;tr}kr9WSj{{L|[Kmz#b"|(Y%*ْ&mqBx I&37pt?^m ՚DS)0D?/|7{} ktt?;vҭJ|]_2s+Tz7Sce \'n_'OۦPvmtU3$GYwWj 7k[>>~>_Zŭ5KbII$G9gSf2OE33tIs_s:*I7j r|/wWXik>׃=?vBX0 j 3+~ߟ+qW7O4o;Ob_ʗaOs?wJ̫t°}]HocckO?P YwyivzYn:ufd-c0j/_;@ f\fO>06/ߠ@8wH6N;Z 3o<%nI]˄nTR̓6ۼiΙ]!?'_iK.Oy?u:Iݙ=ҙp(sr*T}G({~<+MԫfO_O>MAւb# |_.LX),ɝ\WksnWF]u]w{kuu>''3]*531&dLĖ^>wUmL7DUU$ɒH "n{mϳNhWQ OM[yE@bB@Oψ=[-?S~oA,z8u((ir]Ne&c$]ǍE~7ũKحVis3m9{pxfc˛myڸy|\,?#x5|IKYEG2mַwL$ƫR nNZ%S~%n/_**]\/c3MMi6XX3J@t. n}_OJi=PPO=;Qdn?mGLI{7QcfklҊK'w.oyd7o]ӳ.;?I2[4^,2$vl42I&k;:MoԵ33{}= ŋ{Lj%GvW.S?pB_2OslSO{:0L"TCr2|mC˫ŢЂd$:ޅ'&~~Gc2IUX1g$I$v>O󿘈ۈLJK!$D_'5wMVvuI$HCP t%eTIdˎk]mO>ܪI36D:e%~2tãmpfh{ŔSuSM1j>v};7L>N%߿Ϡ'??>xvO^~2fdWϥy.2¯Ћ&KRպKu']E,~CROÁym],+bhw?m˫-.|^nuyѢo7ozC$> EAغ򧻡%oYlj+/au<ffJWtHxoՔW˾?F%%Alxm>wuBegL&vT[ʸ>^p*ΥɒɰqI?Ү˺ZJy{*_3sf5r;YRu *Ն FkEbڊ=ïeAWyGNz_u8w].MgxZ|x}b9:/+v=G}HcKtGkNqǷ7+gk՚Qֽqwp`.zr4xy] Ws(KDHWgzyTφnG )uGiJt-L]wjvn 훟+Yd8ڭmRembkrkw\O_yvT[.n㣶}gKq?;W?ZomOծ*\n+;-|:hUw?˳:tizbK}vm~}2{we.;<_\R tܴ`?4 C.%˿?U<n6> ~=Gwd sŏ * |owoQmѣGOOZwÖn ުZz;X(}~Z_wiC{Eu.#Uxޞ|7vGy-˦~ 7όtу[)oY>|:}{oK[wG}gw.g3g au,^֯kp%}(}?3}ϵ~t_ᮜu?;GetRuS?_L16,[gj WȂ_̆c}_E}z4fӤBԼ-{-hM|/j3CJK/cM. %GvK~:>G~dvBI*8'yӃ}mu~ޣ2dRү?ϯ×z/?!J ~}?C_CߧJe^>D+ eKyAGfK;g?Y83zɿJNu ~ !럱DH0/.;3vq|3-O;*i}fuVW޷Iz{z/iÉ_??"(~nYk$ٽگ *uv۵ƭ].Ӷ$sVOUg:o~ٶ7m6謷xt,A~W'KZuóvߔgK8rMu*:\̙b\;%Ab>/_;$v:d:ez]uVɚ/~L&37 5[}x\ BKTOWl?pu*l 2^tWamzKPī_}auS]tzquc.)/)&%?َ}E_>}~V u!C0#f"""*fffgaq{Ttfk@ L.=mF!HE'?w?嫸{>/ywjtSٳ 'ǕND9KGδ1"m׈ h/P5>YA@?rDO?wwg> &?;D_eQTo~}-{%vZmSp~ē&ns|oV4F}P埄P>p> DOOW }(~e|a c11c"" pDD@ Hp+b]ݡwvؗwb]ݡwv%i]T%U UHUSU$I $8;~\oֵkZֵUS=DDEDDLCPmmm mmmII&m$mho{c{{*fʪlmm{͝~o vt{..Wzο\m`-fJ,ѡ%N$ B|f}!$ m~ѝUBܐXOo?!)8EH?uj{@ *(wڰEJu?BȱT7x%~?}oǼ%w?x5}\QI&Q{io7E2Ih$'Ls9WG<UwIGy~4z޿uU_jTݑT@>!H d4ψ{#RU|)w~W?/ꨯGOВD)T#vhw$~/X{e|'|.I3zuٷΥSa-OOt_b=?њlYyP} ZK?{͇pLcK/hI}<9Ku//eS)l3uXێL U] ~¨QP|hC?Ҕc_/OW1#|=(JUǥ6O/b;]r GȺ|릮+*Tq{qTf5 :˔a}WaE&d1D :ʪBݫ⼬R(HdLȠE!JMYijX̳RR3m,`k aCm-r!1! d1aEJ\`do؎3Crڮt62lcx=|&o*y A4J[LXSUzAt(EB(nv]PZ%?~ܾ%N:ΓWFs8{ԓR ෯<>8Zv4*H‡w Z}dC*O)| I'z͟|Ϡ4 D^pe )(Oww|nXX YAusghT^'楲f K1q4Ha= vjc Q6A~r TEP#mc/ivPlU(cF{I_z}z7}UKgV}>0}NH>,s س2J5_t#1I 3p)4[ qO.Ӽ~9[1H~HzϹISA~4~5UvjuWi~Fr$O{GoNDRvy/^sGfV ODHf54a iEzX|0h6Z-3RR<~CI蕣V$ۢɴfi]7QM+Eҝ/ڍh0UEOf%;歭jcp:WNbk[^S^Ǭp]tY-X1bV1,6wu޺63vvꂼ+ܞޕ`[Sdi^:1\9Ym+ec1uy^Ww15I6 ֺ9)oMi-%XC5ffbSdis˔Q-8 p):5'RMjJժܴllͤp51iT5Tv vѫmSVZpu\P..Gn\0{gBf^Ml:NҦ6W\"MhL+EcX]j;i]ys6+bM#Ij[uvɕk&j4+EO+H69r%]rF6ÜjsTC83Xr;]QֶVT[RؕM+5n5y ۳vwivݑDF9:3컷L0Sbwq6'uss\׏%ye=m^;j˕61ɜ6j˼rRvҨwU諶n뻓Wy.C+' Sv;݋r9T3$͝#TpbqTS:q^9͙mQi5GZ綹sW w&\W5veԦD#t-ms۬r+3(Il]-^vwSQOknvfj-3j뻴7syqyvA^uC쫑엽җwn3#W&88C\vL_{ه*Jtm(>7Mqmf+YbzE;iJ/GI7#ҹ8PI/;#`9k}hHgYQ6 K4rXWYq9`㓊,dl\.*%;) (-HBW2ٰCN VJOmDBɑl@sRɲlQ"!s1sd?AK8E6 f*YJʪXJڊ1L5CP3T.wG5D60KN`Н 골'QN(tR'kt14& Z۠^2$$$8Q͍5DvLrv7DtD$dwQTdauNr‰v#5myoFE>ɡ(_ )7\O 8c%݈`ҊtɶG+Kmp,v*DHSeɁ yro҇p@@͋dasw4mA0BE;Ҵ:XKM2(sNmv@ysAfG Ѡ)J7 /kaz.;s-5G˺j4I t/*a%<#.kfQk{*ZyҀG v2߻Ex!& 7M&FI.&.$V {`GJx['x).\ $HtI:cg+1>E @<"^}.[Q>N.hأDs1=yVyqP"`@Y( Jh2<ɐ{ۙr`YI&j8 a@Q-CQ E <iA$3A ؎^5Ho I D ) h]HN d[ cT.u^Pf[=%$qWrDFܨR{AQT"4Ւj<'H6Η}DCU#T/~u{"Gg%?r_;bp,'jU O[*1UNd7ƤuȖʛBfMڴEEmZV6KYUcYV\԰_#hGΫ4o}>n~|yU󇌓C2*pvFy^j^?3,3&}}JSns/K<p컴Ӱ߶9Q󯱣P*X5V (!&(M%[;l=8]]8Iup/Γn1-vμ':(bR'dMJ w\H]t~Cl !rҴ:Қu㲺:"eqFD9 d&P"towmy{myY<Py8&ͯ"l=AMppNbb{+aDj˦ 0)*E$`4M&쬱(!yM,;ީrzt"FH~Z`{]Ĉ}7>DNQM$~zK$QmS~5S]yOR/:JSS LK=='kT5*S>?# rJeL=Q|Ō}դ9L5i*rۮA|+#}:|?{/1%UŸ*"rR@9QOE_{p~QyO2s?Y1`_le:G'—|w=kOWXNidLA_>~t뮶g49uWTc&P$["2g*YyH'ÐQTXX?9K7UKŪh#|w!Nw0ƨ'uWӽqG&QA: ĈDƙHr 6ȴ(<ܶ/,dg9l;aD7 PX|)Emh4mKihI[&,SgTϊz*#]7H]ص͵W<4 Ԁbru@x5rBD9fmz+rl" ތ` 0s~*^JE}|cﯨ$=`E -_WT8o%"CA=zеDnAYB 0X=]w4>׎D8^1fm"Ljmt6i47.ͨ2&0% 2dCkBcy xMmo%Ai? ֓h]QlM' ^teԻ"j2UrvJ%  5Jcd/۠ǍfdsD;0 Jpӎ7_`'I اxJdG=*UPU2ڋiq?Rt%1cI%)JI%)JRIJRRQ*J#ID`(%+e)$)$D%)Jl ҒRS$IJIJ&I&ělI$$ɔ+lْ{5,=|>wTnQ5비,rNiĮV̵M)MYHHA-Nt|)eJ>7;X^B $-S!Ln4.-((CTH܁&^B;D 5-l£j|k^J6sઅ:3KnxR/UNwks];&+9xHQM6 9U"d@~nDaѧ>gwu&wv"l8Pm$ZKBC)obM1$\! "±290<|d*^*5a1Z(:9J2;i4o$ F Y@Q17n4ݲ4A*t\y@X껺s+}kN\Rw$IUFBAj֢lc#T塩染GqkS_ch3w#w\u'%}}II]= GuJ?!jQ=,< =Uc]e}dk2J&zO{澣RGZ͂5D/_ι.ib?F)hdԟTU[[Օv0HH;m"95SRi~$f'`l4uCw7O>{B:gQ"\1E~T;92k^R$m6͹dj{ji-x85*.UJª`**ɗZSsf NR7Wn4;scM\qv7nveb5tۚ[vdž(uyXڶ.3-l6lYj4*Vʘ5+QIl5TshFe. יNSwCi=8*^xUUm6jJ$M6*𜐇dwy]rmwSRJ+\{']"'r/_[(NshlzOg"4֧1gc+slʙvku\n9p\CQ&)pA ujvە[ٵKithJX$,$іmwl^=])PeV\vhвfRNތbjb6&W`JGe;/iH.TeRڕmxClބSxʜ%<ǦlVjUR'I)/'T_+H5p[`^ڵC{5 TmPKu=w_1 ư3c1%c_EّF/v2>%z.V LY64kZڸʘQ gdAtI34f3WXFI%Zdt+b\Uq/!v\E@dT"TYmU1j8frs(Cy^=N K g"Xd;9gf֥5U Շ}cp`^AQ2c0Ɍ&3 1i~o~/}nlŘ(a 4G{@q"Zk_?)r?/ۻK_'"C#C{g;JAR|ͫ{OGjGkݶurLH 2[Zm3f Q1![j3ffjc|SӵYbޔ-iU9W҇VhVRu0ڦ#T Jx#RAj +6M\i֪Ft.F)԰~{}Xm#{}ɭz=58əG*ԒO CԩҜI2x>5٧/Ğ|GbfL\rXge‹\7U:ˡ 7 pBAͥ`0aTF-R^GVrl@6@PIP-:ʧ""f4* . &h9 ; %)L]NNk8M}E]S/~gHy]t=h%%_ ʽضf/r&sbcKM5u+r0QPj6-̔(-mjj[(lT-mR8ͤRZۻ]ܥ('NruIsv'W;MkJCc r:] 5WWuҁDLA6ݻ8luuu9-" 1WIJuGL莝:m64ՓIMM;R&D22&{dW}5</4U]Ne;E?npKֽ >_=%ȧ~ִiL>ʇ ~nc쫨59F۝iMcT.eƥ9I5&j]*S*mo5/L~WTOl%O;] ЯZ^O¡S[Lј^J2W:G?aZJleEj͕(RH>1[C!P)H윑$vU,|ǽŹ&yss.Gqh*Y,XU"·o('SZ1ǧny566*br9}hҫȄ JX;T9:sRٔ)Օ3RWY/\^XKl#9Vd\k;rjiO nc+ʻ:u Q2m6;UvQGl:Nۈ٧EqTVvj0\1xwr;U\]dBb:qRv*Ê6[W``3n#0VAܱK򅦸;^UD֫R=%֣ )ϑpC WTʪ,oozqEdhY0hs\W1mb%MȍnչMks[W.m[Kka?U]5Is{_9r~|"h~GbDy]TlDp")KH(j%CQ:0k#nXf!AmUNBlT9 M)M1p*.B,˴x !8v]'] A'^oԾ] {^t<O]T5I LL %hIDh1 R*SmFVf iRLm%)/^sW]L94 .ʍΈӴt=VۓZ<<.!9x=6 L]l[5 yw%r92tC5{rtR]AZjPAJ3V=@[UPDW=J([m55FXm"Zkɚڗ*88=]Pc'v޽{2yr휕x6M]'=ueKqlW5xV*ir1Fd9KG4q`8Heʰ8T&FIL7% .yrFmȭxx*[%9Үe'^ڹj(ܱomJ1䟒H7 ߱x;5$l7I4'_uvx#yn Բ2Z(RٴmmVQ)ۦܮQ̵ft v llѶ đ143Cɪ%L)QmIHm#h jЕjvZF]QjS6xiJKF"DAٮV^'oZۡ:)м +rRߵ:%8N~#؎SSG0UY5kn9cNЇ)ua}vUAڪA <I ӕ"ZUF.uڗuOP 4 ln[wOpvC}A;>h/X+Z]Y[+cZPI;{u秞$Wj<*^\zU\4d*^{OT_'=ZJ6'0ShˊRBѳe[W QϏGPxUqi[JI]+6kYr#K,k`g&4̕Z%- Z5ZW,G ).tUN]CCQʭcZ#;9UN9#UH<4M3,қBS{!:NO?*Mq|o/+"8qŏE CKwr!Եw_jmJCjd.~Wu~J}HjSrT?Ez";)DoEjμ_?__k<%RlRjlM]5iͩ6-5laJX8n9ϪTqӄ\rat8ƴV 'p, 㓍XŒ`եp(U^2ݪI5ď)"~(UR϶SU>mF{^A]'Ӊ_RKLi4;ݩU~O'6 ǽHE+fj[{#{ErUhYhAP}~i8YYV~:iz>y~&YY^~ǓZhɦ?WYeYe[1DѩDHW{oW N3mj1M#i1dfL+4khcXŵQZ,0I>\ꡗPv|H/(dCv!׭;^" 5H=t(*# (aLJS4.SFWq'`ae7YP( 0&GP BR م<:v96[WUJ/Ye-Ywg'%D3JA\ ֣᫔UclcmPlX-lEX[i "ŭAѦmQX**5Fj(Ѷ$MEcQEbmQh(ւ-QFM$mm#dmUdTclkFUcXFXIETmIm F`^mƶ6E✜TqȞ96BZqnG Zn~0rk5Vf B Tb^b4A s!hf) Jqہ\$4*\,SqPŋchZJ+ƊTm(ƔEXЦmF66-Ij *,m6RRmd&MF%*ڍ+ZFXŭb0TͱlRmjPdJlR mSqc!fZ1jG mA˙874⁒W*]u\ҜXr.&*4f敪Y[4m$l&I(F+*rl%;:rٴ8*9);<<%qYƶWĸ2W\_-Nkָ_](wժ̪DP]8t0 @rMdp`bf,(I 6INE%Cƪ-JNR.E¸Z@G [V#ZR0nSKEƀ6Bx;' էuit<וzFH ZA>cʀz2P'Sg}{|#5\H)O#P{{SCYO֍SبJ/ŶT|e+30vpʺjut!(\]4g$WhI/^CI̥6hz>^On-s>]hv%OPu<UCImJSS k42.V2?Nru汻yZ-ҋts8h3nHd9IgSN٭+Z-ifjN3+A|r<\]ӹºӫQ<ƻcSs; %=^^Zu3GR'2_f:ڪzy6}!ud$$@@VԎro`_@( Vez}dM|w^!Uӷo:zC6abe6ĹF.Hvh˪yǓ*U=<{w>T{jғG߉KtxwyKe, 5Hڔj<>%3ez:WCWҘ ̖ɦcP(\=y˕xS9.`iL-Sq4)gWwut[Uj`c+M\NNv4xjW SbTNEUš,I$ l`6l P@`4 [S#dU449%Wu.4]B⬎]>GxJPO5H|dnڥ$SMR>bHI.NnFnGdw ilpr0m \ ibΊ˩wɜqH/̜ۗF(+vletF+qDZC&EQ$"7 s c$)MT{lӰ97l*1@v^[TkXj6QV6as4 iD+]rEfTGLtʖ \*> LE!JA#@|A$)puXFlm ɦB-GpnڊB  +ٝ47 VAC/C y–%s9}pPCA&R07E%oV]HHʼnEuIPbjAɭ-$cb*f^aMTAIDEOY/RB_N~-CJ_^ѣme_B#xꞞe~;+.ӄK1 v`JT .'8R߁2,ҵݷx8척6bckm/],g<|.q>Ѐ/(q<ƅ {7S~>AĵjlnQIci&b;6#4Ye[Zf͕ ϥtW_dL&x8R}\"5C=. 3'tuR:w_2PCɋq,+¾D|I~Q%GqSVfʙjN9Ko+t}N5Z6U ULՙ2HrI஗UhؕSKةrMmIFlmcTbI[IJѓ ƭdm,ح*͛U6m{O Q0paG P<O>wYTzȵ&^.bf)a۶ˎ95:'m|yov%ո'ՅHt?69*vs#SR%֮I2WZvqZNCFS7J8V옛3]׎늣ĺ*sJ]A¸ܧQȼA<3ESnq e B'8%G jj/RnfUDYckX*+xsD((F$ FswkZ6Xfnm-Yb[6ʓƍ{jU(Ӛ 1T.b-Zp 7Mη(f7zśoy%Y\ؼ7.\1^6XǞytBAJ&jZm4+Rʅ@()ڪ13a8{zwSٝ2[z/x/;wEWu,[܇,8RiYLk+e<ڮdiIXThݶx8ۺ v.m[ewv\K_"R-y{j\%=rW-61xxt2kfz Ê\df * 04YTUTU(T*[.h܄&h2@Ŋ]kzUt\ҼfԕyܕJekC3ڃ*-]\(Uܼ]o/ǵx{Zo_OG!%8֤_bD+f6)'/:}'y{SY iJSJFiz/νHJۓ4e5O@%~*gmm稕u@@ .hT{H=*z׹U6±!4oWfĻ(lvcJH &%`+V -/|m-cuZ=:{=RvkC(tٹvݹkpJm_|җVϖ0cuݥwxg}%;snһvۧo]TO{}OGy;>ޟW}wv/]Ƿ{>1y-8k8. xO]^|}y@SU 厦` hn8VNplx={r8 pԽ{"H6齽}_vopOy Y{Uwx/{ѵmn׷Gڍ("hk 5^NLb^^!Ŧk=GsUt[CD}xkFu˂S©UVf*au@>P)è-˯(>qk!MIUSF.M]뮋bwjtQAO%Vdzea8@wӝzЩtԠ*l(H9Pdvܚm62FhY ]xĤ 322+evw|Z(@\Vmi4f%ztBNד+R\YN7t[0;e=sNNjƍZ+цg` lㆇHkf{5:m" hiV _\hWʦhU* X@lS&a2j=;;FP.6kaZ2jGGnEqUu^GAzusln~2o_5;ĒBz4i+nKQ; 91Fc@_/yUTMUUUUUUV1c*ffbcUUUUUUUUUUUUUUUUUL׽{{2U~9rՎMDfPr yJRêvwQ2'8ዛh,Mzaf& w5"0rꑖ3f(h}ݻqCǞ 'J?UvjD b~:$@- K 9tK~?>U'_5^v޼tf7 hV032L 53+غH $I$I'zN O$"R6މ]x뿖ނ}IΞ68mxx߹@1G!bd!!P CC+&4dz=W&.ے߸vpgJ/}F='w/-dI/Xf}{LLX, eg3>rs٭$q]ww""!I+ 9tm{:輹z2Uwy &?KI׀vm7 ZKӌb#F6'vو8׵ W_9|$I$I$I$)$Iw=;|1O=n׃GѮ|q=Agw__ob+/\x5n qᯛ~{m\ۛwfa E 6<$?.x~f LI'ƞcQ˵Q9{6۱:ϳz`Q#NfosvXx<ʗI%= Sߢs3U69%d]I$Fk5|U};sƛ~uˤǣ{.ٸG Y~g!ͼ__nzy2ү::&g׹:["I{ Mk՟q^ܟtoȒOѼ1is9f>>>#33=Ӫ"}n4Ӟ1֪UUUUUU]>vۧH/j-٢o0"> w&f`37hW$8;qyq+=ۘ#1f&y,ϔ#=HoۧA'&ncsۄAݲ6k {){Pqqxނ }]=<2뫳rLS?qkӵRI-q򎆆pDBJ4l,BK`o>:y}>O^6kk͛玾^""":}'UX1M^Dt2,dI$DI$II'!} fMHe'wH0,ZR鞊&͠n]x ~̀b7nKꫲi_v~F,ϖff}~oUUUUUUUUUUUUUUUUz36r͜96r͜95TUUUUUU_M}fciןݓIӛ!'#.B^;Oǧ/>\$⾜-}UHfC۔Dzܤ|bN1c1n}DzeH}4?$>26%C0}sg_Hm~f|=evk_ϧIgqY^OK۫e(ƾ;K,}(גǮޝ:QE2I$I$I*z:RzWMSPnВl3G*l!34Q5$}WY5A~it?7ww?]O{mǗ뮺K~9;}{Ծ5~ ޽Z7nMsg1<tI}I$DDDrNMw}݊#dIs峜ݶsHNxCo_˶ݗrٟG>Cyh#+~>ׁH:|g~3>~{_g"O39qѐ! WrP<{m6aw&~Np=X_ >^TY+L58]xP240s^[eD`ya[[ŏk?5ݾN/>}}~~_iky"qJY㎞|uq˧TO?^I].߭EkGRO[<+=9k)I#%IeI,c$p؟TSԥ* #)2?^wνD>ϓhu}vL{3{y.[\cS }uՠ ^S ~:t:\P<IQE #bIX~Gnfm9BK4V43HF)Uj!u|_B+}GH\O1fJ>I_0볼(KPH@d@~`Ჯ A ͷ1e%+*撺 З$:˴rԈvJp=\c"]QqB8o3:O?þobAE Q5 EU>s||TuVd{\X ='}&Ҥ!RDj"$#JQ!"0l)f0z#OF6v>}E,5}<ӏ_oXz'n#++"VN9姙j]AETbm8s;:88ձ[nƵ5,O>ZvjMUciۡ[I ˩]0vmI+'[ȷ󝷦}98n"KBqH ,$"6Ex2F+:jc3˚'̷iycOOKlWs}~ϰ|o>JMڶfkw}~˖+81Цک3wFk:~c!Mᘯk3d^f߸d4Ik$2`ˉoF \PHbvmSPyt9/zo#[ڑ~bym[Nr7fYgl6Ka<3:xa `zVkphdzq?>Jrnm YŘY?Bze0D-Y 1"|uPĻ7|zu΋9&\N =͙²e:)D'NWSI\#UeS)1LV b+Vf\ܡ$8ɄP .477=x}߂XXُ$>l|_ jxy+2toq0՞'vkEdT7o A/nqļ&}%+Wv_ @9{Yj̹,'*KrV͆l9=2hKqaÉP=>kg) /Ç"y 6Qu`Mn(:3V!3ObQ1j!XAw, -O}y?  Ըە/>ČNYgwٱv"G YcNYNX<ݛo}9idڻdᡧGbX)hzG9D0!;`, z-FegorHKicƒ(#.UyN)Q ش/6S˲~a1“gwLVƙ >E EB>ya34MWRـ7vل`  #E%IÜ抢(n 3mA{YB F;6PSaxXr4I H$H$k3S$>Jh۔[h3Ϣ@QmĴ;\ +H$K+GtL߾>f'={@! ;Tuk1֞zu7s6xl0i n*=ϭ5+Zk7Źe9@\Z:3,OwN+@_HPDfCR}PGl J᱖`IXF$01dhnveok0,-UzV&8/m~йMl.OCeof#nڭ-yIمr=g3m,ٝGNR(}%ۂ-qtۏh]ǺnM!2\1ٝ;Z|kZ*A@~KF7ML1M/tRo3!k]7෗ )#ٵ#KܛZxwrA2ЃhmmcWab%|21?a#xV< zX8"Ȇ~GH7\4LćM % n37ACoEo#a5R!A61`3Evy KY!jSs[؀IEgu-{ߞb63cƠLa.nOssj"&et&qcE (s<Ƃp *9ۣØb9+sek5\m QLWV{+ǖM}{}PCʸb7(0TC1DH< ǎd˒{ _-zL 4>.yZ}:9; U[G Vozkc lr q~oNC7O`d t= 7s(}ɭ#k04YHg]VC-&Vx-)Mo>XߖށdME5 pbFA\Rb\ "gl8^{giAع4ęoAbX8_*$1 XܘB C5_X_rF _=6^Vl>.# 0պHLwayA-a¿mۢKNWa)HDž!0,Ioh"f5|ѱ瓻g1LM< )\/:LA*=41Xkr&$hً3;ޙKC cy;NMΝ fr{ltk*Q# ǒsab[ %y|>1m]B h.Pi& yöp ޱx 0iC`6Cp=f>.0-|rNI*_ĵq<ޮT?F]dd^Cj3.X>ɬ 8p[)78՘;(c- ` |{$Рo3:=V01T#1x^QJ_4eάuD6{ƨAT\n60.O,E!{SKWMmBXڟ]y^[vYqb];[0׆k( L]?o|w,4Vk4/3iMdlA6%X@'wa״ HCPx.$\XXp)rOmP\eߏâ񏽽y=B?Y9Ei?ghb2!|oW&'sK8sc|B%Bl26\r-B3:gs'&uy.C%I$Yǐ7b݂庝ϡ띶;Hnbv@noYeǯ@9I~ȝ{W SDHi&{RO#Bb>񢷫Kr~ w' %̒Ab6m9\> Hoy#&mٸH\$<(X[@I'lK%$ lɄxjf9)М~@9qTQgjQ^ꨒV{>enD}͞w6ʔHQr>,Rbͭ>b~,&7o:;k`<8n޸=R3m>Ehs ZֵZ;q5C~UQUPI$i>m=6.ݠ4Z 52haiax\0 q8p@"rvMVG t!d5.wsW|Knܫw΍ا\3aTy 0ψW77-w@ ]K Gz6b¢"TARI8i}7E3{L7'(Ӄ ↏y {-oh`#Mvpl:)r>OvW z2fT&y`ˉb xkyW 1#n~inQ. &mEK@ ^@sglٸf1 4{-j9\W߅>@fg@ `xPAqGL3;E#d%u?7{OQE(wy}A:z\WyaQD_$$q!s;>8E31SI \w<3p>x*ۻ<.۳ :CxZI # %cja7Y/*#Fݒ!'dt"(hvpFV:&Q &(l-e3N1{hm1Z$l`!HB l l(vYMZ P$ }I+{GS"5P*)-k[,/_w) IC|5Yr& \G8ڃX_b9 Ф`r52,C <'Wf)é]%;O3/Rvo'ꏘO0VUb@kz؎ałmd@&m#x."C<k(p@H}g+Nz\ RnzaHxC9El˪M9P+bbٵP/N$|㉂ЮjT:wH:ˤP#R(. $H4||b|JH08iK&hR$$aClHnLddսy7L>2 C?c (t}FJ=HP}vne J " TM|{ߴJ~O<>Sapzr$K }=J@J2F_C=G˞w5^@dNzxx!E,>e_`8Y'T@1G7z - :28 OKݖSG٧16}fCOsoJ! ‚B0o\Z@ v18T~w6+~R PI CpqqRX>pt[ٕ6QTTQ PPIg07ʝzx4,pA|]}(Af^0aeBI>|pZϗ]eoE3k6,].G̳.4t x woQ0irY۶aR|~9}㋇ys@mw{=NF\vFIR?s_^S~~䢫A;iZDZ!{k$v#`Zzlyȋm4 3OOcV_c|yJӌِ#L8!Ƹ6>95AK )qWsS$ 6j;i)0u B*K5@aypk9_.W:h^ͬsԣލ_hE.'D |&vhz> "ش6z4@W۠D8Ca'@yή8Id9(o+į̠Y7TVLQ=P>^HXB-PnuMUw'NC[s^7{7P> uv{`i?J XMBR|Y(Mq#/Ϟ{puMN[@=w.)'o@"XA CD]:usK70B=@=q'"o$Q()B`zceat泡Pl}˝ũa|&źBt4C7oG//>7::l: zo<;MΛ'/C n|7|\\1G\{3@?:NP Ogh))>? ;'@eRFh*JBbYiBo~z ty|=s䜝1s@X.^NE?zފu]N|^_ NDp-PC#ӂ2[XdUIERAJLSTDLQB4(h5MR͉MM]TSZDCUTDP=Z]R '~YցADRA=$ɘo}6:/qy!^h->L=B&ncpՏߒqS]a n~3Aඇ<{,߾=9m|ao%.4*^|Өtђ-]\VC[2"\Ur,[o ͳA5d¦ |! NLX ܫ& 6 !4n0pK&/G&وNc*feͽ|mB!uւ<;X MYD\m|QUrUps ʤz:J73$$i%Q92Yק1g]N mp:s yַU.6- J$ *b!kkv4wh ~C2ǯDsޮͪE"j@8,?G3^A.,YH$-d 88a2gր'6)j ("Ѐ111lDUQUQ%"94GӝIBB=aJ!P-HniLS mVJ0 $A1e2 ^J5ɬuuIG4&q|݄žeQPzB;l۹}=,td* UpQ@$lʡ( CJR Rh P4.JU@)HT22BC$:IQ B&!VLaǐlNnL6VA&EOBf}Nyp'H dg 2\dxl^%p3w{88CBB8cI@``*' vNk{[CA͍z5q?&aؿG:_8F̃W }D >﷠,Qδ"Y!\g!(z:@6* ]jqDLDM1K%۹:ޚ*Q9|/<y-ق ], 8 DD,?c?Sp8_׷*uc:} Npp->Pe0}Q˒diixvPᅵ!XY"]b(9z:텉pp!HU lшF ;OaPr8O܇kYНH qBx,4ܚƗ|4me_QѮVzm%"JI(r9^L++to.NoAPkW|;d=zt.t|zS #LH9W7>[`|ԃ@טHqy-LG۽~Tۍj: '$t-,zu zuʶu 򿭃-Ri!ĤMrCSnZø_9WgNKZ! Ǘ+3sK;=x /k~͇snEj4:9BbXB֞T@S&-fAd.l娋gyC}@vct]܉~zə/r\`Y/lt諽[àDu`>}6fcDP{u2`P?o\GpjZԿGZ BaCpdx Tb灤ZZ K3x^q}xZACXE\bnΨbZ;wAPUXTpCpu'J.put1$,AMh^;Ls0i1 $@^.8,K\+Y;$5mC'Am0olL pWwW) 1Pj>7:k.Q߯ةӻÄ!0N-stJJ}q6Mdޫ(pX/A%f mY4x- <,MޔЀMe 6FFB5 'apaW_[:Ryls!KDa=(׷`m؛]ToS:I12(d Ua4XbM |Gzu:Ν:tz:,9:ū> :F-xAP"x Iu&{i:1P);J!XAVwMDž6޺$K k@U!AM$p;M*`D7^W Haq5Qn z 8Bw:I!q.5}WÀ7YUV0[@Na46畩 :HY 䐋)e) ?-5q_m!2RHI;?7# ư>q ODF̸G"R" E wG"C1GIZ16Łcm.inA `dcW}{<.(3'dJ I _Nk6k/7zr.sf_G8M#mYr<9JPBgDѰ{3a8`82ۇ@$i@_ jG`P $++Hу碟g>͝@7 aBJ+t>gڴTߛ2ߧ姉k CCBDIITd: ؐ>F\Å~ASK%p"H/y4glpY@"ɴ!rBTz`dسQj6wj׳Hd{;M `O%ӡF!/珺F .QW,V~PSp$NCSgi=s!Y6ѩ8{ 9CA@d(p-tt8 г% ̑Ht(Li`W FSl[GAɸ!Ze>tHd E0Kn*mmqDhSTJl/8=euN}}\3Vk;7 @X׵!r* lxbɉ2>Wa|;T;xN> ^!Lu_9tQ;Qx?ZmY->7*D$x$\:LS2NR⎡:@{GwhDᗸntw/L%HԱ1b\$8&̂A^sc$JbاJS W ,("-nsbCF U1˨~p'ruj$;^Gؐ G& \g67K b 0 ;TŃW]wm<ڈesJ -ig(NOtp#;c7\LU39%abȐpj"g|/d!4Rd k1{5Nmu+:5ӬN"uzh*d 75HWA(|1x{ŬQ4;D^҉f`p\95ʣmHFx9.\%媧<62dD" f KɑK~1qq@VA=[ ˅T46SRW`<`c;o 8'D4$uusgNg"-t gH Qp\1b߷b+nIuƵK_/ɳG悆X+F\if`pEjPx8OS\bM:\R^&VHLջJU2EN8.V09 ۴1a}[uS3:ϋ00U+1E8 y5P&Uɗ:j"'<Ĭt_6X9I?nm5̔WKB.* T^N1`rNwh hw_?@tE/HI:wz#'$E 11ʗxUFH6y0ݴN" }d54CdûG]awcbÛ!ca:0ql(-U>%az4v{`N; )x?86.M^= ldRf @<ɕ #nQe):qpMm˗d26l_vla iKRgbK¢+ "g,ՖXQJ3C,nGܳ(r2H^ALn1҉=}l5<6zB3}#Eү>1\N;ahdV$E@m%>3QϧcmYY@V.s4&t;` EJGZ$mǹQm:Cyw`A``|~{)a<*Q-~l1 {@)Crn&;䜔^,XߜAb*,‹ZeDd ߦ 9;L((5ӯtRtO'!!w܃sؕA/i}c8hN&VUwɋptbIơo'w8G7PI50%tS@$pn8Ll$797۳հq2AB|vt&\Ǒ3Vؤu]hKFߦ]M0@}, f7>ATA1UEf44PRSydw8UDA4ԗ1²0H")bV*VdHF)cQ\d2ʲ ˥w471lUj1:EW@e $dS.zF2l 9-E}| K|*po@CK:!*2@̗Q&D*/>6 ZHlaŶ+ۆ=K`$1QIE444M"SE)T)= F|M mςʗG$#۰IR0K1TP<55d쟔L @Qš=1:cqU\̚py`9g7ݵ]䏘JK |`,|U^4:'ꧢ%=@T8Ppany{Վ .PXh2e7~P=XwNv! K_rh]ݭF(L>+cFC83`J6)bR~/f!yWnV 2UqE%$&GU̿(#qC ..h,!An}=6QAEQQAMŌ" ("(Aux ,u CD`hz]v1BSTRU1!IP5IdXO $fwr24@Æ!aTL룠3,)=o>7zZ PZh1gC&5D!!9^~}Nr^#0hpY%0brGz"iiJ.D`@P J`hQJ@KBQR"@76MQ/ (#L ̾-1`HG^H K:tdR 2\=A87 -6(oGF'Q +^!쩢 F+ Se>AN*\'zAbyz$Ed$(1Z(R^!ݮ7G\UED?oƿAu68Xxs=n^wElmɱO"= th9K,#Y7ă$y4l˷B[L'ǐ;XM?]OF(t\.yV^qBkjI5abD@.Z Lmya80o7%vfkZhKÐ>-6 t^pmG#>.YƒZܱ})48BB,cCs0y[;cqXHH&6;tӬ ddaP -.dXB ^G1C[Md̓``!Ӧ;L dƃvh?]e/ .x;;gyT[b Kbg 8ا5Cԋ&šbJk`⃯Bn76!N)k4i# )=I:q!V%y 1 Dz{h6" d2uLuR OjmLÈvcn:7M)I Ck1@`@pQq#IiEp[a@BX'KMuդ$T3 S{[jzVDfX3ZTͺp9 ޕc_ z}b@X Z0tg4i8AW݋ƣ>A?ŋ ;h@І-/ΈTJz02AhtF0gt)lIUEUIJO'Ip`;73֭i*`"e޼B0|B#pukS0>)zCū^yL$o ЃA2{||!N9˿9 l'xܽ ?>{}?g摴# UTpD%Cy'p}lB/cb#qc/a৳>}\a0: ftuP.VOGMa3L-90A ȼ >5,-k?E8ol0=qy.aapxY6*Æ#xp0Ӄ*u⡚Hw;QbB{W:s.So @Lqfty>C ڎܝ/ {J/(Ŋ,uÄ·VՁ;1YÒVNWҌ~m=W0^zNj\;d!ciZC ;11t,xkokB4!r:=t/:̊g*#*zg{]T`;F.Cv9"[h'~[ I~Kó7r;gs_!.7/p \T-E &)ipU|쌖<2XN lB3 &?I{c"Ylf˜@3Ce?P .ݾ /`e<-c(]!3C @E! "w6x3zI^as> oBƛݱ=dolVXA78nV!my}﫦ruX*:7ΚHR;!`R,Zm#"I$IdkMp.m6fkha.4wվSp9ߕ'H&HBBOmP:~,uDqB x{rY2p͉U*4J~ΎU+|ΐ.D;CF׹`8zzNN1ЕN%[}~!P2E7,S&݉X̤C][EVv1+\ ֌cNG薰n 0 +sgKu \]BB3``Xځ ҡ#B1~_]4|m9֊e%!KHz>]#}nѨ!ma"@P %ib1 MA yH%ǬJH@<г|Wt,! 8 ISf%`؉@W%'|;0{jܔ'Ӣ6(o|A a{ 䫗?w _ 3șmWЋYT%A47I#kd#AD!oǜeU^3`cNCʏQr!&f$޸.':R@:8:,;S:Y'7 0V@.L4l 6M;EPL_`n8NqttStu=$.h)`m@ of:ύ8$ \FmҢ}`jJ, w4|7aD8A8@Ay1w=l=װ`_rrCl= M CGu%&gq S-}Ogd|Vu{:U]3e\,Q/Sc6ݶL 8p&yhlXQ~tID p7 /$ V (X(xd㨔Ph2o`5%'h'_Tԧhd^HVfoAy1A%\ pЌ2&S)*8(&1Sڄ fn!0U| GB6bWHpAHXrtb`R>3RdC=0y\!o8yC4&@$)t)Hp 0dMj={DnJ(8 EC^}; ߷MN{ܭ 3ְFg.K.9#3 v5™0Gfhka͍v#G>yis^<"p/Y;0]/: !4.eݎk~B:[7V.~]L=a@٢$ ǦTnQjofY]ԯ;vT ֻmJ]2vI$mC=pcT1B^Kĸ@0_1NrkxIdf b# &oIۘEI{*s,(LS?`w䃐* 1 E&:Q@Kt[ӘfO/m,臚rw!]za} vN%(nVjM4K=INwum W)x;U vз\%3t(b'666lѐևRjҜ1%3woS@q83[DIF]JE̦ ,?TmW'wfDb'#`tqDsT,1"bEF"eC$_~D(MX=ô&U7Mj W ӂB"9[!Άtp|x|_͹16 )-4[8Z^ã=Чv!HH G7y3uCo7.ZAF~ly{>SPE–=o@:TQzl@3{iTIBjrI'l:,+L( WK65~J#,!ϨAw9 =̖o~:Zf`2%!JM䄁ѶC? O\Dwa (yɡ!*]u򽑊'[K<]FP?S-RIlK*_ipc2C%8 gsp[$xxmyɣxf[| Z vn(``A&6heNX+ 4700il,Ż&,:'su/ק:wR|^[ 0qNh`B  INYKɱb+Cvpm%k!u{A0ybGO2уD0R)yҏwԣx,*-:a UQEB8UW#yUUWY a*GGA#Hd040$:3-nB>88 *}2x:5$/\T͸ {}skm381d 4/U}hzLV pTKṁ]PPdl+Ie!A%oSHkGDg`I8904K]%8WTSz:Z"1h"nLaub ~ސ>yaJ ] #vF bm#}*tOra]CހJ<)ls$X #nq^2Հrm}m%+Ȭ=,tl-WHF.MDh2E(pr*moD19x;۹Ci6O2WG))cDcm~tlH#l`($8ĜEHHǻIJ!ĨVd$V2BI#0ḚِW1ENPޔ5Bki.Kb6Iz,ًhCO)3B1DQ!'4*B¥a* /}l\'=9̧fڀ{@ yqz}ύ}E+\0 @,]fyk6j`i& Yz93i,~&*Xjln!) }w{3G43jET" {#$",$#+2$G\q.ط# `")S DLDBPfd`r07R; |I*aw<= R%Չ~fh~}HӇ,rkn dVIYQɒ!q!$hApt2:EpX,H#$ã0 '͎@ߩzVU\>>n>qϑǃD;8zۆA_] Z^?]7.BA%DIAI[ӓkp698mgښxO(y@%_uϡHn@IҪVѫ3*ohe=q5 !$~ =` >ib- 44D faA0S5QYcITԅI@QM$-DTJIP9% 4$MPT2TCTTLE--STER4Pf,$TIJETUDMQ0+0 4KIv`x @D-#@H4SH%"R$U@%*CJR0ДQ@%!@-D%JȐ202D+ZW^.%\J*>c^pNf̡kN7 Id`ApNfTC{c/c7C.'`p.s9&w&;rC uÙ\G κlQs<Nބ6'{(a:{ פxq0'Z E_)J%>X-.1Z<;'t bl_h.˺NjrӫTRqɷ>sͱ_6# k\ 1Ld-?U ca39 BB.dI$AEQD`$dUEdkӨQ棡A 08YL#x{T2:m/NJO3v鱤0`P X ah5pQtae:UW!D\.ct4CZ r"Ov<͡W5G菔L`y, f\^x^843<c%0GxOrα-WvŷȢ>LئBeOs`v~19C$0k=!]vjtq@ah~Dgpa!0o`\sw]ȡ+ôx-1͇JGzCԃ^F GA5A،v,IDXp ,ޤ#nD"$$~>K[/wRfxV6z~V' l7_|cC@؃Cp`Eŏ}EAKbr<S)>}5צ\8p>luM90dκArukl Ju_sACAe 6B%nF$* lȗ\#ץ6 :q^f&@=Ĺ\/[źPОj]CL+]_N$w79k9t4Nu0OU~6e_oɶF(K7%;M`tGz|b˪ˣd)&=m-}sͭ}zwك viweO 1}>A 8`le*n<`Jp(x/eĝ%.xge75D(y~`!;<5-~_N߯F'm oᄄٵk!voYղR^q *TuV#$RaC3 P5Ɇc*"3NDj5@~2r1S hNE5_&eUUUv=˖1{Iݟg{zr0s(h^=O3T!gY4\BTpKe N{`n,#?]~} `$Oީٙ$̒*nBaWŕI 6@$B'VԬ~6p>Ba2%zK"^ǒ>Om>pOҢ4OE͈l+FoAu +! p \fKPfup2a@`: ?NXLGE_qt^Pi>CR?#k|~5`?>o ~f:fjEs~K#!YsÐݙI@榬MTSp:7Hu-`*8#7^,t\\f ! 4:6>6Pމ pm;Y!?^ozh'H俑KWX5E)UZW `?OluCNϑc h!0"=#;N͛"ކ'664t:h8I !'rm-qs{".yI4.FpfH5Oj՚a 6"-sb%H&݉J̸Hs=4Y + -##(@:p$A+48l14g㏯<9-&AY.Orq Mi38({p=HZӄ ŅH#Bl\zB1:=O !RbLZ7k }50EMA'b"mӔiZUB-!b#CC3j 4:7U 6: ,l.@s4.lY$b"=%D9>v­:##&v!C7g.Urvֵ7(rQr&F㇁`ewC%Gz=]e 3T"g76\iC7Csd充ifDQ!lޘD0C:+H@?{%yC.3F< ɒ<+o&R⊍P$.;X~f2 wl&3 қ``b!XjD\Ȟs}5킘a:4CyϤ  v !˶``H"xm>90J3qf8YǨPZIlmǀkTxQ^1lËJ)ܮl90_>Bhf?vzvbV}>` =^Iv$=wQk_]!cBc'8wHX8`z=39ַ;oGR O]^tܥK" *[m傥R"!"]BЄFQB 2tb/j~9Sb 3- sn Z ɓ7K5m(;6 đ*:0-a KJq?J @LI8 9fAX ؒCfhvV4L=7qrP9oR*~עeIE& Ÿfn2U]JY< U>ԄS<,'0ew27ѷ%Ã#hQb| /k.ނQՋp;!q oZ"  FUoѡ!o ]}LZl0M?>py~snSYwykt9O۰N8op?{fU @wku?5dJ+ E;-#&C=NބN{\ɠ)7ݶF}/t?"ǵS<A\Zh]%p B{c X$Yz(&lu Kސk ]S0a<<gBg׭LMqlkϲ߃W`L=*αiHĆn} YaȮՋl\ʖ!# @LO~Y $O# <욿B7C"jGź._ v ӹ\ֶ4 McrJ nV|Omnc<Ů# o(eHHT TCh| )(4$ļ46ߏ͟W1#ONߔ %D:_CG0(ߣ;#_bPPt,kCDsuyyӹhzB}O uI2t%4^# I̜uJU]&Gd\HleMuX-]lc}OCy[%^o[ZtwO\:*Ϲu?#3ĿŖ_F7`AX—bw>/J ~G,\"'`˞ 'zHy>gb:xL{79$Oˠ m`, A_C``) 9.#JTSHEJIv Fq3a$$J5{UI*1c3334E{UUUUUUUUUWtѽ'0I UUUUUUUXOU1wUUU{ER;Z^*񈈊'^I&%]zfp URxF֕Yfû""!"""""""""""""!ٙC4DDDC|ۼl{MluJ(U4 LӻzP{̮.zffwww^|NpiVKmUSvIfdjxJzcXXc,Q{UUU&W!Y ,|u޸ҠL x)<5f UT`aȑ,k`0B(@pM:FUId JH@O|M5vw4@;8mp^w']yVȜr\ 5I$.ix{ (XP+ zPQ`!&() hJR&@yo:"F( "&&1^8Xj 0?M]s0`Ds~O￳wmwwy`Ko$nwwmvUccvII6vlI$슲DV$IdmI$Ȓm$EAc#T%cgG&Dݶmmmߺdb3 _ۇǹ$mV"FB;YSeV$$vER%B&dUBEE@qEUHʊl ʪ^{}nmmmo * U D^yzO <1]bɱ!M%s-39[CYO'ywF:I  ^Qz'I.fM13m8hA9dzjB7|S|&$^0ڔZk{>펿B'e!}ڟwYM{@83=+ߣ*>xl;}_؏RX{i{sC$pImo`A*Z;7wOV(wia6C|{2]a z,_FgoO.=΁yQ!R_WuiuM=йPU]{m=]bvsO4 `..+Ѭl RB<+Fnӝ/~62`ǿO»hsȌ zi|y']Umu[@-aǎm9>]֛y#KA>C ٳ9 D6ǾȷrYtןdFLϟm70pF2ti@$J+$əa#%׿n*>mA$L=>=jޘzNqc߾mj:Jd)^ ䷽֫ݯo]\s;-{=N;LXu+s۸d_Ի` (I0ao̰;&~Q`# d)ETBQUL$ %Oݲߟ( mHAb2A& )$"MRW%OWJ(KjcȒQu=?I6x0I$L$Lz%>cei9ZXȭEBtHU 0? ], Ȉ`b)P)J/Xt2y$d!)"gz;[bEs EMe}b̙:!iJi,TRAcrCV"@Ƿ;gr:smDwp323s3:^omѮCB`D; \&GrTW%.!xg&N^/;C)U}߭JR”, o7zv{;؛lCgb6/;tNs8'^6Jt JR$}R$a,N1'C-md{\/j)*}N8o ;U.tNTzV6Bee)8T2mK08@ȃfiL#7M$abAµ mٴ~@'=c7mKϯbBy.?~V6M~X0qÈ$lR&^E1^jT}EwJg<{r ˗-},Π\=ȁӯZ͛4˳ͷgo.|QҪ/lʜftB;^Ja 0&6MĶ+vǑ$^L<3"y>ޖNbUmUUET\9 BPEz!`Mrn@3!_by o*^+I㳻gOD 2ڐU|-E$!;@ yyV<@8}yFp{cE}e(|y}YGBB~wnyu:6,6ګރe׽8ujx`!vsgERBM{Y,߬$;VC= nvǃE!!,Z״ Ia)1" ?F)1:;8|QUU5M,I"U&C?V_8rD̬^ +!w1i! sCiԲMK! #HF1QEQE^*17djtN;@׷J։lc1)C q-HU  '׻fffdffkOeYF*j uv,ibܤ R30 !cz[7%pq*p j?K7oˌvBg:4t4Rtz`}%a]_oqÑM_^w/?^tJ*m2 ք$"S,`̓ /C~O'{yEP}.*kA)Fgմd8ן:AFkϋ>FUn7^7Q~9 kk~ٹSNJGbmP(LPD#~`K--1](|6mЄd/8ӯ ۰ _$z$HK!&MG!@Og쭑UQ*WN PP$JW>ZUUW?vȠ DS0.(Û&0a G2ye@nmAOZ4G^TzcfxþɼI2Nt4̋W֚ bq7-{g3wl#c7Pz NEzMMH$~cwYek-}݋q o_WkݛLU25Lcӳy򈈈.p r[EL\\[vh\4Or7_հnK&,6 |Cɐ70@tCޣ/33|"- ܁jB(jM/>ʍiC#H:REv{bfgD˶'R3 KDawzI#G H}-q9m]݌fZy?uuΝ#5UxG]g?oyױ94rs~"ϰqM8cY磩B_7RJ|wfƏkGˇԪP}æYcfffz>xrQQQr vdfFd9 !bbb;}4Uo~ >5UUF ݿ -&pìzI$I$I0~FX@bY3ETHaD0E RH ۢ/ϯKuhnώ|Anv}CkmL8حm<z;[Ulf^3^V>q+ A^IOiIvcMi(C;;Lx6 kZ9ˀLI@$ `O0S:I̹>\ffff=[Z%H2?cؤSݺ+cG+dQ[ZǙGϫo#3WJx /ϰYX[C0ߝͶ@L C4`?jZD|?çc)ngϼ"'ADou; 2L,$6z f!S[ww*}ېKS"& s7 C0ө=eH?6zf;^zKb# QDOp Wy#ag_mO󓫇66A2Rpz ?} M\÷$ۺઉ4|jνd$ň`! EvH8O~m #?56Xy@z96Es*]ÿ <0>J2G(X ק%=6~~1C:L1;GFlabXıW|Qk_0EEUN!ĥ_ןn'}wmծtk8,vBrHg7:C[$a&'zoK|SW}0? _3nVrfL|i}X͔3׹?A֞E~P P%[pnT,3\s^1FI  7fv_Df5553}R^211 C4$l $Od؏A-_͌*foAwe3eY" h9RQ-Qae>f' :_y6K}"*]":{$/:>œ_GI\Q%6 M@L tj[xLu 0 TzK! <*%Ub+uR`kK B^W @=f.gea~ob+▸f%1w1}dI:RD8i=Si'X?RP _9A_T~] Y潅EDDDDh&@2 "W푀.48œu4c%FBux"@T܉ #>xŷ9ӐSH`M~:COztH.9'ADByf`|{,`()@1M"E0'i?ѷX o_~>Gd<>|E?LJ?yOM:)^wVMӈ붊7a= KDGʹ9=TKGp|xIB=]fEPA1ITQAD)&<\5_;ϔ>z'ߞMWm/ݾO@{kǁأ =Eg0O, $b-+wdznq|3DFWjm1k71ښ-l`O8VSVz?$nIhBǨ:W"2KMSf3C FB g|{y6\z|̹d$\ɀkssN}0U0N\4Q #$~LgR}Saa04za>пo}qS>N|Vjʿ;H|m-7xhU8O{ѳN@@SލcC A˸mwtO;Z.٧>tL{ o9h`g 6BDhD7+x~s±;nD1x޴a"%Ɪ3KbZn*(8f B edy`DA .2 OIX+~q0ڮyfHm"cܿzԟJx] .~~˼*j|# ~L ,'fz$D@X Ci?3O?J|%f7C0R\q9 _XwO_'m7eC:u25 6ki¹K *[ *W1$M4MPPQER }s'~Mߏ~S'V޺뙚N\вbH&g»=k>OTk5R꿴s"+_UF맪v]_ V3Vzɱy||爾ف2ak[ff ȈLH!T 2 OAnNz4(ZC@0B2PEg F#P3~mQ__}Qml{{iAV^zX;̷XֻW#Wγ7/[R8/%@!gP@rN7p0$V$s{IC//nڹKG6;Nu>ۢUVB]qq1~w}N}o~O9pV8̄:-ĄJT/.0m /x_q5pE@PQI|[Ηs!@aےS`^X < v,(~??6ON9B c!V9[ǖXP0X`Q@Xလk%ujVS*ϫ>q"X^ǑL|)“G F-'ߴ@^C_{0EDM7DB (W$q Xs=əPsϹ 9s3訲N}o?WkYN46 =8h`>n?:ΦХOZ7O]r῟;"krڕsXS ""\v~n­@}-W^XfsG_+ݯ/78R@Sg)?sh՘W67Y  >XRpMJ3~BC'\e#[((BH|w@  S$",IKUQv5ԣiु< rp|6 `|{Ҁrw;O)>|Q<0E<?WO<ֲ(Vu y;! $X9GGZ f#, JɂdJ3d?e섀w?<[_`r튄  ]`D _aۉt>=`с|`vab:9}8}d%&~g LyúG!NIGϺTAX>WO]>oVbNq8$+ܧye{O eSSd( %_tm" "p(}+|R#4_+wn4pLI@L3O F,Xʳ‚7v}[Ka+/Oك+u{iMkc{!#gVϙSEG_mTuMw׺wȋ4|49ǃ_$4 ݞ=UNJȥma:4c>d:h_؝Ë~x7ٓӶ68sD*T,kk]iZHYO]QWYV *-=ՈO QHԊ˫X%رh++>}u:oP}]0is_V3CxVpnVlչV6tuV5xvպ7*i.O;mFzc]p_dή&Url{+?>5bkM9#GE -mPuǩ# !h;@!j`i纽?۽EHK|͞c?8YοhGzqy~W0v:ĕ8'^^_b:ب=n$F3e֤^]jR7Whڢh&(?WtQE~l$]kwycւoC4`tm#2@1 jrT |ұ8`KPLsgϪif"~$Cg/y%SiYy.$+IƵ|f֣~+X [ؗqJ*ԋHTPC•B)"[2Лonz-j.t;`R+ d_ͨƪY1vs*ha?>4XHRCȳr(*JU2 !2 Ƈbis,_&+ywTWl\!kmrT?'82z1go;{"n76,:ł!Jσ_oZd(|vrd)5uF\ʆ1m:w \^XT џx|Cܰ{VNnk5\:9Xbl_ [Z'a`|79ab.B9Z=]o=v :It F%IbC 6ׁ[ԃ/?w?o?O}}/mo @^V,-7z@u0 G adܭp0s+tbox|?'GjLe{<#>N~ݍ.v=Ymp&ÔT+EQB%0$vDuX8^y'azd7ޖC@/X/`i"2Cn0A@6pr`pWLS1TP`=`2ɶ. >=A\sJ|e)J~Ղ\͢cd#~+'8,[Џb='6hO*y`*vQGy]!w&K6Ufȕn @]' ~EIQ۰| =~4Sl'UT*M^koMۥ@QT?0 _ dP|.+T8 0"`qp/I 9n-!AA'A@I(=yxvV}}|ד#Mn4vieDh.", n@>_Aۨ1LNc ,n|˥_̢}$, o&Z⍬… }:+!)#_CySR6\rhD[-̻˴AÆ..GPH#WUiO}8<ͧxs6OɃ^nJZ ^r +23m|@x +&'5egC#b*pk-sY~# QB(b?kGx,u`?]b-HDEjtrA rDREyz%(C y9݃d>cjߕe<$<GX" (a6a" Xp"֍*#wB]!Zo->s}T"!j. s"0 ZP<_|lό |G"1ֵ8Nf/9&Js;Q`eKM\C8(p8;_k>x4݆>%hicXc1uP^r2x-\ Kmcݵko"$e2wSHd|nPUĥRQpP-\q,@/+hJl Չ&W>_( 39 ʮH.mT7Ab!_[$()}Atr]L–;ygoiyUN׻Eso1KCЬX;{^w[܃Pя#N>jHl:b#d`SI`r*()J i)Dh? w@{ pH]xl os'9Tpy?7Ft!Ȁ@5RX7/ERh1#m5QLȎ(ҞrpP@_pA\ Jkkʏum7x{Ȭ2)==᷊ZLYu+Y`T&(Y@ƏUV; ۘˆ = &m٫6<Q bX`K.%˖%Ö%b/:?>TmW&Bb)Dqc-!X 3 | Op08BQg/aMc:J ȵ-SWUW~ JVQ:4e jZUlrWF!}zk?l0fF`(9" ;d5dpLr!_ӥ۔[>FjfgnffpTOɛQoF_ȫ]¸v^.>:8rC~ ./U7 f j`rNnzrcopsKZsƀCI 5坈ttI6!`07v @(!@2020 0@PT+H2J0FNsnstUzNV] 9ͻKu^mmYߗFt(ʍy|u2%Eӵy]"k,˚\"b 0 _8jD2_r?_(?+6t8k.{gߛwӉ~ >('olw{W<!g<p>Jz?g%b!/WPz^@iFx zٚj'xH*38#YϮ,zD`#Mp~߰F Id,+9bڛ}k $MV|}_w]^mF8ʻ|Q/Z k 5[N@UOĹ[s ~ˇM[}έӑaUT#}SRzK=SsLJDV ;=\:)'osMҗič#p_7x6/='%ni۞=^%JVe>/)ޢJ]vkt))}Hg{1OQ=݋njT=uŇ[.lNR]|79k 22f`V⡳iZၠXp\-%:_"dk0X$I!ܚ?/>e|a4g8p U $ #A'4CGr>Ncx(%q:zӤ-dG *w[]M4IZ5s]Յy-Iv8@FlCHk!!GE}(8ƛF BHp2s֍ksW'!-tR=e;McjxQ&z|X{k;z^Qta?g{C6c @eR6· m A(&,>}c/- J8G&? {7A+[ꇽ> |a0CA ZfAmXI$HȮ8D4E3gds`F? "}M{O9]g<Rp=Tf7Y5ϰ$S-7_;n!)k6'Tnu*2(:v"}^mާ#w2]j mn:73`}?FFmӬ@"@GI/jɬ*}OoemkպFŬߡԋgq2^1>ȢBމAra$ʌawj°}g$h>|*k;s{Ď@(y3'qyYrg{t|4;Lo}k]vn5aF6FBW,k9[&Xŗ>,NI 謬v/aUwh$DS>jv\﬩;כ_:T>4&4>]] ;UM(8.Zz<}6;\t.!yZo NRXsn l{hQJɴwMJ=4XRo-5Xb]N)i6hm,wJ;ͣGv.gV3;Q$ΦD¼fƚ>Z:|(R龭˿Be4A. 0[?=vEfg``{if}uVCbĢY]պSu}O[^maYH=';=~͚~OVߍ"VcsXJ~,@n>nK"4sI3y 9WD9csikG\DhlcuIPeb&se2?^~׭ J?~+czS?=% b|d4"ťqj?w~*_ɹ?W)JQ jy{S3նVp~i22h -=P ?Gys 7s J >xLYi`.u룊v֓G9(u84Շ_gklû?(y|鄷 j {%ͺY NN y_FxE?[V-#IH2J`褥pvLԤ᠂|lfv)w?ԞXZ;+ۚey~=M/3]7}gdS[4[ch^8DDEd]ܨa!f'g(PK`vGt!0D@Jn\d67[o#"@NLqcڇ wKqJQD@e ǒ8 "@>iF{~}@ <'G'[?_* >jEm!H]璃Ȯb9vT18qMzEeREQ[&C߾l4o J,X(uYH Z 3"|>ov+ }zX.d :'D.(KCWH -&(I&  1׊CxO7McWǘ=# f !?*?)L} ?I1J2!TMhvN-6>ߗ>@Buvy=0FwGo[ϯ9ۏ{rx|Ӄ~Ngd| GxJ<'}*8?*; n' 7 bճ=INBD@oCԉ"7@|6}{w?W=o_<[  \$B p*H||%(#"rU\2 hl.pNcs2WX 5G7RLF2ϓ7ЯP.7uQ_x$Aߘ$0P3!F يnqpHNp]`pM09n&‚V1 xPGҊ@`UF( @pL/OfpYf{UILR)S&;f ,& )͐7ܹp6~?^NGj;A;:lv?ӧmd }v)g%=_BG(D[c$z|}EQ6Oyo}zEtr{2B-=@^t%i~DL Jj _T*G6^0ANvP"@|cR(oHmC_NP=$ҵ&M/ZpVLmgj "6"FD1P*MhxSWO},>đh?%Am_Gb?"#J~;G oUk(e;fWJ) "WϘe Clz޺a&sPy^q:sP- l5|,ja% Pb.GE s[K :Y_Qu]va,9brO͹Ejh,Efr$׆9tU/**VE~@K"c;[=DC6˧oCb[) Z5Ll\}F+FT"Jr'5UKCIIIIAEAktH'ԙ}^0_uYn% DeqʞEw1U?QDE=+%`ȂA@5"YLXj)*䪭)p2OK!FvS懁I(pu֢fS&0qgg9_ġt2t$ CfoFU.6H{ VteflSY"S?`g#l, 1,GQTu_Ma"jB""1A`.Fׯas9?\6=~7imη`z[1X68d­ά*<φk{G vì RhBS-jv#HBx<8‹Խcz3c-0DC!x"H!īgL&ouTk`Ab6@p Gm<д<3"0F),,$c'ҒioSf,1a@aXK7}zo^I'XlTR[kBIoSj㩤 oDX! Mv M{RU[@~%ejcy]=;R!GӱgDA!fjI1tK2I4Us{XQ%lc(Xd,J;άk\ݣD+ңŠNS;H@ ϝim]鏀h888e׷l7|V WyWw헵HS=BvN;1v^I'Le70;'%Yaס*r wꃄ J3r-^BOuoe&4ٮ=4x"A"}zk$(B:I'JQ2Y7|[cy3{Oc_I ~6n  BVTΗ:z$Unh|Vlﺁ!֨wW} TL}r=>M=E>!jͽ`DI$>wMsNױ7/ө4Fn ZUUUvfc˨LkBjvsD7[T6Sn-;R\9??=쉓<,ArP P|N9>I f|3@ ٢h{_[R2I٫Œ$I*BWqӆ/UF>^}*fQt׳y{yy2;=Կ(!MWݱz/SPG`_~|ƹxs>|;jv cEk hs&fd; qEXσn{>6^\Wxv/:hd'MoO~=$Ѕe>Wj|)1n# `IDRQ!7׿OKmu7a=y00 _X8 hޫ%!^ oW{ n;1$ ~ۀz?_5scvI#'gr6J!S>ca{ wl t~*Ӏ>oO­k:77CDشBHs?3$ݷGq:d_:JOHI!=碙?oc$+ϨdHFukUv0k.codOBY=v=^xoHo88x~-!*THN֛}o}m_reK}=Zֶ?KZfax&N޷;;]NYg"`'mkmZN-*^2.)PZ?`}LU=NnkF:}Ql~QX<}:Ip$!10E3$g>99ܰ}&փT QDdKDpC6|i-Oovӗtm{375dݝy}Ѯ@$vr@<-|zEQyN@qW6mP |+@O=#(t\4sbܶjmڻR=n߇-9>XvB&ZR|Z(J2P d%bB*&Īj"o dP@I*HKNg3P`8V=ZJ^nAGmJ5^ngK$F`A(?R2B$HhJa0($ẙ@W ar.!FzU{T8a(As 3ȔI4^maY9X!tvN>܂I 2{{mk^㱊ymr^bҊ'T"UIcoRAk|dU[=XQ\Xa^|sg`Vz~wُF %G)uĝsL-s9ܑ}j -g6_aC|V1q$`M1 yԫNl@,69@B<:%y*n@xfdvu#du/{r^"C.U@d,<3/d$#$'Cŕ'. н! R(BAJ(b h&(Fh"Z@ %B7_Jo}ss& m_<|MLTv&(4U+A]]#Uӎ ;;Du m"tgC&M`dI~~7KHGߦ0%DEb'wi~Uoṑ{!~>NB1,_ ;DN'LDD{H5?^݆ ¡I7|!}owq]us!7 NUi=/+E/$9ڢIM%@"@(ѧ SaNP@dNNwmyBbj@iv}zXBPб pAfড@I>B+;8aDb ^;<@<9Sb2=}%A:D0BQ 2g 3 yvR3C /\AȒIS &hj;c$*hP}8`&ctTTF'$OMO'p0E-(#:+cʔD&"AB $(B1h=g^1czZD(QM^/ͦzDHp`-!?ȟm @P  04X)~ޠ/x̓'<x? A>d@]O;}B솸`DG# )b"BX0 ek Xb%v#lrb>4&M ܙHS_qaRJ(.٤jʪ~9Cq@ 0JV*K%9CEGuXb N Ǭ p1aC$!`Y#fkG3_vc͋NRC`,MCd6*UUUWDUhxgb tY!;7)iI% wx:aLDQc*%6krz%:= dp%tP+01 (Mjǚz%0HS@{@Q].v&!!vȰ1qFקk4U/j"!cEG08=b' D4 ]M1xc$,qz1ph&nzk 9fv)kUU: y&y˔Udn<qBh n #w. 14\p]lL"C-&A T@SDI: '!{NZXT ?@PEB rnD,ǿ@:¾G^;覐uNHT{s$S+yly|s4uAFJhCX!RRpqd'^|=^;{ 31ԂAN;lSu,3L#X ŀO=O0OX"@)Va` biD){~unhEʎ.>pרwy.^xb(SDntO;nv l. _ٗ<إ/zhdl#YZr`K\@QhTJ$ݍ60XN 6 [ \hS`vb9hgfs`!3xmzj**iE& ^s47e*#8Z%.$`c-c_qp& V,2 `<\Xt"C}tZz2U@ B Ā71IfQJfR- Q< 9D P"?ʠ8BXH#)EB #abDN~^,#1>}ER+11p3BM@qw" W{܀3+-cl*18wv<:کձU>iZHU "B6cnrfM%zlӫ$4?ÀS8x2rދ &GOC4D4JA0v†xg{K TK*24L]}@"v7;f\(Fiib@VWBNHdH ':d8@pbDA] Т~ntN0%0H;R J.iAO8tMdT5129hFޖlPz hC+QA#B<,DDPT^UŔE ^DQC0HPLJ(]!Y3 ]l噂)B7'T4DPb#>og]TCHAڞ!ؤMTB7^$ ) J@I$$$7zg ϖ61;\X8W)gUPK^AN|1X^JAPj'Op Gj=!↿tϔc}`g, /dPU/ұA T=uprx.r3;Ef#d9lU^xnvtdYYpmÔ^!;0C u!pȊ}U^/E9) 7y鮀Cq[}gHgrMF A'%y hh$)8`f2*bA8-Xb=-Z ¡^Kk`G\.~*)RBd<lD,,BFS;: ӚM)-,^cɘtrx<r3pS*nFzr@@4y4R R:H!(!"l~R5 J|ni,2͙@o0F8!Nc2LHw L6bQX?M^vavz7''`%r/q~yǯq*ҋIMA7U=>Sht0`+Lwt=RY) O; Q^>X6M@ۜ#3f'( õ2I%iaYdPbXőY Ezv إ}b~$P&/SP:O`%}*:vu`oަNKJFHb&Av2z9+IĠudҪG 9bA"*B bA8#'j*1Sja-_6t*C#Q{{NH``ϳa럎[s\>Bsr"_vLbص)ORtV"U.PFB>%@8,EǸE="vIfQB쇼)I+1.)$!`. 0l*z/!D@7J!N!^$}2Y~dZڐD~/^޼Nul-PKe1rFA{3 B1,co\e=VxD!teAtnbC%f̗[_i%/mmgpW6Pc7C !|YT"tK(f^71`0Hl nu) 9(;Ӆ6aбgzhB.jޭ-#NJc[4 XhRD% vR""k](Er5R8JЭRФ͎&BD]c0=٩]{vR! *SKB,&B(q$0DL7{38UMSm1֔?ahsUYdN)ROI[ *bF P9 @ $* " CH"!a& 9syӍF4R^ \) R`)12S>x)&2:̐ &S!hsDC%0T8`Y``\դ-$)\7 Ɯ ` QH Q@L XqQL.INuDKuq@*{lFe|aڃ$%$Im׏Slo"ҧfI땖\Pa%-Bƶ%gσ0!HDt$I4]SHAd'aۧCKJ2_ Z6$I$6uɴu vJ vQrpJG1GIS 3l )G$,4Ӈ;~'07 f_=5`Crp!F = eɖj Ӄ9}]|CB(h,BK"1&RʺAr|0?P;M>y'AtJ#Cks'z CV@3 L@} 3tM0\M00@ T3ω4*H(]Ѳ; @629[ɥp:` Q(y@ڨa;`e(ll#N ysTn$+h0eaICs&,Q ' e$P` ()z!!KJ ?/B:ŕP"`DKq~> b.!kjq ׼r܎B$6ӚX({TAL]qEQ*aJqz(Bsxh^CO,CK"{$ߓ{5 ;#7FD62!AEh(Y A"P ifj"*UR!GP1! ŋ=vs'dm0r7btT҉ &MbQY,"1SzT{=Wx6>ꪪ)(Dj/,M*D똏xO{=o׽x)+?o>O*T<9;y?`CTt f!yMz P ~h؝K<-O9# D.pbf8 #$CD͆$2X`dd&~8(q*GjE<<|`hLBd4VedXX8$L"G D\ FÆeliل $&@aHYb`b&  ;)NM02DԤVzD1L(B%8T5@J  dA!+A%)Ra.WA03) eL2 F#>Gf͆i2Bd̂B !BAc>D%c!R\`z ! Đ[mA*C"==7jz}jcn:$RA/i==*';}զeUp9P#^FJ /oݸ=:_ ]~O A{.YogQm̀{ư?_880lsxż*qPL/CF "O]0ϑ:t)]hn8vc , 0[ TZ*I d&k4ֺӎ'! J6G rs%LC`J4ʓ9aH)tqs r5I Pd anĊTfA9h B.&DDFr F)21Q 4JM5272C(P'L$1]=[RX9ъ$SCM W FRN3  s6*n8DDJR&b##4 5@PwC!B o`4H!2XCB"+fZNJ$< 0JI0Pa'qbhLȬP%"hXC0 ADPE@u歰gM1ZdDa 0D jh!'SFHw4#,cqJ̜$"X#Nk+EM *@R!)JI.G!@m]u9ۚplg b2AX݆ D8P&052@JHB̤F 8$Xup"V"]LG #3Kp$3`P<5Y4"* bA28!,҄̐Q-"A@d"'S5N.`PZȬBQ(,)n<&N$L84Pp :r31 hw454yJ8²;16 0҈Pt '=Ew464N03@8}7S"t &<6 'H Ј% H=Q҂ "`wo*M > p~;YҁAo0)WӧaC^ DnUėH]+Œ~뱦]y}ѧGm_f_'hwzb3ZWFSl9#5nپòr笵eH@TpLIIzKaA2^C׿;6o|{o֪oaK9h+C.\XefVÂg)Xf@)[ -.LCp$ef].E  2wK\b >,I.&U۾am^Yd)wIs ¦JQQ{d#Y1|N|hu{>Nu~w .v`_6ѲrwmI.x%mlvttG\ʊ{igxnQPn灇(" !ˮ 0C~3; 8arZaōV:q x`Cq0h!Ӆ1md:z[HrFʜpi3/_B)#Ifht)&l,MX3|ۻev!TVYw0!PAAJ`.b"q59:ĀH0[F .^O ^N` {$|0uH4L:1 L9x$6FfiC9An{܊BK9luؤN/0 cmў4ԳhB14mKڶng-sN\;pY!\d=:ŬR\quEďl7O`17a2tyzi9n[ѐ<p<(p0ȱ5=p}u0apsAgup C;'@tp}^ ̷͟& 'C,`ݫT[@gwggA` svz4(& ^D `TJEK.W#d2Ś8wָ@GP5('^YkΧ2 ;Rt"rLơ=vz:+,Z?p"$&$,Ɂ5o9 n+G*M0`f1Q:6c"WK#QDG=ϭ8ah 9%҇BYX挀2nXRs!w&Vds xNQAp (r7a';b@Kvhl.\Mu om ;&q'bޞcrt oI4& \mL욱H%kpྈ9,i@bK NCSÌr(N9yA \\رp6 A1оH!6;rbiwknpك@[Ze#ܛ$WЄ"J'9 :J/ʊ+="Pst)B %pZܫ,kwGsH^s|<:#::FQj;Ɔщr " HD# \LÐ4g}P\w41 ,.m!9]|3p9Aŀ%$F`;]ֵc~PbL$_n}3J@8mX;88: Av1GUr}]@椼| "0aɅ97-mr[f@J:Q.Vj,PJhH@ yvAME>l0]X Æы$@ _c4+bX"Kz@fCrJ"b)ih(UR1DĆ DIJCGU~O~~2O@ [@2hf D(XDY&Or(|@iT"D`>rj b}4 }Sf|Fuf' ] . -H [wFD(ѡѿ aaBP2E4țxmᡵDE" ~L W‹v?O_aw~K1i^_sL70 jȔ峜NQ< \óAxa#/Nƀ  -  WAhP!AbX6o H59 "6=/`n:oǛ\tc_9a.ObI`:{hLY|_jC>j+G Wp@"7MOO;D>39S"!6*_&' Wp]pT`sY{wK62 DI zj9 Rg6l!# 6m37aI^1{Aciw;% -'=RhK7"r 4_'{v8zв&he<HUpb>\Ϸþ)9{oհnxse$-0 /,@0\rcq@Zj`;\'McP؝xu5F+vD(i=׷8$yW-лpϺ]0Hѳ)K6 ̓.vc.I tz(2d]򏲋ҔGJU R8/̆:sƐ|ӫޞb)^ZDDPU$ : х x( P镰\Z%=~.s@W뿗R?$H8|xC0WF;h E!:Eǯ$ #84XWųM's03"=Y;a3YȪe H~aSb&TMpmH]1OP o8 @/}" faB sSgy ]T$E1;A;0c!ܠ.7H>B֟o1݄Q.bnE#%l$vM'sd5Ho\zUud$: Nq*Uknz \(B?M/ cBK_?E`;OH4 G38>G aKv_R;/dPAU6PICߴG:O¥<pxcKW  XRgBԦ*Rdk~>g Dmhld;| 2| BF e?/>@2/;L;LTQ=`˶n^\272))%($qP =W@""Oc yuE*P~C o!b6)>و(":fwv44TOڦt&PP!|A% ܡ!~w퀄|(DBH0tP~msy0+ 0 a(8ul4CS"8H< uwv7CG*А.GsMȆJ"SXJ)"r2Sp}Sr:SlE b84#86~! IDIi@*ot~:+Y%0L 13CJ )2y.T9{P ܅KYVE,f&}P'`YW#/}2 aS$ ה

lS\Sn cH%1\pQHa@F{VA>|z ^F'`pE`M2.u8w4a$}JĀv4 f\§0bΕ:'QA̰cp "z7BI#32j$&Y H8M9[ |p~_:iI6 >Ix xMyT0t)#~$RB@VJBh= \=R6d72O`{)QԱBqWc  "I{WREB;B{` Oww~c hƼEAM.gSO7am5jfkf-~ X3M"HA(i;QSձc>$  kelseێ-hrpyz5aɵ%KHB@PʦƈpRX0A 9:c^?cJ{R˝Fl6s6Qy@uC(;3S>r@VW k|h2&.ۃp^+IH'-P'%&8ss k>[$T. In@w *e9цNA$ x󰐅0Cʶ!ά$%H+=N(0`KUbUS-/ 1;N6ńC޽â;^ [*">4 eCRIJ'Dt)8 R40ȵAƋJHA8d)GoA@%RrYP%c":E#0K;&UO.tH#RKЗ5ȥ+4X0Ȑ \( a@d[ Q߳>.q BQz#G @gcټ!| %6{7_a0ܙnk=BOaiT RH45"HAB0A RTL41USTSD4t4=ߠ"*!M E$̪Bx&NА&H6VmJxQoÿ 62=v0PUrٔحX{m:đ I*}{.$p >B`5Fv$CbO"DCgInQR@F{U~ D(QJE|WC8t}ߓ$ лӴAIoG9qQ=Bl0H%D @zL5I¬НBd-!B)B, RĀ@L)C2ґ I2 E0 $@)$ТP5! l&@  @)T(a? Y8tgqBZH]`҈?o>v|տ9F:o×߷<8q)fQ\HQA@}*L2 "l (k)&b"~$HYQk|5t .^xlZkJ۽0"Vͬ;7ғѰXo5 t>Y2N[id" m`x["gbAC@ "x5LoƥJCz>Ғ3[A6K8%9} J J.l^/qLlBd*:$3'b )dRm^L)oɮ>O|DXu "RHFY8 өCN? {Vc{A>)!!ԀQSo'nB}#*Cr*/oV~%B"SaFIVZRl{.sYƺ% OB9{ZVRg7w }P)E:P4P<@? CPe?j , SW!r5D΁ __FB+'sI: 's ݘTP2QK (x ʁv:qoJqAwB&Uh. u)^zH||(E 氌 %.u<,D5ʯb̬<ۋO1tm< ʕj=g&LN[+6}ls%N ;\]eT0&nloE?RQH CPASHEBBqOdR/[Vo{\ (Q@ L)Ͻ?obG#))]M%, ő-I1'֒pv 7o/H8&,) .lLj9?l$ƻ.㞏j=뾤޽$QMcG +n] a Rht1\~p{eכ: #OadĭODABR P1@2 }= 2K9 J$@j&I2(cBS"9`B +qE efI.dR !YKJ!6)Rg l&Ј \. a_MBH=T,@ʾ ! 2W4S Gu[O?*;K>GkXZ)iG?)(@9#&ih4E~sPJœ!rB =oӘD'lw(y*A様s:s(tGX:^A j=5!E?P-ni+EːC !tי_3>cy{E:6D>_:\{ {vB$"ńA ?T#d cSq.ʠI":tT0 (DH4@1,_6s?T! xvzT X@ `V&dY%qnE!~7pk{j % f"%* "u÷Gͽ:&NMtQ/Iy%.L=\^CEvfā᳆ H2F$0%I R1E?#J8pe0dII:L$vM01Wa4md$@x@$ 2DDD?8~0޿KwwwfmU}O*M+5Ϩ[KʯP͞ PQg{e[qa?/lf\lw{6kYm a!J ˪x P!Lʒ@QRDQ$D(`w"qt\|#?p ЄH'!{bP,dOm-μЇAJ~b)t{v6_  )" h8N ޠTDT'[NcN:'G T|f[ s5uo'uNf;W8Jt)"rù dC"B7XV4H̡Ĺw!gn>D;_|ĨWM E *QQ4(ڇ0I 8%eR L NL^ A,ahV:~_\TC*HW=UP$Q)VPt#twkEVw6/(j*!]i;#jy?0Zrf'\s*F֯z ||yaCA!E 3msB`UU=OczGsc,""""""@Q g{3 { \` $ &EX¡2EGDG?2>(GO`MםX{n[t2\Xy`8Pb(i6`Zi ` 1IbCL/i? l 2 Pwnlsf;Cꓓ'3[nyI@)1ͺ9@T>XZSBNo$=(C `!BD U * !Ib V,Ap)0%JVP`!(80M+ $sT1Swj0z RϠ:w@|+q 4;pɤbnB,`/D P pxzULit ŸŠ-d01E$i1HZhh&`0ʹK"5}{nC'S.`yb aAy.!EMO_)xå[fӨ"^ Nh-e^S2ZL]sMXC?^~1ߩ:!C#1 +,0rq# ɢ"pr0 Jq#F0aC`P i  L% a!pF1C`44a @`A3"`H(( iu$Ȍ0GJrH yq]SϪC@7G J?:8s۬j@,SMmw.„E>6x%\:LB; {)(J &Z ` #Lt؇~EEAv68?-!OʼnI>d1޸OBu1 ?, {W@&AQyJcAae&,-[,8l"HI6VbDUR9J`0D0d4a1 uE( !U`=0gqBg0I(`$ 67 L `BW}973>|Յ"#ق2x?FQTFL^{ yW%W=C[X!UAoezFN4 B3 CCZa*]@2+%{'K)=XHސHE30p㩺 zX P9@>Gu0r*0 R&0)T  ( *$\Ԃ#,$d8!yW$!' 4iH ]|?wgjYIQ4So CB@ @ǀ)R0ZO6vV)Ӧ4=Q $5GgTUu`ѓDe֑HFv801(P>"%/2}8^b{n 0f*,BI#&9 H&H$B"Q)ZvQՁn0PPr܉J)b  A*C"$JV $9!( +(d!(($@(:8 5 @1tЅ«n"ǩ=MNݚL 5܁W=yw?aH&+I R0D#DBDL̿&:!@#/ϒkǒ'˶ ~BQ9޾Pמ?/-|;{pEbNES@S%;6#ĄN~Z<ޞW)>k,ܦ?òQzRda,J: < i6v9SEPQGY Z_~ FB-2ýD=C.$%q >knlB?:Tg&ݮ[ ʵZ}YzNw[y֩၀QCIIHDz냴Ro˄KJx4k@5bǓxĢ_l C&!Mo *tg=Ogo\ODK`%d$= t=su8`]ETUTR8Jz0cxp.q0 \!`p` [szca_|ٛVN`ubP25@Aٽ@rqV8t/s8ցt:R1zC5%%`7pɱlF`)Eg 5D6+M̏DvB8F$F*$I !Gj481z/L&0v5Vү:Yc7!Q;<~ƶ0ws3FV !KE*#ɾS4TexBult6.mCs<`xy5}ɠh$Ax<$\CظwFjU"!ؠ9?!>~w5|i) ٰD ZQ]C \rHȀN`:S E()@!> s >@: >! ?0%/!#j"ℑqtMm*mI.ܣXO(L4d ݯiB){rC$(^i۟O??پAd *w@Z PQGQP\aPUPm 80}0!n 7|>BX.n=R Cv\BbZc3&(& & \% ThJ2\2H*C%rZJU󔒀 dP$8f:|HK@f $^d $)U%&jh() )Q(L0x,#) fb1aX r2X ,E UM E}$! l5P4 %LJ $( 2PHKI7$U`p`Qʩ0r2&VPu "Lɲ(% 2W*,3LrV" l,(bjI1""rh*"BfIRIB!$p(IP+$Ȉ0a% (L8-4: @;O|/pA :E<]CDTFg?"^(Y]C*pp0(4Nލ0)"=N]_^"C( LR" vϣt2O3 n@2?0 By{Qۡ=OZy}c'3 4\߼'̞>`|B@j)0'p3Q C}PbH  4d! fӐ}Q{I yC:({I+}^g)Y#{7|=!ѦQFeuf|b|)Q=#T}~ :l>GR+تz$b(F2pb D9'}DJ1S KD 4I߱3msxwz|dE$t  Dp<[(RYCTuꩃ* Eplq;`襜tu$O"wO'&~?TEWd.zxzDBvdl~,k+H70\"&g p:nNBӰ#Sl >Kt%`2DP-f2AQbX)pox# SBWbPD9:% r99>3w& ,B1T|B zDːA~zk[ fg{nLBI//Bΰ!$ᗹtJ* IH}I='5kZֵy~?a@WK`%U?mbta}jj`0SSק^1i=,#l"(GH$$ \8 h.$(0k &@`qtg1 A'!D3AD%K#ĢRE5B1HNG?~Q|^2G8וtu r1pBl9L0MɢѿΓ#eXRHa QӂABMtuԅUUPKJE((pZM:MDd_ 1-jFp7HA J(Z#( U^PA?biuSfuײn\@7@;>9G k#wM ,G0r5l$JR1Qoy Pw9,_St yױOGH`wZT,C̩hPQbRv)a2pY -fxXMѧ;@8sHٱEDs 3)RrJ@ATp2q$/]> '9Mt W 3с`|aU2 TZ DX@Rl΍{~F榮|\t!.Jʆ?0$kO 7AERkIPR)H,tB:v\t***%h!%)ijd'xxsI {I 4ICAkVq}1:X8쉀f# %`0 CcP]VR!@.3%aYP^$lS^ ʑ##P|hRr@_ijD,K 8{/^k,V$I&Y(E&L I8P 42l4E–9$($ 00E)\q!7O~ ,6] ϼD;G[cwRdFAE #SlR(zpt@UP>Eq\D<%)4;טe,/匹Wwń&A2_GE%(˃M^PM/`ɤ,wcu0|;!he3DUdcLQK4TQMTLUE3DcUU,UMQT0BTPQLQ0TRJ@EUTEQCUUUDEUTAE)@߾x^ *oUI3BЙHaƹi{nCPޗȼq+xLm0 /ᩊ(h~N 贖)x;LE|oZėRZ03Gj{t)t>opfB?xV{ 2( Zh`Au+Ǩ$!7#UUUQq0'!<#\ UEDR$|=ܐ"þELh""F6OX8RU- It8?.K Q韏q9& }cg0$$0 rfŜQ$Ak"3 N `!94 DH u %TN$c #C Th? SvuI%/1-r7bɗ?&()EP3 —t]Ya!邛k؀a˖3@4㙓[fck%KC 5k9;a!Xt9&Il)8oan` $.#Q1#vL Y8p6RouӰɏLFu;)0iɸaCȏG0OL#pCS0):5 \23%`?.ǠE(,Im$[I၆a}C֭z5ޣ.u!:xK?: z@4eYMP!u"?ҿbŤkC@$a(PvlR(>o BK"JA o6=~_[؍>eX"0,猹y!ǹ6w,c0DC HA NЁ]z Ժ"zaCw+İ/$)>KTԛ0j(%T? @v6-){h~Ϩy5DnZʦ?,Q,_L/)ITH ;Al]_T{&ʃtʷm`v.>/ 2 UiQh"@ou=i {,s $Du#e<;#sZrg`ф H! Ga|0D2]8uҿh(H %ah(H$biH JV)Z)V""((Hj )"ih&!"(B$!)hf!)bX**$ !B$` j"$0z îH$e "ГL<2l9~=J\t ܬ$,d`Ď;?~w8$_O8_;b'Not nM|ܰu&ʓ%7un { @'"XѺMLii[ 3H$Q"Bn'ӆ:tҫqjOs !U6"D7>s^C QR@N]$Dd$ EZJFW%Wh:,P""b,! &7, SːIpÃg\&%Wu&"n3DfN8e D]]~<A=KH ȄZMǁWBA)Jn94 .2d"Hul)r0)CDXf9 Z0 R ZSGء(WcI L܎h$(napw5bؘ̕3IA"fl`d1L` vH`E2!@7al1b/3R ́W<͍Ò w!餍#L l ġA0  3p1LA0`eB:A\ r1 0i `Rm@ɦ! 6Hf*! $Q4g u^6v㥁c$ !4J&8l/,2S.cBC2%ueʨ*`DQMc1ȵQ 45MplIi)`5uLfv``))JDQ2İB Q$B$HJ-!1X!`0)uӁ0,)\p7Xe0 h"±347Eb@)KO1+8@2: J(zöq t pTq|<Ǫ$**9鰱 B/˧Nݽ===&gjgA$"CwڌVr:rܹr:UUUUUUUUUg'["z(^֙$9ArBG4CL^ U|Q`lRAqol0,(t MbνeV#f9~*owQdn:?;k]ZnbU_a8ѻHJӀ& !2 #8$Ac @*02azyW<iп(p ^tuV! _{6֯9׻E) ֝__,^JH|s?<,!4Km뫙pS_3?߻%$'l(k:,﨎n7l ݙJ!@l| @k '6䉲d9#,0cQ@d@":j[ 젽L4B2DoW!['H\`(?Tѐw B1§!4@"Ɗ* ŕqtsmLFEe2 42#cqkTV`eM4eAJ (bȡIB,@B@9""a"BJ2)$+Hl*ȒJ ¨0JT b@Km4,#A(PR$ ̒J#X$.?@W w:cry0_X4ac. ]pe]fWe{=sc0㐵B2A&@zWwap  J̀ "9'2@Gx-)K(BF!>IS0&58I@+tycp8PKt&H"A H) / 3AH| '9 A'Hl f 2W\nқ Ü  {L}M>9ރL唅ebFK8 ??('P@@Q2LH 0@H = { =eTt3QBHDx9`?L,OHDP:S4:w%1B B ^hFS= @&yt{]O󂈣D ^6jwRj Dh`i=oZFP:|쥶G茌/ob臐+k'vGCO~3J%ay3QI  ;DM+޲$ E# @@};t0ώ $0b`D@Ġ&=etL@;L Xߩ"꿤Ub87"pUE>UHF`d! !u>:Ǹ?YSLSRǑ@b˶*&E)i)( XCd$2/QC:YFH=K - !)&eR)p߰1`@C@4DB!5ФJj$uo-fWZ(*iJhfjH*E$1BDUSJ(EP"LD2༑BV"R EbŃ32`u`yGEX\!@r d*v1\%qDq(3 ebOC- *"aH'M™H)) "!DX Bj@iJY0E Xe롺,E Y(a"P!%a P CaT $ʁH,D H(JڐBG ѽӱz qv ܲ 7>lO(tXAHNH{F5d S H)8.;^ J"ҁ1ĪBJ2R K%M2II ,HĕBH+22P"I-@ I$%C)%$0-~Q5SDqA)DUHJJ*L%PSB$0gSE @4T3P#30 :: H MQD! ̇S$ j.A>b?@?z!w#r %LR% (ES5,B)ҩ<ۢ[Ϲ8|ѱ̨%,9#AUTvnaF+W,(>%9?˺\AP4i@~ ]M_"$a"X) & )dhfZ"&Y d$5c-~~x`&K BD=ix3]"O ⓄMbi&B^0 |'BL@ELɈH>]!wHA)S }VX)J_ bP3+Lөɒ$>$1B A Cf$VG4 `A "8a߉d!J)CYћT ?Kw^E/Wea3s4CB& SsԝRnGAVOzDLE>!N@33ЄqvGh v2/C |5:dnP:;fQ5H p`v޳4)-S2 1$%)@QT ,H ~ç*q2$9>>;CG Pyz7Ɉ0f?H~@2!¥"EJ@"$$jRDD'j&@uՀCG @@0GL!ڠǡH4QOK*|`0C`Xdh7|_1:S/ hިBSb2% PK!D*0UT@ ,R0,<}ڇa2t 2؜/f[P8=9P|t:`a͍DHH"l)',iH*"!(( !$VRtԤ$(hh b"f3_.9Q`N63a/iR4Q SYFd籢 ǡ~4ٯu^o$۲nۭ}I#--O ÎE@Xb1{U uȘsI-9=E;`ߺ]rj$K#PD@(ʤJ1(l_N rEZO9GJne'ߵ4X9O%)vǂvcZ@4$ĂA &U^)POWuz@,:o7 {ome鵟 ؈*=몶ϰ,R0lCvv<C>#DBy@vGEz9>Ơ0T X yv* |$;6OD()H,U@r+"pv1n>èu+ROtD:kCn@1|tCҐpz=USkZxu@-yw!&Dh?߫\në|7oaDz3;!Fd뀒n'ܡk3qC'"\QB/sobh?=<~7C൬'i (@AH>>IW b G &id҆a$pL>h5[֨vDJDDJįf&+@ 29^y6df&㔥i dYUUUUQUTʆ*$K2@H$HIzA;:?bbw+$P!s(*)DFBB@T) Xf1;3קC2ôSro}gwBn9laP4DC6>ߋ^P5rJq1rJ+{_\fv?%C|_tD?Dꇹ IcF;KCЯq@ZENl~s P mO{.(>E Zx~_y>Pa :vLdĄDa$8$0!ڪ>Y,4Jtܦ]&/Vog߽& 3`њ2v̏dr9]E@?W&ǯ4G)PbE2:G03 oX2nc(D}j(Jf6vE>;?L2%,R3I(  A'=y~C3Emyw 8-eQ?eeЅÓlX,u/( b=H-L!P*r.yZ7.dB b/H"z u?* ѩ Q 4", ?oi05 "Ia|`IĤ@m4M/I$KN*7zΙ&]o WrfM$ǴQOR9 \rH0DQqQ\w6v) &s" 023wG` )r@ 2 Ehk!C$J(E2 d4 "(l2ťHP"00 @7 fV"LP1 2IY~a4 ( J)h ,0 $ÑJA `DL2F"30iL%0 "C\AW,"b @H(`BNCp %iF 9"mLfa YN `F!!JJ8 IÛ *r]PRH&@00 l s(YT2X%J p8b`B(A@T2DY14Q H`C(JgWaE4C8 M(i $52s9Rȱb2 k+c+BL `!$O1yUUUU*EUQUT212ƒp"4 M'I)aIMM'" (y%P,p!ac-#$`V@B@R92 &`biãR#)"[a p,PB$ 79AmƬ(o__pԝmm6a⽬ sG)[ {觓SC4^\e]۹ V jJ7ꤹgy9:W4&1!"LiFQ[ ~͒دE)ǕJDQDIDPPM"A@jD2ϟnPAP:WhE??!˒d#30v^Lau^ @ bF1\"$HTd0q*?xD36C*"Fd U" RfUSNlI>#QDSC_z7E=n ("i"%>x:NBl*E{MG `0d` 0JRC It7hl@/hHIӛÀ|O ~Xg>2t̀|κByʹp)001@ pCxj!&gHr'O3^^̷o$Cz,BxdcXbRȵ{k"ɇPX_9ѬCQ=넞"sՀpDք 01,bF$Mlu%%#4]1 8ą^8hf+=LB!`f7Hs@$(J2TDo3́B `R"EFidDmϗ4| Mf("^;6<_&H^ D==iV1X0$:KJIIl\Ϩ>H<@< E:4Yz(5M~jw ޗXQ=BIT i'DoBRXVQ=ā1| }v0:z4|A`r`'n[na˘ iq_:gO4` ADIUx'Buwɴc8+ Dupʨ36~"BJB=b ۩{cor!UUP =r!B9J*<M ]fS2!H`@DKJHB" ȅf \?h2s C #7ĦlpbP48$b**4E/78e4@CEjLX S3p4tt {!q= 创x;"Tq 10-R`a D1"DOp 8D\v,Z'B B=FJ=! ZB@M}oӖiV8G &BPDĉ ϚU1$  'N{9TH!Q@DPJLw4"J| <1o{#"J) *Ac!g:>\0P3lq0"p?ea Y`` %LDIƘA@bQgm'~_1><93 vQ뎊@"5"Y@P PcҍO̝'h b%"+}}H`X Z*Nc!PUq.?ʊLC"*"+pޙ=gO$C0A 6bJ3LW$!$JD(VD Y,&ii4Db0KBb&_@4OFxOIK`$H9۹BTr pNt6.ZHZ"?x@d)TQ$45LDA@BJŒ1M#BRR0#,GR8ԪQO,G<4$E,H@@RD )boN!rtNRH@ٽQܽ! lrf=wUQ~C4"(@0b4\)/.0L'XaIffFPcՁ%S@$JRPDXfmX1+DQNlP$Q)$!\ dBC T d8B;J*@b.*Zbc`SAI& b@CiÒTYdE 妙 _T>Q=ŏv.! }v58!)>p,D9T{97ޒ%wW "`@$EQ~f߄kl:/N_4cNIܡCbhJ(*@$ T4VHb@1zg0W9DAU  E(CCyާGօ%ZC^gHqנ'dS&8*b*3f^__w{"ֻ"L"2ШXs "g$ 4 0@39İÎ@&sCS(! H(də]ô0p"#S1fBtp0JD yral6lBQ?/9g'ݾz3g7'`tK^|owynN7۫OdJA%a ]^9qCM4;M@~HC{ǧl yyj<8z/?KKdwiО|lcUUUUUUUUUZß1zAyg/xȠ'o*5Zp{_$"?,\1%̶ *Ĉ2p˞ȕ'?B]Yaa+ ?"mΚ p?BE[#N&ɦH6e\z֟702hKy<66T*FMHM'Ib D˵/'Im}˩z"hN )Z@`0X7+l;k c08hV1c70HLObr/_.5zjQ`q7x.=Zަ#h(Ab6PqmsB]B/;c6 r bXS<{@)2 M%fee_rnrg\Q@S6xԵEO+842(JA7ɘ;0cnlダnK ^CID\aH ]&cph Vaya)EmI6=u@lZJIu,"mbgb=5:==XvqT }`Xp  C `@=7Nㆪ$ $[qo|8fg|gZvB!9̜obȗG5Fih.45w8v;|H u>eTQAܾ_cvуJf PjoA`{ǡ; C (j́Ӎ044 nb*UHgͬ'Px[Sa,D{]Ӊ[LavzvCqcN;XYXMvCWу*0@}!X,,~LrAں̅s5 HC\\=6O]N1Kɠ())(h }}{81rѳC"3 d E [:[EIaha%s 3= lXd w@!``@ i{8f\;JP&$TrduE2{G (=F"МNJ?lp.먝s+R~P H|ncpMV?1%$~p]`vrhPz<`.!Ei»SG 0R![B s~@e0 b m2pV!X@*8G2o ȷ"҅4@dx=d2P#Yfb?$ 45ȅc!{jnu7Uwppp`0KC!'X四w,Q AE k".jZt6Pw$0̓2dE!"  H |hCg$ZgUzaqdX. "cԆ:d<يVvǞMw'L [']t "mIyWF5`ز|fQ2-d{y[Cs7 <8;S5}g"`s6"LL׹9-q"aF^|yi.$M!y&ACDq! EW B&4ld{]jQ\ <-Q Zvs"+.x:9gVaS{A+dEyl9`;6<UT@UURRUUUUI$XZ _qfDLă2*$3DD0Y$;Cwwx.wŷ,U$A0Eqab{99s90o,Rfx<'/~}1[BI$ #9F@ \`\w9tL /6a *DICH> c(ϋuēQ|*V Pv}sts%Nx4XȝɨmX -٣S㦽젷+yw6cW H`d_ CҢ>wAN` `=:ΎDZܹ>%~?JK?g֐Vs,&'W>O_*g/pO\d1| EJA'%UnO T{ cO> |ž|G1ֵTmZO6S5U; tq<|1 ^juqFYiHRiZ`dv)0\5.i 0\[r p=3D \$P'@$@V3Ԙ/i97oUIgE wsvFf8!`R2mZ9;84ݖ*"vrQb+P}m;=I&<&vCZ#@qd * dS5]QpMX2h0Ms$( $3&P> !b\"bRU>@&:rvጝy[vW!Sg!n=}eUx1}zdֹLΔ!mw\'q7T~vh##T, /c}`M WLGb]9@"CGHRGJjC|jݛ60O.^1TIT UH' rI^r9!Tߢ >qH\J@Ɋ% ss{{G*&o6Ӄݱn@zS{5(33|t9!Zqkit/ 0p3, ,S !0:s B ސ FC ,lF ( eCx;^Q]ד2=@>p$@Qqu^i|7UV ryZUtu;W{oۏG+|·NOK /o@^>[Cȁo{BBW|* P8@``2H"̄Ȁ  fmW'3H@0I B0?/Ӄ_+1Ni~+{ĴS&5W$<%lE$6^3uPDO>]r/NS|]*w áK"i؁hoN)&"-0G4Jpl/@n*ؒ/Rul|Mrdp6}?"o%~=({y/4B<F*#Ad6ۿ_0W@A!aڏo6e" ` 8!mK(}d}A޾xTHh{UGB*!`z7 L di@v針͘SV,,"Pa#,]XaZ>;Ӥ@ AvF)lsE *6zKJG xp f<8{o\\IR$5ԀA>EX L3GSּ@/ZTj<{]=[*eՎK5T(p|H@C^KT9)nEClDֶy@T8Ćt$9_Lr'ks`/RCDarƒEVu'kZDBZxɐRJ#bDK0(As;IԮy.gPR= W(sz?VO*"Q;fuUTz xa*dJ`@`yz4-ca3C0Cq$B1a( q HXvM VaX\ P$V2,jMHG@׽zHw1;aa/(% ljfZl#B44Ax'ȝ BP[$=JaVCA1b .Bı ,h  j(HJP$JZPxꊼIAs1@ЮnkF?*mʦU\:ʦ(*8LTPPT #H!F FXF=bFRr#4q 6!Հ  6 bAkByNou+ (#T3Y =ZB%pEս.@LQ}r9n}٦B%So3ip bÊM14qV!!R|ͽQ?Fʌ(@^-#@` \m/k^~8M0&ݻ@d(HGj(]IP,1ABsتKXt8Wp'q00b(WP4]ZŃ |@ƞH"?C:Ju?*Ԝ@ayhxAKAfCd!EDJ TM*ZfxP8*P|7@,tNb͑nRl9u!:_zhhE5BSBDEURt9@K_rB6A)2⿹wtz'5G!SO]@đN}1 #z0dKlR탥'N 2']{`C%ۜ^Sct]1:#z-CMjlOeH(BޠXQ3 t0`%@# ҡ2F,+$,nl Z@55v5JД4,T@D*ttj"8fRE%a95d6db0K5Sclz!6aP W ԂU EۡF@)󈫘\7 K@LZ]PΙ }EF`:Z/%c$  I-hDhf "X~ = @iqG}~$HR&Ѽ0& BpRP IddX(jcxup`J!PԶBcuGI_)Nf,ٙFf *b*!H.` tJ J hJ#!S36]"@(&Jipu q$4XjAL\J#,"%<<)@ ɩg% ę-͇ [, &Nad&HRM tFIA "+,mb˱J4Ps@r I!a+a0̳4!%@:io|8&d,X:Ue: Hq ˣ4ηޡ8:O.n+J[Ojka7A9#Fꂀ,6B.Ð0>]w0cΌ"1-D0fO GaC,D>JFaXAt]@))KD,)I z d "a` \@Wd@t!`@u@! ɉn %RMe W2Ґ:b8hC!ၮlF"`ATښst9kA*g!?.PD9+!xVp0&LKDN'SJBR TPKCco+%%Z=wKάqqD DE [XȂGQ =RQ:]쨳+A8b'jB$"AD̐ mGOXw3!t7L4uP+!$D$ 1pz_4 K;*"Fd `c@S b m.ŭ뮑'" m1"F5%I$D#+R 풒. 89mozUSː@> `M,6ıXCgQTBL]F =Iʀ0kսfl@4SUpS8{ 3$8 HNd'^އl">z46:ZӿJvZR a=rh& 18 ޮapR((QEQEQEQERGhˀy%(|!`}n­Lq:TT :}~rJ)HBa' \i`!a`"!q*r %g'"!` Cng1]Ҙ..C@Bv%$`^F01,bԬ|nT^H(泎uQJmc; 8ozRHI1 H@&"*噅”Zsؠ\4ݶ(8HHTY%/2B8$ @H*GT:W3#L*k|\*Hi9dH9VN"P0!d3!O88zկr=|4^ tr1 Hk 1!B\`^ /ȝզCuYj広bIJwLL%28CM䎦HD=EM W409 +լژa24t'M1b:r^!hMP8&Aa͔i>SZ[%{wCH@sJ|ׄpIua޳/v KweP|4$@P1DT"n@;N2# fswKU[RFeĪA cቌ +4$Tٺ 4'Yh,DR:g>fqAl}>?7|G[IaTK!Ra0c:S EV ]du 0EDHR I)iB&)!h$VLZqlFjot?rM@J JD3BJܩN ]q~Mvh~xiId! HI 1zd1t%P`^N"Zq#^n(N9/|+T;WD@ IR]0?{~J@BD A@ PC H ,D AP@I@R1+:}`Yl?`h(0 =K٪T[(od"@שOB` E 1B&LlI$QŒ yf 'cЁтФP)DUBP 0M&PC!}98sJR B'Y @!X |=yOy BdPЁfv =#1< КqIH$,@hR$o>C-|77AP$R!nn%?(Xĭ i4D܃`(Xf&B@" RL@mNr&&K0KQĠr@Qzh P)& jOb9bBUP,>CG0FqZ`\ǐ%i-AT*gq!tO)i~Οov{yNi;jݽmΜ+{ZrR (Yt&MblD?FȍjD?rAC [|R$0Zqy{1Sl9=0d@>Lgw*' aZDbP"**UO<ᩆNu љYdI%-''HpaYd)T602JS/ et%A(LwPtBR=/@dBFCо9b06!=(8f(HxN@$@DJAaXK)(@)H d(D etSH:p!"%"zbdP ~G ڂ=!0W H!:"QDɦ$9_:$).L1԰ n4%Ģ1eՊR E`@2gt%1I< qN4;=Z#t,9K KP@ZXCPT(Fx:W00p1!}9#)ds:d :%8<@CY348/AK#&ޅ噈EYdy31 9'Jf6f@z7|}0$DnqaFcePb(LS{maC%pS5 IdF.L"!΃!0ŹM V`MR ,l/ !Ǡ,)7|]0 `@=iYIؙ +EQ44 /$:XzC @„Elֆ8ԂP`ت7 7 )F!{Nccz>8cABZ.wĦ78nauj14%ui0oo}G}y@0|@؄ D@{/B kdU`R 2@ % @"@Y$K!H4P!JB% tz>g؀ڐZX@#Hxb& $V,}n\!2}%D!"R["h@ A~C};+L _ТdR%C9DP6T d|.) H5I25ydpJ1rJ@'W,6Mxo@'Cz;+r?+AE)3?b2̤$?uCҡ ԑ PVIgA?a'm;A" $N2=_Sk޾.GMU[4s%t`%Mswr_ooY7w;ӯxy}ԭmVK{_Ym6OPDwmxuOGv$tS::;3JUN;fHw ce>4ls-ڵ`g+QoJ5cwzM"[۹]ݞxuQַw\Gv>J{sĤ(M5Pk>2}R|Ͼgt>cxLJw';pw=ǽ<ٗm;g۾}h>}7Gٕݪzz)@ ^C}Z{|=w}i_=u P>ᄒy=|< | 7}cv3P: }zZ:l@}:@ qޝTONzԧb{tT/ {ZVhfGZ< HfeEQR: ۧMhS'5'!!ZKl#cݩZ4}ܘrUUQUu9a kjNƫTݨFM]*TD+,0P‘ޱr梨2*wEfoJQu :Zdmr %ttRVQ&E2&ʑLR*]qxji$6(ʹo D@F0!&LM2hИ M0LКb06i=CSA)A @SG&d= =@4 A!Li2S O(z'mChh i'RH"4bbiG=@i hi@h2"dbSxj56ɵ 4?S mM @m@*$ 1 4&MJ~=F2hhb $<i5I$$ (dH HUI"QHI@cDD a8Ѓspj߮G;+Ut;$YU0a>?1+@ "QQ $$*BJR@tH⊝_9"zRČbiUObHhPny<#_uN7 hģgf]^_ͭ>@I#EHr AbBD(C) V"/׹_O;?fb>?ϳQ?{|C3ikeoPϔ1s䐦~&F_O AD*/EqMZ]=YÎX^2 \qx$g3yA.5Z$N"o('-bx%X\, "*}yQ $/mO'fM/H@o{uy< w_&l|!+eƎs<L݅lE"SLD>B<a0H9Z8iPrbQƅ#4X`*'0jm>\2O4pD0Z<1ppDh244Vl2-N2gHXLg|~O~o <{ACuGrp|F6P0|d{haWMAN[+UujYs'g~l {`PbuS.9jD6bvHRkWr[̪®:p}!0 2"4z1ԒaǪWM{1E0OA&AM{C0ŭls6`m4]6nUDi6î"LMTDXk 'sF U}݈1h7CIUёיNxE%*IBY"k쒓)_%q~_ /п\}[FuɫSJNꮪe4nKTCWhLUq9|7MEVqOSZc#ư8Džp?IZ_>/3E$EadWŬe ]+.J>`&{ZX<;WQs¤YfPRr.ϡ* ߆aa#~דgxrTfeoxsU+Re=8Z]9Px3Y8U:c2L0^Oxxr~_u~q+EQE;WVjիVZjիVZjիV[bwTM4K1ǏO'8w-u ܿOs9c91c1c1cݻ:s0>鹺W]vaŋ,K5,Xicghf27[]QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQF3ߟ]u]uZֵkX1c]u]u]u]kZֵc1k]uqTk3333-s32s^y?RIu׍{߾$I$Iwm̶϶۪1wqwUUU}kZUUjXֵk^*UW虙j9swws333wcXXL;g8FkW9Yww.Fk9]u]u]u{;}]yyǏy|3kN行]UULC֮_9?8Jݟ<7 ef[ت\v[s[' m4M 0 U{'YbP}nG}NªL_?sb7;oj"33*!{s9s9s9s5kZֵ鿯o~}4fktuzfie4M4M4M4M4M4M4M4M4MƵ89M4M4LM4M4M4M4M4M4m4M4M4M4M4M4M4M4M4M4뮺4M4M4M4M4M4M4M4M4KM4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4M4ׯ^zׯ^z馚iiiiiiiizzׯ^zׯ^z޽znݻv۷nݻv۷nݻv,Xb,Xbŋ,X^zׯ^zׯ^z뱌^zׯ^}3hdÄ6LΈ3F/9zׯ^뗱VŋEQFM9ٴM4M4M4M4M4M4M4M4M4M4b<윬̲Vߦ|ZW[9; \޴42pLfG`0d{+`]<$l;s+.Ly2ARjĵ)4K[H-iiUw5Ԯ^%xi`-}LfAn P3RGֳY6X+?V+kބ}qc/GdW,*9v6."àK $@,ڮOo,z8"-~jիVZjժԨ$I$Kb""!:xnwwwx91c1c1c1cߌ$:I$I/(0~:߿{0]Aٳ\y6^ڪG=ջv_wZY_fZ5L!b[#[ v+ǭUu`j\pEv}^m0ӘuUtN j.=׫7m)geTɪkX`XV)hlAPT֒[;eQD˫bVyϚɎU(nKmSMaL8"mۻeXDԑgcq~#*ttagMݙe%X<(ulζںk TFImmg_G]GEqgISۻqJGhiB[2"XIey[&i=~O_oۯ?VgZֵgzѭkZK[kUz;dQzwwuUUUUTwժf x~IoЫQXb3m($4 Teݵ/VI6:Y$YUdxïAN;URJ1ۚ׳* LhYLYvq-,Y̳}ЄlẎ=`5P\ԍ=9aܝ&1\\X|%~̛&`޽vl7 1g~ \K馛\-g{+n+Z ZBn9$]~,L';I?_]MV)=f i]T%.Ը\gm-fNSS*Grx& \cCfl㫎QQUF*c.QeRۙVڱic c@c\.ܗ]RZdmx⹩%Ln벲Pǻ UXf(͂ ol3 c% wBy «گ{+BT y\\˖۟qK3?EMxe}{ Rm!3z`=ܬ\cY,d5p "Ŭ"ytE `^fkRF{G"̅TUc`1Ί7f!*<\]٥"(em#D[UF r{bs۶2eVVzl>f; y!unÔo}S:LnT.`j$#zL15}[#eG^[^fk]вR5rYc+ǫ~՞쐑;~pJq-|fYvQ u- ٰ5ՙ-YQC36dɖGoQD<Qz7,N!zh~&ixOV9"Љ@~]g{o܆0.ON8ZJP;oRhxr 4A~S?"wS;fz][#&Դy@CMT@}4CP׺4ůGj?U*S~FMCq F]6_9#U<IO,Wz Z:.} ~wf/G(s3X6U Dzo1{)޿Sv.eQF~Mzrh# ՙ.%wO /\[,r=&QOG"Jq@u"5Sj zhc 'ɞi͸J>|/sm  E'c[q0ݴO$dĢ_9Rm1N݌}_BjLR?@EuKVm}T!)ؒ+e*~Kf FG̜r]/g0(nixYEQ ~ʅ~'wZ!NIv|]9֩G4pH:czwE_K':MYA}j9ⲥ3ZL}g{;=$L{ߪϯ+۝pvRc<5ߜ:0U׶'tgU}\w.:Ύ;u'Gt/4tW}]d ՘27DL\zK9RwXrXGg¾ 3us|ǩC֯쟮^W)w=,~~\[g;gĩ\C:\q$Sc{#|-+<>s;ӷ+:;m9f /;+X;#3" 35wxǯg]/rqW0J+~=kyǚ#q7(G8^jqQ Lo^=uϟg`tu>Ǟg_\= L F_,D<}|_}~ivWNg+_>>}oM3K'ǮqߛsM,x+OL)ʚ|-*]uG}?fku{=+ێ&UDzF~_k wv~ޜ$e˿iS]6c'"<${{qc_ǷsǫkyG֞L$X]{l-0.׿|u?74_~׌/^O=.v׎r&~7y߷8;yyO鶴o]^D:iҍ^8 &Q~c3ԷauH'8^uMvm\,:Ly|Dw$g#CѹRy^Ϸ=Nkc6*pgιy\>OPWA=k߾=Nm1ޘ|kǧ\;̿gluc]bxU<<)jU6`|u2uW[':?oxs֭cاX+x5όٝq>5y]x}gXޱwy0iKvId\ugGڸJ3j'=fΎc<^#fq̹}O;][B[^E"Y|wK/{v w=NyEs/H{H,;ڦƺ6qy(t4wwXR-/<|N>[1ѾOs=Y7p)ǿ9nZ͋/ﳫugEΛ}w3¬:.Q'1iF3ǗK:u+Eir]:2\R%e׬U\FL:Z:ZYlrϕvR3gYĔߘu㈎딑 uиO1[yS䛺Ԕ,cO1,< dmkԘ|gW5L"*C$T9(֪-Sz/X#JՑfx |Ŗzlvlyk955 ;ZEFd|MOMF\}LQy2fʨQqxJvU N(ҵњHL˥KgޫRM).qg7POiBN?:ӯkFMZ{-ǝىReS=D{7>qJ%$M]=&TLBPڋ p|]s &R{N3/rfLM֕kI;^;5Vn.ϟlH y***4(ҁ@@$BJ4R / h SQ`H?B%Y i j"P(""Blh5QmF-mEVX5V*ѭTU`J(i))QV-bԖV*ljmEV(5cX[6QVƶTEIUFڍmJBFZQ6 kbIVmmTV5TUmQh)R%ZT)J)cTQkE"mV,j mb&-I<ΐz~\AG2ReBVO\[Wx!?Uh*!Y Y i *lVpw*'KiMY TjԾ-Aͫ+W'*g٢ zk>cut~(cgO~.x˫7b?6El;s~? xI ?_XNy׹ynjq5rdi A) vqSW MӔ}yM5lJ_3/e۴8>w 4Ngݙ|=_fv*,P&~=>_!h7׏7O҇haR^$Uzܤ2N. clә#fMC31#pĺ}#1,J $‖4 P+q#>571U]YfQne:˩y &ٶhcIm6-H7 cnI^F`XfkuԮqEv(AGSf֞o47T(bmB0mAtI̱+R EU5s'RnuqCO5Nkx̆7kyǬo1\/1O:g6LE}9qۄ:ܒMY)C:Y<'|dľd]bJ3R9xRK˽g3S/Mӭ[Ä4D4"5fMf{ǧB3mM:p4ju3F_1ej>RG;vk}@zӗ75/w*VPOBPPJʵ|7Y:BN8ympo'nuҁgf9%t*W2\1ʆ)r"25$Fiuya9ezdŔzy'\hdmoZ&b8|bqs"Tu+ܹOvcwfjE6inF͏z7ޣ'rY8g[}e՜}0,s1i -nEe@$bDb!*&`:uӑ^c=^*ϏpR4mDAf⵶d̪ 33j{Zls_2vS6~ᆵSz/^xo[С٭د%/ץL~.㉆"Y|?V:Iݎ-^8xCDxxC {vjVJI@ɐ SӬ/㡭g@1Dt;HPό Ȍuգs؍Jr!D!ޫ ($`LEY<ܞoM.^KA:vG~j9^'ɏ{'Z?-GpSsBO]oOHW͂lpژvLKK`IGh׍_Q/$9yCR] ܠj`#qQO#wv&x k%3}1_rG;qIcHzQRGWݧ*[=vϴ/81@D B@E6VAEP^,t[W1C5;+0Y()5FX6(r7::*A(wgټ9q}k`*"[|_^cc:Wgy U m lb 1Idc8}M±Fی$3gk8{'Dx{⎡(P WHyH:ic~OV&LRx˲n&>eoHq}:~RN?Üݍ7wMyVpPA$x6?-/ϋZR{do5.6$5DjN_[k|8Ţ-[i껤=a8c};:~1Y&.K,}x-{dpLdfFCI߿}i?6{S0G?s kŹR{*xѤp:9`H5ַUOt K{,he2#}9,cAGÅѧɲcZԙk`dtBM!w~K`dFuhv`-u}uWQQB>7h~X;&ئ#< 8wϛO~LAO9-D&beZVWfxJklq';A \\Ӱ c)6ֻC>i(BGh,ɵ}Nq{6xnp?,3Xbǐa掱+筚6wzl D~1Z ѿ8s?Mč#0}]B8ĹS`ZFAaV|F:n;KWN`H\"j? 4ɡؓI7 Y4Ba G؆pHn96+Mb>-ؒc->&4M2'z|AC߬ w~==__] Hb5׫n&zG[NC'}1D~Y H▓po's>߶^]=hB$>LxB_o}IYk>gʧR;I* ,J{[kŭ㘊qډ@w^C`&Ypig},)O0`-b;]ZATۂ99gG:̖T3`RSe>",$"T*:)0`612BJ{x8D˃슑F3{SXfP}parx\O sS\f* fܔ^j| yۼ6'/hǣwg_|lȍg]jkv~G*x| v+P&kk3ب7Cpt|EEѭXg,y kYXb?[|ϲX~k0M5hp4OfB\j#1\eU@$A孜pۘ>KP0?$i7CIhxdߖKO=9@SE$|yla'7$1me8yGbՕlBHfF\jLa ܋( ZZjJ>&ɭr䞾BRr#?F6Ly6C9u?Sg.9-FZk,<;0x oч(O_ #21z0qzÞ)?-:V{K3W4k_]FmY GCs;g>~rh(r&+hԝբ3y7 S[VԺToCGMn[vlf8Vx׬Էg;^ǤD̓; 6͗õLb:vh$8+`?/k>U Bעz$ 令;vt )&'Yҵ^}.ק> Ggj0 zB (zfNdeP~ 8M}N;7~^d>J~NiZ&XdXT,!K_$! LڜQn{F/zD*&Cܖ3rm3a⧭(U.\w;t;\w"""&" *o}w~37mdzt-#J;$@oP wlצnFCv Ѝvrˮ"-S{WBezKWL֥w0*̄SI7!H!w:_݈PIx@յG,굷p.ׇn.#7}X;LC;x=>NYWuɕ) Hv|v#2nsC'Py*>Pz󢢊 ".93^ͤ|w:|%< JI5cn(5NID秘;4\parByI@U! Eh(Rpf a0iXn譫?†hL;3;uߦK.`,l}0Ʉ (N@;ws(Jh7MW3هo`qOFَ~wbfói|&w' d'M-:t ! if&5G,nʏɊiEt9 i;[4*exkfFخSVuD#Éã:zyޚ! p4!;4k%XdT/G V8Z ;L@Q]3?f_vv\b"FgaILr觑z= Y{wgϫ,nV XG1D*u)4Al1bac\:D;OTK$#:/xf>a"O%BBGnEm3қ˝Y&3Gx4A_vN"vgN-;Gj"rJ$C$22Q?6ld(қ33o62ݰgCIK$%0*/TY,H$k.L~kCf?i$m!߷M#1% }[θm 7ww,NJ9VFv9?>̭}xuG!P0htlM>'#4cC؈:R|65v<;ZL˃ۣiD 0,7(M-vH<3[bF =_,6G 0#ǥ&Ԝ :iLɸȶhs'z8>}q||,^f 42U2-ypghTȖG:ët,9 CT' f}9!btd;lh ˹G fX+daMu%xeOgwu7]vw* .V[f̦7;]=9~KLR[6;$#cq|瑣v"jiޗMjG(H ωE&o{7xJ̓ |>E'wLC>7}#*<;MÍM/yy-6M(]v2A>8ݙGkyJu}X6vЄvf wc gl>RHѳ]'H}~B^j6~87rbCkH|0|>Xs6)#~~|H |NOlpZ\ 2{C~ICɭ9m-ۉo' Mx27ܒIIM3Dz6;fbGpIS_ 3oSI伨lnH99GC~ r*XگGjFM —#50jPڣM3ޗhJf!O>ՌDn-9XTNBy|CV,mtmI '48 M0O!n:qpa2IeBpc#V~UR vne5> c@|2 LmS|:ɠ&D6)&ps v S8M?mh{/nXv=gS̘i-}g ٖ[7>_0HLݏ1$4i}GQ'<{E~j[&Fn۝R9iqybL&]>97(XXPQНd+H+WY)p"`ƜpcGЂwfU34 g.#VLI)$4i T:XZ(8pZ9޶-U ^.!y"r m؞u'm mnQ/R+Mo[Ʃ2%:o]t4\!ao4w*xIH\;5*Y*# XFSRxιaq# jRܽinH?iSԲF[Pˑ&v[SC 6$!GA ' KK.$cg74~N;O>D[vsh,qi:oC"3SMks/D).)E€c0*UZ$::s1q} s{EiM,9Avijlb׻8q}*7#uDBv 4ϳG:-D9yT V*br*sCu$|81;nOf |})}6B^k64Ia=i9 NǦf=lLG!$B"\̾5l=>i F֍&!BޗS\|ѪD90m}m/e8D$IP4tJ;GGϯ3$pIJ^&kkBر3, `2=Pc!Y!h|Vt!r^ c4~l5A=b~H5\ TjBNMtJ1..eQI)NI$r!{5I4S$F/N{#Up2`c=!!&H#Ok;|듳>ol\fXPcbpp//C|W,e9ݙ2yΝ婸H9+yE "aT}[߀+zޚ-2wrXay.*5}`.}6V+' wƢ,czg'HhHcAh&[;1JظatҥwQDPS+CqoǏo,?_PF!c)XVߩrI"ERHFQ t;96`xؠ8Ɠ}<͒$vi 6@!b`i@ t1U &~ЉXHg .uԱيG,, #Aю%m8yuco#ifj6d Saռs8zN׵q׭d'z4Ei1, &⾡x,2"YZSi[= 6&5>sLLș 䠃' 48TE+%M2i+3C 00(=1r@,=bK:R9{8@ǫ4tNȡ:RM sPxoJo{LӉ'0~= $EߝIGwfA ??$%ñ9BNɠ˞X :%$`aXH+%{Y|űkD;" C%'nCz[ ={݁@&L!6]`[aPcQ{pL՞6ةfhja&T ToO?vdsj7xwGNiڕ+#Pb- %M<xW5w~}I#7@1I#Jςᡄh74($H*onwq1;z 1$$E?AWw ](qMi"cm;8ᇔM^Ug$P&.J*]:t wLHBLؑ>4l8S4r[++hd%~I0ٛ-qy3ݛWݱa5#r[ 3p 1sω Pz3dۑ۳ԇNxR;釟2So7UjN6c$bp>YX&X '{'-4ߜ0;7d1uǝkYc$cMO“A2ũlh-S~7Gcf}xTNq=8gsـf}OٝfFՖf9Bjz Oxn#H0fJ"`1Q/֚нT:ш<-saeQoHzdOm86ۏ˕/$w[v9N8Om_FF5X<{NyoZ޷|6=[⇲ my]2twsF7{~.I7km]L4tZ=9z-F z:6y|!ܫ13%4vL\a^Kb-I$UhTmcF0~&aۥKmPEZxSF+.pv$?XGAAD>$;ne=i v͸t+ vg/qy'dG9uGUy{t(:.:ē`Z1; z@ c! c7F -UU_8I;yWkE1T@ l"L-.c1fl1g/H=xhCTꂟFuPJɣySfFf#Ҹ^_"z>c,$7RL{#JZȻ3b6mhB@ P|Ί3l/м.2kc4kfo`ԉhaG/LN^JdZ7lHZh$T3$ygiq8Y9.30&/7Sqx^|< $eܾ0@qNP= Dc%>$kXi!T=n4l8F?X$QUUT _DkXzB.("Sf<q]3lpY9*% -fC% l>[ҕJ[O 1$>Ds.銁:pxȰ1;wGf+^tU;Z ֡]l =D ٖ'%&s)f!SX#&Pm '=k=O)?AK4xy M饁|*[²7ndž4{bLT̊E/g*SHD0 %bX0$myFqZ օOW mJt^X_߻|~. jb44#Tg(A#vwjeG`]zVm^fKL<4i򇆅D{g.\2c]['(]c?q:W-xs'"/ kܙ jJb;3;atZ^\:lk<ͼu8UE\0l#5UQV(9}ޘv V2vvOv>pz|*pjb,k 1c@MpYԙg`Ѐ|2o:|[n0wjcmy]l~q2aO_*^0d o풍a},d5 $Bޏ!(] s]%5bӎU?FU$c_,{O"0Jf XpEn){-9<:X -2@O¯F:`Z;5Bca:hq/hV pdެ mb`vmoȌƟ 㧬?7ѷ[;հ'؞g˃0B<vLy `Bdz(%PeJRh᫂7&@ ]Upӳ9C7,c#GphAAϤZ Df3&xИrlpaJ&G]޺rzVޒ{%0`#ԑ>Gmz f<-`yB?>aБiKQ` #.p߮t`4!!]|I㯎FᡛiȖ:ðPxŌ۳\3<{6V}@bdTN24Cp{GFW0-uʰV^soVN/m60`b5 ގ<e1n$&c`S ?v_W׀aL,6,1 zLBYH%i 0lcl6iACcD` If(l2% Md(mn &Y*vʵ*V)$@ܪ0hM}yQ߾T F=Ж_L|:d, ,D>ƹa48dVRM/`βnyfC+&Pv7[3alK#-׹UZoU6D"Oa)MI"*=;]z;W[K~Xٍ衈>jGn[І}XUs3~aj E[3QmyqؐX Q! 1Ѯb ]D/i0DH 8X@|`Z 3 rJܮ&޻=WH<22"&0bKQuzPi@<<؀H[kN ѧ)囌uZ)PɳnX=1gKLNF>ς; H%zG˃UXnzqoZ~i׫^[˻"[cLyG0~?M<yNfD덪HCִգww'pu6R ¼uM8њ@bA N#Wj<T!K>_Gvd9Q &/[l WLPhf0#:\;< _+fYQur[3 {>[oZVz/mCBpAt֩f4~8&O]S.B޽.Nof5v7!UR$RȖL4vfC/ .R5!/ M*L 1|Cx?-a͹8 j NȜ!z00imp\椙3H)ʘD}nCb5=aNC6$~AULYe̪SJd:|Q'~}t]BsUUIU%%\፪5>W9}7~j$DdTPTShvMYnLY0V-UdPۋFOgP=YOa"¦%"JoG<4pH%)!j$%YY0UG% 90\LZ4%R~$NB̛B۸dB+l1r\܆r]@9Jʆ()22]#ЩL*P:!sIPDO( IJ!:_nџ^?;iGڗTnrKkYtVNcWsG_<|Kb?/&xqw9O|ˏ?xSnO?QMW[r'3 Tww7O.=AX*9T??o:7n/4Ώ~hj.2d=SX! ˼m[2iR'^~G?iVĝ;G[օd :$JE"$@F>Mlaf$le'pVfbOby*46:"?p: V{5@gA"J+&5KzXRQ1dB(v#W-r,!g@r񾳡VZUI[Y~sV=n++#HW>{cij|w !Gbˋ_v![D|ŷ#P$wq-vB_YV} gÞ}cGZۂdϴ2f_r^8뛸>_"g퉫SDՠBDȎB+<Q`%HF!X"ْJ>Ei`uڹ8EbQK(t4'l3m[#" `zi9fފIs!x:ũ}gkl}Z sC;{q ;ۄV$)wn鲬:;yێ0d;9\n:'6IӨ&#=/"/nq,# /$:ā v3lG( ZJ9-8B҂IHxQw-CG p12`ld6r}8ɍpid0$>au'ZzSEH48{gV`yf#4_m $HK 2MAtz?o8z܆GAujC 4'h4=᠌{G,ʨ d;aLψ⧿hx{| /-Uz>!I%gNJsmxLKLd]Ⱦ S`6$z5\?z׻i TҍcL(F%CkRi,v8m'"NӐkQ ZӬ>1 T7@%v~Ԟqt]T:z=TAr*E+K%G|9McB #5+2Ldžfd[F?(q -t"LT?Nfz)s4w5"yoci LNzx'ÚXšW 1jwٍg>TD@- '{}<#Ҥʠq0jxYL<7>\ڍى ~G6qwf3zvL)qCӭ)(%^O~B9 J lZlF W֬GnPycѓC=|`` bqm)U4Vs`vt1-aB96-ER0Wf_?d-?vx ͺ3Ga-GZ3oANmoē~œ` Veש_ƚg3ZS>\yܠdK,bUG Ђvi,oi=_zf'ű{=iEl]2=`QքJ#KOJR0կ;8%@Ez4̬D &RU (@jkf7 踱{ݮ㹙g56cyqќf6~o x4gxv;|]өKøL)XhQJOIbuŏO Oa {x9|'I1n<=|fo6IHq1&'.8`ұ1p|CH$҈{5Nr63{ms^ A/s.ϕߥ]/v t8=6Tv0cY'2pfnÏ fwUM>$SN<.I]#DnMR>/`Cm|0^վ[ß̽<Q~ػ9\hu/Svprʨ7bi%]&SGnミJR#]#*PNsBqdE.:˘ly~K&Gޜ묯铺eΣ[{wkv+m|0Y{λs,Ok!D}5fYK:Bר~6Bׯy+ V\ٜ+81wW؛J섑ڋ4VAp0Jtg{,uLC Q@.Ͳ\Fm63OhqSӰPiLjЭYƦ]VI s-yy|'Mؑ"oBI I)eLѷPoD`%*o3+k"Ӻxr8i^*KR{'Kc@2> 3ڵN]g[==tP˾syr Z2C19E+ фa0?c֭|!hmo{XCs$3e1ވ7ԭDû>!@$A"kB1UA I^eBfk4 :[25V"wCȉZ0ڋ`f!q >Qr F&nXک19FPm6{P<ާ212}tyFtK[=xs>8*ю>UČ48@޸f00cṔr_8>_5biVm'uD@,g:Koj5^)[d۶XI 3nswFV v9de$EO;]9pɛ)ǚ6vm1 :.e2 lm-=M5uiytOwɮ) uFm h4h5.jn1X\:@̣l i ? 0br@G t( 9 $a9jM2FzM6 qL{˨뮽7Qc@+U6PS<CK@* )'@ӥZR@!`_ej*!pPU.\)jh\D$4:AMi]ժvj(aJȃH J !W% YA=@Q\u?;Wk56;o~jիVZjGmnۏ,QE#̚l? lcqn,U۵88ٞyd׭ݹn6lٳf͞aakp lڻZ[\ٳniRK,Xw9+v[pz)dȒI$R^xL5#q(nݵv-7ɷ-k5{+:^ۻs31-ջY䤕ZgG*  i%M,Vo0h5PAX&+z"F\$U UDI\plLM4M4MR Q]uofC}idfd#r6ٽyl3'&sa|XM{7P}Q`aR,lĉp mZ:ֵ6NT@rUTAaPJU")J PE?%$J1k"@@,CHM T Dڂ3ֲfe !mgቂ%ZH7$d zEii*Me0WvM*fvaq m~jQI|wp_)hɍF5Zn U)adb,yb$VDI#I۶v@e뮺q{Z֯\s泜F5 V Y+DAi&UFͷ+FQJ K3쿰߃LLTUL:I$LEkUk@O5ŎM,ɽfM6nmֺD kEU/j֭,O0<<AW}g͛0Y̞yٚZ*TnnEꖯݳf<"x-^|av.#"ժ[jˮ"lXfft1b[6ʬ<,8ʙe"" (-FZ.Cd`&@@E9Lvݻvn`u8|33b1bB^&3&dUmЏ&AHXu>{7>}_>Mzdz,Kky܊ˎ2ՇJ, ~ÕjC 1.V,f^dM4L-_dQEVSێbÙͫV,X̍8lax'Ɨ uo(,ڷ=kVÑ&,Ue}+YUV/X,Ǧdl|dAP(AA@}c.[Rlr QB$θ);Nk;v=.۷k۷nզc9' Eŵo{4s\֮4fLe$ynݻ9b{J Ӳԣ5}d2Zl.nU+ajY)VZ R݆kkV4M4>?-ۙѿuدcvz|ݭ.YeEd_bFC=0-{Uk1rk[Șc%TDDJU5}w3߿}w߾{LoynM{9s8#'cݽS36mmmmmUT]b 0DP\k.T [}5%ׯ5,Y7cHa*^jV,,<\5eYr울]G0L7% ՜vڒbٛ".]Vego|w{ ""h))dH2P?_?ܷ<<pܳE˓M$եYeV`|E4Gi-^ڪԫjy^ٖeYAwUJQGOOOӧN:t1cUUV.{{{{{w^y |/vV8M~ݻvȩ~6r2oךvؚ=jݵ%իnܒUQcz̋y ḆV9f\+qfzlttuܼD](AT@G?}1ffDa3ff`H$$I$I$7$@ U{mͭ>ʨڈ +2pKYXeբ[NO_xuU5߹Kn OVu٪TR iFe.Yca$e$0_ Efifz.KG z-u׫V{qb囖&/829/ 1UDS'<1C z|>|{=|9뮺_/oƳL≮ BʼnjVbKI3lUڶeWZӮqٯ<0}S3TI$I!I$H^޽y=z&y֝C10}qfy׿&wϞyoww""wpH`8뷟5}[ߧ뮺_wqBX$@mCm7{>ux߿Ky_CDCCI$HBLKMu}k߯=;KU=C'ĞWm2Fkg;Kmd]&d&Io㿧ƵkǞ=|w8q33132̄2BRDU"/x|:~=}/nI{ϷǬDDDDDCwI$$I&oN:|/|ן={Uq^""":I$Iݼ}Ϟ=L{n"!fwvaٝݙ׍ӿ3}wwwwwwt&ٻ}{{c^7ooNfw}""x Hd:0رb)k+b]v8hD=v,XŋKر<+ER* w'*ի+޾5:1ۂ>t d&fKUS1VۀFZּ7egSQ 6mk宅io<3rudAw/;<+u5%HvX !-3a,G(9LUUZ{.{+ꝶqM9G"\ț*AӧԟlS,Ic,5׏ E0?!"t 76b8A#PQư.x ք<5똰4qDʫnu{)xx~^ϻcPQ?*o)$Hm HnsKb&kN毪~#q^s"sCPs1X8l$ %U0?.jJ-%eAfbAÍ(|p*䩑 pF1Do+|qV%+*ZLtDʒ|6,ԵQG+h߯[$>0dU}5ݤ s 0+/Ba)9 `6,6yݻ.2QC\-Za 0V<!kUUf/zY-WΈNۚݫvƍPUUd10mQMoc)r`& P/8ᆇw?y.9y0, mm:U3$}~7!_K@ /D /MVo߁#}-s~M |΢G>?aB8ВUr>ƒ`#[G}&0|O#/P|$)@>_R4KԉͬyԇL,f ~}m"ȅi䶜00;^5{II쯜~[c15UVqDMkn۬1ĸ@ "gΖ' }RDHSDa ) k[rصQ&䫚R Ry`v?ϋ!zij& f)VUb! "ۀI'gDAJF ж,kl~љɤ+hFh:YRUl$os?a{Mcnn~Ϸd5>}aw0**Jۚ-n`HnEKDœRߏ?+6Or@ /3~3˭jbߘyU?~C8>XN %32x&d4"~O~~gu:N࿇fh>oE#W2bg|wroŹ;kwww\sۻ蓑\̺PJ(;(TmfXjll~9 $E ZIawGm8X~˞w1/ч!d;IZ=roZAUca$Y B0҆GΒ 0Y2@2׿HL! cHՉNH/> me_/$ eK@BUaWrޖ)=.oC^mkQ AQ>i>#B-P4 5nuu%|2('hAHa O8GǏ0ȞR(>a¦h7H&U &k%Ik|} 4M{LQ|e4@BR&*iVm^ CIgϾ%  P.v5h}ۤW4EDg(BXVQ.!#d(bǍ%j'y7 %"CL !I1$#&!=AAD3Q(t,7 R ,M% c&MQM a) "$ a%%)DI-+iwm$Mދdo"GHgaHiL]hAE~@_ϔ:9VL1iG( ȫTIQJQJRg:TZG#7)xc٘)TH oޝ!fߎNNDa&mGa\@NA{~37'QI22 ^8(%$F%`6 h4F^;Igix'uQ0,^FY>r5_g}6FѧkmU o"_ J,rDHX&BڒS@/BQ>]Y:79yø&@῏?ۑO\?A]G [g"G׉9: a*g*kpftdOVĵFr',>q[Ĺkco: d̖bS$ַ~$½vyvLo" >홿I~pM3^ܵQoJq:+Ozסn\JD"F{rWuR ]BQ!L*4wKϵ}9)Adp* ,rV-.FHƃc[\KZg>@zDd-}_=6siɶ>%=t)5G^vT3sW؟~ dW>+67Y܀gƳyT6Il&1fyHI ^+9׵-2I@#sOOU =k(qmIP5[sGP(@$'z;ß@5_Y|l,!EQav+d7`t3,FeK6,}؝gjjk̓$MUU蟞D $;$m$aWZ6yw]t,2P?q^F$[=k"lI{@{2;{<{s۸w$DVx9^(׏rUvQ:3"NK1'ԭnµr#gvuNstcRAal aj2ٜ'ِHֵLɌcf1i M1k;MLjZI bͺa3!e5~8tA}&k?F+hqJH#N6ѡԲ69A:תA 4D0Ov,ʶkgGsʽZu%FJʼraBH&B곽mk[ǁ 3;5-ImO|y;acaCA2`ٓƁfQ#a'-nQ$?_(_đ"($D,G D3GH@Zfkozf2m@&PTc{g41 be}P+\ou#5Fo^3N46qbIt3p>ͬ~ٹ!+02V! at~|zj;G= ~_.q3.!QSw59)+Hw5,YQ0 FMKl-B #F gd1FrOy1gchEkcnDF8>P"nC8F# HvB`aăR7K5b);g5yWNpb 30e~^32R f9>cFc?&0b ֟8ߙ <ӌM9k|Wˌ pHF E0l$heC5xp3}yÞ;EeժZ]󺻙yu] ?92Vݵ ؂R[)F};"wVH+F"-j-Di+FVQFEb-bs56#I@+B)۴lmESb'wD׋nD"zuxwF"eMGHSp˷]S`+Ù#I.BR4'ʘ,d`0ڜٛ)0Ɍ$#gk˫@`Qֺ֌0gQeg#Uڍj3Zc[ qݱ, ˎ7Ce=Qofie-ZLӌq&~@Ȩfj)6`!mc=Jk!{^Ԏ}(5:t9KZ[)`–FG'_L(+`V#>}:z"+(VXIlVW-nX&LEPW000 WNI; 0?/eQ{V4OS4 H HGPߑsUpy~%'Hԡ'{oؠ?Wi 34n߯*ʲDB-&g@GnoI'Wg xeX7;}}:v]#t`gc"ky{W=s}:t9S|PD1P?Ubx ~\]Q 1\!b@(ު; b\f#EBę QGTuQKD *0V@i6?ΐX~4@u?4|S|/-O 株uŧStD%1"5Pmb{2#P$'ATi/!D5 #is`R1PvD-cYˬ`C *mAUnԋE@HƒT uڵc U2qܭR8㬕)ג5H䲶fݘ Eevw]v0KʦC)r\u)u-DTDNny扒PQqqWIű Z AV;$( y5@V&@&P,5@kLLЖѶ)h_q9ϯ3/λ?4==o{}}/7a~I]r+Ch$*  '] 4HHtoBm͊cYM T0# DXǀ(7vʋY"N1/bWf #:"qwDD*Ah\l*]!J%5%DCD0Kf(dG*UMGj:*DG B,0R}vW`뮿}tA wcQVl)0yDSL",kвGkI?A !ѤwDpU7>x 20 Xɉ0(J(K%%X@FBX mJ ZiR-eO*X L$QL)QTUAD#yghӤxGmUUQ2~MtC_u&!PP/P%em@}M`/ˋ}Žt@>v$]0sueQ;.sXQL.u5EA6ɌG48`TN]Yr95 UY -ǺNBm N >}Q EP9oTt!zPܬ¨+Qgdֵ'$(+} ]6zr;KWovFX. j @k3P}P<3D6W9>ϴW.MMɁjQU5t5m^vrmdc "d P*'V*"* 5F%Sk3R( v> xxْE*n\_DX9.%^ep˶h:^Ԋimp7κH?kyg~<'{.b$uLٓ*vG 44;=S̓p|Y OIF2;#8;W}:l.IݚhCX*,}%隝ou{(Wr~ Qog)#*Ֆd(^X>RqD!0 L \J2?}_ ?lkYOp=.V@(_q UU 3phڊ('`_W;WWs}Wcwz]o&y=?6׾?9F'>U*3-s/,8<bOԩj;Ñc2^Ju39vo>fwfwp^.vo-2~kp_zpa|@Fd>u=ATx؈\cZ1]`ʶ]a^gK$Lf \ q7Ϭ??Z P9dYYZj!1}=}/8rprm|Eu6DPJQo/xZK(*O0/~Xg!> %$Gg7' "& l 1!tʭ\K":"c1SmOrߦ*jfUihAKeYQ!L*0*T ~cJhM#M+U{M1Gg-$ 1cN`"nj?n;;q)?u]zܘ<+].kvφڸ<_k?i pP5qw 5j X\^\q:WysTΩs{kǏo?}ltS擈?/PtiM]x,᫪#`(: AN}ˑAq*6u*wZ. C~#Ji#?7Ӂ>6fje}=qyxl zW;cDpZba'Ќ(=F(pf- Uy}=?!PMR{㞾YkD/ws,o43^sOgbu 346n'"?guݎzs< 򻡆ؕQp^DTGzV 1 xsxDIU,Y]/r:XKd-M4A@.|>ߍoC={1G3gk0Hd!aLeam Ȉ Jp֠YQEGYF W@ !2p[fiH₹7E+W+6XV`E?V$߾_Q@>) c /lY#ɚq#GB4Q*p' dV@0@[BJEf`S ,-<" fMN#FV)UJ8.; p[d (JJy 1cs#8 b*JܤHBG#>?ǚ~sNkaPD;s=m#i0?Uƀ-#|b0bjW_Os+q|y}[[r=? ;ko7㊪N|]*:=uA6"n;g^Ǐ?07߬i/~_OCmsLhl`ggCx. ??;^?oM'<ɭ-NIn?XWT;u;y#Wt_OF!}[k!u7>Pb*"#D}{[Ό=ezֈ_}?^xDg_jV@1}vanT]qH0GP b K}_D9:[oӻ%bĶNУ8YrF'~]e2U>kP.(!]n՚X]Ooړ<s^5ުS&L?%o[Wsw~Xrz]gԓ~&aPTTET[E6Ῥ{~sѿa//F _I;YQ%W]*31|Q(WyLᗵHRAn?f<@ZP/_SXy?|ھ,Moz_ljLreG$>F݃ʍ MUTqʞx6h3UF iAIpE?E ަsE+^#0G'^=iX:,OzSz_~ercuQ*-Ow3| s>V:Zq2*>Ko uʈ]&ovjOSJ6_G QQb$e64fO'\N'W竸vxhv̋}`MnۓfMO>=k}>]DNUg{&gvTܽе!J%8=_ޫv|^?:Yi ?~׵fWϑ 7 y(aTwny9޷=>Ɛz{U^^d]OV1_Bn}^=<@*>RWDpbr]xg?:2bd=?O326D"fp}ADM6л[jYpF-QUәs(*voq!@DAՄ. Y_aJ @AaD.U ʪy}yQ@*ߪppr>d7-Ĉ[AU. OGܗkWzzt6sTUUEQTUc6-WZ;"20}N&P&Y d2rCԖ,F]:Q 6Nݍ{<2zdZu!%H0Ȟ?{K//Y`s j%!9Dx5@@J;k>{^ Ϯ?Ȃ 0CEW3aoT=P2͡վ'r_/~v{>y8:ݏ OodϷ7U&-x ] 㙽FƪcJ=/B&!:/yoy9/V^׋5md߃4A6eM^?Qrg{ =vfT?ͳoeTSF8˫7un`>w{׹7.G~=5LVb{xuqp `|q<'Wܘ:ԅ<ڱ<%D_o}GB@* ovGy᪾ժ&D؊1{}k_i)޴H#^neo[3HjI5}Kt@<{lzuUKy~'OZ#N7kY>ޫe{:o~ͽ|j@/X?w/?w؈s;-D ꈜ;oObN/rlN8xg ooc:'}}8UGN&N.YlrU3t~E* LfN%Ns UbLnCurvt _Ճ&KFxQ{knjZZZSHgg>aRZ,mE9xm3N2MLַf1kUJ(Vs*IK6j߬BA2Rf!eOf khXf=2 {yfox}wT^`׾긪F |y,:' .LȖ4Vǻu2Mk#6=ny#rF݂* b Ң |śG%V^0-7F w_Y>oc˨eDw7BKoE8+Fbsh;:eNP|Z:*%bjm98CQ6B*N)2FWx\NyA7i:D|{MnЭx!?. ̨!pxZ]'ѣ"rH|v݁(>om[~ϧ/~ǟ 0zNvly;_I籫0u"U Z C˜yXOmnM7`u D,,}DB5Z^=[2Ι*Բ晣K*>OUkC3&c(pr*!dlkx]veQaX23Y7)SSc(I%QYЮ8"xtvq1c43jfN3mW;{>}vn3p<6$븝?+~-Zϑ~{OICfaTF*!)s_' 8y~N:Kl): =].'uwKw,-MznFwݫ<77'@߱ TUU0E~Ozw$:A}M귯 S:j|:Ok8J0U O0j >S>迦?h1HeEZԯO]1e:i#PC1tU}ߑ`X,Hbj ~LЮM0]ipmӅ|K2zpH.!hxȐDCMLnQ  ^YS}d OѦ\_[ݪO㛊>D?E?R7к2S/iQuu6~חw[b0w G㻿_F b9mDqUC-?Mw/VQ<%NNC:ЗsZ;}OMx?Wݗ~gazضDfFfOݿ/kTM=~U~ٸg\[n7w,NՃݨmA 8=ITmP:?{;JݘOa+ CMpSzo9b4xRd 𡅧7T L4@}D{h8:U  1 t'] M?K'P\#~8yh`hѩE\$Rk{h(X&gMD0hô=%iwjVw [*/_Gt* EºFZ xgy`t Gv &%A+s\S$,jUZYb*pLahT@YAT%fOGl@;Dj* V38c U*"1[8p*G ùE\8`(ЌI+ZLl 5+*#_}\"ipkdmUCaIV$!}*!Z(H1az4d*_xRZꍍKv|Q 1b˓/od|G_I2Bg)78]?.:Łİi۽,^~7[fLfZ̊Z^k_-5Ctl eCj'|/[i5?t=Ϋ*OC}(-g''F:oj}&nUD}}MUK|X":o}Ƅ#;_6}>p=<4U9 wwSwuns󊪪$AÌGCWHt¡UiUtT:;߷x1-ge ("*HC$U? o|?y?{CLJLBH\KH]d]Q!jX{&f (v_)EݜDD8gx,578UyƤH^~k_U^&٘-J)yN4}]T\aC_arw^Y^t[yݷY{s1OgS7~~?<_R9Q';}Cq=]#PFHU??(CRa=аx=|b.]quZ8mvS[pxޒwѬ<BNqXtXd? `!}潈g.'ZM#eF`V[z o9RK5诸a'qFX]/T_{ăE>@5 ~oyƃ9~^>¹fZe;u-W?,И̴ED|rh"JCS.Ԛ(bB9U97QmSG:*bN 4HMmy=VwĖH IGN4΍6Opu βm1۩oBL j%zE~"2ˍo&)dcTfMAv[]+zXΫd}G_$ZQmmpnvfelgFUS]AyqPu]bZ/TֲnTf^,Ł J i6ÁfFQDfNx^o%bˋxqhw+vhyuvݹm&qJO=+㣏eR[=mG^8X-/f7yo.MD6#MCF)<4h`Z30Gkr/>TTU؝jog"#{&Stp:Y :\t~iHH+CCB٦WO~zynXbŊXcbY嫇!Ff@EN4w_p }\KVAXJ)4tyu]L MhȰ3ֈge, Zܱ0Q7EǤj5WZ]DLSQM2( BGK&؇1y"h(+NsMҞ>mu_hC -ecgWbU캮hn8ݖؾl[ty(UTULtM&Oa;ZUqquHgDA<<!Ex^j)-UU:n@sB,SsܟgudvMZUDxhS.ہD6WDì X9kCiְ$a=Çϭ}j E ECĤ8ݩlOx;D <.@1v1MO01뭪ۯW7{+7=Ok7mHbQׯgܾtJqמ0o p@/Tl1O=A^d^}BTks.Ҋ)5EfEF$zonMF\qIJw^ hlٰV[1%DDDQB8 bzlq[ ^۩"_9q5 WQjq崘D ~E*7ŠMJ & XLa2Q=~~=e*g$0F29jĒSu)! "]N9)8RF$`& ~(vߣ!]UyIL- "IRچd~yΒS*/$țZԸFy4seQDi]AB42WʘBFZ;b6adXIbD!ɯ䪴g8 q%GBB[ Uo߶)Ρv"*ª>8hɮp6QAu`7YYSQEUU^ί|eUGL']vwX*ޒ D9rx#f=Yr3n7&BڠN('+\X[Odh袟3ɉmCQKGFx)^4OM"0N3/U55uj'%{ub`wS2/09Y/Q%:[Q-Z*%~ǡNm!;Gr"*nMl=ec.=`w~ ĩ:HJ8I@h &ӽ]:ǣ"T?sX<GCൻz;mۢkL#( XRK*5D⧘LH.û6Ã4|]w\De gw, l >\]ە̈́[Ó.'O=5|/] =jt>hXvaZ&(er=OwANvֱvk5 Ge2yy@&R!Y capJD~Sg:޼/:tQ@N㇮dGqiSMfgӆ [9ÖsRDcUZ{ɹyc\BBEJ ̓ʡQGVzkC,ߪy[\C(5uTvҐ GI +#g5Wm"͌n$v<#JrɆT)y+1_}ۿo]l㮋|ID%<;ex$E-m9| 8W (2ʀeiFs8X޾bK\I4ELEoYj.pUoy~{}~Jz9 ds>ygΟa ɾxͻ/_ǁ);N=(qh?LT2F]Tı`J&웭\d֮{5CTvٹŇTa>= *o'"×n{DL3pyw]w]o~s_WG2dxZ8?}~g=?/^??TQ; s,TA2NTM 'vy$z[y>'G0s^O- }OZ~GwÕ]̊w=[\uSb/wsuVc]:?{7+ѫoWpfߌ tn40l7^=]ރbh6_^|m iͷ4uGruJM.SsO~e.ҟ,?hkm* =_K꿃]ɗt:yӫƖn.޺qfܻr{]u\)99:f,=<_C٬rqWr6`Xe=]pU/crYIz}o҇>ko>gcrS?~y>wzL^8}FoO?g6{_cѱʟw??{M8'qQ►_6 "Π`$i$.ֵaF'>~Nn ^=rpucbyjDD@g5~8Kspj $ ؏KH‘&[IBLr }a1 :C";DiG7TQ]ws'^wZ7a9W%AJ5Uǀ\D:Dh ח!UmgѾ`E0 y.xB\w0O=bz[ܾoo} TJ}RdDM9QDҖA`zJv߽_?_>}%wťz.z^fHusk_~A?.Xd)WCOzVY_ʅEM{9b;ߣΨa*ݴ;(rpG` @;GuAcrKRxH8X<7RxOu{ j?A} :?=yР%y{9#xoXa>e]Lś_DA2`ghnx:f`0"v%kV|3xhCQ'"v$+ǝ3R"G3 ªH/  LI$_s\62tO iT7o:-.zH∻!ZfU1aP,8B z"J(^M60Q C-:Ι}->=Ϗ7<ɛ۳MtD@7yaWtw=^_DD(s{9;,8Q<G*Oĕ>`L3 I0~0ꀡ2|z}˲ ~cg~ MN'9 zagoI;/Kײ;R1kwiyqةO}کۧy?s< x|GCXC8=u9J g C3')A6u=!pCZDVn:s6Lu$QmƟbTEQPUETxO3b9p埜'!;axHO|e P<}B"]W5f3vmo=a#Tk 竨I 9P<㬇Ϳlq%ߕcO7W_:X ( TwVz/w [\DOd?}W DĢQ3:v 5]j!s{TMX'`@?[_ҙ*Oop)ʝbU9Wn^lS{m`o"`̬>"v@/$_ڇ$&1:3U !Aܞ*BOB4)th]u2=,}d!hb>*8vGb)Gedy0S=iA~|[?Y ~y̌^*.#Ƿ?qBPOsw .ڨuL@gvn{/乙Y'9Ca4xBî U9t5!87>!ѡp:kiyqun˲K0&gh/{O;£Qw|k5z<LJD*CYD<#"RλzoQPO+c_ &P@;o|zi"1|[HQTym[׉u 9<8zv%UTTYj~Xˣ EaezGF;Qw 2Զ _8=OEJ?Kɉ(<ð8+H&h!EKx5U1/=w QTI/sEـ^)/i3ZɪDOw^k|QϮ;c7++ϙ]jD?3S;Cn\Yhqq(l|nӱ癌- ,jr!XiTJ0NH ךf/:V >qp>].Vk%hJ랰Y bL5EojCH@JfeDQdzVI QۚZ-Zֵmۅ_oz?̞om{_TӖw5/fqy͂}H Q8#ʁJ?p"]O5IkI?ka+Bn:BTxst DAފmP>nK@*:ݓ;%aⱺnxLwn'@QEa`O ʬ >Omxu̐5[Wb݌^$w r^!@%k/ ļ[AADNRCdS B+h5HE/1h@/v+0u@8y6Qx^A^e!>cup}~9%MD[}fKb-EFVMbm(~_/n_?boG7z}4uyPv\1_GZI6o6.m:ijo[x@'I4P'nUV s_ֽo|6ߊ3ի!{lDcJ.0 s>γ˒AADQUUTEUDEE1ݛM;7bl6;w Ӊ;͝{|W7fNc^tץW879>Qê fN3* *"L"Bu 3LM =eJݞW;Z0nVǞA펹w{?K֫gr TVoll{o&}{ u UUuHtt# yH *q<Tٻg󪧣(!vLկ?>C[JoWv ʖGAc1 C&MjTj`% W}u~@pT7^é4@\a35 '9b@rzbg0*y}Cu5̂5D`šN-vf Nh'p6FGX`1v{'~|W6u7;-"u"\DQ<0UTD"oOkÜkS^8ɀQZ4Leq_9H GrkTq@+UӼ_`#{ G~fǪ>SWJ4 8 420j8#TTQbV9ӤYكo>AIpoaZ- F.qqZ1?0OVݘ,C5q.㾫Uk9Bu泉xYs8,,cr s+4 9_%swswwwcUC*wwVRFr5w}Y38o%$HI$mE9Urh98aY}oO?A i$ &}A(䨉<jۻ8hb!ݵj8bïՃnC|~;⢝V"ך*JceϪ|zvۥT`xA㹌+`Rd*f )  a_3QLF!9@: ܪ !6z|ӥ*TnlBѲz\QW'kwi,7> nOky^O L uJVObD3u#Uzʁ d.]Q(kN@4FpzD_W^rKj1@ƳtĪjtn'kZ11iq:\ i%X:yוy\qמ 6^(2' ^_ʾ[_`Wa~{hnؿڅ{vPmv4S҈r_Z/.q[ǣї]̽p`S 41"03N$t?ROkPfvj7G{ϋ[mz.ҹ 3l em$$I<nYW?G''ߧg{4׏?? 8z4:?KׇSsۿ2- ANwa\C3>'$h&[w`T:>('rfщN 騈DIQQ4ѝCF|ʾQzt| 2!Ov\i4_2zYG-DUEQT3֌=s;Ӻ9*"*JP.VT $2c "_`l BE2| 0[ KeSj F#D Kw#w3YG Z%2\Ց-%B"$?|,ˌT9g*uѨ)qR`4?^{oi |&GOoz?{bY>636]px;=;1 e~ |ܯF<6toڼݟDbsSxQ}%f8qO ojvrt%UOSƵoDyQEIq P9V&|/aY)e|_cREp{CV 6uvQ6NmIӺSu6h_!Q_0qsE!9E &֝2G4{%1DC7!UU! 1Q YiOvgjXF\ C)v3n;OڣL^'O>vn5[yQXmQ?ڧH:[y'Uy^COt%DO0G}Ӝ[3@]`unӠLk! [h`Ubuy|77Qʖ`*SP6JTD_dwL^Zz_pM~??'?T`l>}btޯ8oeMbՏwp- ow %#w8r~7je^[IE# $T7`1u鄅6$;GP[:XRU q֡<}?H*2 D3Gwǧo{~/Z/GEE@X14ܘL,!UT5<2`(Fi A5(0i0""'rtIg_3Zfso7Yr=:onk{=γhnV܇; }sg:q`ż[LЈhr3MdI6jSM1(M"22։Օ[ZRQI6Yk 59ʚ֌9PAʩ)Xe+Um u}]u;wpmZ EVCmQ-bZV$I$I#@D$Q$N+Zww]ݭr0EUm E6Aj6صVͷd!ԈU$G f:g!2>2Ri؍XO}}eZ eMhv3FfةP)W8BHd* DA v]٭ CZ}k[N}zBs 䮏MhHx@}WE'6m4lzQ*s~/'F^76oY$?? ;inMw~F85-ƽ(3cLa%Hˣ+Զ5cun6 cTZl a!RL =q4k6$W>%ZTI.S}̅kiCLL4&ctقkqn[Xdӄ4DoRii+Hg||Gzm~beFGIH2WZ~ |f#LgMI~}u&򋸔ٷ:[bK6N:NϪu';什>A8du#4ʒa8P=qc Q#~ Jf{,,}ŗת K lY|*<9 =Q= tiX~&]@~[[9w,~=_^i]vK a)Z\Ff-e)mOtUAOuǺ~+*k$TD8|qh:~CYD/A LVH*;I)ŖpSc! P.<ӳ`e IjU,\~m3nBoaчItˢS>{7"8!-K9KU[E111}PuB$"-74NVS(Hފ.X܈W{Z 0{71K6Ya8=rh֔ -ml @iSEEZXzo!FH p\e"S$ Ni,P2YJ'wK+({.DٳgL -%őm,r`=w'v=g6͓3,#yN+#GFZ) Q,}tu'=_cI)N@gqbm4&% et;HRp'x4 Ƅ5۝P3.W$TD& ;ھS(}m/ ]Onjl\ö=)}[xp#,$IDMZm*R$/4`?S'ˋ2>g;~ @|V޳SQ6<RRX! aF?oGg+e>Iwb>5m]g,Ʊo]zbLY=ֈTal _sr;f ǡӀm[€J$2[_ ί|bBR? =]cYgAc4TXBY:GRA@XIRodJ+D R[%"P- "m<`e) .&ڱF 5d$($I* "dONuq_`~A*tۃK5HpJX}I%"`{Qγ P?b2<,~p~'SG%_x~JϻJy':㯯i >?Noyxf=[RZVYn*#ǒ[R:)LnP2Zjda5ȏ>l}BTS煫'k,Oo$\qg~%YO7Ϲ'u!",}v{$zΨN>.ï#xx_ұ,H`@YA7")\aH|l/${#{gY=/ټʃǛPB'^FHa}4{_>jfS少HkLp(b~ V֩v|O#[]b_}YVRFsm41 0[3eL%m",-cTE4rf "ucaYneެݨxL(^~ׯ킲97F4U)R#禧)dFL=mDҁzR8Q{}賽E:"xQgG྿/+?I}Sc`:cڸ(8AX!&SS'2z>ޏ F=yZ  P*4~„ g߰RTh́b4,U{m"@GOϯ&ƹJN,FT,73PUZB٨zA5nڡmZ Xa*PRA#$}{A_@>I("t1$=zez+߭i«kbpј>]XxEIqCqSGv:9Ǧri}z*hiofhe$Fo|Sy<ᥣk,? (>EGJ1 {azH*h18SĵHRZ܇=qcv#nϋi"UUDΨ[-]i5*Tm)HNRci ?3Sdx*e75"Gogk F@iێ/Ô9a58(#tW}4٢x0#ZGy[0gGM{ߝscO((88RC 3MUaIg `MDC$TxH-JHT$D9P)BeaSQhlLТ׿R;&]]f>!nE"4f (|:¦m#&k/J ɠHڦB} N." qQG<s̒*]r2qZc.$_a X=(GۯBJ,r}}wABG{ف/:5z10/zJҐL2R4P|E>o5;Y\rF]JϹdU&TPllF.V1(cK;fd8s6zuۻo"j #\#BTUQEJF )gzǣXma$Dե> }:PW~]O&HxOTՂ ԕ}' @ϱ.؅ًRDDjl`ضjj4Zd D-?'QbB$ ^ytsS@ӢNޕFZ<BhL0p)\EH7%iK~& Mj"]!Y-2VD%+ Xd! HK7sWIuMZвc,-AiMX4chSP#pU)}`Rd`102udʂP 80GlDa%QJIb+U-455$tI ă!15iV K#)(yK\3yK"I (:ЎlYh K}~3k^1ZKo#HFT"vm{9!'+;޴:5 jR)Q \%De65rEUү2MD9q;XpcsHkYu ( CBdj$|4u4JtQ,T*Mv klCC= aHf%n3r#ۻGXogUZ"J"6*I#: H<=8zʙ)LXbE0H6 `C.bE1E55ؓɦIbEt@Qq>DPCDD͡U ɒ!E!mRUh$iҊ нP5@m2q:):-/0I+3548P&HHgiA*m?"ƒ#;!F̓e(?pA~++P ŢȑVum6#K2|!7종 Cr)C}aPRfYM2 NF䪢BB)iHBpKx&}>n<}O%]v  #)HKPmq2a!LtkVb XWe#RD!Xu0 =J:31) )p̂!rqR27.fR0#c3d3f+jturuڹRdhѩ4@ &JVi3kkŐ&R"}b¨!`S!mrѪ,U͢vsK3-̖i1! dChjC zlP_8))x7=JKb-:rI@|B$V'{hC*z<`1EevSG}hK{VvAUnBfJь:ݐU%d59޴0dLFcv!vI@…R'XJk#aKpbBeLjU]m-ᬃ1ZJ Y%2pk$o*\6"bdKLFfRō7vF[tl2 ISLQ)T%,-Jm[Ci^.*jmXWh L GxТImTš e$d21xڶYT$̳`9cZI-rh63ciqSP&WD"aHauqY5]ۊwkݽlN Q B2-HApWDUэie-ERnknYv]80"Qb8\(LFs#R$+PfdZV[leQVZjmx `p3p0Z,MY2PJj*AB̅jݨBs J@h!#&A6,mYdѭveHَA&s܍ Ja!4ĜB蒄0̦Ԃh)E5 qM"jt`F@.+DP!S$J@"hQ%FQD( XĴعaLKC ͹A|hbһDj(`#0#h!T'07BQPAZ"lj!c+dBM5!86/[ގnW6{ ?L?FU) z [gI(\SNcnշ\?Dӳ#UFTb$n gLiLoN -(?]q".PxNjq 4HU=dJFgx,k712$q#'C^M|%] q--Tq{c0_#hpв+"!x{7tt|3&84wti|ri2XkSg l;\o}b4 aI*M< ^1zVoRaiF5{m{mF4Px# ! L SǴC0lhF֨wnUn2m-RQA;c;f0dφbK)M [ .v[a 7VQ)d﨟 vMlP*22 i nrjC IP* KSK6Kd3'k,01& g|(.OB1 U(>ĸs(Ê&Y #ba܇qE4:pr +;i'bbKiӉhVbs݉(Į 1(Dyň5X&;KTqoqPgc븴6Ē4vü-itMHCּ´ʯskXll\'7+Ct=J60]pO;nNTdI%C=l9T,#p\D]֐nKC\K\L]ˠ1Y&K`};@*!{$-N5ëXN%8*NO)4dBL 3;bh2K'92I:a0=1\Nh 31 f4? gD2.@Gм%ļ`40fA^7JaDy1 oDs$BM\4o][kCˆ ) J,Zkh6[`RjɫlTkXJL#H@ B J…ihbfjF[h6Lƒ%lՙTmBKP"7@~WL`j:I{>ST1~ s؜5 81ZT)`l>iM 8X?/iōIǽlDŽxIW|6:rC EE\24_*&N@J/e%83}^>)*T/E$0O9&*CM@G@` yl 48v6y!w0"PeJ: 48߯JH iTZ Y$& PZTJxUG:^9a%|;?6K-hH&E$kZ ,DrYٓAƨVţaa81A@ܳ׭Q jNTrLDDC@N4@:l}0|snnF>-αH#Qؕ^>6 =x [Δ0vn<88آGXHdc/&d>g3xsչ`3+g}LZ=, DE @ȉ^Uqxvb_8z2I=vM=6σ='fAN@x'nԍ G'ӁG|qU6"? ǧ2p'C~>x5Y-[-g;?$iUR"V؛"Y-E'E?<<P9hUL)‡@Z$I3tMC 294R1H}~p1 U>ǨN=wiBUhu?nϏJ8QtĒhw4>z*w@Ux>:'Rh)l "pO @J]`sLUMG"W"NIp)X> 0'nBI DH$+Ɖ`eԆ$L+HL>bw"-g:]&N]u=TSjn%s(?AC= !(h%N!! 8JKjys<6L'bߢ' $:,'Fy|ި_2629Wr0}]Mqg$l#fx[Px=G ʥӮh@t\ u`v8ַiL[%1 FHe< *§(u3&Fs{p7vf;DU%Ț<'A1ҿdeCpUj&)"&49aCc;Ž H h@Tl#ܭƝf=D A}t%^Dl53>/Ryp޲{#DGE@m>e!/j ܳ&ׯi|ˆ%0/1zgQA$;z!aSªX Y5CMNUq>HoΤ(ŇU d~8۷^HB>vk4e6o/CZF~ߓ] M {s-T{hA:UNgEف8ߞGcPr8܆ڛ|ټ3XŵA[[iiJRƛCQdJe)ZJSj,Y+J S?s1PE ~'8ķx#LeF,h63CA r"^Ja:дWGoZ~owat"J1qf fj_5HIpP\(<)wr,Qds)^xۺiQi`ϊR gB\eq6cq2ps~(SHnI:{x+M0$E񡁝Pa%EnDtKdJp[!w{26ٸRU.&]'aHrcY͒ppV1dk|ʐDE{jw׽nV6dޞm6C sH͓MRSyBe -C!yocP@1M_Ǥ oHhc] +cK]&Yͧreprms" ],p0qa)ex) ]Ȋ@s&8")SI0xvFm. 1uzr=Sby9.# &l&!t֟HFI4ç{Ԇ +2^Z6(g4!S<LwiSLл޽zjdE IڭX[܇*""~툉&RaMI4Ch=V$z=bԃtqg"H="4<ym؁~ P8{$PSPUɚmUD_~ B ="fM*zɢV oQ'p^A=N,6y:$>N&-#HCo9I7&A86baS);@'IPFS!ې_(jIG pc̳yI&|GK m I)ĊHRwrzX<;IV%HGJϫQWw(FȝvƓIމŴT${=N23Q&E2'VtXdC , ,QPWj]pK/pkF "rWǠ 3x}UZͥW~T}gE"BH( B+L?tg9a\q0mȐ2dSwh,g.K40- -o񩶭cr:Es5NBMl2.zzRL%pC,zzzD^/P.73G#y6ojd'H3$+1t+(]O ʞq?Ia,RR'h"n'0v^ :''9@E#s\<DXSQ%gEK4y4G4G=(/ ȅ}sE2E:)IT&w1O@Cu HQUDE> Ec]sv #x찲5Ԯr/~;$&b7I.j cDL[R1(CXS!2DiM2CRcLiRf fu& Z, 5R!,ā̉PuB$ ̼F8龇YbIaki#7Gs8pCRQ(PCoO H5B@S$- 8V s6CF} E4P)HR1JAHPJHP"Xtc*ʅ%M2s$^zH`]@c @{ ^RINCәށRWDy>A K2DдY+K_9$ v!_Sb"5)z8GI%A%m*=)D?D$~=']P*,6OF(@>,"TТرק̘=Uyy;Q Y#w]cM9'*~p$EK7#"*B)I0^s{!a>6=N~W cvx8pcsSJͥ RեB`I HP`eUYrrp L@0d L DjRC3YTsHUNEt܄5I=!YA%'9=ə;jFv]fTJM9TA#I;_B9wRjJ8bFAC0eG2t|ГByLzK,eoRW >M`$[BOBa,bѡ6mfST4ȨL"4sќ8EdK63ĈxG `8 Nj,o؆E 9}"Aݛ.&C¸ Ƚw7ns;fwS9ݵӻfؒRʹ`02w& JL̬,  3@j) -$9c Pg'⡤7^M _lQeXmseU? /i= SR@~@eUtL=:/NB~Hv/H#3߆lS!fU;1,Uq`&UwZ W9"Ddӝsvd#P]ywQC[S; 5 bH'VL Ml(I `2h*wcŴ5Mm3F R\SJ)`l1LЇNJrIHyLt@(s#-(Y߫qHc|ӹ|o~ڰ#$Z9iA@~k]XUѧk:'_2AL+{> A;;zEKMI-m3dc14&&$>OOBA{IJ '8;z7?&ǟIѼ99X!IVa! .*M)eN zԠYzڡZ5eI' y"leo=5CAw2pXWs6N|r)E;&;ӈNLgRœM8NU sNͮN3v7қYp4Pe ꥁOáPwL i VUGtjbf)LHcBb9PLJJHFWSGB9!Ȭg9ۧ&YˇK'%Ÿڒb5|uTkn 7Tăt}6c7"{#$C?os>"'72>MH'PDp+G %HfC%*R*1d0&Cu-mxd,Ddbʛ4)$dhKL-dĪRP1XCJ:HDk*$@"nt@%K@09H$%`3 C 6 m%7vK6F,E*R]i44jZ%^I- 2MTV%Rim.҉ij+]]8ҐLM`401ai2L2D0eS %3G$HJ"S\6/Kkwh ʂsM),#myk;Sj $@tP vψ}qyDe:u5**}0Otz3O~ho&ql! s_@}}M'gpw>jN7Oo(i`t~ďLB$0@>۰7?R2~*=U_#E7$:eMAڶsK K"LT' ||Dg@<""(BYTr2"$ x)M$!%u>=v2F<in1Ng3 8|DՊB8 /PKYn!dIȇQ,UH;^ҽP{t6O :dcfC0ӮHܘA(2 5uDǺyg۲dHLAkU,tD`zF\_g3H4e) ;HA#mqɻZO(].H_~$4={\x٪8ZDڔ5pHlqd:)ѐBXHW|~y[ 2Q|f"7L 3 -4\0qiBA215V5 4=McAa)qzTb&uom,jQFa`kinvZ/4~B]E>ȘOc*{S:yCe0E0ؔfT@Ap. ֓}C%P_dǤ9ŶK)1H!J,+  GK$Xdf}l?R9G8:; )#Vmg'T=Ns>́TO|@a3Ku%A *G4\_ cìݳ78yxfXn #11Ca6DC"!&L -dObAUWW}'v:qmP$%TՕ|}*jIMx"ץ#KR,k`?D*."}=S IvtXd&D's 89YT[\@U;#UI 7A|)}9P;;ӈ,d֓ssrNbj!VJ*WŰH 78r7IS"ww,Ht6%AJPY?6&\eX0cHf*f7Y<"շN-'&j _^m]e'K7*qIWwF0P)HX Th2YB5(LJH@$bd#VDQ@a,SJGSECx$zI@J \d `LݧI+FXⱬ 2\49(AAociRUWA ci(r [` 5@]@+WdȻ2Di @*ٲ00(@aPRRbbb2KLi)LC$@$R$G軖o;DRj88$" (JSytwQ@;j#̪ C*b>[edo`?hZBz5k~wU6% bk ?37xwvG v{6ʢ@4Wx=ԏ ROncW4m-G.CE9yjhҾF߳_p86~HE(G|zyy5{1rR Il$쌶OC0H60N5[֯\A10&LҬJe93,hf+m&%""=d"s!;0 $S9 sZ'{0kh 62]$"\6ٴ5I5XEY6nkmp&7 H%щlОqmw~A/~?#cgOMlz)?>N6x kEO(^Z-jמy b]JRV`&k&ռmngκGdkaPch jJJH U@!`#Q8:ngg>`Z^HXeP﷢sT,0KJ)*E*T@  dJTyB%02ADBb  x\3^׃hސy!ء7=7]LH֗"tQ q&LVy2 d[y4ͤy&|޳u>T I58J'W&P1oqQj k{d܋*@ p@pș(`P()`@)P•e`Q(CWD nJd^3,W9盪5.{Bu!iSI-#dմ'X-j ځ"JJZJU1RؔҮڭfX$ Zr4R,QؙK)JdA&GLrDD)Ԅ ͷJ1Um:R%b-lVi$Y"Fb#hvnTضJ"YL1j6+ehI)jcH 1PNt;UyB(%ٙMaƢ2IeV*@ "CCИ *FQ%j-6tsU,PRB!+8)4ZtC(sMȘ#$9b7HD7 - TDA͗.ԔhHI`5(Ha.dD&Y+%ȝ&8NXf!CJ&X̆,hY7 McWkm^v*V_oتplPL]BZDEpďMF;j1]pCh nPP)d&լ%4C;9-lG;!=W޷7gr}x~Ǝt+Z2mcD"ڒ}'t:Fp3>6$ۦW`6da0Pԃ2^FU ǶLAO6I(rd:{u=}q/dab@*) QDNqƾ> ==^9S㣗[m 7∋L%22b'`+={zLȡ?5$vQC_{ }*dDY^hN'9 >w`(?,I YX0%~'t^F<Kl!Y MQ=]<_U"`~1w 'y{ kE5RD0V*ĕjɓUĚi6-%Z&dձkQVD`"N5!{Ocϟ\*~; "$qIjNȿ`X?y:W|<  z|tt9׎]%27^lb%RlL,a%G2Z-AIGs¢Ƒ{c>v>G0HX`:Gi{{?Fup~)E{N{@*7 q~>z=0)=H,RK 1T JْɃ(KD)&lG$a$F r=È$$ YJ!Z4p8'v3"ʔJP4 Ąz"GfB~'(c[kmD}˴;‹"@L~1vMb5Ja"bM0¡01(B@M Bl /Q>2=|9P #5R"zSҤ"@N&%BE bCq;?GD!ʵB(iQ8jT) 7P}/X?DńCSQI I-D`QOO="ZCNd~; #h`}O{Oa/g#QO3aO{}'y&ܴrT6 hI2B6F B$WQ)lSAB̫)He,3fR-Jҙ6U4JH@#0sG^E4UmlE#Y-2TF6+Һ6DhiUCb U8\i"<,-hB !D֥ΦI@PI,֞(:!/G|~3M?~ \00&` 1P1/qӜxm56(B9599ϻ&ޝ]o嫄~#~ h<"G$I|'kcЛ~&aeFeDҍESR@I)G*>^M? Byx^Ξ^#cOLMfɠxߢz~/v;gsaȣ!BDi: ,>(S>yʫkLYa=mV%JJhFXAVQA2H VA A=%")tC]>rH>剑(!jYoմ;iC]ErĎV"ERJ)KJ= "iqh"=)$D"TMM4(w~uCw &)*I¤PwX:b  xj(4cz'y $}{'.E5a 6o yqLi77{>X{4*Vi!Y nDG:RBr zRP(LeT!) U(JTTB$CElO,+wK$l7ER{ߢ0 <<Wx')FD8`,[(QlciAm-RQYU>ҺvJmY%﴾OC Rw%ȳoiįxnQI+5a?_MiE0+0D$Jұ5}_lOOO;(kֱ܇gCTh6MTHu'sRҔMvE_;sQ0ؐ4^]Zk2q_B4d̘? T_9!d,F9я]#ܞ8O.2ItЎ;ʿ ݏsXxLA.Ƿ=UF$ǕwOc"Zw|Qd!|$yI-hrޞ-j~_3\f>Ҩr'@2ĥPdS$qTDH?`֡#\&E"GTwm/@R!LI_,s5!^$Xyfē$j6**C)fdj CyFo=&; ଣW=N򪪪_LU(lDhRIiXa$:cbb= $6q …Q0FT%+RJowrf*(҃iM $s4(ׇ~e?TeZa8j0MöqUJs{C2w`@*B>~JE`c a<4 aPasЁ Д]x@)Ԕ:aXGZ{f-\E2205p‘rg^$%b[9*: FA y}PȇC;GixHtw'}| Sԁ}n 5B–JHB`zDa'Hcafl6>>9 [5?-7?N5.Ma7 z4k:Xl('-cS,##8GyU܅tgv񫗗vũ5F-B8faTخJZM4)4)@2C @")H H ҩ ##22&J!) PeaItA"FCL"@ZJ)  4e-II5``%3HA03([Ys[ol0QJ#%a*ET3SRեcM]Kwq1I]'ͺmj-'W*lTݪ] e $8k `k*a1]iTm j$аM,b䘒, # TԊ+EvIDZ("f cfe Hي01ͩezV! &% DKh5d0L Tf3\LeW^7X䨦]6 J19z(REGobg$giBݜ8< KdE䡺|@M)iOXz  _H9~v6Bxf@eT8.98G%Skx,j,kz̲obpi?H-T3z&XwaRPP١@>+i;*Da|;'CHk C2%3!&X 3kb jM]uucƼb"*UȄhG3Pl˾b^F{_B:ɨJ@CMU B<݅vt9Ƕ8<2qeT’#Sk-}$ Ӌ 'P)ThB!LښF+ipcJ ҆٣R--K,1WS9>aF8!Xᙊ1IlԈ̍Aν_,ygښ5֊Z̷LBtzK1Ɗ;"®#bu-- ^Հz}~~{"%IR:!ԱID?ˀ& L{OS=AK-`3ƥmm*O]UE^Sp} a+KD$\ f(&Zȥ '<|0mOO DTR1zHЬ@R&kieFVemd<&9M>]a|eQV-1."A\U@fhH ʯ *9fR2P(vЙ TҊ"?ia4Ё6%Pp$FX䴚s 301c@ɂ%2 Upxf2Vc)cR* Du1xnDk˗=~c?#^X)?@͔Ji‘٭&LZP-j)1Y*JEVlƍ(5XTHQ DJoDtD񧭼؝ɻH=q`O{ОwBx"qj(ic2"n*jbO.Q_ìON ڮ8"hSv(JpL@z? '#LyN$4TMq$R~e ']wt&3 q 2i@zݼ[$H%4 ‹ $R&p\d2&dfk.PV!և@ QTp%"Plj7iSeiw؎CGl2"QGc](‘ulL$-"@P&# 8b (Jl"pƝ ,8E%4K.@BQ*&Bd$5JE ݝy=g'9><>_=Ȏ{tWAځZ *@3QVӬw:`bL%i7 Ɋ7iB5;#`48 .ٵ!‰q11ٕ3WoPą*cl"-Uу:E3G]] ߊhf41sc&1s Hݑ.Q v 㦩x&jO/4NPw/;2?/jQ i/o3nxJ'-9 \f D;9v-VdO!9V/, 1E`m:Ѝox}`w? *\!ˤ.*0IVO/*RAN36] Ź1%El\n|pE]'Jr멖j0J"-n<]Rwr(xTW Gw1~P?QF<DCynFhk14nLEqtO{z-r'VuŔ : mؕԵ!w6E vo#&zgvȃgֆfu;bl}i> J/LH3LBjF\sh&z5*h4ыhZLRk)Uy239/صy^_LǧYL7&H[4*rPSOjQ'#662@UܘAkR3&Ek 49* bIO{"_76m$7[7\; uЅ}vYfP1BLj|lcdѕdmґ1(5uPy^N1F@m)kȞ9rvY9rr6 R̙f]$!ܱ.j٤v1ezSb,tF'x`zlE=$ P~|()xuבx:/6xIe@gia(my)ߊzTQ{FH̦%& u}BPJמw$ h#LxF=] Ӧ[\WhI' 0hƩ oZxZՉXs]w&ɭe&K& sSX0)2]IY5cL=I!M cmIe*Jh~ ~Ȝ[:0 m<@3kDoҧ]QεwGIcV(b|eFS|3bL:֛n8;PNUwէhgt6&e ʶ0zD]yn%^0:@|da ?؎ߧرj/~yTF T@*C``9Վ$㯌LNGm6C˪ ߫pvl2 wN'Z*#3ӲiÃTyHϻPdk-mdQ6ꐋy+1 )B7~A0kiĉTX 1_ц5 %8a 4҆<< Ja]% 9ؖĸXEK疦1훀W D$CU,poUyp ^S3Ŏp,3*7JMbIfSu @0-m" Z6Fl-`&V@r]G/ I\5iE[Q$R,ف 2/O|{k&$( 4#Q+b3| VOsm[9؀q < .c6KæG!NVz| M`q! gc朱$841dtY>jR2%4&i gKGP@/j}Mj(#뺒]H37>06p`07`*Ot[ttmAąBada 0 qvLvg.^kB !@00A`+ZCzxh2ռP3C􆧛qbemRC=a٦-`Qu,W%TSV'fqDݾEg^0S\YIiMX MSK{NGclgkݢ,8ءfG(1-vrMkW5ĩ"98CS!n?zڟҒJ||*c ChaƑ$TicI8*~o5i` $A><}i)YBbM(!0 #Z4man6avc9mX\})$nz%28:xauSCt}ppOa"@4HTZ)FWNϟP`,4 %D6zӱQN:"yCPT& w㵉$Û\G'!,) viJA2@N@P&) v-H.:58"JhmkFz.a"dJqnIГ `0^yWJ y#F,-#!. sQs6񺮯m@#%) d6&B(Jy R 3' ~5۲QױgXؔ"9U4$b})gWAdt-#JKi! ]{ڙ$h2-7ܹbsǑWHg9TX9IEx&΅|c*)GiMb C2e(]|Ĕ.33s0جy!'w$M258ξ9$HcC!( 0:2U)'-͌d? ;o9rsM}' ́ڱRDM{[<{ FNXd$iREUS)lf P1( _ю%F8^dfi15lm-5JJ65eE,@O F a!UnXHxbIq~mLnDb%CLxbHڤ$kkEimл%ct`fB3|,3SLqǜQ" =I]/zHZRǏŔArHc2+-Qt2tܞ 'u#$։'=r`W6wDApLkS:bA'BKKS9GH4mo 8vPk BHZZ%K'+#(ʃ.Ә:pꟗ?O)o`` HD0AlC< !tFpt`|/7 d(|bcLl8>σ7WurwYp)=֢ '<>-=L[T%6GvF>Z, * ~kqܡoemɃc 8:fŬF$6Z L$&+FL,GIY!|m_3R6m"r `o ţxi!Sb I oE\2 eM.Ri۩xTp;GY3ʏ+F6?t5wRFT}*\ S92sAH+MmoG1Kjm(6jeR@)p(2a0h*:wהd4$Wz21LfOw<9MI-ֲ"|7pg2nԉRN|8U{ӧ$_""{\8-(>`]R Izᇎ "'"Ͷ]Y S'7(g:iR]N:@8Y]dbL|eIU_ʭ;|;ߤkm- .D(63 UVilъ`hRLBC##I{Q]m7sr0#^Qcl SXbX4OTU@&)2Aed @6`܅av?8CkH{ ò5GP,%D6LSL;hztSR ͇B(y" 8G: 9Twyj1G@<1>Ǽ!9QָxE:Ĉ" J9rGf "Hf((}#5;6ɓ393x;I"ig/>H⨱Q/"hMp䰌(S$2 2ɄjM+:&:xpA $rӝ],h$(I&M&*+ڢ\NjXZ7K$Ї'xF"j!7*@ x Ѡ*a &NZ^bT}RSA 00 . $Fh"B%ź'oꁟG@AyA!j^z J)TBldjmrFt=B?ɸ5Kca׀f%`gW=oƠdws($Q"@n$ɪYVgMcu%ʤcrѸ1t2 I05<ú,=*hiE̶1!Cf"tp0̂M"/֡m IJD1 җlTWn5hAj۲;11 jjAB98rID¸i0Gji|D*XWp_zR>uI#0:iT~FbA(AXNrMf*ʼn5&FJJmM>jWՂ{ԗǏO'oi:v$ueY?GӱA:?ǿ~@͜y{_C"Z^hC|9MQW/E=Gꑟ}xRC,J7GJ凹'?wrIĐʄĐL0?aM{u4E*M'T~:$ ,#fQYR-4JXih %, CPm,DAD+~iSށ_rTR[K#(+?EM^* *27AA(㘟BJV_iҩD{r <GF@j?JOD}^R5RQJ&ȏ$A5 o3KZJ#Pr" )}y3$zd)b~0(<%_#N#D Ђ*VӈRI{a~ $Jzaׁ{yJ * W~dpt _ `ODDjZX!9* JFip drp>S(,#d-,"* Ltr+}F( B@~ۼw! |Oc7Sd7CSOC#_g:F)NJ{͉ u$ʒzU{OR''{uT`:2iSھg'#<'u@yR8⒬nN7{w:{~}A@}q.IMLH.C!7)slJa& }Dٖ5}RL$ #2&R9NtVxM@x& \v̫O p;vͿ/wH=/6]i(El ~w^RI0qdb' ۏ=p,#0)ri!SHP23A>':ZHy#ʕXkad+@^=dZ\ȨY%Ua784UC ?01yX6K,zKb;:ԔVR@IOĚ6)EYq=?$pKMyxi9H08$^=̟&ȡcӿ~VdȌ.Kd(\T #>Q&`??y<&#K JʼnO #u>Y&Ϝ#&r"б1SMR uA?@wdžIe~P|ZE*"ʵ$v(8#|i@r)iU6T;h|ID *rEibU`RX RF*vÔ`N&$[XU 'ɃRl C$FGjA8- 5E4¬"E-dRA+*mȱ6T̫L1b X*|_waPE CLY.n1r0ZC!qD#5`G^DxTӗQ1ZF̒G2K pG\xBH[LA#1~"lWCp1wKCbNnR>h֍HG$8sx(x(iァdP12 D)#y G3&K+|BM$ JĠf$vA LXaLU5w'P(U@Ts$T& 41#C 321Jn%B;X(]l6fLa)6tKc6m.88=ōTћ>X رE6M12SbY{ "[40[j1h0kZѭSH*SPڢlx7QܙH B 79޸A07X] $NGz("C L@14kwnդ"A+rT@ @ʄFdJLݑ&!]$K8$N";d7UOBDKcO14pm2"Zҍuq4P`Kkj(lt͐E@{r,C0HK1,aS i 5+z` +kRUcsK^s=(0‰$cF0TB.XT)8J&! ZP1b8F$ߖ&2(9A2u # ,1L~MJ)H &CiJJ騹b3^ɩ0P; bBೀaz>! (?{ D"0kRm dMZ,*GuI!h$;X# ~Y=_7П ٣>>U+J- *`e0ҘUm$Ҥ~)No!Nɐb[ 4 t3vxY~A E="x8H~wQӬ|cN" *PBT%"lI2C~$FzFںk^Y$ԩEi?/o`@ 8+ir)I*Fai1EZIcs3ߐ2HFjU@q 5H 2u~k[t GA7BTAE6hR \ګY.Z@&huA $I)1&zi4OPhmJ3'"A1@jd8ѓ# &@ɓFLB"ji)if~F I& L)lM6H "&CJ7O$zѦM4hD_* /(("ځ@́ިvH@nY }%A#Ǡ?$fDBsG*&}WqMc M2+)ٱ9:w%q/ziJ@lM0@JtzYgh 4CF= a,䪕,Rz,,˗+?zD$FUEEOzA(B2"H01!2!( *t(3UUEEEHUEUSȞGB;TFUG|MʟYgGGGGG>ѳsF8pÇ8pÆd9l4a;;::;(QEQEX(E EPC\8pÇ8pÇ8QG8pÇ8pÇ9QÇ8pÇ8pÇJ(Ç 8nnjjjrrru<;;:<((G<&;0 8aṹeOŖQG`,Š0aQl쳣Æ͛4hÇfSᣠEYgaQaFXp х:;;8lٳ4pÇfIԹrrvl裣 ttYfaaeYfYQQD0gG 4hggf;4hNΧSgB6pEvYe,ŖX,0ãgG 6lٳg 9;4hNN''f΅0|06O % eGE2ny;NS ;6QD;QBhaʞMO'GNX*Tjnw4va;tYeYeYаD*)p~g҇U9 ĺ<SObj*D~;gAFo>a558=繾!Сr]&Ϡ4ttYeYeYg)# 2`aFL"(ɄY0K0&˖E,YrdMcITa' vlѲ4lm 0ٰmM76ٳeM4с؟:Q>y/Ѩ8blb1后fԆI'ltf}QGvP,44leYqe,|'brEQEJ,Š(,0(,.Xg=C761fɂbd`=@w;!&hLmGOwrpCQEQEQ=y,YddYل0 a 0YeĢa;v%l$kK3J$0>ɰ]ȥ؜&!-E4X((vYr((%0BT*P"Wc nݍKz55"Zښj$aB,QEQEQEz0&Š(54%(F((ԣA(Ɗ5(З(ДPPJTzoY㵯,h 6htRQQ((=Yr˖.XYr˖\J%J$%˗o'BdQEQG兗,,&I0Ɇ r 'O%KlZݰ(QEQ芔Xe,J%BJ'})ZYvEZ\ 8&`w}ҀU[0}R~k_ X+=B> taYCO&'@U?`7~N qEA{i  ( fPC4x=H#h=ā>aH֤GIӥ!( @`\Wĝ`t},}H=Ixt#wE,5 Pu#wp'6}[x̓=܇BA LQU2zϠw >JA&I+=O'qalO!w7!NHA ] AlAU;M]]P*N#|r'tU߃k SfGa8L0efN>"FRqTK)J$WTEG@l#@Bj< 16S333+t%\q@/^߁\ceLV9O67H $U#Ak4s5[ʷ*Wqs.mo<T#pI= ~HR4dCm>?~?888TEFdOIffff{i$*B" @mY7ePuAzS!TPd'⹊j b!2!2!2!2,^Ji?bٽ4h992eda/q%#ilo E87q, A!sx873 'D*,1}1)BE?L@ËcѺt3n|lqzӛFg 6!rvB :4ǽVgw"8M4026#}/wV |\4˓bRQGngDЕr`S>pȣN|UAUDCf w{omоEEFf4EQI 1!< .-6lٖlM4UTQIEfffayURE7!BD>orISUV:~D:A(nn | 1S'TK P;|-ݜ͎TGpc}ęT1!HzDaw y 3l$c+ Xp(P\ $5&I͒ Qqy<6l8Bh$D4tift>Sf'ӣd1p`*ic=4u O1a :;<`ppmw>!SiR:s u=d˅d' $E $(( (J(~`Γ^Jy7}UV\Arƚt`{S=DB] 7r}.].<I!4DCh< 4HOPsѧ46fcZhf Bp-l38:0cs9F6i;f!Fj'8eG ]ThQdq,Q 36?UT(J!AEQE肈D(J!QEQSZUDn\qnM4M4UTQGNM~a܇4*pÓb0|&<MWs( jcB{&1[6c6X#&J2a *TɁ"B0>M* U.a!TA~gm&"'_YZI$"k-Bwcf!*1nq)x+͹X`6\Sv&ii=)p=ffff&\cN 1p¦fffյ6}7;^g `>#f1яV+x4MMG Ԉ$ꨞ%@O '*&(nRKo \ &!*yd?=RCD~R@}A?H @}"- >;$BGd>@{ܣϣ@1>7ݾcVk)_$y=}dPw앖^65@MgjPmUT}.՞Aμ{1zyN8ccQw=>5vfRUjjsy9irFlS6tmFOYvEw=8]/g8HPQHm/ vz$gssqln\ ;Mn]fvҕAk7hλgm6m쮕XQO|Ināc[ѯ=:wnm}Wx9{mdOQ|ȩ=w^׹w:1DN5aP@{;Dl1Luz޷W}a/f{tx\{o}qv*iӡ2:Zfi+k{ۖ]t.CJN{vaFFPZݍ(NNx@]W6G{u\&oaXwWBTۮ@[7.Tn宮y;lz˵pw{{s;i\;yilp67^qVyx6+Ay{ m۫z5ha{mӫ*ӣ8enmU)zӳt^8{x^jyνeʩwm/OVٝԍu.Umf:=ry+Zכ K ݷfmC]2m-:csn.{8s Hd! @A ɡ)4OShjLUJSQ44#&$dĉS &z$E=F44zMR"h!14=M1Ad) i)Iڞ@@"? E?5/5O/+zQs?`^>yBضg,` wMT֫Lh#LP0[u:Z,I5ly$Ћ7x\ DdxQy}azׁDUX@7&Pb>F}lgCCC`;q\v7;ͯhOz3&ɡ릚ixhk$I$$LAc'C 4  &$  $ &fff`&& u]uY=OSԆI I$`I$fd $~O>f`u445] t5]uY uuA3'$k0A̓3332L0IA뮳3鮆p8xI$I$AA$AhhhhA$13t:  H&p1 u:NA$I:NCВI$ CCCSCCSSH  d&b  fH  4 1p 4 0~$A0AALIA30A3:jhk0LA̒A$_Ϯ~||x0<88`鏄Ēckkyiisi{khZS`C]5OA0AALL$I$O'ANA$AA&8|xx|xx||aFxG3cq 1]ffffzׯ\zuצ3:믧ia#OO=LHbba$C׬a:馚hhhhkAAiDALL鮺뮺31LL鮺뮺31LL鮺뮺31LL88γLLΚ뮺뮳3L鮺κ뮺A3133:k뮺A3133:k뮺A3133:k뮺χN:t~?g=~=zDikbp8~~?gDDDLFx ᮆzzz30NhkxׯN:ztpqC qOO8xp""&b`ӧN:DDχ|>gǯӥ:0 5"""&b"""5]u]uI$5~?30p͝X|:}uML0 p: 뮺8kÇH`0 0 q (PFg"""gtӇ#C]fffg zi8ƚhhhhiiDDL뮺뮺DDAnjzk80L8ӧNN !0J& TKW_Tc ږ3Tn[_!damRX&C4rLڋ29U4#5s\aC0/nd2x^7 æERI PbX k2qn7\5qp ]3S?ޚrӖjeZeZeZeZeX~_|y^! 2=%vo1?Wǣ^4[`0 %`XI`;vv{S-Yzr7$Gyn/P/|)C`_7'osv_5gz}W?$jIII$AAAA,>Otӫ鯮 $CCCē]MLMMN>SēSric)i/<_c>O>3iiis9g+tӦe8ӏxjvqgӯC؟؜,8o߃8-NŻcqGuqi A.z/2L8' $6x|{}"" JQy"!"Mb\O=,[m;dNx;I}0yy͑؈&Oflɑ9A' ^x{XC||P8zu{)>ȞI 00,iV5+ZdzOIϺ}gSu:NSnnnnl2X:tӧN:tӧWWWF͙2nq770fSSSKKKKKFyv<.Su8N'dɋ+&Ze]9i4Ƙ-Ze]]9i4Ƙ-Ze]]9i4Ƙ-Ze]]9i4Ƙha$`dI:]Nidɓ&LZ?&&.&&&,C,I$0,2$C 2I$>z>z 888hhhhhjjjI$A$0I$$2, 0 I$C 0 I 0$2C,8)D|^%{c >LNךll)~@F]/8L\I\s5tam6Nmga?;3x4#YCAO֎͎s}O\w0S2fNɵnW\0!e.؟gi!a]B_]]K7I3\bZQz3G0O|plYY-ˀ1雺RR ^~"WC445^ CCCCCCCUsp=?qqw5Z6]u/H/Iz\V+d91+yW+;ZΗKkf>Oz|'xw8d009&T87 dQvGzI:'$(LnKsLp:ʹsِ'k~;kܽp]gFMvd3d8L)KFaŸ,;6dD$dep`X>!Bw"X;Siradދc02s_jI`dL2c~axlu<ԒH$}kT!xÝ/Ə{,Yg[x Vw 6 ~V> Fo7ts3S&o1dœ&þ&Nlzs xH y2pF5qdeZYz@SaEŽ5&y&-2:QՍ$>~FMnvɞyɟ߄16Iؖ{Ifa"C5>Ϯ 9WpF 4hSκikS}N_Նz2x_d:6x6|gg'GyݭLfXlͭqq8\,0ѣFMLٹ3۸D;9dBg&g{TQLK=*G|xtarZP@y|zcv15FW0y6|3g`P&`N92Cg%Ohr }&z%`t2b:pNIbi,Mi蘦Ak-Rr\UC!;>隥~eS/y] `Qs, Ygjjc!úݲoT9sLJItO1r)!`yܙ^օxHD$HH֬vL֏G_y4CSSS2gSEM.bC~MEE܂/yb 36)ry'{%jZjW֗ϕBm`5`%Y` %1C1Qz$Bc$ۤJaHht sF^2KCS ,rj]~~r,ODBI"PH>}w|.D{XI VLXqa)ht `_N=#?8_ 99999?s9g3\kmQ ajrH4o]1w_߲+r\%2XeYeeYavk0ßXɯS+juH|#+I~bjhD0Y8J\6z,-byUtw|]\,1[ת 0l&Ot&L2xm8> Ml %0؀'|l^NKŝ/vNCeig[F>[=\~^ɊS-IJrE%[W 3o_ /Ap:D1%跬vtoX) .:Z Np.4ޖ!" "[9,x4~yzQ#0l[c|Tf7 CQqȼ֖+bry[,]KnK+Ku"Ϩ|:Z>npHH}XyZ,Œ$6H a)%|ÓBH"[?i8~m70ɑ??uM,pφYC k4 C!dr1=47Kt-KRI$Z0-M)qy0HK'bZhUszP3eۃ?&#f@%( 0p_u󚙚Z~Z>, p0qD\HHHHH9kƌ:97

_p%ҩĆu1tl%0n|qwbH7I&I<&8zHǚ_BmvNMIH(tc kt:,,2, / >>@@@@@K,,,,0:WUu-S= 60s6?c0eۃdjͦ}<-Onz}Xkqx_9sB^aoX] .% 5vpѐ9c` VZ[2eY4hیmm;zyǷOF!gt x:}}O`x&ـk !cVߠjf IX~0@u mK<7\?x<, 0 0 0]O/59sq `p@T# ѹ1 nq=4q09$B[|Z]lm9<{ůDz.r|ZE߁1d 01ǁg i7 9`$!ū]uun[ppn[W+v]k^_C}rnգ߃ ;ssssssf͝ L0իV/hWF4hɺVٳG'&4ag]Lz?eD@wZkY4:}uZ+T߲8B9 {P<&lDp[1y1f000!CbP95!pۄ"PIB]cy1d&ӑ`+>Cָ7Z$QkHue|6Vrkj:^oyUƜMۚs q =,CkdepI5UͫR-*Go)HxG|값Z^Ara|R"ށٝAtab_@\ f !;-.ͬ/k 2L1 0 F0í@Xsc$A {CAca_I%KQc D.tG14O nK2c[9~7|iWSe˖Yeo42dɓkk4mv]zRȁ' O5bI$y-(MuKbb+|/UKbض-`5F!='E~84fw>+ ,|yږ|& }1;ߴraOx4aSc0<ǩcw<84v;87<3wfFgc0pwJ{qL#HFheosccnaVnTJ;wgƇe_6lٳ5f͛6X-]|#n^:x޷mF2ɆXaXa͛7l,4a}0.ng&e-=xvYd 2\r$IkpxxtwWGUvdɆ -Z|2W''&nrv:듹.+++#'{ַC8sF>\jirr|rvvvvqqpvuttNΝtӵÇ.]:vv'n\99u×.r,asN;t۳.2d52njyi99952niy:tiNeX^'<ǣud<^..Wnã 0 ú'ѳ̙4oV^ 0>,, 2Iᣣ? 07~2mg 0X2d-MM-a -777=1Xd6y}'Vhé]ppptpttx}}1}ja`78[[YXbœ&LXbɓ&V,XdɓL&MMM144馝:tLˈ8\-S%,2|(@L11xN8N_ZiN_)tM^Niӧr bBwHMt778aB$/ӧudzBBl .ppײ^{Dŋ' fX7LO/^ӛ90a9 Fy$$/´u>tdkn 70xxxx8 ƳCii|֫`xE@xHNC8N8w p$ ,Jh0$ŅX[7C0mxN8NnSʽ'MYeƚmCGϜ^a1eV>O}>:tx=Lc2i˓=KzN[n`8gѩL$5!6-uIKOF珣u3M1LvfgwsO^Om\{--fX|5lYɸ41XchnBs!! =C >xGO?iLrf6Z95 2Ԙ$1,`1c!c#Uc 4n9뿮z_T=_W:AI; _a9 & W黺nnMSq$%0t8  n4 w]wtw p7 w#49CpMA O$G 6v T5$ ijl 6DfTuflCAvTd| tUW#yɆ01sp|oÙ4 L\\D! 0n9/C=GձciӧSճGe#LǏG/ŏCmv7ikll~Wopn/k'Gg3˦<KpOuG.\5)~ZE Ybi V?q5&39N@7YM RID^u:>'S~|_: 9~~CrSt|? K5jd+e:|O0q8㮱kT|d;9'd;dû:}'Gƚi1cpArirI&&`9 䜃rNA907HCP6a6 gg`6 P 0t C@4M@5 ]P Xu MSWWP55M]CPEԇP3 03ssZt 43 43s 334h?_ Ɍc+[Ks>:uuy_?Y4ppZ*j CŘML1q1LS0̙ohjˋW nXf4+K,emۗ˛,;Yuamgi4cW?ijGEbʼn&r?qh-&i4'O{'<^Ks4--St[^zUpr|؁f~M?W~<<'SHI/QoYn{R{˛n,mepm'e;ٻݍ4W,0qdffx~|+ik,C%&L 躇|+?O3vNu-a *?D,m $Fѐ\ZO}l{蟠|5G4x?T.`C޾5|ֱk1c<:\u0Pec1cHMFc13 0@T ZSU ƴ5c1(NNI^raa2cY0^'v^/ ɖɐ;O?_a5t5]4NB ֫ O[*2zF*~?r}t|o^WZ8ppywygtm0utto3h7=*6ainlV{/WWgྯrFLcWb_iX__9łL'^`%K.Yv_@,KCFzf}@|8;i fx5| k5kֱ>y>8Z1cX2,0.rwѣ1kVZֵm{OiA|||O d 뮣̄#$a!8uz'GCM5]NNUe`V2*}+Y2\X&BOُc^<' 1 Z?pMPygtu:6[Nw5e b6e[4jhٵlkoc+?3vb:?v}C`O wa Ys?65/I`L&Ar^'yh 6Yz~v11c1c}odIq1c1c1i;')&a 0,0ÁFa&6g4Ɇaars9988Ҽzxx۷c'3#vk_ް o];_$b~6PUVtm666:::Ow2Ԟ7v{g !<~ Q"6gEO~'>Sdh~Yu_OfSjT1LOl7$2YX<~15cXƳ_C}/_콖fcX10o9Z92,0nj=|MۧL;i9q'Ǐ99e 9ronD_a{=/tpSi:_;G. BBRblabSGVǪM0M^ؿ/oy7 ib{mJx7}d&}[w^/ҿ_U_U?ki14ƚiO:zc,Xb,dLdLrDleb 0]vۮC>.p˕&ۗƉJ??15V5cVj(i-ZM4cjP[*ZΝ<{gX1`tM<^OW'#KI45?ǝ6fa1U-r᪷2_@/hq?`9nwξoUnVtpÇ\rۧon:alݓÇ6l|>>Om͛6|aX|>a01ǁ dI ~_C fIS5}c|r×1aٳ&s\2Àzk5] x8~587;'sjИ>N^: u] MMH$H&` <S||:trpr^aL4u^zN3331Îe\\8qwwv:Suoˇ/=znd1wdv08miMXëV4j.k7cy<7WF0鱱Wd.TӒ 0!7M]/ы,bŋKsssѩ,2^53L15EY/lK9^\-XH{1îenj[[\gjn4GX0Rhl'4޲/nazD?|ǩiL2HЬ?qq]8㎜t㎝qӧ=_c2~MC0)Hh &͛?l a[6lٳw88~|`5R TBIhh LJˎ:㎺qu֍4h6yzY5>H'O>7uqqƚ4֟&y;5CStNS~uGxуy^alq~z`=! 2@ Kц2~f^~I Fc0P/h_f1cck$'h 0'!p$NƱkƱ~0~Ջ-L2,LFUWNf2<㌱1kGWwLNùjhY^Uu].S*X5ˇ7=y]#iv<_4|>ZOˎN/yL2aXdɓ mi0aMX.NW KSs M-ͬ4˗.Ly4˗O+M2-2-2X-4,,+= 9eNZr c-4=!hyNLSB/KtӄQV#(p}d NN)b - BPU*:MSǭ~xnXe 廆4;FX3{96,=Gxx? p ~ˠC/0dCxB_zg` d;<$n~eY0ɆL2a dez+^ɧ?IhM4Ƙc,e1ZGy.u/hՆXe?O xSx'ɉ*Ox/ave}*u1tWipN.fj+O3yyZiC1'@- Cp=S`1LC#BH,KRPTT1LRi6a4:N|e~b6adLٛ6 $l Ց3<2c򚆣 @B|?!*V߲f2LBW82.qB_Us=޿qֵk5aag]nL0?&ieZdLi5cZ5-ZS#wRhXa&zwsNg''75rnWiv<#ׯahjjij`1{̟>'|C> ,j**j S͘L1LS1M}t>VOk{C&Z=Vűpe}3{f< ָ}ײZ[b B_𘤇B^0;&f< @ TvH rp efܙ7nnm:S䇲 jC,RLsd'>Ox|?^Jn!<l BBVP1 ɳLS1LSps|u,6$dٰ!'Ɓq Y2&dt_ RxHBix "jb칮ۺL4W%:eTHd<xb(xqˇ]pqˇ$ƍ8ٶj4b`=WG30O'h{f j G̐b&&!p$A45d]Y60ȁ _岛i<a2}Fv_^qp!~Sm[$$XL^eCx6C[տs_8ÅÎ\\.8,eXrѦiœn'|yP1~B j*>Ѱ>e8?9C_~ܽ_T 4Abq8Ó'\^]9˗O+ƀ dћ$̅r= BLdP y!SlD yZ@_Pٚz ?~&_˚kMbX?I ?yO Ásqq}B TUT**Blٳ 0@l jUѱ=I6h@dɸd2?1Zżο3Gv*3s1$aj}Dz&K&XՖZeCy:tӧ.8M4,]GSy;;:nnau:[4:2bn'ɋfOr\\,\͚Up]NNSTɹqari2nl2YNM&-͖&˩xNZe˧,t.rƦ4ɦ4ŖX/Zz]N9iih)Ź&'5mr0pZY6iVadm1l2mLO'N:˦]Zr˦Փ]Ibix^W:iiYe,jiSt#5\Ks76-jɭYѫ4h X^dfRb&&?uY=?5hIQh-h\%{@`6-x @pX]!aB\.@PahC8*=yOtrbeML/zc>k[K)m__,ɓu&dd½k9ӟyxuo[%f rZ un7v%__@Ll;FؿZ[ن:;N8pˇ90 1YqÓ8pzx&n.5ԯ𛿲eswwl1ޗp,aܜmd z×.<ӷNSǏOaۛ2xÇ 2|nlٹ匰``a?N1 C] dI>~f M LL ^xO.\98r^x瞼գXcU ,OxO[7nf|OH'>~~``S]I tI$gM~M>_'&͝1]}c1d.NN.....nN8c3<|<||<9rvSL+.j⸮>]j:im[m9mKVKS^:ƺV5[۹'tZN:Ueddѷm'L$-,X:&bV_0K ZCiɒ%Ǭ\ywGA6VBVBM&̘b☆~G*HaVo5$M0ein̘d19rNiX-[&99SaɆN-2G58rj?L#8_sV7]+D@P((Ba6d0pL02 fIad՛!Y dÓ3y'$ρ:ɴd}-Vt9bꭺZ 'ixZ`q}vix@@By~ɘ\yp0000Zeh?=ɖM2e-2AM=K'+zGjS'cvsJrra|}P_h}]ˎ\]M͟MM֘M4L,V:xr+adՆI0UTT* a2a` lvLAUD,5*5$"J0<!<@!!!a(@_rS[6}!qh'}'T>@(ؘi{ B`]W-wKcss8r|vCNMZq8914>@ڞJy#b4=3jիP(p fL0 s <@ff` !7ԓ w8A !ش> {,pxM3+޾Xidqp+V,do'>{ B{ɪT*2 &0^Sw I*(U پVL:yP $*bYV xڟթ1m7~7CÀ`!2;0& 4hAfٲLvJI&<@طtLBv^M>. =Fp?!+~7bzLƆl<'x`G @dMC0`&T<\`$@ 65 I>u0La=W{؞.i Uc4pkx?3.NNno#=ҡ !&a͙ԓ܁1{yvI{evO>\ b03\û; _WFǃ~gv@|܃UTMt{p%^ !P콃 1vXc}O|σhx<xcy]ϱ<bj16}_kMV/$'MPZABi_qyX5ZZUOD䙦ip\hO\A\jdeJӁK>YbźHS<|Oj;/t a41y4+{3zi]]Os^S = ?༦+ijs[_s_ڹ]N0{¶2ٻժrVv_Maa/99rpf͜1''-6poysf훽xۯ%}\\B`L dkcc& 5:z&ae㓎\8×.=~w|0MLX|8p 0Ç>O͛77nݻ|>6nl`bc8cA3$$'L0ALjjjhh`a=:>×8pϫǍyή;c2lݻ|0~O󁁁0kji?||hhhtxzz q>3x8vpÇǚiNt:|u&f&ff&b&g8:Xv4mt\ekVݲmZ4m..ZŃƭ/D-Ko3.'xL|zy87+|Xtrz;my|:]:652mx_/k O]bb|C''?NǃCʷVs 3>:z{S}Vja^iC2ZiyG]:<MMZ_ǚOA`ko-S425L,I,-CP(&i^kzqwexUYp8+p8+'t{f{RK0ZF!!@սh R$t7ѣc:Gc̉&}Ff$&RV{?SWw2üF^IY*FUa`y8Ӎ1]j8FM?CWv>n~/Ty!@/ T<%Z(р$IљLDŽ<¡Ta&[;:q2~g7k.ljc 5act?1ǓO $2a$$;Z/|d00!1 x^4rT!aL̆Gv  H?*dђhy7NL}~.Xp|O i㎮81o>C7txno>wh;Crrs<e&<{gі]gdvLp># ë'\5}MӑP9≸pr\\QX aa3dv2Oq'z_!Vhanh.[y='7w냉ry>O``om 8&ځ6'  Mblɸ.8MY!AB3a/-DRf`l,aع/ Ա6- MaXrvflC :! rje- _2.O.qkZX\O{VchM,tX櫐!r r޶DNd+A/sLLĵs\5j{f3VjhիVNN\;vL 11  f"H$>~~~ gCSCC]Mq ǁ= >cx];a2nlݗ_ ~O?bbbL$|uuסИ45445t554Cǁq&&|t׏8u>0'.ݺ]:ӯ:k3:뮺k񌱎\]]ZL-5umt껻+aWf]8jŖ82onov<<]]WWVͫfSv}yܷ/M -L7O vKSK?%x W5aeeffmKcaL2~X&ieOb --:63Sl[F-U ir9+Wuttv]]eh4Jڙ^.?>߼unV lcbu!-  >&Yui2'nœ\Zrˎcʿ).V2>K&%_z1K\tXMiOA=bzW,GMť-H9#/- IjxC\Ra$ޞehZ ѽyܼtxe:8蟸X8^'.Wg{~j2Ŗa~?^S>Cdɓ&,1dœ%0.S]dɃ'瓇Ǔ|X.:r˗Ntӗ.9tt,u1Ν{s~w~^(B6g {ꗧem7{'ꇢyxÀSSۉS[?:;tGljaEO}f`sG'C88::S<Є! /@/صDDn}9󅁴 g9tNaO<Oho2s>99K@U@Q͒z0>j}}>sl= 60SM L/;NXaxsNa͢F Nl; O>ȥ0X&}crj>Gc96̢<٩X|Q]^ aO<fAXwp3 rXq(|;>9\r|NNSSӯB5M0=8__k.r9r4p33릺|>>?=__\gVLc.ZV<3kn,c:uutcLtH,dKPbj{OcoNV'L[M.y3yv=S;.W+rsWd\aاX2ƚjZbjӧN|5y>ç/U`udfVF3cX0eb+]jŇGGKs}./>ӣRVl|MZ?A# 6 Z՚5cҢa6 `RL82v 06I/韤VLX+/x~G5,<$NCùP7 w%Xl,ijzhPPBu4I$򅕁I,s1s S7ާZ\Y qh5a2hчÚr4w=.'zNMYuhѣ#0h[.'w^ձFC ^V#;Wjq 2 V!WiV'q!伫qZrqywtp>7ƩF{ ֭瓏 #'Z}âir6"`Ջz|stKW}W9N+ŵkҎF MGqZ,.0y^WO?0cUn` /7-p a͛7l1hц]׏^6lիwW\1c,m-۲ׯ^n7n 0,2˗.NxfzckF\NNg+ aV^:mMH$H1u8x}t~t2}\8˗jrѳw^8]ueۻ˓婫Ӗm]V0+۷hM[jɌ jw鍚={-^ws-WcQX8=st6>'OSԒM'8L;NfӼ\ёgd43X_>9e 22˦Wpx` U`X&Id?I1h1}ķ{7rmk<^{x ti<[,Y54ӗM?(-Y|!~ h6?`hjjOx>1lnlG^⣃0Ha2|'{MǡRmUp늜85f`˄No[xNZi>KpVk;aqר/[zCi& a`p z:b88(^$bx?q 2?a0/*ԱVI,`LjȽӻ9nijbtGqsG7iQw=k, ]]Ν)KSK#6 /A. {ݖK=F^rra|Jcit:=cOܰ22F}o76_jmxx^jz `i߂~`œ-&aeLf͛6n&-Z2zzٳVޞ9\rVڵl˗^xn 0 Ǯ\9rp7lճhr&cv0S]M t5CCB}C#\L Ct:888zWLz㖮[6i痌<C׮ >$8qLjhhhhhiu:8kǧC_kt 0ɑ8S|LJ333립뻻Ã27n¸JӆkLc.Lͳf2ٵ{yFc,1vGGWWSݖ_w<|zs9Nc/IzB~ 'C[[V+΢ё 閙2ZeYS1>>Ջ++ۭWfٺnN'[^Kuyg3 5YyUwKz cѪ+SR6#tV]\a ; Эǥz[Nku˦V+1󏇇13X|/_ }9Y챯|.qH EhQ(\!ɨn yFͶ 2t5=j1Le V1`gGGWGGjwЂDXRKԄմ3 CvINfSv\ͦNp6=;PjYeh,/lڭj]  1`{G>kk꾧y˵b,jw=VW}KUbd'mFL,^Y/{./NW+9g+N.ӕ (peVFX&VU&$k4\6f8+#aLa>޷eba+ \:pãWG] J4 %$LE#huqˣXb2=V񽥭|n֞,{12qh#FWjtuvӏeicc=ӎ9{æIG_r*8G K!V3a¼Bd1U9EJ % K5iu2[Z6c m6Xח58\N8u5quԸcZZխkuIӝQӜ&quJ㮇\iiikXJ}GgW۷\4nݩ<9BԽI)x.cUe6gHz9IWM4ɌM5i1cřcic1kZֵcֵccZ1ֳ`{,FTW# r>2\ %78l&1ӗtrF۸x/^W/Ia4>kX=TR//^Z+5fs991#Oe\ Axޚ-v\0~+ i1d#ഹr6Yq<^+$Wv>SLLՖe/e5=,fgY|Qk'\%G3c,aX,05$%"vh;/F-4ՌL`ջݻpvۭZiV2׏ǖk5u:uκYkf3hk5k+_LJ ">s/.xrK.^lc' ٌ^M'g|vt ,Xe}.N?9s#s7ɉ"5/Dhv&!{OU,pSʹy~T]Ǫ55[nZ\׶NffcXkl~0ߡ.?2\rp91imm2cuΝsfEh>k^yO}{23&fi{ffffffd?+»*G޾IO#q0d^HĩyaiG" \B EŦFFNLLC#'љF#>?_# |up =x۶غoOXݶ7vܰӖ_}㮺.8]uۮv/uVnmۭ5ik9s9:8cY׎qN{k|}'&kZ=s4ccLc1cX1c1k14ֱcֱc1kX֚Ƶ1icZֵk1f1cֵkZ++m[iMe5kY*C/84W5)~{OGz=ե6V.n{3_{.EÎ9+\Wq.r\9rĹ9r㒸mammų1Vc",,ee+ nje\uuΕ\Wr\uZffk1xz'` E {瞼ǯ<.8÷nuˎ8rnv˗;p6XeXe2Xc,,,,veYeYeYeXeXe۶hf7lݖXe[n,,Yemm۶ݖYaYnvX,2v7m:뎺8qkƼ]su:kfkZֵkѬ֚ƴ?qyW>Im*o}hbI2 )Ocz12X;x8tw|_sя=c3QD[Xƚc5kƱk5cX1cLii1k1cX^jl?z/n~ϛVs5/OMl6MKiR"=+)>r^e>%151/<VEt:""Y䰄) xVDH 141eZeQ#LM+-+-K-LjiֲֵEL c&F(AdI))5Y? /ʊv}5>C:uGz4 A ut @X@J4 @s11p wSS@4 7u{sN2UU- N]CoWS㷿Ӆ`eLL:kKj?+h>{=^z^Wz^:G30 3j;>Qs)Wji~:mbBI`qrGw]{Vðas\:]lklGk+k+G+⟬Sꭏn(Rkf\ `:Cuz4hѣF4jjjjG8p>&LqrJ%RrXq{x`=tpdц52jdťkҋc1y04 m 'Z8M/ռ7wyS+$UڋKo>aNٹe,0'c_Y~ ʏ >¯E|R&ǹOŹn Y2a:r'zZJlC1 5ZxWaWsLIb ab /ds:NmazϘMOz Ҹ8_H+G]7̘d<{{RlF r]A1$,/!р`(Q%M MO?kyL 2ʷslq0ly>f3^.Do&+aGy{Ia[^ ʹ1x^^桋vڍcUNA6wV+s/G5Ȟ> 1o ڿ, 1z.~4ݭlaGv<ֵ͵kZ+6}̼a{''CG'/ŋVL]>++yWt{rw9+S2nfeeiimi[}'vty6I;%h3j{Q{'xy䘓2+FlȭF瑺L?[ٱG+U6TC>ze66ӥ}<\3aL2œuZpq;'.f/rɓ$Ų|//5 0m#W,-.qj_s2FzacOY1kR|纽0 0CF22bU=GXSc?>o9dɺɦCs,'%^\֟w-WJ}#Xt;Q<k>k{PT>{ƪ|XvuU&&Z-1iE*7VE>r>#zdIn׼NKM%:Q8Y|-_3Xᣎ#цe2[ny=;V%ŋ~Uȯa2~&3=cuEǘd[=2xz{qnnwx~v4n|jK.<B 8ut` &T.H^ܘWCj;\G|*M2VO*O~Qͣz̘Wcu“Ӻ6hڼ{7n1T ͨ\ߙɭeW.\&S88Xq1`n\mL*;.C!` zC&m'=y]|`hlr62{/ E7N&j\'e9 LM c{}iyY\n1p_`".O(Ǫ_GZ=gqZUr XE䮚c[<yQjw /::ѕ>ix# :+PxZm2_X>Tx<U'Wqc$`1x\Gc ?NgyO}cQd56׭_n3!d8 %Sz-A[鹗pdZA~&rpbвܿz7Y7[}l\4zQawZw09ʇꭦ(am ~e63&L;/}WyUzL>:ӓL4ƚ>C>5j9>']ϱ?J{Oy fzQMLX1=O˫)e=KLq|r{Q]˰QӺeNt:a}f-ORb^/9Kv;U jhSU|ˊ8zH<+g?38g9͙:_R6Va?O,_T^33/{/2dZɆ="b~}'Ou^%SEbǴ%=~iF)[O}= vR[/{.xT{^gG@H ż|/N˧˕r_a|SByGld\eXgqZ;A<Xm^Ky/!c2J)j@ J/ŧ(Į^%[Em}F il1斏gi T+`ɹ8fe0pD1BSpN;Q>.YeYe\N\,,,eYeYeqrŖYd3$j1sK#$ow_-4[ɲ3Y,T$9999999999999997Oҽ2̘ba/>I֎k:' ꇶɪ@p@=$d1 šH1MM@o7 g Fv'͇W4+_cİh}ZM L]ߧ馚|cm0ۉiz=+YXXdS/MbX\ܙx7=z^wҼ0u;i_+z>R2>#|Of SE4;LNgnx30&]ɘdznZx'ʹ| SYd 1p|اʗz^S,w[g w;(w IJIZ/Aag)Ot1_L;Zϱ+П5K(ѩ>ړW02s4Z>tc_S>0_İZ\SRnF K%2kU u|j{WʆPr~4Th*xMFUOt'2X4yuۓL57OU3ZSx7JxX  Fxd DfY|͙38ɓ '*|)MlMybȑn$ /H *6uO4ziH˻3>=rOn|:-L|.ǹMN"2n٠H,9OD14ZieD6x,vѼ8HJu-%jL^Ijktkx=KSEijiZ^ex<<iZզS_QMNzf yxYX{C޽&v10ɖ'ixǏV}LU ڷ,,6Y_jdx~i~3!k[2ʚ5M$ 6.M4|\ rXdѩiJ&bU|WLcxJj;UyDIsM0b;t-F*QY [)KkZK9Wabb~%,&.F5jxM)Ww-$%R1d%N崏Q ]>bSVw51yδڰϓ&|٣?L=W32lz/u!5Q[{@?v԰1NpJ&~y!0OyŇs{y-䰾 ''3p 4KLz뮧N5hl_y!ѥis>W OCd}dMO|s<ҷ/z(iW? tm=pL2nRWq<ؽˊne!Il_ 70&YJ2L1/AvhⲦV^S ^#2v1nwa9]. 9]s*OhWܝ%ե|*N:Fdj+&YDx76mX/cʲdɓ&OD'1aԴZtiidK'VɾZahQ,S!c Paaa/IY;7јwVf 9aO5_ؿN&hq^Eo2Vj{jdxм/iں/%du#ySw[ɺxKz,5V?Y1eeyZ^%eڞ;!as^Go; skWwZEWKnzkڍ#t7sUR`Օm!]-I҆Sz Z6NV]Kj CG_i~4(VLZ\0[Y4~a~pjx/ز_m{ R5hwL?=F=+11St- S&LT9윃\:&), $*Xzi2>18Gڛ#'œEswl<ȼ50^O)_7]5r.⬺}ktדiqF0I_YYPʶrrl>LIf+ mYɠ;tڝ+'O752ndɹ ̜*=ՄJdOzT(d]+ -F q)ܛLEd\Xdb]S}ɪb1较E}y}jظX;/Y~sdc#VpSSˇN%1jv\K'-WUZ8ٻyы ,4#hʃd{Չ]j#^zRtF4^*"LafN67z}m\Y9[J07[AaJcZc-ڕ l[K!ڶja0ɆL<-27[/Ir/e8ɓKl559774jjj25Wj5Z .oM6sxoZWT/ )ђp\:59otnVըn[6in,YS%m٥VKl",CR&EsNeGlVʓ1C+AU6s2SzI.^NS,yVFNF%8W3Wz!y7NSSرjm9tݵܾkKYBn`In(NJц9\dWԦbuxܱ<鲱0ZxN4FG۔rɞ*F V6K4S/CZ}סL\Mj|fd_!ZKOp?)/Wh֧Xn;e?}jw\e/{T|//KccL2E_i-;OYjը喓,]N/ -6[,:-=ޙ_b+T3SQsldYa>ȱ;+ ;4Ya^^J%xji;jjn=@ȕLҨ  9MdɈdMtM}njek>*f^q8\.][ӳafL2?9]WyvKKņ+Ւ+_ݶkОB?Qyrrqhar7\N&-3.W&`ŕbk)꼫#?r ndCnZ=Jw>m>j76Xo3'g.և5yGʱSaU+ʻӚT_f%pz 貲jo8:8]KWez,6Zh{W9Gjֽ'wQg.&#N 'Ѳq^~h~&h}Ww e}cUa{EeN7_bj_J}J X~1 .= T}‰v~a ed˓~AØfahhZTWm;W.LP7@P2wHCspFWCk9&ilģP(X7E輟aq8O)s9'y[9\V&Lem<녤Cj'NKU z\bK T6 @U) u=K]/YXU(aL999,$[P$ xM=I êbY–,Kѹx/K}קgZ뫋SL2bnnlѡSZ+qb0ܼ x<*~yhʦ*v6s,X ҭL$ҒKGsmrȗ {209N$~'twWvT~N'iɲua~j}&rkCCSu ,]2b0 J4cɇIjp2z:.N'mb^a,CXN&/uF'_N{835ieیbidy_8NC;Wf4rcM&*#uߏI`, R>5=ӧ%WiI~Du\u``e~O7[,\&L}j\\LS&CѓsSrjjr}}-EdGSibx&Z\Nf&3L0 g&Gkkebһ Ng3%Fe=/^7޾|.Vb>s&!ɊWX,-FSK/TY1m6_bdpY\b52qf&{F%VJŇt{T} ֧[h6,YS'+ ̷Id)_zH KjLOYr?cIo2K&: *J)d0'\V90ř6M5fI0>嬬\?ECIii~{2׶XFڤ>3Q{lePV*vӓ-]j#Wu̻*Nx15M4ehrJD҇XU}Se+O`[iy'Ik?>WeQK-:xIo:kXad 1:jb"|Fe{5 n5W+>6-Rĵ)d쑋MKV̯MxYxkrorps&[O(v|Fŧlc#F^{W|CTUGuubCoX}Z`Lڍ/iN;|%XbXae{XK+TMES,)J%<ʯ/L7衠OJ-9%aBD#P=RtXK\ KȲ0a I;K87‰IJ.ʥY0nXa;b&y<փub#+6?nLKffToL`='YMC=i>H~˴-U\+dA&DbZ Tk&/%O'yחz.utwiE_UժŒd0 Fcrdmb~i,4jF|%'KsO'ּ#QEӎA>¤-܍Qd&Ns'yX\,㧔sLo{S/:v:14bv.NnsbW?ɓ^'#4{үF{x.o2m^ g֛,6-+-sO%eL&C}+6[,"Ww[uE?d馚iiO'L\0o_ />NqY1gE/q[Ϣ; 3W+zhdl1dyIZFOנzDS3 >u󰬦֩V֕9־կ,r5äV ~I"CK(pe x0Ws[5\'3໭& 9I-ĜYp@BQ vZ&M|zy&xxi mݷw|mߖFh*5bgZvۃ ٩3$ߞ摱7#QXvz]dwYlu\GK߮rϥ;fN C_h Gs;k+WLaHMK&,0jm9%[Xrnr;T|&+Q'&-޾18[EaÕj.Sffk35%&L? 4e.[U[9ff,֦kksfǺvܘfN9/ekK^,'jt\@!≨03OQeg47zѬ6qn|nqq3K&dajIGʶܶYwU?LŜIlODn|W=Â{MaS*mL]#z|%;<熙4ySepB؎j]0? &ad?dy5[pm3,w;.^->>k(U{ʗW\H辠/qYYY:_'Z[,8V+g k*m,1,1,2-KfhUZYJ^Q/EJd$*d2+ 2G\rzGKNxd'LyW29?YŌXeՊخQuXia]O2ѯ*z#֚_sqV|6g~&-nhn6tX~/J_Z,/̾5G_Wɕzdrő#v18''&L>3Sss MMV&-OOy&|?aB`oO(z/EG|}՚{ #'&=kTy]yÒ\sVс֋HK92=>Gھ? aY@w[ǓEA97|9.Ҹ8' ˧+ӮήήWNǗזWk997\[8\7-L/a: 7Pdb'Na^/YZa7ɧL!e:^ `ƞOi#zĹ-Z7_v|L#qn r5qTb}Sj*gsrld\'u+<GRt;ͦMMMNidY:Z7~g{K,J,, /|g;MI[OeО]P;.'z_FB_ϙ]nh4:Uz]pNOZ&<-ns||+eMƵ'ڙ:/YQ~r+^_XȬ R ԥ Z_OQ*,M#E]IkTƝqRcMXSQ&,QЙi1MZjVժiQj4ʦq>q=zEa/o >x]_V#\,:WŽ_Ԟq/8bEZZ!a;r)bKũ& +'dI8y2P@d0WSe?)~G&ffmm)GeƖ婹ik_OeUzy-pξ␱Oh{&z_dd115VL4LiNtɤri8O'*m5=0vevMM&&PxK3u Z\j]> *C @@hY[.W24,9Mh_zXY'#qhWFZ%A|?8bɔ1l2.YtOYaϫ6%2xdWQeOtY֏?/zWľe<ٝyߝucq~obٮN&LY1s\[7sK|K::洴̼j2z'z.F˱0ttOϚ;OGyk.f]̼# 6ȹZzWN++jWW? D\]4\i'Nӓ\N[*żv?]L,y!^SV-U]ɸo*m;=^:`_![ƀclt/O3M^e=%O7VS-Z)jjq'i:N +ssL6+Ziʈ] n'%,g'2de)207SL>ڟâf'8Wu;NQK1~|z{Sv'řɉazCk)ʵ[uz-,YxeiU/h2rh\MLMEs@9LZ52Қ'3&Ne&HeV.0rʇAz!+ub65 + ȺUhpl\Mi[ ZuuXuutvK \p`aՕՕ꽫tXXYeYd0Yix\,]=ժbӗLcZeS,h| Wkk-'fKE)M c&-Wb܎OE,UU_,)_ɩ61|e_Jtd3/dete]]9r喬,{Ӣ=E a7>+~ п͗+(rM]  CJ: 4 N俄p6nIhʶ1Q% 8& zIL/Nƫt7Z*>%2/> 6,Ta|F+*'޾`蟨/@8!i?$rIk&NNN_GP}g?F_Gʲ9+-8 lRkX{&_{#b_gNKM?+h<m?Ri0Gqkư誼UNb41b9ܱayX e,E|gF㉶-/aI=J,`XWS#I0^'2r RC *iZֽL I_UXed/&U}5Gη_b_9q7LU8r2ɋ V.JVK"qG5嫖Y{e쾃0SjhTs?u|Wb--=QiVJu0X*6]+qνo_}~gkGebeX{MQ^CSL5jej& \uV5QWƩ{GڑI,|]?b\C853SyNCs7r_k󞵼Ő+G|tsh8^+0o61֭X++4'8^SZYmM,LMVWmV" -.^%ɂ,.8%8 Fc5&Le `]4cTPʱU4M4M4Ecd4=bdVөWq0Zeo\N{^vͺ_q0uuֱ,=^=d9F4cPXw2+SUhm ˜cfG5p2l|5kT-,緽n/ ffv^(^yL4ZSȺ-0ņEܥ&pW}kO59L+MOtz 癌=]/$bZ#4?ie/[꿿8b.'+FYGiƪeL]LzHu KU,X}(}-[Vo(_3R~-0G@vWc0 2]Ť2v _vJjM2(&˗M:1Ҩ&ʶM h'Ul5Sb,1\je=k542 ţμ&- 44عlв%䲮kiQ k~9f^U= {斡 VrKl5_ 'su%_enj-դa|L_긕de-45]KuX!V\ƣ&|Y;ך.O?<ꏀcLUUe,q_/ yk KO_ӦŖ_deu=Fhrv`jhő'Mi?.NUuŊk6&#'{~Zo2Q՗?dəf.e榤ǻV2_VQ0̛VO d޷__y!c!Ķ(n[8KoHhkuщ{_^8*z[S$l,Īذ007YTuu]k98;e9--hqWv85bs);bD{prr}LK.#.&rn40XlRʢ\.ѡh&K]EҴp[s8KDȷTr*5C ~~{q;H#yVKW\_ife9^iao0j-R֦a1emښ-d; L\t/y%+rx0s1 ®&MdɺvkZخq-u]VfyLf/m׽?yjv#^GlLU&@>kνutE觽qN> pbKZ'y^'wWh;zL"5Zbi/b{-^Viaaa a061X?j`2 VX n|瑈ǡYދ[LLZGƷG e=I25A$؈rcJJńeL5'(@&1p#zUcz&Cc 0>TG>lK݌[p|fF LKE$.$\=o FҙFIؾ}KJ<_Ƭx$'Aejh>2yEwOsrmoZɄ{(C L)97:pKo0Y_) ddV(z/u] T\q궍tH1f$  w JHi $I0Sۊ9Bb|g02,0>筤'1rs 03#Ǖǚ8 -S *.b-6%C4!Z b4 07 rh6'5XlNk݆lx\WW+mnL:8dڟcNKg#-N~pËu#V&F̭SU?dSnVMl1Z5yV?A+ + [4-^ NiYeՋ&KW\ /910atfTz*]K2Թ[Nӈ^rZZ^xŲŴt^|j,=LsST.`k_#,mxދ2.+-=ULM:G7pyz.VéF&Cx(+/ { 9')2:^)YI}#iy_,jܯi Sem 59Z=f`N˛οڸvh{~b[Hz!yk$3'@k aƸ9,ƻZ.VF)']W@lxVaMzWƕΫ%K89Gȳ&KM!w(e?AWc|L2z,/d16| j>3n.ffkF$~]U>s~;tֶISimK&{yckYfjw[FR:_5s2ɲm7_cv(dl'_)g|N* +`cWy:FiGROԧInK2Vx-KQvqU3h?)66MG饧bl{){+{Qj_ޱX?~8/߉ྋr#Grb>F)Qai踺3kk>jSbrZW3'372nlZp L,׃WXG,js+s o2x_Yj9zE]@,jKʧGa>2dpBzdũ5H%(,5N L2b&Q5rr򬵍QM?rAexe>E>y4dRibVN $<-HewnL:l\W7UOtbNM3pNGgi{-*_CZ9^0'*Ň}ߖ2Cl 9{/5Z3 0޴73 iq;8v9>g^}'>ӱMZ:n/PBeO_YlGbd᥹NήS4Sjɫ"mQ#iy#Ni4hx#cM4h77Pnf\RʴXlif4#z+C=qc ʿUGEڦGhˣ hKvsV$): ^r̜??;.1hN801G{y^%+ZY l_E1lGѱfz(cia.Shn2qY8[*;̚+]ֻihjӄ\Fɓ{KS4wX[\MMMNQ]LKZ?f9phr[K+i=WaƘdյL+r/~1N+z25 Q?}O|n׹`n!.[oM7Zk&X6:ǡxm{Wֿ'sн.skG 2 _uWV5r_8_u]}a WԎ-U1La/ӗwtӧNeef榖u>o=>SeG)pfY G1e]MhhQ)DdK% GXASGI>uFV][>}>ʼnam1w6+'L %NeZ2Y,T>ñaɪ9\uoV/Q\xc3ևlM̆c*D-E1OrYkdɥpVs0;tfoIއw54\h2Wq_&ɲ7,\ݦXm ,Z77k6aMѲd ^Pf3N}]c{8Z.Nsѿ n,ivw<1fԷ2d֗ZcPb̷8 0 e)ʙ Bj)ʃm%ښ`.Z9مSj5ce7Vc; E!7rC~Ɓpqȸ7`L`TYQ$l\T0IA` Mфʀ);0uIT>P r83 S$1yf1 txmpZ[|XWd'ua%p W3W#G+1v;Nӱ]vMVEÕ㫱?_O#imw.2d$V,jŖ]8rƬecE5cjS XjڻF%z.it;]LG TS+V,0j`;bj\8+{ %mt\2nln+aL[]DO?j  :#Jѥax_5.MWi)F{WɊCҫvus7QzU'#sU:7["a`j(T:gr\I$I-|&^s&O#vG#r-vR2. #I^$-hKa")jn.EvGdq?8_K&LJ9{}'L0p`ڴ##uɹҺóhho0apr2\.ƍLŢjNfix_cLa"*a(U2d]/&ɕSt:]fӹ=Qz_R_,^^({e65hCiWtKɍM<1i~sc/ڮ>c&N=y/}|uC0U?So8\O\U:.E"Z:% !fjFױeg%a땋'^^5Z'RzrS*'V%S 輎Sgw?=)®Oz_rLeYeYb1iYhW Ē_KeFi sI4=BwFo 2s5\ub'b`ʱ0ev=fev\2q>KMMMWN`Z,'5 %d@$kʸ4[֗7[%.Dž/EOI]W4Syp0+i_'ќϚ<&~ >+->Q}}V:!ðѣҮ(ܺ2C,Y tci_"_K+J8_bv2=K޲xykeEY+K.f/iw>)ڴ\4.(͊鱗zKʸy.~][z&$C&eC-FDj~ Ljqm2po68^8%df`z?`9/!=>uz'm5P2tƝ[NO8G#_ 4XJ%(8 4I_ʞZOe1i66\|558/JֻVvI='yvL<*o[S+C%1?aҁU1 e}0didŁzrKeoBI,_io^G2z X㉫}5oldf p@D Kqo/M/{F̖q4fqZj> |&OY^03fc1 Лͣ[BAd&c`]ZDķ(9 p}̊ܲKm؜IٛPl!&w$FB9fC 4r fZ,=d0dI8mJ2-mŌr>8|Ee2I`JWOySxa[W3 ߲u޳SڷwMͭͭ-xtNOq쏴~Uؽ'70ɆL2dyIYa*jkQŪ 3Ǣ[Wej;jєKzόmis,Xb4< k{'s'fRZ?`8|M}'TpݺiEWQU8X6T Mrx/C {*Ke*w&;NVQtj[k&aå^,ԅpVTr2NmbL bvPv\̙;ˇʚb~_3ϸ/&4'dE~{ClWsأcשܹ\LXJr/LmMd{LyY_zڵcai{a=h<lw򬧽{Wb'b byKbq>1xNåȶ%? UyUQndc76Zn/1'%Wg/fɖ HɒQ}#/3,KW,a1X[g5JIy)p--нjas[oJyQG겆{,~՛ʸiZ\=haHiMc,ު4/Ruy_*Ͷ{}|Ɠc%1OBFʸ!5 0Z7aj饫94}\b\F'S-).|/Y~'僓xY0^g҇u8NW^ e9eq`o5,\NM&d:E1EAb:͋]1sZlN&dʾ'3v:?5>8s>jN_cF|p2}/m;6 ҏ ZTb"5r~~mlmm*V &传po=f(6dzIK0I}ȴ} J>F)\-ةab޻K&d@, GG zWjSy%^/i⮝&\U[=Z`  :f/=꺜fU? xl-&Nфr;ښ;~ty&I00'/zתթpy&Sڍ*v{M-fc&}olߪsǁmtk'>2dܯ°y&VNֵ 8M>3$L153k⼦0opoWthZ2V._Sx|gּM4߲ɱѝ ꮑO 0gT@X#Ei<,3gKrZ/\N6)^8;.˓r<$nxd֦W/WFy/z|.vƞ,ε^ˮsi>s5j8WN8tN_d'#i\ G-e8UUيdnqhʫ6qZIdG=c>MVdR tAu&@4映 *Z'د:k/ ַxⱦ1궵%]2ڞGiz)ո7x% V(5>8du_D 8/1 GP@\mRœl\U.Aio; 𴺯\^V|)[c_c™bd¼V'{쳛ҴNKOM^_dL~SZj$i5ëMmAqaceee3UkߚYriki_yΜ]:hK|U&ʮýn¶;M9GrX7,2it\Oyܟhܹ+ze--у>G'}K^.O(+$k'LNA .'С%(Tq;7=nswSy6 Qk5޽W^PRR(j@Q#t@pA`yz@ @qtw\y:tq[G];Z}\ M=Co5Vt6KX( жSBw5mh|}vݾ}_\٨^]@>OypZ>CK]Cv:yzMyJ}J{X86z{P[z{J_|;^t[4>׾nNTzw[ݸ׸^ԧ֕G5*٪ʤ _M}[4hSNٕ@7f`z!r=M*rà=ttn`T|P}㔽Y} ]2 r{Jpf> 764_|>t}=:(oVYqq*UT+S}4me<{fot˻9@n3hkABwthk2}Y`n<<%@7CסRkzkv݆ݦ 6yAuӳm/g P@I[}z΀xWnyq^E] cRj{:( l6iow%[hxzﻟOZ4[u^i.+ ]S06`N2%pnw*>qbg+Ebh dڍdDBA4)OBhGѣT򞧤AF4hA"BMę SOSHCjP hMJHIdb4LJllzA &!4h= )Lzi2@&@4 I?SSɤAuRP%PHHBgW}ߺbĶgb1] +Uk1vb ciaj'YufZWXugY?ڿ26ukE$bak{z~w{:8{=W~'G)8@99 G$)ߓ>HlէF݉s VM jej6-FV,)J(),7isیq2%~ m՘D"(ErHL⊕ G]zL>k$vfG%S?,"o~zQ[Ӎa?γk-36LVrǛ s( :p{Ą=g==iYkzwj :f:0--Lcm $jkR[ũTT>enr3ZJ fnQ;qkGRN 8jLW'O8W2PL̊DC{jH.ٜB̢VHz63p|^HB=s\!&3%ӈ*0A R4g-<(ȊhK;_C)܌Ga36܃MBŘd*633j19K,a1Tdd* F0_5U''3ҡ`ZƝg$V`Π"rl?1Fi9Q2kdYE&A2 .WoHeUs&U H֑hVB-'Ɣ8ZmT¬Ǯ8Ã!HXZ~[Wrf國GSD2GoL'6rr:0p[2\=\D'3IH fѕb4p7SFmVoD &ntw `+# ĐA,xrP䯁9cW6f"2fu 3lɀW>9=OZ_! ~/4nU' ( "͏)y(y"& P(%@M0a [c"SC?olywAUS~4'\"l;%^.,5~gU/+;9k4ogB:,͒ oRd6\]Ď'4XN>)V<~MBe'xMI H^eZFQG2VU"UotsܔgK#1~Weɺ}+sې:t4ٛGtӳˀuE:f6-G 0 #,8{LpЅ̀!0m+*4~x$jHS\hlBMZ"uzY 7Ӻy5rE/,k&El" [λkYTp~r;, $7BGg3L*Ce]<2`p8+:xhfaX1aqLD@ܖƌWP u7]pQLEih]`/|AVQZI7A]4sBi7Aj!4<ɛ5 8o0_uma`7^+7ަ dG:sS36ImzAx9(ɻ$r 2kmLgO&^(v66 m!6HM=$hUÖ\_^iPSJI,uĽSϢ0_^x$O}8^Q39nٵ hD-ֹ5@(G"&AL::ΣŇSugYugYu:N:Nt#:Sr\)q]WUt躭eΫ꺮6-h6h6b6h6b6hضE)JRsc9ιuι@Ȳ!FzB)#SdreknqȱbWS fA y¿.o9ڻたWY_}>H#x̪c@AwÒiamii6iHN8%&Ю1"DBP@ ACK6u'7[](yw8%ՙ7[4\J'ѲU]ѮޔtJBrrmrMm Eˀ^7)ppq8~}bAhm|h[XXc=E\tNyԘI,1QflV\2!).RxgW@CbzQ |骟Ձ*(mmX JCamaq-7ɕϭb\\G)qF\L9#:-WSih9rWB.J|)m5.\]%t#N)&d %AIѴI81LܼKΌ1 ]=tdH dݮDY"Ix} D~\+o֗cn])u,~Y+Sk/":덚qmdOW0H̽I<yOth4m@'o'Q" ~fWK-#yG<|Nm!7N0ccQs|kz{J;QP2{fk]*cNsUKLB_zMu9SqrG .x \E&^ra{G)0 @'3MVX(6ڍmJ5Sa 3e +H>GH^K.F1bG" pLFp)"gܕI37$,ʪ;^m5Q w '$31T3,D{!L2: 0 Z8G`#!`!h2al6h) B\zxCM< !%Dr;n{c,9Kփ~;*V.FaZ)Ѵm Am heFűX 2hl4 #H0 QdY[[ h4Ґmh4,!ed2v,Z9Ny7]'Is4 (6FAdYFEd2hi(() #a6hl!H)*e"NVG70NB!OGyw#Psϝp=SI-8%jU,uGcDhy: >D.}+g֑Pa^&l>ToಘcW:A؂)~"4 A0+R+rsrvиv :!yu0ciG!73A9C93Ʈ#&tqΉ yGv`>/_/+Zժ.D g 0+[f-K2F0 GsqtK ӑ&aMI\ p5^On/c~[ۮk:T,hd6 l6+ bȲ, B-bض) N549s#99:NSr9Ns::W9ssE*@=wP ``V Ur[WSt:N%qw_Vgb'EGh4ii컙:ZɃdnQ87SEPv-cm_:oYs>p|Qf{,yV<5L$cˡĠ#-p&#m+T&8ϊVbJmwYm1j e )bw7a:hm֜;wRH؈!{Q<+hZ ~~rߨsXHAٌrI9rUC ${Hv5-eA'0s` aeZXkZְR*Cq`Or5qVtY1Nn<τuІ-bȳD02F69K<$uf36ώ -m c6'YsÓ:5#pmlYr"Ű wи8}N.H\Gx\ 1469"~:-TFik] V̑WS|A[nfUUMAFJ;\=(VΜqtCOvr EFCww1̶N"rNkudʉn::8ř.~qpGb58[h&n6v64MwYwvlzR9TV(K$6cmf dQ֘aC50c5kzTf@h܅?LK1!|3{7QSd$ n$l 2ۺv`h-ö kLR1 KǷ8Eݣk4TѧNu!f뜑QSgHP5zIhzģI{k36T8U<zՊb%>a3mz23[\_UDPz% du&wFdoZ񉙩ʾ42B`X3C㭾vfr\EռT|,mCvclj"XN1 𦨑EDG80j`RNTL[) 3fPn{^g>Q&\vգlMj21oE=ITԘp )wxsuFN.u}Glsu98)}:p4W9#gfw]@b[qˊxL*Vu.m@h'/oͪun$g{bU3:(07x4VF3X!NbŚvar`{8k6Ui@dG]Euf(ݞ9N L}P`R d7U5:aƳ32cicv9R2intӈ8܌RsQ$r9pD67dLA8X25M 8E-C.}$Y+#\\hjߤAz CƎG|I 6:װ xaZRv9qF" C3;(yFC6]0dz+dQ| c.|:$pD*sfR35 p\\}/ x텽yx#f5;]Mi.d4 fgTȰqP`W!r8i+̋N d12f+ M؎Y!x"! ۶9dT*ƪeҐ58æ^XtiX`d< $=2 5W2j^5׌UE I.e#4h҆j5r 2Qh,m!Vc& 70FO(Jj62uŲ [p84Qz8HBۂBxjEyi(| [q뚃42LD2lPl7{olЖ Vdf,mv8ߣnҤ=1*ƋM2NѺuL xַEc *xcdիk9{b^bh4fz3֛Ea fe;S!6Frc5|sH77ke.2XD6QaH" w]1G h!F4AB!6 &g-GuݍkgGugkRѣz)[2hQJmUO'dS0M)*+M7XI`HHRTD](bZ2,"Nt+DA0D#=bor8rHIqk`[ϹDܙ_v90"JJUϫF5fc|N | 4uIH4#&8q ` |O>#jHšh|-.Geø;ǂ<Y3Dxĺ{OKy\./$9܏4w' :Y\ #f!B*ƤSh)2"VhΏR/D 䌈;ﰘ7LzjZVp#:°R_(o?tu/_]Fz^%<ц|j^;!#m/ě41^,A肙 "8(hb&UwIlNRO(m7^10K44&$mbDhG ])qZJ73qfW93v,Cccc`NArYֱ[,M ^\u1tef{e,3/DA/G*S 8.Jv}欪ɨZtVFZ [pľnc9܆eQ32LV}7uJ>ϒuƾ&ι3 Hz- Z#jV&.=dWDOXLRٗ kfRSGPk{8Q) 6P;pCCCC,i&i&",iif~mtg;}өugYI[ʘl,M^Nqƥmx#H&Lj}Ylѧv3pJޤ6o `{ A# aiFxgϪY:㇕+eCS C)}JR6Hkeoא#{"f`ZZXHRx1S#m/Ef!V<5٦^\&DZhͷm*n)2~);6(sbsM9PHJ4R9#̥>Aj1(k{$JE YҌ88P E*s` QL]ق~e Μ/&[$ڒE`Ћ R Y>>Oq8N'Ϯ}s:NSγugYugX4FiFQmFlYE,ȋgEVVQEQEQEVZj((g4YQvYeYdEDYdAz; V( ?,y^gƗg>Lĉy&G懫yعrNl9`w#3Mz9iu[i`=Aֻ1::IXx638J:ʺQWE:.zr)E"9MPJ r[!z$kUn0N>_i֬'&%Or~Ԏ:2oQ BaT$3LSƧ C cէt= ԝ&[* (cirEA D3kn?. Y  A-*c`9:Y-W|u@g]av?T`)f&4L'[9EݱJ,ّ=]>u|I AΎ{{ AZ(Yy:G^m)#pw&1C4 qtquGYuGtN888888888ݮkvݮ..(qv]nw j۲3>!,>Hwyn 'ߨt kpA:d_XXa#c" fYhܺ! a$f#.iqr/EY JOk0ze&3 10pDӱq]<{ӯN !ed =&g֖cҩS)ʸϟS={PbF+!xNvu:6"jdK:=iz6@ӒeN??v?<~Nf<喎 ٓvacۨ~H񟜞uQ&;,33f^@{m&ZMw?G{cjN*ZMH>UӗQ5K$4!ekD CzHH oj>6% C j&'&Β󟜑l|&v&۟P MB"5I#[J0- Hqr3.I R1TѸk;Atwlh}&mf-f_2 z Z0cch. ayfu3ٛ͵-m &e[ ,^*&bKߕ[Ϝ$I]s(FI:`ma سp GVQC: R21b9ߜU Tsj$A؉jCɺ 76I6/U]JBbxTV ^ө GVo^šwu)sx//T /[e (+Fi#דw;ȎdMgNiJmOyl-/xWDڎyIM~`@a9旓BW @PݬllBCJ|9d蜝]ȰN n&)N'dM0^(v|ל2fEdk-X"@\PT\ j&3ӱRi(c`*ƐIW9-f;%>eƶp.asc|=(NSγbh֖ ()c%x F?{\d}qٳaG)0NJ+Q'OGZ5j(rzr%isY@Pcpi.Zi.J]T1N19J|^i=&@!G\׍3]FW#,uC~~'6ht,1bX9dzY:Լq2t1ADz]v-56.]$9."kUwOJNcUD<s"1Ws#D2 8H8k0AAA: u^ν%Py}zO)E'_*WU-?7PרyKrTE*lU2 X8;"$p3$Oh-0G v`[4Rdm|wy&✜TìŐ"GbBEd͎š1zAzŸJdoa8RVٓҽC cm1]vˌ6((3`9NJVPB>&Zt~ ( 7;m"^i-M^c8idm(NgO~\%PP@,h`Xba#Adu-Z3E:@P q=/!RTH)D(KU c6Y,GxSLiFN.d-Dc4º;:%yO05-3@hӺak 3 >n!3%}Xw| Y01*g#8D*i`'LEh(By8JN)F8Ÿi#QZXJLG-/Am4 4ctG(λP_'ۍ$8䶂L(re0޷ ;X ^9!J1፤ bV_ Hzk{`ǮG؏@ @YMk6FiASYmSM6ѣ[!>+7#{K44?]N"t!gM142fM4ӝ4{+,Y2f 2K y%OU#dg9sX!4c-JrDj!x$HL;C RtbknM\j3 !Dš##ݦ@{{ӆ;"BAO)|BPJoax:\}O /ItCYf8)I"iaWiHbL )/?PRv?وg obT La՘l@ ę}QMzQ-ť݃KE< s|3q#PA0F[!РZ.tg\!ΓJ`M&m6lƒϮ M$Y ![!0ENqgfdg3/:Y,6G>6Fl8pX5HvvqyIq)6YWI 2R~X6)F!՚֌"iliM7irAX ,0l5aޅqgE4Fi-? |whOrDs/m[Ә;'fK iJi,əXYpޭؠ3rn.*6KBpa z5D)Fwj-}b=^C#=ň FLPhl4)\9Rwi]:Z{^ f6Jod0bǭU]Ilj$z‚N;z^>̯cyQ: `e!X4QvUS>*8o"ԮWU<_4T,x%)X7;{x/oK $дͬ|"qG-UɃUkM6ɏxdn 7+6%յo^E;>};,Yϭ좱,)Um%l%aZVb-VJE[$թՕEi\o8o)kVٳ6tNnY0c;g.3 $&%DWGM^a^jIj/xvjw~:QoemZSj6mQWM#Dv4mO=6ōo7jXtxU fu4daw+y-99d'5vV sl}fuRe PT#iYTeu[vZJ%ij*q)F,sZDϕCµg^74N޶ed?O{彷9|u 0FS)( N&^oO]uLQk[rYum-[&Wtіֲgtj*M]6y6cQUI[jl[|޻HïRvygSŞ-洔i1'nܷimjئ嵥7iac>pXcI,b[R>ZQbf}! ՉhK[OoˉKGݑ lC8v+EX5 ˮR|Kz;7揃%bZԷ꽑g=oz{IK)iTR%V֣d+Na᫔`B@z1mD R- Y5 w&eᔋcM :KRu$!q?JP| 聥6~YYQŕ>5ώmy<GvNֶc#[~6#SխcK%4ؗ'`G跹1qڂvd I J4RDˎ eŢ*iB ]0J54i(@acLt{Ol9#e.+vk]8ń$-mMfj55=HAibXApj% Pt<"ڕr.îkei%vui]ݺkM^+,ywwKI &R%eZZI6c M j&K;desq("附`eY1э;ѨCl;bM̑G-֒-eƑ 60yhb]HT2<#c|Zroq&,yշ'+YQQېmJfIDlo]a8AFs}֪cxb1d=Ɲ7FauZ*-,,Vu#E4 !"Zb@BdLc&WE9+1ۓwNz﷝ImeCuQF{ lz)4\ef%w9p.BRƍc9 ʖGf!rfNȺ,iԫcm x­.q\2ehd`HeS)@Eh  ǻVtӼA~PGCn |%41d<$&0Ϟd|xFC#VUG#yLPY XoaǙYYLˎ:uqXr7hq0ed`OLdw$o_~< gqm?Vr̬j;S]λGhn?x~`3m 4wCL*>H߷b7PB_ZerW%fs=Jl0ʹK)ޤC̺ںWH޵pX+D9U!=c{Ql==:1zƻ0WbX?~VK?`(Y$ l j b.cp9t[ G4u:s2kibids8Irbr] M1pd9-·Yg$Qw )PH, I6 pT aioU#Xm2m:NS8\)꺮o9M˔85uWUukis\.U5n4fȖ縖%2P %չķM 01l&/L>ehC DH@}jUTWYY^R.١@4D)VL/0QK#g&1e0m[ѡ-CZEV- Ju6e,:4`[+fɓbpU5Z>y͝l mqLj65E°<4/7eroZ-s7:~5NɆiۧ5to{o]ӑh2=+9-/A<[;Nêҥ=:1UwVV U^k~e WªQBH֚&0Mx&L2gNռ썡xU؊ p)hTWk{_[T~ zYRdѭFz×"pj666T;ŷ9quk.7pjɉ4iW,BdɿCθ76 ehџ}pvNZ+uxy954zZ MZ**Q*DDQEEDDM-YawCI0ɉC 9) (Qz`RSˑGlc,n[oF/GWlqNҳlJضg}-]s_KN+-ɺٺdѩ6LieibidɊŏ9zCMVR&YI PN$$Ed]#o[<+V/Rw[w9/Rd=E Lض&-Etd +` Mβ EHST~u֘fޝ5Fh P7ǁ)ûK{vϔʮņ%K&jihZ,4Miiz狺<&S ~eG(R dU-h4HQM(iCO\myؚGmz}z`b4Qɥ&M6>da7V+z/E2d2R6;vZ:Y=bɋMF'{exH޷6, X.wCRt$ɓ;jx. Lm|v^g|T5fH+ kM 1bʲ0v+嘍'aœGze鞕veU֬YXadœs S֬-4i+pr9] |PQ 0[S39~vY_zO6X`aKQl.Ej=F#h{SvX|[_5!v* AJP1)Mny<} b*oY Dx,}|s'-߬ƫ#Q޸I%,bBi ?t#܆)"3:'P=(1\U1n97ΌX ! 2 iJH`rPk^ Qz#9N yGY}Wڿ 暲wsckVkiyy\C>Z=˔ܻU$gdݛtDՊ B%zGRm_~KtKeOޟ2Z]>tܻH3 f Y~'rN˻8RWINJfh4Nʚ_@x].W+~Gگ rYg8C)ל1wOf17_Z@d Ifv!Za?3aӯ.N3tJCdTHJ$$KMSm6`r/ SƘO^JimXr:mGZÔj='[&Ze k4,,LO+&85/:G+uˬuI:͓[Y0L1-Α/n^K.Mw[]:Kffӭ V,Ñ\,<]Se74u!YdYk!e&Ydh#zlY:45Mp6mWPo8w gb7-BaJVӈctFeDxSKn)wees;`%ڰsgb,:Eb%%`1rd:EhԵ9XmliuXd̓XÝ1mwV=rdzloZt{[ZҦ*N+wGp,2`YYN%L+}a?%?dU󨤒u$D仸_YLbz{_X޹qĩP t> ^ А2<xO0z a\m֖ѥXxN#py=GԾe~SWiWW|;1\<;mҼI'q9#ްüѫkF4t-k?lVŷtbw7/Phpq2wv٣;N- ̋Gh<'tY>;' wN;j]t~NsiI6.Ox\L <'Yt3zwqʕ1sjʮEމ,f-;gJu-Hsvl2qd.w`t?dW*ayLr9ZfYY2ƫVG?161R?]q[1VvmM 6Pi[7x/8{!ح95p46 ddp-q+h#q[+CrҸSCtήr~Zؾ 20uSm3Tϩ,hZ[5|#]@NO _-kM*:/gxmp{C܆d}FEY=^彠)}&nj{fTPH&mO  $~'}:H=6 Y5ZN=[<+55/Z.i;.u]+ `>3mys=wGZ]'Iӂlt/co|;. 'sti:-vWeڹN5%vajhѫFj⟉rNK܍-榪Z<njr5`Yo,4&-V#o߷?<;\q, UpΫiְf]+\'~;Cuet~( QsvܩW)r[\.q9NeGgodu7W%.&+jdK G8$:-Ijicg"& HQ}б{NIlLmW4[um;ey#Y:]֧Ktd2dFm6/Z*Q=JMRQEhj^=n9b\O;Yſj\-Gg6δ6[bdvNûy] +yY|SwMVGH&Kq8EAke]{w:5jѩFVRq61>ȵ4bST)T S(@P]|Kv#ŧ!2SȗҸUhvN9;-(\GEFFaФF @Q°H+G朮;SޝZu:֩,Zt[. S;xY-&kqŴV')lrM̤ɬ,z{MQM'}v͘f~/+$^Uj36^IKyʶ$wffG|ɑkZѣG_eo7``DIxA_HZ}#υv/bO%体\5ٛګ 2HrE#BJt*A)#33h8KHX2t0-+D:W{+Wlhu:vu&[69.;k]g[FXm4hѢilavKv 82͇MmX}pޗ ]K6ѱn5-sm# %,c[V§&I4esSjs6\ޏSvkh]g dSOe:Wmu.:(s--ui\ENnäoVnɱw'%Sv.k9NC]s8nYećjv-,]E,-+b C >=>d5jhѨ40A(BUs)ܻpǼ jx@KSyx-Ǫ\/JEoh9F֝i.fvN]ӝgCvLWuv.5]lubZΧ)(Y #g0hl0 ښv]er86\Ϋ{sjG30 Kϑo.'$J0iH{1$ 4c:VӼ{q:-<ӧ)д>&j9v ]:܎H>*vOuNj;.v|:ung%Sjo;]hڜ˒W25pK)É|6NlI0r\SdӚWA;n_5).v:Me =9f^,tFGw&SzF]|IYG<2b3 Y"a0=+j|Sy=38׳W>͸.r.Cuu9br1)ids;t;9:.]vJ`0m `• ZK[ݵs:t4vՆ}32ؾ#Sʮڭr^5+rKX6MU270*ʰ*4>e/MՎur^;ڭ__@ص- .hx.*]·#;dlN}}Iظ67^aOWx&Li];#L9ZE\W$[Fsx}ʸc=ٌi9ZVfzme|q;nDr@%)WtyqU,ĖAU_t>h0JЏ޿|p,SAp*f^4MBe|T!\1'Lc3Zxkr`򄂚8HSbdHx(!*#pF\U&[ ( t.! `'R9z>c& KFc{#{|߷3gwfxW-eh`bQԎY[D} FfK ̍PA 6l9nڭ`TQxQQRStN f\I]h@J˱Q_eh{ٷXZ\K|qz O'mblRi&ٽ;0 iΣۋ3'VJ>m0fb2 0Ǐ^w78#fK-T/k*ɷD IU/Wvɕa/СteP5aYwKĻ]29wN>|\TGv!\Q;rlݺ:O0*<F#Nh:O?N@Amv&^}}=<ϔ>,J}6c_\sS\?x-2;&Grͫ7W`K/M6^hѦ-,,X(4[jUkTYVFڲm&m} gSy>S(yPNLYptttlٽ[4:: ߬ᵸAA k[A!Cjq8W4ӓ_C²[P`/se< ϭ;OV%jHTr:qe(FA@ĸKHR,-W{!x,-6`} ƿ:84T5p<tm-;CB ) 蠩۷V!l:Qq+zSr\ ܎TW*v]ˉ{ ^ [9M_^; <ן:;Ǹ\g2HȚ@JڴH{\зs˶޿ޟ!_&e1VF2D~k׾q࿾+QZU[?;l/g$~ί5uZ;k y#xl/?rT/_'O:ѯkS dkFח?xa)/lm6O7n|Yz佃_{2e'Ww2,:@CԊC@_#Ջ,Yu67_id#}LY6;~pYWMEn PėmQ)O+-y8Gt'+N 1ϢLP'5]-Vb ?d&{TeVnB3A{U"ZϨֽ'bL:ךOF‹ʲl:ψd:INp0ŊAAOj]tb+' U1*pUȦ¬8aͪ0KZXST,-0AB05LÞQJ~{ʮDAksmH_uw-WG* ʭsa.Q I'W*S @f_{Odz@ ZhlE֔?ɔ̕ebo{͹H7UK:JQr, Kqn9}/y;e[>ȅ>Ky#I@utN&G7Y! oU:׊R0w}c|O?zM0C! Nh;eg˵ynM5_:qee2?s-or^{' fH׸D{wsn^j8jK8֝Uu޿i7h+/1#A,n1 yFNpI~{s:ǯJ:޵vpax4Y Ó.90lfzwqj˹Z)zߩ:'+<s]^:a_kVO<#S8/0 PC [` !zz4w+/ LF!kQI35PVV,z_Smy2/\U-Op}ژP RQ'rښjq$."1}IjD~uR;R9~.XS=`^+Uzq}ʬ}&y|ŃӶ߫Gu7)9[>sGzrۮʟM팞B;Q"7!?TU bȦw#,;좬4贈ڒX Z*渴h`poo).i]N}fU ;0|.U<%* X<`R- oiįdMznj?+GI{|=II56:^z|㲿י_޾(|OΠN⼼*>s1PpDZ KBsM J11iL!QH: μ+հr?3w-v.7rXeebřr~9w;YS Z|[ݭc:'Z_~2YFEQZS]!Hc?@32֣ JԭK04ўlI^&.OĻ9jś,jNe&H ʹHCq[FV硶99@9s c p@Уl' Wv.3qYuZmSRaB-HuulmmWG_7T'>G7$G 6Cxڛ!שxz8&Q>>|B ImGhD\ 3ث,Kb_jՖ'&de=a:G{#u^Gq^b- [l%|oOs ؍Iynh65d= l6}/>oA{m70'n63ԈLM5"nW5oZďkyWk8#)&z׳Kl W*.ޘuz1Z1.2dS9̤W[vı[7ߨgZf3+R~+jE~}'Z|V>å2s%~#A%[CQv#e8_HO1ҟ񩕗3QeKUd֕1JYNL?vޣo!^Pel$" wn9 ,$B''*UUdPUa?hFrrW*9Uq্lѭ[k5Bbʖ`Jn+@c&REK 3ZMILkUkؘ[{GQFG^g3/jNJt.vuW9sU6!xWBx5^uTi^~Ny<5i;-U_v+W:wf3Ώ:zǾ|na=݈*@i|]{kz{~{7|+ėr< ({rYz4a|M3h_n\9ݪ_O+kf\۪%'9e=݌‹=#&+n wvlro3F|?<L}'?s;m=#XQg+ow5Փ?3ɼs[~zwx}ǃG3#texJ_3??gZK1dM ,"n d e8} `R[`Y_B~8lD,U`dQln~ȺDFl8&{02iS"*cD k0ij"n &Ymh1BdeKaEfҫ+Bi2ZJ'R$UqZEwnX)KIbt\#.|.[K`dj թlKUގr1\MM+'dyllGjGf$ss4HB ^ڼʯj3ii))STGGyݳ}%fJ z!kxU鬳Ep~g--L#&HɨٝʿLLPTPTPPTTLU "7M4L=iwwX`abo2>Ky ޾SLx;ꦎxU4R% Bᳲ lw_OWyvi"+)YW9H:eZ15|YoNb^Ù`T-tʸ%DPP3,gY.,h:0bfx =~{۩q9"^d|TD;igm;.K~A.Ӂ@S7H~zυ>XaVL--2XXabqh0Y0o|oyPVzF[rG ^@X'$d/%iDi־LK2cϾu_|ʰ&KIKSKH=6FO4ږ\-cap^@PDEDiRd2=o7޹,Xm6#R=)dr jn˪vCL4k#L6ѦCY7zO}6Sxڸz(ϥ5Oez{SzRޔd<OcKciIChV /'z̸ܸžO|8H~o~f i 䬥Kꆩv_l>*O(v朚u!UI0^$\"gD~#. ..j.1諕v2gǁfVrċ'O{%;vƑ۟fŠ҃.InC*"U{XT"`ZIuGy̺ UʭKJ[%jϻ? 4>{rWek>o/9 6,Vefmlb򫖦?S#*~Gpy%6&+[n'xYƮϵx;ݕ.E{ג_ul jPQ@Y-{ br}v=5%pŗǷo;˩xĒP/$?z{cqi֕B1ij47sndWwkiM|g򍬀ek,EXRo9peApYlV.HV" ՈF`,B޺ _s)WU2`efId*`g?q|3Y2*\tO*b-GY#}5ʳ1?Aq#]JTtߊ~; (/Kw/F/w{ԐBW/drFfFƉ_qd~P楄Ij6߹E0(D&*0E E@|̌5 V˛E+XFR3,`\h8|"?ϔ(XyE0ж$%o'#{ϳTdo ˥;H0L0a1''R)MM2m,?>9G;Su!+.o/Iڜ0LL]}:W'_=]^Xllr/Ꝏcz&,Wbr1*eRqd\*;s#Sxߔ44_e2ųr`E~*UZY-6}nFMC>)y_ X J1"x*T KG va[-r:#RiȮfl/y ȟzDpH=L=&(a},~Yy_?K=D&_lJ zGg#c-w2õSU7uM<}_I'>} ` u|OɫT-$uH 2ƥTkD,*,2I ߸lٽy^@]}㾻R0֦Qs5|{ih{YmӋLK*:V:̟qkZ8لuZ|fc0s/]KBUy*XWbu^l3m+"/_Xw;m\8~#ik~[4̙l}?CrK>O_r畲{i[/ "8g:L]\otlWiczᅭ\+L5$.m=%8jEk2* 'YaOFXaMy+^1MSxiMNSRzy7&Fϰ"~q$Rʱ_fJxtЄteK3G[Pn9_C"&@:) e@hRZmQD"8Է-nl|ط^};X|+ļ|=A2U|j_ @}ꗾrÊw[F| LVn8׳[r˷}ƌ@h hHW),dRp BkLmc%7<}  &W2cdu-pK^;^'&C?oJlu-??KQھ.??B0h3] #,8d^1_ Ų#/_ |:Wξq OpE8z9 }Oz{?|T8ws G^#k93ICUeS~JFnsm-k* [r4t7\h`"N ]ҠR$;eLUysZߍY7{FC##25Vyb̥.)Jiھڟ~w>ڊ@6&_:A"f!`=v`wW=yd)v eb++O;뺝|ܺx^-mKafzOq돢^>BWNY='KW`SW#u.ʔ<u}$+`Ƃe=?'tbXӤqOy9~y2iCIP^1pf;͎N3*UYYUrs}C>s׹Y[@G>*kX^Gҏ."I4-dj-4VbWoeM}1Y驥lMz]Mc_++,}y/"!"(T1(Ae߱o+d *nD-# R=}'ΎXYh/{jE׳.}/y =~]C iFfVل̴a3#W%wwٵKc%|%qX(_tecw!4N&'Orvn{Q0x: _µ +RJT$ j!au~B*ƾVM1cz3w,b>$ٿ?/p/5y?ʴa=M4D}~Le%/H]a(xMU1M('>cej1|>eԟozbnyM;]柾3 cJS?3?_m1R59L5mamA5- QahVڵ/G rҾo\_{܏eZO9[/y(Fk6:5jDLkAO')dR?ҪH' Y1 X-) QI2:[c˾pdnd96ц@NFd;gYi2PCy?ޑ3kt|kʿNi<ǘ?o30j^ kIو;?΍cIy2r/_ 8z*nnOymSfٹ8l~'p>2jiL(g*"L}ACXT(0*UO?As>y&[2 0L=If8Z+8 ?e]+3?uX/޽Y DbvJvR:SuZI*{RHg[ԑ& LMFI]^Pfgvu-w|G#iQ#hW]u|1eYI *Y$/S\28jj1KkjM6Y4LLRNNNwu]52,$3jPY?8bU8l_j.TZJ~ ĩΊF3NUOxjss/2ę)4z82FU/5{+/[R:(2WuA tIdE1 9jn:i #{#~>)g7n#-qѶ҄ƵPn&@LD!+0&&uƺzKC^{] @@m.esd:Ю+&jGcfcO(ɛ]Jfo5IusXcMWB<Zm.spU~=h/>BIx3: ,wqRI#Jk:٣/aadaah"|gɦFk#~ѽp+F Z< F~HUB94~͛AP1Зz[./|=p[Rr\W?X?~!_5!n^Ya 0לW?|+zkF %͖ӆ3Won=iWq}Z(> cccW"S(AR,٣cŅГ.hkV#I``"chg]Y L{BU})?fUa\*B}woMl>vWy5&`Sw%r$p7G3#ꟛUm{/+Xr0}g꫾2ȰY"̐zWaf3/_d/yYjȵZgGY-e0)wWc-ޛTy/ 17oM7n;oNJ<:_ %-+4c>u{K/a4]yVISa|>9<&6y­xr-db/umszv}iM7ٶ1!1,@Ȫ JP0H=Ϙ[=ɕ{3 cܫNk9]1vp_Nw= K*ƕ)Ei#V#L k+(k$ .]on,\Y̚zT>7Ѧ˛ONy*xC+{r/4O)??իا;2uO;?hr`s&n~94p57M0as9!oBq8NCFSqppu4r.-ܭ[۬Cpha&&9ll:c887.Cz,o;އeJd/Gi\=G6NA_3ܧjzscvԂ[yyXVM&RټSCP4F%60屻kV#GUҎNzg9rݼiIr;Ϝ/]f^iG#duS*2{leZazF5h$Xt񽮕=M'SswoQ-b+>,N` Y(rӨ I-i7-KA}8 ݦk ŌxV,b& 6iHml4j𖚈-|vԬeUcy|8JfUc&21*0MF\M'/yt6ȭpjRi40>:|_-um]1zeNuWVcv^>ezNU Cb vPYC|O\ D??>S;MOz62'v?!^m+.? kGAkPB?sPk'tc,; }yAXP 1U_Ӆ[3.gK,[9rtm ﭟގGHS*F XeY_s|cj~/?JܿE" /A}#|_B~nj󃯈0;Ox<#a*WTʻs}Sc4j}Ot/s5Օo~4>x'Jyםq&}ZemXY6]u:=5sp&۵e3( I8mjW$!\S{FSΦibm ,C*rŷ,|+]j֪q]늞n.8dXdSd2@e^\txO1z^"zc<=B!DU()2Bo**$*.a#,/rtU>Q(_uMjV0|*:S2&w{]S)c ,+lVQaM1LM6՛V¶&fMi}/}7gG1ՐΤ:a}L7>s_/oJȮlfe܎WI_/v1] &'j9|6ǔr.+.{g7_^nIlr,D4Z! F)!1},5 rzn$ߢ, ]-^3.p Gr;NW#cc]'6,99s\f#psuub?uwN25*JG5=rL,Nzd[Oڎ3ILᘥɰFK:a+( EsK4q ̇@Yg*#i2 Ux:;oO:-jA ԸP`?e¤@-b:ƴ pi6 ("cqZ@`WRS /XTݳM5Vcj 1[D;&8@""i+C E i*nnnnnn; DV(kKRn>9T- LLWrS62cjftxM݃q0N.kbťbŅjUŴ6lw7gg &ǃxy<۱mQj-i&Cdbcٹi;8ivvs,1;;b:l:NVfγ7uĦ6EcۊFOξ}Sڦ~e.?}JZpS?lkZZDGkZֵkZ=kZ֬0 Gc-_<`:?\_Om+b_|14]we9_ؼjHX~#r& ݶrME-A '0+9/ľՆ ,/~fA91˕ <-˴W"~?lT]Hi#!{vө' :OOɸ`0k/F4BZ]!c g!RTaY9E-[E LR0]Nėhu@*: ;ގ\77B~\x:,3뷚 Kz5MRo[H]^ɓ?4itrSΫ"嫶f)йU/Jzڴұk%% #A.ƙm=%OZk*gdzdNtr9N"Wmk>ʶJ̬̟|f?egD}+*cᛛV~ۗeg¢wU^d6 e|ѧB8/[7>F &0~q{>WLi]kANq2_hR9ؑ4kt[AYq ~-4CWԯlRW*2tɇl5XvDsRYs{gH YBH3Ƚ␢yP "0&4|GBH8CIj<.,eU24@@ И%nŃKxW֝9~k־{VS ?qKKB_WlxkR#! AHpSL*ʑLy(ʌfI?l~l>5E;¡c~hW>Ɛ#: 6m$Ŧ^o[_̅25 AƪIEVu3/ u< vL?I9$Yh@^{YP `G6D[]휂Ch@B hĊbWhC0X*=M8I~VJ%I*f`Xun4Ut#eQ$䴏% U&8mZVV,-{_;ѵd*IJ<=;3SZqnź>V_~+_?e6>;>uA1J-H\2Cϡ*㼃W3i{u{o:>zUO9d24KAG0(4hS~*xKjrObg׼~ʙֳ>(c+W2Haf|벵J_Th KTg;_zkSLkbXGo^ד#I}/}OįhL,-s8x%.%2>|qGCsϰUUUPB (`/(44ukྉkz;e]*E6 ̋6v?Ġ&I(%T ],3ޝg&.s|d/]ƾ6 zO6A5Wopes].ˣʍRcϴtۆW9W4~$଎Q}Ϫ_CNy^ZvTgK77:-V=OExFi~_;_|1kUW\v%=>r>dS5D_<3ͷhCսOΌ9I]OGx^'>Xw>\VLb[UjR5 JjS(LeW`Ժ?8,M Y A2`ʰ_A5;*e z];WvܕOTg]{x2{\ˀjQ &(AZ⢎I4[NdE@/z 3aL=Q>`=?5|A_UZ^.~e?=G'U|a1OIVؿVZ4hѣFpTYSb08GA4Rr AJ/{*x/\ 蜈a/EOc/՝Wt11x ]~>r~e3r|j EwP?QTHb SNRގVz7;D%@q?߳!C{XN0 pBZJ\߅xX 01p`MaQ\AC@C` 0Fu:CKE`,#%L.\+g;#z*12:˕stm\ R䕀uHp_?~ !(H`?IB@al8 65k ʁz8F46Kg%ͶPaC0 p &aZ( [ CY!fEdAڰ/`dgHih4`2VIJXd0D`fB Y Jlbh`|:ߴHUUo|>WPsH;A}#1Ad0Lf`0X &̬C!`20F#2dY !$d2 030 ``05h=FѳrG*t`0Ga, ͋al0000(P`Eih1 v>>[=(Eцҳ.GZ C8[X141Bcb3}ٛZ49y=d_Zi8)|zn;N])z{<|WWx?խ?OdIul2[WEq8:wTW~}oKS̰c(>25VVjZH|Ÿ|*nS6u"MMjxM['Dg9'e2n޿[g|+ihu9w/r^3&tC)*RK\D(.㢝h-'۾ "YLGKUZ Z6]zUiA VMQ[Cx}M&L0}bt7X~@[ߩLM*<6bUìZYk+L3'gGRX.//)|BO<=UOpک ܽQh}.ƬQjnS%Iׄaa~dL[ W0YWmi0oGM-sǞ80?n,2P3anh9& Gݡ ]5?$Lp*ܱϓZ5_w3?0ĝNG>N ʌ̱zV3wm{Khԧb*@HV z5UNɊX'fעzl>ԝْfbɼ`CE H2$,kP2O 1y?ɱ%VWtfU˭xo+ҿQĿʹ˭R j$/,(p v"j(^4_,{Y1^~!Uu HC9SJNp,e$!M\O-nYWZ8S9Uݷ4XTcC/qY]U/A1#`C8ߕ WEO ;9<׃Cv#7X^SQ?.:yln?opx]lN_j&&ϕT߇!tZFvrwVGG/ 7붔#z??2IejGJ_\av«4W_q~e']~Zܱ8^ȿhxJGy몷7zOI2/06/Aj{dzCq^K VLZRiL,GWXXrjd.ʰae]gҫ;E/RP{[+rC|.~IJF۔b+2e6Dž,`d;9`öHmW";MӪ}ApT&l!;I&+oibdM4hkl$m2m~n ,Y1e&Ye7474MsM7dizoU^F5om1JRQ/4U}h1. &e/_hYz皗FG6fYL0ffK1fY1?U;o|ze ѓ?*[6 s],>s}ɧR_!\eB]'O_ {֪zڼߵvo pHv.fgx#Jכ47~C,idc='W"d?A^3F_`&!^#1CVsNSSwWJEr ra]y ±Y6ڞ닾'{NMb'A ־or3?:#?guN" XDA v0>*+y͍QAmG(|JU"|z/DQz)>(D ESS*Tt?Ui@ '_1[W>^((~~G9IUM4M77,8xysL>~l]1-;ݗzR2'Os]Soc,c# lI^ǥW2\e<_v&z˧M[XXdua|$o1,S0T&@yUZYR<tPZD_A#gC~V,iҥ #``l*Ol4~i+Eۧb~l/dɂɓ&9e0ތY-S4F/|s'+1,dёg'ㅗuh*gx?7?Ϸޏh/<S&Uq?.p8\SoÅ\M:sӁm+Fn[uܷ_ĶzOinVJn]ѥغ/Uz..иic%Xbjs.ٸlylYZ6Nuju\r#&NuZVrZ.ydVDdwNC&L1jb0r.!Wtf,.ţ5oC\%œ7-Vd ˺l6O 5Q;P7-JXn]X!mM\mWYljWd;&y|6,Y2`GQ5 (CuN#bwoW|suZlsӬqr,?HrXj2.st:+1nNXbܵ(xM3*})V][e+dxxion v)\)\&,#. euIҰnY]+*p6IWҴ bެW0*&Fj`Àd{ 'Sa?]"^)SVSt^^v/rVL--{ښ&Q Y$1r—up~Z^h3R6~dYb0'Wq\s{--[Huei-#zeb+Mi6ZF]Ύ4fmݢ$f1jiB|#}46ܑK@hr3‘ȤIɮ x6a;[tB2444=k"R]h?IQ) wM471p&k!}ia-9U| cM=exjW'yMLMxѰj (,Դ[b/:|^XIe2.˂z^mػU޳p+pO!Ⱥ1M͇@ޅ#u1۶:Wa|SjdSLa4^N jr/"<-fXЛMt[r;6ksr]8d󦚴%,2dɑz槲dwKurbtZ\}l&͝4M1VMM;.e{-WdB>A/k"9_J=ڨdJd(RD"E0EZ6PJ`]T"Pd3a F=BJ20^ɢ(ǔ Pfg{tfT/&@^Uε\FF gKɇ{ܨBR6@w­w PKVG*Q ..ޜA$ӈ:ըhhhbhhhDiyggeYgv{V;S,ɬ,ѝV<{=Ӂ:CjVkXbUebĬ_RQHE@6D|/YVY鸽\PVh4D@FtHxCG HypV0s7MO uM&ٓh-FBl@ɓ[,r]l-MIYvMesYevZ괳 ErM&efeLY1e1fny~NS5S9n]n,Xii˛7ngdk/VvM ljqKiY52gY:&WDZ77ͳfs/{vNw9ۭsM5i{_3ю/ͻhv5sp&ٖ16w{\Xn/bgx<Ocɳo'ʱlkM4p#Ybi, YBI*4=hKҳlW#s# I5ڳH'I\yiY X̢o8 &!@:-QS' L &ѭ&ѝm Q`|=g1G^OIc=$U`l=mPy]@ۭk~z.7i~^H(@v kQiQ7o1L{ChFWFa%׮,>{/r=(X<4hh @e`!Պ(CƈA0MZ""D49zh|#LgtYtYuVig2)H(E!5ꑤz5-iDI%Gǚ0.Tpք Bٔ{v XbI9@ʹ1)0Gb`%!l!YYyaWBMHf-X*Wŕպ7xчY,XOxΌC/*%UmF 60rKiG5W51պ䔮u-MW [)̶qFnrOb99ز-żBrE.!jXhGt-yZBpTa}w+wyߥ/0yԼg;I7'(rHxMNÕ [Ms# $y.FU"LZ%_6BP;ҡJ%r`XSM8%8DF7Po_&/q:9XBU]P J/:1l?Q{ZG;W")zs=Yb{opo6+.QGj|Y,bqoT{DjV"gp[s❾wՋOy8ŃMwEMҤp4kdofYc᏶lN,X_֓[JNk_e\G>i9Ҿz\F0[FeU^*Cj4Xɒwzs)wyW˱yǥ|}7[餝2NՅrvlG#S{Av|;ŋ+^}9'?+׾{bFܬ0zG{ ʯ9MHM&'}첛K۩\+x 貏deXdZO0;kW7D#d= iU{vPs_4z+9𦆿0b y2}-R}- 0ǹ]MרU2*z2x*|JDjw2Wxbfl4^c PҴ2&J&Pn/3h5P<p6<ه1lY fEZQM lL .@bLQTŲ ab01hңkIW&GᲭ6橊h:=T.AVڶ!G琉Ӳ8j:{MlLb7-_ZOaϥɌ4EHxEaLl1wL=W\iflSi9CDD`T3F1)B#f߆"hBZkC-0>ijXcΛH݋Eݣis˓t.QsKe5>E'K;E4_{u\ʬ]bMOPvaҧ#TܭTО'޻)^/9 =w5v(^cSnJYyGhK}qWɔCx6,,(Sy{j v,Ϟٌ̱ Gd zmw.|Gei +jSɑv'u=||]׻2Y +TnMM4z)ۢGPclooEڵ9eiv+ge靗>Ӗ:x;dfZ嵲9b--HnGmsʊֱB@gaf3M:eaeLS/',ql{͵/o"TYMeY꽮S&R/_f^۶?+]Ds^5ރH7QwnXᓉcUp/rͽ wl]}L! hE9Mu/MrWCu[7X;-,qo=XfnVjS+QZ1|nNx˛dRNs ;JTY94 cvVPntuKVnN[Q?/ccj:2سNSXG)(IBdjVQH;uw+5;*d=ykX\W2k^t9۵HlIGޞiV&["'y "H2jag8#Ґc2a8 5h`"#kb0)э&Zt7՜x=72[4-[rDߎMvvi$盺w[5Xw'C3JeVY5+[)bօS)0|6G:nڽsLeiٙe/D:b[u]̣e\5H-:.Ĺ.ip';ʆҋiLeNkM05qx_ {e6b*ԫXXtq#'06ʘ:@uڅC4A?vbLI%J jCK"Z@X8p #HX >s烉2U‡DE7p8\[ a 11yf7ŭ1)Fmxhf.-ohp>7, yGY"LoC.8b=`.d iULOa{y œ *JQֺ|d+! bDBVS&d5}.hyocP Iɛf8`Lgz!qnԣf{%[d- 2JJk\fʘ]gTpL3c8f_Ir0d)D82tNnm61X6lZ' yq$&_9xz 'K) \P2Fg$ӔA5qM|E*x3z8[ѱWB @+ )9`@@miBAA2d1ȊmpHI#G=$1Zd !ϞQ5 v4RNDڹc1޷(WubC' g,s..Ls 8SK\mުI<g0w1)N}+Hɣe#y9 ;voc,87eW&,Gin$H"n$:FOؓʰyB2й,.6.NfӕTd7m(؝m)%jp]?ufצ *5?X)}&vQ)izιX~A<t]'+>[K1C=.4)JH+\0G`ocʯ235e5lEf\bCߚre32앭ɤE5Z׋QD*T%2%F˷nr;y+odIvhl +|Fᢍne!=f{nJ&Ɩe)돏O${*Wĝ);V`j)EͶޱD]-g$VM}gK{˕$!,;.!Og͕,Ɂ<޲i `ՉE]v$#Ɗ?Z噙_aWkK+>/6(R ^35D(/?s~fz5낽t>|}znT<Iu\I짆3G7]k yjW|=o/{x<k/u?-> !q$~"5T $Rq˕~J9LnbLYoܙxĬ7[2ڝgmgd02Tԣ?A^_G}e9'*NLkyGq+ V=ִj2rzLY>xM0Tyz$IS+[Ђo$Rg&=%70l(=r3^=o=_]&)cjFAB?R( u#•6֬Yc+ZkϽx*+fR՛7m}Vko[O)c⫣>uNaDzkX$\](#O2Pު<\[Fz^=}s5?4L&t;+Zpmvެڀ%2' f1Zr=BUf _1ڭuoZh1mVoY5YW5Gi޻Ni.ֽW:(r,ꕃƢ.-}ov}ֹnn w9ߒ~7{yM|z3;G]I96 4-jU A*D*&EoU8p(U*F5hc:n,F7-h E͋>}6]KXHie!),BZF2 *j8{&a!*Pr)$lu RTʳ iD9ZMr5S\A#k_m6nkC'FM&4v r"UHjbڞ !82V,er7Xb[-ɖc4䭷LM'f.ܷ63Mjbxi7Vݖ(Ӛo/Zr4k0y@jFm{]9},G>dUdZƦcVƋI5fziJeRDf +0Pe2AUaZ!&&z۟ TҬjQM,Pͼϛُ9 G@pus;kU@.zij+nNw贼-kj-fZe uh=5TsenbZX ~10*>Ny?{,cS ?hź_UuZZ;cs8C[\5geG11<ޕT$ڋj-K*I*EzSeebMe%2ɳo#a󴹵v;O*k]emadڎs3&!3[>eA,YdםL(W XU/ ^@ ]i"w+shQi;VH32Xy{h:lʱ :EHjCx1k(i(g2ys4S:;رl5`,V& #[o}nh24{5ߑ8W'eR>gkMT7M&mjD@2$eOW 0pbhidMXZ Wi"Evuܪ)CUaR6۴i:ԛ@ˇ*li+iՎ̇I|kʾ[\9◞0&ec"-/;Y#+nrWAe\bVA^{d9L: dw##FX$P{}.>ѓ  b>esT1w]leB᪸jlq 0XšzY.j'm= bYck'Mιd*y]v$j/:Q+`Ubwur95f)jx.Ga9y^/Yt/c}/]/^adizMdZkFdj5npoDkf$~4fCI6$Y3-PI5&ԊHa!8Պ8+&SuP&1ԃʊ*_kzDDkZR0qM*Te4*!m}i&7M1i6c | h706mV\nyqf[RhZ}l-э,M0l;mZ({#C,xm)~:,JvåϸѩȰ<.^ajI/+,Ƙ4y sx><\m<o-5bl;ߺ!ilt4s'Lmffe#(z2.PIqX#:r#}d}O]]0ϗXX|31`xw f}ܱ}\OGa˴N.}TOxjf_t~mˊؽwc]CqLc=>'b$2L1pM94<: ^wwnoPo'f>Ou<; ,>e6^{zc5袷|+i3.klXۺIKIVčMhefyLR %;ry'\ 瞑==u"Grپ#x׆3g^(sjm h,,^A+[B~Eڿr?rεmѴ.Cc]; {y<.ռ*ťy/*^Uy.mGy^Q2<$l,!W-Rz6>6iYƷ\cښ5)o9ei و!l&X~5lZ{%Se[ecJ◂^ y9<%r^s9NS:γ 넑im]u׏ֵ{{{d2th4al6[[[[[ al:N i`4j Me2y#-1efNRmLew/ԟs}NG{r;s .m{bXqvεh?!Oj򿅚XٵDO8]KΏ6&HLX}vͫ30˝oc&YٺdMn+ZJYYXбom/N&E遌,Le6+k-mIUղcX,Kۘb[dZ4{qivv88ޛ"`P.gO9/tt~^ֆ˫{21w;7zrK ,]V[~||<ŕ`aN7ìmwuwr¥9Cg3,ڏbgo]Ͷ{gEb՞rO-@5mr/Z#vh8WGMcAҙSYbg>cMǛŌێwnYge0BV*jČ%q[[FщȖ&8loWT#\oKVѓ"ː3$Ģo<'+er?%uM&bՆ6jjɢ4ٍ1Xn[2 #~TCMs;gytf}j6 ݐ Ч:8@P -7z{~ړs-;,8>з3(jb긍6AO7L54v-,ɦcgR2""y+G/n|+8ߺ13&L+񲻕8vKqJnr̖x#[4촶ū>cLNKڟ}WϕX|Cb[0D{-[3"ZxۋfkoD Y+|ucrVq˽ildqK'6[^P^>5_(|,26=25Zϛw{0~,lŌdbvR9zKXVσ0e,bOu>GAڲ^%҉XKKdRܳ~v 6@fR)GWv/bJ+X&2F2V-K˻דūG^=9|n@+/prڂޑ,,UIDkMVJ$H>͡hҋ[-m"?cǯ geۙMo&ޭke-SK,'%Ӗ#2YfkKX/U{3c×ϸ_M>1P[ JSbҜؗ $rpͩ9媴J,6"9Wq`,N\FVe>쫡4|jÜRͣFt>wt3 ѱj\),YX>g{^bN{.Wi|VJ^X:DMIUe'/]z^e#;  }A)Hx - zl/e: wPqL4Ki -6VR0&1R*cq0cm1-Ys1kȣ.2ekl_ F^~c'ZOoa0OK/jv:c^CKhWl91a,[Z{$ 2Wk1Ӳ^uCL-O,J42:&@@1D-$5VD!6CԨ0ie2"[V'}ďzϲnZqV 3X*0fL =UFi*C۸o /2ў#k 1cEq;I5Jir1iXJB`16[h/[ lݤ Ȯ(r!`)̄hmTՙ̠wfZmﱣ3!bf[gv;8۶8b3LY]7 f}ͱ57XbicԿ}kO pL흙 d5s<ʘ++tӡZ4a뤚ڸGmWWIҝFԼ peX4pr47Lhb$epCdrZ;Nme:;[KVM4䬝{&ڍLk3,rU8`|{ -A6hg>߱a=mͤH"F"%)DWw[I7nzuړQW#J>wNKh͚h1@(2ԁ*Ƙ$).,.}-6aKM*F#%oّ{ۛ9YҩewUnb,&5dle&Zaؾj&R*zVmDy?| }f^y1M Y3ҋ/(_+J~/_Zru5F^[;3 ejȪzA9NKX1uMڮ#:]Öm+, F~wya^We+Gk =݊U1#'kK-.VnRڕicZ.ܫOZS*یՐg8oDڸl eSjNrUNչûuO{ b9W­,b,M35&ZY$w:yrQ{k{QjH̬Ȳr̥eӖMdŷաie>$Cu:Ez7olzLL-蘠őbڶaXkUdp{a֯Qms*tblKJ*;_Ȟ}U{6~.1-;(*bUi$ƫ|d-g=_20kу9SLA{y'I!K;5wĘ.suAw+/Z{Ajj=uUt(Wd̯cHMV!+M ]!+~N8hqkg\`XMZY"e9)cQFN M1ʎ"~O}ph‰%܈=Ќߊ?eYR*AR*E"^Ũ{Da Hno< 9CxNSl6 amm/(6)vi;NuO_z/y1oa8>hNCkq?M-R4E+mLI[KfDQn'͟ǹ؛L6'{;WA=f]*L:ڎ[.N1SkvaoqXƙY7cw1b%l9w/\-eOyˎGswEoU֍d&;'|1J2Pf澔SWg| _g+|-Q篴\ۿ9|^ &woQR'N6WwΎNW?\uϙTq-"HI~J!c~^G#kp/,,g~ّMAPQT5M jFfT~ȁm:a&mFJZ2$ڍ{ $w$V,vO. RxZBi1r#$0D0<첨8&.@+W-2d`ܡBtAgCH60&I`hyÆnTIb[Ө&fMˆzU:msZzKfNMʯ3:tN*rp } !2 HL ;x(跙2ddɓ&jk;;;;dqgӞea<6y'ml/e{-jr[@PVD䇠4-지Mxܠ ș9 ,ezSjه\PֻNi̝6^ˤ\ep7v[kAʕ-7CNFƼixk13hu8t&f`2TJAZ^6W'8ư+#sڈPBhM70="v7fZx+Û5Xo:3 k2ermW0bʓ Ib¦T)VF{Yׅ<*GQjO_쟂x̃IIb2l9ǠYVhl[˨nN#/t Qqw^v|hѽ6MZFٌv1-mVm l݈ҖU4ޟ/Ͳ?i]YaYaU+\Dƅzqe1a;etyxXsOck> '$eX1DZpr:CWK|a0~IS}2o[g7#K?axU2wܕrYm;,j%;d.y/S Nh,<]H}50aՂ˸Q6K}azVQ9ڻ?T)b:mjK:WtwwҼݞ jlLT4N% "G snO,v=g.ac-+da1X݅d1Zu`:PotLޓ:{c:\Ta>s;p5 U<lLVtO&UŰǰIf%ͦԶ<9?7 ީ74xȫvK_IJ P5m?m556MLE<NkqCljBmecG<Up#IzSKK$z׾Z=S&W-=lIڪ ze#9VO^ieYvvd6y̬ F;BRe|+ke=MV쩏]]֎ ejl[fjeVU)E0ղYEJYmճ*l[e q[RjmmE1[fu{6,ōmR-&H,Cz3 T+4 jrbq@!捨Zu}* s_MWӾ:>{ Pi/BhV+0X#S:ysV,8bOwIv˛IZ,sw^v\J ýW/_48{)]cM YӢ_9[Po{p"ұT7F"_&f^,{+f4ٳMWv;~<5L22̲`<?yIU-_ƎablK k* 3b7ʷe ʭ>U 0~ lVFQͽ>;$h>_5b`u\[x9+Үˇ E#HxsV%Xv ϩ-eg[};h;zo=s֙희| s޴ow'96`m1HFeA[tX+X 1J!Z$ _ 4AҕI }ƈ!Z@eci]ږlu[h%{ *V&VXSt޵@bZٻMH?7Щ$VV6ŖҬ?⎽o%= utNOҧl8lboO~íT-9D5o˟K 'r{.L]ñy]GԔ''gƿ}v1fmߦe|*hN w+*<+ѐWgWzK]Uvt'c>[ 4^m$$pֲs?ERMԛjzoK~Vg+, o!{dk,,̡[ˎ2f3+[fkC`6B#0X2S24dd[H+diCZ!!V1[ oik,6j 0QLoy{yYM6o;sOduTi$QbbHmo5V"!FMYA6 SD%w('!:81P6 C2 յe1m ZK*hVMa*B7cM&% |^+ [PicM]bmlޭ5I[Vޑwjy}3/{z+}o^T*Rl D$l*U;j:k:n{۾MX@>A%*g;[ooPu{+Rӭ"Ws˳={5*iu׹o}}K=`=i>}yҾR[l^\;۝UNkZ};m^|w"C|}{\J]}UWۻnqצwKWʹ^ujRzؗjmwy[g|X5)d{ˎ^YT׸wvֻT+zz鷧g{wyj{􏅡ԊQ4wx]g9˲f,n}ԲxYĶ[A]{jFeV-mr0vұl6ҙ"" w5qMc4Ìpӓ6auT5m.rk3KVF:qۮ:;0v%ɩڲM 4A4hF 0h !=Fzd=L'4i'꧵Giy@=@2 4ѠdA"!JJ~HPD 4h he=OSazOHh4"Jd hFQ2)5' Qh4DLizLM)I<)@@ѦD" H, ,* J #J "*"B( N+:r7F _})8Aq܃TrFP$ۋhe;8p:ff7Gݫ3vKv]UnuЁ<4r '~}}__hHWl=x$38}qlOGS>@5TO),£ ozxHƇxrI6=) :$ȸEa*yXϗ&^e! $B4:-A O^n|ˉ7;)̹K@̊@2 pa锨hVZ:cnLf:%iAuy%]8_&%Ly4xK!9yqT܍$ @sDh)*mzN$MRWIןWsNחZD 2bi xfRA`3^qu< g,3~D%tVN^a%o_t'qCeπkwύAxFze^CJN7æ7uWmf<庇iź~kUhFce~TK)~>VKÈaTrv6aג2'~%j)>3}F.irEžC,qf@8鉠b $p*i>1\k~e iiRP2ݥ88U#\@dr3sT&/ta4GRgpWh ǝ?_31Qq~~u n@6zv8[Pnv۞ťV Of+9SGge\l HJem gqmt9M+\щ31uܟ~םSʲK'K$+>2Gߗ?n;H$IJNw91~ғH5L?Wgk6gg.]1XvȚ!@ j7؛M,dZ8B)3$} w }n5YmX+$emv-0?ԣ䦔no26 ްW~/_0u7^b3q3^6ԤEF%mtUv!W6z8?Tԍhu§+ɻ&*Pj2) ZEqιg ^u4 عKDžzp3 DaYՃ.ćhoRF +G=7 X˦T*C> EI\PEt#DIx8.J"q<0Mߍ*{(a/^9sQL٥KE~6(O][0"zUFfBK: CnG(bn_ɕ#qTCXRvzmyMM:x쟳 NlP?\q- D|P Ja$y#Sf?e9C]l:DJQ}?k'XruA[(Sg\0 T'7?g<4Xֲo.D|4S} m =p8x*Y-5pvlm 1 xx+[-ȡd:4>o bb+EPW⌚C ƴWUmhފܮN0//iӒ \To4y.MoFR;G\h`"t%AAVJ. hխuTä<0m:\BOU7nֱ/R2DBD:HgMǮMK//Vĉ]~~ :3C]8JH% ^{ ٨W^-Q9"S{9I A1|vjеql#]T.zMaHx] '6QPMVV)Ǿ<2+8HUF+^`βْ>V 9:ZW3)՚^Z{N͡R1rxn+RNgѰ0C;PdκB {Ѓ$SÚvgw ݈~}b8ɐ,G{D_Uxd.\c <-8f[7fO'wvD=u`RUSByqW~3\τuf게&z~rw JRpDN35h#O]u\X<)M+\eݗS6_L(˂є#>p}\=8< Jvj f+caԋѿ- 7L/^6p>cYW`(W_rɳP $,UB8> =D~ӝ]9S1ݣ!),mㆁwvQyf~OəFjpP FPUwQ##,*++*]kL,GcEcw!8UXB2o/|)I-qǮ`^mɠ7~-755Lh;^ ,H:&GIP%z-*h *o%MZ>^;F͇  "8XmǫHſ*0L ,'T9ZXQHA,聺ڨذ|"phBTJs~?f~g7{U(}^j_jմPpn·)g^xPcxuIʪV/dG PTxQ׎h!]=^4̈$P pzq7C)'~4qw9aONv3ö>:<:u2z´%}54>?>lr*,/aCZ}4!m6XKu Y"52>{(W`s,kRʤ(7c{ ecERfCUFf@k}\lscqK_^xZ␺ (r>s h|p׽pVL#G02/9E8ǔR*JsM8P`xN~$0d}x}5a"8.熆wJZ,H*>w?UÒN@ >Ү;)-pX숎"&*}2To{ lõ9izm@IڦSzkƠ\TTJ:{4c 8]wE^n o&MV@'.2E0M_5c'ʌ7^7ϔ}w7ٺ)C 9k)/[NNj?n3fVL}QD}\g]I% x 8PQ(5\7h{]0m$vUPMB9cGujKƥR\;:NbNyyTr3'j6=†fSQPnAR$ Gvgdmdc[gNuMk3vͺfME/Zm8kϭed`L (P >&Ժ T:!>9zA}T̂P8Tz uBH'@pVS3:i'OIb k$ܔ~a{ Y̩vodyk?Jfߣ\o`yzKwo%yv@Qmszڬ)pq}4,ģU)`<&WiXĆ#A9bCrj'ogהÃӺ(8hМӻr0[G@o<=}'}o{?W$xxJ >Ws`"rfw~ZX%l];ϡwlHJ_p0 - >EBhjP>*D@NPL~-4eW0{#i'J1^߷ ݲLj12#HtΒT/,v-=}VDmxXsjk-O W'*qbχ+-*?n'Dw)9eH},8!6x!9A3 :?=ж0|֘e8}zEOm;t7BIE(s}tIp߈:}Z$ϻ P$dN9a@ɇ0G^ͧ.!kPO@Xq Hˍ7[ hX:"-ԮZ7P O*IB"WpGH'vLɨZؠA*W%R*1( sDabaLQ婰j'@#^S($T MM.k.MxgKbM~)kW3l3xSD16}A<{ rM!1Scc]k68mFR\="8JsYzn 7-Dlz+w!v }ڟ|SV6gT3IEFjis`."~T9v {.YR}+tvc]S1{z?hiO6ʐ: = Vl's+~& oD '@$E}P#x (eZ6gP|=|Åx|>g{@.OIF6ssFٞ#ʤ mAdw?!òF캨lFwԧwjoeˆwG~o$_2#KfנּS I3`C⹍%1,G*7G^h7Y*/YӸWk=oudtD޺B_Q9]ᱝQAw_h's C&ף6M!0{MuMBW<͗ cp@,K~ pmEߠ|ۮ@G:p:(P,8}VHd1F 7m?LˀOt* KMJѓ JJ HKs7U?N&_ xd&Ib/u/"Z( bZW[F_4b:ay]5Ia1O7@MC4ߘ gh_ @K"9^XnxI3z/|^.Am8!Ouu&}_?AZV9ۖOW9sv3DҼA9pPBLrSk5ԩν<{ _uP?-'LZh<,FN]繫ls-lj)ӓ+ւ4~ڇy-RSz.(  ,Owt!tO'#܆8Ov?n4ͳdh{9Tn[^BCuCq:ȼ߅=Ǧ/2Ҩ}s;Ft K%9@BΊ ¨H,Dkl!-u݊@2W2xPZ,CIP\h],{ _.4Q_ի9¥+\%iq31F&FRZ)I|T Fq]&nO8$JOqQ6 H 4Qd)cPQaS_7"4ǎ0}d`ǫ,O-~B!˷74OFj[R€. p?ňTgZgx~=%On3ob iQeђzBF@.}G"',󖳿M,oM:svCW8\ƅ-J[/f6''H#rwiEcG>աPHD~@~86T.( 9Kˢ =`r΄- /_Þ쮖_i,BlOoiGcX'ҡQWa>pjV讦J,W>$TUSWh,HoCȡ9+bغL* o$3p'f3H "w~&ϳvɞ%薄Mti-ZJNvQE%PP!AEX `P?YAB! @"PHdQX%@(DP |1!QS"*H$ *"D P")@*4* @ -C( B* (!@*)B HJ)_GDi0Ó͵~`BJh1 Chp_O_3!DbwC@x Ot1O*B #!@`bz!iF&DNǣc h5`/4z='搋X~1b ~p~->8}S9kks.PHV wo:vkV\W8YPC,Wpk2ׂپ):X`Fx6gwb=8Bs^|E7DƓ{D76=):$'JڶckT'Z'j1F(B- . 2mq1xFp:+jMC&=LYҿZ%$$)͗ h"~^R2a7mfdAAE7t^#yGAb>&*c]t3/N9+lMkc< \9qZfa&P.' !S%z2AryĻci5*!g=ԶEp+HH;ifwcB.]aCJ L!ɫl:W QV˗Gy%L 6PveAw0GX/\p&ײ tQ\wZ˗]RT z\8q&RF`N- \4Ƭxr;[.{;̆9a6KSurͼMؾcw~ct)U޹ L'-SMЗ]t)!ncQs->.u"C;agO:33s#f/Yhn5V%se51%װclD +Lvia7{;\xɐ~^^c6bߖN^ucVcY^\+GƆ>|PEFY/|_u#8'_xTjvٵK&v/f@h{ube3PPȀ(4e`@a d9֨끃aYr(X7im*PL~gNƒ7kL??wU>=X"gH7W@}ﲞE7*q/1MM;(d q-f)ęQB45g/,鷲$C MGhv:F 0 ʜiG-u uF5͸1 !*%dPVR"#,#5ɫSV In# k (` VFer#D1OaB-≖0K#w˟xэi ߉*Ԅ#: !ĠuB4==2Q!<.8 7f)1 qdAT K0bR:;qT$ 3'Le* &twXZ7!ƔN"HWDgajW"4Ox=XnCrxrN݆Uг&hЌ&>}QEvMiEVu6U#29'TH/2xH xE )JȪ(NR| x9oǠyRErh)S!`z94Xu@9S yy89.\8=8!322SQ~'Bm6Y, dfrH68ZB4tu2ra`EWGsDdRHxFɊtPG @8:ʀWf'ܔ2nޫz.m<{}x{hC4߼J :7ݚsjPSh%4 DS[RxĘ; ЅA&6z;`Lhpy_4VV)]fmvT*umɔP>bjT_E`s8:_~V %(zd2B4A P~TQۖITdX6En=2]ﮅ*U7Ii^lېxU!|<5k5,Cdvafc'_ Ɩ %Ć>gP*b@w3v e(\Ze+o0@-87f]ߗΛ2>>ER4L ERU19916G'}@҆>_jY^ڪI>%^8`U kԱs%BsM⌓yX΀ʒ c%As|@3Rpn1X@ @γԥv5DD|ǓB'ܝA~ U"^k  !9C$= R ,S"# `$h.Ϩ&r@%ʐExGtM+#J70'ok~<>x{KBҴ:N%h~)-ARaؗ׎9;|Jwl傢]@ :^quЋC '7{ZyߌvvGtơP&*OYU7ѲT*kN^rx!{@-th$(h}rn6EH=!<9 g$@1]N^l)qB^ʌJh>6*+{x(&r^$u?Do0 -G- ksJȐ1c C|`GYefQ CD+[hc刭mDi0 3) )DI%wtԮBMrL161.u)KDL"!N(4_#ވ` lT#'Mj^!+X:(n|!4ZJաlX Zpt~M<Ƀ/,F&}&K+t>@걺]DMd<:9G|,? I!uMzԴ.Y4sjdiav:0Cn:IluI[:A۩k(LQ+\3CXx`I&}!+;Jzw~ Ԗ̀|2඾ICDnXסF+Q-NMPh Lyu<гYIhpO7V%<bD%o,D#: XDsv͢墇ANeRj3Zߖ~ŻS̩r#] r3BIcY%:BBAS6<"oeZ%e>ʡWԝzb^CG? B gk6'~n5+sdd? Xڥqe*G5weC@O9#q! *OD=onhY|FaU$JSm6ډ}HWS Z3ܢcY@&h5R*| 1ߝ7GJ6t`汌앏a0p6v{8M7o-Nj`Q{a2IBVwD6u?#.YddچϨ`viG p86 / iEUql.f ASV>yaݍ:[v*ֱvwc|vt0S \мҒRvQUFRDvTRiK(Vz QY˔AeD-wYmۖZM3pr$%[9pf`iLŲ~V;9Ȣo:,ZL2.x{Oq6;̞&Iֽ Rq[2X qbZPj~Gvf/gOў 'Lrhq^e A%6L ɔ`9m8k$L.4kq,@`:DVƳ$+,镃 B$GB7juL-^H B0 H x@֭؄e ' DV qc$iF^i9Xu1vX/9%”,B :4Q%O@.,($(k+GAr*i.aR!0vM橯i`]:[_Vmm"/}g1V,CYCer=47aI((!S*N} a0#@nԠdrr0XJw(*8|CZ/!:#A$hUw|>ya]c:8ܪpg0rv0zPlltT+=wwI;Mg R:{TwDPfL>/o^3<ٻ16nVɑύ mZk a3D)(}zP&hD7tEBkecZi(ilIdc*~Pn9SǏBۯF }ٺ3Nd U#*deI f vWlYP9[~Y |ňX0 !0|~o] N!>! $KUEARW ̯< s x{;SUM k>Cbbj]*];'&;@E3w񆙁1 <%Пߴ Pɥ5$C9##nV+Kr9rF{m,6Ŏ5Bt7A@ddK)|bd@!'ΰh %!0È0G4# 9׈t8hÀG!'R=77Uqq6F1&h=+%'rV%8dNFb:ƝƮCT>>IM.N8bE`Ƶ^8MF<§I $}E\goֈJE2P@Ò3~8M0T "rrFG@Tݾ3ҠuǬռ_Y38x< bʥZJRzه_H&x;?h;dׁ,:} JhB1ּSsAԶA.b4C˭ m[ACfNCɔ 4 AI87&s.'-z]qRdTKa<C`Y*PlRknό2];0IHP~1shf % Q44PxBM0^\i66<&h`jHy>`QO> b>~V!Sg//"xkm:H'cAwƙH^CL@dp t`6@Mmj$S>%jL + zz(#;c(Z@|}3$;%(HPS}PP H /,Pe((J!* $d4 {vPp0.`&2yXiс$ )@< {>a#L b=O{L 4m:;aߣb= #Wx@rwR Ҫ*pddA-63F%,ExyalD!|`3OXީ,faOWXCsLIZɵUZ h({  z>U6Ef:] `&?̪0air PTHOpEkt.(qUDƯ-{ dczbvBD3u0ZIaGL}>;|vk61N6\Ĭ?M)42NdazxJwU=BBK8k'Hvkl-[^/3J6F=KT~:CvSfxX4I.!!G}d~D@agbjcd(c ֞=_'2̼jDB)[ |10I؀-weEQyl1/Gd9".ZT6lǒ6r||=a%⎵N Uk{?Au> Z$B 햄U4i&fa29UGOz!Hb!AG@xT A2vIc f'"5D8*}x D[?j5iK/hNɗ΂`j6h~= AĊ$jQzH ̢%!̵T=&$UQP8RAP/`< ȑS"!х(߇1 3:Aa970PbxqO:|X5X0SK;GT$ O{D؟Mw>u/i(MA`H)b1 wj³r r׿<ڜ A5t42xʶS0iRcfzq MxACЩ(:;wX8)ӎ5dcn6۾;?rv%럎L̸ѵgg(xl$3%i3x{8*!;bbֈ@[i3:ٵF-Ɍg ᚖ!^w ԑ:XoI6qKGj`nFa>~+s< ǝk& R,D HHT0rOy];}xHsKKFsYGlZ2}}9WS'Xg;Faש&Nu.Fa=f̲3qЌmfx`LE pHP08cpP ,ot  ~ uy"XGiy˳>.^+Bm!S|< 2{[Y9Ǝ8Di~s`OiĆլZ* CxA ȍקU:%VժСJ#5D:2(&b"$i`Ib(h2 03 , 0*(1 ȳ0`)2 #$Ȫ*( BJhhThתlS9rs|>5As-b(~ RգX%A:>)f#f\Gz+42)N|opQPBSF( e^:xq6I8cC۠X}Э(`an)m|>~S'iDͼ[Ҡ(Luq |%a}N:X/[#DxfFFkdq^믿:qhc"amyx}Ͼ8n00޴AA$DPލ曢$&;[2^0`<;JDS=&/ [yC* O.߷Ofv=Ce~7}z5U[sP)Fz T8ѐ{{1KT6~/X.!PPh ĔG3egkJ X5tNqHCî՞ +nZkq;2XHً5qv TsMV">Nfkx7g$QB$0Pnl3 *5) 5+Baq=7$(9K/^p(Z/F*,u'OK$`nMיnĻdq*Rq;Asᡕ@|OJ z7rRy!ɨ='a uG%Zi>nm+.p 47\FqεCB>s8\}ʕ;CB8+e)<2Tɱw6,dwq$R$$np+KJR%I(# ے5kPPܵ٤<ȉZ{_vj qoc 8{܌sgda6EX6NVsIr×P8ȕA*f F'$Pa\:y~GsINKYڼ_]VQ =7Sz3Ժ1."b~.+^I nNgm/776,lcǯI)pZ+\t-WV11Z{ŠuH㙶l#2a l(trYWlNm1bj;^-h#J!-暽gRa7@BhpdisrLl6b_ĩG 3dib׍&w}uj[ 5IͮXI$!,Pd∞[9S wrd΅U7&U;69fj%ӿ 5.].A"|XГoDCj.aꭗʾYK#>r(92,!֝שQ+A{ZgM3rgMMpK$4|x#eD#]^(3bW " ۄDtʵѢTS9{"oM$7~Jx\םgOz; }!~ܲsB̼ 6iի={|#LLF37_@YY^MkH "!ϧN=V`^_t<nЎY7j𜊎wgɥZ3ih#[Jf#&5=Qrt }q˧5Z7DNW` "O O~IPwXua]>\_.UChLr=8DfNh&GqEsξ~wwUUmUnwdѝ@fCzܹA밿 .KE8Atp3-+TaU(4yt6twĻ7.Ăm:@. @qqHx@8 V[aD< $TRU503=3W߅F;vK}a FS=T :q8#ʒ BQbK+UUnؘf]!^e4 7kJ^:j=PJ Ggڻ}ꡪN vr;jxV3<^ޱ Sy_%+LJ}&% ETE(@Zj3M%ӹ$;t%N*rYW.{m'8;K5״ Szp8 VbI4 Fi+:Vlg:^ڶCoYOfI_)+#I'6LZcHm!]JfeIWfK@(@$ລ %S5 y7pn ,\HӚt P*s.})_L+áp(/Nv{@$Ղ@x*Q* _qۘzr9lֹfqU' veż&Or Ѷ^^xi(}[/PR` * 2 UU AI V(RW24 5waix_;|_ 1Q/r'qx=L& KPsB+x1|T?f) ֏H1!sZ"kR B *KYT>JR )ߴ2v"СI(c8hB(XFj "`%!$`I:.D$71pP>=DEPC #$-CB@, EHPRPiňJ$""FuLf !ͮ%H@(SBLh6Qy1 )q0 lh}ou (Ȑ"ó@h!0 O_@&[(PBx(rx$  BSqS\ )hGϺ5KF0"B@KDKQ9κAJh332pC, _V)ND@U vA=>D., A^ɹ¤Fad BEO^?eЫ_wبMQ;*[:ݶ_ ,tXZT 1 $?*WlMZ[]ya`@jc**T5" 9 D*\)P @WBʮAMxSxIf=EBR!)LBA"hVF<yYj "X 2Hj ?*HBpOX}vBxDHP> XQ戜`HHA!  x?@^>dOK(.5>spTQ|6$| Ya6&lz1HJhȋXjFiQ,qUK,8X)qgt3*'V@f oNl$I5_Ywq}@D*+d@h1qm6凱qIA.5\?cpfu@;ܟ Ώ~>t{EDgSǖ'3Ofߠg:通B{m:ob5\Xc&8R0޺ 3Cpzyxjp3g66ȫk> *:;vVOOhVӆ4M{7i r0Lpx4CppQ@;m+v':8^S6Y`iLlE9cUY=&H, ae z&6/uD`f:\vcY)Hd%6V  a&؊k0R ̀z㎪Y>}Y)?2- |wD8s"\ :uXm5&@+m;yGQ$6mBu5ho642|k) M|l7i5{㙖EGWf ("8h5#= W7>#x8 /q$;(OSvs0(},#~Gs>d8~N|_PPP\}aticfRAgٳŋ{I^ _~cTWa|:֖}h<?AҼ@tK="JNA ,!Bn;@|ׯpWQGD kn.Ux]6-[ Fm>PlءA%@A@n/8>7;@阝TG'w")Cwz%) Q:tZF?1&\$ftQ@1:$!HPT5^ 3ay֤ gxv>~vL gAᡗ34&Aa¯],wY^Ads|r Z @02p<9wl'w 5pz$S駠S^׬ AjM&ھ^ WYl}];C:OHkyqMs;YEwƆp5ht]s'Z\ܑL֓wn$ng4ՑݏF݅0JMS⚰W/XD bӥ\@dR|\}\l:PnTlI9˜{M>sx սY(y@W'?VwP ūa{~Ybom&AGZdX̂zp/l50dԮ0{ \2~4렁 $H }_d6;eM7$X'&6+إOiCs0)kT, @79q&A#T*.чBj; C޺<ݐpt!_ A,$ (L5E(hA=G=;EߢiSFe7 D }')AGbhRQC^ r*LcJQdG ?cfWwQ,u D@>Q@ ',}>n""|YշluXHA jP2d8Ww`ʼnjRKԨ \ۃîaX#yp; #C<29 Io ZMȋReAcI0~O.U\4Dr ai! qS \,Z& /M`s||/qyq0V#;{BF%HgXR[]<\tc'-2Ι3\2l~_ ϗWX>M:4&=:5 >oyvw#$Ziu2s?0g$CM$r5$uFٗgfF`QQKd,mDPh l HjUMBA,"2q;.L!(T'Y Kt JpT.m y2wF`ƘxDc怷LHQdR0pXfYC6FwUY}Ax7Kw`㉘x@\CEP&<90PI Mr-^d )0rD 56xj9k s 6B$RL3F^4+j"\`鈺 _f[F&ƖĴ`[*e/?ڿ3/r~Bw4bÄlΌ ts` \M}0@453G y.+!]n>"&pP~wwb;PsT8x3۩]:* *@`\WrC^G0LOjn c鉩CYj Q}ܖ?~paϮ? ͍9.(cȝ`R~ncjTM=PN7sH "6IT7H'\^B\ցSY"a8vPk[!Le[TGCt-gT9dGr+" iD?vhNxym=G42͋Tť, 2)ߨ=rW85\n cz8G*\@ZB54s U;;_ {җ{0:%{J$bӯ. XBU K98<ȊMSԐvfKT.ūRݺ<3a Pppi$kq  <#FLCA>ZҭWĦ-aOfms@)ug4y0^}kw@-bBA2 b4$+aW|0̠Yh6Xi&@:=Q}۷`2;6B.%$.A ;݇fq7є'lfb_mWx,O0LV;y=^琩!Pz{n0.!h!&G 1*80&"" !fBeԵ1c70k\Z(<`i[xo4g>KAa08.@4e#K2I1&vZG>s׈K0ϊ_xJl8jqfS0,QM}"OܼrǯRAy\`1!;-~^[4:*^ # V*(H5H)'2}^Xgğ~-ꂟ+!{xyiX~[A<|oBx#{GV]| Y鉔K "=|- |>=waoQ'swb ݺ!ۤ5}XoȟMpO D9hhT6C9b `5tj@)KS \;T1`8&.d~$箾nn},n): z|D6wA&Y#b(m w,L69`h0D l7U:(QQF D)R}ɤ8{D5Q2dP18m]mr CF2bF4җ"\:xP);;t@8ǃL3 !xѵ _2bH 9CtOk5irR/el~GfkBl+$>-7ش=}1ʼnށ+B5`{BƆ'$p f$֭8Mꢢjgy7hz;9LX-(j8lh2ffZ` Ùp]̲!Gb#|I ql $;p5FKfi T]P "` 21מL6]`c "ZA8]""vv{7 d9ЦA /cRCWzw9 03.AHNMq w eW%7p4G冎A ClGx7L6zoЭwS4 =nOfPQ_{߽B#~#pZ2gU)%8Ï1ClQS;l;wv&렡}NOH ,BHgwM۲r 6:NOػRXB+! (t"qI{ Nd ^pp,'!!R!^偽6É|@@9vX3̵C3mI~b  Ns=~w|co<=sHc.z<,<_ $;9ֿog`5eS? ͚< ?L#-FpXycX|mq 8{>6Xݩ `W3ؼĥa[q*r{Jkon -7"E>Q2lCh='\7/zvϺoq}9/!4ko=FeϝsBmH(nX(~r'=ۜf)?XLf3f~t6W /u"o1;wm)"%D\ wj08{_>>PAX;}qa{!& hI wFݻn0ģ$sBYPx͢!? c^ X.áfA")[/XAݷ;=<<lWt!6ɏBC5t:4 ~lt|֛X!cv%|҇{AD܈oַ7xV(B<;49 )bl5Юc !660uI>:1Jp˰ah~>*NfdA ߀GYlj,:4ifa䶬$Av?);8 i Aÿn'm;@4<CECLx|a/hlM xD!{1zA|侶5-jFi=Q 3Ww,Al/.UXL  $ĤefhkPb'#E ʝS"t lutwT~1Dhú fUsٝ6tMG ن@! wj%0vpDx<.x[O{g"|Ơ(8sh05#'Ì4Dd!ՅAF\po"}ˤ J)[ `/ȑ߷%55Z%hó81RvJI78 [x iR !"&ΓWBT}#h.HqH=r`Ƅ$"ht8CHRF,|袀5(>$Q_: j(ĘP@"oY6 bſh~> J/((=C^iý! SL冒NEY4jkNG@y/X-t^jL05?_2kZ_!G\vE`smn'iy+{}4jq+!_j>3غAXMyP<%2ŊiX @щ9w}ˑ4m4r$hK-@oOBT cLs*Rȋ=OC:I( d* (dD$ H"JRylf:-^xfLEMߐ=۬{v =f,dk|>(?@%J,(sB'xP Q9}Ogy*`Ҩ x_Or>!`Ns{y#2}Tx[ Pwg V&@0b$9 Sц 1H+ITVqz]xcasF n!F:Tw#L~^8D_0p+L3fڦ,$I31, i Vɡi p W7L 01Lw`M&@ā%&#Btg:q682Ӆ2«噳Uy /ME>m}10R5`v[CH@H{pw !xj {5 Kڽha\l ηy.ցBIđSƬk{* !+ kKTi;yzazC#%r!3 pΉeuPTk0w)TՍBBek qN`WFZ`(@f %Y3f9VfU7BK1ۖ~hf!Kckri7DŽmrz(MhlS4!9bv dQ\Q Э<{c^$DQʐJUkxW5ݷQ-{vrV,& F&V9vajgm]eTgE>^9 ECD#D='@g(Z10%͆hG SG# }_sK* *tg?oP7D E71Tvp7a\xNp f`;5 ['y$0 n/%PA -⹐rr+(Kcz-L1rjpdbYdT (y Z %!̡sj@EX6Qa2̲RiRLʁ  :cuB  A">zR A&T\\ԶV!aEhFdm TbNnrQ6.uE:4!‘@A_n$w.hx w%Eb8(7t JvsCq:n8D߰ D ۣ̚^T%H9رa݇`I@a+ECR&&VUv{:i}6AgcmB hFo݉V/1#I:vٌ@l02AJKif$@\>"‚S`8y?%%VItx='q ȅ/8ܮJjaMw(bH;ɘb".:~`2h(B @)UI!P$ &@clzvj)!3E:拒y0;y@ \QLL•CɵQQj\D{ңfϔѭ%?% ОJ)Z@Щ9eS\7\J: b';SxwK,\ayo $(lD2ހX2n迺dHqK8c&mb`{€:AXHAȜ#ږOYl}'7M=䜐y_$$ xKT=itzx?! jfޒ?ՐE$`$4?ޢe*USѨrwLO}& M` }\n+l3ڬ<8^aTBPD;J !H t]gxJ6tQqQ7uFýPRǀvt~ HH0),`\vơ`_0E 4A('ܰiWIR0Oh1Cކ];A6kwo5Y9wͽ4@@h9 D@씠hM Gn@,Ax Mh&r (~Nb't˲`j*c8.ĸQͯ$)&:;9wȷ A0(f[pC m!XfDA#Fli0EL!u1L[Q4"E\0Qx)D@&"d&e(C QA 5pwP}65j n$(6lYQAP[c@eGClK~nb;G @!bBhq9Qג΄ߞapUCy)m'0P܊ AndmyzL %SPj,j4o(C+,b`cdS j6unr^i@zDM H&NVfR-ffH,{f &"_OFSvÀG4D9 ?zRurHsZB Ę3`44XXEjz c>H*%@KaT:g6BmtA2Q+Yov@.]IA4)-cM62^⋸͵ݭcC#AE7e[\JOt`r @ ``Svq!Iu-ڣ$E(aP(%l)śq30# S`"%2qFtSV2Jv@"D Q:2h*Hѡ`M1B#aܙ q Awd *@P4B"D1'6rZ`(_pcd@Q2qtFf@@5հ: %qwdf~6Odq2#ioPvPK˰ @ T z@>Px:˩rMFu)@];Da.H'"iG] rz TXap# V@I:t.ކy j$i43`屃wݣ b(‹D%&[KCw|&㙴Bj}:Fbcn;6h޵]irc4Ջ ZdHc9j!0P̝09:e.8?uፄtΘi])T`G 52A: \`/L1ѤZ^0K)ؾ`NH 4lH6"d ;r <|"bwƵ PPP";biMv=sIt,50•]C&!! HT&'ӲuM.(6APtrElA"Fƀ/FC2J> vmߴ?{]i@$A{d><1Qh'N>OaJo"YԈd ~$G"o?@swdE!vV 벢>+ L(C!B02+p &:C ( pGłmE\ # 0G~F A 1JO ĄCGrt^&3W#*b (}$tB VeTe`Hҩ `p@T4 BAqxU$PK2!* H~>妢Oah}aj"f+H42M@_g`s!@ALGZ 9R; i"#b+>jk A#"IpZڒ![(!@4z!F &f7Ko0bHȒ&Dƕb j f9naDᇰ݃ MC ҉"j>Q V "A %rڣ`8w'8qkCk[F`;PmKA 9X?j#F U֘X!u\"r풄$,S571EĤGdT@ޠ6P.F,EA$@4 NG't{ ЁEX~w8TDFazO[b;tT@0m}^ Zx&~Y>߈}`5lh3-c *F<7E ILF{lXM9GCz _T(sBQa]S`Tw#|IȐևRhN#Tk JΌ],*ϯb&"4]MG4lwBu`գ"&R1s%e1N RaE~}2hWȡrdySs nztDQ@Q^ ¾AO!ERݰ;>ˬ8$DCQgK~LԂ[LV()ThHTD%& QX(A"H ^02Ucn* 8wAPh*-9c"PHAT' !0[64 F{Oh9"RdQ;ꊑ|TC DegQ =P4<3HBh.a`ڋw əWrƃ84sY.d; J_Rr&" Ҋ%-ҧ0הTհK{@M+ 2& Q ²+,Aʼni HCqx  TR/t~#ȡq@*PN] lR k@dD"E q3| >^2Iy!Z(JH!it> ePeJWRޙe{Aj;EzCF[vf@r)>!Ӛx8Dt/iH PXD!H# !$32Yxh(.pJ@Y 7[*pG\K[-]Vū?&j}Gy|%D*@@(g|U0hJ1*XJNs\Bȃ,$6c!=p*uZ*ʕ m4ڔµP)`XQ( db J2*N ޙH8oҠkױ.hcca [RjAOg7Msu {CN#HfL,HA,' ѥ ?SU4J:'G> (l)R()j`H̪&(d(>#58YZ4 B@JAcD/FQAr :\`]2R YxBCUSP9U(]ÀxR9~g!qg'Z*ABNӒ3q:x!j=Gl=)&Gj|MTH%& *B y BH| 0HI$*(i R ZR  Z*$ u&%bYJ fjbH 3H% I @(!~DN`T6f(P~ġ@$vJb*("$ YJXR`iRe`byjk0p2P8B4JHE^o,{s-RD;@"rؠQGC"d(%dBr~Te%~i'"Uw pD;U=IFǕݔvHA0Pvp:&v*DyBYrl.v h;B Qח# ) 6OHW$BLpUMP>. ,=Q$Hk_sF&]zAFh}Dar ߇Ru+ pB)"@j&e9P{h19qo*o`NdCLEHD$R2#v6hrbsQ@?U.o⏐agcY,9(7 X9$E |Bvv)=I @V ^d&'ZHp 994$&f$`TG^(2WR.-n5o2BPѨjpÓq0I\4҄P $UUes1|=gy Pъd.`TAMM"qt'Evs6'0PBn!r-#MG Ƚ!LXXTב ޞ^+hYS?bd u;TJÙ69ÛטcF)0P0m 42l2L#L0i!w#T::!"!r@PndC ]Q"+]D0IH bR@)Px^$ T ^bAԢ!7 N%2 JKGrd"9* R$ 1ַnYǷa7P40 ** |y5 8 6bĒ5mvӓߔ0 T Кs6a %:hM @ jDr :ˠXJi!R|sjupisCL*;|$VSG" 38MҠQD`8HJ\q3xE L/|O?pܣ sU2AM@G!5ޜ0N `I@CiE {ȆPB(!P% hPC~m!~i B }Ǫ4iUPBJԄ=V sER `+z}kz@&GPq FݨS@uXI'ksHhY, 6  7QDD+1%7+!!A${|&c)uj3Vء@S@xs#xU>tD^YP*wSv R'@l`rss`>J@;;4&" wJ GJ-=gHnCu]qG79]"TLVZl+DD 9e  LhC"i.c-k!Is\*b8J҄2Tvw〿2'THH><yN[nDt,"qPcCʼn7#̖.'"VR s}ͤ6v]e~{`Ս:j!P@>J \@*=b-"4 X H`X# Gxa3L +ÁtPa98KF*bah$z)D FiCʨyPv$O$W7"P RTSKH BR0bJ<*}@zw I/1^SԨ8,_OVP#2)]u Qi%$rn-tuPVI`Djj3?ϭJR"$TJ)RJ0R$P@T&%"R:Pp QT R"U!AH T U(*D R@)B$J%* ((" @@ %@TU"(QBUR*RE( P" (RHTP 60$RR *^`@ ;p/ ;, cm(NHsp#qE, T4 iM4h@i&)4`I`4dzO  xЍB)Dz&MUTꍦ#@SUOU?IUU@=MD4@4@ ~U&)=@ 44444 `M i&4iF44 2hhb0 ѐ$RGjm=5MdɀL&C 4#@hb14b`4ɠ`LAFdM`H@@ h2L 4ҟ*~"zOF򟦩OSS?Ibڇ꟦S?*f'=GPMLDO)=.E$H@B@`$ @+ BAZJmmJmBB@ ]HD0CaWz=?gy  ̮ ש ?jYc }׬Y:C5wahzӟUK3 GI?W`3eVp^p_òFw_}+*a:Zh1 ߠlּc|Qi^C=mZ:SAiF(aO' G̲6kkN'Ŭ&rh}>*T5}x#W{4ʅiYQN20tW{TbH7FgHBmXuΣ. fy>ھ22`s5`3g0F..9!p ȝЁ_ wn)өQ6;1aI;.mU*hZHVvC>T~à`8u ώ0]QkjF9Es{0 U.WF)^`V+y77v}qn?xWKR ;揪ugֿ3uy6լU1>ҀGGum?O\!U1npz! A9ጢT\VU-%Ղ7eP6 5M[ڛ㪀!Z=H;a`AtsC&ԱZ-8JY a]" 5DXsKFl($myi2pF7fܫu?`zHv " Ţ6H@ֆgZ)wc |]<:>m[9*pԪ2f>@C]Gy EySmї\7мgU ЦOs*/'5 _Nj(8^5 hQ\-Ja@m2S>1.I0C^gotqTn (p1<{X2ĩ#[wXa3hVƸxd]s2d!IPnf{BDakXј|U!7OḭBo܃ v^pu<#x QHp+`vA&C+@4/nޓ" ΪKQ7T&d&2 GEJB{JB#33WHa78EDX>dg &豧;0m.'\`ڒ5JȳբLo["~TcVm y/vv {~M9hN FCát@1q cȀEa_7 3ȾFTV:ĕ\GGw Tѭn5@00hL+urtFYcv@q]H dBWKg0s.tbmac[X+b^M"|MJM\oK2sR#\Y|8MCᤝjVTpVz*nfuHA Ɖlވ&i?ڔoʟz/]n4B!nskZ1gbw|(ٍ\J+n˻Cr0΁L(du r h^ !1e@P 8Ȣ>oZu9SnXbH{vxzR}5Q2" L6)kc62+c9TPIP6>(];*~Rkh[BdAB3z1ߨWZؔ6Kc]2RfIfjۈb4wVȲƞq3jĎOZxC(2]G'̲:D㺰Ҭڅ"ṙ)'3! )BiүtvmU54)STN9 ċCyoͫPՒD9{2a nz(2QT CyE<`^I=#8o-I]%&ݮ+h0I)HC!{Ɩ);b'Pv>sm4jPȥݟkȅXjrn:)/ֱ-$dx̸0JX XzMcJn!:4x7i Bt z cMBcty9ce@SӾb0"RÃ12B&]ʜ39$$pNC`%RT'%b7pS1Xx՛ 4S"%-uk :Lt]"Z%C#Żpu]˕2hrAAT#C=]qcBOa0k30oƋ#~Vz$t8[ucj8+1:L̺6N-^CmvpCq qC42c%+BP 6yc8C iY<A cC]TՊL0}S1;f FS4Jݻ k`fldaj4W"DO'Ǵqv*6JEg*oi{ L<F+ ~d>uJwzrTRl:T`amWA0,̧)fH#2P";3)3!"uȸ0 ֐ji  ֝y< ƌY}f覭T r\U|gjgM,wJYv~Tz||Z4HL`Jzd!CT*Kfq ކh%B0JX襢iYFӶwj"uS3wQ%]~34 3!7űaPkٖ $8()s[ʇi-æzn!΃ 7=Y`^l0qtE&hMQ.Z">ˡ)tg8<-NfVz,3EZwV|kxQiv'V+;d R:ӳ.HΡh E΃%UXSWRw1&TVHq)xڂa 'FAbp& nS#bcG wCqQS8Ί9(B}'6YC^G* \{mFpb3>hLֺKYp?0>QGs`_y4֤UF723N)H;L%gdw/O21ϧ⽃4V-8?niio6Yu+N*B-J ±TM K<^'VfN)1C)X#JG\GQ*AnjʿR.ױDE, :;H_apzNB|H 4]ajIh⪭oOo!@r2j@j *Y.qXti5uJ^7EyTečDB|dECҴe?>MfOvfXlI?cdjVsPoF!\ץ?]h~Zr> * T}Ncgń.'N0RL dF54w7D=Syq1LD=&[y"g=@ |_1NVpR"`o}mdX|?yŧ}mיZ, =y?fF #0~|zq~:R:U17u'S4’R3KB4bll0_21#ECպ.g?7nSWI)z˗q~/A8L_I3(}i$74_mL(=*3+Ifm(QA8[ k0pДᏇ+B),E<(0Z-:h^,fX)p8Py׳RIlCV5|8k/W{#N32i7p 1AιO &maԿ3ܧ"!̲oSʮyW/{ls.< vL0̡{X&"QjMuW-* !*=[ .F,rÎ0(^ k&GaKT`}Y[ ǕGZX&,(#6]p\iJq/04]=e Z$̵;-`/Gpb9j,CG5e!Q?*?UM%{ѝ[gIeLy嘯';Km ]%N|}Fx]攵p~7|~˺!Mn2E& DC`ʵ׼M WՑ- Hi)23#[46*FRmʾ,nfKG;(ҷUBcZҍ+2`ѡpYZnX"ӣ̦V)fl% jE4Zxh;U\s CHt R$lrfNpA0Ӭ54< "́bZ۵5 xL!"u|'*V\Ϛ̇Fm$ m؊1f^96S<-VXMi$W';^n';5̈́"qH]B0 ?X iEO[(>FXm>Cy ~E6:RPuh %c?z1KF)2pPo O9?pF@JݣKoD@T#s!"秗}K@_\궼Ρ!1bvh}u~>?IJ]^5A:CMm^kt<)g0!`SӌyEJݜZ, O&7Z>|cmƈ_ǯ3_'O>w0Dá6_+ ~FJR4Ȁ5|e\$c Ω^eԪ&[9ۨ$ !rOR1̫8X dsGg ?ԿcN)֊<ԥ5/'kK) m8cxq(iPTn>Bm.Uk!BY=Ύ7ޙ-XYBe؛-evXNxRuB/~>kg33S?H_w<߫#r~smn^Modxtuy>/{{_=# fk&k0j+aL$:eOcG1diŁlSw{4 ;A4c`7d0W8˯?T'_RFzFwk_`X}!OLu=l&musX7;\ZcUT1x,S ѧ0#msuZReX#vGVrM1% -P|$X<5ҁ#͛ cWS 4~cF=ͯPU tl ݑMHƚȱ1q _Q߱v-uC{X4(DK.ӦR~ulmT\&9vj6 aD Jf}t|1b +N_!U";Sy&D3qI>MexyFH*+0n'S $I0*I.Zk֧LeAlS}z-r`0@ӚTx.AQ)2^qet\Z\e5/_lr;JH%m0!n[F9/bk\>`@qo^f yu ) ic[+4MZL۞ExUe '0*^fwt*CMȅy0kS^R ̰%K L w4Frw˙Up T!["<.߻'>TUgJK Q4Lh4gW&~uckka/,3~pv7lE̶no cJ!dJDӆ 7|ysŗs5g9{9/f1.:=;LF bqT+:"E=n]5E>,`p˒e噘c:qaS(Fp9"Cn7&P*Ot8Q}zٜx;.a7!RF1q"OogC g%e*A iӔwHZ仨մ=p6q>K[z.{w(8pw=#oV=Tkn"D,`>7#Sǀ2uAo%aYNaU ʙY@=4[̸8͖&~tm"3^hL>ߗg)J,zA<Mˈ|eFˮ _f*L6NԹ+إ' 3}պO͒F>aX2 en pO꾳J BrmZ${yo#LxJE1I•Yh` 2樯,ۇմ\Ԭ ilJh.X-J0/I١¦rt׎อƿ^EV!7/FCS<kkIZ[=D*5΃؀JxohOJ1&m$8j|[ʋldreKebb0Ҍk`In&S9TFMf}ݤ$"q쓟0oGP`55T2=kџܰ 03pld<3*[h gVn4b건MIcG=az=i5ȄĜ4,p"tt55^86J6`1/>_hsF7&/,Y\4hF[Tt)3\SMg52_#ڂeidPvb+r]s4jMSN[8ڛPbCiܙ HdVohЌþ:ԋe$x`Ǥ<Ń%4¾B,Η7g`.SV AIo? Ǝw8Y袦kJHUTcWcM7T5b "iNx(5qHcێAl7y{hy3CO*S [{5GefB~n`!۷>)7W%fab#'f" X_?@Y_TgYgcvc Bc!jP b2ۮW4TApKj#ȵbBF6}@%f̂a䅳()RY] چ6qTBYs]6m"vkwYQO 嶎7xw] y2եS=_*Zt 칇v^XϮ=^E6I'Aݪr1KB'AP%hпTeG)b:*+G Th~jz>ΈnŸζ:o@[]}Z+:w0gq[+0Eh?U4|}ûd-8h6t4פ<+"ɡ,PtAp}+BneIV]E$;& l+FL\ oՉz") bAjuYONl &NE]!Sh cGVYa%ZH' 9wlI{"Gh0OZ|zOf sË>%&$9bj9F^\$͉Wt#t(3(yK( F7ʚ»Қ*f>v55O yD@ӵ0fE`XsTTAM0&CcMRǜ~k j{eU ޷s{njlstX+7c}di:k.:ԑ֔ 36׻g|>PcFY8Gk iafxEH~XJ^xw:\8P1EZVM?e<j V2 rdt~[>mݝ ;Dߤ94_ٞ'@S3Ƨ3p5՞K$$eBA:Me' 0ðGQ055?Z-MUesL^ 0=>|V2,qoai8vB>=oNcMfТ"κyНs}S.%_`YKVgIt`] ʏAO^:F12c@SvM*%h:0~NK8T:8զ;*cY3l>?U(M2Φ(ǭy~/Maΐh5L:[2:ljٯf{qP~`̈́`DtߩqhVK ?W,NAi<̋V摆#tdZ;B&е@.hWc~&'x]D3<8fc6~8QJ繱F%$2`E'ACIpx`i.hʐƝâMZZ\K񒗝Ԧ|_v TX dOUw/"M9;v>YpdVEFr5ՑN>>by-)aw& EU$ Y˯^w#Zu1=wPQB5Z8 dj@$ph˷쪝2@rЄ+҂6} MR64#لbߎA04.+ݾfTfm(F#p02)l4b"`[rZq#%|̶V ѵBU} ٵ<vn279f6Vw_CD~Ǔ/Z--Y?2v.as* jp09 0F[yjFƻ"T?i3 J47-jn9s\.!!p:V\X7A2t<|74Vhr1+ rMv9ĤBN\7[&;=b!.jf7aN{FwFdv#}Zw3Tn_9Z)22Tc: u⑤A@H0B$kC)@kavcņL|)֗Ѹm_Łˌ1a Ӂ.zyY8J8b8zo2S,aǠ3JyS^8_1rGUF#Vm̹$՚azs0o|H# mnd`X: T Qr'OkB MٕvqB2bn6[mTa~%=ԾnHxEl󝍖"NN0C6F9Rg q_HVcčΊ2JQk9frpu&V 6hcڋ(էM8QB{[XH =q0`s*(B #2pZ=Jj&sR!CTk`nWd^ݰeWvت0bGW;:VbF3ngYͲ,3lx7?zp%rYGl'FFEjU"sr՗n|kQ$}%Ֆ_q| /{ma00ua~mh~NjmP}O]N(S[ˏDݕ?󇤇c=}h9ؗ-'yK+klgYA_!vb'(z_b,>wIa{CiM?nAͼح*q#;G{ 9=}?EVG Cjekq;ƗiQ*ǰZl L_ { ]~ 򸿕㛅4ц17D>  L~/6u^\i}Vu FH;?\aLSռ> 8_?L~=Fc×g^l˾LFuc;{x`5-Rp$rdBRBń5Ӥ*3w!Nۃ@.7NʮÀ!Y-^#uVy뼒X(cur-zya7 aN0c4dK>wkdԬ%xqmV!p&' ʹT󛻎/89?=/ xj=HzC cwdM~dD> @?PKp?Ke) vq9Q!abT=ݧ F:'H>/mO%B@vv_֧.DC/VS89Uv}UH ~fck}H3c/E{A;~ Jphe\Jԁ\'=ޜVYl, [?/ϒh Kf?ԃl$#Ku/+PZ&6/AjbOY1e RLsw^'y=VF FaQLչ,f~_^ FİoT0U^t{l6qĉ#s4Tq۴_ٓj#;j@D#!i75ˑ)1HLSh@ z@y-B{@ #iԞmoMb o0:t(qs d̶) BID\m4s?!m^m3s}#DwkVS9AɺQ.a0* q=wQcO@2o6^ނKr x"h8c\dXexy 7FlSk06Lϝ`b9&*MX0/}gs1޳} YXG\Հnj81KI) ިcNѸqX6!XVӞŇ\x헛q!+&+wyNjbaciG/3#ǒC[fмkFG7fKydp5{P`kdbsG 2trݓD1y]7\5|tesolmbf1Mf9IrLQ^d,&ËE2C>2V,+WSxVU86ԥJ881e ˰nb>]v2ZQst^Ӆ֠ ؆8gbS?Gs }5А`4҆h;!#ݍVھܪ|)]2 Fp;u"$ϮMZtD-8RډyIg Bfs81+yW]1x#>#6BɛE>4H9qE?ɥo2+o6$ ų3?6mɗa nGTxgkKb%DVg/)u֖@ɝ*L!`5xEĪM @[L]."wn* 07&5Rfl Q P&5mZio91zu)g1?N$rôQ&\ZoA">4=@df R93.wiviR6ǸIF/w8ipW$i3Y*BdT yBw;:]Y W{832s: ~f̓ 4v(K?>C:rI&E (3Գd|P~1&:VA4C~5%Qe,SY1Z=U* 6^ii.j/T1A333WYQ0t: id/ kZZ}[ȆXZ'uLO_jD!5tvw}S*a6Sun<3,Gl[MT=5umqI_zj71_KDҾWY]m+ c 8+ܙCv =f"!4A7Dna7i*!}=& L# Ӂju_׳tLBKKC+y7?;?$q%![402&t06gETy5)r̦ 8܆.Ŗ 3 a:/7I n`I+U75tyJ؛1^wju˱g:Zөy\-=P}韛R޸ ` 3ڨOaE|-J`P#||M -,{#LH]xEP]^kGC݌W=_MPKM U!RUy)PܽK\=a$`߹jɥ.vEANꉌpYpLw 3{'<ڭZ{.yRc3Ra" 5}xjgRVk1x a=5p@oTދ 7=L &z۞n]6B&%ZO;a/4w|7!p2@p67n)J!1o3L ]&Y4/!xfS7e9M#F0L9=䲇ݘټQB{]^F m/>bZ#IrcКXU:lP;x*!1PNn eS1om36[ +7}+>9,͝\+}iRFa\5= ^:L*h  ̆?wۺKb 2a }enټ2U0Įc{G6][c޺'ʼNdͦ!ϬfF4]͐*\ņM4! >ɶ1LOʒ[B{,{U s71ӷZO$k)?x骂9{#qoY2yyIݯԴy _}d4@XVN)*W(a ɕf+e+.F5}-JFq ;uӽoxNNh0 Qq~x1 3' >?1ho/bM-gȘ!~{s  OV;ξ_ΒieMn'L(3$d k1d6N=emu a 2" A9Uݶz ̃@uS0OЙ dBg3GeC{i=>.-D$0poQ3 BVlΝ>Gu}W1-U1Le dowJ!<4Tʫ@32L.p.a Fq;Uɷ~s.D%fG`z$e+l,Y?c-W l*N4*q(ItWt+c],fhwǻ^) k@c=lQS(mwͪTntcnFg3L3#o>Es22U3q.z̷JKEFaY|;c,)hPP037 }ΕW!DȎ9[oqWپ(#J^ƈ!@UPIk E341SGv7ziL(>.kT-htlqn'1NGg)oѾW&K92渨$%tM/dŏ2H>&sXў6IH秞 I/E6;,]`ķ赘q C3*eHvx^c~6ڴƓ:?#ܑ8yN7S~pO߽6'7oCcTmr?&ƂSgm!33/3Hws&rZmKx$#,#1`R+F'OW~FSxYqO4 !|[K6͋7F0Cm F vOS|lm$S_ϛY?ȹnRFyW "Ce dL*s4d/aȀ>љ%O);ᤎ"O{ak%^u!5 0kQS`cp~F_8) ȁ0'/r[yڛbOh9Nyu:ҟbd#'(&$Z_+Hw#l9U)+"u3/;NBuȖ3p~8!_LAV*pl{-79:s OŽY#r,7LC~8Do\dϩ'!d*`8Zs[Q%D&̵ʅO̵еuɥVoăs˒^؍{wqa>qEV/ e!yl?Zt]Z^\S+ L27lM1ihUYe(>Cu]o!V˫IflxKM U X̞lӢy 9xW:Jr$L|Xn>8y!5#abCRx쪦 @B# LX%Ut͡K[! ׹f~=.LY@O#{\^JD+3ض@׬ǵc '@hN0h:1*Ø3z8=?X4jhXdu8= A9NuT4!̥ 6"1ٳwV;>nA!_h'9`KGSyO+'%h3gDrt ,`cTi'y_*>oҎJȢ  3buܢc0%h>0%pfT(x4їHZ`\h~=gsm?yvN.<e9kAO3~Ǚu,p|LjHnqrZ6]%23#=Uk&|5>%SI?猴j"o@@3 PAM6 ( v xH[sFЇ-?r`={(=;ۈʟ%ĩN~+=2U_N^Ě>L|M$7a'( G!)DLq^SENcr``ҏ}zҜrLܨ2jvj !E)R[DRYZ֥y]KZM^ol@FzO}bd) -ɈHv96,b--}YnvV0gBUPX}c78- iY!e4J_r Iy+syt̻gqoz%ΫHiɉشÏ3I8Nqf3|ï+W?p1cJb\>DwXRAܻtlcfk (aT#Jkl+/g"Q ۣ:5K9LW$4 i>ڿlöʴ~]?oJU^wrJ>sckB/]1u,u8KL|Rاek>/6;}`:Rf6tN5-D3 gOF:^_-T!tO :grօQJ=p;J0 :?zzI{Rg2 V9n?w=t9)Ih:\-\Il^FqI4"o ?@o泫Ij["L^BTac-:;<ƺP]fSFȩS\g]#! ekTOϪh'-wg >7um\_ž@@M;@r9]9fAcdP{A{a@1S{'!b54;d! \vcDn ƁsS,'p$Pw\GF𴻝N3b9"{,Y_h;cosrMT{}e5_`r|xd`R+R/#jL̒ 2-ua HdXץ~um2欙R*Č6/F#_ia>e1+gdF4XGܢʋOggj衃9ߓRٮӌ42"pqt2EbP1EcjEyft10YY1{ķeM`fsSJGabg1W<7ZR]>g3HtCA3[MfkKP|icb>F몘}&UwDK*w)W[C0zyWt皙zpi/dq{*%_G@t1Uڅ(](x} 0lNIrcJgSZjOc .:@MAAذ0.2ԛXlslWq3hE#v8J%7A*E>?lɎ}V,f<ׇ"F;gZ79b ({! saihG}]B!KD׎ hwK{*_3,ťT-԰hk wP@xgr Av_rn†]A6 :pF.q2mWPkk]{^t{U+@4Xօ,UɮkԵ8̀ffvIsW]DF!`meN"]oVv}~; :Ϗ_ܰXA(2c<^4(R6fOdza*5llci)H~쯽pmim V9|Ђ 4>s Xeaa ZccLG rH`qFI<\8_*V#=r+RSb.)IC c 9tjju<1/[̌&4D5W/SOzL)PL:DE#?x]}YUZ _ʴ\e~4`RBu2~>jwrm4⠭O'L#>(h3^L^p(Bހ ظAy[˂wiӷ{E0*i iy,y4^Ds(rd9|7?"@:pވb.Ѱc2IQԷnrl,뢨Gs5D_.x ]!\Lkfћ#nMUs/$'O4+Incd)IR|L+V"F+JF8a#KCzVKH]윴VHP[֋XH;ZZB_ +[H_ŀU֢/U_/t.*@^aeq6C'$Θ9])Iϗ:ف54黿UY_Nf]f Wi-#k!{ 4Bl)Qs=H8[ * H8Y/2x3 /%ro=^)%ԢXd`*bHɐx}.f ԛA庻x t^k>=cO΁[yӭ%f;]ryA.s!8F{"-9hޒf# sN3KwoCWt7(.:e2T;_i|8&!V]bnCof[~K4.X?^o](T Ѧ(8ѩbCG?\,93ك*9H% #P͈*m^N".t2$df]Eѯm7Tb7aB@7VX,r6ίxZ6KL QL!Bam'"kh@1L'UԿLE˼&GNxWStѯfmACw߰3C$=rSjqӃ`\o|~;zy'^:XĐPb_.2a0E9]˛SgR;FkznL~k}HֿG)Qn08\t3*oSe4oC!ʆ~J4Y ~ǫZy WMoM=RA d3dl  ʫ:]Qި?֮nn^̶q[wfWi;jfZ(cbBz(+jaznfkcsaFfb:#F:Jm>o0g8czìÙ󝊂&|74XʋL RI@GsiGj x)HPO3?\~ W]lOI=.{m%ʌ/QhC1r3îFeA71]XiJ>"CC jIWR ހ Sz5|xHc=S;pMj M^cE#,×@n!oup&ҺOr!ϸF&RY{c.'.:MrPi}.$ IuxRF2~ʭoTd8(Ɓ+D{SAd!s-5Wf30|ګ5a=+̴6C<z=.Wy髠[ #=|:^J7CC f@|f='}P C4D Qeyoy0JDތ0~h|R.P5 oPeK\.VvF#vvvhΡ؇,Bp@⥽Bd*ss{J12\ !қ<]`H]$ޟK}׀=V?58yBy<4(cMsp 1p?/yR}CmK !S7R^zbAu 0 _ڬ`A2bŴWM׀Q^BѥHj.;}hh[GM`T~;%/^ 9*,5O(`_33!)!(LP`~V$ ؞T׹T">Kx~olC:V{ f(r*+L77أ?S0ьA" +vTl-{%@CZv$1TNMKb'xmP;@"Hd4}m2*kufzߟVq* jD1Ze}R` >?Ӯ݁:lVF5ESFsew}cN|˲d61:p}g4̘~dhhh;iC,>],cfCUb!0d2Q 4a#~JvFLo]6oB 1J>@5s,s3PQY%ㅈ3jjDo_͐hi9Y ?B.ƺ.D3hxDB47EMA1ni X G*:7c,Dm=7O IrxYI}teIJoየڲh!qGN5sqG^씗Ds>*;KsRu!99C 4hƂ:MCWWF^KРcCa(Q&:&hlDv} _ԏ:ohkg2${!hp>_#g5i[?8 )|.k|s |m*z%x1 }1 S@[CRn*<$tHMR %YG@% 1%݈NH@UqJ2l޾pߵɿ&cϳ)|[JAZGTw0eR>?p*$R0jp0vџs"'CCΧ~bpP+~]r 0U+051|~n,18#q^xY]GYeݾ%(c@m)tɤ,YfƆ0џ)wQs1 #9% Z0( rݗơPSU2ԧ*iy xXTi?w13g`wXq(Wr?N@I#I! 6j-Z[mMMBM$ H$ ڭkYU5jiZmm5jikMmfګij[VYUZʭҫfld 4/$@ĒkV[嵵Z媈H+w+!D mەekiVY%nrUʓKjK[[K*ԥ[kVVjմVkV6Ye[mVVkj̭cmk%VVյky kUklVjKUhHH MqH>. ~)8pÇ8qqq;]tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt$%98sq98sq98sq98sq98sq98sq98sq98sq98sq98sq98sq98sq98sq98sqΚʭ[r)@%hLHIЁkjkVkj٫j}Vj*ڱ-ڭUFלZ[mXZjZںUV-m2kkޤjX赭mqk[ZjVmյj[TZZ4FUhkZmqVj6Z֋UUѵn-ZѶFJV5cmcmfͶ5mVKZ5VѶmZۦUsWki*Ucj"VŵmRZկLծ6mkj-XյZm-[cVUQcUVZJ5VMmZFy+hg9[mm߼j]ZZnMymkx.Z]ŭTj5-EFkQc[q[2V5-j6ͭnZm]k ] Zūs'8)Wg.W4+6h;]5r˥ZlTUQծ-EhڭQj Ns̵EVۊڊݒ6cmԻ:sqmpjֶUFs]9mbV̭֨cjmVFWŪuP[FkTZ-V \mmF֓xպ+lVmq5%[T1Xѵŵ&[QZJ"ѪJecUbIZոUƋFNrktV}knjֶZ6+k֪cjK-Tj+]U!k]ZZԜXթ-ŵj[E[r-Vh[Ϋq5H0dvۅk>?{$/t 5>7l?G"O,ION :%Љ UW^;3;z,ɫ0-bo{Ύ'b)| oq:✁rUD3Aꠘ݊Zk=~&ztOE5fu,M[/~r$Y%?/d 'XW6 &Nke::nDQ$򌁽rVDccgv+kûyOE5fu,M[/~r$Y%?/d 'XW6 &Nke::nDQ$򌁽rVDccgv+kûyOE5fu,M[/~r$Y%?/d 'X . c|i@%"$h@إjOX.%]Fѵtklu8mLi bA nk[s)"ŬlV!MV+Kcmq5^:rcd$jcC;\~"ڴM5iNBGg_<}kɕeYeO7w7wwwynnwswwww7w7wwwynnwswwww7w7wwwynnwswwww7w7wwwynnwswwww7w7wwwynnwswwww7w7wwwyEI$IXUwZ~em;׵A;.Z<B4bj m,O5iTF:z`!"M )"U>f"Bq26۷gv۫VBF<$q BG,5rb+ܛk)dl;#B=0}En&dlKDD*PLcd3[Ie8;DR 1# VhYN&FDBu6C1DSE-#B=0}En&dlKDD*./`7C13&yMzV v:lIҔ)MmmmmmmmmmmmmmmmmmmmmmmmmjR)JR z(@%Ͻϧx&Y_k~n:dYΆ*&dlKDD*PLcd3[Ie8;DR 1# VhYN&FDBu6C1DSE-#B=0}En&dlKDD*PLcd3[Ie8;DR 1# VhYN&FDBu6C1DSE-#B=0}En&dlKDD*PLcd3[Ie8;DR >8 V W̛+)dlr#>/Ј?9?y]zt;f"Bq26v"DcG$вL)hQ|+a6VS9TF:z`!"M )"U>f"Bq26v"DcG$вL)hQpqҰvee<̍_9UDcG$вL)hQ82ZVt3_2lsK9ʨu6C1DSE-#\|#Ǔt=-ݶ۶vnmmmmݶ۶vnmmmmݶ۶vnmmmmݶ۶vnmmmnn޶޶޶޶޶޶fd&fI@% #W<;U3mс]#` 05u @88U.pb+Me?S#go^^zU>f"Bq26v"D~Uqz8TW3\YOS#gmjkZҨx8iX; E| ɲfF/վtG&! Ƅ iտ;L]_l վ$]ޒKW6oRm^_88!Ç^2.}sOu9=nv> |W|u6C1DSGx]ץ HKO N׺-x5m{HߵQlb+p4,#ghZ"!TF:z`!"M )"U>f"Bq26v"D~Ckkk̪˽[^/\msmFѣ[dѭjmz@_~z/-S6|/:m߿~Z#B=0}En&dlKDD*|+a6VS9TF:z`!"M )"UU.}7ۗ@v<{y8 mm/_+uۿ~HUfvee<̍_9UD~8$!B@phNe8.nתcׯ^D~qqҰvee<̍_9UDcG$вL)hQlb+p4,#ghZ"!TF:z`!"M )"U>f"Bq26v#ujU HH v[up]n Tǯ^*PLcd3[Ie8;DR 9>!5&z;kTZ֕DcG$вu6۷gv۫V! <(HBG2/ym޳y[zVwaXbo /v` pÅ3=W[\꾥ݴ~E`=I,dl1ׯJ?iX; E| ɲfF/*982ZVt3_2lsK9ʨu6C1DSE-#qߎO]Om[l%m[l%m[l%m[l%m[l%m[l%m[l%m[l%m[l%m[l̷32s3-̷32(_hTͷ_ Et~[w߾֙k~DGv7 WA6S{wTG|NTW3\YOS#gmjkZҨu6C1DSE-#B=0}En&dlKDD*PLcd3[Ie8;DR 1# VhYN&FDBu6C1DSE-#88>0G@G}Kh!zzYOתc;/f"Bq26v"DcG$вL)hQlb+p4,#ghZ"!TG||->8&d]kmvMɵ6&d]kmvMɵ6&d]kmvMɵ6&d]kmvMɵ6&d]kmvMɵ6&dV1 \"Vի['im/=ך^+uڽzH@*tZGMm+W;kTZ֕DcG$вL)hQlb+p4,#ghZ"!TG<ef"dYO3#glsQq884'q W6SZִ#>;4'q W6SZִ#B=0}En&dlKDD*㌾V W̛+)dlr#B=0}En&em۳ջvի{H@%f?AVj@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CZܢC|X}m*`k0Ks DcG$вL)hQ82ZVt3_2lsK9ʨu6C1DSE-#B=0}En&dlKDD*PLcd3[Ie8;DR ;㌾V W̛+)dlr#B=0}7]mպ+n񐑾8u'zxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cxK7cwUVݺ^ݺ=-jdBBAd$j@% 4T \ /Bi4lͶmmmmmmmmmmmmmmmmmmӧN:tӻkkm jWmmm^Unz٪"""""""""""""""""""""""""""""""""""""""""""""""""""""#%@T.I% kBD I* \I @R ` U [yZoe5y|:owurJnpC$^I$&I!6I HMBm/$iy$K$^I$&I!6I HMBm/$iy$K$^I$&I!6I HMBm/$iy$K$^I$&I!6I HMBm/$iy$K$^I$&I!6I HMBm/$iy$K$^I$&I!6I oE5[vzp-mvmySk85[w[TmmyjV@:ZjnֶքБ(HhHl`50CXyz;;#B4!#Kb4!"IhbG잸=/;;HhH 4-:&ffffffmmmmmmmmmmmmmmmmmmmٙQ !Xj5שy x@Vʭo*& %D*m!5""""ڼ<7yޔU_NbI$I ҬZFͿL)Kmk^Ӫjz VWu[y:jZIP/@/I ^CH !*mZ׳` jT@!h kw8F*@%ВHKRK/ /B@%/BI!,dfA'¹MZ@@(@!nkH@,${CAˬ}r[ \Ch4B>KI!"!$$#x@%CX_B(@%ClcBLTUױ&E`aZ]nGr^r&UN*41@%DG!fd$ڀB/fÉR!0$UK_a]B $ $$i@_4HHYX@%@IJA4r I p@% p k̓C2HHH8P ׊mZ[-VͫjkbxS|@ 1\(G dd%* )@HK&m(8P \MK B(P@%esH4 @ HBAc^hb)H"HKb.$r^9B4B`!ՍΔ18 M3`Y!kHC֕[smьVmqm6N p!m4 `45t@!]҆P*[*ѵּY-n[rjq]]yZ5[veͻcQw[^-]S(*** b;:r6&\k\6(Dm(b 6&kڮQªYkںeljŷUq[ڮo!kiڻZl{ %*1C!pXKVe;nwWx\Bm6 e, IdKHl( D<w7$te{rГn^d *@@ H' =3sM@n{˅yI-Xp|즛(0x ݏ.#q@9t/&Fg˃wWL!:Qx,4Lj&jMS&H4a&Ěe=4i5OO)6SmF'ɠ(OESTMz@SJTh@d4IR4H0$iiz23SF 0 QF Sd F@&yG)IGi?Tڀm@F@lP)H424b2LȞLj=F=FjezLhhFiKqt,xཝ*)j75v9j(A,_wc~WkWF/_R{;dҽy{ʅ+CSPEGmm_[k_@EcmF5RQIDowNnS5j꬚ȉNqrqq FpLb8ޯZn^M ^Vǫ5^MכJUz,+W]W -A$j[VPU\^;[#N=%PtUj^[J+սǸw}WBZ ("9P[/Mo.+nͩ*Ե}wCu)0UM]V|c}k֭0^nR;^wt;wrվV^Z`V ( aZm^{uq۹>/6{>5ۺwuҨUIVKlo8(,)IPQLQUԮ}󪏮_+Us*@&ERL`i$0 J&j6lQ&R& # -Lh`[mZHn-3h[YBC0%bi+($hhHg⛙U{yLJ\ < AAL`zQUoS/گ_컷k֭s7?̢^~w}V6}n_f-mQ0owc/{Fe/n׷Ta^[ޯIꬖ=2/eE_5//oد/g=V{ڶzJM&lW naZ}Umsq+5oN[7Ϊvު˳յj7=vnwaI/cL}۸[>t{:v*uV۹۫ݷv] swnM˷dH$A#2Xdel6lzl5?7uwnYqi:f^kb7+[./ ޾nfy)kYmn˦yuWsVEuZ֛k˶MWVs~[vV {uRXP]V빆֮jYOݺ1'\ߝw TM[ woqXgsZFƪ⛻]}jL0o7ۻuMֻuuWnTi*}ݾ7ZUYΪn[{uݪwnӗ1;u9F-`6mxdH4 @ H" mA"HmpNr1DDNwvw"w9nm,D Cd';Nܹ睼'wއnzvzv]˫5]w6ou]we]۝WmuRnZ}\Zkjգ;wuvj{Owwo֙b'yyn.o<:4hZ}nխnվ_<&|w7[wVv<=׷=x`x,C$EĐHpH` aIF,F\B)gǝ/;vpxr`r8d " $XL!֏fVcZk[ο5o^=^kKv{ݹwkx⹖"Ow;6ѱ\h\-FZ*r\dXѓZ1F[-ۋ0,dfYpy/o.{kD XGqIi",ƿ>dPlo3(ߞY`L({˗z{^5vs_0^~!׿~:>-$^v}%Ikߞw̝_ e|գgqFS\}ր\_s|~21D XGqIi",L^6>dPlo3(ߞ~;2^׍d~" q>vןtz% jDz?5߫KII`}g'zWcyF3hQ/_|:tk'5W'La󷶼C(-V=~\t}ZHK8׍<;"7F⌧z׫Y?߈'jp 98ecAo{EogXtƼmp|ޡfQ=gZ0&we=]=h ~EA;U9/|?J |@Տd~k߿Wd/;{>5o;N2>gс3).^uxO@k. گ9N>?g~omyGP[{#^$y&q~y2wE|67oY?V OyrïWOkƲZ_pN~Arq8;{k:=5cG%Ϥ>3xB+ᱼ̣~zϙ`L({˗z{^5vs_0^~!׿~:>-$^v}%Ikߞw̝_ e|գgqFS\}ր\_s|~21D XGqIi",L^6>dPlo3(ߞ~;2^׍d~" q>vןtz% jDz?5߫KII`}g'zWcyF3hQ/_|:tk'5W'La󷶼C(-V=~\t}ZHK8׍<;"7F⌧z׫Y?߈'jp 98ecAo{EogXtƼmp|ޡfQ=gZ0&we=]=h ~EA;U9/|?J |@Տd~k߿Wd/;{>5o;N2>gс3).^uxO@k. گ9N>?g~omyGP[{#^$y&q~y2wE|67oY?V OyrïWOkƲZ_pN~Arq8;{k:=5cG%Ϥ>3xB+ᱼ̣~zϙ`L({˗z{^5vs_0^~!׿~:>-$^v}%Ikߞw̝_ e|գgqFS\}ր\_s|~21D XGqIi",L^6>dPlo3(ߞ~;2^׍d~" q>vןtz% jDz?5߫KII`}g'zWcyF3hQ/_|:tk'5W'La󷶼C(-V=~\t}ZHK8׍<;"7F⌧z׫Y?߈'jp 98ecAo{EogXtƼmp|ޡfQ=gZ0&we=]=h ~EA;U9/|?J |@Տd~k߿Wd/;{>5o;N2>gс3).^uxO@k. گ9N>?g~omyGP[{#^$y&q~y2wE|67oY?V OyrïWOkƲZ_pN~Arq8;{k:=5cG%Ϥ>3xB+ᱼ̣~zϙ`L({˗z{^5vs_0^~!׿~:>-$^v}%Ikߞw̝_ e|գgqFS\}ր\_s|~21D XGqIi",L^6>dPlo3(ߞ~;2^׍d~" q>vןtz% jDz?5߫KII`}g'zWcyF3hQ/_|:tk'5W'La󷶼C(-V=~\t}ZHK8׍<;"7F⌧z׫Y?߈'jp 98ecAo{EogXtƼmp|ޡfQ=gZ0&we=]=h ~EA;U9/|?J |@Տd~k߿Wd/;{>5o;N2>gс3).^uxO@k. گ9N>?g~omyGP[{#^$y&q~y2wE|67oY?V [Ѿ9yT̫0fX?td. گ'La_:=5cG%Ϥ?8w̝_ e`L({˗z{^5vs_0^~!׿~:>-$^v}%Ikߞw̝_ e|գgqFS\}ր\_s|~21D XGqIi",L^6>dPlo3(ߞ~;2^׍d~" q>vןtz% jDz?5߫KII`}g'zWcyF3hQ/ c`&hAD,A0EF(1`  Q *,bQ(` F+DX 4Q*F(E`EFFQ*Պj5TZcVmE 10OKO> Arq8>=C(-V=~\t}ZHKi3p|ޡfQ=gF⌧wOmZIcM4Z,Z6-m,j4#D*"a([I J#j+damAZj*Mhj)-h#b&6XՒ),E&"S((I"d5H%%djMdIdS 4)$ҊmKVKmT4hEh,ƵEIdcVfi-mƮ-[Ajj5bkF+QQmhTh֓mV5[W,XѤƂHa"b4fQLP&"d$Ő%bMBIHHQ&1\ ]7۾kmd_W9N>?g~׶D XGqIi",&qmWw̝_ e?V OyrPw;}/Y>4v9/|D XGqIi",5m?'zWcyF~;2^׍d~" q>vןtz% jDz?5߫KII`}g'zWcyF3hQ/c ;^}EA;U@q>|{kGP[{#^$yg6B+ᱼ̣~z?V OyrïWOkƲZ_pN~Arq8;{k:=5cG%Ϥ>3xB+ᱼ̣~zϙ`L({˕D@;>{Z|~G=ipD u^HkμEя$K_wY]u~Ʊ!j t?٧D7zi2O[ 7O. گ9N>?g~{k:=5cG%Ϥ>3F'zWcyF3hQ/_|:tk'5W'La󷶼C(-V=~\t}ZHK8׍<;"7F⌧1`c9v`AaǙmXkbL|Z4#D,Fc*h^yU*ڷ6UhWIN]XnwWYزƽ%=LguXVUjGWnlE[QGnOYt,,uwuݹkj2Vms5W3]zַzVVvu7ULZկU%y{#s\%½=tU_ce՚zߎij{}>v_ݫYf ~wp{'[U#np]9f.ߟ=Z5L|s:?>kVd}<Ͻ@PAd.P2I ˗fy7xs]w<^$i0rx&dQBC![Z %$4lgYAeaM2(dLQ6$&; TPC![Z %$4S&@!Cb]4A3E qO1F$i0x&dQB bT)%aAY} gV 9U4 |:đOL3 PkƖII+ "5:h,l6)S6eL9đ™t3 c(d5cKAR `:N , i FS"bq$i0y$L&" bT)%aB,γSbe9fQTȘlIL)wI<2 m2CX4*JIXi 3頲ئNpٔ`U2&(F gÔb*([i--JVD)5:h,l6)S6eL9đ™t3 c(d5cKAR `:N , i FS"bq$i0y$L&" bT)%aB,γSbe9fQTȘlIL)wI<2 m2CX4*JIXi 3頲ئNpٔ`U2&(F gÔb*([i--JVD)5:h,l6)S6eL9đ™t3 c(d5cKAR `:N , i FS"bq$i0y$L&" bT)%aB,γSbe9fQTȘlIL)wI<2 m2CX4*JIXi 3頲ئNpٔ`U2&(F gÔb*([i--JVD)5:h,l6)S6eL9đ™t3 c(d5cKAR `"C3+FY>DbH`'ILEE k(d5cKARfu4X6)2 DbHaLILEE m12űRRJH0YfM 4ṣ1G8ؒ4SzyUڵ:Н!9vjN'OO8?Q4CJ&{/τtʣ||<mo_H8d#H8d#H8d#H8d#H8d#H8d#H8d#H8d#H8d#H8d#H8d# \p1iclɪ,6mtw )N5SS)V+%;JevQgѩ}8wh -L:T[}?o&[Cg yXٵ76阫]iYPUj:*"<~tsÎto~hv]sUoɋ#k~y;o?` c[Ȫ~KմG@ˑ9,-, ;uc}o"YUۉ,뺗ӭެGծ]\ԷUՓ:ʻq:YYwx}M'aJEW7q4E#;5Ez\#rfNPԵZȷU^M|ɳ;O0侜!k&Lo"&L#ut]ӧ_?ևz[Ƚ~>oY[Uk4i1H؍ Yh(5( 1d#IXPRI`Ahmmmmmmmmmmmmmmmmmmmmmm`/ ,ԣDZ՛4[ qJ)WyO}"rǍOaIÇx*74G<o>vq_y<i<|׹"}i$n\>Go"m~fț[{G'vd֙^.Uh@>p A]2D=9D6)>=}iU+)ǑE*ֽH@RBIjSblNeoф4GUy#DyYUvv33 :v7b 3[ȪhvZ]tUܮ[k*]ukyU]mvt :|v' ;\^Utq4FVKӴ\;>3_ z;_=ռ4Z#ŽpF]?>NVùXժ͆^sOx*~[#[- 3FXkƑHkX*Ʊ!kFDjCX5#XsV5cXR~wz?:t7|akCUlx8 C6w<׎tMd?W@hzEUWh Eu;)YB{9?.[EV_fF힆_N{5[inމ{{gU!7Vf&U F#wx-U\chY5&ޯdno^w5[\ǚUw{75nmkMu1Wr]muuUW]uG;U)JR)JR)wwwwwwwwwv{%87{ Є9Me} !=^U6SRtC5~ꝰ>_ Kn.~/oXO󇗷tOUhg>orKrS3wuxƷUx#{|E-]z[~`}7o"&i5L]MuκUYַU]uNjȝMboy~ .x>==[ȪhG@RJSaaaaaaaaakMkVjs'SϾ/y^ޭjr""#@amMRNls761-Ufss4Gglfu{oh=Uv^f٘'sWF>M[Ȫh_WeC.={y\z[ZmԿwVI;ey=7rOI[ȪhvZ]tUܮ[k*]ukyU]mg{e-Yk֞nU`_76阫]iYPUj:*#B߉0܆S2Wڄ\/o캳r /)?햂j;MB~<_ķU^~(z82ӧϣL-htUzy[ XSrlwI|GGc;kyVOmᱴ@>~„mQ&,QR!J_u/sݴ]_b !1LAd& Y ,Bb !1LAd& jȯ)z!CDb/"""""""9G[jkc9:7?uݵ=w@ :ݵu5O_[z:o"^Ni5L]MuκUYַU]u]wvww[{[ȪhބV]rհ^q=#V_u927&Cɬy2^NUևkzy[Wo gː+o~w^ UŜOdG|izh-UlUpy:"=w_Wo6iܡkQ[ȪG=Bƛx<}P/ l?ŋ_;Drsýg픛Ν9r-˦2ՔV*2k"{C  gmo"G@! h z=OpھyCv>EVN;Dq*ŘYqN}`߼{kyX9hnִ"I$I$I$I$I$I$I$I$I$I$I%׶[kDX/sc- y8ӛ< Zni-Ufnh<{k2d]3 zywyOEV.o+DVBwq;Vw]:~?+~酭%[Ȫ{6aN1œ8[Dp<+yZpG='nKVz}z˧x*u76阫]iYPUj:*#Үeg֛?! ˶Uo"k;]:?}mmmmmmmmmmmmmmmmmmmmmm0? 0vaszw)%=MHAw: {(dja9ep ua=7eIofvyo"w+DbWPZI軀'ug|-f_=x>|%ۖ~O&O^? EV& lݺm۩unAj۷NEU۷nGBv+nݺwmwn;yWnݺݗvt :ex}}!ٻx*bhGֿ֝Kžmf5-{>EU~9BE:}ߚ{\95<]ķUš*~lɜ߇::~=ʷU}mskZk֚muuVo"뭢1+T{-Cew)Uxf΃Dv:Ea;y0Dp'/߫|`ǧs^>EV&ݟ﮽$a)z>8%lMܹWOf&TŠZ;Ky\\[_#94S )vS]cmǢ![Ȫhtc,UG3{Z'ڨ457}[ȪqE#<||8isMVDNCS/[Ȫ8Z#Ǵ[պW~`wREVUMWS^|o6p|9U|ӧisMVy͢|61-UksshG֌8o 5JL.8p æ0ՄV*0' ^NK aN-âxj L8pl8tZ"J};XwZ5ִjkZzֵ5=kZ֞MkOZ֦kSZֵiZִjkZzֵ5=kZ֞MkOZ֦kSZֵiZִjkZzֵ5=kZ֞MkOZ֦kSZֵiZִjkZzֵ5=kZ֞MkOZ֦kSZֵiZִjkZzֵ5=kZ֞MkOZ֦kSZֵiZִjkZzֵ5=kZ |=_`4 PTYEp> X~@3QZ*gJ]i7K4a(EtǭJ {Ey@rvND}NDr78k*999#!XR՝,+7?:6>O~55nmkMu1Wr]muuUW]uG;71ZOzn'o? L&-Unh4G@@]Ubn|w6ݺ۷Nnۧuo"۷Z#{?*gc,뾫[? x~'[Ȫ{_1+z-$]Wo'z|-f_=u>=vׂ}b=˕r^pv<ռsy#u?l<Ϸ]|3qw=o"{? .?YWŕ=YWz}>/zl3 <w}5ųwZ/U=!/)Sjy)"u\<➄ߌo8x>_}gU^hArRAu|D խ~8fffTa1?}wg/ym-J 7ܯ{oykTf(Er e vtx]/˖g/a𠼨-BjPTfB:UTTmnmVֹjP_"b 1 n*]k PC9[K8Bgggg-b9([&"[yzx9y$uUUR"F!RfL3{XIS!c{޵t.\QЫ#, P5[Iĕ29J9X:.(U(Es-J sEڶ$=Bj A{HOqBh'd P eŴTYrY.\ \VFXk*d,s-'y={}oy<<%B{PaOe;>~[X={ 7 'UtM>y>ޚ~ϡTg?o"[Ǣ^/5'..͢ܖm׬z~]U`_':v~t?sg*EVn#Dzjc-oO_[zX>BKrSY/iN2*EV_~֋Dqd:;Sg_O/[n۹v*t8F,k_TrL򷹦}kx*{3rGFyɻFCVþ}+ia$b+XB(B+-g^O~/{=ך#ƻ~`@#_[_1b1[kPYUfȂџO|rq9oTJ)R*S\JkMr)R5TJ)R*S\JkMr)R5TJ)R*S\JkMr)R5TJ)R*S\JkMr)R5TJ)R*S\JkMr)R5TJ)R07T_gK"ƩE@  Ńsw[(E|q-B.(|S>J$J•hz'\9j4)L PKiZ$ըjեF@r⎅Y`RW09rN$ΊW9Z_xDDD>ժ=|EO}'p_v-UtuG@;{Oj͟ZYz ;u6N7w*_=#faܹZ}^)?nEU76阫]iYPUj:*#jյ`O/ԒI$I$I$I$I$I$I$I$I$I$I$>¼#"y"]2yΡz~Lx9fV*d,n'۷n#iO*gJ]is~5.Ϭ翞y疓0,ҩxk*d,{{ֱ )G#("–$bikp銖G#("–$bikйqGB)B+9m'TXE+-b4>7K4a(EtǭJ {E iG#("–$bikt.\QЫ#, P5[Iĕ29J9X~FɿGϗ[i|]oͧY<-'y={}oy<<|׿&5-A%LQ(EP@2Teʝ|]ͳ5~{ך#ab mG`=uo9>JWS^${~-G,?wxV*~6ç֯kx2kצ~!O< y[>;TåshwwgO^=mo"߯)gtqu4WKzsO|5-tTx*h.ںg#OOzvl7:zzOUu:qfk'tOo{KyZh[šϱJ~7|5x<:UɥϻKvD۷wS7})[Ȫh,:1_N*vm&x b;KyZ4F5֦<8$7'/ߛ6?< yY66 gb,])V3Ukx8r-^?;˸EU#D|}}.hx(gƟɪ' {.ţU^q5y??jZT~;Itv{;׃˧| y\Z#gEx/kv }/nk`-U`9,Æumw7~Xy2EVD{h 5xvC|q7|T=ƞ>60|ky\z6v>4s=m;!ѓ7o"WWn';o0Oy.oyU|76阫]iYPUj:*#O!Ieie[ǪUw#DGguXSKG$ɑ2NPw![Ȫ&F{VƩbIʼn-`ķUM@pywl.MM?p5:.`< y^F qEa<%-Zoh:ѧ{kyX=4E`\niMksy7:[|gxs>Eݛ߸אsKChK^?V*gÊ砻[sɁdGt4v&rf|iÅi<: UUXۻ%0Є#P}w~0)B+Ak>崽$2}t_o-b.B\VFXk*d,?z~_[_=V;C|~wӽ޿W{9W{{=}fL3{XIS!c{޵J@@fIVez RVk3$32*3333P\VFXk*d,ss,N-4\W.#\\GķUy<8|XO.ܵr'/_ u?"EV-M!mel~} 7`^=e>{Z#9SQE{>4>Oϵ֎EW/ztS eNo|] ˽ܹsE8#QE{>4nZO.c˱h-Uth 4?IoE Z*EVn4G`D@_WRWkY[KBo/cV!t.\QЫ#, P5[Iĕ29J9X嫚>|ߠ>uB+=m'TX;b4:.(U(Es-J sE|9\%ϥy<||y\|#WjkFr|oo~sp*7>ۺPgf{? Eo÷{y[@!z  7_JROffe3L"Ю,k=W]}w1}!u-Bή^^E@Z@!?B7VC*"bQ *zR').Or*mOˋi\$ȳ.\qkr( 3P@ٯkSv7OB~~{=}czP Zش6մ8 RW15$(KXx &aYhJ[1[K0BȨZ\\VFXk*d,ss#pܼ6~}SsyV*??@!yɻGO2G{o"|;B@7WT&&j/wگ?\*R($@̔%4`H(2% hd$#Ij)اVwvS(1UWت\UUUUUUUUUWbLUqUUUTUUUqBWTUUWUU T8UWwu1qUTLUw׭w7{o7o{qm[kZ/ 5ZzZ=U! ,WR&Bt=$d}P?ZD&Pfe <$MrrprU%jSQo"_ i'{ݿf/kQ8;=;ZN1^g' #;:'cz;|[I! dtG}PoC'tkw 8!z] 3vDna'/Kp@ȝsu$vp2p:#Өv7{wεلb.NGDwuN;"wO}ַ{0B8N އdN:fqB88gi;=;ZN1^g' #;:'cz;|[I! dtG}PoC'tkw 8!z] 3vDna'/Kp@ȝsu$vp2p:#Өv7{wεلb.NGDwuN;"wO}ַ{0B8N އdN:fqB88gi;=;ZN1^g' #;:'cz;|[I! dtG}PoC'tkw 8!z] 3vDna'/Kp@ȝsu$vp2p:#Өv7{wεلb.NGDwuN;"wO}ַ{0B8N އdN:fqB88gi;=;ZN1^g' #;:'cz;|[I! dtG}PoC'tkw 8!z] 3vDna'/Kp@ȝsu$vp2p:#Өv7{wεلb.NGDwuN;"wO}ַ{0B8N އdN:fqB88gi;=;ZN1^g' #;:'cz;|[I! dtG}PoC'tkw 8!z] 3vDna'/Kp@ȝsu$vp2p:#Өv7{wεلb.NGDwuN;"wO}ַ{0B8N އdN:fqB88gi;=;ZN1^g' #;:'cz tF!ra8,~YC%]k m|kfk5qH\}!4Bil6 mHd&M #m@F!4Bil6 mHd&M #m@F!4Bil6 mHd&M #m@F!4Bil6 mHd&M #m@F!4Bil6 mHd&M #m@F!4 aj 0BiI$I$ZֵkZֵkZzS)]Zͭz}fjHU~qqqI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$qD$))NnE"؋U;O SQkZֵkZֵkZk5kЂNOQ)܂EE@7"U"mvV4r\y^uj5333333r.-urIC" JU7Hifff}}m}+[^m}Z[UoMm{}ehEċwRoE))b ^yMOnSNZ:{xn[un[un[un[uf!m2L!m2Ln[un[un[unMun:M` R:L)MU;P`*"5E.Ejڵ_o`!mۭ+UoڭrБV҅E)u%o\"dDDDDDDDDDDDDDDDDDDDDUjvS-H-Ab&"t\(EJ"XzS dBzmii4M&Ii4M&Ii4M&Ii4M&Ii4M&Kr8罭kk """""""""""""""""""eff3,8lEJ("mV٭[k SJ;%:H.P)"D+x#r-b- MJTEHkүˈт,Pb4P`,LAXJE2!c"TL )4`ډa"fF۫i$5Tx AzP^)ȂԧB Ka3 f3df`6 33,ͦf fm36@ff 3i30YL͐flf3df`6 33,ͦf fm36@ff 3i30YL͐flf3df`6 33,ͦf fm36@ff 3i30YL͐flf3df`6 33,ͦf fm36@ff 3i30YL͐flf3df`6 339s|Ycs<γ9p^L͐flf3df`6 <ֺgo335s3Ռ a2           m׺[kH/$~S)Ad*.TZ"*h"˭_ffffvWU/qUo$= A|NOmZm{~TZ"E)W*@ FiI&QW1*([T"Qq)(GG|AvJi&IWYy;/$U҂S꠽#[Z{uRJADxjS @c_m0[Lm0[Lm0[Lw;]sw;]q`- i`- i`- i`ĎbGm0[L 2Lg#)SAd})QP49N U5%=" Jz>EH{-4@ZA|OrJrIEߛKZTZPkk[]Xa*Roo{~~$I$I$I$I$I$I$I$I$I$I*TDؔ H.rK^m{t^B,EĖu}x趒"ޕM [b,E,E$ZH""_UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUcTUр01XLR/ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*ra3֞%)puE>J_Z{ ¨Y-8)}i\ g\XLr \*Ҕs3iiʺy[ >J^y.AKPZ,&qR.BcJ܋%KvvthBJuT+{mmmmmmmmmmmmmmmmmm}{޻kimZ}!Mm{޽m}kmZE<\R.D\Q{Ҝ/Sڔ.TDDDDDDDDDDDDDDDDDDDDRE.s8 0 0 0 0 0 0 0 0 0kZkZֵkZkZԧ~SS%>>Zy#H,A`*y%SZEƋsHUZ ]JKi]i ..D\TEEic,e2XL2dɓ&L2dɓ&L2dɓ&L2dɓ&L/VJ^B-ZȸuiTE"E̋j.h͑z\.NQ5)MdrhmSPttjֵkZZ֭kVom<<<<5/G?{߶k5ֵy^'SOfS4:mm[mmhE-mm[mmhE-mm[mmhE-mm[mmhE-mm[mmhE-mIQ;m2 A H$ """"""""""""""""h\=(/2E]ДAjSSuw\[^m{[k؈%<.N%9JrЅZħ)Ȃ)moӒI$I$I$I$I$I$I$I$I$I$I$;{޲-E"\d\4ޭm5興:e0؂MJtJ{! d]"TڋtVHD\7)4d>D.-Jt[{m ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷo`ӷ{k{m֝{֝{֝{֝{֝n\..{mV嶼e2LS)e2LS)e2LS)e2LS)e2LS)f025jdB^[٭j5ki}ֵ{ "Ę6!hDTm%FII)#cUU5d&"|*$d`1ps,䲇AEl(YBK(T ie V,P٥*Q[4B +fPAEl(YBK(T ie V,P٥*Q[4B +fPAEl(YBK(T ie V,P٥*Q[4B +fPAEl(YBK(T ie V,P٥*Q[4B +fPAEl(YBK(T٥=9EE-E"UIE*TEdY*"jQ, ie V,P٥*Q[4@ .!\*0(YB#bJz.:i- 1T6mam l6mam l6mam l6mam l6mam l6 3U]/=AޔܦCMb M SS%5}v4hѣF4hѣF4hѣF4hѣF4hѣF,hVޭQIt%;H.SM\B|QxX[ P[P,BEX$Uffff`VEWJ%:(IC^M͵UuXbŋ,Xbŋ,Xbŋ,Xbŋ,Xbŋ,j1bޭi )/l X85))JM%:e4jSĔKo{~O{ߟkJĩIJ%4SMe::[T/ S9L/1)ħT<$-bH> zuoz7kvkvkvkvim0[Lm0[Lkvkvkvk]k]tUtxr.\d_$dHe=F..U8}:/*NrSJx> aҔ=O1Ax;R.%<2MsRkm|DDDDDDDDDDDDDDDDDDDDAV4E"ȹ%SU}4r"Qxȿ]"2S^" ED[33Apԧ)׵JmE"\t]\(,TnU8%]h.ԝIE"AvZAzN[qqg1 dC$b#H2F!1 dC$b#H2F!1 dC$b#H2F!1 dC$b#H2F!1 dC$b#H2FFdC$c#^Ymvz|@[_nUoZE""jEڋEiI'9NN`C Ah'ɤU*ý~^"7D^"xhd]4]D[ާ˯{_Y(!?{na?.p Uvrdbnomics/R/utils.R0000644000176200001440000006554713723671046013750 0ustar liggesusers# `%notin%` `%notin%` <- function (x, table) { !(x %in% table) } #------------------------------------------------------------------------------- # get_data get_data <- function(x, userl, curl_args, headers = NULL, opt = NULL, run = 0) { if (run > 0) { sys_sleep <- getOption("rdbnomics.sleep_run") check_argument(sys_sleep, c("integer", "numeric")) Sys.sleep(sys_sleep) } tryCatch({ if (userl) { # Only readLines if (as.numeric(R.Version()$major) == 3) { if (as.numeric(R.Version()$minor) < 2) { try( suppressMessages(suppressWarnings(utils::setInternet2(TRUE))), silent = TRUE ) } } verb_warn_rl <- getOption("rdbnomics.verbose_warning_readLines") check_argument(verb_warn_rl, "logical") if (verb_warn_rl) { response <- try(readLines(x), silent = TRUE) } else { response <- try(suppressWarnings(readLines(x)), silent = TRUE) } if (inherits(response, "try-error")) { stop("BAD REQUEST", call. = FALSE) } else { jsonlite::fromJSON(response) } } else { # With curl if (!is.null(curl_args)) { if (inherits(curl_args, "curl_handle")) { curl_args <- list(handle = curl_args) } if (!inherits(curl_args, "list")) { stop( paste0( "Argument 'curl_config' or option 'rdbnomics.curl_config' can ", "only be of class 'curl_handle' or 'list'." ), call. = FALSE ) } if (inherits(curl_args, "list")) { if (is.null(names(curl_args))) { stop("The list 'curl_config' must be named.", call. = FALSE) } if (length(curl_args) <= 0) { stop("The list 'curl_config' is empty.", call. = FALSE) } nm <- names(curl_args) nm <- no_empty_char(nm) if (length(curl_args) != length(nm)) { stop("All elements of 'curl_config' must be named.", call. = FALSE) } } } try(curl::handle_reset(tmp_curl), silent = TRUE) if (!list_has_curl_handle(curl_args)) { tmp_curl <- list(handle = curl::new_handle()) if (!is.null(curl_args)) { curl::handle_setopt(tmp_curl$handle, .list = curl_args) } } else { tmp_curl <- curl_args } if (!is.null(headers) & !is.null(opt)) { curl::handle_setheaders(tmp_curl$handle, .list = headers) curl::handle_setopt(tmp_curl$handle, .list = opt) } response <- do.call(curl::curl_fetch_memory, c(list(url = x), tmp_curl)) check_x <- curl::parse_headers(response$headers) check_x <- utils::head(check_x, 1) http_ok <- getOption("rdbnomics.http_ok") check_argument(http_ok, "character") if (grepl(http_ok, toupper(check_x))) { response <- rawToChar(response$content) if (!is.null(jsonlite::fromJSON(response)$errors)) { cat("\n") for (ie in 1:nrow(jsonlite::fromJSON(response)$errors)) { cat( jsonlite::fromJSON(response)$errors[ie,]$message, " : ", jsonlite::fromJSON(response)$errors[ie,]$provider_code, "/", jsonlite::fromJSON(response)$errors[ie,]$dataset_code, "/", jsonlite::fromJSON(response)$errors[ie,]$series_code, "\n" ) } } jsonnum <- try( jsonlite::fromJSON(response)$series$num_found, silent = TRUE ) if (!inherits(jsonnum, "try-error")) { if (!is.null(jsonnum)) { if (jsonlite::fromJSON(response)$series$num_found <= 0) { run <- 100 stop( "Error when fetching the data.", call. = FALSE ) } } } jsonlite::fromJSON(response) } else { errormessage <- try( paste0( "\n", check_x, "\n", jsonlite::fromJSON(rawToChar(response$content))$error ), silent = TRUE ) if (inherits(errormessage, "try-error")) { errormessage <- paste0("\n", check_x) } stop(errormessage, call. = FALSE) } } }, error = function(e) { try_run <- getOption("rdbnomics.try_run") check_argument(try_run, c("integer", "numeric")) myerror <- try( grepl("'curl_config'", e$message) | grepl("BAD[[:blank:]]+REQUEST", toupper(e$message)), silent = TRUE ) if (!inherits(myerror, "try-error")) { if (myerror) { try_run <- -1L } } if (run < try_run) { get_data(x, userl, curl_args, headers = headers, opt = opt, run = run + 1) } else { stop(e) } }) } #------------------------------------------------------------------------------- # deploy deploy <- function(DT, columns = NULL, reference_column = "value") { if (!data.table::is.data.table(DT)) { stop("DT is not a data.table.", call. = FALSE) } if (nrow(DT) <= 0) { return(DT) } if (ncol(DT) <= 0) { return(DT) } has_list <- sapply(1:ncol(DT), function(x) { inherits(DT[[x]], "list") }, USE.NAMES = FALSE) has_list <- sum(has_list, na.rm = TRUE) has_list <- (has_list > 0) if (has_list) { DT[, dotI := .I] DT <- split(DT, DT$dotI) DT <- lapply(DT, function(y) { y <- as.list(y) # Reference length to_list_length <- length(y[[reference_column]][[1]]) # Transform lists into vectors if (is.null(columns)) { for (iv in names(y)) { v <- y[[iv]] if (inherits(v, "list")) { v <- unlist(v) if (length(v) == 1 & to_list_length != 1) { # New col y[[iv]] <- paste0(trim(v), ",") } else if ( (length(v) == to_list_length + 1) | (length(v) == 2 & to_list_length != 2) ) { # New col y[[iv]] <- paste0(trim(v[1]), ",", utils::tail(v, -1)) } else if (length(v) != to_list_length) { y[[iv]] <- paste(unique(v), collapse = ",") } else { y[[iv]] <- v } } } } else { for (i in columns) { y[[i]] <- unlist(y[[i]]) } } data.table::as.data.table(y) }) DT <- data.table::rbindlist(DT, use.names = TRUE, fill = TRUE) DT[, dotI := NULL] } DT[] } #------------------------------------------------------------------------------- # list_has_dataframe list_has_dataframe <- function(x) { check_for_dataframe <- lapply(x, function(y) { y <- sapply(y, inherits, what = "data.frame", simplify = FALSE) unlist(y) }) check_for_dataframe <- unlist(check_for_dataframe) check_for_dataframe <- sum(check_for_dataframe, na.rm = TRUE) (check_for_dataframe > 0) } #------------------------------------------------------------------------------- # no_empty_char no_empty_char <- function(x) { if (inherits(x, "character")) { x <- x[x != "" & !is.na(x)] } x } #------------------------------------------------------------------------------- # dataframe_to_columns dataframe_to_columns <- function(x) { has_dataframe <- sapply(x, function(y) { if (inherits(y, "data.frame")) { return(NULL) } "" }, simplify = FALSE) has_dataframe <- Filter(is.null, has_dataframe) if (length(has_dataframe) <= 0) { return(x) } for (i in names(has_dataframe)) { # cols <- colnames(x[[i]]) x <- cbind(x, x[[i]]) # names(x)[(ncol(x) - length(cols) + 1):ncol(x)] <- paste( # i, cols, # sep = "_" # ) x[[i]] <- NULL } x } #------------------------------------------------------------------------------- # get_version get_version <- function(x) { if ("python_project_version" %in% names(x$`_meta`)) { api_version <- numeric_version(x$`_meta`$python_project_version) } else if ("version" %in% names(x$`_meta`)) { api_version <- numeric_version(x$`_meta`$version) } else { stop("Can't find the version.", call. = FALSE) } api_version <- unlist(api_version) api_version <- api_version[api_version != 0] api_version <- utils::head(api_version, 1) authorized_version(api_version) api_version } #------------------------------------------------------------------------------- # authorized_version authorized_version <- function(x) { versions <- getOption("rdbnomics.authorized_api_version") check_argument(versions, c("integer", "numeric"), len = FALSE) name <- deparse(substitute(versions)) if (is.null(versions)) { stop(paste0(name, " cannot be NULL."), call. = FALSE) } if (!inherits(versions, c("numeric", "integer"))) { stop( paste0(name, " must be of class 'integer' or 'numeric'."), call. = FALSE ) } if (length(versions) <= 0) { stop(paste0(name, " must be of length greater than 0."), call. = FALSE) } if (x %notin% versions) { stop( paste0( "Only versions ", paste0(versions, collapse = ", "), " are supported." ), call. = FALSE ) } invisible() } #------------------------------------------------------------------------------- # trim trim <- function(x) { gsub("^[[:blank:]]+|[[:blank:]]+$", "", x) } #------------------------------------------------------------------------------- # date_format date_format <- function(x) { x <- no_empty_char(x) if (length(x) <= 0) { return(FALSE) } sum(grepl("^[0-9]{4}-[0-9]{2}-[0-9]{2}$", trim(x)), na.rm = TRUE) == length(x) } #------------------------------------------------------------------------------- # timestamp_format timestamp_format <- function(x, y) { x <- no_empty_char(x) if (length(x) <= 0) { return(FALSE) } sum(grepl(y, trim(x)), na.rm = TRUE) == length(x) } #------------------------------------------------------------------------------- # check_argument check_argument <- function(x, type, len = TRUE, n = 1, not_null = TRUE) { name <- deparse(substitute(x)) if (not_null) { if (is.null(x)) { stop(paste0(name, " cannot be NULL."), call. = FALSE) } } if (!inherits(x, type)) { stop( paste0( name, " must be of class '", paste0(type, collapse = "', '"), "'." ), call. = FALSE ) } if (len) { if (length(x) != n) { stop(paste0(name, " must be of length ", n, "."), call. = FALSE) } } invisible() } #------------------------------------------------------------------------------- # to_json_if_list to_json_if_list <- function(x) { if (inherits(x, "list")) { if (is.null(names(x))) { stop("The list 'dimensions' must be named.", call. = FALSE) } if (length(x) <= 0) { stop("The list 'dimensions' is empty.", call. = FALSE) } nm <- names(x) nm <- no_empty_char(nm) if (length(x) != length(nm)) { stop("All elements of 'dimensions' must be named.", call. = FALSE) } return(jsonlite::toJSON(x)) } x } #------------------------------------------------------------------------------- # transform_date_timestamp transform_date_timestamp <- function(DT) { timezone <- getOption("rdbnomics.timestamp_tz") check_argument(timezone, "character") from_timestamp <- c( # "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.?[0-9]*Z$", "^[0-9]{4}-[0-9]{2}-[0-9]{2}[[:blank:]]+[0-9]{2}:[0-9]{2}:[0-9]{2}$" ) to_timestamp <- c( # "%Y-%m-%dT%H:%M:%SZ", "%Y-%m-%dT%H:%M:%OSZ", "%Y-%m-%d %H:%M:%S" ) cols <- copy(colnames(DT)) cols <- cols[ (tolower(cols) != "observations_attributes") & !grepl("name$", tolower(cols)) ] if (length(cols) > 0) { DT[ , (cols) := lapply(.SD, function(x) { if (inherits(x, "character")) { if (date_format(x)) { return(suppressWarnings(as.Date(x))) } for (i in seq_along(from_timestamp)) { if (timestamp_format(x, from_timestamp[i])) { return( suppressWarnings( as.POSIXct(x, tz = timezone, format = to_timestamp[i]) ) ) } } } x }), .SDcols = cols ] } invisible(DT) } #------------------------------------------------------------------------------- # avoid_partial_argument avoid_partial_argument <- function(x) { x <- as.list(x) x <- names(x) x <- no_empty_char(x) if (is.null(x)) { return(invisible()) } if (length(x) <= 0) { return(invisible()) } args_ok <- c(names(formals(rdb)), names(formals(rdb_by_api_link))) args_ok <- args_ok[args_ok %notin% c("...", "api_link")] if (length(setdiff(x, args_ok)) > 0) { stop("Please avoid partial argument matching.", call. = FALSE) } invisible() } #------------------------------------------------------------------------------- # correct_argument correct_argument <- function() { args_ok <- c(names(formals(rdb)), names(formals(rdb_by_api_link))) args_ok[args_ok %notin% c("...", "api_link")] } #------------------------------------------------------------------------------- # call_ok call_ok <- function(x) { x <- as.list(x) x <- names(x) modif_arg <- FALSE if (is.null(x)) { modif_arg <- TRUE } if (!is.null(x)) { x <- no_empty_char(x) if (length(x) <= 0) { modif_arg <- TRUE } else { x <- pmatch(x, correct_argument(), duplicates.ok = TRUE) if (sum(is.na(x)) <= 0) { modif_arg <- TRUE } } } modif_arg } #------------------------------------------------------------------------------- # remove_columns remove_columns <- function(DT, x, expr = FALSE) { if (expr) { cols <- grep(x, colnames(DT), value = TRUE) } else { cols <- intersect(x, colnames(DT)) } if (length(cols) > 0) { DT[, (cols) := NULL] } invisible(DT) } #------------------------------------------------------------------------------- # reduce_to_one reduce_to_one <- function(DT) { x <- DT[ , lapply(.SD, function(y) { length(unique(y)) }) ] x <- as.list(x) x <- Filter(function(y){ y > 1 }, x) x <- names(x) DT[, (x) := NULL] invisible(DT) } #------------------------------------------------------------------------------- # filter_type filter_type <- function(x) { test <- tryCatch({ res <- "ko" n <- length(x) y <- sapply(x, filter_ok) y <- sum(y, na.rm = TRUE) if (y == n) { res <- "list" } res }, error = function(e) { "ko" }) if (test == "ko") { test <- tryCatch({ res <- filter_ok(x) if (res) { res <- "notlist" } else { res <- "ko" } res }, error = function(e) { "ko" }) } test } #------------------------------------------------------------------------------- # filter_ok filter_ok <- function(x) { tryCatch({ res <- FALSE nm1 <- names(x) nm2 <- names(x$parameters) if (identical(nm1, c("code", "parameters"))) { if (is.null(nm2)) { res <- TRUE } if (identical(nm2, c("frequency", "method"))) { res <- TRUE } } res }, error = function(e) { FALSE }) } #------------------------------------------------------------------------------- # get_geo_colname get_geo_colname <- function(x) { y <- try( { expr <- "dimensions_label[s]*\\." elt <- grep(expr, names(unlist(x)), value = TRUE) if (is.null(x$dataset$code)) { codes <- gsub(".*/|\\..*", "", elt) } else { codes <- x$dataset$code if (length(codes) == 1) { codes <- rep(codes, length(elt)) } } lapply(seq_along(elt), function(i) { z <- elt[i] ref_elt <- gsub(".*\\.", "", z) elt_ <- gsub('\\.', '"]][["', z) elt_ <- paste0('[["', elt_, '"]]') res <- c(codes[i], ref_elt, eval(parse(text = paste0("x", elt_)))) if (length(res) > 0) { if (res[2] == res[3]) { if (res[3] == capital_first(res[3])) { res[3] <- toupper(res[3]) } else { res[3] <- capital_first(res[3]) } } res } else { res } }) }, silent = TRUE ) if (inherits(y, "try-error")) { return(NULL) } y } #------------------------------------------------------------------------------- # get_geo_names get_geo_names <- function(x, colname) { y <- try( { codes <- sapply(colname, `[[`, 1) nm <- sapply(colname, `[[`, 2) DTs <- lapply(seq_along(codes), function(i) { expr <- paste0( "(", paste0(codes[i], collapse = "|"), ")*", "\\.dimensions_value[s]*_label[s]*\\.(", paste0(nm[i], collapse = "|"), "){1}\\." ) elt <- grep(expr, names(unlist(x)), value = TRUE) for (y in nm) { elt <- gsub(paste0(y, '\\..*'), y, elt) } elt <- unique(elt) if (length(elt) > 0) { elt_ <- gsub('\\.', '"]][["', elt) elt_ <- paste0('[["', elt_, '"]]') y <- eval(parse(text = paste0("x", elt_))) suppressWarnings( setnames( data.table(X1 = codes[i], X2 = names(y), X3 = unname(unlist(y))), c("dataset_code", colname[[i]][2:3]) )[] ) } else { expr <- paste0( "(", paste0(codes[i], collapse = "|"), ")*", "\\.dimensions_value[s]*_label[s]*\\.(", paste0(nm[i], collapse = "|"), "){1}[0-9]*" ) elt <- grep(expr, names(unlist(x)), value = TRUE) for (y in nm) { elt <- gsub(paste0(y, '\\..*'), y, elt) } elt <- gsub("[0-9]*$", "", elt) elt <- unique(elt) if (length(elt) > 0) { elt_ <- gsub('\\.', '"]][["', elt) elt_ <- paste0('[["', elt_, '"]]') y <- eval(parse(text = paste0("x", elt_))) suppressWarnings( setnames( data.table(X1 = codes[i], X2 = y[, 1], X3 = y[, 2]), c("dataset_code", colname[[i]][2:3]) )[] ) } else { NULL } } }) DTs <- Filter(Negate(is.null), DTs) if (length(DTs) <= 0) { NULL } else { DTs } }, silent = TRUE ) if (inherits(y, "try-error")) { return(NULL) } y } #------------------------------------------------------------------------------- # list_has_curl_handle list_has_curl_handle <- function(x) { if (is.null(x)) { return(FALSE) } if (!inherits(x, "list")) { return(FALSE) } y <- sapply(x, inherits, what = "curl_handle") y <- sum(y, na.rm = TRUE) y <- y > 0 if (y) { TRUE } else { FALSE } } #------------------------------------------------------------------------------- # unpack unpack <- function(DT) { if (is.null(DT)) { return(NULL) } if (is.list(DT) & !data.table::is.data.table(DT)) { if (length(DT) <= 0) { return(NULL) } } if (nrow(DT) <= 0) { return(NULL) } data.table::setDT(DT) DT[, k := .I] DT <- split(DT, by = "k") lapply(DT, function(DT_) { if (!("children" %in% colnames(DT_))) { DT_[, k := NULL] DT_[] } else { if (is.null(DT_$children[[1]])) { DT_[, k := NULL] DT_[, .SD, .SDcols = setdiff(colnames(DT_), "children")] } else { lapply(DT_$children, unpack) } } }) } #------------------------------------------------------------------------------- # rbindlist_recursive rbindlist_recursive <- function(l) { if (is.null(l)) { return(NULL) } if (data.table::is.data.table(l)) { return(l) } if ( sum(sapply(l, is.data.table), na.rm = TRUE) != length(l) ) { l <- lapply(l, rbindlist_recursive) } data.table::rbindlist(l, use.names = TRUE, fill = TRUE) } #------------------------------------------------------------------------------- # check_datasets check_datasets <- function(l, run = 1) { if (is.null(l)) { return(l) } if (run == 0) { return(l) } for (i1 in names(l)) { if (is.null(l[[i1]])) { l[[i1]] <- NULL } else { if (length(l[[i1]]) <= 0) { l[[i1]] <- NULL } else { if (nrow(l[[i1]]) <= 0) { l[[i1]] <- NULL } } } } check_datasets(l, run = run - 1) } #------------------------------------------------------------------------------- # check_dimensions check_dimensions <- function(l, run = 1) { if (is.null(l)) { return(l) } if (run == 0) { return(l) } for (i1 in names(l)) { if (length(l[[i1]]) <= 0) { l[[i1]] <- NULL } else { for (i2 in names(l[[i1]])) { if (is.null(l[[i1]][[i2]])) { l[[i1]][[i2]] <- NULL } else { if (length(l[[i1]][[i2]]) <= 0) { l[[i1]][[i2]] <- NULL } } } } } check_dimensions(l, run = run - 1) } #------------------------------------------------------------------------------- # capital_first capital_first <- function(x) { if (is.null(x)) { return(x) } if (length(x) <= 0) { return(x) } paste0( toupper(substr(x, 1, 1)), tolower(substr(x, 2, nchar(x))) ) } #------------------------------------------------------------------------------- # new_title new_title <- function(x) { if (is.null(x)) { return("unknown") } if (length(x) <= 0) { return("unknown") } if (x != capital_first(x)) { return(capital_first(x)) } toupper(x) } #------------------------------------------------------------------------------- # get_dimensions_values get_dimensions_values <- function(DT, ...) { tryCatch({ tmpDT <- DT[, .SD, .SDcols = c("provider_code", "dataset_code")] tmpDT <- unique(tmpDT) tmpDT[, k := .I] tmpDT <- lapply(tmpDT$k, function(x) { tmpx <- rdb_dimensions( provider_code = tmpDT[k == x]$provider_code, dataset_code = tmpDT[k == x]$dataset_code, ... ) tmpx <- tmpx[[1]][[1]] lapply(tmpx, function(y) { DT2 <- data.table::copy(y) DT2[, dataset_code := tmpDT[k == x]$dataset_code] data.table::setcolorder( DT2, c("dataset_code", setdiff(colnames(DT2), "dataset_code")) ) DT2 }) }) tmpDT <- unlist(tmpDT, recursive = FALSE) unname(tmpDT) }, error = function(e) { NULL }) } #------------------------------------------------------------------------------- # get_dimensions_names get_dimensions_names <- function(DT = NULL, dimensions_values = NULL, ...) { tryCatch({ if (is.null(dimensions_values)) { tmpDT <- get_dimensions_values(DT, ...) } else { tmpDT <- dimensions_values } lapply(tmpDT, function(x) { c( unique(x$dataset_code), utils::tail(colnames(x), -1) ) }) }, error = function(e) { NULL }) } #------------------------------------------------------------------------------- # JUST A TRY, DO NOT USE ! # get_geo_colname2 get_geo_colname2 <- function(x, y) { u <- try( { nm <- unlist(x) nm <- names(nm) nm <- grep("\\.dimensions_value[s]*_label[s]\\.", nm, value = TRUE) nm <- gsub("\\.dimensions_value[s]*_label[s]", "", nm) nm <- gsub("dataset[s]*\\.*", "", nm) nm <- gsub("\\.[^.]*$", "", nm) nm <- unique(nm) nm <- lapply(nm, function(u) { pc <- gsub("/.*", "", u) dc <- gsub(paste0(pc, "/"), "", u) dc <- gsub("\\..*", "", dc) code <- gsub(paste0(pc, "/", dc, "\\."), "", u) c(pc, dc, code, new_title(code)) }) nm <- lapply(nm, `[`, 2:4) if (!is.null(y)) { for (i in seq_along(nm)) { for (j in seq_along(y)) { if (nm[[i]][1] == y[[j]][1] & nm[[i]][2] == y[[j]][2]) { nm[[i]][3] <- y[[j]][3] } } } } nm }, silent = TRUE ) if (inherits(u, "try-error")) { return(y) } u } #------------------------------------------------------------------------------- # ellipsis_default ellipsis_default <- function(name, x, default) { if (length(x) <= 0) { return(default) } tmp <- x[[name]] if (is.null(tmp)) { return(default) } tmp } #------------------------------------------------------------------------------- # additional_info additional_info <- function(x) { # Additional informations to translate geo, freq, ... if (!getOption("rdbnomics.translate_codes")) { additional_geo_column <- additional_geo_mapping <- NULL } else { additional_geo_column <- get_geo_colname(x) additional_geo_mapping <- get_geo_names(x, additional_geo_column) # Check coherence if (is.null(additional_geo_column) | is.null(additional_geo_mapping)) { additional_geo_column <- additional_geo_mapping <- NULL } if (!is.null(additional_geo_column) & !is.null(additional_geo_mapping)) { if (length(additional_geo_column) != length(additional_geo_mapping)) { if ( length(additional_geo_column) == 0 | length(additional_geo_mapping) == 0 ) { additional_geo_column <- additional_geo_mapping <- NULL } else { check_agc <- sapply(additional_geo_column, paste0, collapse = "|") additional_geo_column <- stats::setNames(additional_geo_column, check_agc) check_agm <- sapply(additional_geo_mapping, function(u) { u1 <- u$dataset_code[1] u2 <- colnames(u)[2:3] u2 <- paste0(u2, collapse = "|") paste0(u1, "|", u2) }) additional_geo_mapping <- stats::setNames(additional_geo_mapping, check_agm) keep <- intersect(check_agc, check_agm) if (length(keep) == 0) { additional_geo_column <- additional_geo_mapping <- NULL } else { additional_geo_column <- additional_geo_column[sort(keep)] additional_geo_mapping <- additional_geo_mapping[sort(keep)] } } } } } list(additional_geo_column, additional_geo_mapping) } rdbnomics/R/zzz.R0000644000176200001440000000346113725464754013440 0ustar liggesusers.onAttach <- function(libname, pkgname) { packageStartupMessage("Visit .") } .onLoad <- function(libname, pkgname) { # To ensure backward compatibility pkg <- getNamespace(pkgname) assign( "strrep", function (x, times) { x <- as.character(x) if (length(x) == 0L) { return(x) } unlist(.mapply(function(x, times) { if (is.na(x) || is.na(times)) { return(NA_character_) } if (times <= 0L) { return("") } paste0(replicate(times, x), collapse = "") }, list(x = x, times = times), MoreArgs = list()), use.names = FALSE) }, envir = pkg ) # Package options opts <- list( rdbnomics.use_readLines = FALSE, rdbnomics.sleep_run = 1L, rdbnomics.try_run = 2L, rdbnomics.verbose_warning = TRUE, rdbnomics.api_base_url = "https://api.db.nomics.world", rdbnomics.editor_base_url = "https://editor.nomics.world", rdbnomics.api_version = 22, rdbnomics.editor_version = 1, rdbnomics.authorized_api_version = c(21, 22), rdbnomics.verbose_warning_readLines = FALSE, rdbnomics.timestamp_tz = "GMT", rdbnomics.http_ok = "200([[:blank:]]+OK)?[[:blank:]]*$", rdbnomics.curl_config = NULL, rdbnomics.rdb_no_arg = TRUE, rdbnomics.metadata = TRUE, rdbnomics.filters = NULL, rdbnomics.progress_bar = TRUE, rdbnomics.translate_codes = TRUE, rdbnomics.progress_bar_datasets = FALSE, rdbnomics.progress_bar_dimensions = FALSE, rdbnomics.progress_bar_series = FALSE ) opts <- append( opts, list(rdbnomics = sort(gsub("rdbnomics\\.", "", names(opts)))), 0 ) op <- options() op.rdbnomics <- opts toset <- !(names(op.rdbnomics) %in% names(op)) if (any(toset)) options(op.rdbnomics[toset]) invisible() } rdbnomics/R/rdb_by_api_link.R0000644000176200001440000001302213744116537015676 0ustar liggesusers#' Download DBnomics data using API link (deprecated). #' #' \code{rdb_by_api_link} downloads data series from #' \href{https://db.nomics.world/}{DBnomics}. #' #' This function gives you access to hundreds of millions data series from #' \href{https://api.db.nomics.world/}{DBnomics API} (documentation about #' the API can be found \href{https://api.db.nomics.world/v22/apidocs}{here}). #' The API link is given on the #' \href{https://db.nomics.world/}{DBnomics website}. #' #' @param api_link Character string. DBnomics API link of the search. #' @param use_readLines Logical (default \code{FALSE}). If \code{TRUE}, then #' the data are requested and read with the base function \code{readLines} i.e. #' through the default R internet connection. This can be used to get round the #' error \code{Could not resolve host: api.db.nomics.world}. #' @param curl_config Named list (default \code{NULL}). If not #' \code{NULL}, it is used to configure a proxy connection. This #' configuration is passed to the function \code{curl_fetch_memory} of the package #' \pkg{curl}. A temporary \code{curl_handle} object is created internally #' with arguments equal to the provided list in \code{curl_config}.\cr #' For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. #' For available curl options see \code{\link[curl]{curl_options}}, #' \code{names(curl_options())} and #' \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}. #' @param filters List (default \code{NULL}). This argument must be a named #' list for one filter because the function \code{toJSON} of the package \pkg{jsonlite} #' is used before sending the request to the server. For multiple filters, #' you have to provide a list of valid filters (see examples).\cr #' A valid filter is a named list with an element \code{code} which is a character string, #' and an element \code{parameters} which is a named list with elements \code{frequency} #' and \code{method} or a NULL. #' @return A \code{data.table}. #' @examples #' \dontrun{ #' # Fetch two series from different datasets of different providers : #' df1 <- rdb_by_api_link( #' paste0( #' "https://api.db.nomics.world/v22/", #' "series?observations=1&series_ids=AMECO/ZUTN/EA19.1.0.0.0.ZUTN,IMF/CPI/A.AT.PCPIT_IX" #' ) #' ) #' #' # Fetch one series from the dataset 'Doing Business' of WB provider : #' df2 <- rdb_by_api_link( #' paste0( #' "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22", #' "indicator%22%3A%5B%22IC.REG.PROC.FE.NO%22%5D%7D&q=Doing%20Business", #' "&observations=1&format=json&align_periods=1&offset=0&facets=0" #' ) #' ) #' #' #' ## Use a specific proxy to fetch the data #' # Fetch one series from the dataset 'Doing Business' of WB provider : #' h <- list( #' proxy = "", #' proxyport = , #' proxyusername = "", #' proxypassword = "" #' ) #' options(rdbnomics.curl_config = h) #' df2 <- rdb_by_api_link( #' paste0( #' "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22", #' "indicator%22%3A%5B%22IC.REG.PROC.FE.NO%22%5D%7D&q=Doing%20Business", #' "&observations=1&format=json&align_periods=1&offset=0&facets=0" #' ) #' ) #' # or to use once #' df2 <- rdb_by_api_link( #' paste0( #' "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22", #' "indicator%22%3A%5B%22IC.REG.PROC.FE.NO%22%5D%7D&q=Doing%20Business", #' "&observations=1&format=json&align_periods=1&offset=0&facets=0" #' ), #' curl_config = h #' ) #' #' #' ## Use R default connection to avoid a proxy failure (in some cases) #' # Fetch one series from the dataset 'Doing Business' of WB provider : #' options(rdbnomics.use_readLines = TRUE) #' df2 <- rdb_by_api_link( #' paste0( #' "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22", #' "indicator%22%3A%5B%22IC.REG.PROC.FE.NO%22%5D%7D&q=Doing%20Business", #' "&observations=1&format=json&align_periods=1&offset=0&facets=0" #' ) #' ) #' # or to use once #' df2 <- rdb_by_api_link( #' paste0( #' "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22", #' "indicator%22%3A%5B%22IC.REG.PROC.FE.NO%22%5D%7D&q=Doing%20Business", #' "&observations=1&format=json&align_periods=1&offset=0&facets=0" #' ), #' use_readLines = TRUE #' ) #' #' #' ## Apply filter(s) to the series #' # One filter #' df3 <- rdb_by_api_link( #' "https://api.db.nomics.world/v22/series/IMF/WEO:2019-10/ABW.BCA?observations=1", #' filters = list( #' code = "interpolate", #' parameters = list(frequency = "daily", method = "spline") #' ) #' ) #' #' # Two filters #' df3 <- rdb_by_api_link( #' "https://api.db.nomics.world/v22/series/IMF/WEO:2019-10/ABW.BCA?observations=1", #' filters = list( #' list( #' code = "interpolate", #' parameters = list(frequency = "quarterly", method = "spline") #' ), #' list( #' code = "aggregate", #' parameters = list(frequency = "annual", method = "average") #' ) #' ) #' ) #' } #' @seealso \code{\link{rdb}} #' @author Sebastien Galais #' @export rdb_by_api_link <- function( api_link, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), filters = getOption("rdbnomics.filters") ) { .Deprecated("rdb(api_link = ...)", old = "rdb_by_api_link(api_link = ...)") .rdb( api_link = api_link, use_readLines = use_readLines, curl_config = curl_config, filters = filters ) } rdbnomics/R/rdb.R0000644000176200001440000004315413744121571013341 0ustar liggesusers#' Download DBnomics data. #' #' \code{rdb} downloads data series from #' \href{https://db.nomics.world/}{DBnomics} using shortcuts like \code{ids}, #' \code{dimensions}, \code{mask}, \code{query} or using an \code{api_link}. #' #' This function gives you access to hundreds of millions data series from #' \href{https://api.db.nomics.world/}{DBnomics API} (documentation about #' the API can be found \href{https://api.db.nomics.world/v22/apidocs}{here}). #' The code of each series is given on the #' \href{https://db.nomics.world/}{DBnomics website}. \cr\cr #' In the event that only the argument \code{ids} is provided (and those in the #' ellipsis \code{...}), the argument name can be dropped. The character string #' vector is directly passed to \code{ids}. \cr #' If only the argument \code{api_link} is provided (and those in the #' ellipsis \code{...}), then the argument name can be dropped. The character string #' vector is directly passed to \code{api_link}. \cr #' In the same way, if only \code{provider_code}, \code{dataset_code} and #' \code{mask} are provided then the arguments names can be dropped. The #' last character string is automatically passed to \code{mask}. #' #' #' @param provider_code Character string (default \code{NULL}). DBnomics code #' of the provider. #' @param dataset_code Character string (default \code{NULL}). DBnomics code #' of the dataset. #' @param ids Character string (default \code{NULL}). DBnomics code of one or #' several series. #' @param dimensions List or character string (single quoted) (default \code{NULL}). #' DBnomics code of one or several dimensions in the specified provider and dataset. #' If it is a named list, then the function \code{toJSON} (from the #' package \pkg{jsonlite}) is applied to generate the json object. #' @param mask Character string (default \code{NULL}). DBnomics code of one or #' several masks in the specified provider and dataset. #' @param query Character string (default \code{NULL}). A query to #' filter/select series from a provider's dataset. #' @param api_link Character string. DBnomics API link of the search. It should #' starts with \code{http://} or \code{https://}. #' @param filters List (default \code{NULL}). This argument must be a named #' list for one filter because the function \code{toJSON} of the package \pkg{jsonlite} #' is used before sending the request to the server. For multiple filters, #' you have to provide a list of valid filters (see examples).\cr #' A valid filter is a named list with an element \code{code} which is a character string, #' and an element \code{parameters} which is a named list with elements \code{frequency} #' and \code{method} or a NULL. #' @param use_readLines Logical (default \code{FALSE}). If \code{TRUE}, then #' the data are requested and read with the base function \code{readLines} i.e. #' through the default R internet connection. This can be used to get round the #' error \code{Could not resolve host: api.db.nomics.world}. #' @param curl_config Named list (default \code{NULL}). If not #' \code{NULL}, it is used to configure a proxy connection. This #' configuration is passed to the function \code{curl_fetch_memory} of the package #' \pkg{curl}. A temporary \code{curl_handle} object is created internally #' with arguments equal to the provided list in \code{curl_config}.\cr #' For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. #' For available curl options see \code{\link[curl]{curl_options}}, #' \code{names(curl_options())} and #' \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}. #' @param verbose Logical (default \code{FALSE}). Show warnings of the function. #' @param ... Arguments to be passed to the internal function \code{.rdb}. #' @return A \code{data.table}. #' @examples #' \dontrun{ #' ## By ids #' # Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider: #' df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") #' # or when no argument names are given (provider_code -> ids) #' df1 <- rdb("AMECO/ZUTN/EA19.1.0.0.0.ZUTN") #' #' # Fetch two series from dataset 'Unemployment rate' (ZUTN) of AMECO provider: #' df2 <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN")) #' #' # Fetch two series from different datasets of different providers: #' df3 <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "IMF/BOP/A.FR.BCA_BP6_EUR")) #' #' #' ## By dimensions #' # Fetch one value of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider: #' df1 <- rdb("AMECO", "ZUTN", dimensions = list(geo = "ea12")) #' # or #' df1 <- rdb("AMECO", "ZUTN", dimensions = '{"geo":["ea12"]}') #' #' # Fetch two values of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider: #' df2 <- rdb("AMECO", "ZUTN", dimensions = list(geo = c("ea12", "dnk"))) #' # or #' df2 <- rdb("AMECO", "ZUTN", dimensions = '{"geo":["ea12","dnk"]}') #' #' # Fetch several values of several dimensions from dataset 'Doing business' (DB) of World Bank: #' dim <- list( #' country = c("DZ", "PE"), #' indicator = c("ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS") #' ) #' df3 <- rdb("WB", "DB", dimensions = dim) #' # or #' dim <- paste0( #' '{"country":["DZ","PE"],', #' '"indicator":["ENF.CONT.COEN.COST.ZS","IC.REG.COST.PC.FE.ZS"]}' #' ) #' df3 <- rdb("WB", "DB", dimensions = dim) #' #' #' ## By mask #' # Fetch one series from dataset 'Balance of Payments' (BOP) of IMF: #' df1 <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR") #' # or when no argument names are given except provider_code and dataset_code (ids -> mask) #' df1 <- rdb("IMF", "BOP", "A.FR.BCA_BP6_EUR") #' #' # Fetch two series from dataset 'Balance of Payments' (BOP) of IMF: #' df2 <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") #' #' # Fetch all series along one dimension from dataset 'Balance of Payments' (BOP) of IMF: #' df3 <- rdb("IMF", "BOP", mask = "A..BCA_BP6_EUR") #' #' # Fetch series along multiple dimensions from dataset 'Balance of Payments' (BOP) of IMF: #' df4 <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR+IA_BP6_EUR") #' #' #' ## By query #' # Fetch one series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) from IMF : #' df1 <- rdb("IMF", "WEO:2019-10", query = "France current account balance percent") #' # Fetch series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) from IMF : #' df2 <- rdb("IMF", "WEO:2019-10", query = "current account balance percent") #' #' #' ## By api_link #' # Fetch two series from different datasets of different providers : #' df1 <- rdb( #' api_link = paste0( #' "https://api.db.nomics.world/v22/", #' "series?observations=1&series_ids=AMECO/ZUTN/EA19.1.0.0.0.ZUTN,IMF/CPI/A.AT.PCPIT_IX" #' ) #' ) #' #' # Fetch one series from the dataset 'Doing Business' of WB provider : #' df2 <- rdb( #' api_link = paste0( #' "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22", #' "indicator%22%3A%5B%22IC.REG.PROC.FE.NO%22%5D%7D&q=Doing%20Business", #' "&observations=1&format=json&align_periods=1&offset=0&facets=0" #' ) #' ) #' # or when no argument names are given (provider_code -> api_link) #' df1 <- rdb( #' paste0( #' "https://api.db.nomics.world/v22/", #' "series?observations=1&series_ids=AMECO/ZUTN/EA19.1.0.0.0.ZUTN,IMF/CPI/A.AT.PCPIT_IX" #' ) #' ) #' #' #' ## Use a specific proxy to fetch the data #' # Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider : #' h <- list( #' proxy = "", #' proxyport = , #' proxyusername = "", #' proxypassword = "" #' ) #' options(rdbnomics.curl_config = h) #' df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") #' # or to use once #' options(rdbnomics.curl_config = NULL) #' df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", curl_config = h) #' #' #' ## Use R default connection to avoid a proxy failure (in some cases) #' # Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider : #' options(rdbnomics.use_readLines = TRUE) #' df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") #' # or to use once #' df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", use_readLines = TRUE) #' #' #' ## Apply filter(s) to the series #' # One filter #' df1 <- rdb( #' ids = c("IMF/WEO:2019-10/ABW.BCA.us_dollars", "IMF/WEO:2019-10/ABW.BCA_NGDPD.pcent_gdp"), #' filters = list( #' code = "interpolate", #' parameters = list(frequency = "daily", method = "spline") #' ) #' ) #' #' # Two filters #' df1 <- rdb( #' ids = c("IMF/WEO:2019-10/ABW.BCA.us_dollars", "IMF/WEO:2019-10/ABW.BCA_NGDPD.pcent_gdp"), #' filters = list( #' list( #' code = "interpolate", #' parameters = list(frequency = "quarterly", method = "spline") #' ), #' list( #' code = "aggregate", #' parameters = list(frequency = "annual", method = "average") #' ) #' ) #' ) #' } #' @author Sebastien Galais #' @export rdb <- function( provider_code = NULL, dataset_code = NULL, ids = NULL, dimensions = NULL, mask = NULL, query = NULL, api_link = NULL, filters = getOption("rdbnomics.filters"), use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), verbose = getOption("rdbnomics.verbose_warning"), ... ) { # Checking 'verbose' check_argument(verbose, "logical") # Setting API url api_base_url <- getOption("rdbnomics.api_base_url") check_argument(api_base_url, "character") # Setting API version api_version <- getOption("rdbnomics.api_version") check_argument(api_version, c("numeric", "integer")) authorized_version(api_version) # Setting API metadata metadata <- getOption("rdbnomics.metadata") check_argument(metadata, "logical") # Building API base url api_base_url <- paste0(api_base_url, "/v", api_version, "/series") # Checking arguments provider_code_null <- is.null(provider_code) provider_code_not_null <- !provider_code_null dataset_code_null <- is.null(dataset_code) dataset_code_not_null <- !dataset_code_null dimensions_null <- is.null(dimensions) dimensions_not_null <- !dimensions_null mask_null <- is.null(mask) mask_not_null <- !mask_null ids_null <- is.null(ids) ids_not_null <- !ids_null query_null <- is.null(query) query_not_null <- !query_null api_link_null <- is.null(api_link) api_link_not_null <- !api_link_null # provider_code is considered as api_link in some cases if ( provider_code_not_null & dataset_code_null & dimensions_null & mask_null & ids_null & query_null & api_link_null & getOption("rdbnomics.rdb_no_arg") ) { is_http <- grepl("^http(s)*://", tolower(provider_code)) if (sum(is_http, na.rm = TRUE) > 0) { fcall <- sys.call() modif_arg <- call_ok(fcall) if (modif_arg) { api_link <- provider_code provider_code <- NULL provider_code_null <- TRUE provider_code_not_null <- !provider_code_null api_link_null <- FALSE api_link_not_null <- !api_link_null } } } # By api_link i.e. .rdb(api_link = api_link) if (api_link_not_null) { check_argument(api_link, "character", not_null = FALSE) if (api_version == 22) { return( .rdb( api_link = api_link, filters = filters, use_readLines = use_readLines, curl_config = curl_config, ... ) ) } else { stop( paste0("Don't know what to do for API version ", api_version, "."), call. = FALSE ) } } # provider_code is considered as ids in some cases if ( provider_code_not_null & dataset_code_null & dimensions_null & mask_null & ids_null & query_null & api_link_null & getOption("rdbnomics.rdb_no_arg") ) { fcall <- sys.call() modif_arg <- call_ok(fcall) if (modif_arg) { ids <- provider_code provider_code <- NULL provider_code_null <- TRUE provider_code_not_null <- !provider_code_null ids_null <- FALSE ids_not_null <- !ids_null } } # ids is considered as mask in some cases if ( provider_code_not_null & dataset_code_not_null & dimensions_null & mask_null & ids_not_null & query_null & api_link_null & getOption("rdbnomics.rdb_no_arg") ) { fcall <- sys.call() modif_arg <- call_ok(fcall) if (modif_arg) { mask <- ids ids <- NULL mask_null <- FALSE mask_not_null <- !mask_null ids_null <- TRUE ids_not_null <- !ids_null } } # By dimensions if (dimensions_not_null) { if (provider_code_null | dataset_code_null) { stop( paste0( "When you filter with 'dimensions', you must specifiy ", "'provider_code' and 'dataset_code' as arguments of the function." ), call. = FALSE ) } dimensions <- to_json_if_list(dimensions) check_argument(dimensions, c("character", "json"), not_null = FALSE) check_argument(provider_code, "character", not_null = FALSE) check_argument(dataset_code, "character", not_null = FALSE) if (api_version == 21) { link <- paste0( api_base_url, "?provider_code=", provider_code, "&dataset_code=", dataset_code, "&dimensions=", dimensions ) } else if (api_version == 22) { link <- paste0( api_base_url, "/", provider_code, "/", dataset_code, ifelse(metadata, "?", paste0("?metadata=", as.numeric(metadata), "&")), "observations=1&dimensions=", dimensions ) } else { stop( paste0("Don't know what to do for API version ", api_version, "."), call. = FALSE ) } return( .rdb( api_link = link, filters = filters, use_readLines = use_readLines, curl_config = curl_config, ... ) ) } # By mask if (mask_not_null) { if (provider_code_null | dataset_code_null) { stop( paste0( "When you filter with 'mask', you must specifiy 'provider_code' ", "and 'dataset_code' as arguments of the function." ), call. = FALSE ) } check_argument(mask, "character", not_null = FALSE) check_argument(provider_code, "character", not_null = FALSE) check_argument(dataset_code, "character", not_null = FALSE) if (api_version == 21) { link <- paste0( api_base_url, "?provider_code=", provider_code, "&dataset_code=", dataset_code, "&series_code_mask=", mask ) } else if (api_version == 22) { link <- paste0( api_base_url, "/", provider_code, "/", dataset_code, "/", mask, ifelse(metadata, "?", paste0("?metadata=", as.numeric(metadata), "&")), "observations=1" ) } else { stop( paste0("Don't know what to do for API version ", api_version, "."), call. = FALSE ) } return( .rdb( api_link = link, filters = filters, use_readLines = use_readLines, curl_config = curl_config, ... ) ) } # By ids if (ids_not_null) { if (provider_code_not_null | dataset_code_not_null) { if (verbose) { warning( paste0( "When you filter with 'ids', ", "'provider_code' and 'dataset_code' are not considered." ) ) } } if (!is.character(ids)) { stop("'ids' must be of class 'character'.", call. = FALSE) } if (length(ids) <= 0) { stop("'ids' is empty.", call. = FALSE) } if (api_version == 21) { link <- paste0( api_base_url, "?series_ids=", paste(ids, collapse = ",") ) } else if (api_version == 22) { link <- paste0( api_base_url, ifelse(metadata, "?", paste0("?metadata=", as.numeric(metadata), "&")), "observations=1&series_ids=", paste(ids, collapse = ",") ) } else { stop( paste0("Don't know what to do for API version ", api_version, "."), call. = FALSE ) } return( .rdb( api_link = link, filters = filters, use_readLines = use_readLines, curl_config = curl_config, ... ) ) } # By query if (query_not_null) { if (provider_code_null | dataset_code_null) { stop( paste0( "When you filter with a 'query', you must specifiy 'provider_code' ", "and 'dataset_code' as arguments of the function." ), call. = FALSE ) } check_argument(query, "character", not_null = FALSE) if (verbose) { if (query == "") { warning( paste0( "Your 'query' is empty, the entire dataset ", provider_code, "/", dataset_code, " will be downloaded. It can be long !" ) ) } } if (api_version == 22) { link <- paste0( api_base_url, "/", provider_code, "/", dataset_code, "?q=", utils::URLencode(query), ifelse(metadata, "&", paste0("&metadata=", as.numeric(metadata), "&")), "observations=1" ) } else { stop( paste0("Don't know what to do for API version ", api_version, "."), call. = FALSE ) } return( .rdb( api_link = link, filters = filters, use_readLines = use_readLines, curl_config = curl_config, ... ) ) } stop( "Please provide correct 'provider_code', 'dataset_code', 'dimensions', ", "'mask', 'ids', 'query', 'api_link' or 'filters'.", call. = FALSE ) } rdbnomics/R/rdb_datasets.R0000644000176200001440000001212113653242346015222 0ustar liggesusers#' Download list of datasets for DBnomics providers. #' #' \code{rdb_datasets} downloads the list of available datasets for a selection #' of providers (or all of them) from \href{https://db.nomics.world/}{DBnomics}. #' #' By default, the function returns a named list of \code{data.table}s #' containing the datasets of the providers from #' \href{https://db.nomics.world/}{DBnomics}. #' #' @param provider_code Character string (default \code{NULL}). DBnomics code #' of one or multiple providers. If \code{NULL}, the providers are firstly #' dowloaded with the function \code{\link{rdb_providers}} and then the #' available datasets are requested. #' @param use_readLines Logical (default \code{FALSE}). If \code{TRUE}, then #' the data are requested and read with the base function \code{readLines} i.e. #' through the default R internet connection. This can be used to get round the #' error \code{Could not resolve host: api.db.nomics.world}. #' @param curl_config Named list (default \code{NULL}). If not #' \code{NULL}, it is used to configure a proxy connection. This #' configuration is passed to the function \code{curl_fetch_memory} of the package #' \pkg{curl}. A temporary \code{curl_handle} object is created internally #' with arguments equal to the provided list in \code{curl_config}.\cr #' For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. #' For available curl options see \code{\link[curl]{curl_options}}, #' \code{names(curl_options())} and #' \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}. #' @param simplify Logical (default \code{FALSE}). If \code{TRUE}, when the #' datasets are requested for only one provider then a \code{data.table} #' is returned, not a list of \code{data.table}s. #' @param ... Additionals arguments. #' @return A named list of \code{data.table}s or a \code{data.table}. #' @examples #' \dontrun{ #' rdb_datasets(provider_code = "IMF") #' #' rdb_datasets(provider_code = "IMF", simplify = TRUE) #' #' rdb_datasets(provider_code = c("IMF", "BDF")) #' #' options(rdbnomics.progress_bar_datasets = TRUE) #' rdb_datasets() #' options(rdbnomics.progress_bar_datasets = FALSE) #' #' #' rdb_datasets(provider_code = "IMF", use_readLines = TRUE) #' #' rdb_datasets( #' provider_code = "IMF", #' curl_config = list(proxy = "", proxyport = ) #' ) #' } #' @seealso \code{\link{rdb_providers}}, \code{\link{rdb_last_updates}}, #' \code{\link{rdb_dimensions}}, \code{\link{rdb_series}} #' @author Sebastien Galais #' @export rdb_datasets <- function( provider_code = NULL, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), simplify = FALSE, ... ) { # TO CHECK THE DATASETS # parse_web <- sapply(provider_code, function(x) { # y <- readLines(paste0("https://db.nomics.world/", x)) # y <- y[grepl(paste0("", proxyport = ) #' ) #' } #' @seealso \code{\link{rdb_providers}}, \code{\link{rdb_last_updates}}, #' \code{\link{rdb_datasets}}, \code{\link{rdb_dimensions}} #' @author Sebastien Galais #' @export rdb_series <- function( provider_code = NULL, dataset_code = NULL, dimensions = NULL, query = NULL, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), simplify = FALSE, verbose = FALSE, ... ) { # Additionals arguments progress_bar <- ellipsis_default("progress_bar", list(...), TRUE) check_argument(progress_bar, "logical") only_first_two <- ellipsis_default("only_first_two", list(...), FALSE) check_argument(only_first_two, "logical") only_number_series <- ellipsis_default("only_number_series", list(...), FALSE) check_argument(only_number_series, "logical") # All providers if (is.null(provider_code)) { provider_code <- rdb_providers( code = TRUE, use_readLines = use_readLines, curl_config = curl_config ) } check_argument(provider_code, "character", len = FALSE) if (is.null(dataset_code)) { dataset_code <- rdb_datasets( provider_code = provider_code, use_readLines = use_readLines, curl_config = curl_config, simplify = FALSE, progress_bar = FALSE ) dataset_code <- sapply(dataset_code, `[[`, "code", simplify = FALSE) } else { check_argument(dataset_code, "character", len = FALSE) dataset_code <- list(dataset_code) dataset_code <- stats::setNames(dataset_code, provider_code) } # Checking arguments query_null <- is.null(query) query_not_null <- !query_null if (query_not_null) { check_argument(query, "character", not_null = FALSE) } dimensions_null <- is.null(dimensions) dimensions_not_null <- !dimensions_null if (dimensions_not_null) { dimensions <- to_json_if_list(dimensions) check_argument(dimensions, c("character", "json"), not_null = FALSE) } check_argument(use_readLines, "logical") check_argument(simplify, "logical") # Setting API url api_base_url <- getOption("rdbnomics.api_base_url") check_argument(api_base_url, "character") # Setting API version api_version <- getOption("rdbnomics.api_version") check_argument(api_version, c("numeric", "integer")) authorized_version(api_version) # Fetching all datasets series <- sapply(provider_code, function(pc) { if (getOption("rdbnomics.progress_bar_series") & progress_bar) { pb <- utils::txtProgressBar( min = 0, max = length(dataset_code[[pc]]), style = 3 ) } tmp_ser <- sapply(seq_along(dataset_code[[pc]]), function(i) { tryCatch({ dc <- dataset_code[[pc]][i] api_link <- paste0( api_base_url, "/v", api_version, "/series/", pc, "/", dc ) if (query_not_null) { api_link <- paste0(api_link, "?q=", utils::URLencode(query)) } if (dimensions_not_null) { api_link <- paste0( api_link, ifelse(grepl("\\?", api_link), "&", "?"), "dimensions=", dimensions ) } DBlist <- get_data(api_link, use_readLines, curl_config) limit <- DBlist$series$limit num_found <- DBlist$series$num_found if (only_number_series) { return(data.table(Number_of_series = num_found)) } if (verbose) { if (getOption("rdbnomics.progress_bar_series") & progress_bar) { cat("\n") } cat( paste0( "The dataset '", dc, "' from provider '", pc, "' contains ", num_found, " series." ), "\n" ) } DBdata <- list( data.table::data.table( series_code = DBlist$series$docs$series_code, series_name = DBlist$series$docs$series_name ) ) if (num_found > limit) { DBdata0 <- DBdata rm(DBdata) sequence <- seq(1, floor(num_found / limit), 1) if (getOption("rdbnomics.progress_bar_series") & progress_bar) { pb_offset <- utils::txtProgressBar( min = 0, max = max(sequence), style = 3 ) } # Modifying link if (grepl("offset=", api_link)) { api_link <- gsub("\\&offset=[0-9]+", "", api_link) api_link <- gsub("\\?offset=[0-9]+", "", api_link) } sep <- ifelse(grepl("\\?", api_link), "&", "?") if (only_first_two) { sequence <- utils::head(sequence, 1) } DBdata <- lapply(sequence, function(j) { # Modifying link tmp_api_link <- paste0( api_link, sep, "offset=", format(j * limit, scientific = FALSE) ) # Fetching data DBlist <- get_data(tmp_api_link, use_readLines, curl_config) if (getOption("rdbnomics.progress_bar_series") & progress_bar) { utils::setTxtProgressBar(pb_offset, j) } # Extracting data data.table::data.table( series_code = DBlist$series$docs$series_code, series_name = DBlist$series$docs$series_name ) }) DBdata <- append(DBdata, DBdata0, 0) rm(DBdata0) if (getOption("rdbnomics.progress_bar_series") & progress_bar) { close(pb_offset) } } DBdata <- rbindlist(DBdata, use.names = TRUE, fill = TRUE) if (getOption("rdbnomics.progress_bar_series") & progress_bar) { utils::setTxtProgressBar(pb, i) } DBdata }, error = function(e) { NULL }) }, simplify = FALSE) if (getOption("rdbnomics.progress_bar_series") & progress_bar) { close(pb) } tmp_ser <- stats::setNames(tmp_ser, dataset_code[[pc]]) Filter(Negate(is.null), tmp_ser) }, simplify = FALSE) series <- Filter(Negate(is.null), series) # We remove the empty lists, the empty data.tables, etc. series <- check_dimensions(series, 2) if (length(series) <= 0) { warning( "Error when fetching the series.", call. = FALSE ) return(NULL) } if (simplify) { len <- sapply(series, length) if (length(series) == 1 & len[1] == 1) { return(series[[1]][[1]]) } } series } rdbnomics/R/rdbnomics.R0000644000176200001440000000101213675744670014553 0ustar liggesusers#' Package rdbnomics #' #' DBnomics R client (). #' #' @docType package #' @name rdbnomics #' #' @import curl jsonlite data.table #' NULL if (getRversion() >= "2.15.1") { vars <- c( ".", ":=", "value", "dotI", "period", "period_start_day", "series_code", "filtered", "original_period", "series_name", "original_value", "period_middle_day", "code", "name", "A", "B", "C", "k", "V1", "V2", "dataset_code", "EQUAL" ) utils::globalVariables(unique(vars)) }rdbnomics/R/dot_rdb.R0000644000176200001440000002502613676473051014214 0ustar liggesusers.rdb <- function( api_link, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), filters = getOption("rdbnomics.filters") ) { # Checking 'api_link' if (is.null(api_link)) { return(NULL) } check_argument(api_link, "character") # Checking 'use_readLines' check_argument(use_readLines, "logical") # Checking 'filters' if (!is.null(filters)) { check_filter <- filter_type(filters) if (check_filter == "ko") { stop( paste0( "If only one filter is applied then 'filters' must be a named list ", "with two elements : 'code' and 'parameters'." ), "\n", paste0( "'code' is a character string and 'parameters' is an empty list ", "or a named list ('frequency' and 'method')." ), "\n", "For more informations, visit .", "\n", paste0( "If multiple filters are applied then 'filters' must be a unnamed ", "list of valid filters." ), call. = FALSE ) } if (use_readLines) { warning( "When applying filters, the curl functions must be used.", "\n", "As a consequence, 'use_readLines' is set to FALSE.", call. = FALSE ) use_readLines <- FALSE } } # Fetching data DBlist <- get_data(api_link, use_readLines, curl_config) # Getting API version api_version <- get_version(DBlist) if (api_version == 22) { data_elt <- "docs" } else { stop( paste0("Don't know what to do for API version ", api_version, "."), call. = FALSE ) } # If data is empty, return NULL if (is.data.frame(DBlist$series[[data_elt]])) { if (nrow(DBlist$series[[data_elt]]) <= 0) { return(NULL) } } if (inherits(DBlist$series[[data_elt]], "list")) { if (length(DBlist$series[[data_elt]]) <= 0) { return(NULL) } } # Checking if the limit has been reached num_found <- DBlist$series$num_found limit <- DBlist$series$limit # Additional informations to translate geo, freq, ... adds <- additional_info(DBlist) additional_geo_column <- adds[[1]] additional_geo_mapping <- adds[[2]] rm(adds) # Extracting data DBdata <- list(DBlist$series[[data_elt]]) rm(DBlist) if (num_found > limit) { DBdata0 <- DBdata rm(DBdata) sequence <- seq(1, floor(num_found / limit), 1) # Modifying link if (grepl("offset=", api_link)) { api_link <- gsub("\\&offset=[0-9]+", "", api_link) api_link <- gsub("\\?offset=[0-9]+", "", api_link) } sep <- ifelse(grepl("\\?", api_link), "&", "?") DBdata <- lapply(sequence, function(i) { # Modifying link tmp_api_link <- paste0( api_link, sep, "offset=", format(i * limit, scientific = FALSE) ) # Fetching data DBlist <- get_data(tmp_api_link, use_readLines, curl_config) # Extracting data DBlist$series[[data_elt]] }) DBdata <- append(DBdata, DBdata0, 0) rm(DBdata0) } # Transform data.frames inside DBdata if (list_has_dataframe(DBdata)) { DBdata <- lapply(DBdata, dataframe_to_columns) } # Transforming into data.table DBdata <- lapply(DBdata, data.table::setDT) # Gathering data DBdata <- data.table::rbindlist(DBdata, use.names = TRUE, fill = TRUE) # Expanding list columns DBdata <- deploy(DBdata) # To reproduce the Python module, we copy the 'value' element DBdata[ , original_value := format( value, scientific = FALSE, decimal.mark = ".", big.mark = "", trim = TRUE, drop0trailing = TRUE ) ] # Transforming date format and timestamp format transform_date_timestamp(DBdata) # Modifying column names tryCatch({ data.table::setnames(DBdata, "period", "original_period") }, error = function(e) { stop( paste0( "The retrieved dataset doesn't have a column named 'period', it's not ", "normal please check ." ), call. = FALSE ) }) DBdata[, original_period := as.character(original_period)] tryCatch({ data.table::setnames(DBdata, "period_start_day", "period") }, error = function(e) { stop( paste0( "The retrieved dataset doesn't have a column named ", "'period_start_day', it's not normal please check ." ), call. = FALSE ) }) # DBnomics editor if (!is.null(filters)) { if (check_filter == "notlist") { filters <- list(filters) } # Filters are applied by 'series_code' codes <- unique(DBdata$series_code) multicodes <- length(codes) > 1 # A progress bar is displayed if there are more than one code if (multicodes & getOption("rdbnomics.progress_bar")) { pb <- utils::txtProgressBar(min = 0, max = length(codes), style = 3) } DBlist <- lapply(seq_along(codes), function(i) { x <- codes[i] tmpdata <- DBdata[series_code == x] # 'series' for the POST request series <- list( frequency = unique(tmpdata$`@frequency`), period_start_day = tmpdata$period, value = tmpdata$value ) # POST request header headers <- list( "Content-Type" = "application/json", "Accept" = "application/json" ) # POST elements opt <- list( customrequest = "POST", postfields = as.character( jsonlite::toJSON( list(filters = filters, series = list(series)), auto_unbox = TRUE ) ) ) # Editor url editor_link <- paste0( getOption("rdbnomics.editor_base_url"), "/api/v", getOption("rdbnomics.editor_version"), "/apply" ) request <- get_data(editor_link, FALSE, curl_config, headers, opt) request <- dataframe_to_columns(request$filter_results$series) data.table::setDT(request) request <- deploy(request) request[ , original_value := format( value, scientific = FALSE, decimal.mark = ".", big.mark = "", trim = TRUE, drop0trailing = TRUE ) ] transform_date_timestamp(request) # Some columns from the original dataset will be replaced by the # filtered dataset tmpdata <- remove_columns( tmpdata, c( "@frequency", "original_period", "period", "value", "original_value", "indexed_at", "series_code" ) ) try( { cols_to_remove <- sapply(additional_geo_column, `[[`, 2) tmpdata <- remove_columns(tmpdata, cols_to_remove) rm(cols_to_remove) }, silent = TRUE ) tmpdata <- remove_columns(tmpdata, "^observation", expr = TRUE) # The aim is to keep only unique informations tmpdata <- unique(tmpdata) if (nrow(tmpdata) > 1) { reduce_to_one(tmpdata) tmpdata <- unique(tmpdata) } if (multicodes & getOption("rdbnomics.progress_bar")) { utils::setTxtProgressBar(pb, i) } # Entire dataset with replaced columns cbind(tmpdata, request) }) if (multicodes & getOption("rdbnomics.progress_bar")) { close(pb) } DBlist <- stats::setNames(DBlist, codes) DBlist <- data.table::rbindlist( DBlist, use.names = TRUE, fill = TRUE, idcol = "series_code" ) # Add filtered suffix DBlist[, series_code := paste0(series_code, "_filtered")] DBlist[, series_name := paste(series_name, "(filtered)")] # We rename the column 'frequency' try( setnames( DBlist, "frequency", grep("^[@]*frequency$", colnames(DBdata), value = TRUE) ), silent = TRUE ) tryCatch({ data.table::setnames(DBlist, "period", "original_period") }, error = function(e) { stop( paste0( "The retrieved dataset doesn't have a column named 'period', it's not ", "normal please check ." ), call. = FALSE ) }) DBlist[, original_period := as.character(original_period)] # In case of different classes, the class of the column 'original_period' # is set to 'character' if ( inherits(DBdata$original_period, "character") & !inherits(DBlist$original_period, "character") ) { DBlist[, original_period := as.character(original_period)] } if ( !inherits(DBdata$original_period, "character") & inherits(DBlist$original_period, "character") ) { DBdata[, original_period := as.character(original_period)] } tryCatch({ data.table::setnames(DBlist, "period_start_day", "period") }, error = function(e) { stop( paste0( "The retrieved dataset doesn't have a column named ", "'period_start_day', it's not normal please check ." ), call. = FALSE ) }) # Add boolean to distinct be filtered and non-filtered series DBdata[, filtered := FALSE] DBlist[, filtered := TRUE] # For R 3.1 diff_cols <- setdiff(colnames(DBlist), colnames(DBdata)) if (length(diff_cols) > 0) { DBdata[, period_middle_day := as.Date(NA)] } DBdata <- list(DBdata, DBlist) DBdata <- data.table::rbindlist(DBdata, use.names = TRUE, fill = TRUE) } # Additional informations translations if (!is.null(additional_geo_column) & !is.null(additional_geo_mapping)) { for (i in seq_along(additional_geo_mapping)) { if (additional_geo_column[[i]][2] %in% colnames(DBdata)) { addcol <- additional_geo_column[[i]][3] suffix <- "" if (addcol %in% colnames(DBdata)) { suffix <- "_add" newcol <- paste0(addcol, suffix) setnames(additional_geo_mapping[[i]], addcol, newcol) } DBdata <- merge( DBdata, additional_geo_mapping[[i]], by = c("dataset_code", additional_geo_column[[i]][2]), all.x = TRUE, all.y = FALSE, sort = FALSE, allow.cartesian = FALSE ) if (suffix != "") { DBdata[, (addcol) := ifelse(is.na(get(newcol)), get(addcol), get(newcol))] DBdata[, (newcol) := NULL] } } } } # We reorder the columns by their names setcolorder(DBdata, sort(colnames(DBdata))) DBdata[] } rdbnomics/R/rdb_providers.R0000644000176200001440000000545713645157632015451 0ustar liggesusers#' Download list of DBnomics providers. #' #' \code{rdb_providers} downloads the list of providers from #' \href{https://db.nomics.world/}{DBnomics}. #' #' By default, the function returns a \code{data.table} #' containing the list of providers from #' \href{https://db.nomics.world/}{DBnomics} with additional informations such as #' the region, the website, etc. #' #' @param code Logical (default \code{FALSE}). If \code{TRUE}, then only the #' providers are returned in a vector. #' @param use_readLines Logical (default \code{FALSE}). If \code{TRUE}, then #' the data are requested and read with the base function \code{readLines} i.e. #' through the default R internet connection. This can be used to get round the #' error \code{Could not resolve host: api.db.nomics.world}. #' @param curl_config Named list (default \code{NULL}). If not #' \code{NULL}, it is used to configure a proxy connection. This #' configuration is passed to the function \code{curl_fetch_memory} of the package #' \pkg{curl}. A temporary \code{curl_handle} object is created internally #' with arguments equal to the provided list in \code{curl_config}.\cr #' For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. #' For available curl options see \code{\link[curl]{curl_options}}, #' \code{names(curl_options())} and #' \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}. #' @return A \code{data.table} or a vector. #' @examples #' \dontrun{ #' rdb_providers() #' #' rdb_providers(code = TRUE) #' #' rdb_providers(use_readLines = TRUE) #' #' rdb_providers(curl_config = list(proxy = "", proxyport = )) #' } #' @seealso \code{\link{rdb_last_updates}}, \code{\link{rdb_datasets}}, #' \code{\link{rdb_dimensions}}, \code{\link{rdb_series}} #' @author Sebastien Galais #' @export rdb_providers <- function( code = FALSE, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config") ) { # Checking arguments check_argument(code, "logical") check_argument(use_readLines, "logical") # Setting API url api_base_url <- getOption("rdbnomics.api_base_url") check_argument(api_base_url, "character") # Setting API version api_version <- getOption("rdbnomics.api_version") check_argument(api_version, c("numeric", "integer")) authorized_version(api_version) providers <- paste0(api_base_url, "/v", api_version, "/providers") providers <- get_data(providers, use_readLines, curl_config) providers <- providers$providers$docs data.table::setDT(providers) if (code) { providers <- providers$code providers <- no_empty_char(providers) providers <- sort(providers) } else { transform_date_timestamp(providers) providers <- providers[order(code)] } providers[] } rdbnomics/R/rdb_last_updates.R0000644000176200001440000000637413653315111016106 0ustar liggesusers#' Download informations about the last DBnomics updates. #' #' \code{rdb_last_updates} downloads informations about the last updates from #' \href{https://db.nomics.world/}{DBnomics}. #' #' By default, the function returns a \code{data.table} #' containing the last 100 updates from #' \href{https://db.nomics.world/}{DBnomics} with additional informations. #' #' @param all Logical (default \code{FALSE}). If \code{TRUE}, then the full #' dataset of the last updates is retrieved. #' @param use_readLines Logical (default \code{FALSE}). If \code{TRUE}, then #' the data are requested and read with the base function \code{readLines} i.e. #' through the default R internet connection. This can be used to get round the #' error \code{Could not resolve host: api.db.nomics.world}. #' @param curl_config Named list (default \code{NULL}). If not #' \code{NULL}, it is used to configure a proxy connection. This #' configuration is passed to the function \code{curl_fetch_memory} of the package #' \pkg{curl}. A temporary \code{curl_handle} object is created internally #' with arguments equal to the provided list in \code{curl_config}.\cr #' For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. #' For available curl options see \code{\link[curl]{curl_options}}, #' \code{names(curl_options())} and #' \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}. #' @return A \code{data.table}. #' @examples #' \dontrun{ #' rdb_last_updates() #' #' rdb_last_updates(all = TRUE) #' #' rdb_last_updates(use_readLines = TRUE) #' #' rdb_last_updates(curl_config = list(proxy = "", proxyport = )) #' } #' @seealso \code{\link{rdb_providers}}, \code{\link{rdb_datasets}}, #' \code{\link{rdb_dimensions}} #' @author Sebastien Galais #' @export rdb_last_updates <- function( all = FALSE, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config") ) { # Checking arguments check_argument(all, "logical") check_argument(use_readLines, "logical") # Setting API url api_base_url <- getOption("rdbnomics.api_base_url") check_argument(api_base_url, "character") # Setting API version api_version <- getOption("rdbnomics.api_version") check_argument(api_version, c("numeric", "integer")) authorized_version(api_version) updates <- paste0(api_base_url, "/v", api_version, "/last-updates") updates <- get_data(updates, use_readLines, curl_config) if (api_version == 22){ n <- updates$datasets$num_found lim <- updates$datasets$limit updates <- updates$datasets$docs data.table::setDT(updates) if (all) { sequence <- seq(0, floor(n / lim) * lim, lim) updates <- lapply(sequence, function(x) { link <- paste0( api_base_url, "/v", api_version, "/last-updates?datasets.offset=", x ) dataset <- get_data(link, use_readLines, curl_config) data.table::setDT(dataset$datasets$docs) }) updates <- data.table::rbindlist(updates, use.names = TRUE, fill = TRUE) } } else { stop( paste0("Don't know what to do for API version ", api_version, "."), call. = FALSE ) } transform_date_timestamp(updates) updates[] } rdbnomics/R/rdb_to_xts.R0000644000176200001440000000632513731206701014733 0ustar liggesusers#' Transform the data.table object into a xts object #' #' For some analysis, it is more convenient to have a \code{xts} object #' instead of a \code{data.table} object. #' #' @param x \code{data.table}. The \code{data.table} returned by the \code{rdb} #' function. #' @param needed_columns Vector of character strings (default #' \code{c("period", "series_code", "series_name", "value")}). Vector of column #' names which are needed to transform the \code{data.table} into a \code{xts} #' object. #' @param series_columns Vector of character strings (default #' \code{c("series_code", "series_name")}). Vector of series column #' names. #' @return A \code{xts} object. #' @examples #' \dontrun{ #' library(xts) #' library(data.table) #' library(rdbnomics) #' #' df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") #' rdb_to_xts(df) #' } #' @seealso \code{\link{rdb}}, \code{\link{rdb_rename_xts}} #' @author Sebastien Galais #' @export rdb_to_xts <- function( x, needed_columns = c("period", "series_code", "series_name", "value"), series_columns = c("series_code", "series_name") ) { code <- paste( " xts_ok <- try(utils::packageVersion('xts'), silent = TRUE)", " if (inherits(xts_ok, 'try-error')) {", " stop(", " 'Please install the package xts to use rdb_to_xts().',", " call. = FALSE", " )", " }", " if (is.null(x)) {", " return(NULL)", " }", " all_cols <- length(setdiff(needed_columns, colnames(x))) != 0", " if (all_cols) {", " stop(", " paste0(", " 'To export as a xts object, some columns are missing. Needed columns ',", " 'are \u0022', paste0(needed_columns, collapse = '\u0022, \u0022'),", " '\u0022'", " ),", " call. = FALSE", " )", " }", " x <- x[, .SD, .SDcols = needed_columns]", " data.table::setcolorder(x, needed_columns)", " attr_names <- NULL", " if (!is.null(series_columns)) {", " attr_names <- unique(x[, .SD, .SDcols = series_columns])", " }", " if (nrow(x) > 0) {", " x <- data.table::dcast.data.table(", " x, period ~ series_code,", " value.var = 'value'", " )", " } else {", " orig <- Sys.Date() - as.numeric(Sys.Date())", " x <- data.table(", " period = as.Date(numeric(), origin = orig),", " no_code = numeric()", " )", " }", " if (!inherits(x[[1]], 'Date')) {", " stop(", " paste0(", " 'The first needed column ', needed_columns[1], ' is not of class ',", " 'Date which is a problem for data.table::as.xts.data.table().'", " ),", " '\n',", " paste0(", " 'Please check with packageVersion(\u0022rdbnomics\u0022) that your version is ',", " 'greater or equal to 0.5.2. Otherwise update rdbnomics or contact ',", " 's915.stem@gmail.com.'", " ),", " call. = FALSE", " )", " }", " x <- data.table::as.xts.data.table(x)", " xts::xtsAttributes(x) <- list(codename = attr_names)", " x", sep = "\n" ) eval(parse(text = code)) } rdbnomics/R/rdb_dimensions.R0000644000176200001440000002043713744117032015565 0ustar liggesusers#' Download list of dimensions for datasets of DBnomics providers. #' #' \code{rdb_dimensions} downloads the list of dimensions (if they exist) for #' available datasets of a selection of providers from #' \href{https://db.nomics.world/}{DBnomics}. #' #' By default, the function returns a nested named list of \code{data.table}s #' containing the dimensions of datasets for providers from #' \href{https://db.nomics.world/}{DBnomics}. #' #' @param provider_code Character string (default \code{NULL}). DBnomics code #' of one or multiple providers. If \code{NULL}, the providers are firstly #' dowloaded with the function \code{\link{rdb_providers}} and then the #' datasets are requested. #' @param dataset_code Character string (default \code{NULL}). DBnomics code #' of one or multiple datasets of a provider. If \code{NULL}, the datasets #' codes are dowloaded with the function \code{\link{rdb_datasets}} and then #' the dimensions are requested. #' @param use_readLines Logical (default \code{FALSE}). If \code{TRUE}, then #' the data are requested and read with the base function \code{readLines} i.e. #' through the default R internet connection. This can be used to get round the #' error \code{Could not resolve host: api.db.nomics.world}. #' @param curl_config Named list (default \code{NULL}). If not #' \code{NULL}, it is used to configure a proxy connection. This #' configuration is passed to the function \code{curl_fetch_memory} of the package #' \pkg{curl}. A temporary \code{curl_handle} object is created internally #' with arguments equal to the provided list in \code{curl_config}.\cr #' For \code{curl_fetch_memory} arguments see \code{\link[curl]{curl_fetch}}. #' For available curl options see \code{\link[curl]{curl_options}}, #' \code{names(curl_options())} and #' \href{https://curl.haxx.se/libcurl/c/curl_easy_setopt.html}{libcurl}. #' @param simplify Logical (default \code{FALSE}). If \code{TRUE}, when the #' dimensions are requested for only one provider and one dataset then a #' named list of \code{data.table}s is returned, not a nested named list of #' \code{data.table}s. #' @param ... Additionals arguments. #' @return A nested named list of \code{data.table}s or a named list of #' \code{data.table}s. #' @examples #' \dontrun{ #' rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10") #' #' rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) #' #' rdb_dimensions(provider_code = "IMF") #' #' # /!\ It is very long ! #' options(rdbnomics.progress_bar_dimensions = TRUE) #' rdb_dimensions() #' options(rdbnomics.progress_bar_dimensions = FALSE) #' #' rdb_dimensions( #' provider_code = "IMF", dataset_code = "WEO:2019-10", #' use_readLines = TRUE #' ) #' #' rdb_dimensions( #' provider_code = "IMF", dataset_code = "WEO:2019-10", #' curl_config = list(proxy = "", proxyport = ) #' ) #' } #' @seealso \code{\link{rdb_providers}}, \code{\link{rdb_last_updates}}, #' \code{\link{rdb_datasets}}, \code{\link{rdb_series}} #' @author Sebastien Galais #' @export rdb_dimensions <- function( provider_code = NULL, dataset_code = NULL, use_readLines = getOption("rdbnomics.use_readLines"), curl_config = getOption("rdbnomics.curl_config"), simplify = FALSE, ... ) { # Additionals arguments progress_bar <- ellipsis_default("progress_bar", list(...), TRUE) check_argument(progress_bar, "logical") # All providers if (is.null(provider_code) & !is.null(dataset_code)) { stop( "If you give datasets codes, please give also a provider code.", call. = FALSE ) } if (is.null(provider_code)) { provider_code <- rdb_providers( code = TRUE, use_readLines = use_readLines, curl_config = curl_config ) } check_argument(provider_code, "character", len = FALSE) if (is.null(dataset_code)) { dataset_code <- rdb_datasets( provider_code = provider_code, use_readLines = use_readLines, curl_config = curl_config, simplify = FALSE, progress_bar = FALSE ) dataset_code <- sapply(dataset_code, `[[`, "code", simplify = FALSE) } else { check_argument(dataset_code, "character", len = FALSE) dataset_code <- list(dataset_code) dataset_code <- stats::setNames(dataset_code, provider_code) } # Checking arguments check_argument(use_readLines, "logical") check_argument(simplify, "logical") # Setting API url api_base_url <- getOption("rdbnomics.api_base_url") check_argument(api_base_url, "character") # Setting API version api_version <- getOption("rdbnomics.api_version") check_argument(api_version, c("numeric", "integer")) authorized_version(api_version) # Fetching all datasets dimensions <- sapply(provider_code, function(pc) { if (getOption("rdbnomics.progress_bar_dimensions") & progress_bar) { pb <- utils::txtProgressBar( min = 0, max = length(dataset_code[[pc]]), style = 3 ) } tmp_dim <- sapply(seq_along(dataset_code[[pc]]), function(i) { tryCatch({ dc <- dataset_code[[pc]][i] tmp <- paste0(api_base_url, "/v", api_version, "/datasets/", pc, "/", dc) tmp <- get_data(tmp, use_readLines, curl_config) tmp1 <- tmp$datasets$docs$dimensions_labels if (is.null(tmp1)) { tmp1 <- try( tmp$datasets[[paste0(pc, "/", dc)]]$dimensions_labels, silent = TRUE ) if (inherits(tmp1, "try-error")) { tmp1 <- NULL } } if (is.null(tmp1)) { # Sometimes "dimensions_labels" is missing tmp1 <- data.table::data.table(A = character(), B = character()) } else { tmp1 <- as.list(tmp1) tmp1 <- data.table::data.table(A = unlist(tmp1), B = names(tmp1)) tmp1 <- unique(tmp1) # Normally column B is in capital letters if (nrow(tmp1) > 0) { tmp1[, EQUAL := as.numeric(A == B)] tmp1[ EQUAL == 1, A := ifelse(A == capital_first(A), toupper(A), capital_first(A)) ] tmp1[, EQUAL := NULL] } } tmp2 <- tmp$datasets$docs$dimensions_values_labels if (is.null(tmp2)) { tmp2 <- try( tmp$datasets[[paste0(pc, "/", dc)]]$dimensions_values_labels, silent = TRUE ) if (inherits(tmp2, "try-error")) { tmp2 <- NULL } } tmp3 <- sapply(names(tmp2), function(nm) { z <- tmp2[[nm]] if ( is.list(z) & !is.data.frame(z) & !data.table::is.data.table(z) ) { # "z" is actually a list with a matrix z <- z[[1]] z <- as.data.table(z) } else { if (is.matrix(z)) { # "z" is actually a matrix z <- as.data.table(z) } else { z <- as.data.table(z) z <- as.list(z) z <- data.table::data.table(V1 = names(z), V2 = unlist(z)) } } data.table::setnames(z, "V1", nm) new_name <- tmp1[B == nm]$A data.table::setnames( z, "V2", ifelse(length(new_name) <= 0, new_title(nm), new_name) ) z }, simplify = FALSE) if (getOption("rdbnomics.progress_bar_dimensions") & progress_bar) { utils::setTxtProgressBar(pb, i) } tmp3 }, error = function(e) { NULL }) }, simplify = FALSE) if (getOption("rdbnomics.progress_bar_dimensions") & progress_bar) { close(pb) } tmp_dim <- stats::setNames(tmp_dim, dataset_code[[pc]]) Filter(Negate(is.null), tmp_dim) }, simplify = FALSE) dimensions <- Filter(Negate(is.null), dimensions) # We remove the empty lists, the empty data.tables, etc. dimensions <- check_dimensions(dimensions, 2) if (length(dimensions) <= 0) { warning( "Error when fetching the dimensions.", call. = FALSE ) return(NULL) } if (simplify) { len <- sapply(dimensions, length) if (length(dimensions) == 1 & len[1] == 1) { return(dimensions[[1]][[1]]) } } dimensions } rdbnomics/NEWS.md0000644000176200001440000000755013745340751013350 0ustar liggesusers# rdbnomics 0.6.4 * Update series name WEO to WEO:2019-10 and WEOAGG to WEOAGG:2019-10. For all WEO releases (and WEO by group of countries), each release is considered as a different dataset, and therefore carries a different code. For example WEO:2008-10 for the October 2008 release. The WEO dataset no longer exists on DBnomics. To get the latest release automatically, you can use the WEO:latest code. # rdbnomics 0.6.3 * New badge in README. * Correction of .gitlab-ci.yml with pkg-config. * Correction of `rdb()` examples in the doc and README. * Simplification of README. * New fonctions `rdb_to_xts()` and `rdb_rename_xts()` that were in README. # rdbnomics 0.6.2 * Remove **ggplot2**, **DT** and **dplyr** vignette dependencies. * Internal function `get_data` better handles errors. # rdbnomics 0.6.1 * New arguments `dimensions` and `query` for the function `rdb_series()`. # rdbnomics 0.6.0 * New function `rdb_datasets()` to request the available datasets of the providers (@fmgithub2017, #3 github). * New function `rdb_dimensions()` to request the list of the dimensions of the available datasets of the providers (@fmgithub2017, #3 github). * New function `rdb_series()` to request the list of the series of the available datasets of the providers (@fmgithub2017, #3 github). * Add a clearer error message to the function to_xts() in README (Martin Feldkircher, 20200326 email). * Update vignette for `rdb_datasets()`, `rdb_dimensions()` and `rdb_series()`. # rdbnomics 0.5.2 * Correction of a bug in the internal function `deploy`. The cases `to_list_length = 1` and `to_list_length = 2` are now well handled (@julia.schmidt, 20200205 forum.db.nomics.world). # rdbnomics 0.5.1 * New argument 'query' for function `rdb()`. * New argument 'api_link' for function `rdb()` to replace `rdb_by_api_link()`. * New internal function `.rdb()` because `rdb_by_api_link()` is deprecated. * New function `dbnomics()` which is used in the vignette (@blu2ego, #2 github). * Small class correction for R 3.1. # rdbnomics 0.5.0 * New filters tool from . * If the retrieved dataset contains columns with codes (like ISO codes, geographic codes, ...), then correspondences are performed to translate these codes if possible. * Internal function `get_data` better handles errors. The message is clearer. # rdbnomics 0.4.7 * Use of `metadata` from the API to download less data. # rdbnomics 0.4.6 * Internal function `deploy` better handles recursive lists. # rdbnomics 0.4.5 * The vignette "rdbnomics-tutorial" is now named "rdbnomics". * `rdb()` and `rdb_...()` functions now have an argument to configure curl. It is also an option of the package. The vignette "rdbnomics" is modified consequently. * `rdb()` and `rdb_by_api_link()` functions return an error if the columns `period` and `period_start_day` don't exist. * `rdb()` function passes argument `provider_code` to `ids` if only `provider_code` is provided. It is considered that the user wants to use `ids` without naming the arguments. * `rdb()` function passes argument `ids` to `mask` if only `provider_code`, `dataset_code` and `ids` are provided. It is considered that the user wants to use `mask` without naming the argument. # rdbnomics 0.4.4 * Change of the API version from 21 to 22. * The vignette "rdbnomics-tutorial" is modified to be backward compatible with R Markdown v1 (i.e. without pandoc or rmarkdown). * The vignette "rdbnomics-tutorial" has an appendix. * New `rdb_providers()` returns the available providers. * New `rdb_last_updates()` shows the last updates. * In the functions, dates and timestamps are transformed using `as.Date()` and `as.POSIXct()`. * `dimensions` in `rdb()` can be a list (@Iwo, #1 gitlab). # rdbnomics 0.4.3 * First release on CRAN. rdbnomics/MD50000644000176200001440000000451613745355632012565 0ustar liggesusers56c87f69bf5410f5f10bc6b924d6cf4b *DESCRIPTION 0b41d0e8e6b1fa6c0a333aec3c7d0cee *NAMESPACE 40b42b62e4afaa7f3235940b917c054e *NEWS.md 71c90cfd6b2e818d84492898e0f13a45 *R/dbnomics.R be4e2cd0a77e4d9a316d81748fbf446c *R/dot_rdb.R 3498edbfbb423971465c9a0146edeea4 *R/rdb.R 3e7c0b752a2ab66ebb0c4a19207ccc3e *R/rdb_by_api_link.R 9b5506d2ec62413cdfa7652ddb317af7 *R/rdb_datasets.R b6dadeb0b7fe5751be9c1ae750049040 *R/rdb_dimensions.R 6a4bfa3a8cd10c6235716ed5a21ff948 *R/rdb_last_updates.R 577b434204b7b4aed0c29d8875db71f7 *R/rdb_providers.R c8c1ba5de9d605156b4482563d862f22 *R/rdb_rename_xts.R 8d7d0833ab3ad688b60c2b594e4b2321 *R/rdb_series.R 543cdf71fa881defff2e605487db303a *R/rdb_to_xts.R b9e21bfbebc9c434fc11b4efd76dcb92 *R/rdbnomics.R 5bdc9f2e27d35abee451c55f74696d7a *R/sysdata.rda f620900f06aeea716f4fc711ad2575b8 *R/utils.R eae90e9ddb9bb6ba4a66e155dc02a397 *R/zzz.R ff5b4e0b3219ab7e212be92eed8ed490 *README.md 480acb4edd961cb7baab2605cfbb9d15 *build/vignette.rds 3b9005a8f66396e26cca616683aab7d4 *inst/doc/rdbnomics.R 6d3c7f7d8e76e6f116249cbe20a69b54 *inst/doc/rdbnomics.Rmd 5bac65d3cf701a94f146011c344d07ab *inst/doc/rdbnomics.html 34a640426f9d425aad82906ab3ade4bd *inst/tinytest/test_rdb.R 1eec3ec0eff6f9764775467a4e807b52 *inst/tinytest/test_rdb_last_updates.R e3371ab224089888c068cae30fcc83ee *inst/tinytest/test_rdb_providers.R c68e4f7d16e4a4927350dd2fc65d4dff *man/dbnomics.Rd 54193b888f996476a11b1e5968e1ae04 *man/figures/logo.png 03ec71a072099056be6882932f02e5cd *man/rdb.Rd fbe87d1b77a6dbd0f35a07c91dd30d90 *man/rdb_by_api_link.Rd 59bf6541f14a5d65720a49fa22045121 *man/rdb_datasets.Rd ce3526330f28ec140a4503d0798556d9 *man/rdb_dimensions.Rd 77cf44517033844e5061cb7641888a93 *man/rdb_last_updates.Rd ce2d301a7bae475d5eb6d372fece4f0c *man/rdb_providers.Rd a12e937f853ad5e149a24788fc42993d *man/rdb_rename_xts.Rd 8b70b9d0303ae2fefded69cf1a2260fc *man/rdb_series.Rd a87201cb5224838ba36186adf6faa007 *man/rdb_to_xts.Rd 26dc62716a40a38c7fdb4be94087baa0 *man/rdbnomics.Rd 3035f1e6b9fd0922c48b9c9d44794fc8 *tests/tinytest.R e98953a1eb427a74175b91efdad549e1 *vignettes/dbnomics001.png 0c459913b70e2638e3667fece3af2c8a *vignettes/dbnomics002.png de513c0de5c2be3212c475914c98615d *vignettes/dbnomics003.png 34946e93869403ca124b2ed6c5dab526 *vignettes/dbnomics004.png fab6a1c58f5207ef75d20afbf2f987a1 *vignettes/dbnomics005.png 6d3c7f7d8e76e6f116249cbe20a69b54 *vignettes/rdbnomics.Rmd rdbnomics/inst/0000755000176200001440000000000013745341256013221 5ustar liggesusersrdbnomics/inst/doc/0000755000176200001440000000000013745341256013766 5ustar liggesusersrdbnomics/inst/doc/rdbnomics.html0000644000176200001440000736367213745341255016663 0ustar liggesusers DBnomics R client

1 DBnomics: the world’s economic database

Explore all the economic data from different providers (national and international statistical institutes, central banks, etc.), for free, following the link db.nomics.world
(N.B.: in the examples, data have already been retrieved on april 6th 2020).

2 Fetch time series by ids

First, let’s assume that we know which series we want to download. A series identifier (ids) is defined by three values, formatted like this: provider_code/dataset_code/series_code.

2.1 Fetch one series from dataset ‘Unemployment rate’ (ZUTN) of AMECO provider

library(data.table)
library(rdbnomics)
df <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN")
df <- df[!is.na(value)]

In such data.table, you will always find at least ten columns:

  • provider_code
  • dataset_code
  • dataset_name
  • series_code
  • series_name
  • original_period (character string)
  • period (date of the first day of original_period)
  • original_value (character string)
  • value
  • @frequency (harmonized frequency generated by DBnomics)

The other columns depend on the provider and on the dataset. They always come in pairs (for the code and the name). In the data.frame df, you have:

  • unit (code) and Unit (name)
  • geo (code) and Country (name)
  • freq (code) and Frequency (name)
##    provider_code dataset_code        dataset_name         series_code
## 1:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 2:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 3:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 4:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 5:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 6:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
##            series_name original_period     period original_value value
## 1: Annually – (Perc...            1998 1998-01-01           10.4  10.4
## 2: Annually – (Perc...            1999 1999-01-01            9.7   9.7
## 3: Annually – (Perc...            2000 2000-01-01            8.9   8.9
## 4: Annually – (Perc...            2001 2001-01-01            8.3   8.3
## 5: Annually – (Perc...            2002 2002-01-01            8.6   8.6
## 6: Annually – (Perc...            2003 2003-01-01            9.1   9.1
##    @frequency                unit                Unit  geo   Country freq
## 1:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 2:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 3:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 4:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 5:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 6:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
##    Frequency          indexed_at
## 1:  Annually 2019-11-08 16:33:50
## 2:  Annually 2019-11-08 16:33:50
## 3:  Annually 2019-11-08 16:33:50
## 4:  Annually 2019-11-08 16:33:50
## 5:  Annually 2019-11-08 16:33:50
## 6:  Annually 2019-11-08 16:33:50

In the event that you only use the argument ids, you can drop it and run:

df <- rdb("AMECO/ZUTN/EA19.1.0.0.0.ZUTN")

2.2 Fetch two series from dataset ‘Unemployment rate’ (ZUTN) of AMECO provider

df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"))
df <- df[!is.na(value)]
##    provider_code dataset_code        dataset_name      series_code
## 1:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 2:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 3:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 4:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 5:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 6:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
##            series_name original_period     period original_value value
## 1: Annually – (Perc...            1960 1960-01-01              2   2.0
## 2: Annually – (Perc...            1961 1961-01-01            1.6   1.6
## 3: Annually – (Perc...            1962 1962-01-01            1.4   1.4
## 4: Annually – (Perc...            1963 1963-01-01              2   2.0
## 5: Annually – (Perc...            1964 1964-01-01            1.2   1.2
## 6: Annually – (Perc...            1965 1965-01-01            0.9   0.9
##    @frequency                unit                Unit geo Country freq
## 1:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 2:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 3:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 4:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 5:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 6:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
##    Frequency          indexed_at
## 1:  Annually 2019-11-08 16:33:50
## 2:  Annually 2019-11-08 16:33:50
## 3:  Annually 2019-11-08 16:33:50
## 4:  Annually 2019-11-08 16:33:50
## 5:  Annually 2019-11-08 16:33:50
## 6:  Annually 2019-11-08 16:33:50

2.3 Fetch two series from different datasets of different providers

df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "Eurostat/une_rt_q/Q.SA.Y15-24.PC_ACT.T.EA19"))
df <- df[!is.na(value)]
##    provider_code dataset_code        dataset_name         series_code
## 1:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 2:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 3:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 4:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 5:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 6:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
##            series_name original_period     period original_value value
## 1: Annually – (Perc...            1997 1997-01-01           11.5  11.5
## 2: Annually – (Perc...            1998 1998-01-01             11  11.0
## 3: Annually – (Perc...            1999 1999-01-01           10.2  10.2
## 4: Annually – (Perc...            2000 2000-01-01            9.2   9.2
## 5: Annually – (Perc...            2001 2001-01-01            8.4   8.4
## 6: Annually – (Perc...            2002 2002-01-01            8.6   8.6
##    @frequency                unit Unit  geo Country freq Frequency age
## 1:     annual percentage-of-ac...   NA ea19      NA    a  Annually  NA
## 2:     annual percentage-of-ac...   NA ea19      NA    a  Annually  NA
## 3:     annual percentage-of-ac...   NA ea19      NA    a  Annually  NA
## 4:     annual percentage-of-ac...   NA ea19      NA    a  Annually  NA
## 5:     annual percentage-of-ac...   NA ea19      NA    a  Annually  NA
## 6:     annual percentage-of-ac...   NA ea19      NA    a  Annually  NA
##    Age class FREQ Geopolitical entity (reporting)          indexed_at
## 1:        NA   NA                              NA 2020-05-07 08:46:14
## 2:        NA   NA                              NA 2020-05-07 08:46:14
## 3:        NA   NA                              NA 2020-05-07 08:46:14
## 4:        NA   NA                              NA 2020-05-07 08:46:14
## 5:        NA   NA                              NA 2020-05-07 08:46:14
## 6:        NA   NA                              NA 2020-05-07 08:46:14
##    observations_attributes s_adj Seasonal adjustment sex Sex Unit of measure
## 1:                            NA                  NA  NA  NA              NA
## 2:                            NA                  NA  NA  NA              NA
## 3:                            NA                  NA  NA  NA              NA
## 4:                            NA                  NA  NA  NA              NA
## 5:                            NA                  NA  NA  NA              NA
## 6:                            NA                  NA  NA  NA              NA

3 Fetch time series by mask

The code mask notation is a very concise way to select one or many time series at once.

3.1 Fetch one series from dataset ‘Balance of Payments’ (BOP) of IMF

df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR")
df <- df[!is.na(value)]
##    provider_code dataset_code        dataset_name      series_code
## 1:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 2:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 3:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 4:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 5:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 6:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
##            series_name original_period     period original_value     value
## 1: Annual – France ...            1999 1999-01-01      47672.847 47672.847
## 2: Annual – France ...            2000 2000-01-01      17550.669 17550.669
## 3: Annual – France ...            2001 2001-01-01      23278.392 23278.392
## 4: Annual – France ...            2002 2002-01-01      18718.406 18718.406
## 5: Annual – France ...            2003 2003-01-01      14195.493 14195.493
## 6: Annual – France ...            2004 2004-01-01       7520.754  7520.754
##    @frequency FREQ Frequency          indexed_at           Indicator
## 1:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 2:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 3:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 4:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 5:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 6:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
##      INDICATOR observations_attributes REF_AREA Reference Area
## 1: BCA_BP6_EUR          OFFICIAL_BPM,K       FR         France
## 2: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 3: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 4: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 5: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 6: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France

In the event that you only use the arguments provider_code, dataset_code and mask, you can drop the name mask and run:

df <- rdb("IMF", "BOP", "A.FR.BCA_BP6_EUR")

3.2 Fetch two series from dataset ‘Balance of Payments’ (BOP) of IMF

You just have to add a + between two different values of a dimension.

df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR")
df <- df[!is.na(value)]
##    provider_code dataset_code        dataset_name      series_code
## 1:           IMF          BOP Balance of Payme... A.ES.BCA_BP6_EUR
## 2:           IMF          BOP Balance of Payme... A.ES.BCA_BP6_EUR
## 3:           IMF          BOP Balance of Payme... A.ES.BCA_BP6_EUR
## 4:           IMF          BOP Balance of Payme... A.ES.BCA_BP6_EUR
## 5:           IMF          BOP Balance of Payme... A.ES.BCA_BP6_EUR
## 6:           IMF          BOP Balance of Payme... A.ES.BCA_BP6_EUR
##            series_name original_period     period original_value  value
## 1: Annual – Spain –...            1999 1999-01-01         -19295 -19295
## 2: Annual – Spain –...            2000 2000-01-01         -27921 -27921
## 3: Annual – Spain –...            2001 2001-01-01         -30672 -30672
## 4: Annual – Spain –...            2002 2002-01-01         -27959 -27959
## 5: Annual – Spain –...            2003 2003-01-01         -31153 -31153
## 6: Annual – Spain –...            2004 2004-01-01         -47116 -47116
##    @frequency FREQ Frequency          indexed_at           Indicator
## 1:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 2:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 3:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 4:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 5:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 6:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
##      INDICATOR observations_attributes REF_AREA Reference Area
## 1: BCA_BP6_EUR          OFFICIAL_BPM,K       ES          Spain
## 2: BCA_BP6_EUR           OFFICIAL_BPM,       ES          Spain
## 3: BCA_BP6_EUR           OFFICIAL_BPM,       ES          Spain
## 4: BCA_BP6_EUR           OFFICIAL_BPM,       ES          Spain
## 5: BCA_BP6_EUR           OFFICIAL_BPM,       ES          Spain
## 6: BCA_BP6_EUR           OFFICIAL_BPM,       ES          Spain

3.3 Fetch all series along one dimension from dataset ‘Balance of Payments’ (BOP) of IMF

df <- rdb("IMF", "BOP", mask = "A..BCA_BP6_EUR")
df <- df[!is.na(value)]
df <- df[order(-period, REF_AREA)]
df <- head(df, 100)
##    provider_code dataset_code        dataset_name      series_code
## 1:           IMF          BOP Balance of Payme... A.DE.BCA_BP6_EUR
## 2:           IMF          BOP Balance of Payme... A.EE.BCA_BP6_EUR
## 3:           IMF          BOP Balance of Payme... A.LU.BCA_BP6_EUR
## 4:           IMF          BOP Balance of Payme... A.LV.BCA_BP6_EUR
## 5:           IMF          BOP Balance of Payme... A.PT.BCA_BP6_EUR
## 6:           IMF          BOP Balance of Payme... A.RS.BCA_BP6_EUR
##            series_name original_period     period original_value      value
## 1: Annual – Germany...            2019 2019-01-01         245532 245532.000
## 2: Annual – Estonia...            2019 2019-01-01        615.256    615.256
## 3: Annual – Luxembo...            2019 2019-01-01     2846.74554   2846.746
## 4: Annual – Latvia ...            2019 2019-01-01           -163   -163.000
## 5: Annual – Portuga...            2019 2019-01-01           -181   -181.000
## 6: Annual – Serbia ...            2019 2019-01-01    -3159.86552  -3159.866
##    @frequency FREQ Frequency          indexed_at           Indicator
## 1:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 2:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 3:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 4:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 5:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 6:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
##      INDICATOR observations_attributes REF_AREA Reference Area
## 1: BCA_BP6_EUR           OFFICIAL_BPM,       DE        Germany
## 2: BCA_BP6_EUR           OFFICIAL_BPM,       EE        Estonia
## 3: BCA_BP6_EUR           OFFICIAL_BPM,       LU     Luxembourg
## 4: BCA_BP6_EUR           OFFICIAL_BPM,       LV         Latvia
## 5: BCA_BP6_EUR           OFFICIAL_BPM,       PT       Portugal
## 6: BCA_BP6_EUR           OFFICIAL_BPM,       RS         Serbia

3.4 Fetch series along multiple dimensions from dataset ‘Balance of Payments’ (BOP) of IMF

df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR+IA_BP6_EUR")
df <- df[!is.na(value)]
df <- df[order(period), head(.SD, 50), by = INDICATOR]
##    provider_code dataset_code        dataset_name      series_code
## 1:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 2:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 3:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 4:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 5:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
## 6:           IMF          BOP Balance of Payme... A.FR.BCA_BP6_EUR
##            series_name original_period     period original_value     value
## 1: Annual – France ...            1999 1999-01-01      47672.847 47672.847
## 2: Annual – France ...            2000 2000-01-01      17550.669 17550.669
## 3: Annual – France ...            2001 2001-01-01      23278.392 23278.392
## 4: Annual – France ...            2002 2002-01-01      18718.406 18718.406
## 5: Annual – France ...            2003 2003-01-01      14195.493 14195.493
## 6: Annual – France ...            2004 2004-01-01       7520.754  7520.754
##    @frequency FREQ Frequency          indexed_at           Indicator
## 1:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 2:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 3:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 4:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 5:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
## 6:     annual    A    Annual 2020-03-26 20:10:01 Current Account,...
##      INDICATOR observations_attributes REF_AREA Reference Area
## 1: BCA_BP6_EUR          OFFICIAL_BPM,K       FR         France
## 2: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 3: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 4: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 5: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France
## 6: BCA_BP6_EUR           OFFICIAL_BPM,       FR         France

4 Fetch time series by dimensions

Searching by dimensions is a less concise way to select time series than using the code mask, but it works with all the different providers. You have a “Description of series code” at the bottom of each dataset page on the DBnomics website.

4.1 Fetch one value of one dimension from dataset ‘Unemployment rate’ (ZUTN) of AMECO provider

df <- rdb("AMECO", "ZUTN", dimensions = list(geo = "ea19"))
df <- df[!is.na(value))]
# or
# df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19"]}')
# df <- df[!is.na(value))]
##    provider_code dataset_code        dataset_name         series_code
## 1:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 2:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 3:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 4:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 5:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
## 6:         AMECO         ZUTN Unemployment rat... EA19.1.0.0.0.ZUT...
##            series_name original_period     period original_value value
## 1: Annually – (Perc...            1998 1998-01-01           10.4  10.4
## 2: Annually – (Perc...            1999 1999-01-01            9.7   9.7
## 3: Annually – (Perc...            2000 2000-01-01            8.9   8.9
## 4: Annually – (Perc...            2001 2001-01-01            8.3   8.3
## 5: Annually – (Perc...            2002 2002-01-01            8.6   8.6
## 6: Annually – (Perc...            2003 2003-01-01            9.1   9.1
##    @frequency                unit                Unit  geo   Country freq
## 1:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 2:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 3:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 4:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 5:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
## 6:     annual percentage-of-ac... (Percentage of a... ea19 Euro area    a
##    Frequency          indexed_at
## 1:  Annually 2019-11-08 16:33:50
## 2:  Annually 2019-11-08 16:33:50
## 3:  Annually 2019-11-08 16:33:50
## 4:  Annually 2019-11-08 16:33:50
## 5:  Annually 2019-11-08 16:33:50
## 6:  Annually 2019-11-08 16:33:50

4.2 Fetch two values of one dimension from dataset ‘Unemployment rate’ (ZUTN) of AMECO provider

df <- rdb("AMECO", "ZUTN", dimensions = list(geo = c("ea19", "dnk")))
df <- df[!is.na(value))]
# or
# df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19", "dnk"]}')
# df <- df[!is.na(value))]
##    provider_code dataset_code        dataset_name      series_code
## 1:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 2:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 3:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 4:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 5:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 6:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
##            series_name original_period     period original_value value
## 1: Annually – (Perc...            1960 1960-01-01              2   2.0
## 2: Annually – (Perc...            1961 1961-01-01            1.6   1.6
## 3: Annually – (Perc...            1962 1962-01-01            1.4   1.4
## 4: Annually – (Perc...            1963 1963-01-01              2   2.0
## 5: Annually – (Perc...            1964 1964-01-01            1.2   1.2
## 6: Annually – (Perc...            1965 1965-01-01            0.9   0.9
##    @frequency                unit                Unit geo Country freq
## 1:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 2:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 3:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 4:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 5:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 6:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
##    Frequency          indexed_at
## 1:  Annually 2019-11-08 16:33:50
## 2:  Annually 2019-11-08 16:33:50
## 3:  Annually 2019-11-08 16:33:50
## 4:  Annually 2019-11-08 16:33:50
## 5:  Annually 2019-11-08 16:33:50
## 6:  Annually 2019-11-08 16:33:50

4.3 Fetch several values of several dimensions from dataset ‘Doing business’ (DB) of World Bank

df <- rdb("WB", "DB", dimensions = list(country = c("DZ", "PE"), indicator = c("ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS")))
df <- df[!is.na(value))]
# or
# df <- rdb("WB", "DB", dimensions = '{"country": ["DZ", "PE"], "indicator": ["ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS"]}')
# df <- df[!is.na(value))]
##    provider_code dataset_code   dataset_name         series_code
## 1:            WB           DB Doing Business IC.REG.COST.PC.F...
## 2:            WB           DB Doing Business IC.REG.COST.PC.F...
## 3:            WB           DB Doing Business IC.REG.COST.PC.F...
## 4:            WB           DB Doing Business IC.REG.COST.PC.F...
## 5:            WB           DB Doing Business IC.REG.COST.PC.F...
## 6:            WB           DB Doing Business IC.REG.COST.PC.F...
##            series_name original_period     period original_value value
## 1: Cost of business...            2003 2003-01-01           16.3  16.3
## 2: Cost of business...            2004 2004-01-01           14.6  14.6
## 3: Cost of business...            2005 2005-01-01           12.4  12.4
## 4: Cost of business...            2006 2006-01-01           13.4  13.4
## 5: Cost of business...            2007 2007-01-01           13.2  13.2
## 6: Cost of business...            2008 2008-01-01           10.8  10.8
##    @frequency country Country          indexed_at           indicator
## 1:     annual      DZ Algeria 2020-03-11 14:09:09 IC.REG.COST.PC.F...
## 2:     annual      DZ Algeria 2020-03-11 14:09:09 IC.REG.COST.PC.F...
## 3:     annual      DZ Algeria 2020-03-11 14:09:09 IC.REG.COST.PC.F...
## 4:     annual      DZ Algeria 2020-03-11 14:09:09 IC.REG.COST.PC.F...
## 5:     annual      DZ Algeria 2020-03-11 14:09:09 IC.REG.COST.PC.F...
## 6:     annual      DZ Algeria 2020-03-11 14:09:09 IC.REG.COST.PC.F...
##              Indicator observations_attributes
## 1: Cost of business...              ATTRIBUTE,
## 2: Cost of business...              ATTRIBUTE,
## 3: Cost of business...              ATTRIBUTE,
## 4: Cost of business...              ATTRIBUTE,
## 5: Cost of business...              ATTRIBUTE,
## 6: Cost of business...              ATTRIBUTE,

5 Fetch time series with a query

The query is a Google-like search that will filter/select time series from a provider’s dataset.

5.1 Fetch one series from dataset ‘WEO by countries (2019-10 release)’ (WEO:2019-10) of IMF

df <- rdb("IMF", "WEO:2019-10", query = "France current account balance percent")
df <- df[!is.na(value))]
##    provider_code dataset_code        dataset_name         series_code
## 1:           IMF  WEO:2019-10 WEO by countries... FRA.BCA_NGDPD.pc...
## 2:           IMF  WEO:2019-10 WEO by countries... FRA.BCA_NGDPD.pc...
## 3:           IMF  WEO:2019-10 WEO by countries... FRA.BCA_NGDPD.pc...
## 4:           IMF  WEO:2019-10 WEO by countries... FRA.BCA_NGDPD.pc...
## 5:           IMF  WEO:2019-10 WEO by countries... FRA.BCA_NGDPD.pc...
## 6:           IMF  WEO:2019-10 WEO by countries... FRA.BCA_NGDPD.pc...
##            series_name original_period     period original_value  value
## 1: France – Current...            1980 1980-01-01         -0.595 -0.595
## 2: France – Current...            1981 1981-01-01         -0.771 -0.771
## 3: France – Current...            1982 1982-01-01         -2.062 -2.062
## 4: France – Current...            1983 1983-01-01         -0.838 -0.838
## 5: France – Current...            1984 1984-01-01         -0.142 -0.142
## 6: France – Current...            1985 1985-01-01         -0.063 -0.063
##    @frequency      unit           Unit          indexed_at weo-country
## 1:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         FRA
## 2:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         FRA
## 3:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         FRA
## 4:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         FRA
## 5:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         FRA
## 6:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         FRA
##    weo-subject WEO Country         WEO Subject
## 1:   BCA_NGDPD      France Current account ...
## 2:   BCA_NGDPD      France Current account ...
## 3:   BCA_NGDPD      France Current account ...
## 4:   BCA_NGDPD      France Current account ...
## 5:   BCA_NGDPD      France Current account ...
## 6:   BCA_NGDPD      France Current account ...

5.2 Fetch series from dataset ‘WEO by countries (2019-10 release)’ (WEO:2019-10) of IMF

df <- rdb("IMF", "WEO:2019-10", query = "current account balance percent")
df <- df[!is.na(value))]
##    provider_code dataset_code        dataset_name         series_code
## 1:           IMF  WEO:2019-10 WEO by countries... DEU.BCA_NGDPD.pc...
## 2:           IMF  WEO:2019-10 WEO by countries... DEU.BCA_NGDPD.pc...
## 3:           IMF  WEO:2019-10 WEO by countries... DEU.BCA_NGDPD.pc...
## 4:           IMF  WEO:2019-10 WEO by countries... DEU.BCA_NGDPD.pc...
## 5:           IMF  WEO:2019-10 WEO by countries... DEU.BCA_NGDPD.pc...
## 6:           IMF  WEO:2019-10 WEO by countries... DEU.BCA_NGDPD.pc...
##            series_name original_period     period original_value  value
## 1: Germany – Curren...            1980 1980-01-01         -1.782 -1.782
## 2: Germany – Curren...            1981 1981-01-01         -0.684 -0.684
## 3: Germany – Curren...            1982 1982-01-01          0.866  0.866
## 4: Germany – Curren...            1983 1983-01-01          0.666  0.666
## 5: Germany – Curren...            1984 1984-01-01          1.423  1.423
## 6: Germany – Curren...            1985 1985-01-01          2.662  2.662
##    @frequency      unit           Unit          indexed_at weo-country
## 1:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         DEU
## 2:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         DEU
## 3:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         DEU
## 4:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         DEU
## 5:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         DEU
## 6:     annual pcent_gdp Percent of GDP 2020-10-14 14:39:56         DEU
##    weo-subject WEO Country         WEO Subject
## 1:   BCA_NGDPD     Germany Current account ...
## 2:   BCA_NGDPD     Germany Current account ...
## 3:   BCA_NGDPD     Germany Current account ...
## 4:   BCA_NGDPD     Germany Current account ...
## 5:   BCA_NGDPD     Germany Current account ...
## 6:   BCA_NGDPD     Germany Current account ...

6 Fetch time series found on the web site

When you don’t know the codes of the dimensions, provider, dataset or series, you can:

  • go to the page of a dataset on DBnomics website, for example Doing Business,

  • select some dimensions by using the input widgets of the left column,

  • click on “Copy API link” in the menu of the “Download” button,

  • use the rdb(api_link = ...) function such as below.

df <- rdb(api_link = "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0")
df <- df[!is.na(value))]
##    provider_code dataset_code   dataset_name         series_code
## 1:            WB           DB Doing Business IC.REG.PROC.FE.N...
## 2:            WB           DB Doing Business IC.REG.PROC.FE.N...
## 3:            WB           DB Doing Business IC.REG.PROC.FE.N...
## 4:            WB           DB Doing Business IC.REG.PROC.FE.N...
## 5:            WB           DB Doing Business IC.REG.PROC.FE.N...
## 6:            WB           DB Doing Business IC.REG.PROC.FE.N...
##            series_name original_period     period original_value value
## 1: Starting a busin...            2004 2004-01-01              8     8
## 2: Starting a busin...            2004 2004-01-01             10    10
## 3: Starting a busin...            2004 2004-01-01             10    10
## 4: Starting a busin...            2005 2005-01-01              5     5
## 5: Starting a busin...            2005 2005-01-01             10    10
## 6: Starting a busin...            2005 2005-01-01             10    10
##    @frequency country Country          indexed_at           indicator
## 1:     annual      FR  France 2020-03-11 14:09:09 IC.REG.PROC.FE.N...
## 2:     annual      IT   Italy 2020-03-11 14:09:09 IC.REG.PROC.FE.N...
## 3:     annual      ES   Spain 2020-03-11 14:09:09 IC.REG.PROC.FE.N...
## 4:     annual      FR  France 2020-03-11 14:09:09 IC.REG.PROC.FE.N...
## 5:     annual      IT   Italy 2020-03-11 14:09:09 IC.REG.PROC.FE.N...
## 6:     annual      ES   Spain 2020-03-11 14:09:09 IC.REG.PROC.FE.N...
##              Indicator observations_attributes
## 1: Starting a busin...              ATTRIBUTE,
## 2: Starting a busin...              ATTRIBUTE,
## 3: Starting a busin...              ATTRIBUTE,
## 4: Starting a busin...              ATTRIBUTE,
## 5: Starting a busin...              ATTRIBUTE,
## 6: Starting a busin...              ATTRIBUTE,

In the event that you only use the argument api_link, you can drop the name and run:

df <- rdb("https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0")

7 Fetch time series from the cart

On the cart page of the DBnomics website, click on “Copy API link” and copy-paste it as an argument of the rdb(api_link = ...) function. Please note that when you update your cart, you have to copy this link again, because the link itself contains the ids of the series in the cart.
df <- rdb(api_link = "https://api.db.nomics.world/v22/series?observations=1&series_ids=BOE/6008/RPMTDDC,BOE/6231/RPMTBVE")
df <- df[!is.na(value))]
##    provider_code dataset_code        dataset_name series_code
## 1:           BOE         6008 Industrial analy...     RPMTDDC
## 2:           BOE         6231 Industrial analy...     RPMTBVE
## 3:           BOE         6008 Industrial analy...     RPMTDDC
## 4:           BOE         6231 Industrial analy...     RPMTBVE
## 5:           BOE         6008 Industrial analy...     RPMTDDC
## 6:           BOE         6231 Industrial analy...     RPMTBVE
##            series_name original_period     period original_value value
## 1: Monthly amounts ...         2009-07 2009-07-01          10150 10150
## 2: Monthly amounts ...         2009-07 2009-07-01          11066 11066
## 3: Monthly amounts ...         2009-08 2009-08-01          10400 10400
## 4: Monthly amounts ...         2009-08 2009-08-01          11260 11260
## 5: Monthly amounts ...         2009-09 2009-09-01          11595 11595
## 6: Monthly amounts ...         2009-09 2009-09-01          11208 11208
##    @frequency freq    Freq          indexed_at Instrument Currency
## 1:    monthly    M Monthly 2020-03-31 08:03:49            Sterling
## 2:    monthly    M Monthly 2020-03-31 08:03:49            Sterling
## 3:    monthly    M Monthly 2020-03-31 08:03:49            Sterling
## 4:    monthly    M Monthly 2020-03-31 08:03:49            Sterling
## 5:    monthly    M Monthly 2020-03-31 08:03:49            Sterling
## 6:    monthly    M Monthly 2020-03-31 08:03:49            Sterling
##    INSTRUMENT_CURRENCY         Instruments INSTRUMENTS           Of Sector
## 1:                   £ Deposits and rep...       LDPRP Education provid...
## 2:                   £     Lending - total      ALENDG Education provid...
## 3:                   £ Deposits and rep...       LDPRP Education provid...
## 4:                   £     Lending - total      ALENDG Education provid...
## 5:                   £ Deposits and rep...       LDPRP Education provid...
## 6:                   £     Lending - total      ALENDG Education provid...
##    OF_SECTOR Output In OUTPUT_IN Seasonal Adjustment SEASONAL_ADJUSTMENT
## 1:        ED  Sterling         £ Not seasonally a...                   U
## 2:        ED  Sterling         £ Not seasonally a...                   U
## 3:        ED  Sterling         £ Not seasonally a...                   U
## 4:        ED  Sterling         £ Not seasonally a...                   U
## 5:        ED  Sterling         £ Not seasonally a...                   U
## 6:        ED  Sterling         £ Not seasonally a...                   U
##                 Sector SECTOR                Type TYPE
## 1: UK resident mone...   BKBS Amounts outstand...    L
## 2: UK resident mone...   BKBS Amounts outstand...    L
## 3: UK resident mone...   BKBS Amounts outstand...    L
## 4: UK resident mone...   BKBS Amounts outstand...    L
## 5: UK resident mone...   BKBS Amounts outstand...    L
## 6: UK resident mone...   BKBS Amounts outstand...    L

8 Fetch the available datasets of a provider

When fetching series from DBnomics, you need to give a provider and a dataset before specifying correct dimensions. With the function rdb_datasets, you can download the list of the available datasets for a provider.
For example, to fetch the IMF datasets, you have to use:

rdb_datasets(provider_code = "IMF")

The result is a named list (its name is IMF) with one element which is a data.table:

## List of 1
##  $ IMF:Classes 'data.table' and 'data.frame':    17 obs. of  2 variables:
##   ..$ code: chr [1:17] "BOP" "BOPAGG" "COMMP" "COMMPP" ...
##   ..$ name: chr [1:17] "Balance of Payments (BOP)" "Balance of Payments (BOP), World and Regional Aggregates" "Primary Commodity Prices" "Primary Commodity Prices Projections" ...
##   ..- attr(*, ".internal.selfref")=<externalptr>

With the same function, if you want to fetch the available datasets for multiple providers, you can give a vector of providers and get a named list.

rdb_datasets(provider_code = c("IMF", "BDF"))
## List of 2
##  $ IMF:Classes 'data.table' and 'data.frame':    17 obs. of  2 variables:
##   ..$ code: chr [1:17] "BOP" "BOPAGG" "COMMP" "COMMPP" ...
##   ..$ name: chr [1:17] "Balance of Payments (BOP)" "Balance of Payments (BOP), World and Regional Aggregates" "Primary Commodity Prices" "Primary Commodity Prices Projections" ...
##   ..- attr(*, ".internal.selfref")=<externalptr> 
##  $ BDF:Classes 'data.table' and 'data.frame':    45 obs. of  2 variables:
##   ..$ code: chr [1:45] "AME" "BLS" "BPM6" "BSI" ...
##   ..$ name: chr [1:45] "Macro Economy - Euro Area" "Bank Lending Survey" "Balance of payments- 6th manual" "Monetary Statistics - Euro Area" ...
##   ..- attr(*, ".internal.selfref")=<externalptr>
## Number of datasets for IMF : 17
## Number of datasets for BDF : 45

In the event that you only request the datasets for one provider, if you define simplify = TRUE, then the result will be a data.table not a named list.

rdb_datasets(provider_code = "IMF", simplify = TRUE)
##      code                name
## 1:    BOP Balance of Payme...
## 2: BOPAGG Balance of Payme...
## 3:  COMMP Primary Commodit...
## 4: COMMPP Primary Commodit...
## 5:    CPI Consumer Price I...
## 6:   CPIS Coordinated Port...

The extent of datasets gathered by DBnomics can be appreciate by using the function with the argument provider_code set to NULL:

options(rdbnomics.progress_bar_datasets = TRUE)
rdb_datasets()
options(rdbnomics.progress_bar_datasets = FALSE)
##    Provider Number of datasets
## 1:     AFDB                  1
## 2:    AMECO                481
## 3:      BCB                 85
## 4:    BCEAO                 28
## 5:      BDF                 45
## 6:      BEA                555

9 Fetch the possible dimensions of available datasets of a provider

When fetching series from DBnomics, it can be interesting and especially useful to specify dimensions for a particular dataset to download only the series you want to analyse. With the function rdb_dimensions, you can download these dimensions and their meanings.
For example, for the dataset WEO:2019-10 of the IMF, you may use:

rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10")

The result is a nested named list (its names are IMF, WEO:2019-10 and the dimensions names) with a data.table at the end of each branch:

## Number of dimensions for IMF/WEO:2019-10 : 3
##                   unit                Unit
## 1:                 idx               Index
## 2: national_currenc... National currenc...
## 3: national_currenc... National currenc...
## 4:               pcent             Percent
## 5:        pcent_change      Percent change
## 6:           pcent_gdp      Percent of GDP
##    weo-country         WEO Country
## 1:         ABW               Aruba
## 2:         AFG         Afghanistan
## 3:         AGO              Angola
## 4:         ALB             Albania
## 5:         ARE United Arab Emir...
## 6:         ARG           Argentina
##    weo-subject         WEO Subject
## 1:         BCA Current account ...
## 2:   BCA_NGDPD Current account ...
## 3:     FLIBOR6 Six-month London...
## 4:         GGR General governme...
## 5:    GGR_NGDP General governme...
## 6:        GGSB General governme...

In the event that you only request the dimensions for one dataset for one provider, if you define simplify = TRUE, then the result will be a named list data.table not a nested named list.

rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE)
## List of 3
##  $ unit       :Classes 'data.table' and 'data.frame':    12 obs. of  2 variables:
##   ..$ unit: chr [1:12] "idx" "national_currency" "national_currency_per_current_international_dollar" "pcent" ...
##   ..$ Unit: chr [1:12] "Index" "National currency" "National currency per current international dollar" "Percent" ...
##   ..- attr(*, ".internal.selfref")=<externalptr> 
##  $ weo-country:Classes 'data.table' and 'data.frame':    194 obs. of  2 variables:
##   ..$ weo-country: chr [1:194] "ABW" "AFG" "AGO" "ALB" ...
##   ..$ WEO Country: chr [1:194] "Aruba" "Afghanistan" "Angola" "Albania" ...
##   ..- attr(*, ".internal.selfref")=<externalptr> 
##  $ weo-subject:Classes 'data.table' and 'data.frame':    45 obs. of  2 variables:
##   ..$ weo-subject: chr [1:45] "BCA" "BCA_NGDPD" "FLIBOR6" "GGR" ...
##   ..$ WEO Subject: chr [1:45] "Current account balance" "Current account balance" "Six-month London interbank offered rate (LIBOR)" "General government revenue" ...
##   ..- attr(*, ".internal.selfref")=<externalptr>

You can measure the vast extent of datasets gathered by DBnomics by downloading all the possible dimensions. To do this, you have to set the arguments provider_code and dataset_code to NULL.
It’s relatively long to run and heavy to show so we display the first 100.

options(rdbnomics.progress_bar_datasets = TRUE)
rdb_dimensions()
options(rdbnomics.progress_bar_datasets = FALSE)
##    Provider Dataset Dimension Number of codes
## 1:     AFDB bbkawjf   country             109
## 2:     AFDB bbkawjf frequency               1
## 3:     AFDB bbkawjf indicator            1279
## 4:     AFDB bbkawjf     scale               1
## 5:     AFDB bbkawjf     units             169
## 6:    AMECO    AAGE      freq               1

10 Fetch the series codes and names of available datasets of a provider

You can download the list of series, and especially their codes, of a dataset’s provider by using the function rdb_series. The result is a nested named list with a data.table at the end of each branch. If you define simplify = TRUE, then the result will be a data.table not a nested named list.
For example, for the IMF provider and the dataset WEO:2019-10, the command is (only first 100):

rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE)
##            series_code         series_name
## 1: ABW.BCA.us_dolla... Aruba – Current ...
## 2: ABW.BCA_NGDPD.pc... Aruba – Current ...
## 3: ABW.FLIBOR6.pcen... Aruba – Six-mont...
## 4: ABW.GGR.national... Aruba – General ...
## 5: ABW.GGR_NGDP.pce... Aruba – General ...
## 6: ABW.GGSB.nationa... Aruba – General ...

Like the function rdb(), you can add features to rdb_series(). You can ask for the series with specific dimensions:

rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", dimensions = list(`weo-subject` = "NGDP_RPCH"), simplify = TRUE)

or with a query:

rdb_series(provider_code = "IMF", dataset_code = c("WEO:2019-10", "WEOAGG:2019-10"), query = "NGDP_RPCH")

We ask the user to use this function parsimoniously because there are a huge amount of series per dataset. Please only fetch for one dataset if you need it or visit the website https://db.nomics.world.
For example, for the IMF provider, the number of series is (only first 5):

##    Dataset Number of series
## 1:    CPIS          2903710
## 2:    CDIS           772274
## 3:  GFSIBS           681984
## 4:     BOP           535322
## 5:     DOT           459980

11 Proxy configuration or connection error Could not resolve host

When using the function rdb, you may come across the following error:

Error in open.connection(con, "rb") :
  Could not resolve host: api.db.nomics.world

To get round this situation, you have two options:

  1. configure curl to use a specific and authorized proxy.

  2. use the default R internet connection i.e. the Internet Explorer proxy defined in internet2.dll.

11.1 Configure curl to use a specific and authorized proxy

In rdbnomics, by default the function curl_fetch_memory (of the package curl) is used to fetch the data. If a specific proxy must be used, it is possible to define it permanently with the package option rdbnomics.curl_config or on the fly through the argument curl_config. Because the object is a named list, its elements are passed to the connection (the curl_handle object created internally with new_handle()) with handle_setopt() before using curl_fetch_memory.

To see the available parameters, run names(curl_options()) in R or visit the website https://curl.haxx.se/libcurl/c/curl_easy_setopt.html. Once they are chosen, you define the curl object as follows:

h <- list(
  proxy = "<proxy>",
  proxyport = <port>,
  proxyusername = "<username>",
  proxypassword = "<password>"
)

11.1.1 Set the connection up for a session

The curl connection can be set up for a session by modifying the following package option:

options(rdbnomics.curl_config = h)

When fetching the data, the following command is executed:

hndl <- curl::new_handle()
curl::handle_setopt(hndl, .list = getOption("rdbnomics.curl_config"))
curl::curl_fetch_memory(url = <...>, handle = hndl)

After configuration, just use the standard functions of rdbnomics e.g.:

df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN")

This option of the package can be disabled with:

options(rdbnomics.curl = NULL)

11.1.2 Use the connection only for a function call

If a complete configuration is not needed but just an “on the fly” execution, then use the argument curl_config of the function rdb:

df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", curl_config = h)

11.2 Use the default R internet connection

To retrieve the data with the default R internet connection, rdbnomics will use the base function readLines.

11.2.1 Set the connection up for a session

To activate this feature for a session, you need to enable an option of the package:

options(rdbnomics.use_readLines = TRUE)

And then use the standard function as follows:

df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN")

This configuration can be disabled with:

options(rdbnomics.use_readLines = FALSE)

11.2.2 Use the connection only for a function call

If you just want to do it once, you may use the argument use_readLines of the function rdb:

df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", use_readLines = TRUE)

12 Transform time series with filters

The rdbnomics package can interact with the Time Series Editor of DBnomics to transform time series by applying filters to them.
Available filters are listed on the filters page https://editor.nomics.world/filters.

Here is an example of how to proceed to interpolate two annual time series with a monthly frequency, using a spline interpolation:

filters <- list(
  code = "interpolate",
  parameters = list(frequency = "monthly", method = "spline")
)

The request is then:

df <- rdb(
  ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"),
  filters = filters
)

If you want to apply more than one filter, the filters argument will be a list of valid filters:

filters <- list(
  list(
    code = "interpolate",
    parameters = list(frequency = "monthly", method = "spline")
  ),
  list(
    code = "aggregate",
    parameters = list(frequency = "bi-annual", method = "end_of_period")
  )
)

df <- rdb(
  ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"),
  filters = filters
)

The data.table columns change a little bit when filters are used. There are two new columns:

  • period_middle_day: the middle day of original_period (can be useful when you compare graphically interpolated series and original ones).
  • filtered (boolean): TRUE if the series is filtered, FALSE otherwise.

The content of two columns are modified:

  • series_code: same as before for original series, but the suffix _filtered is added for filtered series.
  • series_name: same as before for original series, but the suffix (filtered) is added for filtered series.
##    provider_code dataset_code        dataset_name      series_code
## 1:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 2:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 3:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 4:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 5:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
## 6:         AMECO         ZUTN Unemployment rat... DNK.1.0.0.0.ZUTN
##            series_name original_period     period original_value value
## 1: Annually – (Perc...            1960 1960-01-01              2   2.0
## 2: Annually – (Perc...            1961 1961-01-01            1.6   1.6
## 3: Annually – (Perc...            1962 1962-01-01            1.4   1.4
## 4: Annually – (Perc...            1963 1963-01-01              2   2.0
## 5: Annually – (Perc...            1964 1964-01-01            1.2   1.2
## 6: Annually – (Perc...            1965 1965-01-01            0.9   0.9
##    @frequency                unit                Unit geo Country freq
## 1:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 2:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 3:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 4:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 5:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
## 6:     annual percentage-of-ac... (Percentage of a... dnk Denmark    a
##    Frequency filtered          indexed_at period_middle_day
## 1:  Annually    FALSE 2019-11-08 16:33:50              <NA>
## 2:  Annually    FALSE 2019-11-08 16:33:50              <NA>
## 3:  Annually    FALSE 2019-11-08 16:33:50              <NA>
## 4:  Annually    FALSE 2019-11-08 16:33:50              <NA>
## 5:  Annually    FALSE 2019-11-08 16:33:50              <NA>
## 6:  Annually    FALSE 2019-11-08 16:33:50              <NA>


  1. Banque de France, https://github.com/s915↩︎

  2. CEPREMAP↩︎

rdbnomics/inst/doc/rdbnomics.R0000644000176200001440000010027213745341255016072 0ustar liggesusers## ---- echo = FALSE------------------------------------------------------------ library <- function(...) { suppressWarnings( suppressPackageStartupMessages(base::library(..., quietly = TRUE)) ) } ## ----------------------------------------------------------------------------- library(data.table) library(rdbnomics) ## ---- echo = FALSE------------------------------------------------------------ reorder_cols <- function(x) { data.table::setDT(x) cols <- c( "provider_code", "dataset_code", "dataset_name", "series_code", "series_name", "original_period", "period", "original_value", "value", "@frequency" ) if ("unit" %in% colnames(x)) { cols <- c(cols, "unit", "Unit") } if ("geo" %in% colnames(x)) { cols <- c(cols, "geo", "Country") } if ("freq" %in% colnames(x)) { cols <- c(cols, "freq", "Frequency") } cols_add <- setdiff(colnames(x), cols) cols <- c(cols, cols_add) cols <- cols[cols %in% colnames(x)] cols <- match(cols, colnames(x)) x[, .SD, .SDcols = cols] } knitr::opts_chunk$set(dev.args = list(bg = "transparent")) display_table <- function(DT) { DT <- head(DT) DT <- as.data.table( lapply(DT, function(x) { if (is.character(x)) { ifelse( nchar(x) > 16, paste0(substr(x, 1, 16), "..."), x ) } else { x } }) ) DT[] } ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") # df <- df[!is.na(value)] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df001 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN")) # df <- df[!is.na(value)] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df002 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.7, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "Eurostat/une_rt_q/Q.SA.Y15-24.PC_ACT.T.EA19")) # df <- df[!is.na(value)] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df003 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics(legend.text = element_text(size = 7)) i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) legend_text[2] <- sapply( legend_text[2], function(y) { paste0( paste0( strsplit(y, "active ")[[1]], collapse = "active\n" ), "\n" ) } ) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR") # df <- df[!is.na(value)] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df004 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value), max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("IMF", "BOP", "A.FR.BCA_BP6_EUR") ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") # df <- df[!is.na(value)] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df005 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 2*10^4, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "s") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("IMF", "BOP", mask = "A..BCA_BP6_EUR") # df <- df[!is.na(value)] # df <- df[order(-period, REF_AREA)] # df <- head(df, 100) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df006 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- reorder_cols(df) display_table(df) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR+IA_BP6_EUR") # df <- df[!is.na(value)] # df <- df[order(period), head(.SD, 50), by = INDICATOR] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df007 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- reorder_cols(df) display_table(df) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("AMECO", "ZUTN", dimensions = list(geo = "ea19")) # df <- df[!is.na(value))] # # or # # df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19"]}') # # df <- df[!is.na(value))] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df008 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("AMECO", "ZUTN", dimensions = list(geo = c("ea19", "dnk"))) # df <- df[!is.na(value))] # # or # # df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19", "dnk"]}') # # df <- df[!is.na(value))] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df009 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("WB", "DB", dimensions = list(country = c("DZ", "PE"), indicator = c("ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS"))) # df <- df[!is.na(value))] # # or # # df <- rdb("WB", "DB", dimensions = '{"country": ["DZ", "PE"], "indicator": ["ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS"]}') # # df <- df[!is.na(value))] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df010 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(series_name, period)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 7, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("IMF", "WEO:2019-10", query = "France current account balance percent") # df <- df[!is.na(value))] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df014 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("IMF", "WEO:2019-10", query = "current account balance percent") # df <- df[!is.na(value))] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df015 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = `WEO Country`)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # ggtitle("Current account balance (% GDP)") + # dbnomics(legend.direction = "horizontal") i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value), max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb(api_link = "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0") # df <- df[!is.na(value))] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df011 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(period, series_name)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "s") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "s") points(x3, y3, col = cols[3], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb("https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0") ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb(api_link = "https://api.db.nomics.world/v22/series?observations=1&series_ids=BOE/6008/RPMTDDC,BOE/6231/RPMTBVE") # df <- df[!is.na(value))] ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df012 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df[ , series_name := sapply( series_name, function(y) { paste0( paste0( strsplit(y, "institutions' ")[[1]], collapse = "institutions'\n" ), "\n" ) } ) ] ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(period, series_name)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 4*10^3, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ## ---- eval = FALSE------------------------------------------------------------ # rdb_datasets(provider_code = "IMF") ## ---- eval = TRUE, echo = FALSE----------------------------------------------- str(rdbnomics:::rdbnomics_df016) ## ---- eval = FALSE------------------------------------------------------------ # rdb_datasets(provider_code = c("IMF", "BDF")) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- str(rdbnomics:::rdbnomics_df018) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df018 DT <- sapply(DT, function(y) { paste0(": ", nrow(y)) }) DT <- paste0("Number of datasets for ", names(DT), " ", unname(DT)) cat(DT, sep = "\n") ## ---- eval = FALSE------------------------------------------------------------ # rdb_datasets(provider_code = "IMF", simplify = TRUE) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df017 data.table::setDT(DT) display_table(DT) ## ---- eval = FALSE------------------------------------------------------------ # options(rdbnomics.progress_bar_datasets = TRUE) # rdb_datasets() # options(rdbnomics.progress_bar_datasets = FALSE) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df019 DT <- data.table(Provider = names(DT), `Number of datasets` = sapply(DT, nrow)) DT <- DT[order(Provider)] display_table(DT) ## ---- eval = FALSE------------------------------------------------------------ # rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10") ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10` DT <- paste0("Number of dimensions for IMF/WEO:2019-10 : ", length(DT)) cat(DT, sep = "\n") ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[1]] display_table(DT) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[2]] display_table(DT) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[3]] display_table(DT) ## ---- eval = FALSE------------------------------------------------------------ # rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- str(rdbnomics:::rdbnomics_df021) ## ---- eval = FALSE------------------------------------------------------------ # options(rdbnomics.progress_bar_datasets = TRUE) # rdb_dimensions() # options(rdbnomics.progress_bar_datasets = FALSE) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df022 DT <- DT[order(Provider, Dataset)] DT <- head(DT, 100) display_table(DT) # rdbnomics_df022 %>% # sapply(function(u) { # sapply( # u, # function(x) { # sapply( # x, # function(y) { # nrow(y) # }, # simplify = FALSE # ) %>% # { # data.table(Dimension = names(.), `Number of codes` = unname(.)) # } # }, # simplify = FALSE # ) %>% # rbindlist(idcol = "Dataset") # }, # simplify = FALSE # ) %>% # rbindlist(idcol = "Provider") ## ---- eval = FALSE------------------------------------------------------------ # rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df023 DT <- head(DT, 100) display_table(DT) ## ---- eval = FALSE------------------------------------------------------------ # rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", dimensions = list(`weo-subject` = "NGDP_RPCH"), simplify = TRUE) ## ---- eval = FALSE------------------------------------------------------------ # rdb_series(provider_code = "IMF", dataset_code = c("WEO:2019-10", "WEOAGG:2019-10"), query = "NGDP_RPCH") ## ---- eval = TRUE, echo = FALSE----------------------------------------------- DT <- rdbnomics:::rdbnomics_df024 DT <- DT[order(-`Number of series`)] DT <- head(DT, 5) display_table(DT) ## ---- eval = FALSE------------------------------------------------------------ # Error in open.connection(con, "rb") : # Could not resolve host: api.db.nomics.world ## ---- eval = FALSE------------------------------------------------------------ # h <- list( # proxy = "", # proxyport = , # proxyusername = "", # proxypassword = "" # ) ## ---- eval = FALSE------------------------------------------------------------ # options(rdbnomics.curl_config = h) ## ---- eval = FALSE------------------------------------------------------------ # hndl <- curl::new_handle() # curl::handle_setopt(hndl, .list = getOption("rdbnomics.curl_config")) # curl::curl_fetch_memory(url = <...>, handle = hndl) ## ---- eval = FALSE------------------------------------------------------------ # df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ## ---- eval = FALSE------------------------------------------------------------ # options(rdbnomics.curl = NULL) ## ---- eval = FALSE------------------------------------------------------------ # df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", curl_config = h) ## ---- eval = FALSE------------------------------------------------------------ # options(rdbnomics.use_readLines = TRUE) ## ---- eval = FALSE------------------------------------------------------------ # df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ## ---- eval = FALSE------------------------------------------------------------ # options(rdbnomics.use_readLines = FALSE) ## ---- eval = FALSE------------------------------------------------------------ # df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", use_readLines = TRUE) ## ---- eval = FALSE------------------------------------------------------------ # filters <- list( # code = "interpolate", # parameters = list(frequency = "monthly", method = "spline") # ) ## ---- eval = FALSE------------------------------------------------------------ # df <- rdb( # ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"), # filters = filters # ) ## ---- eval = FALSE------------------------------------------------------------ # filters <- list( # list( # code = "interpolate", # parameters = list(frequency = "monthly", method = "spline") # ), # list( # code = "aggregate", # parameters = list(frequency = "bi-annual", method = "end_of_period") # ) # ) # # df <- rdb( # ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"), # filters = filters # ) ## ---- eval = TRUE, echo = FALSE----------------------------------------------- df <- rdbnomics:::rdbnomics_df013 data.table::setDT(df) ## ---- echo = FALSE------------------------------------------------------------ df <- df[order(filtered, series_name, period)] df <- reorder_cols(df) display_table(df) ## ---- echo = FALSE, fig.align = 'center'-------------------------------------- # ggplot(df[!is.na(value)], aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() df <- df[!is.na(value)] i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 4, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) rdbnomics/inst/doc/rdbnomics.Rmd0000644000176200001440000011442513744125415016415 0ustar liggesusers--- title: "DBnomics R client" author: "Sébastien Galais^[Banque de France, [https://github.com/s915](https://github.com/s915)], Thomas Brand^[CEPREMAP]" output: html_document: highlight: default theme: simplex smart: false toc: true toc_float: true number_sections: true rmarkdown::html_vignette: highlight: default theme: simplex smart: false toc: true toc_float: true number_sections: true vignette: > %\VignetteIndexEntry{DBnomics R client} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # DBnomics: the world's economic database Explore all the economic data from different providers (national and international statistical institutes, central banks, etc.), for free, following the link [db.nomics.world](https://db.nomics.world) (*N.B.: in the examples, data have already been retrieved on april 6th 2020*). [![](dbnomics001.png)](https://db.nomics.world) # Fetch time series by `ids` First, let's assume that we know which series we want to download. A series identifier (`ids`) is defined by three values, formatted like this: `provider_code`/`dataset_code`/`series_code`. ## Fetch one series from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, echo = FALSE} library <- function(...) { suppressWarnings( suppressPackageStartupMessages(base::library(..., quietly = TRUE)) ) } ``` ```{r} library(data.table) library(rdbnomics) ``` ```{r, echo = FALSE} reorder_cols <- function(x) { data.table::setDT(x) cols <- c( "provider_code", "dataset_code", "dataset_name", "series_code", "series_name", "original_period", "period", "original_value", "value", "@frequency" ) if ("unit" %in% colnames(x)) { cols <- c(cols, "unit", "Unit") } if ("geo" %in% colnames(x)) { cols <- c(cols, "geo", "Country") } if ("freq" %in% colnames(x)) { cols <- c(cols, "freq", "Frequency") } cols_add <- setdiff(colnames(x), cols) cols <- c(cols, cols_add) cols <- cols[cols %in% colnames(x)] cols <- match(cols, colnames(x)) x[, .SD, .SDcols = cols] } knitr::opts_chunk$set(dev.args = list(bg = "transparent")) display_table <- function(DT) { DT <- head(DT) DT <- as.data.table( lapply(DT, function(x) { if (is.character(x)) { ifelse( nchar(x) > 16, paste0(substr(x, 1, 16), "..."), x ) } else { x } }) ) DT[] } ``` ```{r, eval = FALSE} df <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df001 data.table::setDT(df) ``` In such `data.table`, you will always find at least ten columns: - `provider_code` - `dataset_code` - `dataset_name` - `series_code` - `series_name` - `original_period` (character string) - `period` (date of the first day of `original_period`) - `original_value` (character string) - `value` - `@frequency` (harmonized frequency generated by DBnomics) The other columns depend on the provider and on the dataset. They always come in pairs (for the code and the name). In the data.frame `df`, you have: - `unit` (code) and `Unit` (name) - `geo` (code) and `Country` (name) - `freq` (code) and `Frequency` (name) ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` In the event that you only use the argument `ids`, you can drop it and run: ```{r, eval = FALSE} df <- rdb("AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ``` ## Fetch two series from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, eval = FALSE} df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN")) df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df002 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.7, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch two series from different datasets of different providers ```{r, eval = FALSE} df <- rdb(ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "Eurostat/une_rt_q/Q.SA.Y15-24.PC_ACT.T.EA19")) df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df003 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics(legend.text = element_text(size = 7)) i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) legend_text[2] <- sapply( legend_text[2], function(y) { paste0( paste0( strsplit(y, "active ")[[1]], collapse = "active\n" ), "\n" ) } ) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch time series by `mask` The code mask notation is a very concise way to select one or many time series at once. ## Fetch one series from dataset 'Balance of Payments' (BOP) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR") df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df004 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value), max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` In the event that you only use the arguments `provider_code`, `dataset_code` and `mask`, you can drop the name `mask` and run: ```{r, eval = FALSE} df <- rdb("IMF", "BOP", "A.FR.BCA_BP6_EUR") ``` ## Fetch two series from dataset 'Balance of Payments' (BOP) of IMF You just have to add a `+` between two different values of a dimension. ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A.FR+ES.BCA_BP6_EUR") df <- df[!is.na(value)] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df005 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 2*10^4, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "s") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch all series along one dimension from dataset 'Balance of Payments' (BOP) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A..BCA_BP6_EUR") df <- df[!is.na(value)] df <- df[order(-period, REF_AREA)] df <- head(df, 100) ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df006 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ## Fetch series along multiple dimensions from dataset 'Balance of Payments' (BOP) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "BOP", mask = "A.FR.BCA_BP6_EUR+IA_BP6_EUR") df <- df[!is.na(value)] df <- df[order(period), head(.SD, 50), by = INDICATOR] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df007 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` # Fetch time series by `dimensions` Searching by `dimensions` is a less concise way to select time series than using the code `mask`, but it works with all the different providers. You have a "*Description of series code*" at the bottom of each dataset page on the [DBnomics website](https://db.nomics.world). ## Fetch one value of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, eval = FALSE} df <- rdb("AMECO", "ZUTN", dimensions = list(geo = "ea19")) df <- df[!is.na(value))] # or # df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19"]}') # df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df008 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch two values of one dimension from dataset 'Unemployment rate' (ZUTN) of AMECO provider ```{r, eval = FALSE} df <- rdb("AMECO", "ZUTN", dimensions = list(geo = c("ea19", "dnk"))) df <- df[!is.na(value))] # or # df <- rdb("AMECO", "ZUTN", dimensions = '{"geo": ["ea19", "dnk"]}') # df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df009 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_code, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch several values of several dimensions from dataset 'Doing business' (DB) of World Bank ```{r, eval = FALSE} df <- rdb("WB", "DB", dimensions = list(country = c("DZ", "PE"), indicator = c("ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS"))) df <- df[!is.na(value))] # or # df <- rdb("WB", "DB", dimensions = '{"country": ["DZ", "PE"], "indicator": ["ENF.CONT.COEN.COST.ZS", "IC.REG.COST.PC.FE.ZS"]}') # df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df010 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(series_name, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 7, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch time series with a `query` The query is a Google-like search that will filter/select time series from a provider's dataset. ## Fetch one series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "WEO:2019-10", query = "France current account balance percent") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df014 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 0.5, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` ## Fetch series from dataset 'WEO by countries (2019-10 release)' (WEO:2019-10) of IMF ```{r, eval = FALSE} df <- rdb("IMF", "WEO:2019-10", query = "current account balance percent") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df015 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = `WEO Country`)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # ggtitle("Current account balance (% GDP)") + # dbnomics(legend.direction = "horizontal") i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value), max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch time series found on the web site When you don't know the codes of the dimensions, provider, dataset or series, you can: - go to the page of a dataset on [DBnomics website](https://db.nomics.world), for example [Doing Business](https://db.nomics.world/WB/DB), - select some dimensions by using the input widgets of the left column, ![](dbnomics002.png) - click on "*Copy API link*" in the menu of the "*Download*" button, ![](dbnomics003.png) - use the `rdb(api_link = ...)` function such as below. ```{r, eval = FALSE} df <- rdb(api_link = "https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df011 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(period, series_name)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_step(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "s", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 1.2, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "s") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "s") points(x3, y3, col = cols[3], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` In the event that you only use the argument `api_link`, you can drop the name and run: ```{r, eval = FALSE} df <- rdb("https://api.db.nomics.world/v22/series/WB/DB?dimensions=%7B%22country%22%3A%5B%22FR%22%2C%22IT%22%2C%22ES%22%5D%7D&q=IC.REG.PROC.FE.NO&observations=1&format=json&align_periods=1&offset=0&facets=0") ``` # Fetch time series from the cart On the cart page of the [DBnomics website](https://db.nomics.world), click on "*Copy API link*" and copy-paste it as an argument of the `rdb(api_link = ...)` function. Please note that when you update your cart, you have to copy this link again, because the link itself contains the ids of the series in the cart.
![](dbnomics005.png)
```{r, eval = FALSE} df <- rdb(api_link = "https://api.db.nomics.world/v22/series?observations=1&series_ids=BOE/6008/RPMTDDC,BOE/6231/RPMTBVE") df <- df[!is.na(value))] ``` ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df012 data.table::setDT(df) ``` ```{r, echo = FALSE} df[ , series_name := sapply( series_name, function(y) { paste0( paste0( strsplit(y, "institutions' ")[[1]], collapse = "institutions'\n" ), "\n" ) } ) ] ``` ```{r, echo = FALSE} df <- df[order(period, series_name)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df, aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen") PCH <- 18 plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 4*10^3, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) legend( "bottomleft", inset = 0.005, legend = sort(unique(df$series_name)), col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` # Fetch the available datasets of a provider When fetching series from [DBnomics](https://db.nomics.world), you need to give a provider and a dataset before specifying correct dimensions. With the function `rdb_datasets`, you can download the list of the available datasets for a provider. For example, to fetch the **IMF** datasets, you have to use: ```{r, eval = FALSE} rdb_datasets(provider_code = "IMF") ``` The result is a named list (its name is **IMF**) with one element which is a `data.table`: ```{r, eval = TRUE, echo = FALSE} str(rdbnomics:::rdbnomics_df016) ``` With the same function, if you want to fetch the available datasets for multiple providers, you can give a vector of providers and get a named list. ```{r, eval = FALSE} rdb_datasets(provider_code = c("IMF", "BDF")) ``` ```{r, eval = TRUE, echo = FALSE} str(rdbnomics:::rdbnomics_df018) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df018 DT <- sapply(DT, function(y) { paste0(": ", nrow(y)) }) DT <- paste0("Number of datasets for ", names(DT), " ", unname(DT)) cat(DT, sep = "\n") ``` In the event that you only request the datasets for one provider, if you define `simplify = TRUE`, then the result will be a `data.table` not a named list. ```{r, eval = FALSE} rdb_datasets(provider_code = "IMF", simplify = TRUE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df017 data.table::setDT(DT) display_table(DT) ``` The extent of datasets gathered by [DBnomics](https://db.nomics.world) can be appreciate by using the function with the argument `provider_code` set to `NULL`: ```{r, eval = FALSE} options(rdbnomics.progress_bar_datasets = TRUE) rdb_datasets() options(rdbnomics.progress_bar_datasets = FALSE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df019 DT <- data.table(Provider = names(DT), `Number of datasets` = sapply(DT, nrow)) DT <- DT[order(Provider)] display_table(DT) ``` # Fetch the possible dimensions of available datasets of a provider When fetching series from [DBnomics](https://db.nomics.world), it can be interesting and especially useful to specify dimensions for a particular dataset to download only the series you want to analyse. With the function `rdb_dimensions`, you can download these dimensions and their meanings. For example, for the dataset **WEO:2019-10** of the **IMF**, you may use: ```{r, eval = FALSE} rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10") ``` The result is a nested named list (its names are **IMF**, **WEO:2019-10** and the dimensions names) with a `data.table` at the end of each branch: ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10` DT <- paste0("Number of dimensions for IMF/WEO:2019-10 : ", length(DT)) cat(DT, sep = "\n") ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[1]] display_table(DT) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[2]] display_table(DT) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df020 DT <- DT$IMF$`WEO:2019-10`[[3]] display_table(DT) ``` In the event that you only request the dimensions for one dataset for one provider, if you define `simplify = TRUE`, then the result will be a named list `data.table` not a nested named list. ```{r, eval = FALSE} rdb_dimensions(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) ``` ```{r, eval = TRUE, echo = FALSE} str(rdbnomics:::rdbnomics_df021) ``` You can measure the vast extent of datasets gathered by [DBnomics](https://db.nomics.world) by downloading all the possible dimensions. To do this, you have to set the arguments `provider_code` and `dataset_code` to `NULL`. It's relatively long to run and heavy to show so we display the first 100. ```{r, eval = FALSE} options(rdbnomics.progress_bar_datasets = TRUE) rdb_dimensions() options(rdbnomics.progress_bar_datasets = FALSE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df022 DT <- DT[order(Provider, Dataset)] DT <- head(DT, 100) display_table(DT) # rdbnomics_df022 %>% # sapply(function(u) { # sapply( # u, # function(x) { # sapply( # x, # function(y) { # nrow(y) # }, # simplify = FALSE # ) %>% # { # data.table(Dimension = names(.), `Number of codes` = unname(.)) # } # }, # simplify = FALSE # ) %>% # rbindlist(idcol = "Dataset") # }, # simplify = FALSE # ) %>% # rbindlist(idcol = "Provider") ``` # Fetch the series codes and names of available datasets of a provider You can download the list of series, and especially their codes, of a dataset's provider by using the function `rdb_series`. The result is a nested named list with a `data.table` at the end of each branch. If you define `simplify = TRUE`, then the result will be a `data.table` not a nested named list. For example, for the **IMF** provider and the dataset **WEO:2019-10**, the command is (only first 100): ```{r, eval = FALSE} rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", simplify = TRUE) ``` ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df023 DT <- head(DT, 100) display_table(DT) ``` Like the function `rdb()`, you can add features to `rdb_series()`. You can ask for the series with specific `dimensions`: ```{r, eval = FALSE} rdb_series(provider_code = "IMF", dataset_code = "WEO:2019-10", dimensions = list(`weo-subject` = "NGDP_RPCH"), simplify = TRUE) ``` or with a `query`: ```{r, eval = FALSE} rdb_series(provider_code = "IMF", dataset_code = c("WEO:2019-10", "WEOAGG:2019-10"), query = "NGDP_RPCH") ``` We ask the user to use this function parsimoniously because there are a huge amount of series per dataset. Please only fetch for one dataset if you need it or visit the website [https://db.nomics.world](https://db.nomics.world). For example, for the **IMF** provider, the number of series is (only first 5): ```{r, eval = TRUE, echo = FALSE} DT <- rdbnomics:::rdbnomics_df024 DT <- DT[order(-`Number of series`)] DT <- head(DT, 5) display_table(DT) ``` # Proxy configuration or connection error `Could not resolve host` When using the function `rdb`, you may come across the following error: ```{r, eval = FALSE} Error in open.connection(con, "rb") : Could not resolve host: api.db.nomics.world ``` To get round this situation, you have two options: 1. configure **curl** to use a specific and authorized proxy. 2. use the default R internet connection i.e. the Internet Explorer proxy defined in *internet2.dll*. ## Configure **curl** to use a specific and authorized proxy In **rdbnomics**, by default the function `curl_fetch_memory` (of the package **curl**) is used to fetch the data. If a specific proxy must be used, it is possible to define it permanently with the package option `rdbnomics.curl_config` or on the fly through the argument `curl_config`. Because the object is a named list, its elements are passed to the connection (the `curl_handle` object created internally with `new_handle()`) with `handle_setopt()` before using `curl_fetch_memory`. To see the available parameters, run `names(curl_options())` in *R* or visit the website https://curl.haxx.se/libcurl/c/curl_easy_setopt.html. Once they are chosen, you define the curl object as follows: ```{r, eval = FALSE} h <- list( proxy = "", proxyport = , proxyusername = "", proxypassword = "" ) ``` ### Set the connection up for a session The curl connection can be set up for a session by modifying the following package option: ```{r, eval = FALSE} options(rdbnomics.curl_config = h) ``` When fetching the data, the following command is executed: ```{r, eval = FALSE} hndl <- curl::new_handle() curl::handle_setopt(hndl, .list = getOption("rdbnomics.curl_config")) curl::curl_fetch_memory(url = <...>, handle = hndl) ``` After configuration, just use the standard functions of **rdbnomics** e.g.: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ``` This option of the package can be disabled with: ```{r, eval = FALSE} options(rdbnomics.curl = NULL) ``` ### Use the connection only for a function call If a complete configuration is not needed but just an "on the fly" execution, then use the argument `curl_config` of the function `rdb`: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", curl_config = h) ``` ## Use the default R internet connection To retrieve the data with the default R internet connection, **rdbnomics** will use the base function `readLines`. ### Set the connection up for a session To activate this feature for a session, you need to enable an option of the package: ```{r, eval = FALSE} options(rdbnomics.use_readLines = TRUE) ``` And then use the standard function as follows: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN") ``` This configuration can be disabled with: ```{r, eval = FALSE} options(rdbnomics.use_readLines = FALSE) ``` ### Use the connection only for a function call If you just want to do it once, you may use the argument `use_readLines` of the function `rdb`: ```{r, eval = FALSE} df1 <- rdb(ids = "AMECO/ZUTN/EA19.1.0.0.0.ZUTN", use_readLines = TRUE) ``` # Transform time series with filters The **rdbnomics** package can interact with the *Time Series Editor* of DBnomics to transform time series by applying filters to them. Available filters are listed on the filters page [https://editor.nomics.world/filters](https://editor.nomics.world/filters). Here is an example of how to proceed to interpolate two annual time series with a monthly frequency, using a spline interpolation: ```{r, eval = FALSE} filters <- list( code = "interpolate", parameters = list(frequency = "monthly", method = "spline") ) ``` The request is then: ```{r, eval = FALSE} df <- rdb( ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"), filters = filters ) ``` If you want to apply more than one filter, the `filters` argument will be a list of valid filters: ```{r, eval = FALSE} filters <- list( list( code = "interpolate", parameters = list(frequency = "monthly", method = "spline") ), list( code = "aggregate", parameters = list(frequency = "bi-annual", method = "end_of_period") ) ) df <- rdb( ids = c("AMECO/ZUTN/EA19.1.0.0.0.ZUTN", "AMECO/ZUTN/DNK.1.0.0.0.ZUTN"), filters = filters ) ``` The `data.table` columns change a little bit when filters are used. There are two new columns: - `period_middle_day`: the middle day of `original_period` (can be useful when you compare graphically interpolated series and original ones). - `filtered` (boolean): `TRUE` if the series is filtered, `FALSE` otherwise. The content of two columns are modified: - `series_code`: same as before for original series, but the suffix `_filtered` is added for filtered series. - `series_name`: same as before for original series, but the suffix ` (filtered)` is added for filtered series. ```{r, eval = TRUE, echo = FALSE} df <- rdbnomics:::rdbnomics_df013 data.table::setDT(df) ``` ```{r, echo = FALSE} df <- df[order(filtered, series_name, period)] df <- reorder_cols(df) display_table(df) ``` ```{r, echo = FALSE, fig.align = 'center'} # ggplot(df[!is.na(value)], aes(x = period, y = value, color = series_name)) + # geom_line(size = 1.2) + # geom_point(size = 2) + # dbnomics() df <- df[!is.na(value)] i <- 1 x1 <- df[series_name == sort(unique(series_name))[i]]$period y1 <- df[series_name == sort(unique(series_name))[i]]$value i <- 2 x2 <- df[series_name == sort(unique(series_name))[i]]$period y2 <- df[series_name == sort(unique(series_name))[i]]$value i <- 3 x3 <- df[series_name == sort(unique(series_name))[i]]$period y3 <- df[series_name == sort(unique(series_name))[i]]$value i <- 4 x4 <- df[series_name == sort(unique(series_name))[i]]$period y4 <- df[series_name == sort(unique(series_name))[i]]$value cols <- c("red", "blue", "darkgreen", "purple") PCH <- 18 legend_text <- sort(unique(df$series_name)) plot( x1, y1, col = cols[1], type = "l", xlab = "", ylab = "", xlim = c(min(df$period), max(df$period)), ylim = c(min(df$value) - 4, max(df$value)), panel.first = grid(lty = 1) ) points(x1, y1, col = cols[1], pch = PCH) lines(x2, y2, col = cols[2], type = "l") points(x2, y2, col = cols[2], pch = PCH) lines(x3, y3, col = cols[3], type = "l") points(x3, y3, col = cols[3], pch = PCH) lines(x4, y4, col = cols[4], type = "l") points(x4, y4, col = cols[4], pch = PCH) legend( "bottomleft", inset = 0.005, legend = legend_text, col = cols, lty = 1, pch = PCH, box.lty = 0, cex = 0.7 ) mtext( text = "DBnomics ", side = 3, col = "grey", font = 3, adj = 1 ) ``` rdbnomics/inst/tinytest/0000755000176200001440000000000013744116260015076 5ustar liggesusersrdbnomics/inst/tinytest/test_rdb_providers.R0000644000176200001440000000030113653274703021124 0ustar liggesuserscat("\n", "Context: Right arguments for rdb_providers", "\n") # Code is logical and of length one expect_error(rdb_providers(code = logical())) expect_error(rdb_providers(code = "TRUE")) rdbnomics/inst/tinytest/test_rdb.R0000644000176200001440000000503613653274660017043 0ustar liggesuserscat("\n", "Context: Right combination of arguments for rdb", "\n") # Fetch by dimensions expect_error(rdb(dimensions = "x", provider_code = NULL, dataset_code = "y")) expect_error(rdb(dimensions = "x", provider_code = "y", dataset_code = NULL)) expect_error(rdb(dimensions = "x", provider_code = NULL, dataset_code = NULL)) expect_error(rdb(dimensions = c("x1", "x2"), provider_code = "y", dataset_code = "z")) expect_error(rdb(dimensions = list(), provider_code = "y", dataset_code = "z")) expect_error(rdb(dimensions = list("x1", "x2"), provider_code = "y", dataset_code = "z")) expect_error(rdb(dimensions = list(elt1 = "x1", "x2"), provider_code = "y", dataset_code = "z")) # Fetch by mask expect_error(rdb(mask = "IMF", provider_code = NULL, dataset_code = "y")) expect_error(rdb(mask = "IMF", provider_code = "y", dataset_code = NULL)) expect_error(rdb(mask = "IMF", provider_code = NULL, dataset_code = NULL)) expect_error(rdb(mask = c("x1", "x2"), provider_code = "y", dataset_code = "z")) # Fetch by mask with wrong provider_code expect_error(rdb(mask = "x", provider_code = "y", dataset_code = "z")) # Fetch by ids expect_error(rdb(ids = character())) # Nothing provided expect_error(rdb()) # api_link length is greater than one or equal to zero expect_error(rdb(api_link = c("url1", "url2"))) expect_error(rdb(api_link = character())) # api_link is not a character string expect_error(rdb(api_link = 0)) # use_readLines is NULL expect_error(rdb(api_link = "url", use_readLines = NULL)) # use_readLines length is greater than one or equal to zero expect_error(rdb(api_link = "url", use_readLines = c(TRUE, FALSE))) expect_error(rdb(api_link = "url", use_readLines = logical())) # use_readLines is not a logical expect_error(rdb(api_link = "url", use_readLines = "TRUE")) # curl_config is not a curl_handle object or a named list expect_error(rdb(api_link = "url", curl_config = TRUE)) expect_error(rdb(api_link = "url", curl_config = list(1))) # filters is not a valid list expect_error(rdb(api_link = "url", filters = TRUE)) expect_error(rdb(api_link = "url", filters = "filters")) expect_error(rdb(api_link = "url", filters = list())) expect_error(rdb(api_link = "url", filters = list(code = "interpolate", parameter = NULL))) expect_error(rdb(api_link = "url", filters = list(code = "interpolate", parameters = list()))) expect_error(rdb(api_link = "url", filters = list(list(code = "interpolate", parameters = list(frequency = "quarterly", method = "spline")), list(code = "aggregate", parameters = list())))) rdbnomics/inst/tinytest/test_rdb_last_updates.R0000644000176200001440000000030713653274672021612 0ustar liggesuserscat("\n", "Context: Right arguments for rdb_last_updates", "\n") # All is logical and of length one expect_error(rdb_last_updates(all = logical())) expect_error(rdb_last_updates(all = "TRUE"))