TSP/0000755000175000017500000000000014204777652011070 5ustar nileshnileshTSP/MD50000644000175000017500000000570714204777652011411 0ustar nileshnileshc19c234d7fe4aea523478ee6ce7f0496 *DESCRIPTION 0a3fadeb88e46e04b3883e5ae0614fcd *NAMESPACE fc019d80e692085245d606361c31f86b *NEWS.md 9e46d39a9907e10eb9c9d071f9e9c0eb *R/AAA_TSP-package.R 53fd0b4cc668ff06fe00424278f70ae8 *R/AAA_parameter.R 9db80d2422f37bb05ced61d75be3ebe7 *R/ATSP.R 1331a2fc0b8747516632a8f354045fc9 *R/ETSP.R d58dfad278be45b3e7fa2bd2413ed12c *R/TOUR.R 81b13c9100920ceadeb761e487954f00 *R/TSP.R 9b958b031e449dfd9a81aa0a935cd12a *R/TSPLIB.R b2c9bd370588eda623f5536c04f8bd23 *R/USCA312.R 1fba181161ae1bb7d53812dcedc06c0f *R/cut_tour.R 983685c5b48493021e2cb6c7e6aeeef4 *R/insert_dummy.R c6d9c1eec025b055a65c52045dcd4aec *R/reformulare_ATSP_as_TSP.R deb5d82ccb2a634e19dea4b7d1266c8c *R/solve_TSP.R c9d1ee3089f291ad3a860fa701e6bec7 *R/tour_length.R d53c9fd37452d26f9c582c9f2dd74cfc *R/tsp_concorde.R 84afdfe790fbc33dc7171e41b042ccd6 *R/tsp_insertion.R 019fd78b7be4b192712f4ce62e5c2432 *R/tsp_nn.R eb85d50fbf1f67db0f3d8b791481de49 *R/tsp_two_opt.R 8c4fa3da715e93723b9e7ff951281008 *README.md e42164c335e76f397a11491a853690f0 *build/partial.rdb f46740b6a5ae90893404c242be34bb88 *build/vignette.rds cbc08fbda69c99bfd002bd94e83f18e9 *data/USCA312.rda 4e7f660688a4bc16dee5b14a5a9a41c3 *data/USCA312_GPS.rda 654e60750bbc434a2c4ef01f6ac38885 *data/USCA50.rda 6d234c6d4d007c1bdc4f8499958aeb99 *inst/CITATION 04f5f5784d807b00cafc952979e65f77 *inst/doc/TSP.R 417ce8acf2d479da4b1c6923bac655e4 *inst/doc/TSP.Rnw 83f63cd2b82b26da86f70095fddfbac7 *inst/doc/TSP.pdf 9d75b7ee2a0295809647546e2caec298 *inst/examples/d493.tsp a3bc8512298ca7ea098fef3efe9962e2 *man/ATSP.Rd 5207f6cce5e4e2a639ff18de0d1bb8eb *man/Concorde.Rd 93df928b2e5a736bb38dab7c7b71d6b2 *man/ETSP.Rd 2a6bb57ae97b3b3063b282c2b23a9789 *man/TOUR.Rd 90cd4b4ad4edf88336d24edd128b59ca *man/TSP-package.Rd 2f43434a6326a0ffa90db58cd570191b *man/TSP.Rd 40daa526faaba857a7e845589985c32c *man/TSPLIB.Rd 2b588751e1f45f1471ea7a7b4fb6ca9f *man/USCA.Rd ec8a323fd356c9bd2a94f626e22776e2 *man/cut_tour.Rd 70f7fc298debb5a1c2df22cb9f7011ab *man/insert_dummy.Rd 4da8e0ddce9f4f506b7def1ce851cc9d *man/reformulate_ATSP_as_TSP.Rd 8f2bbac131696aed59ccde6a8a284626 *man/solve_TSP.Rd 6d0f2356e6d9b47f097de37a2813b597 *man/tour_length.Rd f0276d6a12d50703983732ab3dc0240a *src/dll.c fc6380482b910ae85f24f5f2dafd99b9 *src/insertion_cost.c a6aaa1c2435490a41f41a4b5c0c3ba7c *src/matrix_pos.h c01a1b4f3decdc99be5177661f6f9170 *src/tour_length.c c52e2ddbd6678b80c7388f8574708a2c *src/two_opt.c 3703922de28f16a1f0bd1ca82302cb51 *tests/testthat.R 6cc29a47b81c493ef81b21b3b871138e *tests/testthat/test-ETSP.R 7237e16e4567845c541dc413648d8bd3 *tests/testthat/test-TSPLIB.R 78002959873e428aaeba65f4b0ea5e05 *tests/testthat/test-concorde.R c29ca536062afab92ebb563bfef0ad94 *tests/testthat/test-insert_cut_etc.R 998eecca7ceecf1bffb9b82d7305e430 *tests/testthat/test-solve_TSP.R 417ce8acf2d479da4b1c6923bac655e4 *vignettes/TSP.Rnw e5fefe1a7b9cc2d989c7a10694f263be *vignettes/TSP.bib c760b2e30089afe4035f4c86a0faca1a *vignettes/overview.odg 76b5cfce452ac70b4c4b51bf5164887d *vignettes/overview.pdf TSP/NEWS.md0000644000175000017500000000701414204773666012171 0ustar nileshnilesh# TSP 1.2-0 (02/21/2022) ## Changes * The package uses now roxygen. * C code has now long vector support for dist. # TSP 1.1-11 (10/06/2021) ## Bugfixes * cut_tour: fixed dropped city for multiple cut points (reported by RegularnaMatrica) # TSP 1.1-10 (04/17/2020) ## Bugfixes * Fixed Linkern file management on Windows. * Converting distances that only contain 0 and Inf (e.g., from an adjacency matrix) is now fixed for Concorde and Linkern. * Reduced the maximum integer for Concorde to avoid overflows (reported by sarwanpasha). # TSP 1.1-9 (02/02/2020) * Maintenance release. # TSP 1.1-8 (01/23/2020) ## New Feature * solve_TSP for ATSP gained parameter as_TSP to solve the ATSP reformulated as a TSP. * Concorde and linkern can now solve ATSP using a reformulation as a TSP. * cut_tour can now cut a tour into multiple paths. # TSP 1.1-7 (05/22/2019) ## Bugfixes * concorde_path now normalizes the path (translates . and ~). * reformulate_ATSP_as_TSP now keeps the method attribute (i.e., used distance measure) * TSP and ATSP gained parameter method to store the name of the used distance metric. * Fixed read_TSPLIB for EDGE_WEIGHT_FORMAT of LOWER_ROW, LOWER_DIAG_ROW, UPPER_COL and UPPER_DIAG_COL (reported by klukac). # TSP 1.1-6 (04/29/2018) ## Bugfixes * Start for insertion algorithms is now coerced to integer. * Fixed problem with TSP with 1 city on Win 32 on R 3.5.0. # TSP 1.1-5 (02/21/2017) * fixed TSP labels. * fixed tour_length for ETSP and added tests. # TSP 1.1-4 (2/21/2016) * fixed bug in arbitrary insertion for TSPs with two or less cities (bug report by Shrinidhee Shevade). * concorde and linkern help: exe argument was removed. The exe control argument for both methods in solve_TSP is now deprecated. Use concorde_path(path) instead. * concorde and linkern gained a control argument verbose to suppress the output. # TSP 1.1-3 (9/2/2015) * two-opt now works correctly with asymmetric TSPs (bug report by Luis Martinez). # TSP 1.1-2 (7/30/2015) * Fixed imports for non-base packages. # TSP 1.1-1 (5/15/2015) * improved speed of C code. * compatibility with new release of testthat # TSP 1.1-0 (3/14/2015) * default method is now arbitrary_insertion with two_opt refinement. * we use foreach (use doParallel) to compute repetitions in parallel * ETSP (Euclidean TSP) added. * generic and arguments for tour_length have # Changed (fist argument is now a tour). * method "2-opt" was renamed to "two_opt" so it can also be used as a proper variable name. * solve_TSP gained methods "identity" and "random". * solve_TSP gained options "repetition" and "two_opt". # TSP 1.0-10 (2/3/2015) * added check for argument cut in cut_tour * Finding concord and linkern is now case insensitive (Reported by Mark Otto) # TSP 1.0-9 (7/16/2014) * Check for NAs in distances. * +INF and -INF are now handled in solve_TSP. * fixed single quotes in vignette. # TSP 1.0-8 (9/6/2013) * service release. # TSP 1.0-7 (8/22/2012) * Added PACKAGE argument to C calls. # TSP 1.0-6 (11/29/2011) * Fixed bug in read_TSPLIB. # TSP 1.0-5 (11/10/2011) * Changed constructor for TOUR to allow for method and tour_length. * Bugfix: labels in creator ATSP() (reported by Tiffany Chen) # TSP 1.0-4 (8/31/2011) * Fixed bug with missing row/column labels in as.ATSP() (reported by Ian Deters) # TSP 1.0-3 (5/26/2011) * Service release # TSP 1.0-2 (1/14/2011) * Fixed Windows/R bug with temp files. * Fixed the code for SpatialLines thanks to Roger Bivand. # TSP 0.1-2 (9/18/2006) * Initial release. TSP/DESCRIPTION0000644000175000017500000000247614204777652012607 0ustar nileshnileshPackage: TSP Type: Package Title: Traveling Salesperson Problem (TSP) Version: 1.2-0 Date: 2022-02-21 Authors@R: c( person("Michael", "Hahsler", role = c("aut", "cre", "cph"), email = "mhahsler@lyle.smu.edu"), person("Kurt", "Hornik", role = c("aut", "cph"))) Description: Basic infrastructure and some algorithms for the traveling salesperson problem (also traveling salesman problem; TSP). The package provides some simple algorithms and an interface to the Concorde TSP solver and its implementation of the Chained-Lin-Kernighan heuristic. The code for Concorde itself is not included in the package and has to be obtained separately. Hahsler and Hornik (2007) . Classification/ACM: G.1.6, G.2.1, G.4 URL: https://github.com/mhahsler/TSP BugReports: https://github.com/mhahsler/TSP/issues Depends: R (>= 3.5.0) Imports: graphics, foreach, utils, stats, grDevices Suggests: sp, maps, maptools, doParallel, testthat Encoding: UTF-8 RoxygenNote: 7.1.2.9000 License: GPL-3 Copyright: All code is Copyright (C) Michael Hahsler and Kurt Hornik. NeedsCompilation: yes Packaged: 2022-02-21 20:36:40 UTC; hahsler Author: Michael Hahsler [aut, cre, cph], Kurt Hornik [aut, cph] Maintainer: Michael Hahsler Repository: CRAN Date/Publication: 2022-02-21 21:10:02 UTC TSP/README.md0000644000175000017500000000417113271620736012343 0ustar nileshnilesh# TSP - Traveling Salesperson Problem - R package [![CRAN version](http://www.r-pkg.org/badges/version/TSP)](https://cran.r-project.org/package=TSP) [![CRAN RStudio mirror downloads](http://cranlogs.r-pkg.org/badges/TSP)](https://cran.r-project.org/package=TSP) [![Travis-CI Build Status](https://travis-ci.org/mhahsler/TSP.svg?branch=master)](https://travis-ci.org/mhahsler/TSP) [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/mhahsler/TSP?branch=master&svg=true)](https://ci.appveyor.com/project/mhahsler/TSP) This package provides the basic infrastructure and some algorithms for the traveling salesman problems (symmetric, asymmetric and Euclidean TSPs). The package provides some simple algorithms and an interface to the Concorde TSP solver and its implementation of the Chained-Lin-Kernighan heuristic. ## Installation __Stable CRAN version:__ install from within R with ```R install.packages("TSP") ``` __Current development version:__ Download package from [AppVeyor](https://ci.appveyor.com/project/mhahsler/TSP/build/artifacts) or install from GitHub (needs devtools). ```R library("devtools") install_github("mhahsler/TSP") ``` ## Usage Load a data set with 312 cities (USA and Canada) and create a TSP object. ```R R> library("TSP") R> data("USCA312") R> tsp <- TSP(USCA312) R> tsp ``` ``` object of class 'TSP' 312 cities (distance 'euclidean') ``` Find a tour using the default heuristic. ```R tour <- solve_TSP(tsp) tour ``` ``` object of class 'TOUR' result of method 'arbitrary_insertion+two_opt' for 312 cities tour length: 40621 ``` An online example application of TSP can be found on [shinyapps](https://shrinidhee.shinyapps.io/SimpleTSP). ## References * Michael Hahsler and Kurt Hornik, [TSP - Infrastructure for the Traveling Salesperson Problem,](http://dx.doi.org/10.18637/jss.v023.i02) _Journal of Statistical Software,_ 22(2), 2007. * [TSP package vignette](https://cran.r-project.org/package=TSP/vignettes/TSP.pdf) with complete examples. * [Reference manual](https://cran.r-project.org/package=TSP/TSP.pdf) * [Concorde TSP solver home page](http://www.math.uwaterloo.ca/tsp/concorde/) TSP/man/0000755000175000017500000000000014204735111011623 5ustar nileshnileshTSP/man/reformulate_ATSP_as_TSP.Rd0000644000175000017500000000466014204735111016505 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/reformulare_ATSP_as_TSP.R \name{reformulate_ATSP_as_TSP} \alias{reformulate_ATSP_as_TSP} \title{Reformulate a ATSP as a symmetric TSP} \usage{ reformulate_ATSP_as_TSP(x, infeasible = Inf, cheap = -Inf) } \arguments{ \item{x}{an \link{ATSP}.} \item{infeasible}{value for infeasible connections.} \item{cheap}{value for distance between a city and its corresponding dummy city.} } \value{ a \link{TSP} object. } \description{ A ATSP can be formulated as a symmetric TSP by doubling the number of cities (Jonker and Volgenant 1983). The solution of the TSP also represents the solution of the original ATSP. } \details{ To reformulate a \link{ATSP} as a \link{TSP}, for each city a dummy city (e.g, for 'New York' a dummy city 'New York*') is added. Between each city and its corresponding dummy city a negative or very small distance with value \code{cheap} is used. This makes sure that each cities always occurs in the solution together with its dummy city. The original distances are used between the cities and the dummy cities, where each city is responsible for the distance going to the city and the dummy city is responsible for the distance coming from the city. The distances between all cities and the distances between all dummy cities are set to \code{infeasible}, a very large value which makes the infeasible. } \examples{ data("USCA50") ## set the distances towards Austin to zero which makes it a ATSP austin <- which(labels(USCA50) == "Austin, TX") atsp <- as.ATSP(USCA50) atsp[, austin] <- 0 ## reformulate as a TSP tsp <- reformulate_ATSP_as_TSP(atsp) labels(tsp) ## create tour (now you could use Concorde or LK) tour_atsp <- solve_TSP(tsp, method="nn") head(labels(tour_atsp), n = 10) tour_atsp ## Note that the tour has a lenght of -Inf since the reformulation created ## some -Inf distances ## filter out the dummy cities (we specify tsp so the tour lenght is ## recalculated) tour <- TOUR(tour_atsp[tour_atsp <= n_of_cities(atsp)], tsp = atsp) tour } \references{ Jonker, R. and Volgenant, T. (1983): Transforming asymmetric into symmetric traveling salesman problems, \emph{Operations Research Letters, 2, 161--163.} } \seealso{ Other TSP: \code{\link{ATSP}()}, \code{\link{Concorde}}, \code{\link{ETSP}()}, \code{\link{TSPLIB}}, \code{\link{TSP}()}, \code{\link{insert_dummy}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TSP} \keyword{optimize} TSP/man/TOUR.Rd0000644000175000017500000000407614204737063012722 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/TOUR.R \name{TOUR} \alias{TOUR} \alias{as.TOUR} \alias{as.TOUR.numeric} \alias{as.TOUR.integer} \alias{print.TOUR} \title{Class TOUR -- Solution to a traveling salesperson problem} \usage{ TOUR(x, method = NA, tsp = NULL) as.TOUR(object) \method{as.TOUR}{numeric}(object) \method{as.TOUR}{integer}(object) \method{print}{TOUR}(x, ...) } \arguments{ \item{x}{an integer permutation vector or, for the methods an object of class \link{TOUR}.} \item{method}{character string; method used to create the tour.} \item{tsp}{\code{TSP} object the tour applies to. If available then the tour will include the tour length. Also the labels of the cities will be available in the tour (otherwise the labels of \code{x} are used).} \item{object}{data (an integer vector) which can be coerced to \code{TOUR}.} \item{...}{further arguments are passed on.} } \description{ Class to store the solution of a TSP. Objects of this class are returned by TSP solvers in this package. Essentially, an object of class \code{TOUR} is a permutation vector containing the order of cities to visit. } \details{ Since an object of class \code{TOUR} is an integer vector, it can be subsetted as an ordinary vector or coerced to an integer vector using \code{as.integer()}. It also contains the names of the objects as labels. Additionally, \code{TOUR} has the following attributes: \code{"method"}, \code{"tour_length"}. For most functions, e.g., \code{\link[=tour_length]{tour_length()}} or \code{\link[=image.TSP]{image.TSP()}}, the \code{TSP/ATSP} object used to find the tour is still needed, since the tour does not contain the distance information. } \examples{ TOUR(1:10) ## calculate a tour data("USCA50") tour <- solve_TSP(USCA50) tour ## get permutation vector as.integer(tour) ## get tour length directly from tour attr(tour, "tour_length") ## show labels labels(tour) } \seealso{ Other TOUR: \code{\link{cut_tour}()}, \code{\link{solve_TSP}()}, \code{\link{tour_length}()} } \author{ Michael Hahsler } \concept{TOUR} \keyword{classes} TSP/man/insert_dummy.Rd0000644000175000017500000000663314204735111014641 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/insert_dummy.R \name{insert_dummy} \alias{insert_dummy} \alias{insert_dummy.TSP} \alias{insert_dummy.ATSP} \alias{insert_dummy.ETSP} \title{Insert dummy cities into a distance matrix} \usage{ insert_dummy(x, n = 1, const = 0, inf = Inf, label = "dummy") \method{insert_dummy}{TSP}(x, n = 1, const = 0, inf = Inf, label = "dummy") \method{insert_dummy}{ATSP}(x, n = 1, const = 0, inf = Inf, label = "dummy") \method{insert_dummy}{ETSP}(x, n = 1, const = 0, inf = Inf, label = "dummy") } \arguments{ \item{x}{an object with a TSP problem.} \item{n}{number of dummy cities.} \item{const}{distance of the dummy cities to all other cities.} \item{inf}{distance between dummy cities.} \item{label}{labels for the dummy cities. If only one label is given, it is reused for all dummy cities.} } \value{ returns an object of the same class as \code{x}. } \description{ Inserts dummy cities into a TSP problem. A dummy city has the same, constant distance (0) to all other cities and is infinitely far from other dummy cities. A dummy city can be used to transform a shortest Hamiltonian path problem (i.e., finding an optimal linear order) into a shortest Hamiltonian cycle problem which can be solved by a TSP solvers (Garfinkel 1985). } \details{ Several dummy cities can be used together with a TSP solvers to perform rearrangement clustering (Climer and Zhang 2006). The dummy cities are inserted after the other cities in \code{x}. A \code{const} of 0 is guaranteed to work if the TSP finds the optimal solution. For heuristics returning suboptimal solutions, a higher \code{const} (e.g., \code{2 * max(x)}) might provide better results. } \examples{ ## Example 1: Find a short Hamiltonian path set.seed(1000) x <- data.frame(x = runif(20), y = runif(20), row.names = LETTERS[1:20]) tsp <- TSP(dist(x)) ## add a dummy city to cut the tour into a path tsp <- insert_dummy(tsp, label = "cut") tour <- solve_TSP(tsp) tour plot(x) lines(x[cut_tour(tour, cut = "cut"),]) ## Example 2: Rearrangement clustering of the iris dataset set.seed(1000) data("iris") tsp <- TSP(dist(iris[-5])) ## insert 2 dummy cities to creates 2 clusters tsp_dummy <- insert_dummy(tsp, n = 3, label = "boundary") ## get a solution for the TSP tour <- solve_TSP(tsp_dummy) ## plot the reordered distance matrix with the dummy cities as lines separating ## the clusters image(tsp_dummy, tour) abline(h = which(labels(tour)=="boundary"), col = "red") abline(v = which(labels(tour)=="boundary"), col = "red") ## plot the original data with paths connecting the points in each cluster plot(iris[,c(2,3)], col = iris[,5]) paths <- cut_tour(tour, cut = "boundary") for(p in paths) lines(iris[p, c(2,3)]) ## Note: The clustering is not perfect! } \references{ Sharlee Climer, Weixiong Zhang (2006): Rearrangement Clustering: Pitfalls, Remedies, and Applications, \emph{Journal of Machine Learning Research} \bold{7}(Jun), pp. 919--943. R.S. Garfinkel (1985): Motivation and modelling (chapter 2). In: E. L. Lawler, J. K. Lenstra, A.H.G. Rinnooy Kan, D. B. Shmoys (eds.) The traveling salesman problem - A guided tour of combinatorial optimization, Wiley & Sons. } \seealso{ Other TSP: \code{\link{ATSP}()}, \code{\link{Concorde}}, \code{\link{ETSP}()}, \code{\link{TSPLIB}}, \code{\link{TSP}()}, \code{\link{reformulate_ATSP_as_TSP}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TSP} \keyword{manip} TSP/man/Concorde.Rd0000644000175000017500000000755414204736221013664 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tsp_concorde.R \name{Concorde} \alias{Concorde} \alias{concorde} \alias{concorde_path} \alias{concorde_help} \alias{linkern_help} \title{Using the Concorde TSP Solver} \usage{ concorde_path(path) concorde_help() linkern_help() } \arguments{ \item{path}{a character string with the path to the directory where the executables are installed.} } \value{ Nothing. } \description{ The Concorde TSP Solver package contains several solvers. Currently, interfaces to the Concorde solver (Applegate et al. 2001), one of the most advanced and fastest TSP solvers using branch-and-cut, and the Chained Lin-Kernighan (Applegate et al. 2003) implementation are provided in \pkg{TSP}. Concorde can solve \link{TSP}s and \link{ETSP}s directly. \link{ATSP}s are reformulated as larger TSP's and then solved. } \details{ \strong{Installation of Concorde} The Concorde TSP Solver is freely available for academic research. It is not included in the \pkg{TSP} R package and has to be obtained separately from the \href{http://www.math.uwaterloo.ca/tsp/concorde/downloads/downloads.htm}{Concorde download page}. Either download the precompiled executables and place them in a suitable directory (make sure they are executable), or you can get the source code and compile the program on your own. \pkg{TSP} needs to know where the executables are. There are two options: \enumerate{ \item use \code{concorde_path()} to set the path to the directory containing the executables for concorde and linkern, or \item make sure that the executables are in the search path stored in the \code{PATH} environment variable (see \code{\link[=Sys.setenv]{Sys.setenv()}}). } \strong{Using Concorde for \code{solve_TSP()}} \code{\link[=solve_TSP]{solve_TSP()}} uses \code{\link[=write_TSPLIB]{write_TSPLIB()}} to write the TSP for Concorde and tries to find the appropriate \code{precision} value (digits after the decimal point) to convert the provided distances into the needed integer value range. The \code{precision} value can also be specified in \code{control} in \code{\link[=solve_TSP]{solve_TSP()}} with method Concorde. Warning messages will alert the user if the conversion to integer values results into rounding errors that are worse then what is specified in the \code{precision} control parameter. To get a list of all available command line options which can be used via the \code{clo} option for \code{solve_TSP} use \code{concorde_help()} and \code{linkern_help()}. Several options (\option{-x}, \option{-o}, \option{-N}, \option{-Q}) are not available via \code{\link[=solve_TSP]{solve_TSP()}} since they are used by the interface. If Concorde takes too long, then you can kill the 'concorde' process via your operating system and you can continue with R. } \examples{ \dontrun{ ## see if Concorde is correctly installed concorde_path() ## set path to the Concorde executible if it is not in the search PATH ## Example: ## concorde_path("~/concorde/") concorde_help() data("USCA312") ## run concorde in verbose mode (-v) with fast cuts only (-V) solve_TSP(USCA312, method = "concorde", control = list(clo = "-v -V")) } } \references{ Concorde home page, \url{http://www.math.uwaterloo.ca/tsp/concorde/} David Applegate, Robert Bixby, Vasek Chvatal, William Cook (2001): TSP cuts which do not conform to the template paradigm, Computational Combinatorial Optimization, M. Junger and D. Naddef (editors), Springer-Verlag. David Applegate and William Cook and Andre Rohe (2003): Chained Lin-Kernighan for Large Traveling Salesman Problems, \emph{INFORMS Journal on Computing}, \bold{15}, 82--92. } \seealso{ Other TSP: \code{\link{ATSP}()}, \code{\link{ETSP}()}, \code{\link{TSPLIB}}, \code{\link{TSP}()}, \code{\link{insert_dummy}()}, \code{\link{reformulate_ATSP_as_TSP}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TSP} \keyword{documentation} TSP/man/cut_tour.Rd0000644000175000017500000000256114204737063013772 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cut_tour.R \name{cut_tour} \alias{cut_tour} \alias{cut_tour.TOUR} \title{Cut a tour to form a path} \usage{ cut_tour(x, cut, exclude_cut = TRUE) \method{cut_tour}{TOUR}(x, cut, exclude_cut = TRUE) } \arguments{ \item{x}{an object of class \link{TOUR}.} \item{cut}{the index or label of the city/cities to cut the tour.} \item{exclude_cut}{exclude the city where we cut? If \code{FALSE}, the city at the cut is included in the path as the first city.} } \value{ Returns a named vector with city ids forming the path. If multiple cuts are used then a list with paths is returned. } \description{ Cuts a tour at a specified city to form a path. } \examples{ data("USCA50") ## find a path starting at Austin, TX tour <- solve_TSP(USCA50) path <- cut_tour(tour, cut = "Austin, TX", exclude_cut = FALSE) path ## cut the tours at two cities tour <- solve_TSP(USCA50) path <- cut_tour(tour, cut = c("Austin, TX", "Cambridge, MA"), exclude_cut = FALSE) path ## cut a tour at the largest gap using a dummy city tsp <- insert_dummy(USCA50, label = "cut") tour <- solve_TSP(tsp) ## cut tour into path at the dummy city path <- cut_tour(tour, "cut") path } \seealso{ Other TOUR: \code{\link{TOUR}()}, \code{\link{solve_TSP}()}, \code{\link{tour_length}()} } \author{ Michael Hahsler } \concept{TOUR} \keyword{optimize} TSP/man/TSP-package.Rd0000644000175000017500000000166114204734704014164 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/AAA_TSP-package.R \docType{package} \name{TSP-package} \alias{TSP-package} \title{TSP: Traveling Salesperson Problem (TSP)} \description{ Basic infrastructure and some algorithms for the traveling salesperson problem (also traveling salesman problem; TSP). The package provides some simple algorithms and an interface to the Concorde TSP solver and its implementation of the Chained-Lin-Kernighan heuristic. The code for \href{https://www.math.uwaterloo.ca/tsp/concorde/}{Concorde} itself is not included in the package and has to be obtained separately. } \section{Key functions}{ \itemize{ \item \code{\link[=solve_TSP]{solve_TSP()}} } } \references{ Michael Hahsler and Kurt Hornik. TSP -- Infrastructure for the traveling salesperson problem. Journal of Statistical Software, 23(2):1--21, December 2007. \doi{10.18637/jss.v023.i02} } \author{ Michael Hahsler } TSP/man/tour_length.Rd0000644000175000017500000000276114204737063014462 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tour_length.R \name{tour_length} \alias{tour_length} \alias{tour_length.TSP} \alias{tour_length.ATSP} \alias{tour_length.ETSP} \alias{tour_length.TOUR} \title{Calculate the length of a tour} \usage{ tour_length(x, ...) \method{tour_length}{TSP}(x, order, ...) \method{tour_length}{ATSP}(x, order, ...) \method{tour_length}{ETSP}(x, order, ...) \method{tour_length}{TOUR}(x, tsp = NULL, ...) } \arguments{ \item{x}{a TSP problem or a \link{TOUR}.} \item{...}{further arguments are currently unused.} \item{order}{an object of class \code{TOUR}} \item{tsp}{as TSP object.} } \description{ Calculate the length of a \link{TOUR} for a \link{TSP}. } \details{ If no \code{tsp} is specified, then the tour length stored in \code{x} as attribute \code{"tour_length"} is returned. If \code{tsp} is given then the tour length is recalculated using the specified TSP problem. If a distance in the tour is infinite, the result is also infinite. If the tour contains positive and negative infinite distances then the method returns \code{NA}. } \examples{ data("USCA50") ## original order tour_length(solve_TSP(USCA50, method="identity")) ## length of a manually created (random) tour tour <- TOUR(sample(seq(n_of_cities(USCA50)))) tour tour_length(tour) tour_length(tour, USCA50) } \seealso{ Other TOUR: \code{\link{TOUR}()}, \code{\link{cut_tour}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TOUR} \keyword{optimize} TSP/man/solve_TSP.Rd0000644000175000017500000002334714204773553014015 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/solve_TSP.R \name{solve_TSP} \alias{solve_TSP} \alias{solve_TSP.TSP} \alias{solve_TSP.ATSP} \alias{solve_TSP.ETSP} \title{TSP solver interface} \usage{ solve_TSP(x, method = NULL, control = NULL, ...) \method{solve_TSP}{TSP}(x, method = NULL, control = NULL, ...) \method{solve_TSP}{ATSP}(x, method = NULL, control = NULL, as_TSP = FALSE, ...) \method{solve_TSP}{ETSP}(x, method = NULL, control = NULL, ...) } \arguments{ \item{x}{a TSP problem.} \item{method}{method to solve the TSP (default: "arbitrary insertion" algorithm with two_opt refinement.} \item{control}{a list of arguments passed on to the TSP solver selected by \code{method}.} \item{...}{additional arguments are added to \code{control}.} \item{as_TSP}{should the ATSP reformulated as a TSP for the solver?} } \value{ An object of class \link{TOUR}. } \description{ Common interface to all TSP solvers in this package. } \details{ \strong{TSP Methods} Currently the following methods are available: \itemize{ \item "identity", "random" return a tour representing the order in the data (identity order) or a random order. \item "nearest_insertion", "farthest_insertion", "cheapest_insertion", "arbitrary_insertion" Nearest, farthest, cheapest and arbitrary insertion algorithms for a symmetric and asymmetric TSP (Rosenkrantz et al. 1977). The distances between cities are stored in a distance matrix \eqn{D} with elements \eqn{d(i,j)}. All insertion algorithms start with a tour consisting of an arbitrary city and choose in each step a city \eqn{k} not yet on the tour. This city is inserted into the existing tour between two consecutive cities \eqn{i} and \eqn{j}, such that \deqn{d(i,k) + d(k,j) - d(i,j)} is minimized. The algorithms stops when all cities are on the tour. The nearest insertion algorithm chooses city \eqn{k} in each step as the city which is \emph{nearest} to a city on the tour. For farthest insertion, the city \eqn{k} is chosen in each step as the city which is \emph{farthest} to any city on the tour. Cheapest insertion chooses the city \eqn{k} such that the cost of inserting the new city (i.e., the increase in the tour's length) is minimal. Arbitrary insertion chooses the city \eqn{k} randomly from all cities not yet on the tour. Nearest and cheapest insertion tries to build the tour using cities which fit well into the partial tour constructed so far. The idea behind behind farthest insertion is to link cities far away into the tour fist to establish an outline of the whole tour early. Additional control options: \itemize{ \item "start" index of the first city (default: a random city). } \item "nn", "repetitive_nn" Nearest neighbor and repetitive nearest neighbor algorithms for symmetric and asymmetric TSPs (Rosenkrantz et al. 1977). The algorithm starts with a tour containing a random city. Then the algorithm always adds to the last city on the tour the nearest not yet visited city. The algorithm stops when all cities are on the tour. Repetitive nearest neighbor constructs a nearest neighbor tour for each city as the starting point and returns the shortest tour found. Additional control options: \itemize{ \item "start" index of the first city (default: a random city). } \item "two_opt" Two edge exchange improvement procedure (Croes 1958). This is a tour refinement procedure which systematically exchanges two edges in the graph represented by the distance matrix till no improvements are possible. Exchanging two edges is equal to reversing part of the tour. The resulting tour is called \emph{2-optimal.} This method can be applied to tours created by other methods or used as its own method. In this case improvement starts with a random tour. Additional control options: \itemize{ \item "tour" an existing tour which should be improved. If no tour is given, a random tour is used. \item "two_opt_repetitions" number of times to try two_opt with a different initial random tour (default: 1). } \item "concorde" Concorde algorithm (Applegate et al. 2001). Concorde is an advanced exact TSP solver for \emph{only symmetric} TSPs based on branch-and-cut. The program is not included in this package and has to be obtained and installed separately. Additional control options: \itemize{ \item "exe" a character string containing the path to the executable (see \link{Concorde}). \item "clo" a character string containing command line options for Concorde, e.g., \code{control = list(clo = "-B -v")}. See \code{\link[=concorde_help]{concorde_help()}} on how to obtain a complete list of available command line options. \item "precision" an integer which controls the number of decimal places used for the internal representation of distances in Concorde. The values given in \code{x} are multiplied by \eqn{10^{precision}} before being passed on to Concorde. Note that therefore the results produced by Concorde (especially lower and upper bounds) need to be divided by \eqn{10^{precision}} (i.e., the decimal point has to be shifted \code{precision} placed to the left). The interface to Concorde uses \code{\link[=write_TSPLIB]{write_TSPLIB()}}. } \item "linkern" Concorde's Chained Lin-Kernighan heuristic (Applegate et al. 2003). The Lin-Kernighan (Lin and Kernighan 1973) heuristic uses variable \eqn{k} edge exchanges to improve an initial tour. The program is not included in this package and has to be obtained and installed separately (see \link{Concorde}). Additional control options: see Concorde above. } \strong{Treatment of \code{NA}s and infinite values in \code{x}} \link{TSP} and \link{ATSP} contain distances and \code{NA}s are not allowed. \code{Inf} is allowed and can be used to model the missing edges in incomplete graphs (i.e., the distance between the two objects is infinite). Internally, \code{Inf} is replaced by a large value given by \eqn{max(x) + 2 range(x)}. Note that the solution might still place the two objects next to each other (e.g., if \code{x} contains several unconnected subgraphs) which results in a path length of \code{Inf}. \strong{Parallel execution support} All heuristics can be used with the control arguments \code{repetitions} (uses the best from that many repetitions with random starts) and \code{two_opt} (a logical indicating if two_opt refinement should be performed). If several repetitions are done (this includes method \code{"repetitive_nn"}) then \pkg{foreach} is used so they can be performed in parallel on multiple cores/machines. To enable parallel execution an appropriate parallel backend needs to be registered (e.g., load \pkg{doParallel} and register it with \code{\link[doParallel:registerDoParallel]{doParallel::registerDoParallel()}}). \strong{Solving ATSP and ETSP} Some solvers (including Concorde) cannot directly solve \link{ATSP} directly. \code{ATSP} can be reformulated as larger \code{TSP} and solved this way. For convenience, \code{solve_TSP()} has an extra argument \code{as_TSP} which can be set to \code{TRUE} to automatically solve the \code{ATSP} reformulated as a \code{TSP} (see \code{\link[=reformulate_ATSP_as_TSP]{reformulate_ATSP_as_TSP()}}). Only methods "concorde" and "linkern" can solve \link{ETSP}s directly. For all other methods, ETSPs are currently converted into TSPs by creating a distance matrix and then solved. } \examples{ ## solve a simple Euclidean TSP (using the default method) etsp <- ETSP(data.frame(x = runif(20), y = runif(20))) tour <- solve_TSP(etsp) tour tour_length(tour) plot(etsp, tour) ## compare methods data("USCA50") USCA50 methods <- c("identity", "random", "nearest_insertion", "cheapest_insertion", "farthest_insertion", "arbitrary_insertion", "nn", "repetitive_nn", "two_opt") ## calculate tours tours <- lapply(methods, FUN = function(m) solve_TSP(USCA50, method = m)) names(tours) <- methods ## use the external solver which has to be installed separately \dontrun{ tours$concorde <- solve_TSP(USCA50, method = "concorde") tours$linkern <- solve_TSP(USCA50, method = "linkern") } ## register a parallel backend to perform repetitions in parallel \dontrun{ library(doParallel) registerDoParallel() } ## add some tours using repetition and two_opt refinements tours$'nn+two_opt' <- solve_TSP(USCA50, method="nn", two_opt=TRUE) tours$'nn+rep_10' <- solve_TSP(USCA50, method="nn", rep=10) tours$'nn+two_opt+rep_10' <- solve_TSP(USCA50, method="nn", two_opt=TRUE, rep=10) tours$'arbitrary_insertion+two_opt' <- solve_TSP(USCA50) ## show first tour tours[[1]] ## compare tour lengths opt <- 14497 # obtained by Concorde tour_lengths <- c(sort(sapply(tours, tour_length), decreasing = TRUE), optimal = opt) dotchart(tour_lengths/opt*100-100, xlab = "percent excess over optimum") } \references{ David Applegate, Robert Bixby, Vasek Chvatal, William Cook (2001): TSP cuts which do not conform to the template paradigm, Computational Combinatorial Optimization, M. Junger and D. Naddef (editors), Springer. D. Applegate, W. Cook and A. Rohe (2003): Chained Lin-Kernighan for Large Traveling Salesman Problems. \emph{INFORMS Journal on Computing, 15(1):82--92.} G.A. Croes (1958): A method for solving traveling-salesman problems. \emph{Operations Research, 6(6):791--812.} S. Lin and B. Kernighan (1973): An effective heuristic algorithm for the traveling-salesman problem. \emph{Operations Research, 21(2): 498--516.} D.J. Rosenkrantz, R. E. Stearns, and Philip M. Lewis II (1977): An analysis of several heuristics for the traveling salesman problem. \emph{SIAM Journal on Computing, 6(3):563--581.} } \seealso{ Other TSP: \code{\link{ATSP}()}, \code{\link{Concorde}}, \code{\link{ETSP}()}, \code{\link{TSPLIB}}, \code{\link{TSP}()}, \code{\link{insert_dummy}()}, \code{\link{reformulate_ATSP_as_TSP}()} Other TOUR: \code{\link{TOUR}()}, \code{\link{cut_tour}()}, \code{\link{tour_length}()} } \author{ Michael Hahsler } \concept{TOUR} \concept{TSP} \keyword{optimize} TSP/man/ETSP.Rd0000644000175000017500000000454314204735111012673 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ETSP.R \name{ETSP} \alias{ETSP} \alias{as.ETSP} \alias{as.ETSP.matrix} \alias{as.ETSP.data.frame} \alias{as.TSP.ETSP} \alias{as.matrix.ETSP} \alias{print.ETSP} \alias{n_of_cities.ETSP} \alias{labels.ETSP} \alias{image.ETSP} \alias{plot.ETSP} \title{Class ETSP -- Euclidean traveling salesperson problem} \usage{ ETSP(x, labels = NULL) as.ETSP(x) \method{as.ETSP}{matrix}(x) \method{as.ETSP}{data.frame}(x) \method{as.TSP}{ETSP}(x) \method{as.matrix}{ETSP}(x, ...) \method{print}{ETSP}(x, ...) \method{n_of_cities}{ETSP}(x) \method{labels}{ETSP}(object, ...) \method{image}{ETSP}(x, order, col = gray.colors(64), ...) \method{plot}{ETSP}(x, y = NULL, tour = NULL, tour_lty = 2, tour_col = 1, ...) } \arguments{ \item{x, object}{an object (data.frame or matrix) to be converted into a \code{ETSP} or, for the methods, an object of class \code{ETSP}.} \item{labels}{optional city labels. If not given, labels are taken from \code{x}.} \item{...}{further arguments are passed on.} \item{order}{order of cities for the image as an integer vector or an object of class \link{TOUR}.} \item{col}{color scheme for image.} \item{tour, y}{a tour to be visualized.} \item{tour_lty, tour_col}{line type and color for tour.} } \value{ \itemize{ \item \code{ETSP()} returns \code{x} as an object of class \code{ETSP}. \item \code{n_of_cities()} returns the number of cities in \code{x}. \item \code{labels()} returns a vector with the names of the cities in \code{x}. } } \description{ Constructor to create an instance of a Euclidean traveling salesperson problem (TSP) represented by city coordinates and some auxiliary methods. } \details{ Objects of class \code{ETSP} are internally represented as a \code{matrix} objects (use \code{as.matrix()} to get the \code{matrix} object). } \examples{ x <- data.frame(x = runif(20), y = runif(20), row.names = LETTERS[1:20]) ## create a TSP etsp <- ETSP(x) etsp ## use some methods n_of_cities(etsp) labels(etsp) ## plot ETSP and solution tour <- solve_TSP(etsp) tour plot(etsp, tour, tour_col = "red") } \seealso{ Other TSP: \code{\link{ATSP}()}, \code{\link{Concorde}}, \code{\link{TSPLIB}}, \code{\link{TSP}()}, \code{\link{insert_dummy}()}, \code{\link{reformulate_ATSP_as_TSP}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TSP} \keyword{classes} TSP/man/TSPLIB.Rd0000644000175000017500000000632014204735111013110 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/TSPLIB.R \name{TSPLIB} \alias{TSPLIB} \alias{read_TSPLIB} \alias{write_TSPLIB} \alias{write_TSPLIB.TSP} \alias{write_TSPLIB.ATSP} \alias{write_TSPLIB.ETSP} \title{Read and write TSPLIB files} \usage{ read_TSPLIB(file, precision = 0) write_TSPLIB(x, file, precision = 6, inf = NULL, neg_inf = NULL) \method{write_TSPLIB}{TSP}(x, file, precision = 6, inf = NULL, neg_inf = NULL) \method{write_TSPLIB}{ATSP}(x, file, precision = 6, inf = NULL, neg_inf = NULL) \method{write_TSPLIB}{ETSP}(x, file, precision = 6, inf = NULL, neg_inf = NULL) } \arguments{ \item{file}{file name or a \link{connection}.} \item{precision}{controls the number of decimal places used to represent distances (see details). If \code{x} already is \code{integer}, this argument is ignored and \code{x} is used as is.} \item{x}{an object with a TSP problem. \code{NA}s are not allowed.} \item{inf}{replacement value for \code{Inf} (TSPLIB format cannot handle \code{Inf}). If \code{inf} is \code{NULL}, a large value of \eqn{max(x) + 2 range(x)} (ignoring infinite entries) is used.} \item{neg_inf}{replacement value for \code{-Inf}. If no value is specified, a small value of \eqn{min(x) - 2 range(x)} (ignoring infinite entries) is used.} } \value{ returns an object of class \code{TSP} or \code{ATSP}. } \description{ Reads and writes TSPLIB format files. TSPLIB files can be used by most TSP solvers. Sample instances for the TSP in TSPLIB format are available on the TSPLIB homepage (see references). } \details{ In the TSPLIB format distances are represented by integer values. Therefore, if \code{x} contains \code{double} values (which is normal in R) the values given in \code{x} are multiplied by \eqn{10^{precision}} before coercion to \code{integer}. Note that therefore all results produced by programs using the TSPLIB file as input need to be divided by \eqn{10^{precision}} (i.e., the decimal point has to be shifted \code{precision} placed to the left). Currently only the following \code{EDGE_WEIGHT_TYPE}s are implemented: \code{EXPLICIT}, \code{EUC_2D} and \code{EUC_3D}. } \examples{ ## Drilling problem from TSP drill <- read_TSPLIB(system.file("examples/d493.tsp", package = "TSP")) drill tour <- solve_TSP(drill, method = "nn", two_opt = TRUE) tour plot(drill, tour, cex=.6, col = "red", pch= 3, main = "TSPLIB: d493") ## Write and read data in TSPLIB format x <- data.frame(x=runif(5), y=runif(5)) ## create TSP, ATSP and ETSP (2D) tsp <- TSP(dist(x)) atsp <- ATSP(dist(x)) etsp <- ETSP(x[,1:2]) write_TSPLIB(tsp, file="example.tsp") #file.show("example.tsp") r <- read_TSPLIB("example.tsp") r write_TSPLIB(atsp, file="example.tsp") #file.show("example.tsp") r <- read_TSPLIB("example.tsp") r write_TSPLIB(etsp, file="example.tsp") #file.show("example.tsp") r <- read_TSPLIB("example.tsp") r ## clean up unlink("example.tsp") } \references{ TSPLIB home page, \url{http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/} } \seealso{ Other TSP: \code{\link{ATSP}()}, \code{\link{Concorde}}, \code{\link{ETSP}()}, \code{\link{TSP}()}, \code{\link{insert_dummy}()}, \code{\link{reformulate_ATSP_as_TSP}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TSP} \keyword{file} TSP/man/ATSP.Rd0000644000175000017500000000433314204735111012664 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ATSP.R \name{ATSP} \alias{ATSP} \alias{as.ATSP} \alias{as.ATSP.matrix} \alias{as.ATSP.dist} \alias{print.ATSP} \alias{n_of_cities.ATSP} \alias{labels.ATSP} \alias{image.ATSP} \alias{as.matrix.ATSP} \title{Class ATSP -- Asymmetric traveling salesperson problem} \usage{ ATSP(x, labels = NULL, method = NULL) as.ATSP(x) \method{as.ATSP}{matrix}(x) \method{as.ATSP}{dist}(x) \method{print}{ATSP}(x, ...) \method{n_of_cities}{ATSP}(x) \method{labels}{ATSP}(object, ...) \method{image}{ATSP}(x, order, col = gray.colors(64), ...) \method{as.matrix}{ATSP}(x, ...) } \arguments{ \item{x, object}{an object (a square matrix) to be converted into an \code{ATSP} or, for the methods, an object of class \code{ATSP}.} \item{labels}{optional city labels. If not given, labels are taken from \code{x}.} \item{method}{optional name of the distance metric.} \item{...}{further arguments are passed on.} \item{order}{order of cities as an integer vector or an object of class \code{TOUR}.} \item{col}{color scheme for image.} } \value{ \itemize{ \item \code{ATSP()} returns \code{x} as an object of class \code{ATSP}. \item \code{n_of_cities()} returns the number of cities in \code{x}. \item \code{labels()} returns a vector with the names of the cities in \code{x}. } } \description{ Constructor to create an instance of the asymmetric traveling salesperson problem (ATSP) and some auxiliary methods. } \details{ Objects of class \code{ATSP} are internally represented by a matrix (use \code{as.matrix()} to get just the matrix). ATSPs can be transformed into (larger) symmetric TSPs using \code{\link[=reformulate_ATSP_as_TSP]{reformulate_ATSP_as_TSP()}}. } \examples{ data <- matrix(runif(10^2), ncol = 10, dimnames = list(1:10, 1:10)) atsp <- ATSP(data) atsp ## use some methods n_of_cities(atsp) labels(atsp) ## calculate a tour tour <- solve_TSP(atsp, method = "nn") tour tour_length(tour) image(atsp, tour) } \seealso{ Other TSP: \code{\link{Concorde}}, \code{\link{ETSP}()}, \code{\link{TSPLIB}}, \code{\link{TSP}()}, \code{\link{insert_dummy}()}, \code{\link{reformulate_ATSP_as_TSP}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TSP} \keyword{classes} TSP/man/USCA.Rd0000644000175000017500000000403614204063625012654 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/USCA312.R \docType{data} \name{USCA} \alias{USCA} \alias{USCA312} \alias{USCA312_GPS} \alias{USCA50} \title{USCA312/USCA50 -- 312/50 cities in the US and Canada} \format{ \code{USCA312} and \code{USCA50} are objects of class \code{TSP}. \code{USCA312_GPS} is a data.frame with city name, long and lat. } \source{ John Burkardt, CITIES -- City Distance Datasets, Florida State University, Department of Scientific Computing } \description{ The \code{USCA312} dataset contains the distances between 312 cities in the US and Canada as an object of class \code{TSP}. \code{USCA50} is a subset of \code{USCA312} containing only the first 50 cities. } \details{ The \code{USCA312_GPS} dataset contains the location (long/lat) of the 312 cities. } \note{ We want to thank Roger Bivand for his help with plotting the map. } \examples{ data("USCA312") ## calculate a tour tour <- solve_TSP(USCA312) tour data("USCA312_GPS") head(USCA312_GPS) # The following examples requite the suggested package sp, maps, and maptools. # We run the example only if the packages are installed. if(require(sp) && require(maps) && require(maptools)) { library("sp") library("maps") library("maptools") data("USCA312_GPS") # create spatial coordinates and a basemap using WGS84 projection. USCA312_coords <- SpatialPointsDataFrame(cbind(USCA312_GPS$long, USCA312_GPS$lat), proj4string=CRS("+proj=longlat +datum=WGS84"), data = USCA312_GPS) USCA312_basemap <- map2SpatialLines(map("world", xlim=c(-166,-47), ylim=c(15,83), plot=FALSE), proj4string=CRS("+proj=longlat +datum=WGS84")) ## plot map plot(as(USCA312_coords, "Spatial"), axes=TRUE) plot(USCA312_basemap, add=TRUE, col = "gray") ## plot tour and add cities tour_line <- SpatialLines(list(Lines(list( Line(USCA312_coords[c(tour, tour[1]),])), ID="1"))) plot(tour_line, add=TRUE, col = "red") points(USCA312_coords, pch=3, cex=0.4, col="black") } } \author{ Michael Hahsler } \keyword{datasets} TSP/man/TSP.Rd0000644000175000017500000000430114204735111012556 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/TSP.R \name{TSP} \alias{TSP} \alias{as.TSP} \alias{as.TSP.dist} \alias{as.TSP.matrix} \alias{as.dist.TSP} \alias{print.TSP} \alias{n_of_cities} \alias{n_of_cities.TSP} \alias{labels.TSP} \alias{image.TSP} \title{Class TSP -- Symmetric traveling salesperson problem} \usage{ TSP(x, labels = NULL, method = NULL) as.TSP(x) \method{as.TSP}{dist}(x) \method{as.TSP}{matrix}(x) \method{as.dist}{TSP}(m, ...) \method{print}{TSP}(x, ...) n_of_cities(x) \method{n_of_cities}{TSP}(x) \method{labels}{TSP}(object, ...) \method{image}{TSP}(x, order, col = gray.colors(64), ...) } \arguments{ \item{x, object}{an object (currently \code{dist} or a symmetric matrix) to be converted into a \code{TSP} or, for the methods, an object of class \code{TSP}.} \item{labels}{optional city labels. If not given, labels are taken from \code{x}.} \item{method}{optional name of the distance metric. If \code{x} is a \code{dist} object, then the method is taken from that object.} \item{m}{a TSP object to be converted to a \link{dist} object.} \item{...}{further arguments are passed on.} \item{order}{order of cities for the image as an integer vector or an object of class \link{TOUR}.} \item{col}{color scheme for image.} } \value{ \itemize{ \item \code{TSP()} returns \code{x} as an object of class \code{TSP}. \item \code{n_of_cities()} returns the number of cities in \code{x}. \item \code{labels()} returns a vector with the names of the cities in \code{x}. } } \description{ Constructor to create an instance of a symmetric traveling salesperson problem (TSP) and some auxiliary methods. } \details{ Objects of class \code{TSP} are internally represented as \code{dist} objects (use \code{\link[=as.dist]{as.dist()}} to get the \code{dist} object). } \examples{ data("iris") d <- dist(iris[-5]) ## create a TSP tsp <- TSP(d) tsp ## use some methods n_of_cities(tsp) labels(tsp) image(tsp) } \seealso{ Other TSP: \code{\link{ATSP}()}, \code{\link{Concorde}}, \code{\link{ETSP}()}, \code{\link{TSPLIB}}, \code{\link{insert_dummy}()}, \code{\link{reformulate_ATSP_as_TSP}()}, \code{\link{solve_TSP}()} } \author{ Michael Hahsler } \concept{TSP} \keyword{classes} TSP/src/0000755000175000017500000000000014204773730011650 5ustar nileshnileshTSP/src/insertion_cost.c0000644000175000017500000000372212606077054015062 0ustar nileshnilesh#include #include #include "matrix_pos.h" /* * Calculate insertion cost for the insertion algorithms */ SEXP insertion_cost(SEXP R_matrix, SEXP R_order, SEXP R_k) { int n = INTEGER(GET_DIM(R_matrix))[0]; int length = LENGTH(R_order); int *order = INTEGER(R_order); int k = INTEGER(R_k)[0]-1; SEXP R_cost; PROTECT(R_cost = NEW_NUMERIC(length)); double link_add1, link_add2, link_remove; double *matrix = REAL(R_matrix); double *cost = REAL(R_cost); if (length == 1) { cost[0] = matrix[M_POS(n, order[0]-1, k)]; }else{ for (int i = 0; i < (length-1); i++) { link_add1 = matrix[M_POS(n, order[i]-1, k)]; link_add2 = matrix[M_POS(n, k, order[i+1]-1)]; link_remove = matrix[M_POS(n, order[i]-1, order[i+1]-1)]; //Rprintf("Links: %f %f %f\n", link_add1, link_add2, link_remove); // check for infinity if(link_add1 == R_NegInf || link_add2 == R_NegInf || link_remove == R_PosInf) cost[i] = R_NegInf; else if(link_add1 == R_PosInf || link_add2 == R_PosInf || link_remove == R_NegInf) cost[i] = R_PosInf; else cost[i] = link_add1 + link_add2 - link_remove; } link_add1 = matrix[M_POS(n, order[length-1]-1, k)]; link_add2 = matrix[M_POS(n, k, order[0]-1)]; link_remove = matrix[M_POS(n, order[length-1]-1, order[0]-1)]; // check for infinity if(link_add1 == R_PosInf || link_add2 == R_PosInf) cost[length-1] = R_PosInf; else if(link_remove == R_PosInf) cost[length-1] = R_NegInf; // removing a inf is very good else cost[length-1] = link_add1 + link_add2 - link_remove; } UNPROTECT(1); return R_cost; } TSP/src/tour_length.c0000644000175000017500000000514014204302267014337 0ustar nileshnilesh#include #include #include "matrix_pos.h" typedef enum {false = 0, true = 1} bool; /* * Calculate the tour length given a distance matrix and a permutation vector */ SEXP tour_length_dist(SEXP R_dist, SEXP R_order) { double tour_length = 0.0; SEXP R_tour_length; double segment; bool posinf = false; bool neginf = false; int *order = INTEGER(R_order); int n = INTEGER(getAttrib(R_dist, install("Size")))[0]; double *dist = REAL(R_dist); if (n != LENGTH(R_order)) error("length of distance matrix and tour do not match"); for (int i = 0; i < (n-1); i++) { segment = dist[LT_POS(n, order[i]-1, order[i+1]-1)]; // check Inf if (segment == R_PosInf) posinf = true; else if (segment == R_NegInf) neginf = true; else tour_length += segment; } // close tour if (n > 1) { segment = dist[LT_POS(n, order[n-1]-1, order[0]-1)]; // check Inf if (segment == R_PosInf) posinf = true; else if (segment == R_NegInf) neginf = true; else tour_length += segment; // inf if (posinf && neginf) tour_length = NA_REAL; else if (posinf) tour_length = R_PosInf; else if (neginf) tour_length = R_NegInf; } // create R object PROTECT(R_tour_length = NEW_NUMERIC(1)); REAL(R_tour_length)[0] = tour_length; UNPROTECT(1); return R_tour_length; } /* * Calculate tour length form a matrix */ SEXP tour_length_matrix(SEXP R_matrix, SEXP R_order) { double tour_length = 0.0; SEXP R_tour_length; double segment; bool posinf = false; bool neginf = false; int n = INTEGER(GET_DIM(R_matrix))[0]; double *matrix = REAL(R_matrix); int *order = INTEGER(R_order); if (n != LENGTH(R_order)) error("length of distance matrix and tour do not match"); for (int i = 0; i < (n-1); i++) { segment = matrix[M_POS(n, order[i]-1, order[i+1]-1)]; // check inf first if (segment == R_PosInf) posinf = true; else if (segment == R_NegInf) neginf = true; else tour_length += segment; } // close tour segment = matrix[M_POS(n, order[n-1]-1, order[0]-1)]; // check inf first if (segment == R_PosInf) posinf = true; else if (segment == R_NegInf) neginf = true; else tour_length += segment; // inf if (posinf && neginf) tour_length = NA_REAL; else if (posinf) tour_length = R_PosInf; else if (neginf) tour_length = R_NegInf; PROTECT(R_tour_length = NEW_NUMERIC(1)); REAL(R_tour_length)[0] = tour_length; UNPROTECT(1); return R_tour_length; } TSP/src/dll.c0000644000175000017500000000237113053150677012572 0ustar nileshnilesh #include #include #include extern SEXP two_opt(SEXP R_matrix, SEXP R_t); extern SEXP two_opt_sym(SEXP R_matrix, SEXP R_t); extern SEXP insertion_cost(SEXP R_matrix, SEXP R_order, SEXP R_k); extern SEXP tour_length_dist(SEXP R_dist, SEXP R_order); extern SEXP tour_length_matrix(SEXP R_matrix, SEXP R_order); void R_init_TSP(DllInfo *dll) { const R_CallMethodDef CallEntries[] = { {"R_two_opt", (DL_FUNC) two_opt, 2}, {"R_two_opt_sym", (DL_FUNC) two_opt_sym, 2}, {"R_insertion_cost", (DL_FUNC) insertion_cost, 3}, {"R_tour_length_dist", (DL_FUNC) tour_length_dist, 2}, {"R_tour_length_matrix", (DL_FUNC) tour_length_matrix, 2}, {NULL, NULL, 0} }; R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); R_RegisterCCallable("arules", "R_two_opt", (DL_FUNC) two_opt); R_RegisterCCallable("arules", "R_two_opt_sym", (DL_FUNC) two_opt_sym); R_RegisterCCallable("arules", "R_insertion_cost", (DL_FUNC) insertion_cost); R_RegisterCCallable("arules", "R_tour_length_dist", (DL_FUNC) tour_length_dist); R_RegisterCCallable("arules", "R_tour_length_matrix", (DL_FUNC) tour_length_matrix); } TSP/src/two_opt.c0000644000175000017500000001271414204302070013475 0ustar nileshnilesh #include #include #include "matrix_pos.h" //#define TWOOPT_DEBUG 1 // only improvements >EPSILON are used #define EPSILON 1.0e-7 /* 2-opt * * R_matrix ... matrix with distances * R_t .. initial tour * * inf and NA is not allowed! * */ // this implementation also works for asymetric TSPs SEXP two_opt(SEXP R_matrix, SEXP R_t) { int i, j, n; int swaps; int swap1, swap2; double imp, imp_tmp, imp_best; int tmp; double *matrix = REAL(R_matrix); // make a copy of the initial tour (Note: t is 1-based) int *t = INTEGER(R_t = PROTECT(duplicate(R_t))); // check n = INTEGER(GET_DIM(R_matrix))[0]; if (LENGTH(R_t) != n) error("tour has invalid length"); for (i = 0; i < n; i++) if (t[i] < 1 || t[i] > n) error("tour contains invalid values"); // main loop do{ swaps = 0; swap1 = swap2 = 0; imp_best = 0.0; // find the swap with largest improvement // i is first city to swap (0-based index) for (i = 1; i < n-1; i++){ imp = 0.0; // add gains for getting to the first city (i-1 -> i) imp += matrix[M_POS(n, t[i-1]-1, t[i]-1)]; // gains by adding one more city to the swap imp += matrix[M_POS(n, t[i]-1, t[i+1]-1)]; // j is the last city to swap (0-based index) for (j = i+1; j < n-1; j++){ // gains by adding one more city to the swap imp += matrix[M_POS(n, t[j]-1, t[j+1]-1)]; // increased cost for one more city imp -= matrix[M_POS(n, t[j]-1, t[j-1]-1)]; // include gains from closing the tour (i-1 -> j and i -> j+1) imp_tmp = imp - matrix[M_POS(n, t[i-1]-1, t[j]-1)] - matrix[M_POS(n, t[i]-1, t[j+1]-1)]; if(imp_tmp > EPSILON) { swaps++; if(imp_tmp > imp_best) { imp_best = imp_tmp; swap1 = i; swap2 = j; } } } // check the last city (needs distance to first city) j = n-1; // increased cost for one more city imp -= matrix[M_POS(n, t[j]-1, t[j-1]-1)]; // include gains from closing the tour (this time with first city) imp_tmp = imp - matrix[M_POS(n, t[i-1]-1, t[j]-1)] - matrix[M_POS(n, t[i]-1, t[0]-1)]; // check improvement if(imp_tmp > EPSILON) { swaps++; if(imp_tmp > imp_best) { imp_best = imp_tmp; swap1 = i; swap2 = j; } } } #ifdef TWOOPT_DEBUG printf("two_opt: %d possible swaps\n", swaps); #endif // reverse sub-tour if(swaps > 0){ #ifdef TWOOPT_DEBUG printf("two_opt: best improvement is %f\n", imp_best); printf("two_opt: reversing cities %d to %d\n", swap1+1, swap2+1); #endif for(i = 0; i < (swap2-swap1+1)/2; i++) { // +1 for even length tmp = t[swap1+i]; t[swap1+i] = t[swap2-i]; t[swap2-i] = tmp; } } R_CheckUserInterrupt(); }while (swaps > 0); UNPROTECT(1); return R_t; } // this implementation only works for symmetric TSPs // Note: code is slightly faster than the code above but is not used SEXP two_opt_sym(SEXP R_matrix, SEXP R_t) { int i, j, n; int swaps; int swap1, swap2; double e1, e2, e1_swap, e2_swap; double imp, cur_imp; int tmp; double *matrix = REAL(R_matrix); // make a copy of the initial tour int *t = INTEGER(R_t = PROTECT(duplicate(R_t))); // check n = INTEGER(GET_DIM(R_matrix))[0]; if (LENGTH(R_t) != n) error("tour has invalid length"); for (i = 0; i < n; i++) { if (t[i] < 1 || t[i] > n) error("tour contains invalid values"); } // main loop do{ swaps = 0; swap1 = swap2 = 0; imp = 0.0; // find the swap with largest improvement (works only for symetric TSPs) for (i = 0; i < (n-2); i++){ e1 = matrix[M_POS(n, t[i]-1, t[i+1]-1)]; for (j = (i+1); j < (n-1); j++){ e2 = matrix[M_POS(n, t[j]-1, t[j+1]-1)]; e1_swap = matrix[M_POS(n, t[i]-1, t[j]-1)]; e2_swap = matrix[M_POS(n, t[i+1]-1, t[j+1]-1)]; /* // handle pos inf (now handled in R code) if (e1_swap == R_PosInf || e2_swap == R_PosInf) cur_imp = 0; else if (e1 == R_PosInf || e2 == R_PosInf) cur_imp = R_PosInf; else */ cur_imp = (e1+e2) - (e1_swap+e2_swap); if(cur_imp > 0) { swaps++; if(cur_imp > imp) { imp = cur_imp; swap1 = i+1; swap2 = j; } } } // check the last city (needs distance to first city) e2 = matrix[M_POS(n, t[n-1]-1, t[0]-1)]; e1_swap = matrix[M_POS(n, t[i]-1, t[n-1]-1)]; e2_swap = matrix[M_POS(n, t[i+1]-1, t[0]-1)]; cur_imp = (e1+e2) - (e1_swap+e2_swap); // check improvement if(cur_imp > 0) { swaps++; if(cur_imp > imp) { imp = cur_imp; swap1 = i+1; swap2 = n-1; } } } #ifdef TWOOPT_DEBUG printf("two_opt: %d possible swaps\n", swaps); #endif // reverse sub-tour if(swaps > 0){ #ifdef TWOOPT_DEBUG printf("two_opt: best improvement is %f\n", imp); printf("two_opt: swapping %d to %d\n", swap1, swap2); #endif for(i = 0; i < (swap2-swap1+1)/2; i++) { // +1 for even length tmp = t[swap1+i]; t[swap1+i] = t[swap2-i]; t[swap2-i] = tmp; } } R_CheckUserInterrupt(); }while (swaps >0); UNPROTECT(1); return R_t; } TSP/src/matrix_pos.h0000644000175000017500000000110614204301667014200 0ustar nileshnilesh /* LT_POS to access a lower triangle matrix by C. Buchta * modified by M. Hahsler * n ... number of rows/columns * i,j ... column and row index [0, (n-1)] * * Note: does not cover the case i==j! * * long vectors: we make now sure that the index id R_xlen_t */ #ifndef LT_POS #define LT_POS(n, i, j) \ (i)<(j) ? ((R_xlen_t)(n)*(i) - ((R_xlen_t)(i)+1)*(i)/2 + (j)-(i)) -1 \ : ((R_xlen_t)(n)*(j) - (((R_xlen_t)(j)+1))*(j)/2 + (i)-(j)) -1 #endif /* * access for matrix */ #ifndef M_POS #define M_POS(rows, i, j) \ (i) + (R_xlen_t)(j)*(rows) #endif TSP/vignettes/0000755000175000017500000000000014204773730013071 5ustar nileshnileshTSP/vignettes/overview.pdf0000644000175000017500000003513512606077054015441 0ustar nileshnilesh%PDF-1.4 %äüöß 2 0 obj <> stream xXn7 Wh"~έ@uv/y$ܑ<8Dԃ:#rcΞOѰw;bOȏlB99CB6TmMk m&{v=/.-?_p׏ qy\ 4)8|6$]̝0sR;'&Elތ0.,I yes9R˜^7꽭WI ݍ;UTz=:ŵvc+ܮlH_ 8"x4èԳLJ!̅m{=+ۋWg>MD7@6($4)',jB4P-Ym Ɉ0HyWxO 쭱(RFoQ GV%l1uA#-6نٝD`P @ CH$J EDE$P..)m]7m;V$a 3B>P492Q M9ثet Hцb.ZJ cJ ׽47d]nc0fŌ0ᤶבX5esPC/:8[(]W|(=Pr >U)v=U u{'WA1$Wݦs/5{c:49˚:|@qnZ\YLP!pprwkb4U MPZicNs2imh)(X $>Tɔ`򠧥II1h[48^x$f4fҟfV`~5aoGȫe)hf b].&&wF0I.VGTDB~],&ލ޿==DXB&)HR?D,5\_&jة4+1YWG;rӧmS ЮG6WMJ@̓*jf%L#߿P}x9'?s.l` endstream endobj 3 0 obj 1405 endobj 5 0 obj <> stream xW{P\gǾ𺰰OBKxIh$rv&MӇMjӇmcDZ>:uik?:mtԚ86ZM8ڎS9<~|;nt.&TrD ;gB$G%V >K8ǵo !*&%g6 IIWnI-_:.>3oK4=/F$ȴ\İ?$}_}<B2LHHLJ^6O1["ɠrssEE4MxcR ar\Ӝcv5ndݶ{7tjVDj)71F-.a7Vj.I2E*; BFe=w.;MȾ;ܕU4Ѽ*lݸyi\Sv*00\[?RZahH,r;x~ T JnLtNK%e١Kôz&kj9DŽY<[j]lUMC0_Ö?ѩspKG*-N6S51{坞MXdR, &ڭ<eAFR^e.d $en~= Wws}}Ǖ=}%{0 u䨾\9 *:~̰gp-+$|:c`G$`4R^x rrgM׆i7;褱]gv4lS~ʖ'w?jPݸr8Y$OW&0yWr%jΒ>ԑg\_jvV>th^dw߯ :Rg0L@}7_~Kרϳ<)P6j@r}WG\mKepGtPw4XX|#6OuYAIԱ,7tm\B?/@r YުU.lbR*z|&KTލ兎#U<6\)k&IjfSRf?f5~pC elvV<٬&>?ysر__|Qsb@QO[Q@)76כRy џP-з ;E-7C=23yf_'C qjm5b 7#KA Z?ݱ]80AOMoӶ:0X BL…ɖxw:@3nql'`ǁpY_uGw遣u+];<{9 qwTQnxx`NUwxQrU.t;OGFN7ҕ}[_fc=ZOFovgkOo۴.22}橡=*O;4}Ɵ_*.T궙J֦hћÑdomW;s- \-ȕs5aY(hX*ϔNd,)gie⅔ۏNIiaM/xkĕ:zɧ>E=&5 QXsTba/= *n 5Lx!L{Hd9!]\BV+@AV ނFWKΒ?O N6nbٗvU +NPj6EO;K೅kSȡ URF5:qNDF'9FgFHhB qZєdӻ4tF H.F''K$Ͷht9:4:dh T3Fg[ }5"uėE,HQ^ScWzu9INr,<尕{`,Q<7!^3mеj8s Js!9%gX*zMJbl^q1:_:1G1q>6:%bT{RXψљ`@dF#6‚u"-ej~hG蜼FEq*̋ai%qdI'xUI,"1[ckv Uk:K-5Z ~U$$Jĺf1i̓c#!" ]Α K-ljGu\^KܤG ͽqhݐ*עy_X}O}@g,E/j(B#d \@ՊB_$QW j3_՞nuTPN:'6|ԯðj{j4.n,xiУ/崈uJݡqܹ 0AyʈaZ~aHZUzSj~cQZi+jU}!5bPQ Yj=I MiϜ_ǦxD_a[ endstream endobj 6 0 obj 2838 endobj 7 0 obj <> endobj 8 0 obj <> stream x]Mn0Fta$BJIXG=1CTeȂ3Ro/Eul?ǯ~45̢maoހJDۛo34.CmL3 ,ⷰ7~c;^!_| W(갮o}v2sB<5 uՆ~^֡/8 5|ceR"+<H.t!BTmN7f'%8UȚ~q~gNĚȏ;:`̉3'33Ur{*ɼGf@f+O)Z#> endobj 10 0 obj <> stream xX{l[y?^DJLR},J,JSÒ%YOK-˖H銤Wڎޒp֤1c6n;Y j"@2 qץ: 4@lj9ȥG *H(D"f#N""7.Sxa_+BHbP@({@aUoFRqplѮ.G|0 ,hE9B%SB]=sAT5<>`SafTl޲u))-CNQٯcTrCBy(DEJΡ5rSRTi)X`.sGx޼E8BBmo v5cX v Ys!瘁! } X&єZ[2c0*j *,mݴ;&Z渶ZF_#$!3Mت[f2xdok/Ճ] ]!6b@EvzMnrIIyyJѤ0z;DLΚm v Nmx=dVK \G{-ӥyj~`zlpf7Fo2.f@mk Z| Q)B29;!23:YZ{K33 ^eo˶hm|h9:r0#(dq sp8zABЯNVF{Y[V\П.kfI$&}o uWhG^粫fjR \m2jU!̔?q t'Z PXisR md]G*2!dKmKGCU}yKho)!ql[BQm5= Ivj׿\R!!!=Y?}vK|_QdrQ]h EEOqɘi!X y ;dFs#B <ꛄ?On+)leb)ޭr]qaD: b]`.'|]2}}'x6wz~{\$Zb՜yd4hUx&Y b;hڤKUҜ-l={N=J|lqx>fR ?_s` )(SSSSb`d*R゚TXmmcqI3l݇ Ӈ'GvZg܇jqy;shٽVg2ꪕ<@| +y <}~ JꚙEU=L+ud{teuAcWC]UR5RYhm=2J5skcRHb઼RHU6l̨b="-XXi6ğP{8q( @0 Lt(t/LZ?00k/Mb)^=|+znV{ ݬרM c.8yb]ҢJlޚ Y*BW3x z_2!?JB^$dO|Stwn֧!;Ss*ҥJqjrT%tIIIB{rK޽~b)CgiVzBsvu+Ŋ#nNCq$A:{:B++ n߇F%>>1άBfeCa nzłꝬ85wExm4 Zo{bf70R ˽y}/]WUC1K 1mni1یscsM2pNJ:ڨ쮙3gN?P$24 kt _=?qJ٥M x|kn69%o__k0厠No[Yͬ[ Қ&)|0-P[pcn5؆.%.!(\~(ŝQ U*jJeիOssr15%v"߾/tr, 5j]r~8mC9VKntO96]XܰJz6 (~XS1]sa_B+@³S !ZF q k_yM1*TUq ghBɱ 8TX {|tApVSΣUcZVgXGeVhD(fcJ4y3aV! S ]u fg5|H^~a9c.8qRy.sL0L(]^J8tErFcJWlu9GgcXc+~IWp ke)2?10ӷcQg 8 3ǔϝJXOIz.t[NȲ4O-KG|P,j/cؠ<JGcTw,{Ԥlq߬<Omc-YnG`Q}k xn'0΃U:`2?M(2pQlL71FEw +blɐk`|. ^BK{]xu|h vfa7n.Ht@)ƓA6(ÊnFK1,(ScN>ЍP4 \O`Nr,PhM\ \{06Ӱ1)]$>1"wv!jd) @}g#[f l+ uh@#tiE>4${k̫phj^??9 kC03L.jUx~ '1R}TaT$1 CpRb4h&Q< =҈[e^]>CܷJM,Zʛmyd**VF}*1VyC,3,#`)UdVBcSȬcj$XHyK\ ZU_$\#ʺlQX[2Uj@գj }fG [h]]Ua; XQbqA+&Jf{iYeb?wǨY¿|}L#*tE*""6 {aeݴhmmeS^D9o endstream endobj 11 0 obj 3916 endobj 12 0 obj <> endobj 13 0 obj <> stream x]n0 3SLJ2b/_?E $ǔ{xOSQJu?=!O1P.'q|3?o3=,/vv0d1o/ endstream endobj 14 0 obj <> endobj 15 0 obj <> stream xYmlS~Ͻ0|$8!_7`F c8N}+]@*M]UNn:NӴiu?6i۟iժ c*sI t{ss}sX֠΀ 4jx NtN `/J*377;|`R'LĎ'es#'yn񝦣&l'Y;?Q8Ym-O/xy`3G>vf֖ddXkjm Hs .I/*Z |@{F.M"K̺ML>BXp7܁YxnJ/ޚHck#Eކ(6xVj`=?Р?lBO-xУ}6`=j&S.ܶ?|}>>~xb>gKHa5uuw4 1Ct0p太.ɽCҠ{F2WgΌJ ?DɢE);]hP]+NU}{%ɣI/+q5c\>Xq+IeQS LfY_[ >{Y0MrkH;j _{3-X<+%bmI[_qlB㊮/%E  !wI}StRR﬚8}DU]؎,|Ѱ77(+FQ2/#^6aip ywC]k5[9c}Rvy6ѾL-P|;0n7Sn%^,@/L{`tVU].L'N.\"_^M&4ezNb]L5b8%ǓFFZCG~kS_v?kv%|Ό`O!/m [|nߨ[{k^~SeVs>`$${ Γb<~gϊ"ٞx#B/I֓m+0k*X0f2]fE@>e耭+K6zV`3*^]X HZ#d ɈNISK^XfrM`yc3rR 4H1#}c r+^zY`1VeY`9a#g&Jh_P`7VeT`t)O l5ei_cKײ\n 2#ı 9Y1W3w83? y0979^eyL`-iYW1-oF-#ฎuT`\a̱e}S`KӋOML`g.SscSh3u2;#:VoWV`C[3~I`*0rl͍̎Yюyǰrh%.c p9:Ƶsl#ϛxE`V^KN+:%9o79.qmכ,0zJ`P0&t舴k_cti@~B5:/q=υH>Wp>)v;h1 񄖤ݝݛ{6Jㇴb L!#ީtpRFTL*S񜎖J)-S=Ow;Vgx&{ -W“^mo r0zޞhO280tb9T:ABg"k4?9GT)(U8n iB?s.$^u(@/w8$"vH *dp۱0EC8p{j6Z8iTKgK4V%-^/W[1^bPށ׶exKl,VT cOHbi{xyR,*2|X[w1ЉPZYBo[cl`wB7lvac_Rc zg[A-S,\vgJ5VFT3=O%9SJpkm>K!Ws2~g Z,t1i8;r"x,-gFlv}>:̣]+wtUw-I7Lf\QYׯTQuiz;uN?08NS8KbbķY?-V4F?3쩬Q-}9*=ا*WUˇ;뻒Q%]e2)CJң< (-+/~ ߳ZWYNWIh Za??X?t1Zf3̜KG)1TlfWL7qI{ |)FRNFYcaڍ7?!Bc;/KgŞiܧi4Jf, endstream endobj 16 0 obj 2613 endobj 17 0 obj <> endobj 18 0 obj <> stream x]n E|tI$Rʒ}n>EaߗGJ]0ftOY{pxJXXj9&Pc!G33xo-Ny Bȫ`>Wc`0Eu33/l]Nt[8Kp-`1ejTQZmkJew0Of4RJOsl7IS.{\D)19qyIL_#/{7ݰϟ5`ZWgSKb xK endstream endobj 19 0 obj <> endobj 20 0 obj << /F1 9 0 R /F2 14 0 R /F3 19 0 R >> endobj 21 0 obj <> endobj 1 0 obj <>/Contents 2 0 R>> endobj 4 0 obj <> endobj 22 0 obj <> endobj 23 0 obj < /Producer /CreationDate(D:20061124105806+01'00')>> endobj xref 0 24 0000000000 65535 f 0000013835 00000 n 0000000019 00000 n 0000001495 00000 n 0000013978 00000 n 0000001516 00000 n 0000004438 00000 n 0000004459 00000 n 0000004648 00000 n 0000005074 00000 n 0000005347 00000 n 0000009349 00000 n 0000009371 00000 n 0000009561 00000 n 0000009987 00000 n 0000010263 00000 n 0000012962 00000 n 0000012984 00000 n 0000013178 00000 n 0000013522 00000 n 0000013726 00000 n 0000013781 00000 n 0000014077 00000 n 0000014125 00000 n trailer < <49C1E7F026D6A67060FABDE68E754300> ] >> startxref 14304 %%EOF TSP/vignettes/overview.odg0000644000175000017500000003027712606077054015443 0ustar nileshnileshPKAOx5.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKAOx5Configurations2/statusbar/PKAOx5'Configurations2/accelerator/current.xmlPKPKAOx5Configurations2/floater/PKAOx5Configurations2/popupmenu/PKAOx5Configurations2/progressbar/PKAOx5Configurations2/menubar/PKAOx5Configurations2/toolbar/PKAOx5Configurations2/images/Bitmaps/PKAOx5 content.xml\nߧm1BbK$] H& 3`$VGX,K퉓Ɖs\IyaGaYHk,ģ~̮_~R =rSo$Wf\[()XLLesoӽX\}3a0p5jl3`?d蟬.~`)XSG ߋ,6_!CߏHIŵ@ eN(ހ^aRUmM )>/ \Td[4ϹHnwrޢT5t08(-{ f4< DjGph,(zY߯W~h".] 2A [VlѵRR'6:s'ߔʕnhS_tMM eh߾5Ig*Y.*c X>˫[4X^*[,Y{s^H&>bNӞ.8Jʟ!8j7ʌ$mfm4= Y4?iWx:4_N6fdcsc' ]L}’]9Yz@ڲ.WîaW=~P:uqy;c N~vH=Z/__"44a$5mt1ރ(>w˅Qm8oG=fsJ}xE,4: ?tO!CGjۇξ%/S_J(A[8"I''("TtvQ..Sw-=u rV,2~AYjm,bq=`1b4$x{0( (# '3"<uI'Cgo!9o!d& !M3=>o4N;'Czq=!Bo3N3Ad@. f|W潸o}E͟\ݣ{I}y6^j_x囗w$͐LY㎙w)l@|Dۏ% 8"RҕI__RQ?V=^ȋ[zP&@uNjTݭWY'siiiON%'+'ɜÇIB, .钁&zYNaF'&*_8mFԥI? k(bnskrkzr?޴b#Omt4]C~FW/62U ltѝ7W3faKvC':1tbs[:* F90uI|YJѥά[2}gtWLIRj/׾AUpTN,LHW{0:S_T޻w5fI/H1ĤSOldV9hA MA™ R٭nach@#y(9be*xD,f;k L#0]zy%9]qz+gt[>xE!1bVUKhߎ ڕ*J VY~kw畦u_#}xxow9=l[|d EjrPRmmxC\ҘCyr92(rF؎#gőWN궢稜Yܴ> M-ٶ8T8Gu1m sxV`ƠM:UN[Q-NF'鳱lguChG|@:n~0mc()P- h) CB@PMCR}Lu8cC d hm3~LO8Mr#k`.ѳNwqZ'Y(tw%YX!4wjN8QVJ&a_ǫi-R>_ n;]n;BVk#q=kOViVZ8%ז#垡_ ڦ g۲f,u5Y,쇗:>7vu-ԛPK-<( LUPKAOx5 styles.xml\͎6)֏ev-hsAKDZ=$%xw݅ YsfęΘoȸ#<,Y6 ,vm0߾5 CU<&@8D$3@8V6shJpLW,%I)jrTzD=lbnJ r/ Kޖ, Y17C%/`P,B!C>S,M>͝ʲd?0ri)j_9W[$"rr&UDIަJIo dUSN2`s_{PS_wua>sUpWM].w@T+K9MJU)7R׵mҟ{N v,#B]c"w+c x{'t0EXl7ekEg `m9ۛ8ꎒO~mچm18x_rε2di1uL8Spfp%; cD+$YOCLh3wJg̦7WQ =bXro)XÒpA!iL e)ɌiV;lli"W@^ӈtm83/Je(f<>HlJR $ KdzUO4(# VfoV.:6|=R,biJ)~xOM'{4~-#ڒkKGJs*i=[F\\/j,6[ 4DpPǏ]S~ɑpu(EjURAToVI#u~%]Zʰ5X:uV$зv֞*=t NmW|n(Ag@ =ȤgqkpomK:~s+T}^hTqIiUT#˥rX`w&h6Lh 8* KDQ2"}6I,MZ/,:MG4 Fzm("D95 ;u>b~8D4cwϩ{1C40Iɨd6aD>+JL T>)r&DȻ"BjE"4BϫBjy/4N/ˌӎ}5f@ a9ۏJ8偿=XUOê#Zޱ lI"JQRՕE| A N5U; $,y1[DuOY= =Vjc5ִaNqe_G'lh˚DC%sh^uaQkEt7QsQU@m>_쩀0շk͔3RtZ^hpfT4Qre~.8ޕ_y8sn[)5Ho;;/Y"!r3iٌ|Ծ煭[:ұ_:Ko_:K~/}^~/~iY2є.Is{e֭ 06 3pՍ^,GWGЮ/ }|5ڽ09c]=7XWuXWuXW6Bc]}Zx|6RE(.rFgzї5y+/>8]g8FU%Fx> Zeˡ{Zf:QZDc?~mv. Uw9NrKPqupQ*:QI(ak追4\i>?"D-YLePk]Lܙ榕bֿL w|6 5l = ůu@R9xdr0&w B3 OpenOffice.org/2.0$Linux OpenOffice.org_project/680m5$Build-90732006-10-06T11:33:592006-11-24T10:58:02de-AT20PT1H18M25SPKAOx5Thumbnails/thumbnail.pngL PNG  IHDRFKҟ IDATx]?lDN,P;hw8,Ud]YQj-Pw1*CEJ @y#!BuA$`^hɂC[Wcx&ཻZe;;%9$:)Ł;c7|a۷3[ޢ˶y֤n6 ZtUqH %)?Ym2H 's&8;Q7 2MV;"Bp}c},GgRMwE${a].ѳ0!GKdY!i$l5za &d`ڍםkJ.-޳=ZYQo9j'z.|`*+  F7^\?;eZm.cU*7:DU: -'gܥRf%Vϯ;'$=1p䱬/fy3O[Z^^sMӳw دeFEB74 | 1cL 9++LdUk̀I@`Ҁn$DDVF IJ(%G+ݰCtչ('kf?\N3`RـN7gzM(N6ɓKLq FD%9J!Y,ʿgZW XㅙDV~{w_ݱqhO޴]E{R6gPUhh7H[LUgS;&¦-&as^74$x/w$9Ym49$w qN=PV,akn90W4 S=Z.t0$j3 [z SgjuM*| "si G$A&ʸO—~*Kiedsvi-?Ne/kzu;_/94M@X;&(Doؕ4i>6~X dQZ4qK~P,k%x$ =.y!OL"|eQ/ܤҧ_rڕ|ǮLڊo~A%FoTZȿAoT{R@5X񇿓q&/}QuE;eÃZ6UqUP~ps.e+5>GK7gz p$::3fO޼#2f; (''I+~ϊu}Xp"=P$0 Yʈa(Av@ZhjuHKmZ(\I~mLS}31x}XJ4_lXu&Fa>FE!*[緈`5,\-~=e8Rq~]mu-,v$sb 4zS8B2ӔEgu2_;;WJxȡrT6^4Ƶ_tsٗdа\Y W+Z(R.2?6U "G  H7Om[Ƭ3]P^Tis@B%1 <>H셯@SG8\:q{6{errHP vCՏAJڣ'dts?2@?F8M yl12˞!'bH8P;QAꨔ#G˸'*TGEH5'cEO+t( ^e?V K|1ZG^s8VWYr4m@/x؆ &! a1lǝE  5^3~N/P87 /B 'bڼ(k= O@Co L~qy^@ Ѽnd_bY=pZN\G TQyTeX/^*%Ҽ[ݭכ_(L*\8$G|,K[ ]3sL&!:y!<H" 6~%ހ)+/VT'C5<߇B傤w^3RE@ xhX*L!\(t KA RFjJh/ j' o$9G 1ԈysmIENDB`PKQ L PKAOx5 settings.xmlZr8}߯HQ[[@@%L[`0ooR@,$9|H성恀.紺ۭ/+\<#.0e&u Ԡ_KߦcOOB,FTR-j;}@DAZ V_]6#+>)y%s# vH(( }O#߳Ok1秢lVg 7l djacr*^(g䍮0zީcζ;KclmO1^=!!0&GϜnR5LW7;Idb0 lu@7S6pҘBB y(S$F^)$W*jFǰ!81F qFu|Qf ܍sS~mbB)ΠȒ5gi3%s6qEPH0 v]5nP%HfdR&bnc$LGwt]RBuhw{M .4DcQZ̔*ϒ0`a"wK‰c7uޔ գ!" # !Jx s [>Z*ġw|Sse"H2/']E')?L?Gtt#W;s؉"M"J9;\X5.;pcAd8S2qؾk#$ɩf\A i0Kcc9/4M6ȍs)j)cw1 J¦mƯtL!@$82TR]amtU%06lU^;WgM#ɬh 9aDN\"mO@瓕w1>"j]ȦJ݀"h+ѭ!f?bJ8Gm- v 1-U 7}|GXdG|H+szY~CBټRKIU J- JOP2z|lu&ӛkXe'QTs$94z+%>ND~AU N2@FtS=" \gMr!YmF9p=׶ 'u\@aܖLsSoP<>2*n2q#?z7{^P-]uz^2 c2Zv=RuՕSy͊mˋt\ʀJf2ʭBۛ: 0;j2i9ɸ(/kՇAn +Nu:.h1[;~gnv6*Rg2d#}RbHC۝T yb`yʝ뛣V4cՊą0$c.mʛwS<&Bϒ8b<(sT)i]EX|H!_Tʝz18{oIjN7IQׂpqr՛5\AkagMv@|6s-,2O\څ'.?PKANPKAOx5.++mimetypePKAOx5QConfigurations2/statusbar/PKAOx5'Configurations2/accelerator/current.xmlPKAOx5Configurations2/floater/PKAOx5Configurations2/popupmenu/PKAOx5NConfigurations2/progressbar/PKAOx5Configurations2/menubar/PKAOx5Configurations2/toolbar/PKAOx5Configurations2/images/Bitmaps/PKAOx5-<( LU 1content.xmlPKAOx5Kq?E styles.xmlPKAOx5Koometa.xmlPKAOx5Q L HThumbnails/thumbnail.pngPKAOx5h.% $settings.xmlPKAOx5AN7+META-INF/manifest.xmlPK,TSP/vignettes/TSP.Rnw0000644000175000017500000013174513623555613014244 0ustar nileshnilesh%\documentclass[10pt,a4paper,fleqn]{article} \documentclass[nojss]{jss} \usepackage[english]{babel} %% my packages %\usepackage{a4wide} %\usepackage[round,longnamesfirst]{natbib} %\usepackage{hyperref} % \usepackage{amsmath} \usepackage{amsfonts} % %\newcommand{\strong}[1]{{\normalfont\fontseries{b}\selectfont #1}} \newcommand{\class}[1]{\mbox{\textsf{#1}}} \newcommand{\func}[1]{\mbox{\texttt{#1()}}} %\newcommand{\code}[1]{\mbox{\texttt{#1}}} %\newcommand{\pkg}[1]{\strong{#1}} \newcommand{\samp}[1]{`\mbox{\texttt{#1}}'} %\newcommand{\proglang}[1]{\textsf{#1}} \newcommand{\set}[1]{\mathcal{#1}} %\usepackage{Sweave} %% \VignetteIndexEntry{Introduction to TSP} \author{Michael Hahsler\\Southern Methodist University \And Kurt Hornik\\Wirtschaftsuniversit\"at Wien} \title{\pkg{TSP} -- Infrastructure for the Traveling Salesperson Problem} %% for pretty printing and a nice hypersummary also set: \Plainauthor{Michael Hahsler, Kurt Hornik} %% comma-separated \Plaintitle{TSP -- Infrastructure for the Traveling Salesperson Problem} %% without formatting \Shorttitle{Infrastructure for the TSP} %% a short title (if necessary) %% an abstract and keywords \Abstract{ The traveling salesperson problem (also known as traveling salesman problem or TSP) is a well known and important combinatorial optimization problem. The goal is to find the shortest tour that visits each city in a given list exactly once and then returns to the starting city. Despite this simple problem statement, solving the TSP is difficult since it belongs to the class of NP-complete problems. The importance of the TSP arises besides from its theoretical appeal from the variety of its applications. Typical applications in operations research include vehicle routing, computer wiring, cutting wallpaper and job sequencing. The main application in statistics is combinatorial data analysis, e.g., reordering rows and columns of data matrices or identifying clusters. In this paper we introduce the \proglang{R}~package \pkg{TSP} which provides a basic infrastructure for handling and solving the traveling salesperson problem. The package features S3 classes for specifying a TSP and its (possibly optimal) solution as well as several heuristics to find good solutions. In addition, it provides an interface to \emph{Concorde}, one of the best exact TSP solvers currently available. } \Keywords{combinatorial optimization, traveling salesman problem, \proglang{R}} \Plainkeywords{combinatorial optimization, traveling salesman problem, R} %% without formatting %% The address of (at least) one author should be given %% in the following format: \Address{ Michael Hahsler\\ Engineering Management, Information, and Systems\\ Lyle School of Engineering\\ Southern Methodist University\\ P.O. Box 750123 \\ Dallas, TX 75275-0123\\ E-mail: \email{mhahsler@lyle.smu.edu}\\ Kurt Hornik\\ Department of Finance, Accounting and Statistics\\ Wirtschaftsuniversit\"at Wien\\ 1090 Wien, Austria\\ E-mail: \email{kurt.hornik@wu-wien.ac.at}\\ URL: \url{http://statmath.wu.ac.at/~hornik/} } \begin{document} <>= options(width = 75, useFancyQuotes=FALSE, prompt="R> ") ### for sampling set.seed(1234) @ %\title{Introduction to \pkg{TSP} -- Infrastructure for the Traveling % Salesperson Problem} %\author{Michael Hahsler and Kurt Hornik} \maketitle \sloppy %\abstract{ % The traveling salesperson (or, salesman) problem (TSP) is a % well known and important combinatorial optimization problem. The goal % is to find the shortest tour that visits each city in a given list % exactly once and then returns to the starting city. Despite this % simple problem statement, solving the TSP is difficult since it % belongs to the class of NP-complete problems. The importance of the % TSP arises besides from its theoretical appeal from the variety of its % applications. Typical applications in operations research include % vehicle routing, computer wiring, cutting wallpaper and job % sequencing. The main application in statistics is combinatorial data % analysis, e.g., reordering rows and columns of data matrices or % identifying clusters. In this paper we introduce the % \proglang{R}~package \pkg{TSP} which provides a basic infrastructure % for handling and solving the traveling salesperson problem. The % package features S3 classes for specifying a TSP and its (possibly % optimal) solution as well as several heuristics to find good % solutions. In addition, it provides an interface to \emph{Concorde}, % one of the best exact TSP solvers currently available. } \section{Introduction} The traveling salesperson problem~\citep[TSP;][]{Lawler1985, Gutin2002} is a well known and important combinatorial optimization problem. The goal is to find the shortest tour that visits each city in a given list exactly once and then returns to the starting city. Formally, the TSP can be stated as follows. The distances between $n$ cities are stored in a distance matrix $\mathbf{D}$ with elements $d_{ij}$ where $i,j = 1\dots n$ and the diagonal elements $d_{ii}$ are zero. A \emph{tour} can be represented by a cyclic permutation $\pi$ of $\{1, 2,\dots, n\}$ where $\pi(i)$ represents the city that follows city $i$ on the tour. The traveling salesperson problem is then the optimization problem to find a permutation $\pi$ that minimizes the \emph{length of the tour} denoted by \begin{equation} \sum_{i=1}^n d_{i\pi(i)}. \end{equation} % see Lenstra & Kan 1975: Some simple Applications to the TSP For this minimization task, the tour length of $(n-1)!$ permutation vectors have to be compared. This results in a problem which is very hard to solve and in fact known to be NP-complete~\citep{Johnson1985a}. However, solving TSPs is an important part of applications in many areas including vehicle routing, computer wiring, machine sequencing and scheduling, frequency assignment in communication networks~\citep{Lenstra1975, Punnen2002}. %and structuring of %matrices~\citep{Lenstra1975, Punnen2002}. Applications in statistical data analysis include ordering and clustering objects. For example, data analysis applications in psychology ranging from profile smoothing to finding an order in developmental data are presented by~\cite{Hubert1978}. Clustering and ordering using TSP solvers is currently becoming popular in biostatistics. For example, \cite{Ray2007} describe an application for ordering genes and \cite{Johnson2006} use a TSP solver for clustering proteins. In this paper we give a very brief overview of the TSP and introduce the \proglang{R}~package \pkg{TSP} which provides an infrastructure for handling and solving TSPs. The paper is organized as follows. In Section~\ref{sec:TSP} we briefly present important aspects of the TSP including different problem formulations and approaches to solve TSPs. In Section~\ref{sec:infrastructure} we give an overview of the infrastructure implemented in \pkg{TSP} and the basic usage. In Section~\ref{sec:examples}, several examples are used to illustrate the package's capabilities. Section~\ref{sec:conclusion} concludes the paper. A previous version of this manuscript was published in the \emph{Journal of Statistical Software} \citep{TSP:Hahsler+Hornik2007}. \section{Theory} \label{sec:TSP} In this section, we briefly summarize some aspects of the TSP which are important for the implementation of the \pkg{TSP} package described in this paper. For a complete treatment of all aspects of the TSP, we refer the interested reader to the classic book edited by \cite{Lawler1985} and the more modern book edited by \cite{Gutin2002}. It has to be noted that in this paper, following the origin of the TSP, the term \emph{distance} is used. Distance is used here interchangeably with dissimilarity or cost and, unless explicitly stated, no restrictions to measures which obey the triangle inequality are made. An important distinction can be made between the symmetric TSP and the more general asymmetric TSP. For the symmetric case (normally referred to as just \emph{TSP}), for all distances in $\mathbf{D}$ the equality $d_{ij} = d_{ji}$ holds, i.e., it does not matter if we travel from $i$ to $j$ or the other way round, the distance is the same. In the asymmetric case (called \emph{ATSP}), the distances are not equal for all pairs of cities. Problems of this kind arise when we do not deal with spatial distances between cities but, e.g., with the cost or necessary time associated with traveling between locations, where the price for the plane ticket between two cities may be different depending on which way we go. \subsection{Different formulations of the TSP} \label{sec:formulations} Other than the permutation problem in the introduction, the TSP can also be formulated as a graph theoretic problem. Here the TSP is formulated by means of a complete graph $G = (V, E)$, where the cities correspond to the node set $V = \{1,2,\ldots,n\}$ and each edge $e_i \in E$ has an associated weight $w_i$ representing the distance between the nodes it connects. If the graph is not complete, the missing edges can be replaced by edges with very large distances. The goal is to find a \emph{Hamiltonian cycle}, i.e., a cycle which visits each node in the graph exactly once, with the least weight in the graph~\citep{Hoffman1985}. This formulation naturally leads to procedures involving minimum spanning trees for tour construction or edge exchanges to improve existing tours. TSPs can also be represented as integer and linear programming problems~\citep[see, e.g.,][]{Punnen2002}. The \emph{integer programming (IP) formulation} is based on the assignment problem with additional constraint of no sub-tours: \[ \begin{array}{rl} \text{Minimize } & \sum_{i=1}^n\sum_{j=1}^n{d_{ij}x_{ij}} % = \mathrm{trace}(\mathbf{D}^T\mathbf{X}) \\[3mm] \text{Subject to } & \sum_{i=1}^n{x_{ij}=1}, \quad j=1,\ldots,n, \\ & \sum_{j=1}^n{x_{ij}=1}, \quad i=1,\ldots,n, \\ & x_{ij} = 0 \text{ or } 1 \\ & \text{no sub-tours allowed} \\ \end{array} \] The solution matrix $\mathbf{X} = (x_{ij})$ of the assignment problem represents a tour or a collection of sub-tour (several unconnected cycles) where only edges which corresponding to elements $x_{ij} = 1$ are on the tour or a sub-tour. The additional restriction that no sub-tours are allowed (called \emph{sub-tour elimination constraints}) restrict the solution to only proper tours. Unfortunately, the number of sub-tour elimination constraints grows exponentially with the number of cities which leads to an extremely hard problem. The \emph{linear programming (LP) formulation} of the TSP is given by: \[ \begin{array}{rl} \text{Minimize } & \sum_{i=1}^m{w_ix_i} = \mathbf{w}^T\mathbf{x}\\[3mm] \text{Subject to } & \mathbf{x} \in \mathcal{S} \\ \end{array} \] where $m$ is the number of edges $e_i$ in $G$, $w_i \in \mathbf{w}$ is the weight of edge $e_i$ and $\mathbf{x}$ is the incidence vector indicating the presence or absence of each edge in the tour. Again, the constraints given by $\mathbf{x} \in \mathcal{S}$ are problematic since they have to contain the set of incidence vectors of all possible Hamiltonian cycles in $G$ which amounts to a direct search of all $(n-1)!$ possibilities and thus in general is infeasible. However, relaxed versions of the linear programming problem with removed integrality and sub-tour elimination constraints are extensively used by modern TSP solvers where such a partial description of constraints is used and improved iteratively in a branch-and-bound approach. \subsection{Useful manipulations of the distance matrix} \label{sec:manipulations} Sometimes it is useful to transform the distance matrix $\mathbf{D} = (d_{ij})$ of a TSP into a different matrix $\mathbf{D'} = (d'_{ij})$ which has the same optimal solution. Such a transformation requires that for any Hamiltonian cycle $H$ in a graph represented by its distance matrix $\mathbf{D}$ the equality \begin{equation*} \sum_{i,j \in H}{d_{ij}} = \alpha \sum_{i,j \in H}{d'_{ij}} + \beta \end{equation*} holds for suitable $\alpha > 0$ and $\beta \in \mathbb{R}$. From the equality we see that additive and multiplicative constants leave the optimal solution invariant. This property is useful to rescale distances, e.g., for many solvers, distances in the interval $[0, 1]$ have to be converted into integers from~1 to a maximal value. A different manipulation is to reformulate an asymmetric TSP as a symmetric TSP. This is possible by doubling the number of cities~\citep{Jonker1983}. For each city a dummy city is added. Between each city and its corresponding dummy city a very small value (e.g., $-\infty$) is used. This makes sure that each city always occurs in the solution together with its dummy city. The original distances are used between the cities and the dummy cities, where each city is responsible for the distance going to the city and the dummy city is responsible for the distance coming from the city. The distances between all cities and the distances between all dummy cities are set to a very large value (e.g., $\infty$) which makes these edges infeasible. An example for equivalent formulations as an asymmetric TSP (to the left) and a symmetric TSP (to the right) for three cities is: \begin{equation*} \begin{pmatrix} 0 &d_{12} &d_{13} \\ d_{21} &0 &d_{23} \\ d_{31} &d_{32} &0 \\ \end{pmatrix} \Longleftrightarrow \begin{pmatrix} 0 &\infty &\infty & -\infty &d_{21} &d_{31} \\ \infty &0 &\infty & d_{12} &-\infty &d_{31} \\ \infty &\infty &0 & d_{13} &d_{23} &-\infty \\ -\infty &d_{12} &d_{13} & 0 &\infty &\infty \\ d_{21} &-\infty &d_{23} & \infty &0 &\infty \\ d_{31} &d_{32} &-\infty & \infty &\infty &0 \\ \end{pmatrix} \end{equation*} Instead of the infinity values suitably large negative and positive values can be used. The new symmetric TSP can be solved using techniques for symmetric TSPs which are currently far more advanced than techniques for ATSPs. Removing the dummy cities from the resulting tour gives the solution for the original ATSP. \subsection{Finding exact solutions for the TSP} \label{sec:exact} Finding the exact solution to a TSP with $n$ cities requires to check $(n-1)!$ possible tours. To evaluate all possible tours is infeasible for even small TSP instances. To find the optimal tour \cite{Held1962} presented the following \emph{dynamic programming} formulation: Given a subset of city indices (excluding the first city) $S \subset \{2, 3, \dots, n\}$ and $l \in S$, let $d^*(S, l)$ denote the length of the shortest path from city $1$ to city $l$, visiting all cities in $S$ in-between. For $S = \{l\}$, $d^*(S,l)$ is defined as $d_{1l}$. The shortest path for larger sets with $|S| > 1$ is \begin{equation} d^*(S,l) = \mathrm{min}_{m \in S\setminus\{l\}}\Bigl( d^*(S\setminus\{l\},m) + d_{ml}\Bigl). %\text{ for } |S| > 1. \end{equation} Finally, the minimal tour length for a complete tour which includes returning to city $1$ is \begin{equation} d^{**} = \mathrm{min}_{l \in \{2,3,\dots,n\}}\Bigl( d^*(\{2,3,\dots,n\}, l) + d_{l1}\Bigl). \end{equation} Using the last two equations, the quantities $d^*(S,l)$ can be computed recursively and the minimal tour length $d^{**}$ can be found. In a second step, the optimal permutation $\pi = \{1, i_2, i_3,\dots,i_n\}$ of city indices $1$ through $n$ can be computed in reverse order, starting with $i_n$ and working successively back to $i_2$. The procedure exploits the fact that a permutation $\pi$ can only be optimal, if \begin{equation} d^{**} = d^*(\{2,3,\dots,n\}, i_n) + d_{i_n1} \end{equation} and, for $2 \le p \le n-1$, \begin{equation} d^*(\{i_2, i_3,\dots, i_p, i_{p+1}\}, i_{p+1}) = d^*(\{i_2,i_3,\dots,i_p\}, i_p) + d_{i_pi_{p+1}}. \end{equation} The space complexity of storing the values for all $d^*(S,l)$ is $(n-1)2^{n-2}$ which severely restricts the dynamic programming algorithm to TSP problems of small sizes. However, for very small TSP instances this approach is fast and efficient. %\marginpar{time complexity if order $n^22^n$. Check!} A different method, which can deal with larger instances, uses a relaxation of the linear programming problem presented in Section~\ref{sec:formulations} and iteratively tightens the relaxation till a solution is found. This general method for solving linear programming problems with complex and large inequality systems is called \emph{cutting plane method} and was introduced by \cite{Dantzig1954}. Each iteration begins with using instead of the original linear inequality description $\mathcal{S}$ the relaxation $A\mathbf{x} \le b$, where the polyhedron $P$ defined by the relaxation contains $\mathcal{S}$ and is bounded. The optimal solution $\mathbf{x}^*$ of the relaxed problem can be obtained using standard linear programming solvers. If the $\mathbf{x}^*$ found belongs to $\mathcal{S}$, the optimal solution of the original problem is obtained, otherwise, a linear inequality can be found which is satisfied by all points in $\mathcal{S}$ but violated by $\mathbf{x}^*$. Such an inequality is called a cutting plane or cut. A family of such cutting planes can be added to the inequality system $A\mathbf{x} \le b$ to obtain a tighter relaxation for the next iteration. If no further cutting planes can be found or the improvement in the objective function due to adding cuts gets very small, the problem is branched into two sub-problems which can be minimized separately. Branching is done iteratively which leads to a binary tree of sub-problems. Each sub-problem is either solved without further branching or is found to be irrelevant because its relaxed version already produces a longer path than a solution of another sub-problem. This method is called \emph{branch-and-cut}~\citep{Padberg1990} which is a variation of the well known \emph{branch-and-bound}~\citep{Land1960} procedure. The initial polyhedron $P$ used by \cite{Dantzig1954} contains all vectors $\mathbf{x}$ for which all $x_e \in \mathbf{x}$ satisfy $0 \le x_e \le 1$ and in the resulting tour each city is linked to exactly two other cities. Various separation algorithms for finding subsequent cuts to prevent sub-tours (\emph{sub-tour elimination inequalities}) and to ensure an integer solution \citep[\emph{Gomory cuts;}][]{Gomory1963} were developed over time. The currently most efficient implementation of this method is \emph{Concorde} described in~\cite{Applegate2000}. \subsection{Heuristics for the TSP} \label{sec:heuristics} The NP-completeness of the TSP already makes it more time efficient for small-to-medium size TSP instances to rely on heuristics in case a good but not necessarily optimal solution is sufficient. TSP heuristics typically fall into two groups, tour construction heuristics which create tours from scratch and tour improvement heuristics which use simple local search heuristics to improve existing tours. In the following we will only discuss heuristics available in \pkg{TSP}, for a comprehensive overview of the multitude of TSP heuristics including an experimental comparison, we refer the reader to the book chapter by \cite{Johnson2002}. \subsubsection{Tour construction heuristics} The implemented tour construction heuristics are the nearest neighbor algorithm and the insertion algorithms. \paragraph{Nearest neighbor algorithm.} The nearest neighbor algorithm~\citep{Rosenkrantz1977} follows a very simple greedy procedure: The algorithm starts with a tour containing a randomly chosen city and then always adds to the last city in the tour the nearest not yet visited city. The algorithm stops when all cities are on the tour. An extension to this algorithm is to repeat it with each city as the starting point and then return the best tour found. This heuristic is called repetitive nearest neighbor. \paragraph{Insertion algorithms.} All insertion algorithms~\citep{Rosenkrantz1977} start with a tour consisting of an arbitrary city and then choose in each step a city $k$ not yet on the tour. This city is inserted into the existing tour between two consecutive cities $i$ and $j$, such that the insertion cost (i.e., the increase in the tour's length) $$d(i,k) + d(k,j) - d(i,j)$$ is minimized. The algorithms stop when all cities are on the tour. The insertion algorithms differ in the way the city to be inserted next is chosen. The following variations are implemented: \begin{description} \item[Nearest insertion] The city $k$ is chosen in each step as the city which is nearest to a city on the tour. \item[Farthest insertion] The city $k$ is chosen in each step as the city which is farthest from any of the cities on the tour. \item[Cheapest insertion] The city $k$ is chosen in each step such that the cost of inserting the new city is minimal. \item[Arbitrary insertion] The city $k$ is chosen randomly from all cities not yet on the tour. \end{description} The nearest and cheapest insertion algorithms correspond to the minimum spanning tree algorithm by \cite{Prim1957}. Adding a city to a partial tour corresponds to adding an edge to a partial spanning tree. For TSPs with distances obeying the triangular inequality, the equality to minimum spanning trees provides a theoretical upper bound for the two algorithms of twice the optimal tour length. The idea behind the farthest insertion algorithm is to link cities far outside into the tour first to establish an outline of the whole tour early. With this change, the algorithm cannot be directly related to generating a minimum spanning tree and thus the upper bound stated above cannot be guaranteed. However, it can was shown that the algorithm generates tours which approach $2/3$ times the optimal tour length~\citep{Johnson1985}. \subsubsection{Tour improvement heuristics} Tour improvement heuristics are simple local search heuristics which try to improve an initial tour. A comprehensive treatment of the topic can be found in the book chapter by \cite{Rego2002}. \paragraph{$k$-Opt heuristics.} The idea is to define a neighborhood structure on the set of all admissible tours. Typically, a tour $t'$ is a neighbor of another tour $t$ if $t'$ can be obtained from $t$ by deleting $k$ edges and replacing them by a set of different feasible edges (a $k$-Opt move). In such a structure, the tour can iteratively be improved by always moving from one tour to its best neighbor till no further improvement is possible. The resulting tour represents a local optimum which is called $k$-optimal. Typically, $2$-Opt~\citep{Croes1958} and $3$-Opt~\citep{Lin1965} heuristics are used in practice. \paragraph{Lin-Kernighan heuristic.} This heuristic~\citep{Lin1973} does not use a fixed value for $k$ for its $k$-Opt moves, but tries to find the best choice of $k$ for each move. The heuristic uses the fact that each $k$-Opt move can be represented as a sequence of $2$-Opt moves. It builds up a sequence of $2$-Opt moves, checking after each additional move whether a stopping rule is met. Then the part of the sequence which gives the best improvement is used. This is equivalent to a choice of one $k$-Opt move with variable $k$. Such moves are used till a local optimum is reached. By using full backtracking, the optimal solution can always be found, but the running time would be immense. Therefore, only limited backtracking is allowed in the procedure, which helps to find better local optima or even the optimal solution. Further improvements to the procedure are described by \cite{Lin1973}. \section{Computational infrastructure: the TSP package} \label{sec:infrastructure} In package~\pkg{TSP}, a traveling salesperson problem is defined by an object of class \class{TSP} (symmetric) or \class{ATSP} (asymmetric). \func{solve\_TSP} is used to find a solution, which is represented by an object of class \class{TOUR}. Figure~\ref{fig:overview} gives an overview of this infrastructure. \begin{figure} \centering \includegraphics[width=14cm]{overview} \caption{An overview of the classes in \pkg{TSP}.} \label{fig:overview} \end{figure} \class{TSP} objects can be created from a distance matrix (a \class{dist} object) or a symmetric matrix using the creator function \func{TSP} or coercion with \func{as.TSP}. Similarly, \class{ATSP} objects are created by \func{ATSP} or \func{as.ATSP} from square matrices representing the distances. In the creation process, labels are taken and stored as city names in the object or can be explicitly given as arguments to the creator functions. Several methods are defined for the classes: \begin{itemize} \item \func{print} displays basic information about the problem (number of cities and the distance measure employed). \item \func{n\_of\_cities} returns the number of cities. \item \func{labels} returns the city names. \item \func{image} produces a shaded matrix plot of the distances between cities. The order of the cities can be specified as the argument \code{order}. \end{itemize} Internally, an object of class \class{TSP} is a \class{dist} object with an additional class attribute and, therefore, if needed, can be coerced to \class{dist} or to a matrix. An \class{ATSP} object is represented as a square matrix. Obviously, asymmetric TSPs are more general than symmetric TSPs, hence, symmetric TSPs can also be represented as asymmetric TSPs. To formulate an asymmetric TSP as a symmetric TSP with double the number of cities (see Section \ref{sec:manipulations}), \func{reformulate\_ATSP\_as\_TSP} is provided. This function creates the necessary dummy cities and adapts the distance matrix accordingly. A popular format to save TSP descriptions to disk which is supported by most TSP solvers is the format used by \emph{TSPLIB}, a library of sample instances of the TSP maintained by \cite{Reinelt2004}. The \pkg{TSP} package provides \func{read\_TSPLIB} and \func{write\_TSPLIB} to read and save symmetric and asymmetric TSPs in TSPLIB format. Class \class{TOUR} represents a solution to a TSP by an integer permutation vector containing the ordered indices and labels of the cities to visit. In addition, it stores an attribute indicating the length of the tour. Again, suitable \func{print} and \func{labels} methods are provided. The raw permutation vector (i.e., the order in which cities are visited) can be obtained from a tour using \func{as.integer}. With \func{cut\_tour}, a circular tour can be split at a specified city resulting in a path represented by a vector of city indices. The length of a tour can always be calculated using \func{tour\_length} and specifying a TSP and a tour. Instead of the tour, an integer permutation vector calculated outside the \pkg{TSP} package can be used as long as it has the correct length. All TSP solvers in \pkg{TSP} can be used with the simple common interface: \begin{quote} \code{solve\_TSP(x, method, control)} \end{quote} where \code{x} is the TSP to be solved, \code{method} is a character string indicating the method used to solve the TSP and \code{control} can contain a list with additional information used by the solver. The available algorithms are shown in Table~\ref{tab:methods}. \begin{table} \caption{Available algorithms in \pkg{TSP}.} \label{tab:methods} \centering \begin{tabular}{llc} \hline \textbf{Algorithm} & \textbf{Method argument} & \textbf{Applicable to} \\ \hline Nearest neighbor algorithm & \code{"nn"} & TSP/ATSP \\ Repetitive nearest neighbor algorithm & \code{"repetitive\_nn"} & TSP/ATSP \\ Nearest insertion & \code{"nearest\_insertion"} & TSP/ATSP \\ Farthest insertion & \code{"farthest\_insertion"} & TSP/ATSP \\ Cheapest insertion & \code{"cheapest\_insertion"} & TSP/ATSP \\ Arbitrary insertion & \code{"arbitrary\_insertion"} & TSP/ATSP \\ Concorde TSP solver & \code{"concorde"} & TSP \\ 2-Opt improvement heuristic & \code{"two\_opt"} & TSP/ATSP \\ Chained Lin-Kernighan & \code{"linkern"} & TSP \\ \hline \end{tabular} \end{table} All algorithms except the Concorde TSP solver and the Chained Lin-Kernighan heuristic (a Lin-Kernighan variation described in \cite{Applegate2003}) are included in the package and distributed under the GNU Public License (GPL). For the Concorde TSP solver and the Chained Lin-Kernighan heuristic only a simple interface (using \func{write\_TSPLIB}, calling the executable and reading back the resulting tour) is included in \pkg{TSP}. The executable itself is part of the Concorde distribution, has to be installed separately and is governed by a different license which allows only for academic use. The interfaces are included since Concorde~\citep{Applegate2000,Applegate2006} is currently one of the best implementations for solving symmetric TSPs based on the branch-and-cut method discussed in section~\ref{sec:exact}. In May 2004, Concorde was used to find the optimal solution for the TSP of visiting all 24,978 cities in Sweden. The computation was carried out on a cluster with 96 Xeon 2.8 GHz nodes and took in total almost 100 CPU years. \section{Examples} \label{sec:examples} In this section we provide some examples for the use of package~\pkg{TSP}. We start with a simple example of how to use the interface of the TSP solver to compare different heuristics. Then we show how to solve related tasks, using the Hamiltonian shortest path problem as an example. Finally, we give an example of clustering using the \pkg{TSP} package. An additional application can be found in package \pkg{seriation}~\citep{TSP:Hahsler+Buchta+Hornik:2006} which uses the TSP solvers from \pkg{TSP} to order (seriate) objects given a proximity matrix. \subsection{Comparing some heuristics} In the following example, we use several heuristics to find a short path in the \code{USCA50} data set which contains the distances between the first 50 cities in the \code{USCA312} data set. The \code{USCA312} data set contains the distances between 312 cities in the USA and Canada coded as a symmetric TSP. The smaller data set is used here, since some of the heuristic solvers employed are rather slow. <<>>= library("TSP") data("USCA50") USCA50 @ We calculate tours using different heuristics and store the results in the list \code{tours}. As an example, we show the first tour which displays the method employed, the number of cities involved and the tour length. All tour lengths are compared using the dot chart in Figure~\ref{fig:dotchart}. For the chart, we add a point for the optimal solution which has a tour length of 14497. The optimal solution can be found using Concorde (\code{method = "concorde"}). It is omitted here, since Concorde has to be installed separately. <>= set.seed(1234) @ <>= methods <- c("nearest_insertion", "farthest_insertion", "cheapest_insertion", "arbitrary_insertion", "nn", "repetitive_nn", "two_opt") tours <- sapply(methods, FUN = function(m) solve_TSP(USCA50, method = m), simplify = FALSE) ## tours$concorde <- solve_TSP(tsp, method = "concorde") tours[[1]] dotchart(sort(c(sapply(tours, tour_length), optimal = 14497)), xlab = "tour length", xlim = c(0, 20000)) @ \begin{figure} \centering \includegraphics[width=11cm, trim=0 10 0 0]{TSP-dotchart_USCA50} \caption{Comparison of the tour lengths for the USCA50 data set.} \label{fig:dotchart} \end{figure} \subsection{Finding the shortest Hamiltonian path} The problem of finding the shortest Hamiltonian path through a graph (i.e., a path which visits each node in the graph exactly once) can be transformed into the TSP with cities and distances representing the graphs vertices and edge weights, respectively~\citep{Garfinkel1985}. Finding the shortest Hamiltonian path through all cities disregarding the endpoints can be achieved by inserting a `dummy city' which has a distance of zero to all other cities. The position of this city in the final tour represents the cutting point for the path. In the following we use a heuristic to find a short path in the \code{USCA312} data set. Inserting dummy cities is performed in \pkg{TSP} by \func{insert\_dummy}. <>= set.seed(1234) @ <<>>= library("TSP") data("USCA312") tsp <- insert_dummy(USCA312, label = "cut") tsp @ The TSP now contains an additional dummy city and we can try to solve this TSP. <<>>= tour <- solve_TSP(tsp, method="farthest_insertion") tour @ Since the dummy city has distance zero to all other cities, the path length is equal to the tour length reported above. The path starts with the first city in the list after the `dummy' city and ends with the city right before it. We use \func{cut\_tour} to create a path and show the first and last 6 cities on it. <<>>= path <- cut_tour(tour, "cut") head(labels(path)) tail(labels(path)) @ The tour found in the example results in a path from Lihue on Hawaii to Prince Rupert in British Columbia. Such a tour can also be visualized using the packages \pkg{sp}, \pkg{maps} and \pkg{maptools} \citep{TSP:Pebesma+Bivand:2005}. Note that he \code{if} statement and the \code{plot} in the \code{else} part in the following is not needed and only checks if the appropriate packages are installed when building this document. <>= if(require(sp) && require(maps) && require(maptools)) { library("sp") library("maps") library("maptools") data("USCA312_GPS") # create spatial coordinates and a basemap using WGS84 projection. USCA312_coords <- SpatialPointsDataFrame(cbind(USCA312_GPS$long, USCA312_GPS$lat), proj4string=CRS("+proj=longlat +datum=WGS84"), data = USCA312_GPS) USCA312_basemap <- map2SpatialLines(map("world", xlim=c(-166,-47), ylim=c(15,83), plot=FALSE), proj4string=CRS("+proj=longlat +datum=WGS84")) plot_path <- function(path){ plot(as(USCA312_coords, "Spatial"), axes = TRUE) plot(USCA312_basemap, add = TRUE, col = "gray") points(USCA312_coords, pch = 3, cex = 0.4, col = "red") path_line <- SpatialLines(list(Lines(list(Line(USCA312_coords[path,])), ID="1"))) plot(path_line, add=TRUE, col = "black") points(USCA312_coords[c(head(path,1), tail(path,1)),], pch = 19, col = "black") } plot_path(path) } else { plot(NA, xlim= c(0,1), ylim = c(0,1)); text(.5, .5, "Suggested packages not available") } @ \begin{figure} \centering \includegraphics[width=10cm, trim=0 30 0 0]{TSP-map1} \caption{A ``short'' Hamiltonian path for the USCA312 dataset.} \label{fig:map1} \end{figure} The map containing the path is presented in Figure~\ref{fig:map1}. It has to be mentioned that the path found by the used heuristic is considerable longer than the optimal path found by Concorde with a length of $34928$, illustrating the power of modern TSP algorithms. For the following two examples, we indicate how the distance matrix between cities can be modified to solve related shortest Hamiltonian path problems. These examples serve as illustrations of how modifications can be made to transform different problems into a TSP. The first problem is to find the shortest Hamiltonian path starting with a given city. In this case, all distances to the selected city are set to zero, forcing the evaluation of all possible paths starting with this city and disregarding the way back from the final city in the tour. By modifying the distances the symmetric TSP is changed into an asymmetric TSP (ATSP) since the distances between the starting city and all other cities are no longer symmetric. As an example, we choose New York as the starting city. We transform the data set into an ATSP and set the column corresponding to New York to zero before solving it. Thus, the distance to return from the last city in the path to New York does not contribute to the path length. We use the nearest neighbor heuristic to calculate an initial tour which is then improved using $2$-Opt moves and cut at New York to create a path. <>= set.seed(1234) @ <<>>= atsp <- as.ATSP(USCA312) ny <- which(labels(USCA312) == "New York, NY") atsp[, ny] <- 0 initial_tour <- solve_TSP(atsp, method="nn") initial_tour tour <- solve_TSP(atsp, method ="two_opt", control = list(tour = initial_tour)) tour path <- cut_tour(tour, ny, exclude_cut = FALSE) head(labels(path)) tail(labels(path)) @ <>= plot_path(path) @ \begin{figure} \centering \includegraphics[width=10cm, trim=0 30 0 0]{TSP-map2} \caption{A Hamiltonian path for the USCA312 dataset starting in New York.} \label{fig:map2} \end{figure} The found path is presented in Figure~\ref{fig:map2}. It begins with New York and cities in New Jersey and ends in a city in Manitoba, Canada. %The path shows the typical behavior %of the nearest neighbor heuristic with first connecting the cities close by and %then making rather big ``jumps'' for the final cities. Concorde and many advanced TSP solvers can only solve symmetric TSPs. To use these solvers, we can formulate the ATSP as a TSP using \func{reformulate\_ATSP\_as\_TSP} which introduces a dummy city for each city (see Section~\ref{sec:manipulations}). <<>>= tsp <- reformulate_ATSP_as_TSP(atsp) tsp @ After finding a tour for the TSP, the dummy cities are removed again giving the tour for the original ATSP. Note that the tour needs to be reversed if the dummy cities appear before and not after the original cities in the solution of the TSP. The following code is not executed here, since it takes several minutes to execute and Concorde has to be installed separately. Concorde finds the optimal solution with a length of $36091$. <>= tour <- solve_TSP(tsp, method = "concorde") tour <- as.TOUR(tour[tour <= n_of_cities(atsp)]) @ Finding the shortest Hamiltonian path which ends in a given city can be achieved likewise by setting the row in the distance matrix which corresponds to this city to zero. For finding the shortest Hamiltonian path we can also restrict both end points. This problem can be transformed to a TSP by replacing the two cities by a single city which contains the distances from the start point in the columns and the distances to the end point in the rows. Obviously this is again an asymmetric TSP. For the following example, we are only interested in paths starting in New York and ending in Los Angeles. Therefore, we remove the two cities from the distance matrix, create an asymmetric TSP and insert a dummy city called \code{"LA/NY"}. The distances from this dummy city are replaced by the distances from New York and the distances towards are replaced by the distances towards Los Angeles. <>= set.seed(1234) @ <<>>= m <- as.matrix(USCA312) ny <- which(labels(USCA312) == "New York, NY") la <- which(labels(USCA312) == "Los Angeles, CA") atsp <- ATSP(m[-c(ny,la), -c(ny,la)]) atsp <- insert_dummy(atsp, label = "LA/NY") la_ny <- which(labels(atsp) == "LA/NY") atsp[la_ny, ] <- c(m[-c(ny,la), ny], 0) atsp[, la_ny] <- c(m[la, -c(ny,la)], 0) @ We use the nearest insertion heuristic. <<>>= tour <- solve_TSP(atsp, method ="nearest_insertion") tour path_labels <- c("New York, NY", labels(cut_tour(tour, la_ny)), "Los Angeles, CA") path_ids <- match(path_labels, labels(USCA312)) head(path_labels) tail(path_labels) @ <>= plot_path(path_ids) @ The path jumps from New York to cities in Ontario and it passes through cities in California and Nevada before ending in Los Angeles. The path displayed in Figure~\ref{fig:map3} contains multiple crossings which indicate that the solution is suboptimal. The optimal solution generated by reformulating the problem as a TSP and using Concorde has only a tour length of $38489$. \begin{figure} \centering \includegraphics[width=10cm, trim=0 30 0 0]{TSP-map3} \caption{A Hamiltonian path for the USCA312 dataset starting in New York and ending in Los Angles.} \label{fig:map3} \end{figure} \subsection{Rearrangement clustering} Solving a TSP to obtain a clustering was suggested several times in the literature \citep[see, e.g.,][]{Lenstra1974, Alpert1997, Johnson2004}. The idea is that objects in clusters are visited in consecutive order and from one cluster to the next larger ``jumps'' are necessary. \cite{Climer2006} call this type of clustering \emph{rearrangement clustering} and suggest to automatically find the cluster boundaries of $k$ clusters by adding $k$ \emph{dummy cities} which have constant distance $c$ to all other cities and are infinitely far from each other. In the optimal solution of the TSP, the dummy cities must separate the most distant cities and thus represent optimal boundaries for $k$ clusters. For the following example, we use the well known iris data set. Since we know that the dataset contains three classes denoted by the variable \code{Species}, we insert three dummy cities into the TSP for the iris data set and perform rearrangement clustering using the default method (nearest insertion algorithm). Note that this algorithm does not find the optimal solution and it is not guaranteed that the dummy cities will present the best cluster boundaries. %\marginpar{FIXME: Was sagt Concorde dazu?} <>= set.seed(4444) @ <<>>= data("iris") tsp <- TSP(dist(iris[-5]), labels = iris[, "Species"]) tsp_dummy <- insert_dummy(tsp, n = 3, label = "boundary") tour <- solve_TSP(tsp_dummy) @ Next, we plot the TSP's permuted distance matrix using shading to represent distances. The result is displayed as Figure~\ref{fig:clustering}. Lighter areas represent larger distances. The additional red lines represent the positions of the dummy cities in the tour, which mark the cluster boundaries obtained. <>= ## plot the distance matrix image(tsp_dummy, tour, xlab = "objects", ylab ="objects") ## draw lines where the dummy cities are located abline(h = which(labels(tour)=="boundary"), col = "red") abline(v = which(labels(tour)=="boundary"), col = "red") @ \begin{figure} \centering \includegraphics[width=9cm, height=9cm, trim=0 20 0 0]{TSP-clustering} \caption{Result of rearrangement clustering using three dummy cities and the nearest insertion algorithm on the iris data set.} \label{fig:clustering} \end{figure} One pair of red horizontal and vertical lines exactly separates the darker from lighter areas. The second pair occurs inside the larger dark block. We can look at how well the partitioning obtained fits the structure in the data given by the species field in the data set. Since we used the species as the city labels in the TSP, the labels in the tour represent the partitioning with the dummy cities named `boundary' separating groups. The result can be summarized based on the run length encoding of the obtained tour labels: <<>>= out <- rle(labels(tour)) data.frame(Species = out$values, Lenghts = out$lengths, Pos = cumsum(out$lengths)) @ One boundary perfectly splits the iris data set into a group containing only examples of species `Setosa' and a second group containing examples for `Virginica' and `Versicolor'. However, the second boundary only separates several examples of species `Virginica' from other examples of the same species. Even in the optimal tour found by Concorde, this problem occurs. The reason why the rearrangement clustering fails to split the data into three groups is the closeness between the groups `Virginica' and `Versicolor'. To inspect this problem further, we can project the data points on the first two principal components of the data set and add the path segments which resulted from solving the TSP. <>= prc <- prcomp(iris[1:4]) plot(prc$x, pch = as.numeric(iris[,5]), col = as.numeric(iris[,5])) paths <- cut_tour(tour, cut = "boundary") for(p in paths) lines(prc$x[p, ]) @ \begin{figure} \centering \includegraphics[width=10cm, trim=0 20 0 0]{TSP-clustering2} \caption{The 3 path segments representing a rearrangement clustering of the iris data set. The data points are projected on the set's first two principal components. The three species are represented by different markers and colors.} \label{fig:clustering2} \end{figure} The result in shown in Figure~\ref{fig:clustering2}. The three species are identified by different markers and all points connected by a single path represent a cluster found. Clearly, the two groups to the right side of the plot are too close to be separated correctly by using just the distances between individual points. This problem is similar to the \emph{chaining effect} known from hierarchical clustering using the single-linkage method. \section{Conclusion} \label{sec:conclusion} In this paper we presented the R extension package \pkg{TSP} which implements an infrastructure to handle and solve TSPs. The package introduces classes for problem descriptions (\class{TSP} and \class{ATSP}) and for the solution (\class{TOUR}). Together with a simple interface for solving TSPs, it allows for an easy and transparent usage of the package. With the interface to Concorde, \pkg{TSP} also can use a state of the art implementation which efficiently computes exact solutions using branch-and-cut. \section*{Acknowledgments} The authors of this paper want to thank Roger Bivand for providing the code to correctly draw tours and paths on a projected map. % %\bibliographystyle{abbrvnat} \bibliography{TSP} % \end{document} TSP/vignettes/TSP.bib0000644000175000017500000002704512606077054014225 0ustar nileshnilesh@INCOLLECTION{Garfinkel1985, author = {R.S. Garfinkel}, title = {Motivation and Modeling}, year = {1985}, chapter = {2}, pages = {17--36}, crossref = {Lawler1985}, owner = {hahsler}, timestamp = {2006.11.06} } @INCOLLECTION{Hoffman1985, author = {A.J. Hoffman and P. Wolfe}, title = {History}, year = {1985}, chapter = {1}, pages = {1--16}, crossref = {Lawler1985}, owner = {hahsler} } @INCOLLECTION{Johnson2002, author = {D.S. Johnson and L.A. McGeoch}, title = {Experimental Analysis of Heuristics for the {STSP}}, year = {2002}, chapter = {9}, pages = {369--444}, crossref = {Gutin2002}, owner = {hahsler}, timestamp = {2006.12.07} } @INCOLLECTION{Johnson1985, author = {D.S. Johnson and C.H. Papadimitriou}, title = {Performance guarantees for heuristics}, year = {1985}, chapter = {5}, pages = {145--180}, crossref = {Lawler1985}, owner = {hahsler}, timestamp = {2006.10.06} } @INCOLLECTION{Johnson1985a, author = {D.S. Johnson and C.H. Papadimitriou}, title = {Computational complexity}, year = {1985}, chapter = {3}, pages = {37--86}, crossref = {Lawler1985}, owner = {hahsler}, timestamp = {2006.10.06} } @INCOLLECTION{Punnen2002, author = {A.P. Punnen}, title = {The Traveling Salesman Problem: Applications, Formulations and Variations}, year = {2002}, chapter = {1}, pages = {1--28}, crossref = {Gutin2002}, owner = {hahsler}, timestamp = {2006.12.06} } @INCOLLECTION{Rego2002, author = {C. Rego and F. Glover}, title = {Local Search and Metaheuristics}, year = {2002}, chapter = {8}, pages = {309--368}, crossref = {Gutin2002}, owner = {hahsler}, timestamp = {2006.12.06} } @ARTICLE{Alpert1997, author = {C. J. Alpert and A. B. Kahng}, title = {Splitting an Ordering into a Partititon to Minimize Diameter}, journal = {Journal of Classification}, year = {1997}, volume = {14}, pages = {51--74}, number = {1}, owner = {hahsler}, timestamp = {2006.12.19} } @MANUAL{Applegate2006, title = {Concorde {TSP} Solver}, author = {David Applegate and Robert Bixby and Vasek Chv{\'a}tal and William Cook}, year = {2006}, owner = {hahsler}, timestamp = {2006.10.06}, url = {http://www.tsp.gatech.edu/concorde/} } @ARTICLE{Applegate1998, author = {David Applegate and Robert Bixby and Vasek Chv{\'a}tal and William Cook}, title = {On the Solution of Traveling Salesman Problems}, journal = {Documenta Mathematica}, year = {1998}, volume = {Extra Volume ICM}, pages = {645--656}, owner = {hahsler}, timestamp = {2006.10.06} } @INPROCEEDINGS{Applegate2000, author = {David Applegate and Robert E. Bixby and Vasek Chv{\'a}tal and William Cook}, title = {{TSP} Cuts Which Do Not Conform to the Template Paradigm}, booktitle = {Computational Combinatorial Optimization, Optimal or Provably Near-Optimal Solutions}, year = {2000}, editor = {M. Junger and D. Naddef}, volume = {2241}, series = {Lecture Notes In Computer Science}, pages = {261--304}, address = {London, UK}, publisher = {Springer-Verlag}, owner = {hahsler}, timestamp = {2006.10.06} } @ARTICLE{Applegate2003, author = {David Applegate and William Cook and Andre Rohe}, title = {Chained {L}in-{K}ernighan for Large Traveling Salesman Problems}, journal = {{INFORMS} Journal on Computing}, year = {2003}, volume = {15}, pages = {82--92}, number = {1}, owner = {hahsler} } @ARTICLE{Climer2006, author = {Sharlee Climer and Weixiong Zhang}, title = {Rearrangement Clustering: Pitfalls, Remedies, and Applications}, journal = {Journal of Machine Learning Research}, year = {2006}, volume = {7}, pages = {919--943}, month = jun, owner = {hahsler}, timestamp = {2006.10.06} } @ARTICLE{Croes1958, author = {G. A. Croes}, title = {A Method for Solving Traveling-Salesman Problems}, journal = {Operations Research}, year = {1958}, volume = {6}, pages = {791--812}, number = {6}, owner = {hahsler}, timestamp = {2006.11.29} } @ARTICLE{Dantzig1954, author = {G.B. Dantzig and D.R. Fulkerson and S.M. Johnson}, title = {Solution of a Large-scale Traveling Salesman Problem}, journal = {Operations Research}, year = {1954}, volume = {2}, pages = {393--410}, owner = {hahsler}, timestamp = {2006.12.10} } @INPROCEEDINGS{Gomory1963, author = {R.E. Gomory}, title = {An algorithm for integer solutions to linear programs}, booktitle = {Recent Advances in Mathematical Programming}, year = {1963}, editor = {R.L. Graves and P. Wolfe}, pages = {269--302}, address = {New York}, publisher = {McGraw-Hill}, owner = {hahsler}, timestamp = {2006.12.10} } @TECHREPORT{Hahsler2007a, author = {Michael Hahsler and Kurt Hornik and Christian Buchta}, title = {Getting Things in Order: An Introduction to the {R} package seriation}, institution = {Research Report Series, Department of Statistics and Mathematics, Wirtschaftsuniversit{\"a}t Wien}, year = {2007}, type = {Report}, number = {58}, address = {Augasse 2--6, 1090 Wien, Austria}, month = {August}, owner = {hahsler}, timestamp = {2007.12.04} } @ARTICLE{Held1962, author = {M. Held and R.M. Karp}, title = {A Dynamic Programming Approach to Sequencing Problems}, journal = {Journal of {SIAM}}, year = {1962}, volume = {10}, pages = {196--210}, owner = {hahsler}, timestamp = {2006.11.27} } @ARTICLE{Hubert1978, author = {Lawrence J. Hubert and Frank B. Baker}, title = {Applications of Combinatorial Programming to Data Analysis: The Traveling Salesman and Related Problems}, journal = {Psychometrika}, year = {1978}, volume = {43}, pages = {81--91}, number = {1}, month = {March}, owner = {hahsler}, timestamp = {2007.12.04} } @INPROCEEDINGS{Johnson2004, author = {David Johnson and Shankar Krishnan and Jatin Chhugani and Subodh Kumar and Suresh Venkatasubramanian}, title = {Compressing Large Boolean Matrices Using Reordering Techniques}, booktitle = {Proceedings of the 30th VLDB Conference}, year = {2004}, pages = {13--23}, owner = {hahsler}, timestamp = {2006.12.19} } @ARTICLE{Johnson2006, author = {Olin Johnson and Jing Liu}, title = {A traveling salesman approach for predicting protein functions}, journal = {Source Code for Biology and Medicine}, year = {2006}, volume = {1}, pages = {1--7}, number = {3}, owner = {hahsler}, timestamp = {2007.11.28} } @ARTICLE{Jonker1983, author = {Jonker, R. and Volgenant, T.}, title = {Transforming asymmetric into symmetric traveling salesman problems}, journal = {Operations Research Letters}, year = {1983}, volume = {2}, pages = {161--163}, owner = {hahsler}, timestamp = {2006.12.05} } @INPROCEEDINGS{Kruskal1956, author = {J.B. Kruskal}, title = {On the shortest spanning subtree and the traveling salesman problem}, booktitle = {Proceedings of the American Mathematical Society}, year = {1956}, pages = {48--50}, owner = {hahsler}, timestamp = {2006.10.06} } @ARTICLE{Land1960, author = {A.H. Land and A.G. Doig}, title = {An Automatic Method for Solving Discrete Programming Problems}, journal = {Econometrica}, year = {1960}, volume = {28}, pages = {497--520}, owner = {hahsler}, timestamp = {2006.12.12} } @ARTICLE{Lenstra1975, author = {J.K. Lenstra and A.H.G. Rinooy Kan}, title = {Some simple applications of the travelling salesman problem}, journal = {Operational Research Quarterly}, year = {1975}, volume = {26}, pages = {717--733}, number = {4}, month = {November}, owner = {hahsler}, timestamp = {2006.11.07} } @ARTICLE{Lenstra1974, author = {J. K. Lenstra}, title = {Clustering a Data Array and the Traveling-Salesman Problem}, journal = {Operations Research}, year = {1974}, volume = {22}, pages = {413--414}, number = {2}, owner = {hahsler}, timestamp = {2006.12.19} } @ARTICLE{Lin1965, author = {S. Lin}, title = {Computer solutions of the traveling-salesman problem}, journal = {Bell System Technology Journal}, year = {1965}, volume = {44}, pages = {2245--2269}, owner = {hahsler}, timestamp = {2006.11.29} } @ARTICLE{Lin1973, author = {S. Lin and B.W. Kernighan}, title = {An effective heuristic algorithm for the traveling-salesman problem}, journal = {Operations Research}, year = {1973}, volume = {21}, pages = {498--516}, number = {2}, owner = {hahsler}, timestamp = {2006.11.27} } @ARTICLE{Padberg1990, author = {M. Padberg and G. Rinaldi}, title = {Facet identification for the symmetric traveling salesman polytope}, journal = {Mathematical Programming}, year = {1990}, volume = {47}, pages = {219--257}, number = {2}, address = {Secaucus, NJ, USA}, issn = {0025-5610}, publisher = {Springer-Verlag New York, Inc.} } @ARTICLE{Prim1957, author = {R.C. Prim}, title = {Shortest connection networks and some generalisations}, journal = {Bell System Technical Journal}, year = {1957}, volume = {36}, pages = {1389--1401}, owner = {hahsler}, timestamp = {2006.10.06} } @ARTICLE{Ray2007, author = {S. S. Ray and S. Bandyopadhyay and S. K. Pal}, title = {Gene Ordering in Partitive Clustering using Microarray Expressions}, journal = {Journal of Biosciences}, year = {2007}, volume = {32}, pages = {1019--1025}, number = {5}, month = {August}, owner = {hahsler}, timestamp = {2007.11.28} } @MANUAL{Reinelt2004, title = {{TSPLIB}}, author = {Gerhard Reinelt}, organization = {Universit{\"a}t Heidelberg, Institut f{\"u}r Informatik}, address = {Im Neuenheimer Feld 368,D-69120 Heidelberg, Germany}, year = {2004}, owner = {hahsler}, timestamp = {2006.10.06}, url = {http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/} } @ARTICLE{Rosenkrantz1977, author = {Daniel J. Rosenkrantz and Richard E. Stearns and Philip M. Lewis, II}, title = {An Analysis of Several Heuristics for the Traveling Salesman Problem}, journal = {{SIAM} Journal on Computing}, year = {1977}, volume = {6}, pages = {563--581}, number = {3}, owner = {hahsler}, timestamp = {2006.11.13} } @BOOK{Gutin2002, title = {The Traveling Salesman Problem and Its Variations}, publisher = {Kluwer}, year = {2002}, editor = {G. Gutin and A.P. Punnen}, volume = {12}, series = {Combinatorial Optimization}, address = {Dordrecht}, owner = {hahsler}, timestamp = {2006.11.29} } @BOOK{Lawler1985, title = {The Traveling Salesman Problem}, publisher = {Wiley}, year = {1985}, editor = {Lawler, E. L. and Lenstra, J. K. and Rinnooy Kan, A. H. G. and Shmoys, D. B.}, address = {New York}, owner = {hahsler}, timestamp = {2006.10.05} } @comment{jabref-meta: selector_journal:} @comment{jabref-meta: selector_author:} @comment{jabref-meta: selector_keywords:} @comment{jabref-meta: selector_publisher:} @Manual{TSP:Hahsler+Buchta+Hornik:2006, title = {seriation: Infrastructure for seriation}, author = {Michael Hahsler and Christian Buchta and Kurt Hornik}, year = 2006, note = {R package version 0.1-1}, } @Article{TSP:Pebesma+Bivand:2005, author = {Edzer J. Pebesma and Roger S. Bivand}, title = {Classes and methods for spatial data in {R}}, journal = {R News}, year = 2005, volume = 5, number = 2, pages = {9--13}, month = {November}, url = {http://CRAN.R-project.org/doc/Rnews/}, } @ARTICLE{TSP:Hahsler+Hornik2007, AUTHOR = {Michael Hahsler and Kurt Hornik}, TITLE = {{TSP} -- {I}nfrastructure for the Traveling Salesperson Problem}, JOURNAL = {Journal of Statistical Software}, YEAR = {2007}, VOLUME = {23}, PAGES = {1-21}, NUMBER = {2}, MONTH = {December}, ISSN = {1548-7660} } TSP/build/0000755000175000017500000000000014204773730012160 5ustar nileshnileshTSP/build/vignette.rds0000644000175000017500000000031114204773730014512 0ustar nileshnileshb```b`adb`b2 1# 'f  +G+)O)M.S(W*æ % Ml ba DX%Z]?4-ީE0=(jؠjX2sR,s\ܠL t7`~΢r=xA$Gs=ʕXVr7}TSP/build/partial.rdb0000644000175000017500000000572514204773723014320 0ustar nileshnileshrDԷة[wٖHvcG*8,SOh(Yըڧp%}:<@;`Ai5sڥۯ۽;ٸ$Iid(#e):O~ I0Y'pH'c<9@ViMmٲ]K.I#ѲU8cGsP1E?,R#O tDH,c!}., Ӏ8k ns[ApFp4M/zqK+߳f89>arT7nY,_q\m~wޯJ}X+6T妪Pm9ֹkـ+:#i{HQLCcCc#gl7{-3&t#oQ!HȟrUװ-ٰrqccyH1|I Ma A:BKD;c>m,ISE+'M3K_:-%L0ؗ[O=#5aO89c ͒n pD:qH 2]0ZJvY$vY+zLp9{]5QC47z EabFs M`p7m h#C#4 _|bC#ICQ4 21lp ,lGvHv~?k~iHZX+'%#CGrENM ɦMRaGGKypuID]5,/ocX(:j9v gȓOUsT>NaBHumbPzuL&Ǵ킦],jbA2~ඏSؿBsW./}VG$8/s"&+l K3[:zI2Sq]ӫH2FMVIAx>NaJjTIg[Ls#yh9G>5XuВ\X\Z]" 5ʽܧFUb/*ept/aIN]6Y`(s6/^y\^])ν7VJw J)Ffy7Fo0,fؼ~"O dQ0⢗nfDxDZ3,Է&U:!,AQHo>PԞ5IBY=8f3eWbRӳ8b\RcNci-5KGT/GR(Xx)je:8Ӝ:itm6ӻǞ'biCSL rJ{Vm#xV8=6m] E똨bh?8%Tn"PY?8@Nqj EhZAh4ꟍ1yn3ƣB.^<8J[>tdɮDlaV=' = +A͈½K >>(9ZFTSP/tests/0000755000175000017500000000000014204053416012213 5ustar nileshnileshTSP/tests/testthat/0000755000175000017500000000000014204777652014072 5ustar nileshnileshTSP/tests/testthat/test-concorde.R0000644000175000017500000000457314204053416016760 0ustar nileshnileshlibrary(TSP) library(testthat) context("solve_TSP (Concorde and Linkern)") m <- rbind( c(0, 1, 0, 1), c(1, 0, 1, Inf), c(0, 1, 0, 1), c(1, Inf, 1, 0) ) d <- as.dist(m) tsp <- TSP(d) tsp skip_if_not( Sys.which("concorde") != "" && Sys.which("linkern") != "", message = "skipped test for concorde/linkern. Not installed.") o <- solve_TSP(tsp, method="concorde") expect_equivalent(tour_length(tsp, o), 4) # large numbers should be scaled right. o_large <- solve_TSP(tsp*2^15, method="concorde") expect_equivalent(o, o_large) o_large <- solve_TSP(tsp*10^10, method="concorde") expect_equivalent(o, o_large) # expect warning for rounding expect_warning(o_large <- solve_TSP(tsp*2^15+0.1, method="concorde")) expect_equivalent(o, o_large) # expect a warning for rounding expect_warning(o_round <- solve_TSP(tsp/0.3, method="concorde")) expect_equivalent(o, o_round) o <- solve_TSP(tsp, method="linkern") expect_equivalent(tour_length(tsp, o), 4) # test ATSP #data <- matrix(runif(5^2), ncol = 5, dimnames = list(1:5, 1:5)) data <- structure(c(0.13930352916941, 0.897691324818879, 0.509101516567171, 0.430898967897519, 0.141799068776891, 0.0334562903735787, 0.902805947931483, 0.203576791565865, 0.435874363640323, 0.0641707226168364, 0.101683554705232, 0.631239329231903, 0.555331876967102, 0.0829615572001785, 0.272443652851507, 0.215095571940765, 0.532841097796336, 0.795302660670131, 0.43256876245141, 0.582661165855825, 0.250269076088443, 0.164849652675912, 0.638499777996913, 0.857200765516609, 0.0134391817264259), .Dim = c(5L, 5L), .Dimnames = list( c("1", "2", "3", "4", "5"), c("1", "2", "3", "4", "5"))) atsp <- ATSP(data) ## Concorde (gives conversation warning for reformulation of ATSP to TSP) expect_warning(o1 <- solve_TSP(atsp, method = "concorde")) o2 <- solve_TSP(atsp, method = "concorde", as_TSP = TRUE) expect_equal(length(o1), 5L) expect_equal(length(o2), 5L) # Concorde should find the optimal solution of 0.8082826 expect_equal(round(tour_length(o1), 7), 0.8082826) expect_equal(round(tour_length(o2), 7), 0.8082826) ## Linkern expect_warning(o1 <- solve_TSP(atsp, method = "linkern")) o2 <- solve_TSP(atsp, method = "linkern", as_TSP = TRUE) expect_equal(length(o1), 5L) expect_equal(length(o2), 5L) # Linkern should find the optimal solution of 0.8082826 expect_equal(round(tour_length(o1), 7), 0.8082826) expect_equal(round(tour_length(o2), 7), 0.8082826) TSP/tests/testthat/test-solve_TSP.R0000644000175000017500000000451714204053416017040 0ustar nileshnileshlibrary(TSP) library(testthat) context("solve_TSP") m <- rbind( c(0, 1, 0, 1), c(1, 0, 1, Inf), c(0, 1, 0, 1), c(1, Inf, 1, 0) ) d <- as.dist(m) tsp <- TSP(d) tsp ## from matrix should give the same result expect_equal(as.numeric(tsp), as.numeric(TSP(as.matrix(d)))) ## test error on NA tsp_na <- tsp tsp_na[4] <- NA expect_error(o <- solve_TSP(tsp_na)) ## test Inf methods <- c("nearest_insertion", "cheapest_insertion", "farthest_insertion", "arbitrary_insertion", "nn", "repetitive_nn", "two_opt", "random", "identity") tours <- lapply(methods, FUN = function(m) solve_TSP(tsp, method = m)) names(tours) <- methods #tours tl <- sapply(tours, attr, "tour_length") expect_true(all(tl == 4 | tl == Inf)) ## test rep res <- solve_TSP(tsp, rep=10) tl <- attr("res", "tour_length") expect_true(all(tl == 4 | tl == Inf)) ## no two_opt res <- solve_TSP(tsp, two_opt=FALSE) tl <- attr("res", "tour_length") expect_true(all(tl == 4 | tl == Inf)) ## test special case: two cities d <- dist(rbind(c(0,0), c(1,1))) tsp2 <- TSP(d) tours2 <- lapply(methods, FUN = function(m) solve_TSP(tsp2, method = m)) expect_true(all(sapply(tours2, attr, "tour_length") == as.numeric(d)*2)) ## test special case: one city tsp1 <- TSP(dist(1)) tours1 <- lapply(methods, FUN = function(m) solve_TSP(tsp1, method = m)) expect_true(all(sapply(tours1, attr, "tour_length") == 0)) ## test ATSP (just for errors) #data <- matrix(runif(5^2), ncol = 5, dimnames = list(1:5, 1:5)) data <- structure(c(0.13930352916941, 0.897691324818879, 0.509101516567171, 0.430898967897519, 0.141799068776891, 0.0334562903735787, 0.902805947931483, 0.203576791565865, 0.435874363640323, 0.0641707226168364, 0.101683554705232, 0.631239329231903, 0.555331876967102, 0.0829615572001785, 0.272443652851507, 0.215095571940765, 0.532841097796336, 0.795302660670131, 0.43256876245141, 0.582661165855825, 0.250269076088443, 0.164849652675912, 0.638499777996913, 0.857200765516609, 0.0134391817264259), .Dim = c(5L, 5L), .Dimnames = list( c("1", "2", "3", "4", "5"), c("1", "2", "3", "4", "5"))) # best solution is 0.8082826 atsp <- ATSP(data) methods <- c("nearest_insertion", "cheapest_insertion", "farthest_insertion", "arbitrary_insertion", "nn", "repetitive_nn", "two_opt", "random", "identity") tours <- lapply(methods, FUN = function(m) solve_TSP(atsp, method = m)) names(tours) <- methods TSP/tests/testthat/test-ETSP.R0000644000175000017500000000070514204053416015730 0ustar nileshnileshlibrary(TSP) library(testthat) context("ETSP") x <- data.frame(x = runif(20), y = runif(20), row.names = LETTERS[1:20]) ## create a TSP etsp <- ETSP(x) etsp ## use some methods expect_equal(n_of_cities(etsp), 20L) expect_equal(labels(etsp), LETTERS[1:20]) ## solve tour <- solve_TSP(etsp) tour ## compare tour_length expect_equal(tour_length(etsp), tour_length(as.TSP(etsp))) expect_equal(tour_length(tour, etsp), tour_length(tour, as.TSP(etsp))) TSP/tests/testthat/test-TSPLIB.R0000644000175000017500000000174314204053416016155 0ustar nileshnileshlibrary(TSP) library(testthat) context("TSPLIB") set.seed(1234) x <- data.frame(x=runif(5), y=runif(5)) ## create TSP, ATSP and ETSP (2D) d <- round(dist(x), 3) ## TSP tsp <- TSP(d) tsp write_TSPLIB(tsp, file="example.tsp", precision = 6) #file.show("example.tsp") r <- read_TSPLIB("example.tsp", precision = 6) expect_equivalent(tsp, r) ## ATSP atsp <- ATSP(d) atsp write_TSPLIB(atsp, file="example.tsp", precision = 6) #file.show("example.tsp") r <- read_TSPLIB("example.tsp", precision = 6) expect_equivalent(atsp, r) ## ETSP (2D) etsp <- ETSP(round(x[,1:2], 3)) etsp write_TSPLIB(etsp, file="example.tsp", precision = 6) #file.show("example.tsp") r <- read_TSPLIB("example.tsp", precision = 6) expect_equivalent(etsp, r) ## Infinity d[2] <- Inf tsp <- TSP(d) write_TSPLIB(tsp, file="example.tsp", precision = 6) r <- read_TSPLIB("example.tsp", precision = 6) expect_equivalent(tsp[-2], r[-2]) expect_more_than(r[2], range(tsp, finite = TRUE)[2]) ## clean up unlink("example.tsp") TSP/tests/testthat/test-insert_cut_etc.R0000644000175000017500000000322414204053416020166 0ustar nileshnileshlibrary("testthat") library("TSP") data("USCA50") context("insert_dummy") tsp <- insert_dummy(USCA50, label = "cut") #labels(tsp) expect_equal(n_of_cities(tsp), n_of_cities(USCA50) + 1L) expect_equal(labels(tsp), c(labels(USCA50), "cut")) tsp5 <- insert_dummy(USCA50, n = 5, label = "cut") #labels(tsp5) expect_equal(n_of_cities(tsp5), n_of_cities(USCA50) + 5L) expect_equal(labels(tsp5), c(labels(USCA50), rep("cut", 5))) context("cut_tour") tour <- solve_TSP(tsp5) path <- cut_tour(tour, "cut") expect_equal(sum(sapply(path, length)), n_of_cities(USCA50)) #labels(tour) #path ## border cases tour <- TOUR(1:10) expect_equal(cut_tour(tour, "1"), 2:10) expect_equal(cut_tour(tour, 1), 2:10) expect_equal(cut_tour(tour, "10"), 1:9) expect_equal(cut_tour(tour, 10), 1:9) path <- cut_tour(tour, 1:3) expect_equal(length(path), 3L) expect_equal(sum(sapply(path, length)), length(tour) - 3L) #path path <- cut_tour(tour, 1:3, exclude_cut = FALSE) expect_equal(length(path), 3L) expect_equal(sum(sapply(path, length)), length(tour)) #path path <- cut_tour(tour, 8:10) expect_equal(length(path), 3L) expect_equal(sum(sapply(path, length)), length(tour) - 3L) #path path <- cut_tour(tour, 8:10, exclude_cut = FALSE) expect_equal(length(path), 3L) expect_equal(sum(sapply(path, length)), length(tour)) #path tour <- TOUR(1) path <- cut_tour(tour, 1) expect_equal(length(path), 0L) #path path <- cut_tour(tour, 1, exclude_cut = FALSE) expect_equal(length(path), 1L) #path context("reformulate") ## reformulate atsp <- as.ATSP(USCA50) expect_equal(tour_length(USCA50), tour_length(atsp)) tsp <- reformulate_ATSP_as_TSP(atsp) expect_equal(n_of_cities(atsp)*2, n_of_cities(tsp)) TSP/tests/testthat.R0000644000175000017500000000007014204053416014173 0ustar nileshnileshlibrary("testthat") library("TSP") test_check("TSP") TSP/R/0000755000175000017500000000000014204723464011261 5ustar nileshnileshTSP/R/ATSP.R0000644000175000017500000001034414204054400012140 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## create a (asymmetric) ATSP problem #' Class ATSP -- Asymmetric traveling salesperson problem #' #' Constructor to create an instance of the asymmetric traveling salesperson #' problem (ATSP) and some auxiliary methods. #' #' Objects of class `ATSP` are internally represented by a matrix (use #' `as.matrix()` to get just the matrix). #' #' ATSPs can be transformed into (larger) symmetric TSPs using #' [reformulate_ATSP_as_TSP()]. #' #' @family TSP #' #' @param x,object an object (a square matrix) to be converted into an #' `ATSP` or, for the methods, an object of class `ATSP`. #' @param labels optional city labels. If not given, labels are taken from #' `x`. #' @param method optional name of the distance metric. #' @param col color scheme for image. #' @param order order of cities as an integer vector or an object of class #' `TOUR`. #' @param ... further arguments are passed on. #' @returns #' - `ATSP()` returns `x` as an object of class `ATSP`. #' - `n_of_cities()` returns the number of cities in `x`. #' - `labels()` returns a vector with the names of the cities in `x`. #' @author Michael Hahsler #' @keywords classes #' @examples #' data <- matrix(runif(10^2), ncol = 10, dimnames = list(1:10, 1:10)) #' #' atsp <- ATSP(data) #' atsp #' #' ## use some methods #' n_of_cities(atsp) #' labels(atsp) #' #' ## calculate a tour #' tour <- solve_TSP(atsp, method = "nn") #' tour #' #' tour_length(tour) #' #' image(atsp, tour) #' @export ATSP <- function(x, labels = NULL, method = NULL) { if(inherits(x, "ATSP")) return(x) atsp <- as.ATSP(x) if(!is.null(labels)) dimnames(atsp) <- list(labels, labels) if(!is.null(method)) attr(atsp, "method") <- method atsp } #' @rdname ATSP #' @export as.ATSP <- function(x) UseMethod("as.ATSP") #' @rdname ATSP #' @export as.ATSP.matrix <- function(x){ .isSquare <- function(x) (dim(x)[1] == dim(x)[2]) if(!.isSquare(x)) stop("ATSP requires a square matrix") ## check for NAs if(any(is.nan(x))) stop(paste(sQuote("NAs"), "not supported")) ## make sure we have labels if(is.null(dimnames(x))) dimnames(x) <- list(1:dim(x)[1], 1: dim(x)[1]) if(is.null(colnames(x))) colnames(x) <- rownames(x) if(is.null(rownames(x))) rownames(x) <- colnames(x) ## make sure data is numeric mode(x) <- "numeric" class(x) <- c("ATSP", class(x)) x } #' @rdname ATSP #' @export as.ATSP.dist <- function(x){ method <- attr(x, "method") x <- as.ATSP(as.matrix(x)) ## make sure data is numeric mode(x) <- "numeric" class(x) <- c("ATSP", class(x)) attr(x, "method") <- method x } ## print #' @rdname ATSP #' @export print.ATSP <- function(x, ...) { method <- attr(x, "method") if(is.null(method)) method <- "unknown" cat("object of class", sQuote(class(x)[1]), " (asymmetric TSP) \n") cat(n_of_cities(x), "cities", paste("(distance ", sQuote(method),")", sep=""), "\n") } ## number of cities #' @rdname ATSP #' @export n_of_cities.ATSP <- function(x) nrow(x) ## labels #' @rdname ATSP #' @export labels.ATSP <- function(object, ...) dimnames(object)[[1]] ## image #' @rdname ATSP #' @export image.ATSP <- function(x, order, col = gray.colors(64), ...) { p <- n_of_cities(x) if(missing(order)) order <- 1:p graphics::image.default(1:p, 1:p, x[order, order], col = col, ...) } ## coerce to matrix #' @rdname ATSP #' @export as.matrix.ATSP <- function(x, ...){ unclass(x) } TSP/R/tour_length.R0000644000175000017500000000555414204061545013742 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Calculate the length of a tour #' #' Calculate the length of a [TOUR] for a [TSP]. #' #' If no `tsp` is specified, then the tour length stored in `x` as #' attribute `"tour_length"` is returned. If `tsp` is given then the #' tour length is recalculated using the specified TSP problem. #' #' If a distance in the tour is infinite, the result is also infinite. If the #' tour contains positive and negative infinite distances then the method #' returns `NA`. #' #' @family TOUR #' #' @param x a TSP problem or a [TOUR]. #' @param order an object of class `TOUR` #' @param tsp as TSP object. #' @param ... further arguments are currently unused. #' @author Michael Hahsler #' @keywords optimize #' @examples #' #' data("USCA50") #' #' ## original order #' tour_length(solve_TSP(USCA50, method="identity")) #' #' ## length of a manually created (random) tour #' tour <- TOUR(sample(seq(n_of_cities(USCA50)))) #' tour #' tour_length(tour) #' tour_length(tour, USCA50) #' @export tour_length <- function(x, ...) UseMethod("tour_length") #' @rdname tour_length #' @export tour_length.TSP <- function(x, order, ...) { n <- n_of_cities(x) if(missing(order)) order <- 1:n .Call(R_tour_length_dist, x, order) } #' @rdname tour_length #' @export tour_length.ATSP <- function(x, order, ...) { n <- n_of_cities(x) if(missing(order)) order <- 1:n .Call(R_tour_length_matrix, x, order) } #' @rdname tour_length #' @export tour_length.ETSP <- function(x, order, ...) { n <- n_of_cities(x) if(n != nrow(x)) stop("x and order do not have the same number of cities!") if(missing(order)) order <- 1:n sum(sapply(1:(n-1), FUN = function(i) dist(x[order[i:(i+1)],]))) + as.numeric(dist(x[order[c(n,1)],])) } #' @rdname tour_length #' @export tour_length.TOUR <- function(x, tsp = NULL, ...) { if(is.null(tsp)) { len <- attr(x, "tour_length") if(is.null(len)) len <- NA return(len) } tour_length(x = tsp, order = x) } ### faster for small n but takes O(n^2) memory #tour_length.ETSP <- function(x, order) tour_length(as.TSP(x), order) TSP/R/ETSP.R0000644000175000017500000000733714204300621012153 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Class ETSP -- Euclidean traveling salesperson problem #' #' Constructor to create an instance of a Euclidean traveling salesperson #' problem (TSP) represented by city coordinates and some auxiliary methods. #' #' Objects of class `ETSP` are internally represented as a `matrix` #' objects (use `as.matrix()` to get the `matrix` object). #' #' @family TSP #' #' @param x,object an object (data.frame or matrix) to be converted into a #' `ETSP` or, for the methods, an object of class `ETSP`. #' @param labels optional city labels. If not given, labels are taken from #' `x`. #' @param col color scheme for image. #' @param order order of cities for the image as an integer vector or an object #' of class [TOUR]. #' @param tour,y a tour to be visualized. #' @param tour_lty,tour_col line type and color for tour. #' @param ... further arguments are passed on. #' @returns #' - `ETSP()` returns `x` as an object of class `ETSP`. #' - `n_of_cities()` returns the number of cities in `x`. #' - `labels()` returns a vector with the names of the cities in `x`. #' @author Michael Hahsler #' @keywords classes #' @examples #' #' x <- data.frame(x = runif(20), y = runif(20), row.names = LETTERS[1:20]) #' #' ## create a TSP #' etsp <- ETSP(x) #' etsp #' #' ## use some methods #' n_of_cities(etsp) #' labels(etsp) #' #' ## plot ETSP and solution #' tour <- solve_TSP(etsp) #' tour #' #' plot(etsp, tour, tour_col = "red") #' @export ETSP <- function(x, labels = NULL) { if(inherits(x, "ETSP")) return(x) x <- as.ETSP(x) if(!is.null(labels)) rownames(x) <- labels x } ## coercion #' @rdname ETSP #' @export as.ETSP <- function(x) UseMethod("as.ETSP") #' @rdname ETSP #' @export as.ETSP.matrix <- function(x){ mode(x) <- "numeric" if(is.null(rownames(x))) rownames(x) <- 1:nrow(x) class(x) <- c("ETSP", class(x)) x } #' @rdname ETSP #' @export as.ETSP.data.frame <- function(x){ as.ETSP(as.matrix(x)) } #' @rdname ETSP #' @export as.TSP.ETSP <- function(x) TSP(dist(x)) #' @rdname ETSP #' @export as.matrix.ETSP <- function(x, ...) { unclass(x) } ## print #' @rdname ETSP #' @export print.ETSP <- function(x, ...) { cat("object of class", sQuote(class(x)[1]), "\n") cat(n_of_cities(x), "cities", "(Euclidean TSP)\n") } ## number of cities #' @rdname ETSP #' @export n_of_cities.ETSP <- function(x) nrow(x) ## labels #' @rdname ETSP #' @export labels.ETSP <- function(object, ...) rownames(object) ## image #' @rdname ETSP #' @export image.ETSP <- function(x, order, col = gray.colors(64), ...) { p <- n_of_cities(x) if(missing(order)) order <- 1:p x <- as.TSP(x) graphics::image.default(1:p, 1:p, as.matrix(x)[order, order], col = col, ...) } #' @rdname ETSP #' @export plot.ETSP <- function(x, y = NULL, tour = NULL, tour_lty = 2, tour_col = 1,...) { x <- as.matrix(x) plot(x, y = NULL, ...) if(!is.null(y)) tour <- TOUR(y) if(!is.null(tour)) polygon(x[tour,], lty = tour_lty, border = tour_col) } TSP/R/TSP.R0000644000175000017500000001055714204301252012045 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Class TSP -- Symmetric traveling salesperson problem #' #' Constructor to create an instance of a symmetric traveling salesperson #' problem (TSP) and some auxiliary methods. #' #' Objects of class `TSP` are internally represented as `dist` #' objects (use [as.dist()] to get the `dist` object). #' #' @family TSP #' #' @param x,object an object (currently `dist` or a symmetric matrix) to #' be converted into a `TSP` or, for the methods, an object of class #' `TSP`. #' @param labels optional city labels. If not given, labels are taken from #' `x`. #' @param method optional name of the distance metric. If `x` is a #' `dist` object, then the method is taken from that object. #' @param col color scheme for image. #' @param order order of cities for the image as an integer vector or an object #' of class [TOUR]. #' @param ... further arguments are passed on. #' @returns #' - `TSP()` returns `x` as an object of class `TSP`. #' - `n_of_cities()` returns the number of cities in `x`. #' - `labels()` returns a vector with the names of the cities in `x`. #' @author Michael Hahsler #' @keywords classes #' @examples #' data("iris") #' d <- dist(iris[-5]) #' #' ## create a TSP #' tsp <- TSP(d) #' tsp #' #' ## use some methods #' n_of_cities(tsp) #' labels(tsp) #' image(tsp) #' @export TSP <- function(x, labels = NULL, method = NULL) { if(inherits(x, "TSP")) return(x) x <- as.TSP(x) if(!is.null(labels)) attr(x, "Labels") <- labels if(!is.null(method)) attr(x, "method") <- method x } ## coercion #' @rdname TSP #' @export as.TSP <- function(x) UseMethod("as.TSP") #' @rdname TSP #' @export as.TSP.dist <- function(x){ ## make sure we have a upper triangle matrix w/o diagonal x <- as.dist(x, diag = FALSE, upper = FALSE) ## make sure we have labels if(is.null(attr(x, "Labels"))) attr(x, "Labels") <- c(1:n_of_cities(x)) if(any(is.nan(x))) stop(paste(sQuote("NAs"), "not supported")) ## make sure data is numeric mode(x) <- "numeric" class(x) <- c("TSP", class(x)) x } #' @rdname TSP #' @export as.TSP.matrix <- function(x){ if(!isSymmetric(x)) stop("TSP requires a symmetric matrix") method <- attr(x, "method") x <- as.dist(x, diag = FALSE, upper = FALSE) attr(x, "method") <- method ## make sure we have labels if(is.null(attr(x, "Labels"))) attr(x, "Labels") <- c(1:n_of_cities(x)) if(any(is.nan(x))) stop(paste(sQuote("NAs"), "not supported")) ## make sure data is numeric mode(x) <- "numeric" class(x) <- c("TSP", class(x)) x } #' @rdname TSP #' @param m a TSP object to be converted to a [dist] object. #' @export as.dist.TSP <- function(m, ...) { class(m) <- "dist" as.dist(m, ...) } ## print #' @rdname TSP #' @export print.TSP <- function(x, ...) { method <- attr(x, "method") if(is.null(method)) method <- "unknown" cat("object of class", sQuote(class(x)[1]), "\n") cat(n_of_cities(x), "cities", paste("(distance ", sQuote(method),")", sep=""), "\n") } ## generic for n_of_cities #' @rdname TSP #' @export n_of_cities <- function(x) UseMethod("n_of_cities") ## number of cities #' @rdname TSP #' @export n_of_cities.TSP <- function(x) attr(x, "Size") n_of_cities.default <- n_of_cities.TSP ## labels #' @rdname TSP #' @export labels.TSP <- function(object, ...) attr(object, "Labels") ## image #' @rdname TSP #' @export image.TSP <- function(x, order, col = gray.colors(64), ...) { p <- n_of_cities(x) if(missing(order)) order <- 1:p graphics::image.default(1:p, 1:p, as.matrix(x)[order, order], col = col, ...) } TSP/R/TOUR.R0000644000175000017500000000711414204277520012175 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Class TOUR -- Solution to a traveling salesperson problem #' #' Class to store the solution of a TSP. Objects of this class are returned by #' TSP solvers in this package. Essentially, an object of class `TOUR` is #' a permutation vector containing the order of cities to visit. #' #' Since an object of class `TOUR` is an integer vector, it can be #' subsetted as an ordinary vector or coerced to an integer vector using #' `as.integer()`. It also contains the names of the objects as labels. #' Additionally, `TOUR` has the following attributes: `"method"`, #' `"tour_length"`. #' #' For most functions, e.g., [tour_length()] or [image.TSP()], the #' `TSP/ATSP` object used to find the tour is still needed, since the tour #' does not contain the distance information. #' #' @family TOUR #' #' @param x an integer permutation vector or, for the methods an object of #' class [TOUR]. #' @param object data (an integer vector) which can be coerced to `TOUR`. #' @param method character string; method used to create the tour. #' @param tsp `TSP` object the tour applies to. If available then the tour #' will include the tour length. Also the labels of the cities will be #' available in the tour (otherwise the labels of `x` are used). #' @param ... further arguments are passed on. #' @author Michael Hahsler #' @keywords classes #' @examples #' TOUR(1:10) #' #' ## calculate a tour #' data("USCA50") #' tour <- solve_TSP(USCA50) #' tour #' #' ## get permutation vector #' as.integer(tour) #' #' ## get tour length directly from tour #' attr(tour, "tour_length") #' #' ## show labels #' labels(tour) #' @export TOUR <- function(x, method=NA, tsp=NULL){ if(inherits(x, "TOUR")) return(x) x <- as.TOUR(x) attr(x, "method") <- as.character(method) if(!is.null(tsp)){ attr(x, "tour_length") <- tour_length(x, tsp) names(x) <- labels(tsp)[x] } x } ## coercion #' @rdname TOUR #' @export as.TOUR <- function(object) UseMethod("as.TOUR") #' @rdname TOUR #' @export as.TOUR.numeric <- function(object){ l <- labels(object) ### preserve lables object <- as.integer(object) names(object) <- l as.TOUR(object) } #' @rdname TOUR #' @export as.TOUR.integer <- function(object){ ## check tour if(any(object < 1) || any(object > length(object)) || any(is.na(object))) stop("tour contains illegal elements.") if(any(duplicated(object))) stop("tour indices are not unique.") class(object) <- c("TOUR", class(object)) object } #' @rdname TOUR #' @export print.TOUR <- function(x, ...){ cat("object of class", sQuote(class(x)[1]), "\n") cat("result of method", sQuote(attr(x, "method")), "for", length(x), "cities\n") if(!is.null(attr(x, "tour_length"))) cat("tour length:", attr(x, "tour_length"), "\n") else cat("tour length: unknown\n") } TSP/R/insert_dummy.R0000644000175000017500000001155114204063545014123 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## insert a dummy city ##generic #' Insert dummy cities into a distance matrix #' #' Inserts dummy cities into a TSP problem. A #' dummy city has the same, constant distance (0) to all other cities and is #' infinitely far from other dummy cities. A dummy city can be used to #' transform a shortest Hamiltonian path problem (i.e., finding an optimal #' linear order) into a shortest Hamiltonian cycle problem which can be solved #' by a TSP solvers (Garfinkel 1985). #' #' Several dummy cities can be used together with a TSP solvers to perform #' rearrangement clustering (Climer and Zhang 2006). #' #' The dummy cities are inserted after the other cities in `x`. #' #' A `const` of 0 is guaranteed to work if the TSP finds the optimal #' solution. For heuristics returning suboptimal solutions, a higher #' `const` (e.g., `2 * max(x)`) might provide better results. #' #' @family TSP #' #' @param x an object with a TSP problem. #' @param n number of dummy cities. #' @param const distance of the dummy cities to all other cities. #' @param inf distance between dummy cities. #' @param label labels for the dummy cities. If only one label is given, it is #' reused for all dummy cities. #' @returns returns an object of the same class as `x`. #' #' @author Michael Hahsler #' @references Sharlee Climer, Weixiong Zhang (2006): Rearrangement Clustering: #' Pitfalls, Remedies, and Applications, \emph{Journal of Machine Learning #' Research} \bold{7}(Jun), pp. 919--943. #' #' R.S. Garfinkel (1985): Motivation and modelling (chapter 2). In: E. L. #' Lawler, J. K. Lenstra, A.H.G. Rinnooy Kan, D. B. Shmoys (eds.) The #' traveling salesman problem - A guided tour of combinatorial optimization, #' Wiley & Sons. #' @keywords manip #' @examples #' ## Example 1: Find a short Hamiltonian path #' set.seed(1000) #' x <- data.frame(x = runif(20), y = runif(20), row.names = LETTERS[1:20]) #' #' tsp <- TSP(dist(x)) #' #' ## add a dummy city to cut the tour into a path #' tsp <- insert_dummy(tsp, label = "cut") #' tour <- solve_TSP(tsp) #' tour #' #' plot(x) #' lines(x[cut_tour(tour, cut = "cut"),]) #' #' #' ## Example 2: Rearrangement clustering of the iris dataset #' set.seed(1000) #' data("iris") #' tsp <- TSP(dist(iris[-5])) #' #' ## insert 2 dummy cities to creates 2 clusters #' tsp_dummy <- insert_dummy(tsp, n = 3, label = "boundary") #' #' ## get a solution for the TSP #' tour <- solve_TSP(tsp_dummy) #' #' ## plot the reordered distance matrix with the dummy cities as lines separating #' ## the clusters #' image(tsp_dummy, tour) #' abline(h = which(labels(tour)=="boundary"), col = "red") #' abline(v = which(labels(tour)=="boundary"), col = "red") #' #' ## plot the original data with paths connecting the points in each cluster #' plot(iris[,c(2,3)], col = iris[,5]) #' paths <- cut_tour(tour, cut = "boundary") #' for(p in paths) lines(iris[p, c(2,3)]) #' #' ## Note: The clustering is not perfect! #' @export insert_dummy <- function(x, n = 1, const = 0, inf = Inf, label = "dummy") UseMethod("insert_dummy") ## use insert dummy from ATSP #' @rdname insert_dummy #' @export insert_dummy.TSP <- function(x, n = 1, const = 0, inf = Inf, label = "dummy") { x <- insert_dummy(ATSP(x), n, const, inf, label) TSP(x) } #' @rdname insert_dummy #' @export insert_dummy.ATSP <- function(x, n = 1, const = 0, inf = Inf, label = "dummy") { method <- attr(x, "method") n <- as.integer(n) p <- n_of_cities(x) if(length(label) == 1 && n > 1) label = rep(label, n) ## add dummy rows/columns x <- cbind(x, matrix(const, ncol = n, nrow = p, dimnames = list(NULL, label))) x <- rbind(x, matrix(const, ncol = p+n, nrow = n, dimnames = list(label, NULL))) ## place inf between dummies if(n>1) { x[(p+1):(p+n), (p+1):(p+n)] <- inf diag(x[(p+1):(p+n), (p+1):(p+n)]) <- 0 } attr(x, "method") <- method ATSP(x) } #' @rdname insert_dummy #' @export insert_dummy.ETSP <- function(x, n = 1, const = 0, inf = Inf, label = "dummy") stop("Dummy cities cannot be used with ETSP! Convert the problem into a TSP.") TSP/R/tsp_nn.R0000644000175000017500000000446014204053416012702 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## nearest neighbor algorithm tsp_nn <- function(x, control = NULL) { ## parameter x comes checked from solve_TSP/solve_ATSP n <- n_of_cities(x) ## we use a matrix for now (coveres TSP and ATSP) x <- as.matrix(x) control <- .get_parameters(control, list( start = sample(n, 1) )) start <- control$start if(start < 0 || start > n) stop(paste("illegal value for", sQuote("start"))) placed <- logical(n) order <- integer(n) ## place first city current <- start order[1L] <- current placed[current] <- TRUE while(length(rest <- which(!placed)) > 0L) { ## nearest <- rest[which.min(x[current,rest])] ## which.min has problems with Inf ## so we can break ties randomly now too x_sub <- x[current, rest] current <- rest[which(x_sub == min(x_sub, na.rm = TRUE))] if(length(current) > 1L) current <- sample(current, 1) ## place city order[n + 1L - length(rest)] <- current placed[current] <- TRUE } order } ## repetitive NN tsp_repetitive_nn <- function(x, control){ n <- n_of_cities(x) #tours <- lapply(1:n, function(i) tsp_nn(x, control = list(start = i))) ## no backend would warn! i <- 0L ## for R CMD check (no global binding for i) suppressWarnings( tours <- foreach(i = 1:n) %dopar% tsp_nn(x, control = list(start = i)) ) lengths <- sapply(tours, FUN = function(i) tour_length(x, i)) tours[[which.min(lengths)]] } TSP/R/AAA_parameter.R0000644000175000017500000000405514204053416014023 0ustar nileshnilesh####################################################################### # Code to check parameter/control objects # Copyrigth (C) 2011-2016 Michael Hahsler # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## helper to parse parameter lists with defaults .nodots <- function(...) { l <- list(...) if(length(l) > 0L) warning("Unknown arguments: ", paste(names(l), "=",l, collapse=", ")) } .get_parameters <- function(parameter, defaults) { defaults <- as.list(defaults) parameter <- as.list(parameter) ## add verbose if(is.null(defaults$verbose)) defaults$verbose <- FALSE if(length(parameter) != 0) { o <- pmatch(names(parameter), names(defaults)) ## unknown parameter # if(any(is.na(o))){ # warning(sprintf(ngettext(length(is.na(o)), # "Unknown parameter: %s", # "Unknown parameters: %s"), # paste(names(parameter)[is.na(o)], # collapse = ", ")), call. = FALSE, immediate. = TRUE) # # cat("Available parameter (with default values):\n") # #print(defaults) # cat(rbind(names(defaults)," = ", gsub("\n"," ",as.character(defaults))), # sep=c("\t"," ","\n")) # } defaults[o[!is.na(o)]] <- parameter[!is.na(o)] } if(defaults$verbose) { cat("Used control parameters:\n") #print(defaults) cat(rbind(names(defaults)," = ", strtrim(gsub("\n"," ",as.character(defaults)), 50)), sep=c("\t"," ","\n")) } defaults } TSP/R/tsp_insertion.R0000644000175000017500000001015314204053416014275 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## Insertion algorithms ## (Rosenkrantz et al. 1977) tsp_insertion <- function(x, type = "nearest", control = NULL){ ## since sample has an annoying convenience feature for ## lenght(x) == 1 choose1 <- function(x) if(length(x) > 1) sample(x, 1) else x ## this is slower than which.min and which.max but works also ## correctly for only values Inf in x and breaks ties randomly choose1_min <- function(x) choose1(which(x == min(x))) choose1_max <- function(x) choose1(which(x == max(x))) types <- c("nearest", "farthest", "cheapest", "arbitrary") type_num <- pmatch(type, types) if(is.na(type_num)) stop(paste("Unknown insertion type: ", sQuote(type))) ## x comes checked form solve_TSP/solve_ATSP n <- n_of_cities(x) ## we use a matrix for now (covers TSP and ATSP) asym <- inherits(x, "ATSP") x <- as.matrix(x) ## place first city control <- .get_parameters(control, list( start = sample(n, 1) )) start <- as.integer(control$start) if(start < 0 || start > n) stop(paste("illegal value for", sQuote("start"))) placed <- logical(n) placed[start] <- TRUE order <- c(start) ## place other cities while(any(placed == FALSE)) { ## find city to be inserted ks <- which(!placed) js <- which(placed) ## nearest / farthest if(type_num < 3) { m <- x[ks,js, drop = FALSE] ## for the asymmetric case we have to take distances ## from and to the city into account if(asym){ m <- cbind(m, t(x)[ks,js, drop = FALSE]) } ds <- sapply(1:length(ks), FUN = function(i) min(m[i, , drop = FALSE])) ## nearest/farthest insertion winner_index <- if(type_num == 1) choose1_min(ds) else choose1_max(ds) k <- ks[winner_index] } ## cheapest else if(type_num == 3) { winner_index <- choose1_min(sapply(ks, FUN = function(k) min(.Call(R_insertion_cost, x, order, k)) )) k <- ks[winner_index] ## we look for the optimal insertion place for k again later ## this is not necessary, but it is more convenient ## to reuse the code for the other insertion algorithms for now. } ## random else if(type_num == 4) k <- choose1(ks) ## just in case else stop("unknown insertion type") ## do insertion placed[k] <- TRUE if(length(order) == 1) order <- append(order, k) else { pos <- choose1_min(.Call(R_insertion_cost, x, order, k)) order <- append(order, k, after = pos) } } order } ### faster arbitrary insertion (random sampling takes care of breaking ties) tsp_insertion_arbitrary <- function(x, control = NULL){ ## x comes checked form solve_TSP/solve_ATSP n <- n_of_cities(x) control <- .get_parameters(control, list()) ## we use a matrix for now (covers TSP and ATSP) x <- as.matrix(x) ## deal with special cases if(nrow(x) == 1) return(1L) if(nrow(x) == 2) return(sample(1:2)) x[is.na(x)] <- Inf ## random order rorder <- sample(n) x <- x[rorder, rorder] ## FIXME: specify start city ## place first two cities order <- integer(n) order[1:2] <- 1:2 ## place other cities for(i in 3:n) { pos <- which.min(.Call(R_insertion_cost, x, order[1:(i-1L)], i)) + 1L order[((pos):i)+1L] <- order[(pos):i] order[pos] <- i } rorder[order] } TSP/R/TSPLIB.R0000644000175000017500000002373514204063370012404 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Read and write TSPLIB files #' #' Reads and writes TSPLIB format files. TSPLIB files can be used by most TSP #' solvers. Sample instances for the TSP in TSPLIB format are available on the #' TSPLIB homepage (see references). #' #' In the TSPLIB format distances are represented by integer values. Therefore, #' if `x` contains `double` values (which is normal in R) the values #' given in `x` are multiplied by \eqn{10^{precision}} before coercion to #' `integer`. Note that therefore all results produced by programs using #' the TSPLIB file as input need to be divided by \eqn{10^{precision}} (i.e., #' the decimal point has to be shifted `precision` placed to the left). #' #' Currently only the following `EDGE_WEIGHT_TYPE`s are implemented: #' `EXPLICIT`, `EUC_2D` and `EUC_3D`. #' #' @name TSPLIB #' @aliases TSPLIB #' @family TSP #' #' @param x an object with a TSP problem. #' `NA`s are not allowed. #' @param file file name or a [connection]. #' @param precision controls the number of decimal places used to represent #' distances (see details). If `x` already is `integer`, this #' argument is ignored and `x` is used as is. #' @param inf replacement value for `Inf` (TSPLIB format cannot handle #' `Inf`). If `inf` is `NULL`, a large value of \eqn{max(x) + 2 #' range(x)} (ignoring infinite entries) is used. #' @param neg_inf replacement value for `-Inf`. If no value is specified, #' a small value of \eqn{min(x) - 2 range(x)} (ignoring infinite entries) is #' used. #' @returns returns an object of class `TSP` or #' `ATSP`. #' @author Michael Hahsler #' @references TSPLIB home page, #' \url{http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/} #' @keywords file #' @examples #' #' ## Drilling problem from TSP #' drill <- read_TSPLIB(system.file("examples/d493.tsp", package = "TSP")) #' drill #' tour <- solve_TSP(drill, method = "nn", two_opt = TRUE) #' tour #' plot(drill, tour, cex=.6, col = "red", pch= 3, main = "TSPLIB: d493") #' #' #' ## Write and read data in TSPLIB format #' x <- data.frame(x=runif(5), y=runif(5)) #' #' ## create TSP, ATSP and ETSP (2D) #' tsp <- TSP(dist(x)) #' atsp <- ATSP(dist(x)) #' etsp <- ETSP(x[,1:2]) #' #' write_TSPLIB(tsp, file="example.tsp") #' #file.show("example.tsp") #' r <- read_TSPLIB("example.tsp") #' r #' #' write_TSPLIB(atsp, file="example.tsp") #' #file.show("example.tsp") #' r <- read_TSPLIB("example.tsp") #' r #' #' write_TSPLIB(etsp, file="example.tsp") #' #file.show("example.tsp") #' r <- read_TSPLIB("example.tsp") #' r #' #' ## clean up #' unlink("example.tsp") #' @export read_TSPLIB <- function(file, precision = 0) { ## TSP or ATSP type <- NULL lines <- readLines(file) ## get info metadata <- grep(":", lines) info <- list() lapply(strsplit(lines[metadata], "[[:space:]]*:[[:space:]]*"), FUN = function(x) { x[2] <- sub("[[:space:]]*$","",x[2]) ## kill trailing spaces info[[toupper(x[1])]] <<- toupper(x[2]) }) ## check if(substr(info$TYPE, 1, 3) == "TSP") type <- "TSP" else if(substr(info$TYPE, 1, 3) == "ATS") type <- "ATSP" else stop ("Currently the only implemented TYPEs are TSP and ATS(P)!") dim <- as.integer(info$DIMENSION) if(info$EDGE_WEIGHT_TYPE == "EXPLICIT") { ## get data data_start <- grep("EDGE_WEIGHT_SECTION", lines, ignore.case = TRUE) if(length(data_start) == 0) stop("EDGE_WEIGHT_SECTION missing") data <- lines[(data_start+1):length(lines)] data <- sub("EOF", "", data, ignore.case = TRUE) ## kill optional EOF data <- sub("^[[:space:]]*", "", data)## kill leading spaces data <- strsplit(paste(data, collapse = " "), "[[:space:]]+")[[1]] ## remove everything after the data if(info$EDGE_WEIGHT_FORMAT == "FULL_MATRIX") data <- data[1:(dim^2)] else if(info$EDGE_WEIGHT_FORMAT == "UPPER_ROW" || info$EDGE_WEIGHT_FORMAT == "LOWER_COL" || info$EDGE_WEIGHT_FORMAT == "UPPER_COL" || info$EDGE_WEIGHT_FORMAT == "LOWER_ROW") data <- data[1:(dim*(dim-1)/2)] else if(info$EDGE_WEIGHT_FORMAT == "UPPER_DIAG_ROW" || info$EDGE_WEIGHT_FORMAT == "LOWER_DIAG_COL" || info$EDGE_WEIGHT_FORMAT == "UPPER_DIAG_COL" || info$EDGE_WEIGHT_FORMAT == "LOWER_DIAG_ROW") data <- data[1:(dim*(dim-1)/2 + dim)] data <- as.numeric(data) if(precision != 0) data <- data / 10^precision ## ATSP if(type == "ATSP") { if(info$EDGE_WEIGHT_FORMAT == "FULL_MATRIX"){ ## todo: find out if FULL_MATRIX is row or column oriented? data <- matrix(data, ncol = dim) }else stop("ATSP needs EDGE_WEIGHT_FORMAT FULL_MATRIX!") return(ATSP(data)) } ## TSP ## we have only symmetric data here! if(info$EDGE_WEIGHT_FORMAT == "FULL_MATRIX") { data <- as.dist(matrix(data, ncol = dim)) }else if(info$EDGE_WEIGHT_FORMAT == "UPPER_ROW" || info$EDGE_WEIGHT_FORMAT == "LOWER_COL") { class(data) <- "dist" attr(data, "Size") <- dim attr(data, "Diag") <- FALSE attr(data, "Upper") <- FALSE }else if(info$EDGE_WEIGHT_FORMAT == "UPPER_COL" || info$EDGE_WEIGHT_FORMAT == "LOWER_ROW") { m <- matrix(NA, nrow = dim, ncol = dim) m[upper.tri(m, diag = FALSE)] <- data data <- as.dist(t(m)) }else if(info$EDGE_WEIGHT_FORMAT == "UPPER_DIAG_ROW" || info$EDGE_WEIGHT_FORMAT == "LOWER_DIAG_COL") { class(data) <- "dist" attr(data, "Size") <- dim attr(data, "Diag") <- TRUE attr(data, "Upper") <- FALSE data <- as.dist(data, diag = FALSE) }else if(info$EDGE_WEIGHT_FORMAT == "UPPER_DIAG_COL" || info$EDGE_WEIGHT_FORMAT == "LOWER_DIAG_ROW") { m <- matrix(NA, nrow = dim, ncol = dim) m[upper.tri(m, diag = TRUE)] <- data data <- as.dist(t(m)) }else stop("The specified EDGE_WEIGHT_FORMAT is not implemented!") return(TSP(data)) } else if (info$EDGE_WEIGHT_TYPE == "EUC_2D" || info$EDGE_WEIGHT_TYPE == "EUC_2D") { data_start <- grep("NODE_COORD_SECTION", lines, ignore.case = TRUE) if(length(data_start) == 0) stop("NODE_COORD_SECTION missing") data <- lines[(data_start+1):(data_start+dim)] data <- matrix(as.numeric(unlist(strsplit(data, split="\\s+"))), nrow = dim, byrow = TRUE) data <- data[,-1] return(ETSP(data)) } stop("EDGE_WEIGHT_TYPE not implemented! Implemented types are EXPLICIT, EUC_2D and EUC_3D") } #' @rdname TSPLIB #' @export write_TSPLIB <- function(x, file, precision = 6, inf = NULL, neg_inf = NULL) UseMethod("write_TSPLIB") ## write a simple TSPLIB format file from an object of class TSP ## (contains a dist object or a symmetric matrix) ## TSP has data as integer #' @rdname TSPLIB #' @export write_TSPLIB.TSP <- function(x, file, precision = 6, inf = NULL, neg_inf = NULL) { ## prepare data (NA, Inf) if(any(is.na(x))) stop("NAs not allowed!") x <- .replaceInf(x, inf, neg_inf) ## Concorde can handle UPPER_ROW and dist (lower triangle matrix) ## is symmetric. format <- "EDGE_WEIGHT_FORMAT: UPPER_ROW" zz <- file(file, "w") cat("NAME: TSP", "COMMENT: Generated by write_TSPLIB (R-package TSP)", "TYPE: TSP", paste("DIMENSION:", n_of_cities(x)), "EDGE_WEIGHT_TYPE: EXPLICIT", format, file = zz, sep = "\n") ## only integers can be used as weights if(storage.mode(x) != "integer" && precision != 0) x <- x * 10^precision x <- suppressWarnings(as.integer(x)) if(any(is.na(x))) stop("Integer overflow, please reduce precision.") cat("EDGE_WEIGHT_SECTION", x, file = zz, sep = "\n") cat("EOF", file = zz, sep = "\n") close(zz) } #' @rdname TSPLIB #' @export write_TSPLIB.ATSP <- function(x, file, precision = 6, inf = NULL, neg_inf = NULL) { ## prepare data (NA, Inf) if(any(is.na(x))) stop("NAs not allowed!") x <- .replaceInf(x, inf, neg_inf) format <- "EDGE_WEIGHT_FORMAT: FULL_MATRIX" zz <- file(file, "w") cat("NAME: ATSP", "COMMENT: Generated by write_TSPLIB (R package TSP)", "TYPE: ATSP", paste("DIMENSION:", n_of_cities(x)), "EDGE_WEIGHT_TYPE: EXPLICIT", format, file = zz, sep = "\n") ## only integers can be used as weights if(storage.mode(x) != "integer") x <- x * 10^precision x <- suppressWarnings(as.integer(x)) if(any(is.na(x))) stop("integer overflow, please reduce precision.") cat("EDGE_WEIGHT_SECTION", x, file = zz, sep = "\n") cat("EOF", file = zz, sep = "\n") close(zz) } ## ETSP use data as real #' @rdname TSPLIB #' @export write_TSPLIB.ETSP <- function(x, file, precision = 6, inf = NULL, neg_inf = NULL) { if(any(is.na(x))) stop("NAs are not allowed!") if(any(!is.finite(x))) stop("Only finite values allowed!") if(ncol(x) == 2) type <- "EUC_2D" else if(ncol(x) == 3) type <- "EUC_3D" else stop("Only EUC_2D and EUC_3D supported.") zz <- file(file, "w") cat("NAME: ETSP", "COMMENT: Generated by write_TSPLIB (R package TSP)", "TYPE: TSP", paste("DIMENSION:", n_of_cities(x)), paste("EDGE_WEIGHT_TYPE:", type), file = zz, sep = "\n") ## fix row names rownames(x) <- NULL x <- do.call(data.frame, lapply(1:ncol(x), FUN = function(i) sprintf(paste("%0.", precision, "e", sep=""), x[,i]))) cat("NODE_COORD_SECTION", file = zz, sep = "\n") write.table(x, quote=FALSE, col.names = FALSE, file = zz) cat("EOF", file = zz, sep = "\n") close(zz) } TSP/R/solve_TSP.R0000644000175000017500000003471314204773543013275 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' TSP solver interface #' #' Common interface to all TSP solvers in this package. #' #' **TSP Methods** #' #' Currently the following methods are available: #' - "identity", "random" return a tour representing the order in the data #' (identity order) or a random order. #' - "nearest_insertion", "farthest_insertion", "cheapest_insertion", "arbitrary_insertion" #' Nearest, farthest, cheapest and #' arbitrary insertion algorithms for a symmetric and asymmetric TSP #' (Rosenkrantz et al. 1977). #' #' The distances between cities are stored in a distance matrix \eqn{D} with #' elements \eqn{d(i,j)}. All insertion algorithms start with a tour #' consisting of an arbitrary city and choose in each step a city \eqn{k} not #' yet on the tour. This city is inserted into the existing tour between two #' consecutive cities \eqn{i} and \eqn{j}, such that \deqn{d(i,k) + d(k,j) - #' d(i,j)} is minimized. The algorithms stops when all cities are on the tour. #' #' The nearest insertion algorithm chooses city \eqn{k} in each step as the #' city which is \emph{nearest} to a city on the tour. #' #' For farthest insertion, the city \eqn{k} is chosen in each step as the city #' which is \emph{farthest} to any city on the tour. #' #' Cheapest insertion chooses the city \eqn{k} such that the cost of inserting #' the new city (i.e., the increase in the tour's length) is minimal. #' #' Arbitrary insertion chooses the city \eqn{k} randomly from all cities not #' yet on the tour. #' #' Nearest and cheapest insertion tries to build the tour using cities which #' fit well into the partial tour constructed so far. The idea behind behind #' farthest insertion is to link cities far away into the tour fist to #' establish an outline of the whole tour early. #' #' Additional control options: #' - "start" index of the first city (default: a random city). #' #' - "nn", "repetitive_nn" Nearest neighbor and repetitive #' nearest neighbor algorithms for symmetric and asymmetric TSPs (Rosenkrantz #' et al. 1977). #' #' The algorithm starts with a tour containing a random city. Then the #' algorithm always adds to the last city on the tour the nearest not yet #' visited city. The algorithm stops when all cities are on the tour. #' #' Repetitive nearest neighbor constructs a nearest neighbor tour for each city #' as the starting point and returns the shortest tour found. #' #' Additional control options: #' - "start" index of the first city (default: a random city). #' #' - "two_opt" Two edge exchange improvement procedure (Croes 1958). #' #' This is a tour refinement procedure which systematically exchanges two edges #' in the graph represented by the distance matrix till no improvements are #' possible. Exchanging two edges is equal to reversing part of the tour. The #' resulting tour is called \emph{2-optimal.} #' #' This method can be applied to tours created by other methods or used as its #' own method. In this case improvement starts with a random tour. #' #' Additional control options: #' - "tour" an existing tour which should be improved. #' If no tour is given, a random tour is used. #' - "two_opt_repetitions" number of times to try two_opt with a #' different initial random tour (default: 1). #' #' - "concorde" Concorde algorithm (Applegate et al. 2001). #' #' Concorde is an advanced exact TSP solver for \emph{only symmetric} TSPs #' based on branch-and-cut. The program is not included in this package and #' has to be obtained and installed separately. #' #' Additional control options: #' - "exe" a character string containing the path to the executable (see [Concorde]). #' - "clo" a character string containing command line options for #' Concorde, e.g., `control = list(clo = "-B -v")`. See #' [concorde_help()] on how to obtain a complete list of available command #' line options. #' - "precision" an integer which controls the number of decimal #' places used for the internal representation of distances in Concorde. The #' values given in `x` are multiplied by \eqn{10^{precision}} before being #' passed on to Concorde. Note that therefore the results produced by Concorde #' (especially lower and upper bounds) need to be divided by #' \eqn{10^{precision}} (i.e., the decimal point has to be shifted #' `precision` placed to the left). The interface to Concorde uses #' [write_TSPLIB()]. #' #' - "linkern" Concorde's Chained Lin-Kernighan heuristic (Applegate et al. 2003). #' #' The Lin-Kernighan (Lin and Kernighan 1973) heuristic uses variable \eqn{k} #' edge exchanges to improve an initial tour. The program is not included in #' this package and has to be obtained and installed separately (see [Concorde]). #' #' Additional control options: see Concorde above. #' #' **Treatment of `NA`s and infinite values in `x`** #' #' [TSP] and #' [ATSP] contain distances and `NA`s are not allowed. `Inf` is #' allowed and can be used to model the missing edges in incomplete graphs #' (i.e., the distance between the two objects is infinite). Internally, #' `Inf` is replaced by a large value given by \eqn{max(x) + 2 range(x)}. #' Note that the solution might still place the two objects next to each other #' (e.g., if `x` contains several unconnected subgraphs) which results in #' a path length of `Inf`. #' #' **Parallel execution support** #' #' All heuristics can be used with the control arguments `repetitions` #' (uses the best from that many repetitions with random starts) and #' `two_opt` (a logical indicating if two_opt refinement should be #' performed). If several repetitions are done (this includes method #' `"repetitive_nn"`) then \pkg{foreach} is used so they can be performed #' in parallel on multiple cores/machines. To enable parallel execution an #' appropriate parallel backend needs to be registered (e.g., load #' \pkg{doParallel} and register it with [doParallel::registerDoParallel()]). #' #' **Solving ATSP and ETSP** #' #' Some solvers (including Concorde) cannot directly solve [ATSP] #' directly. `ATSP` can be reformulated as larger `TSP` and solved #' this way. For convenience, `solve_TSP()` has an extra argument #' `as_TSP` which can be set to `TRUE` to automatically solve the #' `ATSP` reformulated as a `TSP` (see [reformulate_ATSP_as_TSP()]). #' #' Only methods "concorde" and "linkern" can solve [ETSP]s directly. #' For all other methods, ETSPs are currently converted into TSPs by creating a #' distance matrix and then solved. #' #' @family TSP #' @family TOUR #' #' @param x a TSP problem. #' @param method method to solve the TSP (default: "arbitrary insertion" #' algorithm with two_opt refinement. #' @param control a list of arguments passed on to the TSP solver selected by #' `method`. #' @param as_TSP should the ATSP reformulated as a TSP for the solver? #' @param ... additional arguments are added to `control`. #' @return An object of class [TOUR]. #' @author Michael Hahsler #' @references #' David Applegate, Robert Bixby, Vasek Chvatal, William Cook #' (2001): TSP cuts which do not conform to the template paradigm, #' Computational Combinatorial Optimization, M. Junger and D. Naddef (editors), #' Springer. #' #' D. Applegate, W. Cook and A. Rohe (2003): Chained Lin-Kernighan for Large #' Traveling Salesman Problems. \emph{INFORMS Journal on Computing, #' 15(1):82--92.} #' #' G.A. Croes (1958): A method for solving traveling-salesman problems. #' \emph{Operations Research, 6(6):791--812.} #' #' S. Lin and B. Kernighan (1973): An effective heuristic algorithm for the #' traveling-salesman problem. \emph{Operations Research, 21(2): 498--516.} #' #' D.J. Rosenkrantz, R. E. Stearns, and Philip M. Lewis II (1977): An analysis #' of several heuristics for the traveling salesman problem. \emph{SIAM #' Journal on Computing, 6(3):563--581.} #' @keywords optimize #' @examples #' #' ## solve a simple Euclidean TSP (using the default method) #' etsp <- ETSP(data.frame(x = runif(20), y = runif(20))) #' tour <- solve_TSP(etsp) #' tour #' tour_length(tour) #' plot(etsp, tour) #' #' #' ## compare methods #' data("USCA50") #' USCA50 #' methods <- c("identity", "random", "nearest_insertion", #' "cheapest_insertion", "farthest_insertion", "arbitrary_insertion", #' "nn", "repetitive_nn", "two_opt") #' #' ## calculate tours #' tours <- lapply(methods, FUN = function(m) solve_TSP(USCA50, method = m)) #' names(tours) <- methods #' #' ## use the external solver which has to be installed separately #' \dontrun{ #' tours$concorde <- solve_TSP(USCA50, method = "concorde") #' tours$linkern <- solve_TSP(USCA50, method = "linkern") #' } #' #' ## register a parallel backend to perform repetitions in parallel #' \dontrun{ #' library(doParallel) #' registerDoParallel() #' } #' #' ## add some tours using repetition and two_opt refinements #' tours$'nn+two_opt' <- solve_TSP(USCA50, method="nn", two_opt=TRUE) #' tours$'nn+rep_10' <- solve_TSP(USCA50, method="nn", rep=10) #' tours$'nn+two_opt+rep_10' <- solve_TSP(USCA50, method="nn", two_opt=TRUE, rep=10) #' tours$'arbitrary_insertion+two_opt' <- solve_TSP(USCA50) #' #' ## show first tour #' tours[[1]] #' #' ## compare tour lengths #' opt <- 14497 # obtained by Concorde #' tour_lengths <- c(sort(sapply(tours, tour_length), decreasing = TRUE), #' optimal = opt) #' dotchart(tour_lengths/opt*100-100, xlab = "percent excess over optimum") #' @export solve_TSP <- function(x, method = NULL, control = NULL, ...) UseMethod("solve_TSP") ## TSP #' @rdname solve_TSP #' @export solve_TSP.TSP <- function(x, method = NULL, control = NULL, ...) { .solve_TSP(x, method, control, ...) } ## ATSP #' @rdname solve_TSP #' @export solve_TSP.ATSP <- function(x, method = NULL, control = NULL, as_TSP = FALSE, ...) { m <- pmatch(tolower(method), c("concorde", "linkern")) if(!as_TSP && !is.na(m) && length(m) > 0L) { warning("NOTE: Solver cannot solve the ATSP directly. Reformulating ATSP as TSP. Use 'as_TSP = TRUE' to supress this warning.\n") as_TSP <- TRUE } # reformulate ATSP as TSP if(as_TSP) { x_atsp <- x x <- reformulate_ATSP_as_TSP(x_atsp) } tour <- .solve_TSP(x, method, control, ...) if(as_TSP) { tour <- TOUR(tour[tour<=n_of_cities(x_atsp)], method = attr(tour, "method"), tsp = x_atsp) # Tour may be reversed tour_rev <- TOUR(rev(tour), method = attr(tour, "method"), tsp = x_atsp) if(tour_length(tour) > tour_length(tour_rev)) tour <- tour_rev } tour } ## ETSP #' @rdname solve_TSP #' @export solve_TSP.ETSP <- function(x, method = NULL, control = NULL, ...) { ## all but concorde and linkern can only do TSP m <- pmatch(tolower(method), c("concorde", "linkern")) if(length(m) == 0L || is.na(m)) x <- as.TSP(x) .solve_TSP(x, method, control, ...) } ## Deal with Inf: punish (-)Inf with max (min) +(-) 2*range .replaceInf <- function(x, pInf = NULL, nInf = NULL) { if(any(is.infinite(x))) { range_x <- range(x, na.rm = TRUE, finite = TRUE) # data with only a single non-inf value. diff_range <- diff(range_x) if(diff_range == 0) { if(range_x[1] == 0) diff_range <- 1 else diff_range <- range_x[1] * 2 } if(is.null(pInf)) pInf <- range_x[2] + 2*diff_range if(is.null(nInf)) nInf <- range_x[1] - 2*diff_range x[x == Inf] <- pInf x[x == -Inf] <- nInf } x } ## workhorse .solve_TSP <- function(x, method = NULL, control = NULL, ...) { ## add ... to control control <- c(control, list(...)) ## methods methods <- c( "identity", "random", "nearest_insertion", "farthest_insertion", "cheapest_insertion", "arbitrary_insertion", "nn", "repetitive_nn", "2-opt", ### deprecated "two_opt", "concorde", "linkern" ) ## default is arbitrary_insertion + two_opt if(is.null(method)) { method <- "arbitrary_insertion" if(is.null(control$two_opt)) control <- c(control, list(two_opt = TRUE)) } else method <- match.arg(tolower(method), methods) ## check for NAs if(any(is.na(x))) stop("NAs not allowed!") ## Inf x_ <- .replaceInf(x) ## work horses .solve_TSP_worker <- function(x_, method, control) { order <- switch(method, identity = seq(n_of_cities(x_)), random = sample(n_of_cities(x_)), nearest_insertion = tsp_insertion(x_, type = "nearest", control = control), farthest_insertion = tsp_insertion(x_, type = "farthest", control = control), cheapest_insertion = tsp_insertion(x_, type = "cheapest", control = control), # arbitrary_insertion = tsp_insertion(x_, type = "arbitrary", control = control), arbitrary_insertion = tsp_insertion_arbitrary(x_, control = control), nn = tsp_nn(x_, control = control), repetitive_nn = tsp_repetitive_nn(x_, control = control), two_opt = tsp_two_opt(x_, control = control), '2-opt' = tsp_two_opt(x_, control = control), concorde = tsp_concorde(x_, control = control), linkern = tsp_linkern(x_, control = control) ) ### do refinement two_opt if(!is.null(control$two_opt) && control$two_opt) { order <- tsp_two_opt(x_, control = c(control, list(tour = order))) method <- paste(method , "+two_opt", sep = "") } TOUR(order, method=method, tsp=x) } ## do rep? if(!is.null(control$rep)) n <- control$rep else n <- 1L if(method == "concorde" || method == "linkern") { n <- 1L control$two_opt <- NULL ## no two_opt for these! } if(method == "repetitive_nn") n <- 1L if(n==1L) return(.solve_TSP_worker(x_, method, control)) #l <- replicate(n, .solve_TSP_worker(x_, method, control), simplify = FALSE) l <- foreach(i = 1:n) %dopar% .solve_TSP_worker(x_, method, control) l <- l[[which.min(sapply(l, attr, "tour_length"))]] attr(l, "method") <- paste(attr(l, "method"), "_rep_", n, sep="") return(l) } TSP/R/cut_tour.R0000644000175000017500000000627614204054427013257 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Cut a tour to form a path #' #' Cuts a tour at a specified city to form a path. #' #' @family TOUR #' #' @param x an object of class [TOUR]. #' @param cut the index or label of the city/cities to cut the tour. #' @param exclude_cut exclude the city where we cut? If `FALSE`, the city #' at the cut is included in the path as the first city. #' @return Returns a named vector with city ids forming the path. If multiple #' cuts are used then a list with paths is returned. #' @author Michael Hahsler #' @keywords optimize #' @examples #' #' data("USCA50") #' #' ## find a path starting at Austin, TX #' tour <- solve_TSP(USCA50) #' path <- cut_tour(tour, cut = "Austin, TX", exclude_cut = FALSE) #' path #' #' ## cut the tours at two cities #' tour <- solve_TSP(USCA50) #' path <- cut_tour(tour, cut = c("Austin, TX", "Cambridge, MA"), exclude_cut = FALSE) #' path #' #' ## cut a tour at the largest gap using a dummy city #' tsp <- insert_dummy(USCA50, label = "cut") #' tour <- solve_TSP(tsp) #' #' ## cut tour into path at the dummy city #' path <- cut_tour(tour, "cut") #' path #' @export cut_tour <- function(x, cut, exclude_cut = TRUE) UseMethod("cut_tour") #' @rdname cut_tour #' @export cut_tour.TOUR <- function(x, cut, exclude_cut = TRUE) { exclude_cut <- as.integer(exclude_cut) ## city label if(is.character(cut)) { cut <- which(as.logical(apply(sapply(cut, "==", labels(x)), MARGIN = 1, sum))) if(length(cut) < 1) stop("cut has to exist") ## city id } else { if(any(is.na(cut <- match(cut, x)))) stop("cut has to exist") } if(length(cut) == 1L) { ## single path if (exclude_cut && length(x) <= 1) path <- integer(0) else path <- c(x, x)[(cut + exclude_cut):(length(x) + cut - 1L)] } else { ## multiple paths, return as a list path <- replicate(length(cut), integer(0)) path[[1L]] <- c( if ((tail(cut, 1) + exclude_cut) <= length(x)) (tail(cut, 1) + exclude_cut):length(x) else NULL, if (cut[1] > 1) 1:(cut[1] - 1L) else NULL) for (i in seq_len(length(cut) - 1L)) { if ((cut[i] + exclude_cut) <= (cut[i + 1L] - 1L)) path[[i + 1L]] <- (cut[i] + exclude_cut):(cut[i + 1L] - 1L) } path <- lapply(path, FUN = function(i) x[i]) if (exclude_cut) names(path) <- labels(x)[cut] } path } TSP/R/AAA_TSP-package.R0000644000175000017500000000212014204734702014075 0ustar nileshnilesh#' @title `r packageDescription("TSP")$Package`: `r packageDescription("TSP")$Title` #' #' #' @description Basic infrastructure and some algorithms for the traveling salesperson problem (also traveling salesman problem; TSP). The package provides some simple algorithms and an interface to the Concorde TSP solver and its implementation of the Chained-Lin-Kernighan heuristic. The code for [Concorde](https://www.math.uwaterloo.ca/tsp/concorde/) itself is not included in the package and has to be obtained separately. #' #' @references Michael Hahsler and Kurt Hornik. TSP -- Infrastructure for the traveling salesperson problem. Journal of Statistical Software, 23(2):1--21, December 2007. \doi{10.18637/jss.v023.i02} #' #' @section Key functions: #' - [solve_TSP()] #' #' @author Michael Hahsler #' @docType package #' @name TSP-package #' #' @importFrom stats as.dist dist #' @importFrom utils read.table write.table head tail #' @importFrom grDevices gray.colors #' @importFrom graphics image.default plot polygon #' @importFrom foreach foreach "%dopar%" #' @useDynLib TSP, .registration=TRUE NULL TSP/R/tsp_concorde.R0000644000175000017500000002571514204736217014100 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Using the Concorde TSP Solver #' #' The Concorde TSP Solver package contains several solvers. Currently, #' interfaces to the Concorde solver (Applegate et al. 2001), one of the most #' advanced and fastest TSP solvers using branch-and-cut, and the Chained #' Lin-Kernighan (Applegate et al. 2003) implementation are provided in #' \pkg{TSP}. Concorde can solve [TSP]s and [ETSP]s directly. [ATSP]s are #' reformulated as larger TSP's and then solved. #' #' #' **Installation of Concorde** #' #' The Concorde TSP Solver is freely available for academic research. #' It is not included in the \pkg{TSP} R package and has #' to be obtained separately from the #' [Concorde download page](http://www.math.uwaterloo.ca/tsp/concorde/downloads/downloads.htm). #' Either download the precompiled executables and place them in a suitable #' directory (make sure they are executable), or you can get the source code and #' compile the program on your own. \pkg{TSP} needs to know where the executables are. #' There are two options: #' 1. use `concorde_path()` to set the path to the #' directory containing the executables for concorde and linkern, or #' 2. make #' sure that the executables are in the search path stored in the `PATH` #' environment variable (see [Sys.setenv()]). #' #' **Using Concorde for `solve_TSP()`** #' #' [solve_TSP()] uses [write_TSPLIB()] to write the TSP for #' Concorde and tries to find the appropriate `precision` value (digits #' after the decimal point) to convert the provided distances into the needed #' integer value range. The `precision` value can also be specified in #' `control` in [solve_TSP()] with method Concorde. Warning #' messages will alert the user if the conversion to integer values results #' into rounding errors that are worse then what is specified in the #' `precision` control parameter. #' #' To get a list of all available command line options which can be used via #' the `clo` option for `solve_TSP` use `concorde_help()` and #' `linkern_help()`. Several options (\option{-x}, \option{-o}, #' \option{-N}, \option{-Q}) are not available via [solve_TSP()] since they #' are used by the interface. #' #' If Concorde takes too long, then you can kill the 'concorde' process via your #' operating system and you can continue with R. #' #' @family TSP #' #' @name Concorde #' @aliases Concorde concorde concorde_path concorde_help linkern_help #' #' @param path a character string with the path to the directory where the #' executables are installed. #' @returns Nothing. #' @author Michael Hahsler #' @references Concorde home page, #' \url{http://www.math.uwaterloo.ca/tsp/concorde/} #' #' David Applegate, Robert Bixby, Vasek Chvatal, William Cook (2001): TSP cuts #' which do not conform to the template paradigm, Computational Combinatorial #' Optimization, M. Junger and D. Naddef (editors), Springer-Verlag. #' #' David Applegate and William Cook and Andre Rohe (2003): Chained #' Lin-Kernighan for Large Traveling Salesman Problems, \emph{INFORMS Journal #' on Computing}, \bold{15}, 82--92. #' @keywords documentation #' @examples #' #' \dontrun{ #' ## see if Concorde is correctly installed #' concorde_path() #' #' #' ## set path to the Concorde executible if it is not in the search PATH #' ## Example: #' ## concorde_path("~/concorde/") #' #' concorde_help() #' #' data("USCA312") #' #' ## run concorde in verbose mode (-v) with fast cuts only (-V) #' solve_TSP(USCA312, method = "concorde", control = list(clo = "-v -V")) #' } #' NULL ## prepare distances as integers in the appropriate range [0..MAX] .prepare_dist_concorde <- function(x, MAX, precision) { ## handle inf x <- .replaceInf(x) ## fix neg. values min_x <- min(x) if(min_x<0) { warning("TSP contains negative distances. Shifting distances by subtracting the minimum.", immediate. = TRUE) x <- x - min_x } ## get max (excluding) to check for possible integer overflows max_x <- max(x) prec <- floor(log10(MAX / max_x)) x <- x * 10^prec if(prec < precision && any((x %% 1) != 0)) warning(paste0("Concorde/Linken can only handle distances represented as integers. Converting the provided distances to integers with precison ", prec, ". This may lead to rounding errors."), immediate. = TRUE) storage.mode(x) <- "integer" ## so write.TSBLIB does not do precision changes x } ## interface to the Concorde algorithm ## (can only handle TSP and no neg. distances!) tsp_concorde <- function(x, control = NULL){ if(!is.null(control$exe)) warning("exe is deprecated. Use concorde_path() instead!") ## get parameters control <- .get_parameters(control, list( clo = "", exe = .find_exe(control$exe, "concorde"), precision = 6, verbose = TRUE, keep_files = FALSE )) ## check x if(inherits(x, "TSP")){ #if(n_of_cities(x) < 10) MAX <- 2^15 - 1 else MAX <- 2^31 - 1 ### MFH: concorde may overflow with 2^31-1 if(n_of_cities(x) < 10) MAX <- 2^15 - 1 else MAX <- 2^28 - 1 x <- .prepare_dist_concorde(x, MAX, control$precision) }else if(inherits(x, "ETSP")) { ## nothing to do! }else stop("Concorde only handles TSP and ETSP.") ## get temp files and change working directory wd <- tempdir() dir <- getwd() setwd(wd) on.exit(setwd(dir)) ### fix for Windows by Stephen Eick ##temp_file <- tempfile(tmpdir = wd) temp_file <- basename(tempfile(tmpdir = wd)) ## file name needs to be unique tmp_file_in <- paste(temp_file, ".dat", sep = "") tmp_file_out <- paste(temp_file, ".sol", sep = "") ## precision is already handled! write_TSPLIB(x, file = tmp_file_in, precision = 0) ## change working directory ## do the call and read back result ## we do not check return values of Concorde since they are not ## very consistent system2(control$exe, args = paste("-x", control$clo, "-o", tmp_file_out, tmp_file_in), stdout = if(control$verbose) "" else FALSE, stderr = if(control$verbose) "" else FALSE, ) if(!file.access(tmp_file_out) == 0) stop("Concorde has not produced a result file.\nIs concorde properly installed? (see ? Concorde)\nDid Concorde finish without an error or being interupted?") ##else cat("Concorde done.\n") order <- scan(tmp_file_out, what = integer(0), quiet = TRUE) ## remove number of nodes and add one (result starts with 0) order <- order[-1] + 1L ## tidy up if(!control$keep_files) unlink(c(tmp_file_in, tmp_file_out)) else cat("File are in:", wd, "\n\n") order } ## interface to the Concorde's Chained Lin-Kernighan algorithm ## (can only handle TSP, handles neg. distances) tsp_linkern <- function(x, control = NULL){ if(!is.null(control$exe)) warning("exe is deprecated. Use concorde_path() instead!") ## get parameters control <- .get_parameters(control, list( exe = .find_exe(control$exe, "linkern"), clo = "", precision = 6, verbose = TRUE, keep_files = FALSE )) ## have to set -r for small instances <8 if(n_of_cities(x) <=8) control$clo <- paste(control$clo, "-k", n_of_cities(x)) ## check x if(inherits(x, "TSP")) { #MAX <- 2^31 - 1 MAX <- 2^28 - 1 x <- .prepare_dist_concorde(x, MAX, control$precision) }else if(inherits(x, "ETSP")) { ## nothing to do } else stop("Linkern only works for TSP and ETSP.") ## get temp files and change working directory wd <- tempdir() dir <- getwd() setwd(wd) on.exit(setwd(dir)) ### fix for Windows by Stephen Eick ##temp_file <- tempfile(tmpdir = wd) temp_file <- basename(tempfile(tmpdir = wd)) ## file name needs to be unique tmp_file_in <- paste(temp_file, ".dat", sep = "") tmp_file_out <- paste(temp_file, ".sol", sep = "") write_TSPLIB(x, file = tmp_file_in, precision = 0) ## do the call and read back result ## we do not check return values of Concorde since they are not ## very consistent system2(control$exe, args = paste("-o", tmp_file_out, control$clo, tmp_file_in), stdout = if(control$verbose) "" else FALSE, stderr = if(control$verbose) "" else FALSE) if(!file.access(tmp_file_out) == 0) stop("Linkern has not produced a result file.\nIs linkern properly installed?\nDid linkern finish without an error or being interrupted?") ##else cat("Concorde done.\n") order <- read.table(tmp_file_out)[,1] ## remove number of nodes and add one (result starts with 0) order <- order + as.integer(1) ## tidy up if(!control$keep_files) unlink(c(tmp_file_in, tmp_file_out)) else cat("File are in:", wd, "\n\n") order } ## path ## path #' @rdname Concorde #' @export concorde_path <- local({ .path <- NULL function(path){ if(missing(path)) { if(!is.null(.path)) return(.path) else { ## find concorde and/or linkern p <- dirname(Sys.which("concorde")) if(p == "") p <- dirname(Sys.which("linkern")) if(p == "") stop("Can not find executables for concorde or linkern. Please install the executables or set path manually.") return(p) } } else { if(!is.null(path)) { path <- normalizePath(path) ### translate all special characters ex <- c(list.files(path, pattern = "concorde", ignore.case = TRUE), list.files(path, pattern = "linkern", ignore.case = TRUE)) if(length(ex) < 1) stop(paste("no executable (concorde and/or linkern) found in", path)) cat("found:", ex, "\n") } .path <<- path invisible(.path) } } }) ## get help page #' @rdname Concorde #' @export concorde_help <- function() { cat("The following options can be specified in solve_TSP with method \"concorde\" using clo in control:\n\n") system2(.find_exe(NULL, "concorde"), args = "") } #' @rdname Concorde #' @export linkern_help <- function() { cat("The following options can be specified in solve_TSP with method \"linkern\" using clo in control:\n\n") system2(.find_exe(NULL, "linkern"), args = "") } ## helper to find the 'concorde' executable .find_exe <- function(exe = NULL, prog) { ## if not specified if(is.null(exe)) { ## was the path set ? if(!is.null(concorde_path())) exe <- paste(concorde_path(), .Platform$file.sep, prog, sep ="") ## no, so it must be in the systems execution path else exe <- prog } exe } TSP/R/USCA312.R0000644000175000017500000000377614204062430012367 0ustar nileshnilesh#' USCA312/USCA50 -- 312/50 cities in the US and Canada #' #' The `USCA312` dataset contains the distances between 312 cities in the #' US and Canada as an object of class `TSP`. `USCA50` is a subset #' of `USCA312` containing only the first 50 cities. #' #' The `USCA312_GPS` dataset contains the location (long/lat) of the 312 #' cities. #' #' #' @name USCA #' @aliases USCA312 USCA312_GPS USCA50 #' @docType data #' @format `USCA312` and `USCA50` are objects of class `TSP`. #' `USCA312_GPS` is a data.frame with city name, long and lat. #' @note We want to thank Roger Bivand for his help with plotting the map. #' @author Michael Hahsler #' @source John Burkardt, CITIES -- City Distance Datasets, Florida State #' University, Department of Scientific Computing #' @keywords datasets #' @examples #' #' data("USCA312") #' #' ## calculate a tour #' tour <- solve_TSP(USCA312) #' tour #' #' data("USCA312_GPS") #' head(USCA312_GPS) #' #' # The following examples requite the suggested package sp, maps, and maptools. #' # We run the example only if the packages are installed. #' #' if(require(sp) && #' require(maps) && #' require(maptools)) { #' #' library("sp") #' library("maps") #' library("maptools") #' #' data("USCA312_GPS") #' #' # create spatial coordinates and a basemap using WGS84 projection. #' USCA312_coords <- SpatialPointsDataFrame(cbind(USCA312_GPS$long, USCA312_GPS$lat), #' proj4string=CRS("+proj=longlat +datum=WGS84"), data = USCA312_GPS) #' USCA312_basemap <- map2SpatialLines(map("world", #' xlim=c(-166,-47), ylim=c(15,83), #' plot=FALSE), proj4string=CRS("+proj=longlat +datum=WGS84")) #' #' ## plot map #' plot(as(USCA312_coords, "Spatial"), axes=TRUE) #' plot(USCA312_basemap, add=TRUE, col = "gray") #' #' ## plot tour and add cities #' tour_line <- SpatialLines(list(Lines(list( #' Line(USCA312_coords[c(tour, tour[1]),])), ID="1"))) #' #' plot(tour_line, add=TRUE, col = "red") #' points(USCA312_coords, pch=3, cex=0.4, col="black") #' } #' NULL TSP/R/tsp_two_opt.R0000644000175000017500000000306014204053416013755 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## heuristic to improve a tour using exchanges of 2 edges. tsp_two_opt <- function(x, control = NULL){ control <- .get_parameters(control, list( tour = NULL, rep = 1 )) ## improve a given tour or create a random tour ## we use a function since for rep >1 we want several random ## initial tours initial <- function() { if(!is.null(control$tour)) as.integer(control$tour) else sample(n_of_cities(x)) } xx <- as.matrix(x) if(control$rep > 1) { tour <- replicate(control$rep, .Call(R_two_opt, xx, initial()), simplify = FALSE) lengths <- sapply(tour, FUN = function(t) tour_length(x, t)) tour <- tour[[which.min(lengths)]] }else tour <- .Call(R_two_opt, xx, initial()) tour } TSP/R/reformulare_ATSP_as_TSP.R0000644000175000017500000000702214204056012015754 0ustar nileshnilesh####################################################################### # TSP - Traveling Salesperson Problem # Copyrigth (C) 2011 Michael Hahsler and Kurt Hornik # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #' Reformulate a ATSP as a symmetric TSP #' #' A ATSP can be formulated as a symmetric TSP by doubling the number of cities #' (Jonker and Volgenant 1983). The solution of the TSP also represents the #' solution of the original ATSP. #' #' To reformulate a [ATSP] as a [TSP], for each city a dummy city (e.g, for 'New #' York' a dummy city 'New York*') is added. Between each city and its #' corresponding dummy city a negative or very small distance with value #' `cheap` is used. This makes sure that each cities always occurs in the #' solution together with its dummy city. The original distances are used #' between the cities and the dummy cities, where each city is responsible for #' the distance going to the city and the dummy city is responsible for the #' distance coming from the city. The distances between all cities and the #' distances between all dummy cities are set to `infeasible`, a very #' large value which makes the infeasible. #' #' @family TSP #' #' @param x an [ATSP]. #' @param infeasible value for infeasible connections. #' @param cheap value for distance between a city and its corresponding dummy #' city. #' @return a [TSP] object. #' @author Michael Hahsler #' @references Jonker, R. and Volgenant, T. (1983): Transforming asymmetric #' into symmetric traveling salesman problems, \emph{Operations Research #' Letters, 2, 161--163.} #' @keywords optimize #' @examples #' data("USCA50") #' #' ## set the distances towards Austin to zero which makes it a ATSP #' austin <- which(labels(USCA50) == "Austin, TX") #' atsp <- as.ATSP(USCA50) #' atsp[, austin] <- 0 #' #' ## reformulate as a TSP #' tsp <- reformulate_ATSP_as_TSP(atsp) #' labels(tsp) #' #' ## create tour (now you could use Concorde or LK) #' tour_atsp <- solve_TSP(tsp, method="nn") #' head(labels(tour_atsp), n = 10) #' tour_atsp #' ## Note that the tour has a lenght of -Inf since the reformulation created #' ## some -Inf distances #' #' ## filter out the dummy cities (we specify tsp so the tour lenght is #' ## recalculated) #' tour <- TOUR(tour_atsp[tour_atsp <= n_of_cities(atsp)], tsp = atsp) #' tour #' @export reformulate_ATSP_as_TSP <- function(x, infeasible = Inf, cheap = -Inf) { if(!inherits(x, "ATSP")) stop("x is not an ATSP object!") method <- attr(x, "method") m <- as.matrix(x) ## scale matrix and add cheap links diag(m) <- cheap tsp <- rbind( cbind(matrix(infeasible, ncol = ncol(m), nrow = nrow(m)), t(m)), cbind(m, matrix(infeasible, ncol = nrow(m), nrow = ncol(m))) ) ## create labels (* for virtual cities) lab <- c(labels(x), paste(labels(x), "*", sep = "")) dimnames(tsp) <- list(lab, lab) attr(tsp, "method") <- method ## return as TSP TSP(tsp) } TSP/inst/0000755000175000017500000000000014204773730012036 5ustar nileshnileshTSP/inst/CITATION0000644000175000017500000000120214127410523013156 0ustar nileshnilesh citation(auto = meta) bibentry(bibtype = "article", title = paste("TSP -- {I}nfrastructure for the traveling", "salesperson problem"), author = { c(person("Michael", "Hahsler", email = "michael@hahsler.net"), person("Kurt", "Hornik", email = "Kurt.Hornik@R-project.org")) }, year = 2007, journal = "Journal of Statistical Software", volume = 23, number = 2, pages = "1--21", doi = "10.18637/jss.v023.i02", month = "December", issn = "1548-7660" ) TSP/inst/doc/0000755000175000017500000000000014204773730012603 5ustar nileshnileshTSP/inst/doc/TSP.R0000644000175000017500000001557114204773730013405 0ustar nileshnilesh### R code from vignette source 'TSP.Rnw' ################################################### ### code chunk number 1: TSP.Rnw:81-84 ################################################### options(width = 75, useFancyQuotes=FALSE, prompt="R> ") ### for sampling set.seed(1234) ################################################### ### code chunk number 2: TSP.Rnw:645-648 ################################################### library("TSP") data("USCA50") USCA50 ################################################### ### code chunk number 3: TSP.Rnw:661-662 ################################################### set.seed(1234) ################################################### ### code chunk number 4: dotchart_USCA50 ################################################### methods <- c("nearest_insertion", "farthest_insertion", "cheapest_insertion", "arbitrary_insertion", "nn", "repetitive_nn", "two_opt") tours <- sapply(methods, FUN = function(m) solve_TSP(USCA50, method = m), simplify = FALSE) ## tours$concorde <- solve_TSP(tsp, method = "concorde") tours[[1]] dotchart(sort(c(sapply(tours, tour_length), optimal = 14497)), xlab = "tour length", xlim = c(0, 20000)) ################################################### ### code chunk number 5: TSP.Rnw:703-704 ################################################### set.seed(1234) ################################################### ### code chunk number 6: TSP.Rnw:707-711 ################################################### library("TSP") data("USCA312") tsp <- insert_dummy(USCA312, label = "cut") tsp ################################################### ### code chunk number 7: TSP.Rnw:717-719 ################################################### tour <- solve_TSP(tsp, method="farthest_insertion") tour ################################################### ### code chunk number 8: TSP.Rnw:728-731 ################################################### path <- cut_tour(tour, "cut") head(labels(path)) tail(labels(path)) ################################################### ### code chunk number 9: map1 ################################################### if(require(sp) && require(maps) && require(maptools)) { library("sp") library("maps") library("maptools") data("USCA312_GPS") # create spatial coordinates and a basemap using WGS84 projection. USCA312_coords <- SpatialPointsDataFrame(cbind(USCA312_GPS$long, USCA312_GPS$lat), proj4string=CRS("+proj=longlat +datum=WGS84"), data = USCA312_GPS) USCA312_basemap <- map2SpatialLines(map("world", xlim=c(-166,-47), ylim=c(15,83), plot=FALSE), proj4string=CRS("+proj=longlat +datum=WGS84")) plot_path <- function(path){ plot(as(USCA312_coords, "Spatial"), axes = TRUE) plot(USCA312_basemap, add = TRUE, col = "gray") points(USCA312_coords, pch = 3, cex = 0.4, col = "red") path_line <- SpatialLines(list(Lines(list(Line(USCA312_coords[path,])), ID="1"))) plot(path_line, add=TRUE, col = "black") points(USCA312_coords[c(head(path,1), tail(path,1)),], pch = 19, col = "black") } plot_path(path) } else { plot(NA, xlim= c(0,1), ylim = c(0,1)); text(.5, .5, "Suggested packages not available") } ################################################### ### code chunk number 10: TSP.Rnw:808-809 ################################################### set.seed(1234) ################################################### ### code chunk number 11: TSP.Rnw:812-823 ################################################### atsp <- as.ATSP(USCA312) ny <- which(labels(USCA312) == "New York, NY") atsp[, ny] <- 0 initial_tour <- solve_TSP(atsp, method="nn") initial_tour tour <- solve_TSP(atsp, method ="two_opt", control = list(tour = initial_tour)) tour path <- cut_tour(tour, ny, exclude_cut = FALSE) head(labels(path)) tail(labels(path)) ################################################### ### code chunk number 12: map2 ################################################### plot_path(path) ################################################### ### code chunk number 13: TSP.Rnw:847-849 ################################################### tsp <- reformulate_ATSP_as_TSP(atsp) tsp ################################################### ### code chunk number 14: TSP.Rnw:861-863 (eval = FALSE) ################################################### ## tour <- solve_TSP(tsp, method = "concorde") ## tour <- as.TOUR(tour[tour <= n_of_cities(atsp)]) ################################################### ### code chunk number 15: TSP.Rnw:885-886 ################################################### set.seed(1234) ################################################### ### code chunk number 16: TSP.Rnw:889-899 ################################################### m <- as.matrix(USCA312) ny <- which(labels(USCA312) == "New York, NY") la <- which(labels(USCA312) == "Los Angeles, CA") atsp <- ATSP(m[-c(ny,la), -c(ny,la)]) atsp <- insert_dummy(atsp, label = "LA/NY") la_ny <- which(labels(atsp) == "LA/NY") atsp[la_ny, ] <- c(m[-c(ny,la), ny], 0) atsp[, la_ny] <- c(m[la, -c(ny,la)], 0) ################################################### ### code chunk number 17: TSP.Rnw:904-913 ################################################### tour <- solve_TSP(atsp, method ="nearest_insertion") tour path_labels <- c("New York, NY", labels(cut_tour(tour, la_ny)), "Los Angeles, CA") path_ids <- match(path_labels, labels(USCA312)) head(path_labels) tail(path_labels) ################################################### ### code chunk number 18: map3 ################################################### plot_path(path_ids) ################################################### ### code chunk number 19: TSP.Rnw:957-958 ################################################### set.seed(4444) ################################################### ### code chunk number 20: TSP.Rnw:960-964 ################################################### data("iris") tsp <- TSP(dist(iris[-5]), labels = iris[, "Species"]) tsp_dummy <- insert_dummy(tsp, n = 3, label = "boundary") tour <- solve_TSP(tsp_dummy) ################################################### ### code chunk number 21: clustering ################################################### ## plot the distance matrix image(tsp_dummy, tour, xlab = "objects", ylab ="objects") ## draw lines where the dummy cities are located abline(h = which(labels(tour)=="boundary"), col = "red") abline(v = which(labels(tour)=="boundary"), col = "red") ################################################### ### code chunk number 22: TSP.Rnw:1002-1006 ################################################### out <- rle(labels(tour)) data.frame(Species = out$values, Lenghts = out$lengths, Pos = cumsum(out$lengths)) ################################################### ### code chunk number 23: clustering2 ################################################### prc <- prcomp(iris[1:4]) plot(prc$x, pch = as.numeric(iris[,5]), col = as.numeric(iris[,5])) paths <- cut_tour(tour, cut = "boundary") for(p in paths) lines(prc$x[p, ]) TSP/inst/doc/TSP.Rnw0000644000175000017500000013174513623555613013756 0ustar nileshnilesh%\documentclass[10pt,a4paper,fleqn]{article} \documentclass[nojss]{jss} \usepackage[english]{babel} %% my packages %\usepackage{a4wide} %\usepackage[round,longnamesfirst]{natbib} %\usepackage{hyperref} % \usepackage{amsmath} \usepackage{amsfonts} % %\newcommand{\strong}[1]{{\normalfont\fontseries{b}\selectfont #1}} \newcommand{\class}[1]{\mbox{\textsf{#1}}} \newcommand{\func}[1]{\mbox{\texttt{#1()}}} %\newcommand{\code}[1]{\mbox{\texttt{#1}}} %\newcommand{\pkg}[1]{\strong{#1}} \newcommand{\samp}[1]{`\mbox{\texttt{#1}}'} %\newcommand{\proglang}[1]{\textsf{#1}} \newcommand{\set}[1]{\mathcal{#1}} %\usepackage{Sweave} %% \VignetteIndexEntry{Introduction to TSP} \author{Michael Hahsler\\Southern Methodist University \And Kurt Hornik\\Wirtschaftsuniversit\"at Wien} \title{\pkg{TSP} -- Infrastructure for the Traveling Salesperson Problem} %% for pretty printing and a nice hypersummary also set: \Plainauthor{Michael Hahsler, Kurt Hornik} %% comma-separated \Plaintitle{TSP -- Infrastructure for the Traveling Salesperson Problem} %% without formatting \Shorttitle{Infrastructure for the TSP} %% a short title (if necessary) %% an abstract and keywords \Abstract{ The traveling salesperson problem (also known as traveling salesman problem or TSP) is a well known and important combinatorial optimization problem. The goal is to find the shortest tour that visits each city in a given list exactly once and then returns to the starting city. Despite this simple problem statement, solving the TSP is difficult since it belongs to the class of NP-complete problems. The importance of the TSP arises besides from its theoretical appeal from the variety of its applications. Typical applications in operations research include vehicle routing, computer wiring, cutting wallpaper and job sequencing. The main application in statistics is combinatorial data analysis, e.g., reordering rows and columns of data matrices or identifying clusters. In this paper we introduce the \proglang{R}~package \pkg{TSP} which provides a basic infrastructure for handling and solving the traveling salesperson problem. The package features S3 classes for specifying a TSP and its (possibly optimal) solution as well as several heuristics to find good solutions. In addition, it provides an interface to \emph{Concorde}, one of the best exact TSP solvers currently available. } \Keywords{combinatorial optimization, traveling salesman problem, \proglang{R}} \Plainkeywords{combinatorial optimization, traveling salesman problem, R} %% without formatting %% The address of (at least) one author should be given %% in the following format: \Address{ Michael Hahsler\\ Engineering Management, Information, and Systems\\ Lyle School of Engineering\\ Southern Methodist University\\ P.O. Box 750123 \\ Dallas, TX 75275-0123\\ E-mail: \email{mhahsler@lyle.smu.edu}\\ Kurt Hornik\\ Department of Finance, Accounting and Statistics\\ Wirtschaftsuniversit\"at Wien\\ 1090 Wien, Austria\\ E-mail: \email{kurt.hornik@wu-wien.ac.at}\\ URL: \url{http://statmath.wu.ac.at/~hornik/} } \begin{document} <>= options(width = 75, useFancyQuotes=FALSE, prompt="R> ") ### for sampling set.seed(1234) @ %\title{Introduction to \pkg{TSP} -- Infrastructure for the Traveling % Salesperson Problem} %\author{Michael Hahsler and Kurt Hornik} \maketitle \sloppy %\abstract{ % The traveling salesperson (or, salesman) problem (TSP) is a % well known and important combinatorial optimization problem. The goal % is to find the shortest tour that visits each city in a given list % exactly once and then returns to the starting city. Despite this % simple problem statement, solving the TSP is difficult since it % belongs to the class of NP-complete problems. The importance of the % TSP arises besides from its theoretical appeal from the variety of its % applications. Typical applications in operations research include % vehicle routing, computer wiring, cutting wallpaper and job % sequencing. The main application in statistics is combinatorial data % analysis, e.g., reordering rows and columns of data matrices or % identifying clusters. In this paper we introduce the % \proglang{R}~package \pkg{TSP} which provides a basic infrastructure % for handling and solving the traveling salesperson problem. The % package features S3 classes for specifying a TSP and its (possibly % optimal) solution as well as several heuristics to find good % solutions. In addition, it provides an interface to \emph{Concorde}, % one of the best exact TSP solvers currently available. } \section{Introduction} The traveling salesperson problem~\citep[TSP;][]{Lawler1985, Gutin2002} is a well known and important combinatorial optimization problem. The goal is to find the shortest tour that visits each city in a given list exactly once and then returns to the starting city. Formally, the TSP can be stated as follows. The distances between $n$ cities are stored in a distance matrix $\mathbf{D}$ with elements $d_{ij}$ where $i,j = 1\dots n$ and the diagonal elements $d_{ii}$ are zero. A \emph{tour} can be represented by a cyclic permutation $\pi$ of $\{1, 2,\dots, n\}$ where $\pi(i)$ represents the city that follows city $i$ on the tour. The traveling salesperson problem is then the optimization problem to find a permutation $\pi$ that minimizes the \emph{length of the tour} denoted by \begin{equation} \sum_{i=1}^n d_{i\pi(i)}. \end{equation} % see Lenstra & Kan 1975: Some simple Applications to the TSP For this minimization task, the tour length of $(n-1)!$ permutation vectors have to be compared. This results in a problem which is very hard to solve and in fact known to be NP-complete~\citep{Johnson1985a}. However, solving TSPs is an important part of applications in many areas including vehicle routing, computer wiring, machine sequencing and scheduling, frequency assignment in communication networks~\citep{Lenstra1975, Punnen2002}. %and structuring of %matrices~\citep{Lenstra1975, Punnen2002}. Applications in statistical data analysis include ordering and clustering objects. For example, data analysis applications in psychology ranging from profile smoothing to finding an order in developmental data are presented by~\cite{Hubert1978}. Clustering and ordering using TSP solvers is currently becoming popular in biostatistics. For example, \cite{Ray2007} describe an application for ordering genes and \cite{Johnson2006} use a TSP solver for clustering proteins. In this paper we give a very brief overview of the TSP and introduce the \proglang{R}~package \pkg{TSP} which provides an infrastructure for handling and solving TSPs. The paper is organized as follows. In Section~\ref{sec:TSP} we briefly present important aspects of the TSP including different problem formulations and approaches to solve TSPs. In Section~\ref{sec:infrastructure} we give an overview of the infrastructure implemented in \pkg{TSP} and the basic usage. In Section~\ref{sec:examples}, several examples are used to illustrate the package's capabilities. Section~\ref{sec:conclusion} concludes the paper. A previous version of this manuscript was published in the \emph{Journal of Statistical Software} \citep{TSP:Hahsler+Hornik2007}. \section{Theory} \label{sec:TSP} In this section, we briefly summarize some aspects of the TSP which are important for the implementation of the \pkg{TSP} package described in this paper. For a complete treatment of all aspects of the TSP, we refer the interested reader to the classic book edited by \cite{Lawler1985} and the more modern book edited by \cite{Gutin2002}. It has to be noted that in this paper, following the origin of the TSP, the term \emph{distance} is used. Distance is used here interchangeably with dissimilarity or cost and, unless explicitly stated, no restrictions to measures which obey the triangle inequality are made. An important distinction can be made between the symmetric TSP and the more general asymmetric TSP. For the symmetric case (normally referred to as just \emph{TSP}), for all distances in $\mathbf{D}$ the equality $d_{ij} = d_{ji}$ holds, i.e., it does not matter if we travel from $i$ to $j$ or the other way round, the distance is the same. In the asymmetric case (called \emph{ATSP}), the distances are not equal for all pairs of cities. Problems of this kind arise when we do not deal with spatial distances between cities but, e.g., with the cost or necessary time associated with traveling between locations, where the price for the plane ticket between two cities may be different depending on which way we go. \subsection{Different formulations of the TSP} \label{sec:formulations} Other than the permutation problem in the introduction, the TSP can also be formulated as a graph theoretic problem. Here the TSP is formulated by means of a complete graph $G = (V, E)$, where the cities correspond to the node set $V = \{1,2,\ldots,n\}$ and each edge $e_i \in E$ has an associated weight $w_i$ representing the distance between the nodes it connects. If the graph is not complete, the missing edges can be replaced by edges with very large distances. The goal is to find a \emph{Hamiltonian cycle}, i.e., a cycle which visits each node in the graph exactly once, with the least weight in the graph~\citep{Hoffman1985}. This formulation naturally leads to procedures involving minimum spanning trees for tour construction or edge exchanges to improve existing tours. TSPs can also be represented as integer and linear programming problems~\citep[see, e.g.,][]{Punnen2002}. The \emph{integer programming (IP) formulation} is based on the assignment problem with additional constraint of no sub-tours: \[ \begin{array}{rl} \text{Minimize } & \sum_{i=1}^n\sum_{j=1}^n{d_{ij}x_{ij}} % = \mathrm{trace}(\mathbf{D}^T\mathbf{X}) \\[3mm] \text{Subject to } & \sum_{i=1}^n{x_{ij}=1}, \quad j=1,\ldots,n, \\ & \sum_{j=1}^n{x_{ij}=1}, \quad i=1,\ldots,n, \\ & x_{ij} = 0 \text{ or } 1 \\ & \text{no sub-tours allowed} \\ \end{array} \] The solution matrix $\mathbf{X} = (x_{ij})$ of the assignment problem represents a tour or a collection of sub-tour (several unconnected cycles) where only edges which corresponding to elements $x_{ij} = 1$ are on the tour or a sub-tour. The additional restriction that no sub-tours are allowed (called \emph{sub-tour elimination constraints}) restrict the solution to only proper tours. Unfortunately, the number of sub-tour elimination constraints grows exponentially with the number of cities which leads to an extremely hard problem. The \emph{linear programming (LP) formulation} of the TSP is given by: \[ \begin{array}{rl} \text{Minimize } & \sum_{i=1}^m{w_ix_i} = \mathbf{w}^T\mathbf{x}\\[3mm] \text{Subject to } & \mathbf{x} \in \mathcal{S} \\ \end{array} \] where $m$ is the number of edges $e_i$ in $G$, $w_i \in \mathbf{w}$ is the weight of edge $e_i$ and $\mathbf{x}$ is the incidence vector indicating the presence or absence of each edge in the tour. Again, the constraints given by $\mathbf{x} \in \mathcal{S}$ are problematic since they have to contain the set of incidence vectors of all possible Hamiltonian cycles in $G$ which amounts to a direct search of all $(n-1)!$ possibilities and thus in general is infeasible. However, relaxed versions of the linear programming problem with removed integrality and sub-tour elimination constraints are extensively used by modern TSP solvers where such a partial description of constraints is used and improved iteratively in a branch-and-bound approach. \subsection{Useful manipulations of the distance matrix} \label{sec:manipulations} Sometimes it is useful to transform the distance matrix $\mathbf{D} = (d_{ij})$ of a TSP into a different matrix $\mathbf{D'} = (d'_{ij})$ which has the same optimal solution. Such a transformation requires that for any Hamiltonian cycle $H$ in a graph represented by its distance matrix $\mathbf{D}$ the equality \begin{equation*} \sum_{i,j \in H}{d_{ij}} = \alpha \sum_{i,j \in H}{d'_{ij}} + \beta \end{equation*} holds for suitable $\alpha > 0$ and $\beta \in \mathbb{R}$. From the equality we see that additive and multiplicative constants leave the optimal solution invariant. This property is useful to rescale distances, e.g., for many solvers, distances in the interval $[0, 1]$ have to be converted into integers from~1 to a maximal value. A different manipulation is to reformulate an asymmetric TSP as a symmetric TSP. This is possible by doubling the number of cities~\citep{Jonker1983}. For each city a dummy city is added. Between each city and its corresponding dummy city a very small value (e.g., $-\infty$) is used. This makes sure that each city always occurs in the solution together with its dummy city. The original distances are used between the cities and the dummy cities, where each city is responsible for the distance going to the city and the dummy city is responsible for the distance coming from the city. The distances between all cities and the distances between all dummy cities are set to a very large value (e.g., $\infty$) which makes these edges infeasible. An example for equivalent formulations as an asymmetric TSP (to the left) and a symmetric TSP (to the right) for three cities is: \begin{equation*} \begin{pmatrix} 0 &d_{12} &d_{13} \\ d_{21} &0 &d_{23} \\ d_{31} &d_{32} &0 \\ \end{pmatrix} \Longleftrightarrow \begin{pmatrix} 0 &\infty &\infty & -\infty &d_{21} &d_{31} \\ \infty &0 &\infty & d_{12} &-\infty &d_{31} \\ \infty &\infty &0 & d_{13} &d_{23} &-\infty \\ -\infty &d_{12} &d_{13} & 0 &\infty &\infty \\ d_{21} &-\infty &d_{23} & \infty &0 &\infty \\ d_{31} &d_{32} &-\infty & \infty &\infty &0 \\ \end{pmatrix} \end{equation*} Instead of the infinity values suitably large negative and positive values can be used. The new symmetric TSP can be solved using techniques for symmetric TSPs which are currently far more advanced than techniques for ATSPs. Removing the dummy cities from the resulting tour gives the solution for the original ATSP. \subsection{Finding exact solutions for the TSP} \label{sec:exact} Finding the exact solution to a TSP with $n$ cities requires to check $(n-1)!$ possible tours. To evaluate all possible tours is infeasible for even small TSP instances. To find the optimal tour \cite{Held1962} presented the following \emph{dynamic programming} formulation: Given a subset of city indices (excluding the first city) $S \subset \{2, 3, \dots, n\}$ and $l \in S$, let $d^*(S, l)$ denote the length of the shortest path from city $1$ to city $l$, visiting all cities in $S$ in-between. For $S = \{l\}$, $d^*(S,l)$ is defined as $d_{1l}$. The shortest path for larger sets with $|S| > 1$ is \begin{equation} d^*(S,l) = \mathrm{min}_{m \in S\setminus\{l\}}\Bigl( d^*(S\setminus\{l\},m) + d_{ml}\Bigl). %\text{ for } |S| > 1. \end{equation} Finally, the minimal tour length for a complete tour which includes returning to city $1$ is \begin{equation} d^{**} = \mathrm{min}_{l \in \{2,3,\dots,n\}}\Bigl( d^*(\{2,3,\dots,n\}, l) + d_{l1}\Bigl). \end{equation} Using the last two equations, the quantities $d^*(S,l)$ can be computed recursively and the minimal tour length $d^{**}$ can be found. In a second step, the optimal permutation $\pi = \{1, i_2, i_3,\dots,i_n\}$ of city indices $1$ through $n$ can be computed in reverse order, starting with $i_n$ and working successively back to $i_2$. The procedure exploits the fact that a permutation $\pi$ can only be optimal, if \begin{equation} d^{**} = d^*(\{2,3,\dots,n\}, i_n) + d_{i_n1} \end{equation} and, for $2 \le p \le n-1$, \begin{equation} d^*(\{i_2, i_3,\dots, i_p, i_{p+1}\}, i_{p+1}) = d^*(\{i_2,i_3,\dots,i_p\}, i_p) + d_{i_pi_{p+1}}. \end{equation} The space complexity of storing the values for all $d^*(S,l)$ is $(n-1)2^{n-2}$ which severely restricts the dynamic programming algorithm to TSP problems of small sizes. However, for very small TSP instances this approach is fast and efficient. %\marginpar{time complexity if order $n^22^n$. Check!} A different method, which can deal with larger instances, uses a relaxation of the linear programming problem presented in Section~\ref{sec:formulations} and iteratively tightens the relaxation till a solution is found. This general method for solving linear programming problems with complex and large inequality systems is called \emph{cutting plane method} and was introduced by \cite{Dantzig1954}. Each iteration begins with using instead of the original linear inequality description $\mathcal{S}$ the relaxation $A\mathbf{x} \le b$, where the polyhedron $P$ defined by the relaxation contains $\mathcal{S}$ and is bounded. The optimal solution $\mathbf{x}^*$ of the relaxed problem can be obtained using standard linear programming solvers. If the $\mathbf{x}^*$ found belongs to $\mathcal{S}$, the optimal solution of the original problem is obtained, otherwise, a linear inequality can be found which is satisfied by all points in $\mathcal{S}$ but violated by $\mathbf{x}^*$. Such an inequality is called a cutting plane or cut. A family of such cutting planes can be added to the inequality system $A\mathbf{x} \le b$ to obtain a tighter relaxation for the next iteration. If no further cutting planes can be found or the improvement in the objective function due to adding cuts gets very small, the problem is branched into two sub-problems which can be minimized separately. Branching is done iteratively which leads to a binary tree of sub-problems. Each sub-problem is either solved without further branching or is found to be irrelevant because its relaxed version already produces a longer path than a solution of another sub-problem. This method is called \emph{branch-and-cut}~\citep{Padberg1990} which is a variation of the well known \emph{branch-and-bound}~\citep{Land1960} procedure. The initial polyhedron $P$ used by \cite{Dantzig1954} contains all vectors $\mathbf{x}$ for which all $x_e \in \mathbf{x}$ satisfy $0 \le x_e \le 1$ and in the resulting tour each city is linked to exactly two other cities. Various separation algorithms for finding subsequent cuts to prevent sub-tours (\emph{sub-tour elimination inequalities}) and to ensure an integer solution \citep[\emph{Gomory cuts;}][]{Gomory1963} were developed over time. The currently most efficient implementation of this method is \emph{Concorde} described in~\cite{Applegate2000}. \subsection{Heuristics for the TSP} \label{sec:heuristics} The NP-completeness of the TSP already makes it more time efficient for small-to-medium size TSP instances to rely on heuristics in case a good but not necessarily optimal solution is sufficient. TSP heuristics typically fall into two groups, tour construction heuristics which create tours from scratch and tour improvement heuristics which use simple local search heuristics to improve existing tours. In the following we will only discuss heuristics available in \pkg{TSP}, for a comprehensive overview of the multitude of TSP heuristics including an experimental comparison, we refer the reader to the book chapter by \cite{Johnson2002}. \subsubsection{Tour construction heuristics} The implemented tour construction heuristics are the nearest neighbor algorithm and the insertion algorithms. \paragraph{Nearest neighbor algorithm.} The nearest neighbor algorithm~\citep{Rosenkrantz1977} follows a very simple greedy procedure: The algorithm starts with a tour containing a randomly chosen city and then always adds to the last city in the tour the nearest not yet visited city. The algorithm stops when all cities are on the tour. An extension to this algorithm is to repeat it with each city as the starting point and then return the best tour found. This heuristic is called repetitive nearest neighbor. \paragraph{Insertion algorithms.} All insertion algorithms~\citep{Rosenkrantz1977} start with a tour consisting of an arbitrary city and then choose in each step a city $k$ not yet on the tour. This city is inserted into the existing tour between two consecutive cities $i$ and $j$, such that the insertion cost (i.e., the increase in the tour's length) $$d(i,k) + d(k,j) - d(i,j)$$ is minimized. The algorithms stop when all cities are on the tour. The insertion algorithms differ in the way the city to be inserted next is chosen. The following variations are implemented: \begin{description} \item[Nearest insertion] The city $k$ is chosen in each step as the city which is nearest to a city on the tour. \item[Farthest insertion] The city $k$ is chosen in each step as the city which is farthest from any of the cities on the tour. \item[Cheapest insertion] The city $k$ is chosen in each step such that the cost of inserting the new city is minimal. \item[Arbitrary insertion] The city $k$ is chosen randomly from all cities not yet on the tour. \end{description} The nearest and cheapest insertion algorithms correspond to the minimum spanning tree algorithm by \cite{Prim1957}. Adding a city to a partial tour corresponds to adding an edge to a partial spanning tree. For TSPs with distances obeying the triangular inequality, the equality to minimum spanning trees provides a theoretical upper bound for the two algorithms of twice the optimal tour length. The idea behind the farthest insertion algorithm is to link cities far outside into the tour first to establish an outline of the whole tour early. With this change, the algorithm cannot be directly related to generating a minimum spanning tree and thus the upper bound stated above cannot be guaranteed. However, it can was shown that the algorithm generates tours which approach $2/3$ times the optimal tour length~\citep{Johnson1985}. \subsubsection{Tour improvement heuristics} Tour improvement heuristics are simple local search heuristics which try to improve an initial tour. A comprehensive treatment of the topic can be found in the book chapter by \cite{Rego2002}. \paragraph{$k$-Opt heuristics.} The idea is to define a neighborhood structure on the set of all admissible tours. Typically, a tour $t'$ is a neighbor of another tour $t$ if $t'$ can be obtained from $t$ by deleting $k$ edges and replacing them by a set of different feasible edges (a $k$-Opt move). In such a structure, the tour can iteratively be improved by always moving from one tour to its best neighbor till no further improvement is possible. The resulting tour represents a local optimum which is called $k$-optimal. Typically, $2$-Opt~\citep{Croes1958} and $3$-Opt~\citep{Lin1965} heuristics are used in practice. \paragraph{Lin-Kernighan heuristic.} This heuristic~\citep{Lin1973} does not use a fixed value for $k$ for its $k$-Opt moves, but tries to find the best choice of $k$ for each move. The heuristic uses the fact that each $k$-Opt move can be represented as a sequence of $2$-Opt moves. It builds up a sequence of $2$-Opt moves, checking after each additional move whether a stopping rule is met. Then the part of the sequence which gives the best improvement is used. This is equivalent to a choice of one $k$-Opt move with variable $k$. Such moves are used till a local optimum is reached. By using full backtracking, the optimal solution can always be found, but the running time would be immense. Therefore, only limited backtracking is allowed in the procedure, which helps to find better local optima or even the optimal solution. Further improvements to the procedure are described by \cite{Lin1973}. \section{Computational infrastructure: the TSP package} \label{sec:infrastructure} In package~\pkg{TSP}, a traveling salesperson problem is defined by an object of class \class{TSP} (symmetric) or \class{ATSP} (asymmetric). \func{solve\_TSP} is used to find a solution, which is represented by an object of class \class{TOUR}. Figure~\ref{fig:overview} gives an overview of this infrastructure. \begin{figure} \centering \includegraphics[width=14cm]{overview} \caption{An overview of the classes in \pkg{TSP}.} \label{fig:overview} \end{figure} \class{TSP} objects can be created from a distance matrix (a \class{dist} object) or a symmetric matrix using the creator function \func{TSP} or coercion with \func{as.TSP}. Similarly, \class{ATSP} objects are created by \func{ATSP} or \func{as.ATSP} from square matrices representing the distances. In the creation process, labels are taken and stored as city names in the object or can be explicitly given as arguments to the creator functions. Several methods are defined for the classes: \begin{itemize} \item \func{print} displays basic information about the problem (number of cities and the distance measure employed). \item \func{n\_of\_cities} returns the number of cities. \item \func{labels} returns the city names. \item \func{image} produces a shaded matrix plot of the distances between cities. The order of the cities can be specified as the argument \code{order}. \end{itemize} Internally, an object of class \class{TSP} is a \class{dist} object with an additional class attribute and, therefore, if needed, can be coerced to \class{dist} or to a matrix. An \class{ATSP} object is represented as a square matrix. Obviously, asymmetric TSPs are more general than symmetric TSPs, hence, symmetric TSPs can also be represented as asymmetric TSPs. To formulate an asymmetric TSP as a symmetric TSP with double the number of cities (see Section \ref{sec:manipulations}), \func{reformulate\_ATSP\_as\_TSP} is provided. This function creates the necessary dummy cities and adapts the distance matrix accordingly. A popular format to save TSP descriptions to disk which is supported by most TSP solvers is the format used by \emph{TSPLIB}, a library of sample instances of the TSP maintained by \cite{Reinelt2004}. The \pkg{TSP} package provides \func{read\_TSPLIB} and \func{write\_TSPLIB} to read and save symmetric and asymmetric TSPs in TSPLIB format. Class \class{TOUR} represents a solution to a TSP by an integer permutation vector containing the ordered indices and labels of the cities to visit. In addition, it stores an attribute indicating the length of the tour. Again, suitable \func{print} and \func{labels} methods are provided. The raw permutation vector (i.e., the order in which cities are visited) can be obtained from a tour using \func{as.integer}. With \func{cut\_tour}, a circular tour can be split at a specified city resulting in a path represented by a vector of city indices. The length of a tour can always be calculated using \func{tour\_length} and specifying a TSP and a tour. Instead of the tour, an integer permutation vector calculated outside the \pkg{TSP} package can be used as long as it has the correct length. All TSP solvers in \pkg{TSP} can be used with the simple common interface: \begin{quote} \code{solve\_TSP(x, method, control)} \end{quote} where \code{x} is the TSP to be solved, \code{method} is a character string indicating the method used to solve the TSP and \code{control} can contain a list with additional information used by the solver. The available algorithms are shown in Table~\ref{tab:methods}. \begin{table} \caption{Available algorithms in \pkg{TSP}.} \label{tab:methods} \centering \begin{tabular}{llc} \hline \textbf{Algorithm} & \textbf{Method argument} & \textbf{Applicable to} \\ \hline Nearest neighbor algorithm & \code{"nn"} & TSP/ATSP \\ Repetitive nearest neighbor algorithm & \code{"repetitive\_nn"} & TSP/ATSP \\ Nearest insertion & \code{"nearest\_insertion"} & TSP/ATSP \\ Farthest insertion & \code{"farthest\_insertion"} & TSP/ATSP \\ Cheapest insertion & \code{"cheapest\_insertion"} & TSP/ATSP \\ Arbitrary insertion & \code{"arbitrary\_insertion"} & TSP/ATSP \\ Concorde TSP solver & \code{"concorde"} & TSP \\ 2-Opt improvement heuristic & \code{"two\_opt"} & TSP/ATSP \\ Chained Lin-Kernighan & \code{"linkern"} & TSP \\ \hline \end{tabular} \end{table} All algorithms except the Concorde TSP solver and the Chained Lin-Kernighan heuristic (a Lin-Kernighan variation described in \cite{Applegate2003}) are included in the package and distributed under the GNU Public License (GPL). For the Concorde TSP solver and the Chained Lin-Kernighan heuristic only a simple interface (using \func{write\_TSPLIB}, calling the executable and reading back the resulting tour) is included in \pkg{TSP}. The executable itself is part of the Concorde distribution, has to be installed separately and is governed by a different license which allows only for academic use. The interfaces are included since Concorde~\citep{Applegate2000,Applegate2006} is currently one of the best implementations for solving symmetric TSPs based on the branch-and-cut method discussed in section~\ref{sec:exact}. In May 2004, Concorde was used to find the optimal solution for the TSP of visiting all 24,978 cities in Sweden. The computation was carried out on a cluster with 96 Xeon 2.8 GHz nodes and took in total almost 100 CPU years. \section{Examples} \label{sec:examples} In this section we provide some examples for the use of package~\pkg{TSP}. We start with a simple example of how to use the interface of the TSP solver to compare different heuristics. Then we show how to solve related tasks, using the Hamiltonian shortest path problem as an example. Finally, we give an example of clustering using the \pkg{TSP} package. An additional application can be found in package \pkg{seriation}~\citep{TSP:Hahsler+Buchta+Hornik:2006} which uses the TSP solvers from \pkg{TSP} to order (seriate) objects given a proximity matrix. \subsection{Comparing some heuristics} In the following example, we use several heuristics to find a short path in the \code{USCA50} data set which contains the distances between the first 50 cities in the \code{USCA312} data set. The \code{USCA312} data set contains the distances between 312 cities in the USA and Canada coded as a symmetric TSP. The smaller data set is used here, since some of the heuristic solvers employed are rather slow. <<>>= library("TSP") data("USCA50") USCA50 @ We calculate tours using different heuristics and store the results in the list \code{tours}. As an example, we show the first tour which displays the method employed, the number of cities involved and the tour length. All tour lengths are compared using the dot chart in Figure~\ref{fig:dotchart}. For the chart, we add a point for the optimal solution which has a tour length of 14497. The optimal solution can be found using Concorde (\code{method = "concorde"}). It is omitted here, since Concorde has to be installed separately. <>= set.seed(1234) @ <>= methods <- c("nearest_insertion", "farthest_insertion", "cheapest_insertion", "arbitrary_insertion", "nn", "repetitive_nn", "two_opt") tours <- sapply(methods, FUN = function(m) solve_TSP(USCA50, method = m), simplify = FALSE) ## tours$concorde <- solve_TSP(tsp, method = "concorde") tours[[1]] dotchart(sort(c(sapply(tours, tour_length), optimal = 14497)), xlab = "tour length", xlim = c(0, 20000)) @ \begin{figure} \centering \includegraphics[width=11cm, trim=0 10 0 0]{TSP-dotchart_USCA50} \caption{Comparison of the tour lengths for the USCA50 data set.} \label{fig:dotchart} \end{figure} \subsection{Finding the shortest Hamiltonian path} The problem of finding the shortest Hamiltonian path through a graph (i.e., a path which visits each node in the graph exactly once) can be transformed into the TSP with cities and distances representing the graphs vertices and edge weights, respectively~\citep{Garfinkel1985}. Finding the shortest Hamiltonian path through all cities disregarding the endpoints can be achieved by inserting a `dummy city' which has a distance of zero to all other cities. The position of this city in the final tour represents the cutting point for the path. In the following we use a heuristic to find a short path in the \code{USCA312} data set. Inserting dummy cities is performed in \pkg{TSP} by \func{insert\_dummy}. <>= set.seed(1234) @ <<>>= library("TSP") data("USCA312") tsp <- insert_dummy(USCA312, label = "cut") tsp @ The TSP now contains an additional dummy city and we can try to solve this TSP. <<>>= tour <- solve_TSP(tsp, method="farthest_insertion") tour @ Since the dummy city has distance zero to all other cities, the path length is equal to the tour length reported above. The path starts with the first city in the list after the `dummy' city and ends with the city right before it. We use \func{cut\_tour} to create a path and show the first and last 6 cities on it. <<>>= path <- cut_tour(tour, "cut") head(labels(path)) tail(labels(path)) @ The tour found in the example results in a path from Lihue on Hawaii to Prince Rupert in British Columbia. Such a tour can also be visualized using the packages \pkg{sp}, \pkg{maps} and \pkg{maptools} \citep{TSP:Pebesma+Bivand:2005}. Note that he \code{if} statement and the \code{plot} in the \code{else} part in the following is not needed and only checks if the appropriate packages are installed when building this document. <>= if(require(sp) && require(maps) && require(maptools)) { library("sp") library("maps") library("maptools") data("USCA312_GPS") # create spatial coordinates and a basemap using WGS84 projection. USCA312_coords <- SpatialPointsDataFrame(cbind(USCA312_GPS$long, USCA312_GPS$lat), proj4string=CRS("+proj=longlat +datum=WGS84"), data = USCA312_GPS) USCA312_basemap <- map2SpatialLines(map("world", xlim=c(-166,-47), ylim=c(15,83), plot=FALSE), proj4string=CRS("+proj=longlat +datum=WGS84")) plot_path <- function(path){ plot(as(USCA312_coords, "Spatial"), axes = TRUE) plot(USCA312_basemap, add = TRUE, col = "gray") points(USCA312_coords, pch = 3, cex = 0.4, col = "red") path_line <- SpatialLines(list(Lines(list(Line(USCA312_coords[path,])), ID="1"))) plot(path_line, add=TRUE, col = "black") points(USCA312_coords[c(head(path,1), tail(path,1)),], pch = 19, col = "black") } plot_path(path) } else { plot(NA, xlim= c(0,1), ylim = c(0,1)); text(.5, .5, "Suggested packages not available") } @ \begin{figure} \centering \includegraphics[width=10cm, trim=0 30 0 0]{TSP-map1} \caption{A ``short'' Hamiltonian path for the USCA312 dataset.} \label{fig:map1} \end{figure} The map containing the path is presented in Figure~\ref{fig:map1}. It has to be mentioned that the path found by the used heuristic is considerable longer than the optimal path found by Concorde with a length of $34928$, illustrating the power of modern TSP algorithms. For the following two examples, we indicate how the distance matrix between cities can be modified to solve related shortest Hamiltonian path problems. These examples serve as illustrations of how modifications can be made to transform different problems into a TSP. The first problem is to find the shortest Hamiltonian path starting with a given city. In this case, all distances to the selected city are set to zero, forcing the evaluation of all possible paths starting with this city and disregarding the way back from the final city in the tour. By modifying the distances the symmetric TSP is changed into an asymmetric TSP (ATSP) since the distances between the starting city and all other cities are no longer symmetric. As an example, we choose New York as the starting city. We transform the data set into an ATSP and set the column corresponding to New York to zero before solving it. Thus, the distance to return from the last city in the path to New York does not contribute to the path length. We use the nearest neighbor heuristic to calculate an initial tour which is then improved using $2$-Opt moves and cut at New York to create a path. <>= set.seed(1234) @ <<>>= atsp <- as.ATSP(USCA312) ny <- which(labels(USCA312) == "New York, NY") atsp[, ny] <- 0 initial_tour <- solve_TSP(atsp, method="nn") initial_tour tour <- solve_TSP(atsp, method ="two_opt", control = list(tour = initial_tour)) tour path <- cut_tour(tour, ny, exclude_cut = FALSE) head(labels(path)) tail(labels(path)) @ <>= plot_path(path) @ \begin{figure} \centering \includegraphics[width=10cm, trim=0 30 0 0]{TSP-map2} \caption{A Hamiltonian path for the USCA312 dataset starting in New York.} \label{fig:map2} \end{figure} The found path is presented in Figure~\ref{fig:map2}. It begins with New York and cities in New Jersey and ends in a city in Manitoba, Canada. %The path shows the typical behavior %of the nearest neighbor heuristic with first connecting the cities close by and %then making rather big ``jumps'' for the final cities. Concorde and many advanced TSP solvers can only solve symmetric TSPs. To use these solvers, we can formulate the ATSP as a TSP using \func{reformulate\_ATSP\_as\_TSP} which introduces a dummy city for each city (see Section~\ref{sec:manipulations}). <<>>= tsp <- reformulate_ATSP_as_TSP(atsp) tsp @ After finding a tour for the TSP, the dummy cities are removed again giving the tour for the original ATSP. Note that the tour needs to be reversed if the dummy cities appear before and not after the original cities in the solution of the TSP. The following code is not executed here, since it takes several minutes to execute and Concorde has to be installed separately. Concorde finds the optimal solution with a length of $36091$. <>= tour <- solve_TSP(tsp, method = "concorde") tour <- as.TOUR(tour[tour <= n_of_cities(atsp)]) @ Finding the shortest Hamiltonian path which ends in a given city can be achieved likewise by setting the row in the distance matrix which corresponds to this city to zero. For finding the shortest Hamiltonian path we can also restrict both end points. This problem can be transformed to a TSP by replacing the two cities by a single city which contains the distances from the start point in the columns and the distances to the end point in the rows. Obviously this is again an asymmetric TSP. For the following example, we are only interested in paths starting in New York and ending in Los Angeles. Therefore, we remove the two cities from the distance matrix, create an asymmetric TSP and insert a dummy city called \code{"LA/NY"}. The distances from this dummy city are replaced by the distances from New York and the distances towards are replaced by the distances towards Los Angeles. <>= set.seed(1234) @ <<>>= m <- as.matrix(USCA312) ny <- which(labels(USCA312) == "New York, NY") la <- which(labels(USCA312) == "Los Angeles, CA") atsp <- ATSP(m[-c(ny,la), -c(ny,la)]) atsp <- insert_dummy(atsp, label = "LA/NY") la_ny <- which(labels(atsp) == "LA/NY") atsp[la_ny, ] <- c(m[-c(ny,la), ny], 0) atsp[, la_ny] <- c(m[la, -c(ny,la)], 0) @ We use the nearest insertion heuristic. <<>>= tour <- solve_TSP(atsp, method ="nearest_insertion") tour path_labels <- c("New York, NY", labels(cut_tour(tour, la_ny)), "Los Angeles, CA") path_ids <- match(path_labels, labels(USCA312)) head(path_labels) tail(path_labels) @ <>= plot_path(path_ids) @ The path jumps from New York to cities in Ontario and it passes through cities in California and Nevada before ending in Los Angeles. The path displayed in Figure~\ref{fig:map3} contains multiple crossings which indicate that the solution is suboptimal. The optimal solution generated by reformulating the problem as a TSP and using Concorde has only a tour length of $38489$. \begin{figure} \centering \includegraphics[width=10cm, trim=0 30 0 0]{TSP-map3} \caption{A Hamiltonian path for the USCA312 dataset starting in New York and ending in Los Angles.} \label{fig:map3} \end{figure} \subsection{Rearrangement clustering} Solving a TSP to obtain a clustering was suggested several times in the literature \citep[see, e.g.,][]{Lenstra1974, Alpert1997, Johnson2004}. The idea is that objects in clusters are visited in consecutive order and from one cluster to the next larger ``jumps'' are necessary. \cite{Climer2006} call this type of clustering \emph{rearrangement clustering} and suggest to automatically find the cluster boundaries of $k$ clusters by adding $k$ \emph{dummy cities} which have constant distance $c$ to all other cities and are infinitely far from each other. In the optimal solution of the TSP, the dummy cities must separate the most distant cities and thus represent optimal boundaries for $k$ clusters. For the following example, we use the well known iris data set. Since we know that the dataset contains three classes denoted by the variable \code{Species}, we insert three dummy cities into the TSP for the iris data set and perform rearrangement clustering using the default method (nearest insertion algorithm). Note that this algorithm does not find the optimal solution and it is not guaranteed that the dummy cities will present the best cluster boundaries. %\marginpar{FIXME: Was sagt Concorde dazu?} <>= set.seed(4444) @ <<>>= data("iris") tsp <- TSP(dist(iris[-5]), labels = iris[, "Species"]) tsp_dummy <- insert_dummy(tsp, n = 3, label = "boundary") tour <- solve_TSP(tsp_dummy) @ Next, we plot the TSP's permuted distance matrix using shading to represent distances. The result is displayed as Figure~\ref{fig:clustering}. Lighter areas represent larger distances. The additional red lines represent the positions of the dummy cities in the tour, which mark the cluster boundaries obtained. <>= ## plot the distance matrix image(tsp_dummy, tour, xlab = "objects", ylab ="objects") ## draw lines where the dummy cities are located abline(h = which(labels(tour)=="boundary"), col = "red") abline(v = which(labels(tour)=="boundary"), col = "red") @ \begin{figure} \centering \includegraphics[width=9cm, height=9cm, trim=0 20 0 0]{TSP-clustering} \caption{Result of rearrangement clustering using three dummy cities and the nearest insertion algorithm on the iris data set.} \label{fig:clustering} \end{figure} One pair of red horizontal and vertical lines exactly separates the darker from lighter areas. The second pair occurs inside the larger dark block. We can look at how well the partitioning obtained fits the structure in the data given by the species field in the data set. Since we used the species as the city labels in the TSP, the labels in the tour represent the partitioning with the dummy cities named `boundary' separating groups. The result can be summarized based on the run length encoding of the obtained tour labels: <<>>= out <- rle(labels(tour)) data.frame(Species = out$values, Lenghts = out$lengths, Pos = cumsum(out$lengths)) @ One boundary perfectly splits the iris data set into a group containing only examples of species `Setosa' and a second group containing examples for `Virginica' and `Versicolor'. However, the second boundary only separates several examples of species `Virginica' from other examples of the same species. Even in the optimal tour found by Concorde, this problem occurs. The reason why the rearrangement clustering fails to split the data into three groups is the closeness between the groups `Virginica' and `Versicolor'. To inspect this problem further, we can project the data points on the first two principal components of the data set and add the path segments which resulted from solving the TSP. <>= prc <- prcomp(iris[1:4]) plot(prc$x, pch = as.numeric(iris[,5]), col = as.numeric(iris[,5])) paths <- cut_tour(tour, cut = "boundary") for(p in paths) lines(prc$x[p, ]) @ \begin{figure} \centering \includegraphics[width=10cm, trim=0 20 0 0]{TSP-clustering2} \caption{The 3 path segments representing a rearrangement clustering of the iris data set. The data points are projected on the set's first two principal components. The three species are represented by different markers and colors.} \label{fig:clustering2} \end{figure} The result in shown in Figure~\ref{fig:clustering2}. The three species are identified by different markers and all points connected by a single path represent a cluster found. Clearly, the two groups to the right side of the plot are too close to be separated correctly by using just the distances between individual points. This problem is similar to the \emph{chaining effect} known from hierarchical clustering using the single-linkage method. \section{Conclusion} \label{sec:conclusion} In this paper we presented the R extension package \pkg{TSP} which implements an infrastructure to handle and solve TSPs. The package introduces classes for problem descriptions (\class{TSP} and \class{ATSP}) and for the solution (\class{TOUR}). Together with a simple interface for solving TSPs, it allows for an easy and transparent usage of the package. With the interface to Concorde, \pkg{TSP} also can use a state of the art implementation which efficiently computes exact solutions using branch-and-cut. \section*{Acknowledgments} The authors of this paper want to thank Roger Bivand for providing the code to correctly draw tours and paths on a projected map. % %\bibliographystyle{abbrvnat} \bibliography{TSP} % \end{document} TSP/inst/doc/TSP.pdf0000644000175000017500000334062214204773730013756 0ustar nileshnilesh%PDF-1.5 % 77 0 obj << /Length 3008 /Filter /FlateDecode >> stream xڕYY6~_}TY\\g+[e#q$'_KT%FCD~M0V < 3e,¢dܽzy %.L Ho8,yl?tpJ=4f[6诬 Cl]g0ʲ`P,k4s$Ұi:dՎ;ڲǾ.;GA 4LJ:Le 5r88~ ֫O>b(@ ]qvMٚnw> [7ژAx*Y7_vp~Q\)\'i;ݼ% *N1_n;)JEXq{̊0 )2)P kۙV%i<4;;Rt ME};30T;o$uJmGiOd}dI vLX/lGoeZ v VuM݀aמw_5vhւޞTau6I#!ZVZyiizb1q;%~L/.v}pjkspV䠵Dfݼ9^DR8+ლ~nl72Z\n6͗VdM# s& B ;RNM_9Lr梉R41 n$O[$\ܑ.#'f\Gt,V[@DI`y\s픫n;K*.Ɗcჹ֭[ ^m]$-r7R*Ozߩ9̢(Q9:|eP哇 49`U!!a|$U. *+ݑQrv,\(Cq/UQ(s~aRqޡE1Fܣ S=f~@"܌x,ҷ2s*ب4i#ed$IǞ f:nޔTA7k3چ-*RH 4bbVRj)g9(J,|:RI>O 6<%:]y%t{ _ogF.^+Q8H%Vm4r;Zzj"ќ> iU2ax0&<0an& s6 ;9D⹠"ˎSWJa3NyeiGEYx/H'#VƗ-/ kz6*ͳI-2~X!+ͻFv)zW76_\#y"On\p:Wl꾜/Z-RQ'_Ydfjr(ʩj?! d~|J;| '\́[Q#,B=T˦d5νd{"(*Blք»4!h~3ֵty>Isb(_E(C'\~V^PYsm#{a1s7"TkbP2G)=ԒT@wI˝tP(mGJw+=#hLO,]K='<2]D%~ބ qs4]xRYw<>j sΏ/a2J%ivD^^mn}1om]-A;@w%0]X~d}O@pO"yɫ/_P\r$t\J◼}-FV4>~,^?hlzX5n}[Oe endstream endobj 115 0 obj << /Length 3643 /Filter /FlateDecode >> stream xڕZKs6WTŐJ*gɦj]j4fhs g 9,T%@4ucUtYWqQ__Uaҫ?Ar_9˖DqY0nz{} :s=z387* xI ݿN ɶ3ӘaѶH:b_-ޙZGȓA[1WϮlZ*6ɩ4Jx=\pe<8aVLy_Ug{70oOV!&?OȔBhyu/P?6,.K5F4H 'CkXz@^ٜyH ³iGU𞆛3QK\Bu&̺îEHVcFeYigTkZ-U$M eDNFFГaIQOѰ`? D`&U'4X~V5Ll?-a5. ΂ZA t9}g DZzzϯrPZ@k(Fge3ͽLM'PhZ6K!<Ob@N:T?c;I&QDqI `JԜ0TuhuvV_Y [Dg+"(9M' $+Z";AۛQ*ǎ{Y4S~MoIhp\yc( &zA}@\{][$ ^/ N#띞󏍺_IA'=ԣ|arP}%b9%ζ]hfN.xT.KhQRq~;e㥞/GJK[zta(GD! 390" & H?2W2p i}b}5M0P+c݀9nN O-̒k7l8X&؊W%"Ηњ.>vw9A*U u+JkL{A>#R܏T޴ < UlIY`Q<`nZ;J5 x( ]ڇP&@\bbA9 Nc.-`C ch-,8C~2֋ϏU7.T= >bxlݢ1QCʼ.mسQ>#q3CT#BY)V?A Ve V ,]/0m~keo'^6G`8[zjx-*kg31zflzq#HU_msyXDuRa=[\0 )]jCx[}aa\7CÆ-HIs!NI@)5x1ؘ}Ps⚧mIR#dQ7;xRh}wm^*uaJ "ݎ2M)ݎ4vXRUV\ E-0#> O-Q$OvU:&ܺ冃\{t૓HV_~'crV ".Bc5 **Y˲~طǾ7/Ab&wHI]-Yv1~nIV2g6"vnys{TgUBX ×Y@$˂'-|f&;|a@ Nb'偎Kv/|LQuftPlԶx!$"ї%fﷸN=E-43Ƀo]ڭݨ(4c+8R6"[寞VK0sc4F ukYv5Jx^.d2͋D%xɎc 競|yWABmz\Br,YB#oN._,qWὖӮk[MHy"a?'Z` k)3DS_W|@]ԞA2}c]R^~VR{*!,c< sh[?<] ja7I oA !qr\8ܱGCM!BEj1VRW]9ee+]>r1}/@+XQL[:/8Y`IBRg._?ݾ? endstream endobj 135 0 obj << /Length 3441 /Filter /FlateDecode >> stream xڽZ[~Pߴ̝dH&nF) 8yJDnIkxӎvɋH̹~jR}sBXi*׫+cU*i[ޭެYmL-Z~Y^m;^?Fi׫_;s&DĀyF-tTċLEZdts~WnE3&`⍰6Y j*1y+Ck5e/ѭѻ[ۗ MۖE ̢DJ`S-7 fh^NR-. IuP< ~ -'vCA~Q#9N0e79NjK3xfI} =.S.[Y`úAÖ`4"OҀ>G.!2h,*VsT]Ӭ(ʆo`Lc&;O7#i zn9кvwƖ md0X{R8 )ќ= 7~@[ЧRaȡ,v݈ءU~[?4A%^GT€3)dd\.A&Tjyp*dTrqb4(uXT\\7po ]EW8{E^ kk ǥ⁇IB.<' M(:g xPf/SF+a8ű:M]ZNE#q՛= إRa% [Ӕ~~쪖#Բh8V1q(A GW7)B'2J]*|\L#SJy#Jcd]yO.섦R2-lݗ5gqcU- q†rH& gBC J*i Dv8jȷ#f@Hv~HQJo? ~~>L~-lxdU/NAHaGٕm; ^ϐA !iǾӨU:/ZLGcWv۶30ˁJ'Ș-uk9H%@`<5oz7N%W)0^ 2U6s0J ¶zbIO]ORUWw{tDO%Xˮ=^m-mKQ!>sne_ɃaHre"yF^T8y"_ @I5@|{fd<}fۮ'n>O")i5>Alge-hؕa` 9h=@%w@<[ FS" a$lVy3}#XYw. PAڧ뜆.5<NKP,ܯ(o #_U+HT ~ڣQc ɷN;1+W-UJNJ3 h脥{ r w;QBĭS:ѴӆlRM{aƏ5#PNFt;sBϵ 95Y ^ڈ3<ӵh,Cf{'/]b*U]KL,(짱<)$"%s #rHleiD endstream endobj 148 0 obj << /Length 3709 /Filter /FlateDecode >> stream x[KܶWLne Ll'99P3]Z3XR~}k1/ye][C`hfE7Ͼ|ff.n.r,~\WJ;Qňp}ú;4͊s!ܾ7z#"ʢ}$,]{(}mEafw&^xߕfuՖoMtA˦lY. .{g/j3'xFa+ʉxWF ]>z9MW|7|InVBC$D7qLw8ɢ|)E`=fL]ͩH]Ej";>n ­ >?:Mxu7E| qC)YAsbJ>S] 𻇲WKoGQ르BTͽA"wz/};퀛`cˡ)Jb\u}'6J-ߚ*튮=ڪ@I9!p-:7т֞{.!DS? ](< SDjЭW .a  \Aʚ$Drp:-,,8'1AgX#E-QuzH.e)JbBjAWT%b.LRPӧ`) } G%gW)3f6-)4SS 0+&nuz<'%CSW7#;-x4aaҹ^vm }:mq>Sʹ41o"'lYoб~ʸhBq@CoADr_0ći "Dm9~.-P_cȂ0Աס-6)1[YR8"Q&D$zbT_] և+*q bXU q0x5gqq+B4cBgw TvφeƷtn>xUaz&ud~}cDbz@j98_CD܆@c? MJL!/hVx0I12.OgM3Y4.Q@b&AF9Ϻj "pE3 {-vgi֯(lE_+㠙GhWoVO S8R `P>s}F8y8C ;b CiTGq#G,fwxg#`Z(&Co7.Zb) l/Rx*)v8ƒYY'hjφⓄga2 Prʑ#/Qa/BьLa'`T2{Y&D5P_n 0W,×sV>>KFțx] ,[7c@7|N>>4mH P)b `~_$_ّ`FOdlFGC]}ff}Gmt=(M!9uK꓅yQ &OV2^ O$=W&iCZݞ3$)|.Sۿ!YF'%a\sQU1[KkI6cC8.:#4gܪCS$ޅ<9d@RIGYM8h7ͦhЁ L#oB ;Z1U-Mj}Q|R%Va=7o/pxX o]W'aI6D)}.KH}1OgM}Nbx֥K-;η! ]"SH@2u 5<4i6{d Ny$ķ1">e0}n.e*7sm*P3C{=-\1/@p Ԕiv5XwJ+p=E&iMmχ @2@'ϏŒ\l&Λ>MGR{#uvGO Рw27*0QO` r폌)ƌ}b z 섣w6f?Ɨ8dܹ|K=d>g&pLTI-mM&ldɦybfQ/N/r38RR=NFD2J.}_s22!R}Ž _WʐI &HV]g.Pa{tnP^ 39QLajXJ@z1j)";3.iT,U vASXܵލ&MT>SbP{{nX1}-vTZH, z(a X)bi%}> stream xڭZYܶ~ׯGn&;yeKcTV^<`FrB{ק/Tnl9l7_Cn/"\lTAɒ/ds]n~>U+{GmmEOx =[*`sznv럿Ջ/b؛MM l8lHDjgWV_(2i=Ll0P x;2^75^&kԮ`:`e"?Vno7a'q̜өj <]mNcgJb! ɦCq7Dp)Q֍[7w1ۢhyƜY&kn5m[LUoڡ)}NyG7z0 N8W,yKŽ>Y'E<+[{h{:NkhҘ(}AUyi`{ڃ,u]ړlna9s}/Oss&Sڕ O-2M]*N8P4GuxKu2?s8Wy 72ζ[|(?Ǝ:Y!| sxa_W?,@f9˦[*`tq^.>L H 蒩2/_fm W[[ZΗw"/TeUUHXSn'WJռcTIr Qܯ9'xm+kڭ&c( :p 90 ; w,M( yQ E u,o׌+23̏'_8H%v>(FF(f ۱O ?GU0 L8raFFQZzO'CQPpT$ + 8LpMg{nJԴF삃_$d5# ΁99L/C#1h`l'ne]?$|QE6YXnDYH6`G%n/] hqI|!Rt$ U~6,B 2w3Wx,xZ~kiu+f4PAX">> stream xZmo7_-8|ghsC0^6:bz&.WZ9 p83 %NxH"%A #( +0_0> M&Z N82/\ߒ OdDF+DLHKHQOWHy1&Q{:j,$@w& A<{lKR4ZxO;apBDtk0z$i` 7=F#Wx8INj)Z1]LN[2OMb0g;y`vC#.&[ )f͇v~U3u1=6/X1#QHf9j )'Pe-_UsJey&1/`%89F!P]{*i ϑާX~EoRz<(H7X0ZQGbxZNGҢ: Y +L("{4ǿQ0V4ۋ]TJCd&/Ci SI.xJ(Cĵ<#FjgTI"c)q*QT=/d_xټ|SC/O|["0r)뻨w[ݮB%t" nB.k'Mzeree ee,QYhx&C0JJtm$=,B ASPVd=K ҧ=G٪icVA0J.X2saBO8vC9]K(h1&Jv5O2Q8b.ށPRF<q:kNP2cQᐿ%AP?jLɔ$MN?3n 2}60_6i%b719St@=X'Tx LD_qPܞ qq 90x0NˈO*"֐ Î( u10ZXg~c~6G췜\FNy30nXHTpiErt\|(` &AZpgQR!` Jyp11H *WV=Gb G`!n&Q{X.G0=i{}}W5#] g|s40`CVK&(+ m2hJҍF]n(AI?(=% ߪ=:~P[kwڝ/rYlJmq_z{N֣ߤRpEoeXN ٛ86rP7#:(WZc`qX9vN5۸ԖmȺ3takl.{MĿ&HOr6?s6 NfY_6d F88=%?fIɹJr#ʣUVEF&Xt&ɐi{tT+ԷCmࡇ ]ouֳSu-ZOp6mJؖ+r=@="D*7T%RiSSiSSiS,'^Re\)̎֏BL>N (i]%OzY5Srv֕Dpytw*XϠ؎k09@T,\Xd 'X}v]=FoBXȋpA%i,B b^}}WU'ou endstream endobj 204 0 obj << /Length 2816 /Filter /FlateDecode >> stream xڭM۸_[etH$J-zH&=Av=hlz[r%9"EiGI6d͟޼}MURL7&7qa"\*.pКc_cۏnwZEI w?D\o9|ya<.@02Ҷe sMaKfy`q՗mx˲,sXC7KB"Ua6ArQ$A6ϵ6Uyڙ;UNXTr_<kq(Ӈ7S7[\.8; MxfhG, Q#!9ۓ0al@E@(?}(]RDEas㺿oƾ08PY$K/ XF&0rkrC X&*Un{$@>y$8k僜.C*όR)>R@z%fP)Q+2uv<LJT`<+ b5鉮Il $PNQode q $^YZ'[]AMEaKoyr X'b>%xc5s`;?D?2}z;eg>yl;+Mnv*GWrLsֹ%,VWpraХp|hJE_sw#zH*iU6S". 3-JVOCZ2x X="QF &=Xxif(L[d!-.mkiKL[0osojnɩr=ۋeWkX$r UB1^J*W1xrʲVc|&;R6'YhOk7>M?2Rl^S{&kWVa/TmB4^ #$4qsW4 sPt*fk/eRS'pwQ./PaQD:Ɠ&e)KJYOPP4#}G%\fD5rn% F:g'd` ^TDEyU-LFf2.^3d@IJH)J^z YKUYɼaVVݳA!-e Ɠ|WqUWiW.UFn'Gw"Ip0`m˚{k"_cPN4_-LiM|(7"ghQ0M^oQV;͐40xN<ȸy{x˓Vx7kJb7:@唍zl!?=Ljg`۽Nz&_Y%amv{hZ[}Z\?;s 2ƼtT!` !9xD׾ClԲdގ͞Utu҇:wi ł:G}N\Z[^!̗Z'`6=5(FvIs-&>4DTE'gIi7zLN|p#g%78t5+Kc RgUp]G :1Ch}a\ <NWm;Й|<;G-ֈ%B6\fR/2VOZzC? ?Lmp . k.3w15^r?uvpMb>@Mn}C*H2_il! @]S:3xl?Pgn2ꠤa24tbx=޽m(FiL=v^R8Q rpMwWԙbZ7 3R$D~Lב-z=uC'sp8/o3$q;\QL#MIZJKJWG_q|@[YWOQ\ x ŭ3.y3h*MåJ$]=K ug #_ٓm,FKBgQƅ(V1qeCS\d\/2Jwq]\AdW.A /*ʿŌh̓htI]y_#mCMUf(=g6.l6Edl;pz/oĽh-3 <ښuF̒|M攔1@/5rpR榈~lsQūp8QHSj2vLd8!drQ>V]yE:%Qɮ% o$7=`k> stream xڝYY~_a z(QkdRX\NvjߧEwW.> Fps 78Pda&7ǍҡMbi=l~ * N۝:=mw2h leSt~na?~rA="7MpM7S01"i͗hŚL-vKK} %nFWfHtct",oU+ר[{dG^Н}aֵX}w%Mu{v./3QP+vt 2"Jbh"T~RY8N&zt4\ x@(SiEFF?jچתvўO@`"YhfUQ;J 2;t_&l;TV3EF:'4UwA :o'kEe_ 0*djّe%%ؔs81!o>҇/\w#&RJ2lkwq΋ʭF:Q{HA`y̻X&A8y=Wd_P$*Y)sDFiy١ ϐ&%d39p3f@l< Zwk)X{aG$gSY RK_E3w`<Ϸ~ !cTXq:%Zu<+-9sY9R kM1γ1Dj#|-_ÙTրhQ =MSx?hqaX羳cI$ccۮ(P}M3wk!h70UZ$ 3J0)mE. c?+G I@O,`πEkZ  J#J7 wTz6~k}Gf?-|ZrQh SYrTk7IGq!l߂odI8ߔHM}M)(OF 1;c)@e4(f‡@x\I gvۥJݿRz|z2^~u.2s4<DB_ s@5~rf}mPک@QtDFD4 SQ)b=Q@ٰsl[?,uri YJeBQZePiٕf'Ņ9vG7\F,lb >\+>&xZ:J|?՞ɊSe`S;i%h +[:?{"f6Q㾝4EZ }?Nj4!j#9R`k}Ċ< 1zB\/x`l(1!57%MŦ br%0sA &P5dӢo25Nا)zU(r|/IL[ wB"浠w(W0Vb/mGl3IO\$fY. endstream endobj 218 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpTTNeNK/Rbuild417521c48d8c/TSP/vignettes/overview.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 229 0 R /BBox [0 0 539 234] /Group 223 0 R /Resources << /Font << /F1 230 0 R/F2 231 0 R/F3 232 0 R>> /ProcSet [ /PDF /Text ] >> /Length 1405 /Filter /FlateDecode >> stream xXn7 Wh"~έ@uv/y$ܑ<8Dԃ:#rcΞOѰw;bOȏlB99CB6TmMk m&{v=/.-?_p׏ qy\ 4)8|6$]̝0sR;'&Elތ0.,I yes9R˜^7꽭WI ݍ;UTz=:ŵvc+ܮlH_ 8"x4èԳLJ!̅m{=+ۋWg>MD7@6($4)',jB4P-Ym Ɉ0HyWxO 쭱(RFoQ GV%l1uA#-6نٝD`P @ CH$J EDE$P..)m]7m;V$a 3B>P492Q M9ثet Hцb.ZJ cJ ׽47d]nc0fŌ0ᤶבX5esPC/:8[(]W|(=Pr >U)v=U u{'WA1$Wݦs/5{c:49˚:|@qnZ\YLP!pprwkb4U MPZicNs2imh)(X $>Tɔ`򠧥II1h[48^x$f4fҟfV`~5aoGȫe)hf b].&&wF0I.VGTDB~],&ލ޿==DXB&)HR?D,5\_&jة4+1YWG;rӧmS ЮG6WMJ@̓*jf%L#߿P}x9'?s.l` endstream endobj 234 0 obj << /Length 357 /Filter /FlateDecode >> stream x]Mn0Fta$BJIXG=1CTeȂ3Ro/Eul?ǯ~45̢maoހJDۛo34.CmL3 ,ⷰ7~c;^!_| W(갮o}v2sB<5 uՆ~^֡/8 5|ceR"+<H.t!BTmN7f'%8UȚ~q~gNĚȏ;:`̉3'33Ur{*ɼGf@f+O)Z#> stream x]n0 3SLJ2b/_?E $ǔ{xOSQJu?=!O1P.'q|3?o3=,/vv0d1o/ endstream endobj 238 0 obj << /Length 274 /Filter /FlateDecode >> stream x]n E|tI$Rʒ}n>EaߗGJ]0ftOY{pxJXXj9&Pc!G33xo-Ny Bȫ`>Wc`0Eu33/l]Nt[8Kp-`1ejTQZmkJew0Of4RJOsl7IS.{\D)19qyIL_#/{7ݰϟ5`ZWgSKb xK endstream endobj 239 0 obj << /Length 242 0 R /Filter /FlateDecode /Length1 4368 >> stream xW{P\gǾ𺰰OBKxIh$rv&MӇMjӇmcDZ>:uik?:mtԚ86ZM8ڎS9<~|;nt.&TrD ;gB$G%V >K8ǵo !*&%g6 IIWnI-_:.>3oK4=/F$ȴ\İ?$}_}<B2LHHLJ^6O1["ɠrssEE4MxcR ar\Ӝcv5ndݶ{7tjVDj)71F-.a7Vj.I2E*; BFe=w.;MȾ;ܕU4Ѽ*lݸyi\Sv*00\[?RZahH,r;x~ T JnLtNK%e١Kôz&kj9DŽY<[j]lUMC0_Ö?ѩspKG*-N6S51{坞MXdR, &ڭ<eAFR^e.d $en~= Wws}}Ǖ=}%{0 u䨾\9 *:~̰gp-+$|:c`G$`4R^x rrgM׆i7;褱]gv4lS~ʖ'w?jPݸr8Y$OW&0yWr%jΒ>ԑg\_jvV>th^dw߯ :Rg0L@}7_~Kרϳ<)P6j@r}WG\mKepGtPw4XX|#6OuYAIԱ,7tm\B?/@r YުU.lbR*z|&KTލ兎#U<6\)k&IjfSRf?f5~pC elvV<٬&>?ysر__|Qsb@QO[Q@)76כRy џP-з ;E-7C=23yf_'C qjm5b 7#KA Z?ݱ]80AOMoӶ:0X BL…ɖxw:@3nql'`ǁpY_uGw遣u+];<{9 qwTQnxx`NUwxQrU.t;OGFN7ҕ}[_fc=ZOFovgkOo۴.22}橡=*O;4}Ɵ_*.T궙J֦hћÑdomW;s- \-ȕs5aY(hX*ϔNd,)gie⅔ۏNIiaM/xkĕ:zɧ>E=&5 QXsTba/= *n 5Lx!L{Hd9!]\BV+@AV ނFWKΒ?O N6nbٗvU +NPj6EO;K೅kSȡ URF5:qNDF'9FgFHhB qZєdӻ4tF H.F''K$Ͷht9:4:dh T3Fg[ }5"uėE,HQ^ScWzu9INr,<尕{`,Q<7!^3mеj8s Js!9%gX*zMJbl^q1:_:1G1q>6:%bT{RXψљ`@dF#6‚u"-ej~hG蜼FEq*̋ai%qdI'xUI,"1[ckv Uk:K-5Z ~U$$Jĺf1i̓c#!" ]Α K-ljGu\^KܤG ͽqhݐ*עy_X}O}@g,E/j(B#d \@ՊB_$QW j3_՞nuTPN:'6|ԯðj{j4.n,xiУ/崈uJݡqܹ 0AyʈaZ~aHZUzSj~cQZi+jU}!5bPQ Yj=I MiϜ_ǦxD_a[ endstream endobj 240 0 obj << /Length 243 0 R /Filter /FlateDecode /Length1 8524 >> stream xX{l[y?^DJLR},J,JSÒ%YOK-˖H銤Wڎޒp֤1c6n;Y j"@2 qץ: 4@lj9ȥG *H(D"f#N""7.Sxa_+BHbP@({@aUoFRqplѮ.G|0 ,hE9B%SB]=sAT5<>`SafTl޲u))-CNQٯcTrCBy(DEJΡ5rSRTi)X`.sGx޼E8BBmo v5cX v Ys!瘁! } X&єZ[2c0*j *,mݴ;&Z渶ZF_#$!3Mت[f2xdok/Ճ] ]!6b@EvzMnrIIyyJѤ0z;DLΚm v Nmx=dVK \G{-ӥyj~`zlpf7Fo2.f@mk Z| Q)B29;!23:YZ{K33 ^eo˶hm|h9:r0#(dq sp8zABЯNVF{Y[V\П.kfI$&}o uWhG^粫fjR \m2jU!̔?q t'Z PXisR md]G*2!dKmKGCU}yKho)!ql[BQm5= Ivj׿\R!!!=Y?}vK|_QdrQ]h EEOqɘi!X y ;dFs#B <ꛄ?On+)leb)ޭr]qaD: b]`.'|]2}}'x6wz~{\$Zb՜yd4hUx&Y b;hڤKUҜ-l={N=J|lqx>fR ?_s` )(SSSSb`d*R゚TXmmcqI3l݇ Ӈ'GvZg܇jqy;shٽVg2ꪕ<@| +y <}~ JꚙEU=L+ud{teuAcWC]UR5RYhm=2J5skcRHb઼RHU6l̨b="-XXi6ğP{8q( @0 Lt(t/LZ?00k/Mb)^=|+znV{ ݬרM c.8yb]ҢJlޚ Y*BW3x z_2!?JB^$dO|Stwn֧!;Ss*ҥJqjrT%tIIIB{rK޽~b)CgiVzBsvu+Ŋ#nNCq$A:{:B++ n߇F%>>1άBfeCa nzłꝬ85wExm4 Zo{bf70R ˽y}/]WUC1K 1mni1یscsM2pNJ:ڨ쮙3gN?P$24 kt _=?qJ٥M x|kn69%o__k0厠No[Yͬ[ Қ&)|0-P[pcn5؆.%.!(\~(ŝQ U*jJeիOssr15%v"߾/tr, 5j]r~8mC9VKntO96]XܰJz6 (~XS1]sa_B+@³S !ZF q k_yM1*TUq ghBɱ 8TX {|tApVSΣUcZVgXGeVhD(fcJ4y3aV! S ]u fg5|H^~a9c.8qRy.sL0L(]^J8tErFcJWlu9GgcXc+~IWp ke)2?10ӷcQg 8 3ǔϝJXOIz.t[NȲ4O-KG|P,j/cؠ<JGcTw,{Ԥlq߬<Omc-YnG`Q}k xn'0΃U:`2?M(2pQlL71FEw +blɐk`|. ^BK{]xu|h vfa7n.Ht@)ƓA6(ÊnFK1,(ScN>ЍP4 \O`Nr,PhM\ \{06Ӱ1)]$>1"wv!jd) @}g#[f l+ uh@#tiE>4${k̫phj^??9 kC03L.jUx~ '1R}TaT$1 CpRb4h&Q< =҈[e^]>CܷJM,Zʛmyd**VF}*1VyC,3,#`)UdVBcSȬcj$XHyK\ ZU_$\#ʺlQX[2Uj@գj }fG [h]]Ua; XQbqA+&Jf{iYeb?wǨY¿|}L#*tE*""6 {aeݴhmmeS^D9o endstream endobj 241 0 obj << /Length 244 0 R /Filter /FlateDecode /Length1 6952 >> stream xYmlS~Ͻ0|$8!_7`F c8N}+]@*M]UNn:NӴiu?6i۟iժ c*sI t{ss}sX֠΀ 4jx NtN `/J*377;|`R'LĎ'es#'yn񝦣&l'Y;?Q8Ym-O/xy`3G>vf֖ddXkjm Hs .I/*Z |@{F.M"K̺ML>BXp7܁YxnJ/ޚHck#Eކ(6xVj`=?Р?lBO-xУ}6`=j&S.ܶ?|}>>~xb>gKHa5uuw4 1Ct0p太.ɽCҠ{F2WgΌJ ?DɢE);]hP]+NU}{%ɣI/+q5c\>Xq+IeQS LfY_[ >{Y0MrkH;j _{3-X<+%bmI[_qlB㊮/%E  !wI}StRR﬚8}DU]؎,|Ѱ77(+FQ2/#^6aip ywC]k5[9c}Rvy6ѾL-P|;0n7Sn%^,@/L{`tVU].L'N.\"_^M&4ezNb]L5b8%ǓFFZCG~kS_v?kv%|Ό`O!/m [|nߨ[{k^~SeVs>`$${ Γb<~gϊ"ٞx#B/I֓m+0k*X0f2]fE@>e耭+K6zV`3*^]X HZ#d ɈNISK^XfrM`yc3rR 4H1#}c r+^zY`1VeY`9a#g&Jh_P`7VeT`t)O l5ei_cKײ\n 2#ı 9Y1W3w83? y0979^eyL`-iYW1-oF-#ฎuT`\a̱e}S`KӋOML`g.SscSh3u2;#:VoWV`C[3~I`*0rl͍̎Yюyǰrh%.c p9:Ƶsl#ϛxE`V^KN+:%9o79.qmכ,0zJ`P0&t舴k_cti@~B5:/q=υH>Wp>)v;h1 񄖤ݝݛ{6Jㇴb L!#ީtpRFTL*S񜎖J)-S=Ow;Vgx&{ -W“^mo r0zޞhO280tb9T:ABg"k4?9GT)(U8n iB?s.$^u(@/w8$"vH *dp۱0EC8p{j6Z8iTKgK4V%-^/W[1^bPށ׶exKl,VT cOHbi{xyR,*2|X[w1ЉPZYBo[cl`wB7lvac_Rc zg[A-S,\vgJ5VFT3=O%9SJpkm>K!Ws2~g Z,t1i8;r"x,-gFlv}>:̣]+wtUw-I7Lf\QYׯTQuiz;uN?08NS8KbbķY?-V4F?3쩬Q-}9*=ا*WUˇ;뻒Q%]e2)CJң< (-+/~ ߳ZWYNWIh Za??X?t1Zf3̜KG)1TlfWL7qI{ |)FRNFYcaڍ7?!Bc;/KgŞiܧi4Jf, endstream endobj 261 0 obj << /Length 3325 /Filter /FlateDecode >> stream xڝZYo~Gmd5blj5Z$:ZdKØCNxXV~}j#J2z㫢nw_|wunwKTa*w{_W],I ZL?tc10n7eOH땖O ~ w0VLg| |N#w溽.kg>̦ҹY}e֑OڎWOQw[JCAb67~ZG3wEFx1/*[g/PnkIXX~x{%Of>-z,a41yD>H=kqyH4(v%8pA.|6(kOZTD{om9gFbLw7,i[9ЉIt| J-SE6e16TΒ05YblD Ȁ-+j|x!U:[xGWULl g$( &\^|qǙ)Kx'^5݌MZ{#e,8@ ‹ԫPF Z^,`gNъ)P+pdh7QUR&t]6$T(4[噊 ߠb<񐡯,ݖ;E/ Gw^tX%Y tb  p+8r2;e 97)\žzX+Ti|sh+-bYEKY! :Oѐ|Qfa7 3!c*4U>2,}¬ x/ll84V/pdӗLD%`U4%r` [SfOo7M0~6{w@@=b7Sbxޡt<&[`f쪊Wo(E&Kr88̐F|Q`[VՀ%3UAGbx ;:[~ 2#HA^m; *'v(gޛ;^&OWA@a]43^HY64M~<]ψ(yg|:lӂPg/ 4PIږigmǻV*uZUÄ]։mƵZtƖ$^ed8޸knf+Jk@X|8P$W+x\0H2@2B a 7-./STNZD݄ FQu쑨1 ;&+qnF2z0vUE~PAV^g[uZmxh(=<LGz,#BN͗etJdh+Nf|xO_ `{:t5.ݚYB W/udٺ;V oxVJеSKXtɺo@UzlJɥK& A ,3g*z3[V] U Gәb>U5]5 3NS)ցpVsRNXh:| ـs9]s':di?5 8ũEU}l[/"ΒL)c]TlC8j<\ߵ1O> ݋שĔ3-,/ѧK/%^scm`~MELe0j]S9+`*BDU9a+1b%UK{sv5޲=_^jnU " V qQ]ȏY+~kcA]q䙱!܍shxxxScB5@(\ jmǝҬ78,d7[["Abprv9*ŠxQv!GOAԡ?/`1|p†nEa`drc婉ma!|Q'@3z M/͊]m0#PEA!%0Aq,,$b)%R-H}^eDY;-֎j&Xom.>RcP'JrĞp2M19e]'0=AYʕFZa/i3MGaPbӏ,7KM.sk|KؕZ]-t "?Q}GG2g.cpg2Hő/a {T 2Mɖg ܃"EɅQDX> x~ 0BP{}y2$G܇s\R֍!Ąk0OL ";%FA!7#kQU*X> stream xڵY[۸~_!2:VHmo^6`5YJr&=7ڒWMf,I<<è`W^=I@PnبHAdQav֋8wKcL-:[mñs5ջů?1zBQan[+%\K'M,m"C܄m]]/6\-E]mj{We|$@dr#U=фW]i@E82G:6zWlLsX$0Wa$SPRP] rص ]n/jeR:\u%Nvm.t2k?Stzѓy2g$mud ]FlEt&J(Ey NʡY9^_ل{8wo 5WM_vC6'|s:ݗv'GޞJ'"xk3'ȻVC纏_gͺ6%"okA"|%ydlqNDSvxCbt2#+w屫7a檦0/%=Ȣuռ,'Yj\0eiLI* S;n2Q*|u1YJ1((5|VQ_ird<|_mdo4^Z#&ˠZ*wn[ΕF%1*> ?/r9G% yGNUȱNF6Χ#2P%ّ y9>{NS4!kaPvwn}AEXc\ KESv 7bX;7>)fDaT,QaɄx(FӮ݀!E{\zTŠN6U=M!kpgVQBohNquHgA5[-2?Czq2>`-"{xil3$9/0MN81r|"\5fSa๚/u\AaQ 0M2JJ#65Dz%: 5brXo*E%Js%A tMT7Gnpȉ,:(tIXt9L~'OHT 4FM'U9:{κw]`:AY|RF&'LR6Y" l@Ksҹ PՀwCWpi PZY搤4` &)|^ђYqDd~gNVXEy26jEu͘ä98)s0V RAP xi٫,)'!_3u8Yԛg+KqM:e "ӗqEe\z@tͺy'ۀaĊBO@ t\L Q 'SIٱFdz`\%0H nY i $eY6UЧoMʈN+EM;*M 8R_a^{J7Wp5nu ڷ|U-tOsqv8)E:?IfgHl21jeBLu M©ǚPf>BN3L3ցkWXǎbTꩦM+~ DdH{CەH®Pr90TYlLQ1pf(84Չ=G&7,9gSh1ٴHF?8#0hѸ*/u1\"4ܟ_'K*s(:c e3q!d{P,Tv!Zz{/:9/M;|Sm]:ŗ|ヮNjoanm{IĽ;|`PЂUh9Lw"a5 Qwk"C#ܗ",'3&N(`{P FȿgTNvNom.,,/XE_df̒@+6@\܀wSK`Dlmlڐץ$ʧƾuͼ"O3oc3ȔUO9~?+~.KcNEh@h޼iwdž^h'wltP|I׹+tB]۫+ endstream endobj 284 0 obj << /Length 1442 /Filter /FlateDecode >> stream xnF]_A8B!z.-q@DyJ"[TU;+Ks/sε##]\* ^hy"t e_|q\"O(qLWPvحn0R*<$=f75zXPD3]$Nj3{R88:RB8FF??L}q~""L i1-]Y&If[woOnl@tk[DQo^?9QҖe ]8J2 |Rcٶ|>~y)/{bzxU߭'{a4H ][{;@{l%doD-]zeJ1J\LG: W/grp%ɝnB%Qa:>J)˴u\h?}@ # _mK}v i̺@zj몬"`QTv}6 9I,c?]$ns)tA|WnqԺ _jz޳c$ \v#RK7:&nMoTwFdnF:tn6Ri")2H!8'p^i0up(kOTD }sw@"w;nk@7Jp,}q~hR3qTBN$a/ ~Du.Rh竇bCA!RO&:x %ǿ8^Mm& i1P\K[6F1\}Ql:f^_3`[1"_e^CՈ0?زE77SBm)k~_mVmSrrˆ $Mf endstream endobj 279 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpTTNeNK/Rbuild417521c48d8c/TSP/vignettes/TSP-dotchart_USCA50.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 287 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 288 0 R>> /ExtGState << >>/ColorSpace << /sRGB 289 0 R >>>> /Length 1037 /Filter /FlateDecode >> stream xWMoG ﯘu(3m-J@A`ꦖaɮ6/gș Z$|.gmԭ2Q>o4iZ+}7Y|R;苰M<yZ7 vK|\M᏿v\Gt=VVCIT8yJ٠n2 .8lt~%& PO+SONLV'p|UyجWɁʹ>Zun|P{j 8u2?i&.+MVNJ)2|R7:XF62[QD@"H XF^*%,"1R5˹ vP)s3a`qkV Ed!Ń]xZV m\˸#+ m52j)-\- Q4~\ג-l{il]`1ve'Znf vY"wC͵Ϻ+uZH09[HZ=tÏ{+Znf&DTYse-ŌZX==ϭZ/: .!Ml ܄(jw?+e[葖\SbTv%&Tynڴ灸l'p}=f?jK}-ȥso^v~RO|u endstream endobj 291 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 297 0 obj << /Length 1716 /Filter /FlateDecode >> stream xڝWmo6_ad&&%ˀku.!2bbTt~w"gkih, Ih4J`g?'YfiÄ..(y#ZLJ\۵0,4#QG, =&beID]sUqc,=Nٴo0OcNr/$N0oN Tw% l5h9{y5XqY*,fy.#ΝSwy {0ʰ;: 4fiQ>l!r)o!ׅVɀaht(4A^喣J'!? 3UaMaai(i/ 6YJښpNm Q%QGRm,Qoo&ۂVeV;uvp= . qE ^17-au" y=UgX'VUS5F#?^]JꇫK`ܧijPV\O| J2iXixqU *s[\;վ S59OΈ$iO$I*Rr(Q9tyC'1pNe|#GiWI,r~ai*X)f/Xi7 0v(5rȲ+4Iw xAt 3}bc~a68 5MR3qM[1!8'DQ;;CbY\FVawq h؈a-(̋NɶRvΦaVtw!4Y O AT޹-wXPB, 1TuOгV^@{nhE)'(' {ꢀoZmDK"PŸP5^ ߚJzxałzմ%X#]À)ٺ6mRUŷ@xy\ >7~!w@%ܡ?1gW~x҅#qwJiz4DpXr#$˸6^͋jZ',|{,i4nN&*Y[RnvJWG-z#ĄB߼:~~6w.~c}o6] $4ZBFxw]+]{OrOh=o8;*=ew<7=붽k]|8Za endstream endobj 185 0 obj << /Type /ObjStm /N 100 /First 898 /Length 2962 /Filter /FlateDecode >> stream xZ[s6~ׯ[tƗutIvH͍Liw Jlvl6DH N2SLjR3 JÌ(-֡tEҳ`>>2)xT΍dL?[7y)Aы Ȁ^7AIFxE[WDN@$Ж>Bpi☦Lk 4646qZ%V$^R%bSh,* 23ZKBW&8R`D $VgH(4%CQ*yZYOB0 ,`1 VaxTdNyѳb.`.jet-BW/+ox`,>yHxA+Y+NHY l Og QXEJ1iJ $b Ab *Ɨ%%FZPDbjjHE^ ʉ 5$FHJ M P$̨jBLP TS_KEz~=*NLث矻7m*>owk?iܱt(s{kV|dśa!{6ߗC`weߣ/ڔ> "Tl˾K5Ή(v^(RGHJ|-};sboG,nE?4%-e4q3IxpW/v&/ܣxqɋf:)Ϗo!>fnQ^DzZ͘Yg^:hȗTJw]9{4fc2ANcKEOTw%x٥p1Q5Mwev~f.R뇢Vf5ZnAmķ]NnEn9lu/eo܆\.HGFI'pIc'ěou&qhuxpQMp3939h4u2帇Pz(XDa E ɡE1 ;dJ 7+  f@bh2 w~ ܃֑za ;@(Y 9 G)1yu(u<5 p=V,5z:%)&iu6oc%㬓)8Za+&K8(Sxۂ`h=Mx_=F ?- r7"hqdL>}dU_#!GBdp@:Cj rOGܮyf34F0!YQRz;?\YNꮌBUiOe`2\8nU tCbr0tM#PK *haLW~^@O4 V600 Qq#9:sZ?'h.Wh }˝Q+L͡|TQ']X̷6vGn]1ԍ6^'!񸇘]XK'qz<=u{c?t/7'7=iGGA=qG3R=> stream xڝVmo6_!EWk[>dme(q?AHD&=^ ;9"`ؤ;mg?fW)pj,qP%ãTcQޝH/^$ǮN&Ԏ7S3P>yl6iX}cOna2ٵ-uy <ַ ! g篡\Z}]_ *3] -vZEԅ#huqga@aa- aGwiV}`GbCkeq:2;CZ$owh>5ckzU*>9v@ (:_ gXm ykhSf5\܄ u8[6[cē$)j8t0bʩhH])R(+TTXNULRUgv:ЊmnIa?]͔4xzy+{f07?/.PUT0RY,aGUU1έOC lڻҪ2D9Eoa:g@‰͆UC hj>ڪx endstream endobj 301 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpTTNeNK/Rbuild417521c48d8c/TSP/vignettes/TSP-map1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 308 0 R /BBox [0 0 576 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 309 0 R/F6 310 0 R>> /ExtGState << >>/ColorSpace << /sRGB 311 0 R >>>> /Length 119594 /Filter /FlateDecode >> stream x56}*2 n@C#نѨ k#zǺ0s[G:5$`\Ͽ?~_~8JYW?}_+~zoFϿo?ӿW[UJyտuo>o5{Fpx~;?l4a:FLZc n.xfr#OOm:>xlO{NoӁ?\V^x0aR?=)7~  !}pkjv>j Wbsaf/=/h|ďv>T9w⍣W nxTaps_9o\1{*iXXWUށ9'56iŸ[X܁?#L}r~SJ~/t壽`_rNq)Neοp_!\aI4y,K4g^aA+qS||s|9.X'(r;ugico:-`kWITx `k`>)5䛟Wo}9T%|a19zgg|\w%:7Xs_X} ksFAtKst18Cu3ZW[x?j: qgɦԚkr.kz8Gyp=d#I=g.1F/EgXg:7g|W{.J<Xy'f`A{޸W|_#G2' "MK8g,>hwp?3[Ƀߗgq诊 4(~~{oo|jEw<g?X߃{Zx> 券B4_tCz8EPc͘3p<N5lh$N68?kX&H<^ Ĕh=l~~}S?qy]%9L0(WK1%u?U8@&;]ExR ?s?_4gE8u?yC.c2 ע~gxVsl^y(˜A`X $ oP7Mc~K#ǷS{vq:etS$z[\#j%tϳ/7g`VMCp: U"qz&"6&[-q#\H'O,|sorƓk3Bzu24mW%lnߜq1ihnoO3 rA^iu-| ;d ϗx@<PwHHbQHݺCI?xk`yYn%t7RtWH>X4isVxސϷ {9$LZ:U9/ؤ|2y2$ɘ!5! vTY,$ˏAjZ닇J3tCn7 cIyg,ֵ+OIABG, pzHŞNjMm1Gdze{Jl8$ų_VĦ.]C {$_.V7jΥ|VNMWɯS: s)WN _ƒ5޿!?N:r=)-7OCO89:M{ kOnY.\p ]>xqrj_G#7F>):IoO;IxgUDZ"E7IxEֵ ݐtm>|i5EK(G1?v'to>'5e Je{<<|SÚ8Fe:ă }7˔,NV_ooJN]:߮g9~m)~xrnwk>s'yJϓti~sB<ωr4ᒆn 'b? =*g?B?miZmσ Gxዏz@TP;)q/moi69h;'ԃ=# KE|͏+'ؾ3)|5SԓF7qd |5N~/$3Z<65b_~A8u>(K;?ٵ;l93q EmqlK@cIk& OkXo;RJ )j>#ۄ[>'+`k$F7|<7CRK,{T.C_@|ƃ#F=`cM8l‰?Ֆ\nnz(&޾ iMyYT%qx#=&248{}+ Vt`Z^}fNE'ujƺ7EJ-﫺S\Mp9;|s?m>{W4ݤyqx^/o>a%VG]0 g3?).#ME)QA8H/_˘ 'ؾm*SfP%LX{vR%g<?6b~Jͩm޸%W_?ĕ6uW혈|¹wy윝}]Tn_oSU>k><+#UJ#܈y뛈Kxa*s}&b#nOiˊے22o2D@bwV 7nL(H}yBxpG[Oz$`VG8cN>qX˻[kt8>e9 k`J=m:OZӶ䠼pb̧D\z$^xc_k֊/ܸCP}ny^?xr~.Fh å+H O!Xp~4x{>.QyJk>"8k{58k>P_x|Gnk>_ߟk> /ܾ#|=s~LJ}͇{>"r^xǘ/ܾcPZk>OsD#F8&9hI ;<6ϋ߷<8,u ^?WPڡ LG ≈| c]asl~=MRP/x=6uJz'vP5IwPE;/q|7%yC 5pn{q<;~jT|>7%S}8='D*C}}HM8} o_ϳHӠ]{|\;J k!@V඄ۧߗaY%wgUo`'̆pqpwwjNzrtI\9_ .o'D8 iP/.|?4JpG[(q@$`Yߠ)^CmR4=E;p9mȮ܁㼿G?q5v;o';K9_c qhbWyDyF>GQ1т=L?^[c?Gcky>7ą5_KE{{CbOw}w|xm{|&ߏ۞}4S8>>y>B[ޏsb Si9C_":߁  WCOĚORs >_~z~zy%ߙ?J\2*ۧqfpoW|\|)h F5/^H/{o+B_;}?֐=ٿoZk{7:M?[o gT]0}nO?8%Ix _(?Y%lƜ],~7wC_o)qOhpeU7oz4p#cQmzpmb3_~*c `er}0ʂ͞Љ+,8H%QހR%ϫjB=~SDx""%ܯ 2?TD#jN1+p󹾡XěsE<0d zx;$}04)qx~|>s}CўX/zhsc<u}] ݽR1L)< @/|•Ey)&-ABj?~C<2&j3A1sq($ZD9&V›QmerVOiWgR%f.ѱx|Os|c6Ψ&s't_s=%ߨo>r^a߅W,7Oe0)\s6l@X":tGO\cf!511L /1(3/? N /e '}QutYaW`uiPʷ?q;A]!_i=/)wdugxQF`O\k,=Kyww,W{f]ee?PL0zC+_E*x(&h0G. `.9x#uaZ`bo'/9l2$GE9|rUUc&/7zPW2k9CV DQ}_gVި5<+k>|1 Oq4U4?ʨwbtWx>o|OhЉ\jO{⽟0++f*8OS9)1RU.+1)< ~( ,Ў2-^9RSj Qy{ئsPB/Ҿƻp m3Zc=YRV]__牆KwW<fւIoZeV(ZyJ¯7軼 rϬu8>[L\g4 DщZE/.h+!opVm[k<$WKhAakk}?WO(Z%Bj/PTFWQw}11IL{箇'HѝQFojRovWZa gn,O 2y)6#??R2kR" (:/E<FSx^G+>p00{>m}`;Ze;{{?e,nWBZU"/8dSo uSěٮDYkY9 &lk|vk3՘yp0폛D9Z(~yLz!םGukΉ8|g?<[ʮ6.Fk*ZZa(9{EUjlb_͋>mEQ-0V*/2q%+V8w_Rl5Vhk3m/[=qo[ŕtۋ@<^ 8%Q3[-'؊Ql5c(7WHmq0r^+1#ퟑk#9e`J; v(/{߱PLڴ=2VxZq($ثh)7߆_''L^ [VJk#62KIK߿ o+Gz-ze0[H?{)_Ͳ^#}^/A~$`;1Sr]:;_ih$n\Xě.+Om({w0W-ye33'3t;^?Bt͂a['\[Q^yڞyyQW?OJ& OwE<_@|Σ녭\^[ҫ٫_^ʖ!/盁zo/Wx7cUU(@mL1Ƈϼwن;/0m3m(;)?G{9Fz<36B4+Λ=ڕf oeWkg^߫_)SbekyQm3K3Yp-Ed~~PS&ʦZ_Y]YɯWPj.ͭ7E/›6t?q7糘`%ު`-{:YQ^aZb~?QaV* {T]bWV!uaXt[t:ks Uf2:̆b!C ξu*O &:e[(La/^Y8 8RYF.e6ݛ oV+5vT;cSZڭwڢИ!c"ĪøFdXF/uG]x1_nT@,?Xx5qx=¿_|~{~#}=KMo'0uקZaXs b5B=/{R{GUغCu>j/ꈼo/P9o{&k$O׻~zfT[ޭpUyM5ʊƛ?kj׳R?SL58_/iØli0 Z>g⊟4u{76 ObUqQrOf^V6| 'Pk~'^UCbU>QF^*1X;z?-ÏTTmyU][%Lz3yI}u'2QxK|_q5)}t9^‹A?sw,6d>VQUܟZu; O]EQX܉uPQgR>gڙ[ʜѯNW/z5{Q_0qQbr3}i&e/~$qנ1"7pUlZzF}SqV|zc^]U⾯Lc6rk{ ow- *9ͧ䗽b0}#ez?:}t}?.zZK>L{wj1ng>~_T I)cWK]U1$:"a~b\y`<_**OUt a0h+Eqz8z[򾿜}?䀹/~`gT⽏zj{>h6ޗ7#ACF}pO|飰K/=A Oz8߿=053J謇^'ǯ<[*6=1(/cϨjLЌ6}8wgkw^p}/=J~R}^52%c~C#%U)NV[y =c[y U5Tm^}w|_Ct0yL{R8b{&wI{?@·}l={_~-Ylno)c}=u\gUX/C;UghOK&UI{+j-?Ϡ۞OWg{˿S[癝ZKzu7]tO{ORnnz?ٻǧ/O/Suռмf/;0[uƨU駨B+o>GauTgy uyTMgٳ7?aOSe _?V"]i;j8ƕO9q;'=A_->4\ !yZޯJ'>k?JWG~>ȏ Ϯ<g>/Q>H}Z^sT> Q/o]!}9 G|&~ȃ?Lyĕ?X.v$.|]ySL5߃_b߈Y9[>E]7˷)6W//y+=Y5,?Ns+O?v^eq{& '3DCg#U^5'>v1%>6)EP?qC!& g0'>#y W%;M?LNB'w= / B0q$gbs}Vyq$-USSDlbUQqU4?]gTyI\#+x[^Z/b; }d?^y9VeߦoO-/ОU}_t\u'<%yLh%ez\3LCU@Mǫ~ϫ_Uji˿2^[u͘h'CzS~˞&wO.k~>fYnK_[߅z5)'׫nKCXco֡=+ꋪWjh:o]z\mRqx_su@U՝Q] [b<]߭}o빚{xNZɨ)mUS}VW<›M}͔e}b|畁" q~ֿ_nl/ܓ7=˃[+MF=swiOy/n;G 7l?Q'y| M}X?pgy_TԚ)~[Orn߅;÷G}A7.d,냶Ο;qW W>_۟*ˑgw*?SyrC;߯!g/h/҇u鎇?[X S?u5߭27Eeoui_uovա;8Ο>1Uv :#(υ&ᾨK ŭ_GmCujCY^U;^3\[Nƣ>[+P.|yx ֝Ր=Iy~XgI{@ [|4N~$`◼20}<~[^[6]+~#鿼}]Mo쪣IW z~+pݏS;LoA{E{z+O3 s >Ą*~yhoUGfMvV}9"$#){;1y_;u_/~d]EG{o:}Q~x,?Sj;m)YIJ/|FNcퟧm=etb=p:#,/Wo˛.fML3d;~l߶2~3ޯ3>֧0N'Fn7/mK܏ޕ kC_-fL䵙ggZO?^*Iq~ģ~>EΌGR\}.ۥ/n4>{5b}I/kr?GWqATUGsC5>a}ZmKmz^tՠ7!m>+\_ɌB `x"&v< A-e}YUFCr?xu?/J~nm8r$w? `x^l37ݺ``~O6:Iu|/sԧo͟ԟ~<[w'C$eb~)30ob15.:+~fȂǍ='Ay_ߘe{٢|T19yg*k[~Uȃ:Sl/Myrͧ60ؗ*$k<ŔOWwaxz|/ʨ&#u;>_0A|}y)#<+|g^_odd'l_<֠7`9c`^Xbz;/}_`v '+*?B^0ewc<~|GL~}~N8#Lй'8uk q2NK?,"qX^J~oIJ?~'+fOUȟB֯!sK] Es .7YdЖynoN?4df᭨"a6~*)|Oxy<ް?*Œ/L+jn˰#Xcy{`>oXc "m_6 4mVAkYWmX@k?fRk֗Q~o5_Ն¾(T/g7|8_f(3QћGPI >tB1a_je{we}~1N}`\濉a'2,=Xe7<9?DGUf#}z%+ U{VU|0[%L~OxfV!;<W_EVi!6q}3|^]=Gq!MõNVXUxpCX'Xª}x/XG@KUyV?}_{R5?GiqWX*WPYETv(e /VA "_UPWEUm?Jx*Uj:-9_"FnUj>H˶<_UE>h/*+~0UUe<ߗH|џnnV._3 +? _^]|yV5g \*p!\x4_PZ=~?1 b?>UYi` Ey'jO<^~B8!001_;U«g?5?~(.OU|k0y__xM_U;狪ۣ?ߌ\OdГϧbMU5{EA"a}>IНŎf ?,7~Rj/ tXgT_pTG/l>?[}DKGXx'>9MEɭ B~P3nM{^Y?j37G|i? z_2p]fz;1 5>[C>=՘hOgl4?`fпsY;/;iN{zebjg=7o?u8z)81G&mYww/Ί_}Jx:;#RN}.zߺvhLL|q5A{b'pIk?NK.`/+yN{bnC8Opo6qڟ"A{T~R0oކ?PcH?,5#>=`Ȟ&JC8>ף_o?/|;xȴCGσo6}S}t=(i184H'HK C]=ߛA>'[^800|7O{T|fq:~g>S|0Mr&/~3ḇc>&g0ϛWuO`}e;O+o oƖ>m03^bP;m?7 bv|]yj|(j=Ww>zJ>fByqZw<,nW{ߧd2cs~y9xOMڗ+?yחw'/=^Iy+I'her20/]]ě|W~.nyw"p!dx[y?H.O{OڟtIaR}^M_Ia=և#|,G/U_/'N{q,n{#}'P?j\o&o<1}Ѿ-?/_+OZW=sqSWܩ+Wҏn~D%e}=>x$O-|XB/ϛn ·xA#z~s4?O_]4)t0~S~.z Jh\ԯq>b(3z}E}rעQ>z>O?,ѻE!KV=?ww+b8~-~~x^qOMLX'}N}y6 m_Zf}fXȓ=d]}%uG#Cy(G*7|OhӞ;T3q[8S_|Mcm~q;⑆ƌXOzJNz>O,ӪKz7Wn-7哫ߔ?걣ڿq~-Ŕ}`;Χ=,k|8o'Gl/Eυ!|6S=(ITo_(v{gnuSPtAX?)x$?Ǐf7Ox#ܼwN|~0WH[_utvxʮzx<_[oQ|wph?nַoޏsl#%[`G+?ڷ1_O>;oɫ=^ E0P0Ix^οC|v>fxfl{Ap~N`#{b/+?0Ojgv^/{OF|>2>GPܚ%^/qt1=^뵁#ϋf{a>-$Gi_I֣,Ww^w=`i}(~y8奰}t>p:omo;̟p=7Ϡ1=q=I?W+MO?|~)O+vwK<{GߝY~eA=j/ac+ޤ31NlBns7>n{ɁcW >x<1AxIz BGaăy?0~twbT7^Ab;Ob?wDR[~ CT?r=W97ܙ(,2?nOPT8~#ctW_{h=eʟ烅/_җ뿼?yj#}>?YKg?a~b+O<>~{QS%&?(58WwdzL`Gn'MOLo p#=vwNܵUxs=!ox%/'5ת?7o Gɫ||5X?Ÿq?|fHb~>2q92w uc"BzVYg{ !H'82N='F<읃߅pMzq=ċ_қ  )qwO(Q|_~TDo%tVګ]n0'#'t_1P,̍x^3L)sZ^廽>{2>IV8?dⲁec_ml_#^׺ 87$z9>ܯ\ 1~49|=lj!83n7g0?KyDQ9=ƙMWe抴t| mgt,M9sg̓9z2W2'Y)&'qe:v{|8/~>s7ɀAWw0[1X́v5=CqXF}>Q٤q{O J5Y`ޤ-4gny)=ktpֹ1I|[cr|7k4T/8 =~֬lAd̉7aM<$#fL-¢uI/=r t% ~?W`2vh<o9ljJ:GJ2lg&%?\h=C4lkz9 k?OB ^s 29X58Cx%s,QG7>ϚP!Ask^XBو~~&ʜf *ۆҨ4NEq[6kѣr`/ʚgE趙x?V ՔsPN`1uf ^CXܚ|}FfMRm5 ExQS f pMU׿W ^Dn~s$šrtQ0}[1?QUg?T oM5քs 8v{ھt=5n8U*zc^C5\ wjztF%5u~QΫĕ5c)Wo451C`3 9`۰Y[:ZYom753uq5ɏ?v;-[ Vn# oyce7@_krG]÷ c_:S?- hʐCYۋۼoDf `m}DgcEwMe̿E9R0YOPFkcwԯ׉C5oQMWF|VR38)O(_&z/O(_z<-a?qMI~ڤ(8HT;⏩,|HIjNʧ$śg0MNKU6טyXU%K5峀S~/G>9y_qCARr=%MfliYe3KH%=WgH|8^ka|UyF!M_P>ϻ+|L?(4EoԯJyb_ToI/퓖 s>{<^>/z Ր}ߠ~5IZpC!CƁoULѝ6 )XO}h ?O~E=&+cPd}݂bY_I>x~k=> ܼ_ߛkLAW'sgP(px~ 䳗ǝs!ZS?G}Y9x=c\bb88Z x+ר~~5S=-LJ&۔}!>&lMԗ>{NZhAYz?5  ~WoMWoe_m{[O6σ;^mRBog>\&D}cMиWÚyI|)G8 zlN F=45h!qU=3Y5DUUrCEӫ5xTZH8>4㍷g~xIAg7 ɴKV!u 7M'%d` ;WR LJ"LBAnykF|U:oqnkMLV8㼚_8:m+΅ՄCg;P'$)Eۿ?BGBjJM =S d|lU|ЊTe薄E-šViQ*l++I V^閑x&*jU$%J VBg.Rq">'8jUʹd#);.z,?r]W?+ ;"VuH)% %q= /Ux(<^4U>̐ǫQ5;ZV–4]}%u3_2j=yOE;JŊs%"jT+ߕ"=_RU%$ +j*,vt24 ARY=4?aa@rF>l8)qiY7s9EBF#ld6'J4F4Ufrlpwciwp_ĭExY_DͷwPͧT&? AE61}|e5w( UzaPCH w1kT@}TB?L'\,f'_Ȫ<Чŕ:8kfwP+\?y?G :^bv0Y4ߍn?e)Lq)?i\/=)1`T3oL~MtFaGKzxzyLއN-QV4ot?@?/'6g=0PYA(P^I:Mpi9w QfW焐 ʎYQZzc9|Sg%([_/ػ0iE-'4ྡ'z/T=0*(13s!GzF5U@%*peo <Mzu!fslJU:O}r{Byx %wyeڪ|eA=n۳9N?o/Jh 2 ^f3P|dZ3G-Ό.eͻQ˙'(HGKT\*=b:DXCLA̐ф z b^3bD}\flڋOQ`}諁ofBq$,͉BSw3JQ>Z2S+ &ԓwHOVE?DltL +߿'g#c& ^̨(t&P/agjf|;29 Qd/'Wց>DqTTL&O=7ǙYIf.P|yfª2jo։jo)&infs!<_PA( GVʚ(Ԓ2Q3sQz~9e>P33\ ۃTU@ Ge>Vg2NPՙd+39 s [|2.&L|qT~L~nfr\ayG%"39wPN5P.bXuA=$*53 \" QIB&}~_(<4SN\su< I>84n PHBdJ5X{<@ڟQ3a+*_T&(b5AQ3_/Ft˷}`󁬧_Py/LmW@-TK|X g\Y_(`_o@7FJt0 Z<QğV'k•WSYfJ'<1PpO?54 u{@d3p@Ο.L;_y SQ r\|Vؓ׋Pb>.9WQr1 /=ekv l =Q\u3>e~֊|';aO{zooʶuGB>f 9|/3oPYxw7XxO*-~+ﰏʰ>c=U.Td#'ʢ?C{X_'}W-Mfފf&VD_?Ca%`9fnTxV`?/fOe~~*̐?J2_*ɴGqGƊ<ͬX/CA?3?ba+>p)9oWfzן}Z/b_P̄r*IQq冃R"+HLVDC~.ftL\וA V!\ԮT'_wd])PNݾu}8?uKoɗbV\tm_*d-'uaJn߅Z^*\W2I aԥ2]f.̈́չ.&q*#ܩTDt03k?&;~+/sis̝7#ꩤq]y{*!dx4#J\ו4LKǛL0a_1FOi}W}+yQJZoTdJ'D'GdPKfg1:-ևx|}=01^/s!{R?[<_b]˩/?w+g~G׻cbM3z:?盙}+G{?q~;ϛikN |?O_Ϳ t<[?UM%cfCraTIj̜T~}T~eþy'ʺX/}؇v_㾬4A%kfݏ> e,OA oG?VKe!*<_{RQg?T70f{&yvW[֟Y}ϵ?Y3*|~T/Ts%=۞?\y~3|g0<_q}Y|{LוHoW.܅\~<*7Q&u!}m̯xFNa?~[oOUF C'%%Cz~יLWyZ̗fin7`>ؾ_Td*-%?^k`t#Dw7-7g_bz# {c|x:SH.ٳ)|Rq% *%ތ7+WJg%a14_Zȹ|<$a> e'+Q8bGc>~ɓf-oC\J2'+3RY Y7!ez=ɔ}VbM2\rn?~_N(+I.OUV܏+ӨRI +o*y$xJ'+]k*c|oxʣ{?̺J~<a̗W+r=5|a?i//wBN ׫m߅}֛|{6t^㋪Z0xq\O{_IZ\w^~* n4;!oɍw/͇m|N,L{x?_>y򤿏4^f'?ϞY3ݷ^va~Oc8>#ڮﳼO*e~A7߶8Ruc=aBA(z|m+խ(wmѴ7ە^ S}}UL]goOm|eioN_ˆ<8 mq<Of~N!ەY菁h'+a~Z/1>c·S9‘3x%J?y~9|;_ay^8įsM|;3Ǖe|o/MtO4ߕc|`_gM3ejS=Q.O3+= _Ÿ F9=PQI#߇luXp3? Ol{Noooo[xaWz<;x\xh_/~;x5:u[?]u7ZnM?F=\?~bV~/xOrZ}Nkw6xI+/}||o2uϗdlk*޽>s,|;ߓ'߳~d1" Y]IUʝs!a*z>,WS潚ՙ+Y?KGcOA~|5LUA{zlv\Ec9ݶ_|n]}%߬5wk~ 89JZw>2_ uD7ISU8z|__]ULmϥ2u 5[se4kO7W25k?T]Np'[|=ȯ5Re"|?} bG,W+k)\5ɕ#l 7zHZ3X_F_Um7a*4A_ cG{T嗪*VuVmϖj*9aS^ﺿ}W7ۯL* Y䩒 G HU⠑!kog}ʏsv[_ldS[钿ڊ z%Q'| [Yɟ"ӧyT;(znPO|_~zKt> [Sc|hbi |o9yjZ Mp,q?|G"Q4UG0]U\p"k=U'GhhH8ğ+é_P5ݗcy_I | 7֕*ny}?TR>8 ١(d<H|\[W~Wo|Xwu?~*擪pdlH/VT>T ҿᘅ!z| O W >q\Y'T߸5 ?s9ųC?>~f\ y=7LC',>=5\%738>c>P񕉟A@௎1@cтI×F\eQZۮx||,e:Dsvdv0u~ ~j;ZmuŸ̏*>f>_~~UZ%?M/>Wifx3s0@wXG>Z2ƈ2 kA#BK8Eg(CR 8q<:Xi'"#c 1.>hED{ jź ڼR7exG-0|T: ,e:ێڿᰧ} '74 u1#vt`OqPf"_Uy8JEP:ЀK3aq{,H։ G`J.0b! 2(qDh=A[E:qDxRq} h 1tuet1nuQƵ;~ކCD4,J{g1C{W~/<" ̿Y/pW+*s v6!dեVeCe'#. d W#a0Q2*׷u+b$0.lr:iVG]%cŸ34lfxl11bAςE,Jw#t_1X!i=cձ%"Є@fsՎ1 IcQN)Ø9~+Z0xza|Q!+"{<HN C;~2,C"Culqf]sTh u5'UmFU %,ʳ8d1l]7,~]upu; [z2XL{e1{/>N՛.[J8SNgUh?ߓCn[[4PIfM;[,o͐~AM&~ddɺ"`TR*ߎG_Oϒ=|}jr}ﴽ=?hwpuẺFN|99LJG|<eg@/QA.2y^0\}yywZGh?Ӣm>]TxGřs` h諿0wNs6T7-|8y+ *o/N`ho,mJXſCc F;B i-f`peioB{4[sK.`# x?1gjŜ]dla!b 8<-P!nkbGQ':/xr*yq7j{r5kka?!jmq.lڍC'WЫ[z =YȌKSi{Jߓ^tĝ9;\C~&534S[&=O^Cl1kS\o?q{ڲ|dokbn/vi/W:^\ygJ8OIU yos:;7N] s9ǫ|[흗=I6xYi*{RSdU6UMΉCԓs:OV8紉 ҖO;[.'2+asN!ĬdU fTiB7ODg-wГ;cG.dj#H ?O֞.f֗ЬOW6pO0Fq$RPTժ䁍ɺF۰}ӏͲlD*z]۟rޯJWZ5Yag%67j̕"?D-ˏu:!~"Y6[yX!jF|o?'/|S*ԋ'S$L]?JBUYLn`+ϡ3ÓcS[D_C$,i dk:/PL-Mcox% _lVSλ{9_?3epuE+W4{^Aȟx;72XCD "{?!wQ}.ן Zo81'6ղ]3d__j عI\ulb;s/{ B!y8]NGX=}rR=ioc~,)OOc8U5B&Ղ?"i!/uLY-'(mɯ#-&*[~򦽌@^E3moNEuɱjO5@XOq2eQa)Xwbd}rK`,J~@߹(>YرcC2+~ζ7Nssy RMUp"ݬAԾ7W1YiمS Ko<߾T7 TPZ󱳂}aZ53y;-nOȕvπ7jv8:jׇGI%"xLDi߬eRǩ&@ =3ic<䯿}(^Eֈ,GRAU{}m_TenMWll)p\ooltY{Ruhu-*eF<2nso{؞֘(@1G}jx _l-/n;=< *GyXOyaKXVGP0.{983bO[ QpKfޟ*y?05slӗ 6=ZϕmQo_uXv?!'ko~u4k}́H`UfraPk=Idk4'inFmGo l ?y~zP>9c-Rbr ޓ:ˇΟ6ǜ!ˣs\y_K=yۊzy(3y{dmyq8>~`xfh1=ryeye<ߧ8տHePVb Ps:?yo=mY;6zjS{<weh}!ye=zOSZsDҾ:/QoW.9F=#x+uέ}[Dxd&9?Ú ?! L'y ^,r ܓ Dv秚b@@@9I ;H=~Qw:áݲN=B#k|SÏ5"O#<|#nj:/4Y7*rO1:;>q=#'2=G|'_Y5'λ.or'o%k$9ȜIO#/k4-5~x_{ňV~?XR6&/lt|$_I Yk"334L簎 QdЋ[?#oNP?>kJ4̰Ku<hEj6@FN޸FÙUnOKj>B!y >NЁ! An)2²ҟB&E!,g5vYF䋼-q{؜Bdl&tWb㮓 }6pt{<$L6Zڣ8/O#u,}fJF4{`TWOfaDui6lcĪ4b,$&)Ft6W#8uzONBv͈jm/eQ{]~l2"O#uY6X"j|ÆP*;Y_`P{O{D{Rz~i8ߵc#XUX ReyF~]6U3b#rwۿo"ziX9Ql%f7S'[_";'a9ևkQ,Oop.\|8NYaǡO>n#H[Үr{}鞉x<|?~yΧq1l6#+/KP|  r{_/ Pp:mA*(c~Ѹ}q8`e$G!jX!jz5&y? | wb޿dzSFxe_pozTE y6:CR0[E60 ɧsg4S''otx萲'0 !{|ST˱9V.s҈Bt{:Kos<s*Q\жitG@'mP1%yl? qN~w:jh]8-gcUq4qP4x>4G5~QeȓP425'۲TQ% ]>g0=@c6ca=oa, u|?oږ5}̠CY`O\2x_3yY_V_T@7o~K㐗_ |v.S|^3;gO|}3|n^>Q[gr,yae9Io he.ϓUO)܏~|>?Kg=gԽ;>g4d?7|xk ECgX|AOe5 tOGE>+y^XgTS]4ꈃ˜zAT]ȸOݛ%g_?Rr=!|^ù|B.4x(l__Ps+n|Nf>cwo$feX(<([3_E1VQFcd?y#3$Cq]>wGKFWm(푬{} BϹLlXI_,ο Mϻ p.x>ү)9A'3(=g<w{T5Tl'zdz6}G7+ Hzic7훾&Uo[V^6{CZЍUՕZc_ gp}ZbMQKXsi-ϗza s %37h VVy\QSlj󡥘3saKq`W58UפwHÖWBZp[)w]W$/?fc\JGKN,+5M*dʑΑՌ|O[qY{4BE]/OGޚC:MVz}*/t0d/.&:HvS]%?7 @/RmkwFe0RPm"GtsȦ);n+QlBޛG^inmEܔD۫ W4ȧٞ"`)8偌:HٶZs|*1ZBiloo륜~+~f`׈r"E42IlG^yr?({5~RM ^RW+/ƥ,Mf* lcU4\\$h*Qi$0>~qi~wu`Uǘ@X<pfy'3g[W5s/w ґ+7&J\$\iW*^.yEق!TY^fYQ"QE־nM1c;n{&QQͧ0\#g&Q;nR>mO>훯yZVT~m%#eM5ZA\ ϣ^A W,B):t{}?=exeR*QIg8R΅Tu<_ 8Gg)L~86~KQ3W/-ˇ34 'O3bUp3C{豹/ldow˕"vMT^=߰ocȉ_f_n^|{k+7WGgj?Ux^Zgx`?jz'*{iSMǰ=e(*n4>T[|٫X^/|}U̝>Ʌ@_T><ӪCn@UcO~\>?\#_y]Y^?xq՟=t?y ;|4BAwnΥ+_}~-bm2}c/f.c*j4[kyesE]7S۲žNĂyվaqn8⺊V6upk׸`Ĺ_^eyŪlw{-qi8vugskQҹA}am c% 88Y _ׅP{䑕2_qU<3YÐYh}1Z9'9[Lj=)y?Rf E1oX`oHpsw LX73a6Nb"9f9x䇙I,"$\"HjݹQWOrŜbLZ WDh㘷@;CWzzGc\Dƞ>lz[ۊ;Z'3YI1r37q '17 c0"?GTRO"fAc%k;+f-X[]@Rr{Dak ^\(f|,oXL#:Tz`Un7~C{aVX`zDk6(qgP5d?&דGXoV+ SO:F-P]tǷ*9+n4TJrُ\s.g +{i-h…쇫p/k*RU95X=YZ?\%|%LjS哯kJ>! ?jf8Z1`b̪m8Gt,s!{W[T`Yi=~>,8"KCp/K~i8wן5*Z/qwq&3rf>˲m;3ko砐jޟr8ў29!/dtU1FLs;grg@wN_~:zߢ/vc?b+̦Oxz~ѝ̙]>_y2QޱDIOkOP=gʹo6/2JW}>ߣIOn^d =m;Ne}s!s_pV@}x#Ǘ+m㬾}H.|:]dYY9cޔg?Z΂|BGlgƾ36VC<[!;xV,|k;KzŶט A{Y/XR?!7tμn"fFx Y|t ֕䯾,Fues̤O{`v>VHkõ9̀]'og k[%#d4ɲjWLۅJtf. UT_/ r?Ui;KC*SJ -?  ݼ[=~|okG:YQ}?pΐ0G6! rѰЌofkmG1k cvQjl:+f[!^x'mFql;@5ӷ끊1nϯ[dÇd\ɨ7Jyr2CNJ)OuO>2fǸ c-59i(6Vd 1̸8~mNT:W߶qՋeY?ߴh9!ul}cubt;Ebǘ_a _juJ3-*$#KR+n%e W2|= ?4~~'O{)jX=^uЎWp^L?/?^O{P,ygu1S`~br} VD'ʴzWسTEkݨH8Sr ƨ)z+RO)9zVC҈szg+ԍd:1ץ8^=';1?ο"v'ׯY(ap9ѧf{y}f?C-FC-2- ,OVm({QpjU~q}K8u=d- O䯮;dfwQ1jzj]亵`ԪCkhP9ɪ Xh_5o*0ݿId.'8#rd1rÆv#9qfqxE6UƏf-r7NǼ:tiZl֘y98dviGʖ0!dv*:4,qNS_hhZe{gz +onC6yę!%ާlA\EGsgull[[,l['mx_;nJYۆNm=C]Srݿsdy|7_y<Ȍl}X}K6%;{/;r]#޳+lϥS/[ 7q+k\8F`O0܊Bđ_-]}V^fc:ș{+:߃-yr8ӟ+[.{goG/ߝ<eq 3uN4b^Ȫ^0d Y>s}br w2^VӦ?9[nZS~NȮ[>eL뛹~NG~3{ʫNP{=@gmw6p#-'wNa+"f7؜* c/!N#Xi`O/ĖW~@1܀Mζ@QyOk?eO+G"G'=~fYjv ɕ ),m Gr%M݋n'C)bGy*;f/<=E̫'Vg/DO3үzW;+-t鉴ֱA1ymNU5 $U!m{bWUUu>v]xi=6c#Ml=gUCsvl?p 6!Yx#?s^\u'XmTS;TIuF7 :<k{J9`E~u}gګِ穒2xvf /;KLg{}ꏼ{<.^i8y'lA{9np+>*=Ur? ^#Mg{HqAS7up>oX?죘 ȶ8 pztvcx\ゲNav/k=a8?هJ]So| x\>bw+Bjr]ߜ|ݟrwBz|XA=H/Kf7^N# E\>&KuO{;ܧ9NOP6ηzٰ'=֏sr㼬U=5(VYy?hXs.:I!!/MzOo IOnnOGaqE8 ʳ]41GMNegfg[o;Z/9cq\#4qclԢƱRW\ \<ޘ?76:cԌa!S+ʼn\ƐǷ^Y2BF^UP|r~! 7վcי ~K!=ĥ문JY=@_!Ov,=ܱt ϦJƕ#L dO5H}a"NdJlVUUu=u~ i[Yy$OnL5y^=UA&W铋ohDRL&!">9;5Й JW'6Ův,'?{Q4Ue?yǥ2#v]~7GsJu=gw=qx+=eAȔu3//e*p(o:ܢ+!>Ik|Tkw4o,ԫL'{)|;9tw飁Ƅ8:1;TILL{#'@[$ǩN|Er$]x3#q4Zdq8B"Y Q1USyE:-,^Cȴ#La_d_;'zŠM Yɲ918!], z A%w#*z$+O $ R~tG]u?UE;lUyzD~|rVA.;|h !85['.9N=ņ1<Ӿ^ALzCdNqb1zN̴UurR"C }>V' ǧ'NOU51U5WAf=a:>=ߜH}ɶk!fL'/G0)Pm^ǐ8,ƣԗs=|upm뵁 uUYR7pv+\8#C6fa9~n7+1w v]6pCKU8\*mwn1&)I:?J.n+9. I^Ywm+󠃏ro+H7FJr{ 铱Ojq;l!{7 nwuђ?y}^I.U1j:TjZ,w^U>rF16O~@W'<z>)~iUouclД(d``^/ySY}ؿk*|وpOU|'~}O;>d؋464ۋfG<5t-~%jVU)UJy}JW*0PUS;x[ok{w /WLE+la0?}*Rvo|^>(u{w(aC0\E{{꡿T?JMv.ǕŗixЮ&c$[ qsm/*>׋@`!b{K$eWloň_{Yu|'D0^jab;S\G #@OvnFEM#($/#r'p?%o#Vjk`MS/OU>>pk|,CoO\7ra_F,O+ψ$b8Flduo1\\.DQwMV쟨WoeKD⢯zf9e{"&O_+(=畒.؛Z~|+a[>yn"n&۟RLX 5$Ⱥ^g]lSMn2TC22??1C`]WI_=~_>}U[cM; 0Nb}ޕy4z[Hʻ*È+w9wW&_2ag#yp)?j [?+WO7W[BQy$W~I׻|Yo:OǓ'ZNEr=jg=?^^6%}![:۾|~#~^-`pXKM>x_>/doI_&CM5b[_/[D5"W>OX,WQԗ؊w=⯬ }zO2ۈ6#OvT3B,Xt 7_^@|,GUhiU2! xH]FԴSu=O瓙lMrQ{>L=Do#Q_ yw^'~2#CB|'ӈ]?A21gi~J|EG Y2Yp?95sl`~6;%r=@0|@ϕy F |#b(7%5JIw;yDz˲a:aOA=?o U.霰rW'ި $6ާ+k{RC)%o?{W2C^8#TOHhϴ~^_<ޮ3B=y xzM_.zG|quM Bjg> 3e)KgB`?"Eꌯsߏwe9TuRbi3^io胬tW+?d?({~yrxOP]@K qD>:O@U_f)8LW=z<3Vxj;?#3wS<2}?w!;9>gƣ(ߩ_}#93?V">Wkf gTTc~2̮w 9cW&|1O>?_ģld3ߊ$/y_u.w~WϾy>%tYAB_ۯe% 鯯}W>,odO?ß߾x/7NmoWڣ /p4BWim_e=z۩ *7N'ɫ*wsd1>=*oXa47=q忍%KsOmu=xr]cGn_F5^]gP/6bzn@c_³į^]~C'X0 S|*;Ǯ{*C1ۣJ7Hๅ߂ ^3Fg}9^eG!@x=^o'ew>> |[,'Y>f)'gC=߆MKEuu&>x h_6dg^`Yx8\$и<-+ٿ1Pͳְ(#ԐZwHf J'gܺOEvGB>Y'HV4^S/{"yxׇ#{rV}",+%AO#wO譆-Oud y~\m[k{ȕ߰+{O5͊WkS)a֫+o-o\n c{7GGWG+8 5(A*GFK@6λ~, ;nmא||+[O{w/p#8Sr4`]/m?Z竽{ 瓬ÍߤK|vⰷt >p]D|}_|ao o9fS 0M֨ZByzNnC{ foZݟuO4{ΰ7V>u;iy޴6} rhso86 7KQx-',;/G<]:qSWw~g^Įbb~'؟jACI>f3v1D bEۈ $ Den1m+{ۧS~yc{H<4tz=Oܮ-u7Ɯj=]4UߗvSA)<(A׌ tc YE8̔;~-"bL VBU "_=8cjUʡ(Z}ϫp)o?!m+"iƴ; X p&f)~YW;JK.H.Xkwǫxjt33 R8{<[+ɞ~GⲴ XIR~KvRUtp8KrclB@e@%Fn|{4p]q4(KVzg/Y@^5t+2OLRʗ7^|! ݥwdm:``|Ѩ4.60,˱P6f}z<0bƇt)P08|~U05jX]p|tdg.cd6WIvy&׌=a,IJ: #f2#!QBwBr5RPtGޒkg q7ESRohvC~f4IM:y|qPk4CJNO!PRLIoO_kSI * d)dK T}Ӈ*iPW%NLǰC>Q$2|2rn(dY Gْ;srl)@ێyL{ŭ ヅ}MClV%In,Mw?w7[B7/h=O1bN&,<>mnMacf׆ ˚(1^$h GaqcGu}1ɜaK(Dl(40'f+]N#<('fPWt of.C!t*H=nwgO,zJGh\gl;:OcqHéGy1ˑ'$"213pSC"*K|8#ٿ@ܣSK1`1[l "ڙ}2CopE᜚"S vOe]% xƓz691f{)kTGg`xW֯ˑ^y{ƟxX ;G#mhS)Xwh<ѰR/q8#)0;.fJ|^U&|Y __-4?AD 3j/&QD||[.OSgNx!Կ:>p4Wg=OJxHjќ RT*aN}?Q?é1"Μ of*KLE"s1ȵp2Y +;"qۑ=*zJM7c Rz eV&T6![0Ӂ ̝SaQ ""vSpޞkJ-o&^~ WěD^d$V>]ȯiKjd$9~AWSLKghi1PЩbmlݤR*)纩N~W7f&qS"~;3rp(B=:z>3d*"󦞍#\T۸_N~N"3F|н9 yq#1m tKIӪWj+ηYSDNJ8HlTRgy?!ow%ѻ1>Lv{]YoĆRrNDUo2=.'Q][!$~s?މ7bIQy|دԞө92X&2q ]kƇDmaB?ʓKx˿Ěx2?m B^$᰼DD|RC!Q5Ab9嗹>L3jN"x:{Ndb|$F|Q:5H==ij}$OS1?;|ȌR"yCKDlģ󿒈0t_L1Y/"~MFQ;뛖OH,rB=|'CCM6g~ a}g2px>W}9F{ΗC n.ԂN_TN} q( ϟ{x+oL=z 1  -edn}Lgaz0dWw>O 偮@v/0(Ϸ~y}$/  oV]]lo4ez[ƻ=1 E^y^ W9Kߏ|_W(ĤO+I5q}~Ib>|_{w_okyux󛖤>,qv97aKrџ,~+S1(7=|fFB!Nf(Pq "Aޏrc}y{fm0v>5~_-\SߴپG;eo>!}9޼3␸\/iO08;>3(t*qRW*\N<XbU0qc/'L"M"' ? o( )߇rƙulc[mǾ*S^k=NmSzb"}6ZїOmayG&FǠ{xU|ygXIql%"џ1}gdh5~=ļ^As}" QL;%^_ګп~YO^_g=ؾB} 8S߶)4/S^j^O*~/?p{O*/t|䡲O1gdh֕6/?ӧG5Gr7%.m_ =`kP?٪Mx8z/P>mO\*ZGᇤ^~֯w&i!yYvK&hϋv+fR_3<ԧgٞr)>l1>_n[cۦNu?ϛ7z5o$hSbX90U=MCi(6}??Zz߮opl?)5&h֯y{6?آzo4ۯ=S oyХU]d-OW$ 춿%N_Ϧ2"-kU]q >/O_Iytޏ7ǣ%?pmgɓ%.[~S.?C.\oLSsrAp'.Zt~E ˅i,)\ ?B##&B,-O*$~fI.WT'İ{E=j U `Hl>j{X')|z];)QqTꋋ;BZ&9ߐk ~Sl߬+SSy0;m,=_xbB}eS((s=ػ̧=/߿hx<+C6nɅb}%FeEL~O˿أdUXDMS_[pqf8HR&j.o)g_-8>,L= 3K{ ļOgJܳ<4|w> ?0" <4fC?/ Q~XƒfGA;^a?`H WUp`p ?]<@GT1n.l!OׄVN '}~`lܯx CZY[-~~PoW~>>gCqY]cdž> ;9=?b-̿&\oR}П71>z|`0wx~.*g)?mb<]?Maƒr9Y8/3q/ 4Ų_U>Y~{{!X i}5.ٞ߳[^/'6 p⥱/)ʌʗKD[Y_-ΞlՅd8U/vZE \NlZsrb/8F1Q>YOg}=-wxܟq9qߥnK?ɜy|ds.(:}K?8RrF-跀9~3hac?\\_~N̉x(7:f"(#M⍲~7ˉGqLećCyc~NQ~\P?~O8۪?ĬoA%Gg-`%q'O󼝢:E=1/3'ѭ! ~B'b/&puKQD99x)|ޯ'1DQ8gns"q̘SpF}SU@$`c t1cHNܲB}ٞC' ]18(oH0=>}_L3o(-b<q8CmXOCw׸?_91w񼜔) &w}y^O,LCb/GCAG\OYY8#>otSa0|y>cs)3\?88,zGC1')oO!k< $pn8WFayM%JT:I<~G<{pmo$|CTz߇b1z1e #Pٞw<p|xvc~Kǧ`$qΟKGG KHb_U?㵼Ru,%,\ߡ򠼽.nOG}\>^<O/IPD /e}{uI`6v>|t_Oe9/A}ŮDါ~U><~(&߾_9Uz<7zw1I#]Ҫ}}_ \‰Ff_QpI6 $_yfޗ)bұ\{}H`}Ƿ?-wxV?=7C=\?;p1&ޞCqÉWTYSs<_;EO zP5Mʖ^EYp&s!}%ݖߣs~U'QL*W4^ƩC S}`|pc} X6KM1I[btj<Sm,% WF⦅Wu~">:D`I}qM}>lN2P})O1c9k`½Gxxz0cazǸR^̣T?Y}}a|;m^^%OgK؟眯g{>kS'B`OX>վ`/ ={>dbC+ʧۀxxy''޲*{y9k}[=lHxۦ}n})뿛wSgKm]J)Y~n 饺Ayz{&fJ\d+Czc<~1(>g4SW Yuڂ/Dzg=̘'xL_Ul?U~[y?ss]V=ɯQы3Lmy9+,13"kyK>1ah;: O]|_D pᅰ[JXAw܇X]^HQ| w3n"KH9|3҈7 |so*y~D{~$^~ﻞ>R xRWW3s7Cg?z^~ugjULg|I z^w=y0Т;``26Vx<ģ"u t4,6'tj@xc{7\`e2~H6Lx;5_=3/o-_r_Y,?#~e|0?y|dsF-/ߝ{?xay~e{C{+|5%;?RϽl0<\? W_;3ut|o0$~Wş8pz4׸~OO0OAV VxjdTp4~ t+k&?_aI/Y]㫫o? u}k< ]xu㱈˷X=oʋ%wg_)(b>)3Y'_d|| =3!Gy.>1ؿ1,(w`.>O2c]O7f<륊參?b4aCfgf.ĪO/&$>.?x}7o!1w+s9/>%LM ~a~sƕ|G@ޡx.~[UϷ_'V3k?IMnnuxʏ;z</Ci ~Gf}GeyW%s,TL$y&?ǯ~S6]|҃ QWw=,00+hT? ҆Byk(?ps8to1Med ? 'm7A9)|ч7lq>į C\[yeR#\ؙW G-_p a| _&n/s|,CNG>S׉g\߃ļxg||ĹӍS::swH'8wiCyʭoA~S~򔷇N=3N8 Y#ڟ|X.~R&ixi'ʼ-D9$?n+e &)s\xES$ڼn1e: Հ?=T]~4G9d(O ҭ_dlߟ S&7)8>Zr /Iŷ7o^Ofs}LfNGnXl9`oOƳN񛂈|<=oU꟧k$a zv\=7O8x~Osr|E{+guʿӱ-]Ϫ3FX!__٩?qFJb|SY@Mg>x 'oCP`p|ߋaV'׬c9G>}2Oů8x>:X w*z^^Ӳjgo#!x KwcP_='~vsߙΩܵ?y?<|{&x$cy[mxşǘ~}:'تO|_Ou r^/r-}X2w?D3χO%OXl_GsOSR`ba/ |oޖ! g*<3\.|?OR;a7=_>,1HX?S-ЍV>&^uK|1#-~2t?}c b_yF9 0Q_w"xܿ_~~D}d9 S+QY|Bs$*J܍7YIٜ/+~TXJ7QO|Wh~a>b1sKo>ϤcF|TY?U/wJefi;Nqݘ/\{&KKGߋήe0ص g1{e;wvz<'2޸=ھ+s^,Yh<Ɐ6?!б}NƟ~嘯A|̧vx>kGgt:~kT| ȐE#*#>ě\*|nE7ɜB|wgq8q8z>+35g1b1T\AmxO 7|3x0OzOwHt{[Կ-'}u@ϋ;?||<ៀWo%<`>p}G|oDl=剧f5A+.u8Kd-q02η}`x6 @af)_300C~WG:{81 p_:3DgZς((C/a_o81Q}UL U?| y)"w[ۖZjٹro7\Km a0B$fOXsR$J-~cQUS ^7ة{w<&<~>-/LU?r܇8w:~$\*$̯(Š=c5ftXnW\"mɏV shڂJ`-wYFyA\sq􁰦<ƚ% -oO q:ٲ`}j5$.z>p'۞hڎ;D!7WLJRh%ZxZsM[ o/.[`K Lu}_Xc(=K??@Yp HhfK"bS߲ŧaH\E}a^q+4XToL呉yEZxXy~-yt7a.Y$N)w,JȬ^UaJ7vu-@(]' -CʬVD@hĿ G~ R1v΁>89!R[S2ora\|~Gæ$gK B7 f@PB7wᯀh)`ӎާ@Ո^i`:Bpf+`:YX1r;ΥU}8"jvՄco*UP_5uoAlCʀw Dz_?j>Y U-RNeO-'9rkp4̳r`meG%^ Dl7_A8[b61t9BSOeI \zxaJwC:ثpi+S/9 pVн,;*6nov> Vc&~]b0UY}PmVV4ſg#f6,_0[,? ap2;RsΐcYeuEy֡URU)EG/r`|]8UqVq0T- XGi_WXc'mߵbjp=b+!;FVZy~t6;9M؂ڡʰ+!~g{1 E˓0.lGTAwg;&a9~L)w;??:|@ԕz;Y[Q>F|tr)N 1)5Vc޳~;)]K'`9|tWڶ}-LeNTGdFG.w~'^^x{[>>BPfi =c뺖qy!6zAYi#F܄+"~}j^巿xЁLrt|EQ)O*8 <b![}G۝毻'1 xKfgh#9.@;<2l070%C+]$ynfW h-xrO7IR#+"ThPҧi688V zXc+"&*݆ 㬇Mp"l§fP^a 8Ks(9#vtCܿ6PEfew'73zpC#mQscn;Io8ZQ e# ?5W9jnxFifo[{ pWjuLaC~㊚_/;Aڸ`J^t[\mԘO-9X}khjZ-*wCzaiv򒟗[-ܹN45UʁZz(_vi([nL0s.o-cM8 ~8E f ʔ9}wLKR6"׋o3_V7b,=л?!V)3heʋnԫjH.yj,/ZΠļU(S°0<cZE8*Է)DTs f` Aؕ7).fx;!y3i=e d稅L@ɝg lQׂF>(?c&0.xMAZy%܀-u>?#*Y>ĕe|,1pWCDy8<)|8{;ݟWݟ=}u8?އߨ}?ͽw vLU% 64l7[[ c=;Ej)_VZ ʘaBIMi5 $Op<oY)q37t/Pi*۫ .CQcHb&Nn_,טyqQc 2#'sfhCar%x)ialmU0kA`?fWWip4C_F8mVܡ&rbAc5JRjp+|pF?_@[~8K~c:)wFopsaAL×B70S{AZvviah<`L3?p)U)mkRlq%.9GB4C*=ۣ4qd+*=!+#oG<4%K:?7'|H3q[0EGbqFF)bڅ,s2QS; 1L8;ZdLJǦ=9N8q+\=l$;ŮPRNcC ~T $[:o x#{\/zs#H\)H8Ued`x:*ɄH@]:tdeO@Sd졟(F &{ Gj^fL(=s?]BYZզޗjQ_.Mn[moO:kI_uokJ0 NQδtG35t?5L-"\_k.R$#U[Pg|}R*nP;$ImM^=hj֮^%NMcWr{-^ [˱m]-YGTՙbCuHBbJ ]w7:-:E?}bnx$q-Z4zmꭵ[xKϦYE Q82U 60P~=An5 {yU&i*m~V|)L& I|?_G MtH/_|X/->6e8䠸?p㷽BY1?c|<'t9޿$U~)brS*X`;P(<7׆Nu_B&_w@W5҉jҸ=76SQQ% n@9d-TA}Vǣ8Y *H3<p\6tB86$!бM*#AmGb`yLXPW:[g:)09+w".{Ms8RxkQ&Kn- E ybUZ],гrYWLl K)hM\_n .~mm % yEgj>.[ r&d2~P=Em íрUX |m8c Ž-HZdm9o/oCx՟ncQy/Tk[gr7 K, < %.j]L\SھgN>+agg{oD@=?Aj>'d &fȶ9;a b2+ rs7% 1~Qe! ɼ2GaMEb5|S$4 :%L0$N:Ѻ\Z8#1~4əBwz䙗0;D#QA8U>VI*:cЄ;OtgzۮxK;㐫&dF#* kR,O%@z1% /锨*0V[eD8=$cλĔ`*}8x@AhQbJ'xƫ<_7joת<:Qa҈ޣT>҉J vļ1!Lex9qXO9q0 0t!qX.~?am(m}p7Ԃz5k0O1k|?} ƃXlpcwq&7Bcf=7KLyxC$ok>C91߀ԉͻ}P8.y+ \ih8 mt]]58oX 5LN ϣذdTJ>'#>6NӚ wadЇb}*ˇ ~0_&&6BZc}58M\h6ymah~7tu jԡ1m]3MY˦A LUiX.h6 WA>Mg=64Z59UEsr8j>V5)ށFFW85Ky#]4\ĮF!j,'.E8{ ~IL'> ]|uc `#|Ip?uХ.w7.u)/sxj>q5mA7khm~HWAxYxKm;,U8Q!\_~_z  ǘjqR\ }!4,᧙˶!|<3Wj$̪zzӦwz]x]aw`F<;izCx#aAӦ}"mdžs5q~'i?'4iC-)uɏv9/&$>|R=qy^u>ՇeyPI_O]ĕvy/:F C)HM^򼮔=)o>L/]5\H$^WMg!,w8:Z3pp]||bv~>_aϯEyX>}m]i9<ߛx -foҩAOǵh<@s7k&J23&_u;159mkOp p_Wm_NOsk4Ʋֽ! wlΓ]:̧<ߜ71>Px^_U/\XǗh׹ޣy 7cF/~s+" Yؿȟp \ss~8?6|a$iNĔ7cTKڿ,5o4-q/<|&iǨ`|O?A@ܧ,-ݯpηrf2`~X+*L|uں_Y^JnTWԿ ǵyx/>#|͎ [^g'oOrɷtQvsT/˱Y}>&F:z6ķ?Mx9h$K,FxǫiD m1ai9ct#7Nl`o8S N!Ǚ7JI؅7R5Rfq/Π{%խfL " ^q_/`Z05 /;RrXiT5BŸ:W&\#nQ}hUIj,QeL]u=*~W>%fhb}"ɢH-q1+j;aB!#O.D5",I<>' ~ NL &b7&u͗kj|xcJ?hx{`Dz{QC=g_L77$&()$zj A ŰVbs} gB P̪D]c7+7׏I$xo~1-/J2޵$O ^8S"ءJ,7~''wG7|oLu 7.7| ;*5:\}ZãqUXS 4_,=nϔĴ} وҸl;]w8xf4<> 8bO (Yl0y& _AF).?B7OnYfw.0_Vo1<6',t[xx;zAl9(ˎ(A PnIS A!Йt|C<d&kTa`>ͥhO.;^]|N]{ИF{]'YP?Pb~j #Ȅ}4tE \d&>NF3ތk5&좗˅)iu& =]ع|BxsxUe %ҭ}x;R~ER7iOWh7g^Dtߍ?+|oO+-5QBE3Oܜ^a|1Jn=B_0alc C=hl&ml_y)1 SHGd ALb7̀7!7':) Op?T$g dOCd-]JkmPb^ Ej7יCϏOҸ}ٝݾ=@uF)ǥ 1S I0Ols2IUaAþԎ-lT/n6~b@xu* 0Hs g$%GΎ4/]Vd+*I 2iOʡ ƍkSNgǯbPxߌ{{XT}z$CK?8sDpʣ$1 &O\Yt.'ɛ./u;|)!-γDE~1Z⇭~#/G.ѡ&9뫌]X%ܿz\7XcCcDRyР| Cjn} KH'jieRPe`ƥ!?3nwp1zVCVJ8 ܅1ݾpFʍJ(F&>< u_(?dX:GWLqp kr8dz)<(o*ﭣi1:yW9Nw"w"xN,`:{.yyN]UWbDf'!yCY^1ύ!p c랮ĖZ:׀!vTv'Yx5g /̤?E΅rLcotaJ?S@^nw'uc^P8?ħ]o{|gԑk8Js0_$mgtzbjjХG ƻOM'pGWya6Ja'=aV:ᇜ,~gptc:̷Ua9`n!͟"(\hH-`Ej05cS+{ָjjD]:zR)9yjBʝO>F ZƓ>%{\,۽խE#&.4vqәkugnIs5Ρ7k̠1]~@p"W0a}.O2)ȌJ]zԷYh 7̦T>zԙ*ϻcP% |y ;qktʡ ~8)*HiY;q@zxjo{3+$ow '}ǎxsL\"N<*謑铡>t< =Qqw0Tyu?XAHݒ-Zwtʆs;o&q*sA)xڄ"Uq$aJ, 0>[ =w] p#懮Nx0-P$~I^]WjNc*l7߀:2h[wK ڱgԈԫ ܤ[K1)TWoBY+Qށ[H{ i}~c ?47<VE*i0w#N3;p4`ڃڣF2gۦs7 WY#M^tZrJΕX [SF]1e}G)jȔMA+(Ό/ibwZ(v k|5ǿ\t.?l(=?7w8n̘K pO]^4?gЕasg >$$8`^}J8[^x%M7ăfʣĝX~09^-ODm=yb̢J8wP ,~H~wd4£3SG- ݃Q z>5zk3Q8O`K[gaKKL@3`KnNX,iN &Lj*6]haDfnCgӿY0lU8w!-~w[:qc4:q^ntw̡̐.؃COA(pf<&>X=B5z~m~ߋ1qo9)73st&e9Ľʹ!a swF8{-=Sj)c{rt,d<1wL"o|.!$,_#dҍ.p9:|7n|&mLޚX# RfFY}CHW?w:[b\evm?R%Rq#4}7bۧ~K nM>Fp~[*Fٴg{ďkٍWDZK`E4O~G:_+ch{>LSFw5MxGHKg()v9 Z.7yo}ܧ箰mW}[}}@3~$j<ȁU;F_cND V~؟}u7f=hZFf/w 1?8š,Gypv_iɰq~.I#2΄- /p=G(Vi xa7ӘHsd sK E@ssk$ծ3<fŃyc:JG(=` <&վb jHI ~ G(`M?Ob oo}#跜vKC;<_O4~ތ+#!vVjI7ŗʶbk&\Vuґܱk>%[0հq>*6ѽhI~`?N}u:rp/}!?[[ѷO?\_r:b=JҫoU!ڕd.|΄n>Ety<|JϾK |K|y\೟4;9S76jbrF(^grPEDG'g <\4k'z|\]s^4>gp6DV+ "J^:̰oe޹mMt;{Y+1YZ ;Rh!;Bf?jvW.b48BC*f B]ג#:g}׭0cLc 'Bk 3UL Ma ͙qB7G6iF{mC=Z_{Kuexp}&߷8,c9$n̗a;Ye=aZSq ОA8E)_ko񺨏>z"=W~/G(](YJx^C׼_}3KY_Yy}#s?̾/kEhL ˎ*Vs>Igkl%{QULFc3 ;'G{ Ӿ.ymJ8 pp/9/C2^>aV%On|4:>&}4Kwi'sr{ԟ>?j,xz <3_4߭O\,>Yxh.-yPo`qpw} ]_|Hp.܅5W^frXa)o`q;J)Dn"!Qm@xo@_P~|ixaϏGe8_E篯V|ˮ˞o[?g35}/퓼WγɲwGxS8YT/=۽_/|+^a|35^'joU8Wa>:J"OW? '}]̷1VP;_.g>v. uo|?|Ob)^l?Uy>'/_~YDm缾Mfp>,7|Ҭ~8O+\-?8-? O,Η"o}s>|Oy?AyPп`z$Aտ[9\̷y;:/Z*oFG?PFriTp+N(6?e >=<_?UUjAWQA7 YMI=^Oe?)A%ѿٿWz$7>?S۞8x1'_=ZN(GɳNO ܮ~!)nA[ҕB*NV*?}GHo}ܗSwRQO>/qr#J0D{~Q"FO?~W~sIHx7?A~>_<^?.OFy}<_}~ʻy'ثx|5^ԯ>_˸oC1{>Oړ&?%Nb{~қogHһ?f~W^-?}?6S+?ET8<|H=-MU@^|q,9qi{?y)ʣ̻s~dJߐ}o7"l$Hq4ҕ>3^ԉo! Uն)D3t⫶ۓږN,a[vtl{U˯GYi}q]B]!6 dY %X}] eW]?h=#I\oϧbZ n;8棒)7 7JCA "׽g)ĞNGEN'W!9<^QVnއ"鼯D"NrrOb]y„=:bw]q?rBS xuن`Ze] Mֲdz%['g8 1? 25p~J~i!>i%yc?Ҧ+k?].r%0J 'Wmpןdf^$FjPc}:muRJeʤq{;`ִ~7W@L1-ɢnt*W^@dLu9voRg1"+,L\#Ze7+zElQQzV3|e%~IЭҭJm>^OK`{Qi|>+ˈ 3g7䞸U g˩9LSG0:8y]yudw?#uPΣxRT?/v5_-ͦrrr~oy##"%SNلɘܢ>urNHY>gMb>RX_s;B[8'#6''c֝!r,{V}%_&y漘oO&d?(;8w>[MTLuLdL2l|~&x[[JU?&X'<ҞI9`>큗I~"."j;yg>!#Av=|0_>,FaUy 2%" Bz ŒL[UxzTQ9AO2Ѓ֌SʸgkOݗR'#,i]{'X`k?`q fPU{_bw۝q10,^K3ԍ|<`ð7P$ԃFO|p“?Zor#_Uuz|L]H_G&9Xn"Urb) w ^y&L#?zmF7薕w'_Cj̲WOyxl:Γ9Vb7碾g),}|oAςty+-N=;wY5'MHo=REcC.(_ jr %{ߏ3'>.}a7=<>Kt=J]ޕ<ݸ/K)Tױ^bm^ 6b}g;x^?9I-3x'/ԯyN۟(#Vb?CfO>Yv1Ɠe;(>|ҟUq*ϊTz1faUũa4fN:3#{{9/{n_<ߒS~P:`C8s1~^~،YV!}qEn9U;zpUjeQ|q^$G{O*!;~>xJ#1 i“~9CWY4dds_O}럄R=R՛YU8x>9GyxG9_]y#3>.>^R5WB=~#P`1#v}~_8 .ozz3dB{Fq޷ Nx ~-2Fl#;ޏ>{>Nz䧞\zt8Sx]،[ClP,q;_gM>NMQ?mfFH`FسSqoa{;5mΞPꮃCx PET&O?>C$џ[rS(Cn&?GE.~"2So*5 f vewrZfx q4ymgtˮ&/3%x1[ xBDr6Gd&a>I^)qy 6] /lp\M2$ X:߉ x7͜T7C<Ke` \צ >w%iD3 q~W|eP!ƈSRp.$899 _ُFWG ֵ._#eipwt[" !0~-w7]c b ~pQo{9$hSGWuExo7t|_6DN.Ǘ.띒A7$#pRn IiBR?|:I4S>[*'!ɶT8v׏/_^;I7|[B,}}͇p·}^:|f6EJ7"k3̋-޷7.!oN+v8He*[ eW??!/•،#a|8gF'䶧=TbW,)xW-\Mɞ "]S|bYgbby^+%_h_UuDNؑX!q__b$v#P /ǿXf>bKz+ȱOgbSNRoڄbDd+:8b_XUHpdO֊3Ŕ;py `%|ps\v?bkl/D});} .wޓJRׯEW\2d}~_ jhs4+I)oSW_sΏVJLGTz?mx>k׼5bqxD;,~g?ex;QOn?B]i!+.Qֆ Å\ZE\0m+tZ??kۧgf$_p&(ߏ߹}ts '#&w,s*ֱ -'{X~s4gC RJ%?w?~wy㕫dk9`oC%L>5q3{>S_})2""6dVpؗ?Lߏbb7?W| ,S#?, Wp װ%o^pn'}%??8ze}wp/\wos_09V3͙04oAp(~PdbX0c=2䙘O'|T_~J,ogw\G? [>80"|sŬ~kf=-_Ȱ9=?\O~pp_V*)}MK||iwkqhO+Z8FXwTFe˿1_<93x{v707x|;/]y畯aүσf/ywbg}gMnޏႲo9g3[SvW{>l;~rkd,|'lxvܷz~Tn8c~rWr~|#xof~?_Nxw/8s&׿g}y_z/b vח]?& ?U,9To~9l~}jGkpjܞh_l5fxTȳ71uՁgئZY0#61gKWYXtC̘r5`JC5CX K|w鷳|g^' flh5EiT3_i}-Kh#?d>éZTF,ViĊc|jx+{`+ڮҀEkxa5ߊP|942e%]]+,PHyBx`$p`ܜVTcUVQ0No<Ėa-Ů"p8 kEɁuz`L>W+8_ q,[JC@j"1V\Hd y`q7qs$FgX0gc gk7`hȾiJc'Fi'83F!Q [9WŅ@: ]5 CgnɒSPԓ#C Pup.q ),aJupa.w}\K#a`PcM#`uv s<|-p*ǹ!W}pwʷ{',D-E" &jMnD9Q^9SfyQ4/1}H0*ϟ=pqog9=M $zbncҹ8Lgn,DA!4Y74Y/* 1# S}u}4! p'0'c&"u$wdE%7!(*=S>5f%v8OʹyqgS?o҃$&q䬕)~ HEx7Au+ vyk>ϕ^z+z-_MbOX)\7֊E3+w+U߄>$dzxH˝3{xQfV1Bo bYoKwxuYkZ۟c1kWݑj~*NpwB9ve>5̱*N(߁W)ǎӢBO^.d*_>cW"mWӦG3zNb:+-񤅺>3xq9HX-9?޽'K<~k|`ɉ=60v,Bgo6R~t[󼥩]^9'viLs'[~ItǿUƾx!ym~!8ą4K?[\ ES>6IxEYK뷃U@a%Kii$ :w G2!VʍۏLKÝ'tk/s)b+8\3Uю!㣬;xjE~GMG37ޙ|~|أR%TRz~Z8g}+﯁yIY|}ĸ1N;3'™!5K_P m3$ڃǽ?%sgTbqp;py>|߉!x#UkRoY3Is=z⎔5=kF&Mv 7ӧwCݜgZ̾g9Sj-&cc6s DpgdC=3J#]ƈ/w}G('ϹjI;܈5g31wcxnI :%݃\W8iU]JK9qa;5-"$zXŸ'2^4U;ܗ{r}X£/uNʃ+8dLZ=߫O()" !Ƽ24.<[?<^l|kS|Z;jϮ߳{4ӵg}<~-lwRܳYR>Z^y}ī۩콊=8uӳK5E\Nw^cvpfJ1*}}n=E^ sVyI˅ Ε^rf'F(߯G;sG_!NEjM:*%eκfDxx%{ ?oe97:<#j^y엓0׫!TJ{WO}4%W[8i3~לbVk}PxߚCUgX 25?v^y4#sg?1noNeBo)ZV>V1ʷ_ ݴxogy=ST"C;Lc~?Ǖ-Y>¿s73o5yp|rֆnU0r78ڙQ6? ?L(}^zG6wW-g!43_L!M\A8meyVN:צ/Ӝ~^sh}Sߍ<w|vGp|GFМCދloNۅ,d6`w{X;y~/m}UzNgʗ؅)ɞ>݀=30o]w }Pƚ7XCH^~ {< S8iҸkΊjƚ>H5E}25׼9۞/VWeh2xjY=FJs@a~2>=Ԓ19ZǙ3F ԏ8jĮ%19Nv5\. o<Ϙ5s ʃ wҖBjM6!^wԃnfP|sFq0s#8u}{rw}ާVo'q96yBXk`ydqykLS?i;#wz 9`x^չs)C{XrOeiwx=4Tq)*ѹ-ln2ӷ&d}1W{f+grCדK理ק{[E*9U[~q_)##OWr=~~^g)o%do1>a~ri?I>5 xguY H?we'{8n\Q\g 'X..iWKc~kM{?jWqb8E溎wڒ/~~|s?n xόLxnOArs :/K%'3]>/^OqD@Oб (wiSpJ(|>wITx w<։=UD(Mm1HE#s"4B_/QII|rK;jR>Rrk@Euz/X5n%KS3#񐦩6eglVM5{U[H%1TK݋WʝOE KT> c|c`BCP6ignNV6x*;luر'#XoH kӪoH0&ӷ\Awt=ƞ)Fދ5doDFfOpƄMF!Fx h&!jƝ(քG'ό~'*Ԍ( 78c%0N`秞ިiʫPS37#*Hr{RKl?e\ά0)fp>x<q#MxNu#ݸR_^{BQH| gۛ;c&  p5~ t&nMXPNƄMє=qj2 l2_ +p]OE)'.?dTd~|ߏߋE c ^`=7e;n0?+{~DGqSԱ3\IԤ3j~:?pêڨb)VX_9X4߇Y(<7+|!V2ln48C~n)^)I)!Nj4-"Iλ+).L%ʥвmGd׏{OٰP'a񺧔gaZȉ"t "ՊϨ $ |yHӳ< Kr[`<| 7g[-gWn]wk]+ڳ%Td7zj xހMYkm9QӤm +ΒuфX :x4GTU< liץTTn W׏m1!Y38[oFźGMRnc[9lnoA{PY;էmzޚƽj^+&jYNNnt7ɡj)LVvfMvjMt7c0LMX3x[S^eJњoơY3B`E}k}'uknMB7߭úԚ5K Y1Evfu_غuqvui~px3(n O{ kI| n͑ "7&{dLһh2|L&˖Dw+[=\ht}E\#w`.u##8G?ߏާF :eW"|Kf6Q]9E"Q=Ҋ>G`X7)!ҽBSBz}m#b'gi>EZ?3c*ƃ. 5EwgZ&χ!?J˿hP#1#^.+'!U]׉JK&etma%<k`R,Q0TbԤWlb : 6.+SJT'Ń&xsH12A*HI(vWA21O)YN焠=4uv803{W\IT3pq Bj|rH?3b/?fَqYܧ)X+<~XSO6vFիl8U g]I8i%;cuك r '܅~QC}_=k!~?BF~Bqɕ)I9q K5iWiH\o$HOw}L‡ kD$*z/=DV]8G|Cm T`?xpm>Uߟ-#k9h+lrFʫΎf+ bb?DւTh+pZef=.0p2& 9^WfNߠ<i?L?vhD0_ DԠ-=7p6ϝ0ۂ B>bgH-',4oHHLL',pV%7^a$D &p:!>XhQHir&U4QNXj5V%PpXQ¸|vtR!,ALĠrӍg^TufbdRe21\z~hqW[*e, WC"aܿ?.ہOr$0X٠}P c IApdrZ"0Hb-q.AÚa+Ag\d'E#0f:k]?v|r}rvޞ;Ӓ* RcFpNO8sx~35+iUoܹ+#w\#w8'gf֔{^,|Y׬&W.y%SʹVPkxWj%z3HSx|g,61C)0.bOnϙ+s_R3t~Bl]Oő$=QbYzڽODQ=?g$FI--u溿O~~|a)¬{&ݐޛ}"dD&;e͇ttoyvi]*k9H8o&dgB kZ mNJkYrT(G>]"t AIџdaZv3mmrFMtx&>Q.F{?+oot$ʛiKZ]1jpvެ^׹os_wCrưܿZ簾?ݻݐS4oگq'2OT%r>Dڦo+ ʹ]琉mˍdL_0oTPjv&i w= <$F;Kf),#קmX5ëd7mr")`yM4k|xOd_ ]c:8[@O_tOC fpOh3y@FpEN+\9eD^㊹(L1nŘ~6ȕl츜+Ʃg#&XH78VvП 7nEL7A eܵi|ͻC@㻆x_}egn*|`M;^^scs rB Mʣ~BڹzV/Mڔ'P!bCϬrw/#)DBߟd2ϓn|T'꟰B48u Nqmރp.G QlG7 پ5ʭ`(hATu~4#Ѿ%k8 PY }VMQ:jxvͻaX;q}?;NR~ #g\am‰}H|#yh  }^w}UOң²!OTgy b;(2&Cu_>x{^lx̺cmzxR>mhOU_䓑 =m'҉6f?^vy`3pVk>dV_h=FLn0A5Q975ϣ}Ǧ9o܀>UFy|(@&=JZ8xCߗ G)h̗QwX]S3~Wx\mٟb<~\ύl4Lиz}~Q/`|g|~Z'<^Z3/NnHe.}g?Ao8A?'-}yݏ\_!\dmoW]_#6r=;U[&ɢ6<:>Qܿ%\R>߽~:cӻ}/tw .˻._ˇ̖g/_Y[4S.תQ>+4!x_. FOfg;sڭ?dV?\3nn9j V>7λV]>JwQ ޏrU؎;~U,AjϺR3):{474n~9v~!*޷1d͞܇*z|}Ze9fa0Wyr{!/ e7ng? yBt* iTA <%i>DCK:ϰS롑y+@bydy?<>%Og 7snϖ1S>f񻟞osT|eȣ ΋~ ґ|n}P>9$&l(Ob{?<( 7]rW(o?;(:O y[IxG-_inf߿/OgwӕTWUT!ҐC@rA: ?emݘr=v2"oʿ$o7Hi-O{ҿoDҷ4P сV{>h{yt yb9 |[XM4<( c1]H~xaKiY G7>'gaOd?M_~.'}9UIȢH+KRe2]K^vdo覣UVwo :$+_'Ѱ_Yn?_}j:/j哠C(Lod1'f3~$+q "̗e\t5?K_UL ,̱pdK^y<+Rf2eީ $&rT|Vg/de%Y~Sa%rIyu';RE4,E [gt8/kx2zlA^m^8+ROљAIN `x;ۗ$nꬣDEv&8zw%jb5qagƒHbc [#vQOEv[p*=n}t6yQ1 [QAX֫F9F+dN7$2pdC=)ӧ_̫=}M6Uc%hFrr=|.U#}to&yRbMT;j!Mٓ8CNxxT3M8%Xa~ /ޏDdj%Z7N%2sD@H@ё/ I@# hKw"uF 88i=,q;Y._Bm'_-!*۴L,7}Jؔ^ҎS΍SD½an=$u=(H)dK=bn4M#}<>,ELo|p2hDXtk)C7满%nn[$7w>~D%,!\_ ڒK邯v`ܠ-iþ|᡼]߄#%ViE4:M." ֞{hXAXk߾,EJST!`Kf!yMniO7skw&85Br^:Rz$tOh.QXƇY4:$, yp"VZ-lFjmq1M;4[=nRJa*Õ|xr+튌..-D8Ƀ[1oq+k;qJ(r?C.v9w^ہ[X!/ 5|OdH1CW y|8w+w̥ќ% 66Xl%ׇgeyW$גlUsŮJbY-LFx)Dw}\(t<51sA7P|To(hr1:A %ueשvw8U+9Ʃ{'h'+Ş|!rq(\6oMcl Qčot.&RQp`rPDGL CSΔb͝k8J*ڇ^ZU}7h9 6n[[v}FMpH 0;-xp*zs}m6Տ aݟ"K8Ő3ķ$ܢ@_|E'~C~gF+IPބlܐMbpB=ꐅz p CD6'$ PB(?KH*X,~)݉]}&,WA:63J.]C=|[6U wV?eSpДDy<ˢPg O)rET`Ȋ}Ya !aq̉]vo_(p5Wyk9^gnq=]÷cʶVe!ۊ7[>0xXzoXfi5spACS:o+^?'3GSᅛT&TnWHG31ulc"R_i 8Uz%/ic+Sڻ@ 9_TK<ܤ_m+u^GQic ZҼ*wI/قdnYJ*ܒdL_sTsXRLnb&Vf.lI3͖^ODZ@(K_++:o.瞼<kY:,~- K<0[-]2 nZg.^,V˜mH R˄! }}%$ƫ!2ՀmUYFE3V)9Ď<_$*bK=uc؁y'vd,]'5uF\",)'BRXKeynD]8wm"Wsz2 R+CV$2$@.D = EfER}`#CZ@e5koG]##^bD<Ϛ(&8f H"cGifg 1̜.WkH#h4Sm63j+:qoLc'<理0=ȅu^jx#QWӻ3q\;Kb_v.<7~fem$hxlqHGy;WCdYЈ4'n$ZA緿M/n!5:}ɭa+Ug5iw!JM+gyciϋ^Bxz"E|`d-\>P;3!FϟSJ^7\bh5E㷾[4>pP;ۻCt\NBLJڢ۹N๜t#6^}\è& 'NcG--}޷0#j'R Bte*|FݖB b 'ҶW 9ϓKC {F7,/s`Cs1mRt QC%G]r|5{`R9C=mϿ7|E]^YbAjϿuWho~c&O0u$OqY: D=eIu]nwN0$6ha>\|cqq?c2~2/Be=c9u#iM9e:kPE]#cf`NR4"CXN9!ΜN̉M!ifHh7H!<3{o >c_G9մ>7>I#X-aR%N)JqvF3R~QgA0}FDUq,Fo?G˒#f_88fEAnm,v)5,Q_.Rg^R{=$N,yYa{LV5#VfW~tT[v%k'D<]Ȍ9pKOL99ؗCH.k**Rl&~7V9 ǧ~A5_d$?_%Os>[Dy>X{(G{{`տ0k|ؙy3*1+`E:D+HgyO cY˪EǓr>hh8>1Sgw8H[L}}{;gz y:/;W#V λw U,?MO}*oN,2ϰ04c?F_4TLT!_3?c[r;?(MR9_yP^oM( ~|Y<}UUS<+.\M9qӳ6^/JtVYnGyGޯ"x+Sz,V =}4˿y yO룏s__5}^%7Mm\~>yY!**)[.㾵|?3ɮ]GjY~(F`W^yb~K'  Z:x<=:6 {pgEsC%ILc{ųC ٬"$X%kT4G,Cw~ShAl- ؋rEOFC*2֭!>єS#B64> iؖ|##64I+yn7t[b ;X_{XU`3s7i |OX37hcg/s%@'Xb ~w6Ovi-aP=qsݑ(\Fq{;Րa7޼j| ۏy_E#R_wjâa gr)>ZXϏkj_\pf~/Xh NXk/+X7ÊTs,9<с^Ճ {S[^4"~Le{,-(߆C -zC hU~"Dqg+p f[_#Km*ryP?j^BT{kV u[zpAw|2@ rb18NW|θv. pV=W Wvu/~sME=%+=3S"lc[|/͠ klC?T\7Qfl\Lb6펦">{#ZjHoG[ϷSmic[9̘qŒ{gy-W̸q>eT'd7eksҮCYAÚPzd];eZ#zWkmӻu"( +dk m/kZ1qny+Gk3lY7;WI V1RX$cL5B߯|Oka/:oa)JZݴ>;/ʿ6q>˿Ǩdx&twTΨqPLs 裺>%J6;|/d֜8!~}cPHSqk 6vX|~GEv 23&]0h#sEMܠ!- }eU~X=aM[}ZӱFkLv'Sxr^Y= Z}e y.k)E]sLZ-ZKZc vI;qME(2Өښ/+r6˛:%pAJh.R#-Z;>c//QcݑBq{ Ϯb\uW%ގk8̍%g8zs4h,KZFC;Ւc7T-+Wǭyy#dsbO-$%8=-9p /qոr\#wcE'Pbo'0sjɏ!pMF~2N9̺ɦ0Γb=+nۦ&8,OxժhLy~oY'oSl˻M;> >xx?aS8 6Iz%0~a.oX`K;d.xnڸ&O%O|~-7@ FtjxUT4p㍣MRa,!1^Us'x@c(j3n"O6jچXo?I)!oZ[Sm7_!ycYp?F뿉"&\A[{9K_r$O,WἿi\j}~}6em~mZ5Mx۔m?:l <ϓ //yXKxOxJ߳)qOgsSb^gi8xOF߇L/7mkf=L!/Vǯ4!d=Xɵbqqx^}(,-[j>__G{qz^?z(*K>_;|ALHf6Y4xr>"'&*|>9pYucOja5eH ܩ! T<& {p:-Mm9CujFa#ϠmxcDa^/F m8im[E>{W-&(2YgyvZhb& LGvjxs<%j'C'4|`"c=h-jʄM\/}^~oQCo>_等,~_a$TSxe{+׻~,f␾U;ݧI|}jN-=ݙ6sIs|3ffk/eNϧ2sh%f&NΧ}}yrz72],2s|s0ѢU2&ޏL#(I?H<^gJMih,6ye|z?/~^gS?^o}@f3s'כ>o䷟*Gs!u}93k↦4}>9;Hߟߋ̰SͯLr1.fWoZw5@m/>7&yS?_^&d'>z.0AWEW&7)36]5ocՂfJלIS&n{Yx'ψg[Sfm/VA(>շHY|8("ImoW]h(JqF||ϒ|ڪaz8NP8NPO ý*+y2=܌wQ?9<H93 Mp}eZ/듧}[MkH{ H ϰTA#܀Y4_}g/b뿛?V殚@?cՎ~#~cwPU~ 'םnf* ߣc}~5@̔p&_%=îq˜Zm,f!cnbٿ~,x!;ׅq )>[9^/*_cj?)?g/[hte=1\K+3E6CПtУGQ~4ա–~/2mAS/G³{|͸Qa5<]m؇>WIq|Oebq2cg_`8|F7@I 68{Y>_i'FmN/0߶*t)3a{QGxxW/dSc_Tf|qj*RG1A%0)܈V81#zpM/m//z}ѵ9Ss+vRx٢8k7#ی> XuҼV)P3sU])7xE:YWov>i[V1,&n߿sò, {UWk,k)eZMx6۩@7:0A5_IejǿkVu6 vTy;a3;9,2 Ωff^1}_8{ ^%1 q* !m{QDZ>aNgQv:|EU>gQ_Ղ+:=-䋻+B8E;=SR9AD:RwQLJ]]QVQ- /R6FN9qߏlnw㗢hzсyfYԉc%BlTdzq_X_շЉgT}E N W\8F>LH<˶12e+ȝU68UQG*yyy4&&B|0GmV}> Ud ѭSq{y1n;2e.ŹD` oq3x[x3^zNwz|gUG;n9_׍?…<Zűsop| px7co9s @Ѷ?"QUIzS39KaL&_:|jpFɧ7qPFBkE!Aw'Z[yV+<>fP;pKŮy3 [k76&].!gWXtz:1dhXSvk2V@ż_D=Ř>~1DYYUed5F{JL.ف'~yhrUAg>q/x*K/]ԫZl4 u 'Iq "'T[C9dy=x{|bﻏ[-1al;X4yfܜ_PUXD0sjlCCe &m?K+le/7`U_0,"-tfm8}FcKRE{Hsս#,m7Gu>W7ou8<}{>sf4kZrZv=wGFHw_iq*uL5zklkπU`u).m \O ڥBͅq40mE羻&/7Xeox#Yù N`OVXU5,pܬܐYW|_d ~EUM2጑ߎOXF #ȖQd䜑$:h{n(-f L7rnPnA 0%Y{~.ϐ4ӖjuZ)r7ѓ.lʹ!}w#V Wuؕm=oWVH]QWoo$Bc3%7{[I?5}w֏߯b\OXce?<1!/ti1nOHPQ~'.=7S7O~<$~܈Yy\oU*>QKFCߢI>G4/_}.Zr>44OXJ,my?0P弆Z?N<}qx^[Swh!7l~}0b0#Ф˂_% aErL`)}'BӖKڅ_ Jܿ^I%q :v Pk^xJ'j Z"%Nt`W$zK_ZSe2&21.0SӹA^Sҫ@_sXz]R4JK|?k7}`*7s<)`fquQ:i\o`(dX_{ԟ8`hq+޼i sMʪ|LZhE9G:XmH.H3HϺ.ИMzϮJ]T'7-¾c/֌?8m ~0I"a6S" ydoE6N+_ 4 P-FW;nt/ t쭢窵 Qg/BS5M_?誷8{n/5=sI\(/XϏZ_< Ȋ"xZ),,U Km s{U09x48Me\fqקvK]({,Om<<ݙ2\֔]ا"tQ:*75^l=ֳF__ \]!޿K>.ޮ^om[P!pa ʰcz (oX/]|Žd;$BXx}E`=dR]Ku7u%k`#KCov8vW $ḷuDzr.njmh]U!Ttʲ%UBXx~38npE%ӳčz[.\ўR-2^SfV[>Զ߳j: L. +Zσ2.aSJkxb`S*ە'h'gTn)pMI'g_ǯw'?t2x:j54];ܱ8X!2M[Ua 0XRxwoL+$!.x$4> s:]wè߫ƒ. {T*Ӽz%'5F֯{q k(<YV bk..gję.sz 6'^(T}5lm#ܶKjd`JT&߾UxKi7a}>Ok+NnkmH^ <(3繆,:}{/.E`-skَ=`{¡Ndatn (zQuIv%2*(; 1#J/֌)@{((x!ܪ{3 W7FJ,]c2[J'﷝϶,ĵ}[[ݍyIJc~ۚbQ3(Qx_'4CRWⰟEmUᝉ<U6gA wN.[䴷힐5Xv9=}KMw=!Y)g{gǏ6xg-Sb^{)}/['Wt[Hcy{tv`e^ǸRrNMNk7e<3._=-W5܌[S>rЏoEC6l>3]qOFB~-1!w(=pHt뮘: %s%7ߓ7ژ\* wm:t].@g09&\N:kqˎuЫ~棫qJ4QŌp1`W`r?3ޝ9֏en=>YE 0<~}EKKCU">Dx!`G_HE/*>Ƈ>ʐ}˒T"?ۼP``QNϕUأˈN>FeL/N~nJP>/?44&nƅy^z:C\aK[ͷ&OR|@8?7[ g| 'ף a HZ \~p X;~5apOb.CݩOғg_p&)p(|QR~'9u&Ow ri8p'sPG߽Q|3"ƽ_ D,Y#~/9#<Ќ|CC;A/p^AP[ 8N:WB)V+ ˜,(ĸGW68,=;Ҧ[k%!|P@zM q_pe)ϰd0JW9s{5+>f<:ƥPS`cn궸~^92GQ3=k\# z8[sQ3/OT;N]5H>Gx 7wx̷^觽ͺ,ei>[O IݗV^݈2K59h+Wa;'8A)EpŸvߟ>)#ꡲObZCey)?C9ˊ#{F $VUI6)S*/0G@,VįĒK`[aw\3˜ՅbDg'F=Y#X#0+FN3mbT_?f}AOz#(ňi[#=#P/0Md&;1GऩOZA}Ua`/ix0mzG/w ȕ;X/Vbpez|WVjAsF`*S 6aSHY7_A!Ӽ z?FtaHˆs&6?w59U (vΘL_"]*{xtkY6[q`?Eo9uYX0F3g'ڄLQnV__;fn'wNxKgkJH#XsOObVW)Sz]ľsʳi_Y I?9p}~ڜ}%9Eg6- Xc9ea`V3x&ǿDB֏BKC>ZZHmØ#M@aZX!K(@s3|kwَEvF&6Sf? :[kzܧpM)Jɳ'ď&5ex+9+Y?)c.{s[֘L :෌vp[ǚOzLPUզT _9$F;0G:~K[MzzX #;X YTXuW'tɣI?#62 1G nb0D1 Q/#Hl(U@/@rd(̍Ŀtcs&yv8:)Z>bϚ _:O1GLJ9 c"sҧ60 A約䈂<3oTEFc [zp1bbQmz>QC4vaSX/Bb+$qC1VY_['H8xxT$Gr G0G0.Q\cׂ^,)H! H7Cmx{SHޯΘ`]ca:!(1DOꄉQ_WS.dm&ᙼWJ?ң*بonN=JxRƚ.5m2qoQctoeOG*feASha4%* An'M;NՊA7>뛷4u֣o0[{l#L'ŅȜ0-[ݨRpnpymj"w}n-(G$ Uִ*Rճ $Z4 KAa<~TDbW֙ebP +}\XRo*Ԓ6%7@c[J99E!#-U[d|HMh#Sͤ L?ꄮ[=1G 2.Sim3J{P#W W°*(oep5x%=`n e1)WP2́X 8yY7fLؕrCuΡmbl .eZفy~x a@RO~i>rz5V/qa[҂VygwG]kʧ{[v#l,cYA-I9=~'4~y}Kg8-]+&8[[7b'?_hI)oBkEHGuz[ -i5A+C>" ?282Ʌ#‘{chL3V|LYϓ-Z_ 2E\!f|-:ț@-l22Kt1㝺8ۧuػo>֑>-E!T֒Uk81ļ].-XU>= pcDG8@Ų@a(Һ1D% >M`Rc8P1N.gץx7sv?TTJ㵢90G 2$FwK ŭ #9-,*$cpO.6T#=1G #YW V܏Bc 0t;$sM&$yC^K+oزvp~ G%4+,Uze7!5 Psal|(8Su_yFOMuZjj8!r^@iQtɛB~yW;=āv0e\c`wvE{KAe(KXh,׾FY)V\7Ɲ+wDߟD r8\M kao&ϴMWiր)4x:)tt18zF,Fş4c@Ge}4|y:{ pJwjZ8wR: yXdO#y>'ĖUҞO8 JoZxQ0N?m[=<A U`o-bߗIZNF1淳N:YtNUߐzk(<³9 BhZ9Zى׋CaƱdşKlD?N_ԕFu1 &Trkk'\Cψnýl 1)bZ 7x Ja]D"l-FGL|f)5;0G<Y3;)M9b#dhgn:xaq@[{;PUjCGS0C Q w Ek~&td# z2|_xS~&ЇA ^C<Ȱ;pS)vwsw:cj򣠮J@Nʲp4#c0}z>/RIi >w'+iŝoA&(ڧ'o۵I+1G8{NۢR k20G L  u:a_– Ca_uvN_#@ ci΀^pվFiK\ˀlc^&P\ПF'?|2Mhs5RV\`|.͖0߁.I ~1lr{OG;g;XMU#tжo6qU Z.B 7E(|Llgr3WҰQ)g`GHgor$0Gй eKmHlαiN|Tїsب vC$̐Eה,!/K;[;U}9c=6:V ǚ 9A4(P)YK- s=q)#iefQ͜uSS1V9[au+RX1'Ԑ:|Gc3‰8PQt:vSfٽc؋ӆu-I-WA adW&r nSSkԇKMZ@7%)AxR֑<Ő-QMR.bx!kR3m$d-0,J9aEaK+Q+2MFQcaօ.a,?bۨ3e)1G0QZ6ΰA3MqMOC\?.r$Z]AN8u/8_C }IK[m?,0n:真Hj3-2FSxl|$xfha80l!{B-Ga@Bxfc^tTX;JEF0GXAMЪi\ZrRHWrѡS$mݨw6oe nfo.y\W:#29b1)El 90w'L#;EcsTP:9TS$?TʅԒ & "+2BW1hp(9ϴ|RR R`1G VdLl u1Z,/ u1Z*79 n %UU1U8dA*(l#զP `#vA g*rczhEW&ƚ7h{c<dߵgn#>܆/'8G0RDLc'$++^/#ڌB{!15f\s"wi.-Vi%ghQ>`:b7Ins!p/^\ǚM_[93UP5O.G)3 )qZXsǙꦶn o\(gƙzy i[GmJfPu;7PR# g$R )ƚCv8,c.wr@a};@wTݓ^z x|Y NPN1GЃ8mTڔK2ܶ0G_baE,OaƵHe2Qj=H %6*D|Er|qitĘLAjOtIodIV o㰬1jNDIa_ҲQ$4ǟj Exu4/GsĠ(\x@tftd\e4["SArlc꥔gqzpTڑhI|eܳ=ߚ=0oT4(?Q9cD+/ P.btAeF]$ szZD: J«.*ԈJ!– ~ !+͘#&ӎEaGE ˑݢIEgц 1TST[:RqRdb]7c^k8 eYzE 5ã'=~lG.   Io@:Ps/0Ǿ x4\l'`8vf& |Y<j0ޯ:!ƙ߄}o{#!ܫ&v ^3C5CD+Mzقs:fhyoe<.Ӳo1j aK[E@::h OJ'nkM'.}ۖf}Pc :rRO<-Nj͘#f<3bJ80}ǟ5 u{\pR/iH]i m,v ['*פNz]eҊǺcQWwZj! -_T1"6BL!&텋&O8P Kń lg:c{~36Vt/Vq%%L5+0!Y¤bPi$G}Hz's&eZ}Mڗ% 7y>S!OR얱b!-¤{XF॑3'U9S*4YA^ڱ gH5:vXOWvWTw<<'ZӔl.:^uܾUUDYѬ/j;$` ~M"42>plJܷC [ŕ::+5ћS{Y=m$}tXI~iNGܧN*=\5IG:/\ⰻ,"WM)˜;DSM8yh=m.WsgHT/7W-ayiJX?WPf}jl oC㊇K5ҫ>2*#V<.-Sns5]skb}zʥ.;ŅI0/Sk8Uì8ܫUqX; PmLvwu/S'..U^N++mTTx͑3KʫxE]m; Ͷ5ɊrC@Cn9r aO5Yv4G-qbY}Y-;<~Q5mr"ngh*g'z^6DTFbjhTJv*p~;7U6O*xu>R,jԮE׫[J(V%+7 Q*qImVvY0Wm2+yZhy왧󢠏wg MV_jcjcIEm]žݖSnF0jAG[>.6D4iZs['2578R/D?0lţ)n젖AP|Pxk\O/ܔ^gHvne.;.Tǖg5[̢ D+I.Z-V/kHsѹTd-ܻjl S,ݡTxf*$vEH1fY eBjGp9bW@ZOܺ.t:<^ ]x%NfQ5 b, {d:_VķR[b8Au~ڱf1[t3/Km2BKkf0e:K(&9:ܒxŏQjՙѡ(|֪3EzFz1,#S بpay-sR0}Duо(;F~ )|7GyK# m>__gjr};]:JŏU&s&›9Z2p?n?xR˯)W?5 endstream endobj 313 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 319 0 obj << /Length 2019 /Filter /FlateDecode >> stream xko6{~/ZӃamPE،U jNTIW`},( ڭ;t᭝YWLZ=XU"K8\-coIAXpQH,' Q+6T09A)#UYil^n ~eMmNNsܢ?ngKC8-ew{ֲR"\xAQEqQB.uquab*'k0PgI . A7R\4c˴oeҘqA iDt,Q',bVMKN*&gdtm_'8\T[ c >`6uoI>iXc7vW@is1/|[WE`Kv|  p]rsɌ][*Tm@~}[bP59fK𡘅Ei[h0FaM`-1M¥~Tb2e[uCh,m>15J9NMGQUy f=#S)up@h#dҢu>"2q%svECmTjI[:mcF\5P0ȼ܂A+Q]=K~NZUP쒠]NB6n)n+#!} DQ(%&טjH SA^ WQW AaQ*owȖOTmn.!z.5vvA`rNP ͎)ƪZAa+=+t&~#h`~lNA:0 h$o]ܑl3*.LA*ͷk^pc%^;*eE(c ,|W+7h-qMdWs Sy1ӡ-ZhczHIvmܸ&<bb$bֳ|[gg4Z=?\8<1|bi) =0yzcW^zEhahT}HTYʍIOt >x,М; 7As}џETppeqq/o@S"ɼkֽ/ tq,F*<p>DS(,z*qt^ݨ|mwcp;^؂_ʪi P,HH7[E"J;pll8v[̅lgU=Wsh&4M$?.? endstream endobj 325 0 obj << /Length 1511 /Filter /FlateDecode >> stream xڍ]6=Y?mmvkӇ+XIVj+~HQ9~EQI._?W7,bz,("x]oW7y>by9&y`{\qíHCw?"vzɪ ӈ'eiQZ%[ h8XqzަOz'|'Zy 0ƣN4J7j7~\i^WѪNadst›Ϯ9KF `DoT#x'.KC4ë"ڰ≵׼JɆW?,WYf8݊^F^Cnp _q Tt3&K$)@QRrwˍzK݊E9}~}3> Or +"V&fX &edHټb%jzk$&+"O!XXSJRF 1l v]mI>޻DHsLPNNؔWKZvgKT jL^T'x,ZrwDH^y( wh[OCG{4J2[G ~$Ec]1[,fᬱ ; $U 2<w>>H:hYOIDMcC|)e%ikG(p$6gČpP WF`" q4+>ͺgv轸4ߪAYhY{C1m(f5ݾALFV{l6>"9)j3ܾWnQ.*ٴ$4sVP켮-il@xJV ''_meO=pBQzk:k"s3./';lLm< Y5r^;j6n4C@w&?/[ɴNF`dڛdfqv*$ hRN&Geُ'>L<tJ2 nz);i~'_ endstream endobj 314 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpTTNeNK/Rbuild417521c48d8c/TSP/vignettes/TSP-map2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 327 0 R /BBox [0 0 576 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 328 0 R/F6 329 0 R>> /ExtGState << >>/ColorSpace << /sRGB 330 0 R >>>> /Length 119606 /Filter /FlateDecode >> stream x56}*2 n@C#نѨ k#zǺ0s[G:5$`\Ͽ?~_~8JYW?}_+~zoFϿo?ӿW[UJyտuo>o5{Fpx~;?l4a:FLZc n.xfr#OOm:>xlO{NoӁ?\V^x0aR?=)7~  !}pkjv>j Wbsaf/=/h|ďv>T9w⍣W nxTaps_9o\1{*iXXWUށ9'56iŸ[X܁?#L}r~SJ~/t壽`_rNq)Neοp_!\aI4y,K4g^aA+qS||s|9.X'(r;ugico:-`kWITx `k`>)5䛟Wo}9T%|a19zgg|\w%:7Xs_X} ksFAtKst18Cu3ZW[x?j: qgɦԚkr.kz8Gyp=d#I=g.1F/EgXg:7g|W{.J<Xy'f`A{޸W|_#G2' "MK8g,>hwp?3[Ƀߗgq诊 4(~~{oo|jEw<g?X߃{Zx> 券B4_tCz8EPc͘3p<N5lh$N68?kX&H<^ Ĕh=l~~}S?qy]%9L0(WK1%u?U8@&;]ExR ?s?_4gE8u?yC.c2 ע~gxVsl^y(˜A`X $ oP7Mc~K#ǷS{vq:etS$z[\#j%tϳ/7g`VMCp: U"qz&"6&[-q#\H'O,|sorƓk3Bzu24mW%lnߜq1ihnoO3 rA^iu-| ;d ϗx@<PwHHbQHݺCI?xk`yYn%t7RtWH>X4isVxސϷ {9$LZ:U9/ؤ|2y2$ɘ!5! vTY,$ˏAjZ닇J3tCn7 cIyg,ֵ+OIABG, pzHŞNjMm1Gdze{Jl8$ų_VĦ.]C {$_.V7jΥ|VNMWɯS: s)WN _ƒ5޿!?N:r=)-7OCO89:M{ kOnY.\p ]>xqrj_G#7F>):IoO;IxgUDZ"E7IxEֵ ݐtm>|i5EK(G1?v'to>'5e Je{<<|SÚ8Fe:ă }7˔,NV_ooJN]:߮g9~m)~xrnwk>s'yJϓti~sB<ωr4ᒆn 'b? =*g?B?miZmσ Gxዏz@TP;)q/moi69h;'ԃ=# KE|͏+'ؾ3)|5SԓF7qd |5N~/$3Z<65b_~A8u>(K;?ٵ;l93q EmqlK@cIk& OkXo;RJ )j>#ۄ[>'+`k$F7|<7CRK,{T.C_@|ƃ#F=`cM8l‰?Ֆ\nnz(&޾ iMyYT%qx#=&248{}+ Vt`Z^}fNE'ujƺ7EJ-﫺S\Mp9;|s?m>{W4ݤyqx^/o>a%VG]0 g3?).#ME)QA8H/_˘ 'ؾm*SfP%LX{vR%g<?6b~Jͩm޸%W_?ĕ6uW혈|¹wy윝}]Tn_oSU>k><+#UJ#܈y뛈Kxa*s}&b#nOiˊے22o2D@bwV 7nL(H}yBxpG[Oz$`VG8cN>qX˻[kt8>e9 k`J=m:OZӶ䠼pb̧D\z$^xc_k֊/ܸCP}ny^?xr~.Fh å+H O!Xp~4x{>.QyJk>"8k{58k>P_x|Gnk>_ߟk> /ܾ#|=s~LJ}͇{>"r^xǘ/ܾcPZk>OsD#F8&9hI ;<6ϋ߷<8,u ^?WPڡ LG ≈| c]asl~=MRP/x=6uJz'vP5IwPE;/q|7%yC 5pn{q<;~jT|>7%S}8='D*C}}HM8} o_ϳHӠ]{|\;J k!@V඄ۧߗaY%wgUo`'̆pqpwwjNzrtI\9_ .o'D8 iP/.|?4JpG[(q@$`Yߠ)^CmR4=E;p9mȮ܁㼿G?q5v;o';K9_c qhbWyDyF>GQ1т=L?^[c?Gcky>7ą5_KE{{CbOw}w|xm{|&ߏ۞}4S8>>y>B[ޏsb Si9C_":߁  WCOĚORs >_~z~zy%ߙ?J\2*ۧqfpoW|\|)h F5/^H/{o+B_;}?֐=ٿoZk{7:M?[o gT]0}nO?8%Ix _(?Y%lƜ],~7wC_o)qOhpeU7oz4p#cQmzpmb3_~*c `er}0ʂ͞Љ+,8H%QހR%ϫjB=~SDx""%ܯ 2?TD#jN1+p󹾡XěsE<0d zx;$}04)qx~|>s}CўX/zhsc<u}] ݽR1L)< @/|•Ey)&-ABj?~C<2&j3A1sq($ZD9&V›QmerVOiWgR%f.ѱx|Os|c6Ψ&s't_s=%ߨo>r^a߅W,7Oe0)\s6l@X":tGO\cf!511L /1(3/? N /e '}QutYaW`uiPʷ?q;A]!_i=/)wdugxQF`O\k,=Kyww,W{f]ee?PL0zC+_E*x(&h0G. `.9x#uaZ`bo'/9l2$GE9|rUUc&/7zPW2k9CV DQ}_gVި5<+k>|1 Oq4U4?ʨwbtWx>o|OhЉ\jO{⽟0++f*8OS9)1RU.+1)< ~( ,Ў2-^9RSj Qy{ئsPB/Ҿƻp m3Zc=YRV]__牆KwW<fւIoZeV(ZyJ¯7軼 rϬu8>[L\g4 DщZE/.h+!opVm[k<$WKhAakk}?WO(Z%Bj/PTFWQw}11IL{箇'HѝQFojRovWZa gn,O 2y)6#??R2kR" (:/E<FSx^G+>p00{>m}`;Ze;{{?e,nWBZU"/8dSo uSěٮDYkY9 &lk|vk3՘yp0폛D9Z(~yLz!םGukΉ8|g?<[ʮ6.Fk*ZZa(9{EUjlb_͋>mEQ-0V*/2q%+V8w_Rl5Vhk3m/[=qo[ŕtۋ@<^ 8%Q3[-'؊Ql5c(7WHmq0r^+1#ퟑk#9e`J; v(/{߱PLڴ=2VxZq($ثh)7߆_''L^ [VJk#62KIK߿ o+Gz-ze0[H?{)_Ͳ^#}^/A~$`;1Sr]:;_ih$n\Xě.+Om({w0W-ye33'3t;^?Bt͂a['\[Q^yڞyyQW?OJ& OwE<_@|Σ녭\^[ҫ٫_^ʖ!/盁zo/Wx7cUU(@mL1Ƈϼwن;/0m3m(;)?G{9Fz<36B4+Λ=ڕf oeWkg^߫_)SbekyQm3K3Yp-Ed~~PS&ʦZ_Y]YɯWPj.ͭ7E/›6t?q7糘`%ު`-{:YQ^aZb~?QaV* {T]bWV!uaXt[t:ks Uf2:̆b!C ξu*O &:e[(La/^Y8 8RYF.e6ݛ oV+5vT;cSZڭwڢИ!c"ĪøFdXF/uG]x1_nT@,?Xx5qx=¿_|~{~#}=KMo'0uקZaXs b5B=/{R{GUغCu>j/ꈼo/P9o{&k$O׻~zfT[ޭpUyM5ʊƛ?kj׳R?SL58_/iØli0 Z>g⊟4u{76 ObUqQrOf^V6| 'Pk~'^UCbU>QF^*1X;z?-ÏTTmyU][%Lz3yI}u'2QxK|_q5)}t9^‹A?sw,6d>VQUܟZu; O]EQX܉uPQgR>gڙ[ʜѯNW/z5{Q_0qQbr3}i&e/~$qנ1"7pUlZzF}SqV|zc^]U⾯Lc6rk{ ow- *9ͧ䗽b0}#ez?:}t}?.zZK>L{wj1ng>~_T I)cWK]U1$:"a~b\y`<_**OUt a0h+Eqz8z[򾿜}?䀹/~`gT⽏zj{>h6ޗ7#ACF}pO|飰K/=A Oz8߿=053J謇^'ǯ<[*6=1(/cϨjLЌ6}8wgkw^p}/=J~R}^52%c~C#%U)NV[y =c[y U5Tm^}w|_Ct0yL{R8b{&wI{?@·}l={_~-Ylno)c}=u\gUX/C;UghOK&UI{+j-?Ϡ۞OWg{˿S[癝ZKzu7]tO{ORnnz?ٻǧ/O/Suռмf/;0[uƨU駨B+o>GauTgy uyTMgٳ7?aOSe _?V"]i;j8ƕO9q;'=A_->4\ !yZޯJ'>k?JWG~>ȏ Ϯ<g>/Q>H}Z^sT> Q/o]!}9 G|&~ȃ?Lyĕ?X.v$.|]ySL5߃_b߈Y9[>E]7˷)6W//y+=Y5,?Ns+O?v^eq{& '3DCg#U^5'>v1%>6)EP?qC!& g0'>#y W%;M?LNB'w= / B0q$gbs}Vyq$-USSDlbUQqU4?]gTyI\#+x[^Z/b; }d?^y9VeߦoO-/ОU}_t\u'<%yLh%ez\3LCU@Mǫ~ϫ_Uji˿2^[u͘h'CzS~˞&wO.k~>fYnK_[߅z5)'׫nKCXco֡=+ꋪWjh:o]z\mRqx_su@U՝Q] [b<]߭}o빚{xNZɨ)mUS}VW<›M}͔e}b|畁" q~ֿ_nl/ܓ7=˃[+MF=swiOy/n;G 7l?Q'y| M}X?pgy_TԚ)~[Orn߅;÷G}A7.d,냶Ο;qW W>_۟*ˑgw*?SyrC;߯!g/h/҇u鎇?[X S?u5߭27Eeoui_uovա;8Ο>1Uv :#(υ&ᾨK ŭ_GmCujCY^U;^3\[Nƣ>[+P.|yx ֝Ր=Iy~XgI{@ [|4N~$`◼20}<~[^[6]+~#鿼}]Mo쪣IW z~+pݏS;LoA{E{z+O3 s >Ą*~yhoUGfMvV}9"$#){;1y_;u_/~d]EG{o:}Q~x,?Sj;m)YIJ/|FNcퟧm=etb=p:#,/Wo˛.fML3d;~l߶2~3ޯ3>֧0N'Fn7/mK܏ޕ kC_-fL䵙ggZO?^*Iq~ģ~>EΌGR\}.ۥ/n4>{5b}I/kr?GWqATUGsC5>a}ZmKmz^tՠ7!m>+\_ɌB `x"&v< A-e}YUFCr?xu?/J~nm8r$w? `x^l37ݺ``~O6:Iu|/sԧo͟ԟ~<[w'C$eb~)30ob15.:+~fȂǍ='Ay_ߘe{٢|T19yg*k[~Uȃ:Sl/Myrͧ60ؗ*$k<ŔOWwaxz|/ʨ&#u;>_0A|}y)#<+|g^_odd'l_<֠7`9c`^Xbz;/}_`v '+*?B^0ewc<~|GL~}~N8#Lй'8uk q2NK?,"qX^J~oIJ?~'+fOUȟB֯!sK] Es .7YdЖynoN?4df᭨"a6~*)|Oxy<ް?*Œ/L+jn˰#Xcy{`>oXc "m_6 4mVAkYWmX@k?fRk֗Q~o5_Ն¾(T/g7|8_f(3QћGPI >tB1a_je{we}~1N}`\濉a'2,=Xe7<9?DGUf#}z%+ U{VU|0[%L~OxfV!;<W_EVi!6q}3|^]=Gq!MõNVXUxpCX'Xª}x/XG@KUyV?}_{R5?GiqWX*WPYETv(e /VA "_UPWEUm?Jx*Uj:-9_"FnUj>H˶<_UE>h/*+~0UUe<ߗH|џnnV._3 +? _^]|yV5g \*p!\x4_PZ=~?1 b?>UYi` Ey'jO<^~B8!001_;U«g?5?~(.OU|k0y__xM_U;狪ۣ?ߌ\OdГϧbMU5{EA"a}>IНŎf ?,7~Rj/ tXgT_pTG/l>?[}DKGXx'>9MEɭ B~P3nM{^Y?j37G|i? z_2p]fz;1 5>[C>=՘hOgl4?`fпsY;/;iN{zebjg=7o?u8z)81G&mYww/Ί_}Jx:;#RN}.zߺvhLL|q5A{b'pIk?NK.`/+yN{bnC8Opo6qڟ"A{T~R0oކ?PcH?,5#>=`Ȟ&JC8>ף_o?/|;xȴCGσo6}S}t=(i184H'HK C]=ߛA>'[^800|7O{T|fq:~g>S|0Mr&/~3ḇc>&g0ϛWuO`}e;O+o oƖ>m03^bP;m?7 bv|]yj|(j=Ww>zJ>fByqZw<,nW{ߧd2cs~y9xOMڗ+?yחw'/=^Iy+I'her20/]]ě|W~.nyw"p!dx[y?H.O{OڟtIaR}^M_Ia=և#|,G/U_/'N{q,n{#}'P?j\o&o<1}Ѿ-?/_+OZW=sqSWܩ+Wҏn~D%e}=>x$O-|XB/ϛn ·xA#z~s4?O_]4)t0~S~.z Jh\ԯq>b(3z}E}rעQ>z>O?,ѻE!KV=?ww+b8~-~~x^qOMLX'}N}y6 m_Zf}fXȓ=d]}%uG#Cy(G*7|OhӞ;T3q[8S_|Mcm~q;⑆ƌXOzJNz>O,ӪKz7Wn-7哫ߔ?걣ڿq~-Ŕ}`;Χ=,k|8o'Gl/Eυ!|6S=(ITo_(v{gnuSPtAX?)x$?Ǐf7Ox#ܼwN|~0WH[_utvxʮzx<_[oQ|wph?nַoޏsl#%[`G+?ڷ1_O>;oɫ=^ E0P0Ix^οC|v>fxfl{Ap~N`#{b/+?0Ojgv^/{OF|>2>GPܚ%^/qt1=^뵁#ϋf{a>-$Gi_I֣,Ww^w=`i}(~y8奰}t>p:omo;̟p=7Ϡ1=q=I?W+MO?|~)O+vwK<{GߝY~eA=j/ac+ޤ31NlBns7>n{ɁcW >x<1AxIz BGaăy?0~twbT7^Ab;Ob?wDR[~ CT?r=W97ܙ(,2?nOPT8~#ctW_{h=eʟ烅/_җ뿼?yj#}>?YKg?a~b+O<>~{QS%&?(58WwdzL`Gn'MOLo p#=vwNܵUxs=!ox%/'5ת?7o Gɫ||5X?Ÿq?|fHb~>2q92w uc"BzVYg{ !H'82N='F<읃߅pMzq=ċ_қ  )qwO(Q|_~TDo%tVګ]n0'#'t_1P,̍x^3L)sZ^廽>{2>IV8?dⲁec_ml_#^׺ 87$z9>ܯ\ 1~49|=lj!83n7g0?KyDQ9=ƙMWe抴t| mgt,M9sg̓9z2W2'Y)&'qe:v{|8/~>s7ɀAWw0[1X́v5=CqXF}>Q٤q{O J5Y`ޤ-4gny)=ktpֹ1I|[cr|7k4T/8 =~֬lAd̉7aM<$#fL-¢uI/=r t% ~?W`2vh<o9ljJ:GJ2lg&%?\h=C4lkz9 k?OB ^s 29X58Cx%s,QG7>ϚP!Ask^XBو~~&ʜf *ۆҨ4NEq[6kѣr`/ʚgE趙x?V ՔsPN`1uf ^CXܚ|}FfMRm5 ExQS f pMU׿W ^Dn~s$šrtQ0}[1?QUg?T oM5քs 8v{ھt=5n8U*zc^C5\ wjztF%5u~QΫĕ5c)Wo451C`3 9`۰Y[:ZYom753uq5ɏ?v;-[ Vn# oyce7@_krG]÷ c_:S?- hʐCYۋۼoDf `m}DgcEwMe̿E9R0YOPFkcwԯ׉C5oQMWF|VR38)O(_&z/O(_z<-a?qMI~ڤ(8HT;⏩,|HIjNʧ$śg0MNKU6טyXU%K5峀S~/G>9y_qCARr=%MfliYe3KH%=WgH|8^ka|UyF!M_P>ϻ+|L?(4EoԯJyb_ToI/퓖 s>{<^>/z Ր}ߠ~5IZpC!CƁoULѝ6 )XO}h ?O~E=&+cPd}݂bY_I>x~k=> ܼ_ߛkLAW'sgP(px~ 䳗ǝs!ZS?G}Y9x=c\bb88Z x+ר~~5S=-LJ&۔}!>&lMԗ>{NZhAYz?5  ~WoMWoe_m{[O6σ;^mRBog>\&D}cMиWÚyI|)G8 zlN F=45h!qU=3Y5DUUrCEӫ5xTZH8>4㍷g~xIAg7 ɴKV!u 7M'%d` ;WR LJ"LBAnykF|U:oqnkMLV8㼚_8:m+΅ՄCg;P'$)Eۿ?BGBjJM =S d|lU|ЊTe薄E-šViQ*l++I V^閑x&*jU$%J VBg.Rq">'8jUʹd#);.z,?r]W?+ ;"VuH)% %q= /Ux(<^4U>̐ǫQ5;ZV–4]}%u3_2j=yOE;JŊs%"jT+ߕ"=_RU%$ +j*,vt24 ARY=4?aa@rF>l8)qiY7s9EBF#ld6'J4F4Ufrlpwciwp_ĭExY_DͷwPͧT&? AE61}|e5w( UzaPCH w1kT@}TB?L'\,f'_Ȫ<Чŕ:8kfwP+\?y?G :^bv0Y4ߍn?e)Lq)?i\/=)1`T3oL~MtFaGKzxzyLއN-QV4ot?@?/'6g=0PYA(P^I:Mpi9w QfW焐 ʎYQZzc9|Sg%([_/ػ0iE-'4ྡ'z/T=0*(13s!GzF5U@%*peo <Mzu!fslJU:O}r{Byx %wyeڪ|eA=n۳9N?o/Jh 2 ^f3P|dZ3G-Ό.eͻQ˙'(HGKT\*=b:DXCLA̐ф z b^3bD}\flڋOQ`}諁ofBq$,͉BSw3JQ>Z2S+ &ԓwHOVE?DltL +߿'g#c& ^̨(t&P/agjf|;29 Qd/'Wց>DqTTL&O=7ǙYIf.P|yfª2jo։jo)&infs!<_PA( GVʚ(Ԓ2Q3sQz~9e>P33\ ۃTU@ Ge>Vg2NPՙd+39 s [|2.&L|qT~L~nfr\ayG%"39wPN5P.bXuA=$*53 \" QIB&}~_(<4SN\su< I>84n PHBdJ5X{<@ڟQ3a+*_T&(b5AQ3_/Ft˷}`󁬧_Py/LmW@-TK|X g\Y_(`_o@7FJt0 Z<QğV'k•WSYfJ'<1PpO?54 u{@d3p@Ο.L;_y SQ r\|Vؓ׋Pb>.9WQr1 /=ekv l =Q\u3>e~֊|';aO{zooʶuGB>f 9|/3oPYxw7XxO*-~+ﰏʰ>c=U.Td#'ʢ?C{X_'}W-Mfފf&VD_?Ca%`9fnTxV`?/fOe~~*̐?J2_*ɴGqGƊ<ͬX/CA?3?ba+>p)9oWfzן}Z/b_P̄r*IQq冃R"+HLVDC~.ftL\וA V!\ԮT'_wd])PNݾu}8?uKoɗbV\tm_*d-'uaJn߅Z^*\W2I aԥ2]f.̈́չ.&q*#ܩTDt03k?&;~+/sis̝7#ꩤq]y{*!dx4#J\ו4LKǛL0a_1FOi}W}+yQJZoTdJ'D'GdPKfg1:-ևx|}=01^/s!{R?[<_b]˩/?w+g~G׻cbM3z:?盙}+G{?q~;ϛikN |?O_Ϳ t<[?UM%cfCraTIj̜T~}T~eþy'ʺX/}؇v_㾬4A%kfݏ> e,OA oG?VKe!*<_{RQg?T70f{&yvW[֟Y}ϵ?Y3*|~T/Ts%=۞?\y~3|g0<_q}Y|{LוHoW.܅\~<*7Q&u!}m̯xFNa?~[oOUF C'%%Cz~יLWyZ̗fin7`>ؾ_Td*-%?^k`t#Dw7-7g_bz# {c|x:SH.ٳ)|Rq% *%ތ7+WJg%a14_Zȹ|<$a> e'+Q8bGc>~ɓf-oC\J2'+3RY Y7!ez=ɔ}VbM2\rn?~_N(+I.OUV܏+ӨRI +o*y$xJ'+]k*c|oxʣ{?̺J~<a̗W+r=5|a?i//wBN ׫m߅}֛|{6t^㋪Z0xq\O{_IZ\w^~* n4;!oɍw/͇m|N,L{x?_>y򤿏4^f'?ϞY3ݷ^va~Oc8>#ڮﳼO*e~A7߶8Ruc=aBA(z|m+խ(wmѴ7ە^ S}}UL]goOm|eioN_ˆ<8 mq<Of~N!ەY菁h'+a~Z/1>c·S9‘3x%J?y~9|;_ay^8įsM|;3Ǖe|o/MtO4ߕc|`_gM3ejS=Q.O3+= _Ÿ F9=PQI#߇luXp3? Ol{Noooo[xaWz<;x\xh_/~;x5:u[?]u7ZnM?F=\?~bV~/xOrZ}Nkw6xI+/}||o2uϗdlk*޽>s,|;ߓ'߳~d1" Y]IUʝs!a*z>,WS潚ՙ+Y?KGcOA~|5LUA{zlv\Ec9ݶ_|n]}%߬5wk~ 89JZw>2_ uD7ISU8z|__]ULmϥ2u 5[se4kO7W25k?T]Np'[|=ȯ5Re"|?} bG,W+k)\5ɕ#l 7zHZ3X_F_Um7a*4A_ cG{T嗪*VuVmϖj*9aS^ﺿ}W7ۯL* Y䩒 G HU⠑!kog}ʏsv[_ldS[钿ڊ z%Q'| [Yɟ"ӧyT;(znPO|_~zKt> [Sc|hbi |o9yjZ Mp,q?|G"Q4UG0]U\p"k=U'GhhH8ğ+é_P5ݗcy_I | 7֕*ny}?TR>8 ١(d<H|\[W~Wo|Xwu?~*擪pdlH/VT>T ҿᘅ!z| O W >q\Y'T߸5 ?s9ųC?>~f\ y=7LC',>=5\%738>c>P񕉟A@௎1@cтI×F\eQZۮx||,e:Dsvdv0u~ ~j;ZmuŸ̏*>f>_~~UZ%?M/>Wifx3s0@wXG>Z2ƈ2 kA#BK8Eg(CR 8q<:Xi'"#c 1.>hED{ jź ڼR7exG-0|T: ,e:ێڿᰧ} '74 u1#vt`OqPf"_Uy8JEP:ЀK3aq{,H։ G`J.0b! 2(qDh=A[E:qDxRq} h 1tuet1nuQƵ;~ކCD4,J{g1C{W~/<" ̿Y/pW+*s v6!dեVeCe'#. d W#a0Q2*׷u+b$0.lr:iVG]%cŸ34lfxl11bAςE,Jw#t_1X!i=cձ%"Є@fsՎ1 IcQN)Ø9~+Z0xza|Q!+"{<HN C;~2,C"Culqf]sTh u5'UmFU %,ʳ8d1l]7,~]upu; [z2XL{e1{/>N՛.[J8SNgUh?ߓCn[[4PIfM;[,o͐~AM&~ddɺ"`TR*ߎG_Oϒ=|}jr}ﴽ=?hwpuẺFN|99LJG|<eg@/QA.2y^0\}yywZGh?Ӣm>]TxGřs` h諿0wNs6T7-|8y+ *o/N`ho,mJXſCc F;B i-f`peioB{4[sK.`# x?1gjŜ]dla!b 8<-P!nkbGQ':/xr*yq7j{r5kka?!jmq.lڍC'WЫ[z =YȌKSi{Jߓ^tĝ9;\C~&534S[&=O^Cl1kS\o?q{ڲ|dokbn/vi/W:^\ygJ8OIU yos:;7N] s9ǫ|[흗=I6xYi*{RSdU6UMΉCԓs:OV8紉 ҖO;[.'2+asN!ĬdU fTiB7ODg-wГ;cG.dj#H ?O֞.f֗ЬOW6pO0Fq$RPTժ䁍ɺF۰}ӏͲlD*z]۟rޯJWZ5Yag%67j̕"?D-ˏu:!~"Y6[yX!jF|o?'/|S*ԋ'S$L]?JBUYLn`+ϡ3ÓcS[D_C$,i dk:/PL-Mcox% _lVSλ{9_?3epuE+W4{^Aȟx;72XCD "{?!wQ}.ן Zo81'6ղ]3d__j عI\ulb;s/{ B!y8]NGX=}rR=ioc~,)OOc8U5B&Ղ?"i!/uLY-'(mɯ#-&*[~򦽌@^E3moNEuɱjO5@XOq2eQa)Xwbd}rK`,J~@߹(>YرcC2+~ζ7Nssy RMUp"ݬAԾ7W1YiمS Ko<߾T7 TPZ󱳂}aZ53y;-nOȕvπ7jv8:jׇGI%"xLDi߬eRǩ&@ =3ic<䯿}(^Eֈ,GRAU{}m_TenMWll)p\ooltY{Ruhu-*eF<2nso{؞֘(@1G}jx _l-/n;=< *GyXOyaKXVGP0.{983bO[ QpKfޟ*y?05slӗ 6=ZϕmQo_uXv?!'ko~u4k}́H`UfraPk=Idk4'inFmGo l ?y~zP>9c-Rbr ޓ:ˇΟ6ǜ!ˣs\y_K=yۊzy(3y{dmyq8>~`xfh1=ryeye<ߧ8տHePVb Ps:?yo=mY;6zjS{<weh}!ye=zOSZsDҾ:/QoW.9F=#x+uέ}[Dxd&9?Ú ?! L'y ^,r ܓ Dv秚b@@@9I ;H=~Qw:áݲN=B#k|SÏ5"O#<|#nj:/4Y7*rO1:;>q=#'2=G|'_Y5'λ.or'o%k$9ȜIO#/k4-5~x_{ňV~?XR6&/lt|$_I Yk"334L簎 QdЋ[?#oNP?>kJ4̰Ku<hEj6@FN޸FÙUnOKj>B!y >NЁ! An)2²ҟB&E!,g5vYF䋼-q{؜Bdl&tWb㮓 }6pt{<$L6Zڣ8/O#u,}fJF4{`TWOfaDui6lcĪ4b,$&)Ft6W#8uzONBv͈jm/eQ{]~l2"O#uY6X"j|ÆP*;Y_`P{O{D{Rz~i8ߵc#XUX ReyF~]6U3b#rwۿo"ziX9Ql%f7S'[_";'a9ևkQ,Oop.\|8NYaǡO>n#H[Үr{}鞉x<|?~yΧq1l6#+/KP|  r{_/ Pp:mA*(c~Ѹ}q8`e$G!jX!jz5&y? | wb޿dzSFxe_pozTE y6:CR0[E60 ɧsg4S''otx萲'0 !{|ST˱9V.s҈Bt{:Kos<s*Q\жitG@'mP1%yl? qN~w:jh]8-gcUq4qP4x>4G5~QeȓP425'۲TQ% ]>g0=@c6ca=oa, u|?oږ5}̠CY`O\2x_3yY_V_T@7o~K㐗_ |v.S|^3;gO|}3|n^>Q[gr,yae9Io he.ϓUO)܏~|>?Kg=gԽ;>g4d?7|xk ECgX|AOe5 tOGE>+y^XgTS]4ꈃ˜zAT]ȸOݛ%g_?Rr=!|^ù|B.4x(l__Ps+n|Nf>cwo$feX(<([3_E1VQFcd?y#3$Cq]>wGKFWm(푬{} BϹLlXI_,ο Mϻ p.x>ү)9A'3(=g<w{T5Tl'zdz6}G7+ Hzic7훾&Uo[V^6{CZЍUՕZc_ gp}ZbMQKXsi-ϗza s %37h VVy\QSlj󡥘3saKq`W58UפwHÖWBZp[)w]W$/?fc\JGKN,+5M*dʑΑՌ|O[qY{4BE]/OGޚC:MVz}*/t0d/.&:HvS]%?7 @/RmkwFe0RPm"GtsȦ);n+QlBޛG^inmEܔD۫ W4ȧٞ"`)8偌:HٶZs|*1ZBiloo륜~+~f`׈r"E42IlG^yr?({5~RM ^RW+/ƥ,Mf* lcU4\\$h*Qi$0>~qi~wu`Uǘ@X<pfy'3g[W5s/w ґ+7&J\$\iW*^.yEق!TY^fYQ"QE־nM1c;n{&QQͧ0\#g&Q;nR>mO>훯yZVT~m%#eM5ZA\ ϣ^A W,B):t{}?=exeR*QIg8R΅Tu<_ 8Gg)L~86~KQ3W/-ˇ34 'O3bUp3C{豹/ldow˕"vMT^=߰ocȉ_f_n^|{k+7WGgj?Ux^Zgx`?jz'*{iSMǰ=e(*n4>T[|٫X^/|}U̝>Ʌ@_T><ӪCn@UcO~\>?\#_y]Y^?xq՟=t?y ;|4BAwnΥ+_}~-bm2}c/f.c*j4[kyesE]7S۲žNĂyվaqn8⺊V6upk׸`Ĺ_^eyŪlw{-qi8vugskQҹA}am c% 88Y _ׅP{䑕2_qU<3YÐYh}1Z9'9[Lj=)y?Rf E1oX`oHpsw LX73a6Nb"9f9x䇙I,"$\"HjݹQWOrŜbLZ WDh㘷@;CWzzGc\Dƞ>lz[ۊ;Z'3YI1r37q '17 c0"?GTRO"fAc%k;+f-X[]@Rr{Dak ^\(f|,oXL#:Tz`Un7~C{aVX`zDk6(qgP5d?&דGXoV+ SO:F-P]tǷ*9+n4TJrُ\s.g +{i-h…쇫p/k*RU95X=YZ?\%|%LjS哯kJ>! ?jf8Z1`b̪m8Gt,s!{W[T`Yi=~>,8"KCp/K~i8wן5*Z/qwq&3rf>˲m;3ko砐jޟr8ў29!/dtU1FLs;grg@wN_~:zߢ/vc?b+̦Oxz~ѝ̙]>_y2QޱDIOkOP=gʹo6/2JW}>ߣIOn^d =m;Ne}s!s_pV@}x#Ǘ+m㬾}H.|:]dYY9cޔg?Z΂|BGlgƾ36VC<[!;xV,|k;KzŶט A{Y/XR?!7tμn"fFx Y|t ֕䯾,Fues̤O{`v>VHkõ9̀]'og k[%#d4ɲjWLۅJtf. UT_/ r?Ui;KC*SJ -?  ݼ[=~|okG:YQ}?pΐ0G6! rѰЌofkmG1k cvQjl:+f[!^x'mFql;@5ӷ끊1nϯ[dÇd\ɨ7Jyr2CNJ)OuO>2fǸ c-59i(6Vd 1̸8~mNT:W߶qՋeY?ߴh9!ul}cubt;Ebǘ_a _juJ3-*$#KR+n%e W2|= ?4~~'O{)jX=^uЎWp^L?/?^O{P,ygu1S`~br} VD'ʴzWسTEkݨH8Sr ƨ)z+RO)9zVC҈szg+ԍd:1ץ8^=';1?ο"v'ׯY(ap9ѧf{y}f?C-FC-2- ,OVm({QpjU~q}K8u=d- O䯮;dfwQ1jzj]亵`ԪCkhP9ɪ Xh_5o*0ݿId.'8#rd1rÆv#9qfqxE6UƏf-r7NǼ:tiZl֘y98dviGʖ0!dv*:4,qNS_hhZe{gz +onC6yę!%ާlA\EGsgull[[,l['mx_;nJYۆNm=C]Srݿsdy|7_y<Ȍl}X}K6%;{/;r]#޳+lϥS/[ 7q+k\8F`O0܊Bđ_-]}V^fc:ș{+:߃-yr8ӟ+[.{goG/ߝ<eq 3uN4b^Ȫ^0d Y>s}br w2^VӦ?9[nZS~NȮ[>eL뛹~NG~3{ʫNP{=@gmw6p#-'wNa+"f7؜* c/!N#Xi`O/ĖW~@1܀Mζ@QyOk?eO+G"G'=~fYjv ɕ ),m Gr%M݋n'C)bGy*;f/<=E̫'Vg/DO3үzW;+-t鉴ֱA1ymNU5 $U!m{bWUUu>v]xi=6c#Ml=gUCsvl?p 6!Yx#?s^\u'XmTS;TIuF7 :<k{J9`E~u}gګِ穒2xvf /;KLg{}ꏼ{<.^i8y'lA{9np+>*=Ur? ^#Mg{HqAS7up>oX?죘 ȶ8 pztvcx\ゲNav/k=a8?هJ]So| x\>bw+Bjr]ߜ|ݟrwBz|XA=H/Kf7^N# E\>&KuO{;ܧ9NOP6ηzٰ'=֏sr㼬U=5(VYy?hXs.:I!!/MzOo IOnnOGaqE8 ʳ]41GMNegfg[o;Z/9cq\#4qclԢƱRW\ \<ޘ?76:cԌa!S+ʼn\ƐǷ^Y2BF^UP|r~! 7վcי ~K!=ĥ문JY=@_!Ov,=ܱt ϦJƕ#L dO5H}a"NdJlVUUu=u~ i[Yy$OnL5y^=UA&W铋ohDRL&!">9;5Й JW'6Ův,'?{Q4Ue?yǥ2#v]~7GsJu=gw=qx+=eAȔu3//e*p(o:ܢ+!>Ik|Tkw4o,ԫL'{)|;9tw飁Ƅ8:1;TILL{#'@[$ǩN|Er$]x3#q4Zdq8B"Y Q1USyE:-,^Cȴ#La_d_;'zŠM Yɲ918!], z A%w#*z$+O $ R~tG]u?UE;lUyzD~|rVA.;|h !85['.9N=ņ1<Ӿ^ALzCdNqb1zN̴UurR"C }>V' ǧ'NOU51U5WAf=a:>=ߜH}ɶk!fL'/G0)Pm^ǐ8,ƣԗs=|upm뵁 uUYR7pv+\8#C6fa9~n7+1w v]6pCKU8\*mwn1&)I:?J.n+9. I^Ywm+󠃏ro+H7FJr{ 铱Ojq;l!{7 nwuђ?y}^I.U1j:TjZ,w^U>rF16O~@W'<z>)~iUouclД(d``^/ySY}ؿk*|وpOU|'~}O;>d؋464ۋfG<5t-~%jVU)UJy}JW*0PUS;x[ok{w /WLE+la0?}*Rvo|^>(u{w(aC0\E{{꡿T?JMv.ǕŗixЮ&c$[ qsm/*>׋@`!b{K$eWloň_{Yu|'D0^jab;S\G #@OvnFEM#($/#r'p?%o#Vjk`MS/OU>>pk|,CoO\7ra_F,O+ψ$b8Flduo1\\.DQwMV쟨WoeKD⢯zf9e{"&O_+(=畒.؛Z~|+a[>yn"n&۟RLX 5$Ⱥ^g]lSMn2TC22??1C`]WI_=~_>}U[cM; 0Nb}ޕy4z[Hʻ*È+w9wW&_2ag#yp)?j [?+WO7W[BQy$W~I׻|Yo:OǓ'ZNEr=jg=?^^6%}![:۾|~#~^-`pXKM>x_>/doI_&CM5b[_/[D5"W>OX,WQԗ؊w=⯬ }zO2ۈ6#OvT3B,Xt 7_^@|,GUhiU2! xH]FԴSu=O瓙lMrQ{>L=Do#Q_ yw^'~2#CB|'ӈ]?A21gi~J|EG Y2Yp?95sl`~6;%r=@0|@ϕy F |#b(7%5JIw;yDz˲a:aOA=?o U.霰rW'ި $6ާ+k{RC)%o?{W2C^8#TOHhϴ~^_<ޮ3B=y xzM_.zG|quM Bjg> 3e)KgB`?"Eꌯsߏwe9TuRbi3^io胬tW+?d?({~yrxOP]@K qD>:O@U_f)8LW=z<3Vxj;?#3wS<2}?w!;9>gƣ(ߩ_}#93?V">Wkf gTTc~2̮w 9cW&|1O>?_ģld3ߊ$/y_u.w~WϾy>%tYAB_ۯe% 鯯}W>,odO?ß߾x/7NmoWڣ /p4BWim_e=z۩ *7N'ɫ*wsd1>=*oXa47=q忍%KsOmu=xr]cGn_F5^]gP/6bzn@c_³į^]~C'X0 S|*;Ǯ{*C1ۣJ7Hๅ߂ ^3Fg}9^eG!@x=^o'ew>> |[,'Y>f)'gC=߆MKEuu&>x h_6dg^`Yx8\$и<-+ٿ1Pͳְ(#ԐZwHf J'gܺOEvGB>Y'HV4^S/{"yxׇ#{rV}",+%AO#wO譆-Oud y~\m[k{ȕ߰+{O5͊WkS)a֫+o-o\n c{7GGWG+8 5(A*GFK@6λ~, ;nmא||+[O{w/p#8Sr4`]/m?Z竽{ 瓬ÍߤK|vⰷt >p]D|}_|ao o9fS 0M֨ZByzNnC{ foZݟuO4{ΰ7V>u;iy޴6} rhso86 7KQx-',;/G<]:qSWw~g^Įbb~'؟jACI>f3v1D bEۈ $ Den1m+{ۧS~yc{H<4tz=Oܮ-u7Ɯj=]4UߗvSA)<(A׌ tc YE8̔;~-"bL VBU "_=8cjUʡ(Z}ϫp)o?!m+"iƴ; X p&f)~YW;JK.H.Xkwǫxjt33 R8{<[+ɞ~GⲴ XIR~KvRUtp8KrclB@e@%Fn|{4p]q4(KVzg/Y@^5t+2OLRʗ7^|! ݥwdm:``|Ѩ4.60,˱P6f}z<0bƇt)P08|~U05jX]p|tdg.cd6WIvy&׌=a,IJ: #f2#!QBwBr5RPtGޒkg q7ESRohvC~f4IM:y|qPk4CJNO!PRLIoO_kSI * d)dK T}Ӈ*iPW%NLǰC>Q$2|2rn(dY Gْ;srl)@ێyL{ŭ ヅ}MClV%In,Mw?w7[B7/h=O1bN&,<>mnMacf׆ ˚(1^$h GaqcGu}1ɜaK(Dl(40'f+]N#<('fPWt of.C!t*H=nwgO,zJGh\gl;:OcqHéGy1ˑ'$"213pSC"*K|8#ٿ@ܣSK1`1[l "ڙ}2CopE᜚"S vOe]% xƓz691f{)kTGg`xW֯ˑ^y{ƟxX ;G#mhS)Xwh<ѰR/q8#)0;.fJ|^U&|Y __-4?AD 3j/&QD||[.OSgNx!Կ:>p4Wg=OJxHjќ RT*aN}?Q?é1"Μ of*KLE"s1ȵp2Y +;"qۑ=*zJM7c Rz eV&T6![0Ӂ ̝SaQ ""vSpޞkJ-o&^~ WěD^d$V>]ȯiKjd$9~AWSLKghi1PЩbmlݤR*)纩N~W7f&qS"~;3rp(B=:z>3d*"󦞍#\T۸_N~N"3F|н9 yq#1m tKIӪWj+ηYSDNJ8HlTRgy?!ow%ѻ1>Lv{]YoĆRrNDUo2=.'Q][!$~s?މ7bIQy|دԞө92X&2q ]kƇDmaB?ʓKx˿Ěx2?m B^$᰼DD|RC!Q5Ab9嗹>L3jN"x:{Ndb|$F|Q:5H==ij}$OS1?;|ȌR"yCKDlģ󿒈0t_L1Y/"~MFQ;뛖OH,rB=|'CCM6g~ a}g2px>W}9F{ΗC n.ԂN_TN} q( ϟ{x+oL=z 1  -edn}Lgaz0dWw>O 偮@v/0(Ϸ~y}$/  oV]]lo4ez[ƻ=1 E^y^ W9Kߏ|_W(ĤO+I5q}~Ib>|_{w_okyux󛖤>,qv97aKrџ,~+S1(7=|fFB!Nf(Pq "Aޏrc}y{fm0v>5~_-\SߴپG;eo>!}9޼3␸\/iO08;>3(t*qRW*\N<XbU0qc/'L"M"' ? o( )߇rƙulc[mǾ*S^k=NmSzb"}6ZїOmayG&FǠ{xU|ygXIql%"џ1}gdh5~=ļ^As}" QL;%^_ګп~YO^_g=ؾB} 8S߶)4/S^j^O*~/?p{O*/t|䡲O1gdh֕6/?ӧG5Gr7%.m_ =`kP?٪Mx8z/P>mO\*ZGᇤ^~֯w&i!yYvK&hϋv+fR_3<ԧgٞr)>l1>_n[cۦNu?ϛ7z5o$hSbX90U=MCi(6}??Zz߮opl?)5&h֯y{6?آzo4ۯ=S oyХU]d-OW$ 춿%N_Ϧ2"-kU]q >/O_Iytޏ7ǣ%?pmgɓ%.[~S.?C.\oLSsrAp'.Zt~E ˅i,)\ ?B##&B,-O*$~fI.WT'İ{E=j U `Hl>j{X')|z];)QqTꋋ;BZ&9ߐk ~Sl߬+SSy0;m,=_xbB}eS((s=ػ̧=/߿hx<+C6nɅb}%FeEL~O˿أdUXDMS_[pqf8HR&j.o)g_-8>,L= 3K{ ļOgJܳ<4|w> ?0" <4fC?/ Q~XƒfGA;^a?`H WUp`p ?]<@GT1n.l!OׄVN '}~`lܯx CZY[-~~PoW~>>gCqY]cdž> ;9=?b-̿&\oR}П71>z|`0wx~.*g)?mb<]?Maƒr9Y8/3q/ 4Ų_U>Y~{{!X i}5.ٞ߳[^/'6 p⥱/)ʌʗKD[Y_-ΞlՅd8U/vZE \NlZsrb/8F1Q>YOg}=-wxܟq9qߥnK?ɜy|ds.(:}K?8RrF-跀9~3hac?\\_~N̉x(7:f"(#M⍲~7ˉGqLećCyc~NQ~\P?~O8۪?ĬoA%Gg-`%q'O󼝢:E=1/3'ѭ! ~B'b/&puKQD99x)|ޯ'1DQ8gns"q̘SpF}SU@$`c t1cHNܲB}ٞC' ]18(oH0=>}_L3o(-b<q8CmXOCw׸?_91w񼜔) &w}y^O,LCb/GCAG\OYY8#>otSa0|y>cs)3\?88,zGC1')oO!k< $pn8WFayM%JT:I<~G<{pmo$|CTz߇b1z1e #Pٞw<p|xvc~Kǧ`$qΟKGG KHb_U?㵼Ru,%,\ߡ򠼽.nOG}\>^<O/IPD /e}{uI`6v>|t_Oe9/A}ŮDါ~U><~(&߾_9Uz<7zw1I#]Ҫ}}_ \‰Ff_QpI6 $_yfޗ)bұ\{}H`}Ƿ?-wxV?=7C=\?;p1&ޞCqÉWTYSs<_;EO zP5Mʖ^EYp&s!}%ݖߣs~U'QL*W4^ƩC S}`|pc} X6KM1I[btj<Sm,% WF⦅Wu~">:D`I}qM}>lN2P})O1c9k`½Gxxz0cazǸR^̣T?Y}}a|;m^^%OgK؟眯g{>kS'B`OX>վ`/ ={>dbC+ʧۀxxy''޲*{y9k}[=lHxۦ}n})뿛wSgKm]J)Y~n 饺Ayz{&fJ\d+Czc<~1(>g4SW Yuڂ/Dzg=̘'xL_Ul?U~[y?ss]V=ɯQы3Lmy9+,13"kyK>1ah;: O]|_D pᅰ[JXAw܇X]^HQ| w3n"KH9|3҈7 |so*y~D{~$^~ﻞ>R xRWW3s7Cg?z^~ugjULg|I z^w=y0Т;``26Vx<ģ"u t4,6'tj@xc{7\`e2~H6Lx;5_=3/o-_r_Y,?#~e|0?y|dsF-/ߝ{?xay~e{C{+|5%;?RϽl0<\? W_;3ut|o0$~Wş8pz4׸~OO0OAV VxjdTp4~ t+k&?_aI/Y]㫫o? u}k< ]xu㱈˷X=oʋ%wg_)(b>)3Y'_d|| =3!Gy.>1ؿ1,(w`.>O2c]O7f<륊參?b4aCfgf.ĪO/&$>.?x}7o!1w+s9/>%LM ~a~sƕ|G@ޡx.~[UϷ_'V3k?IMnnuxʏ;z</Ci ~Gf}GeyW%s,TL$y&?ǯ~S6]|҃ QWw=,00+hT? ҆Byk(?ps8to1Med ? 'm7A9)|ч7lq>į C\[yeR#\ؙW G-_p a| _&n/s|,CNG>S׉g\߃ļxg||ĹӍS::swH'8wiCyʭoA~S~򔷇N=3N8 Y#ڟ|X.~R&ixi'ʼ-D9$?n+e &)s\xES$ڼn1e: Հ?=T]~4G9d(O ҭ_dlߟ S&7)8>Zr /Iŷ7o^Ofs}LfNGnXl9`oOƳN񛂈|<=oU꟧k$a zv\=7O8x~Osr|E{+guʿӱ-]Ϫ3FX!__٩?qFJb|SY@Mg>x 'oCP`p|ߋaV'׬c9G>}2Oů8x>:X w*z^^Ӳjgo#!x KwcP_='~vsߙΩܵ?y?<|{&x$cy[mxşǘ~}:'تO|_Ou r^/r-}X2w?D3χO%OXl_GsOSR`ba/ |oޖ! g*<3\.|?OR;a7=_>,1HX?S-ЍV>&^uK|1#-~2t?}c b_yF9 0Q_w"xܿ_~~D}d9 S+QY|Bs$*J܍7YIٜ/+~TXJ7QO|Wh~a>b1sKo>ϤcF|TY?U/wJefi;Nqݘ/\{&KKGߋήe0ص g1{e;wvz<'2޸=ھ+s^,Yh<Ɐ6?!б}NƟ~嘯A|̧vx>kGgt:~kT| ȐE#*#>ě\*|nE7ɜB|wgq8q8z>+35g1b1T\AmxO 7|3x0OzOwHt{[Կ-'}u@ϋ;?||<ៀWo%<`>p}G|oDl=剧f5A+.u8Kd-q02η}`x6 @af)_300C~WG:{81 p_:3DgZς((C/a_o81Q}UL U?| y)"w[ۖZjٹro7\Km a0B$fOXsR$J-~cQUS ^7ة{w<&<~>-/LU?r܇8w:~$\*$̯(Š=c5ftXnW\"mɏV shڂJ`-wYFyA\sq􁰦<ƚ% -oO q:ٲ`}j5$.z>p'۞hڎ;D!7WLJRh%ZxZsM[ o/.[`K Lu}_Xc(=K??@Yp HhfK"bS߲ŧaH\E}a^q+4XToL呉yEZxXy~-yt7a.Y$N)w,JȬ^UaJ7vu-@(]' -CʬVD@hĿ G~ R1v΁>89!R[S2ora\|~Gæ$gK B7 f@PB7wᯀh)`ӎާ@Ո^i`:Bpf+`:YX1r;ΥU}8"jvՄco*UP_5uoAlCʀw Dz_?j>Y U-RNeO-'9rkp4̳r`meG%^ Dl7_A8[b61t9BSOeI \zxaJwC:ثpi+S/9 pVн,;*6nov> Vc&~]b0UY}PmVV4ſg#f6,_0[,? ap2;RsΐcYeuEy֡URU)EG/r`|]8UqVq0T- XGi_WXc'mߵbjp=b+!;FVZy~t6;9M؂ڡʰ+!~g{1 E˓0.lGTAwg;&a9~L)w;??:|@ԕz;Y[Q>F|tr)N 1)5Vc޳~;)]K'`9|tWڶ}-LeNTGdFG.w~'^^x{[>>BPfi =c뺖qy!6zAYi#F܄+"~}j^巿xЁLrt|EQ)O*8 <b![}G۝毻'1 xKfgh#9.@;<2l070%C+]$ynfW h-xrO7IR#+"ThPҧi688V zXc+"&*݆ 㬇Mp"l§fP^a 8Ks(9#vtCܿ6PEfew'73zpC#mQscn;Io8ZQ e# ?5W9jnxFifo[{ pWjuLaC~㊚_/;Aڸ`J^t[\mԘO-9X}khjZ-*wCzaiv򒟗[-ܹN45UʁZz(_vi([nL0s.o-cM8 ~8E f ʔ9}wLKR6"׋o3_V7b,=л?!V)3heʋnԫjH.yj,/ZΠļU(S°0<cZE8*Է)DTs f` Aؕ7).fx;!y3i=e d稅L@ɝg lQׂF>(?c&0.xMAZy%܀-u>?#*Y>ĕe|,1pWCDy8<)|8{;ݟWݟ=}u8?އߨ}?ͽw vLU% 64l7[[ c=;Ej)_VZ ʘaBIMi5 $Op<oY)q37t/Pi*۫ .CQcHb&Nn_,טyqQc 2#'sfhCar%x)ialmU0kA`?fWWip4C_F8mVܡ&rbAc5JRjp+|pF?_@[~8K~c:)wFopsaAL×B70S{AZvviah<`L3?p)U)mkRlq%.9GB4C*=ۣ4qd+*=!+#oG<4%K:?7'|H3q[0EGbqFF)bڅ,s2QS; 1L8;ZdLJǦ=9N8q+\=l$;ŮPRNcC ~T $[:o x#{\/zs#H\)H8Ued`x:*ɄH@]:tdeO@Sd졟(F &{ Gj^fL(=s?]BYZզޗjQ_.Mn[moO:kI_uokJ0 NQδtG35t?5L-"\_k.R$#U[Pg|}R*nP;$ImM^=hj֮^%NMcWr{-^ [˱m]-YGTՙbCuHBbJ ]w7:-:E?}bnx$q-Z4zmꭵ[xKϦYE Q82U 60P~=An5 {yU&i*m~V|)L& I|?_G MtH/_|X/->6e8䠸?p㷽BY1?c|<'t9޿$U~)brS*X`;P(<7׆Nu_B&_w@W5҉jҸ=76SQQ% n@9d-TA}Vǣ8Y *H3<p\6tB86$!бM*#AmGb`yLXPW:[g:)09+w".{Ms8RxkQ&Kn- E ybUZ],гrYWLl K)hM\_n .~mm % yEgj>.[ r&d2~P=Em íрUX |m8c Ž-HZdm9o/oCx՟ncQy/Tk[gr7 K, < %.j]L\SھgN>+agg{oD@=?Aj>'d &fȶ9;a b2+ rs7% 1~Qe! ɼ2GaMEb5|S$4 :%L0$N:Ѻ\Z8#1~4əBwz䙗0;D#QA8U>VI*:cЄ;OtgzۮxK;㐫&dF#* kR,O%@z1% /锨*0V[eD8=$cλĔ`*}8x@AhQbJ'xƫ<_7joת<:Qa҈ޣT>҉J vļ1!Lex9qXO9q0 0t!qX.~?am(m}p7Ԃz5k0O1k|?} ƃXlpcwq&7Bcf=7KLyxC$ok>C91߀ԉͻ}P8.y+ \ih8 mt]]58oX 5LN ϣذdTJ>'#>6NӚ wadЇb}*ˇ ~0_&&6BZc}58M\h6ymah~7tu jԡ1m]3MY˦A LUiX.h6 WA>Mg=64Z59UEsr8j>V5)ށFFW85Ky#]4\ĮF!j,'.E8{ ~IL'> ]|uc `#|Ip?uХ.w7.u)/sxj>q5mA7khm~HWAxYxKm;,U8Q!\_~_z  ǘjqR\ }!4,᧙˶!|<3Wj$̪zzӦwz]x]aw`F<;izCx#aAӦ}"mdžs5q~'i?'4iC-)uɏv9/&$>|R=qy^u>ՇeyPI_O]ĕvy/:F C)HM^򼮔=)o>L/]5\H$^WMg!,w8:Z3pp]||bv~>_aϯEyX>}m]i9<ߛx -foҩAOǵh<@s7k&J23&_u;159mkOp p_Wm_NOsk4Ʋֽ! wlΓ]:̧<ߜ71>Px^_U/\XǗh׹ޣy 7cF/~s+" Yؿȟp \ss~8?6|a$iNĔ7cTKڿ,5o4-q/<|&iǨ`|O?A@ܧ,-ݯpηrf2`~X+*L|uں_Y^JnTWԿ ǵyx/>#|͎ [^g'oOrɷtQvsT/˱Y}>&F:z6ķ?Mx9h$K,FxǫiD m1ai9ct#7Nl`o8S N!Ǚ7JI؅7R5Rfq/Π{%խfL " ^q_/`Z05 /;RrXiT5BŸ:W&\#nQ}hUIj,QeL]u=*~W>%fhb}"ɢH-q1+j;aB!#O.D5",I<>' ~ NL &b7&u͗kj|xcJ?hx{`Dz{QC=g_L77$&()$zj A ŰVbs} gB P̪D]c7+7׏I$xo~1-/J2޵$O ^8S"ءJ,7~''wG7|oLu 7.7| ;*5:\}ZãqUXS 4_,=nϔĴ} وҸl;]w8xf4<> 8bO (Yl0y& _AF).?B7OnYfw.0_Vo1<6',t[xx;zAl9(ˎ(A PnIS A!Йt|C<d&kTa`>ͥhO.;^]|N]{ИF{]'YP?Pb~j #Ȅ}4tE \d&>NF3ތk5&좗˅)iu& =]ع|BxsxUe %ҭ}x;R~ER7iOWh7g^Dtߍ?+|oO+-5QBE3Oܜ^a|1Jn=B_0alc C=hl&ml_y)1 SHGd ALb7̀7!7':) Op?T$g dOCd-]JkmPb^ Ej7יCϏOҸ}ٝݾ=@uF)ǥ 1S I0Ols2IUaAþԎ-lT/n6~b@xu* 0Hs g$%GΎ4/]Vd+*I 2iOʡ ƍkSNgǯbPxߌ{{XT}z$CK?8sDpʣ$1 &O\Yt.'ɛ./u;|)!-γDE~1Z⇭~#/G.ѡ&9뫌]X%ܿz\7XcCcDRyР| Cjn} KH'jieRPe`ƥ!?3nwp1zVCVJ8 ܅1ݾpFʍJ(F&>< u_(?dX:GWLqp kr8dz)<(o*ﭣi1:yW9Nw"w"xN,`:{.yyN]UWbDf'!yCY^1ύ!p c랮ĖZ:׀!vTv'Yx5g /̤?E΅rLcotaJ?S@^nw'uc^P8?ħ]o{|gԑk8Js0_$mgtzbjjХG ƻOM'pGWya6Ja'=aV:ᇜ,~gptc:̷Ua9`n!͟"(\hH-`Ej05cS+{ָjjD]:zR)9yjBʝO>F ZƓ>%{\,۽խE#&.4vqәkugnIs5Ρ7k̠1]~@p"W0a}.O2)ȌJ]zԷYh 7̦T>zԙ*ϻcP% |y ;qktʡ ~8)*HiY;q@zxjo{3+$ow '}ǎxsL\"N<*謑铡>t< =Qqw0Tyu?XAHݒ-Zwtʆs;o&q*sA)xڄ"Uq$aJ, 0>[ =w] p#懮Nx0-P$~I^]WjNc*l7߀:2h[wK ڱgԈԫ ܤ[K1)TWoBY+Qށ[H{ i}~c ?47<VE*i0w#N3;p4`ڃڣF2gۦs7 WY#M^tZrJΕX [SF]1e}G)jȔMA+(Ό/ibwZ(v k|5ǿ\t.?l(=?7w8n̘K pO]^4?gЕasg >$$8`^}J8[^x%M7ăfʣĝX~09^-ODm=yb̢J8wP ,~H~wd4£3SG- ݃Q z>5zk3Q8O`K[gaKKL@3`KnNX,iN &Lj*6]haDfnCgӿY0lU8w!-~w[:qc4:q^ntw̡̐.؃COA(pf<&>X=B5z~m~ߋ1qo9)73st&e9Ľʹ!a swF8{-=Sj)c{rt,d<1wL"o|.!$,_#dҍ.p9:|7n|&mLޚX# RfFY}CHW?w:[b\evm?R%Rq#4}7bۧ~K nM>Fp~[*Fٴg{ďkٍWDZK`E4O~G:_+ch{>LSFw5MxGHKg()v9 Z.7yo}ܧ箰mW}[}}@3~$j<ȁU;F_cND V~؟}u7f=hZFf/w 1?8š,Gypv_iɰq~.I#2΄- /p=G(Vi xa7ӘHsd sK E@ssk$ծ3<fŃyc:JG(=` <&վb jHI ~ G(`M?Ob oo}#跜vKC;<_O4~ތ+#!vVjI7ŗʶbk&\Vuґܱk>%[0հq>*6ѽhI~`?N}u:rp/}!?[[ѷO?\_r:b=JҫoU!ڕd.|΄n>Ety<|JϾK |K|y\೟4;9S76jbrF(^grPEDG'g <\4k'z|\]s^4>gp6DV+ "J^:̰oe޹mMt;{Y+1YZ ;Rh!;Bf?jvW.b48BC*f B]ג#:g}׭0cLc 'Bk 3UL Ma ͙qB7G6iF{mC=Z_{Kuexp}&߷8,c9$n̗a;Ye=aZSq ОA8E)_ko񺨏>z"=W~/G(](YJx^C׼_}3KY_Yy}#s?̾/kEhL ˎ*Vs>Igkl%{QULFc3 ;'G{ Ӿ.ymJ8 pp/9/C2^>aV%On|4:>&}4Kwi'sr{ԟ>?j,xz <3_4߭O\,>Yxh.-yPo`qpw} ]_|Hp.܅5W^frXa)o`q;J)Dn"!Qm@xo@_P~|ixaϏGe8_E篯V|ˮ˞o[?g35}/퓼WγɲwGxS8YT/=۽_/|+^a|35^'joU8Wa>:J"OW? '}]̷1VP;_.g>v. uo|?|Ob)^l?Uy>'/_~YDm缾Mfp>,7|Ҭ~8O+\-?8-? O,Η"o}s>|Oy?AyPп`z$Aտ[9\̷y;:/Z*oFG?PFriTp+N(6?e >=<_?UUjAWQA7 YMI=^Oe?)A%ѿٿWz$7>?S۞8x1'_=ZN(GɳNO ܮ~!)nA[ҕB*NV*?}GHo}ܗSwRQO>/qr#J0D{~Q"FO?~W~sIHx7?A~>_<^?.OFy}<_}~ʻy'ثx|5^ԯ>_˸oC1{>Oړ&?%Nb{~қogHһ?f~W^-?}?6S+?ET8<|H=-MU@^|q,9qi{?y)ʣ̻s~dJߐ}o7"l$Hq4ҕ>3^ԉo! Uն)D3t⫶ۓږN,a[vtl{U˯GYi}q]B]!6 dY %X}] eW]?h=#I\oϧbZ n;8棒)7 7JCA "׽g)ĞNGEN'W!9<^QVnއ"鼯D"NrrOb]y„=:bw]q?rBS xuن`Ze] Mֲdz%['g8 1? 25p~J~i!>i%yc?Ҧ+k?].r%0J 'Wmpןdf^$FjPc}:muRJeʤq{;`ִ~7W@L1-ɢnt*W^@dLu9voRg1"+,L\#Ze7+zElQQzV3|e%~IЭҭJm>^OK`{Qi|>+ˈ 3g7䞸U g˩9LSG0:8y]yudw?#uPΣxRT?/v5_-ͦrrr~oy##"%SNلɘܢ>urNHY>gMb>RX_s;B[8'#6''c֝!r,{V}%_&y漘oO&d?(;8w>[MTLuLdL2l|~&x[[JU?&X'<ҞI9`>큗I~"."j;yg>!#Av=|0_>,FaUy 2%" Bz ŒL[UxzTQ9AO2Ѓ֌SʸgkOݗR'#,i]{'X`k?`q fPU{_bw۝q10,^K3ԍ|<`ð7P$ԃFO|p“?Zor#_Uuz|L]H_G&9Xn"Urb) w ^y&L#?zmF7薕w'_Cj̲WOyxl:Γ9Vb7碾g),}|oAςty+-N=;wY5'MHo=REcC.(_ jr %{ߏ3'>.}a7=<>Kt=J]ޕ<ݸ/K)Tױ^bm^ 6b}g;x^?9I-3x'/ԯyN۟(#Vb?CfO>Yv1Ɠe;(>|ҟUq*ϊTz1faUũa4fN:3#{{9/{n_<ߒS~P:`C8s1~^~،YV!}qEn9U;zpUjeQ|q^$G{O*!;~>xJ#1 i“~9CWY4dds_O}럄R=R՛YU8x>9GyxG9_]y#3>.>^R5WB=~#P`1#v}~_8 .ozz3dB{Fq޷ Nx ~-2Fl#;ޏ>{>Nz䧞\zt8Sx]،[ClP,q;_gM>NMQ?mfFH`FسSqoa{;5mΞPꮃCx PET&O?>C$џ[rS(Cn&?GE.~"2So*5 f vewrZfx q4ymgtˮ&/3%x1[ xBDr6Gd&a>I^)qy 6] /lp\M2$ X:߉ x7͜T7C<Ke` \צ >w%iD3 q~W|eP!ƈSRp.$899 _ُFWG ֵ._#eipwt[" !0~-w7]c b ~pQo{9$hSGWuExo7t|_6DN.Ǘ.띒A7$#pRn IiBR?|:I4S>[*'!ɶT8v׏/_^;I7|[B,}}͇p·}^:|f6EJ7"k3̋-޷7.!oN+v8He*[ eW??!/•،#a|8gF'䶧=TbW,)xW-\Mɞ "]S|bYgbby^+%_h_UuDNؑX!q__b$v#P /ǿXf>bKz+ȱOgbSNRoڄbDd+:8b_XUHpdO֊3Ŕ;py `%|ps\v?bkl/D});} .wޓJRׯEW\2d}~_ jhs4+I)oSW_sΏVJLGTz?mx>k׼5bqxD;,~g?ex;QOn?B]i!+.Qֆ Å\ZE\0m+tZ??kۧgf$_p&(ߏ߹}ts '#&w,s*ֱ -'{X~s4gC RJ%?w?~wy㕫dk9`oC%L>5q3{>S_})2""6dVpؗ?Lߏbb7?W| ,S#?, Wp װ%o^pn'}%??8ze}wp/\wos_09V3͙04oAp(~PdbX0c=2䙘O'|T_~J,ogw\G? [>80"|sŬ~kf=-_Ȱ9=?\O~pp_V*)}MK||iwkqhO+Z8FXwTFe˿1_<93x{v707x|;/]y畯aүσf/ywbg}gMnޏႲo9g3[SvW{>l;~rkd,|'lxvܷz~Tn8c~rWr~|#xof~?_Nxw/8s&׿g}y_z/b vח]?& ?U,9To~9l~}jGkpjܞh_l5fxTȳ71uՁgئZY0#61gKWYXtC̘r5`JC5CX K|w鷳|g^' flh5EiT3_i}-Kh#?d>éZTF,ViĊc|jx+{`+ڮҀEkxa5ߊP|942e%]]+,PHyBx`$p`ܜVTcUVQ0No<Ėa-Ů"p8 kEɁuz`L>W+8_ q,[JC@j"1V\Hd y`q7qs$FgX0gc gk7`hȾiJc'Fi'83F!Q [9WŅ@: ]5 CgnɒSPԓ#C Pup.q ),aJupa.w}\K#a`PcM#`uv s<|-p*ǹ!W}pwʷ{',D-E" &jMnD9Q^9SfyQ4/1}H0*ϟ=pqog9=M $zbncҹ8Lgn,DA!4Y74Y/* 1# S}u}4! p'0'c&"u$wdE%7!(*=S>5f%v8OʹyqgS?o҃$&q䬕)~ HEx7Au+ vyk>ϕ^z+z-_MbOX)\7֊E3+w+U߄>$dzxH˝3{xQfV1Bo bYoKwxuYkZ۟c1kWݑj~*NpwB9ve>5̱*N(߁W)ǎӢBO^.d*_>cW"mWӦG3zNb:+-񤅺>3xq9HX-9?޽'K<~k|`ɉ=60v,Bgo6R~t[󼥩]^9'viLs'[~ItǿUƾx!ym~!8ą4K?[\ ES>6IxEYK뷃U@a%Kii$ :w G2!VʍۏLKÝ'tk/s)b+8\3Uю!㣬;xjE~GMG37ޙ|~|أR%TRz~Z8g}+﯁yIY|}ĸ1N;3'™!5K_P m3$ڃǽ?%sgTbqp;py>|߉!x#UkRoY3Is=z⎔5=kF&Mv 7ӧwCݜgZ̾g9Sj-&cc6s DpgdC=3J#]ƈ/w}G('ϹjI;܈5g31wcxnI :%݃\W8iU]JK9qa;5-"$zXŸ'2^4U;ܗ{r}X£/uNʃ+8dLZ=߫O()" !Ƽ24.<[?<^l|kS|Z;jϮ߳{4ӵg}<~-lwRܳYR>Z^y}ī۩콊=8uӳK5E\Nw^cvpfJ1*}}n=E^ sVyI˅ Ε^rf'F(߯G;sG_!NEjM:*%eκfDxx%{ ?oe97:<#j^y엓0׫!TJ{WO}4%W[8i3~לbVk}PxߚCUgX 25?v^y4#sg?1noNeBo)ZV>V1ʷ_ ݴxogy=ST"C;Lc~?Ǖ-Y>¿s73o5yp|rֆnU0r78ڙQ6? ?L(}^zG6wW-g!43_L!M\A8meyVN:צ/Ӝ~^sh}Sߍ<w|vGp|GFМCދloNۅ,d6`w{X;y~/m}UzNgʗ؅)ɞ>݀=30o]w }Pƚ7XCH^~ {< S8iҸkΊjƚ>H5E}25׼9۞/VWeh2xjY=FJs@a~2>=Ԓ19ZǙ3F ԏ8jĮ%19Nv5\. o<Ϙ5s ʃ wҖBjM6!^wԃnfP|sFq0s#8u}{rw}ާVo'q96yBXk`ydqykLS?i;#wz 9`x^չs)C{XrOeiwx=4Tq)*ѹ-ln2ӷ&d}1W{f+grCדK理ק{[E*9U[~q_)##OWr=~~^g)o%do1>a~ri?I>5 xguY H?we'{8n\Q\g 'X..iWKc~kM{?jWqb8E溎wڒ/~~|s?n xόLxnOArs :/K%'3]>/^OqD@Oб (wiSpJ(|>wITx w<։=UD(Mm1HE#s"4B_/QII|rK;jR>Rrk@Euz/X5n%KS3#񐦩6eglVM5{U[H%1TK݋WʝOE KT> c|c`BCP6ignNV6x*;luر'#XoH kӪoH0&ӷ\Awt=ƞ)Fދ5doDFfOpƄMF!Fx h&!jƝ(քG'ό~'*Ԍ( 78c%0N`秞ިiʫPS37#*Hr{RKl?e\ά0)fp>x<q#MxNu#ݸR_^{BQH| gۛ;c&  p5~ t&nMXPNƄMє=qj2 l2_ +p]OE)'.?dTd~|ߏߋE c ^`=7e;n0?+{~DGqSԱ3\IԤ3j~:?pêڨb)VX_9X4߇Y(<7+|!V2ln48C~n)^)I)!Nj4-"Iλ+).L%ʥвmGd׏{OٰP'a񺧔gaZȉ"t "ՊϨ $ |yHӳ< Kr[`<| 7g[-gWn]wk]+ڳ%Td7zj xހMYkm9QӤm +ΒuфX :x4GTU< liץTTn W׏m1!Y38[oFźGMRnc[9lnoA{PY;էmzޚƽj^+&jYNNnt7ɡj)LVvfMvjMt7c0LMX3x[S^eJњoơY3B`E}k}'uknMB7߭úԚ5K Y1Evfu_غuqvui~px3(n O{ kI| n͑ "7&{dLһh2|L&˖Dw+[=\ht}E\#w`.u##8G?ߏާF :eW"|Kf6Q]9E"Q=Ҋ>G`X7)!ҽBSBz}m#b'gi>EZ?3c*ƃ. 5EwgZ&χ!?J˿hP#1#^.+'!U]׉JK&etma%<k`R,Q0TbԤWlb : 6.+SJT'Ń&xsH12A*HI(vWA21O)YN焠=4uv803{W\IT3pq Bj|rH?3b/?fَqYܧ)X+<~XSO6vFիl8U g]I8i%;cuك r '܅~QC}_=k!~?BF~Bqɕ)I9q K5iWiH\o$HOw}L‡ kD$*z/=DV]8G|Cm T`?xpm>Uߟ-#k9h+lrFʫΎf+ bb?DւTh+pZef=.0p2& 9^WfNߠ<i?L?vhD0_ DԠ-=7p6ϝ0ۂ B>bgH-',4oHHLL',pV%7^a$D &p:!>XhQHir&U4QNXj5V%PpXQ¸|vtR!,ALĠrӍg^TufbdRe21\z~hqW[*e, WC"aܿ?.ہOr$0X٠}P c IApdrZ"0Hb-q.AÚa+Ag\d'E#0f:k]?v|r}rvޞ;Ӓ* RcFpNO8sx~35+iUoܹ+#w\#w8'gf֔{^,|Y׬&W.y%SʹVPkxWj%z3HSx|g,61C)0.bOnϙ+s_R3t~Bl]Oő$=QbYzڽODQ=?g$FI--u溿O~~|a)¬{&ݐޛ}"dD&;e͇ttoyvi]*k9H8o&dgB kZ mNJkYrT(G>]"t AIџdaZv3mmrFMtx&>Q.F{?+oot$ʛiKZ]1jpvެ^׹os_wCrưܿZ簾?ݻݐS4oگq'2OT%r>Dڦo+ ʹ]琉mˍdL_0oTPjv&i w= <$F;Kf),#קmX5ëd7mr")`yM4k|xOd_ ]c:8[@O_tOC fpOh3y@FpEN+\9eD^㊹(L1nŘ~6ȕl츜+Ʃg#&XH78VvП 7nEL7A eܵi|ͻC@㻆x_}egn*|`M;^^scs rB Mʣ~BڹzV/Mڔ'P!bCϬrw/#)DBߟd2ϓn|T'꟰B48u Nqmރp.G QlG7 پ5ʭ`(hATu~4#Ѿ%k8 PY }VMQ:jxvͻaX;q}?;NR~ #g\am‰}H|#yh  }^w}UOң²!OTgy b;(2&Cu_>x{^lx̺cmzxR>mhOU_䓑 =m'҉6f?^vy`3pVk>dV_h=FLn0A5Q975ϣ}Ǧ9o܀>UFy|(@&=JZ8xCߗ G)h̗QwX]S3~Wx\mٟb<~\ύl4Lиz}~Q/`|g|~Z'<^Z3/NnHe.}g?Ao8A?'-}yݏ\_!\dmoW]_#6r=;U[&ɢ6<:>Qܿ%\R>߽~:cӻ}/tw .˻._ˇ̖g/_Y[4S.תQ>+4!x_. FOfg;sڭ?dV?\3nn9j V>7λV]>JwQ ޏrU؎;~U,AjϺR3):{474n~9v~!*޷1d͞܇*z|}Ze9fa0Wyr{!/ e7ng? yBt* iTA <%i>DCK:ϰS롑y+@bydy?<>%Og 7snϖ1S>f񻟞osT|eȣ ΋~ ґ|n}P>9$&l(Ob{?<( 7]rW(o?;(:O y[IxG-_inf߿/OgwӕTWUT!ҐC@rA: ?emݘr=v2"oʿ$o7Hi-O{ҿoDҷ4P сV{>h{yt yb9 |[XM4<( c1]H~xaKiY G7>'gaOd?M_~.'}9UIȢH+KRe2]K^vdo覣UVwo :$+_'Ѱ_Yn?_}j:/j哠C(Lod1'f3~$+q "̗e\t5?K_UL ,̱pdK^y<+Rf2eީ $&rT|Vg/de%Y~Sa%rIyu';RE4,E [gt8/kx2zlA^m^8+ROљAIN `x;ۗ$nꬣDEv&8zw%jb5qagƒHbc [#vQOEv[p*=n}t6yQ1 [QAX֫F9F+dN7$2pdC=)ӧ_̫=}M6Uc%hFrr=|.U#}to&yRbMT;j!Mٓ8CNxxT3M8%Xa~ /ޏDdj%Z7N%2sD@H@ё/ I@# hKw"uF 88i=,q;Y._Bm'_-!*۴L,7}Jؔ^ҎS΍SD½an=$u=(H)dK=bn4M#}<>,ELo|p2hDXtk)C7满%nn[$7w>~D%,!\_ ڒK邯v`ܠ-iþ|᡼]߄#%ViE4:M." ֞{hXAXk߾,EJST!`Kf!yMniO7skw&85Br^:Rz$tOh.QXƇY4:$, yp"VZ-lFjmq1M;4[=nRJa*Õ|xr+튌..-D8Ƀ[1oq+k;qJ(r?C.v9w^ہ[X!/ 5|OdH1CW y|8w+w̥ќ% 66Xl%ׇgeyW$גlUsŮJbY-LFx)Dw}\(t<51sA7P|To(hr1:A %ueשvw8U+9Ʃ{'h'+Ş|!rq(\6oMcl Qčot.&RQp`rPDGL CSΔb͝k8J*ڇ^ZU}7h9 6n[[v}FMpH 0;-xp*zs}m6Տ aݟ"K8Ő3ķ$ܢ@_|E'~C~gF+IPބlܐMbpB=ꐅz p CD6'$ PB(?KH*X,~)݉]}&,WA:63J.]C=|[6U wV?eSpДDy<ˢPg O)rET`Ȋ}Ya !aq̉]vo_(p5Wyk9^gnq=]÷cʶVe!ۊ7[>0xXzoXfi5spACS:o+^?'3GSᅛT&TnWHG31ulc"R_i 8Uz%/ic+Sڻ@ 9_TK<ܤ_m+u^GQic ZҼ*wI/قdnYJ*ܒdL_sTsXRLnb&Vf.lI3͖^ODZ@(K_++:o.瞼<kY:,~- K<0[-]2 nZg.^,V˜mH R˄! }}%$ƫ!2ՀmUYFE3V)9Ď<_$*bK=uc؁y'vd,]'5uF\",)'BRXKeynD]8wm"Wsz2 R+CV$2$@.D = EfER}`#CZ@e5koG]##^bD<Ϛ(&8f H"cGifg 1̜.WkH#h4Sm63j+:qoLc'<理0=ȅu^jx#QWӻ3q\;Kb_v.<7~fem$hxlqHGy;WCdYЈ4'n$ZA緿M/n!5:}ɭa+Ug5iw!JM+gyciϋ^Bxz"E|`d-\>P;3!FϟSJ^7\bh5E㷾[4>pP;ۻCt\NBLJڢ۹N๜t#6^}\è& 'NcG--}޷0#j'R Bte*|FݖB b 'ҶW 9ϓKC {F7,/s`Cs1mRt QC%G]r|5{`R9C=mϿ7|E]^YbAjϿuWho~c&O0u$OqY: D=eIu]nwN0$6ha>\|cqq?c2~2/Be=c9u#iM9e:kPE]#cf`NR4"CXN9!ΜN̉M!ifHh7H!<3{o >c_G9մ>7>I#X-aR%N)JqvF3R~QgA0}FDUq,Fo?G˒#f_88fEAnm,v)5,Q_.Rg^R{=$N,yYa{LV5#VfW~tT[v%k'D<]Ȍ9pKOL99ؗCH.k**Rl&~7V9 ǧ~A5_d$?_%Os>[Dy>X{(G{{`տ0k|ؙy3*1+`E:D+HgyO cY˪EǓr>hh8>1Sgw8H[L}}{;gz y:/;W#V λw U,?MO}*oN,2ϰ04c?F_4TLT!_3?c[r;?(MR9_yP^oM( ~|Y<}UUS<+.\M9qӳ6^/JtVYnGyGޯ"x+Sz,V =}4˿y yO룏s__5}^%7Mm\~>yY!**)[.㾵|?3ɮ]GjY~(F`W^yb~K'  Z:x<=:6 {pgEsC%ILc{ųC ٬"$X%kT4G,Cw~ShAl- ؋rEOFC*2֭!>єS#B64> iؖ|##64I+yn7t[b ;X_{XU`3s7i |OX37hcg/s%@'Xb ~w6Ovi-aP=qsݑ(\Fq{;Րa7޼j| ۏy_E#R_wjâa gr)>ZXϏkj_\pf~/Xh NXk/+X7ÊTs,9<с^Ճ {S[^4"~Le{,-(߆C -zC hU~"Dqg+p f[_#Km*ryP?j^BT{kV u[zpAw|2@ rb1+> pEgw;\|}qA}pūx_~_p+:|X=_&Ҟ}'J̵;X_K3šaFG8,M׮,SM^ۑ -<ԭqk}{Nk-3f\+gy|dg^Yl{Em{3nOY<{z|~c&Ƀ1YgٚwPa߰,6YαuֈsޡkZn]k BmڸVLAe\[-vފњ?[+oyl@uV8 !pX6?;8Q];p="ǽҩ $5'~Cȿzx:ҦT\Gt8s3 *]8ߟQQ]D`}Ctd/ Z鈭8{\Qx&7hH !C_YoVÞdK͎>bX5D[kJUؓ)<xk֬\<5zϮ]9&~rI;& p/iTFKm͗@9?fv8 %P4)ّb1藗ݨ\H8gW[D{1.:oG5nZi[h50 \2zq"-#jyfZT8? 0e{.hNkttLdM[q"t4rG1%~drZ<_/?k9eفȯ r=Xi`;Ά[_sl"3'3N}dY2#qI{&!>x2h$}5.h%g8zs4h,KZF K;Ւc7T-+Wǭ_yy#dsbO-$%8=-9p /qո_r\#wcE'Pbo'0s jɏ!pMF~2N9̺ɦ0Γb=+nۦ&8,OxժhLy~oY'oSl˻M;> >xx?aS8 6Iz%0~a.oX`K;d.!ܴqMK X?W[n2K2shGD&?YZCb4kOd)&M \cQfEln Z~1ٓS1&C.ߴ0+6{o^BH8~.&/W!E>Mr?>rh*H~4Yy>~-s:e~t5+w-|*%}϶!_N掷s}_FOI\=Ji/KlkʮnJGxߦulHa$Qdkyxqx0U?ź_Jx/SM{{:#2=ƶH4ezi[0I` yA2t<~qAm&y>H}>샐Ea0_oR=^:?؋sMSsoδޟL盙7;73^|)#vz>C+13qr>>۔ӻ~ /[]!3o1g s_-[+oX4>4S|pԔvzo<^^&Qq64߽o63wr)?F~r1/p_' !3&/nhJ瓑{YY ko==>]o/d*>/zbv|WF~u1&>qJkĚ섗ZGf=Cyդfw7e5ƸmZL|3}m? L6=}kʬM*ߧ?+GX\Ed ͙VVI Έ_YO[u=@O~ ? 4|ד?UbW?U&㳧q{C.'W^Y`?u>𲼯Le} }tx`i!=iu*=hY?cVp7u>˃+ӿ,Xaws}UgQa}ޟ/cq"\?w}oA7!Qeb{tm_}M./q~03?loSfpv˞f}/Ɩ fK_ݶO{fzQޫE-۰_E}X,OG/Ɣ(^.'YP4[2~fJn뛥}x9OG)>딇EWگY(oeN;+)ŭb}_0L T sy$M? ˑG>iP}]aX1~Jt+r 󾳅ds>yR/w3uN{寒n|ayO8qaQYkzc7_G?o{gy8Y_BySbh3Ɨ-4a²S^.ߙϋ"\RwP\:yY.=>oy\-(wE=neGu~$V-A³?d'[|a {wڋY^}e|}Uw kSRT/ǣ9Km{{/1ؘw+z(^Pna˃WoӶ Qb~=^>fܨ z\K6v|cjt+8٧]82cgeS_>_$NQ|ɬ e/F`Q#6Jo XQϙҰ#`m+vRx٢8]KoF3·5}ꤡyS4fVRn=Zu\g}ӶAcYL?8eY{UWk,k)eZMx6۩@7:0Akؓ6:Վ?kVu6 vTy;a3;9,2 Ωff^1}_8{ ^%1 q* !m{QD} PyϪ*u+\8ͅ|+*uWtlU{ZwW q5.v{>, s~t6&JE.6Z (^lr2s1_܀;0/EQ 7C EeQ'8 S~a}U:C'Q281x_A*۟r}%0y#e/۲|aȔ wWN'6u݄wq UeYNjԛjט dO (^M+P ;Y`-<| X3(xb%b<3 [k76&].!gWXtz:1dhXSvk2V@ż_D=Ř>~1DYYUed5F{JL.ف'~yhrUAgq/x*K/]ԫZl4 u 'Iq "'T[C9dy=x{|cﻏ[-1al;X4yfܜ_PUXD0sjlCCe &m?K+leWVWEjc :h1 %P=^t|V7Gu>W7ou8<}{k}i>ZrZv=wGFHw_iq*uL5zklk,;">).m \O ڥBͅq40mE羻&/7Xeox#YùtXޫz170k5f= X Y]!c~ߓw7U5gvx2jF'#$vׁdEvCi7f`Z|wvxzWt Z /sy>9ml^<ךOؐɿ udSm% " ׿WƮ4xnKyHBjzS~ n_+ؔ.)oJֆy~~eʧ7|6wD;xvXB& ޑnO |^׉:xs3u<~7΃+I ׍|_{.o~{_%c5Y.h49 ^-{Drr?%~L3M|?䍥^h0Ae*5 w | ؚkGIH \aC| #F 3M,[".1kV$֝w+4mq]]A zT⊪W BS`W 텧}.}>n%[L@vE7_5/P&m+ 98;.d:x텸xXJFy֨x/J<yjWw?D[{;r0c㨓VRIEoKcqV"͛00toI+m{H;(a}6b˧4 ҳn|%0%4f/޳RUM_f_k7N[1LwRsX~@MC[zpʯ_#֫7qц{:pVsZ(ѳ{!&ꀯv~u[O ={|ϗù$S. s Œxg/jpd ysxcU[ApxmX2^=JKשs#-c*!I/EŃ:j=|~q޺Ò5%WҚЗL}Ck.MkbM}e]!7\oḷueX]XкBeKT C>୰M$}xm3gtVQ\V*0e\3RæԕU+O.OΰթR.O :NR;ξߝ0ЭPuofUkiěϻvckqB\e>`ұ 6PVHӧc Mg7е$֌Elՙay!5+0ph6YiX)-+3~^+G]`mwɠ̫ ,k̈gҪ5c7О' >^+ތysMRs { >(rm-ų- qmVwczұ}s=߶X&w B 8gzj?);)mwۤDpxg"37e/uGoP+!}cD;˖39m'z'$k]A=;4F83:tӝqOHVD eK8hG˖],֋Qz :x;c2c\s9G&fpyӛ{s{u_=-W5܌[S>rЏoEC6l>3]qOFB~-1!w(=pHt뮘: %s%7ߓ7ژ\* wm:t].@g09&\N:kqˎuЫ~棫qJ4QŌp1`W`r?3ޝ9֏en=>YE 0<~}EKKCU">Dx!`G_HE/*>Ƈ>ʐ}˒T"?ۼP``QNϕUأˈN>FeL/N~nJP>/?44&nƅy^z:C\aK[ͷ&OR|@8?7[ g| 'ף a HZ \~p X;~5apOb.CݩOғg_p&)p(|QR~'9u&Ow ri8p'sPG߽Q|3"ƽ_~XjF8% _ rFxṽ_4R3Wq[u/^wRWT7S1_YPljq m>qX{wM+K"B]${<<#pe)ϰd0JW9s_{5+f_<:ƥPS`cn궸~^92GQ3=k^# z8[sQ3/OT;N]5HGx 7wx̷^觽ͺ,ei>[O IݗV^݈2K59h+We;'8A)_EpŸvOvPY ПY^Fc?:Paba=0fş89UM:fTJA=h%>?/nEA,X ~E?#Y](Ftxxbړ9:b01/F% 6c zՋtϏp#jEn50b@%޾3xWpnO4ؗD6>1BxT_hjbAV9Iv´Uqb*c('"WbXuc \Y9F_αM,N!؄yN!#gݘ~D*O6DQ݇]~#9 #&iDIԸ"VQ&9cFz(3}A8hE#P9.T4BY6[q`?Eo9uYX0F3g'ڄLQnV__;fn'wNxKgkJH#XsOObVW)Sz]ľsʳi_Y wU]Пh߁_i6hag_Ib`wQFaM <7~}NY#Ձ0/Q/_>X5=[hxwӧ_ZKims'q~ ¾1G 13xK]4igmdbs~8 9asMЋ>(38#Q <1G4wF5% |꬯N}QG2KGleb`aZbZc9#Hl(U@/@rd(̍: zpQx *k  ;߂H|HF%kZ؋#Ҡ~}:$ަW< ݕ<"[CN<>)l_A%x%1BfM++{#= f_ԣGI)Xk*%i2^VH-wK956(Lgva`Y&}~?*U6+;Bߠ-Q)Xu81mqV YH^߼)};րŘkTekALg:). @AM-.&2#j:ŔBj0Sż*qW#wS sTlA B+Wp.7hQ|B.Ҁ FB[m O:tr%B_d\XjEON8%^ᐑDaK]!QoQ|!eIl2F%w{+]lW司skW.F9'9B̰VIݕ(M Ԣy,e,0G ]2 "E~1G@I{W GHoraI!TPKFڔޠm)o dWTmi'!A65ӏ8L6J2zoaȸO%ζ(}@A]زC^uXrN+\rp ÎxuST܂Ƥ\Ao'}2oϺ13`bŮl/wm+dKpu-ZS[s@Ė~jHYӫ~ xݒʻ<#u;ZS>زt`` w#kjwq9ׯS(,|N1u .XP#{[n)Xau6xغOr\k9%r\L]n#oɷe,YŌwboa|ZGף9nRSZKWv!eSbV9Z,!!zNܓsТH@0G ,7|ƣ7J.@8؟U_4=j]PR)׊0 Г!-ׂʊF4 =DS<[g]Xq? :0GQgSn[az6 {m">/puc!'4ՖN>k[(V镕ބ,pBͅ0GL}>N7yihA{]EqE$o e˻! c&.usӴ+ [`'*GY ƒEd5J^/G0\a&b}~qek`hsJ6%$ē߮)֞&l<>6_Y w 77Л2sә <\qnrҌ9h7-4S *ݩi'Iq4'c=asgLxCrCDHă[GTI{>qw6@oD*% iE8mt60V}_&;kwBR;jC~;t_TVزf9U}Cb `, x4, gj1Jhg'^/ǒ,Bo@;5~QW s2c|M 4N!4N2-݆{bRȩ1Ĵ(;ox Ja]D"l-FGL|f)5;0G<Y3;)M9b#dhgn:xaq@[{;PUjCWS0C Q w Ek~&Ka4^ORFwb+Qhmx|fnj{P]@|W{R؃ }{69߽#e{3Ƈs* :h7g\-!}_Û"d639zg +uiب_3#37W9}@#2P}P $64ZU'>m*KL9lZz|?gfȢkJ[N% 㝉- ߝͪ>X1T}ដ`zRԉal[Hx+gIc̈́ d`ì%9Ȟ8IהS2E^ިfN)|~UVzdpjlTFo:VG9ml=5Ni%јp%T8&]`ֱYvƿtTiCϺF餖+ O0p\j+9N Q 7ީ5å&Z- N"fZ!UfA'Y|Lch \h<*V#)Ìt 6vI<30qאq0Gv[ O1%Ϛ=#jW@# Y4w_z84v134v Y˱e 3SΞ0{òlSj~7[jHgӱ]`o:l޿tt݌9b10,%W}(a^CWw!cqt]1Gp ;HY9> fb*k/Q<>,RN{yXK'f(Mgp@h#A˶u *mJ%Pn[#hIW/YF"ا0x 2Vt(DžRHl~Yu_KE"e9>aYy_bBIJAZM'K|+F7qXր@5B0/Gi(}~sO"<:R}#tҍ9bv@.=~vlYUQș!ڦUxlA93XBTacMHiٷsmsTİ%뭢RJ OE mh4' LmKkj|3>rB_[y1o 9ҋx'GX fEoy3 1 uht>ݺ=S.s Z8{p$ծ۴Pڶia{p六Nk '=.2ic]}_; -א^Jd!'Fb…wa631Č=\g:cdJW&ŚJ,aRcˌuatKpcAZ <߽T'\euTDž] p̬cX'}&C*jzTte)BnĢNpQZ zl7rR)_17 4?jwaR >8K]s}2U[}XnjAԮvR!t{dmox Z?>ߧ@nT`_: Z]ʍ\̍2]vm̨ZԘ1!>_~]"R8d[9mx c/Rr%ůtSj7㦑2w0vvJsg3Ӻňꎑvm4ѐ*u\j L:&skAYUs21lP);0x}JTOpg;ePU6.~f.tʸ~e5 \îo懿ca }x|ZCk,|^FuT7곑)o#-!nS;믨OR0$ݲڰ*6&tVn ٙg&vfv2Urg1š`5J@ ӕS-%sfs~HhIW c=4tрv~ |*L^yn):ʶ}*&ܥIUӕFgsשeNUM̖bwuOąTL?u :<_*&v LU4毽J"꿖UXUN`- Rs'eJ|0;= 9f5Gfg*fńu a^yrGVzU-> *4D¡YωU. ԇb\9rC--+߫\5jC)5+KόCTj4$q.CM]_8knpTsevw7VfTFF.7 ~.az.w!5Di=E5ĕ_0tPZUrv!!i]"_b]ݳ}R|a~/ewOn_s7JL||X'd8*x?= YE}޲Jdϗ_|vuQQxj)[nzSŎɥ- W YeZysU6GW_p"WZMCuW}\Ux2DJAS}v\4|<XYAᙩ%?[go+q-;Iڳ"tq)%YUeJv]G]U3"]qu}]FmαzgWK\ݗH*l}r,#\!'OUUd;UvF%=ܽS SU2PLCiWN+>S;*Df?#ӈ;kYU{pj˖E66߲eA c^u'ݙϰ+h]_'iʗ_f;J`>!y@5G_ _“t<׼_׿lWC .C B9[!/h]ɍ~o4 F endstream endobj 332 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 345 0 obj << /Length 1674 /Filter /FlateDecode >> stream xڥko6{~/1[Dђu@ҮC-1Y2D]wQ*N"@x=#oыѳWKz棈FnBh.?D: b'g!o,|GTVsUfr"dɌ̹e/be%n ʣr!,bwN'. ޑ95,V jQTnQr6F|o,2ۣ)JKYcu&$J-Te@C BM%\K׾]}O[ϝ'mN7 L?ޟ-ؒ(oi|E[B)qKk %y!TAߞO#$nr^?T]B ^",Ķ+ٚoZ/?ŷkji v9SUzYZcRnWff"RF۝7h->%J]i,n]pP|l6[DžCq3-Ym1w=ÞX#EUc`ֳz  j1ܯ bMDFm`( ik@&rl5 P .zCƲ כ. B@Il >uZWR6=1-q+@Ӕ)DsBZR ڬ*aENdQX0Ïvac C,(U7avvaũUB{e)gQiUgʙvHWB}Т]۠ݠ!܍]{B0N r7" e;40GTJ~H7NTZԞk3եMA^!]&'Ge^C c^I2bcژm @! D%9?tP顀^JC{s |OmΏE[8w^+Ty)M"!q^D.ϚŀS[x'37LPBlDXHhAu1"DƍkY`)Ub`JDº_)94?2멅 endstream endobj 356 0 obj << /Length 1658 /Filter /FlateDecode >> stream xڕn6=_!X$6ln:x[ZZ%ѓ %KaP;ˋ7O_ġEm<$ 86wק/tNy ѫS톭:Zqߙ۽lCYi?o.P4d*8ʽmsE (b'uL\z=ﺔ"ÔzQ؛oWk)cQMU[VE߄Pv 4oqYF-U|[٪UdsǾ>I%dBqȂ-mzvW>Xa1]gt.Mm=Vw"Z2TndND9|c} {=_Q$^F-xβ^Why_{EvKnHW 'r9+h(|rZG3E ߆J&%#@|,n`HڝntK>0 4dqf:K `Ml=0Ꝉiz4_GQy-ymT]! 2I{0[ g)r'veê,QX(d 1S*AZYtUiE4->mIç=Z5mh!)k[VPV:yfsF)4Tk Oc @R)"j+)Nu|ōQZ^#du U5_Aq7fԃ#Ăs=VTi່'&Z1|>f$Dwb$C{b*:.s9, -Nsi}D G% M81%.Q"A]tgj}>%4 {!5xoXuC0 [d!:H3*RD8$ QUXxQiiV}ԭíK&fpV VFnkW? \ ]ql4bVP>2xdKK ?f~$\ `Z=Q<4R4뀿NTri,^@iԂ2}15 i(=(ܒaWQ:"2NVLW}Q!7j>L]!OjM|Q*Xz8Bn0CG]gCcvjig> /ExtGState << >>/ColorSpace << /sRGB 361 0 R >>>> /Length 119598 /Filter /FlateDecode >> stream x56}*2 n@C#نѨ k#zǺ0s[G:5$`\Ͽ?~_~8JYW?}_+~zoFϿo?ӿW[UJyտuo>o5{Fpx~;?l4a:FLZc n.xfr#OOm:>xlO{NoӁ?\V^x0aR?=)7~  !}pkjv>j Wbsaf/=/h|ďv>T9w⍣W nxTaps_9o\1{*iXXWUށ9'56iŸ[X܁?#L}r~SJ~/t壽`_rNq)Neοp_!\aI4y,K4g^aA+qS||s|9.X'(r;ugico:-`kWITx `k`>)5䛟Wo}9T%|a19zgg|\w%:7Xs_X} ksFAtKst18Cu3ZW[x?j: qgɦԚkr.kz8Gyp=d#I=g.1F/EgXg:7g|W{.J<Xy'f`A{޸W|_#G2' "MK8g,>hwp?3[Ƀߗgq诊 4(~~{oo|jEw<g?X߃{Zx> 券B4_tCz8EPc͘3p<N5lh$N68?kX&H<^ Ĕh=l~~}S?qy]%9L0(WK1%u?U8@&;]ExR ?s?_4gE8u?yC.c2 ע~gxVsl^y(˜A`X $ oP7Mc~K#ǷS{vq:etS$z[\#j%tϳ/7g`VMCp: U"qz&"6&[-q#\H'O,|sorƓk3Bzu24mW%lnߜq1ihnoO3 rA^iu-| ;d ϗx@<PwHHbQHݺCI?xk`yYn%t7RtWH>X4isVxސϷ {9$LZ:U9/ؤ|2y2$ɘ!5! vTY,$ˏAjZ닇J3tCn7 cIyg,ֵ+OIABG, pzHŞNjMm1Gdze{Jl8$ų_VĦ.]C {$_.V7jΥ|VNMWɯS: s)WN _ƒ5޿!?N:r=)-7OCO89:M{ kOnY.\p ]>xqrj_G#7F>):IoO;IxgUDZ"E7IxEֵ ݐtm>|i5EK(G1?v'to>'5e Je{<<|SÚ8Fe:ă }7˔,NV_ooJN]:߮g9~m)~xrnwk>s'yJϓti~sB<ωr4ᒆn 'b? =*g?B?miZmσ Gxዏz@TP;)q/moi69h;'ԃ=# KE|͏+'ؾ3)|5SԓF7qd |5N~/$3Z<65b_~A8u>(K;?ٵ;l93q EmqlK@cIk& OkXo;RJ )j>#ۄ[>'+`k$F7|<7CRK,{T.C_@|ƃ#F=`cM8l‰?Ֆ\nnz(&޾ iMyYT%qx#=&248{}+ Vt`Z^}fNE'ujƺ7EJ-﫺S\Mp9;|s?m>{W4ݤyqx^/o>a%VG]0 g3?).#ME)QA8H/_˘ 'ؾm*SfP%LX{vR%g<?6b~Jͩm޸%W_?ĕ6uW혈|¹wy윝}]Tn_oSU>k><+#UJ#܈y뛈Kxa*s}&b#nOiˊے22o2D@bwV 7nL(H}yBxpG[Oz$`VG8cN>qX˻[kt8>e9 k`J=m:OZӶ䠼pb̧D\z$^xc_k֊/ܸCP}ny^?xr~.Fh å+H O!Xp~4x{>.QyJk>"8k{58k>P_x|Gnk>_ߟk> /ܾ#|=s~LJ}͇{>"r^xǘ/ܾcPZk>OsD#F8&9hI ;<6ϋ߷<8,u ^?WPڡ LG ≈| c]asl~=MRP/x=6uJz'vP5IwPE;/q|7%yC 5pn{q<;~jT|>7%S}8='D*C}}HM8} o_ϳHӠ]{|\;J k!@V඄ۧߗaY%wgUo`'̆pqpwwjNzrtI\9_ .o'D8 iP/.|?4JpG[(q@$`Yߠ)^CmR4=E;p9mȮ܁㼿G?q5v;o';K9_c qhbWyDyF>GQ1т=L?^[c?Gcky>7ą5_KE{{CbOw}w|xm{|&ߏ۞}4S8>>y>B[ޏsb Si9C_":߁  WCOĚORs >_~z~zy%ߙ?J\2*ۧqfpoW|\|)h F5/^H/{o+B_;}?֐=ٿoZk{7:M?[o gT]0}nO?8%Ix _(?Y%lƜ],~7wC_o)qOhpeU7oz4p#cQmzpmb3_~*c `er}0ʂ͞Љ+,8H%QހR%ϫjB=~SDx""%ܯ 2?TD#jN1+p󹾡XěsE<0d zx;$}04)qx~|>s}CўX/zhsc<u}] ݽR1L)< @/|•Ey)&-ABj?~C<2&j3A1sq($ZD9&V›QmerVOiWgR%f.ѱx|Os|c6Ψ&s't_s=%ߨo>r^a߅W,7Oe0)\s6l@X":tGO\cf!511L /1(3/? N /e '}QutYaW`uiPʷ?q;A]!_i=/)wdugxQF`O\k,=Kyww,W{f]ee?PL0zC+_E*x(&h0G. `.9x#uaZ`bo'/9l2$GE9|rUUc&/7zPW2k9CV DQ}_gVި5<+k>|1 Oq4U4?ʨwbtWx>o|OhЉ\jO{⽟0++f*8OS9)1RU.+1)< ~( ,Ў2-^9RSj Qy{ئsPB/Ҿƻp m3Zc=YRV]__牆KwW<fւIoZeV(ZyJ¯7軼 rϬu8>[L\g4 DщZE/.h+!opVm[k<$WKhAakk}?WO(Z%Bj/PTFWQw}11IL{箇'HѝQFojRovWZa gn,O 2y)6#??R2kR" (:/E<FSx^G+>p00{>m}`;Ze;{{?e,nWBZU"/8dSo uSěٮDYkY9 &lk|vk3՘yp0폛D9Z(~yLz!םGukΉ8|g?<[ʮ6.Fk*ZZa(9{EUjlb_͋>mEQ-0V*/2q%+V8w_Rl5Vhk3m/[=qo[ŕtۋ@<^ 8%Q3[-'؊Ql5c(7WHmq0r^+1#ퟑk#9e`J; v(/{߱PLڴ=2VxZq($ثh)7߆_''L^ [VJk#62KIK߿ o+Gz-ze0[H?{)_Ͳ^#}^/A~$`;1Sr]:;_ih$n\Xě.+Om({w0W-ye33'3t;^?Bt͂a['\[Q^yڞyyQW?OJ& OwE<_@|Σ녭\^[ҫ٫_^ʖ!/盁zo/Wx7cUU(@mL1Ƈϼwن;/0m3m(;)?G{9Fz<36B4+Λ=ڕf oeWkg^߫_)SbekyQm3K3Yp-Ed~~PS&ʦZ_Y]YɯWPj.ͭ7E/›6t?q7糘`%ު`-{:YQ^aZb~?QaV* {T]bWV!uaXt[t:ks Uf2:̆b!C ξu*O &:e[(La/^Y8 8RYF.e6ݛ oV+5vT;cSZڭwڢИ!c"ĪøFdXF/uG]x1_nT@,?Xx5qx=¿_|~{~#}=KMo'0uקZaXs b5B=/{R{GUغCu>j/ꈼo/P9o{&k$O׻~zfT[ޭpUyM5ʊƛ?kj׳R?SL58_/iØli0 Z>g⊟4u{76 ObUqQrOf^V6| 'Pk~'^UCbU>QF^*1X;z?-ÏTTmyU][%Lz3yI}u'2QxK|_q5)}t9^‹A?sw,6d>VQUܟZu; O]EQX܉uPQgR>gڙ[ʜѯNW/z5{Q_0qQbr3}i&e/~$qנ1"7pUlZzF}SqV|zc^]U⾯Lc6rk{ ow- *9ͧ䗽b0}#ez?:}t}?.zZK>L{wj1ng>~_T I)cWK]U1$:"a~b\y`<_**OUt a0h+Eqz8z[򾿜}?䀹/~`gT⽏zj{>h6ޗ7#ACF}pO|飰K/=A Oz8߿=053J謇^'ǯ<[*6=1(/cϨjLЌ6}8wgkw^p}/=J~R}^52%c~C#%U)NV[y =c[y U5Tm^}w|_Ct0yL{R8b{&wI{?@·}l={_~-Ylno)c}=u\gUX/C;UghOK&UI{+j-?Ϡ۞OWg{˿S[癝ZKzu7]tO{ORnnz?ٻǧ/O/Suռмf/;0[uƨU駨B+o>GauTgy uyTMgٳ7?aOSe _?V"]i;j8ƕO9q;'=A_->4\ !yZޯJ'>k?JWG~>ȏ Ϯ<g>/Q>H}Z^sT> Q/o]!}9 G|&~ȃ?Lyĕ?X.v$.|]ySL5߃_b߈Y9[>E]7˷)6W//y+=Y5,?Ns+O?v^eq{& '3DCg#U^5'>v1%>6)EP?qC!& g0'>#y W%;M?LNB'w= / B0q$gbs}Vyq$-USSDlbUQqU4?]gTyI\#+x[^Z/b; }d?^y9VeߦoO-/ОU}_t\u'<%yLh%ez\3LCU@Mǫ~ϫ_Uji˿2^[u͘h'CzS~˞&wO.k~>fYnK_[߅z5)'׫nKCXco֡=+ꋪWjh:o]z\mRqx_su@U՝Q] [b<]߭}o빚{xNZɨ)mUS}VW<›M}͔e}b|畁" q~ֿ_nl/ܓ7=˃[+MF=swiOy/n;G 7l?Q'y| M}X?pgy_TԚ)~[Orn߅;÷G}A7.d,냶Ο;qW W>_۟*ˑgw*?SyrC;߯!g/h/҇u鎇?[X S?u5߭27Eeoui_uovա;8Ο>1Uv :#(υ&ᾨK ŭ_GmCujCY^U;^3\[Nƣ>[+P.|yx ֝Ր=Iy~XgI{@ [|4N~$`◼20}<~[^[6]+~#鿼}]Mo쪣IW z~+pݏS;LoA{E{z+O3 s >Ą*~yhoUGfMvV}9"$#){;1y_;u_/~d]EG{o:}Q~x,?Sj;m)YIJ/|FNcퟧm=etb=p:#,/Wo˛.fML3d;~l߶2~3ޯ3>֧0N'Fn7/mK܏ޕ kC_-fL䵙ggZO?^*Iq~ģ~>EΌGR\}.ۥ/n4>{5b}I/kr?GWqATUGsC5>a}ZmKmz^tՠ7!m>+\_ɌB `x"&v< A-e}YUFCr?xu?/J~nm8r$w? `x^l37ݺ``~O6:Iu|/sԧo͟ԟ~<[w'C$eb~)30ob15.:+~fȂǍ='Ay_ߘe{٢|T19yg*k[~Uȃ:Sl/Myrͧ60ؗ*$k<ŔOWwaxz|/ʨ&#u;>_0A|}y)#<+|g^_odd'l_<֠7`9c`^Xbz;/}_`v '+*?B^0ewc<~|GL~}~N8#Lй'8uk q2NK?,"qX^J~oIJ?~'+fOUȟB֯!sK] Es .7YdЖynoN?4df᭨"a6~*)|Oxy<ް?*Œ/L+jn˰#Xcy{`>oXc "m_6 4mVAkYWmX@k?fRk֗Q~o5_Ն¾(T/g7|8_f(3QћGPI >tB1a_je{we}~1N}`\濉a'2,=Xe7<9?DGUf#}z%+ U{VU|0[%L~OxfV!;<W_EVi!6q}3|^]=Gq!MõNVXUxpCX'Xª}x/XG@KUyV?}_{R5?GiqWX*WPYETv(e /VA "_UPWEUm?Jx*Uj:-9_"FnUj>H˶<_UE>h/*+~0UUe<ߗH|џnnV._3 +? _^]|yV5g \*p!\x4_PZ=~?1 b?>UYi` Ey'jO<^~B8!001_;U«g?5?~(.OU|k0y__xM_U;狪ۣ?ߌ\OdГϧbMU5{EA"a}>IНŎf ?,7~Rj/ tXgT_pTG/l>?[}DKGXx'>9MEɭ B~P3nM{^Y?j37G|i? z_2p]fz;1 5>[C>=՘hOgl4?`fпsY;/;iN{zebjg=7o?u8z)81G&mYww/Ί_}Jx:;#RN}.zߺvhLL|q5A{b'pIk?NK.`/+yN{bnC8Opo6qڟ"A{T~R0oކ?PcH?,5#>=`Ȟ&JC8>ף_o?/|;xȴCGσo6}S}t=(i184H'HK C]=ߛA>'[^800|7O{T|fq:~g>S|0Mr&/~3ḇc>&g0ϛWuO`}e;O+o oƖ>m03^bP;m?7 bv|]yj|(j=Ww>zJ>fByqZw<,nW{ߧd2cs~y9xOMڗ+?yחw'/=^Iy+I'her20/]]ě|W~.nyw"p!dx[y?H.O{OڟtIaR}^M_Ia=և#|,G/U_/'N{q,n{#}'P?j\o&o<1}Ѿ-?/_+OZW=sqSWܩ+Wҏn~D%e}=>x$O-|XB/ϛn ·xA#z~s4?O_]4)t0~S~.z Jh\ԯq>b(3z}E}rעQ>z>O?,ѻE!KV=?ww+b8~-~~x^qOMLX'}N}y6 m_Zf}fXȓ=d]}%uG#Cy(G*7|OhӞ;T3q[8S_|Mcm~q;⑆ƌXOzJNz>O,ӪKz7Wn-7哫ߔ?걣ڿq~-Ŕ}`;Χ=,k|8o'Gl/Eυ!|6S=(ITo_(v{gnuSPtAX?)x$?Ǐf7Ox#ܼwN|~0WH[_utvxʮzx<_[oQ|wph?nַoޏsl#%[`G+?ڷ1_O>;oɫ=^ E0P0Ix^οC|v>fxfl{Ap~N`#{b/+?0Ojgv^/{OF|>2>GPܚ%^/qt1=^뵁#ϋf{a>-$Gi_I֣,Ww^w=`i}(~y8奰}t>p:omo;̟p=7Ϡ1=q=I?W+MO?|~)O+vwK<{GߝY~eA=j/ac+ޤ31NlBns7>n{ɁcW >x<1AxIz BGaăy?0~twbT7^Ab;Ob?wDR[~ CT?r=W97ܙ(,2?nOPT8~#ctW_{h=eʟ烅/_җ뿼?yj#}>?YKg?a~b+O<>~{QS%&?(58WwdzL`Gn'MOLo p#=vwNܵUxs=!ox%/'5ת?7o Gɫ||5X?Ÿq?|fHb~>2q92w uc"BzVYg{ !H'82N='F<읃߅pMzq=ċ_қ  )qwO(Q|_~TDo%tVګ]n0'#'t_1P,̍x^3L)sZ^廽>{2>IV8?dⲁec_ml_#^׺ 87$z9>ܯ\ 1~49|=lj!83n7g0?KyDQ9=ƙMWe抴t| mgt,M9sg̓9z2W2'Y)&'qe:v{|8/~>s7ɀAWw0[1X́v5=CqXF}>Q٤q{O J5Y`ޤ-4gny)=ktpֹ1I|[cr|7k4T/8 =~֬lAd̉7aM<$#fL-¢uI/=r t% ~?W`2vh<o9ljJ:GJ2lg&%?\h=C4lkz9 k?OB ^s 29X58Cx%s,QG7>ϚP!Ask^XBو~~&ʜf *ۆҨ4NEq[6kѣr`/ʚgE趙x?V ՔsPN`1uf ^CXܚ|}FfMRm5 ExQS f pMU׿W ^Dn~s$šrtQ0}[1?QUg?T oM5քs 8v{ھt=5n8U*zc^C5\ wjztF%5u~QΫĕ5c)Wo451C`3 9`۰Y[:ZYom753uq5ɏ?v;-[ Vn# oyce7@_krG]÷ c_:S?- hʐCYۋۼoDf `m}DgcEwMe̿E9R0YOPFkcwԯ׉C5oQMWF|VR38)O(_&z/O(_z<-a?qMI~ڤ(8HT;⏩,|HIjNʧ$śg0MNKU6טyXU%K5峀S~/G>9y_qCARr=%MfliYe3KH%=WgH|8^ka|UyF!M_P>ϻ+|L?(4EoԯJyb_ToI/퓖 s>{<^>/z Ր}ߠ~5IZpC!CƁoULѝ6 )XO}h ?O~E=&+cPd}݂bY_I>x~k=> ܼ_ߛkLAW'sgP(px~ 䳗ǝs!ZS?G}Y9x=c\bb88Z x+ר~~5S=-LJ&۔}!>&lMԗ>{NZhAYz?5  ~WoMWoe_m{[O6σ;^mRBog>\&D}cMиWÚyI|)G8 zlN F=45h!qU=3Y5DUUrCEӫ5xTZH8>4㍷g~xIAg7 ɴKV!u 7M'%d` ;WR LJ"LBAnykF|U:oqnkMLV8㼚_8:m+΅ՄCg;P'$)Eۿ?BGBjJM =S d|lU|ЊTe薄E-šViQ*l++I V^閑x&*jU$%J VBg.Rq">'8jUʹd#);.z,?r]W?+ ;"VuH)% %q= /Ux(<^4U>̐ǫQ5;ZV–4]}%u3_2j=yOE;JŊs%"jT+ߕ"=_RU%$ +j*,vt24 ARY=4?aa@rF>l8)qiY7s9EBF#ld6'J4F4Ufrlpwciwp_ĭExY_DͷwPͧT&? AE61}|e5w( UzaPCH w1kT@}TB?L'\,f'_Ȫ<Чŕ:8kfwP+\?y?G :^bv0Y4ߍn?e)Lq)?i\/=)1`T3oL~MtFaGKzxzyLއN-QV4ot?@?/'6g=0PYA(P^I:Mpi9w QfW焐 ʎYQZzc9|Sg%([_/ػ0iE-'4ྡ'z/T=0*(13s!GzF5U@%*peo <Mzu!fslJU:O}r{Byx %wyeڪ|eA=n۳9N?o/Jh 2 ^f3P|dZ3G-Ό.eͻQ˙'(HGKT\*=b:DXCLA̐ф z b^3bD}\flڋOQ`}諁ofBq$,͉BSw3JQ>Z2S+ &ԓwHOVE?DltL +߿'g#c& ^̨(t&P/agjf|;29 Qd/'Wց>DqTTL&O=7ǙYIf.P|yfª2jo։jo)&infs!<_PA( GVʚ(Ԓ2Q3sQz~9e>P33\ ۃTU@ Ge>Vg2NPՙd+39 s [|2.&L|qT~L~nfr\ayG%"39wPN5P.bXuA=$*53 \" QIB&}~_(<4SN\su< I>84n PHBdJ5X{<@ڟQ3a+*_T&(b5AQ3_/Ft˷}`󁬧_Py/LmW@-TK|X g\Y_(`_o@7FJt0 Z<QğV'k•WSYfJ'<1PpO?54 u{@d3p@Ο.L;_y SQ r\|Vؓ׋Pb>.9WQr1 /=ekv l =Q\u3>e~֊|';aO{zooʶuGB>f 9|/3oPYxw7XxO*-~+ﰏʰ>c=U.Td#'ʢ?C{X_'}W-Mfފf&VD_?Ca%`9fnTxV`?/fOe~~*̐?J2_*ɴGqGƊ<ͬX/CA?3?ba+>p)9oWfzן}Z/b_P̄r*IQq冃R"+HLVDC~.ftL\וA V!\ԮT'_wd])PNݾu}8?uKoɗbV\tm_*d-'uaJn߅Z^*\W2I aԥ2]f.̈́չ.&q*#ܩTDt03k?&;~+/sis̝7#ꩤq]y{*!dx4#J\ו4LKǛL0a_1FOi}W}+yQJZoTdJ'D'GdPKfg1:-ևx|}=01^/s!{R?[<_b]˩/?w+g~G׻cbM3z:?盙}+G{?q~;ϛikN |?O_Ϳ t<[?UM%cfCraTIj̜T~}T~eþy'ʺX/}؇v_㾬4A%kfݏ> e,OA oG?VKe!*<_{RQg?T70f{&yvW[֟Y}ϵ?Y3*|~T/Ts%=۞?\y~3|g0<_q}Y|{LוHoW.܅\~<*7Q&u!}m̯xFNa?~[oOUF C'%%Cz~יLWyZ̗fin7`>ؾ_Td*-%?^k`t#Dw7-7g_bz# {c|x:SH.ٳ)|Rq% *%ތ7+WJg%a14_Zȹ|<$a> e'+Q8bGc>~ɓf-oC\J2'+3RY Y7!ez=ɔ}VbM2\rn?~_N(+I.OUV܏+ӨRI +o*y$xJ'+]k*c|oxʣ{?̺J~<a̗W+r=5|a?i//wBN ׫m߅}֛|{6t^㋪Z0xq\O{_IZ\w^~* n4;!oɍw/͇m|N,L{x?_>y򤿏4^f'?ϞY3ݷ^va~Oc8>#ڮﳼO*e~A7߶8Ruc=aBA(z|m+խ(wmѴ7ە^ S}}UL]goOm|eioN_ˆ<8 mq<Of~N!ەY菁h'+a~Z/1>c·S9‘3x%J?y~9|;_ay^8įsM|;3Ǖe|o/MtO4ߕc|`_gM3ejS=Q.O3+= _Ÿ F9=PQI#߇luXp3? Ol{Noooo[xaWz<;x\xh_/~;x5:u[?]u7ZnM?F=\?~bV~/xOrZ}Nkw6xI+/}||o2uϗdlk*޽>s,|;ߓ'߳~d1" Y]IUʝs!a*z>,WS潚ՙ+Y?KGcOA~|5LUA{zlv\Ec9ݶ_|n]}%߬5wk~ 89JZw>2_ uD7ISU8z|__]ULmϥ2u 5[se4kO7W25k?T]Np'[|=ȯ5Re"|?} bG,W+k)\5ɕ#l 7zHZ3X_F_Um7a*4A_ cG{T嗪*VuVmϖj*9aS^ﺿ}W7ۯL* Y䩒 G HU⠑!kog}ʏsv[_ldS[钿ڊ z%Q'| [Yɟ"ӧyT;(znPO|_~zKt> [Sc|hbi |o9yjZ Mp,q?|G"Q4UG0]U\p"k=U'GhhH8ğ+é_P5ݗcy_I | 7֕*ny}?TR>8 ١(d<H|\[W~Wo|Xwu?~*擪pdlH/VT>T ҿᘅ!z| O W >q\Y'T߸5 ?s9ųC?>~f\ y=7LC',>=5\%738>c>P񕉟A@௎1@cтI×F\eQZۮx||,e:Dsvdv0u~ ~j;ZmuŸ̏*>f>_~~UZ%?M/>Wifx3s0@wXG>Z2ƈ2 kA#BK8Eg(CR 8q<:Xi'"#c 1.>hED{ jź ڼR7exG-0|T: ,e:ێڿᰧ} '74 u1#vt`OqPf"_Uy8JEP:ЀK3aq{,H։ G`J.0b! 2(qDh=A[E:qDxRq} h 1tuet1nuQƵ;~ކCD4,J{g1C{W~/<" ̿Y/pW+*s v6!dեVeCe'#. d W#a0Q2*׷u+b$0.lr:iVG]%cŸ34lfxl11bAςE,Jw#t_1X!i=cձ%"Є@fsՎ1 IcQN)Ø9~+Z0xza|Q!+"{<HN C;~2,C"Culqf]sTh u5'UmFU %,ʳ8d1l]7,~]upu; [z2XL{e1{/>N՛.[J8SNgUh?ߓCn[[4PIfM;[,o͐~AM&~ddɺ"`TR*ߎG_Oϒ=|}jr}ﴽ=?hwpuẺFN|99LJG|<eg@/QA.2y^0\}yywZGh?Ӣm>]TxGřs` h諿0wNs6T7-|8y+ *o/N`ho,mJXſCc F;B i-f`peioB{4[sK.`# x?1gjŜ]dla!b 8<-P!nkbGQ':/xr*yq7j{r5kka?!jmq.lڍC'WЫ[z =YȌKSi{Jߓ^tĝ9;\C~&534S[&=O^Cl1kS\o?q{ڲ|dokbn/vi/W:^\ygJ8OIU yos:;7N] s9ǫ|[흗=I6xYi*{RSdU6UMΉCԓs:OV8紉 ҖO;[.'2+asN!ĬdU fTiB7ODg-wГ;cG.dj#H ?O֞.f֗ЬOW6pO0Fq$RPTժ䁍ɺF۰}ӏͲlD*z]۟rޯJWZ5Yag%67j̕"?D-ˏu:!~"Y6[yX!jF|o?'/|S*ԋ'S$L]?JBUYLn`+ϡ3ÓcS[D_C$,i dk:/PL-Mcox% _lVSλ{9_?3epuE+W4{^Aȟx;72XCD "{?!wQ}.ן Zo81'6ղ]3d__j عI\ulb;s/{ B!y8]NGX=}rR=ioc~,)OOc8U5B&Ղ?"i!/uLY-'(mɯ#-&*[~򦽌@^E3moNEuɱjO5@XOq2eQa)Xwbd}rK`,J~@߹(>YرcC2+~ζ7Nssy RMUp"ݬAԾ7W1YiمS Ko<߾T7 TPZ󱳂}aZ53y;-nOȕvπ7jv8:jׇGI%"xLDi߬eRǩ&@ =3ic<䯿}(^Eֈ,GRAU{}m_TenMWll)p\ooltY{Ruhu-*eF<2nso{؞֘(@1G}jx _l-/n;=< *GyXOyaKXVGP0.{983bO[ QpKfޟ*y?05slӗ 6=ZϕmQo_uXv?!'ko~u4k}́H`UfraPk=Idk4'inFmGo l ?y~zP>9c-Rbr ޓ:ˇΟ6ǜ!ˣs\y_K=yۊzy(3y{dmyq8>~`xfh1=ryeye<ߧ8տHePVb Ps:?yo=mY;6zjS{<weh}!ye=zOSZsDҾ:/QoW.9F=#x+uέ}[Dxd&9?Ú ?! L'y ^,r ܓ Dv秚b@@@9I ;H=~Qw:áݲN=B#k|SÏ5"O#<|#nj:/4Y7*rO1:;>q=#'2=G|'_Y5'λ.or'o%k$9ȜIO#/k4-5~x_{ňV~?XR6&/lt|$_I Yk"334L簎 QdЋ[?#oNP?>kJ4̰Ku<hEj6@FN޸FÙUnOKj>B!y >NЁ! An)2²ҟB&E!,g5vYF䋼-q{؜Bdl&tWb㮓 }6pt{<$L6Zڣ8/O#u,}fJF4{`TWOfaDui6lcĪ4b,$&)Ft6W#8uzONBv͈jm/eQ{]~l2"O#uY6X"j|ÆP*;Y_`P{O{D{Rz~i8ߵc#XUX ReyF~]6U3b#rwۿo"ziX9Ql%f7S'[_";'a9ևkQ,Oop.\|8NYaǡO>n#H[Үr{}鞉x<|?~yΧq1l6#+/KP|  r{_/ Pp:mA*(c~Ѹ}q8`e$G!jX!jz5&y? | wb޿dzSFxe_pozTE y6:CR0[E60 ɧsg4S''otx萲'0 !{|ST˱9V.s҈Bt{:Kos<s*Q\жitG@'mP1%yl? qN~w:jh]8-gcUq4qP4x>4G5~QeȓP425'۲TQ% ]>g0=@c6ca=oa, u|?oږ5}̠CY`O\2x_3yY_V_T@7o~K㐗_ |v.S|^3;gO|}3|n^>Q[gr,yae9Io he.ϓUO)܏~|>?Kg=gԽ;>g4d?7|xk ECgX|AOe5 tOGE>+y^XgTS]4ꈃ˜zAT]ȸOݛ%g_?Rr=!|^ù|B.4x(l__Ps+n|Nf>cwo$feX(<([3_E1VQFcd?y#3$Cq]>wGKFWm(푬{} BϹLlXI_,ο Mϻ p.x>ү)9A'3(=g<w{T5Tl'zdz6}G7+ Hzic7훾&Uo[V^6{CZЍUՕZc_ gp}ZbMQKXsi-ϗza s %37h VVy\QSlj󡥘3saKq`W58UפwHÖWBZp[)w]W$/?fc\JGKN,+5M*dʑΑՌ|O[qY{4BE]/OGޚC:MVz}*/t0d/.&:HvS]%?7 @/RmkwFe0RPm"GtsȦ);n+QlBޛG^inmEܔD۫ W4ȧٞ"`)8偌:HٶZs|*1ZBiloo륜~+~f`׈r"E42IlG^yr?({5~RM ^RW+/ƥ,Mf* lcU4\\$h*Qi$0>~qi~wu`Uǘ@X<pfy'3g[W5s/w ґ+7&J\$\iW*^.yEق!TY^fYQ"QE־nM1c;n{&QQͧ0\#g&Q;nR>mO>훯yZVT~m%#eM5ZA\ ϣ^A W,B):t{}?=exeR*QIg8R΅Tu<_ 8Gg)L~86~KQ3W/-ˇ34 'O3bUp3C{豹/ldow˕"vMT^=߰ocȉ_f_n^|{k+7WGgj?Ux^Zgx`?jz'*{iSMǰ=e(*n4>T[|٫X^/|}U̝>Ʌ@_T><ӪCn@UcO~\>?\#_y]Y^?xq՟=t?y ;|4BAwnΥ+_}~-bm2}c/f.c*j4[kyesE]7S۲žNĂyվaqn8⺊V6upk׸`Ĺ_^eyŪlw{-qi8vugskQҹA}am c% 88Y _ׅP{䑕2_qU<3YÐYh}1Z9'9[Lj=)y?Rf E1oX`oHpsw LX73a6Nb"9f9x䇙I,"$\"HjݹQWOrŜbLZ WDh㘷@;CWzzGc\Dƞ>lz[ۊ;Z'3YI1r37q '17 c0"?GTRO"fAc%k;+f-X[]@Rr{Dak ^\(f|,oXL#:Tz`Un7~C{aVX`zDk6(qgP5d?&דGXoV+ SO:F-P]tǷ*9+n4TJrُ\s.g +{i-h…쇫p/k*RU95X=YZ?\%|%LjS哯kJ>! ?jf8Z1`b̪m8Gt,s!{W[T`Yi=~>,8"KCp/K~i8wן5*Z/qwq&3rf>˲m;3ko砐jޟr8ў29!/dtU1FLs;grg@wN_~:zߢ/vc?b+̦Oxz~ѝ̙]>_y2QޱDIOkOP=gʹo6/2JW}>ߣIOn^d =m;Ne}s!s_pV@}x#Ǘ+m㬾}H.|:]dYY9cޔg?Z΂|BGlgƾ36VC<[!;xV,|k;KzŶט A{Y/XR?!7tμn"fFx Y|t ֕䯾,Fues̤O{`v>VHkõ9̀]'og k[%#d4ɲjWLۅJtf. UT_/ r?Ui;KC*SJ -?  ݼ[=~|okG:YQ}?pΐ0G6! rѰЌofkmG1k cvQjl:+f[!^x'mFql;@5ӷ끊1nϯ[dÇd\ɨ7Jyr2CNJ)OuO>2fǸ c-59i(6Vd 1̸8~mNT:W߶qՋeY?ߴh9!ul}cubt;Ebǘ_a _juJ3-*$#KR+n%e W2|= ?4~~'O{)jX=^uЎWp^L?/?^O{P,ygu1S`~br} VD'ʴzWسTEkݨH8Sr ƨ)z+RO)9zVC҈szg+ԍd:1ץ8^=';1?ο"v'ׯY(ap9ѧf{y}f?C-FC-2- ,OVm({QpjU~q}K8u=d- O䯮;dfwQ1jzj]亵`ԪCkhP9ɪ Xh_5o*0ݿId.'8#rd1rÆv#9qfqxE6UƏf-r7NǼ:tiZl֘y98dviGʖ0!dv*:4,qNS_hhZe{gz +onC6yę!%ާlA\EGsgull[[,l['mx_;nJYۆNm=C]Srݿsdy|7_y<Ȍl}X}K6%;{/;r]#޳+lϥS/[ 7q+k\8F`O0܊Bđ_-]}V^fc:ș{+:߃-yr8ӟ+[.{goG/ߝ<eq 3uN4b^Ȫ^0d Y>s}br w2^VӦ?9[nZS~NȮ[>eL뛹~NG~3{ʫNP{=@gmw6p#-'wNa+"f7؜* c/!N#Xi`O/ĖW~@1܀Mζ@QyOk?eO+G"G'=~fYjv ɕ ),m Gr%M݋n'C)bGy*;f/<=E̫'Vg/DO3үzW;+-t鉴ֱA1ymNU5 $U!m{bWUUu>v]xi=6c#Ml=gUCsvl?p 6!Yx#?s^\u'XmTS;TIuF7 :<k{J9`E~u}gګِ穒2xvf /;KLg{}ꏼ{<.^i8y'lA{9np+>*=Ur? ^#Mg{HqAS7up>oX?죘 ȶ8 pztvcx\ゲNav/k=a8?هJ]So| x\>bw+Bjr]ߜ|ݟrwBz|XA=H/Kf7^N# E\>&KuO{;ܧ9NOP6ηzٰ'=֏sr㼬U=5(VYy?hXs.:I!!/MzOo IOnnOGaqE8 ʳ]41GMNegfg[o;Z/9cq\#4qclԢƱRW\ \<ޘ?76:cԌa!S+ʼn\ƐǷ^Y2BF^UP|r~! 7վcי ~K!=ĥ문JY=@_!Ov,=ܱt ϦJƕ#L dO5H}a"NdJlVUUu=u~ i[Yy$OnL5y^=UA&W铋ohDRL&!">9;5Й JW'6Ův,'?{Q4Ue?yǥ2#v]~7GsJu=gw=qx+=eAȔu3//e*p(o:ܢ+!>Ik|Tkw4o,ԫL'{)|;9tw飁Ƅ8:1;TILL{#'@[$ǩN|Er$]x3#q4Zdq8B"Y Q1USyE:-,^Cȴ#La_d_;'zŠM Yɲ918!], z A%w#*z$+O $ R~tG]u?UE;lUyzD~|rVA.;|h !85['.9N=ņ1<Ӿ^ALzCdNqb1zN̴UurR"C }>V' ǧ'NOU51U5WAf=a:>=ߜH}ɶk!fL'/G0)Pm^ǐ8,ƣԗs=|upm뵁 uUYR7pv+\8#C6fa9~n7+1w v]6pCKU8\*mwn1&)I:?J.n+9. I^Ywm+󠃏ro+H7FJr{ 铱Ojq;l!{7 nwuђ?y}^I.U1j:TjZ,w^U>rF16O~@W'<z>)~iUouclД(d``^/ySY}ؿk*|وpOU|'~}O;>d؋464ۋfG<5t-~%jVU)UJy}JW*0PUS;x[ok{w /WLE+la0?}*Rvo|^>(u{w(aC0\E{{꡿T?JMv.ǕŗixЮ&c$[ qsm/*>׋@`!b{K$eWloň_{Yu|'D0^jab;S\G #@OvnFEM#($/#r'p?%o#Vjk`MS/OU>>pk|,CoO\7ra_F,O+ψ$b8Flduo1\\.DQwMV쟨WoeKD⢯zf9e{"&O_+(=畒.؛Z~|+a[>yn"n&۟RLX 5$Ⱥ^g]lSMn2TC22??1C`]WI_=~_>}U[cM; 0Nb}ޕy4z[Hʻ*È+w9wW&_2ag#yp)?j [?+WO7W[BQy$W~I׻|Yo:OǓ'ZNEr=jg=?^^6%}![:۾|~#~^-`pXKM>x_>/doI_&CM5b[_/[D5"W>OX,WQԗ؊w=⯬ }zO2ۈ6#OvT3B,Xt 7_^@|,GUhiU2! xH]FԴSu=O瓙lMrQ{>L=Do#Q_ yw^'~2#CB|'ӈ]?A21gi~J|EG Y2Yp?95sl`~6;%r=@0|@ϕy F |#b(7%5JIw;yDz˲a:aOA=?o U.霰rW'ި $6ާ+k{RC)%o?{W2C^8#TOHhϴ~^_<ޮ3B=y xzM_.zG|quM Bjg> 3e)KgB`?"Eꌯsߏwe9TuRbi3^io胬tW+?d?({~yrxOP]@K qD>:O@U_f)8LW=z<3Vxj;?#3wS<2}?w!;9>gƣ(ߩ_}#93?V">Wkf gTTc~2̮w 9cW&|1O>?_ģld3ߊ$/y_u.w~WϾy>%tYAB_ۯe% 鯯}W>,odO?ß߾x/7NmoWڣ /p4BWim_e=z۩ *7N'ɫ*wsd1>=*oXa47=q忍%KsOmu=xr]cGn_F5^]gP/6bzn@c_³į^]~C'X0 S|*;Ǯ{*C1ۣJ7Hๅ߂ ^3Fg}9^eG!@x=^o'ew>> |[,'Y>f)'gC=߆MKEuu&>x h_6dg^`Yx8\$и<-+ٿ1Pͳְ(#ԐZwHf J'gܺOEvGB>Y'HV4^S/{"yxׇ#{rV}",+%AO#wO譆-Oud y~\m[k{ȕ߰+{O5͊WkS)a֫+o-o\n c{7GGWG+8 5(A*GFK@6λ~, ;nmא||+[O{w/p#8Sr4`]/m?Z竽{ 瓬ÍߤK|vⰷt >p]D|}_|ao o9fS 0M֨ZByzNnC{ foZݟuO4{ΰ7V>u;iy޴6} rhso86 7KQx-',;/G<]:qSWw~g^Įbb~'؟jACI>f3v1D bEۈ $ Den1m+{ۧS~yc{H<4tz=Oܮ-u7Ɯj=]4UߗvSA)<(A׌ tc YE8̔;~-"bL VBU "_=8cjUʡ(Z}ϫp)o?!m+"iƴ; X p&f)~YW;JK.H.Xkwǫxjt33 R8{<[+ɞ~GⲴ XIR~KvRUtp8KrclB@e@%Fn|{4p]q4(KVzg/Y@^5t+2OLRʗ7^|! ݥwdm:``|Ѩ4.60,˱P6f}z<0bƇt)P08|~U05jX]p|tdg.cd6WIvy&׌=a,IJ: #f2#!QBwBr5RPtGޒkg q7ESRohvC~f4IM:y|qPk4CJNO!PRLIoO_kSI * d)dK T}Ӈ*iPW%NLǰC>Q$2|2rn(dY Gْ;srl)@ێyL{ŭ ヅ}MClV%In,Mw?w7[B7/h=O1bN&,<>mnMacf׆ ˚(1^$h GaqcGu}1ɜaK(Dl(40'f+]N#<('fPWt of.C!t*H=nwgO,zJGh\gl;:OcqHéGy1ˑ'$"213pSC"*K|8#ٿ@ܣSK1`1[l "ڙ}2CopE᜚"S vOe]% xƓz691f{)kTGg`xW֯ˑ^y{ƟxX ;G#mhS)Xwh<ѰR/q8#)0;.fJ|^U&|Y __-4?AD 3j/&QD||[.OSgNx!Կ:>p4Wg=OJxHjќ RT*aN}?Q?é1"Μ of*KLE"s1ȵp2Y +;"qۑ=*zJM7c Rz eV&T6![0Ӂ ̝SaQ ""vSpޞkJ-o&^~ WěD^d$V>]ȯiKjd$9~AWSLKghi1PЩbmlݤR*)纩N~W7f&qS"~;3rp(B=:z>3d*"󦞍#\T۸_N~N"3F|н9 yq#1m tKIӪWj+ηYSDNJ8HlTRgy?!ow%ѻ1>Lv{]YoĆRrNDUo2=.'Q][!$~s?މ7bIQy|دԞө92X&2q ]kƇDmaB?ʓKx˿Ěx2?m B^$᰼DD|RC!Q5Ab9嗹>L3jN"x:{Ndb|$F|Q:5H==ij}$OS1?;|ȌR"yCKDlģ󿒈0t_L1Y/"~MFQ;뛖OH,rB=|'CCM6g~ a}g2px>W}9F{ΗC n.ԂN_TN} q( ϟ{x+oL=z 1  -edn}Lgaz0dWw>O 偮@v/0(Ϸ~y}$/  oV]]lo4ez[ƻ=1 E^y^ W9Kߏ|_W(ĤO+I5q}~Ib>|_{w_okyux󛖤>,qv97aKrџ,~+S1(7=|fFB!Nf(Pq "Aޏrc}y{fm0v>5~_-\SߴپG;eo>!}9޼3␸\/iO08;>3(t*qRW*\N<XbU0qc/'L"M"' ? o( )߇rƙulc[mǾ*S^k=NmSzb"}6ZїOmayG&FǠ{xU|ygXIql%"џ1}gdh5~=ļ^As}" QL;%^_ګп~YO^_g=ؾB} 8S߶)4/S^j^O*~/?p{O*/t|䡲O1gdh֕6/?ӧG5Gr7%.m_ =`kP?٪Mx8z/P>mO\*ZGᇤ^~֯w&i!yYvK&hϋv+fR_3<ԧgٞr)>l1>_n[cۦNu?ϛ7z5o$hSbX90U=MCi(6}??Zz߮opl?)5&h֯y{6?آzo4ۯ=S oyХU]d-OW$ 춿%N_Ϧ2"-kU]q >/O_Iytޏ7ǣ%?pmgɓ%.[~S.?C.\oLSsrAp'.Zt~E ˅i,)\ ?B##&B,-O*$~fI.WT'İ{E=j U `Hl>j{X')|z];)QqTꋋ;BZ&9ߐk ~Sl߬+SSy0;m,=_xbB}eS((s=ػ̧=/߿hx<+C6nɅb}%FeEL~O˿أdUXDMS_[pqf8HR&j.o)g_-8>,L= 3K{ ļOgJܳ<4|w> ?0" <4fC?/ Q~XƒfGA;^a?`H WUp`p ?]<@GT1n.l!OׄVN '}~`lܯx CZY[-~~PoW~>>gCqY]cdž> ;9=?b-̿&\oR}П71>z|`0wx~.*g)?mb<]?Maƒr9Y8/3q/ 4Ų_U>Y~{{!X i}5.ٞ߳[^/'6 p⥱/)ʌʗKD[Y_-ΞlՅd8U/vZE \NlZsrb/8F1Q>YOg}=-wxܟq9qߥnK?ɜy|ds.(:}K?8RrF-跀9~3hac?\\_~N̉x(7:f"(#M⍲~7ˉGqLećCyc~NQ~\P?~O8۪?ĬoA%Gg-`%q'O󼝢:E=1/3'ѭ! ~B'b/&puKQD99x)|ޯ'1DQ8gns"q̘SpF}SU@$`c t1cHNܲB}ٞC' ]18(oH0=>}_L3o(-b<q8CmXOCw׸?_91w񼜔) &w}y^O,LCb/GCAG\OYY8#>otSa0|y>cs)3\?88,zGC1')oO!k< $pn8WFayM%JT:I<~G<{pmo$|CTz߇b1z1e #Pٞw<p|xvc~Kǧ`$qΟKGG KHb_U?㵼Ru,%,\ߡ򠼽.nOG}\>^<O/IPD /e}{uI`6v>|t_Oe9/A}ŮDါ~U><~(&߾_9Uz<7zw1I#]Ҫ}}_ \‰Ff_QpI6 $_yfޗ)bұ\{}H`}Ƿ?-wxV?=7C=\?;p1&ޞCqÉWTYSs<_;EO zP5Mʖ^EYp&s!}%ݖߣs~U'QL*W4^ƩC S}`|pc} X6KM1I[btj<Sm,% WF⦅Wu~">:D`I}qM}>lN2P})O1c9k`½Gxxz0cazǸR^̣T?Y}}a|;m^^%OgK؟眯g{>kS'B`OX>վ`/ ={>dbC+ʧۀxxy''޲*{y9k}[=lHxۦ}n})뿛wSgKm]J)Y~n 饺Ayz{&fJ\d+Czc<~1(>g4SW Yuڂ/Dzg=̘'xL_Ul?U~[y?ss]V=ɯQы3Lmy9+,13"kyK>1ah;: O]|_D pᅰ[JXAw܇X]^HQ| w3n"KH9|3҈7 |so*y~D{~$^~ﻞ>R xRWW3s7Cg?z^~ugjULg|I z^w=y0Т;``26Vx<ģ"u t4,6'tj@xc{7\`e2~H6Lx;5_=3/o-_r_Y,?#~e|0?y|dsF-/ߝ{?xay~e{C{+|5%;?RϽl0<\? W_;3ut|o0$~Wş8pz4׸~OO0OAV VxjdTp4~ t+k&?_aI/Y]㫫o? u}k< ]xu㱈˷X=oʋ%wg_)(b>)3Y'_d|| =3!Gy.>1ؿ1,(w`.>O2c]O7f<륊參?b4aCfgf.ĪO/&$>.?x}7o!1w+s9/>%LM ~a~sƕ|G@ޡx.~[UϷ_'V3k?IMnnuxʏ;z</Ci ~Gf}GeyW%s,TL$y&?ǯ~S6]|҃ QWw=,00+hT? ҆Byk(?ps8to1Med ? 'm7A9)|ч7lq>į C\[yeR#\ؙW G-_p a| _&n/s|,CNG>S׉g\߃ļxg||ĹӍS::swH'8wiCyʭoA~S~򔷇N=3N8 Y#ڟ|X.~R&ixi'ʼ-D9$?n+e &)s\xES$ڼn1e: Հ?=T]~4G9d(O ҭ_dlߟ S&7)8>Zr /Iŷ7o^Ofs}LfNGnXl9`oOƳN񛂈|<=oU꟧k$a zv\=7O8x~Osr|E{+guʿӱ-]Ϫ3FX!__٩?qFJb|SY@Mg>x 'oCP`p|ߋaV'׬c9G>}2Oů8x>:X w*z^^Ӳjgo#!x KwcP_='~vsߙΩܵ?y?<|{&x$cy[mxşǘ~}:'تO|_Ou r^/r-}X2w?D3χO%OXl_GsOSR`ba/ |oޖ! g*<3\.|?OR;a7=_>,1HX?S-ЍV>&^uK|1#-~2t?}c b_yF9 0Q_w"xܿ_~~D}d9 S+QY|Bs$*J܍7YIٜ/+~TXJ7QO|Wh~a>b1sKo>ϤcF|TY?U/wJefi;Nqݘ/\{&KKGߋήe0ص g1{e;wvz<'2޸=ھ+s^,Yh<Ɐ6?!б}NƟ~嘯A|̧vx>kGgt:~kT| ȐE#*#>ě\*|nE7ɜB|wgq8q8z>+35g1b1T\AmxO 7|3x0OzOwHt{[Կ-'}u@ϋ;?||<ៀWo%<`>p}G|oDl=剧f5A+.u8Kd-q02η}`x6 @af)_300C~WG:{81 p_:3DgZς((C/a_o81Q}UL U?| y)"w[ۖZjٹro7\Km a0B$fOXsR$J-~cQUS ^7ة{w<&<~>-/LU?r܇8w:~$\*$̯(Š=c5ftXnW\"mɏV shڂJ`-wYFyA\sq􁰦<ƚ% -oO q:ٲ`}j5$.z>p'۞hڎ;D!7WLJRh%ZxZsM[ o/.[`K Lu}_Xc(=K??@Yp HhfK"bS߲ŧaH\E}a^q+4XToL呉yEZxXy~-yt7a.Y$N)w,JȬ^UaJ7vu-@(]' -CʬVD@hĿ G~ R1v΁>89!R[S2ora\|~Gæ$gK B7 f@PB7wᯀh)`ӎާ@Ո^i`:Bpf+`:YX1r;ΥU}8"jvՄco*UP_5uoAlCʀw Dz_?j>Y U-RNeO-'9rkp4̳r`meG%^ Dl7_A8[b61t9BSOeI \zxaJwC:ثpi+S/9 pVн,;*6nov> Vc&~]b0UY}PmVV4ſg#f6,_0[,? ap2;RsΐcYeuEy֡URU)EG/r`|]8UqVq0T- XGi_WXc'mߵbjp=b+!;FVZy~t6;9M؂ڡʰ+!~g{1 E˓0.lGTAwg;&a9~L)w;??:|@ԕz;Y[Q>F|tr)N 1)5Vc޳~;)]K'`9|tWڶ}-LeNTGdFG.w~'^^x{[>>BPfi =c뺖qy!6zAYi#F܄+"~}j^巿xЁLrt|EQ)O*8 <b![}G۝毻'1 xKfgh#9.@;<2l070%C+]$ynfW h-xrO7IR#+"ThPҧi688V zXc+"&*݆ 㬇Mp"l§fP^a 8Ks(9#vtCܿ6PEfew'73zpC#mQscn;Io8ZQ e# ?5W9jnxFifo[{ pWjuLaC~㊚_/;Aڸ`J^t[\mԘO-9X}khjZ-*wCzaiv򒟗[-ܹN45UʁZz(_vi([nL0s.o-cM8 ~8E f ʔ9}wLKR6"׋o3_V7b,=л?!V)3heʋnԫjH.yj,/ZΠļU(S°0<cZE8*Է)DTs f` Aؕ7).fx;!y3i=e d稅L@ɝg lQׂF>(?c&0.xMAZy%܀-u>?#*Y>ĕe|,1pWCDy8<)|8{;ݟWݟ=}u8?އߨ}?ͽw vLU% 64l7[[ c=;Ej)_VZ ʘaBIMi5 $Op<oY)q37t/Pi*۫ .CQcHb&Nn_,טyqQc 2#'sfhCar%x)ialmU0kA`?fWWip4C_F8mVܡ&rbAc5JRjp+|pF?_@[~8K~c:)wFopsaAL×B70S{AZvviah<`L3?p)U)mkRlq%.9GB4C*=ۣ4qd+*=!+#oG<4%K:?7'|H3q[0EGbqFF)bڅ,s2QS; 1L8;ZdLJǦ=9N8q+\=l$;ŮPRNcC ~T $[:o x#{\/zs#H\)H8Ued`x:*ɄH@]:tdeO@Sd졟(F &{ Gj^fL(=s?]BYZզޗjQ_.Mn[moO:kI_uokJ0 NQδtG35t?5L-"\_k.R$#U[Pg|}R*nP;$ImM^=hj֮^%NMcWr{-^ [˱m]-YGTՙbCuHBbJ ]w7:-:E?}bnx$q-Z4zmꭵ[xKϦYE Q82U 60P~=An5 {yU&i*m~V|)L& I|?_G MtH/_|X/->6e8䠸?p㷽BY1?c|<'t9޿$U~)brS*X`;P(<7׆Nu_B&_w@W5҉jҸ=76SQQ% n@9d-TA}Vǣ8Y *H3<p\6tB86$!бM*#AmGb`yLXPW:[g:)09+w".{Ms8RxkQ&Kn- E ybUZ],гrYWLl K)hM\_n .~mm % yEgj>.[ r&d2~P=Em íрUX |m8c Ž-HZdm9o/oCx՟ncQy/Tk[gr7 K, < %.j]L\SھgN>+agg{oD@=?Aj>'d &fȶ9;a b2+ rs7% 1~Qe! ɼ2GaMEb5|S$4 :%L0$N:Ѻ\Z8#1~4əBwz䙗0;D#QA8U>VI*:cЄ;OtgzۮxK;㐫&dF#* kR,O%@z1% /锨*0V[eD8=$cλĔ`*}8x@AhQbJ'xƫ<_7joת<:Qa҈ޣT>҉J vļ1!Lex9qXO9q0 0t!qX.~?am(m}p7Ԃz5k0O1k|?} ƃXlpcwq&7Bcf=7KLyxC$ok>C91߀ԉͻ}P8.y+ \ih8 mt]]58oX 5LN ϣذdTJ>'#>6NӚ wadЇb}*ˇ ~0_&&6BZc}58M\h6ymah~7tu jԡ1m]3MY˦A LUiX.h6 WA>Mg=64Z59UEsr8j>V5)ށFFW85Ky#]4\ĮF!j,'.E8{ ~IL'> ]|uc `#|Ip?uХ.w7.u)/sxj>q5mA7khm~HWAxYxKm;,U8Q!\_~_z  ǘjqR\ }!4,᧙˶!|<3Wj$̪zzӦwz]x]aw`F<;izCx#aAӦ}"mdžs5q~'i?'4iC-)uɏv9/&$>|R=qy^u>ՇeyPI_O]ĕvy/:F C)HM^򼮔=)o>L/]5\H$^WMg!,w8:Z3pp]||bv~>_aϯEyX>}m]i9<ߛx -foҩAOǵh<@s7k&J23&_u;159mkOp p_Wm_NOsk4Ʋֽ! wlΓ]:̧<ߜ71>Px^_U/\XǗh׹ޣy 7cF/~s+" Yؿȟp \ss~8?6|a$iNĔ7cTKڿ,5o4-q/<|&iǨ`|O?A@ܧ,-ݯpηrf2`~X+*L|uں_Y^JnTWԿ ǵyx/>#|͎ [^g'oOrɷtQvsT/˱Y}>&F:z6ķ?Mx9h$K,FxǫiD m1ai9ct#7Nl`o8S N!Ǚ7JI؅7R5Rfq/Π{%խfL " ^q_/`Z05 /;RrXiT5BŸ:W&\#nQ}hUIj,QeL]u=*~W>%fhb}"ɢH-q1+j;aB!#O.D5",I<>' ~ NL &b7&u͗kj|xcJ?hx{`Dz{QC=g_L77$&()$zj A ŰVbs} gB P̪D]c7+7׏I$xo~1-/J2޵$O ^8S"ءJ,7~''wG7|oLu 7.7| ;*5:\}ZãqUXS 4_,=nϔĴ} وҸl;]w8xf4<> 8bO (Yl0y& _AF).?B7OnYfw.0_Vo1<6',t[xx;zAl9(ˎ(A PnIS A!Йt|C<d&kTa`>ͥhO.;^]|N]{ИF{]'YP?Pb~j #Ȅ}4tE \d&>NF3ތk5&좗˅)iu& =]ع|BxsxUe %ҭ}x;R~ER7iOWh7g^Dtߍ?+|oO+-5QBE3Oܜ^a|1Jn=B_0alc C=hl&ml_y)1 SHGd ALb7̀7!7':) Op?T$g dOCd-]JkmPb^ Ej7יCϏOҸ}ٝݾ=@uF)ǥ 1S I0Ols2IUaAþԎ-lT/n6~b@xu* 0Hs g$%GΎ4/]Vd+*I 2iOʡ ƍkSNgǯbPxߌ{{XT}z$CK?8sDpʣ$1 &O\Yt.'ɛ./u;|)!-γDE~1Z⇭~#/G.ѡ&9뫌]X%ܿz\7XcCcDRyР| Cjn} KH'jieRPe`ƥ!?3nwp1zVCVJ8 ܅1ݾpFʍJ(F&>< u_(?dX:GWLqp kr8dz)<(o*ﭣi1:yW9Nw"w"xN,`:{.yyN]UWbDf'!yCY^1ύ!p c랮ĖZ:׀!vTv'Yx5g /̤?E΅rLcotaJ?S@^nw'uc^P8?ħ]o{|gԑk8Js0_$mgtzbjjХG ƻOM'pGWya6Ja'=aV:ᇜ,~gptc:̷Ua9`n!͟"(\hH-`Ej05cS+{ָjjD]:zR)9yjBʝO>F ZƓ>%{\,۽խE#&.4vqәkugnIs5Ρ7k̠1]~@p"W0a}.O2)ȌJ]zԷYh 7̦T>zԙ*ϻcP% |y ;qktʡ ~8)*HiY;q@zxjo{3+$ow '}ǎxsL\"N<*謑铡>t< =Qqw0Tyu?XAHݒ-Zwtʆs;o&q*sA)xڄ"Uq$aJ, 0>[ =w] p#懮Nx0-P$~I^]WjNc*l7߀:2h[wK ڱgԈԫ ܤ[K1)TWoBY+Qށ[H{ i}~c ?47<VE*i0w#N3;p4`ڃڣF2gۦs7 WY#M^tZrJΕX [SF]1e}G)jȔMA+(Ό/ibwZ(v k|5ǿ\t.?l(=?7w8n̘K pO]^4?gЕasg >$$8`^}J8[^x%M7ăfʣĝX~09^-ODm=yb̢J8wP ,~H~wd4£3SG- ݃Q z>5zk3Q8O`K[gaKKL@3`KnNX,iN &Lj*6]haDfnCgӿY0lU8w!-~w[:qc4:q^ntw̡̐.؃COA(pf<&>X=B5z~m~ߋ1qo9)73st&e9Ľʹ!a swF8{-=Sj)c{rt,d<1wL"o|.!$,_#dҍ.p9:|7n|&mLޚX# RfFY}CHW?w:[b\evm?R%Rq#4}7bۧ~K nM>Fp~[*Fٴg{ďkٍWDZK`E4O~G:_+ch{>LSFw5MxGHKg()v9 Z.7yo}ܧ箰mW}[}}@3~$j<ȁU;F_cND V~؟}u7f=hZFf/w 1?8š,Gypv_iɰq~.I#2΄- /p=G(Vi xa7ӘHsd sK E@ssk$ծ3<fŃyc:JG(=` <&վb jHI ~ G(`M?Ob oo}#跜vKC;<_O4~ތ+#!vVjI7ŗʶbk&\Vuґܱk>%[0հq>*6ѽhI~`?N}u:rp/}!?[[ѷO?\_r:b=JҫoU!ڕd.|΄n>Ety<|JϾK |K|y\೟4;9S76jbrF(^grPEDG'g <\4k'z|\]s^4>gp6DV+ "J^:̰oe޹mMt;{Y+1YZ ;Rh!;Bf?jvW.b48BC*f B]ג#:g}׭0cLc 'Bk 3UL Ma ͙qB7G6iF{mC=Z_{Kuexp}&߷8,c9$n̗a;Ye=aZSq ОA8E)_ko񺨏>z"=W~/G(](YJx^C׼_}3KY_Yy}#s?̾/kEhL ˎ*Vs>Igkl%{QULFc3 ;'G{ Ӿ.ymJ8 pp/9/C2^>aV%On|4:>&}4Kwi'sr{ԟ>?j,xz <3_4߭O\,>Yxh.-yPo`qpw} ]_|Hp.܅5W^frXa)o`q;J)Dn"!Qm@xo@_P~|ixaϏGe8_E篯V|ˮ˞o[?g35}/퓼WγɲwGxS8YT/=۽_/|+^a|35^'joU8Wa>:J"OW? '}]̷1VP;_.g>v. uo|?|Ob)^l?Uy>'/_~YDm缾Mfp>,7|Ҭ~8O+\-?8-? O,Η"o}s>|Oy?AyPп`z$Aտ[9\̷y;:/Z*oFG?PFriTp+N(6?e >=<_?UUjAWQA7 YMI=^Oe?)A%ѿٿWz$7>?S۞8x1'_=ZN(GɳNO ܮ~!)nA[ҕB*NV*?}GHo}ܗSwRQO>/qr#J0D{~Q"FO?~W~sIHx7?A~>_<^?.OFy}<_}~ʻy'ثx|5^ԯ>_˸oC1{>Oړ&?%Nb{~қogHһ?f~W^-?}?6S+?ET8<|H=-MU@^|q,9qi{?y)ʣ̻s~dJߐ}o7"l$Hq4ҕ>3^ԉo! Uն)D3t⫶ۓږN,a[vtl{U˯GYi}q]B]!6 dY %X}] eW]?h=#I\oϧbZ n;8棒)7 7JCA "׽g)ĞNGEN'W!9<^QVnއ"鼯D"NrrOb]y„=:bw]q?rBS xuن`Ze] Mֲdz%['g8 1? 25p~J~i!>i%yc?Ҧ+k?].r%0J 'Wmpןdf^$FjPc}:muRJeʤq{;`ִ~7W@L1-ɢnt*W^@dLu9voRg1"+,L\#Ze7+zElQQzV3|e%~IЭҭJm>^OK`{Qi|>+ˈ 3g7䞸U g˩9LSG0:8y]yudw?#uPΣxRT?/v5_-ͦrrr~oy##"%SNلɘܢ>urNHY>gMb>RX_s;B[8'#6''c֝!r,{V}%_&y漘oO&d?(;8w>[MTLuLdL2l|~&x[[JU?&X'<ҞI9`>큗I~"."j;yg>!#Av=|0_>,FaUy 2%" Bz ŒL[UxzTQ9AO2Ѓ֌SʸgkOݗR'#,i]{'X`k?`q fPU{_bw۝q10,^K3ԍ|<`ð7P$ԃFO|p“?Zor#_Uuz|L]H_G&9Xn"Urb) w ^y&L#?zmF7薕w'_Cj̲WOyxl:Γ9Vb7碾g),}|oAςty+-N=;wY5'MHo=REcC.(_ jr %{ߏ3'>.}a7=<>Kt=J]ޕ<ݸ/K)Tױ^bm^ 6b}g;x^?9I-3x'/ԯyN۟(#Vb?CfO>Yv1Ɠe;(>|ҟUq*ϊTz1faUũa4fN:3#{{9/{n_<ߒS~P:`C8s1~^~،YV!}qEn9U;zpUjeQ|q^$G{O*!;~>xJ#1 i“~9CWY4dds_O}럄R=R՛YU8x>9GyxG9_]y#3>.>^R5WB=~#P`1#v}~_8 .ozz3dB{Fq޷ Nx ~-2Fl#;ޏ>{>Nz䧞\zt8Sx]،[ClP,q;_gM>NMQ?mfFH`FسSqoa{;5mΞPꮃCx PET&O?>C$џ[rS(Cn&?GE.~"2So*5 f vewrZfx q4ymgtˮ&/3%x1[ xBDr6Gd&a>I^)qy 6] /lp\M2$ X:߉ x7͜T7C<Ke` \צ >w%iD3 q~W|eP!ƈSRp.$899 _ُFWG ֵ._#eipwt[" !0~-w7]c b ~pQo{9$hSGWuExo7t|_6DN.Ǘ.띒A7$#pRn IiBR?|:I4S>[*'!ɶT8v׏/_^;I7|[B,}}͇p·}^:|f6EJ7"k3̋-޷7.!oN+v8He*[ eW??!/•،#a|8gF'䶧=TbW,)xW-\Mɞ "]S|bYgbby^+%_h_UuDNؑX!q__b$v#P /ǿXf>bKz+ȱOgbSNRoڄbDd+:8b_XUHpdO֊3Ŕ;py `%|ps\v?bkl/D});} .wޓJRׯEW\2d}~_ jhs4+I)oSW_sΏVJLGTz?mx>k׼5bqxD;,~g?ex;QOn?B]i!+.Qֆ Å\ZE\0m+tZ??kۧgf$_p&(ߏ߹}ts '#&w,s*ֱ -'{X~s4gC RJ%?w?~wy㕫dk9`oC%L>5q3{>S_})2""6dVpؗ?Lߏbb7?W| ,S#?, Wp װ%o^pn'}%??8ze}wp/\wos_09V3͙04oAp(~PdbX0c=2䙘O'|T_~J,ogw\G? [>80"|sŬ~kf=-_Ȱ9=?\O~pp_V*)}MK||iwkqhO+Z8FXwTFe˿1_<93x{v707x|;/]y畯aүσf/ywbg}gMnޏႲo9g3[SvW{>l;~rkd,|'lxvܷz~Tn8c~rWr~|#xof~?_Nxw/8s&׿g}y_z/b vח]?& ?U,9To~9l~}jGkpjܞh_l5fxTȳ71uՁgئZY0#61gKWYXtC̘r5`JC5CX K|w鷳|g^' flh5EiT3_i}-Kh#?d>éZTF,ViĊc|jx+{`+ڮҀEkxa5ߊP|942e%]]+,PHyBx`$p`ܜVTcUVQ0No<Ėa-Ů"p8 kEɁuz`L>W+8_ q,[JC@j"1V\Hd y`q7qs$FgX0gc gk7`hȾiJc'Fi'83F!Q [9WŅ@: ]5 CgnɒSPԓ#C Pup.q ),aJupa.w}\K#a`PcM#`uv s<|-p*ǹ!W}pwʷ{',D-E" &jMnD9Q^9SfyQ4/1}H0*ϟ=pqog9=M $zbncҹ8Lgn,DA!4Y74Y/* 1# S}u}4! p'0'c&"u$wdE%7!(*=S>5f%v8OʹyqgS?o҃$&q䬕)~ HEx7Au+ vyk>ϕ^z+z-_MbOX)\7֊E3+w+U߄>$dzxH˝3{xQfV1Bo bYoKwxuYkZ۟c1kWݑj~*NpwB9ve>5̱*N(߁W)ǎӢBO^.d*_>cW"mWӦG3zNb:+-񤅺>3xq9HX-9?޽'K<~k|`ɉ=60v,Bgo6R~t[󼥩]^9'viLs'[~ItǿUƾx!ym~!8ą4K?[\ ES>6IxEYK뷃U@a%Kii$ :w G2!VʍۏLKÝ'tk/s)b+8\3Uю!㣬;xjE~GMG37ޙ|~|أR%TRz~Z8g}+﯁yIY|}ĸ1N;3'™!5K_P m3$ڃǽ?%sgTbqp;py>|߉!x#UkRoY3Is=z⎔5=kF&Mv 7ӧwCݜgZ̾g9Sj-&cc6s DpgdC=3J#]ƈ/w}G('ϹjI;܈5g31wcxnI :%݃\W8iU]JK9qa;5-"$zXŸ'2^4U;ܗ{r}X£/uNʃ+8dLZ=߫O()" !Ƽ24.<[?<^l|kS|Z;jϮ߳{4ӵg}<~-lwRܳYR>Z^y}ī۩콊=8uӳK5E\Nw^cvpfJ1*}}n=E^ sVyI˅ Ε^rf'F(߯G;sG_!NEjM:*%eκfDxx%{ ?oe97:<#j^y엓0׫!TJ{WO}4%W[8i3~לbVk}PxߚCUgX 25?v^y4#sg?1noNeBo)ZV>V1ʷ_ ݴxogy=ST"C;Lc~?Ǖ-Y>¿s73o5yp|rֆnU0r78ڙQ6? ?L(}^zG6wW-g!43_L!M\A8meyVN:צ/Ӝ~^sh}Sߍ<w|vGp|GFМCދloNۅ,d6`w{X;y~/m}UzNgʗ؅)ɞ>݀=30o]w }Pƚ7XCH^~ {< S8iҸkΊjƚ>H5E}25׼9۞/VWeh2xjY=FJs@a~2>=Ԓ19ZǙ3F ԏ8jĮ%19Nv5\. o<Ϙ5s ʃ wҖBjM6!^wԃnfP|sFq0s#8u}{rw}ާVo'q96yBXk`ydqykLS?i;#wz 9`x^չs)C{XrOeiwx=4Tq)*ѹ-ln2ӷ&d}1W{f+grCדK理ק{[E*9U[~q_)##OWr=~~^g)o%do1>a~ri?I>5 xguY H?we'{8n\Q\g 'X..iWKc~kM{?jWqb8E溎wڒ/~~|s?n xόLxnOArs :/K%'3]>/^OqD@Oб (wiSpJ(|>wITx w<։=UD(Mm1HE#s"4B_/QII|rK;jR>Rrk@Euz/X5n%KS3#񐦩6eglVM5{U[H%1TK݋WʝOE KT> c|c`BCP6ignNV6x*;luر'#XoH kӪoH0&ӷ\Awt=ƞ)Fދ5doDFfOpƄMF!Fx h&!jƝ(քG'ό~'*Ԍ( 78c%0N`秞ިiʫPS37#*Hr{RKl?e\ά0)fp>x<q#MxNu#ݸR_^{BQH| gۛ;c&  p5~ t&nMXPNƄMє=qj2 l2_ +p]OE)'.?dTd~|ߏߋE c ^`=7e;n0?+{~DGqSԱ3\IԤ3j~:?pêڨb)VX_9X4߇Y(<7+|!V2ln48C~n)^)I)!Nj4-"Iλ+).L%ʥвmGd׏{OٰP'a񺧔gaZȉ"t "ՊϨ $ |yHӳ< Kr[`<| 7g[-gWn]wk]+ڳ%Td7zj xހMYkm9QӤm +ΒuфX :x4GTU< liץTTn W׏m1!Y38[oFźGMRnc[9lnoA{PY;էmzޚƽj^+&jYNNnt7ɡj)LVvfMvjMt7c0LMX3x[S^eJњoơY3B`E}k}'uknMB7߭úԚ5K Y1Evfu_غuqvui~px3(n O{ kI| n͑ "7&{dLһh2|L&˖Dw+[=\ht}E\#w`.u##8G?ߏާF :eW"|Kf6Q]9E"Q=Ҋ>G`X7)!ҽBSBz}m#b'gi>EZ?3c*ƃ. 5EwgZ&χ!?J˿hP#1#^.+'!U]׉JK&etma%<k`R,Q0TbԤWlb : 6.+SJT'Ń&xsH12A*HI(vWA21O)YN焠=4uv803{W\IT3pq Bj|rH?3b/?fَqYܧ)X+<~XSO6vFիl8U g]I8i%;cuك r '܅~QC}_=k!~?BF~Bqɕ)I9q K5iWiH\o$HOw}L‡ kD$*z/=DV]8G|Cm T`?xpm>Uߟ-#k9h+lrFʫΎf+ bb?DւTh+pZef=.0p2& 9^WfNߠ<i?L?vhD0_ DԠ-=7p6ϝ0ۂ B>bgH-',4oHHLL',pV%7^a$D &p:!>XhQHir&U4QNXj5V%PpXQ¸|vtR!,ALĠrӍg^TufbdRe21\z~hqW[*e, WC"aܿ?.ہOr$0X٠}P c IApdrZ"0Hb-q.AÚa+Ag\d'E#0f:k]?v|r}rvޞ;Ӓ* RcFpNO8sx~35+iUoܹ+#w\#w8'gf֔{^,|Y׬&W.y%SʹVPkxWj%z3HSx|g,61C)0.bOnϙ+s_R3t~Bl]Oő$=QbYzڽODQ=?g$FI--u溿O~~|a)¬{&ݐޛ}"dD&;e͇ttoyvi]*k9H8o&dgB kZ mNJkYrT(G>]"t AIџdaZv3mmrFMtx&>Q.F{?+oot$ʛiKZ]1jpvެ^׹os_wCrưܿZ簾?ݻݐS4oگq'2OT%r>Dڦo+ ʹ]琉mˍdL_0oTPjv&i w= <$F;Kf),#קmX5ëd7mr")`yM4k|xOd_ ]c:8[@O_tOC fpOh3y@FpEN+\9eD^㊹(L1nŘ~6ȕl츜+Ʃg#&XH78VvП 7nEL7A eܵi|ͻC@㻆x_}egn*|`M;^^scs rB Mʣ~BڹzV/Mڔ'P!bCϬrw/#)DBߟd2ϓn|T'꟰B48u Nqmރp.G QlG7 پ5ʭ`(hATu~4#Ѿ%k8 PY }VMQ:jxvͻaX;q}?;NR~ #g\am‰}H|#yh  }^w}UOң²!OTgy b;(2&Cu_>x{^lx̺cmzxR>mhOU_䓑 =m'҉6f?^vy`3pVk>dV_h=FLn0A5Q975ϣ}Ǧ9o܀>UFy|(@&=JZ8xCߗ G)h̗QwX]S3~Wx\mٟb<~\ύl4Lиz}~Q/`|g|~Z'<^Z3/NnHe.}g?Ao8A?'-}yݏ\_!\dmoW]_#6r=;U[&ɢ6<:>Qܿ%\R>߽~:cӻ}/tw .˻._ˇ̖g/_Y[4S.תQ>+4!x_. FOfg;sڭ?dV?\3nn9j V>7λV]>JwQ ޏrU؎;~U,AjϺR3):{474n~9v~!*޷1d͞܇*z|}Ze9fa0Wyr{!/ e7ng? yBt* iTA <%i>DCK:ϰS롑y+@bydy?<>%Og 7snϖ1S>f񻟞osT|eȣ ΋~ ґ|n}P>9$&l(Ob{?<( 7]rW(o?;(:O y[IxG-_inf߿/OgwӕTWUT!ҐC@rA: ?emݘr=v2"oʿ$o7Hi-O{ҿoDҷ4P сV{>h{yt yb9 |[XM4<( c1]H~xaKiY G7>'gaOd?M_~.'}9UIȢH+KRe2]K^vdo覣UVwo :$+_'Ѱ_Yn?_}j:/j哠C(Lod1'f3~$+q "̗e\t5?K_UL ,̱pdK^y<+Rf2eީ $&rT|Vg/de%Y~Sa%rIyu';RE4,E [gt8/kx2zlA^m^8+ROљAIN `x;ۗ$nꬣDEv&8zw%jb5qagƒHbc [#vQOEv[p*=n}t6yQ1 [QAX֫F9F+dN7$2pdC=)ӧ_̫=}M6Uc%hFrr=|.U#}to&yRbMT;j!Mٓ8CNxxT3M8%Xa~ /ޏDdj%Z7N%2sD@H@ё/ I@# hKw"uF 88i=,q;Y._Bm'_-!*۴L,7}Jؔ^ҎS΍SD½an=$u=(H)dK=bn4M#}<>,ELo|p2hDXtk)C7满%nn[$7w>~D%,!\_ ڒK邯v`ܠ-iþ|᡼]߄#%ViE4:M." ֞{hXAXk߾,EJST!`Kf!yMniO7skw&85Br^:Rz$tOh.QXƇY4:$, yp"VZ-lFjmq1M;4[=nRJa*Õ|xr+튌..-D8Ƀ[1oq+k;qJ(r?C.v9w^ہ[X!/ 5|OdH1CW y|8w+w̥ќ% 66Xl%ׇgeyW$גlUsŮJbY-LFx)Dw}\(t<51sA7P|To(hr1:A %ueשvw8U+9Ʃ{'h'+Ş|!rq(\6oMcl Qčot.&RQp`rPDGL CSΔb͝k8J*ڇ^ZU}7h9 6n[[v}FMpH 0;-xp*zs}m6Տ aݟ"K8Ő3ķ$ܢ@_|E'~C~gF+IPބlܐMbpB=ꐅz p CD6'$ PB(?KH*X,~)݉]}&,WA:63J.]C=|[6U wV?eSpДDy<ˢPg O)rET`Ȋ}Ya !aq̉]vo_(p5Wyk9^gnq=]÷cʶVe!ۊ7[>0xXzoXfi5spACS:o+^?'3GSᅛT&TnWHG31ulc"R_i 8Uz%/ic+Sڻ@ 9_TK<ܤ_m+u^GQic ZҼ*wI/قdnYJ*ܒdL_sTsXRLnb&Vf.lI3͖^ODZ@(K_++:o.瞼<kY:,~- K<0[-]2 nZg.^,V˜mH R˄! }}%$ƫ!2ՀmUYFE3V)9Ď<_$*bK=uc؁y'vd,]'5uF\",)'BRXKeynD]8wm"Wsz2 R+CV$2$@.D = EfER}`#CZ@e5koG]##^bD<Ϛ(&8f H"cGifg 1̜.WkH#h4Sm63j+:qoLc'<理0=ȅu^jx#QWӻ3q\;Kb_v.<7~fem$hxlqHGy;WCdYЈ4'n$ZA緿M/n!5:}ɭa+Ug5iw!JM+gyciϋ^Bxz"E|`d-\>P;3!FϟSJ^7\bh5E㷾[4>pP;ۻCt\NBLJڢ۹N๜t#6^}\è& 'NcG--}޷0#j'R Bte*|FݖB b 'ҶW 9ϓKC {F7,/s`Cs1mRt QC%G]r|5{`R9C=mϿ7|E]^YbAjϿuWho~c&O0u$OqY: D=eIu]nwN0$6ha>\|cqq?c2~2/Be=c9u#iM9e:kPE]#cf`NR4"CXN9!ΜN̉M!ifHh7H!<3{o >c_G9մ>7>I#X-aR%N)JqvF3R~QgA0}FDUq,Fo?G˒#f_88fEAnm,v)5,Q_.Rg^R{=$N,yYa{LV5#VfW~tT[v%k'D<]Ȍ9pKOL99ؗCH.k**Rl&~7V9 ǧ~A5_d$?_%Os>[Dy>X{(G{{`տ0k|ؙy3*1+`E:D+HgyO cY˪EǓr>hh8>1Sgw8H[L}}{;gz y:/;W#V λw U,?MO}*oN,2ϰ04c?F_4TLT!_3?c[r;?(MR9_yP^oM( ~|Y<}UUS<+.\M9qӳ6^/JtVYnGyGޯ"x+Sz,V =}4˿y yO룏s__5}^%7Mm\~>yY!**)[.㾵|?3ɮ]GjY~(F`W^yb~K'  Z:x<=:6 {pgEsC%ILc{ųC ٬"$X%kT4G,Cw~ShAl- ؋rEOFC*2֭!>єS#B64> iؖ|##64I+yn7t[b ;X_{XU`3s7i |OX37hcg/s%@'Xb ~w6Ovi-aP=qsݑ(\Fq{;Րa7޼j| ۏy_E#R_wjâa gr)>ZXϏkj_\pf~/Xh NXk/+X7ÊTs,9<с^Ճ {S[^4"~Le{,-(߆C -zC hU~"Dqg+p f[_#Km*ryP?j^BT{kV u[zpAw|2@ rb1+> pEgw;\|}qA}pūx_~_p+:|X=_&Ҟ}'J̵;X_K3šaFG8,M׮,SM^ۑ -<ԭqk}{Nk-3f\+gy|dg^Yl{Em{3nOY<{z|~c&Ƀ1YgٚwPa߰,6YαuֈsޡkZn]k BmڸVLAe\[-vފњ?[+oyl@uV8 !pX6?;8Q];p="ǽҩ $5'~Cȿzx:ҦT\Gt8s3 *]8ߟQQ]D`}Ctd/ Z鈭8{\Qx&7hH !C_YoVÞdK͎>bX5D[kJUؓ)<xk֬\<5zϮ]9&~rI;& p/iTFKm͗@9?fv8 %P4)ّb1藗ݨ\H8gW[D{1.:oG5nZi[h50 \2zq"-#jyfZT8? 0e{.hNkttLdM[q"t4rG1%~drZ<_/?k9eفȯ r=Xi`;Ά[_sl"3'3N}dY2#qI{&!>x2h$}5.h%g8zs4h,KZF K;Ւc7T-+Wǭ_yy#dsbO-$%8=-9p /qո_r\#wcE'Pbo'0s jɏ!pMF~2N9̺ɦ0Γb=+nۦ&8,OxժhLy~oY'oSl˻M;> >xx?aS8 6Iz%0~a.oX`K;d.!ܴqMK X?W[n2K2shGD&?YZCb4kOd)&M \cQfEln Z~1ٓS1&C.ߴ0+6{o^BH8~.&/W!E>Mr?>rh*H~4Yy>~-s:e~t5+w-|*%}϶!_N掷s}_FOI\=Ji/KlkʮnJGxߦulHa$Qdkyxqx0U?ź_Jx/SM{{:#2=ƶH4ezi[0I` yA2t<~qAm&y>H}>샐Ea0_oR=^:?؋sMSsoδޟL盙7;73^|)#vz>C+13qr>>۔ӻ~ /[]!3o1g s_-[+oX4>4S|pԔvzo<^^&Qq64߽o63wr)?F~r1/p_' !3&/nhJ瓑{YY ko==>]o/d*>/zbv|WF~u1&>qJkĚ섗ZGf=Cyդfw7e5ƸmZL|3}m? L6=}kʬM*ߧ?+GX\Ed ͙VVI Έ_YO[u=@O~ ? 4|ד?UbW?U&㳧q{C.'W^Y`?u>𲼯Le} }tx`i!=iu*=hY?cVp7u>˃+ӿ,Xaws}UgQa}ޟ/cq"\?w}oA7!Qeb{tm_}M./q~03?loSfpv˞f}/Ɩ fK_ݶO{fzQޫE-۰_E}X,OG/Ɣ(^.'YP4[2~fJn뛥}x9OG)>딇EWگY(oeN;+)ŭb}_0L T sy$M? ˑG>iP}]aX1~Jt+r 󾳅ds>yR/w3uN{寒n|ayO8qaQYkzc7_G?o{gy8Y_BySbh3Ɨ-4a²S^.ߙϋ"\RwP\:yY.=>oy\-(wE=neGu~$V-A³?d'[|a {wڋY^}e|}Uw kSRT/ǣ9Km{{/1ؘw+z(^Pna˃WoӶ Qb~=^>fܨ z\K6v|cjt+8٧]82cgeS_>_$NQ|ɬ e/F`Q#6Jo XQϙҰ#`m+vRx٢8]KoF3·5}ꤡyS4fVRn=Zu\g}ӶAcYL?8eY{UWk,k)eZMx6۩@7:0Akؓ6:Վ?kVu6 vTy;a3;9,2 Ωff^1}_8{ ^%1 q* !m{QD} PyϪ*u+\8ͅ|+*uWtlU{ZwW q5.v{>, s~t6&JE.6Z (^lr2s1_܀;0/EQ 7C EeQ'8 S~a}U:C'Q281x_A*۟r}%0y#e/۲|aȔ wWN'6u݄wq UeYNjԛjט dO (^M+P ;Y`-<| X3(xb%b<3 [k76&].!gWXtz:1dhXSvk2V@ż_D=Ř>~1DYYUed5F{JL.ف'~yhrUAgq/x*K/]ԫZl4 u 'Iq "'T[C9dy=x{|cﻏ[-1al;X4yfܜ_PUXD0sjlCCe &m?K+leWVWEjc :h1 %P=^t|V7Gu>W7ou8<}{k}i>ZrZv=wGFHw_iq*uL5zklk,;">).m \O ڥBͅq40mE羻&/7Xeox#YùtXޫz170k5f= X Y]!c~ߓw7U5gvx2jF'#$vׁdEvCi7f`Z|wvxzWt Z /sy>9ml^<ךOؐɿ udSm% " ׿WƮ4xnKyHBjzS~ n_+ؔ.)oJֆy~~eʧ7|6wD;xvXB& ޑnO |^׉:xs3u<~7΃+I ׍|_{.o~{_%c5Y.h49 ^-{Drr?%~L3M|?䍥^h0Ae*5 w | ؚkGIH \aC| #F 3M,[".1kV$֝w+4mq]]A zT⊪W BS`W 텧}.}>n%[L@vE7_5/P&m+ 98;.d:x텸xXJFy֨x/J<yjWw?D[{;r0c㨓VRIEoKcqV"͛00toI+m{H;(a}6b˧4 ҳn|%0%4f/޳RUM_f_k7N[1LwRsX~@MC[zpʯ_#֫7qц{:pVsZ(ѳ{!&ꀯv~u[O ={|ϗù$S. s Œxg/jpd ysxcU[ApxmX2^=JKשs#-c*!I/EŃ:j=|~q޺Ò5%WҚЗL}Ck.MkbM}e]!7\oḷueX]XкBeKT C>୰M$}xm3gtVQ\V*0e\3RæԕU+O.OΰթR.O :NR;ξߝ0ЭPuofUkiěϻvckqB\e>`ұ 6PVHӧc Mg7е$֌Elՙay!5+0ph6YiX)-+3~^+G]`mwɠ̫ ,k̈gҪ5c7О' >^+ތysMRs { >(rm-ų- qmVwczұ}s=߶X&w B 8gzj?);)mwۤDpxg"37e/uGoP+!}cD;˖39m'z'$k]A=;4F83:tӝqOHVD eK8hG˖],֋Qz :x;c2c\s9G&fpyӛ{s{u_=-W5܌[S>rЏoEC6l>3]qOFB~-1!w(=pHt뮘: %s%7ߓ7ژ\* wm:t].@g09&\N:kqˎuЫ~棫qJ4QŌp1`W`r?3ޝ9֏en=>YE 0<~}EKKCU">Dx!`G_HE/*>Ƈ>ʐ}˒T"?ۼP``QNϕUأˈN>FeL/N~nJP>/?44&nƅy^z:C\aK[ͷ&OR|@8?7[ g| 'ף a HZ \~p X;~5apOb.CݩOғg_p&)p(|QR~'9u&Ow ri8p'sPG߽Q|3"ƽ_~XjF8% _ rFxṽ_4R3Wq[u/^wRWT7S1_YPljq m>qX{wM+K"B]${<<#pe)ϰd0JW9s_{5+f_<:ƥPS`cn궸~^92GQ3=k^# z8[sQ3/OT;N]5HGx 7wx̷^觽ͺ,ei>[O IݗV^݈2K59h+We;'8A)_EpŸvOvPY ПY^Fc?:Paba=0fş89UM:fTJA=h%>?/nEA,X ~E?#Y](Ftxxbړ9:b01/F% 6c zՋtϏp#jEn50b@%޾3xWpnO4ؗD6>1BxT_hjbAV9Iv´Uqb*c('"WbXuc \Y9F_αM,N!؄yN!#gݘ~D*O6DQ݇]~#9 #&iDIԸ"VQ&9cFz(3}A8hE#P9.T4BY6[q`?Eo9uYX0F3g'ڄLQnV__;fn'wNxKgkJH#XsOObVW)Sz]ľsʳi_Y wU]Пh߁_i6hag_Ib`wQFaM <7~}NY#Ձ0/Q/_>X5=[hxwӧ_ZKims'q~ ¾1G 13xK]4igmdbs~8 9asMЋ>(38#Q <1G4wF5% |꬯N}QG2KGleb`aZbZc9#Hl(U@/@rd(̍: zpQx *k  ;߂H|HF%kZ؋#Ҡ~}:$ަW< ݕ<"[CN<>)l_A%x%1BfM++{#= f_ԣGI)Xk*%i2^VH-wK956(Lgva`Y&}~?*U6+;Bߠ-Q)Xu81mqV YH^߼)};րŘkTekALg:). @AM-.&2#j:ŔBj0Sż*qW#wS sTlA B+Wp.7hQ|B.Ҁ FB[m O:tr%B_d\XjEON8%^ᐑDaK]!QoQ|!eIl2F%w{+]lW司skW.F9'9B̰VIݕ(M Ԣy,e,0G ]2 "E~1G@I{W GHoraI!TPKFڔޠm)o dWTmi'!A65ӏ8L6J2zoaȸO%ζ(}@A]زC^uXrN+\rp ÎxuST܂Ƥ\Ao'}2oϺ13`bŮl/wm+dKpu-ZS[s@Ė~jHYӫ~ xݒʻ<#u;ZS>زt`` w#kjwq9ׯS(,|N1u .XP#{[n)Xau6xغOr\k9%r\L]n#oɷe,YŌwboa|ZGף9nRSZKWv!eSbV9Z,!!zNܓsТH@0G ,7|ƣ7J.@8؟U_4=j]PR)׊0 Г!-ׂʊF4 =DS<[g]Xq? :0GQgSn[az6 {m">/puc!'4ՖN>k[(V镕ބ,pBͅ0GL}>N7yihA{]EqE$o e˻! c&.usӴ+ [`'*GY ƒEd5J^/G0\a&b}~qek`hsJ6%$ē߮)֞&l<>6_Y w 77Л2sә <\qnrҌ9h7-4S *ݩi'Iq4'c=asgLxCrCDHă[GTI{>qw6@oD*% iE8mt60V}_&;kwBR;jC~;t_TVزf9U}Cb `, x4, gj1Jhg'^/ǒ,Bo@;5~QW s2c|M 4N!4N2-݆{bRȩ1Ĵ(;ox Ja]D"l-FGL|f)5;0G<Y3;)M9b#dhgn:xaq@[{;PUjCWS0C Q w Ek~&Ka4^ORFwb+Qhmx|fnj{P]@|W{R؃ }{69߽#e{3Ƈs* :h7g\-!}_Û"d639zg +uiب_3#37W9}@#2P}P $64ZU'>m*KL9lZz|?gfȢkJ[N% 㝉- ߝͪ>X1T}ដ`zRԉal[Hx+gIc̈́ d`ì%9Ȟ8IהS2E^ިfN)|~UVzdpjlTFo:VG9ml=5Ni%јp%T8&]`ֱYvƿtTiCϺF餖+ O0p\j+9N Q 7ީ5å&Z- N"fZ!UfA'Y|Lch \h<*V#)Ìt 6vI<30qאq0Gv[ O1%Ϛ=#jW@# Y4w_z84v134v Y˱e 3SΞ0{òlSj~7[jHgӱ]`o:l޿tt݌9b10,%W}(a^CWw!cqt]1Gp ;HY9> fb*k/Q<>,RN{yXK'f(Mgp@h#A˶u *mJ%Pn[#hIW/YF"ا0x 2Vt(DžRHl~Yu_KE"e9>aYy_bBIJAZM'K|+F7qXր@5B0/Gi(}~sO"<:R}#tҍ9bv@.=~vlYUQș!ڦUxlA93XBTacMHiٷsmsTİ%뭢RJ OE mh4' LmKkj|3>rB_[y1o 9ҋx'GX fEoy3 1 uht>ݺ=S.s Z8{p$ծ۴Pڶia{p六Nk '=.2ic]}_; -א^Jd!'Fb…wa631Č=\g:cdJW&ŚJ,aRcˌuatKpcW 5Qwɣ&QtauBx\D)nHn4<}ڇvYzr)y2}wax!uC`Gg=M!'scp~0|45vpu]ml,nnp7^+4r[*`Vu4;~}}.+A׎)>o]5&p4yqiFc)pU\7SQ*tH7~wFg;1h5r##bLz_$L,"g%9_Njf[ 6ϋkqAX_ؕ6dnn.T_Q15„5IWzZwOY7cKowl8_Rvh YwZo]6gG^>ޡ2Z* OJ7${cq-]3) 1FcYWVV^E3Z3ւdOī ^{ZˤY.KTɷ=gj4R3j}p 5RxUn4ݏ,k ._E'^l#>jjVcO?.Wh.|Mh@e1íq[Ywi*{wUQcWV*7U(H/#nY/Wj7RfS0:CGwP*i ս]nM* Keu.Q=U߶xԧVE{t\}W6'Q˫MVsv ,pvQ/ST W=~΂_;w !wuwZuSve'@ȃrZ߬HɌWj fիtNR a9>?+sZ}2s?ّ݉I>9&e_ Neh?]}\J]B/ؽ_vΎS,ءݲqjbv$ߕf ifHOWww_$Wz+gmO+GVt_!4Eɣ..ppmdp]lVO|#IF4mV"W4*v g'ߓFgnU՟3vb55}+9XXZi~Q呣E^fW/Zb%m0?X g4:gYKZutMut#iEXW.!w^1gv(. Ȓ##Ԅ)#[2KԈ> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 369 0 obj << /Length 1162 /Filter /FlateDecode >> stream xڵVK6 WhTt{贛>i3=4䒔/@P&`U^/.o Ya{Qyy8,گh8x\nZ2^'T+lÉMlm9Y0v`1yI+A pŖAyȲg7W `u52kS1 vzI&poe+^-W @}+t =ɔJ{bޜhzmmEzM$L {TzK4Rh(Z$/[- 38H ndRexSuJzO%d&Q '&6yoqdZ~\Q=;2"+W|Q7y/܅"a^}'b<Khèac#rH7|t7'pN,jd h @nn^캾-zk Q|ye`eAh~iRe["%`ND3xCiq\FoI~(yaG:hq JdPh^(qXnOFVu>\sݢhOE!"}@k!:~QJ#cm(KfJ8 vhq0 [cߩu6"8tзPDOv\4S' ng8&,߱81L S?˖g9 Uhp7vnng>X,68MIv,d[81CkQN_$9 ƀ&^#N!Z"Ak,o`.5S)BONJ`wst3$18 f' 煒2/y"usb6mJuAS"U&"wv ??Jwܖ 7ZR4 @A&ڂQ~֒lD*ܓfz:n劾S uptwpor4gGB_% h1'Vy}M~€F` Kl#etLLCwjP_x@fPpF JaVh9xs:Q>S~IBi ˵SI6S~- oI_T endstream endobj 366 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpTTNeNK/Rbuild417521c48d8c/TSP/vignettes/TSP-clustering.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 371 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 372 0 R>> /ExtGState << >>/ColorSpace << /sRGB 373 0 R >>>> /Length 102435 /Filter /FlateDecode >> stream xM%͖f5"0 ;D~NH-UĄ[D7BqV?bP'Vcn˷OO_~w/|?߾?>||۷Oϯ_?>???_>?_Ͽ??Ǐ]/osq_:_~zg~G[GG?^|;/nvˏ}}˷O_~>/c]!v ^x|C{~=˯+~]}{vaO~oϿ-N|_/ߗvo_3v߯vή=is}۷/?w3`=o/b/cv|_m~~/ߞ$߿v>Oǭxm+>+׷6_<z}~3 HzDHW^?߾~ރsEo;B~b/_>?ܓ{3_l~?5_~}5}Ge;ޮ?[f|w?#_~q'{|>=[sǯo??E*ǾyϾ^o__m??~$~]??\C<>=yG]Kx^?????\ѽ:Bޝvus:tBg_؏?<#NOUߴA?oϏďȪ8]m,lud8cos1wڏztc2xѹ:2F{#x5E~ ^GF؏}mӫWػ~<#F~=vݯoWx ]?/Mcw/F#/;,}??k>E_Vt|^G\޿Lm]x[]c+ul˳?G:FW4M~?j8:{c8{ӏq؟:JױW8:J1[=^VxSu?_Gݾ:€oߟwRG=FQOcz?}}H<^gkۛ~ȝud]^^@L߇vj*nuw*zL_~)T^^@45 &M9e/c?T7ޮn1ПSo+oyH<`szyo[/>/YN<~|^N%_^G;4>'/|yyMkhs7Hfi7r.mkdٛ?>'~Q\?;Q:Ҡ9/?~ïM|&1A1-yJDDy @扏GQk d:Dd @>*(%Gi!!G-m g } Aj2Q5zQK}S2oGB,G⾥B,#qR@K5}K5Y[!RX3Dᮆxݭ!hMv] ! BjjrWwWCJV!!!!⾻⾻⾻FaooooBFkFkFkFk2Z'k⮴}vWwWCJV!!]]⾻⾻ j[*ZCܷTCܷTCaY*?R,dd&B+u K5}K5}KTCܷTCܷTCܷTCܷT!R5[!GMF>*Yᣆ[>j}KTCܷTCܷTC쾥 QX![!RMFj2T'cK5}K5YRbKQC/>J'GM&>JG-퓏|>ZmFqWCbjqWR{d&w~rUfw5+&sW~]%k,{UN$>> 65:@ap*gJΓh9uW]\! ~ Ak;zf6FkَƉ'F;:h Qد QدC]‰@'L^CKدϿwW2_tg_! u_蹒 hMfJqW!]^w3BPwwv! wpW! wURKE3!R,dT47,U2Q4cQ!G !>fsCzf qjQ |vRqTKE!WX aiϏDaQTX ]a5,GpW!WX(*_a5 !]%CwpW(jwj](!]M&ʯv a~RyfBܕp]%Cwu2sW:aw5!R-틥6R٘T! K,x.rW! wU2rW{hm`5yW+hg'6&B'ϥߕs(\wAuW  Q]뮒6)DaB6)DaB6M 6)ڤdRasJ`ǔpL! pL! tvLd@UX-JVCJV Q:UXA?ZDd__0Y b*}Kྥ @O`rW]C qWCwWC}Jd殼}YIpُ~5V4Z_IpjqW?޶#q*[!RsqWp0dEϿu0+OBqkqW0̍ !jid&#w d+0wBܕsW0 qjVCܯUjqW`IwCswrW]A ! xwAdM w5Gcw,1T4+?Y?}bRC-dT޾ZJ?WDB,8jtQC\C,dB4X TE}B* fPKJ]8CݕPFKDzl&#LhJG4M%칶^6s诩tiCLE5QCܯ+\hil&X!hYFkLyNvh qjjUS!hMvh q%!!$8-T3l-9lBػ| 5}5}5}=d==&BZG5x.?&# -@wu"qWA@w]%KEW߂,ՉG%_5wW"eqG=Q  Q q}W!RMV&+S<SUSC)DaBR5E !>RQ)'8(;qcB)'QC4)DaByJ)yJ&ɷ1O! 0OhS1OKf`)'߻lNfccB)DaB*~4{G(|TG(|TQg|yQcQ }Q!GtC>*DY5㾥 QX a !RKsTP5Zdd`wqW! wpW!]-*!]%+U](U]qW! wpW!] AFkmIT>*<%+S<SNnVUS! :WM%+SQ8c q:Cc9LqL1%Ct2vL pL!Jc:DBcJV8蘒옒cJV8c do`QG-US@KRH_殴_{YۏKts=~I KWE*!  !K7j6*R-{yb)bhpJƞ~ {^{(Ft;!pmd^y[V5dX 1M&Mz()wM A)ۤdTgoV!U*1EBc9)uL:fCc Q86jQ'|Q!GֈZ^/db|k<}c32[db|R7P9QMcPXhJ bH:@,]ꟀY*mT@Ku- K*KT! KT! KuZk*DaBVm??? Qh(jh(V !LTr+DQur+! w5YaB5Z!Cb6rkiC*6hVh-Q:DcBZڐ-?rK.5F+- aF CCѢhNfFfCF+DaBF+Tni !ki=Ws-; ![z>TN,Un} aN !̉w BXoϏDBNZ^! S*F)d\)3qB,DBXg`g! ?K֘) Qu}Aoì+YB?KVCp=W”(LY3Y+dϒIjM*[W-s1A.YQ0p! wJVt\kyʵ]dU [ɰr+3[Sj! j`wڶ+V\ Y2gKg@ŽgğA? v"gxQU @V-*?},DYgCgC?[`F!ğy&#S6}S6#qߔ(LMMMMY4eݯdd5ZC<֝ko_5Ek 5}5yd&﹆_5}5}\CܯjQ(g}7n>JGHh|ԉ<%D? Ǵ1O`]9y !iiC]By"t6O<%D''xcbUd☞1\CHcCJBy_BB|"Wwyr1Ot_BOD3!<}y4O<-=Ft26O<-[jf`ByZ'?fn5'?l@{ iٻhcZ9&?1ь\qLFBcCc"B^D3!1-mczftϫcczIyCy¹b_Byh&{c"BYQCcZ#;d8c"S2tL1y1L|1w_1%Ǥ#uLdQ19 qL>2PD#:dNfIR&&I&^0*$jd}yF9DRY]n<#;'"HL] &tw59zH*BLbrBL] aky$C% !~!5X22! (*EɊʢ57E ~dw'CL}Cw!aE4dhrY&dlrɡybrh'~S3#0CO!9f&139w̪|?!;BL]590BLjL͵C# !&giMΙ6{29!Z(YlBZyz+09!MBL9=x;!zC~'DwakhO>PO2Y+J\-m ҽ.H.(YB LjeV'Da}B!{O2>'kO,1.( 7&w1j}dwKY@ N2YNiM&TwN.(ك\P27o t5;( Q6D>ɪUH:̆h2qA:).(YQo7 .( kz#1d\oN'y錫dhI 뛢M`,JFhm|1Ǵ~ J1ѩyNcr!=6OK btWyzFlNDbH$@TX yRbʄDׁb !J);&9!1Q OvLh5D&=\??kM QؤM:ۤdM Qؤd&4yM {#hB!ZjCBj!!-mcJV8NƎ)YB)DBc Q8c Ai2I'kBM3I! lR(QF>!K~UF! M @'kQ(*B@! lPo)ă aNF"!-ü%MPFɰZ(YaT ( Q( Q Q(BB!jC7{Ɋh!:"K!1PU- Fa5DldEPZZ-dwj6&%#)VIT):dc !IcI<1Od+݅(S<1O! 0O! M Q&}4YG%lMJ)'!!bgG̭dҝ똒aS21O:,)' f|K<1gZ7q<_@VRH,7*TBiJNdXe;Ҁ@ܕwI:@ݕ6Ѹ!]lrWݯ j2T|~}v q>*WB q] ! ^C;#!h{Z ϕ̌ȇxݭ!hM&F `E CтyVCњd⮖Jj2{ҟC!]~wM}ҟwvCڐw,%ݻhY}G3Z`)sCт9!mJʆ0C点!sM&y.mߦd+\+\RG^=G\I%!hA6?ߍŒئ!lWf3oS۔BX%3Z~>"37hMvK!Kv]SFk~3Z-54Z 5Z:w,VBoi!hM&F d&#̌hH]Aw5X*3њ'mCѧ+Rwwxꮖ6]MFj2T7T7]O#RcK }dL|~oG7/|(i|}tR}*6Q!GMv< Ai22O_>DoBH}Z[!R-=_5-dd&_55!WM5 4Z_7dbp?o~Ra@*Dd~J$Qt Q8()죞DbtCf$ByCy裒KE3!R-U2Tfh+X*~T~RFR0KKEsa!R,+Tz"W,͆KEs0KCh򽂖d>JL|Qv+BW*DaB KׯϏDaB*X*߻j T~K,T8ⷵ!F˷Ì?h-m-Ws3Z~eb0Z! B&Jָ讒Y䮶q1-~1Z[h=F+-qeHl&wwuQdRw{̌Fk2qWھ]S1ҳRFKPh%#5l&wE&t:ZU2qW:/J~]y쮒J&j2ToTJ&>Q~:UMUp}T"4O'Bt"yzFNM'"Q"4Dψ щ%"O";'b3:dl& daNƵ>и$#2Ȣ$㚜ddF&#2dl)|dd&:MH)LF~2ɟ a I2 Oh~2q'Yd8_>͌OFsld8}2מf'hVz2N3͓ќd8{f'ygēьd8~'Yd8;V$9h6v2wM3=`.u25G'd89nNFsd4 'hq2- `2&Ypd87%yd8v2}&p,͝%Yd4K6͇M3_h+qMFYU2|:PL梒\dt2_ >%{- MFCLd4'3;$yd8ϒ N3*hF%ΝL$hd2f>G2HFslF2Hp"[LF3\Xvn=7 \hr8l>=q<dshiV-NGZVp 359Z?}dd@AtcyvkN&yjo9ۿh t-8L%B%x}aI? !ђ? !S !9Zzr"<78˞]ڐ7O;{b <1VĬz'!<1Xu mCE2tX|;?_OL=1bN ;$5`tXshyI}v?]3t ӺV{wdN*T]?{dߜžĥtR>|7=32E=׉77g@s12B۬APg]+)ں`o@XZ!5! &`BB+ 1 $L\Y`Wxx]) u!_p!߇p!"`BpMh\0Y|!mօYB> I]%TKk4ՅBU~TMh[~J9 !,^BDLJ>XM-](ԅܗS"v \ LQSQPt!RBHQ](u.D*/ieC Ou!"+ +UwUȪ o)tՅUr_X]`[)օ tx bcR bBGJB; /)؅bB^ I]!*|{ق]!i+o.DBv^W),wo].#drߒ]h2x 酈'9Ue>ԉ Ɋ]! +$ue hLZ '?ke=vb– 5u\ mBaWHB nk;,{yۺ}!J OC;+gVR8)S8DAJ.SOEd; h!%$L( wJ,(1[1%l)YpٖJQ"ku,Hς4,Hς4 ϮeA]ڰ _6HQv!?}S K.D}}~ׅ>BeWJ섨Į~ׅ/F~_6H%/5`( NX) +.~ׅܯE_U_҈ ( rBW~iJ.jAX%lZj',*.~ׅܯF_5H^H T rkB}] !v,/jAH]* iYFDY^B QeDYFiDYeWHJlJ~!u B x B uQWAuQWURWWHʼVVW ui.D^;NV~ ">` Is]a#4B  "B  :HᅼJxBX~%lAlCaXFiXFDXFiXRbɷVD%.˾)j.DҊ 8<՞; $lp dNuf'WCp3}vFgh!Dy> ϖgAHMXՎQlh%ʂ4,H#"e ESbAD=?#"J,)?_Jv!p,DXCvSb8C7V$(1 JCqQb EDHVb Y%d%vBQb %ĔM$%JXB%ZvȯZv/ ȯ `'4ͅsADs-6ͅ*׃%zse6usAD]yL]%pᅰ:a4*HBoQWuQ b" k4 RTAIDauQW1u$۾ "BkZ "B+a#_BDsϟj.S͵bMs-cRCVL-KJl+|XgJ,(1(AL "J mHQb~oJoϴ -UJJ,!Ws=C_W(wUs%G݅uZ >iB+-qW3 .tޢZADh=ADORVZ͂J ,6B  $QWAD].vӛ*UB+x%J5^ +xPb.{qVL'cŴϊ陉b:,p߿Cp7Qx:g&:dzQ(:M!DGy ,pQAXGuxBQLbZ:o /Z+H#xBjh]ƒxJ( Pf "#'8HaC !* !%8 T YRP$UBT8Y0He{MRADRlKT[+,ZvHZvIG򃈤 ,NTmTKfwJȒi ,dꄺh%T' "R)H*,:HYS_T Ͽ h!yX}rL]-Y2${{pi ^ھRuP$kTZg*H*^ADRJ*ZZZ1IbGVkNh5&J-}A^[rpiE\|^E(H*nAXRIwL*VN%ʙJȒ*!KgZ`BT JzAPR'.DB+-P3*|>ZADh<߹>Zf9Uh4 -S1S&ںB+! E Y]-9_UW(bjiEնś.Djwh-ҊhZ'+!kioê2W_KH~mȲK\ k=d/Ɔ%FO&`%)(1z`"+1y9*1PbZ !]R(EلE- "ʖbi-e(#52|2) D0}FAD n(3mn>}F>AD< h% EL ϶.>YBg>ADDٲH1}>϶VPM(lٝ>[v>#k33DYBg4<賥עϰcYʐ VTj[[A6!刲jgp,AD=?#g܄pda9z " "1pq6GfppAD-6|XM(n+nޠ[H "ZTMҊir{ZG&D-дDM(Z·l5-bZ H Z} 嶎;1r~ZoEMZnBr'T-+ZnBrnZjrˉbZnm܄|Aπ) VrTj9eV-̬N+ְ QM(ZΧEM(Z-X utɺe[HPrklBp>.nB^ qalB^pEvVd6rIK&ZnikN5iXUDڞי%CH^!R 5!P'AjAD! "R uAT3iU[BQmT-6HQ6j[:fm9hj RԤ R,6zA RT RT RTi*yMM "> դFjxW~j AAX%dvBj E|C&m&m&-HS6HQ6KEM ,NԤ bo ӱII AAA&mBI;aU6HQ6EM XД&m&m&m&-(5i5i5i5iAAAAX%,j)j҂45iKXԤ "J V&-פMXԤ RԤ b5iWդij)j)ja AX~%,j)j)j҂45i5i5i5i5iAAAX~%d3jaW¢&m&-ȯDjaxk EMZ&mF~EoDψjMOBSt_>kkWB_ E~0PCUԤM(5i(xHMJXT RT RT "gM~%7-nj%NTKXɯo/AJ5d,Uֈ;,D!HI>;Y!5i!}vF=&-123?]:}gA}v0[AH]AL-GD_4,2|X(Hְ *ȭ)%62aQ "p|eւ_lj0!+$ xeB{5uZZ݇\A6o9J&E$ _~T<Wᝌ3%(Ov'c-w2rbLTHMFRm2g(KJ I~]!9+$;5xbB.KHn "M ]!;䀮lτu׹B28WH L dZ=B$IHF }\!$%dqB)IJH Q\!و+$0!+$pl 5B^!hfKqNsWHWHW3 yfrKBB?!΀_!u_!j_!__!TO(%|sB}BgBQ环f惯4oBgsmҼ \섲rYB_BIB3BAf<6g1r q yf2!L^!A&9lҼ \8+x4w<ӗOszϐg i iFnB{‡7# i ilB BBBB'O8%'ҤЄ xBBIHS:WH74MBI4 y&!ML(OZ'+$䧧F')}|};k9i'p$NL}8 SSξ^SDQgFgmg9Ap&uB^|h7k{rymb'g}-3 e|xg~FQgqAe|2<-eAm[e|8r~r$ "O.ÌP 2>u8?O{ ‹癷3Yg޾/!?ϼZg.u8?n ?gH{ȄhD&D#rB{yO2!z yeˉb3/'=ϼeB~ry+PQ^&Xgg]{Fy^3~K(eQф&玗>w@{x;Qڿ'o,&%^˒DkxImCY%g.3[{"(/{Fy 8 }{[~F9C|u9 o r'c-w2rKDyD˝L-ZdIû "Z{ciZ+Ar~Lr^0-l ?6>a#B؂[Zw[TaY "^u8 "GY?Y(Zo4Z.>?8RkrwԴ /(}GE֝duTY#u;H%4.H#4./3 [dSxHZ Q)<  /(<7ZŇ#bϏCK{A{ADr;H%DdFIt-Hڂj tϘj;!; b~VL-ouq?-rADˡc;ic喎צ "ZM^r86=GA(_JYAo4 ( •u Y֝dݲx -rA-wJi\r[+mV.H#[~*p\Fi\p q5v-Hڂ4-Hڂj;aڂ4-6 " UFDU``С  "PNj:rvA-rA-Dj趎zq +-\Fi\FD\Fi\r˯a":&nX% yj ބ"|f+;i9AQ-#H傈[h9*1-+ 8WA.!k[N!YwZi^FiA*Q( ( ;H4 /(<5z;P?E;dͷ*"Uw}1ݷ"/a4/. .JN(bo/69!d;n辄 eB{<>S$bd\Cw2+!X=3{'C[o I&b/b`bd"pIÛ "b[&N(5t Y-rT)h o m1 VQxXvSxよ[ /ud]vۖ "%Y71YÜ &7<ȺJVx'^Qh{{AwJi^Fi^[Z1ݷ7}AD-t >q4ݷУ7_$3$`Fi$`F! R i  Ҩ bϏGdf{ˎ3R "XŞ6AOŞ߶Kboٲ'Txϩc,֎I1K(u|KMm]:mCRǗ^B{7B2T3wB{oS֯'=+d /*ɂx  ^&+^=BĞ`&<:CK&  ~) DVxg{[+:&o9.VL-KfNXAD=@+ bY{T57H~A6o|:AX.nϖ33}lBgKLHFT->+&dQ(Cs2qnkEra k!}v,^Ke(g]AQ6!Ez7Tل&d}l&TCqDrTjT .eg>_LYrBe>BDY^rBTbJluJiD X6a1%w-Ķ^ДkQbkLKJlBTb1}A%jx e'E,yX&cQL,N&m[Swe'+jBn!HٹvPliYgx7D/g~R>[Z1}R1gq1}bl|g }D7>QAD@8+Q+eߘ([Z1Qn-eC+QDDހaQEiDDYBe8DDNFQ¢&ʖ.(K(DDٲI&ʖ^(c&ʶ(ZQbliE[*1{ JoJLPĖm1%AX%d% UlSbM-ڕkSb'4%CSUb>p%%ACĔ,Dq 4hAD-b %be>4QPDUDYBe˩fgKM-g E-6}uvP}(g˅_U3%AD->K(lBς”([K0>[[Z H5"RmiŤߠTTI[[նm6T[^ĒuHp[+,{Mp&K(7ܲI*|vCj&BQm^m/T.H# E "g\Bp MrN.c"[ ·." " wBp Y%pKEPjҾPW\v2TÍ= JB+!D-m[CdaUz;Dn'kdݓuADKu~dʄ\"P[ e_[Z18p DûQmp E TJyl 8np E]AD%AXCp[+,N(n" "MrE[[ankE֊U-ŴrMˡ BZnBp<Dkp8\BpPN{8pWȪ턪t jю6fAX7;64ZAڸZ,6sAD-{TleHn9&|D?,8*!?Prˆ[[-\x E-BpgU_p EO eL`k˘@Ҋԯ%|įodDŽ&Ֆ.TCyDFT[6TT>_K( G\qBe&(K[nKU&>Z}'3?pٮUm~v-WjAjAX%lZFDZBjMU\T2T[Vm Y]hT[|[Bj MT[u붝"TK(RmTRVՆ_o Rv2j'{j7jކI5B҆He;Dy&ռ j9H5<Rd"|ϫTCjALc|MmbOK(bOs{ˆV5tAw Rm{ I](<b| bokEĞOX󁜋=ߨ[Z{˾wB{ E-kboU-'Bݷ"0H@qT u% y^[eC</by2^Ýt^d&Ykfۨd!D9ru'Y'Oe;id]u8UDd/;a4Z.h#PiTZ.k "Z糃4Z pduAYe M֡y T.H#낰KȺT.HS-uAZR;U-]jp,+mUrAw0҅..HS;HULh " S9H%4.H#낰KHn7 ( ( \CwJij45tA \%:T.ȣuAYuAYwJij45tA \C;HUC ij45t-Y4 /H4 {KLAñK( ^Iuʫ NX緓VE,4;Hef [䂈:,bD6/:ueuWTĴj" ʺ ,MpAD#AX%:uZ RYP v. + DUQm Em]aSm'Dնo +նOj6R T R-a#ՂTzMRmQ+oSK-.d&\2pDyQ%7%FߣT R-Y!QU RHADSƃT۶ZB^VrBg~>[v3XDҊeǡ>7jTADэXjTADрzjW(J3I 䄢ϖc'l33RH E ϮXVre mBTbopD R-HA Q6yJ!ʂ4lelB R (ʮPbJlTbb +5H!) T䄨6kBs RԤ RԤ "5i>Nrͥ$\WBkeߘТ[ &Ävj4gZ&ZgAAlj{+kQW$Z,DԕL]-?VlBT[Ala EG[>>%UFR B ADGm](*ʂ{#Q~: Y<Fӄ,ciUZ6tuQHh_L]-QUWRqi քXQ6+iEOWBkZ>e>4WoP4k\`͕4ײIVg_HٲĖS͔ + ED*עĖ^g}{x;)1<֤%c%L%9+;(1&QbLDIrQbpRb{"|O(y ( ¢s/m[xm[&miŤd&AXm{Lڶ(ծPٲo*}!}6'i>{ x(kxrR E ϖ- +}HMڶ-&,Ԥ-jҖFT E%dՖPT yTmrل(u1}3Z}(ϮEYBe.7QXePDYBeKhBku%i ZLi|M5OZ哺|˚kBZKDh%τֲEhHPղqք"}6!먄騭]d: [y^mDܔCpɸn/2y6=i<~Oֆhe;xť [z0%_C3Ȕ`%l*>} ( ^ޮAX-ՎP׶oL~iwɯeߘZȯ,}Sɯ "p ׎Av,a#4+H#4 ">' Y~mZ_hZ_HAv,apXBZQuBZ =iY$﹂ZEoU-3%( ĮP=WB_ˁSAD~AD~%J~*\%vfTLhyLh-S{UH_"}Ҋ/|>$/W_aF~Wzd6ȃND_D>,QbA%vJiXQb跂[1Qb IMXɯ D1%Sb[D-3%\5LuĂ_NDHܶDٲ-"(K(l (QVHYB\pBy?3[gRmqV}"g۶jФkjKdõRmWH'buf EyI,NXI Bijǂ4R-K6,eb(K(̧d) I]/Us&N˻ +!ɯ+͵\\'-vkkkE궖 %LjҊ,ʶ/ ~x۩+Z'cu2_Xrzfp\u2Z7Z~3mZ!Xh)xZ["XzQiVZϿ "mauBZ~VZN Z4Z˾Pֲo*Dί%P!aADhH5-DH!tʾAu.1 "B TZIe\ mjm[L~m:aq "J o[ ĶVD-TJ,HĂ[EXFDS܎"ʖM2Q8eK(JlEĖGMQ Uy:QeA+!+ P%?x P#!%6/tLAXP4ʴ j.TCAu"mBk9&a Mh-$BkZ c" m[*ZAHh] veߘ_SW =^kbBk&|)iPb4k\4͵NK(cKLs-iKB+-VyXs]-?Jpqpq (W_\mɔXF%S[ZQsn&gd鳄\Q̹T[M-sȺp"j:&-!יmp'm"^KYBQmI%m남ږ\Z_6X%%!pd(NfNppdtj󽠪M۰1!D1Ԏ5/6?*1H)T ڶm).A 7H!) nB RA 78zN7 EpnBኲ RQF7o#p#r[[: 6.pQmt9Hնle[L-3նªm;YMȪm;M-! Ymdm9o&m;<,&, "mnP[[a-w"|Ǚ[."&tA[q*Hp "5iTD2f4:&G2*H{4JNSx c Ge&DP޶I|< o9< o)*d /wjҖ<{EjҖe[h[ǰRmbI "i =G*&D7!+EM EM (&Ytdm4Y,&DY7::Ⱥ q -7H傘[Z1-fAH]!V%%_J b5i:gRmBSm:G,mBQm&j)d_9dUm>m eIǥתjKK:NXHALyXM(Rm9}xI QM(l.>gwQS9*}v2g`}v2gϬ_ dNVT(*T}_C4&kDٓDYFQ٥/HQ62Q1Qbl*~DDٲL-(+lDYe, "p "(y "p"2RaQCރXNya׊Hj $ծxY~mg mk ,f?KVR-lFa}Ɠ%AD-Gya}kgWo.6r(ۻ E-פ%D%%eQBQvLX}vB\ Es-ȸKh gZ.Pc\X@5ڤ \산Z;& ݪ|k9aDsm'h.5AXs%duB\א;6! m{Ehm{ՄkZÄZ~:D1Z:fBkԯ,k +ZAXh%dZi^D41͵\ ib)+luQvRmYя֯m6J  (XQbSnJ,Ԥ2u,2sSQ3{&5iAD%,j)j)j6gKXT RT J섢[3zemgK+>l,곷y׫5,NƢU,NV,g } Ed;DJd{24J,HS;QbAHM  ԃ1存Zvh b`4;hM=X\8 " gH=4{yJhC \%7A4W\謂Z:-ӸY "fkP_[* "cN6%l>* E~%lW_  M~m}F~aPp-+ghJ,aS •_ ʯߓN%ĨZ*. (j45^AD~h:HU xij;c%vBSb*oZ%ʂ4,H#R " "o#ZQle'[ײǪʯ "ʶm)\ys ϶C) =.,M"c ڱ $ծYFYqbIAX%}UjǂpXBKԎQeSQtYqbIA%>!Lς4,Hς>K賃>K > ŒA: $mς4-6 =B -W%,t "g Y%,ogA}v>V~"NoOK&oO]pjk*vVm'㚴5RMMړv=i!`vhpF%KA> Ҩ MA h hTZ.,޸Ⱥ b5i4vu665iA MMA*Y7g[;& oÛ MAP]:"LuFd M֡b 5i YHr[-wJ!-w ‹7&dvBQm yAƄ͂AU M-_jA j[6IT3wy:D_M%6-Hڂ4,avBUm:0pAQmAwwMXlj>QH ,NhRmjUR-H#Ղ4R-H5ecv> "leC7iވ6HFAD-FAA}v"ʖfoD[N eO'miI Ԥa}~xL-'AUI BRTi*՞HWT .!פ%lj 0Mzϖ!l9>;HU}gA R'm=iT@j E-]ZjWlj҂pMZ¦&-H#ʂ(;Ԥ%lj҂([N,6gς>KTiYgJv@XQbhؓ!X%vF= Qb'k!%vVb'kؓXFiXFiA*%QbA%QbA%vJiXFiXFRbAX%lXFiA*%7GA%QbA%Qb%QbA%QbAXRbAX%lXFiA*%XFa% E%d%QbA% +%QbAX%lXVbgRbA%QbAX%lAD%lXFiXVb'XGĂ4J,HĂ4J 6J,HĂ4J,HĂ;kĂ4J,HĂ4J,H"J,aĂ4J,HĂ4J  (  ( ;( (  (TJ,HĂK( ;HĂ4J,HĂ4J,HĞHĂ4J,+6J >P%lXFiA*%QbA%QbA%w"J,aĂ4J,+;HĂK(  J섢6J,HĂK(TJ,+ ( Nؼm@â,Y c\1.xF@% XB(!X%+XB@%Pb PbJl\1!/8a)4 \A5.8a!1vjbA &hmZ 2R,8H cFh CF] RA u5,HAdAF1"1+K( ] g}x;ADDtFTٰADDyAX-9j Em'I&RmmE֊H*d7mv8+p56 F?kMR*%$;j{Cj ʁT+7.j!V:FR>HviT+O4c!V. Rm嗓T? j+j+,V> r^s6#j326#j32Cj{Cj/PmA;-h =IZ gdpBg H\ڄdpPmFf$6B 7ANapgdXȰOFpPmFf$6Ґ 2PmlUeP}#GGyV YI eO_Ͽ}?i \WexlPE -rXR/&T+D p+cChuoE -x3I}>iqHȢ,ZNȢ!-<!:! K3//BrYm^$B'$+ {Cu;:!Iֽar2#Y)*ʌ.g:3jT+CDR|@]RH.TS&}VoBTH5!T$:3(7Q&$ Q%%#TfDY5l(+ÙǛW/!Y~]8/!/!2\&$W9̚Kᢹ*NBK" UbFJ( ұ\%pQWBu%dQWBrԃv3$dIuaTotƽ{II!$q06R8Th !mm9rHAm?N`Fm$OZ6#F A*i#!66EH ̶L)]IIXh'1I|@&]H;^Lj.PU.**]_ZT$Z+k hĞwUQ%etYz2RLq\uY Q?jxLmPW=,(E_$(k]ȢBe󌢌N6Q&Dϣq}NW(StDBe$xRQE*J_?_Q)+jKWA1B UbXp!Bn%/D\WfYP 26$Z+32,Zh$ 8Y9a!B#BB<2,DhdPmFj{áKȲ?Xr04F}Y;E,0# Yk%~T3A E EEcepXHTm E jnj`eHq+XQwp|3+FզTjTmPQfT[0ZB]Ì||0#îaFhװ ɪPQf$.0I7e΂Ub:$V,VnK,B=X-R ՌDZ-T+V~Q\03>323#ifQDYՃQ }Vr>+i^ aeACʢBr5^<FQfD_>$ʗEYkeeF({ì*1򘔘Pb<-Ja_eCZ8+hN, Qs!,XB(K$VrC\ v!-ȗOoaTWA]/rJL$I3,ewDTeId ,.˒2Ti$*DTeIUIr6I%$Uɒv,K|k:$W9Ub $[H肄*ݲL!:*N:BQ R:*:*? BY2ԱpOB$S|)I bRӅbj'ZɊ)F *b*RLa_,#þXF`y2b[V|U⩜JO A<BO~H:*P U:F:YHG:ʗ%'x^gPGBOyjBHOo8eS2B@1E+uHTLoeR$~Zv22)C@&)qJ&ɊI!(&[@eg-#y!vѓb*G|UI1 aA#I1"dtaIoh#!YQkjY ˤJTLo$!C-\Ն¤0ˤ?IeH&A2\ fdR_IuH1)UW$dIBt$| 2I$O{s?WpSLBb*ӧ<$)&J@1)̊Ϥ O.$TI!(?RLer͔\30L2d,ʌ2UGIcRL b]Ȋv!WG#;Y<]wRMwSLqQGѤaiUB>kCUWBՕ¬.JLR_%?\KȢτ$} eE,(+wzB\DBe?e<~B({Ï(+7i!B#K!SՕE %SXus.UWD%{MX$ʢIrK1XrT%dم+KՕ,.UW2 .XBZ,! )Q[,.QYM A,#@6Ȣ9T~]F爬.%#-O(deB (+;)/XI YE2)1!(1!BB0*1$EeyB!BzCz0!n sjAH^PjWHjo Wv!JLae.xY",N)t$+J A~U~}<~~C@Q%$aw/#I3J|U,cBRvHT+\(2!(`23!>,O(dYPȲ ,RM"ՄT(SP$vk,RM"e)C!>ܛHvgB>YjXT8,GT+8,p(*I0/{z&pI 9Jr"&w$ajZ_ZYHeReD!KU$p_;d_1ԯ YCCThC&-'drB,! ZN!Vj pThr8-(\9r 4rSUm&Y'$:$pe]A)\du W8u,EYd] o( uI YmdYOu|Y)Yn"@֥/$zpQɚRxH_PxcQ) !)<8Rx|)<RxL$prFJ5#Q)$-fD-p_32ԯׄ,ypke5PfjkA YdK/F@ᥗ~#ŞBKgF@앱YĞAbO!ku+cM/;#ʍp}Bgd}Fb]C{kKsst!3ϸ43F}èJ+ڱ>k>+'-3Y9ҿuCRYq+Y9ֺ@RtZ(~Q ="Q;pDܣLYܣI#}vĢώXg(dicjG,REHI YE X@)\TE YTEݟQ\p 'dpB#vtM[  rFj9!KVbA ! [ؤBRmE^(3.RMHjj9#I!rHC}vY;(>bKH\*!r#Q er66>uqqljB&d3,՞RzjB&└+3:48!I9TA YTE YT! HYTE YTETɪMPgd32T Y* pF$${M -6Y47\aW6!!H5~ʣ%((,pF 8! nFS¡MRfdj32Tڌ^m1u Y'$ɺ7j32Ժ KP:F-'$k9I9\׌,N",NHp w,+Y6#CUHM$jF&$ j./+pQmBbáRMRf$K5T2TIR!֤QԤ]k.xGPMAR-NRRGjʠ2e6rDe[z21e|Z6Q&D Q:.%X8Rbi5H#(++JLĄK3HB@yC@)%RMR&dT;dTJVb %&dQbBrMZ~ ?DY| tE J©LHVb %&dQbB`OrHMLr-(S,ZCH%(+J\j$I#Qg!(k,gB(SEngB@q6Q&$W)gNgB3!/!K!р>+%VF?Nk5i(2HHeEYXe'%&vZ+_&M"ʄ ; DE rG}V[Y!>T Lτ,g }&dR&Y@)}VN7NH5KU!SUMH HJu{Bg Aaj.nP_q(ʁҾnKRM!Ժ3V&dQmBHt/6˪ ABPm SNHVmjk]Z(]dW[!ǧ܅$JA)$pj;$ 7̪M! #Gk, vp+c3i9!Y))!;Brq"Mh,ZNHrrqG06 .N",I Y¸,.j҄ۨF- Zk +$ *\9p Ak\iB@;$,NH^BRmLMȢڄ$/$W[ׄ,kB-'$k9Y]8i9!h9!hC&-'crB+4hC&-'dY*RȢ儀+Xro܅8!8!;dpBkNTS,(T[Kj+It WN -Y\;ϤZ+YVkSZ0 8 ͍\ykkk@U\m%˺7LZ S/_SUߓ6&$h P&9pI H HJj}H$US Nap٠ k ¬jj+] VZ!զ06Y) 6Yo-6>?SmRMH5E3{$T`j AC"j+]}Y2p.JrbIQ Vz k A˛Y3xJYB^@Be E2eiZ]Deʢ(D3=KKY)L2!e< $ʸ e;'DYrDDQ D#2>e(3E_, Q:,)'!$J+Y9QN~}~ˢ 26Y9De.>! 5isMZtuF@EnDY3,=o !Qf׌<cE,e)DY|{6EY|G7EX0*1JIW#3*] U_Z UW,^H_3# ʝ9/22T%+cpZȠČ JHVbPbX{C_|]IF@~Y#qG4Dܓ\IɚQsvDsBo(ƏB\cԲR}{Hs5Wu\oCRW۽,h$/irREYH~oɯ1_<%*BtW9|___\Q0kvNZ\As\*Tf4W5h.j.n,?ȴcm%V[ɢ\7 ~r(+gDO4`MOg>kg<݉@9}sĠ>+D,)#xBg Y9}VG3 (+'62 ʅLt!2 xJEYBe (G, T#{!&QvSH#ǝ֔>K_#@/ci#J5>YTH5! ZNk NkaI2p>3!>;dgB`"ՄTqc7ZpTSR-J:!YC!$ՒHC&&íjBj˯"Bv8S#dQmBjSU¬.TE YT.PmZTPmcjl'\iSB-'drBprB-'dT32TZsM$TM YT!fֺ06!jUۅj16!j6!j;T¡vHRmoH5!Y څQτ,LHkDUbI i46!j+NRM"ՄTk,RMHjI.>+Wgggg }&$.02(;deBQ&$/X[}Z;]2!asK>+M~ Y_d !/!/!Y~)UWbf%ƽE JI JLaRbo_RX9Ky3E~w9s5Es !U)!**(ˠJ,J\%d$J\%v-!Z< Qh6o G#re Qh)ۄZ?_ZcJWJ+$ &Kȯ2b Z+ ڈAEs cohhͥ4WfBHsEd͕OD0+]B%dZBu$ЊFBHZJ^zK_3 BjgWk%/X)8,XXJ>)rP}v!ɯr*4ɯ8*$ɯ7̚B\巂4W}ZIB`3>(e[dže2T+B>4)C@EPL!3aZH TVT_eF#OZ9pSDk sڅY>+:3!Y]83!W YyA}VPZE Y$0vbNjO5iĚUۿt \#ǯ(M+&PCÚ48Ik@MZkd_7(DYW:F(H֕XQ!j9ٴrĞE_((/ze|ѓ(+FeXHc3K~ZH3JΌP*!sYXeye AKDYHK-QX)rwX\VDم$ʁRY9I }Z˱LRMR&dYQr:k.$}VzMe?3#Y)ڹ(rJ5 ʢ[;dٹȰs,fQ0W=\}0W)̚,ܣ"\K>\f4i2#P4~fF%Ϲ⩭, I)%V@J, $$g%VQ(S8}fdHe.{k ]Ό5.gB~Ma_ ̌jUWh(AZ8LI9KK.&rM-/eQ~9n@&h?晀K?Wb"%"?Wb/B 2f~t,)1Q!(2pi-ȣJ[J zß˯V8|_ A~98_hz_1E@~Q#$#<c O/ /F'_Ezß˯I ^E@~VjGB+Mȯr$uCe<"aI raI2,"ς {gY,e}3>k r,Cً>_׬> Ӓ/Y-/Y9{/h$z^I{" Z+?>{,X$ʁT+:,hz,UTk]T{je8II1j9Hʱ E~^$7LR Ts8>{I AgG'7L aֿ>߲07L A̢ ?r_LLTbc&~^;fYi3>e>eoE|-XZ &LR3+cCV'dpBw8Iڄ,MȢT@A)ہ3/(B~УpqD"BqGh8%$k Iř !I˽",N2 $E@.MȢTXұ.N mp~E{CPmћ V~hǏ_p<$7 _ˎh/ьLNr,>i/_$ }^cpB'xoI W3 8ZT{pw!  &T[9$Pm0"Y)̪vT[Rm !ƏcJHV@onTmI.DY)} jF&&$2U%rT326!Y)ӢMfjU¬fզpQm 5i/18!?'E'dpIM ӽ(xŸWg/yً$pRmBj{CjCً$ϸ(pQmBj{Cj<f}pgB~^}"I9yoVbtXDY]EٓM,.K٢Ď}xh4ncgG,숤Ϝ-ufE.JLȢĄ,eBrEمPQp(/!KEE~e sEEh 6{Zс90!Ys)\4Es Y4! }ZYτ3:d>/!/!Y~]8/!PVXkd,c3դ2)1!Z+KME YD!(k.5iB{E~2U g/(1!ĢJ#7%&dQbB@SJ (v,(1!όLLGeqQr,#( e|7D$0)7\䗐,.䗐,.K"$p(ol*D\'%V$,BKHZNBKT+dl,K"䗐LRg&dQbB%vȤĄd%0W)\τd%Bع;.,TS12!(g7(s8դ YE Yj҄d%pQbS(1!(1!Y]8)1!Y)\LH3.ufB%$/:,.KR;&d;k҅>Ԏ]3w,#}#QmDQFCvԙ6Hq:':@{KK$ʢZ;JxİΌO&Մ|:uf|ՙVHAv9{r"?Ȱًd-prB~ً 3uf S.>o =pApIpPg3{eC&&dQmB&$7RiG!L!2DSEgeHM+fQgdQDYk*j+>ecI9ڱr>+Wً>+c7>!2CQ] QV47\!(1!2Be* I~)/FO[_k_|&pYQȲ AedQDYI Y!}V?ecE ڱ2bH\0.$V@I ZVT[ՙ;*6~%T+Îh/^$i\;$jǖ=^$k9RM"㋊"RB~{ڋdwOڋ,N 8F}$.DGvIhkr<5¢틤1H*qFeq$bO"$bO"x:bO"%E K:vD1H#&IedTFIedTFR%AR$AR$ERZ+22+#I]9̒aT9_%Ux4*y-!$C@r*mɒ*mJ!In$U0K:}#Q])$u܍DuU9&upTF@R%CTiJHT zø,(f'Fx*K\$ʐxjc)GTQ-?p220&$K*P%VsTFIedX8QȢ|\]ԕPW|?" HTIe$I7tknTפNꪵՕe0#Q]9ԕA]ԕHRWo8H*#QR9JaTIe$K茒grHZ>CHR[u%USVʠ@w 붸ru!/ W_Fͥ4W4As34WU䗐, H_ e$.0i7(fpZFedZF%dZFr8-#22-!T[yüȢȢ2CpWqHs#nd@hqIh',/ $U(ecGxē,go'>pOtTh؄!UZ!UƆtTkeQB@GT?5TH*YR)$I[cYRG!:$J7|X[BI%$;0/N$",JHTNJHT I%v+BꪴBB$cc4WUhV@)%gnqRH\"QDPb,XFZ,#X׾pX"H_okQs}քK_U@穄1_+Ά *LJBJf%־P.@e2u[k]X \F‰=;fdwȢτ>+#6C/#C嗑E TۅpbBpo8ԃYT+z0ʤڄz0 I5~C X%YQB@qPq+e²>;$/{ceBQ&?مpdgB@9t!x(W\YkY2=pX&'dpDjUE g vH5q1D>3!©LH(S(1!KEE2)1!L!/~2Ys]e Y6%d\Buh.ܽ݊'u$,KH_ %d_/!Y~)KaShC@s)4Es Y4.4Es œUb<ɯCJL!hk\Q *1* Is.@\%U"BX9%ER%fpQBHG*CD_>G@R]*YR]_7RWqJ./>Zǹɠ2TpD,W~]G!7\PLςz7_ T;$JQoSviB@<Z66PU[Y$T~)~}~C@REuH*K!>_#d !@a!B3PL5@T~ŷCH1w_!{PL\ȢdtT%$W~)iL*D2 ȤvLj 6*cC5^elƫIR%dQLBbp2edLsB2IR%dQLB ĝLnIqF! A7oKᤍ| u[Bm$CP=J+$dR?ϤאwSfa (YGPZ$\UŤD$P]˜U1P5W=jvu!Ts.*cC)^)^).7,4W !rBZѩ {~]ꊏԕBXGBK!-$Hh)B+:!VR u! -لZq\-ߤ-xJIh^ЊEHRu[<BtPVk4*gJ+PXBVb At6m.(SEYhFQֺ@Os΢L4"(S,(ʔ(YDcLtϔ ᜤjy?!YZ@B@VTsR-f!cH J5jA!RCJH<f7c7ZpB@Ňf#nDT[z2-PՖij/F@Y#IajoBgqfHgZ,#\ge}fYk%3ʁ>+] }VZ!4-i$8i$%ge,{32%fdKHRm A9GRja0!ڒ0P'wɬfpF>~.  $0Wh93RkXH3J5>3K$TjouagB}fBQYZ>_WggN@ H;Ag s,ZH8Jk(X !dE(+/xXXmZ;(.R >CfCj|^b|jkdVƌDզTOL6EjUVmkRmפZ+P;<p<\k\9$y!WZ!օ(fWQ.D/éjrc-_vMe]k#˺ҋHሤ|>}JdYȲXj e5sD^z1_Gҋ 8y_+e35+BN!Ⱥgo ~~~C@֕V>@֕!YZYd,|^ɾ>!Y]e?}|}+2QȺKE}BH֥*<dd#Cu u OHuyBH˯WBSޅb{%SH{m@쵁#W^;Xdv,vZҋS^+b/~ uq IyN!Y!"ZWfW@b/K!q3YeI"$+<~(ه'{HDbB{ Av{Hs1ŕ+4IrcYzI+X-0V9b/!Y=!U˕j9YS^PH ^VnB@<=. w!=JĞ,\, 1- Y&UIVk]^E!k]^m%+6 Z0+څ qRx !Ⱥօ,jk'd]|;@y#,k'#->i .&EZ4VY#@ ,Z I)\du}>V|}~C@=wDSwDsSBg|b?(KZ(+3 Yw~gecgB@(.YR]BeA~䗑X}p\BPs#܉\>k5B\ahojJQs,5iB%|,KM_|Y~)$d(JF@~YY#Q~)\_iȯ4k$ɯ7:3_<( eF~fq^ȲȢ((KdNDQDY^F>(efԙ$}DYrkFˌ(KT3J\7f4ՙI A; rgȲ,ufF:3#Q9}gS\NdA9$} F}p(3CgYie332ԙ̌ ufF:3!Kgag>p33C3#C}ֺ,W!Y9ygΏg<LRgfdgF@p39i9E!Rᰜa9E# x>eE#ȢZd.3Y9}VY>ˑO;>V>suY2bǞG 2eqØ e$Y~]3\RF m$j FhDŽdmt!h#bDm@@uT!mTZm0k#6(g$. OMB@7!Y`!4`|Q9F D!h&Q%fAg18##Q%QqFFHD QHB! RQ;w$JiakD \> .ڦrmAmBPAqTHVAy"]HVARmS,2,gTP9PZ/: ɂ "nQm%U$B" )H!hIhZVPmemTpr,V9*Brٖjm)ew,eA#q-;S)&CbRuPQ T@uPڅH<, ZK+QRG"RW剕 i.~D\Qc :+ۨCHs+j߄dͥ0k. QhE*$W)uGx9I I*YR%I!B>^YLlJȰPW^\el@s)_匂W9= *MRţj@}U9krT]6@/ϸ gj j8T{2jeKK .RϿ>G7j|', ApelHVhy26.ZNhX!/$k I (!Y%\| Z.# --OB/BSZ.NBZ.NI -k\Xd]-e];=$Ji8%^9PxyG(1X>J{؋SBS^6b/NN bB{IW ZK!(^0Ws)-.$-W7j:(Z+Kuc$1:!.7! 1 2k6 ɲu,ʺ7̕_ A=܅$ʉ W.]pY N!8q ׺wrUBPm|&GTs)ƿTͥ0Ws]HK!(1~B%VXiXyD%es!)1PbcĢEJH)JLaVbOJ,F!Y)%G\ Yeo{HeĢ>+#}g<[@5^( M QS(xvEN(+QDY5KB(+3Tu!)ݫ  2 . H"%}θ^F@%%?+kqH#PVˢό^D>3_p"%'&dj3$]T[5T^j^PmA 6Q)$5H\8!H5~&EOwT3BR-# ZH"ZF@{H5Q9RBjIRajo+BE_PQJȠČIPb Ir3#3J'3*>6B>SB>>kǒمXSY}R-6 約T+T+ORtI.z@yX!y71rqXh8G-$i ɺdY׾$ʱ”yV_HRx QؐSeBu+#}VZ}? >SمTO>8g >?>C3~s@}:,C-sI!Y),M!Y)UmOȢ DBX*;OL!-  3xI43Z I&ʄ(B֍!M!(1%%jJHQ %3.$%VnmHV֭ ' A)QVjJhG(x+J+ (k] +E?>;bQbGd%vYVbO6)#%vĢĎX{I(#;(#%vĢt2!$RE K:^K:*%(LJLȢĄ,JI K:*\_&Kȯ(R=E~ Y_1K:*| {ZS)VY8VB@hY!! Z+K,.$UƆ*\\SEs2i.!TB( , r抳B@s}[!Ys]8ՙ Ut3ԙ ufwi.dU@Ka\eɚB\Yŧ;k7I3I] * 2!;!Q]aT *1! 1%Uk%K J v"H]>+9UT%&$ -C&%$ -,.,.BKVt,D?h.!B+iC&%$i.AB "y#$׎.lJLHVb s,ˇvLR;&dׅ/! xt_BRȯC@~)\䗐E~ Y䗐,.䗐E~ Y䗐E~ B_ %d_BB uȤdͥp\B%d\By٢Ț벬l\G$匄{ZG,+g:"I*gIG9[CP-E1 YZNŊC@<)\ēO!c[!TkJ+,($(Q<[txI)dO‰}G[+H*!HC&I%dTB$IYG]H:*NcU xjԆS9$鞖Hœ,؀xpZPHR(&!#8̓LUB$SkS9|OO≻≻ӿ:O\!I,YBr-V;iD!Y]]8-(#+,! ]MfuU9wS}PWJ*uԕBPWĒ*7#RW劣˷v#+_Z GV@h)\,&E\ QsGM~ Y䗐\uDeD!I~ᢹ,\I \ R-! edu0WsR,x-YhEA&_ZZ!Ŧ,KR%d\BRhC@s)\4Es Y4. Ahᲇ?ZD|O3b UbX%,V]F,JLYeH(z@~]i%ZeE K (㓳2! ʢsEY *̵csXRb!X(2JJ,Xk,JL)dR<~Q0֎9%MI)|(v%íj+⛧߇#B@lX2̓0B(DYEE ڱ2pJ+ʁ>+Bg@>]0K5 ,,<¥J2DZAo!YJ`-Pم,RMHjFY)v2Y:>QH.>3B@,JCr5CeښDe D^eBVFUZ0 Z p}~*.I{wDTeIdSYR]%eKYR=H@Rś m\uR[ݖEG $b,:Jm%smVnK",J"$ER Y$ER Y$! B5Ͽfz?-JȢducAuw<.J,p duߓ!u1,JHRWofu!yQ AG#-x:S⩵D YtEGB V@R)̒*8 IdIuᲇTeHRX!IRaQO(!YG)'42,Oh'R 򐣺H]]H#6u%dQWB@]m UNPW A]E&$v钺**W' -~E:-tCzCV%dm,Ohdm Y궄dIuT%$/Z,JȢԕE] K: RWLJHޱ+ !IhK+ڱ}J6%$/q/Ys)\4!5Wk4WIs ɚIs Y4LR&$k. .5^B/!x~4ׅSB5W$@5Wk*DQZr5E~2/!Y~)j.R䗐$.x-e>^",˯'[e>^"}Dd%d.J,~Jaw#H)1!Þ_F= {~ Pb = {~edȢĄ {~%W?<\WZȰ痑a/!˞_F?ZK!ȯ:%W|u[]Z0d0/Y~]8b K!ȯ8$dȰRb>^q>DHVbc^Fk+Su[q\Ȳ.$%V.iC!a¬ĞQ}(xHV(NZ"1N YgX&}&$z!V(JHeV;Ri"_AZ4HkZT+L ' OX%mEUbmH[) r`%@˥ED-NcJ5I-nFR"X8Qa^8!,XF\MFρpcXVZpTC&$ 8Q9ό gF3!KV‰5Ȱr}Ȱe1#ҌF-0j9KMKFbMCIKkB@5#bFb3#C(;a1!j3\cFƌDw!00V9όTb I#3CBeiGe3,{DA QZ46NȠό H\NQ! A/)1~,F%‰cKMPbNJ\TVΥ&ԤoZTbo8TKa_A~]̌j]f4W/P;&d32Ԏjnj cFbsJc1!$/ҩvH_UOeFeON 'pKzYNȰa9E#O(cYiY9gISdTdtäY,ՙ6֙V(s,.@Y-ȧYP>> @]eU|33n#פ) 2*%Gr2\//-sYs]j.> 5WV/B@s:B_ $@ȯ蘄dZ ʷ4W|I ޮ K/^4+,hdXzH\ a8'$˯ I~řG!I~C"%&@Z@B>rxc9iڱ>+,7RMØE j '}&dgB@^cq]HgiG#PZY$J5#q2"@?.$g|dV@Q++,t42,hdXQ;VZY3}wHj.%KAV`IJVmjS*rզT@j+?$ v,Y=!6-#զTTBPm|-j+Tm|jӍ `F$x*ejB@.J5!%ZB(sQ !I!2FQVitJuX9.%(+gd,#}Vg<L!g p>'ϧgeG/DY]Ee(;"'Qv"ʎXDY]DA YDE YD! .L"ʄdQfePXgE }](SE,ʲB,e YD!(!()Pb@(/d؍L)8S!X\0˯ I~E!$W~)/:dZB@hABu VZSՕa1#XՅHꪜnw(rJ+b\%0Ki2#GYi%Q0K* toJ,gz!ug| UbB@]V%&d;dB(poɸGYLUbB`9JkDz,hd;?*#UWI~ʯ^j*v,˯ L!hҿIs ZɚBأ $fͥ4WT9*?:Qsa\8!ֿ07̒Ja5!,ȿ(4oJ ,J"dIu!H2I*!H*!YR)\$! *$_XPa^!mMJ"dIu!H*H*!qCx^8tœ$S9޼BRLxt(@1k򈬘. -xe hHGgd./-E,@<(db) !J@ZN`CPL#SRLRLelH1V$SZ;ThC@<)I!(SU)>B)> y40+.$+($)&$IqCHIdŤ0+ '$$+&Br%UM⩌*1Oc¬LZ@1)L$$yօI< I $dQLBJ2) uPyUȢ:(y ⩜XZrP1: '$cA E&2$! -9(Sk*]嚝jdԾLb ;v 'I1V@1SI) ) ( (rbBPLMwjU bj7.PL bRS}bGTRO A<_OOHIaOuf$Uy;EIIv$%O$OylJH񅀤LT ARl/.OXzMo7$W)*lZelHhV@hx3@xV`BZK!h.ƪ_ A~2ʯ*'XfA]-+;wDz2_it2_7_kg >fg !}.WϔAEY:"TseҡLYg@EQVG!H?z+>}}JdGTPmՖFjsCjeH[jHtwsh¨ĠfHeAGJ# ʒ2,Ͳ ɢ(̢,>Q^ @EYz5i&! \$p(3,]L!e*g;Pmdզ07 \ao.#\F`)1Rm"%V:UT+ij T{CXSYIVz{J9JukruDžf}vXoˏ_go(;kKQanOx$Y똂I5(1v|.TKK(dv|TK ĤZ2d|TKo,ծbRo*tXTT =Ya3;_c ڎwkڮ,zڎj;γ3[DT?Aj;F1Ֆt"j[PmdvN,6BSmIC."x(7 Mס5Jg6}vLLf.K T{ìώ>>0s QmX3F-~E }T7J5_R }3_^U}+Ykx*ՎƉ&}"ʒZ$cXDc YmD;NanHh8Y&ku_:"qät_(q"Ꮴ>?u!Bk2Z dYh= xBk,&3k\E&*~| !_ 3Hc T~NkFG"Z$ EG򋱪ZZij)jiHQHVWj EEED];AD]>¢kQW$xm(*b_ah0 "z-Y]Mh*>yʯ IH*,&IEH*FR4 $V~涇x:'5^LGgɚ!cTkC:I(䶇Z5qm)"\j.BO~?T<ŕ k ēV\X5W HQ͵HQҴ=\ZZ$'Bipx\&)xO>O("l5^7tLM<&)j *EbiHRL(&QL<]x:>5d56uӚjEjEj.:>hE :0( qªnk,EfAduLt[򻞪 ZT I˲*|%Sj64S$E@ZZ$ ˧ 0+¢k&xmXTh-"ꘟH*BTl0bmhX:x&:.>|y1a=|nk&>㪚k,LdMq/2\_Z,}T]4UW YsM(i@+QTsO5\(i4H\JV6Y B\ i4 TM_ )v[$+3) "J,>;^(d%6(뤉#%׼ADg4*EQvJ>FI 븨D>;%> kBeY(;-eQ*v\ ysFRmBj~ֻj.jER-(F bR-./|T5c Vͥw']5TsJ5調@j.,j.k $KkbU5HSTs bRxU5Hg@DE R4N14ZuҨ6Qm)j;XTmoH5b/ED_"&H#@H5jLJp"q"qì># ;}3R-Be({O@D H@%6H@%"JnKW=nU-BSb>kQbD|EFj@(#)4_ YM( $3¦kgY&}M4-i9"*> RiZDO _5"jª!HVWY]](HWd@ݽɒ0K򑖃 ar$K mrFLh!U{B=t` |bVFT AJ?C:qе'Z Bh4B DV\i iH#@"l27uPFu;gU%6HU%T4 AzF] TK2IuZ$1JՈiD4"긷2u5c iSW(M{BQWĬ=)$0+¬zBUWdPZ˶ʯT,jBmTADswj.PuRi.i4H"l Ru45h@Dsڳjc\E(뚂hpڞ_ucmQ{C_"&*|5E1D(o<~fȢ,WK"6C$l2eEYlHq,+12Qb~]c$۱/1? ;8cqr*HZDZz,ajfvjjjɐ-"Rj҇"R;vREK\DG[$nUۆҺ"Iaj.$K ǁED]S("T[j ME{-"RxYT;uLTqij;"UbѦ-".--9(6 նHdqJlpE`MO!ricb厷MSgH33[DZ܆Qm(Ώ iEYZYD\E""R"YEg~jlQm<QmI-"--j;΀mä0Kk~&í[[jT;͞_UbUbDajf}ac" ZDШ>;F (Β2sˢ잵kgk}v"z-P߳>0 >ohTPZTP jRu1kgi0}v|e>J-"̗pM6B0k~&~e,- MSJl"q,Cks׆:e͵h._Κ\ʯ Es]SȚ: q"a%5Y#Bk,ZC$e{\vȯ!:XTb(eC4lF=ԙm(1F4J $)1ADQv6 e (e (iDEلVHa욂I"kDT[DT)T Qm j)v#THRmoX;H"YMhM3jRGA~nqFMEbEɪmzqCjuhR8="ծ W>;>BMngo(8 "ʞPENdQF(FZ/(󳤢,.ꀈ(/N4leB4 DDql*Q6H%@Q҈2,(#Qv\"ʮdEDqz5Jeki)."̿Me;RS\$ qbt EEEDJ߿DEEEj{Cj~fR횂դJkbTvL̤qs!R0I&Wm9?Um>Smڮ)jOɪ~ _[EE~ͿT}{'@8F6v-Gh9Fˁ4Z$k +-}~Qx YM( Qx  QxT $+#XݖFF*}T (+Jl2Qb dY=rRώ1D0ԺZ7CIKC}DϺ!DkǡTuH~ W EʞjQ0!(j;FQՖHVmji@j_ ?6lg#H@}"T0 kF (ɢlfEi6J Qb >iH@ڥlBQbĎ;ui8(1bOEraӦ$˯'44 $/ܦi8Hզ_ i@Al"_("RդWDIʯhk@"u\UKA MKGF~4 DZ:_ iZ:DWT%HG¦R D4W" i$͵ -Қc c-0FX - iT4gTB $ -ґ0+¦A:ua@uҨA*u)@uԙ4ufTuf )I[DIe:SW|T/I+ʒt4ׄ| VQv8(;Fq8EM(eRQv$SbD6e#̵c"|}]w9'c!%(ɒ,/IDYD,QA(Ϭ "ʢmQ&1QsA(#QvDY|ɢlBeQF}}DنQa#@z\E+E4hz1u\\D4qEs:J\IsaZ[J5U\LsJ%P4=FFh.Fs Ri.O@"8b\ i4H\"a#HZoF"u nd nd OU M  -0I7lv#$J7DȎCTb 6UW i$HSu5H%@YƉ e Mփt $k.Fs$e:^RU"B˿NZ,Fh R -Fh4B Z Yh:yFs4 \ YsMXi.Fs4 \ YsM(\ I뾮M~bSF%F(1F4JlkN(2(,Bd_H5iQQQTAD6YVmdR  QԙAufCTufm"EKEba3۰h鸈t J>;tQLNwO;F)"" "IrդEbMچYUED[ED6|mwMpn$6lT"QmULEj#4v6,T"ڎUaVm&:YmkT_vSQHQQHQQHQQUۆڎY[C( cEلYH5?Y"ڮQj#l)."ͿT%ԂpQm#S dՖ"E;E1Sm~UJ0v\Ymچ"RaH<^Rj``` Q3Զd3}v|[뵈T&f`~``("QJoM"K\҆*1BKk,״=\Dqbx* E]ScTT)dvQUm(QmUqM]6vNQmׁ^U/0hcF-RE նHG"EE 8_"e;-aNqbEDnZ/.azqzqâ"lâ"H30J &{-RQ?:3"DlH[/Nִ^ed\Cdd&k4"ii;"ڱeڱcJ~-RgHH"vlFs4 \䊲 "oQADhśGZZ07,).$f5a@"L: E<Lӄ&HO"c HO) $7C4CFzkQWq$7C#,vijP񒚚E4&m&mb/ET{CgLׁ֤3HTJh@D3V}@LTH@ҨALTm[,iPڮY7A:8FdGA* 8B 6H"jiTH@bUۆT$iܰg E"E"IUU"q ~g]3&kJz+}׮+i"k(Ҩ6F bk#nRm,&ɪ!L7pO&n2p>?pj,&qr:TdwNL\|"q3 >>i@-"Z..7Ė"#l*@2F =s<%:Fց{-"-}H{Y6e YMXU$wO} MH3B{qD5\Fk&4Yw\xUMHSԤ45ik ESEbS sMapOXr8?qæ& $ +Rrդ%8F Rդ|4F45i MM &iH#@ra"׎w8¢)"i )3[ji@-7H@-Rrrv"Zd䆹~Qm ڢ7揆ڎQLRm jɪ6\FT6$MWBn؈2,Q6Heo)(1Ԛ4Ϣlê Qb |͔رZg("|Dc UHSg&@#l*@D'B؄M5%vϔq-Tuf;F%F(1QbDSX:i? &%'0DVbe%d"+ɒ(Σ9>(B2F7Dg >}K@D]%HFF(4 "ʎccEDulL]4 DDY\wɢlBkW_@>#}MADa! sQ>#lHu#,>DHe6 MHjVr "Վ)T;.J4Rmj#aSŁd6a%@"R8wTi &6HSWajY=J5?T6?VFڄUGF4AD]uqjѐ|TFvjDZ4dTDߣTk\F4j a#@HA)$a@>{Ce]ͻm4zi*@J5RmQbRvD uAALӤcb(iDH#1Qv\M"sa>^T/Ib0s Y>k'.^3}wلώ)T D/Ӫ>9(#lD ڦQU]>bgZllBgD>;W3&Ԇ~!#a@rCFBem옂2,ʎebe(ДXPOQmfsYė|n&| ٹ,]KHE1Hu$Ff"“"¯QHl3Qb~lT h؋d%i/"JXRbF"'+}H_Qu&Z/"B+!HZ /=\EDsei c/"EĮQD~ED~]:γȯs_(I~m:WQ"Q溮vk_$W$%Y~]W4`{ӔqQ;γ(3* M~%ď cK/9e~M>i~z&-yIlCg~FUڧ,~3eS}ςzOg(^WYz/Y2nD}"ʎl,QߋHM51g-bxgD}ώjx>>>{Cg~#>=ggqgo(̿}^Dy>;<5HsjˏR EaEDn^DqlL>Xgo̮YTfago(mt>CVhj~"Wm/"?;`.* F;@Wۋ$n*ALTDq5˱ &-KALVv\{$UQ՚46?YajYT-@L% "->@jdUmqU5hZ R= ZV+^D\Tc IaRmo(R혟I5R_FiTkQmG>*"梩j{r(_"߯j{7z|jHro0 j{$P?> t/",ALg]ago~Hg(Y^g >D55zO|REDgcJXĹ>ӕBg(|mկL֯kj>;`oU]>;N E>;^c~EV'RФ1j; R8pQ~}>= fIUl?rZ\!)1k cM!Hm\63=bYa#@Q/Eل"M!*777.R4o|,Q^$ -.d}F]^w9[D)Tk T.g/HA*H5FT;΋H MWgjoY^}vgǁ}vQ:MAjoA*}3F4 gD}(ɢP׎w'H@>{CId5i(e o"o"oHE>n"o"o"oHEDLE(#̢eT $W6J Qb Rb h/U숶(1}"E{C_Q b똂/B_dEׄ"8Ģ%]E ECJ0+1¤0˯]c똼/Bٹ욂/0u11_~gnV己*__ iH_ohADs6 D4W+ 4ׄ):\ѼEyN\"u$mEhAJ0 -BZ -$6zk|]"&3 " ɲz2ZR" ͒L$!T~k2QxCH1+?Z ="BXZ"u8mȘ Ґ8 ڐG1u8ٍ\ 5H\ Ҽɯx "+Xd=ʎQ ĮQ{F~47FI Es'&6YhЊS "ɛЊS:kxXiH(`׬EhS0ubB8"7ZqM$7d*264d<(l1$ks4q!4h.?w&4ku@DsE7"`~NTs=j.Tubӓ,hU͕@DsEb 5&P1k_;Cȯ( |0u|Dp_ֵii4y 5oJ츣7474A>{,M?#>#}-賨AD]>gk(;F}F( i2Hbm T#LR 1˱d}0]kϮox>}7rYae"|D2_VQ*|eDل&ʎ)DQIȯv.;N);f-JPq[1e"GE5,&4QO$DMDf81^%CHD3B1D#S|2jTCTdCTϹCTcR-9A"R-T^KjT#旚JT;Icjǁ*1Fd}NA>Y|욂|[/(O`(& ?f-,4{4{> !>;γ"cD]d6H5BixT[\@v$Sm1vM]dF(8ڎ)j;F1vSmy6WpAjT[\vT[\Dɭ T{Bj>?jQ8HE?XjT[t YƪEU[, MU5㵘jCUmtUEcUcey4vTFUuL]Sv|j;>D]@DAD]3GUrj;F sa>;T;L]ȎhyqD?e,pĚAL}pV"ZΟ~֍PPpYfGqb۰Rm M#HHVm 5v%Qm[Sm TaVmNT6 Sws\Tڎ)XM/kM5h􈖛д1krǬM-G(ZLS-G(ZxS܄MߟƬȢ#-^,h9i9ô\z-wQTApCXFC^x BuqE]DQ7DUH15w;,PqTQ0wb 8pYmX(EDGE“;LOچㆅ[$׺{E =nj &j.=P,RԺ-RԺK;CuĊ E#̲nXaQHQH@-H("QD;FiYw}uiuv(M֥EE YHuFY7:_%p*ZrX\PZnrq"1-T[DZLG̴?#J-RhEr\\%Z$VmXh9F-"%g:&QDBQֽhヰr=r(ㆅ[pnBdT%aHnƦj[PmmB-R6Smɛ-"͟+նHTmnj0jT].@YnB-RȺEDG,ʺ7,"E"@tkZ$+ jEjEjEL]c{ki""c&ccbu{;.5{P3wM!=¼I›,+7DiL S5nF ȺduC4nF=D'@Y:FցdY7aPdH#@Y7H%@#ldH#@bO$)‹w +(1U;^K%@RT-҈A*҈=FUxd7=¢ o oF4oJ4$Vmj0) ʺEʺEY:ٕ-Al6u 򸮣;GiHQH}oބ)iH#@7H%@>iH#@7H%@Lb/\oaVxRx nFցuu Me"iH@7(I7H 1JnWa"Ia#@Dӕʺ@bc E6Ⱥ=Gb0Vmh9X-GX 8O!@D6&V4G8Fĺ c]܆TDa#@"Rמ%aӂr؂rF4 $ +Q҈2FdQF؈A*QEa#@QEل"HEMVj#{MV)!,Fȯ!_C4k$6k4C )j[\ YsM(\ i4H4v/F~d5a%@"{ŻE_n_Hy3RʶHlrFs4kJs{-"E45J\"u4W\u$\E불h[U5bE@6 mbEDAZ7F{-ksV-"J̏պJSb3 noNN| %(1F4JlJ4J Qb [[ Y(Y(;Vyp{-R iH}F3g~p~IA*Ł4 $溸 .x[DQ R6j{CjRgpRAT#ܤڄ"Վ ŤڱR]UHS6H"jiTHSԺλNց4i*HVxYW $+ {bEYea# #lH_"I݇Hdϯ u媶ɚ!SdYM(!p=-7DDr U4Z>)v{[$i9{R5 $ Y:F R:Fց4u YM( $ E'wr@7 ] UM "M=HuoXHS}T4m%APa@-h9F bZt+-h9FˁJ +T4j MHn+9a"jiTHVmY=aVQm R}'k6 ܄iH#@A*)H"i iM4$פ=)4nJJ5F4 QmT Qm Ia"TDa#@ҴiJbRŤ5Jl$K5¦RmSmթ6%TUmj;^FP\i "|iAڢcUmIj@0j7%7lTcImCj~ywR mj8RuDj}3F4l$HgMH"IgI a#*@jQ8F ?_wFYrZ,VMTADFUY j!j9BArQˑ~[rrr;^icnuiMfuȺcu3YwRȺED֥'E#̲nøۆ[rZ$Wmj [$ 7HQ-R-R-R-apH)"Q -hED]Ħn(HQHQHQHpM""YKNl(6nªmB-k6,jTJ-"oxU--"kTkmQm͟CTuEZEji64vL! M,643vM%Cj۰gjjdvچ"X?Tjj y c E(0YI[e5i5i eli yRED%63_)"T[Du,mOu;`?Lyp综rZnmmm u[Dd1F-RȺEbcJ¦m6,)Ummâmp܆" 1\붡}רEb JBj|}T,VIU[*}uyW DqT g RvML5JjT;g%@"R-.҂H[h1WAҨ6j{Njcn~;܄iH#@7H%@>wJ4nJ4p Y6Djݎkr Y6Zr DarͅTm8F "p iH#Gapdz 8Rm ڢ9iTH@6H@b cنϢIP=n(J:%R\D15PJ/g~M01}棘>;3Fd}~AD'ADJ=X|fzx"R-ޛ4`TOC ?Fi@ragϢDa@D]S֋qU$K E6R j MHj>#}vJ4 $W~MX2F4 i**@>Jd}F+07lH@Ig >iH@}6HU)*@/F4_T_ TiH#@T#l TiHSH5F "`4^TvLLES0}7f@13bEajVR $Kk~Q34}vMB vPD?M()(#2BWQ".A*Rj MHj(& I5j~3R%O\ZF7&E2J5U7*n^14Y$}vMAqlDMhxIE}F(Ό0י;.Į;)4O>#J,*T YTbd:3? Vgc4 gΌeC(KfB-"?_"(;^4YLߘ V}vbR/$jIJTjqj(*[kB-"-=/U[|VɪmXHt׸4YLd@LE؍R}HQHTm&նajv>;e}FhkR혂I|HkT;gVmj;`횂kT;F1wb.-x-uM&kpI-"..\\ ]$ *ՎcZj9?pRaT#4ՖՖՖ,"\Ulj;zUm{Qmk1Ֆ$"YE=b-IEDg_,I_&>#4v3r E3vMAycjuB?۳j{CixLA*Վ Um\5d\hȸHѐ$ E6I!,UۆQjKe~m6,2."jU֋JzH!|Umh-T&|B1?kxj&ם}RŤ`URmB-RHE H5_"I5B#)"q2Bg>P1?g~c-0Qae5}v/2v\>VvUۆڎk q2ܼǕ?EMkdxdzJ dYMH!TjC4Rm,&kCtR j TiH#H#@D٤qLT;IkFT "r "T#@DMjxj߼iv|jFڄsDj;NDnaj暴 EqL]d}}F3)>;^hT#4Qv\x(iDH#@bKGBSbq=D1J$%/F(>}g@iUqTj "R"&ՒiH#ȧj TiկAR }3F4 D׎k֤NF(R횂HAY+6}7ώNge &mbEQRt\h"PD߬T-Eae`Hgo=UEJ5gY E<\6a@b gJ(1% RE:E{F~ b?:/F~4 _"l/S己ZQJQb JlBQbvlC_Džk6l4 ֋(iH_Vez%6YSQ6D(,W=Y%k,&kzJ~ ȯ!5D_5!:/" s T4Ub M UkFh4Ub M "sCk i4hx:H@؍"+T:h.¬&4uk\ECE2,&*@%(1 (D(Te MEH5Qv4eqiDD))l¦y"EEy]!cv U~T~r_<1¬&4g h.9SUE>oӸHѦq\PQiEX4d\4W*_(u\wi<޹UEȯ#*Sȯ0ranxίh"lb?E AG1%v"m~)+*&l7.(%;.Sb~h(#̢PDqT6fQF#% Ģd%$aJQbN4J Qb i %(1F4JlJd%F(1Fd%6(1¦J i@}6H@ra#@Q" i,EM&,!>,'l$ 9oj~L&| j-8Hx !Tۏ|Ҩ6 Qm M UH@[h9Fˁ4ZnJˁ$-iG(;[K$ްQm ImhR->]<7 "Վ*R-$/ȎhwMLICrDu &HroشtI hQׂ,j;^kblBjʎhqDY\.lBgq]$ܙ>+ z"՞Ф1jqDNjYMf}@DͰ& M2]RQ*"02,ʲ^dQvEuI; ME"J,:۹E5(13%F(;cs5\F(J8 NXQvZDuj% HaVbש*1Q%wOV;v"-6QF(Be4Qvbx"sC>;N xIzUj;L]SՖHVm6dF׍ !p Y7&Ep("v8T+Y6oW淳E]SvQm~fK4¦& T>dնalìEW3ԙMh,>{LD1$ȢLW|nBW|8"WM&+> ?V79H@:GׇUM(eQuukQWQ0uu0K*FRdIADRŻADR: Ubr Y]ʁdu5%j ԃ`\F%U;Dv#ltHQDG'X&RvrQye$׃]GI=Hc i$HTV $W~]p"*^bqpZM 㵘Њj$׃DZQVu-iAPjǎ3SU~ݎʯ+\;81%@>QeĮbJ,>0ؾcy1Q*UE5Q6!- gJx;>D;>JPĢ%_V%F(Jo#T~׾/*kSb('6d_bĮQMU;6()Ք(hC@2ATt2Xצ$E_Ye IaVb)YM1JHMd%R}Kz*/mRZ};;#Ub(E]S%vQb;^(1BQbLW( Ef%F(Jx;&/JlBSbr%F(t!DLVg3;}v&,Y|XLMg^g>KED]%3¬6}>;c:5dF)T"j[$ TPZzZ[j$b1vLҝ""ՎHETPZZi*ՖMvM,;ajYmzMuEDפZZWzhQj{,ծiM)j;"mT"ڒYTޛTmQmitQm~%mX%6a%)"T[jDFHE H!1 ""Ւi"KE IE HEE H!IR sCk֍T[$J E/I9Bda!:3Q߆ڎQjPTjcm7ڐ2D"FNچ"a}OCijHgǓ E>;9M+3[$֙MMㆱMYEHQQ؆xkCiorUb~>T)kF-"J̿M(FQ"6QK&ʎ;~esc("EqҲ>#}v: E˻m(m* >P&2}v/Tg鏯GbjIC8!bCFؐqJ +bEYVb֋~DMֈ!L7YM&̏t'@Q҈2ekɢlBe&2PQ?&@Dee(&ʎ6l(x3 ؄:EDGcEa%@=$ްKli{A5H(P4W\Y@rE9J_"u:^ȯ܉ hH_")뚂ɯc_0ug_׷VnH˿9Ls67i"GQ%E5JVbI3%vSb Ub~J,UM-"JyRԙ~ 䓕5(㵘K{% Ģx)%wYa_"E(x&)du}xDuD;>֋4J D1(1¢liw=Yȯh:c "E5k3;Fi,.":ED]:3SQH3۰Qb zu3;e #&>?e~(+D[/e1v|T)@LQjo3XQaeo(AD&%&F=F_ JlC\ǬEs.&T/Iv.f-뚵/B_~9eDPWbǬf-J,<4Qb:ɲ,˯'˻e5Y\%͵Yz2QW%uYTe5YQdYa\hôi s5aϸi r6K6Lo0-0aܯ0.',aZ~ôiqwüΆi EX¼Kx7 ia  &0-alaOfô|,T7LKo y/ "aZP|y rU6LK|o0-m0/7LnoqFo $ű 4fIE7LUƅ7KPi ba^l"LMʲa^V"?Re RцqQ aZyôyIg¼7ʄi alC(;&̋,i rV ɿFξ|=?g_C(k_._/eĒ{ o/dkw ~1@< `B5?Q Y)f@w|ܹ#%;>w] ~a|gMwٞǹ3]Ba|\>&Q&B0>`_O~;h¦H3NɍtQkz079tµ AWJ|F2J-q.?Ɋ0)saO`_%_ ͦ ΒjD~Mh+f+G@Jo|[b&˿%&B,Lԕ^QWqD]3u|DTWdeNrB~a*~f.ՆY]7HTWV]$\zCQW3nQWkQW3 1TH1u%)H"ҭ"ZTDIEHE'E0KxH!IALREDREP$5(P$zUREDR$qURECTLRE"4IuNTEe*ELRUE"4ITITjCTQF:\]{J5JnsZi|X@h*-/"/UWI,"Y7D?~1u<"z 1uo JlQW#sKoH0pl(:ꘟ(TuuuLG]u|d(F:ǷK*BVI7J*NAV6"QGmuHtԆQGmuԆ1u)Q:J7EGmX(FG-":ʟ 9EԕG ss"Pu嗚+¬6r+"| ZD۵H! oeI\(Q:V_Esm(ןUs}tX4׆61^A6Ku\°h 0Wm6XuaP$qMRG^Z\׋xD]e13c\u֓Yݖ/,˯a6ȯ"&x5"ɯ{ Qb>x'e "$2Be#m6̢l(l g >)ji >iH@}لώY3F4 $ +}Rx-w" j T5J4R $փm3󋠓j T H#@L.J|D=ߐFTDqs[ Eg Yf}F(_@}3F4lg>i3Fn* ުۈNٳzɻS\T $6¼;5kٝBQ%mXԃ-Rԃ-8nr;-7H@*Eb؆JlâJlJlJlX%aQ%HVmj#DFXT-"8MH۰j "|)[D51j(QjiTHޝE몀;&&P5pD 8¼;űlg#YwLAdau"뎳d8K&+o~AL=wS劲ɲ{2pǼl8xMy' d"&?G1FSg81~]4R DZ|DT16BQmDT[ɪ-9Qmp Ȇ"bH#@D7,ղDECɆ"O@(DYy( 1>dQADAbZQvEԙU&:3Bk请i(Nw qixR4C\hHe6Qv\T ϳi@(33鳸 ",*'gq hHl8a8qq"Y(3jufjD=wĢ$i@DEYԙ ҴH\-)Z$.RHiZ$.RH\DZ$FwEaeM MEm1QvLh{"PDY^ "jH iH3#,.sلг:oT]4B_!E(mT~EEs_VbUs]dE(uf˧G:3¬Es֏'_(:K*BQ "򋰑_ Y~+p*|(u(#̚B-k\;FձFk:E]js֢GcRQF%Hc""̒:"KB$uGIǟ}"׎ %dYR=IxtȒj2T>oTI=7QW5jF] !NQ oQ":*A. @DGEQ":*qkQbDFG4: QXW)Io@+z-F]du5o>##&H@u5H@ua@Pa@uҨ+F] R+bEuҨ+Q*-Fh4B $W~MX+F]4 QW Y]= Ҩ+=)iZD_iH#ȧZ iH#H#@aZ>^ iH#@}i "}߆ɕ_V kFhdEք\K59Fh {~d@5a4H@"\IhfuRϬuҨAD]~"lH@u5+F]4 QW I]a#IE(׍X5uEبAzüuM]'֪7i sC,"I&]˶:"SWDž"s1uCo!1FZOV !C:Țk\dQhsB41_EY~=Y'@/_ iHSb "mQ -F4J ;AB_ iH_|2HUo>d%FTs4J DX\IDXZI%v(؄M4mATmA MC!(c"(RS%g_!^J(e MDE"H"$Y!()(#lj@^]3D"H i4Cj)vi!4;4; R00ҴHɢ02¦kE"H"iҴHQv|jDQvpUAz0F4`TH;E)dF(>LUܛj#{z0¦ V-A Y>@g%3¬>{®!H"r}W3OgO보 ØtR D/Tz$K5¦ ЗUT5Jn{xi{xNp"|k{8p(Q+]EHuY(Dda(#l*@26lBVh* bCBAD7Y# Q8ٍ_U؍ ؍ "i͢LwKoE H!)gIapB-RH5\QagmB-",MT%"ezTK7{Ķ>K>KYt,be(Qmw 02,6Qv2eiYiaciDYZ}XDjǎGDY|\DDqE](;F1QQ""j"vPkǂsYj"ĒZjǎQPӼvL JlCQb~TV%)j%ʚ%">A#hX(7[䓕11SbiKED%ՎbJ8/Z;Z;"Qm؆V;3%vvEjǎԎ-bc)k6S^;* 嗏"f׊22/RV"6:3IVgvM|eDZ1QG*ʒrZDKnhgOU]D}agF}6Tm(g~Dm(χFEy>P_|Yl"X"|M>۰g &mâ&meǁ3Qv"j m,."hHzqg(~m,ʮ)dQae $כن>[gD}FX?J Q4d ɒ>#&a"i$k~,֯M&JlF (!, щ2F(_ (ɢlBeY6 e (DDԙ=Q"쏯҈Arنuf6D12x o>: EeDDY\DDY^QvEԙ%&}Fz+}"8D )H@Dŵ,ϮlE53LgYT0 YMh,炈>YZ}vv DOa@a(1Q$p@Qb,TB($QPn@(5} *(;.eѬdQFEa#1Q2((;kb(jǎJ>[gcgͮRT 3¤6TQ&EWQvLAD12DHeo(J,Z4Qb)1Qb(I(5JgOhP?>#}لr4}F3g~ ]%63_H@}w#;O;6H5$ް3[Dq+}63_?.9Jgo؈AD6 $2,Q6Heo(E6J $+ +%<2D%ȯ8!Lϭ((QbCd%6Ԏ"&+v.Ȣ,_C䖎2D({2eπ4 (ɢ83&&QFE2?*ʎj8D",:F(KmQQFEYɵcYebJ,YALX~I$+1F4J $+1)`(1eb"ʮQ(0{ ώcc,ed}vNgT _Ϯ>;rgV DDqU e YMX2eǬM\$0+Y7%Nd%FhJ,-yHEXeq-DDN4 ($7J Qb MHH@%aVbĎUJ Qb %vsM7R;Fh+H_ i UHS;/,_ Y~6 $6N0i +"B+J \ D5>)'E"̕_Y]=6N+7PԕBmP'nPԕ_Ȯ䫺jSWwگ!uKub|a;Vh={m(8=Suy߿!|aRW"muaQYG](\E4aK쯟_VuOidY1M(iF& Ȥ!=a|c Ѵ'|QL%ŴY?D#hjBSi(&)^b!ֽĎ#&:Q it  i@DGۥAa)i@"l$IaUo>4 A MC UC!HT(M5HTPx4 iZ$RHij@/ $K f M3D"H $K f M3D$0(¬idETh4 @-!訴"WG"duLjeb{j3 U+Cke H$(¤e M UC!H#@-nkn I  MADR]o!HTYRMX2ɒieҴ2iZR2i*@V M+C UHS"u[IJ"L뜂//,-_~M~~|U_]HS5H_oh.\rWTsj._]|_ "I551Qb J8ĮQ%a溎2,(#̢P궎 E^i45^ IK+ҵuIYB;Ə{Mh9[rB\QˑZrrZnr -H"̕_Fնcҷ"lj۰ZPmmB4m [Ɖ-RE#l"?"[pnB4nB-'nw0J5"qbE;-R3F-"albE@LjRmB-a#)"c;-܄*XYgwZQiHhh""R"[p X:[}-H)"c1-wF-"Z.-܆[ĴϺrZnb߱E})HP߈cWiE -hE -HIZȎQL}( Msنid""뒊YDd]R1&V:uY;H>0j -7H)([$ʺ YH!@˯[uejE HQH)"ɕje\U-"ȺTYԯ-"4L/v.&& %+ !q)$/r &Qr ݆nC{ǹ5t5GhXYG+Ȳ{2uȲ,6Y$MkȊvN1~ !-Z!b;T2ERS\j E6¤)TDN "p j& ECERQQHѐq!"ECEPazqmm"Hzqmmmb2mbE IZμ ME6-RgHuܚjEjEb܆E"EHS-HQ-HQ-HѼqF 6HFB@捋r M"<7rd-GXT-RTˁTZ$i7,))7#,*1_mi ME捋4$mET#,7.R\HsHq.n.n.nF -TfFXQ6_qXajEE "?LZ\hHQ\H#@D:JTJHq,ՎC;.sbE]"|57HjH#FH5X-a۰e䶒f%F+ [$ Z~=+(wb3;RDM&p1{2rWB\B*| uӀ4$˺pEe_0&s]arǵZ8=}ց% YȺx#7:¢"V@..>$亸 MG/~Dd]|t "..gX]\Z: 8\G܄".xe&0wXpc% L"uqAm% hm@DE"-.j҃h]\ZD8-3$v.4p(YϳWyV- X".,pmp,Vh{V !1wpy Hp"bc&8BpǬM\p8Bp~ˡοTת c;Fwr$ 8,&4wQ&E6BjìPZ "բ"H5RZsH5J5֯3F(ͯUm~j#⩪6T*cyϕAҨ6bE5b5Sm>UJ5چ>Da@rPDq(; e R}vMA|9[11jY:3¦ $ :_*Ul2eY=rdl,Y~=ȯɲʟCCJb_>FW/#H#@r EsJMZ,M?@D~G䗿&P4W iB4M!B4M!A MSH_wTJ |iH@%(A*%(1#JlBQbiH@@TJ Qb iHVbVJ Qb iHH@%we0י=a@5h.?qBZqDV\1T2CADh~ -Fh4BkJh4B Z Yh&RW 8 "P -Fh "BPfB1:A*"B˿;aZVB $ -FhdEADh6B Z i iHZYh&E6 $K*FR4jT_$H#@I5H%@I%՟7D$U=H*_z0_&MHS%a#v//QWuչBx`I]m(0vMvD;.Z(YhM?%J] T~ 'NՓLj|"&Q!z2Z5BkFh !i-?\*D s5aS-Fh "BZ iH#-F]4 QW RW ?cSgH*Tl(ްQ 9ixՄ]@uҨ+kJ]4 QW Q]@bB+C4B $r6a@]@uTs4\4H@"l@jAj. iH#E)ȯg ,AF~ R/F~4 $/¦ Rb iH#ETs4\ & _T iH_s[uJ $+1f2ixJ bMuiH@}"̟@@>#֋׬*@rE¬@66/fe eT;4R j TiH#Fk}aH@>#l1}v\ώ>&T~SF+}3&8giz,2"3XEEY! (!>#KlBA$QYwlJ~-RȯE}W/E~m(5^H"EEd߱cipxF-RE)v#ʯ)([$xC`*Hjoh,<-RQHGHg> +j c5׆Qf%a)"`4J D_([$)7u(6l4"kXXr[D4qFMsEEn+y_a5vB~-"+EbֆnkBZ~}0 H"l"ZPW h ,Ն [PWj ,lb*ٮEl'04l'$mjXa!@TRgmGQWjQW'KVWj L|UW[El'0Sua"4I "QRmXHEbֆN6""ZDS2{4{-"ɟD.+u54(FB$EsZe5YZeߚCЊA!Bk!+ !cTwZQb ŀEDkꃁ#} >"El`6 \ El 8\h-R)Zb-1%o5a[h-R2iF.RtPZb_/؄Qk.",;Heyi;HeQ(#,ZbdQ62>"ŀED]Y#l` )`d%FVE"Y Jlf"(EQmE6(1׷)F.R2\hs4mE6"Ek#,F4EQ iH%FX2\eH1pҴ)F.RJ0+ "Y Jhh#,X]E."(Cf"(E# 7 _?6eHѯ1g]ub"E E"y?BR4i _ 򋰑_T hs-,x-Dن0E{"7/B_D~fE(xrzYsMhw슯gO_Cd5YZO&Bk,&Bk5De8u5D"7& 'tH@(FG uuQWQW "lH@D]źɣ 7̒*_ǁJ D$UIjCQk @wZQ ŝit :@lᱰFRdI5(QǏTA*(MG鶡$HH*FRdI5I H*T"C .HVWJWWmꊰQW Y]MX+F]4 QW jDKԕ/RW u= Q]CTUI e IRꊰQW:^y1IH3$JSW iHH@uaVWV $Z 2Zh(:P;/F~4kJ~4 $/,zN~dEa#@D~)|ӅUh iHiH#@5H%@-,5H%@6Hns]xn'@"lHZ$ Y{~]Guk~] JlBSbws'0&JlĞLdYMd'Y=(DO!DŦ抿6p3F4 gH06HVbOXD(1tJ Qb \q!H#@Q҈2iskALů a,~}Ђd}>!>K! kaϮd}6u%TFZ "ՎԤZ܊ĤZ܄vEv#+e=RLZ(D! D%7D%)"T[jR $K T۰jRmBdHD4RmbD"T= }H)">ig<i-RE"E $kâgH{a׆Q~؆Ewl;H[\ J[4ױQH(i4"ElQH([D H3[_=E0 暰j-R4kâQH\繫zf=E""yZW虁d{fkB~-R@tD}H>[$ʯ clâgkBs-R)zf yElQH!)H#)"(ZZFa7,$"qEK i-RELG";V@"EKl(6]N\B([D0"IsQ /}5׆ElB-R(1}H)"[PbJ QbJl>;( $wXq }H@>0 }HgbRx6E նHTm DTۣ8*6܍,.`,&r'QmCd6YچhTCjQmC#!DC4!:Ҩ6Qmw Qm4)?.h9b"ŝ@D]E-Rti -h9Fˁ4ZnJˁ<r iH-Gh9#ZnBrElFˁ4ZrTZr iHH@-h9F Ri9Fˁ4Z$k9¬撨r Zr r E'mFˁ4Zr#|ZH1qF Ri9Fˁ4Z$k9¬-7H@#lH@-7h9Fˁ4ZHH1qFˁd-G(=3^dHuɲuTu idH#dH#@#ldHM;lHmب6F w9ׂ:J@-hA*-h9b("iHZ&;i6RmH@Ҩ6Qm#}Ga#@bmä6w.PlgHgώ!짏Qs?3gqCd}6YgOf !Rje`CTo6Y#ՆHRm3gQ !,~l?MHgljH1}vEk}iDHq4(>_@DE",^ "PY[ U(%DY2my<7 g+6 { 62nT{F 2Z ܄"Eς -@񏋘K;g4Q=6,=.Tۆ&Վ'鸈H "R-n"đϲO}vHgY=a5qbx"Y>$ EgEY EፋAD}x""~~ QWH1޸H1qbx"YfQFhcu،i\$Y0}v< E En:1sgOHgȸHe6)1X6%FصxQbImh˯T~ER N\DWy "/F˿љ"7̚ }?S0k.B\~ Us)F+E] YՕ|UW5CiHVWCFUWjFYɪ0kբ U i43x U 陁dF@{B6=3,H3D˷_Hic4w9[p "}l@D6 8S[&GpQ#̍2BQmkk}&|gXeQD]Gie#Zr ;F(cŋ#lHrP76M\<ʟ>(Wn,&KΖˈN$}slBQbǕ)1BQbE󋽬ޡȯU@D~Esb9i iHVb}Fv>3,E~Y "_y:%(1Sbo RSiH@D*1@S%;|sц,fEa#a@h.Fs "0k.FsdE(xDs: \\:>/|?>_TO?BO"ߜw?x=_I_%~E|}#~Ï?,-\ endstream endobj 375 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 380 0 obj << /Length 2085 /Filter /FlateDecode >> stream xڅn_!Bpx)IK M6A&G)̐܆d̙99QyDnpMeTƛ7RC~˲8+( GT5۝R*4y_&ht H.t<zm 4AqP%skھk*FU+,]##Ow%-d޵T'0Vua1,וT+NE'tŞL鷭cb'0Me_e H 0:ҁGRy,!L4 B >E`cGݩkGlmjMK6-p^Uyt`3_3~ sQnag;~!|>*o(I8 ^_)xXQ#W">-`o*pK}@O|Em[4%!gXuUk*s3V#tBl!bi җ^h v8 hj(< AUG%1zȓgrNp#ZCa`-<^a6cX T83GKd]f, D *r@b\p3&7Kq}vNHFQf1(TРeR:gFR;[wu8<Qs\qU{DPat-XEh| Jp,-Ht[3PSC8;h8_O"Z̾%,xP~AQ?(jqS7Ff[$g 'v'] e7# AF1s;,5;f0"O~:B3[MBm&v6ŻݥU4k 팾߶yOt2WXfDJˮ=$RgҹRŹD(J܀%:'qB82x#q/&ZIi^EUoLeem@nn<2\Hygj!]9R>{$'//?R3 Kd {V|^ <.xQ \a(J$BMG4h.1l[}:2I OJ8EW@{\1^QkXl̅F#k繐\HZ s:cr2\.[oC+wM6U9o%"5yܟ<, F{l2-/{ÝΗٕyj}φi~5tu'ɇ.#thaB\rT8ϯr=wus$<4Ri,mQ TB5orۡ_3r7ӂyY>7rȿ&x-$J"d`x2I_Zj %T"Vb\i~`!I9< *qqЄ/%O,\ "+Cc+*I|H~ۃdQ%xQs*^̿b} endstream endobj 385 0 obj << /Length 427 /Filter /FlateDecode >> stream xmRM Wp+H5ccզ_ꡒomaI/l͛7oFC Pñ%XAF08 |_ZPEYD6vӏpdN]P,P{ץ"r*ݔX v~pLIS뛝p{큒E@;S} Y?qouKfzZ7sX.ҟ˩yU[w b˘mV%)ru^'yH/uY$,=scVY6*P{1j&N 3["%^{p7ꚢI_ȓYs x$%sRԤ{l;yo'2eoUU%rdc~q]z endstream endobj 376 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpTTNeNK/Rbuild417521c48d8c/TSP/vignettes/TSP-clustering2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 388 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 389 0 R>> /ExtGState << >>/ColorSpace << /sRGB 390 0 R >>>> /Length 6516 /Filter /FlateDecode >> stream x\MmQ_0ȉ?iR$[b1zH!>UkB#0z.l'_~JU[yr_\/?^o~qGz;+_ӕ/~dopum^yWQ0^\F7^^VkotF9n:*]yW4՘7{Go\^i^W[d_뵇}^yys@UƩn:f^ q|LՊ=y%2sQ_}_& ؒkZU5+]~W4՘7{Oa+1ʫ lҵkYWRe#ٶ4j+tU2$:;JStO^žM尽 *~(ٶvHBtU죠y ҋ1Y+nH}JWjPȽf6|u-ĨɄBO^{Śzثt +NE>j鞼j k7H: peht;Uo:,02%*+TD܈ɫk%&vD7t)1Q.:TGԛ>h7[d;}Q7[s'_A?eeR ĕS'ӰZP3P4L]4K °NF, ]U z/dbZ՛N>tUg w+DAp/&+m~4']i:tT :*n&=)dAp/Jdeͬ;|Mj; m) \$!<%':=aY+Hd7pr73 k9-q@M׸k&N`g-fJ.)rԒ=y=G،lPT䅶fXSX#E?煆7١ͺu~\h8Bˇ GRU&=n u$D͖I~qkSiòV nXxx:x?Kky)*g<Ą(fpS_ɠ :J:A6O@[c^|ɷvc(غTBdwwJrK(̳S_&҃3[b[叡)Fb _XIـf_%ۭB?w1a͊U#5Q߱A+BGps'hoP>vԋ/>֎lLoUWzGAn b:ї(ٗ5;ydzcFX_}sx>0GT2x5}lgMgC*fzܚrQ/?.VTjkO5W= 6TA쓯]Zx7Dn(w}s DF6vA[D(%b_>I)Y}I$<5 9=4Jb"aYۏYS{f ܱ4?Q g@33 |)! ~Gɂ]Lץ:&êV1JV›$(poǥ{#QzxlDzzeC&HC@L q;ƴRɤi1~_Qo:ܴ1أ០黆~V"oŽo^ s"VhQC~^pH vjLoa{$ǻZPnTI *h3\L:K W6Gߖc.\0qECA~@٧cZ1D't63ޖ @.JXiˑ.@H$ ڧW1U+nHv(۞Q0jż\ šIwa(Ɓ3S-A'YDU^tr#/-dV .׍Zq-l2qW@ה n&J☪7+ٟ#;zE| bW"(#@pDmsEt-(q vfZ–1Q܀ ֭ČN2"o+.*g`V}]Dg("ũ^OK%;**~#opWHv6P=(ɜh;^"O懶H'ic `2}#;5^1ܦXNE'^uYN+w^KbL֊=y ,p4=HsuBJU% ]Vx z?X5ŗh|KA(+j a$;º9; ? gy;p]H:4YYQpHr`7K|_ՋA3NĸƤN3?4[ j pF ~c-8iԣ5TNud ofp`NF90hkC\.txMp<Mfb`~g>ڑcm!*oȄ5p_'Ll:`n4(]ȘĞ{<0נ(s v,a0ꢺ } rgub81\÷?VcOjs pwOOנ:kG_gT $rچix`ݘL&{w:DŽ}0hlS`y?yr9H0fgwٜ hfq%|pOu3 x8_ܟxAvkBoqx ܋.n U4wdxfprw %0u"f,lǓIߙg#3 J?wuYЉ?!aO'0eZS5#5%u`7ct+]DMg< ;S =Y1z1t em~&>![ޘrq|xNhKkZoLޘq& =)Ch=7NKl]-}4q&{251[n}_{>}d ƥX- Ҹ}^+g®DLLD_-;|k* .v2-_>Ѣn\ }4hKF1mi^ha#[ ZL-xӇUs= ::f.n6ȇGCb#ǵ;MW :bf㓄%WejvsŦlzS12e -a ro! ≽]p R!8Q,?}jHfH͎QtPT|8/'$ᔩV_i?Y:#f xEx\\+=}P"0[tBxA[g iق5~Ee-ݤZĖnS6oYNv !|%N0[& Shnaj#w`&wCQтEgMs'!ı6%cWskD활S#y0(mc4둘q^7q7xz Gw"Ҽs3NT*?Qy??wCnp@@(nb-:hDd~ɴ䉹bLݷ¶S032a*BL|A2Flq#p qhm-݅S&=>^:H'=<<S\O]Z]:%pL}ti>hoL6e0e&"UԃT(4J`X&lxSɵ`NXAM.=l10R$0R8[:l3N8Mw 6Q6tߓġӑ4e5b,N<iҷ;Vw89fz`\ r/{_=̼Ϫ8lDa Hms/H&70bgm[zΈ7vAbpmyzF!K$ d撜`}![:q_ہLL>Q# {JƱp 3}O{)rt^IaPpPg^UQCYG> #;fKvjPێS wsr~u:|H2m:c~&ym.^4c|8ON=]npOwk?t_?ӿ_bSO/~VӴϖ'q[AAǛ;ƅIq~JWO e\*rB׎znOSa=\@ >?wϹ?&:9M]㔔?M?ڑ4բ ez~w1r?ZBSƀub#gkw Ꮮf~0 7ϡ>QHF*P??"W+z닁sc4;' 3z9Ƈ.ȉeyn,1 >O'érV8ߣƈSd"РFOwHUA ϏH]E*?H@*D*^|P_ w|hPvHv3 Gb J1tX:OI1q߮ȁ5Nr.>#>b[Q Fg~d~?iOn@$"Jƃl;_cOX8~GtdX~qIӜ8m"$NDxbk(vјcbxu+kb7mUD*EOb8@czw-_/_Nx^# @ןJgN:aIG (s?u]t'abvQr?ش>Nh@ 'nIO>Nq>3dI_i)s+U* wPS:L@e^ґ6W8)&+T"qVAf#ͧ SH '*0BY0ydEL7±*P/ۊ3#æ a&UU е;Tٝ^դN#ը8EnfDO endstream endobj 392 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 404 0 obj << /Length 2719 /Filter /FlateDecode >> stream xڭYYs8~ϯ#]e!A7ı$OR}@$Zb"$eoPv\eC@_7b޿9}#4LnQ"v>;Pѿn?}gmChEyW7vSgGcupW1A &?GmCu$9:yeuVβfgkۏeDc:$M rR* 6ر[ ܷ0 eJ1T8]y: \ɻ>λ3~& mKlph2W1>>Y dl) _7ݻR$2yT<(0,0KH`0yH &tsY/I _%z;&$;5 aS1SvQZ6;3%:V낟hy vbճ۱8HuMj|s}ryv}|[6o[!mLzzӒY){^s zta޽^y~VLc5 y?xSW{ *jEɽcP.mE| ĞDup; oAW +Bw%J"AHjMgyV[o(I/^ uʒoӡ<3]cpRp *ru9h[R   z _=yR-nmd9``9n2yU^/.Qx9W/`& 5+qꊬYrn{#^Q}Y.>;RQyr=E{oGxCJJVFEDVjHʤ{B>+jFN'ݘڏ[XE$If! >+6MKx𘠰7y{犢t&~gЕsއ x=?/:mcnˌO@Ht@:~=h(V{ƞʔi8!9O+-'2܌/@1]9젃 )a+[^igm5ܫc>VV" 9 4Qb*5;zef{9hm2XvsL~h^2 s9)u> gRP%J”TMNP#EŎrf Su/xS)l79*!=IzO^N5=,R%ٓ{WcS "ptI.F]Wmp3$AN\{C$1(BB}o:DXtig )(+ij]Y'o ^$WȻ|T %OA~Ș '=YTk mJvk\q"tbg-!uBȴu]-j.ʝCxض8:~E󬊻/b8踵n^!"F|qzydIb\ 6j@F]IeSg ==P p+){d<U}?h;X d C{)NsHH f2 ETl,\{\,d[K|> sA)&t9ҭ'!sOv\@IR1kD .~w.i-l2b ui4AB=-<*%28sw%{ $k v4 `X,ZtK :PZg%"ѻ"#>$ipPԡc;Sp$Ia]e+&7 {sUWJ @'tE׆_IIfLise iu>:_ 8$5cDgJΩzHpbNb:IƱϠ#rVñ$ܛp#D.[hpqՕJdH@ 4&+gەK ^-CM iy'Բd.r*@rrBnMi_h* /H<SJl8"/T*Hb~lCbHe!$z6{_q 8gLwdBܥZl\ئ7BxH1$w0Z!?UǨ<{ؐ4= k y598lQHح^4?fju~`07*bF1Rt0i2$u viYEO}uސTW- Pl̙\nV]$la@^gcʦj]gM!)VO"# }Mհ@wUۏ8/l_eNy'wQV`yB>e SxĻgx3z]ri=ށ3!kOaiGP]R l޾/:w_ endstream endobj 299 0 obj << /Type /ObjStm /N 100 /First 885 /Length 2223 /Filter /FlateDecode >> stream xZmo7_1 9|g`pKCj>ޫI$J%ٖז.wHg>3ÕVha-IXqº{'\p&?g KZČg"<)FiDjYCMI#@8r/%WJ-NuhE[0ddaxbkn2 X\;À4@gY'XhfCu[  7%pZL "Q8cbb!x/|<Tr &TeR;  eCݞQx#,w a}dFtSD+B2lth qmb.;f[.'3&Dt""q,nS$FO]f ưy2ȨE9zhi1N] tu֘4lMFc @sXlr[HX*63nd $A)"ev2Vk>Y3T̈́ucLXZ6/ $1[,1 :`4:7跞zSgNS~#>%I~{+ Dbn}N>:USӓy9.Xm^,4;p@h:݊GM;[x[l.?>L}`}n1:kPF,{fi'aL_NZl^MYvd‚`b!Y`rXVi1,M)^l9LwU3ěqqsU'is3mro$isܴp6\z53@N1)[ǨDzEOuԯ貍C!O~>zwx/5҈.fW?WѤ{}T]\?;([]WD3rX^4Ԡ&J]*ӦTjܟ^_ ϪR]q=R2RpTbRMgcn,bx5]6Go_x_tRpmdf>öeDyIoܵt\JC9exj!I;ɡWvLMO9V|gjtМmhiΥ33HW1ySiN4,F旧>8H"'~v_ˎz3- RR-,[1]߇~P;jԯ@?-wz"g'5T pOY:ə+b$ r亜<"[ly3Dq?ez7w`Nbd25ȉw"V$[}|.H.Jޖ<ͯӰ|۾ K4.^8S^ YnO~;:hUܼVӧOK,SկRIH2k(gE5.](T=J>0NkI۔_zg)Vᐬ4,ǔmn P ]L1IsX!FG]> stream xڭYr8}W葪 B7;N8v45F%n(RERqۍHNMb }rpjf^Y|0{3_ d o>E GRJCWeri[uQgs+m8⃑ XhW*Hһ~~c F}&a~ r”:hedUZSH-ӪNn(7ꕡl\~c X0(lԝnuj9Y F\@t$_\(<7`|'Oy(_ HB) ؽlu|Ru!8 x| d,uZixCOVbI9BS0i># O% jok c&#ݨAu/B#&fi(dX'38 BD,ҿm`Jm 9fW,fsCkۤLhjmG "V;3g3d@Pz!*@yA(#YQ][j@q%ͮKk?,~Y/iQd(iRٔEҜ[)"naEmRp6|.b[? Q W UZdN]>;WE+t, &hpߧhu]h~_g p6V!?6NFڿlirgZ8y3zS60 -3\XH-^.k> L=HYee p2>bZfecq*`AEN}SYLR j0f)007j/ײaΙ!wVCEt#N;8E,vf5hNC^Wr{δ~dKi5/yֆbY&u;,:5"/ Nw^6UjQbx`$A]P}F'i $vйp&NWkQYT ݍ`0!VlʏƋ shD/ <<΃]lJ2DMIif,sRl,}w$VƑn/%aBrt &E)MRd4V[ockD?'8X`s_.|ؿ2˞;u=&O T텪[ e3C"zh":TC^omg$a4:]N 5hUR{@1MwsS~ 8 =F%@D )b.?>AqbAťxog _D)5.4Y.3$^IDZʗe,KJEaHSy ai} S YD@ɂR@GI>fyv S5cLU↯Z]Cc[΀W_J@5m2FI,ʴ^i lvq=OP@I>$Қ ~Gj; ',BI+Q-1jZ`IHB5n`R{.0cf҅!ʊb! ve"hgĕ(P\vb|+k֙:b%jz0Tq:L|_1mL?[82X?TJ65*eh+ʕSm@V𰠸 Q  -oW8R-)|< 8+{2wCx/ a-`u'X  g6~X(r(Ig)vGWBOQkD%r9 lt@Pnj LEi6ͯis3'GVPpF-K2*9~#!y°#FocT1h[AVt]/BL)g\FH\ FG"9PEeolƹభũ#*j^d85ڸ{eF$1vt.s?+ًªu9qgs%xHr6bEwS ~iAFqހф/eFd _WYc]ss)|V.Nvz"){QN~nJSU?8 T(b+jJ8?d*~Eܖ⼸]} \͙'fY*kUܻɊm4~wo1Q;weID$e[BGNCi%6:V9ͮ=6wmO^\PE/.| ԯD&IȄ"Y |{w7>}zg;**W?YKtī*޺| Ԩl`wau꒩=/]KCDžA.4Qp(ؕIV:-Uق@#s˯DcVnBGJR7%===d<%jftff,ϋuUX?%ZqpMLnz7{Ex endstream endobj 428 0 obj << /Length 780 /Filter /FlateDecode >> stream xڵUR0>:3"Yes"(P2I:SzPkeFKޕ@i=dY^}iG{J"Q WQN"8*(s/ImF,G8#5vFJij[c[a5d% @5mZЃ4A,>:EϬF~wz( JH;4A _ -d-x<=81u# =V.싧*(? \&H`KiKK*XU-6q-rD9l\wíHGDʞZ%;rBU~ qd 71[.E :ںCrm 7C$$#CglAcY|rÜDi2>qEyg<&8D`?v$Qƶ+v^uKF\3` +?Tc> stream xڴsx4v6h2m۶m۶ƶ&vc'']>yf޹;CB D#`lkqaH(ZiVFZzzfX!d3r%mJc;@dndmh ?@Ss ŇӟL44"HYں:Z l2Y[9`432ؚ%E%G`%g;;[""F UUb*J>6M?y> ˈ( (kȋ0h'p#`W[͜8\]]iMhmLilfpu|\V lcQN'3t mnqq[iQ(ӟVKcf4 hc`cadKMrvpCU ~ܙv6q4wtr;"`bnOmJ()H GulhܜO@XN `` kG?6;nKɟ;ѩؘ;%C/) @nFft57 X9MXOG Oſ#X6 _%lLl?Wc[+w1Nc4ٸ%le%k` $uOcks+&X-p2S+GsY0I8ff} 蔔TTe+bcdklnc `da88L# cԍn ` 0uZvz߈#3N=3dYr>~d~pH s { *m j?_XfnLj3|?^Mk;-(hIa`009;Xh?t.5 Hm )6UAA{Z.1ՁE8oݿ/8OM:IzkR䍱h*J@̢_Y!ődnF1Lf[|@eX1qU vYj>kC3"2v'T'#ZlA~Aƨ$]o7&Uj^CկCcȨ^\k%rx7;EJ <AZB)qLJof>B3^MO@F)xzqw`LVq~sM Eĸt`?T+ _fsI`ˆf菙3,&Lo>) gnč%@SYL|9^'xLS -) 5Zӿr Krm`:YP}XMG|21d,(+(e(WXaRnly1!7oU9B= tr2'<;knYB&ZwD耕8L[%V|s_/`a`_@?с^΅qp"AOC22]^\rf?rIL\s3^PO4 AwL2ХNK[~FS^9!MƽБa%B3Yu@ʒ74+T 2j'uj p௨B m1+5H*+ *qZ{t>zY4B1ECj"$-RՈo42gOTZcT%/_m)x()z-2ӑth; -ׇbߥvpb }(F4ٌ  ^ϊDEI- Z;qir eiJ@>Cn_yC,H x#-&`tl8,~w$uM"A gSwqǬ,AQ.rCGhU$!tPxAzhG>v )$x#*ibQqcdOk3t55bL&'w3Ga&f|:=8])D[B"JYVU<$q*18&=z!E&e[@,1ٙ^$-yb'@Mr |jVYn\ \|znkO2ƍ$ZÆCexX^ԣs9eR*m4:ۅ@/[XjW zuN1KEƧ1?1Aա{V%)phstcg8Ṱxz[ح SO}j,мA Bi7qOek|*Iυ?{QSQV_4MdmA)BT.f)WQ/|fP;K cbC-!mQM>1;w-ꩊ-¶`1?y d'UAY{nT5S] g5Qeϛgt DrU2K(?"~(@7圱F=|tY^QցrXδ_@p2ɾ$,w._\ϧn[d& T٨zVVryc:Pp뚧h%Y!߶[^ecJB9fSJ\S 3KtQ"Ixs"eSmv+][YiZ;]-)2?"Pd8f'Js9rtdbPn8 J*˛'ӻ< I}rאGHLZ>n\rpP\yʸ+)9Ƀw|qK_1xN`;GQ4ק_1l`l"UlV*A|`Aܵ0^Hc{e`$Oo]1$hu^͞Aq/X EZ>UkJqtv6_: K Tr,[@g\/򭵤vB74Yv >2x6\΍Q 3щ 5CO1ܢR-?f M\ ty< N> m%y%*';w6bSBsA÷pj>'˺TE),urkgn <ظ膭{mڞJz=PLKYt95$<5* }iՙ?SdfX,xȘ{_vT.t:\}aO,#=RMEsk{4bS=L)uz3 #Q#WZIKoJA!8l49_Ly9;QАz{|a×2`@߃򹵽Zo `LmO졫Z;B36C(ZȤMjZ|GI\?ݷqƊ7G`eKg}eՍh_KZ1DEgRX?~-%s'z+W[qPZ~&<&3;RM1ͨ]S}:;_[{{.lԙ~ȣ wrP`u}>7ܗ΂{Y6%gڰ^ [J ;mҧi~ E,Q5A8jkQ z=_<ɩFZ6tz}o-k"D1xJSӣ.'}xct~Xi>hU/Vx79~2X,J0ҐM8d%Vw6`t8讛4Bkڍ7f$%ƫ# ~).(7jW‹nvxK3>B{jm\×o*Dĺ,ѼRs^W/lT.>[lL/Kj{^fd$3Pϲdi~In4œ9^V+4|+HTP5E[MO3Œ8F1N$B@,&$*aPLҩ F{2[l:dY_S;N2 JƔ Z'>JK9Gog⁌7tkE\: b9韐Wu_+*;}8Pw םFdu{wG47/RNGF3 |~xy:^B}R(G`XPyf]Z~Z ',јJN_elR} d=>zۅdگΨZ#?$)rQd82Mro\(3^f8a#{CTmԻKxUTwb_Hxp^%)]52eMOk'#‘ >@I:cө0cJ92Rmp0Kpa=y#8@_"j iL0N#DV>9*Dax>E,S :C{eA)y5c F B7Q1VljLrV8!W18qϢL;^'p;Į,a7Fuwwӛ{IQ:0V-N9/yx]'bV>JdсrHwrظL"5װvKτ@SuU"C"PbUj$s#JF Dp$)^5;T ʞ/5RK\_wLCF iy1b8=,:m۝ Rl+>)[&QŗVu5L(D3ie9)(Ċ`ߐD'ꋢ(!sPY8gYHR3E4z[c -Qs,JzN߿}z0R|GPgdCdN?JDCGj4,PQwes ܰZt:2K.q챴\TLӂ7ec\_*T/,{TA=r)x`$$?LFM ɝdգ4 Uqf;b6X4|iZЭ'gr.`zpB3osy bS[7°4fkmBa"jiGհرznB  ~=!_^٤ GyϛM g t1Eꛉ] Ș/Mzx+ԏ[[PԻDdrL!D?y>S4N/$ ްvoCu6g2;m(:wԭYT `}UDV%*Eӓ|rh/o k>vӆM%KgzF"RaI'}ϗޫufU*"tLrc(ءt@T[N8Xe:EMgSa\mwdŴxA-& |"ĸ8b M~:.4E:탚D# wr4ko#dH"{Cܳ%׌K.g׮OŢɅ+xKC)UAgeDy;&)[yҜޘRFΪA.JLڴE`{=.XX ;z aaMOgYӾ ` m*Hf<|"T:xn^kCmZ[0 xn<UtP|LpP>fKFod3VS)촭\xb=^Iñ\֔&?{נ^FDP>\@='M׽ Ub^ ,S @ qo:t)`;ziuGQkE7[wN,?q'C;͒']UXkWS̘XAs[Gu,E-8 1#&Gg>m2'zugZ%'k<*%vl+3Yĸ΃SE 9^a_s ;&xhFW:G˽)\B>,HJL~Ҳ1ZX,/] X#BF֨lt+(UaH9\ yLg]Ӓ%nF:hꤣHF=< +L*,L6Pf^w[OҰkN+qq~b]9p׫Ut<)BY0_D,FodȱOqPc-KWo5kįܒ\[[0#lgdp_zX aCTM'& &өTy%r/߳pU»\/٭LhxpBN3k-cDlAu'N!Q˓|fH[ •BOR&b[CJGIIS@3O]=U`80Rq\DcߏohTj'ێ Bv@+4pDS !껴 *;iN}h:w+$RKv,ˀ#a T!0hv/m俕 +V1yy4 >.ٯPp9¥6+ebR4&LBׯӽjX"] mz Pmя8mhg-l| ]&˽TY$a,ֆ񅠑:Lw? t2;η.ח&nl(g`(Z5C"#Pf"reS| ޟ:ڛd$GHo4@R.X %)!#"r"9mr;r:&18ץ%9 OΕTNWlpWu.:E֚r,'t3_75j5ԯ; 29k`.ab_7Ug\Z~,T{&=D4DE|Nȫ4 X\N asSQ|A@ޟ}i˯}◌>رo"A |_2pdʾy]`?>X)ul2,g l%U9V&QCǛnƐ?{Pq/ag+뜀`Eazx S3P,ݤ|ub}V)b5v%q($fr+iۙCPclGdprQȄx]2.nle}>TAܾIV5Eݨ p*TltvW#'vX2U,/,`FCq//C ,:2+FoN[3oIۋQ 븎G"4Wft7j^{Atu9?+{4ɍ`|9LǮ@]3XAl'pYKu?n~ _nj%aIr`[ctR}]Gljv]3o8PQڸW/&dPHyT. 9 &{UAiqPi [bmܮw_Wg#ŠJ|10ќ+|ޝM}ぷ|T[=3]PNX/33RL{w'^Bzwǜڗ{Ĺ,ZU-onA&ΏW00JmQ32n(@?gm?WZ?R!eĢ02Kl pFA{^|H~aKu[.1@;3 _ywbU\v U:8y_1pR W^o~z. k BfMr,ӇkV;ѓ($cQ.-7a\:P"aoW-}_W09[Yf0.E ^kȲSidq|@´N-4+Z|O 1QFDY^^W{Ԃ^X!dH+&1{vA;1/W׎*2B913fT䛬@$-Ɏ#70 O.GHj vIav&PAD۸cZl̔7 iR=Jr1{DGo3T:W1Z;% {s\dE]*.,/<&3eZ=q^gYNSFM]|RȸM1+M!\dxx)i{ k52m` 04Iآ]tCbMZB< M~1'.4{9DvKI0LY=l(;Ͼ6`X Tx[0z9,i-R3EbӸx"<3$0M*x ST GPD~5dK? PCj??}W<ܲ]'-@WB\_鶀Va|9t2-RbSf fV ̌շ R}whEO&!3e3σ==)x㹂aS;62 ZrquM]SWdC,mFƵKcV(TCÅ4ͯLM'ntllVF+v} kwfzY(<(t% ݐJ?}{6"[I3N038y;NH.nd T !ÍC*U&MGtXU>S`m[,r AqQs|F9^aDB>iK 1 9}~"C7-Dm4u4[PQ8$I5}*2ZW6|5>m&p46$ʸV$?zJ хk/ZOu#==,*ޓէA7f`M ņrM7䛼F`n=ZsVW$c|,3qV-NIF:`8(֞{%wRRPJaƹD\ S|ҢY v`nA ,(27k(3“iD!צjzP?gVj+YIt1jTK;* kRMkruUK= ku*WjG.QHE |9۝lTI $԰u5ЭOl_qeP 1,#j+| ol'#R`3QpYS&n-+"OIYJ0b/ivbAqxƫ bN~Z?7O>Xz&C"&O-1NȰ8h["a?G֥1}޸ SJ_1#p͛Wb OT60-9sVx+/88Xy;L6QclWx4kT|^׏R=~"al_Tcoޯ}hWZ?0/h<"ci)^Fa^Gf\1F`qSeي'@bɺ˥'eSB( "'}cل gMxRC}|TT}N'1XD LƉ˼ % #͂!jB<\4\3]$0QEK!zؿ<_*k!T y,iBON*#tf yz&>.4BXI=[-Z9]2wsᧅ.$ 1[INcԩR9⚐$Q8EA=OpK[){Hx,+us +]L1SRB596oa+o !#=׺#oI<3JC] s`d@\U+ٙ Z[`v4A4;Ql\虆W[]O 7wKo)1FK-@a#gD;Qjr|UpmoMy3gt*#'6*ΡmYHYMժrkFɆfK%xMM;@tu $ '([Uin)1Vo%IIߓQԳ5{! u.ݰuFGx5]e)2Qy odrG2%ThZ}l2 b=TX!J[A}޸ov\SVS1qTdԙٿ|Z,"-9D|7Auj~{Žx/:nL_E]jYR_5#bO ]M((c\bQ^ }AЊT_' M>Wo2E1TISmWmȱZȞ0DĹ(w5OD`H_Sdd]75XX \ xS5 !İ< #FKN7'Ӊ~'6)(&EbC&u?$Rqvr7u8s]%ЕI"=3Bïڰ@bn@Z5 MYiKC/v?<5=KFMq6#Qc(3Jv=t ǹlؼ8Cb߻(vRCUr1 _a4,bVשqA[^VRd`BgjZ~_n $,%'lO. Z d:9V'RM7 `*˨29>(l3Me܏5iV8 Z ,ћR$V1Vj~6$\0mMj:.R>m>Hymo$;**Wum1R#1Drcs;˗" k``@׉#swH-#Lk܇oǏ|T""eje ?jNGhw]=m BW WD_C{ 1->Xgơ!ڬKnsv1}q\^Eocjٵ.(*IL {{ #Bb"n&v|橚^Q,V(]KeS\rqOD4EKX<[YHP#q_Ixq Ќ+7`-4m4DfP<xtcx؟~֮@J|Ž[nX@KÍvS0[Fܯ_hҢ uQ{H:4, ʇ.qj D;@aK~;#ɧytFOD&ҥ2k6w_\2$Is ٌu_k'pj>ϑM4@`νkd]Ç].ZQN9)'l6Fwͼ >)ZTAHT[ s1^/5by]8Dk\چRq yfZ;nqʅm#F#ӷӦJU]wAu)9IKeY~v_bb'Z޳GWEt`,@,uTּQ~CV̞tQKyw}bAqdYд/Ue1!Gh_DlÒHyB$c~+SBJn%NxY% b}>?Q5pMH- qzt^6LX#N=~ɬkCrGSOΘVM(cB*t>*xHY חj B}rx!ɽ0i0Qɠ1+l*Ub!$_W{¸HmPhEA8npYK%eʟ\/ w ~) 0)EP4tZsiS#FamF|!/mw'øPTw-Ъ]`}V3+V#%֔.G~ 9KЀ`0]g}I`,?L}%)Bs5 ܓ6P |4"P4{ `ۘI-CV*?On++x#w08F~ -%SMN zJV0X(<2nTXy;۫?o+q%@B(4;>%#= r=Q:Z&|ґNVYFk)>Ft7#Mt;<G#H8Ϊ8}>H-IeCWA/b COLrU $2~J+}èqc3A75L z`WMR{g΋NqiÍ轻q/k$wˀvf(B_H;Ӈ! {\,V-ڑ+l e+U]F((c;fBmIށO0Hbw'`2:baG!Zd9F7.Wy5eBW?Y ʂ(w棢kÅsjO%9'Dy*hgZoJ]5jSb",}WNvjוå [R w*ǥ()f94O_}E'݌.͌/*$J<]i QV4wE |3!-:x~o4hnk^Jj${,NU*:Pp\&搏)(wis6PYGO|AƆHɪbCPLFv- Yu2 f$mbR:Z"]z"G% U'5, %fA*iTK=a NjAȚFE`X-SA Gb$?>Ej"9}HBˠuzlzF!Hch0v;J.MbJuR`X*nn~7&xŐp @hi쒢*jfQ#ұwf9խS_Ope=ɰr<-b'.Hu2?~z@և#_&c{:ҔgJ(9yͻk_yy%NW~IaC[( 6Zb5|XRD(ޖFC =WC ~Dv RS Lx!߳$ڔmy+-]sp %j^dx2^Կ>.6 v<^TA~9;}!V5 qkϿMg簳a~zbgF֣F@4\|IIj33_&#`hw]%$mN-&ڤ4Kicv۱>tԜ0a*Me-waP׿ tyVuf@R[?e!Ieaè"yeň{ߟ귵ŇCf?{H(՞F ;űse*H!$9S̹<Ũ0sY[(m~hED]%Vd6lTƒ&fLY/l.:Ⱦ#0"Sl}o$+LhNn0^i8֑A2VX1 dbrJwZi?zQV 8C W4,CO>'/*5^bmWCA-<߆.F}ko@m;DqoJXr9A]pTcdеS$Y|.6vr['d NAzVP9sU0ϴj&6 ijP,g||L*O~_{%v#莉N7|BŃ->Hk2xZTu-lM΄0vu/S펛)ph46OmV>k1QSʚu㕺6bAC7ÔT~6}"+OéK&Fhq=ؼ&an9QLʼ3.Q}=6Ѳańfttm}m!)ͷx4&+7D+3=g_C׀AA)x+3Nu93@ <]), ˣ/Wlut<7< ԂJhm sKn+%&ci.& Þ*ʂ`g|}  e|+pFOŘtn}xy(Wk酯'Nը(!/TY#q6pke-|iw'MPfK?+hiI8ūxiJp0EWKHf9h^}5 ^L]*گ,JmۛFq$NW{ Ηx?6Xn:\Ĵ`օ`Q!̸s4:"x1MyU4#_d֥ji>ZJɽݤ1Wعy^BS0Rn$|\˄/Rx8!h- ~݁-Ǯ9P:aךPr4N2 u1R"\K_tE[w4g>ShQl+g0lw%nA{7h7]N^+}ɣvXxF$K0 dd DнuuУdz͙NjfT^# 1#8 ؽD̜9ܺ Xz7~ g* )븐%eH@bJOAݡ)nn Pe$S p,C "^4^!ۅFrQV4Si )E,69*ohDsq7 1D_`azoaPB` 6'6P-ߦmB.W_t8c79q,BvlgաS# Աo6`|X Rh@Sgo=|sw`[=AψJW\=m%؞vopo_0`.]V>oμ[sJק."&JJUr';`5|庽>T,)c[zNur,7ɴVꨆ| ^h% V 'bl̷!5E!,ҘAv.="qMւܼ}i~pFd n2UN5D#aR+QSj֟ }8r[NAg==1lC (ai]aNQV4^K[s$ՔF?BCdgfp|R^〭߁̶{lE %X*S~>w:T47A\Y5r&C0NrjcqA,+ƼmYjym5{x-{'(ːnA%\Ԣ𤞻Ob_`2/\d^Br4Ωǥ\_eSxKvxv}z +"p")0 覆#z?ߩ>2oNa(ZT鰦O|m[_ؒ[r8Vʛ9R`Ѡ|zoſwmFhYEr<{>i((U 0`~.pcCӋJ*OՄkX|xSb87|@x9)=0|\fu_a-WB˖OK8 Xj[-ѲEEJ::ï>eKff^@f]d9Z`7e>R^Iow⍉4d o Q:c3cM@.۬Ý烃Hj4 \Lp45[L;]a>Od\%DY[ը sdFUCԷqk L;qœX7B^j2GKkpBjʰ#^7> NLÙT)LeeɊ C*SVSz`aIE{.u+JZr5۟=\[nuH3H>/|\zc0{3)tj:4Ê~h `XC`! ShX Ň8gG%j+@Ѽ_.#C Jf? \y8&X? a}u9:yb ZbA&,nL?- fxA]aq.#D 9g'@|Np!2FUsb.aIILɩ-`n}XhVusH+Oj0s[?:XVqpnmn5IϞ|>y4E\#ڄ[9 <)>o{%Ux.$ᓒTj`A[ʠn&[> }ɀalAr!cO]jCZ+ѴAN^uy gWeW8$$c؂zkU c}&gecs)%gCn1Nl ҳr ?f[aK]gic}C#kMtv$EX\CDSY?Ry OXswNPGtb\WKhhl&B.zVW\@v2$(ӞOB}H8c,oH_]]77i+*ۙg "K18&RG$V}:_+ʰ9gEwEHbXXUCa2I돻Y\n-#EC}ؑPo=8_Rɟ]yﳌ%PBޗmiQJV|ߟ}ŷ~X-4'IXbJ^nX;_ö_׼xҧEbrе^%.h #`?"g3=gw1$xk'Wsaԡe^15 c&;$LϥI"rn_lZ?f\Zx9H@`|I/9By!Y~IrDwZJ+!< OB\3m˓%M D:p:oyn_xEyȦ{;(0JoYo*5ELdRv a鼿+[ј-O]jW\]y-n Ukd;QVQdVwj]Ě󋁐!Q^xp^fu4r{R ִ9-4FwٹL,J -v8W繢k|V).Z TH- e Q0 &)Ӳ#ovV"~0ۙe< ;\XG="-[g?i[ 9ѾE(dQq~=|4DSX|?oܫj٨ZIVB|` 7サI54W/ReÑ# HAG N A>Q"p1\9QX"yTd y]'13Plu2?Jx'{@!=hv"'J&FDc+yKU7}2j¦Zc?(nO#)sH>1,loՀG\ 5%W)دP[&rrHHjn4N !؈{aۢc`̬@ikj1=qiU֝!!A^ ۨ)$,L3Da~X1T^y&K2(I*N߂|!ZqN}uB-i#(~royyh E21&pbJ%eyTZBn `)IvԶ|>ssx'a3nAUDU3Uɡjr5׀>(訇6{OӉsp﵈G%E1:&k1eWgߚ߮yDKm( L|>SO}PP4x#Y /O%Ox P Jb^~n{Bwq}L\8Cܫa pB^4GZ^6s {Y Bxi|g?nqw Uɪ~ʥpڈf \yzI 촼Vq=ϒ&AY Wp'{V3<,ְՂ=SFut5Ծ&B g:ߦBf"+hK˓,V{SAVr6*uER~\[WŶ6"`ty_hӜ]`-FXG5lcm%`P-NV"#(CgȬw =t Cz+b:##a'>a'=ܧV+d%]ߛ)ی)G߫P7<%+s&Δu#Jxяz3%I8"fRVwRT|`נ zߦ'3a3l ZN  l7HOHs;f瘲yv 6@PB1k(mT$`R!?D&K'9 ֺNL"_R%Zi{cgScNg&М#AyMNpq8YW7_af]~/VdQ]a):˂@;`{ ׫F7aKF]@uG30^J&g Kli("2:{yQ}&%:pD72vФu}z ^z* R67Ů*5)zsjp^ Q/cvk@ucb٘nƿMx\FO+xU\#C8)OZ``١;+ȳ:.?0 endstream endobj 461 0 obj << /Length1 2252 /Length2 26509 /Length3 0 /Length 27819 /Filter /FlateDecode >> stream xڴeT[5{N¡p'8{pwwkp\:k (HD@&@I  #3/@^Adgl 5223#PP9]@.@^%@= ̃@ޝfOX6 (]L@{ +{ {O 6?d2dMm@6Vc{3,#@nP&@Kc[shIT4h :8=@\DQ]ԤHioAPT']AB]D ӟ5Xn@'g?m;3S͝@v5P[8213Z:0,lni p9_q7{ oe wIi.{һ?ޅpS_g X;+,3wۛ:ͨEsurC.7uQl}wnj]/dl@-{?{feMADQFRBMA}@3xx.)P0?$/ͫ9)X"fkbԭg"c9 e]4'9fŵ4Nx:N}I&+k[σv/gipEXF_wy{ˆ2Y3qFաKW7lZ<6%SGX!bwH2>-<R!HoV_`Fl6_էl0h&P C-ۛ˄8hZRbg5&&NS.҉}I >@ Bdh<:ukcaY$6h.*]/&@zSr>1"\eĶd,[}'&\;LrǻŁ*HMC( W\Beӱ?Uo)*6H]O )hHLatɵ2tՁ5CSMI.S.}9ܚQ]"-߭d`#U_{xas~n6"`&!!nV`隵a1s:d< mI}9 }d҇J@"!+\/X(c;T۟NEzeDsaa%4%/&\ .fnhgk SY~I6Y[ht#EE(#;?Mg .AEGJk߾R5oƲC_^ܸ &x%kl5pRKubGą:WL;ѰPMT |Ei߄.!S EXQe>w5`#+L$nbt.V Tn*Zj>KH k64+WJ. W+m:E9:rWʲZζ/UÏzX6v1z5Q;5 5O.<_*NER⧑ofo49LjiT}& Kʩz,Pr+ꊃ[Xhd񞚠bV==LPɭ=uo|S4TIl#4>kf,E\1Uͼ# " c2n] B"JE3 N$U 3I,qDu5% ™QnJ=7 ݿa®kC]cKmEa ><*G|#5xf_Emg:[k竞Bj% :YD_> 5B[QƍCLZH)R{mD)8!w6(7wej2TKi<3/A,L׹+ιdB[ i~ya6@cxH4Y<+N%tM̏ ]mmV.e чa˂>?JrXjxkrP==&0љyjyJ~fGMV[-׬Af%Uz(~A !},4t6 G}A7(=DnLR,Ei7LÔHWWwX,C|`Em0Ş֎Y͂~4_Eo22e 2,1sL\Zӣa]Ӱ ׋af O;}~ޞ0BP3$.y3,ݮCY)n#?Ck1s@>805(+ǂSmP(WfR(i1YQT6m{mteZ.E82ho֛17/.Z혪Sn%4<{|܊OK,DoN<+qs\ŧ.SpeAY*dd;Mpf-8UxIRkdVKWrkGDpy\_'dsNC!4"6GE",!!e/)3h^pPaDbD&&r؂_2`jt(X#r;x;RL}UePʼnN| A7lTQwAcj|o#Bp chM:/'j,vѵ=-S~:vAoM?>5rb?bpâH> W>/WFA5ҩ/Ւ͍C_i+n(ТRzfeS,cȳTŞqˌVn  \qڅkAL]bcІ(R=&/ r6Rgkm)lHVK\d"g>dGƯ4vR::tBSAy ߳+Z4ȖiN86m$ :Awζ!_>(傿?AntB?S9W-p  t:562WG#k3`O'l ["^a%\wRpT򩛣JNք&݅k`SZS;,09QVδ.^*/48J9fx+6힣#.ϦMr [BJt~*W9zE2Y)hg];pb3\Cw34oQa`|6h<ωWGBdS)re5ާu_R"u8D ~ؔƵu}҆O[N$N>;M#KGc}ߌxsYP::bϗ_G,;+.Q,#xy K>?DV1r`dEЯӌ5EK5nS 7?75%A ] Ztww3u>cxPN<F[{-l'oPrePUB8U~QXPd])gS$ju^qA$W>^OwGd>RDlGb+݁h?W8AraM;,6?MJ`{KVSr:^ДCgLξbsƵ#'QdMDy"_|gՂ24`*~K+[DijGQ:I07-GE>K{bu ԏ\i=p#6XO^sPfݑ;>&EBk%gPѓl֬%oZAX20%DUN: |I&wt\U}i/UA xhh"׆Lh4eC虰ċX0;F=KF! 4%Aai$Ӡ G}R6A//UaB23qݜibh1c3xo my(|i7u!I9cV뒆1u.wkNo~<3w=.3]1Xo#L+qo+jp3Y_K g#WV(j4ՖqwQK Qsui/ ,R,<Əx>wfiϙ$)aOtz_ "Lrg"f=;1"?a6|d/\}sF]F'0fT+i/&5K1kYnq.S8ZCk[{#XVOlW4>nbxICX*O{ÕTUy>,Fv7>Vo%}&KۀECu l BC#ag Ѧ7bU;᝖}F{JHv˾i]LO$v$2; Z҂>ZE+%͏]X네VH+. +祆ڱ2+IHXN}VnAw_Fi t63*+ZI^b|ue<%ߎJP+A3ʧ  ț2 _L(}ҖA흜t1zYKQ8̅x6a1dvZkL:~`-s ]UDn("͞)Zl$#s?~Δ"4$B} pD'x>P7TB-ßXע F y7-W g$L@gԌ]7r595jm]p`QV>fz~M=K~ء PsB?ü $i!D>s"je#f8!U p"yneP59јr؉kF,k(3J .8(#:7#Xk\r&WДh7"Ꮾd5.yڡM Eُ~:B2"-~7\pS="1 GgoְTes8,JIlɾb*,U~{UMm?$݌Hnj[I59 x Y@$|٥??V_}%VB*+16%Y*nbE T K<2훓U0E]KZ͍*ʋ>g}*os<,n 'v7̇2k0=5QLH\r@wA2ᰮ}Rh\imˋoAx i]IuYS0Ȕ+'_v畍r'$I%k䆲~o]S3B_Su(Ln5h"F"T TM#r9Ӂm2r0ZRt.yuChSX"@\ɍ#/ 5o &&'B7vX'c4H\]ٻ=ea5ݤ)Wy`K U6讀/<K_&eXve$$tqE$ÀD@v*JL G#[%%+t#'A5Z(i~^O} +!Piށ~V'{"5ZFv1W_,(@6Ggs{5T@4# Rq~7)o?m`-\ͰV%Sތ5jA$+WYrᒞ"MIl\mH` .5821.'qG)[ WsW&DҼ02Z'(Od3"a~7< Qu.-KX;-|DpM'ZBE5R*ڕG^,h-vhM :[W&{~ֽ~1}^ˊX`}v+ŷ󉒆r{*}vD|s#2D2Xg'Ik1[u׭ʄg% M4n gGmF-;Q QN(>SLm-`ԵMŌZ'0;`F쮲}?pf#;>Uڒ`6g Oeu< <`ˤLoSuM G+yQ{`4;6'%TgO2Eʖä.+!DE3*.wJМr+ReTWm4XeԝApC0 ̠ɀ۬b*)]qv9=̬K(`~. ʃ.<n#ttec๦.Zp{U)X$uSݧfvKmNdS#g^=G ru2 +5_ K&=s}zT+ 5spIw%36P*/A-xี*C@W>#AK5| v]@Em }:]b;lֆ'͋#ڞ5ݔ4M݊&oU$K+rK*+,0j6L uCz%a܂"@obAg <- c0iZ@nF=jiΆ@| j{Z΅tjc%}5ch^?=#%lXEJkr_\taejMj -)-/ Y޷gqT`pB<:yUW\C7?e3'X6|PBmpQYfI V{TawzT2$ wU")S2#X=<KJ#\5~m\,n7@!ҵ.rkE Q1,"lΪze?ot\קB>KmP|b{*CiO|*eՓǮnlڕ8OLFUa6if5#ұThtcI E?cܸB(aɖJy|,AʭaZ}{īj KL=Ƀ? |khաA[;o6MM1V|@5?* @w|󜟅^oaUBEt.^`EO3UcR9bQ`i_R2oB瞓{Cs_ J'EMe39<!QBDz J+}ā_j*eހ3qssm*u!j.04j1B*fϣJ38(O((zia5Mk2S y21 )#ʾ46RV5I(z'HGɷo4S1mjhJ~C8OYGߨ yXScL5 0H-λ(͕ؗwKҞL1?KWtp^"x)]2Jf;蕌iuOKȢ˄ӃB]LRdf^w$ /%K{Z=aOMSzLLcjk]mݼӰ TK"O:68,#f< 8KʬִM}m4yh/8vu/[vzSIqIOVim3Ao"M/`EWK%jiIRѝ3CʣIOϙj&#?a40[=nU+X Mbe/ Pe2k "*>uݴ%-gm8?7ҹ76oCaꔏl/&bnmSa S-Z;%#;Rԟb /tܺudm 'kf.mT|l3ljHLb=!Jmz8DV7u~?%vD~7r\鄚㼮F.kJW8-2N 8ȵADwYUΥ2SXuưr ڃn+QE܅ke7OލO3I L mfڦ.`8(Oz[+!L(cP["*q40̬K,]qa<-z cdW߮\ږ0p:@fraWn&ѴAubx&Le;mc?+v_sEXdȘtqڧ舜Es2F PT$+f O&(lYgUxkN rqEhokKU!@Dmp,Xi*e[ӡJn,2s~2і3֘.g f^A]cF5 u/Fd$EsE [vWL͚p0VDR6HOWpT((—|v/!U#qIzcHHM[CPOf 0y55z5 "8.` 78Ϫ\p#\ xsPkSN?P|-pCIW5'3ˠQI57b[xdtyYErޕCS3 bÖ@AN]ρs 8xfSTcA(ʇكRx4tG4wB2s b~5)DK50QX-A/L(c#^Pg nNDE3E)ܯިN+8¹#Vii /#Ŗ,:Ψ ,L *JnnZo6Eʞ'r0L;T}))*~bu࡮5m^$ #wE)T1)b5d3 ҰNԤЦƗawIldZuS%,NLlQ,TjPhElhpݛgr c$+K,ؔ_|u|^ P{K3s]nx2_Q]L;ɯ9|$29{ٓ !L*䗗lwQpѾdڊR^ލ>&:Kc &1f%PwEth%P B X'XN#? 1Չ0dXf5@u1x.3 CrGڏj潼""՜LYA(IpQ/AnS3UK󑦘0Z5?ib۞$WnӴ!y 8n=uqecۄ6Xjt3.lяnL_;OΥH(!IB}Ŝ p級0X/Y*)(4{Vlw&k o;?$3݄NDƇ:Wm7;ͩ7.*πoS\bտGV|?hW-O ]pVO^g蚽 =Pf7)+ zpլ%ʟWAbiA>%-{UAn`*.`5) 3D+t+ E5q.J1T7)YYYP2g _2 u %~?Favݝa x]Y- {SOx.Hg fބ@wsm"11^`Yg95R'Bjf$]h*^)2/[*lts"~[X6]W;xhQ9C#if*} ܖ8(eAH?3Ge^FW"`a`άtm~2E/BhQޡt瘁V] 1GU9K|[?%{Vii c!&CuXxYI*\[@߄'R6ZY-k[Py$jl\aO\vEXs77xʯg(0 TGTDZi Pӷ&FfX`f651hȭT]#q tWԘk)貅SIJnl*kUauS RHMw/k5'W:oG4w"1:tG-)gl-lQǮ>jT<=Urk9GL\()+o.yLɦ4/ 3ԿM\0ܙ>64 iŦm e`#mzL~gK$mRS5,!hjF oIfQH /Z{]QX>"d蒫Sl-3ll2L(lNW$Ӯfա AzhɹT8KA.WQK6Ox.ݲH9TO(}O N{!֥nP MW5bb4z7F-|'d.Rm,ת#"TQ&ɳ)R7vqɨqj`gAt=O{u=ȈgVhK'u\Xi+o2['p8H?.-o wi*P 'Ocޣ ?3c& #{XDį<](1MĿB@i[c  2#/fsIZɯB[6Z0`\%yz:2 o3@$gJmHUIͻtA< +9vf\֠5@T'C6f/<9B>!uQ^@S74wjPɔD6ór{=u)Hˀ❏C Fo^"AhG||aݛ2e CI8P;8lh /JuYX1;#z9kŤ8O8FnW_VO-aø%Ioq l,xsXP/@7LB:p C'韢IwҒf"xv DĄ)()ޟI ^x@sCw7}Wr#Rc&ӻ}?a}]7p'#ABBԿ:)L$5Fγ @2*'/H.k/_`ߛx`tJ %;:4}XC@\2l+"VZ'ۺZ8s y`buL=QxS, e2ByP&7d*!b<~ Ȼn*Qg\NWqw^,?-x%#yKL{V\FyQj8FڙƩglc;dmn+8e)_KqW)̓_WKlPB=/>3B ]ʐo(dD5m?+gT`v?g׉Fsa=;=** G w6}Nzr˿C3ttBr^ocPA,(`o-h#DL[@t)fYUc1I`Z;v]G 6[QeИu|+kҍB9ϧ0/GeؠIjc-R&d.bG"â[˟% xXOB5 =hMAqB<ǢEEؽ]`O~y*pr{ji $̊+XxqNjrΡۚ+bsKrk'ִ~^#y-M/* Q1KPaEuzОR_$iBRL-5+D׵E_?稭iULӂHPLUroގ PP:U">W{RY=ԬX:܎-ɹ0T NM ʷQ.=}2%]ěJ髧Z`MzpPrAcbrYipDL\kǩ m)sIKwəThm'c~~vM2Q6l i{z^M@%#B lwR៨ ~SW;5K3ɪ}xhi8G &8} [ Z$Zez'gg%=(Ht[=.6̣Oаъ2"=2Q-Q[ -F!_7;zkB4P2_!ǜZ\bCPhcfL `Q74tIAЁp[z>т% L5WDB- ydˌ@+}-'"r΁}:NĪ@r}ItAbx Xc[ TYE/*b"hK.?"pNçtnq7cHh)[|AƃYFpآḘ-3!{%]n{hһZs`ݩ 'RK@`}YUA˙'Rӵ\[yڦ._%+) k꒕W"ݿ3xH*Jn1fu/[k(HCv̶,waKD%5&"?3!mn[ ڇ[/.]IEdmޔ鼫CwDAi(syEmACǁ fmRԪ7Ԭ!(IϬH֣' ROF4LI9RA1C^rQ`GI (M`1 쑸'rra^yjεbp3e$]%kz=P31kAYߌH ̫}],Z?2EvTʎđQY\RȫT &Xs+9W7Ջ W.^zZ}ڷdv~_"IS Dv(v}O8:s= 6HT4=J"#q@()yFsJNE,lXДY_1Rի8%@^E~=) 9PoXi`i9Fa#8~z]- |虛CHhJww}Ǿ_;c aӃ41LōDGUԱW^AަїU ɦҠen2aȍ"Ya0RI*UH&"QԁpVgs8Xiy[:bD %BDB9 paJň5YO/MõOnY5<1żq:Gcw#7Nċ ArM>{k:];lk&G@dg cd.(YO?,&/u>/L};"5Xp2n=.ہLgƄ.hD}/Hsz "$Rn8d=M"ȱ? !*ZMrAD%&(NjNq:Ze DS2-~an.+fq2s2".̖;rJZ}mkLs;sEPW =,R]fCT V$CRd6zIoӕٻvpdR5i};_}&2ؑ5/$m!߅կ8FՓ[z c9LAS tƛwCҁAå-g;qcP-'!KqP_*?R*>C'Ұ'`C ˆ9j|͙YS1Yꑋ%$麎 P @&l܎'&ݱHߗܯ@AaɈG:NR91e:xy ů (CMPT$~X2b9!{yG"W~@$Kn rP" s s:qށpXfuۍ)(_.7Aho<ǝe#,8Gd]u6+g,X `-iMEED)b3|w Q!uԿsa=o9(&"sT5l2<AqBNxBAQh.4M]cuk6.yO`?Cl>ޝq ,- sDe3㵭0B*VmGڝV4M7pZC}h Ae۫²KTHn8l%8 eXٓj]Dm"%&H#yt!6,{ D2uWU%{#Z e5M#Q(+VXbe{P꓊XM' up҇Ѓ@йk6}_fp:x?̠̜N5!N&:} q A'[_$J"U'xljomroj CլnfMP]xH[ЖddzOK3'd08 .X+^22@Bc~ XHvx"0,<ѾQdt×{d'VvNi& 77}bB3݅L !WNeR}M4{tclRn}g`7 r? W@ZR l*P7&(ȏ1SdG)\bprfnޘPN`<GN'Zy{s:|KjǂgTF*r12CI^@@.x)}QfkfH'ӞG#Vi5yX lv~ Ž&h\j?{MJ?p ?~W=2F^*͍HFJ L7; & ,8*]b\2115oa߄"l)1#{[0ҷX?;/: ȧ%l [oNk8rNXVF;eYKhWAU>=1;w9ꘆCpD'ۥI\S$2T0.9+p&0H&xop`+]ws dTxvAJ,~q>7N7ݘr%h䨔+2 8eG[.~RbgJCN+3D܌Xdˁ;vk,EUY >2ΗGTIXI>уɹ~4Eљ`S \A#A5Kg F] ^~͗sQ~8t9l!Ί룒qړa,B\g'ȊnXN&ތq:0VEz̶|뛏M VYehet=3mh:# [2Ʃ9;"mdhDng[ce7YS$q#\z2pT7p@-]N+L;o5(xꉒlۅIwž[\B/*IZ%q85Hӿ0à&(p6 !n|D%{O3Bw򑊒&hnE3n6kr& :ZȲa|K ] G5> MaA~h ׀Q.O&(iX 'J3Onxj07r[}4%IJF0OfF X_ QA.r"N +K|w!?j@$ޛOP-4Z 4sAiH<<9drKL"ّ.8ih!r\oƅ䩮q-kpno .FzVOJK5 U0݂9dhha2gz3ҝ ÈWt__p9`fUu}y/tX& e YV/N,Ĥ60l!ұ` }#$x$ƻ-=8r%99q4oRWTO88qX[Uq6gm/a;*󱴚%, F=*hxOKWm7w7o#boTNteep\YQ|AGdi]YhT/_)P A&kܐPX䳝˸yaMmo`ӱ=ވ$ltV^|/SWU~# : MÛ8z6:@ 45{0?F b/8Oi0ya2kCR#NncX K|x 0J1Ah9bOx8:Q@…:u  A`xfOm] J[dafsnP/x{SA hեlXD1:/e;Dtѳ"j?XCevEϥ"Rq6w@^d"! @."` q{LX&#^^tt܁G-$V^~Cs4& HiXUHB=tm^}.rBR # /AԄ3zRI4YnGe?ǀ `GuY\EHbw;|:1;,H9=&ҳOF (f:TC`ZN xL ~@L 02.ZHRxY0y$yu.>̺NmGc}u*qB}Gm~NY(֡&1POdo9*4Q38truẀJ"rkO)TG-RqQLnp,B(_ x!?DEt)k@97CJ\?٧{AAUa܈ѩDW)|u? 1x8R!OPߪY1l/e9ψ+&ܹX`oޣH ahov}ъq-ڦr|jp<5z :oR'%F4 ]quu&`EHvI>N.kFL;?;l1@`֨GjI"ߺW֑jGtsQ1~|iO2#bŽX/`Z+SCs)ZhzL%3NM6e{_FkodpR@7]"j -KWW5,x@#B f55D"hKIF"o@u*`)A^)O]E5ZتfZNo*3ժyMw-W[lӹҷOeWoö#0I!y{vVv,oa[/~>1FO.) EM&Pԇ+1Z 9USO:* 4}OD'UTavXp MICP9j2vf}ؠk,X_!ZIDBrқ5Fߴr*}ݭ%wEQl糩8/+4=l >[lvF ;TB.~p S;h>q玕=xQP[ m%ω%3ڝT P}e- ܎.ؓE$9JTw]TyK$=s+ 12Lb<%c&ymE}k'50uxf*T7=8<&BS*Es^ʰ`;/+<~ß=Wr0kI*uB]Lf)ۀKI1ڳѣ7' w\N_v:nl;9ŢCbwTlŜ Lwtj.EZO$gpQC6Xx%?yQ-,WljWں+Z0b>ÝS ]t3Q[J ,,, ЬAx6ŔĕW2-?iRV1$i TXP <0+y"?~LsplIw0䠐n؛}>/*~eGQwt^  mw|av3۟? YlXAMv-ӎw66^0t'Pg\ +}vJrV-O,ik`_4PA" v7F]S0N[m_WBxPmУ3\k jd5w{<|8K*I;&?ª˯`,`n^X۔c2oۑ4:f̃EIA .[#e^Z @]ĀLՕ*׌Y^pJ.Ӎ5tFa¡љnBu~y.)&\7p,DѹZz C_ 4U+"8F6uG(jL24{G(N~Ԕ^rd$3s.+50/<Qr!,6CߦR$Ko9VU c\u 5Pl~/yPQ`"mMNY^'kV Z e(;hD4 />K3n(&{Զ5̼weSQS#,%Xdqwmx-YADfAZ Ƕ~Lٛm "h-_1^O_4€+cb*!N8ԗhiUMOޚҸi-%8!yLڏ_aFt.m,W$ெuUvSp㊿=Op8u"ؕA\:2qmrv F'ԑ/wRX!ϯM| sf(ȥ1{:JOocdŨ m8a\xhR-lWg+ V[ 8ܫ'Ee:!t?\.Vܱ;w[Ͷ~ј\z;Z-;dR> %TJfqt}"NzqE,1 +\|qdS>d1 endstream endobj 463 0 obj << /Length1 2289 /Length2 26497 /Length3 0 /Length 27888 /Filter /FlateDecode >> stream xڴct6mŽttmbw:m۶aǶ7s7jTuM^sֺɉ_6tLi 3L KN.lohw4p8:~8`b6J#@Q_֘ @:8;|mLm>\nfb[ oh tq4$e@9h006ӷ2MJjeEQE7e9E*N@",F UĔ*|7*}0.#$.'OF 7W{_ f ...N@{Sz[);\_q1hY)?Z!wF8i/s1wWZNN`onhlocaK56/a'{?9dOS~Te]WL 6h 012Ϛ%*D'1x6t2;:e'47 `RQ#ak?1#ލbRs#?]7reP1s2?2ScG#`jh'_GGт@[ws1?`8F憎CQ`.acpKߪ[~ʿ6)5XM`d@\_d)komnvcj*WsWc#9sGCu_r G12XD~:,>fԤ䤅ig\21ۘn3`e#c׿@otp:9~a,$;A_ 70 A#f߈ 7 7 EoEoEo `P}T7`m7`m3Z}ȿ%L C;䃦!?h;G tÇ?G) Q?G1?ʱ2}G-L@o527zj A:?96.8|Q??!?Gxo ?_߻ɿ=X&2殚'ӇCBB@W:Vv3'\|1 5׍)15 !А"!K4w OM2|)u [$kĘ?ϧ;"(-έcSFa_>yc$/%ㅇ(*8B&˻P23Gu&%"^FE 5rdP2 JKԜ~<jdJ[rTrDI~sAG|7Q!7J-[a`|Iu~XϯT-Kһ,̀%9o@e煿vqk(ox*VV)r&$8'lT:t~d/vFlqa.죝.sTJ!',g- ]G\&;Mt"C B;dE@HA?/bU}2ѣy8R]=y Ÿ k<oAz۟+ )3!PDf[2BxH;(evMyK]/ ~]*uTT dz}㚝1N{sZVb{:5E_͍ጎJ̥v3L$缇 9bfR~#<{>TK=C6AdwBV-z1(,$-1Z$8h12́=ûy?,US3-}W*j2nnoo:ьv+a?A4NRFMJz"jUx2m_f "i.JF7zlg,)B5[ *#9\<3M#I1ȋ]e3Tό!圊]oP`C*B چ +sOkg~~!)X@d5SUc0/k|뺵R !-Rk,L*?Yw85>wWGc;[+b?Yo$BϾPZ.qpƔ;iNH1~uFU ~z.15n`fhAm0)w!r :9~7LmNV`L3I#0Z* k1̟nͩL_ou#5^0i+ 6r }PFOSn}d}'+bÎ]3 IN0sЪ HrWtBЭL΃ݸ4+ ם8[1=f,*^-otscI%7#CB ?|ː546,5wsOHhJCLjU%u1beȳr'8V ^8N4!D8v˪7ⴕ5iz+*IYej1%N BChbe;db:n+g"Xoi0Kp##pҕQA1F]mklV3 )!5*/ĥ`~IsnܲǡA5@e|ҖD<ڷvJOߟ̼oɃ",xq!%Ǵʎ>|~y55tz }b6j |@3pݦ %S5oaŻQO^2@:(y&NbrIޟ:sNu@ >XHx`q/Í}5B2I~g|;Δ${K?W䚜șTq6'e-H]0)+W2XjY)2җ~IӂktNoagֵ3nܠ`U͊3'*Az٘g^>~&Τ?qV3zuw\'1ߧ]o(>]0E@Kĩg0ݢ*0|MǁîE[U+4/ݎ7 V?9{[ 8t>-qPL5\7U8bCKHd$rsI sņ6$uL_A$|܄-}J[Almy#>057u~1Z?K@ mr;uԝѢ5V7sx?2^M6Я$s7IA|B9xs8& ::ٌ'o%.qJƲX5.jk9R}Qc -VԞ{'T{9^vbЯOٷ} ZxW%+Tޙ'oL@1*,_֎kֺ2w3;[7I չ›\+=aBJ-_P&Y膌h+H(F}܎X<@gA#Rta8S,,=RsK%G|Zb6ޢ-W3oTsˊ *U+N`8-;?\:VO݌.]؜ƕޘuVkSR>C9s{J3ag ҏ ۬ [%YGe]z WtrKVViT.Ask~\⮧w1ަfg{5j_\5bh>ϵC:AK?Qި z=Ak138_>~+K]EkөؤOIaӏKx[?[=+Bh?9_L36>'p8saoA7wUec߀1 fĦjOL 8b 7BCʏq7O'c]#(p 8mc#0AsZg;rQp#quS/J '@w*wêwQ{Eq))<- X=͡0l22L|+:@Єcک`(@")vZ?NL@8 /F<(fD1VJ7AE~&_ViAYҋvQi }7s_R'fS) bmT fwT )~JsZ8bJLmx,Ƅ3D,j R! (?HҞ2/u"*pcaqv 2tcK$5HqO"6{Kw-,V15pVd-SߪjҲ:գ|_i\6ij3TIWT3G_"SI4fz(F7@lk}Jqa ttd:mSs/UțGzoβ.bh2]D=E&:Wg4HzsC8R5ߟ4;է&fW}U!D-! 0vP2/AUL-B-!aFA! vIPӅn\"[s\k,4{6cs" y4Soon8]#jajRDحT~U-pY2fGHkOY`ZEZd ^DOj54egU/w|(ɳO?|$.Q=Tu'H09yW~&ϝ6cT ajD$ŦL+dhCug113&5\5zGfݿеC#Wb X^ټ"٫C&T*}2rkUCM*T)D2s]MP߷2sDQg yMx? ]2Xu/lgcvI5k|(xـy.x Z{q*l#ϵ7(r@EKXSH_1v5јr e#5,iIf'pKl^гW1 xn8;`຃Q]mADnmb^p?m/'}h:JgKG U_nsV+uh1"ҕ6=d+1d'nP wPVÍKSpE:I5L/7)jNݯўi i+zSh.SR!xo#!vDÕ9ft3):VU>heITyz 4T. ,5"{] g{Ӝ_n鞒nu%Qg@ʛfN/d;>R|[ܻR8QD;laу:^d綾g~5.Q;ɔa$jw(lpA" :o;ʻ~ʹ.:^l$,Zhw3 [ qݝ7^Q$* RrZǍ403MT{}M+dDr cXeSS>cWL4ssl}Prۥ ' 1Y?ѐԸ)ʙȗF6߃7@lG\x1mpl8ȸF_gs'?=@S)G28/>V66e㵹~o=ttcmn 5} b~]6di./84r_;p9Tݍ+NِD$wb_*O*m@l}Gc:\ (j#8 X[*cCei);SwKyh,t7`g~ c@2ʝxl")Yh)cKC; Ō K%znrBd'ˉ3<| Lo]/.[ё?>b15+W#=Z*%FkgFoH8$ۘpE3䄮P:y. Ws B!L0O[Cݙ6ja ruy56D36Ա`L]}|ws}`B"d稊0f6;WQP]P+$˫*؅7_E כNZoA5Ðؘb,KwS{#sHFg] lvg'93TWcZ`~o斎6>DA) h]Unzdw*g~|p7ad 'm\gE~O]ϡQn =&?=G=huFܵCCܞ;Շ^sکKJD7e1顊Ƹsnnvpmܬpp2a©ؗ:V{szP,je:fhi<~|RZ]ljpfvHĮjcsiet8 Tr847֭:85-8X@ kfVA;J>\Fzk:4"{3<FlnlQk)ԧvQX މ*tk6{HQ _j3uyJV dž?<;uFkلvA4Y|IHw5{ 8!TJ4 oIꉆlgd,04 Ad@kRRZ]qZ1zgL62F$6O=ƵhRTs $W`?ٺR(Df~>}5L4~}7DK^IԬ~$sj2o3bÁUMLjP+^uO0Ld7 #U8\Vs֬K0WM(=ZTx QojN|@y43ؤw_+ ,r&0F Lp 5[~^;TݻAn}?-1MUVzd a,F݅u{<5|BJx0Vx 4>g |wxy 3<\ӳg$GqOԨpl)>RgĒ<nmI ĚvH(k /߭lu~6/46QX^s|]>W ˾,Vwļ]mHKCcwn¿Cis5M5CeeA"@Ja B&:bS̠" 1 ^Mӭ3 \$q(ЁR%@fR)5_L,ZhK?[ $=оA|Uucb^ю:!yQ`bӫCgɍbr y2,e+R\C ({lX6,Kg׾(WrdPؠ=PJ޽>ƙ>Em;tc(#zW: |wDx[t Fm[]Ng"Fns\*D 4 x6ݔr=Gjǰriu~U>lr[^Y]C䖖Dv^P8(XVI\'] ]٥XxJ*pAKޝȴ[%k* rOءl87͵p,D( ּ&*] $ Qz1+'n%PmkuTk3SA\twyKfc556yA%tGKt* 5UhEKj 'FRK7Hb_3 G2 x,fob&:yN x^=IO[22{C:651w.PI8T/*ps#j5=`ݙ-lh;8a1hVws:T<ө/V|-cS]KjvT'LQK LժQ*hkvo-joI "TDLvUmb m jIJ(G".dq'CJgQK7bB>'`| 8:O> ]Jb5\ oY _gWBXwk ew7pK|d̳5<5+vJ]c8Y9)\k%6O58sۄ&y Zڦ3Ƙ- Si!j nZ5`JY%U<))BO߫Gc#a9CEfzhW RcQ6ظMRqFس*فBc.2|w᜞T|1S!uN1}Q^ZPC%${3^Y#! uS ajG!߉T`Tk]RkkP C̚4KTg#z|V.Ш -@Ax~ɱr!ZdX^\0ԸͫAV!nƉC#"x,'yXgP aKTC+wq fHlזgJ]V4[#i-PXn՘neܘQ|`U 4r R.:DjpW:xgEXgMԆCD\[Jsݫ6/IX 8(9\9vPjmȻ3_@MLyF~|%j(ZMsg!ލ2nalߕ({VZO>}sv7z]$h6US*luVZip˻/w#_`Qc;` ,>1q`,ן-)|N6oymd\Hݰ{;˷#x I>exL$uLoYuigc$/AA<7il-/nxPE: @v1 א$ei3c`F+CB}MrKV,ltIx$[ʞ*˴# EA'2,f V0>{,:Vʥz.QfV \JyJln^/#k, o҃rL`C٭.k^7`h;UU2Z t5/u&??*w_AtrSV*,`zEi`I1<ȭ5:2ܴ{&AZ(X*4bښ2ޠ47pf\ E~ζnZ׷2fBrgD@@ kuLa;4BsBEgQ4 KP]l r)iOsȮ( 8BbhrF ϸ`3sr:ei';{4z.~}:Y_p,}gF( yxbz 80VGR7~ "74@B$ ;QR(jԨAMr;'/j+Sx#`ꋊÅwE=ysm+[9X2tq]@LBCd3zP,n{!k!Ca+7$%M`C2.)(j41+GES ppZsV]ݮo.A)HL+ [8L].*:AC"eYqg݉r} zz_ܪ.xZUnC&GfM`V6=Iʢ#3:U`Qnb+P:O):1MN]\ 6i=J#wG`k N|@%-W~THf![ ijgB;H0m0 mЄ灂Bep- hVHHk XI$S֥h(pdGgO=愮AmP:.i%V/U+k㧪]ϵMsx^សOEm _oE_aWYBf/ZbPGh XF- w/&gk:ZF:7vN6k Qh!_m6b8I_p?7H\]+Kl\xRr.SCH|ASbv  :ۢeUmBz9jp!} %)*ֿ]Tb3{<@IC}5v rYz`ƾ(&eR71oth{D'A1ZNH/&>K=A=}yZlK#KTaM"HjEٔ͡k w}HVbr-&{>ىH}IꊴCRl_8DcGQYx65iT95ƒ\(UT+^Up&栊yZ|V щ }MۙhRPmN˒59SͫRI]tFq"bÑa?^iؘQmsY=ڀu) e=14wBo!U76.cؽrFmgyIcj z\v\mTHs,GIDBz8vfC?0Z.>>\Fa46EA!kv ^r$D6?hAb͈نZOL@ RO3nֵ~kHi{i *y\Ƨp]A8NN2#QATVW,1FQ "WF!}ܛB@p03Xa=fL^M"361pm|PEa[tw͵D9h!aO)<[d3,/n,} ؗy/6p1l &գ M!/3PSwSƪ f QʊɫsFhBψ" +ϕ^NbL.ǸDQR0= KR^}Գe/@;_5Ѫ%{)^AIBtOي}$靲gxe<֑r<&31奊%$"[7=un.V܋1Z X5VayYv\qΚXB&sϝךKv;BdoԷq_8~ Zsodvd UE.X{CăCeF'2Ce vcVQCc?-u\HԴ#_k뵜 if=Vg_*Ex@FeRǟtD}NfđO)[>E=j Ͳ2es IJ|C(%SB@VIa) Tų{*=ݴ*SjIDG39^"^]FW$q:_Fa6KE("0c = tކ@L;^`oLΎ"{OYM1[=7<ܿrj[ Ҽ1D]֗^&BFu7lwV?A'4a״v;Bk͑|,[ G jjJwM1#Lil01Caڹ_5(i [A1ߓڇBsf=Ή{k2TS.bW^4=hPGqaKisxHgI= 1Qk"dJopaReJI')/J(g񝴬:֜݌ cm*1 c5p[#croR YXL[> hts4vzC b)5K7iha]V;Sif fNVd?,'FFʱ] S!{L%dk0rҍ-kRHx~ !8`gjվ7i YА25ヴ~N9:Ξæk @+o*?UHŧ(eE MY&..P߉9>Uasg-FkZȲ)/L=,֎ҳ bw8aO];o(bJ"g72ecf۾BS7Rp=3FY7> oO}y~;4,c()U {W5֠u8)[pa]\⩄\4Ζ'{hb]JGeEu2v.u)#}2#H3$WZH'XGtd>;U C > |~ױ(rV X̠,}2h-@ߖL)[|Si#D0[3*o!Զg.;䮣idg#C"nj3~ lMPۃ ƕOɚ,^_yQUd!x;yVmw=דV C5Zݬb`16^"MY@5%]Cx b*w3/wNl]iLsAy)b@&,'Ya0\C N쥬v, rFۣ8iz8al͒z"]g9B;mUŸF*50zk: *V+Z8'!nk4yrZ[XS{WǴHBځ5G'B;;XY5^¡HTFyF:J (zHytum,x2޻8hY^l_!l:q0>5@\^jG3 a_z8P[kw|Urz|睻sEfOb o$qrQL̔/KZ* Kixt,%m\WW'fVeȊӎ:Ȥ.D͝_Q'ٟ.lAb?~ 1ս&0j-k+N۾zc'a*3=޽ʅA/-KK)כ;䳔s?wتrve v h#)xE֎ Ү'sD}23L' ١mdФdžRglxVM}Y_#6'3MU KfЋy)¬'S1Xk^|\Γ9("/"GܹIHZU弙˧5AK5= \ZΞ2_OlP4689f+w蕗9O'ԁ:OwDZJuO|hpz_*VrixEmy3NRpߑmr- ]2afLM3 fI@G 6s -yg oDq(|R^WbS(ү-| 8f}G t!'Z_Rw6rVFC2GtwZI8;7aXO҂_y  M5v&bjޅCϖjW"5U AAտۥrg׸1 ?G}-.򠰘V]y`OŭM @=ɌV-sgA'gbHp ,+Fߗ^yILSDx:+دBe${{`OOblWK߾L~z/֔>22I~N'5R%s@^8<0r3xgfbk^OM#ƌ^G!6ӝ_IC3>Gtȴ,nP9H!qR| ]7L.)Aɑ*K8v~@^2&Ǧ'|-2rQ] c{ a2q7~]RFW$^=@w@2JLGJZ ]g)Qh(}Íx^HWЙY!J}߉+[[#VZ+pNSk Vτ4?G@nzĒq?4Ҩv|y*rf08^s؇_0'X4@ΎSUɵACމ"A?d}Uvy%>b|z  #ZS6バsqE$̮{7Yꚿ$,c } ]_(ZD<\ Oq (| _}._ԭD(Kὴ_ CF-;jI T΁C|k*ȱ=JDrB_f$٫que6 faC<'VWE~|9J\<Ɖ\'j?r+/l,2ѿ;Y5n1j++ιG2XS_Ԇu&Y ZAӷvi%3F*ٲ Q=I /c*hnd Tǰ7;^ 7w6;{p)7[镦bำ%R )$r2fv^ߥn 5c9*܃l15rp E uWAhQ /p\s&0⵮M:ӿ?׍q~{?ap|Fu>" KXA+t_yP}e$U|)Tkzq')Ι69+.H;j[jɖ\Rk Q&゙tz kx4ɷMtnw:R')A9\Ű˨1)HwEhf_=( ܰϢN*lj+dnW2W%VIZ˃`4p*= qqv8 sGtvcOoN-C~P'~{v>%U9ͫNK(mOߏZJPW{=qPS^0 yEmh)/TH_쑙4 _NBn]Ⱥ!)=ҘaQðA3}oL^YrB㦉ZLyMS( BPmDߠ~y}pn_[vo5-?S|,1r4+i Hq2l҂D`x^ qn+tdc+1hi+AchgVJYQV}lއxGt5`D)re?` v_fzlM o}o$+LhNn0^TL4y*W;T硷(ӛOrnV] b7x#*j/6U73 P5@%+N3(M~g&~~&M)b5VYW~^: O\ ΋5C@>-%V<$xq{7Z-XqQ1靌a PEH%&4+n *8>N*/] _j8ED+!nJg؅}hMRڬr]D@:^G8@1,14oN)!*C_SѮy6*=r|ɿn@C`9逪ۘ LMG2{[c1umf|Crt 5y@cK#! :DkM*,@]J.kR8!jJPt؇4K.c)*.a0 ,+b>GUD~)\ii9@")^&gK=/Pׅ*>F7{C1*w2h Bn%r_pp2S}&=Dp韑`wWjcPW"Ii0D|kٯSIppF$dUԝ7m3u0FV.L*̎<3C6DYhHщ@%HASxfkK}5Ic {|;-T!X& CySeʭ@dR7Cp(o]ژ>@ ~g*a̼= jjjb$K e/ZToު* Fq'9,?^ Ża%+ Jc B=e)f"2Ef ͘:$'ށrUYy#!x{d9QYLֆa=޺p= V\J^菳RZ u\3ͺE^"zSQW`AzrhqUCd( vV]֐*?Bc\hب0QAdiI,>m:=vn~Pŧtmr.3X?@emaVMWB  Eb:?[(iҺplg*Q^wl [Gy~ @Y :j#9w;WA{ @OY|i#B>)sL: TT`$cW%};dz}#AXf4zo$3:MR EU/g{!wwl?/V3:4)+r!*Ad{Qs N@O%ʎu54hn͐_۳lF\#` aτ.4JS2DɮjpyINom2)˲T`YOo.ȠL֏'&3+şZcH/ PLZ{@iʛyS"_qDV hΡX7w;V\L~(dL?uX:yC-ƫqVlAgrƜ`6ENh;M3}?;)Kh9pbR%e>+U6X%oqת"w dWhwV5 [ lj8 \S,ATcW1H4Ro$*EuP$A tYǗUHs'aVE $J VY^ -)[ҙ߱Z8b a`O~Ev㙸/n*k0׮BU#,d -!A'㑨2%{tT3yky%j \FI2+H.!@7`A& .#HD4Q u6t qƻۓ \aLoĭ_8JBe0b.d#6knK:0kd5bRmc- tyt3&y5'=i™.&,~[_f{s'n}؇|| z^7LJꭇ/q6 iuN^}VChY/>.(.ޘ,@h0\t >plbbҦ]f {E90Gό1(aq7ݘjs 3 )3!P[`>4)q>pTt oT6{L1Mt+5П"ׁR5Y%sl9|av#͈['1MFC}I$ (TsZ -w57d A KP^N"bgSf60Lߠm02 \(Hvad% y^ȡt@綖W &ӬOHGjh4ܞU3aխж:)DŽ$ ss!g/p v#(,q쀃,@2JĈ+*,].0E;(L?:mьDͨ~EDwBZ>:{5r6l#-{J 6g"=Qƽ SWtq~r0CGAo'8m嶦RIRCn3q((@r>9yӂ,oEjH8˺S/S|?#Lj_GJ!'YTZ ^śatQakN' ́[Wȸ$f:V\=r-^807"*Q|cSQE@oKb*H1|CV8"8ן墢uPځtfɰS ӑf;H4 /XnomhݝZh0}.< kU1㾧5x'*~#j,_U$n_cqA9r~q-~Y>4xZєz}Z$JtWnBI5״"۬-7Pi-a˚֬Qb-{ ҢE,I ޸Sv=*WytP+,"@˹BHWl~nbT%5 1F 7 (|L7oF6.DO[PYu5'YUw]%smü08|H-+tEs]n7!{ulԻx5J,HpጀsMoiM$/bXT51'Xs8uՠKBl'9CZ9n+v#SN Ա Q1PуP:\@Ã9^.ۤM>1'ihbƺdKFז|E=,>|06]׮:Tvnхm3!" &IR8X$17B?b򨞄K+qf5]Lzꋱ?WGYmx^#\ݚ;ՓY}qqt@rΓBWor(ׯm5cEu8Uۀ`/4H~P։U!EJuRڼU.evH Hb5\?&|rJ EVjrLP/ЀiÞ Eb]zxGj V@oӶQ>KBѲ V챿Q%/|8%!rU]5۫,q.GIvӞuwy%, /[(gXIzZ"ED~c`*9\ `OqTxuL3=ۦ@t]ڇ-ąeqqqΞ`BLu9q%!TiX15BU)A`= xr'͘u+(PXIw6#͘'/6 }Lc130kEVuB2wtjl{4]i:feB=DD-.FyDV#InalHlGR188w%m}1ؓ+-k0ݿYCs 8\HzkU=Yp%mcL@-&V* <%H.)DBg0\ +YhgyǓ|z̥"PĊ!wϡʺ;K8j nKh^ [ $ØAo-NG26n< 皋4eÏ]K>C,d fZl a.ȝW{Fry&p17luپSh}mg?>h_):D~w,YzHIBsUqfD"MI4,Sf ]P17m5|2.UV4VMk8)uei0]2/WO{xO2e"UVŽ-F? A]bu.OVBl<#ixfY3_Ԧgi`Z9Xw䇏Ԯ[}TNT(`}L}w/N @UJEZ+l%i#w)yS‚ϖD sַ򔓪 kɋ,c;J֖:_Nf4v|Isͷ7gIp~Sbv$.63@w͂~I߅&LTjCnDfJ;͠w\D`hj Ú a]o8U}nuC N|X1m1VYOkdrca6E;~*$L5kX>l~UVĿEy' &O*m ZV|$O,6-Enm8R=x> stream xڵUwXyv-(MD@ -!P, dB"! RIJbAI"+ 囀{Od299Vgڂ q1H$R`> \&a._0pm,V1YS` `/#a`Ab)@Ro!.p3cA5bs~ CG-1=rM1D " P؀/ȠDNw!6.;\Ij$0)80|bE"hNd<i6$2 ~ |:O {8qZgp@WhSAߥ!T: XL2`8XK+44̅1ZGf0@(+d fӐr p)A#tВ1)%BBpaH!`~L֒;0(E#@a^ST\gC mے@ p9L|n !OɊQB̍XV !ƅKAd|\~ϘEhdGhGdh"TEo~< kGc@H!_4+( QϚ 8Z>l(8Йl Zp+ Y!w,`8?|LJ"@NaqA"H.%`N0ȋ\nNgИT}d}۱`#J6*5dui@##y?"XNP_k3d\AzU'@adcr 0̄R/v0  DڴW6r>1'dCƖ\@w"I9 n@ڊ`'h8-Tdzá c"q!0lF(@`0Gh]#@+l' ÖL?u`d ǗpC2~ -R?p'^nXEhq_.4&7E ̊\caw멽xO9?Τ!e.Hw8̰]XdEp|!v/c[ZBahm]m4NWO00@.ۉL̷{`H&q{2J.E϶Aa^H?d[u"hv.4&Khk˾5w͇)hux7,ⓘJE1+6 i~RZƁЈ3gvtXMHYm%;}Xc"(3?-dž9=si7{Z {RۆLunЪx ެ|6ah:ŢGxnUIJD;܍-mo݌z_qVf6`dؕ?- jxgܖA"nV+bqj(/WQ/_ܵ?\HB%bJ&:U޴1$ t{ Z?\|+{HGD=x5aBԁ!l1mS/UM=Lm 6ZP/e|h!dr..>$h}|IsGcLw\=ovp|QbofԍM0kEnNuw~Ev[9X \zd ZҖRY&.L([7N9HP_b<3((9J,}/I) ڡĬ8qRC͑OF6ev+֜aP[7}BW\Liڗsi;C)fŪ >]v()"?1oW(Zت~.5O:YZ^4ynVtGy4m7r3͔uyMͳ܋/RQýrO" ֫>ҳfNM ^&ӽޤ릊)t5T~ɽ-}sF?Eu;q'a\OܪǤ06 a4^c; r@PVz{&!_Z5}xBJKRi*ZP1*>y/Ir\ZQ\vʋYZk3nif}k]#`*? Ulx endstream endobj 467 0 obj << /Length1 2099 /Length2 7469 /Length3 0 /Length 8757 /Filter /FlateDecode >> stream xڵwuT6)!!04ҍt 083 i " Jҭ4Hw"7ٺ?뽟5}#AEcE@2.㢉E Ξ` &RFA@eI `EbP &ԡp( >.6ABE^/@ch w|esvZ BaGRpgw( ("cr~qƭ&r;KˇSF¿\Pdw!C;7~(؇\Q W'|KBR'pBϏYRR<7!տM@H74FR€o$FHTX #]q?p]pgpC8#|z!q]7!? G75q퐿 #(7=Qq`5pY? o(k5k+/p !81`X+aܕq? ~o?X_A1Q@PT4aq)঄?2Z N[BPG[\fsI>b7׊!Hh¬Uȹ_ʝѐ 3z~:[Wbp{ pJU'd Uw{2fyLIŇFE]J' .<3 j@3vo,jt7_2>ij[iWּ)-3qTc'76eF~6 dDx|Š* 6 NmY̍%Rd(ì,#H`z'FWB~w =lȶTUZt2JЗȲĈTl9׆U6r˻BrSB,mojx4f1l?n 'B>Z,/PdRrZѾ/vRRϬ+=I߻*8ΉoQbaO{;rxTw V)f o94s(_]f$F"Z"p;moutzea }QmCmg"M{#M+b0.5(Y+v]-p >T2|g bo.[V;VFţ`ο6l~7ctWb[Q?JQؚ:/L70d8A6 PM~I[vJ+$ i>>QcpYԑᵱ'o}ұ l4HLI]T=txᷦ1˜wc18KP^aRf]yDGm[/8d;E uID rMQ:m,yz7/303zNay#N|'֋HݹZ\_/듉PӮ9WQ]Zq<׸Aׁ*b c](imO8<&GaYf(SB|m?'oTg:A1/^8rDᾥldii|-)Ե5į:Uw}ʦNdB!O!xt[_n0X?e'Xyy&)mT=KxXXS‹SiR߇BeW[KSDۭ`t<2|`3 n^7=qTq)^ׂעw8WAjBѹu#)' jޝ%S8ՠ|D*Q#&u=ȝ&νiI:m2fWƖG|' W%x(u*]Dq̔aev9}k*!88"+=^;tLY5uXhx 4⹪IPկd>ۚ= #iF7Q-!gZ' Gmy'͜nwGS>F jn oHY ۼ nytPO WW\~fIxˌMSDZ t8GrgPFE֓qڄ[owTM LQ&%8Txs% 7/T`D}`ٗ>D8`(بf:zG)E'۹[4oxqe"/8azCӯni6=ÚMDIp̭2_~JAM$I:6 #'o=z;L u yń% {-'6@{ ڶ~I&h lY r=j^Z,dTW߰^:мGoomn{]U[ Jo!EN &xK[>C!e]~b&-r1zҔTu-U3GX*gyĊ/?}x {~Jh3 c*C|*ANh}X5f?Y 3Jv# Y8Lɴ9sh@q2.l8>ݜ׻;e"FgA>h谦dZu(n滾ODjCoFi>6+lTJ3Wbgz0q}V,֨g{Ra~#H6WGx3;S՞/#zFu\4rS nj dmϧ D ij+jLդqwNHf\_gPY~(#ݎ HdC&faVzK4jBkMymQ,Izwڗk8M"Kj"*נKz}K[]7S+碾Udy1f9!83+ȝ@*ȉס=%k>3dOIaxY*)]ҍU[Fކd~(?SϤ#TCH ~sE\S#3Iv#E*|؞,ˑ^]9@esԜy%oQXmFiU#^gǚ+NQSߛ0K +tI NEs.t_Q~U~$c]5SRcJVx.'y}aQm +:Tr57_UZөVtSu~싮ޘܭ`+"B奾r[&G_5LX3F,BnXt#R6MR:h?W0ꗕĊ}R Z8 YYRWw+Xx{!ۖ*K|B9lm%ej޺(!ub"<L޾d]Z 7F0^irnͻvG[F  ^"?d{JתA$0gQx,b%F蟲1c%/ʋz$80`n??)|%ҡ¬@ XvLF zV c6GSO鎨j~0s6kQ,oͨٸUZ߀JbZ?>Pܐ)H&Y ,r_O쪔-qсm4FIUXml/S2gn~Z=gɱ !~fHJ SzzO?Y/c\"LV磓ꘘi@uUN$9\&g,ٺIC׎LF-F$G) _}gKNX;h&=a_!u|a KuT/9ЋQQ4o#2?W{b:ң4.^<.p(aX wE%m2L콨.$ADɌSsO%;Pxl_vȰ\oLa m.J[rɷIjϾ_1ʶr3ˋɩʾ_#|>ᝅ>V'YiQ#w'}aԩ%a+[ahܭaW st&쟍Wd귺0psY8-uX?vn iEL3^ItV$-M\W潡E@/Rz#(c} 5O$_%I`JER<ݙ|뙁|AaarE͎oh,[W4tB*ſ~=BrSrDF?ʆ(i")"%+%}Z[z'QٚVF\JKv*k>:Z%IGWeemd)WdwmINI ;9: -ݳs+/>Q^ Dl7gw8k^Z| (>M!V*HK鰊ܦA3|`՚!#L<~#͕4Dž +''_]XaҨ֨`C>~E̸$wcw8]BnRO˫W &h(n,|Yx $@ &.nQl mZHFZ*pd6}k`egxC-΂T_ GZ?E36`n%|yPUd .or2 +oRӷb0Lԉg~&^(q)~1[YkrêuJL-^CҸeK7Km MDbW߽poO&1;Ճ:[uV$N(גAUX$(9 4m;xWar{*՘b/ݡ\,Sw"ר9@]θw\~@NgTN5Z"+.L> stream xڵT{͛{s{gBb䞎3di1DMt!tQR撒MVEj)bC{fԻ[9]~g{`(NaPy^8Gض8Z‡DAIƮ" up0lq8,Eq OEd!L3Xab 7F#(lNbB(y%y 0!v & B9I_LJ` A|.w*/J3VBr30%g(?z!e~y"Prf3h=EbDl&24"+BGM*R%bB- !ydo bXM:Da O1 Ն~~@!(&q:x`$@JD"y/.|; '$BoO B%q*Fĸx"  A6g_/śJvP*+ݼ50GSw j1INBc"bR48π#QdrBH٢aqlMX!7$&1!B|1paEJC0E81W$bk'Ɔr10i&|q}&sbd9ʗ%|1g!}!l~ ÿ |1CHCp6oId%g4 ÚJ_dk5 O4q-! PqbeǠX 1.Yȑ*V`? I뎲1F+D'aec9pB>FE1HB $?bhyihBkH~aUϷb8wB"$.NHA؉ߗe`q t@!dev6įؓB_I0I]1-m-Kr/i;j@}Y,=P߭1v*MNoRypHKAozPTg'PO5}:O\$1 CY_]k:ՏfZ61r{UG:UE|\0lOezיj†zFEЁ%]7KFqZ/sX+7]73gIÎ4 OMCLC˪9ߡ*{}vJ”SU9 7+ۅ,h7EשKz"f̓-ZT힀g֩/H bNwXH[2sKpY=+g"6%`PhTh՟[Rgt1SCǦSku[u K3b_3RPFJKsIU ,&[B+YjVzY,J a+?DXL___wlNY2?;ECZ{]lkI*77Mj*o)<ƮxyM>`OEZ_><^աQ9T_n[06HUO 8p{W!(P-3r$E ,*xFMYM#S'Ku=(ay77ߙaP_6-)90rv{=[yeDu4Tkی&L7ƶ嫾3jnkO@<31D5S O(+]~T{{mFV&ҾgYS\'\|>=vyzjzuFMF;7Y=o̒X̂bUYYukGA6eѯ¶^݁\]Kc3WX$.rBM-T>e3ۘg9?o7O0 !iEoJL ;4bDz+MqP7xxmy8R2u`7ٸ$mUn􃃩Q)̙8BӽimÎ2M<r+Pm7%c][)[{[w>ףP|@h>&=Z]jw5保3<#i񾪼Mj.-I^׽ݰ}F:MT2+Ksί`f/Ƶ7 so#W>.vvmx?~f7[r=X,h$7j3~>\z_W6y]0'*>R-z3*{^Yء:Ggenu3E O6Lvv[{ꈊ_v&n|R^PӔfLշGjzUs~l ?Q̢Ԋ׻5}`@i'µMSٴ=ӼCm/SCOs˛wG5<6;(QCr~}^|gr0_ 7(@\ο7u֨{JشЧ#.V T;HRu~3SfZ"j//YnLjΫR(x qZTeo^I?"򊇥/ XڤtGkeC5by r2X/0/s"1gv-U}"JR><+1PtڻZu黫7)?^tʋd]l3mIeAQ&߉AuJ;⻯ޯfzwٯ2Z8{lvr8Y endstream endobj 471 0 obj << /Length1 1859 /Length2 4363 /Length3 0 /Length 5521 /Filter /FlateDecode >> stream xڵUyنlьT̋a;f:Y%'Q,E[JNeM$}3:K|o{g$lP8DBD" XZYaǩxt%`)%eD1TIFd2c՟!_cnџ̙@ 0D_J/P)?;2Sg'n #MPhEKV"@f308Щ gy{QS8Pb gH p(`0 q(?}`گZp R钧 vD7#3dT`m,"Ʃd QҐٸBoP?yw2OJse!78< P”*?#vM#%Mg]X/"HH_(Y;Xo%mOtTbŐɘ@NeN()Hؚx\ڻ=6 mbЙcȴ +n:$;ks˩@u .N`м!rokȄ=#|"#}W0-r.:I/9G?{_c}vxXtlKqDu{ ۼL^ a4~D_|C72͟~K|]"BH<ϗ[E- [9(-=j;C٬C"-᧕zSxgztNǺs0kNJޤ|҈~Tg![>6/~`Nxްγ#<|\uv}?wS)y^ǜ_ .T#r=Zjaq6^.9D=|#l-zrwMvu{+nX&O>~cMNK0C` >$7K&kN5IͬsuMOLߒ]q_:~2ӭt.‚fezWf~ygh,f2ʕ*ruonY(Fv6S#Tt|߼^Lm0`vȀ`WRޜt:(_nI$A),mEv%S<cZ^(hoTe$L4j Syz'O\\b[Go2# ;ע<7LCBU eԮe03Ƚk% m75A?F&nY "Ͻ{.ȌF=r(+8/G JR1U^a$~)9Zr#jgF]>İFJiK=L,6^KL_^ b 4T٭ #p͏p-==Ŧ'v b8iG:H0oљ9{HMip1g [qhil56b HёxQgr*ovz͚ٞ52Z;䵏Bfv,%n8jŲd{sia^bz[:8} >z nV'̥P9s쒺NM"i.b3 };phȑ;{H~ʓv߄MۀOL λU+{ֽ>Z|xWAr|+Ώ5\IsS># ɹp))~s#4Ñ(i)^бY3X8F S'%Եj)sW|^29%&Y`&;.Mۣdl7Q 51ݏ5U@l8sYOͩ%= rCÜ/Y5P3s$N ]ggJ8caF3@TfAa3ϑZ)uZ Xݿ%ŲN]O@Mkm)^u+1OR/Ee6*y3ڪPd^9\+$/Hp>zn=* ;5Y)פ^|KXnW.e15qH/]drZߍ Wh2yC.H'7L4i}qnqښXbyfؖ궞 2ޡQC=7s| vFTgz]H'h64d>;';n}/k &H'WŹ]1~}#v~?8O 5/l<(Z~yWW(rzL:RbtG#e֯F/RE칊 xs幼&cm~WraTyo'PPu[D;Eٮ^C6F 4itXNт!O2{C68gW ~%GL~ME69mޕT_$ K\@<k/^Q!)#`Z곯Up)B6\eNj~&qG\4^nf:9gZx(p"$LRY^h%jm^^<ŕJfLOis杳aʾ"niɂ__>Px8T}+jcW?. ;?V>ou&E;vXV6ATUT%%HM0zې~C\V$7Ë/clLhGƟop(`or:g\BKv9m;~BO휘!|L߅JgɓNPP-qktbٌ gZྩT\v^~/hTBSes-zeZ,:-/út =;ǜacEZS5._Bus섎 98&r7˥uNL絤_9* 276uߤ]3+`QZ.@(8uP4D(%BDYF.kɬ$Ȏ—ǵ/0 T(<6~JǑHmDD9 ^<5Q3:5vɁR _v+e1./~$}ILlWN?o$*NԄxUYun ~wmLKVy֝=sZVOM)jzn [lDu d>K)^Fd`8![!{!AIRkV[W^Juf޻=mKglCG)QEg%MGN$s=tEխ:CKi? J;Ƶqܭy~ Ϸ.(2pꔗ_=(iGAu{ endstream endobj 473 0 obj << /Length1 3034 /Length2 34716 /Length3 0 /Length 36403 /Filter /FlateDecode >> stream xڴeT\5kA wwwww)pww, < wAW& (9ksP3;YX j@VF5DI)Y;:H@|n7+8‹D 9\Ns7@vhGW7FS+ rvтS]-~`gdUW@hfjk :J`5` Y- :@ZMYSE \X?Z54J@ZS]O X%@I(!"k VQ~KZ8ErsscfdtwucrtdrK+tفj9nV +Io=$pUp++_ ** {`tLA ]\~q(?Js:ћ. z_{fMQTIVJR]Q.HUupm+?C@QSsG;o9Y <4qI)A4[y3_!ڠ_ji]vYJY{U̬nvY7 xE,@mˤHفg|X\ ; nĿK/YTMZ\Y_qf6N.6NN/+xA^ prwX8 P.N0/߈ ,q#o `f0KFf߈ ,e#o"(F`-Xo֢?֢~#0of욿]7kF`v̮? fy!660h.4D77|@@nv v>jurE`L`hZ88~Yee/[9xܘAdǃ'j{N~8ga] R-3YDKrJwtw 8^oMmv9Yn,Ű Nu?8Nvnp1' `g@.֎7';w?-L X#)hjVߞ\_9߂8 p[s9ŀ<"NpWk+ wsXYi9Mrr1fy:,#sYY{1^@0\fp% y߫za-H"G"|YObV A@%l11G/_Fybd_]'f>ſ^  iqь?&sDYdD9,%/q%\"bDć-2pQ,"G>À%:avk)U?UE#yZL!Y Adry9Z[#mwqlc//R [Va=gX\0,L|t{z ]6)s܁-~|Kw)Is缶y(R@l٣:j2ȵ=@vB:7MɅ{^K?]44[ {iV&/AdOt#{E,+ۍ}={-Eb&ˆf9$IT!Hz fKt#׊xD6 z\畧Rax,hy1(iɵ]=ʒ+] .sffbTBٔ:O )7q)d`PɌtùj5*WGQ9|N,-ɸ -Y=D8Mdsgc#QVmVG>įw$uHٕFB~j$j$0/s 6a#m0݁KX[fbyCc{:*d0ܙU8CN#_qCѷm8!T!IoyL;9?<8lNg[AkWWb oެ9ToH{l2@h\m*}1KVyAJ?YAj'Oѐh. gu76 @:-,Xjl=޳IY GTʞūl¢Ti f}}l_)e#Qڙ^Wu8jlv [ddh'j_=8ÓȾ(ؙ+Uym OJ9;£J]S9w8c6r#6JF^L]P`]>Bi'"H·at=U Yrð >~w&4{">m-AwIt՘kz{OR}`NU)= lmWJa99*kD5R MNeT+-z7tƫ\qc%sYʇ_};EG`ՌQ5ټY.w_VF2V{\SJj$66B3Y9P}JF)>&Ym7IԶTaIO!KRPQa%ƭ:KɟNe\ϡQ]U"O1o!$Vit9ٱ\ʊDQs4Ab\'$L6V4h y4=o~5QϘDaK}hVnoHvHWIkn{|@Ml{lr9YN(Qo>ړ/rO Jg /R剡9#ɭn# R,ܳQo:פzJR3ۮ"u]m?Pos3]CYv`2贫[Qrjg+/Nn ˺ԫ&dBdYPLc;XFGLhIřA$oQ@Þ7-k ~Qq$wն"j~&טfQct _ $ UJC3Yy21A|Ta l G!/TIwE$ \P[DOzK—h+ʖF?P@qבC\,>1O=!(!W}3gkW?۽4s0f!Um8U:aD5Qҷŏjӂer6>rFS}e7>wԔ9Υgܯ.jc|&CT[bS GIE*M˚TŊnw;!fvpn:qbGTJ3;|y;*ma#O$Gu˹3;a,0/Vz73Ǯ0MhTnp sW~u[v$ףC9En}F&##KSRc*9I۽߻O襔]9x;=Hb:=fEu>ALJliR~K )K JgпըU%Ň !ȊXG %ʑ/9mg̅Mχm- 5C\oߣj{i)qHQ/Z#j|ok4Gnb֨m߷i'V%8#bo_$60 F3Գ,,FQ2%+#e}SOdtm~WWP 4tO=r<;ָ=% q)#;蠵#zc\d{VJqGFևu6維',VԜٸD^;{C2Sy̖7xfqacG<yvmb8K_"@d` (#&_ΠLU0 a{P%r%#*O+?ZR74>7#/_|L ;iY{ctbuM,)MiVBo"N@`A56͜~i&WźtyVį͠ߡH~`j9<-Duz&25GEG 儮8zqQ='@8VsqxC]97ۦ`3g@@}D|bG KtR8(jj_;w6FdR, m- EDxP$MoMʊֱ8 wGL5uh.geT>4;ԑ ۣkW]%K뾑l爘q_bMuoʋt-HVs2B(vXz^V>[|ưA&DlMutxqc9%mBdJm' M/9-'Z(m^:'\"agjbvZSiFFYOVfq? s{3mWt Mi>~tGb]:2epFm>Z2/-Ŵm)ok{C 夰4UtI% dQ+KƯkI8FTYlKER6Avı"Db%?2E0kN|Ӗ>ZJ)nF,}(\JpI5g1A AѡQ_d5 vw|he9W}X5/歆,C<2B6tR;J:Ij[8)}N2PF`Gp<61 sBh~^Ih@H$SDvV'Fɸt]زs$v#.u1幓Xh~< qEL>qg\(,6$x4Si6`ίgyO@Ar?g'vU5xci W$z=&,y-,6r^y`њzrbl0̚#TCa (ÍDju7Zn.LPmnSxpͫܠ~~rPM5#[=.=!CLjzeu ԋ.\J4j*\|Qȉ-~mk 0j 1 ^!&f*(kq 뚞|Ifk7@׻fB> :V\5Kx| \os\|a%:~ݢ RW Zz29^* C@/J`L'7 ~v؀7'j.AQ43؎CA8'2`T9$<HOP˓#e< F v v ^+O.YKm3HpNHj_ fJ*؄2܃O*lKvE!ʂHr,9B*#s{'Etc#>SAgi B=ClPF0_t-B$s,YX5g(ӽ1t3N!pŊ짜AezF:Ԃ3E3ߞU3֤d9FwC \m摮[J9+vgILO< T;M'eVUI9jD3tZ4n,-ޭ>Ϡ` p5өBYk zԧbRZói;h!D?烸,/Ԗ5&[C"5WNρUSɴzYlk4M뾒e#)~$nwQzσR^(B17C;bJFXT+eYh&Wt;V"J+!_moeVf"ntK،2%KPWe4EBؽ 9W|2X;͒yښYAf!D2-)Q4D0EG 4n+] jiebzЧֻ/R_5Ϳ&nIp޾Ktr<BzEA`]1;`sֈ[dMhk{@)X 9ۃyNkA1QqZ-@ mDI2F^&Ut2m| Do%KqߪZ㷬.Omg#?٩9!a(õe/p7^U=y]x$ݖz;p.P*Z`ϯ)grf}3}lيy #aw{-%QnVG4OFm \eik 3|h-%pl!4qË˿%t*(fIhJZF] b#noxU)c(b.իN[;t*'ww8wؼCA+>NZ:}e>kSQ@hrbfʳMo$= 1rZSGmZA,s~Cl¹H3Ǒ.GYegj-҇F1HsOiխf'4Ok Bk}1{y 3)xL>V.mv.d=`6@n1B.^Қ2ˢgG5ģw<{jeb\T<ûA#tFWxayݖ=UfUId+{5>WV{)^zΓ=.OkY/Ly𒍭?sbz+} 'SV \79*qULL{MKa#Kx ORmmrn}B_Sp-b*?DֈȇJC&)nuҍV &j!hz\%NC/6NA8մ+Q7&);t ߹ӴݡXKIjG%EEb4?J"FMvFgk8`|u5 ɾTQwcLN M}H<[n AjxN7H#rTogg!eEA."+}7(Ej237 kӭe)>ЖTVBYA=)=92=\zgQ1ɩ|.=4'o||S6Ia~&ݺO|L<[ Rh oVѼd8+]?72Q_RP5j$WjhVp>:k2}l$LM%8|' g8|c nq !-&%(*3׆ug;MmEu#dC︐ JGpF[AWNp"'F+2t`:~> w4d- D߻xï%M 3mI!M|t{f + ُCGRwƏMfUO)8E{Y# zϮUm<EJΕ7&ծ{h:[g(q>Cgr E>_^b.PSW]v[ϕJ^UNA|uބOAՖGf ȑ߰%J+e$7 aSUrE=Nw$,ΧI$ϗy\k(I|U@Z-e]0I4E((@ h)RK>=de–>ƏrO9OC3$XIUvfF ŀS &1ͥɠseL.(kWh<K@^nث)TFxRiK۝/5 #ۤ(JCr"<f'tf(v|W3RzXJ[yYDr+XIdٞ-Mj/9-6ڰ4b,ԋ]-Y fڱx Ye+E3ǖ9dbŚܹkSn[E|׼pW^ .7w4 N;=""򬧦u:oYh\Y|OT!Ob?bu!kZWmNf wXiS#ۃ+4Z2qK}dA ApOtUz6[E> jfgJ`>d'!JÌ]#ĺZZoF_G.*OrXE5yNW'> VT~3)NܓbT矕[ nA% B{3n#ț@xغA[|qW8}\;/GvEgտbDYqg*aЦ͉Qx̳ꂛ(*+S"Y 5E`4IEFD`H! ,a3 nG١8٬W! DIJy rWY@eye=7lX ,"hߧwd:qS#n^6/?;_A=plI1)ƁOŵ{.'؎bܫK˳ IUH䇩2+#H,v~? c^_mk51fSkM% 2I$صB|_ף8qY5}IݵND.'/IU}Fj@AXL{%6u1V?zSv9n35lc:z{ҺYhtGY,>N26VBӵJ;vx!?*xw8 { iMt X( +N-)atQcѲ"~TigF@U ޾ &ANWoO7+|cqh@][>Qpw&7F#4dKE}#;<dʩ#.5=$YeZK!4(YUJs8 Uܗ e0W1 qsvHL0l t6i0Y0Q_!i6֣{ 1jnL`_P\x/(=k)QSFǔJQw݊kE>kW:<%|:g"5E`oA0Tb\uDn>8J%`ԏNCR) i||S [UgjF+(Z#"icbRqrWERfpSeaYc)V'Uvu YʱR߱exfyp8p!4':* K=Uf7Ut{"`[|@t)Ƃa殇ID3`"fK(] m33W[왶̽@Jݓ*xۙ|}P'z탲q 6VYas".DljQY`w6Ua4^ތ B$N*xK1er=ݹU!p8hE r|Y8}UJ$"XUK> ;ejA?!47mVʲ(˜7؟vVn iL~$FO2nϑa$U?2} ٶ؜T!5,FLe׏^qR&(f]1nm*MpMM<RLjxyq>t\ Ry30Zױ(ԫ$Zcr|Bu 9b.H#y c dDLĀY+G>Kڮ^jRоO35+ЅA^9@R[MRo߲]I 1Fȭ8yqAf@W{1V`/ ׷`5CFnűx~亓JD3V,lz5XKfGP:ߛ*sg8TB}_ U\[>DUdd./RCvxk+VZ`)D$̇A.WJ So&? ™2t:OІƻd^Y$^- Nfuc=m2|b<ڙ`MYQ&&,OO&p&/z4Aky~}C+g92|a8=l=b##&8w"EZtZ(wك\ԃZzZJ )/!ܷu>-Uw&M"WYm(3C1+ϋ|`ԔrzO 1uP${*CLn q]{x oQI*G/:)rb\Y n.hԏ ˑ8#k}* ǦJ8UlI>X HAnPI腬X$餭+I /ȑv GtR"R.UQiyY-imsfJl8+C}.5~u"a7"g ǹO'g qYQMM 6a v/ӆMt+.XKCYΈf]At~nMÁ8|{4䂑A_wvҴ ,3e 'yGs]+wBTVSzZ+RDzI "~g٣DtwzhKXp!0u:j;=L?]퇙En} ZBU/.xDRQsw^_֪V tl4Ø˂1!35J`rG ABDGKW)j}SMe"ړ+tdw&}#a)es:,,D3yi&i@0<ܬjآC*'SU/2d\70 %PVnR˔Ie-hs>5/żXu r!RM~Ǐ+OzBD_9,yS1A uØ$A೿AUa>~m1-=_8щ@Sq0S6Dh"sÎ6<49{{,; - gj{ҹ7>_Ia)?]{ֺD']<|OK{/eGRVGJʶ=z}<!2QZN`1?ݴcאj^X.kNëOz0/YLV]\fޝ#"hX>r͖t!K"*]E,sH2e$$t,X3hŢ¢X9 BZ|ol [+3+'TKyz3WΉZ\~j )j3E٫Rn^bd4›*4ltAy,;\$'}2=&yKGR2e,eȁ:t hh`۴q!<$AlUPJLyVBc * ^WFj'V9"\^Xe@NG^[1{o!BS&%$pxš>SxO>1392(&KJIy |aDZu芰->uM d\N/8=R F$'0>H(Ǹ:e*ꝋ񇵯QY.D)H(pbo $77m <!YkPtK ߽ZЅNHWW8b:L) ,{i|HkxȐtr:㞒+ٓ.-ךv%fo~BQ,uݫupk ?J8aO>֦\ݗe9nxT*_@E&>%g@}}3h?9@ƿ܌˔t 1UHhUZhśF,w5t5]4N)mcXg%nj?ॱr\{/$ŗ56u)x|ȍ*a89(sE(/_^a_yVGVz#T*jD@+ø>-vBa_<1"<`x M@g#C4N!UD!uf|ۤ"8K3ey5-t@~ξQC[,4N4@."Dg%T"1ꈿieL΄X~9T՘Դ<iᏬǟi@F>-CXceֵXBLMlEކph)w ǔCLURhR wLP*2q 4=W~{Q5X=+Nb%N6RN*! qH|= ;w栞B׷*ĸݍue)gy%~;(!3kT#lߍP#lFzs`gkGikOhÀ,MIV,O%:UR&gɓcLXoەaӟ^%KfAeE L}>䢢y48Cw%vzz=0;rP݅6zx#EqRqZ{s\{*>ps׬,? NJ-uHu+BF%9!rLRyaQ@B!Xi@ 5TyCɬGt[3+/XtN@_Ch}J梙>;]yM Elx a+_}'_)D_dэg_xN3ќFrH6HOe, UfY0d\N[ G  0 USx$UUrr-Y?PHE5i=s:1U❭x/8"v8 YgW4砘@&cѐ |fB 67<h@BeÜOg{7"](,C\dBӆl,"[C˘~ Z77NG$;4[sRJ*XTw;5,E \7Y;^?ZZ(\I6CXW|'DO _߯Ru' ǷY vyk{eƓo1Raҙ'Ej7VvqߍR2Gxfl 92fнg7ž!}t+7\-8=߱aRnWgHctIiC˔ۈ;QiO:Cb%(J8,46;hZ{x[( X)JGS$H@6NJ](;vɡjR${&hiz CڰўfG*?`F8x0~Hpԓ/ AabK"#WʷazTh9cP{Qs,⛉zP+Z }<P;<8@>vၢt~7$s9 n:ůwFc e-i =R$fAI6|'O<_~Kw2W)x vh]p:2 QgD$mI)#PYI2g*_]>GX@g#2pJ)X]RT.^e ,U Nxoa~$&q Y ;*Ʃ憩f( !/>0ia$I2QaERٶ;Q8eXeV={ZqT~҂t5ڟߪʾX^}e? |gr7)(2sW(ڗbϚ;yX4kĸw ]P?.*v/`ݣPNSs}N*k6W8ܜK~*lf>M=#5ۑ򶎌KYESi,=$YAkhqs3] wi3l|1& kǫ6畯\.K qbi,ơ[ȬPXHP#K,qÙݖԻIhվ7 KD˕N(t1NepRДԗsƕ (wh;DjW7\5Be;A)nG-V dP")lNvw݋hDrw;,x޳ -؟a{/{nD1%ٶH*%Vi4_wtI^o' ?W A&>*|;[ro'deSv@"dӞ=wet.`\YULNF,SvHOv7p+`!؀Qv0x:,8R^ xGDWU%Y6$ݖ*̆A6..|}nΠ(dS ̶̚X8N\Wu g&@Qo/oͷfJBTw%, x0Z*U$dvpR]2e Vgu:hDZP%:ҦUm-W?án5r^Ͱ_m c\cXӟ`(a3{e6Q%t6̒9=ş=3 y9Иc23Jcꓥ~O,MUA9{4@1f#E"{eڻ[S̘=ldU/ pDZYt_D1 m*jWaMS $a%ZZ>Si=T&4ޫjF,o3t&1Qfjmʍ0j &KO0o_ zh@@9Uȶ!ڰM$4L4J+#ڰbtr/L;_,JWxk[2$Ee?-qxĄn> , B BC`}^ @hVHP)ǭhtpr&eOu8"f;-UbrrUvy$D..!q%TDڬ;J7lrtb d&ݼRBJhyZ??tKkJ4#m8|J^jpU ^tA-?5n-#iԥrX~uʙjֻɝ[#L1k|%(V.3ІkubɃ089 7Fic>zLjHWh3n=rQqAZtm!Qva@wYŔ9gDs Њ1x\bptQ[~VK;!ۗ߫lv55sAs&uhR W] a0UC,)v_h15>PN<8֬eΙUG@__Rd]) |- u$̣-\~uٿ3QcIqxsx=0{bH,ާa$>D(%؍N'&r*ۇ2vKKMM B`2irYAw*8ڻo; i-jߤ6D=^ 4P02GD@!cDTkg["FοϵF!J ]שcv%H₾Hy*w_/nB,FU%Xŀ(n~*:լeK)[ݒj'?:M=~RI WW`j8Q֖6 ,_E-IPepcح.1U,w!.zx:"(/-zńt(mE3]H6B˶l9wC~ZQ,9Xߒ]+aW[ر]shn}A9FA(N-{b`b`i| OVgApR~N$uM?J' 'a7yoڞ+^-,JI k,'bB2ܡ_yp]NەR,Ut}z_*nhJ0[.(cA)ҨlEd)fKe4$br{UH`Fuf[ `EժKmƟ*#fXDƓ缁Tyt7%Е)!]Niٻ T}~Z*|G"@ڕgh||5aXϱim0ptvhg"In Ad\$A/ahO j!iCP۳6&jGy*툭U~2_͘-UMӂ/X3" &PBm;:844~& 8$qHuY0a㿢1 }gҥT]g!nl# b&fR08Y](ZA0Z$ȑӒ8O!;aǣ} 4IDt|a fR#&q_7*r:#jVvnf`ܙ3TiFf~?4|T:xi⍒"?{8IǬK9) ZC0H%r-f0u懡dZ*m4E6^>,kpoyoF ۑ>r Jy&SRe1G+lQ kcGi3`b S*[`.C<'Qv֝,Cdz.4EjUWx&}ꑤT*EzWc|ߕ%ex l!ط4+'%Gok4`/i qD?&F1DpHG<ی+@搅ŒH6OMxGi(wU6jN)b7dWPL$xWDa W7yݗPn61Ћ;PoNN0,mM6@:"A>凛7 -v|jXngBjّ71PxE0F?RQ`V>q!H?Z*Dy՚so0Lgͯ,'6I"Jq٦n]M)uڂ2u,.""a} n|ﹾch31kiNfC46rW8Œܻ„.'7Zo[*~ɠ5ӧBpp>s4+䏶Ej\1~4 g{t;@|:HM ;y KCfN}; ZWC@WI+hH5 -{ }׃u愴`cm^08P`ln$c"姷qͯUش};x'+7Ĉ@aު͒7d~Xl̷^ ̗<7Tm0Ť欿s;1xHO4H_3Y>F? 3@F\I(IwNƴTKCHǟ wtC(n'u<ʯw6Bvz\'u,[rlKom|-ۃX|3.v@Hx"v<7Գ]N$Jh,cv="&rYϰ;eR4da>RtَO+#GnȎ4wJsx,6F~c ?C-I$&=`NS {g1jwr3~O(5|†a\{=]!R)UUCbPН4Ĝ&)}=G@XTVPܻl4laWjԁ@e0nw / UС )p!K4aOһ{?!n%LLvc=I>Yi1vn}SEpms 4CVQ ? `dvDvV]~>i5SQ)!nyfZ530I=btspPNJ=LP E~&Q_#7q L|NNT4s ߾-M,HVTE+7rRgv yofBGtecjH Wj̚6M Fk6,8uljϦPvw+*W^pX[? e0JImhj1VRh-Yc SʭuxNG(r'"]&"ۻuRlt=NJ:F,ݚy$6~P5 kzכ:qdAl {fQ8dI W?Ev`'^X@9Tơ˒PдO卷`5.# ڈ0!;IE:̌b2qb5's?.qxwA[ 0&2Ux0hUUȑg,ޞj8lGRPYa%/ wpQۆ YbGs^ &;{ɔϵ(L`YEB> :)7j>z5zD* Wy_q]Z7p@֊a9kfi5MYmyղH+4g=~3]djpGseyE6H'm| -UUE^$oxSwcyj&?%kX콣bHaپdjk)$^Y ')>Hucǝj&k|Z(-S➖[=ֺYŽt+ƆZ kҵ}J *; :KA)RݓL_ݿz\kKOJYGRtQŽTEGiUCO\&B|[`A0@ LdbAuoPBJ иPbʤKqy0 "確`c'񵒢KTе).nZJ9[`S=>W%:@7iR [87NEʈ`';fQ̐W<roȏQeP%e.1#7d*Om˰i 1gi+7̛$KT]MB Sa'( C!"E Q ^=/iB &&2ؚkah5 HtЂ$3LdvC[R0n:È+Sb.o\?݉s0Ss8^ŏ/M)@Bp97[&o(9JTu;/8'nW & NBv9Kelo`/.g8m5+*"%YڿJk-Lp*!Ч Zaz=q7C+u HsI/-U$v.h m tU2c9Uy> lBl,C7 Nq,8tܚ/o^e uxG8a'o5qyja銲@JBV]oeݝ{HL+U@> 0֦HjupIr`#2NI P31cuY<"\q\yCi4rjy)I<߳VY9 JVy6oH7&e^%b>y+r|33G>C6yx"9>YNFɘfuukB]ouD1ߍE^UQҐ m)t`*94Ă2+ݲG΍a!%+3;zf8b';83HA yz: ŧ{0\{7Rɖez8牮O/YA* ݟ~ =7Rh 5EӵOT hη¿MsA=n< z7 *GS ise>x4'R}tٮZgG*(es&./i{k:Ѽ7M;dafHi{vϐ|!. u !wшAU_KXDBH6nc% e=6u^%[/W2d#X.;z"]c=@"'aa0$=VH΍=PJKH%tswPIth*NAd)+!JO!&bi`b˥ƫV w^Qp^<0!X6؊jpA{7_ut*-&6gb}z7Ka1d%E{8k Y? h`R}+bu =&oAfCxU)f$ %wBwk[^{C;;9e0rcȯyod2$$hZ?{65Z(EEtNdsE3-޽_R3OOzq+yoJ>[Nf40w kihx^&Qo٪{%BaO~g<u7eSk5ê2#Ͻuf4]VPh2#X[(W?cm,#,$V<ç$duQ PG!sg5\¢ RGIfhtSS̏A 񋫮f2XqtN(;\>35IaBbf%|n $)'*|;OoԌbp]z IŒ-cZ$}i~pFd n=pjI;ӆSǸEo(X+ϓ>~,lջߎ4Iè άI֎ kh;*UsB=*=0:'&ozn/чAj|ߙa@]6Ũq[]nZKHc&&JѦTqAa;-0Wy.&+`7$H}_?qlZ-vkC tlmqa jl[Vcx=`ș ҇+vY|+clͦu9j%Ws揎tB=9wiz*J,JuBK9ioQv-%l#/s!dů|F:9>YU]#|KT0bѵx??w/D T} V]$ebm~aVvo:Ƞt~{߳`?to@` m4ߙ!OtkiTLU`ɼzׄy}) *6Q(l Iz8Pż'"9ɉM3H;Nyl֎hpoޜ:'{~Sp9i@21'[shf8Rqjbcnfy}|'an`W&iEBmU̸٩sRzqv7*v9r">!M cd H hDEFjA`p[gPvogO8P"z4^qVE=SiB xHZgGI`A júGz :D, ݓvnؚ:ؙ֚^ {0RH6h'VR%qJ#?Ϛv׳M6bݤ 9lBSMXAӐd"xm"4"5GVAAPqR'͘"w{gس(lȐ֒0qX>(zHJ̗ Duso0#SKG]! ?dǫ~g7mD@YG&ʓg76=eyM糞Rߖ 9FT^Tq]/8u@=֦u5#2}fz_}EoJVk}ՅhWjw^xg{ 6TlX@[ZE-I&D~^$)@uMJ*|ٟb Pe}߈[#u먰>,ӥn!3}72w!4|X(}zS䵘$ Myua0[Mupm8i!Jexf?}KӞt8``U;7EX7;å/#);`A*Vڧ}D`=ER)}T;ŮG6@ OU8xz NksX/q~g<ME&s{XK#U|QsVӺ|>1Nu% wTٝ]O?6%t'nEUǃ\WID`;)܈}Fu\?DCʝj+޿Aʂ1BHkȲ?}28k]֩{Ϩk[(}7$Z]+SCVV'ozm41.A@\o.\gBDAlc 6sǟ5>#rf`ݝ"Y e}us`lk|g ?7F6LZibLϢ4MgZ@hc{^$Gڞ2Jc/7ϘS?kLן+reXpۜZQ 9lT5?e!q~*+VHęP(tSq$i'=>Qۿ.STgoьt jPۏR0@8m+e%Zdizn xpͼf1Ǡ̏t_n0]v,f)<ӶXDɻ)b(YmkDka jp{55HeBr@TF Hq/Py!3Bo,zCV CgȜ!d7 |5 ivEF{nXaw4NfӇ5 !?<#rZK7ֱ6+VH];X'Sd 4h3@V+9_/۽BweCj#"(RWuV) ~?HkZi )e- &RedaʨKouMHWs<9&kaĿ8fς$Fl|NԈW}f &AF:ctڬ^I6]P?]nwRN ӠՎ1f O 27/4I!J@N27Q͍H{^AWksOE (vq6ad6Kmy(޸ ` x t@HB Zlz!_< Xkm "a&y%HU|@j?eiEύ0?;cNQe(DY`l 7vmNO^;5}<:dgӮ8n¥ԦffYV33 @V4Vx5R0wiRPñQ "ƞ&jWϞPzª&{yD 5! ZJO)D(T{qǹG[!nv#ÙLz)lI]ˢkWh~F5LkUhJ-$ Jɯ#tMPbuf'k\BtKosuqGA_z[ @#~d\wjV螝WZ^ɹE%e9 .P p&(dD<VzEFb! MIg[$;'e0kȉ [Uq`hx2MF~,muJьq,\ KڽcLuR bZ #kH1 Х/Daaoi!;<-R^+Hx䚊8ȶ&O)i (+YF\6 :3$+|BCh} )ԠfsׂR}wBzai;Pޒ^Em5ӮՃY[ ʅZ\&I“Wddd}WP.S$˷9BZ脚L `} tnily¼`U>$퐾sCmϥEhYqM,Sh+Xc8'd",ߺtvWs`r=:~F%%Y[ W!D`1he`QXx AXxHA*wq+HUp$?qf2eN<}}F#o͏sBƮYnXGkʼnbx0'~D9?̉9^4 BoΞ0`:eR.~֚tz&2AG') KgK-QRΦ/.5 fbԤc F5`ݽ{: xd:շ犷b 1!њFNOA$_P/w(TSwIE ^3\7+DV+纖8o 5 =. =bI[Ҋya iL > wvAqs+Berg7 8R"Zw=Ym[SWRyNtٯ dY2F 6y$ dj;9R@HX+] kkC<חuR~ k_ZY|+ 3DxipMIkU?G@I! ?Kf>P~*H;\taψ,t۬ ݲxoRu d*'z1 >-$<# Uо-QyZ@%sm7.Rp׃k*h% %Ca<+o_mE&K!_ZTCn"I]X2VhHQ Ypxk cf'ҫ3x". ]jlpC91A ] {8w_WscҢtsj!2(b)nv1"D7z[`JOC *Fx#-T8 E8X@pAWS6BŪ,,q+R p|Bj5zIدEI[YSb#7Nޙ%#g򘲳IxmB[W^W'e&#t58c)VyT0Q]{%0OAXo9{!#q, U?}|wyUѾQ*wk L}'}0t lS=MF42>B(2e #84OC8ڍD x A},?MAS|٣mx v'rsXңܷݳ > R1Æet0vSa꣱vԝ0/(" vP wqpC fLJ4a6Rۑ'!Ѝ0ڏ*0oItʳ4?UVg/*:Hc@3Gs #94y,~KEh]ZA)FWZ/֧uDqSwϳO?%y*P Ri9Œ+,TRo㊋_RGRZ:Y{62VeZm 5֢8*uG ~^7=j}x> stream xڵeTݖ5Cp`S8Np`{pn%%y|tF^:s( e5s)P WPٛ8p2-Lb@Wk+jP2s}O}`f恧HNs@jdP](\\LM\@Kk {O 6?d2dMlA.s,#@nP@+; hIT4h 9: =@\DQ]ԤHiT:㷤(y .,g;OF S-A\]y<<<-\\AΖv[Y<@ζog/1ntZ)Pf@$I?Nw*ߓ;jp\yeey+=`SssvC_._EA;ӷ33qps@...T,л93k6EI 5uw90(q`tt+x.߇ou ;K}JAv^s<"]tS4R'gbomoZlob>kIkO?cq5y׾P4ݻn?W?\4uX,w0HJH/ p0[;XX98&&^:`KW(&F{ `rs<&5}2y+5F_ߵ3em~IWgkO=w_eo ([#[T``psXXX9-;Fߩ@O"ȌMzSXDt94I%l"rt>x)PkPK`W4jC6',_)US*& "cY K]4:%YmmD#1X74R|hyfLg;t%ԏKӝo1&}"˴sac0VB93X(:}t"tf]#+&ИCx\ ~ #"p1A}t'z MdNqP8&-[eZVkmpq8U^H1\a!4l ϱGNL|F'!Vy#ug"qu{;pmH-*OX Aji"@+MiXjBr&H$7w@diau8tvT#swz3Mm7^> @܍Ќ?]@ %%LE|@'ީ]@zWbpښnfkIDTRCO՞,| sT/CtalWQ(e"JRu`oԁ)P⹄b&#8v ל vs2M}a=kĀ~$*f "[̗D/fh߭Z f0r^kFn348ؽLqsZ6fPnyjɫ*=+n Qw\L lG 'qƺZĩDxOl4ewTy  ϫ_,{_DN5V &x;t>m JwX;xg 1J6\:Pq~_$?AJ39yj^\Cţ<.h.\;Y-z`E+xPZ +c&;4Kgm/O Xŋ/>';};:ڿEJbh7(xnW&"2 žN؋hL,DIuua_)?n6ѧib-[HUrJc +h4Y^|(2ԢC@HY3T>X~ lEcLM۟ڢ+5hp+ Щm=;F$?KuxK–Q;!(##h?x< Bʫ ooڸ}:cb 텛?u^vɵZf?8ҩ46l|HK>H7ܔjȤҨdD9~qi^zΎAs{JMU]PN/jwuf3|VtmjRȶ1Z6ȏy`6/;ڗ1r3cj6|zzP$dfK[oȹ{SH/ȇOMh nG[C^:J/~-0qE󻹨7٪\liŠ9VR9YC W7KarF]؞5 ?# I}4_|,ޞEtlȭ cu CT=JY|<* L<SM٨ٳtw۶TS^W$J T\%FD\+"z;{0<ߡVS!A&=BGn~(Wyi5kGGjǘLUK!kJ|+@kk#0YzkH  X6vҩş͍݉ T)FbvGyV ߃ݛf&l[z!5Z|;I>x ^W;V={bIa%ײd͐]k*ggq{= FaðT.兢 R'_yw/H‰|/{Ge"+5ەD12Ե1;}qhab=6UO="(8D:8>USJDt¡Pٖi-;P@ݣ@m*4GQ`fIq+tWp >z\ QMDϓ{iG)Ay'NO)!+)!j09]5pVKh=pzac XY DN A a]ョ~ 㣷%+IdP'J !Nv% ҶC̗ӡHǛMy)=g,]/.\Gε 56bVTG>'P"BFfS{mbbAhxZz{O@4˜vyi8}q%kCot-ݿq9D`}WWWYECX?l!~`WN8>R-pA'dsTD/_UK/sM^0:ehCnMx-.  E3ydQ=LY C^EG|NPm b9q+ڙ;__LfHRM&3"0&βΠaA*",\",&~ L?Όʢ~ʱ #Mq>#L^-dw(%Pke { iQ E'F(a)Mn;4?ʭ4K sY|yP(Zve ɭ-*DBhuϴA ͵k1drgXۡX8ެ.3F5Nb wlCnHe*D[Ro>^2U5%/j~;M#]EHn5Qiɾt#*tS}`j-ҐЯ9@nQFʔYOD-:wv]nKdu4t/DnLyEtj(ʅA\oTD)(liu4u`-.\Zi2 χɧ, ˍVAqd^<')n|jS C"nV}#4tʹwmOE%!\Hrw)K4~"!]WMrw7qD7hP'}.B!1+Y` LAe]cjSg\S۵7n6sA0LBxj/oC0LS/` ƒ(2Z䫤ZƑNȝ 1SU[S+4&F HS,_14j)v|F<ң5_K<4ׁ ąW鵈-QX$g21jΞ{[AUՠ h}@Ec̿3V!EJ O{v-եysqdZNf ~nzR0GQL?It$x%)/t?--@'ɣU|㉘tYOF)2|FdqlH9y5@YȀ^< ^va\X'sv5ew/zv"MfNQ˅c>E~ODqt~PO+(6`h`nߛxU.V9X q=O 5H&292( qt~]t( ew{ mu6^9ZoC#+)..syL|WE&ja}}W9y֥ۓ:+YKA۷ڑégdSZtVul?Dd`ro~YW QTP%@{8|=㎝>6$\"N:zVɺ~ĵwN7b" }l&ܾz]X姞w?uD <0u?]fQ2s2#DotZM(m71(ܰ0UnwŶ{WD&6WH-XJ~iqW|%#\@t@Gڍ ? XmcLmIM6os(A'X 19[8st<*"ر=vT֯L=NP4AWlbJW,+0w2ƃ{ / x0Ȩ%v&G2^to D8Yt"6ܢv/Bht>v~Uİ HbSbMy :HPԸL 5,C,Rf1W`>Q "?y AtG6[):, sɢr7?Qq*, fnjrۜv*1Ir`w'$c̍ JQ): h"X 0wCz&qB֎*%]AÆYAv)Wĸcu&H(S7<-΅eڱcW7=N8 toY^Eaye8KV猱3`ˊvQkcL2"N S`XRh= ~S'p-vȊriNH`@} |:8艉R_z-Gb kwvXͲZY#HJ~3)kƥdH7}(4Ϧ}ϐy2Cs| >SzALTL6ޒ%;1PɎWB$DQmqKM\I+ r6~fDL[c\KܘYq& 9oQdYzqҖYq[`8-U"W`(,udz/{ƛʼnyBh..c)" 7sS!}Y$eh~3"5)kk&4oQhWJ3^~fk%W M"~KIkzjM>`v#iDYzKL^rS%;+8= 1 Gue+nLYȡR)k*fY#;91|N!(|Ȉ M}kI_ ʠѭ/ޝyu `~ЩwsPc>*ٝWԽ% Cv`\蔺MNO .OȻA2~ mnlq1JOlaؽ @朄LX8"F3C#;ln"%Jf&_MB#X?Jbz+54Ane 5iv78%[D94$UFV૫"p]ڐ1Ԅ[섑IMu35?7NN7dD뫐, _sf$*v æ!2ߎg)+}D{~~CI_%O 8zΪIh0`8Ţ5;ACny;%f0(7:5b^*ErYTgjiVh&ӽ(RҧT6;u,;ʉIT?*VdLVq(ɡ2=q޵g0sWTh2[ (ME&'Ʋ}{ }K\繈2×A;J`${䝃 p%Ca(k #C3;{)isԶFF)AA+,\oXRX>-6V6R:Ջҧfۏ k.`Wɛ"T~`r)kzn;ofW5hdvv ab~`V.v\}pk%l:gTD!l?5>bá]&~Ž I':^<^ &#ܰV[83(Dڔ&0An]hR͵Ý)ֲJy'z55e._h+ȕeLaL4@.3Eӻ$QZ 5v$Ko$?GG?3]<,&B/h[m`p,圯5HMix>ʮ(8aA۝=?=/oC(*w`Nb[+bs[K.4E]6RAm7p*JQŽ-IR+MmD^gt 057}X&{+H^_ 0piPp[F!ZB%tKN¬Bc2#W!doc#麢ׁϴ_ξkf"sMgzr]CrG;\Iy +a<]"P߅}B\UJgie}2K`^e$_ WeO_L;n)JwaKX <G|Gꙑ@E-RՓYSw"Mcf'u5C!GuN7'd@_£r>¦MGT Y: B y- tE)8C˕=mTWlKambDog?GZX ݇5@03p!FjZQ1(z:cbMV%?7Au{]fii# E` y<0zy3h1@'@W%v =Q|d]^CŰg+l)lVer>ʱ&^d7f{c#nH$҃X>ZL(vD6I@_ @n.X>P,c&: it&^%"*u6SͱPdbr3  ?W,,Vp!&[7TvĘӶ'Q_8ΚYEzJÏ27\؁+M(HiЪl.$Kt2X9JqDI~qaF ~Nţz/eMrP*gog`4t(2?_H/Q ȩ0VGAe,݋kTelz!2tE!f^0Ȝ߆To225Gk|~;HU9Z{wy$fb_QH*=cd#2ZЛ$lh3!&.nf|י=?;B# Px? XU%&aJf `qDzcӜ'My vu}72z; UE ?e򢽞OY5חL8}t!uWf Ë{r9j/8+ͅ\ ]wB-aQm`喩ˈFpzwcZCVV5+IE_4GnyRarʛ'Pw^ ,J x!/ GSнSAnh E3qDaA"y\DM4_L^#/"z2lB0Sfjgf,ܮ6|ԕȷ[gp3T³/b*lS_cq9l[2ջ!χ¢E[ H>$c. ci[Q9ԅy`a>ڸrhj35mƓ<_܉'6gE3U*%8)7x;B(x{n ->>=`'X0Z\vrۓ"Q ~YPɯh DBʼn@.8\{ٔ]Sp/i:7v?xR I?Ğ %hxPx}\+U|-0HkKۉǭC?NqVDžC;XRS r\sUM (ẅ{ޘÄv7~0W]|LF|⦚(! 3Ab07#` #B6Z_]b:)t;߼ی"ߵߙY =>ޢ"&>Oh%o!iBBcτSܽq*L$!4F+:' Kg[TAHLP_K t)]p/YH2bM|‡A96&3LI+s?CСB<@!| e|rhX)dS>B2#/Fe$^OݬP팤w %AeKupyB(bFYaxnRktC{x-b[oEϚEapc/b%5K52GB`^kr.ŕ6c{%OiP‰Hb:ʡP]Vx3}lbT ~ (G(D`zb=GUA!'):hU=WO(VQ_/9n'oO}ՔВh1YM5CKP`{be8#ٔ )P?!Dh )q"Qpw葚b<+mUcE7-+ #z #T,l֦(or1l5:Zql3G=7c1ЗNvYEgi"8*uV(gʡzYe۾DM,:i19xsV#sm&ʷO%t;4̲kQVcߒL'j [ <~(Wo S(uBKxדy;>[Æ^"nϓղH ƭ,7*}aR WNjDb:")v.590)]5v9lٙp^ՇcK9,L@UvfRÿ1p蔲NCɕQxNG @T8 ֻ5\y[P:йGjiۧZ'S 4`Ouu$s1_xlQﰦGu4D*LЉ' ?2Ԩ)p93-HwOl\g^CVLo _xG;-U* s)E+׳ʸM,$"P97]I87#1!y{e?eLmu aiiw/}/NmLB0t^Zʽ]Z e*}-!lf.Й|Hѩeбf JL㭘7-ͻH$nC-y?oOԱe𽰄bF# mSlܣE%wOJɤgfKk*>gDx\!WM<ПmyLg@ 3%(=99|¨Ti338`Isқqz3a7 @o!!W?y*Cf2A52I?_&W6U13-ʜ&ME富BWvJ%S36E51q'tx֓B>9F40ގoQ:pVǔ'_jSŔFP2 KIϱxwnK˭Cl꾌Ed&OS=7s]!I} 5ųD68Y@8S޹nzHLȽ}eR&")C6iOd7>?3)Q.ķ6Y2:{$ی>z#8cfk/6AڄLȧ֜4佄>ѓ>c9X''׋YdBCkYrz~PjWW8R1T,h1irA^kw#ddRMLߒtjt3/IFh Ír}H(#!m(Hw7 "yjf؊ yA#bdzFjQX}f{U`%[_I'BPE-,<V}˒xh:=7ڂ_ r# Jh5@B`KfigƯf̉:綆LWC}['08Фpi]LaP8ԈtdZ(|[u/i?hn ;AiZzGSWtK3χr4( <:,ފogso N{c !^# 0|M݄pvlr0Yo>ocWx[+cfUec}JtƗң4gڤ?u&clW]*µ1XNňApmmL$ҳb#\]'W# IOcVw@֭3ƿt%6R yH}zw'tKwZ$ *EhrCMUOI78bNjUЕɥ2U$ b_ ‰觢<*mR ؾMD0󓆔9=R'zE%bXŸƻ!Ń%yԳz=#;yUuJSI6 Q&i ͷvp>2b R{wcqODLWsVEI9ݘ~q?$H{(/Ri,KZB70e3'cQr̆tKDY;)? m9QmDE~uk؝[dyN&JH`uPPx><`wڋ S"4*>5T,bzSqNcsZcZ@IOsNLט\JkChTr8 ёjs%͜Z(/9rLSGՆ1&Z n6&M؋YrHsFqHS;y_!: u AIQ+կkіSɗRϐ"eglj_aO(TG|2Ҷ& yW*~en0;q3QnFa*+THrf`Ȯ&X)I=GFC2M]=L"7' u9x$'E)<1HÓE:9e:ޓL70ʨB`_CNp4AndL;|X6~=&V .hfkָwNhoZdF<"p^ӸZ?҄c}87p!}:~Uyf Ҹ9nGgں#VSb>躽gӔ%l:V)(^{5^9J@jQMkfvM JL ?}X J=y#Bf ZrW_C7#,8(Ck(3+RYŵ7[nEC. U]ǚLT<;. ڐ o"8${MJ܎oD&^)#nLl0&yEƂ18hH;kU=Y$z-SAJkr(aa̖OCEO-V="qCLv-We(31ZnD}q=V= $l(H[BN] S~-(^S +jqi]1O)4ocZuQ@J%kzWӘ icn}=&wn |͋s5{2d̹2A\y>*Zgޡ endstream endobj 477 0 obj << /Length1 1751 /Length2 20941 /Length3 0 /Length 22118 /Filter /FlateDecode >> stream xڴeT\ݶ-(V $Cpww ݝK}=gVjCW}Z)P ho͠ t3q223#PP9M\M\.+G33@ t0L= @uO' 䟅#ȅa:XZ;i>B<-\`c`o(#@dk 0q02*0?@khebgpjj)U% e5ƏjNNՋ=@\DQ]ԤHiT:|oIPT7\AB]D]GY=Xn@g߲Ggi#j+'^&&wwwFKW %?[Yζ31tX̀ I?]ocDi/w2V&b啕&.@GW 4W@ mreuQǏ;ӷ5q3qpy/n@ п2v݃?:?q`tpo>qy^73'!R s1G{Aٓѵ[X;[eՉI+PF? ,.f af?j ?hvrtX؁ 7 pqvzoÿXf.B8X8xtߦ?J1vsˇ %jghbOJtqX= ,i7ۇ$l hd%&`hn` `8;x"0is?J01:8|\]|wjba09:g `r2I;,k/}L~.V߱߉GC\mZ?ECC,뿿[-*++ of:#zBl~4IMBS0jC-Ml)y  )B֛Oܘo)Hfk2j+,vfOķ4Fx:cX_%闶v/eirXD#h'\lwym#D;c3* ݉_fh!4C'Bg1l" 3A`" * ˍML'x6w軃1Y |Zs>汬px0Nby ac{0L/88&l zeJ3: q$ѹ64HL^coD0OGL터?Iy $t[ٙ6q&rE.zg<==_1F29:';BIy_aZ `@b|kmVi^Uj"j{]uy\gqIdJov7oY$Ύv[ {ͼVUa$\AU PzO6(4RTL⻀}תCamb~Xs'2} gjgպS HL\mKV]Xv]?)i6Fc w-&}E2Bg3уŠa2^cn"X9.<*Aί:D~cWK@`L;bR"/,kasE vdzB.SϛxˢAH #[0>gUP; B@Y"E{!}`Ѱ/ίJ~W?v ϑbq.T]mK/IvduhˎK!|ùQ3{0?sSG1<>6 /_m=g;7ujl}ے;d} njE%$w8pˊؼiQgAYQ{4p2W̅D=kި@p>gR`\C8;܈ď;Ӥ>W6!Ko[&͊.B-rˆp2PQ}*a{c- [X ߦi[@>05(bK鸕fz9I@uj b 1"\a,˜@7-#Ӂ!伮vĸnU;呑^M.ƻ#|hc@,A dR't3{dAqp+9>5-o9tjhU+Ԇݟl$q f牋rmy~ս:HϐX95ek(Y+H~)9ś~|>tEV- cktZIk0\߱T>/0JyJS7,LiV$ Q Yiqpy+8v4$Q$"z^Xz ڎJU5 = ^d2bdji cĤ;8x?R\JP`⁞s5nY{)!&\ X*=Oُo-Mc>F1!I[gȫo䡭ypCs/BcTvxâKſoEᡩ;?pvda *2=")S:yϤKg.j #(ѱ3kkdŎźyF0Z4]P@~!j:/,'%G /hQ,_ĥq޼z MpJp2l)=HȎrT1=XR3(H>ҧDH4/8a~-ͻɷC+D=sw^ɂsZJZlɧ^g5JbM4s3hՕ/J2Q(6V~3wgI;?jE$j:(b2ԇ=_9+2"FP2_Þ_gߒ6F~>[ctQU{'tN{A' h?$^GV!#^ $TM#҂Y,ƻ2OC!n kr\{NE32*4f5fЁ|f`4Lʬ'QN ?a~:Ըʨ 0#\7J sl}% 1n7'ijTD^ n!<M6Yc3ZcNbw)./ɮL 6 p"v`fY )L}ZѺubvig]S(m"qs9d 1i3у4, yMyU;Lf]ƨcAhe;7iݠc~ToN*>tHU+c[RgM!LRc +"&5jy*EޚxcBQ]'pD 2f۠SjAimu"4/9bTؚMxFV!a(KB~+o{Ip=pl]*RY:F:2'! ln3s{aNyXP.oʎrB7Gd!j0_ `VSʲ I'fEE9_Y2iM VJi>j6MaGmعE.|!a24MUX2Lԉ |Nd$h᭏(#ũbqضtX:_Cp}(B }h^r~B4KsH\#r['8#&p6W`ݿ}.'QV(U>[X9;QїGx|0_)e\ji§<$)an>(E*lD^s ]*uScfo~QN^S=y ] X<5jb[w{FMu)|w&TZY׻)LMV1rQ\rc^ҦDs. o]NiLSWݲͽiQaP*Zy>Gh5z؎;Q&Jȩ/ |Y{yxi 12}Uo`M#+1 ƝRZ%-DנFWYk^\G`Sɜj?'Ykc吤:qo6ag3VTleLu8̷-~ &21r̓䨧4"0SUw b~T&Bs!ڹCj4YQĄcnQ[[X ٽy_a]Z(WڠJG 60\MxTE8'f#|C[*X6KOkTs,"XV?mddqD Cq1`'Qc(GkmPec{2Z Aa<#!/t[{=xnG";/b7hRe5ֆ,m>.:~%9=00\@ܿ!"ܦY_Fi; RS#tSBTCd;"QhG${7!߉@ṏ#3%b !AKB#AxE4L/N͌k?.Wj927੣Xq([+ψ5zռ' *`wH-eb¡c?d`k!v ^ULAT X2 LV1'{F)fXZuH ԰ӊ}3%lh/ >OXE|U Zd3>9 .m3=o/oM)=I1 *@bCpZO9os|)Ar]jh.d68i&dQk݃7#@=ZU 4[zߘ 3cx.ijڼ.Y=^pķvm.8;h[l$d5yߋD.'|WIBXf"1Am ֦%G?XmxjAd!CpRuIeaPWh]V} .g'%UI/MtvvhI_aWb%:ì 3fD5h@QrP ",:?eqld0x+*ZQ6۫5G=]ISsHWWL3mTaˎʂd(a$9TFվC]?ka] n(*(GeA}e #BIP)^mo>cxv(1[yҘ9KRR}*q]E>@hp-pid7b1&O%pȥT=oޝ"kB3A)R8 B۽.T܈O114J\ۅb;W|D.ǒ[Hz9T0 ~M<.a:SѨlܗYp&b/|Sa?6#~<Ȑ7qWxX%Z;S V?FKƚX~c#b|Щ3cGoYZց;K`sx^TjK|jۥ5ATm) ȃ)[ xrT}ջzI^q*"%c(Fhksdo>*G*~fS) 7Q5^l&vԶ2uyo95|& !V\˴hjq"pb!VǾE ˤMZ)__^#ahC{z3g^ᴘu#`[qxɿTG#г&_ + %kn2Xv=/8\*< 8Q&;y6_Б*L-=]Z2uhC|T&T."jKaP gr 3>qj8y,m! 4:9=uކj[4䱷%id"&w-7qYsx:vr%c6*mL c(^x5,t(T@_^ W,@v:p駎z醳 #sUFgtTDuIuIF(k7\) 3ӭ%6V[,%4T$IڶBdTa ˹yBSq|tY0zQ>읁9Tk dH]7Rqsϡ'&Kʼn#t*™aq3wᢎw9)K vАiKȗLC-Ԥ .BZch ,򱱰Z\De袘+B,]W'Y6/T:-t4NAoYHB7>m .麔#x{37t+ߐ\҆\g(j~mf9͆ !ydg3ыhpv#W=9 TZŠ"P9[sH*iT,7v;9Z=A &~VH^UhiudɁLd mwN2"b(r&K%8W(I&P 0Q|mѼE+%PS偉A%[JȰ<B?C@تU*Kz[vŷXVDX-FEH&EsL r)} SUn/.ZǗ[? ɞɁQBƠKhM9,ћU`4'Lcs%F l!]9F~@<"`Ӛƣ1@?ZH1${K-ZL'<*]JxA8.Z3Y^"YdBbtm-:4b;Xy4/)Md)SG/ehHPSAG3/ IsEřKFf1SQE7=o?59cU޴( i,t\Qu+i6ܕ1mu+w:&:B6OF!WhYǡ_s5=ucfR3)yT;v l|/ FyNNۄ8pZe?+6J@?g['qҘ{9|ߣrѓR twe]@۠>i:䁂ItqGJkVEY}vD4鼶7h9BίhDp.pxbZ4atMCn!&/DbJ3 z7Q5,X`yE"s8^Cp/ JYm[RaCWQQ46)7P{{өL$QZ.hRT5aF%#l@!Zx/؝)3."Ubl`6s0 b}p]gHV[d+tLED9/^F1b ;N7&jSP`5q e{|df3cc0*WH|Y‹J ebt^34.-~?GN$0N~%7FM b{4_f %Ap_-p 8n]Z)E삶Zq†鍏X\{~JEYfYJ/S wS"g&;ѓG,UkHSXUܭE/N)^Z'f(5- 샥;aAh6>TwB0"8TA i12p}qٚt=6"'CRsfBRޠ /1ows?S;aԶ 7‰݃+T>P9sV$'hQO}~PK7?s UѝLT6 !cv$U oAԤVj6,+"E1kWTOO* y SEoʇnuVq֩[u7D%նj Ok.- 4ƲYE]=7 zpq{a=wK6ӳt0=5u`v|1U Π6k Z\=%|8;$sbˮfB6qf*W3kSf%аHcW;ǣ)֗7}{l,@v\=pEXl:gTH8yԾ M1hžmlo 8LJ(>~&/Nx`KsH86H 8f2+kDKryӯ,*m 0(BgB `Ñ7Pc@1`+@u\ *#?O9s+J[?z&m_W(bfu] `ㄙXl֌4W}NKX:]6l YO}Zwk{_rL#Am"30$es/"XN624zX O_rja]]8oO ֲ죮 V1;ua=մajpWb~0])xlL @^H.`4yuN/ǝ1Ԣ"6ϑɗ{*Z?mɁ2t]5Q\k'bdgA+c귐Ɛ LRC њgD%xv02vun#v.x {³5vTIF5hvbF#}) -R߻FRAyʟR㇓B3jw+)?B//:.fI)kgX$Nn77N ȸ+5_ &k* 0X6^e7p-{s"<TN)\{XNև]NDW~ǟFhurQi)& w֏塇0!Xy=f)LJd52kZ12:XC7/EJ+^hBo¤/I_:zDݶMsg*#8HGO8rU+d@@7NJA,eT(]B{fAEiuDMVRA--KITڜd ϔ4D/]ތ+O ѠD+!\)JSۚ c;2_\ڍ6~(n~cIljmXuW,͛#& =rfIވ_Z0d#{R8&OmwRz"?DSuסGe1U4eQ} JP75te Hq8k[jsKDlktۦ∯]t ߧ}.Zfɏ׀E4Gsg>}7fBp ;zT|Z77N^ޑqG/G}f-Zy"k^xɥjh_b[rǐR/48n5a2H׋} cA!X2(caF5;8}XGEر-Tu~$lJ%^;իaM9VIRt0EA0MIx<#wdΪS ^"B|ʀ-Anڼ֍GSɓv|<9zT>-c**o5͚$[Z̙'"*4hO%>xAiv4n~80`+~Y\l"lFnǿ6eR z-HfWwu4ȭ8Vpo)"=͇\X X2}U7T2-$>'M6ĻX`y>s$"Wnpq?w^Hb1FÈgz!xKᣋpO28&Y5b{tn-H-Dl-^uo4,q Mـ &DJ#9LQU g+b&}60Cুڄ# n|Q}ɂP~>E߯$^ {㢞Os!Pcw9]6T<Օr%N_{ >&@1˖t>D\75ow iAStqY.GJ=tʂ%)t}<ȄjM'ի_|06z,-WIN]_LžJp}ɜGV:yW?a~./J~GHfL|Z7}+Nwa]ڳֹ֙9 T6|a&c6WZ}BD)D+~+ԙّNTX9'u*y$7bB_? ⁓ic-1.+gmIrqWRZ Y~sגJ/(  ɲ=1w=3|$Vx 77aȎY*5zIx wsA֮3iSF4^]o<œ)hRk{xD*PZf8yUNFy}p8u!iXX ||]Uه="HTf:. cܹ:U@:84 -JLr " A}qO[p 5C *AvWRSjGW6UN~:r ht<4zRU@4]R~*W!]v5GbҼO)+Ol"couTLWiIи O8Ok=gѫf1~u>k݄k'98$܂9difJckߐzhAˮl1rJ"-!hWC [yBL^9Cg>%%UAҚ$?KtW YZy5 |Iw>gTL*lZn/iLb,ܰg+$iFs{-u%;m/D.~,_I >2>"BABٻ bC=dekG=u#+TI>ø֒w:jG+^Q}i ͚8T0xZxEM_0(#Pw%IqPvZ F9e&mՕ'kٝ^_ؽ^vy\vQ Tqe2'zט4lށٷ/P` ^U&)=o|ޑHe~SBPͦl-ncV{-Kɹ~Ut\Ȟ9;D`/Ϗ$hսsX|fl}WU=ӝ} #ugq˖/gUқDs';Rd67\37oGj-baXV yvVnMjғ!E/bp/}"0s`y+}Hz$FC}GU5R56GG 3%hi0)-@Sb`s}CJ=%o%Ԓ×+B-pOQG"KS `X#+hE[wCkbw~A10-k|)y[j֌€BC݂٧(YIao>226lW(+*#oo4s8x9ts@cY}nu.@ֺ+'BU-`.w}I"I59L<׮jt1Df~84s` -͔;W,:@F:_}5H >JzO_Txoۣg`?xefϐ%Aԃ*ЊE[zYG촍4E?-mH{4ŏѴ5]QW @$ˆOF-4]x9Z 4F8p{_ω o9^H]ղ6S$g!M]/n~JʅqgU':um ,P>_G|ϧ~STb!rղMx%??cu+1m*dW l` BέX|8+,896K913__br@ /y7oˣVͬ7BOgF~P]6nW/,z̅PNZ۵b.)ePSpn,k\2eHb;=GY[8;I䊨_lN0` MV~/ug-֭:.vYZjSk*0NdI4&ّh~Grjiw)^ɜ`$-jY1"7-{ pnTcCW {H޳53 SG{`3CMI|mo/VE-8N@7(Qy諹8 A|W}!HOagU!`&쪸Vـ\]8ZGkTO \1>@HϿͭku 4Q/jTLor,Ju˷ALGGs9H"&Wsj=F݋vzG[u)k]l*1!cJi#,"@m"P^޸Sss85ų׊I2ITvD dB|ܣ00:B@?`agZLkb/5޺F tcȃKA yt#h @NNlm\ V<'. eMށ/ 5I|ǠNەOV֝kHr{u0<zQ~MǫxJ wy/iȧE5*/ʎ#Z XO' dF`I72T}aakv|xQ-o4KVEBA7_v*Få珚zB)m=eS1T%`9k?)p6њielH'rv&2\)\&gs*W9tBUnl*(VbRC,H`zIf'הQ o+L->*$$}x4OVQh.|iQnr\FiDȿE[ݧYM庨fyoӶa=]^ '0>>OIG; lAw; (m pwc%nMs(zYH"_HRoVӎ9 IZ(Fho)q w h޸+WQ89p],x 1|P^}eUϼL[< Jt|aN-B jY?lv 9],dHs;ξE#wiwK XyC%1D36ðV2a54nQs#l#K1bŃxdo!;!EH?BKxly)N0]€Jre/&ȟچZ9r|M%ר$ >˞}+ ^GXQ%4ٓn'NץWI%%GuI\][$AA- RS RDpk{G:-naIC( !PeߌSvBPs{wiw=v 4MgVōсR^:e 6mxqA 33af=aGÑizEo#U3\9ggl:lw i(,Pּ˩Mb9t3bqjF"{{i5,>gJSquƯaƵsZ:}0ve]~M 0q)@~X[\1dr#XMeJiB^kR|N%ҌE>'^KFUoe)鼚v$4z|Zjb8/#ٹ) xk{O~Kw |E HY֭(l޵}?ѠHIQ#wgÍdAADh{$'@N-6L^KTlDWU~"mI)|>xc艱?#ӡ8qc?驾;z6>EIp`x奾.c)*.a0 ,*mImFX @qw%pUԳ7T~@}( pE3К8 úLk\Bx]Oޗ˭Jn,zV&1Ϸ?r1~ܭ<#r>WR(r/CNT=v)k5֨.!* sX %^xǿ W?8.E!v=\X,"K ԥGwt0DiӨ֢ E h:]Jy'<'E7'NQVN|ގ{d]+56tH4XYgt"<j{Y4%~4z'5b򄖮,m*4 lb9TeQ,\{yFzoxcS4^q }iڹ(ݖg.G|ٴG?aV(tF PLQ%$vovJx bq1^]4 $-Jg0F*ӎ_#ƛnD^ig)p%,mAp U ٚS\*|KB0e ҮBQy~֔WyA#7 * +H*BzN,vI Fd5;uqI"uR7<=\CO.WHIi72H0-)k`Q<%(̋ryXYa_@;''o.ՄZXgivҶ@.Mpm I!%A7va͓omۂZcSN6n~olBOAM;ߟ47L H2)RH&͕!T )3 648M%[/䴆loS͛vI DZ)2A]{ٖ"9ɠ/0w=cmNswJ8 P`02(d+Zhcd`'!Mnu'`x*l@o,[5VRfkFpN[tYPKX1)z^R&S_r$&t|EdTlqUL ;DH5_EmuT N@I@8m@ ,gdZ#KbJjLRQ Ze~3HGW^`!"nXF!yȉ"#,N߶݉Y#$6t/1eS:J2M?Z ͻ-50ˌWAem>˷p@){w*q++ڏElQǪo9)J^= 9@O-ܮNc /N8p1lnu}N_+7;䥳"f+UU=9lF)?,Xo :tD%WVJ7dlodW#CM{#,gݷ3z0 51 a~uPD*QRQ(dR:zvT$Fk.$T01o!TdKUݢjTZ2OGZÅœ2*:Uƫ6ei ȳmaM6HLʄ Hl ,w,qB~.ʾw%(ɝ u5bg$W5e5G1 -e/lA7Z/51 }ɻʶbV$&ׂePƋZ㮖)'Z"TvY|){MNwiHyǞ;D`#itw4 U9 T|Q\bnշXi7^B ?4׵Rn”!O|Ұr+!z;+_ ~䙹ON4Hxtԅpz\iI,N:Xi#P}ekGhY c'{ ( k_|#]1%:̣Sƿ+ ai5SAX{ۚz.<ҟ((=[ӉC>}0-ُ$MEBtjN,"ҝh [p)p$.cVnXmT{o/2=/!tOFI>03==4m}rX垗@_TYIOt خA^5,9fXc$޿sxh-JףرeP4䠍`X?#L)na8@BI7xu;?8:.dj%NO_"N\$C9qI-z"IC#-DɆ 5@Om8=3Q*(Z y60MTPwY:oyT1MY;)/=y/[26vJ,$]{Y 4leuń,NG[Dz=O m_'u-k -q҉qaJ'š6V}.ɼ*CeYN ނsƋ]<5&uwt.W Jy endstream endobj 479 0 obj << /Length1 2472 /Length2 21873 /Length3 0 /Length 23332 /Filter /FlateDecode >> stream xڴeT[5kpK\ w w nwK{pw*twN{b.{S5FQj0Y8ALl̬E%u'SG6V&99Jh qr4< k9 `geC`jz;U'7 tqҁS$]mAkp01;[ ojnfg0u3+1x-v`n ?J:: u6@K+ۿ1u8C6\+s/`n@֚ \O.po+/:@=U=!=8\?+]㿏G_3럳g_XdԱG)K|g_ <-. @&v>aqWߏٿuoH sNaiMRET|G8º`2';$7Ɂ"-AYN)Tao_V[?~P2 P Df RTEN/WW#C @k@>}"ܠmֳd':A'NH=vBiIa8Έ3Y/2I܀6iA,IIgd uac?䎮—`وp7LL,Bq8)OT`^Q]JB~͏,ai~M}k%7`Ց?ɢ縝bLwǘ`bxU+l/G%So"0B4 >Lf=zo)Mٵ1h=Ʀȼ#g8׋$CV7Ez^ >eZU!bz W}o1@QRj_7 =oIx&$g@Gx =nIZe-YJ,`9=+M\LGc0]fZOۙ1fn|3Z WB\ˠè5#盹ދnDzl2SM%g {T);uzz%GR_t\!̋j<^eoY4f Ssxv@7Y-m$GrO-<+s+X̒]f+53r1(y]?|; {ϨE zJ;MNuB ױO|I%k^_Q.tU-zMyB-[_[¾8q[&(VzV?-`ʡqA9syAVTNvbVvyABghц뎶8XDmF;yJsWN Cm8;OC3ފ5O[3#fĬ TV\hi bYIm)d}snn^&VSX{Ù?B?LudVZ BMb$GS<$'^2e8--nw}E)ۛa*Ѧ[j^r ]|`Pź!,f'ꄏ"=ɍbq. SϊӶPz+ ^5BSaڸ)t!Q.OɌeD ?upuyPLmgȫO u?HY^9oOFJ?}?Jó- x`1ILx|{낮F^vk 3dn~y4]`|,cϤcehkBzf.Pߒ:3.ڢ /9Sẘ7$h^ql r۷u"͚sK]FV|&ye;%P6+MS>TZqbFKv"עDw OՒՅ# ҉eMʂAL1b$b}wG I$ŀ:Ҩ"JԮaCR;Mr>uW*#UN @5e<IͯA.ZEQ N89jbT^533K gHUUVy9k g';~й.l(I|%—Y3܏/k34<\ ݦ7Z,sd6?d0;p%}[~s"lnl!x/z#`hPzʘ>bUIrC!|/,=``#i豢kQa6J~mךTP+~&OZۊb #U)"{<J}A[<˹;-8k9xH8guSQ(dzN^X훒X@rGo[u B3ǜZhܛ/ߍU͜6,P&97xd#JT* b4K1Ch]h'|%CqńFnMhõ=-G>&/)xeXj|(ѡ?dGX?/WZ_Isu"+CyhIw ,`+?"tcgNΣ5SgXhW M1Î^/Tpy7|mYx  ^qR(Q,滘L[)[̽Y2k`_ע9'wB=H@,bUC]ǻµqi)fU~=ݡoEh~Ѝu _^Ko]avIgXL_R%}(Jt|ۨI3FGlS ڃ*L,XY)O%w{'cR MJ'EҳΣ R _.k2{ 3Ado(O l,÷j$\$m Grx<} {.׃Šv) $ rq"X)/(HT?D s+py9'| Bk2AB~Hrב߫$k$Ìq>3jK-4W2ڊUt!Gj"A8 G[]JW6U!^.^lya4e 0t‘- V%3kD .UÑ-Ka78Z| z&Pe UR)0Id^G~].9U;)?i*[AԂ蛺C0,OP}%d x3֮+s "f3kT;Ԭ{aH_8Q_*c>[}+40%:'Ŵ8 zL)R0?0?Z,Q˃ {PaJ^)'zݢsb;|5='w%x4yykA:iW٨ arɉr3^^"TR= 9UŘp\9OGD%#5Hp `LK[Lj)Xwfޔ nfl2#,ej_Ͱd3wJXCGs-ђՉx*j]fޟJ)zTIjgۙc"E[Y7nhV-DSVcv0Q_uZ X6rx{Y+fd-;NEF9~pΎ/gKRPÌ>KLs((& cN ,{8GPh,')dfx6&IO-C4ӵ|,Mlm,W-7{yhk{WIo=B]-ْ|KeQY9/~{wL 0< <=y%> )=Hso*tMja ÔsYö~ȳFf F;Q^¦Ѥx@le`K?4!`&6S.B ]0}U/1rG0YLq:7'=0so*]<5gi fq5 Hza#Ʊ] I 569н~&?ؼ Iu{){7Ϯ׹-Bh@ń-]sˡy5 QZͥd;iҤR'Ud]S(uTVk(Uy`}H|mw>t^rr$j^@t;Og >6Ppl)LwU95k܂ub-[HXD8{ēl7fY7=_Gw /H6^$N=]zwANNJk#"%Qnplc \%Yp)8?. fJq+(w]"#F?x]]r"fisV4ٗl FunUӞ_{ Ѵ!L`#!fD~/{.9эI|]1d4`oiųo݊Դ)Zv )o{D-X0,}"oĂ? U+3aԑ~uD?<ߍ xFɏÐDhvT JG_{+X,c'W0U,E߃Auq_Ryi #h\J`֚"(=.C0!YYS{:ciV4q%IK}2p>`Cā([!Uֲstpp"ʚ'{حűJԏOtpu | J&vZd[ %B7T,l:ab(45*Y{ سg3w&n/h*؏1!xV8H Y@a =[eQz)@WË 1.E*N Q5^Upy.Oֵp3[/)mPS܍{ 4n@]FrFq:Gt6;u}BPƅxSݖ4&o".4=ɀbr8A6q hl0m=0"#}Y MrDNX'(g]NSӌTt2o{',d7~EoMhT$0IQټSհB4֯cvS5rbd1]`8qB2}XpOF.1) kq 5I|* tZj& r_WBݽKGh7&ЧA.!^d# .Nݝ=0gx2݇[h:kOJYSŊC͍c8*_Yf~pC{ u%|L;wysUREhyceeQ ,M(m;{8!<4mύf/_%>tļ _=E+14&)<͛u!X!,_xЗ??dL,5S Cp21gzd@KuG*q2Sޓ+}XpA+WKr_?{8oڬ ̧Gڣ)jܯH@~s01fCB0#FYgjH ~Ræil,/rG%-^JfYtj_ E {)@D QQ~AG61FJPk5 2#~ׇs5 ?ܥ|ȾΏO /s+1R2 Ī3~j WSv\|6A}q@,A\-*+B(c+ ϯJجw8>T]6Eo-m**eQ Fo=|N]WIfmR!}4UO>Y!b|P&-&T3S-ONh~]l>I8ż]Fu**Q}T/Ȋ%T .̂K:7haw:׶̝mq8٣uuP5ˇ~*FE "cէEH-c$"(]LJpOX+LM)}<'N秀_&/˛z!z%h'?N6sE4%8RHVDohq@CTljb+tր(Vn; Hf\h/i!&/8ljH5^AпIPzr4}Zq ӣ2ͣtHГy/"EC'[ Uܹktvn3y-9賶)N6I6t*y $;jcn8U%zơ npeLt+˕hSh d>NES 6bv2>>DiX^ؑy>7sfcG}&-L_3?@Z$֋I7%z^?8fȯxaKc َ9<񘱒?,D{ PtGa:\\ɹv%1d@ܚes\9G ;sm @v_ҭ<.-ۛxAPZF] '((AV脤hѓlٸbM9?蓸B(6j;S=[.TD^fs E g*]5Yho07ٮ`}Sb} 餁Zx9STp=:qgcG^Y+8 Q8].ESE&Φ+E.A? 7cd)̌Sv u?x}dq \3b+>)_Ժ>omsf)0ݝjzn){:~IU7P/w'B̙k;zAqzi4*س7"Շ+L'vBGeL7 !Ԃin}x:3&E pSm#J,r ' xRr3S A`^r B=ѮEwI$Tԧ?ͭ/F|}ՈeoR,c> @(ƐsUzD+Y0rIc" -fDtYӈ7"a*$=C烚'*Jz;2z mL°--\ʤosNv^ڙJ0k Ht)Rdr]qEfY cR-%v4,Mgn gE?SmONC(ϻՎlJEpnatCP#`|]PQ;[R1k)*-RSƚh:csDeY)uV]Mo "FW,fyP<+^n~+QmP/c.gBV?v^҉jj-Ha;/yZtV\,J v,(1w_+(#t NVn*o3`/6,x49Ա4lbxsN9k//@?/ # Ւ;Ÿ5-sٲ/o@7bT[;sb˫3Tg$w[=#i|z†tذ-9p? gj;J`M'p=ּ}] A) m;:B˔&;ey !H[=BXnA'q I֋}$O3XId3RoM\'TaLL=sCͺw rL=@&E nS*{(8: BiDﲦUS}jzps[S6R}jkaaqYW.eC8g}?!yLbFK=kpfwK] s#"}7aUclDX6$KK 1} ObkGB[h-Z3LFH-^Q+dX8vS$ 2B5 3H+Ed Sҁ_VrϐD5lIMU/T1<5(^D ?$8ƽg[:ZVƾJ~ʊĤoK5)n3ӧt뇔LGcq5|\ |h](&dT^̂cͩ;,p3 gW65?G!DlkO@?8M$tU=,2}Z([S}9q Z#gcX"br|OH~J)g 2Ġrp&;dǽ>,2焴ݻӁVP&_b {Ñ#S_B'SZ@q$O-0O`/8P"mr ݌) 0!봔B.#n4IeXϰχ|44Ñ'Q}jK B9RCϓtF^dЄBx+ 8 ~^7_|xpéoܒUF}:_Ө.65̛x6N Y^g~;d<oR2f6;%QR "!,ep?D'<7z48[lt^.zn8wc0| &昆,7q7o}ۚ6#˃S`l]}Rq ^yP)!<eBeRb$i;z߬#}8'x[^}3P&%#v89yDQ(}8.'nPm${na=Gq)'LkR{l qTēXDJzc,R7j͒trw0Am1 sWtuqh'4L 1a"[7F?oy"{u{~4Q(oZs/;}/S[RvT\U$un.gV-D8: 7ɫ+ErFVYB;2lt7oXsw(Z8s衰\WqI]Lk,xwߡ;/T}PzEuQ8eǀX:hW{^, /`C;0(+&+u%KBǡlu"oUQ:ْS#"I£QK>Mx(ZY"2:A&YqՊ}lV|F+}niOAͧ=kTžla˶Up3zT*[؟gz+i\Ʉk&NX龳d*cZ)cTcS aHۇh`_TnϋyT,B_ʨxZ( >0߾2J/iZ:kN1|sN$Zn7M(!Jۚrn*d>]R_=VM"q}7!sTn14?V{YtAzճW4n&Yx} _ga[wy[@̃ƌnSZݍǚ i i<Xf2.'8G~)t_^ a^ G&yÅ`vNIJ3GZm`'?GM'=WFEx?j 4rkT? ?M=8'ϩgGBz뺡M0mv-yc q"-ʩM(xd)?~"bl! V)aC6άH=ئLsrMb6W6KFj}+3t^Zi)2cˏU=o+s׆6OpzQps~^ \U5k);+K}IP]?f[OX5;ЯK>jډp:*pg-T Al.%?>_G| $i (0li@;*?I3d+pwTƍ}dA֐"k} BLL⋪:#MA0ޘ9*d0uqC[]۠(`/:F=ԕGm1z~#@fm07UT\iaiy0:PWC`Qw"E"Em3oB|zp8@N q@Iӹ(|?Y:Iʴr}R*RN+_ۜ1[\q;`ۜ' N}uhϟX1Kh 5yh?w.ͮm4N#lI+ߐ$ Z?m:h\#A}9tj{wkgƼtD>bZbwCx4qQfʁ\2x KG@ms{ӅX}k;('1Av5}Ɛց*> mT}nfq% zRxۦY1'EϚ|_#_gOWoOAE`h`5O ܠW4/Dâ8x<*_SL꿓lQ5b`]iA9v(߼/EV Q%#tNa3SIҚg.ţ7d"ў$MA8NPk9-|Ʊ3d|4X.!r8C{C^*0O<(vH)4bPVI4kL5Vms%" Ί {O<*q{DEq9*1),ZTձXfKxp4zOc<bfWni6>ŸMXf+$v\v*cO FA@C=dHNt+x  JS@vK`![AkT-B Xo.,.CYj O%W u*D/.ﶋfffrd=&nQ]O:ƺ^qw(=]vv{CZ5(Boxr"f&% ༷#/>:dXurœ4SsÞ^|cndt`Bnsa7C9<`uYƷ@ꮯ{/BvIA2NB o3XUHc rL)2>/ӉfrY 3$oyMgIckR| H NԸP 4ص[>Pk",N?pa 3;>DwGG*Uq}1gJ%[,1$q}ØseRf?ե^:66b'026ǃ@t\5=BIf. 2eK/Ȓ0ە8 B('T^Y1d頵 uS8o>l428Pf>*mHE_;!iJnۮ I21l߈瀻#5q<+OTqC~\Xsh[}` A?]]%9ؓ.էު̰vCS+}P:{0UE&RűLt a5PMCJ_P&3_<0G[El":bGB&yv]wzFa | &O#o\K@"$Z¦*r dk.+ufg҂Zؚ9+ǀѻgekFީ-H H6cX-Xɘ-mO4L߼o8,L _`<3=DMrt[_ڰ<*uֲlEk+a]n~ R#ܙ%_I ]ouT[\1wK_)e[*{P|pҿI9{vƠ=svq;xyiW(莎g_;{1פ]*f+E#HA뷓ڂډ;ňo2RߞdK\grOda?Ɔ4{S\oUhkTcd8#@6QK f-%y lѝ,}BG!J]*erI/rC [BE[#9(xy V ҽ~ 0؋Fx:|{5)hzLc"mhAgV2۔ӆ948?rV/ z"״ZlnMHA\v-![3QޜJ|U 3fT^3K\c@ ~>u>bw\!jF/(59FI,\nC$$X@[i+vyˬ<c M>lkN}}lN9͜D?1ХHУh+/g&(}SZsWv Is7;<ʾI̹?qBgJ78B[htUoك]"B:0ǜ\H:%\00@Dyaw]#/3kʍO6>dBx"{')BO;1[M7\n̜M܊vtѪ./&D3Y) #L^}m!+Z~e(,.RϚI{e|nj;_W9z130IW* ^8 &**ngGQSqTs^(*q8ʱ9ee1ayS&s [J18oj@cΈly`%!YOlV yF2ySshe@gL(bs7fpD(5_4Z}lf~h2џkϽR!Sč+C^-`CTX:8"+fsެ-cXAGTQ8"-RZaǺp:^q{r<*|횟I&EY:<_E)QČ9.Ǭ?f5/ ]boG#-s<^`(ꅴ/$$ ڟ5dL:Q"$ˀ#59GO\D ޯ\.4kȳs8m{ 4H[N9%z~|B&^YXq^]';]D8V[~}3`qTt0lID,+9 .\'p" S̮vCQ/L)""5/ivp}xWxI?,Ic|kXj_:Ȃg`ڽ䮤RO3尭@zIl- =$ KDQE g]?ARqQJϡ+.,W=s5c؊ɣ9ϓ(ߢ_6B7VY%;ٟ3#xo|Vzaۗ~ǽUfX[NPL*!D+7fF<-{ }Dvj rNAd1GTC$j*djQ_\:\ӂ~DbsY[5)jifh MSc'‹z=F A=VΤ*.W/fBCݏo@4ƶT.n7-D,&h?B^qnJMP{`HsS)4u#W~`Xe'|7X([@\5J0 y;9) {@b'Sɧ&1GdS)AR\#A۽ޘ[d~~>YS<~T!.Jt9TY}A~0m쭵K!q2ɿr@Ks,Bk2N*}ҫҞcM&H v竖 o.Y؝c795):A%}Ks赔bJopQ##gdҲ+Q!&vuEMv-궩o/4V)uƇλws6Ȟn@bG~>5E-ƚOkhG LE|&i1cVmQk/S6]x:LTdW}a\Z )e@=٭-vxr}A(O Po>]HF,K(t͈RW=k8nf<'Y43g\J5L9"HdW3ް ay6}W(gZR8-AlR)j38wD6d&@z9M8^k3.+S 6gbyr>&;wGOc4r ?'*ImB^_cnj:R(ĵno(EP.rZtTx9,E9rL!<"_$ޏ[،-`rq/v+QQsUGqKLP"0-m ƥRt+HYc0 ]r'p`sYҨBBi|WJjywj0 ^6n5GW|hzs8f 8OA&#Pg ^ PQc9<Kd= .Ɓ"G5@#*>2E$hz9%l HJ(<;޸УȟO`w z?U`PjcMW;|%aY]jfIPkSOjUUnЀ?A][WQԌ;P.#5ɟS V>}91<-sE\0.[@f#j 6QbBD2('[ʆgP,jg(}oY ฬ84KR]a.a} 28ܝ2C~IQlCҟfEeQQqId)Rlg1֎בJcׂVEb p=@tbg}Ä1OңxH r4TYᮕҜ~RůG"]^PΖ$ Ǩ[!N値ĉ vqۖQn'=@4Aly^(pH]l9EwRK ިrlVH;PHG*QT'>np;cd1BhV 1?XΕf)LŒ[UT4lH΂@!vDlgpWQۦWɨ[A'訾eMX|+ĚC)1l#8UWoZs#B>SXί֌/]SS4J- \SJCSK$+; m`՞KX޼+ 2.oT%D{KT/`B5NKXxkY2f͉H<&"0~z|jsw^d휰\>Rr:gԾj}(v޳`]5hj恠|Q`#""t|Ͼg"#Vq /Ucu`־O2)o9=:T6:;l c Ml-`N.oMqRi ^[n{NZ0c,(7MDxp'"&<ٜzӉ썍O8pofy]aVH9i 2ojzFke:?4 2+@Yk7C:,r)KhUzǮ3'?#Ǥo;d,ENQQdnK β[2rDz@*Db}]LTr]jW}HMfI[f X[a)A)14$N~8u @t: biӵgæa QW1\]}bbgI^Es9'AS!bѸ`;0F@Xdum]@4#cTa_@;w -9oFj0:,8MR>1BڌXW5閐t1hAPyEglVq 4UAY#KD-Ci+#BDpo};zј AJy.uޑ`.J6TR&#ct Xh\6pT0nohn0-tU|5XTsBXJk0#9C{cX1N,PR 77 +ʿJ$ɿqW;wP0.z{U!s3Eޝ:A9N4 9Q* rXg{r#Nf{2jA'쳂L>Q8*s֭?>D>)a9i4v;ԭɇL2 S^=cu`GwxqV6u88Lqϣ Q*p Ϧ ɕl;I` }v=,\\_@M 0n ^?&bmUdPԄ *}!m-*$ӿ Qzf,]W[dT#oBYO-'3.A.f~;u;_cF7}IS9BK.$u<(Y(AaGdžnI)LD$,tK&+}|~r$}(-GVӓ->F':)0NݸD([^y+wR*S7~M':z~QmtgD|\3"˃KxKK}q䤵>%.2#wIE9Ihuavwl˕ݓZ(|#> ;ӘRszII˂LR!I a{IZ QՔPHxe0"G;jLIK9Ŗhilx: ́N{7n$ JJBeIKMϔTXQ5nP2!!c'|y+Gr1!cT?dzNv%su| 4A_$.:CەU!8큅#5}}YH6":anT0KhL=<]Ԡ9h߮nd#ᑂz)~A ޑ.j)mN5HsTf)V~Hk)XJK6po`eڲ*>ym^̫HpDq>r #vl _`l}kku,#=]w*-苬6Xt5T$Rݴ "g [vz ]\|_g8 w5+yЃ1% \2{RO\u:\A*CkfݾW/ u )A_tzٵ9Z?'Z 0چHp2dZ(b\x=r 77S0/E=afY Buq4s8^90IGH5gm,ŷh#Oї!dVb31Tmq2 <Ԧ]]}D?0R8P :̵(>,5ϮO~`4rׇBj&[# x-Rh1:F8>SN6߬8)e@^A=>^7(V|aIbKhP3V$ǹ^psܼȠ$3` L\ʷګ3]_ڗM1S"Z¹-PIˌ%)7ݨ%IZ0P)Si[ O# endstream endobj 481 0 obj << /Length1 1837 /Length2 12549 /Length3 0 /Length 13705 /Filter /FlateDecode >> stream xڵzeT۶6R;P5@pwwhqwoq)-Nh}Ͻ{~##yL_Ϛs%oFU5-@2`3; @IYf`m,ll\Ԓ. ,k9ƏL A.J @jz9t+ l WIG'/+kȟ"`(=\l@@EUhs@@{K%@ ҐVȪhjгpsrrtZ$54dR5 m&WM~+&{W<ܕ55TYpIѼV^]-]J@XY=<)W .^`-[Xa͉U l/WȬ@ y[IWڻl,AdW;qqS`acymaA+<T)p{,@Ȭ! Ag#{?)O;׿[Ot]qY@̭fo߹V 3; '?ceڿg͟#U4\]\\@tG{l{I;I-lVn޶y1V#X: U>._j߈ |:dg_C9rX_#FvByn|VkD:`G;?LOf>Ph[BӇ`Zn5k^w_Aon*+@a8q:3LN5MZzq,uIay2ڲUq\߻ı&p~}eSMVڂr` cO7A`Le>![(`8*3wLw#WZ}{m-hF{j0S;UHc] QHͬ*ĕ:'D$4=5/mQMN7}G?p(N~ Z%y aR;cQs vXzDaSioVy~I.s}e}Y?+tt:iҸll b{zTZG̯TI=!'rҲxp }(^ۜgK<qEV)ۓBFiDP3?Qpz r6S[H2Ʊ{BKBKK=·*OUڡO >Vfq6E78'\Hl**XM'XH>>åP}X"uQ  &V@Qނ$Rf;WyУWb= AoTN\@g5/]lFe2<="H[Ѣjfw۬})醴$;(LiRR2[B@*}~I8+1Y^oWidP(?HyrEo'+ji$O.ODCA1g|Ҳaݏh4:O)2~ ޱ ,+Ear8Di,%<u@JkþǷZL&IFo`:t#]^vN\N ?|mCo_1U~NJڝvv6> kct6 :Tub0V>ׄ)1¡$}j~mTn|rYYql!v娇UDKǰbpG Ƴp> {U =1*KfOnzXE6SkTn).%ٻ ܋BJ߹_8 7N_H旀]_*!fJm2/ꭹdʇz1PT:JPXu;?Х>>t U,9?Hp<M4&*v.ʽM7fe!1L@L ̓Cip]Gq5-(?9$hsK/3ͤpb& r>3(/*Hxsf[zP;#N (cj[d+ofśnQ<3!$7V%|ͬiOdүဋٱ]&Bu4C(4VSBc5GN7~PTw /_$5, |XV_BO,/)NO;F!vJFkzP-5|2D][{ ~6y-LAfVɸ\d،ViTLOSF1۩OR{J-'O˿ከa\y#ϼ deG_tqy()uM4F+q{zڡcCjT,\xwF71Ǵ5_ q;Z~ =}yR)S‚:J?y/R zTTݯ Oxb4JRorLZ<`&$\hs;G,/cֺ4e n\UW'E2߾qdZ9T9k?C j+?Ə#QJb>aρS fUFm=f@6ƴ`"kt13:!AJsji \EewP9%=Iyp /A-w+"&ܲym?8xS~aԶ rSAYٝ{ ;Kn8-~BOk8:tdž8m ]gGհstEv^GB7+EOH J r2g;.]{q\S؜Ct< waE&bNVXUyDxUBw89fX%y_& Wҿ@?tyÔNh`Jʁo(7Nh6 |;S&mB9~32 v#&.:#&2}Qb誈~ ͥ㒩~XnUbJU`1.HH::4dͦĚMf{l֋ ɞB:P#GO[&J۟c#g l&s&mL!ExcH8Eɔq3<9 TPcA3*<ĭ] K(i*;zEp)OQ $52/ȖiP8R`<<1Kr߲ R BFX8jg$@tj6"d8iO=sV-5$<\~M[֪I|]R˜sgZ^0f*c;4K;( Z %龻 ^:'Xߋ_ˇ(dwkBXS4s<Փì;ҦYZ; XRF B2VgN>Fiv dE㜱r_Eg$EEջQ&ӟDӊd8At(㤨$), \.9jZGinq [i:D2~u&giW~'aRm޿)<,Ҕ{WzY@‘܇{oVjQ<@zu6Uے6>pY bF`&k:)hه3jok\= mxmzw{qD$o\* jͫ9J@ːߑ<9(uZ:_>-~"A&Mq7Uw:vg^}G-&]^D7Z8V6 ij<MdG)=a;r*2)K0t$uTlRG*8#7"?:e[8|\GnZa׷'=4\[sf>?k~O\( t)֤=8Ky|< S6ӵtwKƘ~熜trBPR 4z$~#eM)U]ݓ̈́#wҎʏ }rtğ׺ zs0aH7ڹ6i/=UG /Qڟut;#28Dx{x}uףWJ|i~Py E%T:vԞt1vg2P''8-1 *+H @n+M(}.M <ۀJιMr#uNN]3._A< ["30_Ƈ [E`nqH}:&6ɘpTN6k#%s->x| ژǩo#ܟ^I`xUa 5X`695 sI|vle@z1H7W(~#U}ōѯBYDy7oaxrϯJ@A#·,g\vw܊ y`u"|*:Nezog}"*)7;_5-H&I} 6u~-wtKb*)SXZE@@F)S f;Zy)Qlr P79C?.Y4 Ѻ`&admr0=ЇpuTVANjYrTvq"2p^ &\]nCYóCҕ3"GrFz|ƏMu K>kc\Oca:+8|~T^CxwM?N5:XHS*vw;ѩ Ө҄TQ,gcO:}0y!cDJ!i0*iJakr)mO~x~Vr%V- X7ÙpmN܍Bޠ`]Nw5̸=Pfjrs#JP 1e f~/,~kY6_q**Cu (ޓ糍\.j,+r6}E%5M&au* /wH*ӺX! -v.̼~ܼQFG=OJh^5ʓ)j A]R&lG{ 6,2E"f&e[9Krȱ yT8}Iy"Y"b3k"99_fSG k‡ а;WA l8GRW<߼ɾX3x퓜ʅB=?Κ5 r=󂚲jtImQF͌P$,W.JHp=mSzՑ٥76ISZS?D<ڣۙ9<6_D"[aW}ջ8 tZ7_o>)GuG`x_&ܞ 0;o+e<%=M8Ѭq+ Ӥ/zd;& O KѥÕj,t[Ѧ `c6^ )K)s!| # a!*6+_1/,BϪV猸FX^8"!-kn000DE>o<٠ 3slT=;foLOhiqJ1GfF 3 sȨ_yFÍ.IE טų|(+jW$FSGwZ4p %Nsu]~p!A$eYѭL2*_v1E HeG hS6k*̚{Uj`Թ.էI)27#>wE?Lcq!˽;_ܲUnY3Mɖٔտ7 :F)ok,^Y*O-z, 7ŏAv[)dH/hQWJ]S yf@n4E6 ~|6rI %'TocgܱAoq1].jtjU4a 1PlJp3wwȜw\`+N `VJ,-.^~3A§^@E90Ѩd^qx\5Zw:ʜ^=JYqdҸ]P-]p@Le:7bo:X<0dXc}|={#jKIEbכ'@bP$_5sÜ1.I@P"n(6 /S ]Hh//ɛGd"1`>Ĺvƅ!0W8.oQ"Trdt|fք]AzBTײ_.>?+R4=X:4+F6 DPy4 |n2!u0+W$7GHE!J!d{N}EyMbLPlK=fm{RܣYgG?f&MVd OC @{vsOM]}b%uo8nSm1VB0'gs&<"R8OV3:U}6Ʃ{ʓEfm&ndk/ 8̜\bQɍ)pgӃw/IekyQp]/b75]iw9uj8Ԯ28٭9ÑtJ=K\Vo} ໾g|pvkj~mUP\S?gvB>7J.1^KKBX 90ʉB 8AXgVhϷ@Y{uuMNIyo"nk /ԥQYv:HRa1K4ح3Ja?s+.v1R-t $d:ԡO%ꋚ|YnXLV 4P]&2@3Pdfwykދ v1M9a6_Nx^o{[r#_P΅y 7 ö_%M=p#˴K?as'y6]tmkfnӝ\C0tu꼻T# lƓj͛Ji= b:&:].fz`~w's;u,|mz-h@jَ PC^&U7kzL8wT煬=KeHj 0׈?%"h#79]ebwZ)@^Eb}Y)+Wzoi?\|L.}]Lz1Rhsӑ A[W όRe>g^9깫*5f\O'?Um*3szIzǁHlx? 'M@nAO˞ףzՍW@P\M;ةRq}6aXIS74ӆ`{rуXħtŅF< r hx$Az=1)-^=Zx=qҵV˦s@Eﺘ#kŖ'B.EjuxISǹvr=ލßDx>E17@N~HcxUBлKHm22Q>¸V5c6p +(YIL~P30"YE?+1HOV3 1>fފ/B #V%Pv9Y1Iݐ;rpQ` KY^pnf*}*2je#BC%g夅`B_ gRiA_Tć緙Mjc&`ngߪ7=;+ =7#h]#?,#IrV=Dt]"WykHEfi 4m8̺Ѳi^qAAwG3MP=|p2^QѠp}3v'ۙ ѠPceъQY)F5,Umu R#X csf=`c~4 rc4讙jČ߁!X|pn 5j,ߧ`zM ockE0 .YH:ݶ 2ÑɲnҜY~ퟰʷaR'J/-]U,>^r=Naq3!ȬG+:G6rɰnV*nl4';vTs>@_K̑ԗXUv{`nQ@睓`hg6 <^0ct8Srp wx]:D6ĒrfbP9kE$WgGqz}nϪa Ң|T d-&oHٰc`OXgg1Q&x60 (T)eZ).aWMa͗}v9Sےǂ_dU UPhb\WvGvۑwHw%6=K&z3fDĕcOu1X'm#v~vaD8<}&q8dB%|' &>J._v9ŒM ,92s:fcP!͖&PD͘c(b%qw9Y~QB&S7>qS?y;\5ƛ!)=ix֬#8(#Hew ?Ch7h.*)+@j>zQ$w)o 3V̯Sx"j%oQ`F=B t+c!7kLqqB;UE |h[Vi"0ay5Br[. ҄J,e2SOzsz&;C), ptJN\+{b)n˪gbyޖnjp#߾]֪E-wa>_Ϻ(nIz}SnL|0^ğ> stream xڴeT\ 5'xB))'{pw9>ݣo0K^VU ʴ&vF@1;[-#@FVV@4s6t010 ; Av" d7x``'mJ@2Tq2(  vN Z#Cw5H"lghafO?Bt)Cc+;'+ @N g.P֦;S P, WWUP{loo?\UTi"r* @\UY_;3ʻOw?**  tt?3ڻ_  == ь/~*N;G+#WamM 2Ok2@[''16|wz{!@bZmp-_2 2C [drv%{MvvtCU ٽ?v6up90agd$DUheϖV:t W_ p8,!5yg|"u9?551g{zU[ g%3 jlN'_GG^O{;{d9:==w00]g(ZZ5vM@AG.1gkk9C /ZXXSM!ghch: '1 W"-5@IBϲYOes,{Xc+[/0AŔd5 `h> L75Az:[;л  0sev&߈@// b`+ ) Uq q[o׿ z?;?ww𤋮9mGv|'r {ܵ֔_V9Y-La"krpfx1wo Hu-$dAe|o>122{߷~t/sX&5xMBrҝciH@-N|"6Hpz%j`ZWL6Q6ARSK])$<,bNki sw=D0^%锶@blpFs]@ҁ0z{ 7\1 `Ӆ^Fu.Jశzԁ M[j& ӁrI!)2x<&ߩ7WrR<ujᑓʲ_rA WRZY+/ w( :-XQc,~@Fsu a64p Iii>B'Y(.-56PKAˌoЪf]>VQ]* *KuLDJq+sl{XMf ]@Y3U*>CU#u6dF\ )P(~ % a%mluKTL:4W-9HE @N@y9!9"iw4R?\oX_Ŕ\V8jd-IcZi΅;_Pq;6C]eP5FML#hC C@/qF\r8:Uؠ#2e F[ڢrc٘ItWyX<Uf©:2;c%2 Ŭ؜UwjY~f%ַΪ>]8'fo+bSJʩS3I[76ӓ!(z8R{ 5j( ɚYNQ090ɞ&MuL]nYv(q@\ֶϐ!0Kk-׳89 #@mR?r!|>sh {1g_I< _q`lB[a9z6J[nY{_u2pK4Z #ԠLutc>YErb r8{J c\!AU5;UExוmޣ(aɡ_K Ǎrd Sped7 .#] =ѕУ!|/#"8(ئRYJG㏢6 ~ET~aYETFDUb #CLcBkOҨS~uYGҴEI3 xIz3Xomp=Y5d-#(^0A5Vm2bpC(wFv%&|Ӌ7(v>_-Dn O~.kQڞES󙕽_+Fk /Alӛ:`- m&ضR;b_5U Ѿ~}F&ˑx?ܑ,ׄ.K/&0< MmV,vUIE{r}{d룮.TCu1} Zز(ʌE;Pra4q-烻斴Mԑ~5N A/DCp ׃f~Fו<ZH4jJY=yYDỜכҖ˄˾v_I&w\M| Ύ_b:VUZW/_l@HދDj+kLa",떆qߏ KVƍ ,r z ;x㪬XyKfDˤv{$oLS E_ء D > q >Wk/GxBCj>8:H[zD¢NٵEn6ek֦h!km35.ېc8b==CU_iT?`.upHq؝_3%``ު:BF,Z*U4JtV(k3wt6Pi .WMЀ$Y&)degQpTR+I9rX{zڹvD ,T"3C :c!d G9EVC$WCefLS|ѓ}> /Fxb;T 0JعYuXLlw!jxʵDex;-M \Ɂ:9:=n&~aNHSEǭF[U'R$ϦXs+m,(W1$~LQaQGpMޖM2W{ʡS\'+p3<:ڢp <~ГݮS~;UuE>`-/[v#-KYy=fB9>Zq׸O g7ʹgv2Ѭ[CQ]w:,5ݹ%mThu|y2}K{N@2SHeU.*~ (GFxӵ D0"یlM즈l?g݈l;+-bMO(Pg\Afz>ccE>L]ۤ`ed/:g !מw]#ac[ * DvX[_kIռq.B!`V}!2.dxcsT+)j<-k`7rT2 qv$AQihpƜLJzqt|ҦA/<rjV1:%D[x7 {6-!&\AqļE8ٯ!5?N~&Rf'NζšepBv́J2zaqO>ͻl{gdjUl}Lke^Z)KkO~B7ϙz qD:ǻ]!t)ڽ57 K 6 7_u%բ!yc堤Y˙Ḁjy&2fO[CjG11O*Vu--1»u鎧ylGjJ:2@|ǖ{Z:LB/Kw1oV3 q@ 9?QwHO-VAQO2XȪ,joZ"~7WGCP,#c bvHLF2_JF6z_ɾy7kK([ڱx:{G߽cΜᖤN{Q/J==6N1?/PvҪۿB!ByT<8Q7QXgǙhm:]kr} BK1_FQZЮ%n=L$Ya3YHwV~ E CWeڶĬszTV-›^XFJSZ:a]Y"ϓy'bz\"W6ـ&yl$9O&ѢnxCRx9>cPi`pmlW$Ň*ut5D'(8$ {6xM,$ Ѿq]wq"t`Ղ1\;0̵(+󉎮bYiWz7iz3U";`!|,fǃxc`^!'}‡>l`1!E + p٘YӆiWc]3B2Xƅkx澦eДx Xz@DzIV!ro9f\qh.)hv ލٷg^yQ[uɫDջ>XGRo)dЖzdאꂣKB̷Jg q{Zi,q͈߭nx|ӣjD}.k**gu!)oC~ ,6 5(AkJ~#o,S"1r˾˄=kVx9#^B@yPcb~ ' 9>ـ8- 3Ӎ_Ą%Vq'&=yMBdaҬfĐz`n~Yky+Z83_H@}Hл@h&INK'K*Tl쳳=hoBQu=T(rֻ["f^]yEV߂sҕyN.i͙/qk5#0Q8ւ8TOوg~]8k]7 w6߮d!L-v8 YNW͘9ū`nYOR&ڗ3uJ~6gC/[  Շ8@GW}s6FA?2)Km 7 CM,HWn~ [OH֎0`QDUQvR* ͘^ Rs׆h7^y0'd<E]30I ObqR=˪l^j2>C؂lCgG5vkN;|Ba5*2RWJ=uԇO~xZT3̱8`ԳOdZ5V7 .=(+~ݭ:)n̡DVPT*P U#n@2>wop&e7z{ "뒷L(wBO  _ J]zbj)Y;6 /$dO6ɺ%Gr`VX?pxA1a|!*eLQV_-A~ hXɥSQS[Cm5vCՠ;/HQL7jMtR݌Kv2Lf¸ ¯#b}l@!$75,&JYqd(pk?z?Q%F qR`"֜,;ybJ Ku`f%/=a#pl4apJ\OEd Et^aQq3M V-<ɦ<ɏp]XS lr/"s+;imK ,o铦A&h,JYX:miVpu'؝u\ڢf d$xz9#":N6OJI4٭9_n}Cu |1!'aGx~,ctÆ[m,5G^*rsEڎi: R链y|6c@X@d;g'Ue}@i,$!:Kj .n#$#p~Duy$pNm6IL:JJ^y,Yk<ɮ1 -6ejoB .pZb-] T~.HEťLz,.5 gz ^3tYwHDDKBV@VvK]t[ov/hP’]YHdGGV;f~]B֞: UE\J= 艐zͷEO r%ϛ$H,=S?IINhȁH F8JtKf$HMC:< &[媊g8Ά="5 Qi`~:-fLmg48ib/7Ge[(l )#Oè]GsBopbە#(e+iמ/o_V |-|F&+5iL&opNx+MKON1o>mŝ& 1PX'ڃd,l‛"ܯK*$b;**d,dtS]lB|=x&nrTV= QiaVp_GK8KcOJO̳GlyL^2+gD7 "2x| Cdq? 0-n`&B5?*dA6 jSl.%{js6η>wUi,)m,i _ 3XYlZhIɆU*l#Zދ~sgȣ9NlR);kME:c^sܗZM/G (q j+]1*{ivBii"'7; ;X_ (BͶY<VC= \ռzE0VrיC%Ů-%ÇWlͤUXaQc z0ÆsXE^RSe[_ISnz:*waP`U;/p3 \+_ t:A RV ST+֭TB!6.sdг ӀIZBoJqTSig,3ݘ5/1"k7عNYzXS U&4rcv?yM4\ÝMNw;xH !Aq۽:._QeS#_8lQ̥jHaGnrqwT";FqA(ADgCş%h݉)^2y^Ç1ګN+ EA3qB0 Aw2]6`--ÁUv8Q^N]$;<I<ǚ ,`z(H-͏]Kyi{3wlD/F/ζ}fhY4(?\ Dp’Z \+'JJǯYWALVc3^oOө7ך&>Uvy I^ %)t8zo%h|w )9E`r_[t 0UN0ȷ%&?M Wy8jbeAM&7ë]kr^5p b]V T_ɠSoaHZߙLBkQJؤ.n"^4aSPٽt|jQPHז&#,!b43I~g %4*b:sGg]o ))d&C=US⽎lgdݡ QFd9px4uIM`E,oCa4Yn4M q,a^a6w ZogW# åtkiu8Y娴,&]drXk|?g)g q0BZ 鎵4d%6˱Rg/ 5bgD ͯb# jFoA ZD_G+;y틯PiFHTBkԷ>#=!]sXU#Ÿ&8S;;Za*B`e8*OFQ-,#?.fA iI q:nn[ ƷM=4Mݾ8Q(b|_nS/(j@⇢תN'+Ob"G?9ݻJ.EX!{TՈ azK,Bd&mmWRR$D?k lo5+ND#1Pz"zo,uxGW "-nk8u (xZ~5*tL2ޙ{ ^ oxmk Hyb N7JXG*Cʞ_U#k3+\n_ڭUZ ԗeOnfY7}"Q=xh&=c/]!7 ~0$ٞ_(xm޽hv9;4Z5/sgBsDX!KVu砮MpBI,.I17-QK>nсyYBI놵 %Q_֥ &9fa7l1sZxyYӝP6;%cI 2 &(v)]70 tAR` @}== d4Vf-l'>U9}7𬠉urN06LQ@,~>5T.R{ ٣kؖ$ 419~e)晁0OyWʙ=&K2 E2N0rby kB8֕&",>kD6.JWeHcoO:RO* }lRGGo.W(2nƒBg#oҫ mP2b|$-]I-}pOQU؋g(l@ k^8bl0wHmʊ%Xu⿺1w'<)80.- 7y߈BS8lzf퍉 xˣB@}|Qlvz0#on ^(s|?PF h0\R@ԨqC> sFɂbeBQmcgg9Ò9gz<~pPۋױ12sKA+f`OBnSR6HyX=d&CׄNWͭ/d!J`%e?f>i!7F5<&^Yg _%uӁV'|#8 %g ԍ8VzЕtQv.j ZfФj*p 31)/K*GX \(D >Joc? s~+mhEA$QU iMe-ZC"@˘6-s<> dLUyIr4n6ڙciPq]5~B"DqYVG>+>Ky5:D^ `xQOb^`k/o${z@ ¸xT|>_T7H+z8/4أ_|?agq6ՌrQ,tjn&"7U!ܘ4heqghd9W#orn^̀Hx&yܺ"Zs˗Z",?^Gffx}<.7VmVX ͉nČp#XdUoNzqD$߿͖sNߒ\2~AV}yyC =K9Y܀=R>Y ^MOhlO&KRW;AtetEpuP?n˧El PHhCk.V]xV: l~1A? L^kHQEɖe4⊍3 &zR%6c]k8S{~QRz HNCxW٨̤G^ c/0_աK֒gLR*;}$W5bGzC ߌʺq˷R4w<~?4SioЄ,5u9Ţ ͻ";k-)YBs,Nȴ- \_3ӅTrPɠΠ'~5g211lxz==x>O Yg}pa2N2L3,N&8R?~P_;?}f\,AAL @ >m1 ڑ-/ Ă@Aӈ9 gQ.pLn7z:;VOBeKK.ӆXI$,9m,l; ag l&L_54$d/f]0tTt 1UMH4Z+<T *1-iX>?ڴذ!d ƒ,a|Dy'fF/SהH :;t) `~&#!œ8FALj"Ik9뇭Et^Ї /Gl M>VURyų6S: {e`G*>-UWU\5qL4n[bhe'BuTo-I=@&EW:0:{ݼ .s[FXI@ώƨ@+RfPU=֓Բ7ߧ6F'{E8#Pg8LHhcܣ袔ǿv/Ԭc'r#<>`_לy ˥HiwCNA8e6\k$];@E]#ả<`T?GzvȤAbs @ah=æxz8✃dT{ՄkCcP9FlhFe3H4 xyҐ Tἂ {DMXrCYUSO> ?{6*&_DYn^n ix3-xʶf?2X#^d}OpQnK,T_6|<ǮS㶂Ny6%?'#z7T>EW> ݘm3n} _o63(CKHR&ke׶ E+jC&X/!=óOxJa_'S`.a7[8\?6rzrJHJkF=}O7b'qwO~4R]%yzW| b,f,=&c7i&Ų> 1zޑt=f_OxF6ǥf=hNHʊl~\KShJܩ/Ƴjȶnx+?Mnl&da01U-@@J$@oDP ViBx wh@ ͮ/72 &RA>ᇪ!„͡@핰ߧVEQ #Y3{|FlQ_9g KF~ٶs͐ޢ5wN~9✤'gR7[*N\xLox2JBh][kw;U2өc,7e`1}p)ėvXC.ZLj`FRm &Cbw+e"I\s;E _oV c"`[/Ѿ"[KBl kΤ )QSavyu7W1|EHtq$w4Crx YP{/}1\-%4c2Hr`I5Hg,cqR|u);WqPJmhPI.būA%%V%Gu+܍q5 C:!cL UL<$!}ɟn-U‹('eհRtW-o?{NqD3- J%լ-AɎhц"8 P%Rf9mWX0fǶm۶m۶m''V۶mv22tbZqa8 DL쪙mMM^+$[ \n~Xy0*- ,կ!|Ss qyp}ll@|̧t`Ķ#"mV1 6c&M.~Yµ^(Ӏ~b'7#d;8Ym/°id=g5ݒiay` ّFAQB3feǏKO\?M UpZ$gU`Vy6%RIקzLRt^/C L7{ps+|W!:6!DN{A⇢2dO k 5MyYLi9QO=aBrYTuGXg3 ka]V-Z6phgӫK%"G ^ ajHw8n\4Ά5CLC"; |(#A0:g F 3GJ飋Vs^j  Q^U "ŠB;+vo\IgcK8R֔SoAb{?Sv 4l61I.-5]`:r⥁")\$^5c)u SP`n3tz=c[ 36VDq)_vY[D:P,͕r'K]x{?Mӳ"#tC=S@hj* [+i{r+ qe_䂮y n9W4˛Y19לׁ3V8C,y[ &SץNkq;ws>rJ2H+2q\ ĔVd'w7^jO1 F2CzuLɅ۝Riu!ye:M=\r05Oe BC *-rQ6eLEs~E ƂИvEm.jL}ˍg? :Pmd#<~.ЂT/$߈13=`'ϫ2Nukxf Ub tAq%3>q`fVL@<X>+]fЫ>@2 lg'P tc/{RDŽG\ryw\p7H;ֹYD)W0Ԣƅ["PX0}gHDf~D ( 40&h\*Ys!]\Wƭ$hCajOg\crS HlUSmo?գ8_*vsӹcj tSrO\!^`YTlWnKJi~!8};+!ܱb Y+l$Bܤ C@(ghvvg#4?6?V#>G+ty[PrEJ D,E08 B8`}bMmw"$ʘx=ӥ AΣE&G/xX38$HT$J%;*De% k|LnaeVR7>F> ! 9ɐ8M公*­gx~E*rfΚ0)E`_] %FyUCLS7 |wd9C:RSgٓ }ti^wE-#*UV fb֐F+Rjeaer;Dt .͖Ҝ(S%A$E*\p>!> *)L?IP`3q9ϱ =̀Bf'yZ ʓR५O!W|˓|&Q )<$W[`h}Ez P7 "w"}/=}VeBK(y.ގ\UdC[Ulyo,"X a}f{!&B'KB 5:|z)gwT:Aw>"/ /3Wa ƚ(wS+I-0<}I[ol[ ͱ0S͞SmI#JRBiBR3)CXʓeH s:]#מ 9ce[ѐ=+8)Bl& jVuCt+4Vܵ_\|Xxӥ*‡+=VˬLh^_8&65NpˀA5)k(FMHތK|Bq Ų7N}Kәb415$zgʖϕ$Sn{$?D(]X <& ɀDU69˃ BuN~㓅upO_O7[ל护*Insw4 KjGA#v3nV Tb{~\JrU$(K& Ñt`' [".u ,ċ1sqc/$WR/8딢oLfoXp3+33{T.,(rGl!ij 5qڷ؛DuruQ m^?Z3coٚv5<KЈH Ls q'"0ʘtwE"-~ bpG eex8!k.k.ͱ )YM'ݧ,2Ic%,jMB`2 d[(`)uǡ@3Wȼ?#@-I 'aӷ#/T@ _|yj >L2hʵ }o\a+HLe YK21}@Z<)τ탢:`P[Mk˕&| 0 ֬rq_Z 3Mr< BP [Mԉۺf44mT ԶKų$Qh @TdQx*IzEg:sh^I?9x0/]qxJaYf[f-h`RF4WGZ)ixUގ S/$: b0 VzLѲʕVm=s}ޥ;|Lx~b\*Ι83g-}hSxC:Im?ĥj Yʴ0,Hg-^& ґglW.~Taz/ٟpT1*L:Ǩ|gϪprF?2i;97E/ OB &ٖXc5hrü+@Uoؒ1|`@$#˧$AQ-yƩ⠨iܥ`e.)W]%EqBթsVBD%.!3|b^6;+rGnqU%7ckZnh:C\wL<&_s*9a'2&O[#aA_f0Uz@%23\Ebp(CŘOIk>d"{C ;Eyw:ld rDL-PI/ZuXά6bHSJ ZLU00>}lY$bfACFSXAGr_9-)3Lf# n[bt8ZHp @ [D#yaV. v!/4/s{>q7-E^YRifja|1~:S^-ڂIWgvF0B)5$3KD P/.`"{wQחw~||DqpgN[['4Vd^d\V~<^㻌GMhPmynLz-7 [z^o"> m)ۯ\NO5k|@CV\E5 ZLKы\PJ~VM|~1|+tVh0mvGù+ԽM[H'|8q{VpCG2]Pv@T2e4i6lĀT $7RF6(È|.i"R7BMTM+_f+M`&&K 1rJk*6bpayŵ/3ǵSrRGl&{ѱbUy "dkz4ol%/KIMtfDŘVF@>Gq!)VaӸ3:pѰ~Ph>d C?i<St XMr QAٻP٘IƮ^"}_>7`/"Ut'=كh;< fY}Xثٗ+MWIm"7X^zh;$°#ZL{8+#IL?ݔGZU2.xsE9LXi&XbZPIu6Ἁ/(Sk,q;\w*@MZhO+F=E%[!RˡfZp`|$~ r 6Y=$%ƄQ@veͻAgLhّah:6"|d,&}kGU֛_Gw-D[5 ;v^S2Th5@h7ic3_f3+"T9])mF-i忦c˵T"fB`;l0 ]2N *DIC$O$J!a*YOh9}¡o)=L|qN9Si$ݶ)ӚaڡQafB 3edsxf#4qtÆƮ=l~ei5X]ʃBޓUXޤ׶j^WX_yaaߩO#&bK?bp;ˌ}V-7}z&ЅjS,EjݮIbvTKGq~p8~T#6/Dm%0$K3KifyI{A8 <Ʉ$0 Rϻ cQy ۟ܒf&1چG˂eϼ@?3<1@ HϺ/X":{(wdKvv_svljAո P'Ćog_A6ָ'DO9u5o4G[Oi JRjw1]+Dۃ ^d3L"?r;7Ii.?|&dl #B n4ӈ#uE1iJ)1B7HRP|mr'br5 h#NנM^bS6?ym"m$W1Z>RE!H\/MTpG%~^3;),@56Z!ܦ@E4 եvVa%8ŗvADDŘVDB@͑T(΍zS'} R륗RNn,W7 +rtJJ%.wыPZ "8.#`!n~ɷ*Į5i$kΌP 5e5 * Ejͺ%LLN.4K̺{zr=F( M 4X) ~Cb20ezTUO]H/h!wFIl=,%9tf*l/ W(/AB4!K~EYZY؛B:9n4T֕ vlRP 5^T6G͋=I$HAւXp`' T%CES;`u7r(֌F& 5Tܚ2Jx5Xn+fzZ7&^g|}%-Ew8$NaT3B=ylȪk\9/7T= |oҧ>2W;L\`xCuWO.GYNul^z?B*r4v}(^͡ 2w WoU&t }0 xJ trɽoªPcXk&iZk_^lnJ*j.1JMMPTIbTPwxW^f6Q:Y0[6nCpd'f}r}xJJU-޻"F gY+J样$HoSU m+7ϱ1 _c3kI*zJ}NN𮕎 j7V*QhK 4ZPF_yDoSd4$0nCߠ G|"uZOYn7?"\eŜ>?!>w\ D  : 2^/c*$ <އTlN"IBd_v-ct,TB$[| mfD$B$ <ٍbk5e ʠC qhz eY Όi| Йl.vsЙOb"CY2a?)'olF`܇b5jzbsr +dZ1n&43D5/??,l8_EƝV$dרRrʕ7fs#ΌZ+նcXV?f~ VŰ/nc2.Î=) _WJ||ϗTuf`U/BL6`qX+gs MKs`rZ򊫻f̃r8:Dsp֊l}B+I]twg wWzH*y@X C͔c$Gv, ]bG坚o(%&dŨ }'išY'y5_k}\G8&rdd ;|]EeCqh6+2[u.*K-,6vAZ5Ի7nWn8W1s.c+.П3PC@9G_& ,/ε )2ԇ2`x@)b/)V4h#z7'lQWVZ"Y؂O)e]7BE~ޣwB6;Ҵ%t?:e*GfB {R(]8eI9d(*P,̳%F6z}Fs"y=O5xr1ӎL%qϞa!ѵxYx%R9vNX4o'{#pqJH9 hdRdvb-ri!MW?dC7oJ3Vw>eoAYg1Ny=i39F9鵀YZhi{HeiS uU]|xK$NM}`kCSWtGzgcb}cN{z1dFD7ϥ2I6n~{6@7\q=dfwT?$~hh <1Oy.iHk? ]1bȭIHrR"ORi0P !!EgFONyKt !>".ыڲPֿ;@R3k~R]_ւ!nҩ֌(Varj-di͉, 1J?p/Ece_^jƊTl<"]W2s{ϝIPo\MK#&jVl_:/~#CTMGi@=S [$@69~OE$Bi}k,C ZeုZO씯iP+ 810e>&D[j6Fܧ7l̨t} D4VIH8A}> 4"WE'#!?@Q{ʰ)Iw1cMn$pm~0$^}AqH7-cԱO 2L}Ի:^Oy<"2KbSZ.* G'o[@ı=oq9CZ;^u;1CC@8";-˓6$C[)&>*rՁo!=a=qٯ (Sq=8lX^*,Ve2A<~1[r1KSäE};Ɓ E'qvX]h^ЄG+ohtwh^ &IBD,h8K^!5KZ[{G,9b_͊,¸T\9Dǟ&lnƍObr;I%[elMA!U j S/APUb %GDeg) KQ}(݄ (T鹗2b ]TEF?#ݥ> stream xڵeX\[5SKpP;  .!pާO=%5昳VH֙ ubceRX̬TT q6(;g!P>lAA@ ThvNLF@0D^"nghafӟNŘ@c+;7'+  ˬ Ps{wZhlF s)hI>*i(17Vss,j&#ࣆWu;~3F{Ϝ? ʒl,p9:Y_بߑ^jhg=? 3_-nvVwG5/b\lMt6Ϣ-AN?ERvmީ|/z;/w";s_3hk tvq| wqt3C_!/bvWgtں8y7yvNNNwL-A;Y3 ۿ| 2RjL³eR{gǖ?D%6>NH%mMllQ;!O'g;Gk+[;7[751ü= HF]@Vr76g3/qqeog0Z;|,LAo^N@Wx&B,u5~GHJKMl=& SE;wAk"Dߔw?2+VZE;G,,A&_}Q[3ku~X9Ll{- w蝆qYQ%EU$mL,l\#]\\/wMR `0sD\?,>Z,v?ES-66&fG-1M3,Ɇ/CjΎvVO&_tvpe}W)ۻO1 obbv^L&wqrAXu@ cE;c`˴oˠO*pdV2wImZ}Sl_[+oLTDv (_45˺~~).jKh#hut?İO_땵C}gkrp_F#$\  ]\3. cۍ Ui ';.:*X\]= jx͍({>Xe1uuI jtԧ 9$bZ3Etaۈ˥VZbvw(``oe"bP.n@ 4e#r&8fzd>Vm#ƍ0ut^n8~gdVd>Ѧ(1ZboȦC8T.(}Rni Kz.K~`unp`ӮRԄDI~jY) Ʒ"P;4: pUjɞJw\^˫jÿi@P(5SǸL+,^  ~Д`#YL"RJ^IXB4(.xf K"p+c)4Ƌ փEN'4ovJד`wp.¹ܞ;6S"2 >(Ю ']kߔBYJٯn좦+Q w' m<}o I[{E!k̅6%1 pp<U,8pɠz}` h$e,pxR,^DqO*| vʓ_(]XEDV<(j% 22uYK I+ ~pV66#ƗO]`A4ǻEKhl=:/` RZ;(s ]_Ͻ~21G>V{xdPs%9f ٧H׆PϷ|v~hɨ".z\[ٍ#ђP:IJ͛58]w˩cBkӝ3$Þ[7,':Q aQPd}>9atCAnS'yGD> 1‰nڔ ePR,𷲿nD?go*z1*dħ:g Ww#=`%[ODN-]~ڲ's@xшbL捫PiF8 %Nlr _ٜQqs`MySsP G}ܶ9 O>S7!r#꽷0g =\k][FkYI8}}8xq޶QIWU{v.5z`,ɥY8| be7Ղu(D a"-E:]ùi?^|vԔbhlkJWL*{+k,JgD\@/|6g ]b=ZљؘcK=\yU,xvjILKT<#W`$Rsm3F06(^#^A_RR(Ӌ U8?Ya9@g5S-PE"? 22gKAVFfnP sJ7pך1l&}!σGz%B &Vݰ2L~ҌDBI?#R;w yrj>l\ w՘%֯!8ѡ;m-%rZ:k4E# [F_c2glh^Hh&ܘ/ІB]{:StoǩŒΐ!f?,q Pir"iwX/%;We_Esy̞ &2G~:^$7GeFa#r#]soX[,5`4m4Iy! Џ]5ū}Z+!kZu7eR7κakt5w<˗mh*V?OPyeJ. /ڨ G"<2·iwf>w$́oSD7"a>2O 5i4/T.ORG. ݿDe37 oV֕M=\@$U)v_*PG.NyNyRqH&:`#c"67u'\ 3_-sˑȳWzKP51)l ;-nԆ J2 VYg5P)SL|cI"lަR{lTJKN,;,3vۻҼD19 /=ۙ@O ϒ%7"Aa\ p56(6ɴu{D┧y]n1Umx5fJ灋N닲͗o2DjipbL›BDn |[WsTyk]) t CuU6PEu&j.Tpp6 h[$lpҢ] [3Y UWHuWr?i f=ݘ렋tdkjB"A$̫V~?^D4໙ C۽^$1pgv;AC3꤫B J`;qL evXhUi :ayU*Mo:S@::lnCZ|d~଺7Ƃ0ëgmMj;OFcr.!-V6~˿jm$ 5)Yvݤsj:?<$=_A1(ʋ{CY]]Z??12LV2 fo`x;v6Hׯ_{;,>=Ul5O>:$،2A0M:g14~H_s684i+HQj4N =R0_}&ОuM*`=g*|jmy+vO4g6rRN29ܸU+`8Ehp7IsʋhuAik~08m>e.JE`GuWAZnh^"<}eOopLPPUG'&rl!qxc0}h&~pfB5 LbI. n4[aM~KBc_oDZF]#'$'*cxt +DMԟ #l . LኻD^^8{D~b> !twOUvY/KP6I%XY(H8`SN[خ(jfr>0[a|ea:*:NL!Lq s2Q&h5bej#fPѓ $#<Vo˭a@T䯉O#l~iqH= Tup61V.LP\ہbuFnB PuxAZy8ϱU\ިO=?7 1cn/ЅXs 076"TmXyLYSr_c<kx6NnwFŜYāNBˇ [%Ú u  l:0 'e"ra_)dzީ3%>FS'{"UJ2북x5/˂2.tX74.9Ƶù}C\})ƉR(eNNX֭VolsSBu EY;.Xl(Ns3aIGfCtuj=$K$^ Fwpz) bb*d`'hU[lO`Rm\h'F]8Wn->5g^,;j@Ke]/7ZUf J?>hTq_>Ptü?nu7m=*7]O`)h5)A#oZb? ,r/FV:13$ĉ?qIvZڏr+򡐰cgڇ=]O 9`2}7wx/C:h'mјSu81X?mvc1R|m/< c+~Ge~HT7K^B;z<`H'GZ(ɮVu{zE!V3zGVoq'B m!j0AZe2&[Qh-|" ǢΪ뾷WԤ|XXCkgEqW2jbƄf=lS1e fA$N-ౙg?SZ;l#yy|ZB^Ѹ ugĕڮlҤD^J U)/·a왆lѝ/rHvG^U"$07OpVf}E%&jq#%N#mph嵌W,czC#s˶]١VN{h ʝJe+T4>9gf)S@˶zx&- Jͳz<ﷲH e _8$ƃ/3n^0i W wd-[sI_>Sw.*]z.ZjJ!tlP S1;Rg)u`Ug?&4UVl#,xɷheVajhy]_?98YX;㘌W!lnYik|8npd9q:/"D)ր>RT q%QKo0`|G+t791€00ަ#Acv,ct.NKzNlޱ}ETZT1XNg,-~Ͷg<^;zi_qn;~(5A1A 8ٛ'aV/ =F ^6x/ рɶ^u-^Fj hQ) Kh|且.A>R%WgFٗ_d)a?ve^p lRc)dz^/xPp$kngjyEzTV<obw2`J$>;A'b9){2@m\6|HBpc؋+U:#XN{芾J6`Yh>bs$gS7)\VD!yc Q3ڦ5theGq*J1 6,5nÏ2bܸ:/m h*ȟ{WŰI9%/ߨz.qTW^fr_^ <1w 3ILN8Sh)&}駡7`4# ϠNOœw)M "~d$;t'mNq Y(YԌP+Oze"%a1ht;QžU٘pX:Ch$O0ċWzLp{g @7LΒe|DB:]38D =)Ad &mqXǨF<'ɿ؛[LUFJ2pVя6Ys2^s_}\u;a$=|bQ䂮9]W#<׿ JUPө: ?]W@.Ihzp سPcry髯`G^lyQlCcrdRu[ GsAudzdv{`e dޅ|]k2"Mm~=)zz\H 7ɺouF2Q`{"5ѣg|9qX)yHW3MgED.UC[’Occ͗fqX XDpɐ":i/ZHI֎MFܓiҚsh[Mi/FZqqu)p ~nRX-G/qY!3&>1ofu)\0myOQΈmx_B?EJg^+++2y Luyru8Z:ջ@ޗKxyU$ewj3Uj=nxi?OVI1C鶏q"1۵U1ޡbi_fN&ͳ܁ۏ7ާr_,9 6.[lw|9srA/s&q5Xla񜐼lR`>&F-c(RCe|B!gl1 I>fw4c')N_5h8v rϮ~JeՊKsir!2XV>z-,#^ZQc?]]L-['ŠbіƌՀK}crhE;'hh"B )@Dz 4yB7%wT(D&i6WbU󕰸HIkM 75|@r .4!ӿo6{'f^W aTIa,1\R@܏^! n#8iBp ,_=X#}7#)Jjh*< 96\PS;!o(g*: XL"|!!HXHi,V&/ ʩ%kbݡS+ݵy<-c`Ŀ;"^]OFT:܉/>DžH%V0O~){FU;;0NfQCC $vҞZ3{`.~S#\z6EeK]aFr_Z}KepiJA&rT9)MIX.ypEY%'vjx6EruoM2tƇvW>xoZ>Ovhh~F #p{UcH,u*2Hw*Lw}S],m#=T@W7; |B3̉4>[OSkxj5$Kvр`oSr_pyo5[c:`Og 7xM$]Vp:V^c`ոYpvsNAAǎA7B]1/_ Sg+TOJ 4 K3W?5oR-%Q aR6UrOYlZ/[<$CgRS"v(¸#q"QWFvۡchM IX0КjόVaH!Z(uف玕HL>TzBV@>Þط\r;2,kd\H(@51Ð6;eb`jCy e'6lA;^Ulc?hP@BoJO]e];+ C#d[. f7׋;W>9bup!ž3퟾F:}lmyO̾*-wRJCPdѪ'&sgZ2RGw1 #Tof6T-HMkr1Mlo֙x˽k؊Wˤ|h"sC?c;EUVvgwbuFB8P87nnfK =n-l@,>@ HA 8XWqiSA׆=\xPtߎ:zLK߭lmBG~DqT[(^;$,k絎 1Sx}uF9m2ĥ'd3e<<Ӷ{Nf TZ^ ӄ-  uq$*7>fWq_f0բy?4 YS.rɏte-(c4q)$#0[P/6Ӏh:Tm,[GndP' mS7˟3q8>ӮaK:9sjz=c[k( CW%;+g | YH Rm>֎h[xN! U=wZoPyA;J_̅pɀV7ںun@l;uQ4p-RZe.8\X&FN,gBFh@2K.˾rVR )% 2lXAMV޵O!+&m3!Djo&'{PORrHS< &\Qgh &1c:}^)on=5 as?|-b|8?+m~,b"Xz%)YJ&j#R>"Gf}#<8G1E9! M@=Mp N#Iel~aC<s #"/GE`}A,+pW%zT٣˜;ki}}qHZMYrro^1o? Ьe1}Ȇ KcVz%ne'u9-HE{6T gFoS[5sb9k;ESgdedXZ15o0aĤ>6T_9h'rS-HWO|PV$-' {e5~SU$3D3C+ xѕk?{}he1NKo"patTu}`}Gi8XIqٯ{AC"$t₳mX@%1:7;٪pEZ~gQ2@`X*`O|=\m'&܎cC?mO]wYL ҒvT4_vlLJ6ґG' S乱WDՈ ZVjH$6:jXsCn?Z-[ߗl U_\DIrsܚ@ A(lL7SE?w˙0xIߴl6@)NbnZ"o fU`{(Uv C7^Wc,GwL&=`4^%'CpCSc@p}}up@#?2M#zY 7YVDϘ;.ܺj(Ym6JZWT\oQu03~2lyV_^9WCΉn9"qZ,k/gT Pxx٩"ฃPL46"6Q9j0e;&r ; fj~iGFk-ؤAҽVpb'80^|J/=$̕XX1r7K+. $ '~L28o~R*0P־}9[ˮˉuU+e8`raޢ޴\Eoq`0!dX6.c'ͯLC1UW? endstream endobj 487 0 obj << /Length1 1935 /Length2 3326 /Length3 0 /Length 4511 /Filter /FlateDecode >> stream xڵUy8TmN"[)[֙1dΤRa&cΘsƾ$"!e-ETm$DQr}5,}gŭ0$Q [X`?07Bx$"djLD@-v <@:hrI& < ,@hL,q` ƃ4H&SA9>3 Ì6DO_(%D* 0Z`K(ɀ,D<@" {p#&VvrX4Fj1w0Q , 83?A*[GyfԐnA7w&qg@H̴iۉ*~IC]j@AhZ8\`` ֛#XQVa 7aPIh9Gf{s'HA釖uBq@1)?HCW}ͭ?"T"5DW1 d~#ao !RBÉwHe!0FALafUr==*BC"AȪ53 o$#U s1gLF@`M/ 'E} 1h8*ٟ3 ~a (?yWg 0ZPD '{W(L C' WpiPkdl>'Y=.&gzK/bsJ $!]q->EZ>WϼZ,^u40l?1v iHf~!#[6\zz-h(n<.V9`*\sIl~8!vs)+ Ng=CO? L 3)(#&(/v#d݁QkvS.Y5]Fڎf֚qyD.7o7gՕt4݀0n}zBcwgH kV`_wHn+D'J[/HM?t)Jq?V{=lx3|I202΃ ôG;GNy9}vK3%Ïtlfvˏ݀4[͜?KR(oruq&/ 5-Fnp)&~>7,%`(ުaP| .BϦcT)U0HďU[Y-=iG$9%t[_Uyܚn#xۖ\A][a\V\ 8N uU_r׿5 ,O.|Ň%a<F[#k9kkN ]ΰ1,LjIwXDFxVV<uHzggJ:89>%X=;)iP$ǽ}C|!Qo?\;ݓ/7P(oGYSj0kqrU8&$ \bױrxIUS{lZ/cN5ξ`i-]{3'᪠|\226^乾&Jm5BHpiXvw"Z /'d7z.j,}YP&sn*PAzGM=ڣ.#*ۨ=gZMu/I_]RP؜w|&!yȽ~;ymxMVIM kVX|[&5'{'q}fsWAPdݸ*|KlOܾ× o}]튆S#mA)'&iwO|?!h~e]2\1"o(!D:C)?[p{cf0~~goaUYQwMq5O[s@)k,}֖6Z]WڼF^aO;Y0;gW=yw {Uۊ={wruFn\><;2rDL: B8Oo"{sX_D;gN~sk u?!s`[) Creݺ:LGTW\714|8:O||fixY?X-½ՎoQRE񜵸-/U2N:ƨfpGsos㴪{t2m3Uz904fSi) .G/^Nk>Hܰ(҉m&<_:WV"6c֪.ct?מw-wL/Sip>In,/ə+ܬT#*G3,:(M2$<+4["ժ ϰEhej뽉Jҗ&SQÒaFt}eJ>DFǢJmcU|IZi+xE$G,fu nrɵ8NkǚZE~ǻ5 9hǩ]J49upG\kuumizgсcv1}YMywuNMnɌOsd>Q)`xx8 "lO?\dg᫖vhtHQ@!*8[ Ra`H;@}_ΣAS5:.Yhu>^bo$lVJUp$`!({YYvEޕ9wJzl'JrTg.>t*4QRnN'Un=ʼnޙIʉ]Z4/gS>"{ Ј>W8mĖ]ʈU?`\O'/j.RX̮=1s].cUĆl٘֙ 뾖hP?lh|h7γq4WmONLNSxxVӷ%eC'Z 4OF߽ \.F pT޺VdG_q(e*%q;7thﴤ3]97ˁMe4̪oYiybhiv`O9Ezl3tQ^xO}7b9)U7D+K^stn=#e[n<5Nߑ&DZx||Ͻ3FK**]d-L-^Bb/kȉO=Y$uwiq^l-hYHյm[ endstream endobj 489 0 obj << /Length1 1819 /Length2 2482 /Length3 0 /Length 3613 /Filter /FlateDecode >> stream xڵTy;Du1~ݟ}G._\PO]TxG??yV@mi i(xF8H m~i98oC@?L4&hY\A͙¥*Ƹd7{'/j[m}j@4?]zvj Pa|H2Iٱe)'fc| ?iT E7'swmx]\6XW{McWaeץ ɐ+5rO[koI ]m>qX+=n+Jz<  .ԯ1/9܈-n"= HQ 9x"SRo{bЉҫA?CB5uu63Yn^zM%"ɺ`zY[u'Yd̬ dA]ݎO \> GW)7\i/:>*!(7V}$H쪫c2Q&a [WJZ;އ Pz`Nj r;*#%)hR2W-%̭؛41eۮѸE "Dn`ы JP9|F[u{jaMʷJ}kڗ/yBKeN *iZ(T^є}a왲tfU4xH*nPnt-X%MIfmGVG9Hq̼`d];4xi)>5WEF_F6$^\q.taBu7BB#]fjM7/2͛z\l4?7[N-۲/Ӳ2t?yqY:31˜Fk"ͅuc;TNڍRN\iN}슎UܼJuR;&ⶂmwu;Wzp!n8&tUښe:6T)cI#{tHELWy֫J;+ٳ)8ps Gej^y?7OM,iáuo*5'#ԼF9qHnS[xQ3÷Ѿ&hم Iν>;!&Pf VYq磦G{IÒ2!rV=U~ȿ;n,+4~׸D+΍T̬6A9`zkٜb銨w no+G}3{o*(~+:|k㎘]JRRݸoTm$[{WlK1N%h9$a(->PlC뭹s1!N+=Gw &3+gHruR5%1ྥrK&~v bvҙ9%Q_9bU,0a@ST&Oh<\dDuF㙿7zN^Jc u4-۵KQ=h3]Ѻ'_u*2o1thuNr D5sva`xSݺ;[,Wr,(\bT[=a]_q,Mt>9o.e֎Cƒƙ+z6G^WfSiJ l6 +Xݎm 箵g=TH8#.TL⮝;{{H-}kO"Day**pHytVXoxC CARj1 䑪 ` znT<ӵsJ' /Pz.jzaYaueyyQF66mehUK)۰Mn' ngG27>E,w\|RqWaL'CaBe29&Y,=d9}In-g3/)TF\_-Ϛ v .a 1cO_1ƹS.-[Jo2pтw5)n=Z..tisn[#6Fbe=*;5Ik=s2Uۉ6]Z{z}'Ɣׇ$w%&\U>9wСjQfqXSDtg4,;mY ["[VG~8'^fb *JmuuX~dF]EqĶZᄆ=_@f_dYwKy/UOhX)x TgYH76?y&ul&D-_GHQ1h=wB$e[Kpr'(لx6# S:B 43.ǟ?g8 endstream endobj 491 0 obj << /Length1 2770 /Length2 29052 /Length3 0 /Length 30630 /Filter /FlateDecode >> stream xڴeT\]5Cpw)ݝ)݃ A݃@}t>&Wdr8ZZj쬿`x~n4`f?nN4zxz{{x{8ٰ8O a WߛP܁dtK N=C , \%55%2Y==<f@+$=~P?mM]2#G@s1s_-AvX9wgvl*2ҚZJ1+;xxxy6J$'e͗k7[ہ+oª sK_4؄f-vLo3o3X@g;0@w7<<;!,=>,TY;e3FJ>V G_U<t%b_I7"'B+e|Vjv/9xA6@c}c ~~ryxHK V&$?a Kg+; `fnn?;x> Nxzo&7U_*X% >`eAV?*qX pw?]ST vkAZ׮AH vpswK;;Zl' 8? 7=Eqc7#xmmqr_;o_)`aYyUp_LE.@_`_//^8 N_~';?np1s_.0k9+wt11f[Rx?#_p|pyغ":;[ FgGUIR)KQEC?є;+ e*#p_:gX)JOh)QП(ZJ"hOJ||HyŸΤ0R]ށ鳊NK: oI|aѬ4 wRe#cViK1\BbD$Uqe8vsfJ Ь5dm4m$f&'FNL!FsBѓt3Lr?},|-',j']`7,gY iˢkI0̇j2s€0bUN<4(ۄ\*E'+wYɡkD2>n7+!li1Xz^t^o2{?-L7#BHN|S>e\o=|+Ozj^G0MmgdTxHXߕ驼^O%ҡPً^u@3>ٻ2$TWv=;{RlqN8ZL[ۆx۴|#c-g3X5K]?tPh49Xj$v$fGEbjܩxfrRT!v!67&s?k6; v!|>+MӘ|baQ 9z4-Q|&$qv% ЁzAXT 8PA-!1zˢ}V;.P_:[宍-Sj+NhyeN?ۑ\D$ U7fKM8+WcikXP&q@l&"[7c*=Wk&fL" 5~dZ(#gk ˶X' al_K,:RV=d0?@6Z9~˝:X&qaцiGG(`lDdmfJogvC̓'un+{HAmk{➑,ߎieׂ7fɄh~8PmkLۖɤI}'qRA%x!q=u@= S1lAz9iR^C1fmA> aӃT}^Cca.Jam1{Cy מӕw5*+ ^RtGٗӌskx.*PyY'M~Lp1u=,0~2c@ 2?I8a0NOvn_0!8o"-%&E䝏Ã-9 ۼak7؄WcϤ DT=d:&K'~ kN_kI6DںD%_es:*5 2T  uE@b-'?>9UI|ioN7rG )*&{iIrd@c(r;VE"MIKkz W*RD!ez=: P ݝ3( Isc4kS+?~nݝkƹ,1Po9ѹp20R-Mx{.in%㬖KőO0ۼ\ A`ߥ0pBEU}E~ʼn~A^Ъg5V>ڐSW.y}B1sbKkïw;&"{#-h{^:9zQHʏ)U# ;q|}VXXXaUXG翰,, RwM8 k cf7P3CƋZb $* 7ήqZnkd~ ׉EABģ?#D>qd̳sypfZM>djgx0}{䲸t :لQޅk-A\1V63EhE=iw#5SHJcn #F,iUviD{qs[SeG]#"Ȍ~Z}^M4L*+ .CU|tyIôe=)!uc?V(c7s<|l_7@"E`"Z!Mu4mvqoxMCFЭAO0zMYs>u:ӶP"oO;lJ!"]d$ N\yHqH9i ]^h ۸‘*`$(=1mɆc#-ҷr%!Yi2![rH/bv uhf6J|h]K"nK !MH.4=Y]d_ʅ_"vzi}݂\"AoN\dJ,I(?1aBۼ;C^"p@&?3ߑN!24dk{eib?hf[U4Uz?JhFhNYO)ذ٪”?hfa_O憈]^?}4nZ,"65C+[}T0Ј( ӌk')D\ F^_|Obh}$!eJLssU[i,]εV*87L6AAb<ۈaFVf j *שc3>GZ U;\ WSV}L⭺畐w,a(tT5 Z*PDmkqJ"bfqRe XzD / ЀFݷ۫b~ⓥuH:^[g}{r8 }DOkrVBCY ifJ\&Y82٠ֲ|ܯfj+e Ҵfw+la,YB56I ^eK ]eJ`nI Kqrxh{ؠC SF )6g"lIݜ2vn9y!Oqo~~H{ȒYΠ8?ԙ fwX_@gAqnM,!^„7^&lnao+ybmC]UxN0DD,H)c F >B`zI)["3(UQГŠ$E{iWqOHfV jF5=_R_Bf>G g7r'EƝ[{ZydѝD *KKeYx27k^F]U LsG+qHQu1т=Ӓ~Ou0--> 6MyzΐnZnxrѭW'GZQ~<LՆZ()Ք][od/eL4 #/ ;AcVq]w=wef50=1%B8&d]OMf0h)irIVj.1 ur%!~pP.p:jnG\$ΈeUPZ\ &'NT8)+LΣӫAEM?nNn5(-a\WAFxvq[wt5=Ooг;R`dK6nXmUIF_}ݯ{2л\ԭҽaTPG[ fT=2ݑcy_,+N,xR2a^Jmf^9+e7d֫MB&BiQ㽧QG?˜ KRu!M>3mG^[clɥЭNg Ƿ|XI`iO!gxr"mc,K0SK_z!=O~!HJGzˡ*% 9'Crhه䎂JauO}1 ߯p\(h|뺲\Em>uںP'?i>fdkZ" 1/$K5KDsj&Gr<ݨ/ k_~CjrGyi5Q,3= ]p˫(lO|6O [+Tpȯ<ɈK\-vKH=cJ] +cnjF\sNcCSZM M=v9[F_8e|xuR(#j$fw@BV(J& irqh~>[EOTx0Jm̶506 ^u 0P*ꥎ[C= 4;Nh,\Fšg%}EY?SF b4?F~t3mnSS^pxYabٖTc Mih*Jw9J=+^ԡ=bX?CP7智u:fߵ#zOS8/DǎR8A"=\nkOi<8%fE6{mzmFBl1D:𽑧:b0*ݮcihx|P6o暏j0h?TEN[kBD_GtΏa2-Np?"̹8| ^7ܷ vHao7D0IimPUގ2z?wz:uRUbI+iZJh(zUDԚc(Wy<,gW߈6nOpp,s.2X!H_s8P.nz#NN:jo~8`%КaU(Njl$'eR|O p0(aAU<+84~07|6mF n'd3mޙs{,rg $>qݗbBLJEY tsU,cٷyǧL:UƸς˽mAVp(9]ᅫzJ잾y1KY0ZRg|wM m_]A!M2Yds=mҖ$\h,!9dAiZb8b7$,ZCŏQvF,WU}0lBC`evg&qĹmhh);2Ig:ܲN{)TM.-n~}rXLTb3Z}n)yW(t@ɢ=ɍ`m_ dA󨢱d2xZR7pwWTN.%o 5u,|ݫhE 8orڜiȡ8=/rz#D[ gi2eFcO/ []:$;WТ5͸!^:2wџ0BTDZ8?Ni$s뵄 %fFD0/6}ITB8Mh2 |&w VH1=*;PX{l~Kp[Dɝ :Zc~aʷ٭("D*jsw`tjB_aD j$f[bK'晱iÒֻ᏿godt(Ll ≓s ` @o FdNkIqLP]b@{I6" 7|nOlLb `Qe\Pw1wP |^Ab&)S>pbQgyh~']& K-p'Q{<8;V7~]ʥ*AK ,+WJW@+iБPKojM/fS?ES[Xl[?|>tP<0- #߆1w@A2u;'()ShϚxSf}>\sJO?'Gb{>R??Vd@1CW"b&+r/p'A:ND); ssϕ,\L x㭥$ʤ̨p! {ꏼ C|0,b#{4h> :vxKWXu ʉ 6OVb+E7Yۼ$A߻E1u!y4dfe1XSIN9LSi("M4k|+Nj~A9J7PX꨸P4""&1;iŦO{Oք]߀NjPtḬ7\e\mPWDORg~ߡ5F؏>6v.qyS_zBᆪ{}$͵͒pO"jȯϟ8<%!k gjs3yAŲ9bz\rg_UP@*{x֝;כA sB kM_J>k1S 5b;/{&K#KxKDWdžoʪ|^ EV1mĖmA+]6N ZՋjSi 5-Hgt5i3~MZq{F+ia٬$ H@OΌ$̄z;,8bX&%d ܈p9{zP5ى.E:b*U%`5%Me4*7J#jԸ&藕f#x]6 ?M)bqYW0+{)E MOĽ 0#QVLKqFjLigT'a R1 QMI9 `؅b޹~w<772?@f@$ +wϳx u*l'L':n2nxϫu)B.V!t1wSk\2 n}J$2MK$h O}P HVdߔVnh/pl$s;pk+wi_7ɶu VɊEC:4Og}>g-:Cn]̺Br4˾ҳrh7/W%agi1쫌^#KNښ%T\ע$7;ldoa%ג"ӒZ23i|:9G'83B_@Z7R OPa6a#Cfz]c1P_I'scÃcRpŢdOJT a_0lmԲqJIiKrE14VS4z#\cE+!]ɇBs$TE*C([dhP| *0(Ԉ{*LU`SlF&d_X[^jz{lװ`Ӛ/ȇ*i 1ߟNX|[ ^l2z"=uAu+JGt {P(Ś}4Xz 'HcP^Q,2ǡֳI^` #G.y~z +#ʈ,Y:O{Lmva"_Rح}Z!5ǯ. 5v&B%ptilbP֟4:©-`w#3Ч{"^96 D*~"Y!MV&` s2Sx{- jnhHNo}Zd%#Nvgޒl5-yɬT+{.:I j,Ýt24&qJUSo[i4҄U"WQnϡ9_X.K,g*'3+fujVIDj8͏Zh9˚bYz9ۭ#c.ξu9ӚaxK6Yl krE-Y2G.މ  `Y~ǦX\^Hm ڵ@X2㟸1J}WmĢ¡:Xk8[Z!ŝ+cZ: s? Jf.4?\$rmWf\F\:GcES>ٌ3SVvηh^e#VTRAAd Lj)wCԞ^c#2korHbU*TU=h\g}N f`ĵApUmU Ӥ6Ǚ؃~/?o$aq{hΆf[-3#)>u Vӡxǥpa&}Ȍ/vXk!sbOʗ>]l6U]F +OBozwN Ydˆ6MkY?N*`]ZZƂ\#450Woylo^߿>yGOG`_Jfx`Sxs2>>[Go3"bxN֋dͼv vsqa!u1*ux C&v3/$U^D;XddQ]Zu;ad<.^&/U?G83j~Dַ (2댠,VB<ߗۻ7'̍({猔<?n;fٺ%>緂|i2L$ t=w'EiO'.PlE-!6 JƊ}קJk|ΗZl2t)D`MܩmdgKB'BLH "pKX+/ " /2'kT-/Qs[%Ҙ96U E%]oFU4o ~:թ-k%>b a7 Y/\>HnB "[3/?1А!Tv"LP`<TϙuHh ۂ@=mgާL 6L׮-cmQ8 S} U,Y.S%,~Hj0+5an)$PxChE|'4/u>Ut[ΑE3$kdGG8&Eu˨랏1x6BPgù{VsS. OSVb6X 9nCa| ޼Xl#+3c9D|z"t9E1Cz'ui`\G=_Ь,~ j tT(^yX_iBxI!HxĊǯ.R.w)l}>[W#7|Ιp0@#oڊ 5늜?֩1L~nfX+/捯P:5cvĆ| vdl_y`: .TTc"h}dM_! ݶQ\~zMW{$eA~_ð8@ߠa=jBp9Hc2{&Tz妱VOc\AFe`~%Qd2Sz:1VCGQVDxQ" %N{_?z*"v] "-9V٦fL)eG5Mwhk!4K\5 {hߤAљbOQB.3*T*ִ}-bu_rjuLeO͢2V?4e*d(!lkGE80|]ˎeELf/̌9C'UCrFjV E[;\1NklzZ ~,4ǀe6/{g -4k=1ݓV麆G: mJĈG,)b}Mϝgf$MޑsM ҄r-䋮_k85CfʮZS@#O_5=Gɗdm%NdHC{JoɰOK”JgByU˂Yi]]ˉ&CsQ :l< J~}_ %р"anq@%sglh/"RǨ"kx]NZ]jD/EZر-x)B :B<_c>+xc'd)ng1n Ҷ"eKc!59J.t'yΣ5Ϩ׋w+]}p˭odI|spN!,S \=ל&aO=kdy;g-83ƿm 1X+q)lU0 w*B^,tF{֒SpwzihKLl3l7)J$A1vfx0lHRmS=M˩^{?tL0W(ǍlWu!aw,!,WpEZsQN5 Z'zW;LGߎ\$׌q%ea$7:A'ip7g|꺄1>҄%8!!yM2l$$t%8&:4VKﱑn7ſM޵tdfB>' "'NԤJ+k>~5 ջHPc '$:8:+I68D#c·5aג`ƶE Pވ e}:]'nqo%Il lvnJ6h`~꜀Z޳6y!6PQd@iȍzyzH cӈ怛~5lT,IWueMQQ22EfV1n\tc۱PcUW .>^mb1 ś"N:u c||b0Oba/~T#w&?Ii|;_Gb}Cfffqh$t 6 .Hq2u!YBZZ9}$dn,~Mca$k!j:kʾoi2fp@ʫh]" J7sGHMu.&'U)/,r(t ݤb>e<=,D,cN[`Fgo6m 5-9`Yf p!ArBA-lg\Wv}ˎ=+hf)98תl’ lr1C@ {w&ISj_;Ͳ9%іIyb21LNƛ*EqSl~)soüaw,Xre]Co \ I4D+됕BG$wÈ!(fgJ[i]罍Zy^0UR.E‰?Y,v u\H}cVC8+Ta&yHPר_ UkME"RX+=v=vX#F^iޚْ%{w),UOAccWZ4;83k/+bہ}Bds0&qbKn-+Hq&Ѻ--jp+(ːGրYk;gB ̄)Wkrg2*9dLKF=z{w ̉™wY`ڏ7cctXϥ/ἜGpL!n9ߦe|ʄwbUг6n8Xw ~N^}ZKݪ\s "9!%;{zɂXXQnX ;i+h'н=_ W3-LW"xV;^CgLÉoRo V0w9jwֆccjq3B8HS$Ȅzcz> 6J?,xukvpb:XML͘Ǹ5?3FD:K[v$t\]mai,  Ub12XA *2-H8sTONay*؊rOlnf*fN+e[=̘؄ F, )c[7FUW?FX-^:3dګV8Ɍ/$@: ?V5%R]?ܹ~7LFMAOx*lE'; υt XH'1}A=5wH,2,=Q ğC]%w |5q53 k8Je ;^ Dn#BS4~ ?BiTM_K!밭Qaޟ:Zdx/]@NZ(4p:Q u MػPeF-}2 IQqu"%_'rQ  Н;mgܑchr 靋c>*ar1Zu7m[fnpHcᗱ¤Od$JsE!!-H7#P#Bx9ExՏve"yyMb.=MVJLp z0}vh2O 4J URMt굏8YcN~ȋ Ą1t;ТH e%zӭUgK8r˂Nu:59:B7>{[zO9dt娢H3T"x'$nQnCbN+=[RA$gR24QG{VE>5ԙ:aB/Kq")Rczފqr`GkcVh>2ʢ8{ hBp4yN +[~b]]\wMՇvoa^"'5iڕL{Bed28kRj0I5;S@4yfИ@FϚ4ufyqLvK.C%L& I;TgYĂ7,HvOd-@)V_+JiEQy͓U1 Y+ VL+9m(p}$QU~iJT gk{z꼂7Vȹ2v)n.O]aE(ihF趢(%'$6iPYXFn#2dLà0CKV!Mk絪CH_hu =.c櫹O4o[]ՑyE"x<#?rJ> 1V*n(c21HX* ^6y1 @ Ŀɓ"ޓ`l${3=oaM/͞#Y\72쥣9&@l3bkb: 3*5&e!Ü"Y{p?(R`nGq[V>pmA=]rځyqdL՞Z98Q Bweyn )h, t 'pDA,λ]Qepvƴy:te*GQZփeHx3|FL/f*&w.wPf ?}98㜆*bm&L㟍2XɿbM?'oU_AxL2avE\s_yb]ų^Nh7G=v0 a0•Ayy`gT-[?c[[1<[N̨QImRU&E%{&cUsVlSʉ;4|+KΡRG:|u3XƔe.mdC?/}XUE[VU%a*u3RsL_]8hT# 4Vg#qfv5<տ&v)A<ڎ,kc"j;F/~zKF+-VNe95Ƞ}f_Y b*:d K<-/7!WV{l%nM¤IAan0Qmwkw)^''"@@OcSɠ\ reb.)/#hvP.&mqVo2GSZBotuuYĎʓg6! ֺ_% MxLI=JpNs:c'^^ Ku*$97/}z*(zvx !9nx?n'\y .*?eGe.((t.lke74kW V?^š]c @3mWTHkJZ+p=#ʂ9Вb10l"5xMOGL~fт/,-& ]xwO^ 5'3%x:nt"GĈrՕdyQ^.P1am 'SHMH5Rj߹4[=0Y3CG_9qY_+nDnJДwatLj"ԸH]¢*4 6Ӆe97=v^+p' 7糉**>;_VoG[Zlq-dr P:]`rXdž 2>qgQ9 .Kf7ݮ*O*9NF=wu_&&~X7 ns+Ioٰ?m?}}eEꊯ|DCHh~_Ľ;QwD0bw\TZP55ҵJnB K[~RBbdBxe=i.dp[8% "yOLppO$AJ)R*WҎ] v\3+JRtJ|9mkkKd@,5.f2\ҠnNœ dnu&bMf6SdY&f6D,ÔF B?q)fahlo\&9Vʒ߬b+Lbat 5%דY*+|7r'T#+qSI\I΅'xowŊjUW=m͊SyUNIO˼ B-esqܕy:qrh]IR9 ݨƛ kyojYV>5nD=E[yp'kgVqcCqcg&. Ni0c3F6-]&mWB+/8b_Ul,6y-xv>c5(=hD l#C3*hCE[!!j!8Ӑ^]P s;[[k}޲6#d#ݫG)0 Ub0 =Kg 7ٕix4󠁕e7E Qں>`EuRTErMp^|%'ٱA/WfD~."5Dh:6@2pJ+)*iS~ l՛-_On SΥ4>Qeianןlr#`h#H1ɜ CY!-Q}ZHbcVmALՄTkXnlPJ@}R]LN_8+8a*OHr2pS/Z4soU94Y1=@2~SaJ8Ϫ9k4tBӴ}f0S"̡1c~T2ӕJi>ey+ 2`y1E+F}|GobGʳ!lH&T*G ͖t>{ap9kvyD V gƯa5)R~PQ @O0aM]և'>+6=w 99=ຒi=sK*[[R3ҦdZk7ؚopFP$8=OA/gξ'ޭ:ʻ.L'ʽ^ߴqLŰ+[ɳc`"53-7}s(zfXU ,ױ`ovzX[ Rx5\}8dK]:.v$_#6F@'E3,a ;R"E5p\evnus3f^ )g;K%uqcڎ?/>b!uIa )~boۣ%+1} 5>b#5ʝy:,+i|K{q% 7.+F`e&9'a< |uz: lvO\ RHd$N?WɯB ?%KgS1Fx̚LtJ8nf-pQ׎Xc{>3Weg@+Aҩf{[7wфMiZ@-WW7kvŖ'uQ\֔ɕ3Hmf dʤD'cq X *~/P,[g۵xm)1.xutf2 /z )qd 26L^./WtbFMCqq~VQr)ckn`~C?.EKL,[< c@3W,o>ޛ8 R?`_Ʃ3?_ۺeg&CIsfr躜Za[U w.zM J*[Jkzeo>vjG*I\%^eDx&2i {"+c'Ο%2]Uۖbc`K]uʟ(c)IՙZ^F?",L[bf8i665Pg9ȗK75r@YQ->LQ!>MpuN# +N4}97~Ϧ*Dcygt{|vGkv =cM\vNeV!˭A \pwnBb}WW,=SoPiYWJB%bMnL8|"h_qKt[|9[KCK%_!P9SR"ݨ](6*0 p$E2\]P]ûg 'yJܩsͿm, 8EŠ*Zx5$ )<Q%p~ue!^ĢQ]k+V%⧣6 $[WY1!ؾ|aY1}7E16!CGvULǍ:l[GIƾl[[p2RS{%>[ %o+zEWd& j2$E[,q؈q|V43N2Gw[iʴep#Yc::ރxv9҆"&赎@uVdxQ$%!`@Z;ĉ, 秮?4[ :ڐjV"T zWf`6 X5D>^Q$iOsNwA=^8%uj&glA&[++&9!w7M`( d1B%WOMXb!fQ Nڮ1;߬{Ies *CXĄRO=]@>=E祎`yW'Uٕ ae0MN@w߁\fhKݪ`?(P9Grl=;-a pVy) j5 "iCM4MJҴ܇5ouwrDAA6om*#F>ZDgf .'z'ю0z}ha"CeTdp;US2Ѷpop$_nS\l-{"Z6}d.~=2[a*Pэ sG(SR:8Aˤ&q)KڡM wf3cP4L.8:9?htƴ=(JE%m&!Nz~8ϻ]3jy5x7岻!# 1fݟX笫f snHbsġ#;?kƕy*ʈJƾĞrܿVȪ5e#й'z"&-"O PhHj͟Mɻ]wHz{ly,Ojapsk048EJ QFqAÞ7%DQy=<V.}eeX!>VX71s7t:8JHi$9"mC~'Jtx 0?]!.g>Z}{Y-1E }Z}y;mV[suKsv9\&e72q̇'Cv™;J^O$O7療 ~>!( T7j3,v卵_ i`u+')3pP}忏i$~/npZcf2T=ޜVT3 <>͢aN]s BZ)L^e%~9SLT.p[dC(1LՕ6`67$A2~MziUbf [>0~ cY6v(إ_ ɠD;kbг}/_DzE"-x;Գf0紙9ĮoTm\K'  +Pϥ'!5VxcIӸCa.y=GHRgjhЪ?0oWW VU4"Eu<9vaZEZ/m_ Յ%DV7<_./6Ǎ2z+`72!rTµ .%?k@Pk[g1F!ph;h t}4g"f-O 텱X>uVY?-ջ0M[[뀞g|Z GԚHA]z:$ݜ,ίBE& T$ 2{x}> - \pbi^J'6;v%A~!_$-ߤ+rz&(KӉn`z7QKg"Y+R J(&^y0TbA70@2^A<_7egy\nݚҳ'zhjgyXvb@ I`#sAd.?|=6d^?X(tu+ #OkM\[{~AYzkavd## GFFj!Iv/^,a|;{(b2|)8p,2CNM)vkV@V%|ܼWX8]wƩU2X.lH6UU[m=g;#"XkJ*Cbῂ8aMv"z]rx ѪPuT!^B3Ů֨ Fo]yL9Y#m~TIǟF8?8$Pr$ fs"j س3YW]MpzIXvwƲފA(Mvˍ\3 5ˍkMƥ{d/n9h( ?63ffpR3]D]]w cFJD,)XEeLKH )x2?jMմg93uԕ)ٸ=Xl.x z|*\L͔u7֥\e`ѱIl[^lԵvo$rȖ =ЅP΋A+,ʬgFzABfu$;{{ͮ)ɠHOp]،YnGF5on,>`J}?ױ"crPHPg^Z+86E)LH99^:v,HB1cņ~[3b69ŘkdPB>\a2BVCŌѹ&a[([iTpa7숌@m3$͌hG:ETL({A_e~P]_ֳ%M~My|k?ho7A E%WѤ1X<>6l%ȓ<ec08l®&% ⭆AAr=S@HehR4:Ԧ|FXRFgebۇPYģVj8iEHR8gGR.0uxpy.ƽ %ժ@4 !Wj[ q {ry3Jr#77H]7YJFY /|x*%> wSgBLʺ:rlD(J4 eEH#WϦY5h-%)-6\LSz4aN/;':N5Wǵ#>'Z~UUh9&b ?GЖ]id{`zS_ Up[.С]z?r,}.jL-]nG %g\_cb^*ӹ6Ue !Σ](<~ULK=H.GB`UeDC^~* Y TȢɁP~Qv'? sb։>L.ȹ|i%t[U) bJY}H>~f|m 9HR3wWx=gʐfJ;P@3WȴoxN#Xڛ} r䫷_7Q -uDP?U~eWU3'NNb+2?¼}n(nq֏Bh?\gi3OUbwIu߈{^*Mi]%0UDrћT:4AHcPs,3"F f\;l=wSzٸH> W>[Xp~}b9!ԈSC%ɕP|iavgXӶ@jyBW}89#MӐ,eAVU8Çxora%x '0F#ί#>a?_V»ܽKAg,j1A#1V6*NB a"2aZqGLc bK6dOBר#C|j͎b+L.%YѤ}VE&uevޘɇ' bʣլ $\'I}[lP#QKرWR#ZL K*;.mVT_E 8:IyaDNåv#Z_2dÓ:[?!:xQeڧ+Cc[,lVcFKiBeM^HcX)CZPUugQWANCwű,? B}AzU=6D:8-yHy'5'#Fy⮣0>DGV4\ӋY|+6~ 6 f#7Ӧç)iR$-`|e rSs+A 5TwZlO'Q  2Pzᘇa#EMƉ(0Eѹ8'4M]}m4hŽZFLY徐t!z {{;JA r킐 JnAxZ)W`Exr=RI #0b1ts:2rxvGiSJ/&I3% R?,sKeyTV$.Pѥg>TЖi|*aaO(?![R}=uQ.^haH͐fn8؆~ܣ/WbχMfƳP1vFFt"]г W0=l$}ִ!BQTrϲHj&H4u aF1(TC30V]^p=Û|vu4gX_z7\u9{h9€3W?m{# +/7n4`VW"LuIr DooaEY*EyC7 ]#p-=KDMrڬw#@nbH}o ENo=l?h ~܀gLQ=˽0>Y$ ^>1~\c[7{|Nܽ$Q<' ܥǰZ/S'{JnH+]C {Dᕂ (58n&~!G8 EBHhNmbrOz甇=IDE ƒ<歼ᐒE2M=h̜};hz\jX%)PBTz^~(:e 3GԩñΧ}Łt^Dd3lœ;)f2#qyy+J~S9ۥ #_ [ӗ7bc*)z@fa 凰 U;ީbf㎄ejf ^<^#53#-Pd X!nҒyӎmnِrj/=ƵNLց|(~%d$)3 YCtŲtN<&BW͟nAbw<ʭKƽd2ApVQ|LMl0xO—Y~Ơw$3u-M\̈Ká7=&3ܛO8'.sȣя p"Ϙybnߓa53CUZ-"E0_5NJ{ON ћ f ۣ$_&r%]V~SwwlQCReZ05WJ"G.gpʉvmৈ XAEBM3YXzGOab8lӳϭ4#4oUU'ztDA[0p endstream endobj 493 0 obj << /Length1 2870 /Length2 33421 /Length3 0 /Length 35034 /Filter /FlateDecode >> stream xڴuX =t( 9!HKtwp=sYk{x:*uV1s)Hvad((*Bu; ؅U djtpqpI8.$$w(@tUL=  @]XMP5li 1B]$ N֖V.cp[ 4;Z`s"@ Z `) hgX4@:Mu)5u:#4_\$54eXbJR @FS]O ߒ5(!"{ NwFeC j+Aݝم d`? +kg;}uف*+ZN+~w`m;~;ICVCK u]C Z168@ h v`3 ` 27A@w!Еyc@?j6]XXہ~w3k_2E1%Yi)u VY!\<\OLR:...tH{{(kg哴-PZX-~Ձ]l TGf rp@o1o1 kmz;@'W?P9f.БnԿ˂- P&VkڲjyAJh0'vo1f͠qYdbbfW=˺A li q =iVN>Ag rv A?ԡM./ _R`35:9=Q9 N9!.P/|vߢ?]KAv ~ `]T11U .5 4  h A w TjMl4.KǙo-#(? ^hn3tp--ÚZ?t5?P?AJ[ \t-P?zr?MܭZ1+O+P? ? [a]G- 5 }M v7}Y'6?1!.}Wy8%V@W6kȟ@`EpB%HB+ >L+Ne愮O^(cgo?j l @v@gC*+'?zw?1\64_7g3?K? ?64? 4PW/)T}-/i[Co0QBw> C%T8Û -_fwzBߗ 2C]Im -*,Gd;DVG.~1cH2w$RI_Qx'd.֡ Ʒ{ZkP9qe* S#ŔŦPAx(1_g*59r$!y5sBmP޺^4لdc X;h`"ӴI~(Cw'sjQwZ!u=,nj3" R|XHk;۴I*c8!rJ K j&zF0EO lYʺll &Fxq :y2zT?vftUH<'X-FD?ũ+J6>P3Щ8^FHD漓l /EC7=jxN£ <ѽ6O7Z.Plv9K@O$"&,{3(UVʜ.U-LeN)Ty?NR409 g_G֔&4LH._R:U( ^i][]TFWTnPn6bb$6 xQyv#c֫^!e [ 1(A;B&ٳ(yl|f9W޷} Gy0*d5^|y弒 i]ȇ#@%oV<Q^z4:61GK}blWB2}n:hsCn;GZw2(Լ/Dg|/t$&=,Z)% חA|p/nD/6ʿv>,_̎{&2F28;Hl J7u6Ԯfi'hӁ{i"d/4*هO ͱwY..!.RLoIYzS+16,8 }m<+)VWlk4򍣛i׀UtM_xsNͬgL,KLjzډG':֎aIOV2M$%g%D@kL%x ˱?8]t]v}j- vi _}ȍ*nF+$⽑"0+|a[9Dc|f(ԣA ,klƭ):RZI^H݂/8g&o|H!Qw&V;}̷I9j9"(д/LVMD [ *]b f4)Ź/SbF$ة:ؑFy7!UyA z/Sw˩ MC<#1+ȮF [dɀB"y))g dW=8\giB@/I r|UiufIov`pLUF|Ыȝ_#W3y!Q4Ҧe'uQ9`DM?e<7m=LaPJ u}GS ?r.B]t(UΊfɼ jʗn$ȝ D4>D[K[2Rd9.${=& 9E""_깏Nʥk?T&HQlX G%/v5,8p4tQJг9ncRJG[|h-5Cu1Ż No[K9HwyYK7 ̟8hF!<wf>봙sP.;K+x5^Dz|Tp/D ĕI=˜o_o] ẺuA4Znߴ|Vu̧%cz]d{1/<.A,KY^џ.oxpd!A8Cޔ3p/Ƴ.#!]OK+a{ j=澛k/-$xnkA?`)DFRY|nTڭ\1`| K7Ԥ*kC4+L앀iZؔx,yn\Lo;b|m86@׹UXl]ᗔx9"S#k]9%%Q܊Nۊĥg6fP1+1urP.h\WE>iwVy.&woQ}-@Ķ"ѤIzY#O"y(|șW]8^DO'(`j_MCyC*@qTǭ R3%^ ⳨*],:mYG~cw|WXnk?ȿV)9َ(2_°7\&I .OEQ=ǭ#2$M&PuL 4y_2*Wc7Q]@Ċ {<< FG9qn3]'lPjv@v>:ȷQQwGAG^h;MFx]s1)W盦n`mztPL5GOb2~*GGBbl"/FIЌG Sץx\o Kuȧʼe\|_{OfIH.A(] $n=M|Tț.g&ط7U$x/EԮ_e%$E@3kC2s`VͻW)7!ݾuHwxp;}5pE(ߦ >%>u;6վ?͆Ij >c,9/^A[Y'gmziNHG\fp4U{޺C (X.= )f#!݈'$~< -h꾝#>\A1EWm^erd=5eƀ#'q hfX+֕6YPuzԯm+ZpbqtʸrCx+<R1=;n}K-@gv.`MDZw<MCxzoE_ n:CX\UⱐYqiy'EWףzO_hrꐌ|ܢ$yiiZ %1Q,_Q'g1\kZ1{f}Z]1dDw}v[VuV0ȞEk'vAp,93mtM{27F+QI}S"uz4EnSa z̵{ImͶwC-n{HB`5ӲWBIgXFlf2ibʀS1%',=wʫ 9t<m{&ei~٭#kr?]m٬Yd>_U;5q- 3*X=> fR]57 㜧]dF~Dt /FM9s*llsTwNPҥ I]&tQxg{p_#F)̱ / BHI9w#*;_Wi)M| a9myfن +t:1d DN/:VQ 2v-.[| a}CiyJ×%[Y,~f2Oݡ}[[lm%1'~q^tTW̦w̄\.Qi?̄Y=hRM);I+5\~nr@'CR /c[dg>(x(SO7;> @JA\iK%RVv$CGj6*&z;LXK6[_"'AG!hk.4FwYbvf\7naXa0E&2 A3Bp"ƒ|_2.xȓ*}r1{kࠄ{GPo7mxR{V=YLbbCLfMӌ*-sկi 3dJmє>XDrVWTa x/UVRhLr|dez-,_ű@-&ƈA7 _ϴ0Čkvp!6m$Q+uI)ۘc4Leީ?ǴFFqrȾ?)cO#-/7u񈭒tï@B)b1 NH[0GЛ{'l@dۛX/ɔ_@Ʒa]ZΊ+|A?  :ýnEXWgbͧuؐ.|o:Z9M(`q;?#-9K Ϥ3߲&3w-jG O;AZw3J00<|T|#E׃8b={|z{:JPC/&P);ޞ\2rh<.ڃvX#]Fīp ?SJk%KgS I!o~p|{K3Bd!)azCp^\1GQSFStyF|Uh\Xü,eC g&O Vu ?:Avfib8ZZ^O >V\T72H%Ӟw℠^; 1e\;Hqt¦oa¢chag̭i(ENEV/׷=a V-z54G󺙞_ާ͸'tp5eWer3By>xf`aƏYkLK:m9bH%cCw ngQtpM#J䪃5|%"X[qiN ΔLچ ntP[ &w9>xJ]7+䎵eq'jamQDuZ`RxgT$N$зhAT"3f^C/)܏t%UJV\D~0j_ڮoPNTNuE0tv:Aӗ soo࿵b,Hk$ziax_OI0c޾b]G(d XQǔ¾`g= 2QkU֔?=Z+Te),WOfQi=q+X:8˿tXr!~1 y_~0LQaֹ%cL!* 9IMTrO?̤7Q1wĈ\ڏ`X.#:\ug)Ito0U/ h}%.-V*%y'twob&bZ*/}yyHtͭ;T ĂK3h /L%8,ڡۚx$p8vulzfPvN&|ȗN.,}S]&*Vd\#.F潺ʜj4᷀~|9/ vj[D)mpx%ZaԂ tkR.αz`氳osac*/a?>7Zc9cN\p:}وDbyߞ,>33mi^aMfWQ~C7Qdl[)~N}[.yJg`1*4<maY`^Ѷ&84YZTGRJs&-TJ{ ՠ9N.W o]M5,ܒ/9ɟ"^d:;X<ؔE$٧TYejuЀ8va^@!&Yڋ:uY4(Nc|c6܅q :)@JHFot=p]f'[Ri)M6 & :_8wvoGEFhS]8ȇ'z7Ј2}yܓsO2-oE"`Ê!d`ч"͎uqȧ3KD=+0Lmfc:n:. 1{upzU:K܇<cf7w4K m%,~}-z"`NFɃJnqf8/\vOKڏ(QGLvui|)"&w|an_q|_jedhO.^IB5nI\BpAe7{~QV+HIvg4n}ʯƵ?6Aま`GC'C>5 MonO\KK$jIB[h01nI_1I0T[}=QE=־BeТ;Q<&'kA9Sr߃G}u;&Ps=c.I}7p1XU<&荥-Ĵz`*hɐD5ޠ~Pw8қ`Rt پ&ӈ<>cǝf c󬲖fRJFNDoJ R-БCn$ >y{S! .n,.K[Kk^4l+`WM/t҅/onIy~P4qyd*;ov 3W#a˓G_/aəQncĀ$%=fD6ELعe]RN_ד^'uoE(d/t ȮG?-#aJu=n+r3ZX`xPiZ{Y=23;a9ka = T6 L )Fkwdb[`x1.͚dZed!{Fو4/E4$P=#r1]zųtê`}Ґ:~<~#苵LY/~v5`FmHm{љ8&*#hފ$$Hݙe+vSc (39t/VjC /*~݅%d?D;_P~P|#06wL`"߈l'&.b@ڭ;n(MEnqSW1*2?sl>=Y? dNrsG-K*X[>?5^߀EPP>> N>, ~l?%",D_D\]T@- 7¯=W[Xr?8;wJ}`x _k~*rx3G\Ռ4cg+ޙD$Y3)eRE5:&-yr5MjF*_ 3uʅg}(Q cXTi_M練r U#ULSYO'࿂L)cp18IX6vV cn>T.Q qbP?ѲLL+ߒ,;c,hߵSWw\/稔?g:%{DW'`>D!aEɒ!oػSݨYb GPC6޼8M]6]5iT,VPM}]OC)f.m Vn0f8~ׇ3[ԯ$ʫE1†|`~i ݑHvg"[J=]+3?nP KXҘލ_]FOf꙳z5prI)ںk*/1J[LR|~7G?<-A^oB|Ŋպ߮j(2eg|!^pgFZ[#h^H" 0q`uEyL)NYxzD.ZlVuc-Q,q'9@eIZ:e։r BJ ĹlJz^u?s1BęRKb\U %*ꛛRs#{3헏*|+9[4A0wJV@Xn0.`$515_QY~[q|[lV0'%|ڐ?0r#+EH-Fa$L{H]ҿ!Jbud˸aK|-&bOe FQJ#G͛ES Hk()z !}R>E&IyBI4<11 ~IOKJnz0BRbp@{1k`֝3JfO ݑ'Η qRň$} Vnap g{) er/u>SUyߡU·72vB9a;7o IIY\JO_(YdUQ/@\z(-qofmϤlWrQm>b.5;eu+<π: ʑv&fNyN# Ŵ k/f: CF {L}4^?1('#ȸ5vG^ (?Eg7mա~=n NpDɁɎY{id?[RZؿշ1s/ hln(YĹ}glvUHz7՗:ㆼɆku{oDA-mn4c ]NfH׃_*ď7'0k&Z 3x=O;5{;@͙N;0G9#MH#Xe!+{yxɜ Xj7*EܙDuB~fnYzRɯkF5ӳҝ[S5 +o[cҊ,R>9bk$]iƭPOWGAn YfcI^KM'MtaG9KfoS4Z'2.cJMGxJ"l,̌فB:HE[WԀ+ P|sIx42/y Ԋd1_#M y>>t`[k[?oL1J'<` ߥ|.twcµL+X* dtQߵ[VNw]C*9V.o3xDܹǔF怦 =xzt>rUSVb9x~f^RBIϮ_]C'-bK/*0Qnȫs_; '=X\(d]Rݖ̣(c}B@iuuLcS_#z)f'XXϰU!MOT}(| GyG*\ekwEc A>}[a-;?ߺj$#[Jµy¯rV\RO0 !r7!f"Խx/e44;YL'3&8Χ̖̇/^VΆj8SAF{3yY$nh.fce M+F Dvn$5v۰V>˕0-x9QBeWY2uU.l2OsWV!mn .$yݐN úwF*<;?>9J(aXJ=Λ* ETYhwϏILa8$&0*mOܥaCdMٞVpsJ\_1Tp{*;Rǣ#| \BkF&H ABS|pr?+iALUy@upu)8vAa/<v,ǫJo;噆?]iQ}71Q֛J^2v:mlH%tP)v l}*빦Yk=ҵpG.\/8!\{+^񼱈bacOL&ta}- {SSYBMZ.|!yCcӧ[1*~]עt`¥o-hlP*3 j$2 t<:A/氒iIXB-9vzd&D]&Lp%rDGR/T Kz۱эZÓ&gGxsR;'wpL*dgj4^b<;G܀֣ ΎΜvo[U#C;s5hd91=Pe+_OdWneU? VpK!y]N9:Ki2f݈d.*={$=Q T[U,WţD5E"1 la_Lri#zV@H6ՕBD#&Pj;KQvBXG&o <éi u$[OE*R&)b5ᒓZ?uevx\ A[t kǢX꧹^U"cI\8@d ]8[9XZCT#t06RUj7'hw ZoKu,wHLe_PDx6y)>1Ɉf5uOd=~NYәH\{BZ0W[z;?{Ux}F=ͳQ= 0"^*Cdң<B~Bzla3Uy7ofx=YeQ!H\+Ŝ6:2WeO_:vRsSХϮϲjw~so)ǃG&5WήlMi%HrF='>ٲL~KARUc>Ņ5h+,"^z}ʋž4uΓ:@ſt4rIL ~tF D NFբatU5$2rygzNKOp؛Da| u%p_ y)!ZR'vВ! >} B YONegۜ1wq!]6&qiKg( 8@DP }yJznC|v$ 3 @T4nP3q|Tx 咆 GڨK@cM4 ~7'#[4ǏPpV=- ? Uڤf Dȹzh)?By#U^Q8VCv[6<(LlyWBs|nMTžr#W}!}Ld&v ,GaNaI*"$b,Zp-QoEBʻgQQ,y3Ӗa^)dC3#A+C;+!-˶Z]]XMO?~UHsV<#@GH9ds~3wΦRj:N`@"B֎5o VX4=[ʪJm&O$u1`-" #o v'f]kyNKm0$Unѓ;Ι'%K4սiꤳSJ >q@wK=Pخel& a7LwS/A|IT|rNڭ2 F4z.j;jНX{jӞt7XYpH8JG#Z9!L$ :,LzatfGW_)_߹HX??ӏi6kazb+#JCs/ѣgj._Żi~#=؃`"oV~8t)*zlg;ZG`);Yy7XaO(&pvYvߪ %{^XA=h#ݹK*K\0i{-{F|29)%%/0E$C6^iZg`[s@Yxj}"I맼5>uc7wsƗ4N۫nV~\et?UݬvI]:DF\ YU!FUos%|K\ vY{& t'ra_^!`&0MT\׈&,bFB QvZ.zo*0+kaIieazU.JJ5/̞O6pŷHtZ-;E'YfPa]a7e}c3-NI!gXWe K>p]䑳3j[C㑟S4Gߌ6"Оzeũ^ oKIVQ}]^Qٔ9. 4;%>(@ڕΚQN FY\l # qˉΚ'#ylbs5F"5 PCۃ'Ad),gM`u`^X8Ar!AC3Fp&E}<@TU})%BۍM V {Լ"MQN7.>qQ׿K1n!@aS*;%PL-K܉J*Lz^GM?RXg;j^BqzV #XCR =b} 2 c)G=|9o H)'S9qF.(OVrcQB,Kws=1eV2VμASk9v5w3;ӥ|pQ]fg/ӂZTTVV2t1WnPԋ;P8yΆz1LTbDGOQ?Rjbm^BO6-FpcۓDMZ\I@#83yxW,m A{N,aȷcU%{ߐ-_PW QVx; WeJX\nwP鋢1R RoS>L8v~@7gn@Lq c攭;H{Up9YO1:Hew]ERdD(In кs'x=mCfE)oL\5:~?C2f}YQcc~Yh%e(mGTϻVp| k;];t>d"W|KWjx(>A|v9 BT,#b@ _I"]ؚeY(!^}Z4nǾKЦdQy/_%ePG O,oXZllFCf2 \QyC˦օ5PB0~iF܃5>)3-Nf}:2ShhQ_ ڇ$Zqb)M䧘=T GMW;hq4vBRRRi|IT8]:w*C~Oi w&n68@#JZt5Za؏ 0XܢV1*B"am0ͩј6,:/h3Nì*mQse$q?EG~Pei+AjfB.'P7R4{cN:cKHO>+5xX;:0.N?7[۾̖6L*Z&x-wct [Q[̊41++|̭1f/~_ hvm3e! ù¶>;_-ҁ64A}mc΁-CsQ8$SdQOw]'bYhR)՞CkMp"2UXUUGіfd u[i20`?hXu$EveKb`Z_50+xI0QICC|2|.g|CKمlU~;דCNFG_gR'oא BѬ "x|N?97 m)rze#iĂfQ[|jr_6 7~|j w4'DTj !ൟd%UU+8B%?ushx3n6̅LR!0ܐEߑ0M7Ī®do¬y69-'6T&Pe=cШɈ#GΎKu p=l/yz<^~Ob*R+!V2T#Fw(ƌ})c5p{ƺ7{Hc=3/kW&&M ۱?ofNz13x? ڻI\9[5!~(S@CNoY1MGpEybECH*+DWDu+Ҩ_qv0txB4e¤A|Wǽas$n}OQ=̥=k^ޚ[n8ǎK=={3hFdMl%Yda3Hp滥+K_Io[!aEܘ•ø+k Vfv) t_zpWkKȩ~e8(iV*Z lHۆXZmUID1*Ϗ5h(qg-h.b/; aC{P &3`X+iGW2Xu>{]_0(]?Ma@xє2ŏ;Zp*VH(^arhw^Fi|.i<hsl2;6 ;3'KZ:\z6vW 2Ek9&ԏq0]j zm53Y"@aYV% 2ӡݢz)VVoy߉VfumŹŰ/Y&(hThh2X4kSi3^l`k ,\2\Hs8 |2FN[ \uMQo%U:_bY=Z[+<ܦRp̑Ɉ@cx@p%!q:x /_6jy:HA yd.wFi#=I<s;B߱<%mW{ ]my Ν0uudg-k jD1 OG?{.aKF(?zD[2:!<q aӳ{`R ^V8Z욄6({Oɢg 8q*ar˰P%fkVTڷ nv'fLTīՓ퍗§x!aDuCOx P Jb^~n{By )e}(DPZ9m sQOb%޻H"tW'yaۊ~=M0Oaڨ4pgWP~m*vg1;2$0(l2>ha?aψkkhjW_6,6iZ;Wq+$`V#Nx9:LډnD~ǽ.:4Ħ~`wTz_JօQ$G'[srT {:q{ [Aq7#HMϤm؜iȆG#[ط"A3vRj1xV!슱TUGk{\ojaw=={Xr'wz ;g0C5t'|JΥ=}ڌh"9+ucNBz4GLbŐG Yso_2졋ڨ\ӯ9$G(;$hx<NR<ݑCfiC M-8azK^^;X,%ކJ3!~I Ȯ-auXIưsr0{5.3͋ô&)'oeV4 VkBZ*e}OK]+90feaߧ׫4ޙQgf++=( us}\9a4nF| m~N$ Kh=b;0vԆ6RSzCW#;xOn; )^Knd^]2f1eXj/in}q>i?SCYmr,&,p.BP' )oT˛ R"\^[>㶋0XW#PcAQ0:3 c#<v>iU𘤱>`Na\#g.4rGt|Q.*W8+ޓ; t+RщX"iyQB&EE=[UlCN{X-0s8y U5'xzL|׻$N_my&nJ/e|Pj2Pi neGKu|cg & >g08|[נΔUnUܐ Ρ"mqSG1FNa+ᜄ!>(T,i֔x@_Ñz-lRiw:BĎ(JrgKmSy#a#5Hs\H [Φ>}R4/X!["} wTv Y%:?b-%S˞GJ|w<UIQ l|E/5mpA b[ёTQR=i&`t(aYBŐbu.ۘDn4Q qNJfMJ{tzr76]jDzy1b-6$ȼ|˲ NԷʾMIލYϧ`4] Kj8:zlm'S N| %J]zkGNCmLXʼn}|0]0.&-.!}UPVV/ro (N\r?74.VxsC_JB~l1=*=b*eHf # V7 }]eq,1df6-`<~mᰎDͿFv+v[!H=a lݥROQ0S&a=仞ZK[0V:70ҒR~4 M6%Z~a?$j"WMo9*N1Vq:uCBg{L0e-U0 0zg%Z?+" #%9U,u! 9qifxfLUEfxV>9#+ؿUV?x/I^!,i}c\OZ^ľ!2|6 ؈E${ucmݨ\'zcTDkTK1'p,Qp1 8,] ƓWкK'7i6,4˭JcξH;L nQ`#UK:dnlA*3^Ƃv&^Bgf~B7@I˫,X| "m㎴rks[،sߺ%EH8X[iE4|A h=/ 1?d8N9[HA{_^/Y8OV~.W[C|y۱-fDJ%͹8Nq}0Jr[tԨ/wUFȻz>Ye䀂4I .jǥ먅!-3ۿWf$5Ëb}+FkuB[cMf1AמTrڸ\\@,+ 0U_G]l'OO|ܿ(Xxkʞ 3 jq#[ g 0-j:uf$[eI_U|&3"Ӛ-"qX]{qٞU;tiyB/$a 9{a-=y,okSBp?X `^ED ܊-[N|tamb l9E iATW*?")N(v?]j 10WȞ G)%k'WioyM+cHb|@`NRZeO m$x=g 3}ldc!~Sx]U*s2F>aC,iILf;2,GzumL#_X;K2A"Jڲ8nyFnRȹ͑X\w$߫%.K9K$b$=&/R$8# e@XG"6Y^P܍#%T,Tea25_d.R)1ɭ7zTF'R7b%V!2c,P`M6Fv:BE"g~h"!훴tuv̫U,bvl{U2[@7!Yufl&I*b=: f{|9(SQV܂ZQ^xM˰#`3Xᦦ͋?fZ+O3EX.:>e\ǢD\'znvu9j#'*k[1sq#ؾ*JQH?vvzYe]@30$ 7Agm7)p_ jT%g 9vO.sRτNQ,Y!D2ȞVSW,0\4{^6:w?M[19M@밝_苦sBDMB!EF;.v䀍 Jf8++M#8yHՙBA9XB|p򂥓;lQ97O,7M[XZ2F X ٸK㇦ffgar#`u'}<߸;G ;  fH Bt%;:qDP/~IBlr;bTX@1_. &FBɂSm[G̍mt;F%G!pPn,佾Q7Bv1Ӎ i[-9@g3|_lOMš&w-\X;=Ljm觌'0V4ރɚ@V)9*lZ XYB* hqшɗ.:6ZxZ|Qo>C'Հy ȸ>aa x+6e pb΋sH4AMUB </m=3`LT">t]DY2B L#2_\/ r6ZY'PJ!4IR3"e:1^!g%JC.++ ǥ]yY6,+骻??XO$fIeeDRR )U/kOsb!ْ|HC' Y)|ZA;PMwYJ;*Kt&-w)BD=dKMʉk^Dj#= X\\4Ilv-|02*?yXy]Yv ]QR?~)Nn0#i~!Y[Z{+GSԜrPdV׭gGjazХ=4@Y`"ߘ#ܡ\کN ^ rغnKŮ\یi%kO1x<Ҷ'fבCp}b@J߯oޒK$0Cߨt[ n0o=vɀ H93eX d}NpOn|x\h{u5bEdE?B ﷪.|Ynp>aJiݱ\&@@ "jTR6~ُ<<@iCQgRŬpGlŞue>>2I)]Q6yuҭGI90&>hL25ڵZf 7i|Br b$ofu[}bK)^?2*ۅw®CWn*ꠛhgPw9=c`cpX]oҮ/zJ:7\# [[ˣP1(4ȕ&m)yU&0_~RtbȲ`K5h{P(K|eZΤv>#=Rh׳ ,T;'e콰'+t7 mC(%"F̡Lhaeu ݑn'g\{eEh F,ήƕvΈ!T7<~'q@87K(;?'(m"?[(Ep i=5'09IK;v2CqnֲQ%(?_L~ןZIfF(Jݼ<~2=rmm@d) T]]q~Կ.@;9oVOcb'|-DؼU,Xr/+/ ǒem<4T] An΁[>Rډxy"N5gx704LT>J=Zdm=1WxGM ?Fm&E2IOo]$# AA??Qn \A&h\yit;{ R"^9ޜvdx;ひA !Ërd~,*cgXZ'64FbT/ź|ZU?{v0&1  @rTਖ਼xRwQW)DL zRtJ*hdn`<#0M?iJ tg [[_RFYh-60eK)OZ7n*Π/xw|Ĥ(Wqgg?A9;넮gM9ԥ>XSn"pGV[!1vNDZviPWd Q}~Q/+OVk5sH3%D5al~jL~u15(ٶd> ,j+o8?q0}v04\OW}:kbT?RLS[%{,RؠK~6݊HătMP~Vvk%u_&P'p Z(O*8xպB%-mVꑸK){A WB~ϧ.].IlpvceQ~LU?e n~V9侱s9ܵiWyP,rdmk!o/^-ʓ9z49JDM/-0-HnEHOPu,hC[sugs<`K 6O!AU?‘׮85XQŬtRIޛ ҍDZ+&Z(I'/FP]sf^>{ #DPI :eeA ґu^Pfk3Uc?H~A'kCew{]@J(Q#8h'Պ1{,"<2jeg-)bO%תF]UA|Z\2yG,Pr8'e'c~¼>)syBBd F(+BH>L~ՀhTmTq=no/I+0!\Db&] z۳^Aʭ&Ң ͤ*gKk+V}wv4Z&+0N>gme3yݎO\Ʊ?NN>vB xB eOpɝNK`߈̮GY,#݊j9D_|7zϸw#e!}{5n5 %ikЀJfshwi5ˆ;;j_LnP%\[?qlvlZSj']B+Sf4!nm%Y?ۇ6 Jqen`6"{lۗ >E77%>dDJԣ HbTmڇc+U4p h_G.Xv{x4LH{eT.¾x_~He#{[f&h#YT(4?0*OuWqAKq4hxËU -n4pX7kFUh2䢆4d8B$բd$Kjr ح0@k&(3"o|E?Go),V ͵15Qk:,w DnjCpvd_x*ċQ FDž]}Yx-%jH3:\j]x1:>$rO{/x HgG5|K6.5^\L00Z7@sA掬|&T76D(%#y]. #6}~/s,p #ģ@Z$ >t+5* G|8<_Im"BuXO|սբ1~ F));yfLY|uDWE })a+LMoJMÍ`Nl45 ޯ&-wyC%x>z'5r-< //w + WPUu`piV3LW <|2b06}.ȥH;tҘ N9ɞ8AIE!oRU/ Ml(tv kע`?`G F;Mw5ިlV;ҥPOl?O9Xj 5w-jH\g_[.*7q紫LQo3c >UijBIb^jN<"|3⸈tїcE /''.&o,!Y@/Ps.qo׿Yb:GE:sppp7|K*%#g!NOW>(Z`?|}s~g9T!UG% HI4T;}| W  sOs!aB\(ʽ`:NdBL&nxd%Q Gaٔog*;(Mh+P{Ϭuǘv9b(<3ut$zUg:]ŝΜ~3[a8B~-ݴ32#!r)_=t,)@|0Fi% Au; O j_c8ڜq%C[blA{w7ђcw#-e| ?`ɜ 2'̾ȼr!cKg4ytƒ[rvQ4sJoeAc|+ Պ`x E ĸoNpMokp5ͯ``8#ꏈ<WָϼkEuv2 ͅ'vs&C0V/eC`g=[' Nv B$'3|IcPgSj KO]Id>>}11=< $g@'MAhne `!-jHP [}ctݲ, {x=#;4J8ct2m14 3 pAq]ϭ ?E->I&1ԑlg*2Ʋ1fT?uG^Dֺb Ua E`_V_TϠf:tM=PGTU 6YL4$e[qgÒD[kj(39TDF2c]5za=3(;X8n+.r7;/XlO4FxK޹0SnY5TpP~ A=74= endstream endobj 495 0 obj << /Length1 1306 /Length2 1345 /Length3 0 /Length 2180 /Filter /FlateDecode >> stream xڍS 8Tޱ]EOQ-O2AR*Yk̬1&Q;]RNH؅JEI]ӖP.]8g h9Y]O1l ōidpqQ St' OvX"E0+pfJ gfjA[eA:j I,8c(,%bb p |8DB(pp,"^BBqWL a`%q"ɐHJ$ֆF@$e`-$'K#N8<0>.$0 B R"Cy'WN ` liMt qH  |DulW2)P|(B?OlzN'J1.%KF2 f{gD0KI %L7hاAy|e<"2nCH_l0T܌`r 1<)D abL Dp8‡?R .a_;H4!\J0;1  6S U|B(B)[re)o3b˄qo~H{| ' !2ѷ^'"v?P\L0\{kBgH"$*:10O<8t\BF1 |LBR)4$b;'G>0 sIM1eL`~LK,qG D/a@QVCSOY7;9Vq5hi JۍvZ=F*w\ɏ+ܕi0o(/Ź.ީ-/!k$%i14TbJY饹6y2eҾ55o_ݹOgxvhҖݭ)vH>Tů4,g5Pi/Xgn5 7D7Պ:3ya AM5o|I_Ԑ'{wζbAOliEiGs 2_fj4rgz9Gf[Wk3}/J9h~?Uk|4R[ٜNTش@__vdݼcp"=Oy\ظ+t38cZs2.-ӱ('5u]팴^Hb+M:wUz.& [G6Z̸9!k&lĕԭR?:I=tm/#Xa RG"2dtOW'=nU$ǃ/:^-2YeINVyé<-GDUn+˝qcxitz8gdYBR%GMܸ}ŗʧns7xfkP*3SLP~PoT$\1 w7Wu}}flYSW-*Nyi/ }xzGxVQ³:3 yFœ9.^o2js> stream x\IsHWFۄcbnҒh 0H5 wxef)Rߡ#b*d~@ia ^ tE(p #T9/oQ׹+2ABHWB!1;Z%#% a-vd!<ǎ*Dх:0NJ 1Rd e nGHSH e'C,|; W(C<[jšZd7ŕݑ;ȖpVH]G  itBMpp +k ЁYJjGmK;V8fhp X2li VVlk`{GFݵP.0CJG%m DŽ!q>F耎,rGBZ\ BA ufY҂exTR9 Ŏ` n`&s0C-5 Ief@OPLơ abj 1vGQŀP4]8j h+ PK! DU@Ee`Ah"%9PK-@ [Pu1*?4U]IALC P˝w/U^ .?5ը8v\Mdzi5%Sϫz7\ ע4%@7 Vΐ7?sEv[<Ƌt^gV[+a' գO;lo<9&~al`iS*9)uJ`0nx`'{2~=.AiTYS@tZ/p.*Y;Jw%E[hT2ZKNzU9m%XjZ7j"7HL$#L~1><վo0W^ߗVҚgo+Τ6m;Z-qB̪pH6 Ф!ٔAa.aÜb>|H7`M=??]6??}Q?˗;Qu3e?dZ1”T@47TJww 1bMi!P!LDǎˆiii]=rV+p13#KL[W#$WMYL٨~pYgc5(*v1Ϯt|5nt|@^:: fCrQ@ Jށ2ʨソwLrl8jQ yI XDrQt NCXKL6I|~SX * b7] l Iաv3)sMJ{3́Fcy8@AUl %x! X^>D}oھ"+zz `1j2>=E@t`bXKITKX㴵YSlF ;@Q:0Z˻fϫ2 rz5+<+ܡx9}5ufOFը(uF?4I X~,l1͠4,7("ENr*;xߟĝs>Sŧ6[Ko6]k*~ھݱݱ5\!KCo*Qg:HK (DT[!JȉEgi%sK꧄H1 } I+śiNhJ~9 yJI{=rP:SsDPGDF,;{hQ1aK^2&Ϡsױ@L$i]Hn#.(I :l7T(^oqI(ě8 UUx&v46 xڨ{ոAC%zB)d![g-tD$(Q&!r%s1g[@vHs47,0Qf>3Loh'C@4)]W݈`<+;8=Gd)a׺#NKUWTezv*ۤ<3ͧm(5mםw9ܷgq !S cGkcE/Cws@ 3': jm\JUbD0Dg Hɵyqmt{DZltN !dm~D퇂8zϑ뱗+as_F.[ ;`"T!=w!I5S nc QP/u<|{pZQgC9Z-pjڦuAP4l@paKAt"fts60AP8,!`LSő $ecKhf.`oI& Hp2SX )-" !A$GS „]S@OJ,<7Ћ0ДBRp' rƾ}0, bMo<㈺7E3KǦ 1&t4#M,y:)yx](K@SPJ"en I q%FZJ8V1&ȉUAzEФEsɯ|S.!Aj%"A'rʓa(RB JXx9XWȓ7JS`[L"bz-]X6C/!Q$4_R 9 #0OM;)B%xޢIaő,cD$MRH-$+8ʋV(#ƙUeb b 6Im wwT;NCލQLA1S>4I6[)&44?AbE1Lw# D;D=Q%r,$$%!GюCRnog[?Om'tbڑ4KJzdoHKJ㧵b_TdֻK9O伌mDeS~ULvѻYIIc"i ntl;bH~?qFl%!&<~cakCy#3EXaͷFe1#n?isdYBn}^]hnY=܅1Zamu}] ;,9*l? μ]zJܓEAF|WxG~]U%jMj"ᙷ3Tiɣ^ "9yXnt2Wn$eVp(ƴH#VâݺVc'e|]у#c!qҘjcߓӏ%qDwM{ʷiEjSXtm/Τ/.کVRBmP`lє POX&Zg(4[<ѤWՓ {q2u# Jl1P],GFawL IVx}>h.}nѴ2LQOkfsVYj9_aU"_V^}|l~7ױ?3訝B:I\; 5%x#waG.oAk:}+}*- /QY?V̀4P Tngst ݠ:r۠uw=ZxJjqOP)*Vaw~o`dȝsr%wHKRqۻO_q_`'MH3׽ʽ|oe{s,v-{q7;8tTlpVWjZOX&OU_aga=gM1(P9 Yt8CB [bogN$rׇ{G򎸅\"<>j=b25ʁ[ZP}Uʝtw{$m6]ǮݦvzZM=n F3#M}~kjBTҥ PC&Ũeem]%I]ƴJ}+$mM#q+0MnQJ*"G'4I.[B\>,I{iE?5!g/Ћoדi^o {W5S4eޭaj}F.& &'L0szH^$ IYAl]/hCi1mHK&]4u^Z$mIilf#M jwm-$V'uj}/Frof4H5+ǽ] -,UPij?t endstream endobj 524 0 obj << /Producer (pdfTeX-1.40.21) /Author(Michael Hahsler, Kurt Hornik)/Title(TSP \205 Infrastructure for the Traveling Salesperson Problem)/Subject()/Creator(LaTeX with hyperref)/Keywords(combinatorial optimization, traveling salesman problem, R) /CreationDate (D:20220221143639-06'00') /ModDate (D:20220221143639-06'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020/Debian) kpathsea version 6.3.2) >> endobj 497 0 obj << /Type /ObjStm /N 58 /First 489 /Length 2372 /Filter /FlateDecode >> stream xY[s:~c:93MҤIstQbMmG(J.I'~̍"D0M5DpxTH+DXDZƸ&'%LR5a J3I SsCFN$!4,ks 2P 6\b740g "!DP)'FFI<a& `(LV#" 8JQx@T`$ PC &jA+paeh gDGp<(b8UH 1Z{f1FX@ 4CD!Z=կUBvY5ٹ\O^\&!;NO^Y~zg}"]Uy|H EYHTd&%Bsf6A?`w/oVIVy #Tm#Fk B} Jt.n>xζ|!}/vϮo:f| 9|ngwɁwk-_Rl)dXA .9|ws>x|n߿:;E<-kyeÂcO_} {Ewۑ9+m7nL6+t``k~xƔEρl y2&Hρ 5ȶ56akpd"<ܯ69G|ѵ?} x_H?*UMwkȍkڧ ո%7ITyCgjfUEAo5LEZKiCmH~-TkJCK;l:.qKc"Q>Y`eF:D\0~-bbb[t.\^HQKa .6\24jbDfٍYㅵ2 Zv m'SG 0GWOJ{'eA>{}YE]LfM(v]d/N`ӫyPe*>ϗux/*iIEE<U<-xZ$JX,-֥Y\L^lӃ.AV]^,Fen8SNC2æerv=#]mrU͒zfU?S5Oߥ872_[xa4LLu͖\ ,%p9 ̗d޺CK9fJYz`XU!M {]2fHQ, 9fzH"B:,b"۲YSJ٠DLZm#h:`z0G:HIQkȓEʂT Ϊ$T.;' YvQG/7H 4ǰ #|: % 9?L`DGK+BZs56kv̽gl\;Zrj<0?bWIC> ;,9a'q\ƓA9$~Iȿ}]%4ǷL(E&HP3IGtβrAqH-t:x=YTujq_e}/p2h@ ]a!2HZBR^l ƢVئ | @5__ܥpC̼Ia\#­!-2c0wk\sӫ+lֿapB up bVm $ǁ%iz-hLǏXYj;kE#~$ d!?/eM; 㰢qTX2gB;0xPaiQDe;g_Uu:4zBlq\A" c<# 'se`z(0# דOY1uk:F(0- \Ƹݤu%}ۢnZ=5_Zz#wf?Z?嬘G#.|m>]\4Mv*v]~/C endstream endobj 525 0 obj << /Type /XRef /Index [0 526] /Size 526 /W [1 3 1] /Root 523 0 R /Info 524 0 R /ID [<8E92CBD645BA70E90FFC7FC6B4E3A5C3> <8E92CBD645BA70E90FFC7FC6B4E3A5C3>] /Length 1310 /Filter /FlateDecode >> stream x%Ih^Uy/mt!mڴi4i&M34i$vHAFPpR'Dt#" ]FDuV.q޹9YY06b= k(bu85X@ k*U<6 F|+y[c#XrE- ,7o)K@3K2 ԾM!|̒iCکЊ´ll;@ vv{AШMuYp\pW @Y؊e糥HlA8A8zA8~0 6 _`!N1^Zi/10&iq0kɑ]gh`AË/Z;W?G~̂>I@Q%ǫ$_f Xi_O6J~|L>zD$q."ei-lه]ovesDqog5& wM[b4ueV^YmOd!nA0n-`'hsqu}Fی4ƸZWAhl7"$6^9v{^{}D:`?貼^ A;F#q{i`Hȅl̻ze pF:a34p%$%z,[rKqFt"ɉ#bH$ v&+h74{4DLS%[ &v"ة ڤG~aO,VV` (DO>uu~JYH=qÖΚ-+O+XVnVYCV玬a_kR֨?-5?%k^Z,k7:nkLX&YVyG )%kڪȚKA!")VAЏ~W LA P$ a/{A "^` EU?#X'm endstream endobj startxref 899956 %%EOF TSP/inst/examples/0000755000175000017500000000000012606077054013654 5ustar nileshnileshTSP/inst/examples/d493.tsp0000644000175000017500000003277512606077054015105 0ustar nileshnileshNAME : d493 COMMENT : Drilling problem (Reinelt) TYPE : TSP DIMENSION : 493 EDGE_WEIGHT_TYPE : EUC_2D NODE_COORD_SECTION 1 0.00000e+00 0.00000e+00 2 1.11630e+03 1.55520e+03 3 1.35760e+03 1.47900e+03 4 1.14810e+03 1.77110e+03 5 1.18620e+03 1.79650e+03 6 1.20520e+03 1.88540e+03 7 1.23700e+03 1.99340e+03 8 1.30050e+03 2.00610e+03 9 1.16080e+03 2.02510e+03 10 1.17350e+03 2.03780e+03 11 1.22430e+03 2.05050e+03 12 1.35130e+03 2.24100e+03 13 1.73230e+03 2.13310e+03 14 1.74500e+03 2.19020e+03 15 1.76400e+03 2.29180e+03 16 1.76400e+03 2.34260e+03 17 1.73230e+03 2.39340e+03 18 1.74500e+03 2.41880e+03 19 1.64970e+03 2.43150e+03 20 1.75770e+03 2.52040e+03 21 2.29740e+03 1.77110e+03 22 2.21490e+03 1.42820e+03 23 2.22760e+03 1.33930e+03 24 2.18310e+03 1.32030e+03 25 2.61490e+03 1.11070e+03 26 2.50700e+03 1.16150e+03 27 2.34820e+03 9.52000e+02 28 2.22120e+03 1.00910e+03 29 2.20850e+03 1.08530e+03 30 2.20220e+03 1.13610e+03 31 2.21490e+03 1.17420e+03 32 2.02440e+03 1.12340e+03 33 2.04340e+03 1.30120e+03 34 1.94820e+03 1.30760e+03 35 1.94180e+03 1.39010e+03 36 1.84660e+03 1.41550e+03 37 1.75770e+03 1.36470e+03 38 1.80210e+03 1.35200e+03 39 1.83390e+03 1.26310e+03 40 1.73230e+03 1.25040e+03 41 2.04340e+03 1.58060e+03 42 2.04980e+03 1.74570e+03 43 1.99900e+03 1.80290e+03 44 1.96090e+03 1.81560e+03 45 2.05610e+03 1.82190e+03 46 2.01170e+03 1.82830e+03 47 2.04340e+03 1.85370e+03 48 1.84660e+03 1.78380e+03 49 1.82120e+03 1.82830e+03 50 1.84660e+03 1.86640e+03 51 1.81480e+03 1.65050e+03 52 1.66880e+03 1.80920e+03 53 1.85930e+03 2.16480e+03 54 1.98630e+03 2.13310e+03 55 2.01170e+03 2.17750e+03 56 1.94820e+03 2.19660e+03 57 1.89100e+03 2.24740e+03 58 2.01170e+03 2.27280e+03 59 2.03710e+03 2.30450e+03 60 2.05610e+03 2.35530e+03 61 1.89740e+03 2.41250e+03 62 1.89740e+03 2.45690e+03 63 1.91640e+03 2.46960e+03 64 2.05610e+03 2.46960e+03 65 2.15770e+03 2.13940e+03 66 1.63700e+03 2.69820e+03 67 1.70690e+03 2.70460e+03 68 1.76400e+03 2.74900e+03 69 1.70690e+03 2.77440e+03 70 1.76400e+03 2.79980e+03 71 1.87200e+03 3.06650e+03 72 1.85290e+03 3.00300e+03 73 1.87200e+03 2.99670e+03 74 1.89740e+03 2.99670e+03 75 2.21490e+03 2.97130e+03 76 2.19580e+03 2.93950e+03 77 2.24660e+03 2.88870e+03 78 1.89100e+03 2.86970e+03 79 2.20220e+03 2.84430e+03 80 1.90370e+03 2.81890e+03 81 1.87200e+03 2.81890e+03 82 2.01170e+03 2.76170e+03 83 1.90370e+03 2.69820e+03 84 1.95450e+03 2.58390e+03 85 2.05610e+03 2.57760e+03 86 2.09420e+03 2.56490e+03 87 2.19580e+03 2.47600e+03 88 2.58950e+03 2.99030e+03 89 2.60860e+03 2.99030e+03 90 2.50700e+03 3.00300e+03 91 2.89430e+03 3.04750e+03 92 2.89430e+03 3.00300e+03 93 2.90700e+03 2.97130e+03 94 3.02770e+03 3.04750e+03 95 2.79270e+03 2.81250e+03 96 2.22760e+03 2.81250e+03 97 2.58320e+03 2.79980e+03 98 2.59590e+03 2.77440e+03 99 2.50700e+03 2.77440e+03 100 2.72290e+03 2.75540e+03 101 2.61490e+03 2.74900e+03 102 2.88800e+03 2.73000e+03 103 3.21180e+03 2.73000e+03 104 3.14200e+03 2.71730e+03 105 2.75460e+03 2.69820e+03 106 2.45620e+03 2.69820e+03 107 2.57050e+03 2.62200e+03 108 2.72290e+03 2.62200e+03 109 3.36420e+03 2.62200e+03 110 2.90070e+03 2.61570e+03 111 3.13560e+03 2.60300e+03 112 2.71020e+03 2.59660e+03 113 2.71650e+03 2.54580e+03 114 2.88800e+03 2.53310e+03 115 2.84990e+03 2.51410e+03 116 2.29740e+03 2.51410e+03 117 2.60860e+03 2.49500e+03 118 3.22450e+03 2.48870e+03 119 2.69110e+03 2.47600e+03 120 2.87530e+03 2.43790e+03 121 2.50060e+03 2.41880e+03 122 2.43080e+03 2.39980e+03 123 2.87530e+03 2.39980e+03 124 3.12930e+03 2.36800e+03 125 2.58320e+03 2.36800e+03 126 2.49430e+03 2.36800e+03 127 2.78000e+03 2.36170e+03 128 2.33550e+03 2.35530e+03 129 2.61490e+03 2.31720e+03 130 2.92610e+03 2.30450e+03 131 2.80540e+03 2.29180e+03 132 2.58320e+03 2.29180e+03 133 2.82450e+03 2.28550e+03 134 2.86260e+03 2.27910e+03 135 2.79910e+03 2.26010e+03 136 2.69110e+03 2.26010e+03 137 2.75460e+03 2.25370e+03 138 2.91340e+03 2.25370e+03 139 2.34820e+03 2.24100e+03 140 2.90700e+03 2.23470e+03 141 3.13560e+03 2.23470e+03 142 2.92610e+03 2.22830e+03 143 3.43410e+03 2.20290e+03 144 2.88160e+03 2.19020e+03 145 2.60220e+03 2.19020e+03 146 2.71020e+03 2.16480e+03 147 2.79270e+03 2.14580e+03 148 2.82450e+03 2.13310e+03 149 2.42440e+03 2.10770e+03 150 2.86890e+03 2.10130e+03 151 3.43410e+03 2.10130e+03 152 2.61490e+03 2.08860e+03 153 3.07850e+03 2.08230e+03 154 2.58950e+03 2.07590e+03 155 2.48790e+03 2.06320e+03 156 2.73560e+03 2.06320e+03 157 3.44680e+03 2.04420e+03 158 3.35150e+03 2.03150e+03 159 2.62760e+03 2.01880e+03 160 2.69750e+03 2.00610e+03 161 2.48790e+03 1.99340e+03 162 2.68480e+03 1.97430e+03 163 2.46250e+03 1.96800e+03 164 3.13560e+03 1.96800e+03 165 3.39600e+03 1.96800e+03 166 2.74830e+03 1.96160e+03 167 2.72290e+03 1.96160e+03 168 3.23090e+03 1.95530e+03 169 2.97050e+03 1.94260e+03 170 2.47520e+03 1.93620e+03 171 2.51330e+03 1.92350e+03 172 2.92610e+03 1.91720e+03 173 2.49430e+03 1.91080e+03 174 2.61490e+03 1.90450e+03 175 2.51970e+03 1.89180e+03 176 2.58950e+03 1.89180e+03 177 3.40870e+03 1.89180e+03 178 3.64360e+03 1.89180e+03 179 2.78640e+03 1.88540e+03 180 2.65940e+03 1.88540e+03 181 2.49430e+03 1.87910e+03 182 2.95780e+03 1.87910e+03 183 3.45950e+03 1.87910e+03 184 3.05310e+03 1.86640e+03 185 2.77370e+03 1.86640e+03 186 2.71020e+03 1.86640e+03 187 3.23720e+03 1.85370e+03 188 3.32610e+03 1.85370e+03 189 2.73560e+03 1.84730e+03 190 2.49430e+03 1.83460e+03 191 3.26900e+03 1.83460e+03 192 3.30710e+03 1.83460e+03 193 3.36420e+03 1.83460e+03 194 2.67210e+03 1.82830e+03 195 3.35150e+03 1.82190e+03 196 3.47220e+03 1.82190e+03 197 2.86890e+03 1.81560e+03 198 2.81180e+03 1.80920e+03 199 3.35150e+03 1.80290e+03 200 3.29440e+03 1.79650e+03 201 2.54510e+03 1.79650e+03 202 3.11020e+03 1.77750e+03 203 3.16100e+03 1.77750e+03 204 3.28170e+03 1.77750e+03 205 3.33880e+03 1.75840e+03 206 2.99590e+03 1.75840e+03 207 3.19910e+03 1.72030e+03 208 3.00230e+03 1.72030e+03 209 2.63400e+03 1.72030e+03 210 2.50700e+03 1.70760e+03 211 2.96420e+03 1.70760e+03 212 3.05940e+03 1.70760e+03 213 3.09750e+03 1.70760e+03 214 3.64360e+03 1.70760e+03 215 2.80540e+03 1.70130e+03 216 2.58320e+03 1.69490e+03 217 3.07850e+03 1.69490e+03 218 2.89430e+03 1.68860e+03 219 3.14830e+03 1.68220e+03 220 3.21820e+03 1.66320e+03 221 3.19910e+03 1.66320e+03 222 2.72920e+03 1.66320e+03 223 2.95150e+03 1.65050e+03 224 2.43080e+03 1.64410e+03 225 2.50700e+03 1.63140e+03 226 3.59920e+03 1.63140e+03 227 3.13560e+03 1.62510e+03 228 3.07850e+03 1.62510e+03 229 3.05940e+03 1.62510e+03 230 2.77370e+03 1.62510e+03 231 2.91340e+03 1.61870e+03 232 3.30710e+03 1.61870e+03 233 3.13560e+03 1.60600e+03 234 3.01500e+03 1.60600e+03 235 2.42440e+03 1.59970e+03 236 2.83080e+03 1.59330e+03 237 3.29440e+03 1.59330e+03 238 3.12930e+03 1.58060e+03 239 3.37690e+03 1.56790e+03 240 2.61490e+03 1.56790e+03 241 2.93240e+03 1.54890e+03 242 3.04620e+03 1.54730e+03 243 3.07220e+03 1.54730e+03 244 3.09820e+03 1.54730e+03 245 3.12420e+03 1.54730e+03 246 3.15020e+03 1.54730e+03 247 3.17620e+03 1.54730e+03 248 3.20220e+03 1.54730e+03 249 3.22820e+03 1.54730e+03 250 3.25420e+03 1.54730e+03 251 3.28020e+03 1.54730e+03 252 3.30620e+03 1.54730e+03 253 3.33220e+03 1.54730e+03 254 3.35820e+03 1.54730e+03 255 2.72290e+03 1.53620e+03 256 3.06570e+03 1.52460e+03 257 3.11120e+03 1.52460e+03 258 3.13720e+03 1.52460e+03 259 3.16320e+03 1.52460e+03 260 3.18920e+03 1.52460e+03 261 3.21520e+03 1.52460e+03 262 3.24120e+03 1.52460e+03 263 3.26720e+03 1.52460e+03 264 3.29320e+03 1.52460e+03 265 3.34520e+03 1.52460e+03 266 2.43710e+03 1.52350e+03 267 2.96420e+03 1.51080e+03 268 2.74190e+03 1.50440e+03 269 2.43080e+03 1.50440e+03 270 3.41350e+03 1.49860e+03 271 2.99750e+03 1.49210e+03 272 2.82450e+03 1.48540e+03 273 3.02020e+03 1.47910e+03 274 3.39070e+03 1.47910e+03 275 3.41350e+03 1.47260e+03 276 2.83720e+03 1.46630e+03 277 2.60860e+03 1.46630e+03 278 2.99750e+03 1.46610e+03 279 3.10470e+03 1.46610e+03 280 3.13070e+03 1.46610e+03 281 3.15670e+03 1.46610e+03 282 3.18270e+03 1.46610e+03 283 3.20870e+03 1.46610e+03 284 3.23470e+03 1.46610e+03 285 3.26070e+03 1.46610e+03 286 3.28670e+03 1.46610e+03 287 3.31270e+03 1.46610e+03 288 3.41350e+03 1.44660e+03 289 3.07870e+03 1.44660e+03 290 3.11770e+03 1.44330e+03 291 3.14370e+03 1.44330e+03 292 3.16970e+03 1.44330e+03 293 3.19570e+03 1.44330e+03 294 3.22170e+03 1.44330e+03 295 3.24770e+03 1.44330e+03 296 3.27370e+03 1.44330e+03 297 2.90070e+03 1.44090e+03 298 2.69110e+03 1.44090e+03 299 2.99750e+03 1.44010e+03 300 3.33220e+03 1.44010e+03 301 2.43710e+03 1.43460e+03 302 3.39070e+03 1.43360e+03 303 3.30950e+03 1.42710e+03 304 3.02020e+03 1.42710e+03 305 2.58320e+03 1.42190e+03 306 3.07870e+03 1.42060e+03 307 3.41350e+03 1.42060e+03 308 3.28350e+03 1.41730e+03 309 3.12750e+03 1.41730e+03 310 2.99750e+03 1.41410e+03 311 3.33220e+03 1.41410e+03 312 3.23720e+03 1.40920e+03 313 3.19910e+03 1.40920e+03 314 3.10150e+03 1.40760e+03 315 3.39070e+03 1.40760e+03 316 3.44040e+03 1.40280e+03 317 2.95150e+03 1.40280e+03 318 3.02020e+03 1.40110e+03 319 3.30950e+03 1.40110e+03 320 3.41350e+03 1.39460e+03 321 3.07870e+03 1.39460e+03 322 3.16100e+03 1.39010e+03 323 2.99750e+03 1.38810e+03 324 3.33220e+03 1.38810e+03 325 2.93880e+03 1.38380e+03 326 2.87530e+03 1.38380e+03 327 3.10150e+03 1.38160e+03 328 3.39070e+03 1.38160e+03 329 3.13990e+03 1.37540e+03 330 3.02020e+03 1.37510e+03 331 3.30950e+03 1.37510e+03 332 3.41350e+03 1.36860e+03 333 3.07870e+03 1.36860e+03 334 2.79910e+03 1.36470e+03 335 3.59920e+03 1.36470e+03 336 3.33220e+03 1.36210e+03 337 2.99750e+03 1.36210e+03 338 3.10150e+03 1.35560e+03 339 3.39070e+03 1.35560e+03 340 3.26900e+03 1.35200e+03 341 2.91970e+03 1.35200e+03 342 2.83720e+03 1.35200e+03 343 3.02020e+03 1.34910e+03 344 3.30950e+03 1.34910e+03 345 2.87530e+03 1.34570e+03 346 3.07870e+03 1.34260e+03 347 3.41350e+03 1.34260e+03 348 3.48490e+03 1.33930e+03 349 2.97050e+03 1.33930e+03 350 2.99750e+03 1.33610e+03 351 3.33220e+03 1.33610e+03 352 2.91340e+03 1.33300e+03 353 3.10150e+03 1.32960e+03 354 3.39070e+03 1.32960e+03 355 3.30950e+03 1.32310e+03 356 3.24360e+03 1.32310e+03 357 3.02020e+03 1.32310e+03 358 2.95780e+03 1.32030e+03 359 3.15470e+03 1.32030e+03 360 3.07870e+03 1.31660e+03 361 3.41350e+03 1.31660e+03 362 3.61190e+03 1.31390e+03 363 3.33220e+03 1.31010e+03 364 2.99750e+03 1.31010e+03 365 3.10150e+03 1.30360e+03 366 3.39070e+03 1.30360e+03 367 3.30950e+03 1.29710e+03 368 3.02020e+03 1.29710e+03 369 2.84990e+03 1.29490e+03 370 2.87530e+03 1.29490e+03 371 2.90070e+03 1.29490e+03 372 3.54200e+03 1.29490e+03 373 3.41350e+03 1.29060e+03 374 3.07870e+03 1.29060e+03 375 3.17370e+03 1.28850e+03 376 3.33220e+03 1.28410e+03 377 2.99750e+03 1.28410e+03 378 3.10150e+03 1.27760e+03 379 3.39070e+03 1.27760e+03 380 3.30950e+03 1.27110e+03 381 3.02020e+03 1.27110e+03 382 2.76730e+03 1.26950e+03 383 3.07870e+03 1.26460e+03 384 3.41350e+03 1.26460e+03 385 2.60220e+03 1.26310e+03 386 3.12750e+03 1.26130e+03 387 3.28350e+03 1.26130e+03 388 3.33220e+03 1.25810e+03 389 2.99750e+03 1.25810e+03 390 2.88160e+03 1.25680e+03 391 2.79270e+03 1.25680e+03 392 2.55780e+03 1.25680e+03 393 3.10150e+03 1.25160e+03 394 3.39070e+03 1.25160e+03 395 3.47850e+03 1.25040e+03 396 3.02020e+03 1.24510e+03 397 2.91970e+03 1.24410e+03 398 2.81810e+03 1.24410e+03 399 2.51970e+03 1.24410e+03 400 3.07870e+03 1.23860e+03 401 3.41350e+03 1.23860e+03 402 3.29320e+03 1.23530e+03 403 3.26720e+03 1.23530e+03 404 3.24120e+03 1.23530e+03 405 3.21520e+03 1.23530e+03 406 3.18920e+03 1.23530e+03 407 3.16320e+03 1.23530e+03 408 3.13720e+03 1.23530e+03 409 2.99750e+03 1.23210e+03 410 3.33220e+03 1.23210e+03 411 2.88160e+03 1.22500e+03 412 3.09820e+03 1.21260e+03 413 3.12420e+03 1.21260e+03 414 3.15020e+03 1.21260e+03 415 3.17620e+03 1.21260e+03 416 3.20220e+03 1.21260e+03 417 3.22820e+03 1.21260e+03 418 3.25420e+03 1.21260e+03 419 3.28020e+03 1.21260e+03 420 3.30620e+03 1.21260e+03 421 3.41350e+03 1.21260e+03 422 2.58950e+03 1.21230e+03 423 2.57050e+03 1.21230e+03 424 2.99750e+03 1.20610e+03 425 3.02020e+03 1.19960e+03 426 3.39070e+03 1.19960e+03 427 3.45950e+03 1.19960e+03 428 3.48490e+03 1.19960e+03 429 2.65940e+03 1.19330e+03 430 3.41350e+03 1.18660e+03 431 2.93880e+03 1.18040e+03 432 2.99750e+03 1.18010e+03 433 3.06570e+03 1.15410e+03 434 3.11770e+03 1.15410e+03 435 3.14370e+03 1.15410e+03 436 3.16970e+03 1.15410e+03 437 3.19570e+03 1.15410e+03 438 3.22170e+03 1.15410e+03 439 3.24770e+03 1.15410e+03 440 3.27370e+03 1.15410e+03 441 3.29970e+03 1.15410e+03 442 3.34520e+03 1.15410e+03 443 2.92610e+03 1.14250e+03 444 3.05270e+03 1.13130e+03 445 3.07870e+03 1.13130e+03 446 3.10470e+03 1.13130e+03 447 3.13070e+03 1.13130e+03 448 3.15670e+03 1.13130e+03 449 3.18270e+03 1.13130e+03 450 3.20870e+03 1.13130e+03 451 3.23470e+03 1.13130e+03 452 3.26070e+03 1.13130e+03 453 3.28670e+03 1.13130e+03 454 3.31270e+03 1.13130e+03 455 3.33870e+03 1.13130e+03 456 3.36470e+03 1.13130e+03 457 2.74190e+03 1.12980e+03 458 2.86260e+03 1.12340e+03 459 3.06580e+03 1.09800e+03 460 3.03400e+03 1.09170e+03 461 2.87530e+03 1.07900e+03 462 2.79270e+03 1.04090e+03 463 2.90070e+03 1.02820e+03 464 2.83720e+03 1.02180e+03 465 2.94510e+03 1.01550e+03 466 2.86260e+03 1.00910e+03 467 2.93880e+03 8.31300e+02 468 3.07210e+03 9.32900e+02 469 3.05940e+03 9.52000e+02 470 3.03400e+03 9.64700e+02 471 3.06580e+03 9.71000e+02 472 3.09120e+03 9.90100e+02 473 3.20550e+03 9.83700e+02 474 3.40870e+03 8.75800e+02 475 3.45950e+03 9.20200e+02 476 3.51030e+03 1.01550e+03 477 3.36420e+03 1.01550e+03 478 3.38330e+03 1.02820e+03 479 3.49760e+03 1.02820e+03 480 3.39600e+03 1.05360e+03 481 3.29440e+03 1.05360e+03 482 3.51660e+03 1.07260e+03 483 3.21820e+03 1.09800e+03 484 3.56740e+03 1.10440e+03 485 3.55470e+03 1.12340e+03 486 3.39600e+03 1.12340e+03 487 3.54840e+03 1.14250e+03 488 3.52930e+03 1.15520e+03 489 3.40870e+03 1.16150e+03 490 3.47220e+03 1.17420e+03 491 3.69440e+03 1.30120e+03 492 3.74520e+03 1.27580e+03 493 3.74520e+03 1.02180e+03 EOF TSP/data/0000755000175000017500000000000013623555031011766 5ustar nileshnileshTSP/data/USCA50.rda0000644000175000017500000000627312606077054013372 0ustar nileshnileshBZh91AY&SYnI UUU_uUUTtEUDUUU` Uh๾{vnzsT|DIS4cM&52mS@'zh&@jiF# @hhh 404i2z6L~  MhhF A?E1L&SO@MM1?Pɦh d 4&ОITP=OP2!P52ixMM46QQ=LPPh M4i3JzL?I<Ч4ا4=OQyM  4F@2V{L521;No*TΕL#dju_2ڕ6؞l

o'sX@gDְA@ qD/þuAq%.meC%TlY# E v[3Pؽo &3wF8mLΉ ⅉ"DFR1>aw(Şl~ ln1 'es3S`WL;e}[gOI1ޘh@1 9b# C[y C*; ,5s_3GխM.[ԒPR d2 о6"*QJqfdz։Ɔ 1gz B+3VMM'D(@#bV0@vBg(4 ,H(`CѸ啪u0Ĕ(\0=A  @u{ -|յv#E[ Y|^U*'9kP HS $OBy#V&`d[n e*aIC&:ݧUuDV6 N EMS ޒ$Ml3xo7J$87mLKQu* `KʮJ&Be-k#3J2tf C!vDRd̋ A&*8XE;&F2BOIO-hZ䨤J Jp&B<Β}m xPhTh*r$o)[{Y-h@ܘej+tzN#4$LR:֮ [ 2 G>L oFڵk`n2"+D⸞Fz`k˿cP]}Mss,I%/R;հRhDX0I h!f  6Aǿog{F=vuM W<ʶ;)zxK_@!\Kzt2kLbTŖ{ D++M1G 9a>Lwvvt8kq!IbϬK  P.lG!YIsT=y56ȬQ,q#rjWj&Ee[UZ?_,XOo"f^,jQwj(\*dݒnҘ ",3Zw`"1Z>\{zs.]h+Lx*тh[kInMX\rZdYv{e D8Dҹ͂ʇzA۝]`8ų ͨ:6E3< .feDFFhvYhlrE8PnITSP/data/USCA312.rda0000644000175000017500000022604412606077054013453 0ustar nileshnilesh7zXZi"6!XS])TW"nRʟXS#&'ƯNP7ϡBDxo"ZZk_^Cl'תᙧ38_efTaWFon됤1>C}CqR=/x AcGy)4myNc5G_fS B-/'>(f(=Q4uR5ɪ6B.#HAr!CZxCTQ`IsdESaX7¡wuf%Ί4uĕqd QDId!w+n/߰-heBc̕3օ:-U@r "l6{(Ey_mTizu B%ew24,ڗJ {"*'c5E(vzD:1V$:D*knnxz7ҟ(3Dd%+ILѯOd"ݝW xh}dcXc*$"CI2,Ujث- ih"-rDP)8)X7$o:6-Ge }?q_ni|A P’j ;ۃM̙&tX Y5$lD/H6#4xpXæWi6NFMk|c  חlr}Nh7ȘZ;W0?|h1;(%o+q6`B&uyO*bmN^O53o_D[ h'+t%*Nc`ypyӯUS"77K'o2Q`(d<5J+_Q7do]EIXW#-q1BrbR.dk-y v]ptp$@P9Xd7@cLnh̡IUܺ=l|"jW ^on@jJһ_Bg46'*ɵ ]BeK;[ƽRBcV*#G%#1hc]O4GV9Y$/elqƪɾKQl28WUUV;uNا] rK%43]&7x(B{'Ib%BnէX7{YeY2u#یV}ZdKN5a"ݕ+h)逗"5|MwUs0\^B(CYߧ531^ym|Y őWJ#!ScLM b]c~u\[sLy&w8V~#b Ym[OY`#!DN=>☃݃U!! |; @ǰ޹e 3mO߱%›uDSG'OӨ&(<epDX=1`N:\ ga]!]1ro*RYSJJj:l)0H[S@ hǦ^l)$gb s9ێ@v &ƟRub|T\dώUcR A42Z@=@5';ܘ;Y-Ο^_'I&*l/ g Zf"Ie9[}Ro ÇmV/Z(e1r P~gSqT(f+7d}azc,=^J/͝z-Q&cѲzOhť;=D֙&f'M?IKPWl5z܉R!/9A QG'6 Џg+ꢰĔDQ PO6WM398!<'@S}+0%'w8CC#:*H oHsy2";2!kG?+N-]pl1&7"Tbl-J&X5i32Б :[%^,M >|tU[6 JŢHs@6O^qLCYEL#*=?ʪ 2༐'8nMѸǬǬO`+E @(ikz$tir˱yX)}> aֱɋO7W2VA JZ&(*=i~Q+RPkM] @]qS^~4`~M̆ϳ H|諝n-oJbL1Dl>^gtl]O5qT2D~odiQ'W-<&YY~w3X-P*^mgnfdB/8$-΀ץW`HBIeCb>'xB>ps4Y9H }CP[CV*Ro[v2ze둎 һPHu}Ân%Hxq|2yk. a{)6 ȣU. ;y z#TQzLভ fs I@ICSߚY,Ǒb|?P1R 6jp,Դ*l;upd' Ԅ5 AM ݪQY86Z9L^t(j:ڛ[Qdl Ma4R=vϿTai|)b;-O@C?> 8kwݐW:2jG\ ,yH 2GR;qYdV tM*-fAsiu0·?f';lS`oCk.x<AP.L%X,O ngߴTEy0,1>;l*\|$ D un"gDk$NzA< '\Pvs0ɁEpIk ϸ+$EtE=p:hrٜH/n\I_#ã @3 s?h{\wf:휷b~bhndo,ࣆ5kK3ΠT5H 5ɕS@YǦ~ۃ؛Bc~ԑ0TOb3AtF:B2#WUyG-Nj78xDfMؐfs$Chuc ,Ϫُcê e4y3a>_Hv0xBS!h P 1tKU'`)]͓mȵж!Oi˵~җH&C_O+"VhXp-ڰِF dMHJ  itZ.J9p;_^^}һĪָy0xYޠjB_g>ٛ}#ڝ-(cxk)uF^w_78VuSecp*Zm G[96PL"6 ]+MusH0C2==njVPfH^+CNufCedy`lV {󂪘@6r_ŵaoUxI C!@'%7,}W`}#Q!t\[n-gS#+xf`bJz3nwyP ӟkX6ٺƪD/ȜynHGeE쌶}WxvUW6l 6>"k IX,.r ߙK@kbO0c%vD 9?uчy-c-pM&1DBٸwH⼾0qiNR͞5֛C5.(#DNʛrqgS&T>/D4 A~]fT_? R(tlHA&Y B^p[O9HE*膿M|g"; !<[5[$Cdr*A#C_z>>Ìx嘾"WoZHXpG=I\gaIiP~[7XIߺx২'0c^vx}, :FO[!YSGT~%TՒ~cXl "KH_j& hzՕeĜ# }KzGy=R^8T!M8h! \MQ3e5@5$,=绪ǺVFNZVoJ@Mu{bh4aWRXqmݮZGE/C*-vkv7 n |L"96]w?H9U}NH獙a*bWxϭ:Zbár"K |QcUjcC:%!onxjWH1G7;v%*R\ G6k؞S8!>!m5e"~i9|);{cĭ],1=F;hdB.fn!v |W⍦J@/ TI}~;زT-ܮ9Gsdhcd+CQ ?mdؑ|)OY&\.Q!ZF>\YD7-wÃb\./<C7d%H3F9~@Տc#x45sX0[`fЀA΃: kTVD$0+ Μ1eLpw/\")zmKb*yMO|okt)j]X"hIUftIJFWxjUEJ)}4XUk;qs\Tgz G{hw͔СT|-D'U:ks{k|5Iށ/܀F/ewœIjlƎ3Dj4Jn-Sƌ98 9>T k D歐Z m>|\˜zd4Cr~wc "Gؔ{O0ix_-8n˞ IcO$]]%& *gU1ySVPG!Oƒ%d2d)J!ݴuRM;wx4pXU^$V9RzH:Q2ޯ8W+ojS;]ڑy'A4{S[^7:٬3S=͐+B8waZ唝h}A_)trcW#6xΆq'vVr"G!-Ahܻc4)CS.stTr`*<pwˮ6\.L'H 3b6;ۇGM"0ZviDdzngGl!>I,Ǥyv'6M]0o.Y{i_Ky as(K u]lHTO9yq(CYFӎ kA#Yg>Z/3Ѹh]=W >O (>K3wݙTCpàg4]mm"  +OJoumƗL+ gX0fABߓگʓEIP۸)8ViT6B*qiAeC'K_Gq%O줯{ǞG?eۋKPB ƅLdUiE@ŶL}0/cDB2rhR38,]LUȔ$ͼ^ n\qY dƛ$їJ_"1 ""Fygߩ, Z|'U`<}(=H%~ 9]֌=KJR?$ir$u)/cR& Ȣ{JF!{.bvd}/qzpLҪltiݑ61S; + zJscϣɖmPq@[]URKҪ(a\PhA3P5_x&Elݯ~E)5˅Xo"d8 D44"ORZX#pltdwe("e(H*KZ/9 pԜ-)Y[qjWFΗt |vX9" \/c\rOn3w`yg/bb Kς  :fW*Ls?#䷄Be=H2峅-cR_p善~]/宏ORߘՄ'/ o1+X"HAkffH!r}ܹ%eV6OF>o"锋r0JyO7r0m‰?3w1 FYD{z ;``V_qjJ($Dw{yp>AZI)M!6ʆ髇ThoO!Hϓ*[ux=dvܰv|;H~XZBE=gi'SC ~1s$^XfMuN GhӄqmŚ{yA8>ZLšHTs3;"nQg{OtOAG>XPBh' fуwk4y[fK\o L A{4! ʁ([ܚ>-M5]Dm.K^E/7EvˢRV_iw8 #Zd;6?fc "Q8MrcT^ CJ3r21Ab>jNΚ+Ü /_sk60$s^44:IsIHQm\;QByGQ9_ 'nHbVuʗ (4 ! ^3-QR~}6k yt9#Ȼ8R.ta{hc;}J43wvGfjhnt@(ZsD:X&y;-rĿk媠TQ} CVSY .,Zc#pxf^Q}$(Nh.&\=,_r3ŗּO7~ІRjbjtB(!7fXіX biB?J%7 ;zNT[) ktq" eu5#J7f=("klcߣr$XgZBоwC\NlVBTYt1%gorutNERYaGɫo ]*㺱y5y^sQ@.1:25j6Ȫ:1H~Xf3=b2q L/m5=}~74?$3vJ?bQq҉%Ms zOBMҦ|v@Kdg⒒xb)(g_1kkDkK;'Ha€OZ?";}x !:0"EvRL찀Ļ?hH1:"S wrR'j!ߣyӝA{X߹e$#:~m$ST9U$;<ZCs ^.ψ{8+pi.a\:3\<#ހR/]Ep ;ȹj澨FF(gՙW,|ϭq.SU-?PU n_Ԟ %q*gpo>E`O %<6|j\1wz2WLZc$vϞ sUy\ é"sh&S- Ux?Irs9/vi` ]~zu\PP,SgSi:Mܮ'P,lobOD鱊`yt]b; /F#V CGx<0?XC+T[tIs :)G7kfԺͧk 6eA`8D&|%)?c)>J1N֥۾'YR2',TvS7ra}҂1AQl߲%׵H%W25K-u π/t%k$D+aXJz Ŗ l[-O)2OZ,OhNmVvp8RYQKre^~$ԫ;)r*O ˛)^o-%]ΰw^~#h :(Xp%SzAlE&%DjcMQu{Zx7=te:o6A9rAE"0Bl'G4!>t@/_Er =E269+>d)DB5]"1N6Jk<az&ë2D SLz2Ym{irʕ^Vh*ZqX0ruU+F\{tfQ7 -1k:db\ޫ~va_=UZ'? ^o.﮶ƃ4AۜʞpTy4Qj_m7d}LDO2y;z-g2B:?kR=׮A}T K}Sv|S~Y8 ̸$q:JdqQiu4&@ z"Z9$lրb"-+Hw}]񵌜if-eyAG9QTg/!L;J#};N# 2&t \!k[ь;Mn;goU >mlHÌyj`Ub*71xZ3c&+~*-ݗFz'S]Gf"Y{6!O3<sS:A/\hyVb.~@sEC]Uf"_ Q5K4N"R:aO ]=E{Hb:,Ss8Oi>6g;NɥR;[ꃞXs^[\z:OX*lqx7Ds# oOo :U/AMgV5'QHce( dG]~Zo4 hUBnmS(DXL#0h Qjq6"2p@ل၀_ULueЊAڿ$=6aF6#> \P>^'W_ڶ9AR7 uyNCkRj- _#?L`yL%◎mN /hbֶ5LwQ<'g\%@r'żtՖKg&1fHeu{J!:q*yEg;[<}uك8-{3Zz C8㏽-ou-ȷUUٽ6d>$NXLsҎ m)O_"\n+;=;{3#\9}0 -7 @i z0HڏK9/~ y5Y᱇n跄](Qz9;nL0F,@BxEYCՉ/ NAl ("gE>;ڞv$mwd RLmG-r+j@J9<Û&Y,WIr=2Ty kU_+|O$޵h/0]aaL5@1OLߞ*,Si{Ȥ7'vZԃyqZ-ux#~'d$`$#&9nlOݵqKRfR DtG|ꩀq=^"ҷk{Hr2'`DR v"3#^j?+*li^͑Y-x_g4x;ʛ⤈![FMÁ2BO!Ezt/D<ᓇːu)nG"5Qb #dcKMQb{\r̈́q@.lxj={GP'C ~tΐ BNdl~)s.$W2h&'DAd]p)ZdEё8W|Mw +5+Kh]ikj[`1h %?f{%8$V^4-.^9Dݟv6ˌ# Bc/$:70/#㏵8[DiYN߮{{_)6B'(PȳcWiЯ Ϭ.+9T3KTr!{5⧏w[yk6序ȈIo]d&WUoUFIL *>g'DΪxe3mŖHvS =VʰlN̽ %e 6 }]iW^ԑ,!5;Ðߴ95 S0K rKl5QZoxv LQG!E3\} 3X5PZz~?Kp@ dռbs7.J\j\Ŧ;lʉ~zyOc5"P:6vZ2N)5LnЯH0{Oe~* 2?MJ_Z`LuLyc<d'fat׈łp k}^}U0&ac6 N3`PV>Kng90Eo`e=nL̢JNSOC}şXi}B[NoELNџΡ(~' ݓ]o:2:-K.9W-.F5GT rm .έ;"S5!;{d~r"9>ħݑ7Sc\=z1" O0Ď R;A272.P"*X%ན>Gt3Jv_}@ex89[Dk[ >Vۚlf>cs#wbRNռOsAcq9;=!kp|Q W&SGGbo-pt+ b\pXj 9}r'k=GwΕOc:" /l {]ӣ2W%ł)~yFnG`i,e䖈LrG؋O$qQwn{{ G[F KcI ּ[A,;-NMX}8GPӨmVdsY lV(8^-O8V#A w t< @[NrBPTwHzgi[V 5۠XO8}5W u%CLC;w1mmrJfqf 3-_rTë:^|o /PW[?G{vm5n?(mHpuo:Dz2X2qx̅yUpYFie3Wz3`.wbMU1oKBd SnSBʋQri0=x]E;%1OPafpF}[>+R?cqAO8>,f^%kU&w,ng51Cv<y0?@t%1+xo/)#kh $@YŠG;|2_gG=>( ~&5GQZ eLlg%| `ҌZ)^gJ.vC\'^=dڦt(@g-0#2Nqqx&٧t䔪l4ףt= lA 6O\l 7~4P\ ΊȲUʜʑfcZ$i @[:U-Y}2KY!ogPJz%f$Cxv() VYL>-s*Q2Ͻybzo_ۯQHg]K>TnbĞhqq? (9M!Y|e7PK6DR ;/f݌22DT@*xmkʩ Ӓ'Dz5ӿ6MfP' O=di8k!>Hj]AP~E1ÂrfT\rLuà!\ri~Kޣ|m/M^v3ɢx` VSd rb ePzu3\{b+C8݊RBIv"a(arcBceq ê# ĪГ6a_Q‡HS0pi?$}C"%g暾rDrw_at^^CLaQv$EDn A0c+!Ŋxt-Oi'B$7Ai$[ڒ+w-"]dƔ~3^q\,Hc8>xx?{ vKwR$xPQce4mdMMm.pՇ[; R{~W~g@js0y #bka>6*Hv{:S7t8ha c= a{L_ 'OGmj+T+?h?_1'=m=;.RnwpGN u0WT])HqP_` ~ȑhmbwr]JK;JB#K4%-tD"gV J.MqE}*r h x@Lm2.Nr r9L~'w)5.WpU;ÌL;{ VX47MI-nAA)ށc+PٔYH YIZRbw?_SUUBpGhzTCb K;bCxIy&m+[_飺NIJA>ҖV7okB.|,AfDr|r#sf)v_;N2n߻Yɷחcڪw-rҮ*_`r&ؼ2 iÃV3tOY N 5wI9-= K=v4_uN!cobWFWf^F$S$lnߞ^I hi/P݋SX!!v=C9Q+X''%<"Ùqi!`k.|Kq񆂱\MN<Չ aET0aiɻLgӉ`X28檰 8L>mGNgo1b9?ğ2`(y\G-ORIM ㋾vZ Y@[Vg$HP:wI.4`) B^]wMomxt<ċC νm/R0l%WUo{ҌP|YF&Ɓ%4U6n%k*0ç*[ z:}VBu3_?j"n;$0Laz{1.:L]dfXB%xxQt)…y<%úQZ0Hy@W ^0$\dVu}܊%Fbޏq:XsItq/3yCh.7Q ])30"~Gl ͘YUNOl Z]B!ӥFX9SAX˕: :Y(n ٚHpQS}HsT{y/Ze:@vm[ӧEd?k0+NFm:j1~#E"Fu 1 !tZ֒0plBVeW:e#{v4Rm2%=_?0%$mL!Ѓ3&a:9E "r[[(7eED??ve{q.prd;ہlv9q*.99\f+\/+<-OMEdeb,SϭR hFfDI@);F p L,*Q-qJ8۲n@Ox=BhY161Z`ssV;zpFq_Htuةa$nBkGqkGmdeegg'5eJ#uZg;2q_ )(t//$|eaģ.ƉM i0h͘H,瞍l2{+gxijV$Lnn* ) QDƭ<GX^4p6I=꛾# q 6 tn cNlkRx";8 m/JY$ABg$v` r8ntE˿t-QʃEbZZV)@ӋoKm&f-B=)F,Q$ ZXCTFzI) a qLG9CeѮZ#w}{% oxۍuo~C2\RoY:]qt3ظyfI,ȇ?*Ǧm u8 Gʍ1s,^%\AB6\g:iS5ٺI^ӣ-@//t @ʝDc@3AUU%̸dI\ MpI {a#x6$~"esGoeTBi- 6[J"Z\1mIǭnn7ݓ!j \%y N/HVN]2/2.1C KĵOܘVzʼnkNDJ?8t:ϥn4oᏇ/0b=_JVJm*I?AoRS@28bzlufѓuL4,2|zʱGulnYr"T. !Õqux)#Ph_{6CH9p?x%L/,Ͱ{L@SȜ{>a&ƟoH8썳y(J58>9My]Ǚ ԳZ19wIxt>_] C $םX:l׶\p/:ܼJ%WE^ @~rNpeh72~N Wb& q mgHQylk2%BR}yχHkR !tc?wwgDG”b>KH#1j?lpDt<7 f<ήyL & fghLci1VS҂xuD)DnHs۫Ҋ/]Ңxm-Nzvp2By֝0,i>)rnր}hC;=8lGcũf]ӋLG;WyVU.0UZ4#Νx__tEMk5i3 yR דz?iϳΩ;ߍȇR R/Z.?O/ιݛ|Y_w,q/M]߀]c>@qb B~4 ayIE#H:A [%Y@=a`|G1 ,@X,JWLG,"rKlnSzE,0}݄%~ |4&@)}i ˳%U<+@G8S^%pW| 4PՠR@8sT|o2rNxINm6Anzk+>2P3[ŭOݳ>oPVY\DܑerN8r6n*܅8~cH1lb1;wFxx+}GބlCAj$;V yj8 WhiXS \͸O93EM!9 +<>.f%oo<UX <~69UPmvGzze.fxQ~x;\]px鼳/J$)S>o -o|aF^;eߒ3ܰCϺO+MRd󆸙P%|սZju8ȪБu_UX^5<Bl,ebë]7ТO>>;kpOHD"Ii æT!FPjȝG0r+FMqN)j5:|%6юq pMpl'[`}ƔG%SM6Rq&,(7E_jRctQ,)^l!e]V?uvFCL)eY>E9 7b f9閕@:ʮ5^]2q܊0WE_u!R}@-<HBr}B ۡi?A:'L.k?ZpkPLV_f'' iòxD݋̡=aU-ԻILu)ANZJ jn16tY?"tHŐL_G_MIm(B{MryOTm1Gי[ZK;&>}%';A/`+' ? AEj-{=wW>aG!@Dڈ %Lp F&ZӐ-oq!| MUCl;IASrwXڎx!';8ϦG3=(JR_]sRLR1/zb[}h$ 1$o'<1,>8@a3F(&C(3t/X0QX;Ϯ0я~Pn'RߪKK?S LrEFa9bC&8ӏ,x_-t$F^Hu$tP?lܖD$`Ƥ+K*9R[rAՄTm}l+_"ivbg_v((KD;jhowniⷒ\pHεe';똛3`X>H.q@U΃1n/BU3%1diQb,?쩚2#zP j;ou:e|w_ZkZ)ynD/-HGDjBWWH(0E}U7A(j` _DŴmJʾwu4͊L/s9li*~l"'\=6EU g"?+Sk"|%805C+MF1+#V82O0LC iy]RadY~9HcWS ZDLxX뜭l5zJ*݅uYFyihBjњ0}5)ˢix&x|tw!f8 MtOw2Enva$c#?Mg hxGyNSj+07`pPlɵe|೎vdoH[`& =o}ӊ3YC? fu fs  tڼ)݇ФlzF =+X8-71/SO{Fڂ9E_݋,!跚d_MW[nQQg;uf=2+Up3 @#`r3 $?մ]NSWIHt{Oa_ª@!B? Vv Z&=)m#"+drqj GB[oaM|"lrXCK(ԋ4V4.*M:"+Rba}/\.p9X8fiL1퀡V<]ӳ;s9|$X9gW\7"ׁ'q+B\!u^';VZoPxm5&]$e&]BB,S?>U@r$xN9asdYPjvC*[@}Q?(z+"$luopQ)0690V7-yr1#>UmIze9\J0nK-'hiEAjEv0U~B"~L{kxXΒMwt9U@y(\5{ZՏa?R9m4{fcPվܡPUQk5X4ipƛpl XL!c0RƱ>UlT 2e*)*OFɵzMkô\x4˃6h`9# l.+4T/rر +7 uSk_.Aܛ#Jk@Dg{PA܃ y"އ =ĨJvz4NYOOXO)$jkfʃݺL6MHa %mKa<̋4Px09WjD9^U5;B-Tw9[}i) B:XF궈ZJe7G <}J9@uW:XթY^Cw{5Oi,^H~u|zÍ@O* ?:]S9hoD*Bu!EךUUPdcZLj*,쐂?  x$涞u>Դ4傏d*- ,RrbIE4RW'p7L^Q}↮]׻c=vׁk]"@Rs}\@ "l~mtڋbR/T_X0-%] 'IV^jkjPX])b3Ԥ픵,ChbNi GI i~;Lp{v{gnVVNB,[FXGH|S߯n%t;Hqh_r#]6Bx.ww1X0'\j{=LpZПzECfcHc%[/ "(1z㏓|N 9ud-!s|jQ34C`E|R#yS&(Li`Ͳ6¯/řtGrBO^&+zw |/̯V[ ~ʟh̩'t/j=nx uإ݇[5ޓ@'s.pn(U "t<`0 _55 ⼯%")/=cdJunsW k>]Z_mI HDD L•E0$9*нtdlkTف[]-  N] JiI8)oh㭅f58~@K,zG VyiF e]kD )k gГ?& wK{P3 mV=23ܜ~D[S&zi*f.JbprFʷmN9P/\ [ݝKZ/tml:܇0ܵ83K2Ɣ hmkGL!\/@ȑ󄅢z*v\24ufr`ܭCk &K \Byٸ K >++*h Y*QewWhpTDH5t>RY,oĖYFJqu8ħ$a~F̷Z0_C$&Aԋ_O֚݋x$= o7$Y݁B7%ɯd1|Lu˾d1r^%#zː [Q)߂̇ㅳr蘘S͚s7H hG1` l;1 GOKK?n"."v>!_PWѭ8i2in/~>7d2I]VY {mo]0ZPDg3p%&kGc[WLeUbtl| NK-Je@uHLCteG 8#GuZ??^_ C?@,l2/%!\mPPD'cy(j4.c,0ٟts\|,1Ndž?W!` To#O:* jd]pEdbZ6jKAnnd@]m9}[†)z!Gf| ` ,ϭ.)1:o!~zSՀBs!t p|q&lF‰y;R![Qfr%h1#kpfJZ M{I>Se~&l(p-ncj;]Mqxq d714ؼ!cA(&OHSKPgQz$2Dx lD~J-Jʄ!8$OA`ھxz[mj7@>qm[_z+01$́8Eg|@E4ti'GȴߙeH͐p&EޘSyF8"VKZK^Ui)j` ?XHQWJnabq 'Pgл $|-p J3:BTn'ʂ3Y]2#+"Yl6+[PD|IBk0;-N-S5uUF4J+L( S])څ_S7ାZ䨤vDMJ hHQaDxӡTfl [i[̱ QcyyUw|6#f'ZZ'amӏM>kp= De [^6BN-)ܟݑ{6>Y ɜCx$^kJc_\:SYؚW*k) Bi"Fo2B*Q͊`#Rj1ႋ:hb. Y5qzwQ9 4ӳneѽ{Tzz$B489a4ɑ{ZK}VjyKeSrH7;}&_Lx9_ݫH[bJ7VI`鞕LOF9jb݂ܭ~lЯ& X I|Ob8=@|P٨'6=ڕ3 6S ݋٠b9R/'ךF4)ȅNuăѩ+jJ ^b|J3v ꍆyX={]H?P k&r5쯕ڲ)7J.薌vVU*|3Ts4&KBerВ"^oddMkQrYG)HߵqMX@|N0lKGt(2L*->@_ zkIQTVS}4xW2oYI !i= |j<[k55ߪiuLc.~ /ՍWάn?(Xi#IQ!}z?tzaBY{AY rseKU-(Θ (~xauWOr$hzcj>}x9iЬTlу6YN$r> 6ok O@qs}6p8C\.ւ=JWd̠:;'n.?5*MPW*1𹖉ϺS+Q|`7u.&<|L\ʧ笘pN)]ܥOgiw[vV ^K)lpG7 2P1j}W ! n2Rpmk&23֬$IN2dNJuDr}c|B(Ԥf!l޵GqPx;hK ]U,a.6(7Oޢ`C{=%E?6ZC+;# jt(!;yMcF /)GDX%R`oBYVe3Ym90\ؤ ѓ1o{QKV!g2cQO9;/sK@+u{@ FDInt#?6} ܺīQ& uk{rSP?[@?QXqkl*pR+pǬ2&=VWŽB#h=%4,LT0TSܶJ iręu.Yz$<~$ a,+j=NPs5BsjB~lws+Ӻ^k.OGc*F3ܥSgK +4xGP#P7_YK4y))k4| n Dw){};Ik+8Ġq5>4 gv1][J~j?mW.$dI# ]_D޳F{Iy8_For~"bz,Gw)#I9ZsX3 Y}zuuC:"٤fKU)+*9GECO0'qryAgeޠˬ+Hl˯z˝mJ2p'_($|XQ$LLKQ!+W"tO y/xB< U#e( ]Cث{QlgEJ3uIHz7p |8 由0xoޓ^j}[gL!VTB@Îm݉I(ac&d$LJ#{FiP|׹dd)kA!g;Rw,ceSاVlS`ꚰfjK1B.bqAO<,p'30S#d|F!Z&.XM9@9PHƂX.0UzIGaVhX~ZU N64\띺*4 KCukbs 6U3y~L+K cjޔ:@b#o֥z3T/`iĄds-Gw/6iynR24#T^)UCK']U#p,-SG.Ʉ}V(_USh[Z k*4;NĺXY4~Ad*(7PK/;, V2Ou.Ue>] v`VRlL,\Q#jacޓF# A6>ʆw1{A핶#NEH-:{]Qx$?;(;yiIFA$k,/H|RUSڑ&gSa~\o9;U fѼOQSRMT׎¾MhO1 1Il ѼCCr$iX[\ɍND.[v|#~ FU{D" ]pVp=$B.͛9\3^H;KЁN|#nv 5v DUų&U 7\>CI=k0&xe! t|jethD۵8E3CFօԛ(`P:9{L٤*'\MiY 3wEsW$9bз({F #O0E"mvR&w4ͨqE6dJZ\m"̒y& K.~;V 9vi7O /o"XJM_C set7kkeTO(rqU_Q?j= lXWݖ []dhhɯ S<Ȅa ؾMC3Ds"p- Xf7_L1MVC&{%ZAAխ{!:] 춯"Iަ4hě+k-VCFT(I$˷=UaoAk6Ge RpfhzLėruX D-%N, !Av ^c<[%F9P>u袆9=E? fa "ϛC٦g'?c;#P[ Lx+`ۀ,0L=<6h\]A_t8PD -d1yM6|gF{J^)0z$"PfBZԒ%)Ɵk栱Ȱ]:Wk˞O۔3pBJ"6RZbQ} p=ۣ-D`g%up6y^0% ބ4hW\pF |Uf}jPVlцì84[Vƍr ߨL0.D5 ] |qQx|1AN/haB<ĥgT }@:{k)66~+ܐO٨TjʖG>.&'q.4̖Uﭺ|$;y F'a*fl3,˻,pfB HЛ_xyw3;Dfo7o:&/,Y:+2`s/8qn.T3Y/#E!hAN~9q!W~gp I 'fGGFaF\3Ĉ0"Wu5n5 #gS  ߻C 2 T=iE = Tg/jR&Ҏ7&[,q.Anm 3pĆ[2|&#YQ/1@4S${暗L`R&0=.i3)A,z{r&+S"}P>PSHt.|.'qP fPX2+4E|Le'FBw8z$S;Yt17`5DM<C7d/FBo/?U&'W)]&`E)ȹq8]4HÎ~κ9$IxA~eWU/ȬI-Eri7>퍲<8AD.;*aE Kզ{sj)1K&9k$ -;}5xH)6L SVBP4'}!/ nj65 h[hG؄n[m>0YSWcf'D,J$+h%t"CyA0Z$"=KRzeͤDrF&#cn6P"Yjau*r, 6O㟘G)D8{ݥ.m UG] a /K?р?G34kQ{KAaOs`?*\T]pKo{C=$WդPOu\LԪLw8)S&&r\5~!A`m(w/;'3*pcQ#1!ٹ{}g4?#8Zz?Ht_,+d~7Gh ]k b/:8+8,ģJz }1/@Yo I..Dᐬ 06daYrG,#YtҷK!{7c)"_@#[W6A<4Z >Y4iLE-fP8+H\[o*tSu`-!Yp;xD.WfkP $[8 ^T1oDvʅ9Q[G|f&KK@R?5vz*esDHn`];D'W]M^f("dTp.DX.A+D,[;2toIOGkY 嗼/y`" ZуӵVfn/- z4]U'ZvDEf!QjW$*y2Y]+ӏHYMQS8Iu*ކreZu2wQ8$prs@ؠ 0س kUco-kGbu<2T;(&|_ȇTvD75ڵϝfuE-pH Ka{B-xSX_8-)kH+iY|$ߗ&-RIbsoKsaU,oX\nD[( |= [ťtj9a;yZT^WLgRo>E sY[2/ YiQ1{ `1Go=/%M7!/wh4~jB ЁA:3>ok&4k2 7ѧߋYg9;j x"CB㥖Co 9Ё]V uUJߔ|)) rɮ~Rlv*Eh)%rfx? jVC ew*OdH1X= ׯ"RbB ~!]{{5p1$}T̴/{0n5ѣ؟H( XS}@%(#&P@X8@WQ;4w ۋR u̝9Qfe{*^2V;bOukrȁO6fdq2k̚ѭ:"IɄd_`(߱\,El裏$.>A22k+ j S(TM]Ҙ@Kv™6-Fzt~XgА)b DCtwjW'?qgqR+'bbYs+!S[QcDH~7w5 ܎۝Qd=jtZ^e?fc35ѻ!;)jdߟ %juYCW]U6S I#)\ۧ+1[ &xGW "yH3 k֊l$tlgqF%EE-@W<"*.DE P$LNUdsiEx4ebu9Z {6MAZMGhkKC ](xBBC B'GnA6XΝu8=rqsj|Bs0޼ }ԾT;B:HGf鍒ŴމV^otGzSۥ$.x'1\Umfl, qem[܁>F! hb^P T2EQkc.dIL bA%:H߾nFlNe +)CˌS?R7PU/` /VcsJ@\BL*tNDũ#Iy !.~Q_C+uL]vJrc1) H w󼪩2[E4^a%d[z|~ ,["+Qe DJL0| LIe8G8q>huJ0)%]Jأ}gfLiVMP|6ĵTx;f^@ e0=.Mq*JHGg/=G:N<,C' ۞2_l=./^ !ƛ+kW4|k'z$ܤ^uJ3fyso3q}JיFjɊy6㸲p{\iO*v`u;?gp#e66+?,]߭>.F>t˿{/' &JڭBRlzeG=pV~3kO2:_>h9OF/q9w_nkl_Ʈ55wNair.zp |VFP=?!9OQ2IdT62FI {7uSuȆC'\t (q1+=X(4-p2%$߬Ջ */&# P\"3'7Z|L%7pt @{Alzҿᤦ 7L@%)5򻓼ю>zIw =agTd&9 kjkd-Ϩlk j5o{h_2W9'D7v} $^4+D:\}p3dC[`Zj6a `@n4]^:#BMm{X zimxv9`ק+ffyKFP >qD-bФ:hZ8y5 B8OrZ͎/; ٟ:'wcNH? 8` 56*DFK^km+ukXq; s#ahy:?fJ5<lAӭmg]Ԙ[,s>X)4!,7rAYMp+6E$Z)97ӥv|`+ }H Ъ> ^&,S`ωVbEo?lwa0I3UEt0Q t;̗{a坕/Ȉ-x}v 1JwvMA5hwǃ kH& !"#=)X[`^Sk@N1` a q aR>UBiKE۬NCd}JFl[( ؄fvF?ܣn\jEW#rB@s(5q[G jGU #jWЪo ӭÆ*IQgρDkmٻ ¢(8S1IW/ǬEiDwùz3$ ѣч؋!gY gRqJ2v#m$:kF0 jg警<kUw 3|60g$ol.[tUNz)×i0O.~ęjC8ZkE/ 3 ɨԌ>Gm,KY 2"[3b7y]؁ B~S9Eo *bBa)*3!]mރDO]q#B'5dzrק`*͖Z[S҈, 5}Og"^4Eԫfk6CFcr| .WOZ!X;%b Q.^L]jc'h;Y1  -W 冉`><4K{ƱE\L״߃ s@ZI\GY{T@Y"P0/+x9ukOa~OWUD/Xm:)Sut( VJn\z6Z̑[OM`dd&WQUpKVLbzA<\It^ X3ˡlhJeGkAs%tۤH,&ƁuRY:Q}7W]:lxe.+u#138"B TҜ#¬kFj*$Z6 nT ΌP"+۹m@C/}ǗRзj[ b(D[k$" V%vũ۟d3\ BFB9~.kI`S,e~庑wD8yaj m:2SZ$CŠ.[[L} @-?u†¦&,ԺyUv%Ex:d~;sZnIt\y,)TnT 6g.Ba}硊oB%!Gb|ח.5\E@DiBfa\|y``2%U^^sy# Mcbz ̆Dd9s+[GU)A K%"k4LgOE`2I qhioٛ"="R$&00KWf4e:8@"lڅKHgdp!F;)UiGz ^Umwr!N~Mu7Ae (Ma%}ӡ%{}3rǭ R;9@k?qN|cL4J h%dZzIQo6X{:] QU9"k۪RHix@"^ DF>#m{1Bg<^˚r$\}W&bkr"J[-*Bqc̨+̙ ]lwK.1Ӵ ^{mNqrak4NzkOvFR곖n qtHUZ&AI\}dB8Bgscuյ:;A4@5Y2>/SRHH#;`mڒQ*m'#v6w RZ{7û9iF|3?ŻmhΒpMU/ 0'vM'蔜rdaO/j`#EChwS U&h'y'0;НJmBAbT5)_ ^.,V TF xxrdؾz`o2Y@w'qʩV:~qrzy)˛w |C]5ǣa$&.9N(H1T C fV4"INT8Ҩ_3 dm^4+blmuI@BJzUGR&$Bk08VgjɝP?tKR5ֱB!+ "W8\ 1Հw-;GC]S*7warLb"g0g|* 0#8Y'OYyyp3 k+Evkg~q;jJ_!I$yߺ#Aa> aNRo.G05oc1K$אC-/Wܕ3\.z>}ʫإ.ղ)‡*.YEFq<|^j_)K8ϤO?ϽЂWFRP82p{*0]ە5٦_MCAE2u*ɦP% HΤ:K&RDe- Yc(NJzog̵/;ג4<2V:&nV'Fpy>8U ]M͖mTԵFys1&}w5mJ_rZ_5aMWŔ?>*>!Ps@% 6 1zd@ѹjO̮ܸ0ǹӧ0GKEX-h>Pr[.ՊŎT܏}+Hqm} ?zLY~zRw6jԖTFr=ú910=4Ҽ-_0e&V&19 //"ʤ^#3Wwڔ6)5ɐ_<[0;[],'3A6JY*IJ=s"ـ5 0#ҀIhaԶLO±Ss' 8aBmr -\83|FY?ip1tR=ƀ-cBerG|uF޴Je<@7xy)/M+A_u4 RF2mz z5ĤOU|ɕ"JŦViDT.C?cSNUɩcMW=wT%@RE x i#v7/x{kv8ͨL% ]&cض_c60n-h?yr^Kx&?uـg3҃zM 38d1 os %`g5D) >.ƈ5s!e Pjv{ /~icRMQ ^+ͤvo(F؃gWܦL RqBJ ɻG^1 {tk@\T<UE> P}_>?3!.;0~)OhR{YnWnl:Vl& :BB{0JUxeH<R`@BS#A1ERD2JEMHյo!s̤8tP;p7e5 D6AQM#MC"CM-doN~fUS'!C jYrhc$i/uh~ͺ4Hj]߮fn.;rqKZx*$Jcy E:dndb e84 g&$#Rx]}tkԖWĿMڋ${W>KO7 B:C_>A Faߗ GΌTE`0-ˡt9,S֙׮Y#@_}])nmGg'xSLNƵBͺ̭D b>q%*:F=BϣKA~>Da}Zj)Y:I;q 8 qZ@)|!U<&h ٭jw:r1<(a 8&$;-:aoX-pҟ0ơ]5י/d,8% xo=n-6S@-e@.Xuȳ L" b!gYCbX>B" CAtSz&Q g"׌$Z&qFx?lfDs* Ck{^7;\q95tT ͿZKy؍0@ղzD@Uw҄MtDeyxEˌ*.33p~It"EAjKVulZU|%>Ƞt#t^U} a /X1!بP7-'=x ʸϯr$>(\|ʏ9T 5wY k6-1"FNEHf,e(93`:=JH ښ-yM<(Ua/c7`S3wlQyNcD7'o > g.4LQ#\ ٭P d#ejSy-AL#z69NVU7D> 5g`[]P7Պ%nɭ [Z7%8ݪTU..$5ITl*w޵uz2҆s3O Kc*ZI6.uzad{rcP]C䠐T]VX(Y-'c|%ԗK/ pʮgz?a60L:jŤoX{/޻Ekl{ӈz|KBJDfu&t]T훃lw^Ah©PSynWSl`t!-TP(E8x\'wl#xgM᫧=F&/5ڑW{Z!1rS 3t8orXqIp̦\ڈ!e(JY DX\74|.Z6 MٺtpS]O2g3"] nbvHJy QT0֥ ^taNCC3Fa9]xywP .GiuQ573Єh, @N(愻s*B٭rYFJdkL|Wy_Eb*9R2@jfO`߀CZE9/ m?Aixm>|k-{e=):Q7I(@9`.cJE <<+v/ⱸ?K)J;AV?,=,$IXd;O e%3@Q"3rJq` NprVZy:n4p&2B$.Bٶoi{V# z5bCCjUG1k:fw)Y :Jul:N]mª88+BxnA+ e6M>#{|n9Yr]}co]<;bu-NeXoɈeT]&lPw}H5tVp? 5uLg^ #{ -{e P-m:hDVP:Pvo/"!\ %֧W:c5\s-&}<^JvE6HH6GzxcQ Ȫ7''BlIXfo4)! Ո딫V,gޜ# wiy6!G0IkVmg@ ވ֏0i\ hti-L2h!/z!\Z6DxVW;5CF-RxVLlQA91]X'~ltub0g xH"kn@w졺(5]Wݵ-gwMbץVTIEpF>^@>m  0 w֡8#lW׈Y Vwlц,L D൪i;a<H(e\<:Ӭ.40taI=K+> LZ( xoy4䙂'eEmЏC0!C[ 3kۗ(t&+Qh%1 QDtVW `7a jdL _]&!~KN(Y}rAmȩsǔ>OZh$lT$\DZ0iEZɡeHمQnJ| 0"R ~Omf@KcPPAC@ὣ9LH9naNaz!n(wRU4ݒWًcr۫8Q5<$Кk?5$L8- %چ:I}fc_l.9R* X^>]U y=^xuc0jqj;k'#;DumA/n,(":Ĺ.+vmc Bz4FQ;nmH3?~1SR/ȿFN ,j6'9U}gTpT0UeI!J/^ : ~X3ǼCXbcflHun8wiûh1x(Ӟ\ŧ9\@"mQߩ#d۱|^%e+ᎂ1VfuT$5/ [ c]nL63SXC!!BSsf{pMcb6틫䑨pcN?"&bv!{vBh~&>n|r a'INrk'j?1cgB#o1܉4[7M3B`RڮRDŽ+w,orWŦInb^lJ i6W<Ȣp)#~ⲇ"7IsS(kA"YΉ*"H lv3X{y?!l?O#؂ HȊ Bi @"bi [vN@џ/4`lKduojN@, kZf@. gC b]G=,^JZ!D%m MF0i"AνqQXv'VU=گ;>4q\d!5e#Z]-d9bωVLV%&O&}%Wkd brS#$K7"~cTHYIh9zn٪oFC0]kh _ #eR8nWTE ;WNՕy;\1pQTxt@$IjO6IjA+8dnbdЎ"xb' "8Q?WuE;zu2=.vտ#wZ#,x,A7\/_&kymPԈjuXP&hZ=T. AMl {ڔA\3jJ 4N,t28 L}|J3Kj?# 6!Al 'vCE-̈́ʣep;ڭD`\#ёBmH ^z:) VL-Qp,<8 T,Iqkq-^)?iy"/׆@@PEn:$8myH"߰HN28CګB L| qݿK2RFuNa,DAɍrX52JCr*3b.dHm2 ay()|ulڡYFK%iyvJ\coLg&az.T2Z㫪vB!$j,XJ1\Z!Yڜ+|̖uyd+(uFYFXQ#XaaH94V-y$k v줹];e5S_N^G; ep'Fe[\T17+΃="O"^S ,b[ fOlV9,\Ř> QĦ4z7Rl L6E3NQӘ2f(JbY|ί\/je4N$Ugk$!]}4o 3~B v0!5 27w}X~0.ѵl})@(y׀V^$vcM1(b/;Nu^va2XfP dbjDBVވp#v XY;'2Jm5Ƹ.B0 9^̊EO)`hAES\yiL|1o&DÍ8B*8xpX!2B%B&BmZhQ9;PJL9:&#J^eNRƴ@)W[Mk 6f"$ꛔb;4ڴ ć7GbH,x;eɰd]0q)CԵM+q$sU! :1ݼH%_i ӛ8p; Ɗ 4f] lURp&b&t89~M$t? md[VB)"GHf{$5a x[ 6Wru*h˄ӘyũzfCmK VB00gzə;P98m]٧\> l$LKyHO\#AƷtu|`)Qd%h+dN&U18/NXX”驍e|ɛvVzLEI{#+xpݶZ&=|SN,aO.OX۱f"H-X<3?po%4LEls|\i@{(z!Ӻ$-wyx_!V1kIETtǨ| W2qiC+~@B \)9LcpdAm3ԧ3kP5*a֋07:>(GpL!z.WأuiHDR +"Uz ɷge'ja:8ʔT##.(@IɂFRZd+َglf|Z@vp+7;ah4x*Y#2\[Ec)5VhdL,Woq[y !/݇‘Rh)0 s:"!0MD*4%_J>X3.b qay*W9+! 8ɹdS QDC#aK<%_elD%F!LPA}48]脁ڕ'%"UގWѕ~3 O#\guH{(㇕&ۀDXk|4T ֹ%\ÂO#zJ^rg$#*fؕ ͥB<ory>i~ $km8"F 0vtl>f M`Èu%b{ޖr<_;ƈ{I͆2;آtLm{95iH(B$q4q\:IB wM lHDQfAXSEFJu~23.Te_5GI+f%dV"Lc֣hϾL|:QzhܬB'%)9++ԉ)&>v& FHD`ľ{rtV΋COoˊ9 zccg\F;QB)AWd KDS#3ՃMlA6_X3_DfKT.;kMНuL*$HkϥS{1kѽp_p$Nxq3xSoyھr,}yGʇl3C |p@jc zWuqXzuڽ] dÅ5['_;3m]j%{u.ڴAĬ59//6JC${Kg#/c_`}))w0ċ's,$5 L_r7 &87 ,xٍ {떶W>P`"@݄d23<\{RkV,/wa~d&Y)Eɜ}F6S!8R##ԻGV>^;GTrj8`^8LJgherD5z,zZ2 ?)c;Vdx'8  h/QP!B^^ɉc =dsGpxMvhA[x0ihHhys˵oCɪvL [=MߣE 7h 5( z6KxP ɒ% F5q⿰7&u@7xT\TOzw3 #uɅ/E [P;"]Y!v-4 _l*v{|* 3; $]ŇTIJjD_mQs<2݁L',JJ"PNltw (w*BRuvyݹ&A%x3[||~Yh^y*3QzAW?즮b^v35+rЅk\ٟkZD)1 6W zW-ccɫQ Pz@U"oswn8nc! H-^ }+yfUsP A[7}t0-ANO"2uzjH=Qf~d/Tp9vdψ~]&(HMKIUi2+ ]2hݷp-]ZqJ-s|5na+vSɭé20?d&GNNX)ʋ0)q_AC o{f@^Zۅ!Zwo{'fi ÷I ZLw88M]zE){}NwJWknYIfĘpxϫ_of 3U{w/,䙻N!Xښ&G\\p'8w*fK8!9EQ=[j&j#{ ?w"@Sj*[b&ϒ0Ts n"MI7<apOy\3H_)ӞtKZFpBZ3ؙ#Mrw9i(n%^>c\%gM՟Ơ 8qcAuа|9ݑ rʱ!u;k@ٹdClA@\ ;iJJax`fiK7NvXmKLlI41?@>#teZӘ^Cq.-mV$ 4%J]uҤs*Bn:Qj_C GBάPYIJ $Nl-V:_>noVMJ{/'%<%!`pa6EpE"GW{TJ64 !]|5#s.pxO aNKf 6%SU>J t[/Árþ6"%Ut+;[#3?^=HkTޝcH?)Am ak63jEz.}L CΔEC=Dq$t{Ax9d? <ü>_2&gw=SPG득"c|:)J*ı`?;>n NݓY8ICm|cB mw9(ѰsPSdqБxہI\.:/@TLae' G !~Ǹ@5U=q.pi>|n:Əbn:5/r,rÃ7K|kVDWɏpWX:r- 0g[IzE֜Wإ*kE)O(ᡆ~z1OY7KeKCsLG,k݋4jv^{ݞdF;%r))ႣK1V0 O.Հ_. SuNepQK'ʒG3=W5*5r iS 4n.&%tiRM;!BW# .I$f Xt0B 4^ d?4W#5HOˤ$qL )noy y"e/ d&sw4>8 q&1"ztCӡ@OkpX\袛_BM5!c ,t0ۂ.; ٝGG @xUǿwMfc+$%AM=v JiYo!/8CQ@n<b6EC<~3J e#BY/'{cb$S;=, ;"8 #]1N4RW֥Vk0B&~/;wF3l[aZpX,KRd:oHW?ԈuU2/C9.y<d 4̹EA@@UoR4LsmȢNjxL9,ZxMZ zR;#Ez@r;z I͙iT 3k]ͅZ(Rk )f/ow6f/ˇ1eQ,m0"剶̩C״lGIG#܍lg67hߋ2hd@Z,C{R%"3ӗ2?@'So^'~ӼrτOKUS jur;IWsD$)'bjN+ESm@!w~AaR!Ȯp[%1p3jȱcd)@.O.O!RLp٩0#Z @\2&U_ːbheqan0 TNjjYi;f dѩԳy#/dT 91S;iv|,l8mb pmp8*!bF gxeZ>yb( 8.L6[ 34usz9||˾M"KI: ' xpJxwM^E[NuH`K1;]nTxQ9]OVbZm^6<%D^&EpO'Ⰸjʹc$][5!v& etVa!E#'<^ ~I>> զLʱ~Oe[]}{[6$/^c ?s'.s8ґ}7æW>1MsyQD(7.Cj y;L`n:1 5$:I5@x޲@.'Ak`kDl0*8ulfOҴ=74a'!p';@U9cͧU7pac"Ǹ7FwQ+6{?4 x=S?L(ɄYgH@Uu,"^s:N/b^TnyW^׆l;&Ie>"[gBL=7wqafzLj-DIRI%R6~Z|LM`NJ3-H]-vKO[{6VM*qt;S剚|(f&|EeykމlK?yl&KI{f=ͅ62sG=} s@)`קث~>|;xצ $![}6U1v4L;:y8<*zɿ)!ɠi1`g iE51# kt/ 3qZ!X|? H֘y& _M"tWt/Ñb7щi.ǫV^ br&ج P\<'GbOǰ: -Igxw؍iqܾ3 -@ӂh(,2PU (Ә.5|2r0P! T'@zԷQt͌rHiPKHyeY1 =t)FK󜙢-~܎~6^10xp8sg_QkOTzKHRiǵtHb fj`հUDM{ĻM[g?і$l!u(GȻ ωB:=Z6nl >DL_"²I|PjwVu0O viXq%J?Gd璡17xN3c效X%^=95 M%oE{祀CL@*9 ]G $NCa Y[s MwIeoMt>]m4pHgJwk!"+yȆ 2>,27ÂIR]>0n`gG,4ծ$u6z i z> p9%P%Y^QH;{WIz\8UKvHdQ:˱b u/Pyd_)#oAyYBυym3 =|!?:gͷfd/^J?/[- ?8# ՗r&?oFL;F~4!tdqhM$MmeU f[(J7U`]=\bCY9C02ό逎{VS' {@ɋ6.t9 ~?y5# Tn064<$mI .-r6_sS~/TNUt _-Yq[IDzZ#\ %@&П2-LBF7pt#S~| `u 3QjҶgs6}c}!ci!EoT@7n#6-̼]iV2I-GsN3R .ӐصѽIzגQ!%V\^q Hc'MJY[S88U-+[b^"t 'I:;EwEta@[)p3ReFq l7 &d q:{6<{8D8++}&=:^E8kgU3fFTXSdŃ {/&<^BRMr8C,egΘ]2`ܘiq5J&|s&6MQ^ }6 E9E3>E l~^+ƒ:}1Z+VaȬhq{Ӆ!4ȰamֽH"pԼnynEj'n<'ԟdK(8p5k9)󍱅qw[{iAL0v$#L3Ewk;(l(z#ޟ7m NU!iIR)$H@%%_Fi@4OKodgFDD ÇM[LWbNgޥ }rj>CU9k e=:e)×Щ>l{̹u )"zB1e ,//`)ǜSVrJU1*In>;I7ڌl=[ԲP*S \jyیҺV_B0 rk:Ay;aRVp Nd=B]Do  )e./@X%&>>(),zh2΁T|ʊQu͋tIU{pkay?0.8&Py1'L,/6ޠjvSu2֥s#-5sΡx(jHI]{kpJHxy}ߕ]ڽQ->)ȬV1f.rFbwew1v+nͱ5U>.VISFWS``Pn#_'7%ɢ]p>yl8'HӨp&UHu5-%GYh˳|\+vBveo7 Cci-u<榣7!6[۵r4{wV8~is ߜaGщε-9 v#E:0esO(>6ta(r{c!xԵa[6z㠆 V.N+z*lə~tr:N| +'K09v{r鮴6([ޱm/3^Ԃz@IU}O. ɍY߹vm1{'յn!cku7S 1Tv@洍q_a*6i!G;3 3զ;3IWq|@H=,?pR iJZ"70saLc1wct( ?us5VψR!яlffF%pV"pTV/o`Q+h^yG1rze_3o3AYnlcsvN mZ7Ц " !Y1pF3|uphkQr{RcҤ(̓>cOqdIF3 tT+>" dkCP@rbm ;`7Tc4@DI{zUUCӂH(5p%w1Q;L=-h=E$eamV[w.Mdv&õǜ2T4tI9$ԑ:²@Z^Ot=Fơa2EKD_pA &)ډEQH]v}?>loOb7e[5>D&%{5,sXSh $'sFN_XIgk#6;~GȲ%qiw!Y'cL23HApmptDK–-eV&Cmyv;' 0(WQWm9Rv0H!fY-% E1֩ Q^F@Zxudyv`֒kQPDzyX4>ISip&'M#-X Ck0hpd<,c>CvX2xxA}: Rֈr?*[/Y AkT z!ã@cioV[\K; }mxGuo /Ķ8e^ˑ\"1G9<^Zvp2O9|&Hh4| a'>xY; d擕'k](6\jۭRٵXsBo;-$E!H{EhW 1)mL7T;8QbX7)zh2u=.;PSi:?2)4 4g6K55RV*|UЅt2λsv߮}!z,偔岈9NFuNc#qI.a.&NҬ-g+w(i S$]$$(+2AN:@Fx-Cy3ŘT:0vxuvBA9'fA :pybfRߦmKXpK wS v[$>G]8YV@,V¥6}XȋHc^qGj \$|u޼-|\Xb@G/V07K`Oʙ9V2lKg6x( K8h_Hd̲8[> BiE'^(yݙ= I!s#3pdhϽ:o UjE#s)ү$h@o!~; ,. )ׁawܕ> p+o6ke _&C!R^AG :>[(O"HC0}}2ɟk ay=Q3)%Zl1ZG}cE$/4{MGEEmt $`Eg(QNR"WKkHf4xW)NE戓o;vq7#/r`nWYph^ŕNrڡ~ɽP/ja8kb=*_)Z!sѣv? E">]0A'j{xS[M-LY !͗^Zwa5JuP?N]`Cp8t׬DžY4 I?ʋuӕ`N1.%0V (5*MV `y[En5"%=ϬY7\0|!عJ>^+ؑPaD͵V6hZp3،kPT.> ?9CzH+|`R ڙq'2Ah(M EV).ndޠ)N }0~YTiXRvvϋ//&[Ճ#WF|\9Rg``sGҹH&4gukڀhNKB1Eck|K[i:0Fɩ}<'_L|~|FsԯHdX5S\&%g+)“:Mx8|SWk40x@s@) Y<9TSu0 JD vuT&N_7ѵl>c3rW(WpqF34"nPQbf%Ŋ_3E|ot[nك_x!NR]nkD82.VM~qOso*܄ʤ5^ /H}a%(:MKr c*Ę\6=ˎGݳ1I8=q Tx v*"w n 2-)hNS_P{ωCpJ"&YXB2nX |AYf Rtwl<w'E 7gH^zC3gIWO'@kcA1׮a"Ғ5-%:S*[p kv46%՚;;қubͰ(UՃW-T#7kb1 7MKgcvlA'5Qjw ~5^p6Z ):?MM_.&ﻊj'Ě~G[GU< z;WK-_'))qgʄ8NnG/*d8C\j"*H)uy(M*޲(XɈFp2TQ&V.Cy @/mdzPr@^@|[ՁQ (r A*ye;E~Yg,x.4W[f`\5z)7 t,Nrx&^w}GٟZT}{!tgw2QQ|@H"恷2]'&y35f_Qi3%~&*,^߇ɱ&:Qy ܂ukO~orn#CfR:r1U@p~#+ϑ` pW/I9}TF7w&|"r{dJx8 2~[Vlr_ÅCA L}SFS>P0pG.k +k0@;e~YS4MWVh,@v6،~ɵqꢹ-{ H޸9a ~Gȁ@R݇z_@:*ͅSa=|]\}u ) 63ygpBrɵ9=cTq~UQy&1km\ Dv w wYAǰhkz==@M+'%%Rf彺ڊ>\="rAq%=f&i{-Lſ4KP~{U31p)Z֝S4fe iXOp{ c >O$Pz1N4AT G o2>2-&ԟ5u"EMxj1y,4k/NG2.J/]WފB@^{ gz.ܱ'ڦl 6\~s~WH'xa!gEgMӻSay vN=WF14*nZ4pEV$7b8ƪwltsrF $?b-yt*Z2F]bἀ!ڪ$684O!^mI?!ՄCyhB=AF{tip!s)K?@>mcAڕ@xc|E{lXc.ND 2*UØd2$Zh7w$-Z=~?))5p2#VIMO|N\8"p 8_dJ̞q.^#pkfRͥsヌP$2u naf<7YX6IiiEZe CIrV F}tQ/( |=OArFXUY"Qls}[ذNa<3u/ns)0[ayZUMqޞJ:F֭SJ`Ըm5`!XO4ľi?qFV<%E:O ;͡W!vnٚARI<JISQ|fTx֟ %ZgC.X#JO&tX/`$U/ܼٻbW㝄%kKxr_chvj2X"9NSw(p|Z-5V+R|m!d'Ixi]4h /5ퟤ./H ؃Cm9%)<2H<g} Z enձ.]["\${Į\HN{=-(88 E%]4+`JbPf]H;W&`c̔(rBrpKk:}Bk-j#n7&׈ x})(4S8peOa[rĪ0UPDwsD{u4omXӨ0{C#IƁragNS?grT; \ &x*\\wW)^&& 6V@@OrZ_ 4# ξIR}&\19`n=f/?4ffFd9CA_omMlrX_Rýy[9Kv&w"3_'ZÌ !AVVZlC WMwr_%a=_X2h1a _JqPKEihu疟\#\K)[]`Uf:?:H?{cQ|J_pѽgIjŎ* "~\V],.`57XݴpviǢWJ)jp^TBf#8ǢUL[q~II2C*Z(/; q.Wj{#mSy|=9r?_T~b]+vq\3ij♸Qx챁*b s:/RTO{0=*~؏`:mYQd_lShC|lv5fme﵋<$d2G zp1v ~|+sNy-e:V&;J?WWq>wa[#$I)|󄃏+MIaޑ){^mxa$h!/Z5RA ]xb# n%RS{) 1\KOξLL)^R:Z)13EĽ7s[.UbY&>;OE4H WJX/mNC`x9`X *X.ai=1" M8:'LRabsH@T+~XWB| K\ 71m~$ЛJ įk"~ol+&-$d.ʥXe&^A.ih:̢}H׿`C ĢT=("xa{tP3P _ǩQ|M:gE_h.ԔXq[#Mx,AuI?dTyoDͮx  ԐF`8=N'cbor% N׆H}#m|Q\ E7tH^hGd_$\Ao22ZE[ ?4D|]3*02bf2[y'^?׳SH,>`O?'T!FdA 2#I~q?77 1$yI^90v=ɁQX28.ߑa`a[U v5AQȃ9<.;¥~+Qr׼3_,m5ٖ;-DuI@.a!&|`bMi aCc9VSH}@cD׷l)ҵn'ĤKXI2 -GP㘿 \8FY~h[$[E9x&H-' $*˓U/~ٸ' yZmU  tª2(}L;xJ~Y&3~'.UŤؚbM]'6'jX3 ߷`Vsk뙛ϵ*E?ك,guf}178p4W0p01R2B,r$l? jZVuy7cOՇjY+yT`~妳_o (0F0',vbgLI]ޗ@ &+Y}VX/aIو#9"t/3y ʑڴ%Tͬd@[%ԀNylDуڛY{4kwֹv3eŹ=*RܻF =0.$B}xXw" *|I)#wl'f u_p7RA%jJq2(h\g7uk(͈bpڕɴoCFEh-z'XyWMe4lĐ)ݦ5m pvIwK:#Hz;(g+ n%0Smo _zI6SxY)zӹ s2⳸/fdQ -P G]QD:ܠ BQ :pf-`; KwP> ^RժQ s m/!x2Hi&9Q|(ymhqbkdaPHYlq;*fTuRзH/Tւyuhʚ/ew-y,$W@:Mn3wܑR.;n\z e:Z#kUDN+>t75/i'_}7D W~ycOd&DnjA:R^,Υ/I .Ygbfd$aa@U~.Wiί` C*dnֳ-UIz 6ٝwZ<Æeq+ &ӚGײs^5 Ep1'Ɲ'6x= KpyЂTte;۲Fɒ:HB_8,#+]7J@Uq+-gzrͧ[M(nׅ HfDF6ߧvL1@mM hsY:+ txJ禮.+yDD, ~=E87waUذn#)zS6C5G&̓pǛ҅O kd}9LHiAhC6rXTL`R*g>q)v+]k5~MXh ?riOdNq"u8E@E!eD7j2BVo~dVJ3~o`FKw3ce?fuyuy`JGΕX_jYl+3It%E1 YiUi6N~b!*'=q{VZjĝUfv^D6Eatis"4 ,~V#|HlΚ7n-fv[pNj̋^c"){  F\;BmNZT7ZaUOFdJ,S 66Dm,h62xT|mщO5cقybS8\x93=!{c؊%GV1ۯAAf6s׃L1Ba$j N'wԘc"P>0 YZTSP/data/USCA312_GPS.rda0000644000175000017500000001562113623555010014152 0ustar nileshnilesh[U QADQ^nzK'wNWwNJB8*#.:}}ܝQ\Fe~羗T_}SU{9W!oܒE#8FƯE#Q#hTQ1~Fܣ, ø|WM<и0kx~-\o7LbE_,4s9;sO;yebo}7qpeo/ޏG?CWݧpn|zx[o2ҿ&ǧzÇΥoI?2GjV_pOqe'r]Wa}Lwl~w\󥳟NCuЎ~"?qos}xte2X獛%\. ɔd9дy|7~~`M|>W򶃎8mkjqXk]}+MNi~ɣ_sM񍭒h|N֫oe9|7rԇ'M=yvyF9N{H%2:cPցZY'ڿXC:Lp:ߖ۟ S Bew\"t!ƯHGo-bC_~Mʺ4S[\uU-gha<& PTHr_+s%bcg1O;y\WSr]5Dޑ~.6 G&re.ߖ~!J<^[ң\y4O75py] Uu:WkYcj1Ncx^̻´έ̵^[\'ty^0BWXUwWz՚?3B2E/0_=" ޳E( 8sI?ynzlQ$|>^}[4YěEݘƪTѯ0;H#?EL'; Ǽ s|/|cYr}S>mDg|m̗^" +, {]~?Q^( %ݢ3}j'[ٖ\X\ēyfnW35BX ϙuy/ϼ_ J}|+39gA'3WU tyv g+Oln1%uy>p*3]ٛ7CCScr@yݢd?%ϡڮyOzsd| ]c^gm T4e+o+[{>6QW[I{~Znfugag1*),c~뙻X'{Z-[!<43ϽBRiNxżQ P_=zW 7:\n1Bow{+> [$d\M׋z eC$<d\=H?Px$AO=$˵/d;*};a?k(̽E5zv0.y;i.:x]K~3Jѧ1W.&9yv:ʣW;Dcެע^ǘI ?U{P?^;^'lD/Pso[G>}[3T'cU sQzdeK(,71 o1fgi0r2}},#Yw23Tf_ԗ~,_]_Ai<|N=TXC5̻cw6ɤwPA@I2|kemDzK=<,'U5[oYU_$/=kE|6R!dD_D #S$_:+#uBB2#Q+1ϣ [L_N?Kc׷vq!~K'ލR=ȟ)8M?Ϡq~f(yՙ-Xü9+vJᾁ{veڿTOeQjZʅ]%m#ʩ'GF 00gb){ɢJ`0Й$`27/k`?` 08i!tP0p`p0 :B`R x/@%@ P @@  Ā&hZ6TKe@@1z'@R'4r`X +U)oS5iZwY:`=p6pp.88  = p3  #pp'pgn^O}C#_<<l^^^^^^ l    O K`+@_~~l~v;:oԀݒw΀;࿃tc;w;w';w;}4;Gw;qR߆ԖkIb8m凫SOj)mSiʙ]lJ\N558YߜT’=9u֝I $1+/ܮ>ԓI6f+Oڃǹj ƔevLg]eL'帝XH'jk2e`ɨ3I;=zĺ6ۓM`YnAOf]V{53ݭkI [V01:on+)gҪkw9ԜSzm /sl3Rۤ*PCݪzjLgUՒڠmen]\85y=ia [ϓ}ˏ-<1DZzaХJnCOciqIE1@sࠔ=n) u[)m]6WTHF^!5wS `b4CgPvwBf23mfkbw6l-D\=j_mV3L#r GRMgH׻jwTtRͿ܃z=0IM?%k,j{4ĺ,Z9 R_d2j0z0%2OBRF1+W{ ۼ0V֌'PWxT\OԌnOG8c$5]3oL4XS0پN 6 9[6m c" ϦiuKj2Zf`EuB ≙NO^-fu%^-\3m jig4{֌iTx dc.jօYQ lxl/XL! VfTԬӓTuȘ%g.3ZER_TC/T;5𱾔NA6uVuJ|YʬPbjM*|T:'ٗ1M޴6U*gHδZWMJUKIeXWA쮭ZfqK`N 63pN wl:OY d JjWʀJq-ʛ֖rX(o=pl@H5sI6tc7y9*fJ{)DF0hHXs YjMdvVI[]MeUjJ/ͪU vf{ckX 5V7JQe%}n$6[iUT&*+S]Rl1Z 5+Ċ͔iϬ\VGܳw*_b$R=Z%FZ%KCKU]TԕaψPM2CCKkNv cHUjHFFs1eȭ*Jj:Vm3j:C[.1l)UA!UuDy^ժۋ}E-.ZmE:Z=AlZOWZG#IbZ]!2KMJj CڥZ#tziVY=Lp&r)N1FaQiB]v" tU:$Tzڸ:KGלUj^8괾 %L'I:%KyP0U֡,nNܗW14ڭZR[bY!Xpǚa5uWc ՇhN̥*J{'_ 8fP fZ~)'k|*؀yn۱0{m e lb|Uro%z& m$qoQS1A핝 ="7їB=(nSI8,>b]}}Ƞڕ [Ɨ9QtPEފ.d yT#5äj5JU.c/`w1]_М`R [{QDQ_ΧeE\*aUZsWAM&.2c+IP7iQ2֮f: ZdbB=><]UꃦK*3-%IFXߢQIH%հ4&5|T/DϒgiH`쵿$#dž4  ]Ŗ lz5{Cg hQ[-[Xj4liRt8=j&MAs%lmLަf C5Ĭ{6sA5 D۲SF< "V0 -V`)5n/̔j"v7^]Ǔя6Ct?J}R 6n*搝cfWX37Ll2vYdӽj|>N ÷>d4'n?3IY52,ڣxF5qxb;D*'NcGRa4;MC$Ź2]•&9-8@7+`+5WA &A\Յ4G?d FR"Ps/_mKl}gԾ=6lo_?lq7ۅ  iNKƒ.:+eƒR Daa 9$tZ7 ٻj :>XV̫D±b2Z]iJ#)YbMyAA1zf{cNPLCO†ŏʹfpqQ q%L$B}{Y.dj?0FVlU-(mlL%2Fwmq[7^1j$E80v7d:K|0 j=a VC3v^-= "eT*`p_8S]iþ*)k=3>mVNڭcE6dne7wkFVlYʂp@o?M(7*v C~2e;w(EPߡ C~2Eߡ C~R4EaJ>Pߡ C~2e;w(ޡ (IpH9뿥t"e)#sQI#Փ}dRt=F(R3ݦuMi zӳ{gtvIGLTSP/NAMESPACE0000644000175000017500000000331414204773553012304 0ustar nileshnilesh# Generated by roxygen2: do not edit by hand S3method(as.ATSP,dist) S3method(as.ATSP,matrix) S3method(as.ETSP,data.frame) S3method(as.ETSP,matrix) S3method(as.TOUR,integer) S3method(as.TOUR,numeric) S3method(as.TSP,ETSP) S3method(as.TSP,dist) S3method(as.TSP,matrix) S3method(as.dist,TSP) S3method(as.matrix,ATSP) S3method(as.matrix,ETSP) S3method(cut_tour,TOUR) S3method(image,ATSP) S3method(image,ETSP) S3method(image,TSP) S3method(insert_dummy,ATSP) S3method(insert_dummy,ETSP) S3method(insert_dummy,TSP) S3method(labels,ATSP) S3method(labels,ETSP) S3method(labels,TSP) S3method(n_of_cities,ATSP) S3method(n_of_cities,ETSP) S3method(n_of_cities,TSP) S3method(plot,ETSP) S3method(print,ATSP) S3method(print,ETSP) S3method(print,TOUR) S3method(print,TSP) S3method(solve_TSP,ATSP) S3method(solve_TSP,ETSP) S3method(solve_TSP,TSP) S3method(tour_length,ATSP) S3method(tour_length,ETSP) S3method(tour_length,TOUR) S3method(tour_length,TSP) S3method(write_TSPLIB,ATSP) S3method(write_TSPLIB,ETSP) S3method(write_TSPLIB,TSP) export(ATSP) export(ETSP) export(TOUR) export(TSP) export(as.ATSP) export(as.ETSP) export(as.TOUR) export(as.TSP) export(concorde_help) export(concorde_path) export(cut_tour) export(insert_dummy) export(linkern_help) export(n_of_cities) export(read_TSPLIB) export(reformulate_ATSP_as_TSP) export(solve_TSP) export(tour_length) export(write_TSPLIB) importFrom(foreach,"%dopar%") importFrom(foreach,foreach) importFrom(grDevices,gray.colors) importFrom(graphics,image.default) importFrom(graphics,plot) importFrom(graphics,polygon) importFrom(stats,as.dist) importFrom(stats,dist) importFrom(utils,head) importFrom(utils,read.table) importFrom(utils,tail) importFrom(utils,write.table) useDynLib(TSP, .registration=TRUE)