quantreg/0000755000176200001440000000000014763523702012111 5ustar liggesusersquantreg/tests/0000755000176200001440000000000014746436777013273 5ustar liggesusersquantreg/tests/rq.R0000644000176200001440000000235512570633405014021 0ustar liggesusers## This is just from ?anova.rq (extended) library(quantreg) data(barro) fit0 <- rq(y.net ~ lgdp2 + fse2 + gedy2 , data = barro) fit1 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro) a01 <- anova(fit1,fit0) a01 fit2 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro, tau = 0.75) fit3 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro, tau = 0.25) a123 <- anova(fit1,fit2, fit3) a.123 <- anova(fit1,fit2, fit3, joint=FALSE) a.123 AE <- function(x,y) all.equal(x, y, tol = 1e-5) ## ---------- {giving a bit more digits below} stopifnot( AE(100 * unname(coef(fit0)), c(-0.74679759, 0.46539963, 0.15902838, -36.619915)) , AE(unlist(a01$table), c(ndf=2, ddf=155, Tn = 18.878717, pvalue= 4.6e-08)) , AE(100* unname(coef( fit2 )), c(13.103018, -1.4885239, -0.026452369, 0.3999839, 14.526663, -13.504643)) , AE(100* unname(coef( fit3 )), c(6.0860719, -0.88350554, 0.24596781, -14.962498, 15.592489, -15.861804)) , AE(unlist(a123$table), c(ndf = 10, ddf = 473, Tn = 1.80385526, pvalue=0.0575117558)) , AE(a.123$table[,"Tn"], c(1.0655561, 2.6398508, 0.78623238, 0.04467014, 0.065344348)) ) quantreg/tests/run-demos.R0000644000176200001440000000057313234202215015275 0ustar liggesuserslibrary(quantreg) (dDIR <- system.file("demo", package = "quantreg")) set.seed(1) # since some demos randomly generate cat("Running demos from package 'quantreg' : \n\n") for(ff in list.files(dDIR, pattern="\\.R$", full.names = TRUE)) { f <- basename(ff) cat("\n", f," :\n", paste(rep.int("-", nchar(f)), collapse=''), "\n", sep='') source(ff, echo = TRUE) } quantreg/tests/panel.R0000644000176200001440000000335012504616077014475 0ustar liggesusers# Example rqss vs rq.fit.panel vs rq.fit.lasso # Slightly modified version of a test problem of Stefan Bache and co. require(quantreg) source("rq.fit.panel.R") set.seed(1917) tt <- 3 # time periods nn <- 3 # individuals # Generate some data: some.data <- data.frame( id=rep(1:nn, each=tt) #ids ,ic=1 #intercept ,x1=rnorm(nn*tt) #regressors ,x2=runif(nn*tt) ,alpha=rep(runif(nn)*2 ,each=tt) #fixed effects ) # response: some.data$y <- some.data$x1 + some.data$x2 + some.data$alpha + rnorm(nn*tt) lambda <- .2 tau <- 0.25 # Fit with rq.fit.panel fit1 <- rq.fit.panel(cbind(1, some.data$x1, some.data$x2), some.data$y ,rep(1:nn, each=tt) ,tau=tau ,w=1 ,lambda=lambda) # fit with rqss (using the global debug variable from the panel function # so remember to run that too! :-) : fit2 <- rqss(y ~ ic + x1 + x2 + as.factor(id) - 1 ,data=some.data ,method="lasso" ,tau=tau ,lambda=c(0, 0, 0, rep(lambda, nn))) # fit with rq.lasso fit3 <- rq(y ~ ic + x1 + x2 + as.factor(id) - 1 ,data=some.data ,tau=tau ,method="lasso" ,lambda=c(0, 0, 0, rep(lambda, nn))) # Print coefficients for comaparison. comparefit <- function() { compmat <- cbind(fit1$coef,fit2$coef, fit3$coef) colnames(compmat) <- c("rq.fit.panel", "rqss", "rq.fit.lasso") noquote(formatC(compmat, format="f", digits=8, width=12)) } cat("all(rq.fit.panel$coef==rq$coef): ", all.equal(fit1$coef,fit3$coef), "\n") cat("all(rq.fit.$coef==rqss$coef): ", all.equal(fit2$coef,fit3$coef), "\n") cat("all(rqss$coef==rq.fit.panel$coef): ", all.equal(fit2$coef,fit1$coef), "\n") quantreg/tests/rq.fit.panel.R0000644000176200001440000000331711555564235015705 0ustar liggesusersrq.fit.panel <- function(X,y,s,w=c(.25,.5,.25),taus=(1:3)/4,lambda = 1){ # prototype function for panel data fitting of QR models # the matrix X is assumed to contain an intercept # the vector s is a strata indicator assumed (so far) to be a one-way layout # NB: # 0. This is an altered version from that originally posted -- the definition # of the rhs vector now incorporates a factor of 1/2 for the penalty. # 1. The value of the shrinkage parameter lambda is an open research problem in # the simplest homogneous settings it should be the ratio of the scale parameters # of the fixed effects and the idiocyncratic errors # 2. On return the coefficient vector has m*p + n elements where m is the number # quantiles being estimated, p is the number of colums of X, and n is the # number of distinct values of s. The first m*p coefficients are the # slope estimates, and the last n are the "fixed effects" # 3. Like all shrinkage (regularization) estimators, asymptotic inference is somewhat # problematic... so the bootstrap is the natural first resort. require(SparseM) require(quantreg) K <- length(w) if(K != length(taus)) stop("length of w and taus must match") X <- as.matrix(X) p <- ncol(X) n <- length(levels(as.factor(s))) N <- length(y) if(N != length(s) || N != nrow(X)) stop("dimensions of y,X,s must match") Z <- as.matrix.csr(model.matrix(~as.factor(s)-1)) Fidelity <- cbind(as(w,"matrix.diag.csr") %x% X,w %x% Z) Penalty <- cbind(as.matrix.csr(0,n,K*p),lambda*as(n,"matrix.diag.csr")) D <- rbind(Fidelity,Penalty) y <- c(w %x% y,rep(0,n)) a <- c((w*(1-taus)) %x% (t(X)%*%rep(1,N)), sum(w*(1-taus)) * (t(Z) %*% rep(1,N)) + lambda * rep(1/2,n)) rq.fit.sfn(D,y,rhs=a) } quantreg/README0000644000176200001440000000224411730155434012765 0ustar liggesusersVersions of quantreg between 3.70 and 4.75 were removed from the CRAN archive due to uncertainties over the licensing status of the fortran code in src/cholesky.f. As of 9 March 2012, original authors of cholesky.f, Esmond Ng and Barry Peyton, have now, very kindly, given permission to use cholesky.f under an open source license. They have requested that their code be credited via the following two publications: Esmond G. Ng and Barry W. Peyton, "Block sparse Cholesky algorithms on advanced uniprocessor computers". SIAM J. Sci. Stat. Comput. 14 (1993), pp. 1034-1056. John R. Gilbert, Esmond G. Ng, and Barry W. Peyton, "An efficient algorithm to compute row and column counts for sparse Cholesky factorization". SIAM J. Matrix Anal. Appl. 15 (1994), pp. 1075-1091. Use of the sparse Cholesky code in cholesky.f in quantreg is limited to calls to rqss() or to rq with method = "sfn". In the event that readers wish to access the intermediate versions of quantreg that have been removed from CRAN, they will be available at: http://www.econ.uiuc.edu/~roger/research/rq/quantreg Current versions are best accessed from CRAN and its many mirrors. quantreg/.Rinstignore0000644000176200001440000000001511730162776014412 0ustar liggesusersdoc/Makefile quantreg/MD50000644000176200001440000002363314763523702012430 0ustar liggesusers99edf8d8605a46c9dde32d26d43f32ff *DESCRIPTION 59ae171f84eb2be52ee904fe100b1291 *NAMESPACE 6c1789eaa459e5175106e2eba12bdbb4 *R/ParetoTest.R 12fc3ee9b6eecda826cff7ed17f25e55 *R/anova.R 3f4b1aec96f0b43d0ba9d3be270d36d4 *R/boot.R 0f5c733522683d9f88c7487515bc52de *R/combos.R ea3ab393ba4cabe9ce8a2f7ddfd3c47b *R/crq.R 34bc98c3a42d48a718f06e31df95431f *R/dynrq.R 3e27870071ee6cd633956a2ad6946499 *R/khmal.R 44dbaf9a2729c29c089086617e815817 *R/kuantile.R d2f509eb6977017d1b77faae7de97a7c *R/lprq.R 74e57bf2387ac9e764dfc185bec65980 *R/nlrq.R 23abbfdfe6ab274c1ebe89aaa4d825ef *R/qrisk.R 63c8000c1eb0c126d62a215009245e74 *R/quantreg.R a77c6ad37ae6093e30c9d639e27351f0 *R/rqss.R 35843d9ac1cd5dd5b618525be86398d2 *R/sfn.R 8177bc8bd37dd659c3e403f2fa504928 *R/table.R 11102c1b9076b53ebaac51cc79b90bfb *R/tools.R 00f6440dcfd495483f57d543f4918de0 *README 9a494536e7865311fc0c2d15e7e7a410 *build/vignette.rds 56ef7db1af717ba44a86062560b034df *data/Bosco.rda 403622377f41685bab4f044f2dac7785 *data/CobarOre.rda 3d69ca4dff26067565dddb340c8d12a3 *data/Mammals.rda 3ea9205a82abc3bef3ff9aa4c0b3c6d2 *data/MelTemp.rda 6e59d02236628b81168bf984cfa098d9 *data/Peirce.rda 16131516dc017723dd2b44b7be7d0b0b *data/barro.rda 2cb41ec2ee5de9777a3577f2e441e17c *data/engel.rda 693ec4307b3dbdd7bf234215b8d65ffc *data/gasprice.rda 175e672761a8912f1c6221e232f3d088 *data/uis.rda 3234ebf9fac1080114876484d936544c *demo/00Index 45e5019ec3600dddc740bd9c6b5435e3 *demo/Frank.R 5264e9798b77f8c83153b37fa71e1a4c *demo/KMvCRQ.R 61962e1209de42a8d8f73a4844d83802 *demo/MCV.R 999f285311986ba48839f973b543ccbb *demo/Mammals.R b4f9fd933511f97b0f7408dc6b401c4d *demo/Mel.R 0f6eb578db3343cd49234c2d68e73d5c *demo/Mel2.R 2b83cdb0cd34debfcd80ef266f07f0b4 *demo/Panel.R 8871644563874ecaf6184266985d5e72 *demo/Polson.R f6b197c9dd0ccf97b10fab9e8f9be542 *demo/RB-r.R a9cc1e5271ab2c9f1311705ac34b0401 *demo/arqss.R fcf5e10320aea6e0ad0b4f949da834e1 *demo/cobar.R 4288d49cb3eb56ec86798b28da27e791 *demo/combos.R f859ed7e3664566f9d74636d537b8762 *demo/cpoint.R 6c55988db9dee0d6dbde385185967de2 *demo/crquis.R d907e0e11fd1a4007ca28a3d1b03efed *demo/engel1.R 66c9a9b4a33a03bba9805d4b6dbd1cbb *demo/engel2.R 7ac73a95fd412129c2d1295a00d6865f *demo/hinged.R 2b83cdb0cd34debfcd80ef266f07f0b4 *demo/panelfig.R ea9c96de3d670a1fa922585cf85789e3 *demo/predemo.R 32f68b8e497d02b2cae7cf5f9b83ff52 *demo/rqsslasso.R 5235d61a73c80e7eb83777d7d923d144 *demo/stack.R a582af0bad3d273cb076a346c906cba5 *demo/subset.R c8e66b1a1ba45f6d9755833630deebd4 *inst/ChangeLog c323f5a63f1fa8a44efe2d32cfab3e20 *inst/FAQ f2732c4ab5eb2f4ca3421239a030f0ee *inst/TODO 3fb70411ec441d151dcae73d63a5e018 *inst/doc/crq.pdf 48b99baf4f65ac9b9a820769d55a75f0 *inst/doc/crq.pdf.asis 0de68334ee7d011f06785bc4926bcdc1 *inst/doc/rq.pdf 8faba626ac2f6a7ca45473bca52e2e67 *inst/doc/rq.pdf.asis 64449a66c0d80474c7aefef8907b8f05 *man/Bosco.Rd 768cf6c848f78a1862b44371c1f3e2a4 *man/CobarOre.Rd 5701d2b99e27ab58a510d8d2d9a7832e *man/FAQ.Rd 10e300026d352f6940c4f22d7eda1868 *man/KhmaladzeTest.Rd ca950153dafc968e44ffa412177bcb88 *man/LassoLambdaHat.Rd 5b7d1c28799b3f9e4691ad61bf69b5b0 *man/Mammals.Rd e0161d8945e1258ff78943b06d7298de *man/MelTemp.Rd 87b1e3e354423acdff86f29b0999d89c *man/Munge.Rd 5e19c6a25ab4ac17d770ee7c24c981e6 *man/ParetoTest.Rd 1c55b05cfde94862b2503523ccca1998 *man/Peirce.Rd 114a06055c68efb323cb9dd8a7278050 *man/QTECox.Rd 93035639b6851f7246a2cbb98b3abdfc *man/akj.Rd a303a4ced70b992220472a10f79fa65c *man/anova.rq.Rd 742ec68efdfbcf12a2a47e1adcfde3fe *man/bandwidth.rq.Rd 36991ef697fde62deb19e355974477dd *man/barro.Rd 9121a0c8f5ade9142d089cfb87db490b *man/boot.crq.Rd 04100f2d44413f147c904ad5a784d62d *man/boot.rq.Rd 61596e72e627f191100045d253536d5f *man/boot.rq.pwxy.Rd 79f67fde266ceeeac49ac2628884650b *man/boot.rq.pxy.Rd f0c967422ef597cf9b87bee298fc0ec9 *man/combos.Rd e95befd0c07043e2f858f55c43d95b51 *man/critval.Rd a38140e53d0ce37aeef2e9c8764b36af *man/crq.Rd 7a808195ff0171df916917d7ed31ecb7 *man/dither.Rd c788c8d2b04ca2720385021ea88fba1f *man/dynrq.Rd 1a3a7dbfb064513db6b48ce85d06524f *man/engel.Rd 1d469f209e0a9ce8a5f0d81ca45c37c0 *man/gasprice.Rd ae4f006622b154a304a34633f9bc56c0 *man/kuantile.Rd e03ac409e3cf886564c982e0225f9876 *man/latex.Rd 689ab28a6c1f74159fec1e7469f4f878 *man/latex.summary.rqs.Rd 9a0e4c743c6fe7fda830b2bd60eb6999 *man/latex.table.Rd 08e8c0de0437be5f697bf6b8fed95ac7 *man/lm.fit.recursive.Rd f0fb5464e8dc6dc0de17d2e11cdae24f *man/lprq.Rd 5535e4c74d8c8b876cd1412c079237f8 *man/nlrq.Rd d2e7a73053e94b9a0444af290d0a19a1 *man/nlrq.control.Rd 01a0f1c6e3d5edb2ab5e8592b9d88620 *man/plot.KhmaladzeTest.Rd aa5102d7ad3c26a1eb17570d8e712134 *man/plot.rq.process.Rd f147921961ec856f8ab74dccc81466cc *man/plot.rqs.Rd fbf839a303201e48ee3ea2d535607fa8 *man/plot.rqss.Rd ded41d155578d1d75df60ab5332c6fac *man/plot.summary.rqs.Rd db8b8073598318c738c5e475a8e74c62 *man/predict.rq.Rd ac427a32840e5aabddb87df2ff2b64a2 *man/predict.rqss.Rd 4eeff49d40b43c732f92ab317d9b7650 *man/print.KhmaladzeTest.Rd 686fc7e0c9f3138fd5ff01645b8e9911 *man/print.rq.Rd 5745e185fe3d47339bd0242bdbc29e23 *man/print.summary.rq.Rd 8d1f34ce14b8da44a7a84ce9eac0e099 *man/q489.Rd 261f6c62bdd9db554c3d7999185f191c *man/qrisk.Rd e7fa217bf726ed0efa7342f4fb4d310b *man/qss.Rd a916d9f3d2bed1c77cba165f268873a6 *man/ranks.Rd e4a4292807cd1a251a98f57e7892e427 *man/rearrange.Rd 6f68d1c8d2c8cc7009c9c13f102acd27 *man/residuals.nlrq.Rd 3f3b6af2a92f01f777669b8c76431c26 *man/rq.Rd 97edf8f7e4a17a81e73bfe2889b9c899 *man/rq.fit.Rd aea8247091db06872d7b0b25ff7e8184 *man/rq.fit.br.Rd 2e3451107afebc519044dcf4902e5835 *man/rq.fit.conquer.Rd 67225085d5c626b389544a23b8116d80 *man/rq.fit.fnb.Rd d0f422911138a73ea6f7f236dc28bd8e *man/rq.fit.fnc.Rd c80cfbe02e22a91c22139355bf151269 *man/rq.fit.hogg.Rd c8277c4702a9baf8c46c89e4a53e9cf7 *man/rq.fit.lasso.Rd f6b9d69a6975d7741178dc18b4426bba *man/rq.fit.pfn.Rd 40dae6492130b234aec5cbe61ea715db *man/rq.fit.pfnb.Rd aa976325fa2a0f23f71cafab9091b8db *man/rq.fit.ppro.Rd 47eb8ffdabd8311aaf0593e424537372 *man/rq.fit.qfnb.Rd 55f92799613bbb08fd10107f92a55c16 *man/rq.fit.scad.Rd 4eda8605d8c65c05f78621e1418fdf6c *man/rq.fit.sfn.Rd fa356613a916b242cccfa02593986d4e *man/rq.fit.sfnc.Rd 5b3b9d437a05dc195caa2502b1e72e9a *man/rq.object.Rd c42b5515ccf48527ae43449357b3dfb0 *man/rq.process.object.Rd 0a8b72f28db402c6333d4387f0fca020 *man/rq.wfit.Rd 7f71e0ab0e75719d478a54b4404f896d *man/rqProcess.Rd 47b5d67bdd5108808d62c0905ab8e58a *man/rqs.fit.Rd 60adfb48bc8cf2d2728035eb0d19f547 *man/rqss.Rd 1d5e4c75789a5fac11763df6b7edef03 *man/rqss.object.Rd 5bee50c05259df5e4da9d55ab9b2fa5b *man/sfn.control.Rd 2dfb6597245f45ee542f157105db4bc4 *man/srisk.Rd cf9fd105c0bd87edbcce9ec4a71780e5 *man/summary.crq.Rd 3ec599a6f561cd6908bfa5032e59be75 *man/summary.rq.Rd 8d1741b40851f000d6ab080331b93a28 *man/summary.rqss.Rd 7c19b7bc8dcaeafdb05e8fae65322c04 *man/table.rq.Rd f5a8859d2b97685d09b1e5bc77f27194 *man/uis.Rd bda0ebc1c480b97ce4c9cb3b2ddaf9a9 *src/Makevars 85f5794fa8b4d5f0656c3330b2a51360 *src/akj.f 2923f24ddccf1a8036d1639f0d899f23 *src/boot.f bb6fb4e8354bba1c16aeaf0cf5f9768e *src/bound.f f3a2629172dbce899d97b55d42490e5f *src/boundc.f 1bcb651bc603316f27c0c6a38f85d70b *src/brute.f 90e2c1e51b9fe243b7d1d03d53694700 *src/chlfct.f 1662015996d45d980ae598a9e243e760 *src/cholesky.f 344362611adeaf7c79c8c5a5c344aa21 *src/combos.f a812e708aab3cd5e073b4cb0832a07eb *src/crqf.f b804ab3d1bd9b62cb5b201d5f2827668 *src/crqfnb.f a22827856f4818d9e202adee29184a11 *src/dsel05.f 2d19097f7cd6cf38a3ed971ebab917f9 *src/extract.f 2843ca0c6210e382571f62de62ba2fd4 *src/frand.c 8477411df62550adb9c16c81844f1dfb *src/grexp.f ebcf4bf9967db6f738fa56684414627f *src/idmin.f f4b25bd30c039d89fbf7dd32bf320c38 *src/iswap.f a7fcca4bae02f091040a7b3229e60104 *src/kuantile.f 989c81d2cfe84db1139fb34370babf7c *src/kuantiles.f ca347ccd4d515f52f554f9d2d17f1b46 *src/linpack.f bd367d08c640378ec21e2cc69f8bd8bb *src/mcmb.c dd733aa428e0c89b27369672ed35feed *src/penalty.f aa1c7f42338ca5cab5d660c86460c859 *src/pfnb.f bd02eb1fbf344dd91d0e24a60a1c5269 *src/powell.f 7641a9d3cf6c240ab6c59e16a9b7d4c8 *src/profnb.f abef5781d8b3c202a444af9fb291072b *src/pwxy.f b8b6da4241edbbf057b398691772e4b0 *src/qfnb.f 00b5c50c8caa28b22e1434a7436d0bb9 *src/qselect.f 11136c6acb68f84acc7813dd5f146ee7 *src/quantreg_init.c d2eb1038dddc50e80368118675819272 *src/ratfor/README df3e98bf71bf48242ffe8a2939ea98b4 *src/ratfor/boot.r abc8e4125098a8ec492c6d56a2e990ed *src/ratfor/brute.r 3e5dff3e19ea81068ea86fd98c510acf *src/ratfor/combos.r b569add1122b3e4cd029915ecea9a548 *src/ratfor/crqfnb.r a058db5df513de1b5e89385a6eb21c46 *src/ratfor/grexp.r 7c807299a3375d290406d491211a441f *src/ratfor/kuantiles.r b6107d8e8661f641a0199a1d7972a844 *src/ratfor/penalty.r cd4d6264bea3eeadb08bd659890bab41 *src/ratfor/pfnb.r 6d74f3c8f1b5dcb25fc879236a7447e2 *src/ratfor/powell.r 60c66e271c58da8e547accbaecb1913d *src/ratfor/pwxy.r e97583079efd291c479548af68f78b1f *src/ratfor/qfnb.r 7a211874682556b49d290d27b1520290 *src/ratfor/qselect.r f38b4b2bbad4d6f924f63c120e57374b *src/ratfor/rls.r 8e286089e89b453c211465cd732806ec *src/ratfor/rqbr.r 3ddce8dbdf5360a6db3e4c6780984106 *src/ratfor/rqfn.r 208ea6ff24b897cbc012fcc3084bf087 *src/ratfor/rqfnb.r 871292f8ecd406be005eaf914282f332 *src/ratfor/rqfnc.r 6b34a4c3ddbc92462cc5f9df01852bdf *src/ratfor/rqs.r 0e001756ea962193959d53abd1f2cd85 *src/ratfor/sakj.r f55c27cd17f314e965550006712b6b20 *src/rls.f adc10cd5c28afaa18b3b90e138e02b13 *src/rq0.f d40fa68fb77b43b94bf693452565a2b9 *src/rq1.f 120a0f8d078df59a5d0c18e824703087 *src/rqbr.f 42a4780dc3b31dcdb2af2a58f3f73145 *src/rqfn.f b353855747f32c33cd3543ac87151ee0 *src/rqfnb.f cbe8e3c270c3863ecbd3d01ba512b2c4 *src/rqfnc.f 2e4d138de042e0dc24f5432dea05a7f6 *src/rqs.f 8420f9a87d703ab5237d1707f25eb3a9 *src/sakj.f aef01c414f773d044dc72cb95c8741f4 *src/sparskit2.f 50c93379d3a1af3c8d0b5e6ec305e244 *src/srqfn.f 1ed46340b6a16e19697572e051d160a1 *src/srqfnc.f f651f868d227919f2c670255f04fb137 *src/srtpai.f a838141113a2049f3ca6b6c5914989bc *tests/panel.R 62bf15687c35cd5a9fa8d05d94fe28a5 *tests/rq.R 9010017cc909325f119ca1bc119560ab *tests/rq.fit.panel.R 88bcffa8d0464bf62f7535f89c4a9e7f *tests/run-demos.R 48b99baf4f65ac9b9a820769d55a75f0 *vignettes/crq.pdf.asis 8faba626ac2f6a7ca45473bca52e2e67 *vignettes/rq.pdf.asis quantreg/R/0000755000176200001440000000000014760372332012310 5ustar liggesusersquantreg/R/crq.R0000644000176200001440000005755514705653673013252 0ustar liggesuserscrq.fit.pow <- function(x, y, yc, tau=0.5, weights=NULL, start, left=TRUE,maxit = 500){ x <- as.matrix(x) y <- as.vector(y) n <- nrow(x) p <- ncol(x) if(missing(yc)) { yc <- rep(0,n) if(!left) warning("default right (!?) censoring at zero") } yc <- as.vector(yc) if(length(weights)){ if (any(weights < 0)) stop("negative weights not allowed") contr <- attr(x, "contrasts") x <- x * weights y <- y * weights } if(left) { x <- -x y <- -y yc <- -yc tau <- 1-tau } # Starting value of beta if(missing(start)){ tol <- .Machine$double.eps^(2/3) r <- rq.fit.br(x,y,tau)$residuals h <- which(abs(r) < tol)[1:p] } else if(start[1] == "global"){ # Generate H matrix H <- combos(n,p) m <- ncol(H) # Starting value of beta U <- solve(x[H[,1],]) bh <- U %*% y[H[,1]] f <- .Fortran("brutpow", as.integer(n), as.integer(p), as.integer(m), as.integer(H), as.double(x), as.double(y), as.double(yc), as.double(bh), as.double(tau), as.double(U), double(p), double(p), kminz = integer(1), nflag = as.integer(0)) if(f$nflag!=0) warning(switch(f$nflag, "Error in pivot: hout not in h", "Error in pivot: hin in h", "Error in pivot: hin out of bounds", "Error in findk: k not found" )) k <- f$kminz bh <- solve(x[H[,k],],y[H[,k]]) residuals <- as.matrix(y - pmin(yc, x %*% bh)) return(list(coefficients= bh,residuals = residuals)) } else if(is.numeric(start) && length(start) == p){ if(all(start %in% 1:n)) h <- start else h <- order(abs(y - x %*% start))[1:p] } else stop("Invalid starting value") xhinv <- try(solve(x[h,])) if(class(xhinv)[1] == "try-error") stop("Singular basic solution generated by 'start'") f <- .Fortran("powell", as.integer(n), as.integer(p), as.integer(2*p), as.double(x), as.double(y), as.double(yc), coef = double(p), as.double(tau), as.integer(h), double(n), as.double(xhinv), double(n), double(2*p), double(p), double(p), as.integer(maxit), nflag = as.integer(0)) if(f$nflag!=0) warning(switch(f$nflag, "Max iterations reached", "Solution may be nonunique", "Error in pivot: hout not in h", "Error in pivot: hin in h", "Error in pivot: hin out of bounds" )) coef <- f$coef residuals <- as.matrix(y - pmin(yc, x %*% coef)) return (list(coefficients= coef, residuals = residuals)) } Curv <- function (y, yc, ctype = c("left", "right")) { nn <- length(y) if(length(yc) != nn) stop("Event times and censoring times of different length") ctype <- match.arg(ctype) if(ctype == "right" && any(y > yc)) stop("Event times can not exceed ctimes for right censoring") if(ctype == "left" && any(y < yc)) stop("Event times can not be less than ctimes for left censoring") if(!(ctype == "left" || ctype == "right")) stop("Invalid ctype for method Powell") ss <- cbind(y, yc) dimnames(ss) <- list(NULL, c("time", "ctime")) attr(ss, "ctype") <- ctype attr(ss, "type") <- ctype class(ss) <- "Surv" ss } QTECox <- function(x, smooth = TRUE){ # compute quantile treatment effect for a Cox PengHuang fit g <- survival::survfit(x) if(smooth) g <- supsmu(1-g$surv,g$time) taus <- (g$x[-1] + g$x[-length(g$x)])/2 Qhat <- (g$y[-1] + g$y[-length(g$y)])/2 dQ <- diff(Qhat)/diff(taus) taus <- taus[-1]; Qhat <- Qhat[-1] QTE <- outer(dQ * (1-taus) * log(1-taus) / Qhat, coef(x)) list(QTE = QTE , taus = taus) } boot.crq <- function(x, y, c, taus, method, ctype = "right", R=100, mboot, bmethod = "jack", ...) { n <- length(y) p <- ncol(x) if(missing(mboot)) { if(bmethod=="jack") mboot <- 2*ceiling(sqrt(n)) else mboot <- n } if(length(taus) > 1) A <- array(0,dim=c(p,length(taus),R)) else A <- matrix(0,p,R) for (i in 1:R){ if(bmethod == "jack") { s <- sample(1:n,mboot) yb <- y[-s] xb <- x[-s, ] cb <- c[-s] w <- rep(1,n-mboot) } else if(bmethod == "xy-pair"){ w <- table(sample(1:n,mboot,replace=TRUE)) s <- as.numeric(names(w)) w <- as.numeric(w) yb <- y[s] xb <- x[s,] cb <- c[s] } else if(bmethod == "Bose"){ w <- rexp(n) yb <- y xb <- x cb <- c } else stop("invalid bmethod for boot.crq") if(method == "Portnoy") a <- crq.fit.por(xb,yb,cb, weights = w, ctype = ctype, ... ) #else if(method == "Portnoy2") #a <- crq.fit.por2(xb,yb,cb, weights = w, ctype = ctype, ... ) else if(method == "PengHuang") a <- crq.fit.pen(xb,yb,cb, weights = w, ctype = ctype, ... ) else stop("Invalid method for boot.crq") if((i %% floor(R/10)) == 0 & n > 100000) cat(paste("bootstrap roughly ",100*(i/R)," percent complete\n")) if(length(taus) > 1) A[,,i] <- coef(a,taus) else A[,i] <- coef(a,taus) } list(A = A, n = length(y), mboot = mboot, bmethod = bmethod) } coef.crq <- function(object, taus = 1:4/5, ...) { # Extract coefficients from the crq solution array if(min(taus) < 0 || max(taus) > 1) stop("taus out of range [0,1]") if(length(object$tau) == 1){ coef <- object$coefficients return(coef) } taus <- sort(taus) S <- object$sol ctype <- object$ctype r <- S[1, ] r <- c(r[1],r) if(is.unsorted(r)) r <- r[-length(r)] #kludge until why this happens is found B <- S[-1,,drop = FALSE] B <- t(cbind(B,B[,ncol(B),drop = FALSE])) ts <- taus[taus > min(r) & taus < max(r)] bin <- findInterval(ts,r) wgt <- (ts - r[bin])/(r[bin + 1] - r[bin]) binlag <- bin - 1 binlag[binlag == 0] <- 1 coef <- t(wgt * B[bin, , drop = FALSE] + (1 - wgt) * B[binlag, , drop = FALSE]) nna <- length(taus) - length(ts) if(nna > 0) { if (ctype == "left") coef <- cbind(matrix(NA, nrow(coef), nna), coef) else coef <- cbind(coef, matrix(NA, nrow(coef), nna)) } taulabs <- paste("tau=", format(round(taus, 3))) dimnames(coef)[[2]] <- taulabs coef[-nrow(coef),] # Delete Qhat entries } crq <- function (formula, taus, data, subset, weights, na.action, method = c("Powell","Portnoy","Portnoy2", "PengHuang"), contrasts = NULL, ...) { if(!requireNamespace("survival", quietly = TRUE)) warning("crq requires survival package to be installed") #if(method == "Portnoy2") stop("Portnoy2 method not (yet) implemented") Surv <- survival::Surv call <- match.call() mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "weights", "na.action"), names(mf), 0) mf <- mf[c(1, m)] mf$drop.unused.levels <- TRUE mf[[1]] <- as.name("model.frame") mf <- eval.parent(mf) if (method == "model.frame") return(mf) mt <- attr(mf, "terms") X <- model.matrix(mt, mf, contrasts) weights <- as.vector(model.weights(mf)) Y <- model.extract(mf, "response") eps <- .Machine$double.eps^(2/3) if(!inherits(Y,"Surv")) stop("Response must be a survival object") method <- match.arg(method) if(method == "Powell") { ctype <- attr(Y, "ctype") if(!ctype %in% c("right","left")) stop("Only right or left censoring Surv objects are allowed") left <- (ctype == "left") if (any(taus < -eps) || any(taus > 1 + eps)) stop("invalid taus: taus should be >= 0 and <= 1") y <- Y[,1] cen <- Y[,2] if (length(taus) > 1) { coef <- matrix(0, ncol(X), length(taus)) fitted <- resid <- matrix(0, nrow(X), length(taus)) for (i in 1:length(taus)) { z <- crq.fit.pow(X, y, cen, tau = taus[i], weights, left = left, ...) coef[, i] <- z$coefficients resid[, i] <- z$residuals fitted[, i] <- y - z$residuals } taulabs <- paste("tau=", format(round(taus, 3))) dimnames(coef) <- list(dimnames(X)[[2]], taulabs) dimnames(resid) <- list(dimnames(X)[[1]], taulabs) fit <- list(coefficients = coef, residuals = resid, fitted.values = fitted) fit$tau <- taus class(fit) <- "crqs" } else { fit <- crq.fit.pow(X, y, cen, tau = taus, weights, left = left, ...) fit$tau <- taus class(fit) <- "crq" } } else if(method == "Portnoy"){ ctype <- "right" if(attr(Y,"type") != "right"){ if(attr(Y,"type") == "left") ctype <- "left" else stop("Only right censoring Surv objects are allowed for Portnoy method") } y <- Y[,1] cen <- Y[,2] fit <- crq.fit.por(X, y, cen, weights, ctype = ctype, ...) class(fit) <- "crq" } else if(method == "Portnoy2"){ ctype <- "right" if(attr(Y,"type") != "right"){ if(attr(Y,"type") == "left") ctype <- "left" else stop("Only right censoring Surv objects are allowed for Portnoy method") } y <- Y[,1] cen <- Y[,2] fit <- crq.fit.por2(X, y, cen, weights, ctype = ctype, ...) class(fit) <- "crq" } else if(method == "PengHuang"){ ctype <- "right" if(attr(Y,"type") != "right"){ if(attr(Y,"type") == "left") ctype <- "left" else stop("Only right censoring Surv objects are allowed for Portnoy method") } y <- Y[,1] cen <- Y[,2] fit <- crq.fit.pen(X, y, cen, weights, ctype = ctype, ...) class(fit) <- "crq" } else stop("Method not defined for crq") fit$terms <- mt fit$call <- call fit$formula <- formula(mt) fit$method <- method fit$contrasts <- contrasts fit$ctype <- ctype attr(fit, "na.message") <- attr(m, "na.message") fit } predict.crqs <- function (object, newdata, type = NULL, ...) { pred <- predict.rqs(object, newdata, ...) } predict.crq <- function (object, newdata, ...) { method <- object$method if(method %in% c("Portnoy","Portnoy", "PengHuang")){ #Kludge to make crq sol matrix look like rq sol matrix p2 <- nrow(object$sol) object$sol <- object$sol[c(1,p2,p2,2:(p2-1)),] } pred <- switch(method, "Powell" = predict.rq(object, newdata, ...), "Portnoy" = predict.rq.process(object, newdata, ...), "Portnoy2" = predict.rq.process(object, newdata, ...), "PengHuang" = predict.rq.process(object, newdata, ...) ) } crq.fit.por <- function(x, y, cen, weights = NULL, grid, ctype = "right") { if(!is.matrix(x)) stop("x must be a matrix") if(!length(dimnames(x))) dimnames(x)[[2]] <- paste("V",1:p) p <- ncol(x) n <- length(y) cen <- 1 - cen #NB: Fortran routine wants censoring indicator flipped (!!!) mp <- max(n + 5 + max(1, sum(cen)),n+p) eps <- 1e-04 kmax <- 10000 # perhaps this should be parameter in future if(length(weights)){ if (any(weights < 0)) stop("negative weights not allowed") contr <- attr(x, "contrasts") x <- weights * x y <- weights * y } if(ctype == "left") y <- -y if(missing(grid)) grid <- seq(1/n,1-1/n,by=1/(5 + 3 * n^.4)) if(is.numeric(grid)){ ginit <- min(grid) dgrid <- diff(grid) gstep <- median(dgrid) if(any(dgrid <0)) stop("grid is not monotonic") if(gstep < eps) stop("grid stepsize too small") nsol <- 3*n mw = -1 } else if(grid == "pivot"){ nsol <- 3*n ginit <- 1/(2*n) gstep <- 1/(2*n) mw <- min(10, mp) # Somewhat arbitrary see crq.f } else stop("Invalid grid") z <- .Fortran("crqf", as.integer(n), as.integer(p), as.integer(mp), as.integer(p+2), as.double(x), as.double(y), as.integer(cen), as.double(ginit), as.integer(mw), as.double(gstep), ift = integer(1), h = integer(p), xh = double(p*p), wa = double(mp*p), wb = double(mp), wc = double(mp*(p+2)), wd = double(mp), we = double(mp), wf = double(p), iflag = integer(mp), as.integer(nsol), sol = double(nsol*(p+2)), lsol = integer(1), icen = integer(n), tcen = double(n), lcen = integer(1)) nw <- z$h[1] flag <- z$ift msg <- switch(flag, paste("Error in input dimensions, n,p,mw "), paste("Error in input dimensions, n,p,mw "), paste("Error in input dimensions, n,p,mw "), paste("Less than p=",p,"observations above tau = 0 solution"), paste("Possible degeneracy at",nw,"tau values.", "$tau.degen: first mp =", n + 5 + sum(cen)," such tau values"), paste("Number of pivots to be saved in sol > nsol.", "Redefine nsol: use nsol < n to save for tau = i/(nsol-1)"), paste("Error with partial return: possible degeneracies", "Max number of rq calls exceeded: dither x or increase mw"), paste("Premature stop: defective conditional distribution"), paste("Simplex iteration limit exceeded -- consider dithering y")) #if(flag > 0 && flag != 5 && flag < 10) if(flag %in% c(1:4,6,7)) ifelse(flag <= 3,stop(msg),warning(msg)) J <- z$lsol B <- matrix(z$sol, nrow=p+2, ncol=nsol, byrow=FALSE)[,1:J, drop = FALSE] if(B[1,J] < B[1,J-1]) B <- B[,-J] # SLP hack Oct 27 2014 ic <- z$icen sp <- (1:n)[ic == 1] tsp <- z$tcen[sp] t1 <- z$wd[1:nw] if(ctype == "left") { B[1,] <- 1 - B[1,] B[-1,] <- - B[-1,] B <- B[,ncol(B):1] } dimnames(B) <- list(c("tau",dimnames(x)[[2]],"Qbar"),NULL) a <- list(sol=B, Isplit=sp, tsp = tsp, status=ic, ctype = ctype) fitted <- x %*% B[-c(1,dim(B)[1]),] dimnames(fitted) <- list(NULL, paste("tau=",round(B[1,],4))) a$fitted.values <- fitted class(a) <- "crq" return(a) } crq.fit.pen <- function(x, y, cen, weights=NULL,grid, ctype = "right" ){ p <- ncol(x) n <- length(y) if(missing(grid)) grid <- seq(1/n,1-1/n,by=min(0.01,1/(2*length(y)^.7))) if(!is.numeric(grid)) stop("Invalid grid") if(any(grid < 0) || any(grid > 1)) stop("Invalid grid") m <- length(grid) xbar <- apply(x,2,mean) if(length(weights)){ if (any(weights < 0)) stop("negative weights not allowed") contr <- attr(x, "contrasts") x <- x * weights y <- y * weights } if(ctype == "left") y <- -y s <- rep(0,n) u <- rep(1,n) d <- rep(1,n) r <- rep(1,p) B <- matrix(0,p,m) cc <- as.logical(cen) y1 <- y[cc] n1 <- length(y1) x1 <- x[cc,] z <- .Fortran("crqfnb", as.integer(n), as.integer(p), a1 = as.double(t(as.matrix(x1))), c1 = as.double(-y1), n1=as.integer(n1), as.double(x), as.double(y),as.double(cen),B =as.double(B), g = as.double(grid),m = as.integer(m), as.double(r), as.double(s), as.double(d), as.double(u), wn = double(n1 * 9), wp = double((p + 3) * p), info = integer(1)) J <- z$m - 1 B <- matrix(-z$B, p, m) B <- B[,1:J,drop = FALSE] qhat <- t(xbar) %*% B B <- rbind(grid[1:J],B,qhat) dimnames(B) <- list(c("tau",dimnames(x)[[2]],"Qhat"),NULL) if(ctype == "left") { B[1,] <- 1 - B[1,] B[-1,] <- - B[-1,] B <- B[,ncol(B):1] } B <- list(sol=B, ctype = ctype) class(B) <- "crq" B } plot.summary.crqs <- function (x, nrow = 3, ncol = 3, CoxPHit = NULL, ...) { taus <- function(x) x$tau xx <- unlist(lapply(x, taus)) coef <- lapply(x, coefficients) dots <- list(...) p <- nrow(coef[[1]]) k <- ncol(coef[[1]]) if(k != 6) stop("summary.crqs object has wrong column dimension") m <- length(xx) blab <- dimnames(coef[[1]])[[1]] a <- array(unlist(coef), c(p, k, m)) if(length(CoxPHit)) CoxQTE <- QTECox(CoxPHit) oldpar <- par(no.readonly=TRUE) par(mfrow = c(nrow, ncol)) for (i in 2:p) { b <- a[i, 1, ] bl <- a[i, 2, ] bu <- a[i, 3, ] if(length(dots)) plot(rep(xx, 2), c(bl, bu), type = "n", ...) else plot(rep(xx, 2), c(bl, bu), xlab = "", ylab = "", type = "n") title(paste(blab[i]), cex = 0.75) polygon(c(xx, rev(xx)), c(bl, rev(bu)), col = "LightSkyBlue") points(xx, b, cex = 0.5, pch = "o", col = "blue") lines(xx, b, col = "blue") abline(h = 0) if(length(CoxPHit)) { lines(CoxQTE$taus,CoxQTE$QTE[,i-1],col="red") } } par(oldpar) } summary.crq <- function (object, taus = 1:4/5, alpha = .05, se = "boot", covariance = TRUE, ...) { mt <- terms(object) m <- model.frame(object) x <- model.matrix(mt, m, contrasts.arg = object$contrasts) Y <- model.response(m) method <- object$method ctype <- object$ctype y <- Y[,1] cen <- Y[,2] wt <- as.vector(model.weights(object$model)) if (!is.null(wt)) { resid <- resid * wt x <- x * wt y <- y * wt cen <- cen * wt } if(method == "Powell"){ coef <- coefficients(object) vnames <- dimnames(x)[[2]] resid <- object$residuals tau <- object$tau n <- length(resid) p <- length(coef) rdf <- n - p if(rdf < 1) stop("residual degrees of freedom nonpositive") if (se == "boot") { if(attr(Y,"type") == "left") s <- cen < x %*% coef else s <- cen > x %*% coef B <- boot.rq(x[s, ], y[s], tau, ...) cov <- cov(B$B) serr <- sqrt(diag(cov)) } else stop("Only boot method is implemented for crq inference") coef <- array(coef, c(p, 6)) fact <- qt(1 - alpha/2, rdf) coef[, 2] <- coef[,2] - fact * serr coef[, 3] <- coef[,3] + fact * serr coef[, 4] <- serr coef[, 5] <- coef[, 1]/coef[, 4] coef[, 6] <- 2 * (1 - pt(abs(coef[, 5]),rdf)) cnames <- c("Value","Lower Bd","Upper Bd","Std Error","T Value","Pr(>|t|)") dimnames(coef) <- list(vnames, cnames) object <- object[c("call", "terms")] if (covariance == TRUE) object$cov <- cov object$B <- B object$coefficients <- coef object$rdf <- rdf object$tau <- tau class(object) <- "summary.crq" return(object) } else if(method == "Portnoy" || method == "Portnoy2" || method == "PengHuang") { if(length(taus) == 1) taus <- c(taus, taus) # Kludge to avoid dimensional errors coef <- as.matrix(coef(object,taus)) coef <- coef[,apply(coef,2,function(x) any(!is.na(x))),drop = FALSE] # Delete NA columns if any if(ctype == "right") taus <- taus[1:ncol(coef)] else taus <- taus[(1 + length(taus)-ncol(coef)):length(taus)] B <- boot.crq(x, y, cen, taus, method = method, ctype = ctype, ...) bmethod <- B$bmethod nas <- apply(is.na(B$A[1,,, drop = TRUE]),1,sum) Brep <- dim(B$A)[3] p <- dim(B$A)[1] if(bmethod == "jack") sqmn <- sqrt((B$n - B$mboot - p + 1)/B$mboot) else sqmn <- sqrt(B$mboot/B$n) fact <- qnorm(1 - alpha/2)/qnorm(.75) A <- apply(B$A, 1:2, quantile, probs = 1:3/4, na.rm = TRUE) #D <- .5 * fact *(A[3,,]-A[1,,]) * sqmn #L <- coef - D #U <- coef + D DU <- fact *(A[3,,]-A[2,,]) * sqmn DL <- fact *(A[2,,]-A[1,,]) * sqmn L <- coef - DL U <- coef + DU S <- (U - L)/(2 * qnorm(1 - alpha/2)) T <- coef/S P <- 2 * (1 - pnorm(abs(T))) G <- list() cnames <- c("Value","Lower Bd","Upper Bd","Std Error","T Value","Pr(>|t|)") for(i in 1:length(taus)){ tab <- cbind(coef[,i],L[,i],U[,i],S[,i],T[,i],P[,i]) dimnames(tab)[[2]] <- cnames if(covariance) cov <- var(t(B$A[,i,]), na.rm = TRUE) * sqmn^2 else cov <- NULL G[[i]] <- list(tau = taus[i], coefficients = tab, NAs = nas[i], cov = cov, Brep = Brep, bmethod = bmethod) } class(G) <- "summary.crqs" return(G) } else stop("Invalid method for summary.crq") } "summary.crqs" <- function (object, ...) { if(!object$method == "Powell") stop("Invalid method") taus <- object$tau xsum <- as.list(taus) for(i in 1:length(taus)){ xi <- object xi$coefficients <- xi$coefficients[,i] xi$residuals <- xi$residuals[,i] xi$tau <- xi$tau[i] class(xi) <- "crq" xsum[[i]] <- summary(xi, ...) } class(xsum) <- "summary.crqs" xsum } print.crq <- function(x, ...){ if(!is.null(cl <- x$call)) { cat("Call:\n") dput(cl) } coef <- coef(x, ...) cat("\nCoefficients:\n") print.default(coef) invisible(x) } print.summary.crqs <- function(x, ...) lapply(x,print.summary.crq) print.summary.crq <- function (x, digits = max(5, .Options$digits - 2), ...) { coef <- x$coefficients tau <- x$tau if(length(x$NAs)) NAs <- x$NAs else NAs <- 0 cat("\ntau: ") print(format(round(tau, digits = digits)), quote = FALSE, ...) if(NAs > 0) cat(paste(" Number of NA Bootstrap Replications: ", NAs, "out of", x$Brep)) cat("\nCoefficients:\n") print(format(round(coef, digits = digits)), quote = FALSE, ...) invisible(x) } # SLP: Mar 31 2015 (Revised RWK: Aug 2015) # An R version of crq.fit.por without any frills on a fixed grid. crq.fit.por2 <- function(x, y, cen, weights = NULL, grid, ctype = "right") { method <- "fn" BIG <- 1e+6 ztol <- 1e-6 n <- length(y) p <- ncol(x) cen <- as.logical(cen) uncen <- !cen if(sum(uncen) < p) stop("too few uncensored observations") sol <- matrix(NA, p+2,1) if (length(weights)) { if (any(weights < 0)) stop("negative weights not allowed") contr <- attr(x, "contrasts") x <- weights * x y <- weights * y } w <- rep(1,n) if (ctype == "left") y <- -y if(missing(grid)) { # Fixme: else if ... g0 <- 1/(2*n) dg <- 1/(5 + 3*n^.4) grid <- seq(g0,1-g0,by=dg) } repeat { # Peel censored points below g0 fit z <- rq.wfit(x, y, tau = g0, weights = w, method = method) J <- which(abs(z$resid) < ztol & cen) if(length(J)){ y <- y[-J] x <- x[-J,] w <- w[-J] cen <- cen[-J] } else break } n <- length(y) U <- which(cen) if(length(cen) == 0) { # No censored points left! z <- rq(y ~ x - 1, tau = grid, weights = w, method = method) return(coef(z)) } else { # Data Augmentation: m <- sum(cen) x <- rbind(x, x[cen, ]) y <- c(y, rep(BIG, m)) w[cen] <- 0 w <- c(w, rep(1, m)) } taw <- rep(0, length(y)) K <- NULL sol <- matrix(NA, p+2, length(grid)) b <- z$coef xbar <- apply(x, 2, mean) sol[,1] <- c(0, b, sum(xbar * b)) for(i in 2:length(grid)){ tau <- grid[i] if(length(K)){ # Update w w[K] <- (tau - taw[K])/(1 - taw[K]) idx <- which(which(cen) %in% K)[rank(K)] w[n + idx] <- 1 - w[K] } z <- rq.wfit(x, y, tau = tau, weights = w, method = method) b0 <- b b <- z$coef sol[,i] <- c(tau, b, sum(b * xbar)) if(any(abs(z$resid) < ztol & (y > BIG - 1))) break J <- U[z$resid[U] < 0] if(length(J)){ U <- setdiff(U, J) K <- union(K, J) y0 <- x[J,,drop = FALSE] %*% b0 y1 <- y[J] - z$resid[J] gstep <- grid[i] - grid[i-1] taw[J] <- tau - gstep * (y1 - y[J])/(y1 - y0) } } if (ctype == "left") { sol[1, ] <- 1 - sol[1, ] sol[-1, ] <- -sol[-1, ] } dimnames(sol) <- list(c("tau", dimnames(x)[[2]], "Qbar"), NULL) return(list(sol = sol, ctype = ctype)) } quantreg/R/nlrq.R0000644000176200001440000003436713151101657013415 0ustar liggesusers###====== Nonlinear quantile regression with an interior point algorithm ====== # see: Koenker, R. & B.J. Park, 1996. An interior point algorithm # for nonlinear quantile regression. J. Econom., 71(1-2): 265-283. # adapted from nlrq routine of Koenker, R. to be compatible with R nls models # by Ph. Grosjean, 2001 (phgrosjean@sciviews.org) # large parts of code are reused from the nls package of R v. 1.2.3 # TO DO: # - nlrq should return a code 0 = convergence, 1 = lambda -> 0, etc.. # - Extensive diagnostic for summary() (Roger, what would you propose?) # - Calculate with a list of tau values at once (currently accept only 1 value) # - When providing several tau values, allow also to calculate a single value # for one or several parameters across all models fitted to all tau values... # ...but I have another idea for doing that more efficiently. "nlrq.control" <- function (maxiter=100, k=2, InitialStepSize = 1, big=1e+20, eps=1.0e-07, beta=0.97) { list(maxiter=maxiter, k=k, InitialStepSize = InitialStepSize, big=big, eps=eps, beta=beta) } # Still needs to be cleaned up: several parts of the code not used here (QR,...) "nlrqModel" <- function (form, tau, data, start) { thisEnv <- environment() env <- new.env(parent = environment(form)) for (i in names(data)) { assign(i, data[[i]], envir = env) } ind <- as.list(start) parLength <- 0 for (i in names(ind)) { temp <- start[[i]] storage.mode(temp) <- "double" assign(i, temp, envir = env) ind[[i]] <- parLength + seq(along = start[[i]]) parLength <- parLength + length(start[[i]]) } useParams <- rep(TRUE, parLength) lhs <- eval(form[[2]], envir = env) rhs <- eval(form[[3]], envir = env) resid <- lhs - rhs tau <- tau dev <- sum(tau * pmax(resid, 0) + (tau - 1) * pmin(resid, 0)) if (is.null(attr(rhs, "gradient"))) { getRHS.noVarying <- function() numericDeriv(form[[3]], names(ind), env) getRHS <- getRHS.noVarying rhs <- getRHS() } else { getRHS.noVarying <- function() eval(form[[3]], envir = env) getRHS <- getRHS.noVarying } dimGrad <- dim(attr(rhs, "gradient")) marg <- length(dimGrad) if (marg > 0) { gradSetArgs <- vector("list", marg + 1) for (i in 2:marg) gradSetArgs[[i]] <- rep(TRUE, dimGrad[i - 1]) useParams <- rep(TRUE, dimGrad[marg]) } else { gradSetArgs <- vector("list", 2) useParams <- rep(TRUE, length(attr(rhs, "gradient"))) } npar <- length(useParams) gradSetArgs[[1]] <- (~attr(ans, "gradient"))[[2]] gradCall <- switch(length(gradSetArgs) - 1, call("[", gradSetArgs[[1]], gradSetArgs[[2]]), call("[", gradSetArgs[[1]], gradSetArgs[[2]], gradSetArgs[[2]]), call("[", gradSetArgs[[1]], gradSetArgs[[2]], gradSetArgs[[2]], gradSetArgs[[3]]), call("[", gradSetArgs[[1]], gradSetArgs[[2]], gradSetArgs[[2]], gradSetArgs[[3]], gradSetArgs[[4]])) getRHS.varying <- function() { ans <- getRHS.noVarying() attr(ans, "gradient") <- eval(gradCall) ans } QR <- qr(attr(rhs, "gradient")) qrDim <- min(dim(QR$qr)) if (QR$rank < qrDim) stop("singular gradient matrix at initial parameter estimates") getPars.noVarying <- function() unlist(setNames(lapply(names(ind), get, envir = env), names(ind))) getPars.varying <- function() unlist(setNames(lapply(names(ind), get, envir = env), names(ind)))[useParams] getPars <- getPars.noVarying internalPars <- getPars() setPars.noVarying <- function(newPars) { assign("internalPars", newPars, envir = thisEnv) for (i in names(ind)) { assign(i, unname(newPars[ind[[i]]]), envir = env) } } setPars.varying <- function(newPars) { internalPars[useParams] <- newPars for (i in names(ind)) { assign(i, unname(internalPars[ind[[i]]]), envir = env) } } setPars <- setPars.noVarying on.exit(remove(i, data, parLength, start, temp)) m <- list(resid = function() resid, fitted = function() rhs, formula = function() form, tau = function() tau, deviance = function() dev, gradient = function() attr(rhs, "gradient"), incr = function() qr.coef(QR, resid), setVarying = function(vary = rep(TRUE, length(useParams))) { assign("useParams", if (is.character(vary)) { temp <- logical(length(useParams)) temp[unlist(ind[vary])] <- TRUE temp } else if (is.logical(vary) && length(vary) != length(useParams)) stop("setVarying : vary length must match length of parameters") else { vary }, envir = thisEnv) gradCall[[length(gradCall)]] <<- useParams if (all(useParams)) { assign("setPars", setPars.noVarying, envir = thisEnv) assign("getPars", getPars.noVarying, envir = thisEnv) assign("getRHS", getRHS.noVarying, envir = thisEnv) assign("npar", length(useParams), envir = thisEnv) } else { assign("setPars", setPars.varying, envir = thisEnv) assign("getPars", getPars.varying, envir = thisEnv) assign("getRHS", getRHS.varying, envir = thisEnv) assign("npar", length((1:length(useParams))[useParams]), envir = thisEnv) } }, changeTau = function(newTau) { assign("tau", newTau, envir = thisEnv) assign("dev", sum(tau * pmax(resid, 0) + (tau - 1) * pmin(resid, 0)), envir = thisEnv) return(dev) }, setPars = function(newPars) { setPars(newPars) assign("resid", lhs - assign("rhs", getRHS(), envir = thisEnv), envir = thisEnv) assign("dev", sum(tau * pmax(resid, 0) + (tau - 1) * pmin(resid, 0)), envir = thisEnv) assign("QR", qr(attr(rhs, "gradient")), envir = thisEnv) return(QR$rank < min(dim(QR$qr))) }, getPars = function() getPars(), getAllPars = function() getPars(), getEnv = function() env, trace = function() cat(format(dev), ": ", format(getPars()), "\n"), Rmat = function() qr.R(QR), predict = function(newdata = list(), qr = FALSE) { Env <- new.env() for (i in objects(envir = env)) { assign(i, get(i, envir = env), envir = Env) } newdata <- as.list(newdata) for (i in names(newdata)) { assign(i, newdata[[i]], envir = Env) } eval(form[[3]], envir = Env) }) class(m) <- "nlrqModel" m } "nlrq" <- function (formula, data=parent.frame(), start, tau=0.5, control, trace=FALSE, method = "L-BFGS-B") { mf <- match.call() formula <- as.formula(formula) varNames <- all.vars(formula) if (length(formula) == 2) { formula[[3]] <- formula[[2]] formula[[2]] <- 0 } if (missing(start)) { if (!is.null(attr(data, "parameters"))) { pnames <- names(attr(data, "parameters")) } else { cll <- formula[[length(formula)]] func <- get(as.character(cll[[1]])) pnames <- as.character(as.list(match.call(func, call = cll))[-1][attr(func, "pnames")]) } } else { pnames <- names(start) } varNames <- varNames[is.na(match(varNames, pnames, nomatch = NA))] varIndex <- sapply(varNames, function(varName, data, respLength) { length(eval(as.name(varName), data))%%respLength == 0 }, data, length(eval(formula[[2]], data))) mf$formula <- parse(text = paste("~", paste(varNames[varIndex], collapse = "+")))[[1]] mf$start <- mf$tau <- mf$control <- mf$algorithm <- mf$trace <- mf$method <- NULL mf[[1]] <- as.name("model.frame") mf <- as.list(eval(mf, parent.frame())) if (missing(start)) { start <- getInitial(formula, mf) } for (var in varNames[!varIndex]) mf[[var]] <- eval(as.name(var), data) ctrl <- nlrq.control() if (!missing(control)) { control <- as.list(control) ctrl[names(control)] <- control } m <- nlrqModel(formula, tau, mf, start) nlrq.calc <- function (model, ctrl, trace) { meketon <- function(x, y, w, tau, ctrl) { yw <- ctrl$big k <- 1 while(k <= ctrl$k & yw - crossprod(y, w) > ctrl$eps) { d <- pmin(tau - w, 1 - tau + w) z <- lsfit(x, y, d^2, intercept=FALSE) yw <- sum(tau * pmax(z$resid, 0) + (tau - 1) * pmin(z$resid, 0)) k <- k + 1 s <- z$resid * d^2 alpha <- max(ctrl$eps, pmax(s/(tau - w), -s/(1 - tau + w))) w <- w + (ctrl$beta/alpha) * s } coef <- z$coef return(list(coef=coef, w=w)) } model.step <- function(lambda, Step, model, pars) { model$setPars(pars + lambda * Step) model$deviance() } w <- rep(0, length(model$resid())) snew <- model$deviance() sold <- ctrl$big nit <- 0 if (trace) { model$trace() optim.ctrl <- list(trace=1) } else { optim.ctrl <- list(trace=0) } lam0 <- ctrl$InitialStepSize while(sold - snew > ctrl$eps & nit < ctrl$maxiter) { z <- meketon(model$gradient(),as.vector(model$resid()), w, tau=tau, ctrl=ctrl) Step <- z$coef Pars <- model$getPars() lam <- try(optim(par=lam0, fn=model.step, method=method, lower=0, upper=1, Step=Step, model=model, pars=Pars, control=optim.ctrl)$par) if(inherits(lam,"try.error") || !is.finite(lam)) stop("optim unable to find valid step size") if (trace) {cat("lambda =", lam, "\n")} model$setPars(Pars + lam * Step) sold <- snew snew <- model$deviance() w <- qr.resid(qr(model$gradient()), z$w) w1 <- max(pmax(w, 0)) if(w1 > tau) {w <- (w * tau)/(w1 + ctrl$eps)} w0 <- max(pmax( - w, 0)) if(w0 > 1 - tau) {w <- (w * (1 - tau))/(w0 + ctrl$eps)} if (trace) {model$trace()} if (R.Version()$os == "Win32") {flush.console()} nit <- nit + 1 } Rho <- function(u,tau) u * (tau - (u < 0)) model$rho <- sum(Rho(model$resid(),tau)) model } nlrq.out <- list(m=nlrq.calc(m, ctrl, trace), data=substitute(data), call=match.call()) nlrq.out$call$control <- ctrl nlrq.out$call$trace <- trace class(nlrq.out) <- "nlrq" nlrq.out } "logLik.nlrq" <- function(object, ...){ n <- length(object$m$resid()) p <- length(object$m$getPars()) tau <- object$m$tau() fid <- object$m$rho val <- n * (log(tau * (1-tau)) - 1 - log(fid/n)) attr(val,"n") <- n attr(val,"df") <- p class(val) <- "logLik" val } "AIC.nlrq" <- function(object, ... , k = 2){ v <- logLik(object) if(k <= 0) k <- log(attr(v,"n")) val <- AIC(v, k = k) attr(val,"edf") <- attr(v,"df") val } "extractAIC.nlrq" <- function(fit, scale, k=2, ...){ aic <- AIC(fit,k) edf <- attr(aic, "edf") c(edf, aic) } "print.nlrq" <- function (x, ...) { cat("Nonlinear quantile regression\n") cat(" model: ", deparse(formula(x)), "\n") cat(" data: ", as.character(x$data), "\n") cat(" tau: ", as.character(x$m$tau()), "\n") cat("deviance: ", format(x$m$deviance()), "\n") print(x$m$getAllPars()) invisible(x) } # For the moment, print.summary is the same as print # However, some extra diagnostic should be done here "summary.nlrq" <- function (object, ...) structure(object, class=c("summary.nlrq", class(object))) "print.summary.nlrq" <- function (x, ...) { cat("Nonlinear quantile regression\n") cat(" model: ", deparse(formula(x)), "\n") cat(" data: ", as.character(x$data), "\n") cat(" tau: ", as.character(x$m$tau()), "\n") cat("deviance: ", format(x$m$deviance()), "\n") print(x$m$getAllPars()) invisible(x) } "coef.nlrq" <- function (object, ...) object$m$getAllPars() "deviance.nlrq" <- function (object, ...) object$m$deviance() "tau.nlrq" <- function (object, ...) object$m$tau() "fitted.nlrq" <- function (object, ...) { val <- as.vector(object$m$fitted()) lab <- "Fitted values" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab val } "formula.nlrq" <- function (x, ...) x$m$formula() "predict.nlrq" <- function (object, newdata, ...) { if (missing(newdata)) return(as.vector(fitted(object))) object$m$predict(newdata) } "residuals.nlrq" <- function (object, type = c("response", "rho"), ...) { type <- match.arg(type) val <- as.vector(object$m$resid()) if (type == "rho") { tau <- object$m$tau() val <- tau * pmax(val, 0) + (1 - tau) * pmin(val, 0) attr(val, "label") <- paste("quantile residuals rho(", tau ,")", sep="") } else { lab <- "Residuals" if (!is.null(aux <- attr(object, "units")$y)) { lab <- paste(lab, aux) } attr(val, "label") <- lab } val } "summary.nlrq" <- function(object, ...) { y <- as.vector(object$m$resid()) X <- object$m$gradient() tau <- object$m$tau() pnames <- names(object$m$getPars()) f <- summary(rq(y ~X-1,tau), se = "boot", covariance = TRUE, ...) f$coefficients[,1] <- object$m$getPars() f$coefficients[,3] <- f$coefficients[, 1]/f$coefficients[, 2] f$coefficients[, 4] <- if (f$rdf > 0) 2 * (1 - pt(abs(f$coef[, 3]), f$rdf)) dimnames(f$coefficients)[[1]] <- pnames f$call <- object$call f$tau <- tau class(f) <- "summary.nlrq" return(f) } "print.summary.nlrq" <- function (x, digits = max(5, .Options$digits - 2), ...) { cat("\nCall: ") dput(x$call) coef <- x$coef tau <- x$tau cat("\ntau: ") print(format(round(tau, digits = digits)), quote = FALSE, ...) cat("\nCoefficients:\n") print(format(round(coef, digits = digits)), quote = FALSE, ...) invisible(x) } quantreg/R/table.R0000644000176200001440000004351514705653762013542 0ustar liggesusers"latex" <- function(x, ...) UseMethod("latex") "latex.summary.rqs" <- function (x, transpose = FALSE, caption = "caption goes here.", digits = 3, file = as.character(substitute(x)), ...) { taus <- function(x) x$tau taus <- unlist(lapply(x,taus)) taus <- format(round(taus, digits)) coef <- lapply(x,coefficients) p <- nrow(coef[[1]]) k <- ncol(coef[[1]]) m <- length(taus) rlab <- dimnames(coef[[1]])[[1]] clab <- taus a <- format(round(array(unlist(coef),c(p,k,m)),digits = digits)) table <- matrix("", p, m) for (i in 1:m) { for (j in 1:p) { if (k == 3) { table[j, i] <- paste("$\\underset{(", a[j, 2, i], ",", a[j, 3, i], ")}{", a[j, 1, i], "}$", sep="") } else if (k == 4) { table[j, i] <- paste("$\\underset{(", a[j,2,i] , ")}{", a[j,1, i], "}$",sep="") } } } rowlabel <- "Covariates" dimnames(table) <- list(rlab, clab) if(transpose) { table <- t(table) rowlabel <- "Quantiles" } latex.table(table, caption = caption, rowlabel = rowlabel, file = file, ...) invisible() } "latex.table.rq" <- function(x, ...) { cat("table.rq and related methods are defunct -- see rq, which now accepts a vector of taus.") } "plot.table.rq" <- function(x, ...){ cat("table.rq() and related methods are defunct -- see ?rq, which now accepts a vector of taus.") } "table.rq" <- function(x, ...){ cat("table.rq() and related methods are defunct -- see ?rq, which now accepts a vector of taus.") } plot.rqs <- function(x, parm = NULL, ols = TRUE, mfrow = NULL, mar = NULL, ylim = NULL, main = NULL, col = 1:2, lty = 1:2, cex = 0.5, pch = 20, type = "b", xlab = "", ylab = "", ...) { ## extract taus taus <- x$tau ## obtain rq coefficients (in "parm") cf <- coef(x) if(is.null(parm)) parm <- rownames(cf) if(is.numeric(parm)) parm <- rownames(cf)[parm] cf <- cf[parm,,drop = FALSE] ## obtain OLS coefficients if(ols) { obj <- x mt <- terms(x) mf <- model.frame(x) y <- model.response(mf) X <- model.matrix(mt, mf, contrasts.arg = x$contrasts) olscf <- lm.fit(X, y)$coefficients[parm] } ## plotting parameters mfrow_orig <- par("mfrow") mar_orig <- par("mar") if(is.null(mfrow)) mfrow <- n2mfrow(length(parm)) if(is.null(mar)) mar <- c(3.1, 3.1, 3.1, 1.6) par(mfrow = mfrow, mar = mar) col <- rep(col, length.out = 2) lty <- rep(lty, length.out = 2) if(is.null(main)) main <- parm main <- rep(main, length.out = length(parm)) xlab <- rep(xlab, length.out = length(parm)) ylab <- rep(ylab, length.out = length(parm)) ## actual plotting ylim0 <- ylim for (i in seq(along = parm)) { if(is.null(ylim)){ if(ols) ylim <- range(c(cf[i, ], olscf[i])) else ylim <- range(cf[i,]) } plot(taus, cf[i, ], cex = cex, pch = pch, type = type, col = col[1], ylim = ylim, xlab = xlab[i], ylab = ylab[i], main = main[i], ...) if (ols) abline(h = olscf[i], col = col[2], lty = 2) abline(h = 0, col = gray(0.3)) ylim <- ylim0 } ## restore original par settings par(mfrow = mfrow_orig, mar = mar_orig) if(ols) invisible(cbind(cf, ols = olscf)) else invisible(cf) } plot.summary.rqs <- function(x, parm = NULL, level = 0.9, ols = TRUE, mfrow = NULL, mar = NULL, ylim = NULL, main = NULL, col = gray(c(0, 0.75)), border = NULL, lcol = 2, lty = 1:2, cex = 0.5, pch = 20, type = "b", xlab = "", ylab = "", ...) { ## normal quantile zalpha <- qnorm(1 - (1-level)/2) ## extract taus taus <- sapply(x, function(x) x$tau) ## obtain rq coefficients cf <- lapply(x, coef) if(ncol(cf[[1]]) == 4) { for(i in 1:length(cf)) { cfi <- cf[[i]] cfi <- cbind(cfi[,1], cfi[,1] - cfi[,2] * zalpha, cfi[,1] + cfi[,2] * zalpha) colnames(cfi) <- c("coefficients", "lower bd", "upper bd") cf[[i]] <- cfi } } if(ncol(cf[[1]]) != 3) stop("summary.rqs components have wrong dimension") ## extract only coefficients in "parm" if(is.null(parm)) parm <- rownames(cf[[1]]) if(is.numeric(parm)) parm <- rownames(cf[[1]])[parm] cf <- lapply(cf, function(x) x[parm,,drop=FALSE]) names(cf) <- paste("tau=", taus) ## obtain OLS coefficients if(ols) { obj <- x[[1]] mt <- terms(obj) mf <- model.frame(obj) y <- model.response(mf) X <- model.matrix(mt, mf, contrasts.arg = obj$contrasts) olscf <- summary(lm(y ~ X))$coefficients rownames(olscf) <- rownames(coef(obj)) olscf <- cbind(olscf[parm,1,drop=FALSE], olscf[parm,1,drop=FALSE] - olscf[parm,2,drop=FALSE] * zalpha, olscf[parm,1,drop=FALSE] + olscf[parm,2,drop=FALSE] * zalpha) colnames(olscf) <- c("coefficients", "lower bd", "upper bd") } ## plotting parameters mfrow_orig <- par("mfrow") mar_orig <- par("mar") if(is.null(mfrow)) mfrow <- n2mfrow(length(parm)) if(is.null(mar)) mar <- c(3.1, 3.1, 3.1, 1.6) par(mfrow = mfrow, mar = mar) col <- rep(col, length.out = 2) lty <- rep(lty, length.out = 2) if(is.null(border)) border <- col[2] if(is.null(main)) main <- parm main <- rep(main, length.out = length(parm)) xlab <- rep(xlab, length.out = length(parm)) ylab <- rep(ylab, length.out = length(parm)) ## actual plotting ylim0 <- ylim Ylim <- NULL if(is.matrix(ylim0)) if((nrow(ylim0) != 2) || ncol(ylim0) != length(parm)) stop("ylim matrix of incompatible dimensions") for(i in seq(along = parm)) { b <- t(sapply(seq(along = cf), function(tau) cf[[tau]][i, ])) if(is.matrix(ylim0)) ylim <- ylim0[,i] if(is.null(ylim0)){ if(ols) ylim <- range(c(b[,2], b[,3], olscf[i])) else ylim <- range(b[,2],b[,3]) } plot(rep(taus, 2), c(b[,2], b[,3]), type = "n", ylim = ylim, xlab = xlab[i], ylab = ylab[i], main = main[i]) polygon(c(taus, rev(taus)), c(b[,2], rev(b[,3])), col = col[2], border = border) points(taus, b[,1], cex = cex, pch = pch, type = type, col = col[1], ...) if(ols) { abline(h = olscf[i, 1], col = lcol, lty = lty[1]) abline(h = olscf[i, 2], col = lcol, lty = lty[2]) abline(h = olscf[i, 3], col = lcol, lty = lty[2]) } abline(h = 0, col = gray(0.3)) Ylim <- cbind(Ylim, ylim) } ## restore original par settings and return par(mfrow = mfrow_orig, mar = mar_orig) if(ols) x <- c(cf, list(ols = olscf)) else x <- cf invisible(list(structure(as.vector(unlist(x)), .Dim = c(dim(x[[1]]), length(x)), .Dimnames = list(rownames(x[[1]]), colnames(x[[1]]), names(x))),Ylim = Ylim)) } "latex.table" <- function (x, file = as.character(substitute(x)), rowlabel = file, rowlabel.just = "l", cgroup, n.cgroup, rgroup, n.rgroup = NULL, digits, dec, rdec, cdec, append = FALSE, dcolumn = FALSE, cdot = FALSE, longtable = FALSE, table.env = TRUE, lines.page = 40, caption, caption.lot, label = file, double.slash = FALSE, ...) { nc <- ncol(x) nr <- nrow(x) if (missing(caption) & !missing(caption.lot)) warning("caption.lot is ignored unless caption is specified") if (!longtable & !table.env & !missing(caption)) stop("you must have table.env=TRUE if caption is given") if (!missing(digits)) .Options$digits <- digits sl <- if (double.slash) "\\\\" else "\\" rlj <- if (rowlabel.just == "l") "l" else "c" if (!missing(dec)) { if (length(dec) == 1) x <- round(x, dec) else { if (!is.matrix(dec) || nrow(dec) != nrow(x) || ncol(dec) != ncol(x)) stop("dimensions of dec do not match those of x") for (i in 1:nr) for (j in 1:nc) x[i, j] <- round(x[i, j], dec[i, j]) } cx <- format(x) } else if (!missing(rdec)) { cx <- NULL for (i in 1:nr) { x[i, ] <- round(x[i, ], rdec[i]) cx <- rbind(cx, format(x[i, ])) } } else if (!missing(cdec)) { cx <- NULL for (j in 1:nc) { x[, j] <- round(x[, j], cdec[j]) cx <- cbind(cx, format(x[, j])) } } else cx <- format(x) cx[is.na(x)] <- "" if (dcolumn) sep <- "." else { #cx <- translate(cx, " ", "~") cx <- matrix(chartr(" ", "~", cx), nrow=nr) if (cdot) { #cx <- translate(cx, "[.]", "\\\\cdot", multichar = TRUE) cx <- gsub("[.]", "\\\\cdot", cx) cx <- matrix(paste("$", cx, "$", sep = ""), nrow = nr) cx[is.na(x)] <- "" } sep <- "c" } if (is.null(n.rgroup) && !missing(rgroup)) n.rgroup <- rep(nr/length(rgroup), length(rgroup)) if (!is.null(n.rgroup) && sum(n.rgroup) != nr) stop("sum of n.rgroup must equal number of rows in x") if (!missing(rgroup) && !is.null(n.rgroup) && (length(rgroup) != length(n.rgroup))) stop("lengths of rgroup and n.rgroup must match") fi <- paste(file, ".tex", sep = "") rowname <- dimnames(x)[[1]] if (length(rowname) == 0) { rowname <- NULL rowlabel <- NULL if (!missing(rgroup)) stop("you must have row dimnames to use rgroup") } #start new file if (!append) cat("", file = fi) cat("%", deparse(match.call()), "\n%\n", file = fi, append = TRUE) if (dcolumn) cat(sl, "newcolumn{.}{D{.}{", sl, "cdot}{-1}}\n", file = fi, append = TRUE) if (!is.null(rowlabel)) form <- paste("|", rowlabel.just, "|", sep = "") else form <- "" f <- paste("|", sep, sep = "", collapse = "") if (missing(cgroup)) ff <- c(rep(f, nc), "|") else { k <- length(cgroup) if (missing(n.cgroup)) n.cgroup <- rep(nc/k, k) if (sum(n.cgroup) != nc) stop("sum of n.cgroup must equal number of columns") if (length(n.cgroup) != length(cgroup)) stop("cgroup and n.cgroup must have same lengths") ff <- NULL for (i in 1:k) ff <- c(ff, rep(f, n.cgroup[i]), "|") } form <- paste(form, paste(ff, collapse = ""), sep = "") #if(missing(cgroup)) hline <- "" else hline <- paste(sl,"hline",sep="") hline <- "" if (!missing(caption)) caption <- paste(sl, "caption", if (missing(caption.lot)) NULL else paste("[", caption.lot, "]", sep = ""), "{", caption, if (longtable) NULL else paste(sl, "label{", label, "}", sep = ""), "}", sep = "") if (!longtable) { if (table.env){ cat(sl, "begin{table}[hptb]\n", sep = "", file = fi, append = TRUE) cat(caption, "\n", sep = "", file = fi, append = TRUE) } cat(sl, "begin{center}\n", file = fi, sep = "", append = TRUE) cat(sl, "begin{tabular}{", form, "} ", sl, "hline", hline, "\n", sep = "", file = fi, append = TRUE) } else { cat(paste(sl, "setlongtables", sep = ""), paste(sl, "begin{longtable}{", form, "}", sep = ""), sep = "\n", file = fi, append = TRUE) if (!missing(caption)) cat(caption, sl, sl, "\n", sep = "", file = fi, append = TRUE) cat(sl, "hline", hline, "\n", sep = "", file = fi, append = TRUE) } if (!missing(cgroup)) { cgroup <- paste(sl, "bf ", cgroup, sep = "") if (is.null(rowlabel)) { labs <- c(paste(sl, "multicolumn{", n.cgroup[1], "}{|c||}{", cgroup[1], "}", sep = "", collapse = ""), if (k > 2) paste(sl, "multicolumn{", n.cgroup[c(-1, -k)], "}{c||}{", cgroup[c(-1, -k)], "}", sep = "") else NULL, paste(sl, "multicolumn{", n.cgroup[k], "}{c|}{", cgroup[k], "}", sep = "")) g <- paste(sl, "hline", sep = "") } else { rowlabel <- paste(sl, "bf ", rowlabel, sep = "") labs <- c(paste(sl, "multicolumn{1}{|", rlj, "||}{", rowlabel, "}", sep = ""), paste(sl, "multicolumn{", n.cgroup[-k], "}{c||}{", cgroup[-k], "}", sep = ""), paste(sl, "multicolumn{", n.cgroup[k], "}{c|}{", cgroup[k], "}", sep = "")) g <- paste(sl, "cline{2-", nc + 1, "}", sep = "") } cat(labs, file = fi, sep = "&", append = TRUE) cat(sl, sl, " ", g, "\n", sep = "", file = fi, append = TRUE) if (!is.null(rowlabel)) rowlabel <- "" } collabel <- dimnames(x)[[2]] if (is.null(collabel)) collabel <- as.character(1:nc) labs <- c(rowlabel, collabel) if (missing(cgroup)) { if (is.null(rowlabel)) pre <- c(paste(sl, "multicolumn{1}{|c|}{", sep = ""), rep(paste(sl, "multicolumn{1}{c|}{", sep = ""), nc - 1)) else pre <- c(paste(sl, "multicolumn{1}{|", rlj, "||}{", sep = ""), rep(paste(sl, "multicolumn{1}{c|}{", sep = ""), nc)) } else { if (is.null(rowlabel)) { pre <- NULL j <- 0 for (i in 1:k) { if (n.cgroup[i] > 1) { g <- rep(paste(sl, "multicolumn{1}{c|}{", sep = ""), n.cgroup[i] - 1) if (j == 0) g[1] <- paste(sl, "multicolumn{1}{|c|}{", sep = "") pre <- c(pre, g) } j <- j + n.cgroup[i] if (j == 1) g <- paste(sl, "multicolumn{1}{|c||}{", sep = "") else if (j < nc) g <- paste(sl, "multicolumn{1}{c||}{", sep = "") else g <- paste(sl, "multicolumn{1}{c|}{", sep = "") pre <- c(pre, g) } } else { pre <- paste(sl, "multicolumn{1}{|", rlj, "||}{", sep = "") j <- 0 for (i in 1:k) { pre <- c(pre, rep(paste(sl, "multicolumn{1}{c|}{", sep = ""), n.cgroup[i] - 1)) j <- j + n.cgroup[i] if (j < nc) g <- paste(sl, "multicolumn{1}{c||}{", sep = "") else g <- paste(sl, "multicolumn{1}{c|}{", sep = "") pre <- c(pre, g) } } } labs <- paste(pre, labs, "}", sep = "") cat(labs, file = fi, sep = "&", append = TRUE) cat(sl, sl, " ", sl, "hline", hline, "\n", sep = "", file = fi, append = TRUE) if (longtable) { if (missing(caption)) cat(sl, "endhead\n", sl, "hline", sl, "endfoot\n", sep = "", file = fi, append = TRUE) else { cat(sl, "endfirsthead\n", sep = "", file = fi, append = TRUE) if (!missing(caption)) cat(sl, "caption[]{\\em (continued)} ", sl, sl, "\n", sep = "", file = fi, append = TRUE) cat(sl, "hline", hline, "\n", sep = "", file = fi, append = TRUE) cat(labs, file = fi, sep = "&", append = TRUE) cat(sl, sl, " ", sl, "hline", hline, "\n", sl, "endhead", sl, "hline", sl, "endfoot\n", sep = "", file = fi, append = TRUE) cat(sl, "label{", label, "}\n", sep = "", file = fi, append = TRUE) } } if (is.null(n.rgroup)) rg.end <- 0 else { rg.end <- cumsum(n.rgroup) rg.start <- rg.end - n.rgroup + 1 if (missing(rgroup)) rgroup <- rep("", length(n.rgroup)) else rgroup <- paste("{", sl, "bf ", rgroup, "}", sep = "") } linecnt <- 0 for (i in 1:nr) { if (!missing(rgroup)) { k <- rg.start == i if (any(k)) { j <- (1:length(n.rgroup))[k] if (longtable && linecnt > 0 && (linecnt + n.rgroup[j] + (n.rgroup[j] > 1)) > lines.page) { cat(sl, "newpage\n", sep = "", file = fi, append = TRUE) linecnt <- 0 } if (n.rgroup[j] > 1) { cat(rgroup[j], rep("", nc), file = fi, sep = "&", append = TRUE) linecnt <- linecnt + 1 cat(sl, sl, "\n", sep = "", file = fi, append = TRUE) } l <- rg.start[j]:rg.end[j] if (length(l) > 1) rowname[l] <- paste("~~", rowname[l], sep = "") else rowname[l] <- paste("{", sl, "bf ", rowname[l], "}", sep = "") } } else if (longtable && linecnt > 0 && (linecnt + 1 > lines.page)) { cat(sl, "newpage\n", sep = "", file = fi, append = TRUE) linecnt <- 0 } cat(c(rowname[i], cx[i, ]), file = fi, sep = "&", append = TRUE) linecnt <- linecnt + 1 if (i < nr && any(rg.end == i)) g <- paste(sl, "hline", sep = "") else g <- "" cat(sl, sl, " ", g, "\n", sep = "", file = fi, append = TRUE) } cat(sl, "hline", hline, "\n", sep = "", file = fi, append = TRUE) if (longtable) cat(sl, "end{longtable}\n", sep = "", file = fi, append = TRUE) else { cat(sl, "end{tabular}\n", sep = "", file = fi, append = TRUE) if (!missing(caption)) { cat(sl, "vspace{3mm}\n", sep = "", file = fi, append = TRUE) #cat(caption, "\n", file = fi, append = TRUE) } #cat(caption, "\n", file = fi, append = TRUE) cat(sl, "end{center}\n", sep = "", file = fi, append = TRUE) if (table.env) cat(sl, "end{table}\n", sep = "", file = fi, append = TRUE) } invisible() } "table.rq" <- function (x, ...) stop("table.rq now defunct, rq() now accepts vector tau argument. See ?rq.") quantreg/R/boot.R0000644000176200001440000003023514222062520013365 0ustar liggesusers"boot.rq"<- function (x, y, tau = 0.5, R = 200, bsmethod = "xy", mofn = length(y), coef = NULL, blbn = NULL, cluster = NULL, U = NULL, ...) { n <- length(y) if(class(x)[1] != "matrix.csr") x <- as.matrix(x) p <- ncol(x) B <- matrix(0, R, p) if(tau < 0 || tau > 1) stop("tau outside (0,1) not allowed") if(length(cluster)) bsmethod <- "cluster" if (bsmethod == "xy") { if(!length(U)){ if(mofn < p || mofn > n) stop("mofn is out of range") U <- matrix(sample(n, mofn * R, replace = TRUE), mofn, R) } B <- sqrt(mofn/n)*boot.rq.xy(x, y, U, tau) } else if (bsmethod == "wxy") { if(!length(U)) U <- matrix(rexp(n * R,1), n, R) B <- boot.rq.wxy(x, y, U, tau) } else if (bsmethod == "pxy") { if (!length(U)) { if (mofn < p || mofn > n) stop("mofn is out of range") U <- matrix(sample(n, mofn * R, replace = TRUE), mofn, R) } B <- sqrt(mofn/n) * boot.rq.pxy(x, y, U, tau, coef, ...) } else if (bsmethod == "pwxy") { B <- sqrt(mofn/n) * boot.rq.pwxy(x, y, tau, coef, ...)$B } else if (bsmethod == "BLB") { B <- boot.rq.pwxy(x, y, tau, coef, ...)$B } else if (bsmethod == "cluster"){ # Hagemann wild gradient bootstrap if(!length(U)){ if(length(cluster) != n) stop("cluster is wrong length") u <- unique(cluster) m <- length(u) h <- c(-(sqrt(5) - 1)/2, (sqrt(5) + 1)/2) hp <- c((sqrt(5) + 1)/sqrt(20), (sqrt(5) - 1)/sqrt(20)) U <- matrix(sample(h, R * m, prob = hp, replace = TRUE), m, R) U <- apply(U, 2, function(v) v[match(cluster,u)]) } if(class(x)[1] == "matrix.csr") r <- c(rq.fit.sfn(x, y, tau)$resid) else r <- c(rq.fit.fnb(x, y, tau)$resid) psi <- (r < 0) - tau W <- as.matrix(t(x) %*% (U * psi)) if(class(x)[1] == "matrix.csr") B <- boot.rq.spwy(W, x, y, tau) else B <- boot.rq.pwy(W, x, y, tau) } else if (bsmethod == "jack"){ # Portnoy proposal if(!length(U)){ if(missing(mofn)) mofn <- n - ceiling(2*sqrt(n)) if(mofn < p || mofn > n) stop("mofn is out of range") U <- matrix(0, mofn, R) U <- apply(U, 2, function(x) sample(n, mofn)) } B <- (mofn - p + 1)/sqrt(n * (n - mofn)) * boot.rq.xy(x, y, U, tau) } else if (bsmethod == "pwy") { if(!length(U)){ U <- matrix(runif(n * R), n, R) } W <- as.matrix(t(x) %*% ((U < tau) - tau)) if(class(x)[1] == "matrix.csr") B <- boot.rq.spwy(W, x, y, tau) else B <- boot.rq.pwy(W, x, y, tau) } else if (bsmethod == "mcmb") { B <- boot.rq.mcmb(x, y, tau = tau, R = R) } else if (bsmethod == "wild") { n <- length(y) fit <- rq.fit(x, y, tau = tau) S <- sample(c(-2*tau,2*(1-tau)),prob = c(tau,1-tau),size = n * R, replace = TRUE) W <- matrix(S,n,R) r <- c(fit$resid) f0 <- akj(r,z=0)$dens if(inherits(x, "matrix.csr")) H <- diag(x %*% solve(t(x) %*% x) %*% t(x)) else H <- hat(x, intercept = FALSE) r <- r + H * (tau - I(r < 0))/f0 Y <- c(fitted(fit)) + W * abs(r) B <- rqs.fit(x,Y,tau = tau) } else stop("your bootstrap method is not implemented") #cat(paste("Bootstrap standard errors based on ",R," replications")) list(B = B, U = U) } "boot.rq.mcmb" <- function (x, y, tau = 0.5, R = 200) { n <- length(y) p <- ncol(x) if(n < 2000) fit <- rq(y~x - 1, tau = tau, ci = FALSE) else fit <- rq(y~x - 1, tau = tau, method = "fn") coef <- fit$coef svdx <- svd(x) condx <- svdx$d[1]/svdx$d[p] Ainv <- svdx$v %*% diag(svdx$d) %*% t(svdx$v) coefTilda <- Ainv %*% coef A <- svdx$v %*% diag(1/svdx$d) %*% t(svdx$v) r <- fit$resid psi <- signr <- sign(r) psi[signr > 0] <- tau psi[signr < 0] <- tau - 1 psimat <- matrix(psi, nrow = n, ncol = p, byrow = FALSE) x <- x %*% A ZTilda <- x * psimat sumxij <- apply(x, 2, sum) sumabsxij <- apply(abs(x), 2, sum) zstar <- .C("bootnp", as.double(t(x)), as.double(y), as.double(tau), as.double(coefTilda), as.double(t(A)), as.double(ZTilda), as.double(sumxij), as.double(sumabsxij), as.integer(n), as.integer(p), success = as.integer(1), theta = as.double(rep(0, R * p + p), as.integer(c(p, R + 1))), as.integer(R)) if (zstar$success == 0) return(list(success = 0)) else{ B <- matrix(zstar$theta,p,R+1)[,-1] B <- t(A %*% B) } B } "boot.rq.xy"<- function(x, y, s, tau = 0.5, tol = 0.0001) { #function to compute xypairs bootstrap for regression quantiles #stripped down for monte-carlo purposes x <- as.matrix(x) p <- ncol(x) n <- nrow(x) R <- ncol(s) m <- nrow(s) z <- .Fortran("xys", as.integer(m), as.integer(n), as.integer(p), as.integer(R), as.integer(m + 5), as.integer(p + 2), as.double(x), as.double(y), as.double(tau), as.double(tol), flag = integer(R), coef = double(p * R), resid = double(m), integer(m), double((m + 5) * (p + 2)), double(m), xx = double(m * p), yy = double(m), as.integer(s)) if(sum(z$flag)>0){ if(any(z$flag)==2) warning(paste(sum(z$flag==2),"out of",R, "BS replications have near singular design")) if(any(z$flag)==1) warning(paste(sum(z$flag==1),"out of",R,"may be nonuniqu")) } return(t(matrix(z$coef, p, R))) } "boot.rq.wxy"<- function(x, y, w, tau = 0.5, tol = 0.0001) { #function to compute weighted bootstrap a la Bose for regression quantiles x <- as.matrix(x) p <- ncol(x) n <- nrow(x) R <- ncol(w) m <- nrow(w) z <- .Fortran("wxy", as.integer(n), as.integer(p), as.integer(R), as.integer(m + 5), as.integer(p + 2), as.double(x), as.double(y), as.double(tau), as.double(tol), flag = integer(R), coef = double(p * R), resid = double(m), integer(m), double((m + 5) * (p + 2)), double(m), xx = double(m * p), yy = double(m), as.double(w)) if(sum(z$flag)>0){ if(any(z$flag)==2) warning(paste(sum(z$flag==2),"out of",R, "BS replications have near singular design")) if(any(z$flag)==1) warning(paste(sum(z$flag==1),"out of",R,"may be nonunique")) } return(t(matrix(z$coef, p, R))) } "boot.rq.pwy"<- function(U,X, y, tau = 0.5, tol=1e-4) { #resampling method of parzen,wei,ying for quantile regression #NB. x should be full design matrix including intercept n <- length(y) p <- ncol(X) R <- ncol(U) Y <- c(y,length(y)*max(abs(y))) if(inherits(X, "matrix.csr")) x <- rbind(X, t(as.matrix.csr(rep(0, p)))) else x <- rbind(X,0) xu <- t(U)/tau n <- n+1 z<-.Fortran("pwy", as.integer(n), as.integer(p), as.integer(R), as.integer(n + 5), as.integer(p + 2), as.double(xu), as.double(x), as.double(Y), as.double(tau), as.double(tol), flag = as.integer(1), coef = double(p * R), resid = double(n), integer(n), double((n + 5) * (p + 2)), double(n)) return(t(matrix(z$coef, p, R))) } ################################################################# # NB: In an ideal world the loop below would be in fortran, in a # a really ideal world all of this resampling code # would be able to adapt to the "fn" or "sfn" etc # method used by the original fitting scheme. # My initial attempt to allow control to be passed # from the initial fit of the coefficients was a failure. # There was a "memory not mapped" segfault presumably # due to the fact that the pwy scheme has one extra # observation. Who would have guessed things were so # delicately tuned. This should be fixed when I'm in # a more delicate frame of mind. Meanwhile, on Andreas # test problem using sfn is substantially faster 26s # vs 148s for fnb, and even more for br as I used earlier. ################################################################# boot.rq.spwy <- function(W, a, y, tau=.5) { y <- c(y, length(y) * max(abs(y))) n <- length(y) m <- a@dimension[2] a <- rbind(a, as.matrix.csr(t(rep(1,m)))) nra <- length(a@ra) W <- W/tau k <- ncol(W) # Number of resampling realizations if(m != nrow(W)) stop("W row dimension not compatible with design matrix") if(n != a@dimension[1]) stop("Dimensions of design matrix and the response vector not compatible") for(i in 1:k){ a@ra[(nra - m + 1):nra] <- W[,i] W[,i] <- rq.fit.sfn(a,y,tau = tau)$coef } B <- t(W) B } # Preprocessing version of the xy bootstrap # globs as in "pfn" method # matrix s contains multinomial resampling draws (n by R) boot.rq.pxy <- function (x, y, s, tau = 0.5, coef, method="fn", Mm.factor = 3) { x <- as.matrix(x) p <- ncol(x) n <- nrow(x) R <- ncol(s) mofn <- nrow(s) #I have implemented the bootstrap with the count vector instead of the permutation vector counts <- apply(s, 2, tabulate, nbins=n) m <- round((p*n)^(1/2)) # Is there any theory for this? xxinv <- solve(chol(crossprod(x))) band <- sqrt(rowSums((x %*% xxinv)^2)) # H[i,i] vector r <- (y - x %*% coef)/band #To avoid computing quantiles of r in each replication I calculate once the cdf rs <- sort(r) B <- matrix(NA, R, p) #add two observations for the globs x <- rbind(0,0,x) y <- c(0,0,y) counts <- rbind(1,1,counts) for(i in 1:R){ mm <- m not.optimal <- TRUE #keep only the observations with positive weights bs <- (counts[,i] > 0) xb <- x[bs,] yb <- y[bs] rb <- r[bs[3:length(bs)]] wb <- counts[bs, i] while (not.optimal) { M <- Mm.factor * mm lo.q <- max(1, ceiling(n*tau - M/2)) hi.q <- min(floor(n*tau + M/2), n) kappa <- rs[c(lo.q, hi.q)] sl <- c(FALSE, FALSE, rb < kappa[1]) su <- c(FALSE, FALSE, rb > kappa[2]) while (not.optimal) { if (any(sl)) { xb[1,] <- colSums(xb[sl, , drop = FALSE] * wb[sl]) yb[1] <- sum(yb[sl] * wb[sl]) } else sl[1] <- TRUE if (any(su)) { xb[2,] <- colSums(xb[su, , drop = FALSE] * wb[su]) yb[2] <- sum(yb[su] * wb[su]) } else su[2] <- TRUE sel <- c(!su & !sl) #use weighted QR z <- tryCatch(z <- rq.wfit(xb[sel, ], yb[sel], weights=wb[sel], tau = tau, method = method), error = function(e) e) if(inherits(z, "error")){ mm <- 2*mm warning("Singular design: doubling m") break } b <- z$coef rb <- yb[3:sum(bs)] - xb[3:sum(bs), ] %*% b su.bad <- c(FALSE, FALSE, rb < 0) & su sl.bad <- c(FALSE, FALSE, rb > 0) & sl bad.signs <- sum(su.bad | sl.bad) if (bad.signs > 0) { if (bad.signs > 0.1 * M) { mm <- 2*mm #warning("Too many fixups: doubling m") break } su <- su & !su.bad sl <- sl & !sl.bad } else not.optimal <- FALSE } } B[i,] <- b } B } boot.rq.pwxy <- function (x, y, tau, coef, R = 200, m0 = NULL, eps = 1e-06, ...) { n <- length(y) if (nrow(x) != n) stop("x and y don't match n") p <- ncol(x) if (!length(m0)) m0 <- round(sqrt(n*p)) r <- y - x %*% coef b <- matrix(0, p, R) nit <- matrix(0, 5, R) # This version keeps track of fixups! info <- rep(0, R) xxinv <- solve(chol(crossprod(x))) band <- pmax(eps, sqrt(((x %*% xxinv)^2) %*% rep(1, p))) r <- r/band o <- order(r) r <- r[o] y <- y[o] x <- x[o,] loq <- max(1, ceiling(n*tau - m0/2)) hiq <- min(floor(n*tau + m0/2), n) qk <- r[c(loq,hiq)] z <- .Fortran("pwxy", as.integer(n), as.integer(p), as.integer(R), as.double(t(x)), as.double(y), as.double(tau), as.double(qk),as.double(r), b = as.double(-b), double(n), as.double(band), as.integer(m0), double(n), double(n), double(n * 9), double(p * (p + 3)), double(p * n), double(n), integer(n), integer(n), double(p), double(p), double(p), nit = as.integer(nit), info = as.integer(info)) if(any(z$info != 0)) warnings("Some bootstrap replications have abnormal convergence") B <- t(matrix(-z$b, p, R)) nit <- matrix(z$nit,5,R) list(B = B, nit = nit) } quantreg/R/anova.R0000644000176200001440000003400014705653621013536 0ustar liggesusers"anova.rq" <- function (object, ..., test = "Wald", joint = TRUE, score = "tau", se = "nid", iid = TRUE, R = 200, trim = NULL) { if (length(list(object, ...)) > 1) { objects <- list(object, ...) return(anova.rqlist(objects, ..., test = test, joint = joint, score = score, se = se, iid = iid, R = R, trim = trim)) } stop("Anova is only defined (yet) for lists of rq objects") } anova.rqs <- function(object, ..., se = "nid", iid = TRUE, joint = TRUE){ class(object) <- "rq" m <- length(object$tau) z <- rep(list(object), m) for(i in 1:m){ z[[i]]$coefficients <- object$coefficients[,i] z[[i]]$tau <- object$tau[i] z[[i]]$rho <- object$rho[i] } return(anova.rqlist(z, ..., se = se, iid = iid, joint = joint)) } "anova.rqlist" <- function (object, ..., test = "Wald", joint = TRUE, score = "tau", se = "nid", iid = TRUE, R = 200, trim = NULL) { objects <- object responses <- as.character(lapply(objects, function(x) formula(x)[[2]])) sameresp <- responses == responses[1] if (!all(sameresp)) stop("Models don't all have the same response variable") n <- length(objects[[1]]$resid) models <- as.character(lapply(objects, function(x) formula(x))) nobjects <- length(objects) dimp <- lapply(objects, function(x) length(coef(x))) objects <- objects[order(-unlist(dimp))] mf <- model.frame(objects[[1]]) models <- as.character(lapply(objects, function(x) formula(x))) taus <- unlist(lapply(objects, function(x) x$tau)) if(is.matrix(coef(objects[[1]]))) names <- lapply(objects, function(x) dimnames(coef(x))[[1]]) else names <- lapply(objects, function(x) names(coef(x))) if (test == "Wald") objects <- lapply(objects, function(x) summary(x,se=se,R=R,covariance = TRUE)) sametaus <- taus == taus[[1]] if (all(sametaus)) { Tn <- rep(0, nobjects - 1) ndf <- Tn ddf <- Tn pvalue <- Tn topnote <- paste("Model ", format(1:nobjects), ": ", models, sep = "", collapse = "\n") if (test == "anowar") { X1 <- model.matrix(objects[[1]],mf,contrasts.arg=objects[[1]]$contrasts) y <- model.response(mf) weights <- as.vector(model.weights(mf)) tau <- taus[[1]] for (i in 2:nobjects) { if (!all(sapply(names[[i]], function(x) any(grepl(x, names[[1]], fixed = TRUE))))) stop("Models aren't nested") mf <- model.frame(objects[[i]]) X0 <- model.matrix(objects[[i]], mf,contrasts.arg=objects[[i]]$contrasts) Htest <- rq.test.anowar(X0, X1, y, tau = tau, R = R) ndf[i - 1] <- Htest$ndf Tn[i - 1] <- Htest$Tn ddf[i - 1] <- Htest$ddf pvalue[i - 1] <- Htest$pvalue } table <- data.frame(ndf, ddf, Tn, pvalue) } else if (test == "rank") { x1 <- model.matrix(objects[[1]],mf,contrasts.arg=objects[[1]]$contrasts) y <- model.response(mf) weights <- as.vector(model.weights(mf)) for (i in 2:nobjects) { if (!all(sapply(names[[i]], function(x) any(grepl(x, names[[1]], fixed = TRUE))))) stop("Models aren't nested") nullH <- is.na(match(names[[1]], names[[i]])) X1 <- as.matrix(x1[, nullH]) mf <- model.frame(objects[[i]]) X0 <- model.matrix(objects[[i]], mf,contrasts.arg=objects[[i]]$contrasts) if(score == "tau") tau <- taus[[1]] Htest <- rq.test.rank(X0, X1, y, score = score, weights = weights, iid = iid, tau = tau, trim = trim) ndf[i - 1] <- Htest$ndf Tn[i - 1] <- Htest$Tn ddf[i - 1] <- Htest$ddf pvalue[i - 1] <- Htest$pvalue } table <- data.frame(ndf, ddf, Tn, pvalue) } else if (test == "Wald") { V <- lapply(objects, function(x) x$cov) coef <- lapply(objects, function(x) coef(x)[,1]) for (i in 2:nobjects) { if (!all(sapply(names[[i]], function(x) any(grepl(x, names[[1]], fixed = TRUE))))) stop("Models aren't nested") nullH <- is.na(match(names[[1]], names[[i]])) ndf[i - 1] <- sum(nullH) Tn[i - 1] <- t((coef[[1]])[nullH]) %*% solve((V[[1]])[nullH, nullH], (coef[[1]])[nullH])/ndf[i - 1] ddf[i - 1] <- n - length(names[[1]]) pvalue[i - 1] <- 1 - pf(Tn[i - 1], ndf[i - 1], ddf[i - 1]) } table <- data.frame(ndf, ddf, Tn, pvalue) } else stop("test only defined for anowar, Wald and rank") } else { m <- length(taus) n <- NROW(objects[[1]]$residuals) for (i in 2:m) { if (!setequal(names[[i]], names[[1]])) stop("Models with common tau don't have same X") } if (names[[1]][1] != "(Intercept)") stop("Intercept required in common tau testing") Omega <- outer(taus, taus, pmin) - outer(taus, taus) J <- objects[[1]]$J p <- dim(J)[1] H <- array(unlist(lapply(objects, function(x) x$Hinv)), c(p, p, m)) H <- matrix(aperm(H, c(1, 3, 2)), p * m, p) %*% t(chol(J)) W <- (H %*% t(H)) * (kronecker(Omega, outer(rep(1, p), rep(1, p)))) coef <- unlist(lapply(objects, function(x) coef(x)[,1])) if(joint){ D <- kronecker(diff(diag(m)), cbind(0, diag(p - 1))) ndf <- (p - 1) * (m - 1) Tn <- t(D %*% coef) %*% solve(D %*% W %*% t(D), D %*% coef)/ndf ddf <- n * m - (p-1) * (m - 1) pvalue <- 1 - pf(Tn, ndf, ddf) nobjects <- 1 tnote1 <- paste("Model: ", models[[1]], "\n", sep = "") tnote2 <- paste("Joint Test of Equality of Slopes: tau in { ", paste(taus, collapse = " "), " }\n") topnote <- paste(tnote1, tnote2, sep = "") table <- data.frame(ndf, ddf, Tn, pvalue) } else{ Tn <- pvalue <- rep(0,p-1) ndf <- m-1 ddf <- n*m - (m-1) for(i in 2:p){ E <- matrix(0, 1, p) E[1,i] <- 1 D <- kronecker(diff(diag(m)),E) Tn[i-1] <- t(D %*% coef) %*% solve(D %*% W %*% t(D), D %*% coef)/ndf pvalue[i-1] <- 1 - pf(Tn[i-1], ndf, ddf) } tnote1 <- paste("Model: ", models[[1]], "\n", sep = "") tnote2 <- paste("Tests of Equality of Distinct Slopes: tau in { ", paste(taus, collapse = " "), " }\n") topnote <- paste(tnote1, tnote2, sep = "") table <- data.frame(ndf, ddf, Tn, pvalue) dimnames(table)[[1]] <- names[[1]][2:p] } } x <- list(table=table,topnote=topnote) class(x) <- "anova.rq" return(x) } "print.anova.rq" <- function(x,...){ table <- x$table topnote <- x$topnote dimnames(table)[[2]] <- c("Df", "Resid Df", "F value", "Pr(>F)") title <- "Quantile Regression Analysis of Deviance Table\n" a <- structure(table, heading = c(title, topnote), class = c("anova", "data.frame")) print(a) } rq.test.anowar <- function(x0,x1,y,tau,R){ if(!requireNamespace("logspline", quietly = TRUE)) stop("anowar test requires logspline package") n <- length(y) f0 <- rq(y ~ x0 - 1, tau = tau) f1 <- rq(y ~ x1 - 1, tau = tau) Rho <- function(u,tau) u * (tau - (u < 0)) Mn <- sum(Rho(f0$resid,tau)) - sum(Rho(f1$resid,tau)) if(!hasArg(R)) R <- 200 W <- matrix(rexp(n*R,1),n,R) B1 <- t(boot.rq.wxy(x1,y,W,tau)) B0 <- t(boot.rq.wxy(x0,y,W,tau)) R0 <- Rho(y - x0 %*% B0,tau) R1 <- Rho(y - x1 %*% B1,tau) W0 <- apply(R0*W, 2, sum) - apply(W * Rho(f0$resid,tau), 2, sum) W1 <- apply(R1*W, 2, sum) - apply(W * Rho(f1$resid,tau), 2, sum) RefDistn <- logspline::logspline(W0 - W1) pvalue <- 1 - logspline::plogspline(Mn,RefDistn) ndf <- ncol(x1) - ncol(x0) ddf <- n - ncol(x1) list(Tn = Mn, ndf=ndf, ddf=ddf, pvalue=pvalue) } "rq.test.rank" <- function (x0, x1, y, v = NULL, score = "wilcoxon", weights = NULL, tau = 0.5, iid = TRUE, delta0 = rep(0, NCOL(x1)), omega = 1, trim = NULL, pvalue = "F") { if (length(weights) > 0) { y <- weights * y x0 <- weights * x0 x1 <- weights * x1 } n <- length(y) if (!length(v) > 0) if(score == "tau"){ r <- rq.fit.br(x0,y,tau = tau)$dual - (1 - tau) r <- list(ranks = r, A2 = tau * (1 - tau)) } else{ v <- rq(y ~ x0 - 1, tau = -1) r <- ranks(v, score, tau, trim) } else r <- ranks(v, score, tau, trim) if(iid == FALSE && score == "tau"){ h <- bandwidth.rq(tau, n, hs = TRUE) bhi <- rq.fit.br(x0, y, tau + h, ci = FALSE) bhi <- coefficients(bhi) blo <- rq.fit.br(x0, y, tau - h, ci = FALSE) blo <- coefficients(blo) dyhat <- x0 %*% (bhi - blo) if(any(dyhat <= 0)) { pfis <- (100 * sum(dyhat <= 0))/n warning(paste(pfis, "percent fis <=0")) } eps <- .Machine$double.eps^(2/3) f <- pmax(eps, (2 * h)/(dyhat - eps)) x1hat <- resid(lm.wfit(x0, x1, w = f)) } else x1hat <- as.matrix(qr.resid(qr(x0), x1)) Tn <- as.matrix(t(x1hat) %*% r$ranks) Tn <- t(Tn) %*% solve(crossprod(x1hat)) %*% Tn/r$A2 ncp <- (omega^2) * t(delta0) %*% (crossprod(x1hat)/n) %*% delta0/r$A2 ndf <- NCOL(x1) Tn <- Tn/ndf ddf <- length(y) - NCOL(x0) - NCOL(x1) if (pvalue == "F") pvalue <- 1 - pf(Tn, ndf, ddf, ncp) else pvalue <- 1 - pchisq(Tn*ndf, ndf, ncp) list(Tn = Tn, ndf = ndf, ddf = ddf, pvalue = pvalue) } "ranks" <- function (v, score = "wilcoxon", tau = 0.5, trim = NULL) { A2 <- 1 if(length(trim) & !(score == "wilcoxon")) stop("trimming is only permitted with the wilcoxon score functions") if (score == "wilcoxon") { phibar <- 1/2 A2 <- 1/12 u <- v$sol[1,] J <- length(u) d <- v$dsol if(length(trim)){ if(length(trim) == 1) trim <- c(trim, 1 - trim) else if(length(trim) > 2) stop("Only 2 trimming proportions allowed") else { if(any(trim < 0) || any(trim > 1)) stop("trim must lie in [0,1]") trim <- sort(trim) klo <- findInterval(trim[1],u) khi <- findInterval(trim[2],u) wlo <- (trim[1] - u[klo])/(u[klo+1] - u[klo]) dlo <- wlo * d[,klo] + (1-wlo) * d[,klo + 1] s <- (klo+1):khi s <- (klo+1):khi if(khi < J) { whi <- (trim[2] - u[khi])/(u[khi+1] - u[khi]) dhi <- whi * d[,khi] + (1-whi) * d[,khi + 1] u <- c(trim[1], u[s], trim[2]) d <- cbind(dlo, d[,s], dhi) } else { u <- c(trim[1],u[s]) d <- cbind(dlo, d[,s]) } a <- trim[1]; b <- trim[2] phibar <- c <- ( a^2 + 2*b - b^2)/2 A2 <- (2/3) *(a^3 - b^3) - c * a^2 - 2 * b * c + c^2 + (1+c) * b^2 } } D <- v$dsol J <- length(u) ranks <- c((0.5 * (d[, 2:J] + d[, 1:(J - 1)]) %*% diff(u)) - phibar) return(list(ranks = ranks, A2 = A2)) } else if (score == "normal") { J <- ncol(v$sol) dt <- v$sol[1, 2:J] - v$sol[1, 1:(J - 1)] dphi <- c(0, dnorm(qnorm(v$sol[1, 2:(J - 1)])), 0) dphi <- diff(dphi) ranks <- as.vector((((v$dsol[, 2:J] - v$dsol[, 1:(J - 1)]))) %*% (dphi/dt)) return(list(ranks = ranks, A2 = A2)) } else if (score == "sign") { j.5 <- sum(v$sol[1, ] < 0.5) w <- (0.5 - v$sol[1, j.5])/(v$sol[1, j.5 + 1] - v$sol[1, j.5]) r <- w * v$dsol[, j.5 + 1] + (1 - w) * v$dsol[, j.5] ranks <- 2 * r - 1 return(list(ranks = ranks, A2 = A2)) } else if (score == "tau") { j.tau <- sum(v$sol[1, ] < tau) w <- (tau - v$sol[1, j.tau])/(v$sol[1, j.tau + 1] - v$sol[1, j.tau]) r <- w * v$dsol[, j.tau + 1] + (1 - w) * v$dsol[, j.tau] ranks <- r - (1 - tau) A2 <- tau * (1 - tau) return(list(ranks = ranks, A2 = A2)) } else if (score == "normalscale") { J <- ncol(v$sol) taus <- v$sol[1,] dt <- taus[2:J] - taus[1:(J - 1)] Qt <- qnorm(taus[2:(J-1)]) phi <- c(0, -dnorm(Qt)*Qt, 0) dphi <- diff(phi) ranks <- as.vector((((v$dsol[, 2:J] - v$dsol[, 1:(J - 1)]))) %*% (dphi/dt)) return(list(ranks = ranks, A2 = 2)) } else if (score == "halfnormalscale") { J <- ncol(v$sol) taus <- v$sol[1,] dt <- taus[2:J] - taus[1:(J - 1)] Qt <- qnorm(taus[2:(J-1)]) phi <- c(0, (taus[2:(J-1)] - dnorm(Qt)*Qt)*(taus[2:(J-1)] > .5), 1) dphi <- diff(phi) dphi[dphi > .5] <- 0 #Kludge to zap jump point. ranks <- (((v$dsol[, 2:J] - v$dsol[, 1:(J-1)]))) ranks <- as.vector(ranks %*% (dphi/dt)) return(list(ranks = ranks, A2 = 1.25)) } else if(score == "lehmann"){ J <- ncol(v$sol) taus <- v$sol[1,] dt <- taus[2:J] - taus[1:(J - 1)] taus <- taus[2:(J-1)] phi <- c(0, -(taus -1)*log(1-taus),0) dphi <- diff(phi) ranks <- (((v$dsol[, 2:J] - v$dsol[, 1:(J-1)]))) ranks <- as.vector(ranks %*% (dphi/dt)) return(list(ranks = ranks, A2 = 1)) } else if (score == "interquartile") { j.25 <- sum(v$sol[1, ] < 0.25) w <- (0.25 - v$sol[1, j.25])/(v$sol[1, j.25 + 1] - v$sol[1, j.25]) r.25 <- w * v$dsol[, j.25 + 1] + (1 - w) * v$dsol[, j.25] j.75 <- sum(v$sol[1, ] < 0.75) w <- (0.75 - v$sol[1, j.75])/(v$sol[1, j.75 + 1] - v$sol[1, j.75]) r.75 <- w * v$dsol[, j.75 + 1] + (1 - w) * v$dsol[, j.75] ranks <- 0.5 + r.75 - r.25 A2 <- 1/4 return(list(ranks = ranks, A2 = A2)) } else stop("invalid score function") } quantreg/R/dynrq.R0000644000176200001440000002225114247331626013573 0ustar liggesusersdynrq <- function (formula, tau = 0.5, data, subset, weights, na.action, method = "br", contrasts = NULL, start = NULL, end = NULL, ...) { stopifnot(requireNamespace("zoo", quietly = TRUE)) Zenv <- new.env(parent = environment(formula)) assign("dynformula", function(x) structure(x, class = unique(c("dynformula", oldClass(x)))), envir = Zenv) assign("L", function(x, k = 1) { if (length(k) > 1) { rval <- lapply(k, function(i) lag(x, k = -i)) rval <- if (inherits(x, "ts")) do.call("ts.intersect", rval) else do.call("zoo::merge.zoo", c(rval, list(all = FALSE))) colnames(rval) <- k } else { rval <- lag(x, k = -k) } return(rval) }, envir = Zenv) assign("d", function(x, lag = 1) diff(x, lag = lag), envir = Zenv) assign("season", function(x, ref = NULL) { freq <- frequency(x) stopifnot(freq > 1 && identical(all.equal(freq, round(freq)), TRUE)) freq <- ofreq <- round(freq) freq <- if (freq == 12) month.abb else if (freq == 4) paste("Q", 1:4, sep = "") else 1:freq rval <- factor(zoo::coredata(cycle(x)), labels = freq) if (!is.null(ref)) rval <- relevel(rval, ref = ref) rval <- zoo::zoo(rval, zoo::index(x), ofreq) return(rval) }, envir = Zenv) assign("trend", function(x, scale = TRUE) { freq <- ofreq <- if (inherits(x, "ts")) frequency(x) else attr(x, "frequency") if (is.null(freq) | !scale) freq <- 1 stopifnot(freq >= 1 && identical(all.equal(freq, round(freq)), TRUE)) freq <- round(freq) rval <- zoo::zoo(seq_along(zoo::index(x))/freq, zoo::index(x), frequency = ofreq) return(rval) }, envir = Zenv) assign("harmon", function(x, order = 1) { freq <- frequency(x) stopifnot(freq > 1 && identical(all.equal(freq, round(freq)), TRUE)) freq <- round(freq) order <- round(order) stopifnot(order <= freq/2) rval <- outer(2 * pi * zoo::index(x), 1:order) rval <- cbind(apply(rval, 2, cos), apply(rval, 2, sin)) colnames(rval) <- if (order == 1) { c("cos", "sin") } else { c(paste("cos", 1:order, sep = ""), paste("sin", 1:order, sep = "")) } if ((2 * order) == freq) rval <- rval[, -(2 * order)] return(rval) }, envir = Zenv) assign("model.frame.dynformula", function(formula, data = NULL, subset = NULL, na.action = na.omit, drop.unused.levels = FALSE, xlev = NULL, ...) { if (is.null(data)) data <- parent.frame() if (!is.list(data)) data <- as.list(data) args <- as.list(attr(terms(formula), "variables"))[-1] args$retclass <- "list" args$all <- FALSE formula <- terms(formula) attr(formula, "predvars") <- as.call(append(zoo::merge.zoo, args)) attr(formula, "predvars")[[1]] <- as.name("merge.zoo") NextMethod("model.frame", formula = formula) }, envir = Zenv) if (missing(data)) data <- Zenv orig.class <- if (is.data.frame(data) || is.environment(data)) class(eval(attr(terms(formula), "variables")[[2]], data, Zenv)) else class(data) cl <- match.call() mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "weights", "na.action"), names(mf), 0) mf <- mf[c(1, m)] mf$drop.unused.levels <- TRUE mf[[1]] <- as.name("model.frame") mf[[2]] <- as.call(list(as.name("dynformula"), mf[[2]])) mf <- eval(mf, envir = Zenv) mfna <- attr(mf, "na.action") if (length(zoo::index(mf[, 1])) > nrow(mf)) { for (i in 1:NCOL(mf)) attr(mf[, i], "index") <- attr(mf[, i], "index")[-as.vector(mfna)] } is.zoofactor <- function(x) !is.null(attr(x, "oclass")) && attr(x, "oclass") == "factor" for (i in 1:NCOL(mf)) if (is.zoofactor(mf[, i])) mf[, i] <- zoo::coredata(mf[, i]) mf1 <- mf[, 1] start <- if (is.null(start)) 1 else { if (length(start) > 1) start <- start[1] + (start[2] - 1)/frequency(mf1) start <- min(which(zoo::index(mf1) >= start)) } end <- if (is.null(end)) length(mf1) else { if (length(end) > 1) end <- end[1] + (end[2] - 1)/frequency(mf1) end <- max(which(zoo::index(mf1) <= end)) } if (end < start) { warning("empty model frame specified") mf <- head(mf, 0) mf1 <- head(mf1, 0) } else { mf <- mf[start:end, , drop = FALSE] mf1 <- mf1[start:end] if (!is.null(mfna)) attr(mf, "na.action") <- mfna[as.vector(mfna) >= start & as.vector(mfna) <= end] } if ("ts" %in% orig.class && zoo::is.regular(mf1, strict = TRUE)) { for (i in 1:ncol(mf)) if (!is.factor(mf[, i])) mf[, i] <- as.ts(mf[, i]) } if (all(orig.class == "numeric")) { for (i in 1:ncol(mf)) if (!is.factor(mf[, i])) mf[, i] <- as.vector(mf[, i]) } rownames(mf) <- zoo::index2char(zoo::index(mf1), frequency(mf1)) mt <- attr(mf, "terms") attr(mt, "predvars") <- NULL attr(mt, "dataClasses") <- NULL Y <- model.response(mf, "numeric") weights <- as.vector(model.weights(mf)) if (is.empty.model(mt)) { X <- NULL rval <- list(coefficients = numeric(0), residuals = Y, fitted.values = 0 * Y, weights = weights, rank = 0, df.residual = length(Y)) } else { Rho <- function(u, tau) u * (tau - (u < 0)) eps <- .Machine$double.eps^(2/3) X <- model.matrix(mt, mf, contrasts) if (length(tau) > 1) { if (any(tau < -eps) || any(tau > 1 + eps)) stop("invalid tau: taus should be >= 0 and <= 1") coef <- matrix(0, ncol(X), length(tau)) rho <- rep(0, length(tau)) fitted <- resid <- matrix(0, nrow(X), length(tau)) for (i in 1:length(tau)) { z <- { if (length(weights)) rq.wfit(X, Y, tau = tau[i], weights, method, ...) else rq.fit(X, Y, tau = tau[i], method, ...) } coef[, i] <- z$coefficients resid[, i] <- z$residuals rho[i] <- sum(Rho(z$residuals, tau[i])) fitted[, i] <- Y - z$residuals } taulabs <- paste("tau=", format(round(tau, 3))) dimnames(coef) <- list(dimnames(X)[[2]], taulabs) dimnames(resid) <- list(dimnames(X)[[1]], taulabs) rval <- z rval$coefficients <- coef rval$residuals <- resid rval$fitted.values <- fitted class(rval) <- c("dynrqs", "rqs") } else { rval <- { if(length(weights)) rq.wfit(X, Y, tau = tau, weights, method, ...) else rq.fit(X, Y, tau = tau, method, ...) } dimnames(rval$residuals) <- list(dimnames(X)[[1]], NULL) rho <- sum(Rho(rval$residuals, tau)) class(rval) <- "rq" class(rval) <- c("dynrq", "rq") } } rval$na.action <- attr(mf, "na.action") rval$contrasts <- attr(X, "contrasts") rval$xlevels <- .getXlevels(mt, mf) rval$call <- cl rval$tau <- tau rval$terms <- mt rval$model <- mf rval$index <- zoo::index(mf1) rval$frequency <- frequency(mf1) rval$residuals <- drop(rval$residuals) rval$X <- X rval$y <- Y rval$rho <- rho rval$method <- method rval$fitted.values <- drop(rval$fitted.values) return(rval) } index.dynrq <- function(x, ...) { x$index } start.dynrq <- function(x, ...) { start(x$residuals) } end.dynrq <- function(x, ...) { end(x$residuals) } print.dynrq <- function(x, ...) { rx <- residuals(x) cat(paste("\nDynamic quantile regression \"", class(rx)[1], "\" data:\n", sep = "")) cat(paste("Start = ", zoo::index2char(zoo::index(rx)[1], x$frequency), ", End = ", zoo::index2char(zoo::index(rx)[length(rx)], x$frequency), "\n", sep = "")) NextMethod() } print.dynrqs <- function(x, ...) { rx <- residuals(x) ix <- dimnames(rx)[[1]] cat(paste("\nDynamic quantile regression \"", class(rx)[1], "\" data:\n", sep = "")) cat(paste("Start = ", zoo::index2char(ix[1], x$frequency), ", End = ", zoo::index2char(ix[length(ix)], x$frequency), "\n", sep = "")) NextMethod() } summary.dynrqs <- function(object, vcov. = NULL, df = NULL, ...) { rval <- NextMethod() #rval$frequency <- object$frequency #class(rval) <- c("summary.dynrqs", class(rval)) return(rval) } print.summary.dynrq <- function(x, ...) { rx <- residuals(x) x$residuals <- zoo::coredata(x$residuals) cat(paste("\nDynamic quantile regression \"", class(rx)[1], "\" data:\n", sep = "")) cat(paste("Start = ", zoo::index2char(zoo::index(rx)[1], x$frequency), ", End = ", zoo::index2char(zoo::index(rx)[length(rx)], x$frequency), "\n", sep = "")) NextMethod() } print.summary.dynrqs <- function(x, ...) { lapply(x, print) } quantreg/R/qrisk.R0000644000176200001440000000352012457527311013564 0ustar liggesusers"qrisk" <- function(x, alpha=c(.1,.3), w = c(.7,.3), mu = .07, R = NULL, r = NULL, lambda = 10000){ # # find optimal Choquet-risk portfolios given: # # x (n by p) matrix of asset returns # alphas alphas defining a Choquet capacity risk function # w w defining weights for Choquet capacity risk function # R Matrix defining constraints on the parameters # r rhs defining constraints on the parameters # mu required mean rate of return # lambda Lagrange multiplier for RoR constraint # n <- nrow(x) p <- ncol(x) m <- length(alpha) if(length(w)!=m)stop("length of w doesn't match length of alpha") xbar <- apply(x,2,mean) y <- x[,1] r <- c(r,lambda*(xbar[1]-mu), -lambda*(xbar[1]-mu)) X <- x[,1]-x[,-1] R <- rbind(R,lambda*(xbar[1]-xbar[-1]), -lambda*(xbar[1]-xbar[-1])) R <- cbind(matrix(0,nrow(R),m),R) f <- rq.fit.hogg(X,y,taus=alpha,weights=w,R=R,r=r) fit <- f$coefficients pihat <- c(1-sum(fit[-(1:m)]),fit[-(1:m)]) x <- as.matrix(x) yhat <- x%*%pihat etahat <- quantile(yhat,alpha) muhat <- mean(yhat) qrisk <- 0 for(i in 1:length(alpha)) qrisk <- qrisk + w[i]*sum(yhat[yhat eps) return("lambda too small?") yhat <- x%*%pihat muhat <- mean(x%*%pihat) sigma <- sqrt(var(x%*%pihat)) list(pihat = pihat, muhat = muhat, sigma = sigma) } quantreg/R/tools.R0000644000176200001440000000031411555564235013575 0ustar liggesusers"FAQ" <- function(pkg = "quantreg") file.show(file.path(system.file(package = pkg),"FAQ")) "ChangeLog" <- function(pkg = "quantreg") file.show(file.path(system.file(package = pkg),"ChangeLog")) quantreg/R/kuantile.R0000644000176200001440000000431113776615657014266 0ustar liggesusers"kuantile"<- function(x, probs = seq(0,1, 0.25),na.rm = FALSE, names = TRUE, type = 7, ...) { if(na.rm) x <- x[!is.na(x)] else if(any(is.na(x))) stop("NA's and NaN's not allowed in 'x' if 'na.rm' is FALSE") if(any(is.na(probs))) stop("NA's and NaN's in 'probs' not allowed") if(any(probs < 0 | probs > 1)) stop("probs outside [0,1]") p <- probs op <- order(p) p <- p[op] n <- length(x) m <- length(p) g <- rep(.5,m) if(type == 1) #Hyndman-Fan Typology k <- j <- pmax(1,ceiling(p*n)) else if(type == 2){ j <- pmax(1,floor(p*n)) k <- sort(c(pmax(1,j),pmin(j+1,n))) g <- ifelse(p*n > j, 1, 0.5) } else if(type == 3) k <- j <- pmax(1,round(p*n)) else{ switch(type - 3, {a <- 0; b <- 1},#Type 4 {a <- b <- 0.5}, #Type 5 {a <- b <- 0}, #Type 6 {a <- b <- 1}, #Type 7 {a <- b <- 1/3}, #Type 8 {a <- b <- 3/8}) #Type 9 d <- a + p * (1 - a - b) j <- floor(p*n + d) g <- p*n + d - j k <- sort(c(pmax(1,j),pmin(j+1,n))) } uk <- kunique(k) uz <- kselect(x,uk$xU) z <- uz[uk$ix] if(type %in% c(1,3)) A <- matrix(z,m,2) else A <- t(matrix(z,2,m)) G <- cbind(1-g,g) y <- (A * G) %*% c(1,1) # <=> diag(crossprod(A,G)) y <- y[rank(probs)] if(names && m > 0){ dig <- max(2,getOption("digits")) names(y) <- paste(format(100*probs, trim = TRUE, digits = dig), "%", sep="") } class(y) <- "kuantile" return(y) } "kselect" <- function(x,k){ n <- length(x) m <- length(k) z <- .Fortran("kuantiles", k = as.integer(k), m = as.integer(m), n = as.integer(n), x = as.double(x)) return(z$x[z$k]) } "kunique" <- function (x, isuniq = !duplicated(x)) { # shamelessly plagarized from Martin Maechler's sfsmisc package need.sort <- is.unsorted(x) if (need.sort) { xs <- sort(x, index.return = TRUE) ixS <- xs$ix isuniq <- isuniq[ixS] x <- xs$x } ix <- as.integer(cumsum(isuniq)) if (need.sort) ix <- ix[sort.list(ixS)] list(ix = ix, xU = x[isuniq]) } q489 <- function(x, tau = .5){ n <- length(x) z <- .Fortran("qselect", as.integer(n), as.double(x), q = as.double(tau)) z$q } quantreg/R/khmal.R0000644000176200001440000000732013505157215013526 0ustar liggesusers"rqProcess" <- function (formula, data, taus, nullH = "location", ...) { z <- summary(f <- lm(formula, data = data, x = TRUE)) xbar <- apply(f$x,2,mean) vars <- names(z$coef[-1, 1]) p <- length(z$coef[, 1]) n <- length(z$resid) Jinv <- z$cov.unscaled pivot <- any(taus < 0) || any(taus > 1) if(!pivot){ #grid method if(abs(diff(range(diff(taus)))) > sqrt(.Machine$double.eps)) stop("rqProcess must be evaluated on equally spaced taus") ntaus <- length(taus) z <- summary(rq(formula, data = data, tau = taus, method = "fn"), covariance = TRUE, ...) coefs = t(sapply(z, coefficients)[1:p,]) Cov = array(sapply(z, function(x) x$cov), c(p,p,ntaus)) qtaus <- coefs %*% xbar Vhat <- t(coefs)[-1,,drop=FALSE] vhat <- t(coefs)[-1,,drop=FALSE] J <- solve(Jinv) p <- nrow(J) if (nullH == "location-scale") { f <- lm(coefs[,-1] ~ coefs[,1]) b <- matrix(f$coef,2,p-1)[2,] R <- matrix(f$resid,ntaus,p-1) for (j in 1:length(taus)) { V <- Cov[, , j] v <- V[-1, -1] + V[1, 1] * outer(b,b) - outer(V[-1, 1], b) - t(outer(V[-1, 1], b)) v <- solve(v) v <- chol(0.5 * (v + t(v))) Vhat[,j] <- v %*% R[j,] for (i in 2:p) { v <- V[i, i] + V[1, 1] * b[i-1]^2 - 2 * V[i, 1] * b[i-1] vhat[i-1,j] <- R[j, i-1]/sqrt(v) } } } else if (nullH == "location") { b <- apply(coefs, 2, mean) R <- t(coefs) - b for (j in 1:length(taus)) { V <- Cov[, , j] A <- solve(V[-1, -1,drop=FALSE]) B <- chol(0.5 * (A + t(A))) Vhat[,j] <- B %*% R[-1, j,drop=FALSE] vhat[,j] <- R[-1, j,drop=FALSE] / (sqrt(diag(V))[-1]) } } } else{ stop("pivot method is now deprecated for Ktest") } dimnames(Vhat) <- list(vars, NULL) dimnames(vhat) <- list(vars, NULL) x <- list(taus = taus, qtaus = qtaus, Vhat = Vhat, vhat = vhat, n = n) class(x) <- "rqProcess" x } "KhmaladzeTest" <- function (formula, data = NULL, taus = 1:99/100, nullH = "location", trim = c(0.05, 0.95), h = 1, ...) { gdot = function(x, taus = 1:999/1000, h = -1){ Qt = quantile(x, taus) z = akj(x, Qt, h = h) Qf = approxfun(taus, Qt) den = approxfun(Qt, z$den) psi = approxfun(Qt, z$psi) gdot0 = den(Qf(taus)) gdot1 = psi(Qf(taus)) gdot2 = Qf(taus) * gdot1 + 1 cbind(gdot0, gdot1, gdot2) } f <- rqProcess(formula, data = data, taus=taus, nullH = nullH, ...) G = gdot(f$qtaus, taus, h = 1) ntaus = length(taus) Vtil = Vhat = G[,1] * f$Vhat vtil = vhat = G[,1] * f$vhat if(nullH == "location") X = G[-ntaus,2] else X = G[-ntaus,2:3] for(i in 1:nrow(Vhat)){ Y = Vhat[i,-1] y = vhat[i,-1] B = lm.fit.recursive(X,Y) b = lm.fit.recursive(X,y) Vtil[i,-1] = Y - diag(cbind(1,X) %*% B) vtil[i,-1] = y - diag(cbind(1,X) %*% b) } trim <- (f$taus >= trim[1] & f$taus <= trim[2]) Tvtil <- (vtil - vtil[, 2])/sqrt(max(f$taus) - min(f$taus)) TVtil <- apply(abs(Vtil - Vtil[, 2])/ sqrt(max(f$taus) - min(f$taus)), 2, "sum")[trim] Tn <- max(TVtil) THn <- apply(abs(Tvtil[, trim,drop = FALSE]), 1, max) x <- list(nullH = nullH, Tn = Tn, THn = THn, taus = taus, Vhat = t(Vhat), Vtil = t(Vtil)) class(x) <- "KhmaladzeTest" x } print.KhmaladzeTest = function(x, ...) { cat("\nTest of H_0:", x$nullH, "\n") cat("\nJoint Test Statistic:", x$Tn, "\n") cat("\nComponent Test Statistics:", x$THn, "\n") } plot.KhmaladzeTest = function(x, ...) { dev.new(height = 6, width = 10) par(mfrow = c(1,2)) matplot(x$taus, x$Vhat, xlab = expression(tau), ylab = expression(hat(v)[n](tau)), type = "l") title("Parametric QR Process") matplot(x$taus, x$Vtil, xlab = expression(tau), ylab = expression(tilde(v)[n](tau)), type = "l") title("Transformed Parametric QR Process") par(mfrow = c(1,1)) } quantreg/R/lprq.R0000644000176200001440000000072311555564235013417 0ustar liggesuserslprq <- function(x, y, h, tau = .5, m = 50) { ## A toy routine to do locally polynomial quantile regression xx <- seq(min(x),max(x),length=m) fv <- xx dv <- xx for(i in 1:length(xx)) { z <- x - xx[i] wx <- dnorm(z/h) r <- rq(y~z, weights=wx, tau=tau, ci=FALSE) fv[i] <- r$coef[1.] dv[i] <- r$coef[2.] } list(xx = xx, fv = fv, dv = dv) } quantreg/R/rqss.R0000644000176200001440000011254314414305231013417 0ustar liggesusers"rqss.fit" <- function (x, y, tau = 0.5, method = "sfn", rhs = NULL, control, ...) { if(is.null(rhs)) rhs <- (1 - tau) * t(x) %*% rep(1,length(y)) else tau <- 0.5 fit <- switch(method, sfn = rq.fit.sfn(x, y, tau = tau, rhs = rhs, control = control, ...), lasso = rq.fit.sfn(x, y, tau = tau, rhs = rhs, control = control, ...), sfnc = rq.fit.sfnc(x, y, tau = tau, rhs = rhs, control = control, ...), { what <- paste("rq.fit.", method, sep = "") if (exists(what, mode = "function")) (get(what, mode = "function"))(x, y, ...) else stop(paste("unimplemented method:", method)) }) fit$contrasts <- attr(x, "contrasts") fit$resid <- c(y - x %*% fit$coef) fit } "untangle.specials" <- function (tt, special, order = 1) { spc <- attr(tt, "specials")[[special]] if (length(spc) == 0) return(list(vars = character(0), terms = numeric(0))) facs <- attr(tt, "factor") fname <- dimnames(facs) ff <- apply(facs[spc, , drop = FALSE], 2, sum) list(vars = (fname[[1]])[spc], terms = seq(ff)[ff & match(attr(tt, "order"), order, nomatch = 0)]) } "qss" <- function (x, constraint = "N", lambda = 1, ndum = 0, dummies = NULL, Dorder = 1, w = rep(1, length(x))) { if (is.matrix(x)) { if (ncol(x) == 2) qss <- qss2(x, constraint = constraint, dummies = dummies, lambda = lambda, ndum = ndum, w = w) else if (ncol(x) == 1) x <- as.vector(x) else stop("qss objects must have dimension 1 or 2") } else if (is.numeric(x)) { if(Dorder == 1) qss <- qss1(x, constraint = constraint, lambda = lambda, dummies = dummies, ndum = ndum, w = w) else if(Dorder == 0){ if(!(constraint %in% c("N","I","D"))) stop("This constraint not implemented for Dorder = 0") else qss <- qts1(x, constraint = constraint, lambda = lambda, dummies = dummies, ndum = ndum, w = w) } else stop("Dorder must be either 0 or 1") } else stop("invalid argument for qss function") qss } "qss2" <- function(x, y, constraint = "N", lambda = 1, ndum= 0, dummies = NULL, w=rep(1,length(x))){ # # Sparse Additive Quantile Smoothing Spline Models - Bivariate (Triogram) Module # # This function returns a structure intended to make model.matrix for a bivariate # nonparametric component of a model formula specified by a call to rqss(). A sparse form # of the Frisch Newton algorithm is eventually called to compute the estimator. # An optional convexity/concavity constraint can be specified. If # the formula consists of a single qss component then the estimator solves the # following variational problem: # # min sum rho_tau (y_i - g(x_i)) + lambda V(grad(g)) # # where V(f) denotes the total variation of the function f. The solution is a piecewise # linear function on the Delaunay triangulation formed by the observed (x_i,y_i) points. # Additive models can consist # of several components of this form plus partial linear and univariate qss components. # To resolve the identifiability problem we delete the first column of the qss design # components. On return F contains the fidelity portion of the design, A the penalty # contribution of the design, R the constraint portion, and r the rhs of the constraints. # # Constraints are specified by the constraint argument: # # N none # V convex # C concave # # Author: Roger Koenker April 2, 2003 # # For a prototype see triogram in ~roger/projects/tv/cobar/.RData on ysidro. # # Warning: Under development...todo: # # o weights # o dummy x's # o tau's # o lambda's # o ... # stopifnot(requireNamespace("interp")) # y <- x[,2] x <- x[,1] n <- length(x) if (n != length(y)) stop("xy lengths do not match") f <- triogram.fidelity(x, y, ndum = ndum, dummies = dummies) F <- f$F A <- triogram.penalty(f$x, f$y) switch(constraint, V = { R <- A r <- rep(0, nrow(R)) }, C = { R <- -A r <- rep(0, nrow(R)) }, N = { R = NULL r = NULL }) list(x = list(x = f$x, y = f$y), F = F[, -1], dummies = f$dummies, lambda = lambda, A = A[, -1], R = R[, -1], r = r) } qts1 <- function (x, constraint = "N", lambda = 1, dummies = dummies, ndum = 0, w = rep(1, length(x))) { # This is the taut string TV(g) not TV(g') penalty option xun <- unique(x[order(x)]) h <- diff(xun) nh <- length(h) nx <- length(x) p <- nh + 1 makeD <- function(p) { new("matrix.csr", ra = c(rbind(rep(-1, (p - 1)), rep(1, (p - 1)))), ja = as.integer(c(rbind(1:(p - 1), 2:p))), ia = as.integer(2 * (1:p) - 1), dimension = as.integer(c(p - 1, p))) } A <- new("matrix.csr", ra = c(rbind(-1/h, 1/h)), ja = as.integer(c(rbind(1:nh, 2:(nh + 1)))), ia = as.integer(2 * (1:(nh + 1)) - 1), dimension = as.integer(c(nh, nh + 1))) if (length(xun) == length(x)) { F <- new("matrix.csr", ra = rep(1, nx), ja = as.integer(rank(x)), ia = 1:(nx + 1), dimension = as.integer(c(nx, nx))) } else { F <- new("matrix.csr", ra = rep(1, nx), ja = as.integer(factor(x)), ia = 1:(nx + 1), dimension = as.integer(c(nx, length(xun)))) } switch(constraint, I = {R <- makeD(p); r <- rep(0, p-1)}, D = {R <- -makeD(p); r <- rep(0, p-1)}, N = {R <- NULL; r <- NULL}) list(x = list(x = xun), F = F[, -1], lambda = lambda, A = A[, -1], Dorder = 0, R = R[,-1], r = r) } "qss1" <- function (x, constraint = "N", lambda = 1, dummies = dummies, ndum = 0, w = rep(1, length(x))){ # # Sparse Additive Quantile Smoothing Spline Models - Univariate Module # # This function returns a structure intended to make model.matrix for a univariate # nonparametric component of a model formula specified by a call to rqss(). A sparse form # of the Frisch Newton algorithm is eventually called to compute the estimator. # Optional monotonicity and/or convexity/concavity constraints can be specified. If # the formula consists of a single qss component then the estimator solves the # following variational problem: # # min sum rho_tau (y_i - g(x_i)) + lambda V(g') # # where V(f) denotes the total variation of the function f. The solution is a piecewise # linear function with "knots" at the observed x_i points. Additive models can consist # of several components of this form plus partial linear and triogram components. # To resolve the identifiability problem we delete the first column of the qss design # components. On return F contains the fidelity portion of the design, A is the penalty # contribution of the design, R the constraint portion, and r the rhs of the constraints. # # Constraints are specified by the constraint argument: # # N none # I monotone increasing # D monotone decreasing # V convex # C concave # CI concave and monotone increasing # ... etc # # Author: Roger Koenker February 27, 2003 # # Warning: Under development...todo: # # o weights # o dummy x's # o tau's # o lambda's # o ... # # xun <- unique(x[order(x)]) h <- diff(xun) nh <- length(h) nx <- length(x) p <- nh + 1 B <- new("matrix.csr", ra = c(rbind(-1/h, 1/h)), ja = as.integer(c(rbind(1:nh, 2:(nh + 1)))), ia = as.integer(2 * (1:(nh + 1)) - 1), dimension = as.integer(c(nh, nh + 1))) makeD <- function(p) { new("matrix.csr", ra = c(rbind(rep(-1, (p - 1)), rep(1, (p - 1)))), ja = as.integer(c(rbind(1:(p - 1), 2:p))), ia = as.integer(2 * (1:p) - 1), dimension = as.integer(c(p - 1, p))) } D <- makeD(nh) A <- D %*% B if (length(xun) == length(x)){ F <- new("matrix.csr", ra = rep(1, nx), ja = as.integer(rank(x)), ia = 1:(nx + 1), dimension = as.integer(c(nx, nx))) } else { F <- new("matrix.csr", ra = rep(1, nx), ja = as.integer(factor(x)), ia = 1:(nx + 1), dimension = as.integer(c(nx, length(xun)))) } switch(constraint, V = { R <- A; r <- rep(0,nrow(R)) }, C = { R <- -A; r <- rep(0,nrow(R)) }, I = { R <- makeD(p) r <- rep(0,p-1) }, D = { R <- -makeD(p) r <- rep(0,p-1) }, VI = { R <- makeD(p) R <- rbind(R,A) r <- rep(0,nrow(R)) }, VD = { R <- -makeD(p) R <- rbind(R,A) r <- rep(0,nrow(R)) }, CI = { R <- makeD(p) R <- rbind(R,-A) r <- rep(0,nrow(R)) }, CD = { R <- -makeD(p) R <- rbind(R,-A) r <- rep(0,nrow(R)) }, N = { R=NULL; r=NULL} ) list(x = list(x=xun), F=F[,-1], lambda = lambda, A=A[,-1], Dorder = 1, R=R[,-1], r=r) } "plot.qss1" <- function(x, rug = TRUE, jit = TRUE, add = FALSE, ...) { if(!add) plot(x,type = "n", ...) lines(x, ...) if(rug) { if(jit) rug(jitter(x[,1])) else rug(x[,1]) } } "plot.qts1" <- function (x, rug = TRUE, jit = TRUE, add = FALSE, ...) { if (!add) plot(x, type = "S", ...) lines(x, type = "S", ...) if (rug) { if (jit) rug(jitter(x[, 1])) else rug(x[, 1]) } } "plot.qss2" <- function (x, render = "contour", ncol = 100, zcol = NULL, ...) { stopifnot(requireNamespace("interp")) y <- x[, 2] z <- x[, 3] x <- x[, 1] trinew <- interp::tri.mesh(x, y) tri <- interp::triSht2tri(trinew) if (render == "rgl") { if(!requireNamespace("rgl",quietly=TRUE)) stop("The package rgl is required") collut <- terrain.colors(ncol) if (!length(zcol)) zcol <- z if (max(z) > max(zcol) || min(z) < min(zcol)) warning("fitted z values out of range of zcol vector") zlim <- range(zcol) colz <- ncol * (z - zlim[1])/(zlim[2] - zlim[1]) + 1 colz <- collut[colz] s <- c(t(interp::triangles(trinew)[, 1:3])) rgl::rgl.triangles(x[s], y[s], z[s], col = colz[s]) } else { stopifnot(requireNamespace("interp")) if(render == "contour"){ plot(x, y, type = "n", ...) contour(interp::interp(x, y, z), add = TRUE, frame.plot = TRUE, ...) interp::convex.hull(trinew, plot.it = TRUE, add = TRUE) } else if(render == "persp") persp(interp::interp(x, y, z, ), theta = -40, phi = 20, xlab = "x", ylab = "y", zlab = "z", ...) else stop(paste("Unable to render: ",render)) } } plot.rqss <- function (x, rug = TRUE, jit = TRUE, bands = NULL, coverage = 0.95, add = FALSE, shade = TRUE, select = NULL, pages = 0, titles = NULL, bcol = NULL, ...) { SetLayout <- function(m, p) { # Shamelessly cribbed from mgcv # m is the number of plots # p is the number of pages if (p > m) p <- m if (p < 0) p <- 0 if (p != 0) { q <- m%/%p if ((m%%p) != 0) { q <- q + 1 while (q * (p - 1) >= m) p <- p - 1 } c <- trunc(sqrt(q)) if (c < 1) c <- 1 r <- q%/%c if (r < 1) r <- 1 while (r * c < q) r <- r + 1 while (r * c - q > c && r > 1) r <- r - 1 while (r * c - q > r && c > 1) c <- c - 1 oldpar <- par(mfrow = c(r, c)) } else oldpar <- par() return(oldpar) } m <- length(x$qss) if (m == 0) stop("No qss object to plot") if(length(select)) { if(all(select %in% 1:m)) oldpar <- SetLayout(length(select), pages) else stop(paste("select must be in 1:",m,sep="")) } else oldpar <- SetLayout(m, pages) if ((pages == 0 && prod(par("mfrow")) < m && dev.interactive()) || pages > 1 && dev.interactive()) ask <- TRUE else ask <- FALSE if (ask) { oask <- devAskNewPage(TRUE) on.exit(devAskNewPage(oask)) } qssnames <- names(x$qss) if(length(titles)){ if(length(titles) != length(qssnames)) stop("Length of titles doesn't match length of qssnames") } else{ titles <- paste("Effect of ", qssnames) } if (length(bands)) { rdf <- x$n - x$edf if (any(unlist(lapply(x$qss, function(x) ncol(x$xyz) == 3)))) warning("Can't plot confidence bands in 3D (yet)") band <- as.list(rep(NA, m)) V <- summary(x, cov = TRUE, ...)$Vqss "summary.qss1" <- function(object, V, ngrid = 400, ...) { x <- object$xyz[, 1] eps <- 0.01 newd <- data.frame(x = seq(min(x) + eps, max(x) - eps, length = ngrid)) G <- predict(object, newd, ...) ones <- as.matrix.csr(matrix(1, nrow(G$D), 1)) D <- cbind(ones, G$D) S <- as.matrix(D %*% V %*% t(D)) se <- sqrt(diag(S)) cv <- qt(1 - (1 - coverage)/2, rdf) if (bands %in% c("uniform","both")) { E <- eigen(as.matrix(V)) B <- E$vectors %*% diag(sqrt(pmax(0,E$values))) %*% t(E$vectors) D <- as.matrix(D) BX1 <- B %*% t(D[-1, ]) BX1 <- BX1/sqrt(apply(BX1^2, 2, sum)) BX0 <- B %*% t(D[-nrow(D), ]) BX0 <- BX0/sqrt(apply(BX0^2, 2, sum)) kappa <- sum(sqrt(apply((BX1 - BX0)^2, 2, sum))) cvu <- critval(kappa, alpha = 1 - coverage, rdf = rdf) if(bands == "both") cv <- c(cvu,cv) else cv <- cvu } list(pred = data.frame(x = G$x, y = G$y, se = se), cv = cv) } } if(!length(select)) select <- 1:m for (i in select) { if(!is.null(x$qss[[i]]$Dorder)){ if(x$qss[[i]]$Dorder == 0){ qts <- x$qss[[i]]$xyz qts[, 2] <- x$coef[1] + qts[, 2] plot.qts1(qts, add = add, ...) } else { qss <- x$qss[[i]]$xyz if (length(bands)) { if (is.na(x$coef["(Intercept)"])) stop("rqss confidence bands require an intercept parameter") B <- summary(x$qss[[i]], V[[i]], ...) cv <- B$cv B <- B$pred B$y <- B$y + x$coef["(Intercept)"] if(!length(bcol)) bcol <- c("grey85","grey65") for(k in 1:length(cv)){ if (add || k > 1) if(shade){ polygon(c(B$x,rev(B$x)), c(B$y - cv[k] * B$se,rev(B$y + cv[k] * B$se)), col = bcol[k], border = FALSE) } else matlines(B$x, cbind(B$y, B$y + cv[k] * cbind(-B$se, B$se)), lty = c(1, 2, 2), col = c("black", "blue", "blue")) else { matplot(B$x, B$y + cv[k] * cbind(-B$se, B$se), xlab = paste(qssnames[i]), ylab = "Effect", type = "n", ...) if(shade){ polygon(c(B$x,rev(B$x)), c(B$y - cv[k] * B$se,rev(B$y + cv[k] * B$se)), col = bcol[k], border = FALSE) } else{ lines(B$x, B$y + cv * B$se, lty = 2, ...) lines(B$x, B$y - cv * B$se, lty = 2, ...) } } lines(B$x, B$y, ...) } band[[i]] <- list(x = B$x, blo = B$y - B$se %o% cv, bhi = B$y + B$se %o% cv) if (rug) { if (jit) rug(jitter(qss[, 1])) else rug(qss[, 1]) } } else { qss[, 2] <- x$coef[1] + qss[, 2] plot.qss1(qss, xlab = paste(qssnames[i]), ylab = "Effect", rug = rug, jit = jit, add = add, ...) } } } qss <- x$qss[[i]]$xyz if (ncol(qss) == 3) { qss[, 3] <- x$coef[1] + qss[, 3] plot.qss2(qss, ...) } title(titles[i]) } if (pages > 0) par(oldpar) if (length(bands)) class(band) <- "rqssband" else band <- NULL invisible(band) } "triogram.fidelity" <- function (x, y, ndum=0, dummies = NULL) { #Make fidelity block of the triogram design in sparse matrix.csr form #The rather esoteric match call identifies and handles duplicated xy points n <- length(x) A <- as.data.frame(cbind(x,y)) dupA <- duplicated(A) if(any(dupA)){ x <- x[!dupA] y <- y[!dupA] J <- match(do.call("paste",c(A,"\r")),do.call("paste",c(A[!dupA,],"\r"))) z <- new("matrix.csr",ra=rep(1,n), ja=J, ia=1:(n+1),dimension=as.integer(c(n,max(J)))) } else{ z <- as(n,"matrix.diag.csr") z <- as(z,"matrix.csr") } #Augment with dummy vertices, if any... if(length(dummies)){ if (is.list(dummies)){ if (all(!is.na(match(c("x", "y"), names(dummies))))){ ndum <- length(dummies$x) if(length(dummies$y) == ndum){ x <- c(x,dummies$x) y <- c(y,dummies$y) zdum <- as.matrix.csr(0,n,ndum) z <- cbind(z,zdum) } else stop("dummies x and y components differ in length") } else stop("dummies list lacking x and y elements") } else stop("dummies argument invalid (not a list) in triogram.fidelity") } else if(ndum > 0){ u <- runif(ndum); v <- runif(ndum) xd <- min(x) + u * (max(x)-min(x)) yd <- min(y) + v * (max(y)-min(y)) Tnew <- interp::tri.mesh(x,y) T <- interp::triSht2tri(Tnew) s <- interp::in.convex.hull(Tnew,xd,yd) x <- c(x,xd[s]) y <- c(y,yd[s]) ndum <- sum(s) zdum <- as.matrix.csr(0,n,ndum) z <- cbind(z,zdum) dummies <- list(x = xd[s],y = yd[s]) } list(x=x,y=y,F=z, dummies = dummies) } "triogram.penalty" <- function (x, y, eps = .Machine$double.eps) { n <- length(x) trinew <- interp::tri.mesh(x, y) tri <- interp::triSht2tri(trinew) bnd <- interp::on.convex.hull(trinew,x,y) q <- length(tri$tlist) m <- 13 * n z <- .Fortran("penalty", as.integer(n), as.integer(m), as.integer(q), as.double(x), as.double(y), as.integer(bnd),as.integer(tri$tlist), as.integer(tri$tlptr), as.integer(tri$tlend), rax = double(m), jax = integer(m), ned = integer(1), as.double(eps), ierr = integer(1))[c("rax", "jax", "iax", "ned", "ierr")] if (z$ierr == 1) stop("collinearity in ggap") nnz <- 4 * z$ned ra <- z$rax[1:nnz] ja <- z$jax[1:nnz] ia <- as.integer(1 + 4 * (0:z$ned)) dim <- as.integer(c(z$ned, n)) new("matrix.csr",ra=ra,ja=ja,ia=ia,dimension=dim) } predict.rqss <- function (object, newdata, interval = "none", level = 0.95, ...) { ff <- object$fake.formula Terms <- delete.response(terms(object$formula, "qss")) Names <- all.vars(parse(text = ff)) if (any(!(Names %in% names(newdata)))) stop("newdata doesn't include some model variables") #ff <- reformulate(ff) nd <- eval(model.frame(ff, data = newdata), parent.frame()) qssterms <- attr(Terms, "specials")$qss if (length(qssterms)) { tmp <- untangle.specials(Terms, "qss") dropv <- tmp$terms m <- length(dropv) if (length(dropv)) PLTerms <- Terms[-dropv] attr(PLTerms, "specials") <- tmp$vars } else { PLTerms <- Terms m <- 0 } if(requireNamespace("MatrixModels") && requireNamespace("Matrix")) X <- as(MatrixModels::model.Matrix(PLTerms, data = nd, contrasts = contrasts, sparse = TRUE),"matrix.csr") else X <- model.matrix(PLTerms, data = nd) p <- ncol(X) y <- X %*% object$coef[1:p] X <- as.matrix.csr(X) if (m > 0) { for (i in 1:m) { qss <- object$qss[[i]] names <- all.vars(Terms[dropv[i]]) names <- names[names %in% Names] dimnames(qss$xyz)[[2]] <- c(names, "zfit") newd <- nd[names] if (ncol(qss$xyz) == 3) { g <- predict.qss2(qss$xyz, newdata = newd, ...) y <- y + g$z if(interval == "confidence") X <- cbind(X,g$D) } else if (ncol(qss$xyz) == 2) { g <- predict(qss, newdata = newd, ...) y <- y + g$y if(interval == "confidence") X <- cbind(X,g$D) } else stop("invalid fitted qss object") } } if(interval == "confidence"){ v <- sqrt(diag(X %*% summary(object, cov = TRUE)$V %*% t(X))) calpha <- qnorm(1 - (1-level)/2) y <- cbind(y,y - v*calpha,y + v*calpha) dimnames(y)[[2]] <- c("yhat","ylower","yupper") } y } "predict.qts1" <- function (object, newdata, ...) { x <- object$xyz[, 1] y <- object$xyz[, 2] if(ncol(newdata)==1) newdata <- newdata[,1] else stop("newdata should have only one column for predict.qts1") if (any(diff(x) < 0)) stop("x coordinates in qts1 object not monotone") if (max(newdata) > max(x) || min(newdata) < min(x)) stop("no extrapolation allowed in predict.qts") bin <- cut(newdata, unique(x), label = FALSE, include.lowest = TRUE) p <- length(x) m <- length(newdata) V <- cbind(bin, bin + 1) B <- cbind(x[bin + 1] - newdata, newdata - x[bin])/(x[bin + 1] - x[bin]) ra <- c(t(B)) ja <- as.integer(c(t(V))) ia <- as.integer(c(2 * (1:m) - 1, 2 * m + 1)) dim <- c(m, p) D <- new("matrix.csr", ra = ra, ja = ja, ia = ia, dimension = dim) list(x = newdata, y = D %*% y, D = D[, -1]) } "predict.qss1" <- function (object, newdata, ...) { x <- object$xyz[, 1] y <- object$xyz[, 2] if(ncol(newdata)==1) newdata <- newdata[,1] else stop("newdata should have only one column for predict.qss1") if (any(diff(x) < 0)) stop("x coordinates in qss1 object not monotone") if (max(newdata) > max(x) || min(newdata) < min(x)) stop("no extrapolation allowed in predict.qss") bin <- cut(newdata, unique(x), label = FALSE, include.lowest = TRUE) p <- length(x) m <- length(newdata) V <- cbind(bin, bin + 1) B <- cbind(x[bin + 1] - newdata, newdata - x[bin])/(x[bin + 1] - x[bin]) ra <- c(t(B)) ja <- as.integer(c(t(V))) ia <- as.integer(c(2 * (1:m) - 1, 2 * m + 1)) dim <- c(m, p) D <- new("matrix.csr", ra = ra, ja = ja, ia = ia, dimension = dim) list(x = newdata, y = D %*% y, D = D[, -1]) } predict.qss2 <- function (object, newdata, ...) { x <- object[, 1] y <- object[, 2] z <- object[, 3] tri.area <- function(v) { 0.5 * ((v[2, 1] - v[1, 1]) * (v[3, 2] - v[1, 2]) - (v[3, 1] - v[1, 1]) * (v[2, 2] - v[1, 2])) } barycentric <- function(v) { b <- rep(0, 3) Area <- tri.area(v[1:3, ]) b[1] <- tri.area(v[c(4, 2, 3), ])/Area b[2] <- tri.area(v[c(1, 4, 3), ])/Area b[3] <- tri.area(v[c(1, 2, 4), ])/Area if (any(b < 0) || any(b > 1)) stop("barycentric snafu") b } if (is.list(newdata)) { fnames <- (dimnames(object)[[2]])[1:2] if (all(!is.na(match(fnames, names(newdata))))) { newx <- newdata[[fnames[1]]] newy <- newdata[[fnames[2]]] } else (stop("qss object and newdata frame names conflict")) } else if (is.matrix(newdata)) if (ncol(newdata) == 2) { newx <- newdata[, 1] newy <- newdata[, 2] } else (stop("newdata matrix must have 2 columns")) trinew <- interp::tri.mesh(x, y) tri <- interp::triSht2tri(trinew) if (!all(interp::in.convex.hull(trinew, newx, newy))) stop("some newdata points outside convex hull") p <- length(x) m <- length(newx) V <- matrix(0, m, 3) B <- matrix(0, m, 3) for (i in 1:m) { Tmp <- interp::tri.find(trinew, newx[i], newy[i]) V[i, ] <- c(Tmp[[1]],Tmp[[2]],Tmp[[3]]) v <- rbind(cbind(x[V[i, ]], y[V[i, ]]), c(newx[i], newy[i])) B[i, ] <- barycentric(v) } ra <- c(t(B)) ja <- as.integer(c(t(V))) ia <- as.integer(3 * (0:m) + 1) D <- new("matrix.csr", ra = ra, ja = ja, ia = ia, dimension = c(m, p)) list(x = newx, y = newy, z = c(D %*% z), D = D[,-1]) } fitted.rqss <- function(object, ...) (object$X %*% object$coef)[1:object$n] resid.rqss <- function(object, ...) object$resid[1:object$n] rqss <- function (formula, tau = 0.5, data = parent.frame(), weights, subset, na.action, method = "sfn", lambda = NULL, contrasts = NULL, ztol = 1e-05, control = sfn.control(), ...) { call <- match.call() m <- match.call(expand.dots = FALSE) temp <- c("", "formula", "data", "weights", "na.action", "subset") m <- m[match(temp, names(m), nomatch = 0)] m[[1]] <- as.name("model.frame") special <- "qss" Terms <- if (missing(data)) terms(formula, special) else terms(formula, special, data = data) qssterms <- attr(Terms, "specials")$qss dropx <- NULL if (length(tau) > 1) { tau <- tau[1] warning("multiple taus not supported, using first element") } if (length(qssterms)) { tmpc <- untangle.specials(Terms, "qss") ord <- attr(Terms, "order")[tmpc$terms] if (any(ord > 1)) stop("qss can not be used in an interaction") dropx <- tmpc$terms if (length(dropx)) Terms <- Terms[-dropx] attr(Terms, "specials") <- tmpc$vars fnames <- function(x) { fy <- all.names(x[[2]]) if (fy[1] == "cbind") fy <- fy[-1] fy } fqssnames <- unlist(lapply(parse(text = tmpc$vars), fnames)) qssnames <- unlist(lapply(parse(text = tmpc$vars), function(x) deparse(x[[2]]))) } ff <- delete.response(terms(formula(Terms))) if (exists("fqssnames")) { mff <- m mff$formula <- Terms #mff <- delete.response(terms(formula(Terms))) ffqss <- paste(fqssnames, collapse = "+") #ff <- paste(deparse(formula(mff)), "+", ffqss) mff$formula <- as.formula(paste(deparse(mff$formula), "+", ffqss)) ff <- delete.response(terms(formula(mff))) ff <- deparse(formula(ff)) mff <- eval(mff, parent.frame()) } m$formula <- Terms m <- eval(m, parent.frame()) weights <- model.extract(m, weights) process <- (tau < 0 || tau > 1) Y <- model.extract(m, "response") if (requireNamespace("MatrixModels") && requireNamespace("Matrix")) { X <- MatrixModels::model.Matrix(Terms, m, contrasts.arg = contrasts, sparse = TRUE) vnames <- dimnames(X)[[2]] X <- as(X, "matrix.csr") } else { X <- model.matrix(Terms, m, contrasts) vnames <- dimnames(X)[[2]] } p <- ncol(X) pf <- environment(formula) nrL <- 0 if (method == "lasso") { if (!length(lambda)) stop("No lambda specified for lasso constraint") if (length(lambda) == 1) lambda <- c(0, rep(lambda, p - 1)) if (length(lambda) != p) stop("lambda must be either of length p, or length 1") if (any(lambda < 0)) stop("negative lambdas disallowed") L <- diag(lambda, nrow = length(lambda)) L <- L[which(lambda != 0), , drop = FALSE] L <- as.matrix.csr(L) nrL <- nrow(L) ncL <- ncol(L) } if (length(qssterms) > 0) { F <- as.matrix.csr(X) pf <- environment(formula) qss <- lapply(tmpc$vars, function(u) eval(parse(text = u), mff, pf)) mqss <- length(qss) ncA <- rep(0, mqss + 1) nrA <- rep(0, mqss + 1) nrR <- rep(0, mqss + 1) for (i in 1:mqss) { F <- cbind(F, qss[[i]]$F) ncA[i + 1] <- ncol(qss[[i]]$A) nrA[i + 1] <- nrow(qss[[i]]$A) nrR[i + 1] <- ifelse(is.null(nrow(qss[[i]]$R)), 0, nrow(qss[[i]]$R)) vnames <- c(vnames, paste(qssnames[i], 1:ncA[i + 1], sep = "")) } A <- as.matrix.csr(0, sum(nrA), sum(ncA)) if (sum(nrR) > 0) { R <- as.matrix.csr(0, sum(nrR), sum(ncA)) nrR <- cumsum(nrR) } ncA <- cumsum(ncA) nrA <- cumsum(nrA) lambdas <- rep(0, mqss) for (i in 1:mqss) { lambdas[i] <- qss[[i]]$lambda Arows <- (1 + nrA[i]):nrA[i + 1] Acols <- (1 + ncA[i]):ncA[i + 1] A[Arows, Acols] <- qss[[i]]$lambda * qss[[i]]$A if (nrR[i] < nrR[i + 1]) R[(1 + nrR[i]):nrR[i + 1], (1 + ncA[i]):ncA[i + 1]] <- qss[[i]]$R } A <- cbind(as.matrix.csr(0, nrA[mqss + 1], p), A) if (nrR[mqss + 1] > 0) { R <- cbind(as.matrix.csr(0, nrR[mqss + 1], p), R) r <- rep(0, nrR[mqss + 1]) } else { R <- NULL r <- NULL } if (method == "lasso") A <- rbind(cbind(L, as.matrix.csr(0, nrL, ncol(F) - ncL)), A) if(length(weights)){ F <- F * weights Y <- Y * weights } X <- rbind(F, A) Y <- c(Y, rep(0, nrow(A))) rhs <- t(rbind((1 - tau) * F, 0.5 * A)) %*% rep(1, nrow(X)) XpX <- t(X) %*% X nnzdmax <- XpX@ia[length(XpX@ia)] - 1 if (is.null(control[["nsubmax"]])) control[["nsubmax"]] <- max(nnzdmax, floor(1000 + exp(-1.6) * nnzdmax^1.2)) if (is.null(control[["nnzlmax"]])) control[["nnzlmax"]] <- floor(2e+05 - 2.8 * nnzdmax + 7e-04 * nnzdmax^2) if (is.null(control[["tmpmax"]])) control[["tmpmax"]] <- floor(1e+05 + exp(-12.1) * nnzdmax^2.35) fit <- if (length(r) > 0) rqss.fit(X, Y, tau = tau, rhs = rhs, method = "sfnc", R = R, r = r, control = control, ...) else rqss.fit(X, Y, tau = tau, rhs = rhs, method = "sfn", control = control, ...) for (i in 1:mqss) { ML <- p + 1 + ncA[i] MU <- p + ncA[i + 1] qss[[i]] <- list(xyz = cbind(qss[[i]]$x$x, qss[[i]]$x$y, c(0, fit$coef[ML:MU])), dummies = qss[[i]]$dummies, Dorder = qss[[i]]$Dorder) if (ncol(qss[[i]]$xyz) == 2) class(qss[[i]]) <- ifelse(qss[[i]]$Dorder == 1,"qss1", "qts1") else class(qss[[i]]) <- "qss2" } names(qss) <- qssnames fit$qss <- qss } else { X <- as.matrix.csr(X) nrA <- 0 if (method == "lasso") { rhs <- t(rbind((1 - tau) * X, 0.5 * L)) %*% rep(1, nrow(X) + nrow(L)) X <- rbind(X, L) Y <- c(Y, rep(0, nrL)) } else rhs <- NULL if (length(weights)) { if (any(weights < 0)) stop("negative weights not allowed") X <- X * weights Y <- Y * weights } XpX <- t(X) %*% X nnzdmax <- XpX@ia[length(XpX@ia)] - 1 if (is.null(control[["nsubmax"]])) control[["nsubmax"]] <- max(nnzdmax, floor(1000 + exp(-1.6) * nnzdmax^1.2)) if (is.null(control[["nnzlmax"]])) control[["nnzlmax"]] <- floor(2e+05 - 2.8 * nnzdmax + 7e-04 * nnzdmax^2) if (is.null(control[["tmpmax"]])) control[["tmpmax"]] <- floor(1e+05 + exp(-12.1) * nnzdmax^2.35) fit <- rqss.fit(X, Y, tau = tau, rhs = rhs, control = control, method = method, ...) fit$nrA <- nrA } names(fit$coef) <- vnames n <- length(fit$resid) - nrL - nrA[length(nrA)] if(length(weights)) fit$resid[1:n] <- fit$resid[1:n]/weights uhat <- fit$resid[1:n] Rho <- function(u, tau) sum(u * (tau - (u < 0))) fit$fidelity <- Rho(uhat, tau) fit$edf <- sum(abs(uhat) < ztol) fit$X <- X fit$y <- Y fit$n <- n fit$nrL <- nrL fit$terms <- Terms fit$fake.formula <- ff fit$formula <- formula fit$method <- method fit$call <- call fit$tau <- tau if (length(qssterms)) { fit$lambdas <- lambdas fit$qssnames <- qssnames fit$nrA <- nrA fit$ncA <- cumsum(c(p, diff(ncA))) } else fit$ncA <- p attr(fit, "na.message") <- attr(m, "na.message") class(fit) <- "rqss" fit } "Munge" <- function(formula, ...) { # Recursive substitution {per Gabor Grothendieck} if (length(formula) > 1) { if (identical(formula[[2]], as.name(names(list(...))))) formula <- eval(formula, list(...)) if (length(formula) > 1) for (i in 1:length(formula)) formula[[i]] <- Recall(formula[[i]], ...) } formula } "summary.rqss" <- function(object, cov = FALSE, ztol = 1e-5, ...){ resid <- object$resid coef <- object$coef lambdas <- object$lambdas formula <- object$formula fidelity <- object$fidelity edf <- object$edf nrA <- object$nrA ncA <- object$ncA nrL <- object$nrL tau <- object$tau cntl <- object$control X <- object$X p <- ncol(object$X) m <- length(ncA) n <- length(resid) - nrL - nrA[m] uhat <- resid[1:n] h <- bandwidth.rq(tau, n, hs = TRUE) while((tau - h < 0) || (tau + h > 1)) h <- h/2 h <- (qnorm(tau + h) - qnorm(tau - h)) * max(ztol,min(sqrt(var(uhat)), (quantile(uhat, 0.75) - quantile(uhat, 0.25))/1.34)) f <- c(dnorm(uhat/h)/h,rep(1, length(resid) - n)) D <- t(X) %*% (f * X) D <- chol(.5 * (D + t(D)), nsubmax = cntl$nsubmax, nnzlmax = cntl$nnzlmax, tmpmax = cntl$tmpmax) D <- backsolve(D,diag(p)) D0 <- tau * (1 - tau) * t(X) %*% X V <- D %*% D0 %*% D scale <- mean(f) serr <- sqrt(diag(V)) ptab <- array(coef[1:ncA[1]], c(ncA[1],4)) pnames <- names(coef[1:ncA[1]]) dimnames(ptab) <- list(pnames, c("Estimate", "Std. Error", "t value", "Pr(>|t|)")) ptab[, 2] <- serr[1:ncA[1]] ptab[, 3] <- ptab[, 1]/ptab[, 2] ptab[, 4] <- 2 * (1 - pt(abs(ptab[, 3]), n - edf)) if(cov) { Vcov <- V[1:ncA[1],1:ncA[1]] Vqss <- as.list(1:(m-1)) } if(m > 1) { penalty <- rep(NA, m - 1) qssedfs <- rep(NA, m - 1) ntab <- matrix(0, m - 1, 5) vnames <- sub(".$","",names(coef[ncA[-length(ncA)]+1])) dimnames(ntab) <- list(vnames, c("EDF", "Lambda", "Penalty", "F value", "Pr(>F)")) for(i in 2:m) { ntab[i - 1, 3] <- sum(abs(resid[n + nrL + ((nrA[i - 1] + 1):nrA[i])])) ntab[i - 1, 1] <- sum(abs(resid[n + nrL + ((nrA[i - 1] + 1):nrA[i])]) > ztol) v <- V[c(1, (ncA[i-1] + 1):ncA[i]), c(1, (ncA[i-1] + 1):ncA[i])] v <- .5 * (v + t(v)) if(cov) Vqss[[i-1]] <- v b <- coef[(ncA[i-1] + 1):ncA[i]] ntab[i-1, 4] <- t(b) %*% solve(v[-1,-1],b)/ntab[i-1,1] ntab[i-1, 5] <- 1 - pf(ntab[i-1,4],ntab[i-1,1], n - edf) } ntab[,2] <- lambdas ntab[,3] <- ntab[,3]/lambdas if(cov) z <- list(coef = ptab, qsstab = ntab, fidelity = fidelity, tau = tau, formula = formula, edf = edf, n = n, Vcov = Vcov, Vqss = Vqss, V = V) else z <- list(coef = ptab, qsstab = ntab, fidelity = fidelity, tau = tau, formula = formula, edf = edf, n = n) } else if(cov) z <- list(coef = ptab, fidelity = fidelity, formula = formula, tau = tau, edf = edf, n = n, Vcov = Vcov, V = V) else z <- list(coef = ptab, fidelity = fidelity, formula = formula, tau = tau, edf = edf, n = n) class(z) <- "summary.rqss" return(z) } "plot.summary.rqss" <- function(x, ...) warning("No plot method for summary.rqss objects: plot the rqss object instead") "print.rqss" <- function(x, ...) { cat("Formula:\n") print(x$formula) sx <- summary(x) cat("Quantile fidelity at tau = ", x$tau, "is", sx$fidelity, "\n") cat("Estimated Model Dimension is", sx$edf, "\n") } "logLik.rqss" <- function(object, ...){ n <- object$n tau <- object$tau val <- n * (log(tau * (1-tau)) - 1 - log(object$fidelity/n)) attr(val,"n") <- n attr(val,"df") <- object$edf class(val) <- "logLik" val } "AIC.rqss" <- function(object, ... , k = 2){ v <- logLik(object) if(k < 0) k <- log(attr(v,"n")) val <- AIC(logLik(object), k = k) attr(val,"edf") <- attr(v,"df") val } "dither" <- function(x, type = "symmetric", value = NULL) { if(length(x) == 0) return(x) if(!is.numeric(x)) stop("'x' must be numeric") if(!length(value)) value <- min(diff(sort(unique(x)))) if(type == "symmetric") v <- x + runif(length(x), -value/2, value/2) else if(type == "right") v <- x + runif(length(x), 0, value) else stop("invalid type") v } print.summary.rqss <- function (x, digits = max(3, getOption("digits") - 3), signif.stars = getOption("show.signif.stars"), ...) { cat("Formula:\n") print(x$formula) if (length(x$coef) > 0) { cat("\nParametric coefficients:\n") printCoefmat(x$coef, digits = digits, signif.stars = signif.stars, na.print = "NA", ...) } cat("\n") if (length(x$qsstab) > 0) { cat("Approximate significance of qss terms:\n") printCoefmat(x$qsstab, digits = digits, signif.stars = signif.stars, has.Pvalue = TRUE, na.print = "NA", cs.ind = 1, ...) } cat("\n") if (length(x$fidelity) > 0) cat(" Quantile Fidelity at tau = ", x$tau, " is ", formatC(x$fidelity, digits = 6, width = 11), "\n", sep = "") cat(" Effective Degrees of Freedom = ", formatC(x$edf, digits = 5, width = 8, flag = "-"), " Sample Size = ", x$n, "\n", sep = "") invisible(x) } critval <- function(kappa, alpha = 0.05, rdf = 0){ # Hotelling tube critical value for uniform confidence bands # This should agree to about 6 digits with the following call to locfit: # crit(const = c(kappa,1), cov = 1-alpha,rdf = rdf)$crit.val tube <- function(x,alpha,rdf){ if(rdf <= 0) kappa * exp(-x^2/2)/pi + 2 * (1 - pnorm(x)) - alpha else kappa * (1+x^2/rdf)^(-rdf/2)/pi + 2 * (1 - pt(x,rdf)) - alpha } uniroot(tube,c(1,5),alpha = alpha, rdf = rdf)$root } quantreg/R/combos.R0000644000176200001440000000121713075136524013715 0ustar liggesusers"combos" <- function(n,p){ if(length(n) != 1){ n <- n[1] warning("Using first element as n") } if(length(p) != 1){ p <- p[1] warning("Using first element as p") } if(n != as.integer(n)){ warning("Coercing n to integer") n <- as.integer(n) } if(p != as.integer(p)){ warning("Coercing p to integer") p <- as.integer(p) } if(p > n) stop("p is greater than n") m <- choose(n,p) z <- .Fortran("combin", as.integer(n), as.integer(p), as.integer(m), a = integer(p*m), integer(n), integer(n), integer(n)) matrix(z$a,p) } quantreg/R/ParetoTest.R0000644000176200001440000001016413733372154014530 0ustar liggesusersParetoTest <- function(formula, tau = 0.1, data = NULL, flavor = "Hill", m = 2, cicov = 0.9, ...) { if(flavor == "Hill") z <- Hill(formula, tau, data, ...) else if(flavor == "Pickands") z <- Pickands(formula, tau, data, m = m, ...) else stop(paste("flavor", flavor, "not (yet) implemented")) summary(z, ci = cicov, ...) } # Pickands Estimation and Inference for the Pareto Tail Exponent Pickands <- function(formula, tau = 0.1, data = NULL, m = 2, ...){ y <- model.response(model.frame(formula, data)) X <- model.matrix(formula, data) Pickands.fit(X, y, tau, m, ...) } Pickands.fit <- function(X, y, tau, m, ...){ if(tau > 0.5){ # Right tail X <- -X y <- -y tau = 1-tau } taus = c(tau, m * tau, 2 * m * tau) F <- rq(y ~ X - 1, tau = taus, ...) Xbar = colMeans(X) num = c(crossprod(Xbar, (F$coef[,3] - F$coef[,2]))) denom = c(crossprod(Xbar, (F$coef[,2] - F$coef[,1]))) xi <- (-1/log(m)) * log(num/denom) z <- list(xi = xi, tau = tau, m = m, F = F) class(z) <- "Pickands" z } summary.Pickands <- function(object, se = "boot", B = 200, ci = 0.9, ...){ tau <- object$tau xi <- object$xi m <- object$m X <- object$F$x y <- object$F$y n <- length(y) b1 <- object$F$coef[,1] bm <- object$F$coef[,2] Xbar <- colMeans(X) Xg <- X %*% (bm - b1)/c(crossprod(Xbar, bm - b1)) #aargh humbug! R <- rep(NA, B) for(i in 1:B){ # Parametric Bootstrap Default Method ys <- -(rexp(n)^(-xi) - 1)/xi * Xg R[i] <- Pickands.fit(X, ys, tau, m = m, ...)$xi } z <- rep(NA,6) z[1] <- xi z[2] <- xi - quantile(R - xi, .5, na.rm=TRUE) z[3] <- xi - quantile(R - xi, (1+ci)/2, na.rm=TRUE) z[4] <- xi - quantile(R - xi, (1-ci)/2, na.rm=TRUE) z[5] <- sqrt(var(R)) z[6] <- B - sum(is.na(R)) names(z) <- c("Estimate", "Bias-Corrected", paste("Lower ", 50*(1-ci),"%",sep=""), paste("Upper ", 50*(1+ci),"%",sep=""), "StdErr", "Sample Size") z <- list(z = z, tau = tau) class(z) = "summary.Pickands" z } print.Pickands <- function(x, ...){ print(x$xi) } print.summary.Pickands <- function(x, ...){ cat(paste("Pickands Estimation and Inference: tau = ", x$tau, "Effective Bootstrap Sample Size = ",x$z[6],"\n\n")) print(x$z[1:5]) } if(FALSE){ # Test problem require(quantreg) n = 500 x = rnorm(n) y = x + rt(n,2) P = Pickands(y ~ x, .9) S = summary(P) } # Hill Estimation and Inference for the Pareto Tail Exponent Hill <- function(formula, tau = 0.1, data = NULL, ...){ y <- model.response(model.frame(formula, data)) X <- model.matrix(formula, data) Hill.fit(X, y, tau) } Hill.fit <- function(X, y, tau, ...){ if(tau > 0.5){ # Right tail X <- -X y <- -y tau = 1-tau } F <- rq.fit(X, y, tau = tau, ...) yhat <- F$fitted.values z <- log(ifelse(y <= yhat, abs(y/yhat), 1)) z <- z[is.finite(z)] z <- list(xi = sum(z)/(length(z)*tau), tau = tau, F = F) class(z) <- "Hill" z } summary.Hill <- function(object, se = "boot", B = 200, m = 2, ci = 0.9, ...){ tau <- object$tau xi <- object$xi X <- object$F$x y <- object$F$y n <- length(y) b0 <- object$F$coef bm <- rq.fit(X, y, m * tau, ...)$coef Xbar <- colMeans(X) Xg <- X %*% (bm - b0)/c(crossprod(Xbar, bm - b0)) #aargh humbug! R <- rep(NA, B) for(i in 1:B){ # Parametric Bootstrap Default Method ys <- -(rexp(n)^(-xi) - 1)/xi * Xg R[i] <- Hill.fit(X, ys, tau, ...)$xi } z <- rep(NA,6) z[1] <- xi z[2] <- xi - quantile(R - xi, .5, na.rm=TRUE) z[3] <- xi - quantile(R - xi, (1+ci)/2, na.rm=TRUE) z[4] <- xi - quantile(R - xi, (1-ci)/2, na.rm=TRUE) z[5] <- sqrt(var(R)) z[6] <- B - sum(is.na(R)) names(z) <- c("Estimate", "Bias-Corrected", paste("Lower ", 50*(1-ci),"%",sep=""), paste("Upper ", 50*(1+ci),"%",sep=""), "BS_StdErr", "Sample Size") z <- list(z = z, tau = tau) class(z) = "summary.Hill" z } print.Hill <- function(x, ...){ print(x$xi) } print.summary.Hill <- function(x, ...){ cat(paste("Hill Estimation and Inference: tau = ", x$tau, "Effective Bootstrap Sample Size = ",x$z[6],"\n\n")) print(x$z[1:5]) } quantreg/R/sfn.R0000644000176200001440000002241014760365707013230 0ustar liggesusers#WARNING -- needs considerable work to finish implementing sfn.control fix. #----------------------------------------------------------------------------- # Storage parameters and other controls for sfn fitting # nsubmax = upper bound of dimension of lindx # tmpmax = upper bound for the dimension of tmpvec # nnzlmax = maximum number of non-zero elements in L # cachsz = size of the cache memory; it's machine dependent # small = the tolerance used to check for convergence # maxiter = allowed limit for sfn iterations # warn.mesg = flag to control printing of warnings # sfn.control <- function( nsubmax = NULL, tmpmax = NULL, nnzlmax = NULL, cachsz = 64, small = 1e-6, maxiter=100, tiny = 1e-30, Large = 1e128, warn.mesg=TRUE) list(nsubmax = nsubmax, tmpmax = tmpmax, nnzlmax = nnzlmax, cachsz = cachsz, small = small, maxiter = as.integer(maxiter), tiny = tiny, Large = Large, warn.mesg = warn.mesg) ################################################################# # Interface for a sparse implementation of LMS interior point method # a = structure of the design matrix A' stored in csr format # y = pseudo response vector # tau = the desired regression quantile # rhs = the rhs of the dual problem -- specify at your own risk ################################################################# rq.fit.sfn <- function(a,y,tau=.5, rhs = (1-tau)*c(t(a) %*% rep(1,length(y))), control) { y <- -y n <- length(y) m <- as.integer(a@dimension[2]) if(n != a@dimension[1]) stop("Dimensions of design matrix and the response vector not compatible") u <- rep(1, length=n) x <- rep((1-tau),length=n) nnzdmax <- nnza <- a@ia[n+1L] -1L iwmax <- 7*m+3 ao <- t(a) e <- ao %*% a nnzemax <- as.integer(e@ia[m+1L]) - 1L ctrl <- sfn.control() if (!missing(control)) { control <- as.list(control) ctrl[names(control)] <- control } if (is.null(ctrl$nsubmax)) ctrl$nsubmax <- nnzemax if (is.null(ctrl$tmpmax )) ctrl$tmpmax <- 6L * m if (is.null(ctrl$nnzlmax)) ctrl$nnzlmax <- 4L * nnzdmax nsubmax <- ctrl$nsubmax tmpmax <- ctrl$tmpmax nnzlmax <- ctrl$nnzlmax s <- u - x b1 <- solve(e, ao %*% y, tmpmax=tmpmax, nnzlmax=nnzlmax, nsubmax=nsubmax) r <- y - a %*% b1 z <- ifelse(abs(r) < ctrl$small, r*(r>0) + ctrl$small, r*(r>0)) w <- z - r wwn <- matrix(0, n, 14L) wwn[,1] <- r wwn[,2] <- z wwn[,3] <- w fit <- .Fortran("srqfn", n = as.integer(n), m = as.integer(m), nnza = as.integer(nnza), a = as.double (a@ra), ja = as.integer(a@ja), ia = as.integer(a@ia), ao = as.double (ao@ra), jao = as.integer(ao@ja), iao = as.integer(ao@ia), nnzdmax = as.integer(nnzdmax), d = double(nnzdmax), jd = integer(nnzdmax), id = integer(m+1L), dsub = double(nnzemax+1L), jdsub = integer(nnzemax+1L), nnzemax = as.integer(nnzemax), e = as.double (e@ra), je = as.integer(e@ja), ie = as.integer(e@ia), nsubmax = as.integer(nsubmax), lindx = integer(nsubmax), xlindx = integer(m+1L), nnzlmax = as.integer(nnzlmax), lnz = double(nnzlmax), xlnz = integer(m+1L), iw = integer(m*5), iwmax = as.integer(iwmax), iwork = integer(iwmax), xsuper = integer(m+1L), tmpmax = as.integer(tmpmax), tmpvec = double(tmpmax), wwm = double(3*m), wwn = as.double(wwn), cachsz = as.integer(ctrl$cachsz), level = 8L, x = as.double(x), s = as.double(s), u = as.double(u), c = as.double(y), sol = as.double(b1), # 'b' rhs = as.double(rhs), # 'y' sm_tn_Lrg = as.double(ctrl[c("small", "tiny", "Large")]), ierr = integer(1), maxiter = as.integer(ctrl$maxiter), time = double(7) )[c("sol","ierr","maxiter","time")] ierr <- fit$ierr if(ierr != 0 && ctrl$warn.mesg) warning(sfnMessage(ierr)) coefficients <- -fit$sol residuals <- -y - a %*% coefficients list(coefficients = coefficients, residuals = residuals, control = ctrl, ierr = ierr, it = fit$maxiter) } #------------------------------------------------------------------------------ ################################################################# # Interface for a sparse implementation of LMS interior point method # x = structure of A1' stored in csr format # y = pseudo response vector # m = column dimension of A1' in full mode # R = structure of the constraint matrix A2' stored in csr format # r = rhs of the inequality constraints # tau = the desired regression quantile # rhs = the rhs of the dual problem -- specify at your own risk ################################################################# rq.fit.sfnc <- function(x, y, R, r, tau = 0.5, rhs = (1-tau)*c(t(x) %*% rep(1,length(y))),control) { y <- -y r <- -r n1 <- length(y) xd <- as.integer(x@dimension) m <- xd[2] if(n1 != xd[1]) stop("The design matrix A1' and response vector y are not compatible") n2 <- length(r) if(n2 != R@dimension[1]) stop("The constraint matrix A2' and constraint rhs are not compatible") maxn1n2 <- max(n1,n2) u <- rep(1,length=n1) x1 <- rep(1-tau,length=n1) x2 <- rep(1,length=n2) wwm <- vector("numeric",6*m) wwm[1:m] <- rhs nnzx <- x@ia[xd[1] +1L] -1L nnzR <- R@ia[R@dimension[1]+1L] -1L nnzdmax <- max(nnzx,nnzR) iwmax <- 7*m+3 ao1 <- t(x) ao2 <- t(R) e <- ao1 %*% x g <- ao2 %*% R h <- e + g nnzemax <- e@ia[e@dimension[1]+1L] -1L nnzgmax <- g@ia[g@dimension[1]+1L] -1L nnzhmax <- h@ia[h@dimension[1]+1L] -1L ctrl <- sfn.control() if (!missing(control)) { control <- as.list(control) ctrl[names(control)] <- control } if (is.null(ctrl$nsubmax)) ctrl$nsubmax <- nnzhmax if (is.null(ctrl$tmpmax )) ctrl$tmpmax <- 6L * m if (is.null(ctrl$nnzlmax)) ctrl$nnzlmax <- 4L * nnzdmax nsubmax <- ctrl$nsubmax tmpmax <- ctrl$tmpmax nnzlmax <- ctrl$nnzlmax s <- u - x1 chol.o <- chol(e, tmpmax=tmpmax, nsubmax=nsubmax, nnzlmax=nnzlmax) b <- backsolve(chol.o, ao1 %*% y) r1 <- y - x %*% b z1 <- ifelse(abs(r1) < ctrl$small, r1*(r1>0) + ctrl$small, r1*(r1>0)) w <- z1 - r1 z2 <- rep(1,n2) wwn1 <- matrix(0,n1,10) wwn1[,1] <- z1 wwn1[,2] <- w wwn2 <- matrix(0,n2,7) wwn2[,2] <- z2 fit <- .Fortran("srqfnc", n1 = as.integer(n1), m = as.integer(m), nnzx = as.integer(nnzx), x = as.double(x@ra), jx = as.integer(x@ja), ix = as.integer(x@ia), ao1 = as.double(ao1@ra), jao1 = as.integer(ao1@ja), iao1 = as.integer(ao1@ia), n2 = as.integer(n2), nnzR = as.integer(nnzR), R = as.double(R@ra), jR = as.integer(R@ja), iR = as.integer(R@ia), ao2 = as.double(ao2@ra), jao2 = as.integer(ao2@ja), iao2 = as.integer(ao2@ia), nnzdmax = as.integer(nnzdmax), d = double(nnzdmax), jd = integer(nnzdmax), id = integer(m+1L), dsub = double(nnzhmax+1L), jdsub = integer(nnzhmax+1L), nnzemax = as.integer(nnzemax), e = as.double(e@ra), je = as.integer(e@ja), ie = as.integer(e@ia), nnzgmax = as.integer(nnzgmax), g = double(nnzgmax), jg = integer(nnzgmax), ig = integer(m+1L), nnzhmax = as.integer(nnzhmax), h = double(nnzhmax), jh = integer(nnzhmax), ih = integer(m+1L), nsubmax = as.integer(nsubmax), lindx = integer(nsubmax), xlindx = integer(m+1L), nnzlmax = as.integer(nnzlmax), lnz = double(nnzlmax), xlnz = integer(m+1L), iw = integer(m*5L), iwmax = as.integer(iwmax), iwork = integer(iwmax), xsuper = integer(m+1L), tmpmax = as.integer(tmpmax), tmpvec = double(tmpmax), maxn1n2 = as.integer(maxn1n2), ww1 = double(maxn1n2), wwm = as.double(wwm), wwn1 = as.double(wwn1), wwn2 = as.double(wwn2), cachsz = as.integer(ctrl$cachsz), level = 8L, x1 = as.double(x1), x2 = as.double(x2), s = as.double(s), u = as.double(u), c1 = as.double(y), c2 = as.double(r), sm_tn_Lrg = as.double(ctrl[c("small", "tiny", "Large")]), ## output: sol = as.double(b), ierr = integer(1), maxiter = as.integer(ctrl$maxiter), time = double(7) )[c("sol","ierr","maxiter","time")] ierr <- fit$ierr if(ierr == 13)# stop() stop("Increase nnzh.factor") if(ierr != 0 && ctrl$warn.mesg) warning(sfnMessage(ierr)) coefficients <- -fit$sol residuals <- -y - x %*% coefficients list(coefficients = coefficients, residuals = residuals, control = ctrl, ierr = ierr, it = fit$maxiter) } "sfnMessage" <- function(ierr){ switch(ierr, "insufficient storage (work space) when calling extract\n", "nnzd > nnzdmax\n", "insufficient storage in iwork when calling ordmmd\n", "insufficient storage in iwork when calling sfinit\n", "nnzl > nnzlmax when calling sfinit\n", "nsub > nsubmax when calling sfinit\n", "insufficient work space in iwork when calling symfct\n", "inconsistancy in input when calling symfct\n", "tmpsiz > tmpmax when calling bfinit; increase tmpmax\n", "nonpositive diagonal encountered blkfct() matrix is not positive definite\n", "insufficient work storage in tmpvec when calling blkfct\n", "insufficient work storage in iwork when calling blkfct\n", "impossible error condition", "impossible error condition", "impossible error condition", "impossible error condition", "tiny diagonals replaced with Inf when calling blkfct\n") } quantreg/R/quantreg.R0000644000176200001440000015275114705653503014275 0ustar liggesusers bandwidth.rq <- function(p, n, hs = TRUE, alpha = 0.05) { # Bandwidth selection for sparsity estimation two flavors: # Hall and Sheather(1988, JRSS(B)) rate = O(n^{-1/3}) # Bofinger (1975, Aus. J. Stat) -- rate = O(n^{-1/5}) # Generally speaking, default method, hs=TRUE is preferred. x0 <- qnorm(p) f0 <- dnorm(x0) if(hs) n^(-1/3) * qnorm(1 - alpha/2)^(2/3) * ((1.5 * f0^2)/(2 * x0^2 + 1))^(1/3) else n^-0.2 * ((4.5 * f0^4)/(2 * x0^2 + 1)^2)^ 0.2 } plot.rq.process <- function(x, nrow = 3, ncol = 2, ...) { ## Function to plot estimated quantile regression process tdim <- dim(x$sol) p <- tdim[1] - 3 m <- tdim[2] oldpar <- par(no.readonly=TRUE) par(mfrow = c(nrow, ncol)) ylab <- dimnames(x$sol)[[1]] for(i in 1:p) { plot(x$sol[1,], x$sol[3 + i, ], xlab = "tau", ylab = ylab[3 + i], type = "l") } par(oldpar) } print.rqs <- function (x, ...) { if (!is.null(cl <- x$call)) { cat("Call:\n") dput(cl) } coef <- coef(x) cat("\nCoefficients:\n") print(coef, ...) rank <- x$rank nobs <- nrow(residuals(x)) p <- nrow(coef) rdf <- nobs - p cat("\nDegrees of freedom:", nobs, "total;", rdf, "residual\n") if (!is.null(attr(x, "na.message"))) cat(attr(x, "na.message"), "\n") invisible(x) } "print.rq" <- function(x, ...) { if(!is.null(cl <- x$call)) { cat("Call:\n") dput(cl) } coef <- coef(x) cat("\nCoefficients:\n") print(coef, ...) rank <- x$rank nobs <- length(residuals(x)) if(is.matrix(coef)) p <- dim(coef)[1] else p <- length(coef) rdf <- nobs - p cat("\nDegrees of freedom:", nobs, "total;", rdf, "residual\n") if(!is.null(attr(x, "na.message"))) cat(attr(x, "na.message"), "\n") invisible(x) } print.summary.rqs <- function(x, ...) { lapply(x, print.summary.rq) invisible(x) } "print.summary.rq" <- function(x, digits = max(5, .Options$digits - 2), ...) { cat("\nCall: ") dput(x$call) coef <- x$coef ## df <- x$df ## rdf <- x$rdf tau <- x$tau cat("\ntau: ") print(format(round(tau,digits = digits)), quote = FALSE, ...) cat("\nCoefficients:\n") print(format(round(coef, digits = digits)), quote = FALSE, ...) invisible(x) } "rq" <- function (formula, tau = 0.5, data, subset, weights, na.action, method = "br", model = TRUE, contrasts = NULL, ...) { call <- match.call() mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "weights", "na.action"), names(mf), 0) mf <- mf[c(1,m)] mf$drop.unused.levels <- TRUE mf[[1]] <- as.name("model.frame") mf <- eval.parent(mf) if(method == "model.frame")return(mf) mt <- attr(mf, "terms") weights <- as.vector(model.weights(mf)) tau <- sort(unique(tau)) eps <- .Machine$double.eps^(2/3) if (any(tau == 0)) tau[tau == 0] <- eps if (any(tau == 1)) tau[tau == 1] <- 1 - eps Y <- model.response(mf) if(method == "sfn"){ if(requireNamespace("MatrixModels", quietly = TRUE) && requireNamespace("Matrix", quietly = TRUE)){ X <- MatrixModels::model.Matrix(mt, data, sparse = TRUE) vnames <- dimnames(X)[[2]] X <- as(X ,"matrix.csr") mf$x <- X } } else{ X <- model.matrix(mt, mf, contrasts) vnames <- dimnames(X)[[2]] } Rho <- function(u,tau) u * (tau - (u < 0)) if (length(tau) > 1) { if (any(tau < 0) || any(tau > 1)) stop("invalid tau: taus should be >= 0 and <= 1") coef <- matrix(0, ncol(X), length(tau)) rho <- rep(0, length(tau)) if(!(method %in% c("ppro","qfnb","pfnb"))){ fitted <- resid <- matrix(0, nrow(X), length(tau)) for(i in 1:length(tau)){ z <- {if (length(weights)) rq.wfit(X, Y, tau = tau[i], weights, method, ...) else rq.fit(X, Y, tau = tau[i], method, ...) } coef[,i] <- z$coefficients resid[,i] <- z$residuals rho[i] <- sum(Rho(z$residuals,tau[i])) fitted[,i] <- Y - z$residuals } taulabs <- paste("tau=",format(round(tau,3))) dimnames(coef) <- list(vnames, taulabs) dimnames(resid)[[2]] <- taulabs fit <- z fit$coefficients <- coef fit$residuals <- resid fit$fitted.values <- fitted if(method == "lasso") class(fit) <- c("lassorqs","rqs") else if(method == "scad") class(fit) <- c("scadrqs","rqs") else class(fit) <- "rqs" } else if(method == "pfnb"){ # Preprocessing in fortran loop fit <- rq.fit.pfnb(X, Y, tau) class(fit) = "rqs" } else if(method == "qfnb"){ # simple fortran loop method fit <- rq.fit.qfnb(X, Y, tau) class(fit) = ifelse(length(tau) == 1,"rq","rqs") } else if(method == "ppro"){ # Preprocessing method in R fit <- rq.fit.ppro(X, Y, tau, ...) class(fit) = ifelse(length(tau) == 1,"rq","rqs") } } else{ process <- (tau < 0 || tau > 1) if(process && method != "br") stop("when tau not in [0,1] method br must be used") fit <- { if(length(weights)) rq.wfit(X, Y, tau = tau, weights, method, ...) else rq.fit(X, Y, tau = tau, method, ...) } if(process) rho <- list(tau = fit$sol[1,], rho = fit$sol[3,]) else { if(length(dim(fit$residuals))) dimnames(fit$residuals) <- list(dimnames(X)[[1]],NULL) rho <- sum(Rho(fit$residuals,tau)) } if(method == "lasso") class(fit) <- c("lassorq","rq") else if(method == "scad") class(fit) <- c("scadrq","rq") else class(fit) <- ifelse(process, "rq.process", "rq") } fit$na.action <- attr(mf, "na.action") fit$formula <- formula fit$terms <- mt fit$xlevels <- .getXlevels(mt,mf) fit$call <- call fit$tau <- tau fit$weights <- weights fit$residuals <- drop(fit$residuals) fit$rho <- rho fit$method <- method fit$fitted.values <- drop(fit$fitted.values) attr(fit, "na.message") <- attr(m, "na.message") if(model) fit$model <- mf fit } "rq.fit" <- function(x, y, tau = 0.5, method = "br", ...) { if(length(tau) > 1 && method != "ppro") { tau <- tau[1] warning("Multiple taus not allowed in rq.fit: solution restricted to first element") } fit <- switch(method, fn = rq.fit.fnb(x, y, tau = tau, ...), fnb = rq.fit.fnb(x, y, tau = tau, ...), fnc = rq.fit.fnc(x, y, tau = tau, ...), sfn = rq.fit.sfn(x, y, tau = tau, ...), conquer = rq.fit.conquer(x, y, tau = tau, ...), pfn = rq.fit.pfn(x, y, tau = tau, ...), pfnb = rq.fit.pfnb(x, y, tau = tau, ...), ppro= rq.fit.ppro(x, y, tau = tau, ...), br = rq.fit.br(x, y, tau = tau, ...), lasso = rq.fit.lasso(x, y, tau = tau, ...), scad = rq.fit.scad(x, y, tau = tau, ...), { what <- paste("rq.fit.", method, sep = "") if(exists(what, mode = "function")) (get(what, mode = "function"))(x, y, ...) else stop(paste("unimplemented method:", method)) } ) fit$fitted.values <- y - fit$residuals fit$contrasts <- attr(x, "contrasts") fit } "rqs.fit"<- function(x, y, tau = 0.5, tol = 0.0001) { # function to compute rq fits for multiple y's x <- as.matrix(x) p <- ncol(x) n <- nrow(x) m <- ncol(y) z <- .Fortran("rqs", as.integer(n), as.integer(p), as.integer(m), as.integer(n + 5), as.integer(p + 2), as.double(x), as.double(y), as.double(tau), as.double(tol), flag = integer(m), coef = double(p * m), resid = double(n), integer(n), double((n + 5) * (p + 2)), double(n)) if(sum(z$flag)>0){ if(any(z$flag)==2) warning(paste(sum(z$flag==2),"out of",m, "BS replications have near singular design")) if(any(z$flag)==1) warning(paste(sum(z$flag==1),"out of",m,"may be nonunique")) } return(t(matrix(z$coef, p, m))) } "formula.rq" <- function (x, ...) { form <- x$formula if (!is.null(form)) { form <- formula(x$terms) environment(form) <- environment(x$formula) form } else formula(x$terms) } "predict.rq" <- function (object, newdata, type = "none", interval = c("none", "confidence"), level = 0.95, na.action = na.pass, ...) { if (missing(newdata)) return(napredict(object$na.action, object$fitted)) else { tt <- terms(object) Terms <- delete.response(tt) m <- model.frame(Terms, newdata, na.action = na.action, xlev = object$xlevels) if (!is.null(cl <- attr(Terms, "dataClasses"))) .checkMFClasses(cl, m) X <- model.matrix(Terms, m, contrasts.arg = object$contrasts) } pred <- drop(X %*% object$coefficients) dots <- list(...) if (length(dots$se)) boot <- (dots$se == "boot") else boot <- FALSE if (length(dots$mofn)) mofn <- dots$mofn interval <- match.arg(interval) if (!interval == "none") { if (interval == "confidence") { if (type == "percentile") { if (boot) { if(exists("mofn")) {# Rescale and recenter!! n <- length(object$fitted) factor <- ifelse(mofn < n, sqrt(mofn/n), 1) XB <- X %*% t(summary(object, cov = TRUE, ...)$B)/factor pl <- apply(XB, 1, function(x) quantile(x, (1 - level)/2)) pu <- apply(XB, 1, function(x) quantile(x, 1 - (1 - level)/2)) pl <- pred + factor * (pl - pred) pu <- pred + factor * (pu - pred) } else { XB <- X %*% t(summary(object, cov = TRUE, ...)$B) pl <- apply(XB, 1, function(x) quantile(x, (1 - level)/2)) pu <- apply(XB, 1, function(x) quantile(x, 1 - (1 - level)/2)) } pred <- cbind(pred, pl, pu) colnames(pred) <- c("fit", "lower", "higher") } else stop("Percentile method requires se = \"boot\".") } else if (type == "direct") { if (boot) stop("Direct method incompatible with bootstrap covariance matrix estimation") Z <- rq.fit(object$x, object$y, tau = -1)$sol V <- summary(object, cov = TRUE, ...) df <- V$rdf tfrac <- qt(1 - (1 - level)/2, df) Vun <- V$cov * V$scale^2 tau <- object$tau bn <- tfrac * sqrt(diag(X %*% Vun %*% t(X))) tauU <- pmin(tau + bn, 1 - 1/df) tauL <- pmax(tau - bn, 1/df) tauhat <- Z[1, ] yhat <- X %*% Z[-(1:3), ] n <- nrow(X) pl <- yhat[cbind(1:n, cut(tauL, tauhat, label = FALSE))] pu <- yhat[cbind(1:n, cut(tauU, tauhat, label = FALSE))] pred <- cbind(pred, pl, pu) colnames(pred) <- c("fit", "lower", "higher") } else { V <- summary(object, cov = TRUE, ...) df <- V$rdf tfrac <- qt((1 - level)/2, df) sdpred <- sqrt(diag(X %*% V$cov %*% t(X))) pred <- cbind(pred, pred + tfrac * sdpred %o% c(1, -1)) colnames(pred) <- c("fit", "lower", "higher") } } else stop(paste("No interval method for", interval)) } pred } "predict.rqs" <- function (object, newdata, type = "Qhat", stepfun = FALSE, na.action = na.pass, ...) { ## with all defaults if(missing(newdata) && !stepfun && (type == "Qhat")) return(napredict(object$na.action, object$fitted)) ## otherwise tt <- delete.response(terms(object)) m <- if(missing(newdata)) model.frame(object) else model.frame(tt, newdata, na.action = na.action, xlev = object$xlevels) if(!is.null(cl <- attr(tt, "dataClasses"))) .checkMFClasses(cl, m) X <- model.matrix(tt, m, contrasts.arg = object$contrasts) pred <- t(X %*% object$coefficients) taus <- object$tau M <- NCOL(pred) ## return stepfun or matrix if(stepfun) { if(type == "Qhat"){ pred <- rbind(pred[1,],pred) if(M > 1) f <- apply(pred, 2, function(y) stepfun(taus, y)) else f <- stepfun(taus, c(pred[1,1], pred[,1])) } else if(type == "Fhat"){ taus <- c(taus[1], taus) if(M > 1) f <- apply(pred, 2, function(y) { o <- order(y) stepfun(y[o], taus[c(1,o)])}) else f <- stepfun(pred[,1],taus) } else stop("Stepfuns must be either 'Qhat' or 'Fhat'\n") return(f) } else if(type == "fhat"){ akjfun <- function(z, p, d = 10, g = 300, ...) { mz <- sum(z * p) sz <- sqrt(sum((z - mz)^2 * p)) hz <- seq(mz - d * sz, mz + d * sz, length = g) fz <- akj(z, hz, p = p, ...)$dens approxfun(hz, fz) } p <- diff(taus) if (M > 1) f <- apply(pred[-1, ], 2, function(z) akjfun(z, p, ...)) else akjfun(pred[, 1], p, ...) return(f) } else return(t(pred)) } "predict.rq.process" <- function (object, newdata, type = "Qhat", stepfun = FALSE, na.action = na.pass, ...) { if(missing(newdata) && !stepfun && (type == "Qhat")) return(napredict(object$na.action, object$fitted)) tt <- terms(object) Terms <- delete.response(tt) m <- model.frame(Terms, newdata, na.action = na.action, xlev = object$xlevels) if (!is.null(cl <- attr(Terms, "dataClasses"))) .checkMFClasses(cl, m) X <- model.matrix(Terms, m, contrasts.arg = object$contrasts) if(!length(X)) X <- rep(1, NROW(object$dsol)) # intercept only hack pred <- t(X %*% object$sol[-(1:3),, drop = FALSE]) taus <- object$sol[1,] M <- NCOL(pred) if(stepfun){ if(type == "Qhat"){ pred <- rbind(pred[1,], pred) if(M > 1) f <- apply(pred,2,function(y) stepfun(taus, y)) else f <- stepfun(taus, pred[,1]) } else if(type == "Fhat"){ taus <- c(taus[1],taus) if(M > 1) f <- apply(pred,2,function(y) stepfun(y,taus)) else f <- stepfun(pred[,1],taus) } else stop("Stepfuns must be either 'Qhat' or 'Fhat'") return(f) } else if(type == "fhat"){ akjfun <- function(z, p, d = 10, g = 300, ...){ mz <- sum(z * p) sz <- sqrt(sum((z - mz)^2 * p)) hz <- seq(mz - d * sz, mz+ d * sz, length = g) fz <- akj(z, hz, p = p, ...)$dens approxfun(hz,fz) } p <- diff(taus) if(M > 1) f <- apply(pred[-1,], 2, function(z) akjfun(z, p, ...)) else f = akjfun(pred[,1], p, ...) return(f) } else return(t(pred)) } "rearrange" <- function (f, xmin, xmax) # Revised Version September 11 2007. { if (is.list(f)) lapply(f, rearrange) else { if (!is.stepfun(f)) stop("Only stepfuns can be rearranged.\n") call <- attributes(f)$call; right <- call[match("right",names(call))]=="TRUE()" x <- knots(f) n <- length(x) if(missing(xmin)) xmin = x[1] if(missing(xmax)) xmax = x[n] x <- x[(x >= xmin) & (x <= xmax)] x <- c(xmin, x, xmax) n <- length(x) y <- f(x) o <- ifelse(rep(right,n-1), order(y[-1])+1, order(y[-n])) x <- cumsum(c(x[1], diff(x)[o - right])) y <- y[o] y <- c(y[1], y, max(y)) stepfun(x, y, right = right) } } # Function to compute regression quantiles using original simplex approach # of Barrodale-Roberts/Koenker-d'Orey. There are several options. # The options are somewhat different than those available for the Frisch- # Newton version of the algorithm, reflecting the different natures of the # problems typically solved. Succintly BR for "small" problems, FN for # "large" ones. Obviously, these terms are conditioned by available hardware. # # Basically there are two modes of use: # 1. For Single Quantiles: # # if tau is between 0 and 1 then only one quantile solution is computed. # # if ci = FALSE then just the point estimate and residuals are returned # If the column dimension of x is 1 then ci is set to FALSE since # since the rank inversion method has no proper null model. # if ci = TRUE then there are two options for confidence intervals: # # 1. if iid = TRUE we get the original version of the rank # inversion intervals as in Koenker (1994) # 2. if iid = FALSE we get the new version of the rank inversion # intervals which accounts for heterogeneity across # observations in the conditional density of the response. # The theory of this is described in Koenker-Machado(1999) # Both approaches involve solving a parametric linear programming # problem, the difference is only in the factor qn which # determines how far the PP goes. In either case one can # specify two other options: # 1. interp = FALSE returns two intervals an upper and a # lower corresponding to a level slightly # above and slightly below the one specified # by the parameter alpha and dictated by the # essential discreteness in the test statistic. # interp = TRUE returns a single interval based on # linear interpolation of the two intervals # returned: c.values and p.values which give # the critical values and p.values of the # upper and lower intervals. Default: interp = TRUE. # 2. tcrit = TRUE uses Student t critical values while # tcrit = FALSE uses normal theory ones. # 2. For Multiple Quantiles: # # if tau < 0 or tau >1 then it is presumed that the user wants to find # all of the rq solutions in tau, and the program computes the whole # quantile regression solution as a process in tau, the resulting arrays # containing the primal and dual solutions, betahat(tau), ahat(tau) # are called sol and dsol. These arrays aren't printed by the default # print function but they are available as attributes. # It should be emphasized that this form of the solution can be # both memory and cpu quite intensive. On typical machines it is # not recommended for problems with n > 10,000. # In large problems a grid of solutions is probably sufficient. # rq.fit.br <- function (x, y, tau = 0.5, alpha = 0.1, ci = FALSE, iid = TRUE, interp = TRUE, tcrit = TRUE) { tol <- .Machine$double.eps^(2/3) eps <- tol big <- .Machine$double.xmax x <- as.matrix(x) p <- ncol(x) n <- nrow(x) ny <- NCOL(y) nsol <- 2 ndsol <- 2 # Check for Singularity of X since br fortran isn't very reliable about this if (qr(x)$rank < p) stop("Singular design matrix") if (tau < 0 || tau > 1) { nsol <- 3 * n ndsol <- 3 * n lci1 <- FALSE qn <- rep(0, p) cutoff <- 0 tau <- -1 } else { if (p == 1) ci <- FALSE if (ci) { lci1 <- TRUE if (tcrit) cutoff <- qt(1 - alpha/2, n - p) else cutoff <- qnorm(1 - alpha/2) if (!iid) { h <- bandwidth.rq(tau, n, hs = TRUE) bhi <- rq.fit.br(x, y, tau + h, ci = FALSE) bhi <- coefficients(bhi) blo <- rq.fit.br(x, y, tau - h, ci = FALSE) blo <- coefficients(blo) dyhat <- x %*% (bhi - blo) if (any(dyhat <= 0)) { pfis <- (100 * sum(dyhat <= 0))/n warning(paste(pfis, "percent fis <=0")) } f <- pmax(eps, (2 * h)/(dyhat - eps)) qn <- rep(0, p) for (j in 1:p) { qnj <- lm(x[, j] ~ x[, -j] - 1, weights = f)$resid qn[j] <- sum(qnj * qnj) } } else qn <- 1/diag(solve(crossprod(x))) } else { lci1 <- FALSE qn <- rep(0, p) cutoff <- 0 } } z <- .Fortran("rqbr", as.integer(n), as.integer(p), as.integer(n + 5), as.integer(p + 3), as.integer(p + 4), as.double(x), as.double(y), as.double(tau), as.double(tol), flag = as.integer(1), coef = double(p), resid = double(n), integer(n), double((n + 5) * (p + 4)), double(n), as.integer(nsol), as.integer(ndsol), sol = double((p + 3) * nsol), dsol = double(n * ndsol), lsol = as.integer(0), h = integer(p * nsol), qn = as.double(qn), cutoff = as.double(cutoff), ci = double(4 * p), tnmat = double(4 * p), as.double(big), as.logical(lci1)) if (z$flag != 0) warning(switch(z$flag, "Solution may be nonunique", "Premature end - possible conditioning problem in x")) if (tau < 0 || tau > 1) { sol <- matrix(z$sol[1:((p + 3) * z$lsol)], p + 3) dsol <- matrix(z$dsol[1:(n * z$lsol)], n) vnames <- dimnames(x)[[2]] dimnames(sol) <- list(c("tau", "Qbar", "Obj.Fun", vnames), NULL) return(list(sol = sol, dsol = dsol)) } if (!ci) { coef <- z$coef dual <- z$dsol[1:n] names(coef) <- dimnames(x)[[2]] return(list(coefficients = coef, x = x, y = y, residuals = y - x %*% z$coef, dual = dual)) } if (interp) { Tn <- matrix(z$tnmat, nrow = 4) Tci <- matrix(z$ci, nrow = 4) Tci[3, ] <- Tci[3, ] + (abs(Tci[4, ] - Tci[3, ]) * (cutoff - abs(Tn[3, ])))/abs(Tn[4, ] - Tn[3, ]) Tci[2, ] <- Tci[2, ] - (abs(Tci[1, ] - Tci[2, ]) * (cutoff - abs(Tn[2, ])))/abs(Tn[1, ] - Tn[2, ]) Tci[2, ][is.na(Tci[2, ])] <- -big Tci[3, ][is.na(Tci[3, ])] <- big coefficients <- cbind(z$coef, t(Tci[2:3, ])) vnames <- dimnames(x)[[2]] cnames <- c("coefficients", "lower bd", "upper bd") dimnames(coefficients) <- list(vnames, cnames) residuals <- y - drop(x %*% z$coef) return(list(coefficients = coefficients, residuals = residuals)) } else { Tci <- matrix(z$ci, nrow = 4) coefficients <- cbind(z$coef, t(Tci)) residuals <- y - drop(x %*% z$coef) vnames <- dimnames(x)[[2]] cnames <- c("coefficients", "lower bound", "Lower Bound", "upper bd", "Upper Bound") dimnames(coefficients) <- list(vnames, cnames) c.values <- t(matrix(z$tnmat, nrow = 4)) c.values <- c.values[, 4:1] dimnames(c.values) <- list(vnames, cnames[-1]) p.values <- if (tcrit) matrix(pt(c.values, n - p), ncol = 4) else matrix(pnorm(c.values), ncol = 4) dimnames(p.values) <- list(vnames, cnames[-1]) list(coefficients = coefficients, residuals = residuals, c.values = c.values, p.values = p.values) } } "rq.fit.conquer" <- function(x, y, tau = 0.5, kernel = c("Gaussian", "uniform", "parabolic", "triangular"), h = 0, tol = 1e-04, iteMax = 5000, ci = FALSE, alpha = 0.05, B = 200) { if(!requireNamespace("conquer", quietly = TRUE)) stop("method conquer requires package conquer") fit = conquer::conquer(x[,-1], y, tau = tau, kernel = kernel, h = h, tol = tol, iteMax = iteMax, ci = ci, alpha = alpha, B = 1000) coefficients = fit$coeff names(coefficients) = dimnames(x)[[2]] residuals = fit$residual list(coefficients = coefficients, tau = tau, residuals = residuals) } "rq.fit.fnb" <- function (x, y, tau = 0.5, rhs = (1-tau)*apply(x,2,sum), beta = 0.99995, eps = 1e-06) { n <- length(y) p <- ncol(x) if (n != nrow(x)) stop("x and y don't match n") if (tau < eps || tau > 1 - eps) stop("No parametric Frisch-Newton method. Set tau in (0,1)") d <- rep(1,n) u <- rep(1,n) wn <- rep(0,10*n) wn[1:n] <- (1-tau) #initial value of dual solution z <- .Fortran("rqfnb", as.integer(n), as.integer(p), a = as.double(t(as.matrix(x))), c = as.double(-y), rhs = as.double(rhs), d = as.double(d),as.double(u), beta = as.double(beta), eps = as.double(eps), wn = as.double(wn), wp = double((p + 3) * p), nit = integer(3), info = integer(1)) if (z$info != 0) warning(paste("Error info = ", z$info, "in stepy: possibly singular design")) coefficients <- -z$wp[1:p] names(coefficients) <- dimnames(x)[[2]] residuals <- y - x %*% coefficients list(coefficients=coefficients, tau=tau, residuals=residuals, nit = z$nit) } "rq.fit.fnc" <- function (x, y, R, r, tau = 0.5, beta = 0.9995, eps = 1e-06) { n1 <- length(y) n2 <- length(r) p <- ncol(x) if (n1 != nrow(x)) stop("x and y don't match n1") if (n2 != nrow(R)) stop("R and r don't match n2") if (p != ncol(R)) stop("R and x don't match p") if (tau < eps || tau > 1 - eps) stop("No parametric Frisch-Newton method. Set tau in (0,1)") rhs <- (1 - tau) * apply(x, 2, sum) u <- rep(1, max(n1,n2)) #upper bound vector and scratch vector wn1 <- rep(0, 9 * n1) wn1[1:n1] <- (1 - tau) #store the values of x1 wn2 <- rep(0, 6 * n2) wn2[1:n2] <- 1 #store the values of x2 z <- .Fortran("rqfnc", as.integer(n1), as.integer(n2), as.integer(p), a1 = as.double(t(as.matrix(x))), c1 = as.double(-y), a2 = as.double(t(as.matrix(R))), c2 = as.double(-r), rhs = as.double(rhs), d1 = double(n1), d2 = double(n2), as.double(u), beta = as.double(beta), eps = as.double(eps), wn1 = as.double(wn1), wn2 = as.double(wn2), wp = double((p + 3) * p), it.count = integer(3), info = integer(1)) if (z$info != 0) stop(paste("Error info = ", z$info, "in stepy2: singular design")) coefficients <- -z$wp[1:p] names(coefficients) <- dimnames(x)[[2]] residuals <- y - x %*% coefficients it.count <- z$it.count list(coefficients=coefficients, tau=tau, residuals=residuals, it = it.count) } "rq.fit.scad" <- function (x, y, tau = 0.5, alpha = 3.2, lambda = 1, start = "rq", beta = 0.9995, eps = 1e-06) { n <- length(y) p <- ncol(x) if (n != nrow(x)) stop("x and y don't match n") if (tau < eps || tau > 1 - eps) stop("No parametric Frisch-Newton method. Set tau in (0,1)") if(length(lambda) == 1) lambda <- c(0,rep(lambda,p-1)) if(length(lambda) != p) stop(paste("lambda must be either of length ",p," or length one")) if(any(lambda < 0)) stop("negative lambdas disallowed") R <- diag(lambda,nrow = length(lambda)) R <- R[which(lambda != 0),, drop = FALSE] r <- rep(0,nrow(R)) X <- rbind(x, R) Y <- c(y, r) N <- length(Y) rhs <- (1 - tau) * apply(x, 2, sum) + apply(R,2,sum) dscad <- function(x, a = 3.7, lambda = 2){ lambda * sign(x) * (abs(x) <= lambda) + sign(x) * (a * lambda - abs(x)) / (a - 1) * (abs(x) <= a * lambda) * (abs(x) > lambda) } binit <- switch(start, rq = rq.fit.fnb(x, y, tau = tau)$coef[-1], lasso = rq.fit.lasso(x, y, tau = tau, lambda = lambda)$coef[-1] ) coef <- rep(.Machine$double.xmax,p) vscad <- rhs - c(0,dscad(binit) * sign(binit)) it <- 0 while(sum(abs(binit - coef[-1])) > eps){ it <- it + 1 d <- rep(1, N) u <- rep(1, N) wn <- rep(0, 10 * N) wn[1:N] <- c(rep((1 - tau),n),rep(.5,nrow(R))) vrhs <- rhs - vscad binit <- coef[-1] z <- .Fortran("rqfnb", as.integer(N), as.integer(p), a = as.double(t(as.matrix(X))), c = as.double(-Y), vrhs = as.double(vrhs), d = as.double(d), as.double(u), beta = as.double(beta), eps = as.double(eps), wn = as.double(wn), wp = double((p + 3) * p), it.count = integer(3), info = integer(1)) coef <- -z$wp[1:p] vscad <- c(0,dscad(coef[2:p]) * sign(coef[2:p])) } if (z$info != 0) stop(paste("Error info = ", z$info, "in stepy2: singular design")) coefficients <- -z$wp[1:p] names(coefficients) <- dimnames(x)[[2]] residuals <- y - x %*% coefficients it.count <- z$it.count list(coefficients=coefficients, residuals=residuals, tau = tau, lambda = lambda, it = it.count) } "rq.fit.lasso" <- function (x, y, tau = 0.5, lambda = NULL, beta = 0.99995, eps = 1e-06) { n <- length(y) p <- ncol(x) if (n != nrow(x)) stop("x and y don't match n") if(!length(lambda)) lambda <- LassoLambdaHat(x, tau = tau) else if(length(lambda) == 1) lambda <- c(0,rep(lambda,p-1)) else if(length(lambda) != p) stop(paste("lambda must be either of length ",p," or length one")) if(any(lambda < 0)) stop("negative lambdas disallowed") R <- diag(lambda,nrow = length(lambda)) R <- R[which(lambda != 0),, drop = FALSE] r <- rep(0,nrow(R)) if (tau < eps || tau > 1 - eps) stop("No parametric Frisch-Newton method. Set tau in (0,1)") X <- rbind(x, R) Y <- c(y, r) N <- length(Y) rhs <- (1 - tau) * apply(x, 2, sum) + 0.5 * apply(R,2,sum) d <- rep(1, N) u <- rep(1, N) wn <- rep(0, 10 * N) wn[1:N] <- 0.5 z <- .Fortran("rqfnb", as.integer(N), as.integer(p), a = as.double(t(as.matrix(X))), c = as.double(-Y), rhs = as.double(rhs), d = as.double(d), as.double(u), beta = as.double(beta), eps = as.double(eps), wn = as.double(wn), wp = double((p + 3) * p), it.count = integer(3), info = integer(1)) if (z$info != 0) stop(paste("Error info = ", z$info, "in stepy2: singular design")) coefficients <- -z$wp[1:p] names(coefficients) <- dimnames(x)[[2]] residuals <- y - x %*% coefficients it.count <- z$it.count list(coefficients=coefficients, residuals=residuals, tau = tau, lambda = lambda, it = it.count) } "rq.fit.pfn" <- # This is an implementation (purely in R) of the preprocessing phase # of the rq algorithm described in Portnoy and Koenker, Statistical # Science, (1997) 279-300. In this implementation it can be used # as an alternative method for rq() by specifying method="pfn" # It should probably be used only on very large problems and then # only with some caution. Very large in this context means roughly # n > 100,000. The options are described in the paper, and more # explicitly in the code. Again, it would be nice perhaps to have # this recoded in a lower level language, but in fact this doesn't # seem to make a huge difference in this case since most of the work # is already done in the rq.fit.fnb calls. # function(x, y, tau = 0.5, Mm.factor = 0.8, max.bad.fixups = 3, eps = 1e-6) { #rq function for n large -- n <- length(y) if(nrow(x) != n) stop("x and y don't match n") if(tau < 0 | tau > 1) stop("tau outside (0,1)") p <- ncol(x) m <- round(sqrt(p) * n^(2/3)) not.optimal <- TRUE ifix = 0 ibad = 0 while(not.optimal) { ibad = ibad + 1 if(m < n) s <- sample(n, m) else { z <- rq.fit.fnb(x, y, tau = tau, eps = eps) break } xx <- x[s, ] yy <- y[s] z <- rq.fit.fnb(xx, yy, tau = tau, eps = eps) xxinv <- solve(chol(crossprod(xx))) band <- sqrt(((x %*% xxinv)^2) %*% rep(1, p)) #sqrt(h<-ii) r <- y - x %*% z$coef M <- Mm.factor * m lo.q <- max(1/n, tau - M/(2 * n)) hi.q <- min(tau + M/(2 * n), (n - 1)/n) kappa <- quantile(r/pmax(eps, band), c(lo.q, hi.q)) sl <- r < band * kappa[1] su <- r > band * kappa[2] bad.fixups <- 0 while(not.optimal & (bad.fixups < max.bad.fixups)) { ifix = ifix + 1 xx <- x[!su & !sl, ] yy <- y[!su & !sl] if(any(sl)) { glob.x <- c(t(x[sl, , drop = FALSE]) %*% rep( 1, sum(sl))) glob.y <- sum(y[sl]) xx <- rbind(xx, glob.x) yy <- c(yy, glob.y) } if(any(su)) { ghib.x <- c(t(x[su, , drop = FALSE]) %*% rep( 1, sum(su))) ghib.y <- sum(y[su]) xx <- rbind(xx, ghib.x) yy <- c(yy, ghib.y) } z <- rq.fit.fnb(xx, yy, tau = tau, eps = eps) b <- z$coef r <- y - x %*% b su.bad <- (r < 0) & su sl.bad <- (r > 0) & sl if(any(c(su.bad, sl.bad))) { if(sum(su.bad | sl.bad) > 0.1 * M) { # This warning may get annoying? warning("Too many fixups: doubling m") bad.fixups <- bad.fixups + 1 m <- 2 * m break } su <- su & !su.bad sl <- sl & !sl.bad } else not.optimal <- FALSE } } nit <- c(z$nit,ifix,ibad) coefficients <- z$coef names(coefficients) <- dimnames(x)[[2]] list(coefficients=coefficients, tau=tau, nit = nit) } "rq.wfit" <- function(x, y, tau = 0.5, weights, method = "br", ...) { if(any(weights < 0)) stop("negative weights not allowed") if(length(tau) > 1) { tau <- tau[1] warning("Multiple taus not allowed in rq.wfit: solution restricted to first element") } contr <- attr(x, "contrasts") wx <- x * weights wy <- y * weights fit <- switch(method, fn = rq.fit.fnb(wx, wy, tau = tau, ...), fnb = rq.fit.fnb(wx, wy, tau = tau, ...), br = rq.fit.br(wx, wy, tau = tau, ...), fnc = rq.fit.fnc(wx, wy, tau = tau, ...), sfn = rq.fit.sfn(wx, wy, tau = tau, ...), conquer = rq.fit.conquer(wx, wy, tau = tau, ...), ppro = rq.fit.ppro(wx, wy, tau = tau, ...), pfn = rq.fit.pfn(wx, wy, tau = tau, ...), pfnb = rq.fit.pfnb(wx, wy, tau = tau, ...), { what <- paste("rq.fit.", method, sep = "") if(exists(what, mode = "function")) (get(what, mode = "function"))(x, y, ...) else stop(paste("unimplemented method:", method)) } ) if(length(fit$sol)) fit$fitted.values <- x %*% fit$sol[-(1:3),] else fit$fitted.values <- x %*% fit$coef fit$residuals <- y - fit$fitted.values fit$contrasts <- attr(x, "contrasts") fit$weights <- weights fit } "summary.rqs" <- function (object, ...) { taus <- object$tau xsum <- as.list(taus) dots <- list(...) U <- NULL # Reuse bootstrap randomization for(i in 1:length(taus)){ xi <- object xi$coefficients <- xi$coefficients[,i] xi$residuals <- xi$residuals[,i] xi$tau <- xi$tau[i] class(xi) <- "rq" xsum[[i]] <- summary(xi, U = U, ...) if(i == 1 && length(xsum[[i]]$U)) U <- xsum[[i]]$U if(class(object)[1] == "dynrqs"){ class(xsum[[1]]) <- c("summary.dynrq", "summary.rq") if(i == 1) xsum[[1]]$model <- object$model } } class(xsum) <- "summary.rqs" if(class(object)[1] == "dynrqs") class(xsum) <- c("summary.dynrqs", "summary.rqs") xsum } "logLik.rq" <- function(object, ...){ n <- length(object$residuals) p <- length(object$coefficients) pen <- (length(object$lambda) > 0) tau <- object$tau fid <- object$rho val <- n * (log(tau * (1-tau)) - 1 - log(fid/n)) attr(val,"n") <- n if(pen){ if(!hasArg(edfThresh)) edfThresh <- 0.0001 attr(val,"df") <- sum(abs(object$coefficients) > edfThresh) } else attr(val,"df") <- p class(val) <- "logLik" val } "logLik.rqs" <- function(object, ...){ n <- nrow(object$residuals) p <- nrow(object$coefficients) pen <- (length(object$lambda) > 0) tau <- object$tau fid <- object$rho val <- n * (log(tau * (1-tau)) - 1 - log(fid/n)) attr(val,"n") <- n if(pen){ if(!hasArg(edfThresh)) edfThresh <- 0.0001 attr(val,"df") <- apply(abs(object$coefficients) > edfThresh,2,sum) } else attr(val,"df") <- p class(val) <- "logLik" val } "AIC.rq" <- function(object, ... , k = 2){ v <- logLik(object) if(k <= 0) k <- log(attr(v,"n")) val <- AIC(v, k = k) attr(val,"edf") <- attr(v,"df") val } "extractAIC.rq" <- function(fit, scale, k=2, ...){ aic <- AIC(fit,k) edf <- attr(aic, "edf") c(edf, aic) } "AIC.rqs" <- function(object, ... , k = 2){ v <- logLik(object) if(k <= 0) k <- log(attr(v,"n")) val <- AIC(v, k = k) attr(val,"edf") <- attr(v,"df") val } "summary.rq" <- # This function provides methods for summarizing the output of the # rq command. In this instance, "summarizing" means essentially provision # of either standard errors, or confidence intervals for the rq coefficents. # Since the preferred method for confidence intervals is currently the # rank inversion method available directly from rq() by setting ci=TRUE, with br=TRUE. # these summary methods are intended primarily for comparison purposes # and for use on large problems where the parametric programming methods # of rank inversion are prohibitively memory/time consuming. Eventually # iterative versions of rank inversion should be developed that would # employ the Frisch-Newton approach. # # Object is the result of a call to rq(), and the function returns a # table of coefficients, standard errors, "t-statistics", and p-values, and, if # covariance=TRUE a structure describing the covariance matrix of the coefficients, # i.e. the components of the Huber sandwich. # # There are five options for "se": # # 1. "rank" strictly speaking this doesn't produce a "standard error" # at all instead it produces a coefficient table with confidence # intervals for the coefficients based on inversion of the # rank test described in GJKP and Koenker (1994). # 2. "iid" which presumes that the errors are iid and computes # an estimate of the asymptotic covariance matrix as in KB(1978). # 3. "nid" which presumes local (in tau) linearity (in x) of the # the conditional quantile functions and computes a Huber # sandwich estimate using a local estimate of the sparsity. # 4. "ker" which uses a kernel estimate of the sandwich as proposed # by Powell. # 5. "boot" which uses one of several flavors of bootstrap methods: # "xy" uses xy-pair method # "wxy" uses weighted (generalized) method # "pwy" uses the parzen-wei-ying method # "pxy" uses the preprocessing method # "mcmb" uses the Markov chain marginal bootstrap method # "cluster" uses the Hagemann clustered wild gradient method # "conquer" uses the He et al multiplier bootstrap # "BLB" uses the Bag of Little Bootstraps method # # function (object, se = NULL, covariance = FALSE, hs = TRUE, U = NULL, gamma = 0.7, ...) { if(object$method == "lasso") stop("no inference for lasso'd rq fitting: try rqss (if brave, or credulous)") if(object$method == "conquer") se = "conquer" mt <- terms(object) m <- model.frame(object) y <- model.response(m) dots <- list(...) method <- object$method if(object$method == "sfn"){ x <- object$model$x vnames <- names(object$coef) ctrl <- object$control } else{ x <- model.matrix(mt, m, contrasts.arg = object$contrasts) vnames <- dimnames(x)[[2]] } wt <- as.vector(model.weights(object$model)) tau <- object$tau eps <- .Machine$double.eps^(1/2) coef <- coefficients(object) if (is.matrix(coef)) coef <- coef[, 1] resid <- object$residuals n <- length(y) p <- length(coef) rdf <- n - p if (!is.null(wt)) { resid <- resid * wt x <- x * wt y <- y * wt } if (is.null(se)) { if (n < 1001 & covariance == FALSE) se <- "rank" else se <- "nid" } if (se == "rank") { f <- rq.fit.br(x, y, tau = tau, ci = TRUE, ...) } if (se == "iid") { xxinv <- diag(p) xxinv <- backsolve(qr(x)$qr[1:p, 1:p,drop=FALSE], xxinv) xxinv <- xxinv %*% t(xxinv) pz <- sum(abs(resid) < eps) h <- max(p + 1, ceiling(n * bandwidth.rq(tau, n, hs = hs))) ir <- (pz + 1):(h + pz + 1) ord.resid <- sort(resid[order(abs(resid))][ir]) xt <- ir/(n - p) sparsity <- rq(ord.resid ~ xt)$coef[2] cov <- sparsity^2 * xxinv * tau * (1 - tau) scale <- 1/sparsity serr <- sqrt(diag(cov)) } else if (se == "nid") { h <- bandwidth.rq(tau, n, hs = hs) while((tau - h < 0) || (tau + h > 1)) h <- h/2 bhi <- rq.fit(x, y, tau = tau + h, method = method)$coef blo <- rq.fit(x, y, tau = tau - h, method = method)$coef dyhat <- x %*% (bhi - blo) if (any(dyhat <= 0)) warning(paste(sum(dyhat <= 0), "non-positive fis")) f <- pmax(0, (2 * h)/(dyhat - eps)) fxxinv <- diag(p) if(method == "sfn"){ D <- t(x) %*% (f * x) D <- chol(0.5 * (D + t(D)), nsubmax = ctrl$nsubmax, nnzlmax = ctrl$nnzlmax, tmpmax = ctrl$tmpmax) fxxinv <- backsolve(D, fxxinv) } else{ fxxinv <- backsolve(qr(sqrt(f) * x)$qr[1:p, 1:p,drop=FALSE], fxxinv) fxxinv <- fxxinv %*% t(fxxinv) } xx <- t(x) %*% x cov <- tau * (1 - tau) * fxxinv %*% xx %*% fxxinv scale <- mean(f) serr <- sqrt(diag(cov)) } else if (se == "ker") { h <- bandwidth.rq(tau, n, hs = hs) while((tau - h < 0) || (tau + h > 1)) h <- h/2 uhat <- c(y - x %*% coef) h <- (qnorm(tau + h) - qnorm(tau - h))* min(sqrt(var(uhat)), ( quantile(uhat,.75)- quantile(uhat, .25))/1.34 ) f <- dnorm(uhat/h)/h fxxinv <- diag(p) fxxinv <- backsolve(qr(sqrt(f) * x)$qr[1:p, 1:p,drop=FALSE], fxxinv) fxxinv <- fxxinv %*% t(fxxinv) cov <- tau * (1 - tau) * fxxinv %*% crossprod(x) %*% fxxinv scale <- mean(f) serr <- sqrt(diag(cov)) } else if (se == "boot") { if("cluster" %in% names(dots)) { bargs <- modifyList(list(x = x, y = y, tau = tau), dots) if(length(object$na.action)) { cluster <- dots$cluster[-object$na.action] bargs <- modifyList(bargs, list(cluster = cluster)) } if(class(bargs$x)[1] == "matrix.csr") bargs <- modifyList(bargs, list(control = ctrl)) B <- do.call(boot.rq, bargs) } else B <- boot.rq(x, y, tau, coef = coef, ...) cov <- cov(B$B) serr <- sqrt(diag(cov)) } else if (se == "BLB"){ # Bag of Little Bootstraps n <- length(y) b <- ceiling(n^gamma) S <- n %/% b V <- matrix(sample(1:n, b * S), b, S) Z <- matrix(0, NCOL(x), S) for(i in 1:S){ v <- V[,i] B <- boot.rq(x[v,], y[v], tau, bsmethod = "BLB", blbn = n, ...) Z[,i] <- sqrt(diag(cov(B$B))) } cov <- cov(B$B) serr <- apply(Z, 1, mean) } else if(se == "extreme"){ tau0 <- tau if(tau > 0.5) { y <- -y tau <- 1 - tau } if(length(dots$mofn)) mofn = dots$mofn else mofn = floor(n/5) if(length(dots$mofn)) kex = dots$kex else kex = 20 if(length(dots$alpha)) alpha = dots$alpha else alpha = 0.1 if(length(dots$R)) R = dots$R else R = 200 m <- (tau * n + kex)/(tau * n) taub <- min(tau * n/mofn, tau + (.5 - tau)/3) # This warning is a bit different than Section 1.3.4 of the Handbook chapter #if (tau.b.e == tau.e + (.5 - tau.e) / 3 && b >= min(n / 3, 1000)) # warning("tau may be non-extremal results are not likely to differ from central inference"); xbar <- apply(x,2, mean) b0 <- rq.fit(x, y, tau, method = method)$coef bm <- rq.fit(x, y, tau = m*tau, method = method)$coef An <- (m-1)*tau * sqrt(n/(tau*(1-tau)))/c(crossprod(xbar,bm - b0)) bt <- rq.fit(x, y, tau=taub, method = method)$coef s <- matrix(sample(1:n, mofn * R, replace = T), mofn, R) mbe <- (taub * mofn + kex)/(taub * mofn) bmbeb <- rq.fit(x, y, tau = mbe*taub, method = method)$coef # Accelerated xy bootstrap B0 <- boot.rq.pxy(x, y, s, taub, bt, method = method) Bm <- boot.rq.pxy(x, y, s, tau = mbe * taub, bmbeb, method = method) B <- (mbe - 1) * taub * sqrt(mofn/(taub * (1-taub))) * (B0 - b0)/c((Bm - B0) %*% xbar) if (tau0 <= 0.5) { bbc <- b0 - apply(B, 2, quantile, .5, na.rm = TRUE)/An ciL <- b0 - apply(B, 2, quantile, 1 - alpha/2, na.rm = TRUE)/An ciU <- b0 - apply(B, 2, quantile, alpha/2, na.rm = TRUE)/An } else { bbc <- -(b0 - apply(B, 2, quantile, .5, na.rm = TRUE)/An) ciL <- -(b0 - apply(B, 2, quantile, alpha/2, na.rm = TRUE)/An) ciU <- -(b0 - apply(B, 2, quantile, 1 - alpha/2, na.rm = TRUE)/An) } B <- R-sum(is.na(B[,1])) coef <- cbind(b0, bbc, ciL, ciU) if(tau0 > 0.5) {coef <- -coef; tau <- tau0} dimnames(coef) = list(dimnames(x)[[2]], c("coef", "BCcoef","ciL", "ciU")) } else if(se == "conquer"){ if(length(dots$R)) R = dots$R else R = 200 Z <- conquer::conquer(x[,-1], y, tau, ci = TRUE, B = R) #Fixme: should have option to choose another bsmethod coef <- cbind(Z$coef, Z$perCI) cnames <- c("coefficients", "lower bd", "upper bd") dimnames(coef) <- list(vnames, cnames) resid <- y - x %*% Z$coef } if( se == "rank"){ coef <- f$coef } else if(!(se %in% c("conquer", "extreme"))){ coef <- array(coef, c(p, 4)) dimnames(coef) <- list(vnames, c("Value", "Std. Error", "t value", "Pr(>|t|)")) coef[, 2] <- serr coef[, 3] <- coef[, 1]/coef[, 2] coef[, 4] <- if (rdf > 0) 2 * (1 - pt(abs(coef[, 3]), rdf)) else NA } object <- object[c("call", "terms")] if (covariance == TRUE) { if(se != "rank") object$cov <- cov if(se == "iid") object$scale <- scale if(se %in% c("nid", "ker")) { object$Hinv <- fxxinv object$J <- crossprod(x) object$scale <- scale } else if (se == "boot") { object$B <- B$B object$U <- B$U } } object$coefficients <- coef object$residuals <- resid object$rdf <- rdf object$tau <- tau class(object) <- "summary.rq" object } akj <- function(x, z = seq(min(x), max(x), length = 2 * length(x)), p = rep(1/length(x), length(x)), h = -1, alpha = 0.5, kappa = 0.9, iker1 = 0) { nx <- length(x) stopifnot(is.numeric(x), length(p) == nx, any((iker1 <- as.integer(iker1)) == 0:1)) nz <- length(z) if(is.unsorted(x)) x <- sort(x) .Fortran("sakj", as.double(x), as.double(z), as.double(p), iker1, dens = double(nz), psi = double(nz), score = double(nz), as.integer(nx), as.integer(nz), h = as.double(h), as.double(alpha), as.double(kappa), double(nx))[c("dens", "psi", "score", "h")] } "lm.fit.recursive" <- function(X, y, int = TRUE) { if(int) X <- cbind(1, X) p <- ncol(X) n <- nrow(X) D <- qr(X[1:p, ]) A <- qr.coef(D, diag(p)) A[is.na(A)] <- 0 A <- crossprod(t(A)) Ax <- rep(0, p) b <- matrix(0, p, n) b[, p] <- qr.coef(D, y[1:p]) b[is.na(b)] <- 0 z <- .Fortran( "rls", as.integer(n), as.integer(p), as.double(t(X)), as.double(y), b = as.double(b), as.double(A), as.double(Ax)) bhat <- matrix(z$b, p, n) return(bhat) } "rq.fit.hogg" <- function (x, y, taus = c(.1,.3,.5), weights = c(.7,.2,.1), R= NULL, r = NULL, beta = 0.99995, eps = 1e-06) { n <- length(y) n2 <- NROW(R) m <- length(taus) p <- ncol(x)+m if (n != nrow(x)) stop("x and y don't match n") if (m != length(weights)) stop("taus and weights differ in length") if (any(taus < eps) || any(taus > 1 - eps)) stop("taus outside (0,1)") W <- diag(weights) if(m == 1) W <- weights x <- as.matrix(x) X <- cbind(kronecker(W,rep(1,n)),kronecker(weights,x)) y <- kronecker(weights,y) rhs <- c(weights*(1 - taus)*n, sum(weights*(1-taus)) * apply(x, 2, sum)) if(n2!=length(r)) stop("R and r of incompatible dimension") if(!is.null(R)) if(ncol(R)!=p) stop("R and X of incompatible dimension") d <- rep(1, m*n) u <- rep(1, m*n) if(length(r)){ wn1 <- rep(0, 10 * m*n) wn1[1:(m*n)] <- .5 wn2 <- rep(0,6*n2) wn2[1:n2] <- 1 z <- .Fortran("rqfnc", as.integer(m*n), as.integer(n2), as.integer(p), a1 = as.double(t(as.matrix(X))), c1 = as.double(-y), a2 = as.double(t(as.matrix(R))), c2 = as.double(-r), rhs = as.double(rhs), d1 = double(m*n), d2 = double(n2), as.double(u), beta = as.double(beta), eps = as.double(eps), wn1 = as.double(wn1), wn2 = as.double(wn2), wp = double((p + 3) * p), it.count = integer(3), info = integer(1)) } else{ wn <- rep(0, 10 * m*n) wn[1:(m*n)] <- .5 z <- .Fortran("rqfnb", as.integer(m*n), as.integer(p), a = as.double(t(as.matrix(X))), c = as.double(-y), rhs = as.double(rhs), d = as.double(d), as.double(u), beta = as.double(beta), eps = as.double(eps), wn = as.double(wn), wp = double((p + 3) * p), it.count = integer(2), info = integer(1)) } if (z$info != 0) warning(paste("Info = ", z$info, "in stepy: singular design: iterations ", z$it.count[1])) coefficients <- -z$wp[1:p] if(any(is.na(coefficients)))stop("NA coefs: infeasible problem?") list(coefficients = coefficients, nit = z$it.count, flag = z$info) } #preprocessing for the QR process "rq.fit.ppro" <- function (x, y, tau, weights=NULL, Mm.factor = 0.8, eps = 1e-06, ...) { ntau <- length(tau) n <- length(y) if (nrow(x) != n) stop("x and y don't match n") p <- ncol(x) m <- n * sqrt(p) * max(diff(tau)) # check this length(tau) == 1 case? dots <- list(...) method <- ifelse(length(dots$pmethod), dots$pmethod, "fn") if(length(weights)){ if(any(weights < 0)) stop("negative weights not allowed") if(length(weights) != n) stop("weights not of length(y)") else { x <- x * weights y <- y * weights } } coef <- matrix(NA, p, ntau) resid <- matrix(NA, n, ntau) rho <- rep(0, ntau) Rho <- function(u, tau) u * (tau - (u < 0)) z <- rq.fit(x, y, tau=tau[1], method = method) r <- z$resid coef[,1] <- z$coef rho[1] <- sum(Rho(z$residuals, tau[1])) xxinv <- solve(chol(crossprod(x))) # Is pmax really necessary here? band <- pmax(eps, sqrt(((x %*% xxinv)^2) %*% rep(1, p))) for(i in 2:ntau){ not.optimal <- TRUE mm <- m while (not.optimal) { M <- Mm.factor * mm lo.q <- max(1/n, tau[i] - M/(2 * n)) hi.q <- min(tau[i] + M/(2 * n), (n - 1)/n) kappa <- quantile(r/band, c(lo.q, hi.q)) sl <- r < band * kappa[1] su <- r > band * kappa[2] while (not.optimal) { xx <- x[!su & !sl, ] yy <- y[!su & !sl] if (any(sl)) { glob.x <- c(t(x[sl, , drop = FALSE]) %*% rep(1, sum(sl))) glob.y <- sum(y[sl]) xx <- rbind(xx, glob.x) yy <- c(yy, glob.y) } if (any(su)) { ghib.x <- c(t(x[su, , drop = FALSE]) %*% rep(1, sum(su))) ghib.y <- sum(y[su]) xx <- rbind(xx, ghib.x) yy <- c(yy, ghib.y) } z <- rq.fit(xx, yy, tau = tau[i], method = method) b <- z$coef r <- y - x %*% b su.bad <- (r < 0) & su sl.bad <- (r > 0) & sl bad.signs <- sum(su.bad | sl.bad) if (bad.signs > 0) { if (bad.signs > 0.1 * M) { mm <- 2*mm warning("Too many fixups: doubling m") break } su <- su & !su.bad sl <- sl & !sl.bad } else not.optimal <- FALSE } } coef[,i] <- b resid[,i] <- y - x %*% b rho[i] <- sum(Rho(resid, tau[i])) } dimnames(coef) <- list(dimnames(x)[[2]], tau) list(coefficients=coef, residuals = resid, rho=rho, weights = weights) } # R function for fnb call for multiple taus rq.fit.qfnb <- function(x,y,tau){ n <- nrow(x) p <- ncol(x) m <- length(tau) d <- rep(1, n) u <- rep(1, n) z <- .Fortran("qfnb", n = as.integer(n), p = as.integer(p), m = as.integer(m), a = as.double(t(x)), y = as.double(-y), t = as.double(tau), r = double(p), d = as.double(d), u = as.double(u), wn = double(n*9), wp = double(p*(p+3)), B = double(p*m), nit = integer(3), info = integer(1)) if(z$info != 0) warning(paste("Info = ", z$info, "in stepy: singular design: nit = ", z$nit[1])) coefficients <- matrix(-z$B, p, m) dimnames(coefficients) <- list(dimnames(x)[[2]],paste("tau = ",tau)) list(coefficients = coefficients, nit = z$nit, flag = z$info) } rq.fit.pfnb <- function (x, y, tau, m0 = NULL, eps = 1e-06) { m <- length(tau) n <- length(y) if(!is.matrix(x)) dim(x) <- c(n,1) if (nrow(x) != n) stop("x and y don't match n") p <- ncol(x) if(!length(m0)) m0 <- floor(n^(2/3) * sqrt(p)) # Needs testing! s <- sample(n,m0) xs <- x[s,,drop = FALSE] ys <- y[s] z <- rq.fit(xs, ys, tau = tau[1], method = "fn") r <- y - x %*% z$coef b <- matrix(0,p,m) nit <- matrix(0,5,m) xxinv <- solve(chol(crossprod(xs))) band <- pmax(eps, sqrt(((x %*% xxinv)^2) %*% rep(1, p))) z <- .Fortran("pfnb", as.integer(n), as.integer(p), as.integer(m), as.double(t(x)), as.double(y), as.double(tau), as.double(r), b = as.double(-b), as.double(band), as.integer(m0), double(n), double(n), double(n*9), double(p*(p+3)), double(p*n), double(n), integer(n), integer(n), double(p), double(p), double(p), nit = as.integer(nit), info = integer(m)) coefficients <- matrix(-z$b,p,m) nit <- matrix(z$nit,5,m) dimnames(coefficients) <- list(dimnames(x)[[2]],paste("tau = ",tau)) list(coefficients = coefficients, nit = nit, flag = z$info) } LassoLambdaHat <- function(X, R = 1000, tau = 0.5, C = 1, alpha = 0.95){ # Chernozhukov and Belloni default lasso lambda proposal: n <- nrow(X) sigs <- apply(X^2,2,mean) U <- matrix(runif(n * R),n) R <- (t(X) %*% (tau - (U < tau)))/sigs r <- apply(abs(R),2,max) C * quantile(r, 1 - alpha) * sigs } quantreg/demo/0000755000176200001440000000000014746436777013055 5ustar liggesusersquantreg/demo/RB-r.R0000644000176200001440000000077514223036035013720 0ustar liggesusers# Convert H_0: R beta = r to an exclusion restriction a la Section 3.7.3 of QR book # Note the typo in the definition of yt in that source! if(require(MASS)){ # For Null require(quantreg) # For Null X <- cbind(1, matrix(rnorm(500),100,5)) y <- rnorm(100) R <- matrix(rnorm(18),3,6) r <- rep(1,3) R <- t(R) P <- MASS::Null(R) Xt <- t(lsfit(P,t(X),intercept = FALSE)$coef) Zt <- t(lsfit(R,t(X),intercept = FALSE)$coef) yt <- y - Zt %*% r f0 <- rq(yt ~ Xt - 1) f1 <- rq(yt ~ Xt + Zt - 1) T <- anova(f0,f1) } quantreg/demo/stack.R0000644000176200001440000000105513033233736014260 0ustar liggesusers# log likelihood for stackloss fit require(quantreg) data(stackloss) logLik.rq.process <- function(fit){ y <- model.response(model.frame(fit)) fhat <- predict(fit, type = "fhat") fy <- mapply(function(f,y) f(y), fhat, y) sum(log(fy)) } # First try with full process estimates f0 <- rq(stack.loss ~ 1, tau=-1) f1 <- rq(stack.loss ~ stack.x, tau=-1) l0 <- logLik(f0) l1 <- logLik(f1) # Now try with discrete process estimates f0 <- rq(stack.loss ~ 1, tau=1:19/20) f1 <- rq(stack.loss ~ stack.x, tau=1:19/20) l0 <- logLik(f0) l1 <- logLik(f1) quantreg/demo/Mel2.R0000644000176200001440000000222714223044477013760 0ustar liggesusers# Analysis of the QAR(1) Melbourne Temperature Example # Using new type = "fhat" option in predict.rqs require(splines) if(interactive()){ oldpar <- par(ask = TRUE) data(MelTemp) x <- MelTemp[-3650] y <- MelTemp[-1] s <- (x<40) #Delete a few (influential, ridiculously hot) days x <- x[s] y <- y[s] z <- seq(10,36,length=100) fit <- rq(y~ bs(x,knots=quantile(x,c(.05,.25,.5,.75,.95))), tau = 1:19/20) par(cex=1,pty="s") xlab <- "yesterday's max temperature" ylab <- "today's max temperature" plot(x,y,pch=".",xlab=xlab,ylab=ylab) matlines(z,predict(fit, newdata = data.frame(x = z)), lty = 1) abline(c(0,1),lty=3) title("Melbourne QAR Model") taus <- 1:199/200 xs <- c(11,16,21,25,30,35) fit <- rq(y~ bs(x,knots=quantile(x,c(.05,.25,.5,.75,.95))), tau = taus) fhats <- predict(fit,newdata = data.frame(x = xs), type = "fhat", h = 1) par(mfrow = c(2,3)) for(i in 1:length(xs)){ fhat <- fhats[[i]] x <- environment(fhat)$x xlab <- "today's max temperature" plot(x,fhat(x),type="l",xlab=xlab,ylab="density") abline(v=xs[i], col="red") title(paste("Yesterday's Temp", format(round(xs[i])))) } par(oldpar) } quantreg/demo/cpoint.R0000644000176200001440000000135511555564235014462 0ustar liggesusers## Demo for a simple change point (broken-stick) problem x <- runif(200,0,10) u <- rnorm(200)/5 y <- 1 + x - .5 * (x-3) * (x > 3) + u plot(y ~ x, cex= .5, col = "grey") z <- rqss(y ~ qss(x,lambda = 10), tau= .50) plot(z, col = "dark blue") #Now plot the fitted points and jump points in derivative eps <- 0.00001 # Zero Tolerance Nz <- abs(z$resid[1:200]) < eps Nj <- abs(z$resid[201:398]) > eps xx <- z$qss[[1]]$xyz[,1] yy <- z$coef[1] + z$qss[[1]]$xyz[,2] xj <- xx[3:200] yj <- yy[3:200] points(xx[Nz],yy[Nz],col="green") points(xj[Nj],yj[Nj],col="red") print(paste("Number of zero residuals: ",sum(Nz))) print(paste("Number of jumps in slope: ",sum(Nj))) legend(6,3,c("Derivative Jumps", "Zero residuals"),pch = "o", col=c("red","green")) quantreg/demo/rqsslasso.R0000644000176200001440000000070113732602044015200 0ustar liggesusers#Toy rqss example with lasso shrinkage of linear covariate effects n <- 100 p <- 9 q <- 3 beta <- c( rep(1,q), rep(0,p-q)) w <- matrix(rnorm(n*p),n,p) x <- runif(n,0,10) z <- runif(n,0,10) y <- w %*% beta + sin(x) + (z^2)/50 + rnorm(n)/5 d <- data.frame(w,x,y,z) f <- rqss(y ~ w + qss(x,lambda = 3) + qss(z,lambda = 2), method = "lasso", lambda = 3, data = d) plot(f, bands = "both", bcol = c("lightsteelblue", "lightsteelblue4")) quantreg/demo/MCV.R0000644000176200001440000000244513746024036013606 0ustar liggesusers MCV <- function(lambdas, formula, data, tau = 0.5, k = 10){ F <- Munge(formula, lambdas = lambdas) f <- rqss(F, data, tau = tau) n <- f$n m <- length(f$qss) y <- f$y[1:n] folds = sample(rep(1:k, length = n)) U = NULL for(i in 1:k){ s = which(folds != i) M = rqss(F, data = data[s,], tau = tau) nd = data[-s,] G = matrix(0,nrow(nd),m) for(j in 1:m){ #remove extrapolates, if any g = f$qss[[j]]$xyz[,1] G[,j] = (min(g[s]) < g[-s]) & (g[-s] < max(g[s])) } h = as.logical(apply(G,1,prod)) u = predict(M, newdata = nd[h,]) - (y[-s])[h] U = c(U,(u * (tau - (u < 0)))) } mean(U) } set.seed(1729) n <- 200 x <- sort(runif(n, 0, 20)) g0 <- function(x, tau) log(x) + 0.2*(log(x))^3 + log(x) * qnorm(tau)/4 y <- g0(x, runif(n)) D <- data.frame(y = y, x = x) lams <- mcvs <- seq(.02, 5, by = 0.2) for(i in 1:length(mcvs)) mcvs[i] <- MCV(lams[i], y ~ qss(x, lambda = lambdas[1]), D) par(mfrow = c(1,2)) plot(lams, mcvs, cex = .5, lwd = 2, type = 'l', xlab = expression(lambda), ylab = expression(MCV( lambda ))) lambdastar <- lams[which.min(mcvs)] plot(x, y, cex = .5, col = "grey") f <- rqss(y ~ qss(x, lambda = lambdastar), data = D) plot(f, add = TRUE, lwd = 2) lines(x,g0(x, 0.5), col = "red", lwd = 2) text(10, 1,bquote(lambda == ~ .(lambdastar))) quantreg/demo/engel1.R0000644000176200001440000000133611555564235014340 0ustar liggesusers## Demo for a Plot of Engel curve in sample space data(engel) plot(foodexp ~ income, data = engel, cex= .5, col = "blue", xlab = "Household Income", ylab = "Food Expenditure") z <- rq(foodexp ~ income, tau= .50, data = engel)# "median line": L1 - regression abline(z, col = "dark blue") abline(lm(foodexp ~ income, data = engel), lty=2, col="red") #the dreaded ols line taus <- c(.05,.1,.25,.75,.90,.95) nt <- length(taus) for( i in 1:length(taus)) { abline(rq(foodexp~income, tau=taus[i], data = engel), col="gray") } legend("bottomright", c("L1 (tau = .50)", "OLS", paste("tau= ", formatC(rev(taus)))), col = c("dark blue", "red", rep("gray", nt)), lty = c(1,2, rep(1, nt)), inset = 0.03) quantreg/demo/Frank.R0000644000176200001440000000212111555564235014217 0ustar liggesusers## Demo of nonlinear quantile regression model based on Frank copula vFrank <- function(x, df, delta, u) -log(1-(1-exp(-delta))/(1+exp(-delta*pt(x,df))*((1/u)-1)))/delta FrankModel <- function(x, delta, mu,sigma, df, tau) { z <- qt(vFrank(x, df, delta, u = tau), df) mu + sigma*z } n <- 200 df <- 8 delta <- 8 set.seed(1989) x <- sort(rt(n,df)) v <- vFrank(x, df, delta, u = runif(n)) y <- qt(v, df) plot(x, y, pch="o", col="blue", cex = .25) Dat <- data.frame(x = x, y = y) us <- c(.25,.5,.75) for(i in 1:length(us)){ v <- vFrank(x, df, delta, u = us[i]) lines(x, qt(v,df)) } cfMat <- matrix(0, 3, length(us)) trace <- TRUE # a bit noisy ... trace <- FALSE for(i in 1:length(us)) { tau <- us[i] cat("tau = ", format(tau), ".. ") fit <- nlrq(y ~ FrankModel(x, delta,mu,sigma, df = 8, tau = tau), data = Dat, tau = tau, start= list(delta=5, mu = 0, sigma = 1), trace = trace) lines(x, predict(fit, newdata=x), lty=2, col="red") cfMat[i,] <- coef(fit) cat("\n") } colnames(cfMat) <- names(coef(fit)) cfMat quantreg/demo/Polson.R0000644000176200001440000000077612723036475014444 0ustar liggesusers# Toy rqss example based on Figure 2 of Polson and Scott (2016, JRSSB) # NB: Solutions are piecewise linear, unlike those of Polson and Scott # whose ADMM procedure does only 30 iterations. dgp <- function(n) { x <- 0:n/n y <- rnorm(n+1, 5 * sin(2 * pi * x), 0.5 + exp(1.5 * sin(4 * pi * x))) data.frame(x = x, y = y) } D <- dgp(1000) plot(D$x, D$y, cex = .5) taus <- 1:9/10 for(i in 1:length(taus)) plot(rqss(y ~ qss(x, lambda = 1/10), tau = taus[i], data = D), rug = FALSE, add = TRUE) quantreg/demo/predemo.R0000644000176200001440000000775711555564235014635 0ustar liggesusers# Demo for prediction and confidence intervals par(ask = TRUE) # Classical Gaussian Version sub <- "Classical Gaussian Version" plot(cars$speed,cars$dist,xlim=c(0,27),ylim=c(-10,130), main = "Ezekiel Data", sub = sub, xlab = "speed (mph)",ylab = "stopping distance (ft)") ss = seq(0,27,len=100) flm <- lm(dist ~ speed + I(speed^2),data = cars) cflm <- predict(flm,list(speed=ss), data = cars, interval = "confidence") pflm <- predict(flm,list(speed=ss), data = cars, interval = "prediction") matlines(ss, pflm,lty = c(1,2,2),col=c("black","red","red")) matlines(ss, cflm,lty = c(1,2,2),col=c("black","blue","blue")) # Now try several different ways to compute alternative bands based on QR fl=rq(dist~speed+I(speed^2),data=cars,tau= 0.25) fu=rq(dist~speed+I(speed^2),data=cars,tau= 0.75) # 1. Covariance matrix estimation using "nid" sub <- "Covariance matrix estimation using nid" plot(cars$speed,cars$dist,xlim=c(0,27),ylim=c(-10,130), main = "Ezekiel Data", sub = sub, xlab = "speed (mph)",ylab = "stopping distance (ft)") pl <- predict(fl,list(speed=ss),interval = "confidence", se = "nid") pu <- predict(fu,list(speed=ss),interval = "confidence", se = "nid") matlines(ss,pl,lty = c(1,2,0), col=c("black","red","red")) matlines(ss,pu,lty = c(1,0,2), col=c("black","red","red")) # 2. Covariance matrix estimation using xy-bootstrap sub <- "Covariance matrix estimation using xy-bootstrap" plot(cars$speed,cars$dist,xlim=c(0,27),ylim=c(-10,130), main = "Ezekiel Data", sub = sub, xlab = "speed (mph)",ylab = "stopping distance (ft)") pl <- predict(fl,list(speed=ss),interval = "confidence", se = "boot",bsmethod = "xy") pu <- predict(fu,list(speed=ss),interval = "confidence", se = "boot",bsmethod = "xy") matlines(ss,pl,lty = c(1,2,0), col=c("black","red","red")) matlines(ss,pu,lty = c(1,0,2), col=c("black","red","red")) # 3. Covariance matrix estimation using weighted xy-bootstrap sub <- "Covariance matrix estimation using weighted xy-bootstrap" plot(cars$speed,cars$dist,xlim=c(0,27),ylim=c(-10,130), main = "Ezekiel Data", sub = sub, xlab = "speed (mph)",ylab = "stopping distance (ft)") pl <- predict(fl,list(speed=ss),interval = "confidence", se = "boot",bsmethod = "wxy") pu <- predict(fu,list(speed=ss),interval = "confidence", se = "boot",bsmethod = "wxy") matlines(ss,pl,lty = c(1,2,0), col=c("black","red","red")) matlines(ss,pu,lty = c(1,0,2), col=c("black","red","red")) # 4. Percentile method using xy-bootstrap sub <- "Percentile method using xy-bootstrap" plot(cars$speed,cars$dist,xlim=c(0,27),ylim=c(-10,130), main = "Ezekiel Data", sub = sub, xlab = "speed (mph)",ylab = "stopping distance (ft)") pl <- predict(fl,list(speed=ss),interval = "confidence", type="percentile", se = "boot", bsmethod = "xy") pu <- predict(fu,list(speed=ss),interval = "confidence", type="percentile", se = "boot", bsmethod = "xy") matlines(ss,pl,lty = c(1,2,0), col=c("black","red","red")) matlines(ss,pu,lty = c(1,0,2), col=c("black","red","red")) # 5. Direct method using "iid" covariance matrix sub <- "Direct method using iid covariance matrix" plot(cars$speed,cars$dist,xlim=c(0,27),ylim=c(-10,130), main = "Ezekiel Data", sub = sub, xlab = "speed (mph)",ylab = "stopping distance (ft)") pl <- predict(fl,list(speed=ss),interval = "confidence", type="direct", se = "iid") pu <- predict(fu,list(speed=ss),interval = "confidence", type="direct", se = "iid") matlines(ss,pl,lty = c(1,2,0), col=c("black","red","red")) matlines(ss,pu,lty = c(1,0,2), col=c("black","red","red")) # 6. Direct method using "nid" covariance matrix sub <- "Direct method using nid covariance matrix" plot(cars$speed,cars$dist,xlim=c(0,27),ylim=c(-10,130), main = "Ezekiel Data", sub = sub, xlab = "speed (mph)",ylab = "stopping distance (ft)") pl <- predict(fl,list(speed=ss),interval = "confidence", type="direct", se = "nid") pu <- predict(fu,list(speed=ss),interval = "confidence", type="direct", se = "nid") matlines(ss,pl,lty = c(1,2,0), col=c("black","red","red")) matlines(ss,pu,lty = c(1,0,2), col=c("black","red","red")) par(ask = FALSE) quantreg/demo/00Index0000644000176200001440000000250513746004547014172 0ustar liggesuserscobar Demo of the triogram fitting and rgl perspective plot for Cobar Ore data Frank Demo of nonlinear in parameters fitting of Frank copula model cobar Demo of contour plot of triogram fit of cobar model combos Demo of combos function: ordered combinations cpoint Demo for a simple change point (broken-stick) problem hinged Demo for a simple rqss bivariate fitting of hinge function engel1 Demo of QR fitting of Engel curves engel2 Demo of estimated conditional quantile functions for Engel data. Mel Demo of conditional density estimation using Melbourne daily temperature. Mel2 Demo of Melbourne daily temperature. KMvCRQ Demo to compare Kaplan Meier and Portnoy's crq estimation in one-sample case. predemo Demo for prediction and confidence intervals rqsslasso Demo for lasso penalized rqss panelfig Demo for panel data example stack Demo with Stackloss data from Brownlee arqss Demo for automatic lambda selection Mammals Demo for rqss with running speed of mammals data crquis Demo for crq method using UIS data and Peng Huang method. RB-r Demo for testing R beta = r using anova[.rq] Polson Demo to compare rqss fit with Polson-Scott ADMM fit Panel Demo to illustrate fixed effect estimation for panel data subset Demo to test subset option for rqss MCV Demo to illustrate multifold cross validation lambda selection for rqss quantreg/demo/engel2.R0000644000176200001440000000244613124026717014334 0ustar liggesusers #### Demo for a plot of two quantile functions of food expenditure ###-- short version of the rq *VIGNETTE* --- use that! data(engel) ## do *NOT* attach() ## Poor is defined as at the .1 quantile of the sample distn ## Rich is defined as at the .9 quantile of the sample distn x.poor <- quantile(engel[,"income"], .10) x.rich <- quantile(engel[,"income"], .90) z <- rq(foodexp ~ income, tau= -1, data = engel) ps <- z$sol["tau",] coefs <- z$sol[4:5,] qs.poor <- c(c(1,x.poor) %*% coefs) qs.rich <- c(c(1,x.rich) %*% coefs) ## now plot the two quantile functions to compare par(mfrow = c(1,2)) plot(c(ps,ps),c(qs.poor,qs.rich),type="n",xlab=expression(tau),ylab="quantile") plot(stepfun(ps,c(qs.poor[1],qs.poor)),do.points=FALSE,add=TRUE) plot(stepfun(ps,c(qs.poor[1],qs.rich)),do.points=FALSE,add=TRUE, col.hor = "gray", col.vert = "gray") ## now plot associated conditional density estimates ## weights from ps (process) ps.wts <- (c(0,diff(ps)) + c(diff(ps),0)) / 2 ap <- akj(qs.poor, z=qs.poor, p = ps.wts) ar <- akj(qs.rich, z=qs.rich, p = ps.wts) plot(c(qs.poor,qs.rich), c(ap$dens,ar$dens), type="n", xlab= "Food Expenditure", ylab= "Density") lines(qs.rich, ar$dens, col="gray") lines(qs.poor, ap$dens, col="black") legend("topright", c("poor","rich"), lty = c(1,1), col=c("black","gray")) quantreg/demo/Mammals.R0000644000176200001440000000216312504616046014544 0ustar liggesusersrequire(quantreg) data(Mammals) attach(Mammals) x <- log(weight) xx <- unique(x[order(x)]) y <- log(speed) plot(x,y, xlab="Weight in log(Kg)", ylab="Speed in log(Km/hour)",type="n") points(x[hoppers],y[hoppers],pch = "h", col="red") points(x[specials],y[specials],pch = "s", col="blue") others <- (!hoppers & !specials) points(x[others],y[others], col="black",cex = .75) taus <- c(.5, .9) for(i in 1:length(taus)){ fit <- rqss(y ~ qss(x, lambda = 1, constraint = "C"),tau = taus[i]) plot(fit,title = "Running Speed of Mammals", add = TRUE, col = i, lwd = 1.5) } legend(4,2,c("Median", "0.9 Quantile"), lty = 1, col = 1:2, lwd = 1.5) #Now plot confidence bands for the tau = .9 fit plot(fit,title = "Running Speed of Mammals", band = "both", col = i, lwd = 1.5) #Now plot slope of the tau = .9 line xy <- fit$qss[[1]]$xyz xx <- xy[,1] yhat <- fit$coef[1] + xy[,2] g <- diff(yhat)/diff(xx) plot(xx[-1], g, main = "Fitted Slopes of Running Speed", xlab="Weight in log(Kg)", ylab="dlog(Speed) /dlog(Weight)") quantreg/demo/Panel.R0000644000176200001440000000547413124226225014217 0ustar liggesuserslibrary(quantreg) rq.fit.panel <- function(X,y,s,w=c(1/3,1/3,1/3),taus=c(0.25,0.5,0.75),lambda = 0){ # prototype function for fixed effect panel data fitting of QR models # the vector s is a strata indicator assumed (so far) to be a one-way layout # NB: # 1. The value of the shrinkage parameter lambda is an open research problem in # the simplest homogeneous settings it should be the ratio of the scale parameters # of the fixed effects and the idiosyncratic errors # 2. On return the coefficient vector has m*p + n elements where m is the number # quantiles being estimated, p is the number of columns of X, and n is the # number of distinct values of s. The first m*p coefficients are the # slope estimates, and the last n are the "fixed effects" # 3. Like all shrinkage (regularization) estimators, asymptotic inference is somewhat # problematic... so the bootstrap is the natural first resort. require(SparseM) require(quantreg) m <- length(w) if(m != length(taus)) stop("length of w and taus must match") X <- as.matrix(X) p <- ncol(X) n <- length(levels(as.factor(s))) N <- length(y) if(N != length(s) || N != nrow(X)) stop("dimensions of y,X,s must match") Z <- as.matrix.csr(model.matrix(~as.factor(s)-1)) Fidelity <- cbind(as(w,"matrix.diag.csr") %x% X, cbind(w) %x% Z) Penalty <- cbind(as.matrix.csr(0,n,m*p),lambda*as(n,"matrix.diag.csr")) D <- rbind(Fidelity,Penalty) y <- c(w %x% y,rep(0,n)) a <- c((w*(1-taus)) %x% (t(X)%*%rep(1,N)), sum(w*(1-taus)) * (t(Z) %*% rep(1,N)) + lambda * rep(1,n)) rq.fit.sfn(D,y,rhs=a) } n<-3 T<-50 nT<-n*T u1<-rnorm(T) u2<-rnorm(T) u3<-rnorm(T) x1<-rnorm(T,1,0.85) x2<-rnorm(T,4,1) x3<-rnorm(T,7,1) beta1<-1 beta2<-0.5 y1<- 0+beta1*x1+(beta2*x1)*u1 y2<- 4+beta1*x2+(beta2*x2)*u2 y3<- 8+beta1*x3+(beta2*x3)*u3 plot(c(0,9), c(0,25), type='n', xlab=expression(x[it]), ylab=expression(y[it])) points(x1,y1,pch=15) points(x2,y2,pch=15,col="blue") points(x3,y3,pch=15,col="red") legend(1,17,paste("i = ",1:3,sep = ""),pch = 15, col = c("black","blue","red")) ya<-c(y1,y2,y3) xa<-c(x1,x2,x3) # Naive cross-section QR taus <- c(.25,0.5,.75) xx <- seq(min(xa),max(xa),0.25) f <- coef(rq(ya~xa,tau=taus)) yy <- cbind(1,xx)%*%f for(i in 1:3) lines(xx,yy[,i],col = "grey") # Fixed effect QR s <- rep(1:n,rep(T,n)) fp<-rq.fit.panel(xa,ya,s)$coef bhat <- fp[1:3] fehat <- fp[4:6] xx1 <- seq(min(x1),max(x1),0.25) for(i in 1:3){ yy1 <- fehat[1] + bhat[i] * xx1 lines(xx1,yy1,col = "black") } xx2 <- seq(min(x2),max(x2),0.25) for(i in 1:3){ yy2 <- fehat[2] + bhat[i] * xx2 lines(xx2,yy2,col = "blue") } xx3 <- seq(min(x3),max(x3),0.25) for(i in 1:3){ yy3 <- fehat[3] + bhat[i] * xx3 lines(xx3,yy3,col = "red") } quantreg/demo/cobar.R0000644000176200001440000000207614414306746014253 0ustar liggesusers#### Demo for an rgl Animation of Cobar Ore fitting require(quantreg) if(requireNamespace("interp")){ ## Make sure the demo does not ``die'' when rgl is not available: do.rgl <- interactive() && require(rgl) data(CobarOre) ### Make an initial quite rough fit of the data fit <- rqss(z ~ qss(cbind(x,y), lambda = .01, ndum = 100), data = CobarOre) dummies <- fit$qss[[1]]$dummies zcol <- CobarOre$z if(do.rgl) { plot(fit, render = "rgl") cat("Now orient the plot as needed:", "Resize window,", "mouse button 1 to change viewpoint,", "mouse button 2 to zoom,", "and hit return when ready",sep="\n") scan() rgl.bg(color="8") } else { if(!interactive()) pdf(file = "cobar-demo.pdf") plot(fit) } for(i in 1:20) { fname <- paste("cobar",i,".png",sep="") lam <- 2*i/100 fit <- rqss(z ~ qss(cbind(x,y), lambda = lam, dummies = dummies), data = CobarOre) if(do.rgl) { rgl.clear() plot(fit, render = "rgl", zcol = zcol) rgl.snapshot(fname) } else { plot(fit, zcol = zcol) } } } quantreg/demo/hinged.R0000644000176200001440000000201414414306746014413 0ustar liggesusers# A Demo of simple bivariate rqss fitting of a hinge function require(quantreg) if(requireNamespace("interp")){ ## Make sure the demo does not ``die'' when rgl is not available: do.rgl <- interactive() && require(rgl) #generate the data n <- 1000 x <- runif(n) y <- runif(n) z <- -abs(x-y) ### Make an initial quite rough fit of the data fit <- rqss(z ~ qss(cbind(x,y),lambda = .005)) print(summary(fit)$penalty) if(do.rgl) { plot(fit, render = "rgl") cat("Now orient the plot as desired:", "Resize window,", "mouse button 1 to change viewpoint,", "mouse button 2 to zoom,", "and hit return when ready",sep="\n") scan() rgl.bg(color="8") cat("To try another value of lambda:", "Type a positive number", "To quit hit return", sep="\n") repeat{ cat("lambda: ") lam <- scan(what = double(1)) if(length(lam)>0){ fit <- rqss(z ~ qss(cbind(x,y),lambda = lam)) rgl.clear() plot(fit, render = "rgl") } else break } } else { if(!interactive()) pdf(file = "hinge-demo.pdf") plot(fit) } } quantreg/demo/combos.R0000644000176200001440000000041011555564235014437 0ustar liggesusers# Demo of combos functions H <- combos(20,3) if(!require("rgl",quietly=TRUE)){ warning("The package rgl is needed for plotting") } else{ if(interactive()){ plot3d(t(H)) lines3d(t(H),col=rep(topo.colors(57),20)) } } quantreg/demo/crquis.R0000644000176200001440000000205113235122725014455 0ustar liggesusers# UIS example for the crq Peng-Hwang method. #estimate the Peng and Huang model using log(TIME) AFT specification if(requireNamespace("survival", quietly = TRUE)) { data(uis) Surv <- survival::Surv fit <- crq(Surv(log(TIME), CENSOR) ~ ND1 + ND2 + IV3 + TREAT + FRAC + RACE + AGE * SITE, method = "Portnoy", data = uis) Sfit <- summary(fit,1:19/20) PHit <- survival::coxph(Surv(TIME, CENSOR) ~ ND1 + ND2 + IV3 + TREAT + FRAC + RACE + AGE * SITE, data = uis) plot(Sfit, CoxPHit = PHit) formula <- ~ ND1 + ND2 + IV3 + TREAT + FRAC + RACE + AGE * SITE -1 X <- data.frame(model.matrix(formula,data=uis)) newd <- as.list(apply(X,2,median)) pred <- predict(fit, newdata=newd, stepfun = TRUE) plot(pred,do.points=FALSE,xlab = expression(tau), ylab = expression(Q(tau)), lwd = 1.5, main= "Quantiles at Median Covariate Values") plot(rearrange(pred),add=TRUE,do.points=FALSE,col.vert ="red", col.hor="red") legend(.10,10,c("Raw","Rearranged"),lty = rep(1,2),col=c("black","red")) } quantreg/demo/Mel.R0000644000176200001440000000213014223044413013655 0ustar liggesusers#Analysis of the QAR(1) Melbourne Temperature Example require(splines) if(interactive()){ oldpar <- par(ask = TRUE) data(MelTemp) x <- MelTemp[-3650] y <- MelTemp[-1] s <- (x<40) #Delete a few (influential, ridiculously hot) days x <- x[s] y <- y[s] z <- seq(10,36,length=100) fit <- rq(y~ bs(x,knots=quantile(x,c(.05,.25,.5,.75,.95))), tau = 1:19/20) par(cex=1,pty="s") xlab <- "yesterday's max temperature" ylab <- "today's max temperature" plot(x,y,pch=".",xlab=xlab,ylab=ylab) matlines(z,predict(fit, newdata = data.frame(x = z)), lty = 1) abline(c(0,1),lty=3) title("Melbourne QAR Model") taus <- 1:199/200 xs <- c(11,16,21,25,30,35) fit <- rq(y~ bs(x,knots=quantile(x,c(.05,.25,.5,.75,.95))), tau = taus) Qy <- predict(fit,newdata = data.frame(x = xs)) par(mfrow = c(2,3)) for(i in 1:length(xs)){ Qyi <- Qy[i,-1] fhat <- akj(Qyi,Qyi,diff(taus), h = 1)$dens xlab <- "today's max temperature" plot(Qyi,fhat,type="l",xlab=xlab,ylab="density") abline(v=xs[i], col="red") title(paste("Yesterday's Temp", format(round(xs[i])))) } par(oldpar) } quantreg/demo/subset.R0000644000176200001440000000074513733130504014461 0ustar liggesusers# Test case for the new subset argument require(quantreg) n <- 200 x <- sort(rchisq(n,4)) z <- rnorm(n) s <- sample(1:n, n/2) y <- log(x) + rnorm(n)/5 D = data.frame(y = y, x = x, z = z, s = (1:n) %in% s) plot(x, y, cex = .5, col = "grey") points(x[s], y[s],col = "pink", cex = .5) lam = 0.2 f0 <- rqss(y ~ qss(x,lambda = lam) + z, subset = s) f1 <- rqss(y ~ qss(x, lambda = lam) + z, subset = s, data = D) plot(f0, add = TRUE, col = 2, lwd = 3) plot(f1, add = TRUE, col = 4, lwd = 3) quantreg/demo/panelfig.R0000644000176200001440000000547413124226706014751 0ustar liggesuserslibrary(quantreg) rq.fit.panel <- function(X,y,s,w=c(1/3,1/3,1/3),taus=c(0.25,0.5,0.75),lambda = 0){ # prototype function for fixed effect panel data fitting of QR models # the vector s is a strata indicator assumed (so far) to be a one-way layout # NB: # 1. The value of the shrinkage parameter lambda is an open research problem in # the simplest homogeneous settings it should be the ratio of the scale parameters # of the fixed effects and the idiosyncratic errors # 2. On return the coefficient vector has m*p + n elements where m is the number # quantiles being estimated, p is the number of columns of X, and n is the # number of distinct values of s. The first m*p coefficients are the # slope estimates, and the last n are the "fixed effects" # 3. Like all shrinkage (regularization) estimators, asymptotic inference is somewhat # problematic... so the bootstrap is the natural first resort. require(SparseM) require(quantreg) m <- length(w) if(m != length(taus)) stop("length of w and taus must match") X <- as.matrix(X) p <- ncol(X) n <- length(levels(as.factor(s))) N <- length(y) if(N != length(s) || N != nrow(X)) stop("dimensions of y,X,s must match") Z <- as.matrix.csr(model.matrix(~as.factor(s)-1)) Fidelity <- cbind(as(w,"matrix.diag.csr") %x% X, cbind(w) %x% Z) Penalty <- cbind(as.matrix.csr(0,n,m*p),lambda*as(n,"matrix.diag.csr")) D <- rbind(Fidelity,Penalty) y <- c(w %x% y,rep(0,n)) a <- c((w*(1-taus)) %x% (t(X)%*%rep(1,N)), sum(w*(1-taus)) * (t(Z) %*% rep(1,N)) + lambda * rep(1,n)) rq.fit.sfn(D,y,rhs=a) } n<-3 T<-50 nT<-n*T u1<-rnorm(T) u2<-rnorm(T) u3<-rnorm(T) x1<-rnorm(T,1,0.85) x2<-rnorm(T,4,1) x3<-rnorm(T,7,1) beta1<-1 beta2<-0.5 y1<- 0+beta1*x1+(beta2*x1)*u1 y2<- 4+beta1*x2+(beta2*x2)*u2 y3<- 8+beta1*x3+(beta2*x3)*u3 plot(c(0,9), c(0,25), type='n', xlab=expression(x[it]), ylab=expression(y[it])) points(x1,y1,pch=15) points(x2,y2,pch=15,col="blue") points(x3,y3,pch=15,col="red") legend(1,17,paste("i = ",1:3,sep = ""),pch = 15, col = c("black","blue","red")) ya<-c(y1,y2,y3) xa<-c(x1,x2,x3) # Naive cross-section QR taus <- c(.25,0.5,.75) xx <- seq(min(xa),max(xa),0.25) f <- coef(rq(ya~xa,tau=taus)) yy <- cbind(1,xx)%*%f for(i in 1:3) lines(xx,yy[,i],col = "grey") # Fixed effect QR s <- rep(1:n,rep(T,n)) fp<-rq.fit.panel(xa,ya,s)$coef bhat <- fp[1:3] fehat <- fp[4:6] xx1 <- seq(min(x1),max(x1),0.25) for(i in 1:3){ yy1 <- fehat[1] + bhat[i] * xx1 lines(xx1,yy1,col = "black") } xx2 <- seq(min(x2),max(x2),0.25) for(i in 1:3){ yy2 <- fehat[2] + bhat[i] * xx2 lines(xx2,yy2,col = "blue") } xx3 <- seq(min(x3),max(x3),0.25) for(i in 1:3){ yy3 <- fehat[3] + bhat[i] * xx3 lines(xx3,yy3,col = "red") } quantreg/demo/KMvCRQ.R0000644000176200001440000000103613235121404014205 0ustar liggesusers# Example Comparison of Kaplan-Meier vs crq fitting # The red crq estimate should overplot the black KM Survival Curve. if (requireNamespace("survival", quietly = TRUE)){ n <- 100 y <- rchisq(n,3) c <- rchisq(n,5) Y <- pmin(y,c) d <- (y < c) Surv <- survival::Surv plot(survival::survfit(Surv(Y,d)~1)) f <- crq(Surv(Y,d)~1, method = "Portnoy", grid = "pivot") x <- f$sol[2,] p <- 1-f$sol[1,] p <- c(p,p[length(p)]) par(col = "red") fs <- plot(stepfun(x, p),do.points = FALSE, add = TRUE) } quantreg/demo/arqss.R0000644000176200001440000000105113732374340014303 0ustar liggesusers# A toy example to illustrate univariate smoothing with automatic lambda selection n <- 2000 x <- 1:n/n noise <- rgamma(n,3,1) g0 <- function(x) sin(10*x) y <- g0(x)+noise arqss <- function(x,y,tau,g0 = NULL){ g <- function(lam,y,x,tau) AIC(rqss(y ~ qss(x, lambda = lam),tau = tau),k = -1) lamstar <- optimize(g, interval = c(0.01, .5), x = x, y = y, tau = tau) f <- rqss(y ~ qss(x, lambda = lamstar$min)) plot(f) lines(x,g0(x)+qgamma(tau,3,1),col = "red") text(.7,2,paste("lambda = ", round(lamstar$min,3))) } arqss(x,y,.5,g0) quantreg/vignettes/0000755000176200001440000000000014760373013014114 5ustar liggesusersquantreg/vignettes/rq.pdf.asis0000644000176200001440000000010213513032730016151 0ustar liggesusers%\VignetteIndexEntry{quantreg: rq} %\VignetteEngine{R.rsp::asis} quantreg/vignettes/crq.pdf.asis0000644000176200001440000000010313513032713016316 0ustar liggesusers%\VignetteIndexEntry{quantreg: crq} %\VignetteEngine{R.rsp::asis} quantreg/data/0000755000176200001440000000000014746436777013042 5ustar liggesusersquantreg/data/Bosco.rda0000644000176200001440000000033611555564235014563 0ustar liggesusers‹ r‰0âŠàb```b`â`d`b2Y˜€#ƒ'fuÊ/NÎg``+b`à 2@ýeÙg³®èØÚßÝïQz’•ý£«ßuì_]=¿ê켘zϰz‡R]X¡Ë tÛ¨‰¨–ç%æ¦ËÁ‚Œ0F%šr΢ür=d- w‚Í ,Í,ɇr8œ R3ò R¡|– ü\›5 ±(³Êa÷I,ÈIÌKAwTrNb1̘ WJbI¢^ZQ"ب ÀO å\quantreg/data/Mammals.rda0000644000176200001440000000170711555564235015110 0ustar liggesusers‹í–KHQÇçj½XØcô@-Â"Ä;ï)l&‘äã^±°ÕU¯ij^Ô!ÊMDPE”-‚h‚Q» \\ZD-¢UF«¨M‹À"¤¹Î÷ýoóQ‰-¢ãÿÿ}çÜï7çÌ9ã4Ö4«Ñ樢(yJÞ2ÿo¾oåù"þUè_Kë’==Éî~EÉ_•íó¯åþÕå=N+Ùæ=ô½Oñé@‡”@ÏPÜ— 4Mã{I< t„âË%a½Du.Rýó4îlI¸.k¯¨Ÿ"m¡þSÂzd8ÐC qM7’&h\œú(¿o­¦ßíb¥üÎ_¨®„בç×ó™ßO=ßOœÝ¤5”wDýJÒrÒͤ›Hב®!]-´€ôx&¼>[)_FZ¨ûN›kз£ÙvÛ¦þ׿¤þ生*ÿütäèw’ô /ˆm~?äŽQ|?Z•¾÷*êÞýpaÃDâ#ôÎD"ë £4žõÚé›WÞìp¯¶Ô½ø4ö õY)ï­lŸkÞŠ ÏóòŠHºßÙ`œ;CñŒØ´~î­ë“§Î}å:8_¼O¶‹çÆÏ3!4.ö§|Þõ¢¿–â*ÒZÊ{J¸Ÿ÷ýÁáðyà~Ž÷Šúœ¯çºâ>÷‹sT+æÇ÷Ûä…Ï%çy~{hüaq^›½°6‰ú\·FÜ?ßGÝp8/Ï¿/øyò¼â™Ÿ¿'lq¾kÅ|Eâ|zbÞü>)¤}ÈãªÅùæ:ªÈóùÜHû¹Bœ×©!Þ ò~¶‘® ΫWFÊãK).ʶgàò¹É§þ"ê‹õhëñ>±.¼Þëi]ˆç~ bßfÿÝu)ÿÛŸhá# øÝï.ÙòÌ"ÿȺFæÉG¸æs?DÄgäâÓÉž”ÿ©ÓGd6¹d0Õy²c€‡ô§S©6þììèM§S}ýø}­sŸ¡¡²…}½ƒ?–HŒÊFc£³1ؘl,66‡L^¬.§Âip:œgÂYp6**********::::::::::&&&&&&&&&&66666666663òc••9ËY5gµœÕsÖÈY3g-ù’jíNö󛄓Ѷä@²¢½ÏÉøÑlöúFOX6quantreg/data/CobarOre.rda0000644000176200001440000000070611555564235015213 0ustar liggesusers‹u“ËJÃ@†§­‚-(]¸p!.J©’™6mE1ö"Z«½!tµ]©…Tð²Ê£å‘|qÚþçàŒ˜|ÿ999ÿÌd2lenœB¤EzSß3Z®¥õ-¥GVæì>ŒzÑDˆÌ¶Ž[zW,¯ä,{à®É³¯ñ,z k`<b¼bK˜¼/m¢þì"ƒ¸'LöÁA¢n„xDq²â0Èûæ`_òxNÜA¾½ê“4_Mä÷)˜¾Cl _DÜE|Џe}§óؘGrkÕ÷³û óû7±ªÛfŸp*°›óîc]´o΃‡y£Oà[çÄ›.¯ Š¸ŠzÇŠé<¹Ô,’_lúb½ì{hÍKÁ·d×£+L*‹•Ø\OqÁ:÷¾[}­ÿxý%|žÌµÈã'^$Sï$>H|Úï=<…sz’¹Çð5t¦‘ni•g£Ù›óÛª@=’„"Q&Q!ᓨ’¨‘¨C¤=—•ÇJ²R¬Ê¬*¬|VUV5Vì!ÙC²‡dÉ’=${Höì!ÙC²‡bÅŠ={(öPì¡ØC±‡Zx|/ÆæOçBÞquantreg/data/engel.rda0000644000176200001440000001026211555564235014607 0ustar liggesusers‹e×y\ÌûâÇñi¥’²žÊ^è;»åz£¤,‘r¢”vŽ´«iŸfš©iÚwITrœc_#ËA‹t‹²*—ÈZt!êvîãø|~¿{ÿøÎ÷ÝÔ<ž3ê5ß±³pd´µY,–*KUgàVm`ª«ܨ Z‡†—Ÿ—/‹¥6ò??Äb 8:±Xv¾Ýì,ÄËMÛÏt#yúbQÉ@H?í]õ§Ãu$„©,ØÓñ)©žÜ„PtÌz¸¢Ø ©;Öäï÷BvXüàw¶Ï‘·&u`ob·ù†Ê¶l…Ôò¼áæY/Xî¶rÇN5ĹÚn9|äË”¶å{Äš¶Ú@â3…Ÿä…V”Ê«><‹@r{LeIÉ!ÄD©Œ¶¾YÙÓ¯ªW‘6[}h·®9b|{ªä">ÐR;ò’/Rfoøm­Ÿ‘†ÏΊƒwBâ\=D<±Éjõ:Õ\峯¡÷ÇJH¬¾] ptBÓÓý–†#b½¿mµ9øòÓ–¾ÖëCòjë’QúPÆ×Ä~ñ¨Dâ³â=?"©|ðŠó'̹ JÊũØÅ;\ç^"â?ΫΔ½GXz×(Óö($:ê®xߌŒx×·sã^@šlRa±`1¦+ÙûnŸ@\Ⱦï'—@YÊaŽë/AVYßÝ¬íØ£éT45g-r_Ú÷¶ïµ€¼±.ÉÓõGò<³B¯Üñð«Xµ÷!½ÅÞÓü‹RÚšµ ‘ñÎGôp£!v–.ÿ¹åÉ3ìÓñ²#¤É7ïŸ÷J‰âWî6£Nm†tçÕGÊ÷Ú^‡Ìiõ—ÎjßFæÉ5‹{í>Bœ»©¤º`,2î.Þ~‚ –Ú—w§Âc“=¦lUòY£r,3ÿ€ŒoÖòfm#âûµ³½œ‡,ëâ7D×"éiëæP#(mÂo ße÷¡‹zG}ž_®L7ªÉ=ª¢…1HØŸØ?£oàïèKyÉôkȺ¤î÷y„ Ь^ì–ø²»¿lÖñÎEr¥SßáÏ騵oÙ½Î9ç |°]þ.³ ʆmK!Kïµë³ó§þO­«yHÿÏö‹¬Èm©m-¿ EwävgùE¤Šì;E¶!ûyߊÛE‹ o²¸ôÃÈõÝŽÔC"gîBÞmV”m£d*!Ïj‡ ¹eVˆJúQDË&¿±á5$¡£8g!ÅǵֵaàïϰŷwçM”vÙëR¹ˆBû³WŸ “¯ß]0Y ЍO3æŸ0x}·”ÞZFÈ¿{ƒF‘=3|l„uÈÜú4ÍîÑ^¤Æl5d¹Ö"ízÓ*Ë •ˆˆYw®*q¡¼+ß ª‘þm“ÊÜ8ä貃Wšæ Äz¾Þõ«,HÖûu™âü‘Oý™‘ëáï¹íl…5ÒíΟ VyRiææ¤âóȯ–뽬?‡]cLŸ¬?ß…Ý[Êt9ÕET7¼Q ®Y-ëú—¯.\z`¢šÒ-㦖 5ññÀPîn§åÙyУ¡•Ë\ î73‹Ûöù žœñ8±±ÑÈuƒÔ•"G;3D,ìy:…Џ´oÿzýù)dÉu®3ŸÄ §yÔïÂcPìK|îÆ»åzWÑz#r.ןÂüýÈ*¶ø&t×DÎrÿ²„.Oì^ á¸\¯ ™OÛµ_##ÛDœ”§ŠÂ”‚[™kvfÈ2Ü4ÁÊi(ò.®ýaý_È¢mÝmÌH©}?³ÅBÿÏŽEÎ3Ý‘­S8¾êøCä­®™l©…ì/öª7ûµ*KÿÊbÈR=ú7ÏòÞÎmx]}éb»Ê‹nã ⎫yÑ1œÃ|ÉýíÍïHÒ2±³¨Rþ7“šÂ\(Ïý:yqÒÕ,Wò‚´‘™%¼¸ ò#ý_œþD̳Ca]›8Hðú1`V‘)R-xb`ŒÄ=U—žÖ,€¢Ïý5Ó€Œ†/?•ΉØ3–ìiÑ/!QÉzq²æ6dUu­-y¶ˆ_§ü£ý5Rî]R[‘‡XÝY)k ®iÝù©+ /»gÑsz/Âe®ƒœù~péhhñBÖÔ©F…|ÇŽU×A¡V5öIüT¤F]}é©Â¾æÉÂ-Ó!UW»?H# )Ví°LZ‰¤‰I ¹¯ê¡\ùÌWЋ”sÊci>¸‹ãù ’ZÍùÔ>CnÛ{`¤ ŠW:s w ¥ÏùTëÍdvßÛx^uR>öe·™ˆŒ²êZ«Z9Ïxt×Îâãæevû#êsNžiÿ#ÄåL¨8¬ë…MÝ™&§s;¾¶Zu×*/ʶ_Qžé#•‡C߬AÂ9îÊL[¤·lXÚoØùêSX‰öhÖTËN ò;÷¾m™ÏC¢EÕìÑ’:dÍ;v49B„Â…×[_©(Þ£³òJ`;"­\RœWCü²àfõ”•ÌhÖ¾? ‚"ó°rÒå'»ï—æ“÷Wÿ/­é=e³ì¿î„¥ib6´­K2„ðÙf޶)F̧O]ÆÃ/AzÝ­ó™ÿ0HO뻈º {"ÿÔØÌ@Ñs`Ñ¥íUPD´-°}ˆí“4Ÿ ¶Bxu­vCë.ˆ¡bÁÒ(AÔR_¿ænÄW~Ê >·Üé×®DˆyŠçæÚˆ<óçô¾s<ijÞü°¬!ü~ÔÊ_èÙ–7–݇¸×´Õ$°Á-ñO4#BfäÉ;g 1ÿ˜¨b§.q#æ.†}r4¢«'tûn„hråÜ÷÷ˆ ™ÐÙ»±ÛO6^S‹Ð‚ëÂeZˆÕÓ0Ç~ïžS[ϬYŽøšîßÇ]G·©:-òÄRõ¡.†Ë¯v¿AÕ%áz“ÌŒÿáŠÈ…½}òv.û´¨©Ã÷:·‰.Fˆ¿œc`糑 • šOoAÔÏ-Ç÷™"¬0ìÊ]¿0ÄYsôsKÕ¡øiæÚ9ê©H?Òø^¿~,Ò}¤m=·'CìP8²)Çqʘ@«Hv2}kU]…sÑËÀdDœ¿²7éN?âm¿6_™¢Ž¤ö†ñw"ò‘ñàˆùÄ\ì¾R]º¦’w~ÈW¤ËÓ'Y#†xÖº÷ÝTþÑ¡r²Ë»^îúìDžKÖ$¾D[²f^ži©ILõÓ½ Oó¸küjüÙéî7lD¬VÚQ½Æ™ˆ uêˆúÅ¡}‹4½Œˆ§ÞW‹^øB*Ë+U_§ Ç>Òõ˜7$?V—¿ÕÆ@‡\y¼¯1o‹—õBº»ÿÚœJÈqƒ¼g:R—L»ëP!EÌôU³nÚO†D±áÙ­—3>e‰ÃèÕ*òO«Ùá@Î uóä­Çµšë`÷ÒÒ"“,«‰H›»ÿí8)öwòÒÜÅÁš½wÇsö.í”Äý0dóä…#þ<ñ¾9£ïC¶ð«áæï#šÇ;kʧ(,»3ä•Ìa§|U„YŒì«+@h¾ÃMg‘ijì¼Öü€¨ zœÕÝHêwjxŠ^ynÝ©¥Ÿ]4)™‘¸¡.ëó¤ðØÔ ø9´×<ÑÎ&oo<ÏÁÎj[éÉ£§»6­GüìgÌÚ†MþÔ5Eî„íWççL¸ )GçM“±âŽÌY2þòâ"nuáQ}Cùæ¯þdJ$nc}mrFì{ÓÜšç!µG´›| ÙöÙÙÁ"+(E c«P$'Œ*}~WŒ¼¼‰ÒÙoƒOªÓW´BôålÑVÝx~5½¦‚ Rù|¡ú7âMZŒÖÏZÏ*ÚŽÀúFýÑ»Î#â펽¯ÙPh7z7ÝÎEÔ Ó†ÈXH†[? U‹¸Û3Çš-‡R;}ûxG"k; ¬gó![ât}rû#HT…“*fžƒô¢û¯{+jI¶Êt£ÿ`@Ò„íþ§1¿¢FÍ¡ËÏj’îÊVéŸüÅèsÛîØØZAV³¹,÷Jë3ž/ôkF¶w›ï¹ 4òºB Š^é.B4Ô,`]qèð!wk–AÙô2ñÄò!{'/­hÓa„Ue?tøš¾em Æì;rôw„'|­×è:ŽDÁŒëïb¸È¨-ëòLlCŒãê®&Hœ2º©Á.iÃO.öžcŒ`}M­5˘ïƒý}p¾î÷Áû>øß‡àûþ=TÍçeNC›,Y\²xdñÉE † 1b0Ä`ˆÁƒ!C † 1ØÄ`ƒM 61ØÄ`ƒM 61ØÄ`ƒC 18ÄàƒC 18ÄàƒC 1¸ÄàƒK .1¸ÄàƒK .1¸ÄàƒG 1xÄàƒG 1xÄàƒG 1øÄàƒO >1øÄàƒO >1øÄàC@ 1ÄC@ 1ÄC@ 1„ÄCH !1„ÄCH !1„Ä~7ÔÌç̡ӜN†N6:¹tòèäÓ) “jæT3§š9ÕÌ©fN5sª™SÍœjæT3§C5†j Õª1Tc¨ÆP¡C5†jlª±©Æ¦›jlª±©Æ¦›jlª±©Æ¡‡jªq¨Æ¡‡jªq¨Æ¡‡j\ªq©Æ¥—j\ªq©Æ¥—j\ªq©Æ£j<ªñ¨Æ£j<ªñ¨Æ£j|ªñ©Æ§Ÿj|ªñ©Æ§Ÿj|ªñ©& š€jª ¨& š€jª ¨& š€jBª ©&¤šjBª ©&¤šjBªÑ–0´% m C[ÂЖ0´% m C[ÂЖ0´% m C[ÂЖ0´% m C[ÂЖ0´% m C[ÂЖ0´% m C[ÂЖ0´% m C[ÂЖ0´% m C[ÂЖ0´% m C[ÂüÕ’ÿèáëüýJîûÚžn!n³¼ƒÜþs-Ø÷×ño*ûj/quantreg/data/barro.rda0000644000176200001440000003221711555564235014626 0ustar liggesusers‹­¼w\ßÿ?žRZ„´ËHööŒx+ ‰†Ìz¦§Š–g…ì™PZÒÒÞ%%Eûj/í!Q„4D’P¿ç8׳äýú|ÿùu»éê\ãœÇ¸?îÇã\×ëµ{“ÁRAA...n.naÆoƟ㹿Æ1þ 0þñSétk..žÉŒþðöSà Gð©Ó(Cí;áœêaûRO!*¿Gánœè†|ÏP‰t€à)Ÿ¿[œî·ƒýœvÃÝöÇüQtbó£Ãåw6.ƒ+íøò·î"ôÆ÷JÞ˃àá‹¿»•σWüÙßÂ^BŒ{á$+¾r‚Þ]¯Ëoÿœ®)5¶ @°Ù&Ûܽ&òp™ÀiI*NØÅ[¼ì%D¯“ÿ¤Ó ®'Tyìowó¥’þsà¦vü$¿¥¬×%W¬/! V ^º7ù–Ÿ²¦,/µ7\ÓŸ¿;¡¬ž*"²ënÌ… ôsKs<ƒÄí/ÂÊlçc.ñ–N¾<ùÑîÙï ¶ä¸›hTøµ Üs¯+ 7^gSÀekô® ¿NÓûVÿòõ‡k‡SûnõBÔÙÉ Î]›»‘–wg§îÐõ0„¨sÛ¹ƒ´/C¢fÇ°× 5‚:ßùÊb$M ë ûCô¬3Ÿ’k‚Á¢kr¤…±Ü;Ÿ¯¯Üº•žI;GÁƒâ ¼j%ò`ÙwÁpm „ëÖõ‹KéBØé =vÈAèšÏ ¿6,„Û*ßWq7‚§@ÁÌ)æÎÓ­Ñh­ Á}šǺÀ;i·ÒŸoÇ›k^š® á'¯.ÑŸa3º'yX@pѳd³‰Mà庑Q¦g R>QÀ'¨q–\)¸ôOºöâ%Ü Y´oH“¿ëjª•U«à¶È±ñË“Á—ÿ”KÚâÐþy²ThÙ|ˆ]6#z‰ D*§?v V&®ï7L=¬Ö ‘´ŸgO¿ Í<ï®­ ûv/«|DÜIüßAœHV»0ýY5á>?ÇpJà).üεæÁK%©ÇaUxJx´$Ͻ°ô*P?nïì¶ '|õß±ñ ¨›«ªŸ´&n]=ôÄ̺©áWï űÈð§rÙ׉P)÷wÐ/ODY½[6u"áHÙsY¤  \b´'Ç\—½%vBpXBI’JõS•a·~¼5#nT»-x’¨N\+tµN5…“[|¼H[JKÎ{Ï㯠7Ód'ðü"ÂÄòt`7xn r»Ñ¸#—á¸æ'x­x=Îáh áü…«½Ñ°Ÿ°¿”g|R®nþyåºC[S_õ¿•î×’¹êòjáŠçŽ}UÄýLM·KÓ‚ `œÇ³Åû­•Ž_ .å?—Kë^Jx–~øê¡( ·Ö _ä‡ÄÀƒ½éKRÀ[ëÔ¯ÁÃp_=ðblÏ>Â[{rŒ‹ÑQ"P&hêàâ…à˜¯ø%¬µÞ]ð@_ì·ÒVxðóèí ­ñkOKäê¾uvhçQâ´Þ…D9~>ˆn›¶UÔ!êWÿƒƒ:à| ±¤·>â+®š·Âæl«Ê0ç… UO÷žÌz¸»'ÎðM‰%¸4í³šz ’TÔ×úEøp—Šèé4×ËUÉKš‚ÁUj÷ÉÊ .ðúöäøÔiKÀ½…¶•[³¼Uåí¶/ÿ5\¯E“&Bœ}¯‡³~8)ž[xºÜBwÎêõçð}-Å`$«°:ñ±9\[À;ÎZœÝnçíz çŸÈ¼h]X^uÏ‹B­›gs©¿å¸°­Ú÷wxqóHš‡žÑ’‘ìn½lË¥HêàëTž«hz†nDE’Ωˆ¨/­BÒbw\=Ó³ÑtWxaƒ¤ß#r hZÒŽÕ‹»ÑôàˆY‘æ£i[òkÏÎD2Ü+æE~AÓb¿H~$Ÿ®·d–)’1ûæ­%¤Œâ?NH)FÒß$vT»º!i›uïbhû‘ÒìòÀš’ŸújjøT$s4œ(¬jG²É¥[÷ø Ù÷^_^MàFÒýJ^•ç/"¹P>šSÞ-¤°òïÊ ŸHÎõ§­ØJ#$QÛíR/!¥ä›iÚÆ¶HÁƪ:S¢É$))RÞu!9áÓÙîr—ÂB_Ç Ï#Ù^w7+õ|$kÒ¯¸ü2É$Ÿ?6!ùéãÿ¨—!½AÇç7ÒbymÖû#hzëå‡RSÐô+—•5?oAò_UyÊã‘ÂZôÎ:R¨Z®Wm…ž=ÖýLMG²ô‰G®ÎtFÒ髳Ÿ"Yïô¯Â‰EHZ0vöTÓ$cûÒѸl’9üî¹ó½`$§Y( =G É~¨p\1q1’™âÍßvH)Ú*\w¿%c­¬¬œŠä£jº7¨J ¥©‹ _>Br’ÙH±)iûÚn¤8dQ’õýR75®”Ÿ ÏBŠ»&Eh5 ÅZŸ×²s‘bêþ[kô' …޳–oÚêÒ–®@šc7RJ”hå>áƒ+oY-á‹”–}Yvß)©J¼öªÉ éœöïFÒMú{‹Ñ]$Sß´ª±z’ÖWðý 쎤ƛÈÙÑ^#Ù{2ÈÈ•áOÓÍi‚®HJ>ÐøšàO$-ëPZ’üIÕìú3+ÀI[Ï»¯|ŸI6¥˜»eE †÷rf7¬FÓ}[¦žÐy‰¦‡{(«j7Ÿ„ÅF 锚,cúv$9üû«“7ç>93ƒ_…¤–í]ì¦û¨lF©‘Œuü/~þËH&ÕD-ùâ!¤¸hÿÞ´x¤Ô˜ ÌÛÏÿ„'.;_¯1Ùy®æ|ËsåÌ÷lÞÚÈXa`%sŸºäRwu_“‡ŸŸÜ(Â{æA¡ú°|íkm˜B+Sœ˜_ðËÙŽ×í<ýfˉ3ЂŸ+gÏL댟õÌU–(C± k"øÁ2ÛxøíñÞ—ùãGÏ3$­X^r½N¬Ï€7ËPÇ{ |c&ž3Íî _ðù!l¿þ󬉠ËGÞ×ñ£²iêõyðž¥ÖqèÄz÷W³}L3[Ü‚xÝ^,×;%Ö ˆÛqx*šÐËö3¯Ãšqãú­†5Í&È>Q’¬j ¬ßÆZÐÄxº~¸ °]ÚYf4ƒö ÖPqö•©…T0ä7² ,é¶Cö'Ö'…¥®4äb¿Tbû½Áv-`Ì”}ªñýu ©¦UN¿Ù 1nr°½_°/@9Ó;T[$ˆŸëdŠQ o°þ/¯±ÕX¿zl¯¶ûLC9@¶s}&ó èÃòe?‡Ä:Ùqó‰yº,~`µá¸øŠã§û£ƒ´Æw'޳>/}3Y C÷2Ö¼fãqãùÛ±Ÿ_³]ø|Û¿0ÌÆâÂ8ùʶçù~   û«—íXø^ÏT,q1Ñ-é Ø¿?±\ÍØ ìuÑDBãØz!nŒç!¶C ûå++L@'{~Òn08ÉŠ0¸‘xèÝÁ"ÄÖ‰ù±äà«-âe™S~°NÛ»³¬€ßÌYåR?{Œ00¯qøð!Æïc¬·;æ=Ò¿¹W ˜_H|™a?…cÿ'±Ä_YL³œ(åob»’ëxcÿ“q„×C¼ú,‚‚—Øo%,BøX¿<&Ü#Þqâå9æÝ2Ì ùv,á#û:Äñöãë3Ë=+ óG¶cs9ó§1Õáõ_²ãÞc?Ö0Ãfã]¸ÏŽ#ϧ˰"qéÃz `ù+ñøÆY-Û¯Pü€uÞàxÿ„y;¯÷ãäV–;wÃwÌÓEQÌŒýØMØomx]Ÿ/1î°|Lº«ÿ oqèbN»ë#©7‡óR?3íy»@;þ7û<Ç {H¼åOÃüAʯW‹×yŠùœô;™/Y¨ÛQ¥ÌCm„ây›1?à¼ó€gÈÄü^ÍOB°Þñzñ¼lóˆ3LOrä!ó2öÆ|/„åoÇ~jÁ|ôóhŽŸj uáæ¥Zl§*ŒŸ~ÌŸÙõÃõÃGìnœÏȼûû½ã± ã«ÇßÛ#¬èÄ|ü•EÛ|Љy(ãÌwd~(ešïl'a» àxÆ|ñÇm/ÆM+¾¿ûãæRß8ŽJq>êÀzãz„³ßñ ç_XîaŒ³o8ô`÷±§ãèùóË æÉ^ïï0OþaÛ ‰°Ü: Ù¼ ïØ¼‚øp|}ż[yh˜KÄ‹°œÑlÿsøÐóƒ ö;9ŽÅ^Åó_Æþ#y›Ä9ÉÏiØO¤_ɸMcíN|ñåŒó¼–‡Œ¿DÌ·$Þ‚p¾=‹ï7ÂrŸÂë’úTá¼Aòæ,7ù|0~Ž\¯×…ŽXR¿ŒòyR.Ò>q˜·[p<åà8%óö3ÜÇò¦cü‘|ŒõóÂ|FÊCÆ}1Î[ä|$ßüEÚ´»ã?Gr½h¿äyo¤_ïáùÈó>œ²qAž'ýN>GÎGò"éÒnÚø9òHÊIÞ†óE;®{Š1ß$áü:o$^¢°}HýÈõÉ><ߎù„ì›2I`;çà¼JÖñØÏd‘y·€Ü*¨À|’ëYRÿ˜OÉx íãå'õx‰ù˜¬OÈužŒ‘›ÄÏs|$ù€ŒK?pŠñÈñW Î/$—âø#×'ër]_9øù\§'ã¼@ÆSá˜>‚ŒÒ_ÕØ^aX/RÿJœçÈz§ÏkÃá%6’ö#ãù6æ‰\¼égGX.ŽÞ$_ùŒ9’}7QXoÒd]Až…óYWb>åØôS8ö39NÅu6©ÆÙâ<˜ë-’OH{?Ä}_·d}CÊåÉÀóbûñAÊIÆ;YW6â¸"ë2O‘ø!ñXsŠ©€:‡H¿“õ‰«ì?²Þ$ù¯÷9äuón~¾ï{qJà¸#ý›ãè ‹¸¡÷MØî7È:¼Û›´ÿÕ1|í>/¤Iž%Ï“ùÄë#ì?O¤ŸHüqKúŸäoÒnd}Jú' ó9Écd>$ç!óçG\7“zfá>˜Ì'‰ØÞ¤¿É|Y2&—b’}T–§÷$È|SŽû2¾ p¾!qIÚ¯–´?^¯ ç7/E˜wÉú™Œ[’O²±dEöd]@ödŸG⦠ËAî—‘8ÏÇ8®Æ~"÷ÍÈú¦ï_<ÃûõdÝ‹ëú쯧¸Ï©Áó“ûפ¾…8._àz²Çuê{õb®ÛS±¼dœôb\ûI˜ï8ïSDV--Zy‰ìÔú²bó|$|Êu¥Þ ‰re®ö0@"1_vÈ@">Jë?—}B½§y4eiHx…h¯Fã„~ÎUàF"ŸãfØžöEÂ.‚3Zv!áºÙ —ÿ¹„CvÍî5IE¢̺ò ‰¨ó®ü¥»‰nR׿˙_|Rf¼ê£2$æáÞùNR‰¾XI{v*‰Æ5R„ H…Ô"·Þt$2@QÓΠ#± sùq«Lئ»÷û%¨xÌÊ´\^$v¾Õ‘ÿ‹)ûmÃt½K}Q÷p©Qi{äރĦn{öè5[LÅKåp)î{†Ä¸øß4¬^Äb&;ïÕ½„Dç–©ßÿ–ˆÄé4K>GbǺ'Y!µÄ¨p©'H„§\%ÆÌ‰„ˆd¹m8É9ŠKkèß³ ‰}N ¸#•Á±¯˜êë=›? ±I??OàØ›³¾WõSzs0=K78r‹¾i¡T7"±¾Ä}чl‘ø„¥]ÜGÆ ?çÚJ#±®Â«±FöH\Pò´¾Ö$6tý̾ïÓØ€·ºÞÑa$>Žj4K…s^\Åj™Ò¢÷H|_Âlâ‘û–Tsõ EâS|ûlçk ñ‰Cý3ŸUrŽbmó¬g>C¢µ·m2«_ jž¦´%cl‚ÒöÍ E¢fêmw¼Dl†¶š"ÑpnÍ««opŽßÍéY]üˆƒQ ÝN3­‘HCùI‰m$œBÛ|û¾ÂZƒfN¯HR™è¤·ƒ?N<¾OGôkÖŽH?œS8µ°2œconÈëxQg½iËV\@bßÂ;æÖ«pì!ÖZœQ©†Ä.¾ë¨ö|'$»lNæMæFb/2…§Ø0üìªMþ¨9âǧ+O]žŒÄJLªf‹>âØ‘Ä‘H†¯Ø•ÈY#óßSOÞ(<2ÞÖݽëËÚd^â6rùôuÐ:‡ƒ+±B-¾¡û‹9úŠß¶VážoœxTÜPâÎðKþ3%µ¨¿’úÎ|}sÚ;$vjõÖèç‡9úpä\ÛVX¤®ÅÁ—˜¯°ðWÝHlþ”x¿½܈éïR-üŠ„÷Ú.IMÌäàT\´eïñdz8ñMâsã—Ä­øŒŠç‹$rGžÃñĹÕg¿âd‘¸ÚÛñOÆ…qü%>;ˆ»óú'$¾Á00˜ØÍÁ±Ø²uÕ7¬Gæ‘´Ÿ/2#”3Ƽũ³äÍ%®ºÁ‡Yïvu…ØÂ÷ ’âª'c!¥é´ëÚ׿áuþVÑ*ý«ðmšk }%|È.qŠ×¿¸&x‹JÀ`ýŒ÷|\¡ðûzú#Ù Þriýô8¹¾/µÕžµ%†?çìá1;õ¯•‹ù’ àË×'îÔe¯¡Yâ½—³Ñho·^}%D)èO⟰žt©ùâÙÕ U)gæk ½%öKóuˆ$–qýf?l_mæz”º7CT9˜@Ô)X¿˜}’(_ú±²²1²¸ýVÿJ™ƒTŒè‰¤O@ÓPoww{1Ñß<¸ïz2ìýÖrohÿ9èòÑÌž2n!qÂâš…½ÊàÃ%pßS(DýF>Ò9 ¿;+íÎÓò¡aï‡Hí£eÄ+Ÿ¶Ùƒ«¡/òèEQ'sè-Û_þª“x«xj©øÞ#Ä—ï3ùö¥µ qÙ'~ B|ßìSß~³>kT5-ûMk¦§Â>•E_›¥âáµÆÅ.¾ D~Dzú³ûûˆ—nšÒB«W¹!³ÂW:AÌ2ÏÀ†=P7ë’Ù7y}øäl½äåB$ĽË]àÑxØ´#ʈà6O¹UØ *šÇ—DÍ$`è §¤mÖYè×]lðPó|ŒV/rN»o>|"¦M_s‰I==ègf»e‹‹úhÞkl÷×›ÁãAÝ÷»¹fBvDùS½óêD°US¡X@·ü4%ûDj‘pÒÔsD«¸é˜ZOdïÊÉQÍ‚Šþò:þÑÿØ:/µ-œâµkÙ](¹Ø/¿…ɦ×F[•Õ›ôîî=cu6Z»¯oÌ…ðƒ¹Ýºk‰”bÛi¯Z®½ó4CÔ i2¥CÎL€GôøÞ›â¸áxÊÿ•ê%Søö¶VvvöøîSéúë7|«=l"{Øúg /Šø0ƒèêV‚c9ÄçM Y_Ç9!þ¹W Ï ¢‰‘¼~eN× o¡‚Ô¬‰)Ë¿S®íÚnÂëÀÐò…1´Uoún aK}¨:|šª«½šÌˆŽ®û’ù·ˆ–Ui÷ÓÚ7AÃùÝ*OC}®¶ò£“ªˆkÊÔ¯ùŠÄË·ÓÒ–"ѤõŸê=Áct!}…‰æÅ—  £åÞòqŸ¡_o°ëÂú¢BV¤[“8ozìè?÷iÀà³îm¿OÁ)ý!¿ž´íÕ3îø™# ¡@¿„—ÐL£õ0 ^7î Um‚êÙŸíRVOD2Cf½b.!.±½£nD¬à¶üñHd¼®—Í4u¤x7¯ºäɤð-ÁñÙ²§ðJb‘ì䨑ïÜhwvŠ€?î¯Âò©“‘VÄKs>?ÂІo¾H‡ˆ^kóM¦ððêz“x#¼™§Ó¾ÁåÕ*Å‘)p¯$&ñf‚ÿqûÛŠwu ÷u¾¸.Ž*Ùv°üððÇ}gÈþ=ëâVž†Õa¼:³!a§ðÕãÖ@Ì£ê³WSZÀïÚuÏïïàÏïÇm?KÜqyïÓ†š Ô{I΃;:·¿î8:¼«îÎRƒÈ惇h^k’7°*9î†PÛ~Ð~Cðê¡ón¼ÁýrŒ§PëkN¿w;Pš¹Ι)tŠg ¸ßkµÿ>¬¡“m%iC ®÷C ––퉺>Ÿ—? ¡¾OÖ²rà›ÓýéçÆßœý¤ûj‰‡û!¨¯íöÍ㯠ĵpü%k.ðÅû'¡Yj+Å—ó‚³HöëphçìWvf™Y–c7R¯P\çGæÍ¾ ±¹jžL3x qš3Tsº{ vãïî5ZÐtÁøñƒs€ûwlçp;–¡ ˜%îA¸¿èÊÍ«!ës“ieÁHHðžÉ¼“ãŸp¼o‚ß v‹Ü«Ùßû|3DíÖ5Š5ɇXö>ªï%,…!ìSA‰²çˆ­Ê!¼ôA´pkg”løà¾û>¶Csõí‹ÁÇïûu;ˆÀýgó˜vbß™Gœy‚Ÿoªž3ÂC—1Vjå<_‰ ˆfþžë XÞ ÷¥²ï² š w᫜ý°8üþò!m^úÇR[ <œ*mV]€àÁÊ»u©à–-üiŽsb¼Ä¯ˆ6pXÛ>ñqAzþk!äS19ˆÆú†2aöª⽿Ï;ÚÑ>o§3W€`>—ÔôbqÎþ&¹¯w÷´¨ÛÝ _½Œž\\n‰¸ï¼‰õö÷)~{¥Âë¿Òf„Þƒ¨†#Uëû&Ã5ÿµJ¶Ÿ¹¾‹"BÀaV@Ã-7Q< OºD!Äž$xÈjÒ9~%㜌_–ص7Àã÷¶yü†üÒÏà‹íã»–0`…‰âÐØÅˆ¨‰àw¿©s݆ýŠ÷ñ¢su™ž‚øÀ+m³´CH“H^ÂÌ ±,¸œƒ,8~DòJÜ­ûÇ'&Ý…{Y Aîï*ìÏ‘Zùì„2¢Ò1O¼ñ~OÒñW ‰ 8ñHÆaœÊ!¦ç8ûOÑS{žÈ€$¶}9|X²×CŒr‡¸2³©Õ.Öª$1û7äzkѲC %*ñ‘»‡ ”-v[Ð Ùä¾î«ó; y²Þ–}K" ¨¥»iÜm{H,ÜxÌÕ26Ó¬í9…ßâïFO‚Ÿ¤®ò'õ@”|q*Nýºfö)WC…â³{!ÎP½é'¯ÄšPèïö!ЪòŠ2;uÖˆÁåŒEõŸAz³ÀŤ  •bƒZK#Ô óÊá…âý—Oݺrë6;× þ„š¸môÂé§¡ZdÚôO!ã½²Q~åìùéPnÄ4õ¡ ä' =m—å‚¢­w ¶ä CÕ¢Mî*NnþZû h„+”&²òÞ­û3]{1áêSEãsö*ò8B~[€ãñ‹wBýœ“=Z³ ‰;YôHÄ.È«êzBÈ݆ò%§ËµœáéÕ²†3Å? kGÇëO!oû•#»,á+]h`²òf®0·2ƒª‰Náç«>@iDš±sÖ$¨ÞÖë»/j× t×|½þ¥ðóE‡ éU–›d‡Ô›|ì -2‡ú~Ûñ<~Ô3¤fDÔ1³Ñz¨¯ÛÇÈ4¯ n`{üžÌ Шüžá¨kspÏÔs„ZfZPo†új¤ðæÃPþiíµ{ΞPÿ…{åšY6P«ÿ'wÊkÔ¹¯»´Yä7$`ž©ñÝü8ÿÄDÈp´Úë ±ë 7·&¿ócӻʓ!ÜÛÕ¿èC¼À´g÷ùCLÃà=J"¤ÉfƘK€\7YKÒ[{®„Ç}GÒ5ÖB4ÆOÜ/*?õÜEwÝ÷û-!ßÇ9œÍ†Â™LAU»ÍÛܹϡp°WÚÑj$b>KL/{ªb˜—òû—OÇ5ò2âs|„ :ô¡ÍÎþåPܼõhmóC(iØõÌÙ|¤þa&WÈlyÖÊÈÃò=2 °€RÐ!ûV®yÞ¨èK7’„ÂÃ̉Z b÷ùÝSNÜ„¼BË?ï¿€â".•/Ç&A¹öVFDÞ†³eÌ3PtQãÈC¨î½Jì•2C&PJ÷ëN,¾O­Ï¯•É;oÜ^é  .?Â;â lžÞgù–Pù¸ØÜGSd½Tอ&¼b¸Aɾ‚ãɧ6@õöF ew€FõåÞOÖkBÕêÌ;6&Ÿ n/³y µ¬2`+dÿ8ý1â^jâ—‹‚gá9Ž¿§Å;S4·B‰í¦¥¡¶ÄHÿÒÇ(ef}³fÈ{óÙ6'wjê>15‡ÊÇ*¯-{Èùn®š6•ØÅÐ(ÐåRñèÔ"—Û¥ûÿ@MAb OóK¨/ªyÃ_u̲aü¨9Ù¤w|[TÊüéž y*/wž›æ4°èH˜QÆÞN>¬5²í~õó×B¥¦ó”í>†Pë1k‰xo>Tã¼Tbô{ #Ä ö›Ti›PÍ5}ùh þô~³4ÅÇÊânxŸ 9xß±&“xû¡jª€~γo"2\Zð rYáèü׈{‡!×ù¸žÈa¢HÝò3®TÍ<%aW”MwL…Ü;•Îñ@z•W}çÐ8ÈÎJ¨P=¥ÿÖ$`eµ9.ÒÙÎ?aÅy ˜ô×P Io™°ŽÇ¦¢¢Y´µž8² $‚ÈW¿NCh)¿ÌÂe½°Ü B! -¨»çZƒ»à„—ïøéÂgÇ½Û Ñ™9a%äàyÊß^ÖK„ÇŒª@ÔÍÒЩ»“ëd qšw¹êŸgðLäNêBÔMvYÝîK&ÚÆ•n˜»?™žá¼O·“Úö2B-·Žû±‹¢onùøÛÿ,D…²b˜b~îƒD\·<>¨ÊœÒÍ÷~ФBþ€RÆÇØ4pÀöÊcµÔ«xȼ:G’ת'8 aÂ‹Î›Æ ]f}ªÞí ê¤ý .ƒèjŠ’çÏB¬¿¸àdHd…Ù1ß1ŽYyB Öû!vÿÝ9Okf‚ŸÁIRÉO *rÕÊŠ>Sˆf¿ºbÔ$˜ð©6¼‡@õb“\Ê("Nª;Á£pÏ’ AË®3"91ê*Žƒ×œMsvüzÉEíMÙÛáæ«hïÇì \Ÿe8x(8ù¥p#d™±„ïo.íט i7^‹Ó? qæÉÛ»âךŒó}„ífäÂCfµ3'‚êL. ÉÌ,Í{2µnyŸÚyÏM»\w•ƒÛD¤÷•r‚Xér:$2Ó±ñˆ¯ • Û»²{Xœâ²™ÄÕO|óo3‚ȬÒ§Y¾¨ì,÷]¾'±³ž?‡¤3BªÓgo€àÒ&få‰/™è#(ÿ2_9rÕ*>ÇõkävVõϱ••N©PßGF1šc!Ñ9PÊ,£{Ê9÷=c•«9ãçìÆ‡3®d¶EïK¡•Y• ƒ&ü~¨”ÝrÞWW ²ž€ÒŸ¬òXmî̾ï)`÷œq»ßýç¾V‘†rV{µŸÓ·è—W„^fm%¸®ÏÁýt¶ÝPÃjsL¡÷eäw~“¼ºÞ<„§RìïAƒ¶^xê±z.ä2ÓS'°–Ñã¬>þ#cí€LüòU#f'Ow¬í€yŒß+vàïÈï1`{¡¿¿SùžG¸þ?ÊÎ÷\ÿ?ÿ@îÇ®1Û¶IPË(ŽO6qÆc/ð÷é Ì,µÚq}f÷ëùó#NŸ²P‚¢… ––ÀÛe¬F›Ôó|#Þ7 ÇeLY-‚7xŸå3~ïK^O`þ¶Ã9ZáѹzЃ¿›lc.³'ºÍ/OB*$³¶U–sô*Ãý×3ܶà~÷3]Þeô“Ŭ€fV»¸²š™&tK³6Š8óÔRÏJ¿Ø%Å×eEˆßk=/3™úÎûÕÜɈ) „³q•,·ËB'®ê’~3*Ë!È­b%ˆvdmT@I« ‚6VxØqÖÉÃï¡Ã1Þº˜mÿywÎwYÌÙ%Ú8÷{mg*s{IJèŸçmY°Ð«gÞJ¼†Çœû¶O_³ÚìáÈø)ÞG0pÝðûò®óð¬õU­S¥ ´k³ñ¶ëzGŽÕô4(bçÎs¥cæ%×}Ì /[Î8s[{/£žî*»®ÎẹQt¾e³*¸áï#ÖýP›(_òð÷*ùÌ®wS$gþ|fmt°Â|%gþj|ÜÇJû[.ÎóõìºíŸóFŒâà´ ŽâýÒnÿ›W9Ïíaï·üs>××™íKÚùý_œb}²ñwöoþþ–̨V ‚ÖÿWÿ)w;þŽ÷¿ž‹÷ÏÚO%j>æKy޵ ®üŸó¾ÃvëÀße“ßgçßâïL¶š_Ùe:ÚÙùýŸyZyY ´ã}BìùXÛ’ã¡u)›÷H»å°óäXy8ckÅ'—¸B[-«/Yo;ÿýÎû¥Ì ÿ›ÐÖÃJ8¤@Õ~ÊrÆù‡ZxU–ÇCË\txdÄèVC×}YfE62?)7û»sÎù¶g˶ÎëÌ„$v¾ù/{þs^‹'œñ¼éŠëŒ$fºZvï?ýDÚ+”ýÎ?×ßà|•oyü«±qùÿAÅl>Lc¶yÁàDÿaE@µéÔŠÎûnW|"u=þ@àz›‰Ïõ¼‰;Búö{üúˆŽ ¾Ï¯¤Ãq«¬íÃü „“¼ÎåC““ˆ ¡/e*W!¤‡¹¶w$/dûè‡.€HcßÝÛ†‰ã çm—ºEk ÇN|`Bûü.CÚ–Ïþ8&>šœ­ôþqÍóýÐñ¡"«?Dyþd"À~y‚?øn3ðö9m%Ü:Îi ë©o`ÿÔ¬‡‘œùÙ},b‘²‚Ë£2£Æg*–&îì6úÖ&» ’®Î³Ý¶ rðweyÜ*ÝOì7À÷K¿)ž5Ü™ô·'À×èùõî¾ùÄ™ Ÿ'Ò7ƒ ïÌ '-aܰo5¿êMÂÿ”io¬b˜1ÉmÖYw޽½.­Œýzˆ¸î–ªá$ {EËÅe&êe,åÄœ .É7Tû?FU7˜ÈÞvD —@õ¼þ–åÇÀhpûuQ}Âk2=ìÖÍw`2GðÍx•„·ÙÞkñ:·ˆËr¬FÎ9¸ÜôœFøiöRÂà³Ýóú³2Î{¨BÜj«°óp Ü®èÝ’à¾~}WÂþ0Âk‘Ú‚øÔDèoXÔ? !Ó§œÎpñt‰Þ݇óeÃé,©hÅ>_Âãl@«ö*m"ñóLјÜEÄ]Ö¶7ܶm¿“ZN„IõÙÜB$¬Ù¼VÎÓÎ\}yÏ–X¯lèÁQm=î‰à!Çþ3¦ˆ0‹{‚.J°µí°€¸=þ®écâjê™æÞňØÕÓ¹.óþ!ÙûDÄ­4 cåí³|Kw7á–ûËuéª[Ä•%Rº s‚ ;07Xz‰ Ro_èms&nI²€Û—Òâ›ò.@àË´ô]„OÆÃ>½¯» —Y±Évb¶Äíí[ã{2ÀFhóßjD¨è…ªüIàüD0?Ú¨…VÛ_ýfáU8pá¹²í[B÷“pœÆþÏo¬¨–4frÃDÉ:é°ÐŠfG,LMl–âÁxK[çï#£ÿ6ùÛräo^ Ú)ÎÃ|æVvtÎ%Sš‰9àÑàüÉgzØÚŠ3š`alA=6²¾µçF;;:Õdé…èÖ'ŽV*„¼°Þ”F7§®ZOndÜE·¶¶âœ™º‘Æja¸þÝü0ÕÊp7Íf!çê„ÖV¦Ö#Ã-fT«‘Ù&l£Y9Œ ¶›ÿµÿªõ¤ùÈýZæ qF.ï>Iµ2õ¼ÍŠfJµ‘V—jušj5jF>]ëQâèÚ[™ÛŽ^PÏô¯ù÷Q-G«¿ÏÜÒ˜j|’6rÇF†B£ž˜¸ÑÚÖŽj¸›a Î9±MÖ–æVÿGx³…¡ÕâÕÄzD)¡-öT;š%Cñ‘U·Z[™ØÓ©¶#‚kR-©£—àßA;e~xD3!-ÆU:ÕÔ~Ô-Ú I-GÆ¢zVæv4C;Æz#S ­§›2ÊM¬-ÌOŒ6Ó:õ´¹Å(/›™[ÐFÄÚÂú/» l>lÿ—–‚ÚléF<£M£Û< G·ÿë²>÷§íi£Ì2AÃÊdÔBŒ¡µm´;ù4èT«¿FÇGtа¥Si£tФڌº™_Óšn2jòÀ^š%mä’ã)c9ž2†ã)c9ž2–ã)c8žò?9ž2†ã)c9žò7Ç †´‘s4åSÆPþ(S[ÓíìGÓ; PÆ$ÊÿJ£ŒjO?F™uLR ü›(ÿ+)pNNÒ¦ÚØS ™—¶Ø3|κýïÊÿ°Õ–,’É“‚&T;êÂ#tF~`Œ~3ÿý0pƒASquantreg/data/uis.rda0000644000176200001440000003761411555564235014327 0ustar liggesusers‹í}|TÅöÿ¥ˆA,!Ù”EÔ¼1"É-i”ŠÒ[è ½“J¡ì&6ìíÙ öÞ»X°ã{O¥(ØEAE EDžåO6çÌùÝsw¸›ByÿÇ~Äɽwf¾sÚ÷œ™ÝM†ôÊÓÉ;FÓ´æZóãöý¿Å¾[6ß÷¿fûþµÞ÷¯EÙŒ’}ÿÞ÷cÔ¾ÇïëãóÕhÁ—Р€6Z´ñж‡6ÚDh“ M†¶#´ í mhS Õ¡5 5¡µ M…6 Úth3 Í„¶+´Ý í­Z­¿®Í‚ë,¸î ×=á:®³áº\÷‚ë¸Îë\¸Î…ëÞpÝ®ûÀu¸î ×}áº\÷ƒë³¡=îŸ×ýáº?\€ëp=®Âõ ¸$ …ûƒáþ`¸?îûCðze];î…þCáùPx> îƒëáÐ8Ü÷GÀýpÌ3ž„û#áþH¸Ÿãòày<σç£àù(¸?®GCÿÑp ÜãÆÂõXè7ú…çãàù8x>î‡ûãáþx7žO€çàù¸Ÿ÷ó …çùùÐÂ<ùË¡ÅqëÚ_ã `|Œ/€ñ0¾ÆÀø‰0~"ŒŸã'Âø‰0~"ŒŸã&AÿIÐôŸý'AÿI€7 ÆM¼É0n2Œ› ã&øÉ0n2Œ›ã¦î?ÆOñS`Ü7ÆM…qSaÜT7ÆMÜ©0nŒ›ã¦Á¸i0nŒ›ã¦ît7ÆM‡þÓ¡ÿtè?ûÞ 7ÆÍ¼0~Œ›ãfÀ¸™0n&Œ› ãf¸™0n&Œ› ãfAÿYÐôŸýgAÿYÐ6à̆q³aÜl7ä› ãgÃø90nŒ›ãæÀ¸90nŒ›ƒãw.ŒŸ ãçÂø¹0~.ŒŸ ãçÂø¹0~ŒŸãçÁøy0~ŒŸãçÁøy0¾ÆFB óvæ+-Ì[X-Ì_x´A 8…«¡¼"À+¼"À+¼"À+¼"À+¼"À+¼"«p‹·p‹·.ñ‹bÀ/übÀ/übÀ/übÀ/übÀ/übÀ/übÀ/übÀ/üÀ/üÀ/ÜÀ-ÜÀ-ÜÀ-ÜÀ-ÜÀ-…ùKaþR¯pJ§pJ§pJ§pJ§pJä+ùÊ@¾2À/ü2À/ü2À/ü2À/ü2À/ü2À/ü2À/ü2ÀŸøó>àÏÜù€;pçî|Àxóo>àͼù€7ðʯðʯä-ÜrÀ-ÜrÀ-Ür·pË·pË·p+·p+·p+·p+·p+·ä­Ü À­Ü À­Ü€»pîÀ]¸ wà.Ü€»pîÀ]¸ o!à-¼…€·ðÞBÀ[x o!à-ý.Ü…€»ð‚œ ·p+¯ð*¯ð*¯ð*¯ð*¯ä«¼JÀ«¼E€·ä\¸‹wà.ÜE€»pî"À]¸‹@ÎE€¿ðþ"À_ ø‹1à/üÅ€¿ðþbÀ_ ø‹1à/üÅ€¿ðþbÀ_øK à/ü%€¿ð—þÀ_øK à/ü%€¿ð—îRÀ] ¸Kw)à.¼¥€·ð–ÞRÀY 8Kg)à,9—žðü€ç‡pýÉо?ZßßZX—?ZXŸ:´°N´°^ÿ…Ђžü×C røïƒäñƒ<~Çÿ´ —ÿ;hQ¾=umä D@ ò@ÞÈy oä €¼7ò@ÞÈy oä €¼7ò@ÞÈ9ÏA òVA r@îȹ w䮹«@î*» 䮹«@î*» 䮹«@î*» 䮹«@î*» 䮹«@î*» 䮹«@î*» 䮹«@î*» 䮹«@î*»ä®¹«Aîj»ä®¹«Aîj»ä®¹«Aîj»ä®¹«Aîj·ä­y«AÞêåpÒSwþ#Ï7oÙyKv‚ç-x.‚ç'ÙìüE°sŸâ¼¦›‡Ÿ×ðs<·Áó¼NçëQœï <¹ ?ƒÉ›ÎÖ‹÷³çI=Y¾.ÄéÍίrØü=Ø<¨×> §;çâúÌdëÍdý{ùCÛ—ûCw†›ÉôÙë‡W­7éçC;œÃúe²6ÍÛƒÙçMe÷³Ù:³ü¡Çõ`çz9ÌÓµÐq“ÉýÚo_/›4-ô:²Øy¢àëfç<>³~.ÓCk³™\9ìy.;íªˆ>&w/-´½{1{ù˜¾»²sážÌ¿xœ©®ÓÙ¼8O&»ß] œŸ2Ù¼½µÐöîÃÆYLïÝ8o1¿Êö‡ŽoŸ"λ+ì-®PØ©»Šy…âüÜç›=ó …<œŸóGÎYÌ>‚Å·3ê7Çz|Wßø8/*Þ§èÁÆg©ôÄø‡ólks9(ôœ©²‡¯#Ká‚ñCºËz2µÐ<’ÍääüÙ“Ù;CÁ+YŒOÒy3áó¸Èfre*x!C ]gtWÔ-‚ÕC<ÎUvSå)^õd-Ïsœ_z0œlE>ãx9 û¦_‹ç9-tÁó&ç{žrÙúrù'Ç:úoKÿRÈ!?Ö¿—?t>áõ—›¯ËT蛿o™­ÈkBáoÝ™Ýxý”£XWÿþëÛ E=œ­¨‹{¹Ä[š‚O{(êÇ¿¢nay6׺OE]ÓéÇq¶Âî=ùT°¶«‚Ïsûž§8e*ò%¯ß¸~ù>/Õ%ßf)Ö“ÉäËQìÃRù”׋]ïÿg+òkªKýÎëTΛÜ^œwøþ¨«"_f(êáŠúÛ‰Çs/&W¶Ë>ÙÇ?ÿÀäÏTÈËשÒOWÏä*ö£½õbwEÀ÷­}x½¬8¯Èò‡ÆçñÜCÁG=ý¡õÉëw¾äûU½—¦ÈÏé ûòsŸ*ßBÛÝïz)Ï™ž“XþÁÏÿˆÜ©µ/ù9$Å>@ßRׯ “Çáç}’.ç#œ?7”a_¢Ýg6?¶ï Bûwíë]ªW6ÿ±ó™œ;亻°ø=uóçgµ»íe‘órÞö1¹ MTÜO`ëF¹:²û8¾»úë`_/¾¤~,v?éÛ zÁõE²õâç¬"˜½2úßY~ûºu—ù0~|~»;3ýóÏ}¡?¥³~ˆ—òñ û^7JÿËfñßéÕÇ®ãn<“#‘ÍÓ™ÙÏÇü?‰ÙOú7øS›çÓ˜Ÿwàqœo·‡‡Å È+?§ÏÖÁë?´KˆŒûl=]Ø:;°–ÛƒŸ¿t±Ë+ý³³b=‰L¾Žl^ŽËý¯—"ßwp±o<[Ÿ‡­óïSëì¡ð£n Þò0|¾¿áû&cg]œ¦0ýeŠÐûúDE]“ÆäéÁð ¶î…Ÿ'09Û3»$±xÕ™Ü&ÓWgÆ?Ùüüü<áe2ÜH&gËóÜßÒ~•Úî«Þx*e¿ö¬þÐûTƒéIž#¾øPDJ‡­RþNLOÓS³_¶Î'&®þ&¿§œß`úŠdqÞAÁ ‘L.Îט'’™ÿùìu²œ×gñl¾Ž þHQìg:‡æ5©Ÿ,v¿«b©,{²ù#˜½tæ/Ø:øç™»2žáç±:ëïcú1XËyölöɃ¾ÉÏZ–æ¨oøù×gªâ}M­çK#t^‘üÖƒùM…};0;ð:ÈTÔ+çMž‡2™Ÿv`ýyÝØQÁ˶>þý ëß^qÎÂó1ú]š¢Î㼑Æâ4ƒñ°©¨wº1ùRÙzME~5Yáû°…?s?LQ䙎L_˜~Ú3ÿí ¨»:»äI]›ŒGÙ~RúW«“;²¼Åù‡ïë`;n™¸þSuowfŸ4Ÿ%±ý¦ÆäÓue†‚Ÿ"ûu[¯›8˜Šsþ<ƒé¹£¢¾NTøcbÿh*ôìQÔc‰ 9Rìõž<ÿ‰dúÕ×ü{aü¹¦èa×7ÿ¾™£~=£ŸËx^¤Ëø~d=Ÿ+Ö¥¼ŽP¬#2Ìù"\ì¥í>7ýðûªu(õ±\Ç8ÍEŸ.úRúWDx~æ¶~7»«üÞ5®"\â*ÒÅ#\ìåoªõjûŸO‰®=µðøÇÕÞ.zP>Ó]â Áv‹Ü¿\*ù”ñÙ0qû°òyDýø?\þRɧôßÈðò…«ßhaúS¤KܺñqDÃü¡Þ~XÏ|èjÏÈðò®2Ïh.úÔÂã1Uœ¸ñ—RÏ.v›G#Ô3ÜøŒ3´zú³ÏF6pœ&‡É‹®õEd˜ù¥ž¼v]èÂÿÊõ‡Y¯©äpµ{Dxó„»~W>‰/ÃÎkaòBØùÏm>·ú°¾û‹ˆÆ=ëo×õG6ŒßÂÎOaÆ¡+_†Éƒõ]Oظ‘ ̬7뛇¶s}÷±nv×ÂÜ_¹ðm¸õ™«=ëéß®û¸úÆmDí£5оã7‡òü'Üýk=ã²ÞãÂÝçk Ä s\Øù¬¾çaê%ì󔈆åçz·ZãÖ6¾V?¹Üú…»®píÞP©¯†ûÜ5N"šÖÏ7]Ÿë~ÇÅžá¶aûÛ¾¶žr¸Î£Õ/\ýE«ßºÃå+·ó>·þ Ž#­añÓP>ª¯ÝêënuT}×ÑPþ ÷ý›°óvDýüĵ.Õ—W¬?­~vt¿0ÏÉëÍ׬ç\÷hõÔsý§¡ùå€ÅIù¿©óecy©¡÷ë[7ÚNZã-Üø®¯Þå}’$…¿%(ô”Ú¯ãÚ+ô¡¸ï&o¢ËûI ~äßgò…¶“ô›xÆ+|}\Þ_ITØÃí|‚ûG—Ðó;øÓ³ÿøWæ³dJPØ+1´Ý5EþâùESé›åq¡È'š ¿hbÄþýW s_åðWþ÷3< ;ô`òr»$)îG*ê‚öŠõDºÔ[© ¾Šp©¿"úr«ƒ"íþ"ÇuQä[–·åçá{(ô’ìâ/‰ûçUGüÅ+äˆpY§*Ïòï¹½ÍíÙcÿ¼¥±|鈣Ž.û¾ö¡ùÝQ7E¸Ô;šÂ/#öŸïC¼ß2~Üêt•q}:â²}h^Ö¼ç79¼úPSÔSJ¹Ýö%š‚¯{¹Ôñ žPȯ’ÃõsÞ¦‹T~£ÒwÒþǹÖó|\ÆþíÀãƒçÉú¾ß ¹pÿì ˆÓHÅýEÞWí·øï0uE|èü§iû¯{Ý>¬Ü/yBû‘ÊžªýºŠ/”qìV/F*êCÔÚ~ª}§##BÛ Ï4——›œM=¾±x]§~cå w|Sé¡©äùoïn]®?¨¸hjyÕËM?M­‡pç ×]oC㺡ñÝPœC%çâצ²÷ޝú^7v= õ¯¦òÇúÆg}íÙÔyöpÍ?Mí¯Úÿ›*nÂ]g}ýö`ç¡Uê:÷`×óåϧ*_ê}Ñâσí?‡:.Âå³µO8Øû’C½o9Tû‹¦òÿƒw ÍOüû_áî/U{¸ñÁÁÖËÿêë`éõpÏG‡Kû¿*÷ÿ*ÿ±ó{Nö=âo‡§ý·Êùßn§ÿuž:\ä?TúöÁ~Ÿµ¡zoè¾î`Ù±©ìÒP¬ÇyWXŸÿ9ò:ò:ò:ò:ò:ò:ò:ò:ò:ò:ò:ò:\Î1Ž´GÚ#í‘öH[¿ÏÄø•Á ù½EüÞß ];ey]‹ßžš_×âß#› ív=æ í¼†ùÀüSêZþwo§l¬kÙßA} ãGÀ¼Ã¡ÏñûÙ#Y?9NØÛQ(7ÓG2“G¶0ÏpÍ>ÿd˜/×o—åÿ¿ÙŸkv=àßQEyQžÜoŸíŠíHæ=ÙøsXþí4ÎošÝ>8_"‹'þw‰qœôKhÿE=êl=x¿«[F3½c½ƒ¿ïóÚ ÿ^1ú7ò,ò¢ä'ðƒîŒ¯'±¸¨Ùù½3ˇüïdr!_âºúkv>Ìôt6«‡0/gü:€Éò¢^º°ü†ùù ãi¢f×c ÓÚåèÄø×dvBA}aü¡ý ûxô_Ôk.[·ÉêOÔ®kr‚Ýß{0?™Îøe,Ëk:ÃÁÚ¡,ǰ8Äߟ1i¹=¡\èOSìvÉêhkeL°ûÇ(èz§óÛá >À¸ÏaýÇ`=ù9ß~ù!‡Õøû-Êjìõy<«Kæ‚<å0Ï,a¯Gæ?f—í?–é õˆòöf|:ŸåYŒ§2¿]ŸÓXþIe׌ק±º>ëô³\³ë¯<ßno܇Ìßhïq8X׌=,·Ç)Úy}~Ogýt&ÖGËíþsÛ`^(®±×1 ¬^Ãô6q£Ý~ÙŒÏ1ïÎ`~…òc^ÇúëŠq,OŒcqŠõ)ÊüŠÕÓYÌ~XWàýNÌ?å~e£½ŽC}Žgû¶°Žù~{}8ÆåC;5ÌÃæE>F?@y1Î3Ø9Úc àNL°¯wË,.0¯ûíy7Ÿå7äÔ+âwgùí‚ò-`q…ñ†ñ3Ö;G³×Õ8ÿ9 ëéÆcÓìñ&ϦùíùmÆF{ž¤ÛýxÑcvþš)ìóÏdçUпPØûc¾˜Îx¯ò À©+¤Ä¹×ÛåÀz~v‚=gû$´§?úÃýBˆ—b˜Œ«fqŒzÅúý4Pa¿æõtñvÞ»Ò~>‚­ìïÿŽíË1o°óŠÙ÷þƒ~1žöóÌCüüç\g2Û‡ ¯ÎB}ƒÿ–Úyù óⲺ„,J#íûÛ%Ùyy¡ê¾ºö‚Õözd6ô ôý@ÿ’.öún&ô/|Ìž¯Q.äçŠvýâ~õªAuíù5¡÷È“Xž¹à#{:™íÏÊaÞ±ì\ óÙvþ“ã‹@Uvÿ*É·_4»Ÿœ ~WiŸëBÜ—œú)H°ÇCæ©d×7â,Ùh÷WäÅÀsöºóm«·æ ;_˜¾0/ bq†ý±®©~̾ßÄC ã–@ÞšÅö¡EËíþWö›è·óìdv΀ñrVƒ}ªÁ>‹áºy}¹]>äѹ8žS`<â¹?ÿÉc~‰r£~ü{Àÿìù ý&`_Ÿø`R>«sóí<€yóÇÜ|û¾yý묪§ÛÏ ÷ÙëQô3¬1¿²÷ŸPîQLx.ˆ´ïË0Ÿö°s_·´‹=/ÀzÚýLž/®´ÛÝ`û/Ô'Æû4¶.¬s1ñ<ýnöÆÐç?óíõM©°×SÅ+CŸÿعVªâüëLŒÃiìý¦¢;æu‚ÝNˆ—ë­¨±ï;‡1˜ÀÞ_‘|›`¯»“Øþ¶t¥Ý¿g%ØyºŠÅ+úGo¶¿,Ã:#Áþ~Æ,Œƒåö÷5º±ýòÄÒöyð<åÄçK íï'bǺeÑj»žËVÛí…ñËÏп« Îøíû'ôë*ð÷ü•vû㼨'ŒÃîìÜŸ—GÚyùvþvž›“`¯£ñ¼åÆü>3ßΫ2ïáú…ýüëgÜßT&Øíy*0Ýž‡ªóìñˆëÅø1Å9Ê¿4ß¾Ç:ÀŸÝOÑç1»²óŸŠ»>rÙ¹ÒÆÈ»d»`>Æúë8ã<ÿÂÎ…ñ¼ëÔ/®{(ãôçQŒß˺Øë,?ðG…f×çB¸_•g¯°ŽÃê¬C‘ßÎaç?¨O<ÿA¿ZiçcôÙÌ.s–Ûó÷xvÅÏð}™íç?+Y}o÷·)|Ÿòž[Èü ÁžOŠØùÎpv~‚ç„sÙûÊÅìýŸV¯#ŸúaóØù:æÁù ÇEËíõØ8VÏÉóŸ.vþÌΰsâ ~ûû ¸ß)‡üQ~…íü§©¾w÷ß>¾©û5ö{¤ûûé‡j>7=4t}õµgC×}¨ìŸ7ÖUz¨ïõÖŸ ÿ@ÛOõj¨ž×ø=Xó†kÇÿ_ôîóÆæ…¦ZÇK¾i(/h?;Ô¸MÅ“*ÎT=u¸Åóáò{¢¼úò|Cï.ùùpÛß„›g×üÓX¿9Ô¿§íPíšZo;55¯.<|¨Ö‡ç?³㤠´úHyÍ÷5íV‰˜aOuóY"¢¿Š}qÝ­‹„×—6}kÞí¢Íóë^~nU‰ˆ?÷´ÿj~Œˆx¡´¼û›kD̤Âä¨À7ÂóYüÉç?ú¬ˆ™“´óý‡Þm?ky•ï=ὺuiþ·cElS‡yv—ìßöùäÖ»§¬1íÿ»aŃâèËR[µ|òL?¦ó5óyZÄϹnú¬=»۟Y“=IDï? Nx=yzb·{E̱ýûœ"^$¼ý÷&ÜÙM—׈ÕæäWOû²ˆ}«àÙWÇý$Ž/m3ÿÎwî±G•Ý>ø‹$qì¦äŸ2ß~R¶ÞoLþ5ªFx;Ío·ðî™RÑiƒûmr ðÇ•6ÿÇLÝyÓ³KÓú‰˜7[Ÿökñ^µþò˜UwÝ"Žó¾õæëYOˆ£@'l-,-º¹ˆÎ/¾&¿s–ˆºåÞUF梌÷œræÉC_í-¯¿ýø—®èY.¼5½ÒO>óaá)~èÇžg¾(¢ÒÎôÿñâ×ÂÓöñ÷Òµ"æêhï‚K爘';ÄÿÔö>7j}ó»_MDŸ´ö’e뇊ãckb=ÛŽÇ¿Ûî¬+j^í^Ÿ\¸nƒˆ‹ÙuÿÌ OžŠuãŸÞ0YÄ¿“|OÖ‚ËűE£‡ž°ó%í{8«øÚmÂ{åç²Ïí.¶®úþ™Þ¢MÅ{}®'ŸýÄk"þÁeEÓnûXÄ ¿²i±ˆ»²MçÓÖO“ò!Æìz(nü’Ë„wdü|½÷M"öÝ,O`ùi2>â^{Q¼xö8Ýar·^ Þ1ËžÚxsŽôŸ˜»Ï¿è»½ÿÑü‘yÆÌMrÝÞ‹ §.ëò¦ô[ä騧þܱñå|ɇq×>êßôC†ˆ^ûư–'·’¼;ðå{§—H=E½Ûïùs-áͽíê7ŽÞ*ã¿uÌâ?Ö<¹]ú'Ú-rà”ßÞÞ§ÉW0?ògìùc n‹KÑ1GÝSøéqhYúåsÊEÌ·[Nx:áá-4ÿöñ[+d¾‰ý½ýcsÏX%ýù-æô³*~™çQÖÿ4âåõ|/÷ò³„çÍk+#KмÈ×qÚ¼6åÌÏ$¯zû”W~xÃÅ’/¢–îùò‚·_¤hGב??Ë5íVˆÖux"þówÿ(ˆo/Ú®3·¾ÔWDLóÆžt¦ä©'ˆKôck×™Ð\ò`t‹‡O»ûÒó¥cÆ_òÅ«¿t•rÆ6ëû¡çŠEÂóÈÕcº=w“8 ꀨï>mT¡x¼ãËÉE´•þ‡~5²Ù3{J§Éû(7êÇÛ¥ûìíïï±%>yêíOd¾B¿ñf,ϼ愓åú¼Éê­úPx:•ß‘½çO¹϶{_|ñÓi’ Èü³ço^öû¢í›¹ã÷Üy¼äYô¬_°þñ>ÿÈ'ßßœ%b:åy¯{·Zxó¾û¨ó–û„g}õ²—öÕMÒÏ.>þå ßçÊü;îÌǶÜö°¬;Pn´;ê£íÕß/|¸Å±Âk}õÊ£›ß‘Ý7¿ùVî™O¼3¿Üûåò+e½‚qÿñÓ3®X1SæåèwnÏ+X#âo½úä7û&J?9e€vÇú ëÔ'Æ»çÛŽ‰ëNzH®«õì{]õ÷2=×ûÛEL~‡õÚ¡mΉ7ÞqôX½Ûøå9;d}wJeæ¬+/õTìê‡Fçÿcƒ¬$C~À¼Žõ+Ô‰2¯c‰qˆë>®j]W½8FÄÞ9pÀÐm+$æõøß[Ì(Íé%í„xÑ~ã…ÄU"n×ý3»ü ÚÎÉñœ:àtÑö‚”?*üÙĽÝ|tR'y_ò-ø/ÖÝ̓ö>EÆM\zYÿ¿ÿ%ý;æ¼ïØ)›êˆZ=wúUÆ+úÖkm‡<øÚÊïöñáô{ßô^_»yç#b©ˆ9ú¡Ï·l3EŒ¿Ïn»þháùõ’ .ËûTÄûç}g ˜&޹oôúkûµžc6í ¸MòD|MëqÕg¶–óD•}}ú‰/¤H9ñyüW_Ozþ:MœpóiÚõás«EÛŒÝ5²—܇Æ4úk§Âd€úÅuC¼ICÆ}(ò{\ÿµ{¾xãdYgy;¶~Në#âÞ-ëþ–QNúÌ~|ýºß/^«ÀíS'Êúë(YÏA}"ëPà7¬û޵~<Ü©ÏèËŸ}䲚déWq¿­iåk{‹äcôô[i—/ÏN½Ã”ùó ÆÖùqÿäçöἸåŸ6‘"¦òÂeG}¶8!óDÉ_x>qüžônƒV‹Èü›>›¢_,N8{í³¸o?“7ºÏkƈ£ƒyq‘ÜïÄ­l½ø‘kÊEÜ ·V.}3Îà\hûÛí‹Þn?G´„Ï áý½Ô¾^×kû&]Õ7é:qLðþØß·‹ÍƒßŸ‡~Žû8n÷§sžùtÎKrþÍ \ŸÄγ`¼ìÏ׃ý~ŒËYS:.Vâ3ùä:ØxÞ_ÊÄäcrÈçüZ¡ßG·,Û÷ßFÙ¯eèùQÙîbr0½9Æó~IöõÉçß׳AÊÅžK=m >ŠÛGêI¡?œßÑOcö©QØA5ïf…>Z*ü³¥b¾–¡åð}±àÛ[|{“î»N =?÷37}qýK9¾^|9âi³bÝ»Bë×á×üš¯õ§1ùx«…Žo9¯¶ÿøsà)Ö%íËן¤ð´_’‚ç\üQ>çqÌäRöc~"íÂõÂõÆæ•|Æã—¯§¥‚ßás¹ž–¡ãÝqßE^¿Ì/¤œ\®ä·BÛIò¶È[l}¾ïƒ×÷9ÖÑ’å‰] ÿW]s¾Â¸äñ‘¤à%Eü+óʧò'ng&Ÿ#%)ò0Ë/¼Ÿ#_â5÷+.§Š_’ìò9xâV¶5ЏÕþ¬âõ– ;mfòò|½&x=_ÉãÚþ󀃗¸¿b^ýfxí+ëQ®ëƒ»Ïè7äšÛ¤¼Ü.hGίZèú‰×ŽxUÕ[Ÿ®[8¯ÿÖ|Õrÿõ—#“öoRùKRè¼(×Ëò¶ï«:û¡þzá~Èù´Æ…W[*ê\.GËý¯S•gåú7âùË£¹ìO´0÷Kü<×Õ2Ìý½Ê“\âÌ¥^t؇í‡|ŸõuŠÃ~Š}'CGþÜlÿüÏÊ„ø32wUø^yiÏÉãn¸e÷ÊæC§_{É%ƒäýzTìÞð·¯ñÚ·þ»±o?py¯•‘Ç]¾¸ÏÓ?bÿWÖ|¼÷³•ˇÈy ?ösÜÇqœôÐòÍÑrþµÿ^?(¯"—ãÊñi­níxÇðÛ+4 ÇËþl=ØÏ÷Lçé¾ψ’øL>¹6ž÷—rÃ:¤|Lùœ_+ôáÛp^JçÏÒwÈ~h6?Ê­Ô;ÊÁôÆÇ;ú!´xß÷·)|sÒ6){Žëó½÷ú„¥¢Ù.n©'…þp~Þïxÿ¯Ñ~ŽyTó2ÿqø…Âó1ý“ÿß|~ÎÚø¹Ü®rÝLŸŽxb~æ¦/®©÷u{›ý5éÆ>|½(¿C¯è'L¿¿æ×|ý ?9>g->wÄú#>WÄŸ#îë’öåëçñ‡þöcÏUó8ô…Ïy3¹Tý¸ŸHžázazãóJ>ãñËÖãð{î×lœ\×/·/ÚÍE^¿Ü/ uÈÁõëñmÈ~ô…Ës;I^C~DÞbëó½^|ýñ[“£ø:ðZæf‡¾8/3ÿÀ¸tÄãOÿr¿Sä3)ŸÊŸ¸™|Žü…ãxfù…÷säK¼æ~ÅåTñ <—yÙ ã[i/îè7ÜŸU¼Îù ×yååùzý›y[\äQñ¸#¨ò öçþ yÕ·æœ×nù02“ëQúû†1wÛ{}ž”—ÙEÚ‘Û‹ñŒÄçõ‹WU½åÛðwëË{|Å֡ʳ}©â ñQOè/h7–¥žXÞö}°¥£qFM êÏáoÌùz¤ÿ©x•ó%‹Uüðuªò,­ÿbý‡«†¾¯âW_K¹U¼…ú„õð8BÿtÄç+Îïæ¼Áp¹_+ëiV:êÅüJyy~|תèØßÄѪ:ƒÇ¥Ãß¹ü*û¨xAU»ÈÁë®韪q.õ<‡û8¥øþ’çI·<å¦7.g^ñ}_ã'nW¾ß’y ÷©œwy>bùÏQ—óúR±pÛ/9Ï1`]*{ªöë*¾PÅ™K½èà¶ò­ÿùÓÉ'?ÞÆa?ž“Ç!ÇG{áùo‹ýsxøùe¼Ÿ«”ýàóD¾íöþò{-8އ~ŽûˆŸƒ“ó·RàÂx<¼ÂÏGÉñØŸ¯?Gß{’ø\>œ‡wôßn_‡Ô“C>ç× }àçÚe¿Ýv<ùyAüþ¶¸N”ƒéͱ>ÖÏñ½IümËà÷¨òp.õ„Ÿl¦Ð‹Br~Þï7øÞêíÌçQÍËý‡¯Wå‡|>®\|>ÜaWX·CŸ|~æg®úâúG9Z¿¿XÍ×+åçëF?aúuø ¿fë—úÃyv3}ífvdq!çýÍþý®žj]8ž­ŸÇŸô°Ÿã¹b‡¾ð9c.—ªói>žëÍ‹ñÏýͱžÝ ~g<&?‡ëáúåöÅû.òÊøå~-—ƒëAò8|¯Ía'Ôò#ò [Ÿüž_Çn;Ï8ì±[áwÜ^[X\²ùüÉø×áwª|ò)ý‰Û™ÉÇí.ñyfùÅÑÇ+^óüÈåTı\?ÚÙI~/[”‡ûöçþ¬âu¦'¹ŽVv¹ù¾¡äqfežÁþÜ_1¯Â÷¿zÄuáçË›±xØm·£Ã^œg0ïóz‚Å«²Þ‚ï+9øŠ¯C•g¹¾Tñ†ø¨'ð²Ë‹ì{]Ò~øùxПÃ߸r>E¾hæÂŠøPÅ_§*ÏÊõ3îËçZœ{•Š_U|-åVð–Ô'Æ‹#ôO‡9_q~çùy·K½³Å1ÏGª|¿%ôs?nuºÒ˜>qÉxÓQïV¬‹ÕÇnõ!¯?yý¯š_)/ço´÷qOOɹ졡Ê:ƒÅ%÷w‡ü[\ì·[±àñá"¯gõò’bœk=ÏÇÁ>NeŽºÀ-O¹ém{èz”äµ×AŽ}¿Ïù‹Û•í·dÞÂúó.ÏG,ÿ9äáõå–ý×_ªý’ã<×µ;¼ý½Ê•¿O+ÌzÑÁl?„ßSæöSí;q¸;ôþXžÿ|óyíëSß«ðyÒ;·ö¸zkk}ß–×¾J}?½:;vß¾g‚m¼ï絋O_»8É÷RpÜnßÏ}wÝÖw×í¾-mòŸi“ÿ¬¼þ¬vÔ«s}5¯úèïUë|?_;|5Áû~߇9ê±1¾ŸgÅQµ7*}¯Á—ïçÚå½é{µmíë(ß»A¼µ¾¯‚×ÇÓï3bó#þó7Ô¾nôÕÔâoy°ýtEíë_pYŸoöm Îÿ™oÛ¿k_ïúVʉòýsÚÀ»ñ­M¬}µ÷}ü|÷@©‡÷®®5@¶C¿ÛƒëHðí â>ìû48ßHß›ÁñòóÀßÞú =ñ½¹”¯7Öv;êQ9Ô àI½¦oº,}ÓEòù×µê9ýÙï Xï'µrݵGÚáßµæ{Û#í€ó¼×A7»ú{9êõñèSÚ Ú­µÝoë+çG½¡_ýþ¼‘éýÔàË÷Mí4u’vG;à:àsý¾Y¿5AýÇùž„ø@yð9®¯¬UÓÚEr=(ŽÇûßÕNsYWß`î—_õ¹UÆ^‡¥o’~ò]ÐÏ'H=¼ÔË,ß¿‚þ²Êwm0~#}5A»ß#ãåæñ¹üœË±-¨÷“¤¼ÛƒvÜéû:¨ÇÓq†~†òÁçýnê÷Xß=°N\ÿ[àǸ¾Uà¨OŒCî'x]POÛ|;ƒþõw×èß‚ž¨…yæßG` AüÅÒÏ> ®ûq_MÐýöújzÕ¾†’ >1þ·õVâÛ\Ç+N½\XûºÄ÷#øçö ;åû:èøçJžá~%[ŒÓàzûû ®óTßú þN‘vF—|Ä]èðÛMA¿¼JöÃ8C?_œï9'ÀzQ~Œ›MÀã’7A/ÿ¸>ôOŒcä/\柵AœJßFðómµÞ/ýãüÝ ÞÏ“ý±}"È[kvÃkô´úâq€r¼ý’ä \/ò°´/|¯¿»¡¿Éu€1Þ0^ЮßÁxÄÿ<ÇïásiÐ/òú±ŒsÀE~~ò‚”xçC»b‹óãó‘çaü:ð'´æî˜?Ñ>_À|÷Ã|2Ÿ‚ÿ­…üƒ|$ýÖËýõˆrâz0ïÉ<vÁüv3èëUAEž!ëÏÁÏ^Êy—ï3X'òìWß$?¯¾\ÖvÉ׸>ÌW˜·ÑnOí;TæC¬#Pn´Ö98õ¿ðv>æÔâ =0/£~€x@?CÿD» ^°>Äúëäô‹­`ÔãsA¹>”úz-¨ÿ×$ï£~1o ½vû}+ýogPŽOd‡öÿò&ŽGÿE½¢ßãº_D€q×õ•\×6Ð'òʉ~²=ÈCíd|í Îë—úÁqÜï°EÀu¡\('®ï°/æ¯ÏA.ÿÔã_Ÿ÷‘yëÔ/¶2o£ìæõhG½³Žå ôÎßCÜcœcÿ€<*Zù¿PÞÿ+ˆ3Ç ôùxÐo¢}A?¼Æúëð_ðû±A¾¹Â·3È·­0n„”«£”íy÷õ³ÒÁgh¿¿‚vzRÖ Xoüä£LÔ§ÐêâThÁ|Óí+¯÷ÿ¯c™O~ ξowÐŽómbývÖ=Ô'hïÕø>SŽìqMë‚qÛƒq#|¿A>Ǻí zZЮÈz郺¸ò@Þ-‚ëÌÍ‚þÙEúêxYÚio'6úÞ‚:ëAÌÏ;QŸ€ó=ð ÖÕÈëOwE3àô+äeÌëÿÿÀºb3´8ò(΋öFùŸ…·\ÞG9Ð/p½¸B½žhþ ñ,šÇ“öÛ]ç_B òÒjѬ®~ÍÀNãðjYŸ€\2Žð{FXO¯Âõƒ^=A]!ïúå:€_äó¿ÀO±¾ù%G?ú~¿ÚQOò{‚Xn‡~[êò„Ð`ýÛ‚ófÉy‘±¾ÜÎüå¿•öø üg+|o×»•Õ?¥|˜WƒÓܵEæ]ŒÃAÃ_*ã ó Æ Ä…ï/Ø€]P>é—8yåÞñ¹äÆ~›A?r?~v¾—ò@]¥±¿ÿu°üú{ •#Ü¿KÓØß/ÞÐu4ÕßÓ9п¿¾¡Ç&Üõ7TÎp_õý»d ×пƒÖÔ~x ü£©ãä@¿Êõµwc×Sß¿ãÐØuè¿;ÑTñ×Tò4µÝê;_SûaCù«©ø³±~S߸j,ÿh;64¯5Ö›êï55ï(ÿiê¿?ÕÐüÖØº¦±Ÿ²©Ö}¨þ®eSÇ[SÕ“Mí÷Í õƒÆê±¡ù÷`½'MÅ×Û Ý—5¶®mhùo󫦿™¥'µÞZ6ß÷¿fûþµÞ÷塀s¦”ìû¡ö¯ÓGÁÍæ}{ÁO-²zçÀ-{ædŸúdË®#°ë€^ðë¬lvÔ°!9YòÁоÃäƒsrt–†õíZeç :p\5Eó§Ð:<çÿÀæîÃÅ.}GLÔÖÅóÊ;ÿq›ûçm†³63ð°ð‡Tü! HÇ2P))]äO)ò']þdÈŸLù“%J•?¥ÉŸÒåOC—ºÄÐ%†.1t‰¡K ]bèC—ºÄ0$†!1 ‰aH CbÆÄ0$†!1L‰aJ Sb˜Ô¦Ä0%†)1L‰aJ KbXÃ’–İ$†%1,‰aI KbX#Ub¤JŒT‰‘*1R%FªÄH•©#Ub¤JŒ4‰‘&1Ò$FšÄH“i#Mb¤IŒ4‰‘&1Ò%FºÄH—é#]b¤KŒt‰‘.1Ò%FºÄÈ#CbdHŒ ‰‘!12$F†ÄȈÑ"¥Kú1…~ÔéGƒ~4éG‹~L¥ÓèÇtú‘ÐR-…ÐR-…ÐR-…ÐR-…ÐR-…ÐtBÓ M'4ÐtBÓ M'4ÐtBÓ Í 4ƒÐ B3Í 4ƒÐ B3Í 4ƒÐLB3 Í$4“ÐLB3 Í$4“ÐLB3 Í"4‹Ð,B³Í"4‹Ð,B³Í"4‹ÐR -•ÐR -•ÐR -•ÐR -•ÐR -•ÐÒ-ÐÒ-ÐÒ-ÐÒ-ÐÒ-ÐÒ -ÐÒ -ÐÒ -ÐÒ -ÐÒ -Ð2-ƒÐ2-ƒÐ2-ƒÐ2-ƒÐ2¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸D'.щKtâ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK âƒ¸Ä .1ˆK ⃸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä$.1‰KL⓸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,⋸Ä".±ˆK,â«–KìoªLš]P‚oªàÍc&”tžZ\0gʾ«?kÿý?ŒùYWº]quantreg/data/MelTemp.rda0000644000176200001440000001462014223041040015035 0ustar liggesusers‹uÝOn]GvpvÛFFÃÈTHíX¢D‹”H>ŠEŠz$匔IÐÚà h:@jdÌxÊ ™yÞ€ ™zÜ€3M¹ß÷û{Ju«êÔù_§êžºï^ýnõ«ßýjkkë“­OñÉÖ'Ÿ}øïÖgÿøÛ¿Û{¶µõé/?T~±õéÖ_~(ÿâïÿ‡ßþþ_þø¡ëç[[Ÿ_®¯~ýþÃ߮׫?ÿ­/Ö?ÝZ}¿©?¹ÞÔŸÞy÷áïßÖ/òüòõfÜeƽ۴½ùóßú<ý¯¾Ù”¯Œ ¼Ë­”©_¥þ4åóô?Mû“Ôo6ðŸßËàû*Ïá»JûIà¥ýiž¿„þGÞyÆ­ƒÇ:ôç9üÎ3ßÅxëÀ»únSžàgú­ÌxGï7%xOS?ä’þg·N¿‹<¿=§÷,xšo5ä{ùÁ¥$×”OSÎAæ{:Ÿe^ü£øïÕõ ?óÎAÚéÓóÐw’üUÚ=ø/Г:¼ÏÈ7ôÃ÷T¿ðé0õgwj\ÊÃŒ;ÁWrrÂ?ýÉ÷yúÞqê»iǗ㌘~Í“yÍó,ã<§ÿ)=ßO¿Ç©xžï§¾‡®7KùÛaʯ~»©ïfüvà=4?ýI¹7ðCÿ>=ˆô×ï t隸S‡Ï^ʯ2n'𥼯ž~g?ôíGn÷Ó¾ò~øqOÿôÛÃÌ÷0õ/3î8o>å9(C?ºöƼ÷R'ÇèU¦ýAÚñáËŒ‡—~à~£ó0íð"úùÈø)rÜmzˆ_úyíàÓà}PßýäQ¸ôdÔƒKèõ seœy‡þ”/ß§ò1¯yðUÉ^_éGíózéwSZ?É1ãÙ/¿Îßçùó› \ðÍ”vþ‡? _vú˜>³SvŸÔŸdëÿ¸K)¤¿zøð…¹ñËÚVK|Ø+~Xwáó¾ä1ìÕ8úÐõ8vbü1ÿøèzÿŒ·Î?Á¿ŒÛ'Ô;t“ß09Ð'|BõÆúö4ãñë,ð_¦Î>Ðo}¾ØÞ<·îÓ%<Å%Ö•uÚ­wg™ÿIà°ëñâ²gÛ¸=¡ûq„x~â²çú§|6øÞ‹Œ? >ôþYø-N~µÎsýá=ø{¸â€õ7›úÅO›úÕÛèýÏøË´ý]ô+ð7Ÿ5:Ó¯ñ0ýAßð/Æ£ïâÛMû«èÏ•~á+=o—ç—é'¾¾bøzù˜òù°O|„':á_}¢×üþ?ö{Ïô4ýÅ¥æg?àó;)ÏÓ^>®xô_x³ä?»xÉn‡½VOSǯƳ쎟~³´'ö‰¯â¥Cëûá_<½´ë¾ÓÃÓÌo?rÆï¤ŸuÄ>a5ì¦û•àû üб¸<¼Ç£Ÿø§ö ïðÝÓRÎøÎ:Üø(¥8dö³NÚXGø#ëÜvú=„¯ucȧt ¹™/ðÄ]{)Åâåû£ßÎè'.ÂñCã€ðÍ:ßxyð½ñ[Æ5NMýžvóÂ+ãõ»Ÿ~|Þ,ñ°_Ùí;7uóñÜ£Á|ÿ*ÅßwÍŸò7ÚÉ7%¾ÃþN=Ýeô<øáÃNà7Ί¾À[œÐxóf9/yŠ7ºŸW‚ƒïì—½áÃ{áu£úΆ}7.KûÓàq’v~¥öÆå9ÿ¶7æá_ñ½ûƒÀ%/ã&=žÞôKøÉ~ùÕë%žüŽý½8¯ûN|Lù`è›øÿ$uq ûšç âaø¿”ú5íöñŸ:Ö}VÚé)}+>¡ÓùcãÅÔÅËçéðºÉ|/ÒoýcÖéŒw*>sžäQàóe¼}!ü.¯‚çEž7nEGàzÎo\¥|•öÆ ìƒþ¦îÜÞùôׇ?ú±'ñ1=·¿£ï_Óú˜~âKúqÁ>Þ.í•_^³¿Œ·ßgÒ·³ÐAnyoçúâßî§ß,å°Ž]Y'Ä«Ý÷©güÇÃ¥?ðØ+;< 7ôs´Ÿn÷ñé?ÏÙé¿Öó¢Ð·oòËsvÃß8//nÆ‹_ùoñ# {±/ƒéØZò£ûx|vr˜ç¥?pœ¶ã§~ì*%:ùŸî×øÑÌÛ¸Ô<ø2Æ[¿Ì#Î'’“xÀ:Ì_;Ÿˆ¿ºOP_ 9ù¬ÃÎwÅŸ÷ß-å>=1îþÁC)¾k\H/Ñ Î»%?įwóünà=Èó/à‘çâ$óÀ»q|ÊíÑ>ãaóá«ýG÷_™_Ëot¦ü\ýŒ7%~÷¼?Ro6øÓ÷àÁ?Èq”=7O?q =íy3;X-õ–=­ð;ðvÒÞs~öC·–vÄ^Ä/ðûömnÞâA¯ðþÓ®Ñy½¤ÓþŠ^‘ç—Ãêoø_ön]‡çë%ÝÖ/ñgí,pÄ[=Ïþ¿žýšï©Ì/.Þx–ßü>ÆÇ<øÓ÷„úß,í óóãC^3îá×O†^àOùÏ´÷}}Úé'z¬§ÖßÓ1þèaè .»vGŸú1uçHâëYãà”ö—ö'©;/£Ï• ûá÷ÃñÏ~iGyÒî\Ó¾•ý8÷ë¹jèê¾0p/¾Û<—wÑõ?ãć/É?íÝžs7y!α='/øÚÏvŸ°½+Nìû)úA¿Ôñ7ýƒ¯ÉÃøŒwÃwžµ=ô9Gÿ±/ú¥Þ÷×}Tø§¿÷5øáü?ÿVNø3ôù%~ý>湸jýSð vóÂøÀWÓtÊk0_Ïíß~ƒ_ế1.eå9ô|\?ú‘yÄ[§üý'ü Oß/íSütHþÁÛûö|Ê‚OÒÏ|ä~úáSϯƒGó.È‹}‡nçÊÃÇùŒõ¨~“Z'õWn-ñ]Óø]™~ôÌgݳ¾ö}!üàO~ø~7_àfð7pð«ëDêÝO¡;ø™·çJï–rûrýû¾&ülœÏeð)~èOd<~:Ÿ¶n‰/g¼0Ïaw3¿øXˆóIqJãJý2þoÌ›zã©ÔÅÓè×üóœÕy²ssûú2ÏÅ›—‘R¿™BŽ;“Þ¡§µuñÉ»¥?ëþ&uörx½ä·¸¸qnžWnèI}æáÏ7‡±ÏæK ‡ýŸ¾W1ž¢Ëø¿‰G¯ý7Ÿè-;lœqõ'úáóÐ[ûµùþÄüô¸ör½äcãÌï—ö…â\çâ¬ú<ï:?úY­Û[óÜûIúP?=ô¶v;äU»Mi4oã ~"ã­{ôœÆqé'ߢñÐ%¿ézzþˆÏgfþyÊ…~È£µ¾‹;䈭óƳ7|‡ÏóòæŒ8_¬Ûåó°£î[F¼AÎâV|±þ×|ŠAOóh3¿õ[?ëéÌã8ÍüÎ9É›Í'Ž>'¯Àé~3uë%~¡£ùJ)Gü´O=O?yØ_g~ùèuùìwð·ç¥ì.ýÑy±ŸÌüš/=ä^z{ùmðNû‹/üzîœqÖ}ü’—õtðkýCèåOéaú‹·Ù‹}Q÷ð¥?ôQ;üÞ,ýžÈ2NÞ‚÷_ÍG|ù7êòòñuîGš7Èße~ôп³”ÞÓ4¯0ó×>Ô3ž?¡‡òÁìCûÞ„þ¦Ÿñ݃½Â¿3zL®ø‘~èéù{úÍ|Œ®giïùù£‡\øÕAÿ|Oc?r4øRýÄg~¾Á£çÇø•qÍ÷ø'>é{ìð«ïmSoþ@ú£¿q^ʃ_÷³ðŠ\Í^Ï=á•ö1¿~}žñ;äøÝ‡¤œù²/ãÌç\»qhÚ­ÛâçÆ‘é·›qú7…]†~ë"{b¿Í—œÝ1ó_tî |ö¾Ík <øˆ»g<"þ¢âù0ú›_ß8“üñ5Ï;žœàEÎø¹5oy´ƒà3ósìßWƒnpºÿʸæé›—_ÍóÚ=9]/ý=ï¹4»û~Éø“GÏí‡>vßx]¯3/?Ú|;Kÿ´7ð Ý_}„Í{H)Ž8ÁÏÔ›¿>ô üæÇð“é×û6ðNÿÆæؗ˧X¥|Å_Í÷ ~½GC^ÞvžükåN~¡S¿¾¿4ßû¥7þõRÐå˜ß5ßÒ~NÚ»Þæy÷!)ñ»ïA‚gõ}Á‹<2^ÙóâàÓx2xõ½(ý_ÅGäÛ|ªð¿Ä­â\ú,®!Ï®c×ñFãdõÌk]‡ÒãÄK«é yñßx\vH¯Ù!úó\ÜzñÃRìʹ3}›q¸SûËŒ¿ÚŽœ†¾ÓÃÆõëMéžf÷ðÇoô²£Ì;ÏñÉG\ؼåë¥üÍ[”ñÞ³°KãäÕ_’ ¹f»í~:õægç¹÷Óoâ#|/é!}ø~©?Ý_…zÛýlú™×~hÚ™ø¿9Ï<{C÷Ð÷îK®—zŽ=GI¿Þ3JÝ:Ôsv‡?ä3ì¯çwo½gö|ÅúHNülào=‡Ì÷ʾ'¥÷Úá5Ú{þ}=ðÍó]óâOÚg5Ÿ#ðzH>èFGúͼó鯟õ\pgÞ{óRï9%|3nžê×óãÔ{.~3Λ÷ïºOHݽÀŒCGóŸS4ðšpijÛiÿ[øæyñH©>óWñoÆæŸçÿÍ£üÿMÆ7ß{Èéá˜_|Ö¸•žÏùŒO©Þýlì¢y2C®û£„ÿÌ÷ùjÐ׸*ý¬W=·ôÌû¢ö³ìzÆí½Ý—§Î¯ £ñ+»`·ú ;z<ðåŸôë~?Ù{øÙ}žöÌÓ{îü;f?o~ñVÏÓÓŸÿ¸õþ/ðµ7$þ¤÷C?ËŸÕ/§g6’‚¯ñôž£Ü›ü7.ÏÅÝÎS¦´œY¯R_ÿ~wßMS¿Üºï’ºu²çOÁ õ“ƒžUàöÞ}IùrÌW¾™'ðÄ =V'¯Ð'>•?aÝïûžôo> ;±þÑ{| \zм>r¡W«¥ºîß,õX÷dð¯qdÚåÈW>IωÓ}O­%½ç˜~øãœ½çñ©_Þ,íË{„Þ»þ¤üKý<|Ïç~Šâû^<ó¹cÜüŽŠužß²>:ßpÏëÀ” ¼Ä£â•æ[„/Ý—èÔ› Ÿ”â‚æÏ=GÌg^qNó2òܽQù ͯL¿ù=†ž¿çù«Ôé‘ïoˆG¯RŠgÏÈ5¥¸¶ùéßïºüwèÏÞB¯u_íÛ.Øôƒóë}O®÷õ»ë;täšqÎeñS<Ü÷ø|Ýx‘ùÅÛ“âVúÚ{ygx¸}tg çr;r WäÿнýwJûyäô¡ß1æµÏ¹ò<óèGzŸƒg~eó¨†þõ~yÿÞ£LiÿÓs„Ìßû èçÿè>¤ÎêïRÒ—òH?öfþÞ'¥ßìøkþƒž7fâçyÆõ¾)|ƺÑñ£ìzÅ_çù­ï£ÓûàÑŸÐÕõ}Áoƽ?¯×õ\SŸùæ½§”ygÞGÏ9ŒO9ÏÍGÎ<â@÷ŠC?vÚï).¼û¼”̓Èxña¿£‘qâK~K¼Ûïed\ã×ÔÅÛ_øæÃ?|ÙZâÛør´Ïïq8‡-ÜAóëÖôŠÿå«ô|7Ïå9TƒÿÚá9¿1¿Âñ×}Êæºv3þVûè}ÅŒW6#ãú;0ï–rð]îÞÁvúzOàfé¼÷rÝ{ô!óö3ýÄ‘ò˜ú=Eí¡Ï8zDž}ß1üÒü~¹yúž/xõÞaÆãGß›å¹óRzàœ¹ñ?¹áKúyOÆžû»7ìߟtàkà­ÙAàÌïWâ_ß?€Ë^SÚOò7ìö ŸSž¢?|ë>oÈQï^yßÃðkÁcž 5/{èqýÙ°çždþ®£ìŸß¸^Úuãnü§ü?|Rßøõ÷&È…<ƒ_ß#ôׯX'§qeÚw§ç¦ynþæ§l>jÊ™·mãŸ~¯7íͿͼ}¯—ºyÿƒó~ §xFý®^ž7!õ擃;ø>7FüãwlÄÖOüÿ"ýçïÐÌï@ôãàÏÓ¿yè…ú‰ïVôeðµyð—ÓýüžÏ£ ÞžÃÞƒ¯£^¸ø<ËàÙsYúˆø­L;¹ö¾gÚéþõ;äéß}JÆÉ™ïú½ÃŒ¯ÞÃwÐ5¿¿6õµïÃë?Ô|¡Œëý_|b7üVÚ{/ýf‰/½žù‰ý^aü•¸gƭοøí™wßó/üN9ïq‚ÇŸv›vëVßfÞÞëôÍ<šæ¡‹ŸLÙï«¥¿ï(;WìûôÔå§_¿/ÁŸ§_Ͻßz(±ñ2½J?qx’ÿ{2ðï=Üôï÷›GáË ùÿó×Kùïûæà^jÇwv€¾ >ãç"?ùÓÛ?~(>ÿù¿ëÿïÍ”ÿñ×ÿsðþÎzý¯ÿµ‘ÑrÈgÿü‡zûöÃþêÿ=üåŸ~~ò¿?ÿû?6ø´É­rquantreg/data/Peirce.rda0000644000176200001440000001372211555564235014730 0ustar liggesusers‹íKŒ\Çu†K²0ÎD .´¸ ƒƒ¢[^¥ddÓÔ‹zzÈ!‡C9ïž÷£»‡´#ddãUÀ]´ ¼Ìr–Yz™å,³Ì2+ÇCÝïeþ꣺=s‡¤Ä@:¼UçU·»ïùëÔ©ºWÿöÚåï_û~Jéåôò÷Žþÿ£~÷å£ÿ½”ÒÄÑ?ºrëÎÒÔ­£ýÅÑçXžÐ'l~Äôrgê =ùëÌ¥š.\©é"t©WÓe£¿…"·2½í@‘_¯ _¾î$tŠþîçPìtWÓUäW+(zV±³Š¾Uô­¢gõ1}«ø³zýŸš®1þ5ì¬ag ;kŒk ;kØYÃÎvÖ°³†5ü_Gÿ:z×Ñ»ŽÞuƱŽþuô¯s_Ö±³Žuì¬cgÝì0ž ìm0ž ìl`g;ØÙÀÎv6°³ ìl`gãнMìmbo“qn2ÎMìob»›ØÝÄî&v7±·‰½Mìl¡ ý[èßBÿú·ßú·Ð¿…þ-Ƶ…-ìl1®-ìm3®mìncw»ÛØÝÆî6v·ß6ö·±¿ýmìocû󯧮þöw°¿ƒýìï`û;ØßÁþöw°¿ƒýìï`û;ØßÁþ.öw±¿‹ý]ìîbw»»ØÛÅÞ.öv±³‹]ôï¡ý{èßc|{èßCÿãÚCÿú÷Ïvö°³ÇxzØéƒb¯wŠÝÞEè[PÆÙ»âGoʸ{ ø×û ?{_@ÿúŸPüíýÔüþo(÷«÷¿5í3ž>ãèãÿûÜ¿>ãè3Ž>÷³Ïxú“PÆÕg<}ÆÓg<}ÆÓÇÿ>þ÷ñ¿ÿ}üïã¿ø;àþð{Àýàÿÿø=Àï~ð{€¿>‡~ð{€ßüà÷¿Püàç>~îãç>þíãÇ>÷kûûØßÇþ>v÷±»ÿŠÝ}ìîsßö±¿Ï}Û?„ò¹ïã×>ÏØÀ÷êú ÷!÷é!í¿DßgÈ}Æ}ø§ Š_ÿ\û›À]›M'¥Ô¬=âÓ~§çšñ…öÎ ø#;§È?ñõrê¯_rÚ®ã‰îCF#>iÏìZÿù‚~õ[í¨>—ú£ú^‘ë@.ü\tü¯ ·3ê÷7ºï™ÝóÃÛC?í~O §Ùç}ô¾f|Áçãýú}8ðYôý,|.î‡ÜÒs(²[|®žKMŸSÅç[ð»kúýõ9ù9âó÷¤ÏÅÌ®é/ünNê×iŸßmÅÁ¿ôœjÉ߈ý=ù½tôß“¬ÂŸü}÷ÞFõfõæ[?¹, ‡ïÍ]¿kþïÐøÒºýcƒ|÷æõ•'Y‰ßÏH¤ï\«ÇÒù°WÓOjú Fú ®'+(××é¿> EþíSðO¡ ¾©ÃšÞ„ÿæc(í·¿…Ü-ønÑ?Mÿ4ú§á›Fÿ4üÓèÆßiäo#wþÛð߆ï6|3Ø™;3ÈÍ 7ƒäg¿ƒüäï ù;ÈßAþòw¿‹ü]äï"ù»ÈßEþ.òw‘ŸE~ùYäg‘ŸE~ùYäg‘¿‡ü=äï!ù{ÈßCþò÷¿ü}äï#ùûÈßGþ>ò÷‘· ÙòsÈÏ!?‡üòsÈÏ!?ü<òóÈÏ#?ü<òóÈÏ#¿€üÂ= — è³ Þz è_øŠ…ßB±·ð;¨Ù­Eì/bû‹ØµŒá"v±»ˆÝEì.bw»‹Ø]ÄÞv–Ð¿Äø–°³„%ìX†r ýKè_Bÿú—×v–±³Ìx–±·Œ½eì-coýËè· è2z—M/÷k}+ø¹Âýèb×3¡øßEo=«ðy¦yÏl2>Ëdzæ’vË<®ág á#™xîžUäh‹vpÖ]C$b´iÎôLýïC„o~¿*ý""tÕ«Hÿ•@îU¹®Ä¯W…ž“k¹ßá ì‚èMäu&fþª=¥:J"§÷!º¿&§~¼z¼Ý©Ž[ýT?ôZô…3Ü*è/ }—W*÷5ü=©_ú}Nù‰@NÆÎ ÓðëˆOiSd<òLcÄ™U«ˆú¯þ¢~ùÿÒIAô¿uÞëÕNˆþè ¦×n¦í>×ôOÒ?I¶éWÐ}ý1Ôøkj`üFEþò7¿ü äo ?…|â‘›BΖ5Ü#w»7‘¿‰üMäü#ŸM÷Éò>)@þò­M÷ÉòÙ¤ùñäŠüs?y@®8i€ÿ©OÐï“ ý>)@oq€ÞEô.áwþñs ~ßV†`å«È­âÿªb¨-û²Œ›ìùÉEÓ´RD›‚ÍÆiž(¯àÅüPP”ŽËA‚¨ ­zô¬‚Ôª™½L”FV{F+¹V¬üªWAökÇiŠ”Ïìëø”Vr­Ÿ«N¢ÉáÑ2H–ëçlí:®hÒ£÷¹´ü¡ãÔþèwLÖÂßoiyHi$—ü,=GƒÖS‚Þ§š&þq; öóΕú6y†Ø@­×ÉI(퓇5uúJ»ƒQúC ¿ƒÏ ŠÜr>áƒN(òcÐ Eþ™ƒNä3Ð ÿÈ`3— *g*Lþ<£Œ¼ƒE‰øç™_ú=C Ÿ×¦¢ÇkN $b×3­{—øûò9Ôv&àęдGà«L3¾hí= Z¬½&|A°vPñºÈE è|@©ßŽ2© î¢ø§ãRû‘U §TÛz­~F`Ñô 1û¾h¿~žM_}ZpãúÒhýÞ€åQ'imƒ¹V@Ö[퀬_u~Æ l]9¨éÏi¿j”þ«½š¾MûÛ´¿míÈ¿Cÿ;\¿K¿e*ߣý}øÞGÏû´_£ÝÀß\`×èùþéÿþiÿˆöhÿ9ÏÒÿ1íÓþ íŸ ÷ ýVžð)ýŸÒÿ)ýŸÒß8ãZAásP ÿäc¨ÉÖÔ3²È?³Ì,òã -ù¶À²ƒbú30Œ¾¦à×A.ýj ´¸Tp˜>ú-“·\ÛI•Ú§Á6SMgò‘žÐ®]™šùˆ‚n†ªá|!8Š®£²¨¶Íìi&È2M6>Õ¯ æ•àZ©ú«`WÇoàMÁ“Þ7ëO§ü uWýÐe>½fßäå{Sü~EvJý'Ìp©#ÿžt-ƒ­È¿‚²?­w‰\j•ýk–’²”Ó;½š¾G¿¥”,eä©"Ú­q¥„𦂠µ•Ò§r È7Ea/ úB¾u†Ü7e3[ß„¿ñNìdëœðyñhÎ×1?‡¢×‹Ü°g;MlÒv|ØY5kF±ggÂØ™ ÙªÁsײַêQ˜bqý$¬àoèWèŸø^+êQ?åEÅdQjJíFè1ò矦‚ÕFv¢õÐ×¥½{ŠÖ hØïc´¡eEŠÎ›5ª¾È_g’þà>S«:Ru!Š-¥ð‘þç=~=ŠlikÄnçzµ·ïÖþzÎÎrržkƒÏsk\+z»^AÑã(í°¦ŽÆènPrãùgŽÂnÑrYÎ þ°Ê >G[èÉÐò¾%yC]‹Ø±}Â~2!zVêÇHgµnOüîÏêig4zZ—JÌ‹ú4šéS]£K©j«´¤¹¢¨JH£¯FÙµhŽ*ªÓÜ“õŸ“~E1?k¥º°iTÑÃëÂùaò¥R}“S}ÑB¡¢]è”-ú} Ñ@„#T?"ú8k”ÐT> E-Õ¢?èüü öÆÊlEÐrJš3 O//\CãÜzo çhþoK®gŒ6júÜ¡ ä•7øO]Ó_X»ŽÞ°f>Ïí Ï7.Ú€?;=äRM­†ÜÎæ\ÒÄs¢m”aôĹžÒJFÁž·Gsà ¼ªˆrJ¹•$íUÐ_*ˉN‹H•5Ez\ëHNQµ¿!í•ðkHõ*ºP”ù­Ð•NÙ¨ä:ÊÙD§bh¤´¢ñGß׳F#£êKCQÊOÚA)ëwj<—a+P  ?ÛÁVA‘Ë¢:z<šÃ?ŽâPä¿qQùç~§rOýL5ôúJ( <ÁЄ¡ø|ò†.8M?ñ;>« m1󜄯áÊOÕE1”2ùQ¦]êY\_T¿bþT;ŵ¾Å¢²®¬h.®5újîCõjîAs(š3™>µ£öåþ„QYQÚ‘\Pöy–ÎÎÒö`…ȯåûU\IA¿¢Xé?›–¶l=ò­Y–sðÂcèAM}%¢‚v ð9 }jŠÞÓ®0ds}ø£ü£(ò/ @¾u4pZ€^ß×nzëÇ@~rª¡ôz‰¡ä–°ï‡¡ß?B¯Ÿ\Š_¬€ø‰ öN {GÎnÝžxŽŒºÒqÚÜŨçÆ[¬´?ÈQ4]¡ «‰£ú«ÞÕ¨íc×9~´?]ù¥ht6¾‹B£ªàèZQ‹æ,4çsAä’Œ/ŠâZ¡?E{•ð™Þ࣠•¤ãýÙç­~¤r Q†¶‡|£¢ñ«…GåOCQNK{²6}#¸UéZ=†¡Ë]8 ¡?;·>G“PÚ§±ã¨¾  oŒ ÈãQòÏÝ9놰ŸŽc¨;Ù¹êès4ŸÙ¹éÈeç£Óï瞣×Ï9G¿¡‘ñ­qä͆‰ßuÛ9QŸn&ï4ª,äJÂ’(W‘¹èšhEB÷ Y»æ&„_õGU¡meDÉÕžúm¤ª\CT¡¨þ¤T})ã sZ¢?C“Áç!rZ]x^Ú+i×*˜œ®<è Ht­~WB-$Ñ£ÑÝø­ž¡ øLO4çV” ÷%IT-›¤=šóçQ½ñ÷¸å(†FÕËíDÕ•ÎÏzµ—¶Âö@XubU¡¾ór ¿Í¥=ÚÒŸeàkšeÞágܡȣ7tÔèmö¢¨mÑýß]†^Ÿ[ã¿EÝðcDu;¡ÖÞíeooøEMÉc„ßé™EßR4-d£¢Ñœ(̼ÕcÎ_I%ýQí½úwíQÐuwûZ´}Cø£õþè05ã·¹¼ÎÉÕ(ÊGvõþjôWd!Ìœëý°ö(ó.Ÿ{ãïcðýj;gäöF´“†F鵕¿ZûóÕŽÅ^Míœ gÑ>_·öÚZ÷¨‹Þ§^G®i”Gg(òßÚèL4<ó¹5ö²95v²(Žþì¥Cèõ½ô/cßçÒŒsƒö-®wjÿSKð“fÄ‹; =!äUOñ¼íר4!×ÑV£÷Eá×urÓ§QU×Í£†fÿ‡¢×ä_“~—ž¡hEýÔ~½ŸE£#]£ {PÛ_ú¾…U„A~ã¨<êúuA_ñ{ÞP^ùÓPð—í €%?ýÊP·Ï­úÏ×Á+hí—¯ƒ{u]OB‘o\]‡œÏéáQ|ã¹<ù-D(¡mt€þâýŽðÓ«ê³÷~¯à‡âô¨îOü.OùnútMA{ÑŒæêÅ »=µ£³Uî‹øÖ(‘ej£9»úQ ôD;íL΢°Ei‹ÎÑz¸Q}µ_´7@s:Ç×L|tfh%ýÑN@EO:nÆ)¸NÂeÞ­Dè2B‹™½€¿ŒyK§ýÚÏž´³$'¡¶ßÞ«ÐjjÑÕçÔ´{”¤?‹‚è;³h‡\åàuŸ÷ ÕÐ÷ÜÏ5úa?›c¿87¶h‰ýQס}Çöm.íÑ»Yæ{áœ{^­†¯Zcœ+è_A¿¿#ý+è_Aÿ ò]ø»øÓE® þ.~t·ÐEÏ*zV÷v×è÷j9ô¬3žmü>žCøõi3ÿ§;…§Ê4¤%Tîô ôw•ôj­wpêNX£~Aø´¿ ôª>EQæÞ®õԤȎ¶Ÿ“~ó;ZwΠКÍÁØøJhG?¿è,Ì’_¥j½à{Ðø{¯ãÔ³NèÛhÛ¹ÀÒï½m»i(êjéÔ¥™¼zkÏ)Ö´˜C8€ÂŸ¡)øç Ð?FOPäÇè :*z2t„¾l§z Ýx >þ1t±ê?ÏúwÄÅIŸNϽ\i^¸£+|…õålEÀøJ¹‰è%bQõ™Ú‹ÎЪ7û›žK¢Gët\Å-W¡+ ¦Wkï£Ó€t…#z³m´'AïO´Â ('Z*Dãb]ŠÐ³r-Ú3çÕw¾ŽÏ(,³ï™wønÖ4˨ÃçsÚ=W€þçóè¿G7øÆQ úmjØ-æ°—å°çëêè çúðùþÚ­ªÎ¢à ~¯BçQýb˜Î¯~“øûòwwf˜;§'](fö£P]£f5ºhízô:Š^v­µïm¬ÿ‡Ò¯ë÷zæ^dOQÆ„ðÎòÓú Ò^ŠfIüú3tí¨“9ìiçr™ýêi'ж´_|ÙϺ³Ój|›v¯j;€Ò_š3ú\¾,ãn|è¯+C‘G[¨EÛQ£,v³h«Q{e-º¢?̨#ïrúí•¶ÏÛçšøg™o;uf—ëÏàÿÇG‰¿/Ÿm=¥Jía¿FÑèt­ùÖ~®ú´ŽÖ³•j4©Ä®ÎítǘF§ á+2c~ªžH¯ÊWBuŽU»EÑ\ý”}îþ¹)_iŽžd JÇídÑ9¿ynzÆ™ØV£òZÛ¿}õ íõª¦z†œWŸÖÔ«Íh¿M»g~{Pú³ýÛÈ{T‡?¬5‡/\GÇþ8ªC‘Guh)ª7æ½Ñ«á¬:~[_îb«ö;öowÒðöQç°ÚßøŒ¶@.Ì(ë\KõFQ0Z¶4jiF4ŠÚF£·Ø(Õ¹³ÉŸ“v­"Óõ_µ¯ýj· ú5¬Q9Z—¢0÷'ü|íþ¥ ¿Tm–†ëËÐ]iECôœmT}³¨:ëo‡± ±¬Ú´;¬©FîÄÕeð£ ù& b¿ñW£!öW‘¡×OBÅo«æòj-ô®áíÐÚ@ïÃcsÕÙ¶2À¥hkíJKsoªO"ªrYµŽÎ™4:*µ¹bé<ó¨Ê'І:—ÓSRt5ŠVv­û¨U^3ÍÖþf 7:õEçÈIôkT«ä:ɵܷìsŽ¢\´NŸŽÓgœþ³¿éÞî.¯T-…Åy?øÜаý5%=(×Ù(Úuò™kw vp¡=§]p‡Ïš¾0á»SÃØË`Ñï“Hä²Vø¬hÚË‹,|2®5®-|>ø"ñ7t²ÙIÇé‰ÃiZ+ñ7çì}ÎL…ß»«k‹Ï¸»¹;ÿ|<îî0?[|þßÂî²oÛsþ^´¿n-Žëí¸¯âÞòQœ/‹8_|ï)OcŸa}5ú)ÏauþküãþŠxªÜw$î«ÏÄùúJÜWÏXï¿÷U?r^~ØW_µÎ>YåCžõsÜ#KÜuF|w±ã|E>ñUœ«Àë±û>d¿âÛN,ûÊŸÁïøm`ÇóøÂüsÎÄQ¬'ûˆ·À_î8Ú¼ê£xÀ±ÜOòU>ð@8Õâ ñ×{ÔQu¥î5<¯jâ³óäUãêáòØø!«ºi?qUàb–8ŒgŠ[uVžà`<"oã=|Kñ_ø}€_³àfuUPß’ü ÷-üÀ»ò6ór/¶RÈ^Lò½•ð8+â³úÊÏ‘„—ÊWyЗåv‚ƒÖ•·ø$}XMúH:.6O]í~â6|ÄsøQ0_Àƒ|rêj}B^Z/ˆ« ®Ü ð°¾Òzº_ý¥x¨SÏŠðÈç’ü­ÞÂñÁr½­Nª/}VIOáe¿š{ù:îÕ¸V_¡o¦³Ò]õ…ô5á‘õŸú[Ÿ‰×iý”§ê+½»›ðG|—Õ¼ê¯çŠx(?òß%óàaÏå ïjúÁ—cÞ¡c޼x8Î;ü;êâ„u«‰ßž_Ò7é–pLñÛKú6ígò¶~Q¿Š7OêÓTW„§ÆûIÝ„›t!íOéÑÃä~ôÒžsø3=Gïjö9ü:ö5àܯ–øZüµä×Âÿ–<[ü´ôg . õj8ßà¯'f©Ÿ#/G¼7ê'òÔ¸!NY;¿—¬Ó‡v?ýÞG-x·Ç“{ŽsŽ^ää›sß”ùéF¼o þSÎOXŸÐWÓ,ÞcëÌO¨ç„8'ÔuB½&Ü7·©ò“>‚sEü¦ëמhþÚ{)yÙ÷ é°ÆðÃÞÄOòÕsÈtV–û›‚þ`ÞÆZ—K_¹Wú¤uÓõ§úRz ¾-ó¦ãœk¹Ïô^c­ë~òé&³ïÇõzÎù›1¾@\á—x>w Ž@©èÏÁyâððÈ×ã@ÝÂOÑö/Çs~ê8\ûêÒŽáç~tÿXêÀ;€ t_–ûO²… XxÙÓWýQæñîá÷#ÆŸp¸ûûàAý<<ñ¯'xtÃâ$_O?úÙƒ—§.ž8=õ4¿äåÁ+ÔË8÷øí‰oÇáÛèox:À›>éÁµ'¾@úsË<ꈯƒÆ3Yøàpè…ƒøö(Éÿ5xL<­žçô»½w²ß¾?ãß¾ «öÞ&†·Õú!]‘ÞHÐ;ûÞ{ÿg’}į÷`õoô{“G=qyøÜýÊ>ütª?ºÐá×öÝà}ØÁÓŽ¾Ðï\žþžÞu¿sNVýDØ=¬[œÚ÷6óðÆ«Oèé€Yéøuœëf‰¥¾þöɘ|=¼Õ}ÒéCϼx<Ð'¦/â=ù ô÷ôôƒéúˆ?Oò’îø¿°ÒMõ·úž|„O þ¦#àv=R?Ä}›/ÅõMÎè÷~Ö·ÒCõuìO-ãeúL_‡³‰ÞÃoËÜlŸÖ©OŸ^:C=q Ï3ë’ü®;º<»47'ޝ?»óç;¿¯¿yðÖ7çÇod|–Ž<Õ_ô³Ùü“ÿ™\¹¼˜ù{ñïe/.jMquantreg/src/0000755000176200001440000000000014760373014012674 5ustar liggesusersquantreg/src/srtpai.f0000644000176200001440000000531114620413443014341 0ustar liggesusers SUBROUTINE SRTPAI ( A, SA, P, SP, N ) C C SRTPAI SETS P(1) = 1, P(SP+1) = 2, ..., P((N-1)*SP+1) = N C AND THEN REARRANGES P(1), P(SP+1), ..., P((N-1)*SP+1) SO THAT C A( (P(I)-1)*SA+1 ) .LE. A( (P(J)-1)*SA+1 ) IF AND ONLY IF C I .LT. J, WHERE I AND J SUBSCRIPT PROPER ELEMENTS OF P C INTEGER SP, P(SP, *), SA, H, PIH, PI INTEGER A(SA, *) C C CHECK INPUT PARAMETERS AND INITIALIZE H C CALL I1SRT( SA, SP, N ) IF ( I0SRT( 1, N, H ) .LT. 1 ) RETURN C C INITIALIZE P C DO 10 I = 1, N P(1, I) = I 10 CONTINUE C C CHECK IF DONE WITH SORT C 20 IF ( H .LT. 1 ) RETURN K = N - H C C COMPARE C DO 40 J = 1, K I = J 30 IH = I + H PI = P(1, I) PIH = P(1, IH) IF ( A(1, PI) .LE. A(1, PIH) ) GOTO 40 C C EXCHANGE C P(1, I) = PIH P(1, IH) = PI C C PERCOLATE EXCHANGED LIST ELEMENT UP TO PROPER PLACE C I = I - H IF ( I .GE. 1 ) GOTO 30 40 CONTINUE C H = ( H - 1 ) / 3 GOTO 20 C END SUBROUTINE I1SRT ( SA, SP, N ) C C I1SRT CHECKS LEGALITY OF VALUES OF SA, SP, N C INTEGER SA, SP C C/6S C IF ( N .LT. 0 ) C 1 CALL SETERR( 27HSRTXXX - ILLEGAL VALUE OF N, 27, 1, 2 ) C IF ( SA .LE. 0 ) C 1 CALL SETERR( 28HSRTXXX - ILLEGAL VALUE OF SA, 28, 2, 2 ) C IF ( SP .LE. 0 ) C 1 CALL SETERR( 28HSRTXXX - ILLEGAL VALUE OF SP, 28, 3, 2 ) C/7S C IF ( N .LT. 0 ) C 1 CALL SETERR( 'SRTXXX - ILLEGAL VALUE OF N', 27, 1, 2 ) C IF ( SA .LE. 0 ) C 1 CALL SETERR( 'SRTXXX - ILLEGAL VALUE OF SA', 28, 2, 2 ) C IF ( SP .LE. 0 ) C 1 CALL SETERR( 'SRTXXX - ILLEGAL VALUE OF SP', 28, 3, 2 ) C/ C RETURN C END INTEGER FUNCTION I0SRT ( SA, N, H ) C C I0SRT CHECKS INPUT PARAMETERS N, SA AND CALCULATES H C RETURNS H = 0 IF NO SORTING NECESSARY, ELSE C RETURNS SPACING, H, FOR FIRST INSERTION SORT. C I0SRT RETURNS TOTAL NUMBER OF ELEMENTS IN ARRAY = N * SA C INTEGER SA, H C C/6S C IF ( N .LT. 0 ) C 1 CALL SETERR( 27HSRTXXX - ILLEGAL VALUE OF N, 27, 1, 2 ) C IF ( SA .LE. 0 ) C 1 CALL SETERR( 28HSRTXXX - ILLEGAL VALUE OF SA, 28, 2, 2 ) C/7S C IF ( N .LT. 0 ) C 1 CALL SETERR( 'SRTXXX - ILLEGAL VALUE OF N', 27, 1, 2 ) C IF ( SA .LE. 0 ) C 1 CALL SETERR( 'SRTXXX - ILLEGAL VALUE OF SA', 28, 2, 2 ) C/ C C CHECK IF SORTING IS NECESSARY C H = 0 I0SRT = N * SA IF ( N .LE. 1 ) RETURN C C CALCULATE H USING H NEW = 3 * H OLD + SA C H = 4 * SA C 10 H = 3 * H + SA IF ( H .LT. I0SRT ) GOTO 10 C H = ( H - 4 * SA ) / 9 C RETURN C END quantreg/src/sakj.f0000644000176200001440000000564213752203204013773 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine sakj(x,z,p,iker,dens,psi,score,nx,nz,h,alpha,kappa,xlam *) double precision dens(nz),score(nz),psi(nz),h,kappa double precision z(nz),x(nx),xlam(nx),p(nx),qrange,pi double precision con1,sum,sqsum,xsd,a,fifth,hinv,half double precision xn,xker,dxker,ddxker,fact,xponen,alpha,glog,zero, *one,two parameter( zero = 0.d0) parameter( one = 1.d0) parameter( two = 2.d0) parameter( four = 4.d0) parameter( half = 0.5d0) parameter( fifth = 0.2d0) parameter( pi = 3.141593d0) xn=nx if(iker.eq.0)then con1=one/sqrt(2.0*pi) else if(iker.eq.1)then con1=one/pi endif endif if(h.le.0.)then sum=0. sqsum=0. do23006 i=1,nx sqsum=sqsum+x(i)*x(i)*p(i) sum=sum+x(i)*p(i) 23006 continue 23007 continue xsd=dsqrt(sqsum-sum*sum) sum=zero i=1 23008 if(.not.(i.lt.nx))goto 23010 sum=sum+p(i) if(sum.lt..25)then goto 23009 else qrange=x(i) goto 23010 endif 23009 i=i+1 goto 23008 23010 continue sum=one i=nx 23013 if(.not.(i.gt.0))goto 23015 sum=sum-p(i) if(sum.gt..75)then goto 23014 else qrange=x(i)-qrange goto 23015 endif 23014 i=i-1 goto 23013 23015 continue a=min(xsd,qrange/1.34) h=kappa*a/(xn**fifth) endif hinv=one/h do23018 j=1,nx xker=0. if(iker.eq.0)then do23022 i=1,nx xponen=(x(j)-x(i))*hinv xponen=half*xponen**2 xker=xker+p(i)*exp(-xponen)*hinv 23022 continue 23023 continue else if(iker.eq.1)then do23026 i=1,nx xponen=(x(j)-x(i))*hinv xker=xker+p(i)*hinv/(1+xponen**2) 23026 continue 23027 continue endif endif xlam(j)=con1*xker 23018 continue 23019 continue glog=zero do23028 i=1,nx glog=glog+p(i)*log(xlam(i)) 23028 continue 23029 continue g=exp(glog) ginv=one/g do23030 i=1,nx xlam(i)=hinv/((xlam(i)*ginv)**(-alpha)) 23030 continue 23031 continue do23032 j=1,nz xker=zero dxker=zero ddxker=zero if(iker.eq.0)then do23036 i=1,nx xponen=(z(j)-x(i))*xlam(i) fact=exp(-half*xponen*xponen)*xlam(i) xker=xker+p(i)*fact dxker=dxker-p(i)*fact*xponen*xlam(i) ddxker=ddxker- p(i)*fact*(one - xponen**2)*xlam(i)**2 23036 continue 23037 continue else if(iker.eq.1)then do23040 i=1,nx xponen=(z(j)-x(i))*xlam(i) fact=xlam(i)/(one+xponen**2) xker=xker+p(i)*fact dxker=dxker-p(i)*two*xponen*fact**2 ddxker=ddxker- p(i)*two*(fact**2)*(xlam(i)- four*(xponen**2)*fact) 23040 continue 23041 continue endif endif dens(j)=con1*xker psi(j)=-(dxker/xker) score(j)=(dxker/xker)**2-ddxker/xker 23032 continue 23033 continue return end quantreg/src/qfnb.f0000644000176200001440000000151713755220523013774 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine qfnb(n,p,m,a,y,t,r,d,u,wn,wp,b,nit, info) integer n,p,m,nit(3),info double precision a(p,n), y(n), t(m), b(p,m), r(p) double precision d(n), u(n), wn(n,9), wp(p,p+3) double precision zero, one, eps, beta parameter( zero = 0.0d0) parameter( one = 1.0d0) parameter( beta = 0.99995d0) parameter( eps = 1.0d-6) do23000 i = 1,m call dgemv('N',p,n,one-t(i),a,p,d,1,zero,r,1) call dscal(n,zero,wn,1) call daxpy(n,one-t(i),u,1,wn,1) call rqfnb(n,p,a,y,r,d,u,beta,eps,wn,wp,nit,info) if(info .ne. 0)then goto 23001 endif do23004 j = 1,n u(j) = one d(j) = one 23004 continue 23005 continue call dcopy(p,wp,1,b(1,i),1) 23000 continue 23001 continue return end quantreg/src/penalty.f0000644000176200001440000000560413752023347014525 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine penalty(n,m,q,x,y,bnd,tlist,tlptr,tlend,rax,jax,ned,eps *,ierr) integer n,m,q,lp,lpl,ned,ierr integer bnd(n),tlist(q),tlptr(q),tlend(n),n4(4),p4(4),jax(m) double precision x(n),y(n),rax(m),eps double precision x4(4),y4(4),g4(4) logical orient ned = 0 do23000 i=1,n lpl = tlend(i) lp = lpl 23002 continue lp = tlptr(lp) j = iabs(tlist(lp)) if(j .gt. i)then n4(1) = i n4(2) = j call fadjs(n4,n,q,tlist,tlptr,tlend) if(bnd(i)*bnd(j) .eq. 0)then ned = ned + 1 do23009 k = 1,4 x4(k) = x(n4(k)) y4(k) = y(n4(k)) 23009 continue 23010 continue if(orient(x4,y4))then call iswap(1,n4(3),1,n4(4),1) call dswap(1,x4(3),1,x4(4),1) call dswap(1,y4(3),1,y4(4),1) endif call ggap(x4,y4,g4,eps,ierr) if(ierr .eq. 1)then return endif call srtpai(n4,1,p4,1,4) do23015 k = 1,4 rax((ned - 1)*4 + k) = g4(p4(k)) jax((ned - 1)*4 + k) = n4(p4(k)) 23015 continue 23016 continue if(ned*4 .gt. m)then return endif endif endif if(lp .eq. lpl)then goto 23004 endif 23003 goto 23002 23004 continue 23000 continue 23001 continue return end logical function orient(x,y) double precision x(4), y(4) orient = (y(2) -y(1))*(x(3)-x(4))+(x(1)-x(2))*(y(3)-y(4)) .gt. 0 return end subroutine fadjs(n4,n,q,tlist,tlptr,tlend) integer n,q,vp,vpl,v,v0,match integer n4(4),tlist(q),tlptr(q),tlend(n) match = 0 vpl = tlend(n4(1)) vp = vpl k = 0 23021 continue k = k+1 vp = tlptr(vp) v = tlist(vp) if(k.gt.1 .and. iabs(v) .eq. n4(2))then n4(3) = iabs(v0) match = 1 goto 23022 endif if(match .gt. 0)then n4(4) = iabs(v) goto 23023 endif v0 = v 23022 goto 23021 23023 continue return end subroutine ggap(x,y,g,eps,ierr) double precision x(4),y(4),g(4),w(2,4),h(2),d1,d2,eps d1 = -x(2) * y(1) + x(3) * y(1) + x(1) * y(2) - x(3) * y(2) - x(1) * * y(3) + x(2) * y(3) d2 = -x(2) * y(1) + x(4) * y(1) + x(1) * y(2) - x(4) * y(2) - x(1) * * y(4) + x(2) * y(4) if(dabs(d1) .lt. eps .or. dabs(d2) .lt. eps)then ierr = 1 return endif h(1) = -(y(1) - y(2)) h(2) = (x(1) - x(2)) w(1, 1) = (y(2) - y(3))/d1 - (y(2) - y(4))/d2 w(2, 1) = (x(3) - x(2))/d1 - (x(4) - x(2))/d2 w(1, 2) = (y(3) - y(1))/d1 - (y(4) - y(1))/d2 w(2, 2) = (x(1) - x(3))/d1 - (x(1) - x(4))/d2 w(1, 3) = (y(1) - y(2))/d1 w(2, 3) = (x(2) - x(1))/d1 w(1, 4) = (y(2) - y(1))/d2 w(2, 4) = (x(1) - x(2))/d2 do23030 i = 1,4 g(i) = h(1)*w(1,i)+h(2)*w(2,i) 23030 continue 23031 continue ierr = 0 return end quantreg/src/rqbr.f0000644000176200001440000002737613752215447014035 0ustar liggesusersC Output from Public domain Ratfor, version 1.0 subroutine rqbr(m,nn,m5,n3,n4,a,b,t,toler,ift,x,e,s,wa,wb,nsol,nds *ol,sol,dsol,lsol,h,qn,cutoff,ci,tnmat,big,lci1) integer i,j,k,kl,kount,kr,l,lsol,m,m1,m2,m3,m4,m5,ift integer kd,in,nn,n4,idxcf integer n,n1,n2,n3,nsol,ndsol,out,s(m),h(nn,nsol) logical stage,test,init,iend,lup logical lci1,lci2,skip double precision a1,aux,b1,big,d,dif,pivot,smax,t,t0,t1,tnt,dk double precision min,max,toler,zero,half,one,two double precision b(m),sol(n3,nsol),a(m,nn),x(nn),wa(m5,n4),wb(m) double precision sum,e(m),dsol(m,ndsol) double precision qn(nn),cutoff,ci(4,nn),tnmat(4,nn),tnew,told,tn parameter( zero = 0.d0) parameter( one = 1.d0) parameter( two = 2.d0) n=nn ift = 0 wa(m+2,nn+1) = one if(m5.ne.m+5)then ift = 3 endif if(n3.ne.n+3)then ift = 4 endif if(n4.ne.n+4)then ift = 5 endif if(m.le.zero.or.n.le.zero)then ift = 6 endif if(ift.le.two)then half = one/two iend = .true. lci2 = .false. lup = .true. skip = .false. idxcf = 0 tnew = zero tn = zero m1 = m+1 n1 = n+1 n2 = n+2 m2 = m+2 m3 = m+3 m4 = m+4 do23010 j = 1,n x(j) = zero 23010 continue 23011 continue do23012 i = 1,m e(i) = zero 23012 continue 23013 continue if(t.lt.zero.or.t.gt.one)then t0 = one/(two*float(m)) t1 = one-t0 t = t0 iend = .false. lci1 = .false. endif 23016 continue do23019 i = 1,m k = 1 do23021 j = 1,nn if(k.le.nn)then if(j.eq.idxcf)then skip = .true. else skip = .false. endif if(.not.skip)then wa(i,k) = a(i,j) k = k+1 endif endif 23021 continue 23022 continue wa(i,n4) = n+i wa(i,n2) = b(i) if(idxcf .ne. 0)then wa(i,n3) = tnew*a(i,idxcf) else wa(i,n3) = zero endif wa(i,n1) = wa(i,n2)-wa(i,n3) if(wa(i,n1).lt.zero)then do23033 j = 1,n4 wa(i,j) = -wa(i,j) 23033 continue 23034 continue endif 23019 continue 23020 continue do23035 j = 1,n wa(m4,j) = j wa(m2,j) = zero wa(m3,j) = zero do23037 i = 1,m aux = sign(one,wa(m4,j))*wa(i,j) wa(m2,j) = wa(m2,j)+aux*(one-sign(one,wa(i,n4))) wa(m3,j) = wa(m3,j)+aux*sign(one,wa(i,n4)) 23037 continue 23038 continue wa(m3,j) = two*wa(m3,j) 23035 continue 23036 continue dif = zero init = .false. if(.not.lci2)then do23041 k = 1,n wa(m5,k) = zero do23043 i = 1,m wa(m5,k) = wa(m5,k)+a(i,k) 23043 continue 23044 continue wa(m5,k) = wa(m5,k)/float(m) 23041 continue 23042 continue endif lsol = 1 kount = 0 23045 continue do23048 j = 1,n wa(m1,j) = wa(m2,j)+wa(m3,j)*t 23048 continue 23049 continue if(.not.init)then stage = .true. kr = 1 kl = 1 go to 30 endif 23052 continue stage = .false. 23055 continue max = -big do23058 j = kr,n d = wa(m1,j) if(d.lt.zero)then if(d.gt.(-two))then goto 23058 endif d = -d-two endif if(d.gt.max)then max = d in = j endif 23058 continue 23059 continue if(max.le.toler)then goto 23054 endif if(wa(m1,in).le.zero)then do23070 i = 1,m4 wa(i,in) = -wa(i,in) 23070 continue 23071 continue wa(m1,in) = wa(m1,in)-two wa(m2,in) = wa(m2,in)-two endif 23072 continue k = 0 do23075 i = kl,m d = wa(i,in) if(d.gt.toler)then k = k+1 wb(k) = wa(i,n1)/d s(k) = i test = .true. endif 23075 continue 23076 continue 23079 continue if(k.le.0)then test = .false. else min = big do23084 i = 1,k if(wb(i).lt.min)then j = i min = wb(i) out = s(i) endif 23084 continue 23085 continue wb(j) = wb(k) s(j) = s(k) k = k-1 endif if(.not.test.and.stage)then goto 23081 endif if(.not.test)then goto 23047 endif pivot = wa(out,in) if(wa(m1,in)-pivot-pivot.le.toler)then go to 10 endif do23094 j = kr,n3 d = wa(out,j) wa(m1,j) = wa(m1,j)-d-d wa(m2,j) = wa(m2,j)-d-d wa(out,j) = -d 23094 continue 23095 continue wa(out,n4) = -wa(out,n4) 23080 goto 23079 23081 continue do23096 i = 1,m4 d = wa(i,kr) wa(i,kr) = wa(i,in) wa(i,in) = d 23096 continue 23097 continue kr = kr+1 go to 20 10 do23098 j = kr,n3 if(j.ne.in)then wa(out,j) = wa(out,j)/pivot endif 23098 continue 23099 continue do23102 i = 1,m3 if(i.ne.out)then d = wa(i,in) do23106 j = kr,n3 if(j.ne.in)then wa(i,j) = wa(i,j)-d*wa(out,j) endif 23106 continue 23107 continue endif 23102 continue 23103 continue do23110 i = 1,m3 if(i.ne.out)then wa(i,in) = -wa(i,in)/pivot endif 23110 continue 23111 continue wa(out,in) = one/pivot d = wa(out,n4) wa(out,n4) = wa(m4,in) wa(m4,in) = d kount = kount+1 if(.not.stage)then goto 23074 endif kl = kl+1 do23116 j = kr,n4 d = wa(out,j) wa(out,j) = wa(kount,j) wa(kount,j) = d 23116 continue 23117 continue 20 if(kount+kr.eq.n1)then goto 23057 endif 30 max = -one do23120 j = kr,n if(abs(wa(m4,j)).le.n)then d = abs(wa(m1,j)) if(d.gt.max)then max = d in = j endif endif 23120 continue 23121 continue if(wa(m1,in).lt.zero)then do23128 i = 1,m4 wa(i,in) = -wa(i,in) 23128 continue 23129 continue endif 23073 goto 23072 23074 continue 23056 goto 23055 23057 continue 23053 goto 23052 23054 continue if(kr.eq.1)then do23132 j = 1,n d = abs(wa(m1,j)) if(d.le.toler.or.two-d.le.toler)then ift = 1 wa(m2,nn+1) = zero go to 80 endif 23132 continue 23133 continue endif 80 kount = 0 sum = zero if(.not.lci2)then do23138 i = 1,kl-1 k = abs(wa(i,n4)) x(k) = wa(i,n1)*sign(one,wa(i,n4)) 23138 continue 23139 continue endif do23140 i = 1,n kd = abs(wa(m4,i))-n dsol(kd,lsol) = one+wa(m1,i)/two if(wa(m4,i).lt.zero)then dsol(kd,lsol) = one-dsol(kd,lsol) endif if(.not.lci2)then sum = sum + x(i)*wa(m5,i) sol(i+3,lsol) = x(i) h(i,lsol) = kd endif 23140 continue 23141 continue do23146 i = kl,m kd = abs(wa(i,n4))-n if(wa(i,n4).lt.zero)then dsol(kd,lsol) = zero endif if(wa(i,n4).gt.zero)then dsol(kd,lsol) = one endif 23146 continue 23147 continue if(.not.lci2)then sol(1,lsol) = smax sol(2,lsol) = sum sum = zero do23154 j=kl,m d = wa(j,n1)*sign(one,wa(j,n4)) sum = sum + d*(smax + half*(sign(one,d) - one)) 23154 continue 23155 continue sol(3,lsol) = sum do23156 i=1,m dsol(i,lsol+1) = dsol(i,lsol) 23156 continue 23157 continue endif if(lci2)then a1 = zero do23160 i = 1,m a1 = a1+a(i,idxcf)*(dsol(i,lsol)+t-one) 23160 continue 23161 continue tn = a1/dsqrt(qn(idxcf)*t*(one-t)) if(abs(tn).lt.cutoff)then if(lup)then smax = big else smax = -big endif do23166 i =1,kl-1 k = abs(wa(i,n4)) sol(k,1) = wa(i,n2)*sign(one,wa(i,n4)) sol(k,2) = wa(i,n3)*sign(one,wa(i,n4))/tnew 23166 continue 23167 continue do23168 i = kl,m a1 = zero b1 = zero k = abs(wa(i,n4))-n l = 1 do23170 j = 1,n if(j.eq.idxcf)then l = l+1 endif a1 = a1 + a(k,l)*sol(j,1) b1 = b1 + a(k,l)*sol(j,2) l = l+1 23170 continue 23171 continue tnt = (b(k)-a1)/(a(k,idxcf)-b1) if(lup)then if(tnt.gt.tnew)then if(tnt.lt.smax)then smax = tnt out = i endif endif else if(tnt.lt.tnew)then if(tnt.gt.smax)then smax = tnt out = i endif endif endif 23168 continue 23169 continue if(lup)then told = tnew tnew = smax + toler ci(3,idxcf) = told - toler tnmat(3,idxcf) = tn if(.not.(tnew .lt. big-toler))then ci(3,idxcf) = big ci(4,idxcf) = big tnmat(3,idxcf) = tn tnmat(4,idxcf) = tn lup = .false. go to 70 endif else told = tnew tnew = smax - toler ci(2,idxcf) = told + toler tnmat(2,idxcf) = tn if(.not.(tnew .gt. -big+toler))then ci(2,idxcf) = -big ci(1,idxcf) = -big tnmat(2,idxcf) = tn tnmat(1,idxcf) = tn lup = .true. go to 60 endif endif do23190 i = 1,m wa(i,n3) = wa(i,n3)/told*tnew wa(i,n1) = wa(i,n2) - wa(i,n3) 23190 continue 23191 continue do23192 j = kr,n3 d = wa(out,j) wa(m1,j) = wa(m1,j) -d -d wa(m2,j) = wa(m2,j) -d -d wa(out,j) = -d 23192 continue 23193 continue wa(out,n4) = -wa(out,n4) init = .true. else if(lup)then ci(4,idxcf) = tnew - toler tnmat(4,idxcf) = tn lup = .false. go to 70 else ci(1,idxcf) = tnew + toler tnmat(1,idxcf) = tn lup = .true. go to 60 endif endif endif if((iend).and.(.not.lci2))then go to 40 endif if(.not.lci2)then init = .true. lsol = lsol+1 do23200 i = 1,m s(i) = zero 23200 continue 23201 continue do23202 j = 1,n x(j) = zero 23202 continue 23203 continue smax = two do23204 j = 1,n b1 = wa(m3,j) a1 = (-two-wa(m2,j))/b1 b1 = -wa(m2,j)/b1 if(a1.ge.t)then if(a1.lt.smax)then smax = a1 dif = (b1-a1)/two endif endif if(b1.gt.t)then if(b1.lt.smax)then smax = b1 dif = (b1-a1)/two endif endif 23204 continue 23205 continue tnt = smax+toler*(one+abs(dif)) if(tnt.ge.t1+toler)then iend = .true. endif t = tnt if(iend)then t = t1 endif endif 23046 goto 23045 23047 continue wa(m2,nn+1) = two ift = 2 go to 50 40 if(lsol.gt.2)then sol(1,1) = zero sol(3,1) = zero sol(1,lsol) = one sol(3,lsol) = zero do23220 i = 1,m dsol(i,1) = one dsol(i,lsol) = zero dsol(i,lsol+1) = zero 23220 continue 23221 continue endif l = kl-1 do23222 i = 1,l if(wa(i,n1).lt.zero)then do23226 j = kr,n4 wa(i,j) = -wa(i,j) 23226 continue 23227 continue endif 23222 continue 23223 continue 50 sum = zero if(.not.lci2)then do23230 i = kl,m k = abs(wa(i,n4)) d = wa(i,n1)*sign(one,wa(i,n4)) sum = sum+d*sign(one,d)*(half+sign(one,d)*(t-half)) k = k-n e(k) = d 23230 continue 23231 continue wa(m2,n2) = kount wa(m1,n2) = n1-kr wa(m1,n1) = sum endif if(wa(m2,nn+1).eq.two)then goto 23018 endif if(.not.lci1)then goto 23018 endif if(.not.(.not.lci2))goto 23234 lci2 = .true. n = nn-1 n1 = n+1 n2 = n+2 n3 = n+3 n4 = n+4 60 idxcf = idxcf+1 if(.not.(idxcf.gt.nn))goto 23236 goto 23018 23236 continue 70 if(.not.(lup))goto 23238 tnew = x(idxcf)+toler told = tnew ci(3,idxcf) = x(idxcf) tnmat(3,idxcf) = zero goto 23239 23238 continue tnew = x(idxcf)-toler told = tnew ci(2,idxcf) = x(idxcf) tnmat(2,idxcf) = zero 23239 continue 23234 continue 23017 goto 23016 23018 continue do23242 i=1,m dsol(i,lsol) = dsol(i,lsol+1) 23242 continue 23243 continue endif return end quantreg/src/boundc.f0000644000176200001440000000240013522271353014307 0ustar liggesusersc 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 c c Function to obtain the step length c c 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 c subroutine boundc(x1,dx1,x2,dx2,s,ds,z1,dz1,z2,dz2,w,dw,n1,n2, & beta,deltap,deltad) c integer n1,n2 double precision x1(n1),dx1(n1),x2(n2),dx2(n2),s(n1),ds(n1), & z1(n1),dz1(n1),z2(n2),dz2(n2),w(n1),dw(n1) double precision deltap,deltad,dmin1,big,one,beta parameter (big = 1.0d20, one = 1.0d0) deltap = big deltad = big do i = 1,n1 if(dx1(i) .lt. 0) deltap = dmin1(deltap, -x1(i)/dx1(i)) if(ds(i) .lt. 0) deltap = dmin1(deltap, -s(i)/ds(i)) if(dz1(i) .lt. 0) deltad = dmin1(deltad, -z1(i)/dz1(i)) if(dw(i) .lt. 0) deltad = dmin1(deltad, -w(i)/dw(i)) enddo do i = 1,n2 if(dx2(i) .lt. 0) deltap = dmin1(deltap, -x2(i)/dx2(i)) if(dz2(i) .lt. 0) deltad = dmin1(deltad, -z2(i)/dz2(i)) enddo deltap = dmin1(beta*deltap,one) deltad = dmin1(beta*deltad,one) return end quantreg/src/chlfct.f0000644000176200001440000001145414720071031014301 0ustar liggesusersc 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 c c Subroutine to perform Cholesky factorization c c 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 subroutine chlfct(m,xlindx,lindx,invp,perm,iwork,nnzdsub,jdsub, & colcnt,nsuper,snode,xsuper,nnzlmax,nsubmax, & xlnz,lnz,id,jd,d,cachsz,tmpmax,level, & tmpvec,split,ierr,it,timewd, & tiny,Large) integer m,ierr,nsub,iwsiz,nnzdsub,nnzl,nsuper,nnzlmax,nsubmax, & tmpsiz,cachsz,tmpmax,level,it, & xlindx(*),lindx(*),invp(*),perm(*),iwork(*),jdsub(*), & colcnt(*),snode(*),xsuper(*),xlnz(*),id(*),jd(*),split(*) double precision d(*),lnz(*),tmpvec(*),timewd(7),tiny,Large real gtimer,timbeg,timend external smxpy1,smxpy2,smxpy4,smxpy8 external mmpy1,mmpy2,mmpy4,mmpy8 c c Save the matrix structure from jdsub(m+2:nzzd+1),jdsub(1:m+1) c to lindx and xlindx because the matrix structure is destroyed by the c minimum degree ordering routine c do i = 1,m+1 xlindx(i) = jdsub(i) enddo do i = 1,nnzdsub lindx(i) = jdsub(m+1+i) enddo c c Reorder the matrix using minimum degree ordering routine c iwsiz = 4*m if(it .le. 1) then timbeg = gtimer() call ordmmd(m,xlindx,lindx,invp,perm,iwsiz,iwork,nsub,ierr) if (ierr .eq. -1) then ierr = 3 go to 100 endif timend = gtimer() timewd(1) = timewd(1) + timend - timbeg c c Call sfinit: Symbolic factorization initialization c to compute supernode partition and storage requirements c for symbolic factorization. New ordering is a postordering c of the nodal elimination tree c iwsiz = 7 * m + 3 timbeg = gtimer() call sfinit(m,nnzdsub,jdsub(1),jdsub(m+2),perm, & invp,colcnt,nnzl,nsub,nsuper,snode,xsuper,iwsiz, & iwork,ierr) if (ierr .eq. -1) then ierr = 4 go to 100 endif if (nnzl .gt. nnzlmax) then ierr = 5 go to 100 endif if (nsub .gt. nsubmax) then ierr = 6 go to 100 endif timend = gtimer() timewd(2) = timewd(2) + timend - timbeg endif c c Call symfct: Perform supernodal symbolic factorization c c iwsiz = nsuper + 2 * m + 1 timbeg = gtimer() call symfct(m,nnzdsub,jdsub(1),jdsub(m+2),perm,invp, & colcnt,nsuper,xsuper,snode,nsub,xlindx,lindx, & xlnz,iwsiz,iwork,ierr) if (ierr .eq. -1) then ierr = 7 go to 100 endif if (ierr .eq. -2) then ierr = 8 go to 100 endif timend = gtimer() timewd(3) = timewd(3) + timend - timbeg c c Call inpnv: Input numerical values into data structures of L c iwsiz = m timbeg = gtimer() call inpnv(m,id,jd,d,perm,invp,nsuper,xsuper,xlindx,lindx, & xlnz,lnz,iwork) timend = gtimer() timewd(4) = timewd(4) + timend - timbeg c c Call bfinit: Initialization for block factorization c timbeg = gtimer() call bfinit(m,nsuper,xsuper,snode,xlindx,lindx,cachsz,tmpsiz, & split) if (tmpsiz .gt. tmpmax) then ierr = 9 go to 100 endif timend = gtimer() timewd(5) = timewd(5) + timend - timbeg c c Call blkfct: Numerical factorization c iwsiz = 2 * m + 2 * nsuper timbeg = gtimer() if (level .eq. 1) then call blkfct(m,nsuper,xsuper,snode,split,xlindx,lindx,xlnz, & lnz,iwsiz,iwork,tmpsiz,tmpvec,ierr,mmpy1,smxpy1, & tiny,Large) elseif (level .eq. 2) then call blkfct(m,nsuper,xsuper,snode,split,xlindx,lindx,xlnz, & lnz,iwsiz,iwork,tmpsiz,tmpvec,ierr,mmpy2,smxpy2, & tiny,Large) elseif (level .eq. 4) then call blkfct(m,nsuper,xsuper,snode,split,xlindx,lindx,xlnz, & lnz,iwsiz,iwork,tmpsiz,tmpvec,ierr,mmpy4,smxpy4, & tiny,Large) elseif (level .eq. 8) then call blkfct(m,nsuper,xsuper,snode,split,xlindx,lindx,xlnz, & lnz,iwsiz,iwork,tmpsiz,tmpvec,ierr,mmpy8,smxpy8, & tiny,Large) endif if (ierr .eq. -1) then ierr = 10 go to 100 elseif (ierr .eq. -2) then ierr = 11 go to 100 elseif (ierr .eq. -3) then ierr = 12 go to 100 endif 100 continue timend = gtimer() timewd(6) = timewd(6) + timend - timbeg return end c quantreg/src/profnb.f0000644000176200001440000000152113754231224014326 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine profnb(n,p,m,a,y,t,r,d,u,wn,wp,b,nit, info) integer n,p,m,nit(3),info double precision a(p,n), y(n), t(m), b(p,m), r(p) double precision d(n), u(n), wn(n,9), wp(p,p+3) double precision zero, one, eps, beta parameter( zero = 0.0d0) parameter( one = 1.0d0) parameter( beta = 0.99995d0) parameter( eps = 1.0d-6) do23000 i = 1,m call dgemv('N',p,n,one-t(i),a,p,d,1,zero,r,1) call dscal(n,zero,wn,1) call daxpy(n,one-t(i),u,1,wn,1) call rqfnb(n,p,a,y,r,d,u,beta,eps,wn,wp,nit,info) if(info .ne. 0)then goto 23001 endif do23004 j = 1,n u(j) = one d(j) = one 23004 continue 23005 continue call dcopy(p,wp,1,b(1,i),1) 23000 continue 23001 continue return end quantreg/src/powell.f0000644000176200001440000000733613777105467014372 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine powell(n,p,p2,a,b,c,x,tau,h,f,u,s,g,d,xh,maxit,nflag) integer n,p,p2 double precision x(p),a(n,p),b(n),c(n) double precision f(n),u(p,p),s(n),g(p2),d(p),xh(p) double precision zero, one, mone, step, tau,pow integer h(p),hin,hout,k,it,inset,maxit,nflag parameter(zero = 0.0d0, one = 1.d0, mone = -1.d0) it = 0 23000 continue it = it + 1 if(it .gt. 1)then call pivot(n,p,h,hin,hout,a,u,d,xh,nflag) endif if(nflag .gt. 0)then nflag = nflag + 2 return endif do23007 i = 1,p xh(i) = b(h(i)) 23007 continue 23008 continue call dgemv('N',p,p,one,u,p,xh,1,zero,x,1) call dgemv('N',n,p,one,a,n,x,1,zero,f,1) do23009 i = 1,n if(inset(p,i,h) .gt. 0 .or. f(i) .gt. c(i))then s(i) = zero else if(b(i) .lt. f(i))then s(i) = one - tau else s(i) = - tau endif endif 23009 continue 23010 continue call dgemv('T',n,p,one,a,n,s,1,zero,xh,1) call dgemv('T',p,p,one,u,p,xh,1,zero,g,1) do23015 i = 1,p if(f(h(i)) .lt. c(h(i)))then if(b(h(i)) .lt. c(h(i)))then g(i + p) = - g(i) + one - tau else g(i + p) = - g(i) - tau endif else g(i + p) = - g(i) + tau endif g(i) = g(i) + one - tau 23015 continue 23016 continue k = idmin(p2,g,1) if(g(k) .ge. 0 .or. it .gt. maxit)then goto 23002 endif call dscal(p,zero,d,1) if(k .le. p)then call daxpy(p,one,u(1,k),1,d,1) else k = k - p call daxpy(p,mone,u(1,k),1,d,1) endif call dgemv('N',n,p,one,a,n,d,1,zero,s,1) do23025 i = 1,n call dcopy(p,x,1,xh,1) step = (b(i) - f(i))/s(i) call daxpy(p,step,d,1,xh,1) s(i) = pow(n,p,xh,a,b,c,tau) 23025 continue 23026 continue hin = idmin(n,s,1) if(inset(p,hin,h) .gt. 0)then nflag = 2 goto 23002 endif hout = h(k) 23001 goto 23000 23002 continue if(it .gt. maxit)then nflag = 1 endif return end subroutine pivot(n,p,h,hin,hout,a,b,u,v,eflag) integer n,p,h(p),hin,hout,inset,k,eflag double precision a(n,p),b(p,p),u(p),v(p) double precision zero,one parameter(zero = 0.d0, one = 1.d0) eflag = 0 k = inset(p,hout,h) if(k .eq. 0)then eflag = 1 return endif if(inset(p,hin,h) .gt. 0)then eflag = 2 return endif if(hin .lt. 1 .or. hin .gt. n)then eflag = 3 return endif call dcopy(p,a(hin,1),n,v,1) call dgemv('T',p,p,one,b,p,v,1,zero,u,1) call dcopy(p,b(1,k),1,v,1) do23037 j = 1,p do23039 i = 1,p if(j .eq. k)then b(i,j) = b(i,j)/u(k) else b(i,j) = b(i,j) - (u(j)/u(k)) * v(i) endif 23039 continue 23040 continue 23037 continue 23038 continue h(k) = hin return end integer function inset(p,k,h) integer p,k,h(p) do23043 inset = 1,p if(h(inset) .eq. k)then return endif 23043 continue 23044 continue inset = 0 return end double precision function pow(n,p,x,a,b,c,tau) integer n,p double precision x(p),a(n,p),b(n),c(n) double precision tau,u,zero,rho,fit,ddot parameter(zero= 0.d0) pow = zero do23047 i = 1,n fit = ddot(p,a(i,1),n,x,1) u = b(i) - min(fit,c(i)) pow = pow + rho(u, tau) 23047 continue 23048 continue return end double precision function rho(u,tau) double precision u,tau,one parameter(one = 1.d0) if(u .lt. 0)then rho = u * (tau - one) else rho = u * tau endif return end quantreg/src/rqfnb.f0000644000176200001440000001144114470134064014152 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine rqfnb(n,p,a,y,rhs,d,u,beta,eps,wn,wp,nit,info) integer n,p,info,nit(3) double precision a(p,n),y(n),rhs(p),d(n),u(n),wn(n,9),wp(p,p+3) double precision one,beta,eps parameter( one = 1.0d0) call lpfnb(n,p,a,y,rhs,d,u,beta,eps,wn(1,1),wn(1,2), wp(1,1),wn(1, *3),wn(1,4),wn(1,5),wn(1,6), wp(1,2),wn(1,7),wn(1,8),wn(1,9),wp(1,3 *),wp(1,4),nit,info) return end subroutine lpfnb(n,p,a,c,b,d,u,beta,eps,x,s,y,z,w, dx,ds,dy,dz,dw, *dr,rhs,ada,nit,info) integer n,p,pp,i,info,nit(3),maxit double precision a(p,n),c(n),b(p) double precision zero,one,mone,big,ddot,dmax1,dmin1,dxdz,dsdw double precision deltap,deltad,beta,eps,mu,gap,g double precision x(n),u(n),s(n),y(p),z(n),w(n),d(n),rhs(p),ada(p,p *) double precision dx(n),ds(n),dy(p),dz(n),dw(n),dr(n) parameter( zero = 0.0d0) parameter( one = 1.0d0) parameter( mone = -1.0d0) parameter( big = 1.0d+20) parameter( maxit = 500) nit(1)=0 nit(2)=0 nit(3)=n pp=p*p call dgemv('N',p,n,one,a,p,c,1,zero,y,1) do23000 i=1,n d(i)=one 23000 continue 23001 continue call stepy(n,p,a,d,y,ada,info) if(info .ne. 0)then return endif call dcopy(n,c,1,s,1) call dgemv('T',p,n,mone,a,p,y,1,one,s,1) do23004 i=1,n if(dabs(s(i)).lt.eps)then z(i)=dmax1(s(i), zero) + eps w(i)=dmax1(-s(i),zero) + eps else z(i)=dmax1(s(i), zero) w(i)=dmax1(-s(i),zero) endif s(i)=u(i)-x(i) 23004 continue 23005 continue gap = ddot(n,z,1,x,1)+ddot(n,w,1,s,1) 23008 if(gap .gt. eps .and. nit(1).lt.maxit)then nit(1)=nit(1)+1 do23010 i = 1,n d(i) = one/(z(i)/x(i) + w(i)/s(i)) ds(i)=z(i)-w(i) dz(i)=d(i)*ds(i) 23010 continue 23011 continue call dcopy(p,b,1,dy,1) call dgemv('N',p,n,mone,a,p,x,1,one,dy,1) call dgemv('N',p,n,one,a,p,dz,1,one,dy,1) call dcopy(p,dy,1,rhs,1) call stepy(n,p,a,d,dy,ada,info) if(info .ne. 0)then return endif call dgemv('T',p,n,one,a,p,dy,1,mone,ds,1) deltap=big deltad=big do23014 i=1,n dx(i)=d(i)*ds(i) ds(i)=-dx(i) dz(i)=-z(i)*(dx(i)/x(i) + one) dw(i)=-w(i)*(ds(i)/s(i) + one) if(dx(i).lt.0)then deltap=dmin1(deltap,-x(i)/dx(i)) endif if(ds(i).lt.0)then deltap=dmin1(deltap,-s(i)/ds(i)) endif if(dz(i).lt.0)then deltad=dmin1(deltad,-z(i)/dz(i)) endif if(dw(i).lt.0)then deltad=dmin1(deltad,-w(i)/dw(i)) endif 23014 continue 23015 continue deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) if(min(deltap,deltad) .lt. one)then nit(2)=nit(2)+1 mu = ddot(n,x,1,z,1)+ddot(n,s,1,w,1) g = mu + deltap*ddot(n,dx,1,z,1)+ deltad*ddot(n,dz,1,x,1) + deltap **deltad*ddot(n,dz,1,dx,1)+ deltap*ddot(n,ds,1,w,1)+ deltad*ddot(n, *dw,1,s,1) + deltap*deltad*ddot(n,ds,1,dw,1) mu = mu * ((g/mu)**3) /dble(2*n) do23026 i=1,n dr(i)=d(i)*(mu*(1/s(i)-1/x(i))+ dx(i)*dz(i)/x(i)-ds(i)*dw(i)/s(i)) 23026 continue 23027 continue call dswap(p,rhs,1,dy,1) call dgemv('N',p,n,one,a,p,dr,1,one,dy,1) call dpotrs('U',p,1,ada,p,dy,p,info) call dgemv('T',p,n,one,a,p,dy,1,zero,u,1) deltap=big deltad=big do23028 i=1,n dxdz = dx(i)*dz(i) dsdw = ds(i)*dw(i) dx(i)= d(i)*(u(i)-z(i)+w(i))-dr(i) ds(i)= -dx(i) dz(i)= -z(i)+(mu - z(i)*dx(i) - dxdz)/x(i) dw(i)= -w(i)+(mu - w(i)*ds(i) - dsdw)/s(i) if(dx(i).lt.0)then deltap=dmin1(deltap,-x(i)/dx(i)) endif if(ds(i).lt.0)then deltap=dmin1(deltap,-s(i)/ds(i)) endif if(dz(i).lt.0)then deltad=dmin1(deltad,-z(i)/dz(i)) endif if(dw(i).lt.0)then deltad=dmin1(deltad,-w(i)/dw(i)) endif 23028 continue 23029 continue deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) endif call daxpy(n,deltap,dx,1,x,1) call daxpy(n,deltap,ds,1,s,1) call daxpy(p,deltad,dy,1,y,1) call daxpy(n,deltad,dz,1,z,1) call daxpy(n,deltad,dw,1,w,1) gap = ddot(n,z,1,x,1)+ddot(n,w,1,s,1) goto 23008 endif 23009 continue call daxpy(n,mone,w,1,z,1) call dswap(n,z,1,x,1) return end subroutine stepy(n,p,a,d,b,ada,info) integer n,p,pp,i,info double precision a(p,n),b(p),d(n),ada(p,p),zero parameter( zero = 0.0d0) pp=p*p do23038 j=1,p do23040 k=1,p ada(j,k)=zero 23040 continue 23041 continue 23038 continue 23039 continue do23042 i=1,n call dsyr('U',p,d(i),a(1,i),1,ada,p) 23042 continue 23043 continue call dposv('U',p,1,ada,p,b,p,info) return end quantreg/src/cholesky.f0000644000176200001440000067473114705701261014704 0ustar liggesusersC*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************ ASSMB .... INDEXED ASSEMBLY OPERATION ************ C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS ROUTINE PERFORMS AN INDEXED ASSEMBLY (I.E., SCATTER-ADD) C OPERATION, ASSUMING DATA STRUCTURES USED IN SOME OF OUR SPARSE C CHOLESKY CODES. C C INPUT PARAMETERS: C M - NUMBER OF ROWS IN Y. C Q - NUMBER OF COLUMNS IN Y. C Y - BLOCK UPDATE TO BE INCORPORATED INTO FACTOR C STORAGE. C RELIND - RELATIVE INDICES FOR MAPPING THE UPDATES C ONTO THE TARGET COLUMNS. C XLNZ - POINTERS TO THE START OF EACH COLUMN IN THE C TARGET MATRIX. C C OUTPUT PARAMETERS: C LNZ - CONTAINS COLUMNS MODIFIED BY THE UPDATE C MATRIX. C C*********************************************************************** C SUBROUTINE ASSMB ( M , Q , Y , RELIND, XLNZ , & LNZ , LDA ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER LDA , M , Q INTEGER XLNZ(*) INTEGER RELIND(*) DOUBLE PRECISION LNZ(*) , Y(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER ICOL , IL1 , IR , IY1 , LBOT1 , & YCOL , YOFF1 C C*********************************************************************** C C YOFF1 = 0 DO 200 ICOL = 1, Q YCOL = LDA - RELIND(ICOL) LBOT1 = XLNZ(YCOL+1) - 1 CDIR$ IVDEP DO 100 IR = ICOL, M IL1 = LBOT1 - RELIND(IR) IY1 = YOFF1 + IR LNZ(IL1) = LNZ(IL1) + Y(IY1) Y(IY1) = 0.0D0 100 CONTINUE YOFF1 = IY1 - ICOL 200 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** BETREE ..... BINARY TREE REPRESENTATION OF ETREE ******* C*********************************************************************** C*********************************************************************** C C WRITTEN BY JOSEPH LIU (JUL 17, 1985) C C PURPOSE: C TO DETERMINE THE BINARY TREE REPRESENTATION OF THE ELIMINATION C TREE GIVEN BY THE PARENT VECTOR. THE RETURNED REPRESENTATION C WILL BE GIVEN BY THE FIRST-SON AND BROTHER VECTORS. THE ROOT C OF THE BINARY TREE IS ALWAYS NEQNS. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C PARENT - THE PARENT VECTOR OF THE ELIMINATION TREE. C IT IS ASSUMED THAT PARENT(I) > I EXCEPT OF C THE ROOTS. C C OUTPUT PARAMETERS: C FSON - THE FIRST SON VECTOR. C BROTHR - THE BROTHER VECTOR. C C*********************************************************************** C SUBROUTINE BETREE ( NEQNS , PARENT, FSON , BROTHR ) C C*********************************************************************** C INTEGER BROTHR(*) , FSON(*) , & PARENT(*) C INTEGER NEQNS C C*********************************************************************** C INTEGER LROOT , NODE , NDPAR C C*********************************************************************** C IF ( NEQNS .LE. 0 ) RETURN C DO 100 NODE = 1, NEQNS FSON(NODE) = 0 BROTHR(NODE) = 0 100 CONTINUE LROOT = NEQNS C ------------------------------------------------------------ C FOR EACH NODE := NEQNS-1 STEP -1 DOWNTO 1, DO THE FOLLOWING. C ------------------------------------------------------------ IF ( NEQNS .LE. 1 ) RETURN DO 300 NODE = NEQNS-1, 1, -1 NDPAR = PARENT(NODE) IF ( NDPAR .LE. 0 .OR. NDPAR .EQ. NODE ) THEN C ------------------------------------------------- C NODE HAS NO PARENT. GIVEN STRUCTURE IS A FOREST. C SET NODE TO BE ONE OF THE ROOTS OF THE TREES. C ------------------------------------------------- BROTHR(LROOT) = NODE LROOT = NODE ELSE C ------------------------------------------- C OTHERWISE, BECOMES FIRST SON OF ITS PARENT. C ------------------------------------------- BROTHR(NODE) = FSON(NDPAR) FSON(NDPAR) = NODE ENDIF 300 CONTINUE BROTHR(LROOT) = 0 C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** BFINIT ..... INITIALIZATION FOR BLOCK FACTORIZATION ****** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE COMPUTES ITEMS NEEDED BY THE LEFT-LOOKING C BLOCK-TO-BLOCK CHOLESKY FACTORITZATION ROUTINE BLKFCT. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C NSUPER - NUMBER OF SUPERNODES. C XSUPER - INTEGER ARRAY OF SIZE (NSUPER+1) CONTAINING C THE SUPERNODE PARTITIONING. C SNODE - SUPERNODE MEMBERSHIP. C (XLINDX,LINDX) - ARRAYS DESCRIBING THE SUPERNODAL STRUCTURE. C CACHSZ - CACHE SIZE (IN KBYTES). C C OUTPUT PARAMETERS: C TMPSIZ - SIZE OF WORKING STORAGE REQUIRED BY BLKFCT. C SPLIT - SPLITTING OF SUPERNODES SO THAT THEY FIT C INTO CACHE. C C*********************************************************************** C SUBROUTINE BFINIT ( NEQNS , NSUPER, XSUPER, SNODE , XLINDX, & LINDX , CACHSZ, TMPSIZ, SPLIT ) C C*********************************************************************** C INTEGER CACHSZ, NEQNS , NSUPER, TMPSIZ INTEGER XLINDX(*) , XSUPER(*) INTEGER LINDX (*) , SNODE (*) , & SPLIT(*) C C*********************************************************************** C C --------------------------------------------------- C DETERMINE FLOATING POINT WORKING SPACE REQUIREMENT. C --------------------------------------------------- CALL FNTSIZ ( NSUPER, XSUPER, SNODE , XLINDX, LINDX , & TMPSIZ ) C C ------------------------------- C PARTITION SUPERNODES FOR CACHE. C ------------------------------- CALL FNSPLT ( NEQNS , NSUPER, XSUPER, XLINDX, CACHSZ, & SPLIT ) C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.3 C Last modified: March 6, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratoy C C*********************************************************************** C*********************************************************************** C********* BLKFC2 ..... BLOCK GENERAL SPARSE CHOLESKY ********* C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE FACTORS A SPARSE POSITIVE DEFINITE MATRIX. C THE COMPUTATION IS ORGANIZED AROUND KERNELS THAT PERFORM C SUPERNODE-TO-SUPERNODE UPDATES, I.E., BLOCK-TO-BLOCK UPDATES. C C INPUT PARAMETERS: C NSUPER - NUMBER OF SUPERNODES. C XSUPER - SUPERNODE PARTITION. C SNODE - MAPS EACH COLUMN TO THE SUPERNODE CONTAINING C IT. C SPLIT - SPLITTING OF SUPERNODES SO THAT THEY FIT C INTO CACHE. C (XLINDX,LINDX) - ROW INDICES FOR EACH SUPERNODE (INCLUDING C THE DIAGONAL ELEMENTS). C (XLNZ,LNZ) - ON INPUT, CONTAINS MATRIX TO BE FACTORED. C TMPSIZ - SIZE OF TEMPORARY WORKING STORAGE. C MMPYN - EXTERNAL ROUTINE: MATRIX-MATRIX MULTIPLY. C SMXPY - EXTERNAL ROUTINE: MATRIX-VECTOR MULTIPLY. c tiny - tiny number; values below tiny * max(diag) are replaced by 'Large'; was 10^{-30} hardcoded c Large - Large number ("Infinite") to replace tiny diagonal entries in Cholesky ; was 10^{128} " C C OUTPUT PARAMETERS: C LNZ - ON OUTPUT, CONTAINS CHOLESKY FACTOR. C IFLAG - ERROR FLAG. C 0: SUCCESSFUL FACTORIZATION. C -1: NONPOSITIVE DIAGONAL ENCOUNTERED, C MATRIX IS NOT POSITIVE DEFINITE. C -2: INSUFFICIENT WORKING STORAGE C [TEMP(*)]. C C WORKING PARAMETERS: C LINK - LINKS TOGETHER THE SUPERNODES IN A SUPERNODE C ROW. C LENGTH - LENGTH OF THE ACTIVE PORTION OF EACH C SUPERNODE. C INDMAP - VECTOR OF SIZE NEQNS INTO WHICH THE GLOBAL C INDICES ARE SCATTERED. C RELIND - MAPS LOCATIONS IN THE UPDATING COLUMNS TO C THE CORRESPONDING LOCATIONS IN THE UPDATED C COLUMNS. (RELIND IS GATHERED FROM INDMAP). C TEMP - REAL VECTOR FOR ACCUMULATING UPDATES. MUST C ACCOMODATE ALL COLUMNS OF A SUPERNODE. C C*********************************************************************** C SUBROUTINE BLKFC2 ( NSUPER, XSUPER, SNODE , SPLIT , XLINDX, & LINDX , XLNZ , LNZ , LINK , LENGTH, & INDMAP, RELIND, TMPSIZ, TEMP , IFLAG , & MMPYN , SMXPY, tiny, Large ) C C********************************************************************* C C ----------- C PARAMETERS. C ----------- C EXTERNAL MMPYN , SMXPY INTEGER XLINDX(*) , XLNZ(*) INTEGER INDMAP(*) , LENGTH(*) , & LINDX(*) , LINK(*) , & RELIND(*) , SNODE(*) , & SPLIT(*) , XSUPER(*) INTEGER IFLAG , NSUPER, TMPSIZ DOUBLE PRECISION LNZ(*) , TEMP(*), tiny, Large C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER FJCOL , FKCOL , I , ILEN , ILPNT , & INDDIF, JLEN , JLPNT , JSUP , JXPNT , & KFIRST, KLAST , KLEN , KLPNT , KSUP , & KXPNT , LJCOL , NCOLUP, NJCOLS, NKCOLS, & NXKSUP, NXTCOL, NXTSUP, STORE CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC DOUBLE PRECISION MXDIAG INTEGER NTINY CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC C NXTCOL = -1 ! -Wall C********************************************************************* C IFLAG = 0 NTINY = 0 C C ----------------------------------------------------------- C INITIALIZE EMPTY ROW LISTS IN LINK(*) AND ZERO OUT TEMP(*). C ----------------------------------------------------------- DO 100 JSUP = 1, NSUPER LINK(JSUP) = 0 100 CONTINUE DO 200 I = 1, TMPSIZ TEMP(I) = 0.0D+00 200 CONTINUE CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC C COMPUTE MAXIMUM DIAGONAL ELEMENT IN INPUT MATRIX MXDIAG = 0.D0 DO 201 I = 1, XSUPER(NSUPER+1)-1 FJCOL = XLNZ(I) MXDIAG = MAX(MXDIAG, LNZ(FJCOL)) 201 CONTINUE CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC C C --------------------------- C FOR EACH SUPERNODE JSUP ... C --------------------------- DO 600 JSUP = 1, NSUPER C C ------------------------------------------------ C FJCOL ... FIRST COLUMN OF SUPERNODE JSUP. C LJCOL ... LAST COLUMN OF SUPERNODE JSUP. C NJCOLS ... NUMBER OF COLUMNS IN SUPERNODE JSUP. C JLEN ... LENGTH OF COLUMN FJCOL. C JXPNT ... POINTER TO INDEX OF FIRST C NONZERO IN COLUMN FJCOL. C ------------------------------------------------ FJCOL = XSUPER(JSUP) NJCOLS = XSUPER(JSUP+1) - FJCOL LJCOL = FJCOL + NJCOLS - 1 JLEN = XLNZ(FJCOL+1) - XLNZ(FJCOL) JXPNT = XLINDX(JSUP) C print *, 'Super Node: ', JSUP, ' first: ', FJCOL, C . ' last: ', LJCOL C C C ----------------------------------------------------- C SET UP INDMAP(*) TO MAP THE ENTRIES IN UPDATE COLUMNS C TO THEIR CORRESPONDING POSITIONS IN UPDATED COLUMNS, C RELATIVE THE THE BOTTOM OF EACH UPDATED COLUMN. C ----------------------------------------------------- CALL LDINDX ( JLEN, LINDX(JXPNT), INDMAP ) C C ----------------------------------------- C FOR EVERY SUPERNODE KSUP IN ROW(JSUP) ... C ----------------------------------------- KSUP = LINK(JSUP) 300 IF ( KSUP .GT. 0 ) THEN NXKSUP = LINK(KSUP) C C ------------------------------------------------------- C GET INFO ABOUT THE CMOD(JSUP,KSUP) UPDATE. C C FKCOL ... FIRST COLUMN OF SUPERNODE KSUP. C NKCOLS ... NUMBER OF COLUMNS IN SUPERNODE KSUP. C KLEN ... LENGTH OF ACTIVE PORTION OF COLUMN FKCOL. C KXPNT ... POINTER TO INDEX OF FIRST NONZERO IN ACTIVE C PORTION OF COLUMN FJCOL. C ------------------------------------------------------- FKCOL = XSUPER(KSUP) NKCOLS = XSUPER(KSUP+1) - FKCOL KLEN = LENGTH(KSUP) KXPNT = XLINDX(KSUP+1) - KLEN C C ------------------------------------------- C PERFORM CMOD(JSUP,KSUP), WITH SPECIAL CASES C HANDLED DIFFERENTLY. C ------------------------------------------- C IF ( KLEN .NE. JLEN ) THEN C C ------------------------------------------- C SPARSE CMOD(JSUP,KSUP). C C NCOLUP ... NUMBER OF COLUMNS TO BE UPDATED. C ------------------------------------------- C DO 400 I = 0, KLEN-1 NXTCOL = LINDX(KXPNT+I) IF ( NXTCOL .GT. LJCOL ) GO TO 500 400 CONTINUE I = KLEN 500 CONTINUE NCOLUP = I C IF ( NKCOLS .EQ. 1 ) THEN C C ---------------------------------------------- C UPDATING TARGET SUPERNODE BY TRIVIAL C SUPERNODE (WITH ONE COLUMN). C C KLPNT ... POINTER TO FIRST NONZERO IN ACTIVE C PORTION OF COLUMN FKCOL. C ---------------------------------------------- KLPNT = XLNZ(FKCOL+1) - KLEN CALL MMPYI ( KLEN, NCOLUP, LINDX(KXPNT), & LNZ(KLPNT), XLNZ, LNZ, INDMAP ) C ELSE C C -------------------------------------------- C KFIRST ... FIRST INDEX OF ACTIVE PORTION OF C SUPERNODE KSUP (FIRST COLUMN TO C BE UPDATED). C KLAST ... LAST INDEX OF ACTIVE PORTION OF C SUPERNODE KSUP. C -------------------------------------------- C KFIRST = LINDX(KXPNT) KLAST = LINDX(KXPNT+KLEN-1) INDDIF = INDMAP(KFIRST) - INDMAP(KLAST) C IF ( INDDIF .LT. KLEN ) THEN C C --------------------------------------- C DENSE CMOD(JSUP,KSUP). C C ILPNT ... POINTER TO FIRST NONZERO IN C COLUMN KFIRST. C ILEN ... LENGTH OF COLUMN KFIRST. C --------------------------------------- ILPNT = XLNZ(KFIRST) ILEN = XLNZ(KFIRST+1) - ILPNT CALL MMPY ( KLEN, NKCOLS, NCOLUP, & SPLIT(FKCOL), XLNZ(FKCOL), & LNZ, LNZ(ILPNT), ILEN, MMPYN ) C ELSE C C ------------------------------- C GENERAL SPARSE CMOD(JSUP,KSUP). C COMPUTE CMOD(JSUP,KSUP) UPDATE C IN WORK STORAGE. C ------------------------------- STORE = KLEN * NCOLUP - NCOLUP * & (NCOLUP-1) / 2 IF ( STORE .GT. TMPSIZ ) THEN IFLAG = -2 RETURN ENDIF CALL MMPY ( KLEN, NKCOLS, NCOLUP, & SPLIT(FKCOL), XLNZ(FKCOL), & LNZ, TEMP, KLEN, MMPYN ) C ---------------------------------------- C GATHER INDICES OF KSUP RELATIVE TO JSUP. C ---------------------------------------- CALL IGATHR ( KLEN, LINDX(KXPNT), & INDMAP, RELIND ) C -------------------------------------- C INCORPORATE THE CMOD(JSUP,KSUP) BLOCK C UPDATE INTO THE TO APPROPRIATE COLUMNS C OF L. C -------------------------------------- CALL ASSMB ( KLEN, NCOLUP, TEMP, RELIND, & XLNZ(FJCOL), LNZ, JLEN ) C ENDIF C ENDIF C ELSE C C ---------------------------------------------- C DENSE CMOD(JSUP,KSUP). C JSUP AND KSUP HAVE IDENTICAL STRUCTURE. C C JLPNT ... POINTER TO FIRST NONZERO IN COLUMN C FJCOL. C ---------------------------------------------- JLPNT = XLNZ(FJCOL) CALL MMPY ( KLEN, NKCOLS, NJCOLS, SPLIT(FKCOL), & XLNZ(FKCOL), LNZ, LNZ(JLPNT), JLEN, & MMPYN ) NCOLUP = NJCOLS IF ( KLEN .GT. NJCOLS ) THEN NXTCOL = LINDX(JXPNT+NJCOLS) ENDIF C ENDIF C C ------------------------------------------------ C LINK KSUP INTO LINKED LIST OF THE NEXT SUPERNODE C IT WILL UPDATE AND DECREMENT KSUP'S ACTIVE C LENGTH. C ------------------------------------------------ IF ( KLEN .GT. NCOLUP ) THEN NXTSUP = SNODE(NXTCOL) LINK(KSUP) = LINK(NXTSUP) LINK(NXTSUP) = KSUP LENGTH(KSUP) = KLEN - NCOLUP ELSE LENGTH(KSUP) = 0 ENDIF C C ------------------------------- C NEXT UPDATING SUPERNODE (KSUP). C ------------------------------- KSUP = NXKSUP GO TO 300 C ENDIF C C ---------------------------------------------- C APPLY PARTIAL CHOLESKY TO THE COLUMNS OF JSUP. C ---------------------------------------------- CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC CALL CHLSUP ( JLEN, NJCOLS, SPLIT(FJCOL), XLNZ(FJCOL), LNZ, & MXDIAG, NTINY, IFLAG, MMPYN, SMXPY, & tiny, Large) IF ( IFLAG .NE. 0 ) THEN IFLAG = -1 RETURN ENDIF C C ----------------------------------------------- C INSERT JSUP INTO LINKED LIST OF FIRST SUPERNODE C IT WILL UPDATE. C ----------------------------------------------- IF ( JLEN .GT. NJCOLS ) THEN NXTCOL = LINDX(JXPNT+NJCOLS) NXTSUP = SNODE(NXTCOL) LINK(JSUP) = LINK(NXTSUP) LINK(NXTSUP) = JSUP LENGTH(JSUP) = JLEN - NJCOLS ELSE LENGTH(JSUP) = 0 ENDIF C 600 CONTINUE C CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC C IF(NTINY .NE. 0) WRITE(6,699) NTINY C 699 FORMAT(1X,' FOUND ',I6,' TINY DIAGONALS; REPLACED WITH INF') C C SET IFLAG TO -1 TO INDICATE PRESENCE OF TINY DIAGONALS C IF(NTINY .NE. 0) IFLAG = 16 + NTINY C MM(2024-06-07): s / 17 / 16+NTINY / for more information C PN(4/16/09): IFLAG was -1 but set to = 17 to be consistent with ierr CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC RETURN END ! of BLKFC2 () C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: March 6, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C********* BLKFCT ..... BLOCK GENERAL SPARSE CHOLESKY ********* C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE CALLS THE BLOCK GENERAL SPARSE CHOLESKY ROUTINE, C BLKFC2. C C INPUT PARAMETERS: C NSUPER - NUMBER OF SUPERNODES. C XSUPER - SUPERNODE PARTITION. C SNODE - MAPS EACH COLUMN TO THE SUPERNODE CONTAINING C IT. C SPLIT - SPLITTING OF SUPERNODES SO THAT THEY FIT C INTO CACHE. C (XLINDX,LINDX) - ROW INDICES FOR EACH SUPERNODE (INCLUDING C THE DIAGONAL ELEMENTS). C (XLNZ,LNZ) - ON INPUT, CONTAINS MATRIX TO BE FACTORED. C IWSIZ - SIZE OF INTEGER WORKING STORAGE C TMPSIZ - SIZE OF FLOATING POINT WORKING STORAGE. C MMPYN - EXTERNAL ROUTINE: MATRIX-MATRIX MULTIPLY. C SMXPY - EXTERNAL ROUTINE: MATRIX-VECTOR MULTIPLY. C C OUTPUT PARAMETERS: C LNZ - ON OUTPUT, CONTAINS CHOLESKY FACTOR. C IFLAG - ERROR FLAG. C 0: SUCCESSFUL FACTORIZATION. C -1: NONPOSITIVE DIAGONAL ENCOUNTERED, C MATRIX IS NOT POSITIVE DEFINITE. C -2: INSUFFICIENT WORKING STORAGE C [TEMP(*)]. C -3: INSUFFICIENT WORKING STORAGE C [IWORK(*)]. C C WORKING PARAMETERS: C IWORK - INTEGER WORKING STORAGE OF LENGTH C 2*NEQNS + 2*NSUPER. C TMPVEC - DOUBLE PRECISION WORKING STORAGE OF LENGTH C NEQNS. C C*********************************************************************** C SUBROUTINE BLKFCT ( NEQNS , NSUPER, XSUPER, SNODE , SPLIT , & XLINDX, LINDX , XLNZ , LNZ , IWSIZ , & IWORK , TMPSIZ, TMPVEC, IFLAG , MMPYN , & SMXPY, tiny, Large ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C EXTERNAL MMPYN , SMXPY INTEGER XLINDX(*) , XLNZ(*) INTEGER IWORK(*) , LINDX(*) , & SNODE(*) , SPLIT(*) , & XSUPER(*) INTEGER IFLAG , IWSIZ , NEQNS , NSUPER, TMPSIZ DOUBLE PRECISION LNZ(*) , TMPVEC(*), tiny, Large C C********************************************************************* C IFLAG = 0 IF ( IWSIZ .LT. 2*NEQNS+2*NSUPER ) THEN IFLAG = -3 RETURN ENDIF CALL BLKFC2 ( NSUPER, XSUPER, SNODE , SPLIT , XLINDX, & LINDX , XLNZ , LNZ , & IWORK(1) , & IWORK(NSUPER+1) , & IWORK(2*NSUPER+1) , & IWORK(2*NSUPER+NEQNS+1) , & TMPSIZ, TMPVEC, IFLAG , MMPYN , & SMXPY , tiny, Large ) RETURN END ! of BLKFCT () C*********************************************************************** C*********************************************************************** C C Written: October 6, 1996 by SJW. Based on routine BLKSLV of C Esmond G. Ng and Barry W. Peyton. C C Modified: Sept 30, 1999 to improve efficiency in the case C in which the right-hand side and solution are both C expected to be sparse. Happens a lot in "dense" C column handling. C C*********************************************************************** C*********************************************************************** C********* BLKSLB ... BACK TRIANGULAR SUBSTITUTION ********** C*********************************************************************** C*********************************************************************** C C PURPOSE: C GIVEN THE CHOLESKY FACTORIZATION OF A SPARSE SYMMETRIC C POSITIVE DEFINITE MATRIX, THIS SUBROUTINE PERFORMS THE C BACKWARD TRIANGULAR SUBSTITUTION. IT USES OUTPUT FROM BLKFCT. C C INPUT PARAMETERS: C NSUPER - NUMBER OF SUPERNODES. C XSUPER - SUPERNODE PARTITION. C (XLINDX,LINDX) - ROW INDICES FOR EACH SUPERNODE. C (XLNZ,LNZ) - CHOLESKY FACTOR. C C UPDATED PARAMETERS: C RHS - ON INPUT, CONTAINS THE RIGHT HAND SIDE. ON C OUTPUT, CONTAINS THE SOLUTION. C C*********************************************************************** C SUBROUTINE BLKSLB ( NSUPER, XSUPER, XLINDX, LINDX , XLNZ , & LNZ , RHS ) C C*********************************************************************** C INTEGER NSUPER INTEGER LINDX(*) , XSUPER(*) INTEGER XLINDX(*) , XLNZ(*) DOUBLE PRECISION LNZ(*) , RHS(*) C C*********************************************************************** C INTEGER FJCOL , I , IPNT , IX , IXSTOP, & IXSTRT, JCOL , JPNT , JSUP , LJCOL DOUBLE PRECISION T C C*********************************************************************** C IF ( NSUPER .LE. 0 ) RETURN C ------------------------- C BACKWARD SUBSTITUTION ... C ------------------------- LJCOL = XSUPER(NSUPER+1) - 1 DO 600 JSUP = NSUPER, 1, -1 FJCOL = XSUPER(JSUP) IXSTOP = XLNZ(LJCOL+1) - 1 JPNT = XLINDX(JSUP) + (LJCOL - FJCOL) DO 500 JCOL = LJCOL, FJCOL, -1 IXSTRT = XLNZ(JCOL) IPNT = JPNT + 1 T = RHS(JCOL) CDIR$ IVDEP DO 400 IX = IXSTRT+1, IXSTOP I = LINDX(IPNT) IF(RHS(I) .NE. 0.D0) T = T - LNZ(IX)*RHS(I) IPNT = IPNT + 1 400 CONTINUE IF(T .NE. 0.D0) THEN RHS(JCOL) = T/LNZ(IXSTRT) ELSE RHS(JCOL) = 0.D0 ENDIF IXSTOP = IXSTRT - 1 JPNT = JPNT - 1 500 CONTINUE LJCOL = FJCOL - 1 600 CONTINUE C RETURN END ! of BLKSLB() C*********************************************************************** C*********************************************************************** C C Written: October 6, 1996 by SJW. Based on routine BLKSLV of C Esmond G. Ng and Barry W. Peyton. C C Modified: Sept 30, 1999 to improve efficiency in the case C in which the right-hand side and solution are both C expected to be sparse. Happens a lot in "dense" C column handling. C C*********************************************************************** C*********************************************************************** C********* BLKSLF ... FORWARD TRIANGULAR SUBSTITUTION ********** C*********************************************************************** C*********************************************************************** C C PURPOSE: C GIVEN THE CHOLESKY FACTORIZATION OF A SPARSE SYMMETRIC C POSITIVE DEFINITE MATRIX, THIS SUBROUTINE PERFORMS THE C FORWARD TRIANGULAR SUBSTITUTIOn. IT USES OUTPUT FROM BLKFCT. C C INPUT PARAMETERS: C NSUPER - NUMBER OF SUPERNODES. C XSUPER - SUPERNODE PARTITION. C (XLINDX,LINDX) - ROW INDICES FOR EACH SUPERNODE. C (XLNZ,LNZ) - CHOLESKY FACTOR. C C UPDATED PARAMETERS: C RHS - ON INPUT, CONTAINS THE RIGHT HAND SIDE. ON C OUTPUT, CONTAINS THE SOLUTION. C C*********************************************************************** C SUBROUTINE BLKSLF ( NSUPER, XSUPER, XLINDX, LINDX , XLNZ , & LNZ , RHS ) C C*********************************************************************** C INTEGER NSUPER INTEGER LINDX(*) , XSUPER(*) INTEGER XLINDX(*) , XLNZ(*) DOUBLE PRECISION LNZ(*) , RHS(*) C C*********************************************************************** C INTEGER FJCOL , I , IPNT , IX , IXSTOP, & IXSTRT, JCOL , JPNT , JSUP , LJCOL DOUBLE PRECISION T C C*********************************************************************** C IF ( NSUPER .LE. 0 ) RETURN C C ------------------------ C FORWARD SUBSTITUTION ... C ------------------------ FJCOL = XSUPER(1) DO 300 JSUP = 1, NSUPER LJCOL = XSUPER(JSUP+1) - 1 IXSTRT = XLNZ(FJCOL) JPNT = XLINDX(JSUP) DO 200 JCOL = FJCOL, LJCOL IXSTOP = XLNZ(JCOL+1) - 1 IF(RHS(JCOL) .NE. 0.D0) THEN T = RHS(JCOL)/LNZ(IXSTRT) RHS(JCOL) = T IPNT = JPNT + 1 CDIR$ IVDEP DO 100 IX = IXSTRT+1, IXSTOP I = LINDX(IPNT) RHS(I) = RHS(I) - T*LNZ(IX) IPNT = IPNT + 1 100 CONTINUE ENDIF IXSTRT = IXSTOP + 1 JPNT = JPNT + 1 200 CONTINUE FJCOL = LJCOL + 1 300 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C Modified: Sept 30, 1999 to improve efficiency in the case C in which the right-hand side and solution are both C expected to be sparse. Happens a lot in "dense" C column handling. C C*********************************************************************** C*********************************************************************** C********* BLKSLV ... BLOCK TRIANGULAR SOLUTIONS ********** C*********************************************************************** C*********************************************************************** C C PURPOSE: C GIVEN THE CHOLESKY FACTORIZATION OF A SPARSE SYMMETRIC C POSITIVE DEFINITE MATRIX, THIS SUBROUTINE PERFORMS THE C TRIANGULAR SOLUTION. IT USES OUTPUT FROM BLKFCT. C C INPUT PARAMETERS: C NSUPER - NUMBER OF SUPERNODES. C XSUPER - SUPERNODE PARTITION. C (XLINDX,LINDX) - ROW INDICES FOR EACH SUPERNODE. C (XLNZ,LNZ) - CHOLESKY FACTOR. C C UPDATED PARAMETERS: C RHS - ON INPUT, CONTAINS THE RIGHT HAND SIDE. ON C OUTPUT, CONTAINS THE SOLUTION. C C*********************************************************************** C SUBROUTINE BLKSLV ( NSUPER, XSUPER, XLINDX, LINDX , XLNZ , & LNZ , RHS ) C C*********************************************************************** C INTEGER NSUPER INTEGER LINDX(*) , XSUPER(*) INTEGER XLINDX(*) , XLNZ(*) DOUBLE PRECISION LNZ(*) , RHS(*) C C*********************************************************************** C INTEGER FJCOL , I , IPNT , IX , IXSTOP, & IXSTRT, JCOL , JPNT , JSUP , LJCOL DOUBLE PRECISION T C C*********************************************************************** C IF ( NSUPER .LE. 0 ) RETURN C C ------------------------ C FORWARD SUBSTITUTION ... C ------------------------ FJCOL = XSUPER(1) DO 300 JSUP = 1, NSUPER LJCOL = XSUPER(JSUP+1) - 1 IXSTRT = XLNZ(FJCOL) JPNT = XLINDX(JSUP) DO 200 JCOL = FJCOL, LJCOL IXSTOP = XLNZ(JCOL+1) - 1 IF(RHS(JCOL) .NE. 0.D0) THEN T = RHS(JCOL)/LNZ(IXSTRT) RHS(JCOL) = T IPNT = JPNT + 1 CDIR$ IVDEP DO 100 IX = IXSTRT+1, IXSTOP I = LINDX(IPNT) RHS(I) = RHS(I) - T*LNZ(IX) IPNT = IPNT + 1 100 CONTINUE ENDIF IXSTRT = IXSTOP + 1 JPNT = JPNT + 1 200 CONTINUE FJCOL = LJCOL + 1 300 CONTINUE C C ------------------------- C BACKWARD SUBSTITUTION ... C ------------------------- LJCOL = XSUPER(NSUPER+1) - 1 DO 600 JSUP = NSUPER, 1, -1 FJCOL = XSUPER(JSUP) IXSTOP = XLNZ(LJCOL+1) - 1 JPNT = XLINDX(JSUP) + (LJCOL - FJCOL) DO 500 JCOL = LJCOL, FJCOL, -1 IXSTRT = XLNZ(JCOL) IPNT = JPNT + 1 T = RHS(JCOL) CDIR$ IVDEP DO 400 IX = IXSTRT+1, IXSTOP I = LINDX(IPNT) IF(RHS(I) .NE. 0.D0) T = T - LNZ(IX)*RHS(I) IPNT = IPNT + 1 400 CONTINUE IF(T .NE. 0.D0) THEN RHS(JCOL) = T/LNZ(IXSTRT) ELSE RHS(JCOL) = 0.D0 ENDIF IXSTOP = IXSTRT - 1 JPNT = JPNT - 1 500 CONTINUE LJCOL = FJCOL - 1 600 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: January 12, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** BTREE2 ..... BINARY TREE REPRESENTATION OF ETREE ******* C*********************************************************************** C*********************************************************************** C C PURPOSE: C TO DETERMINE A BINARY TREE REPRESENTATION OF THE ELIMINATION C TREE, FOR WHICH EVERY "LAST CHILD" HAS THE MAXIMUM POSSIBLE C COLUMN NONZERO COUNT IN THE FACTOR. THE RETURNED REPRESENTATION C WILL BE GIVEN BY THE FIRST-SON AND BROTHER VECTORS. THE ROOT OF C THE BINARY TREE IS ALWAYS NEQNS. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C PARENT - THE PARENT VECTOR OF THE ELIMINATION TREE. C IT IS ASSUMED THAT PARENT(I) > I EXCEPT OF C THE ROOTS. C COLCNT - COLUMN NONZERO COUNTS OF THE FACTOR. C C OUTPUT PARAMETERS: C FSON - THE FIRST SON VECTOR. C BROTHR - THE BROTHER VECTOR. C C WORKING PARAMETERS: C LSON - LAST SON VECTOR. C C*********************************************************************** C SUBROUTINE BTREE2 ( NEQNS , PARENT, COLCNT, FSON , BROTHR, & LSON ) C C*********************************************************************** C INTEGER BROTHR(*) , COLCNT(*) , & FSON(*) , LSON(*) , & PARENT(*) C INTEGER NEQNS C C*********************************************************************** C INTEGER LROOT , NODE , NDLSON, NDPAR C C*********************************************************************** C IF ( NEQNS .LE. 0 ) RETURN C DO 100 NODE = 1, NEQNS FSON(NODE) = 0 BROTHR(NODE) = 0 LSON(NODE) = 0 100 CONTINUE LROOT = NEQNS C ------------------------------------------------------------ C FOR EACH NODE := NEQNS-1 STEP -1 DOWNTO 1, DO THE FOLLOWING. C ------------------------------------------------------------ IF ( NEQNS .LE. 1 ) RETURN DO 300 NODE = NEQNS-1, 1, -1 NDPAR = PARENT(NODE) IF ( NDPAR .LE. 0 .OR. NDPAR .EQ. NODE ) THEN C ------------------------------------------------- C NODE HAS NO PARENT. GIVEN STRUCTURE IS A FOREST. C SET NODE TO BE ONE OF THE ROOTS OF THE TREES. C ------------------------------------------------- BROTHR(LROOT) = NODE LROOT = NODE ELSE C ------------------------------------------- C OTHERWISE, BECOMES FIRST SON OF ITS PARENT. C ------------------------------------------- NDLSON = LSON(NDPAR) IF ( NDLSON .NE. 0 ) THEN IF ( COLCNT(NODE) .GE. COLCNT(NDLSON) ) THEN BROTHR(NODE) = FSON(NDPAR) FSON(NDPAR) = NODE ELSE BROTHR(NDLSON) = NODE LSON(NDPAR) = NODE ENDIF ELSE FSON(NDPAR) = NODE LSON(NDPAR) = NODE ENDIF ENDIF 300 CONTINUE BROTHR(LROOT) = 0 C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.3 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratoy C C*********************************************************************** C*********************************************************************** C****** CHLSUP .... DENSE CHOLESKY WITHIN SUPERNODE ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS CHOLESKY C FACTORIZATION ON THE COLUMNS OF A SUPERNODE C THAT HAVE RECEIVED ALL UPDATES FROM COLUMNS C EXTERNAL TO THE SUPERNODE. C C INPUT PARAMETERS - C M - NUMBER OF ROWS (LENGTH OF THE FIRST COLUMN). C N - NUMBER OF COLUMNS IN THE SUPERNODE. C XPNT - XPNT(J+1) POINTS ONE LOCATION BEYOND THE END C OF THE J-TH COLUMN OF THE SUPERNODE. C X(*) - CONTAINS THE COLUMNS OF OF THE SUPERNODE TO C BE FACTORED. C SMXPY - EXTERNAL ROUTINE: MATRIX-VECTOR MULTIPLY. c tiny - tiny number; values below tiny * max(diag) are replaced by 'Large'; was 10^{-30} hardcoded c Large - Large number ("Infinite") to replace tiny diagonal entries in Cholesky ; was 10^{128} " C C OUTPUT PARAMETERS - C X(*) - ON OUTPUT, CONTAINS THE FACTORED COLUMNS OF C THE SUPERNODE. C IFLAG - UNCHANGED IF THERE IS NO ERROR. C =1 IF NONPOSITIVE DIAGONAL ENTRY IS ENCOUNTERED. C C*********************************************************************** C CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC SUBROUTINE CHLSUP ( M, N, SPLIT, XPNT, X, MXDIAG, NTINY, & IFLAG, MMPYN, SMXPY, tiny, Large) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C EXTERNAL MMPYN, SMXPY C INTEGER M, N, IFLAG C INTEGER XPNT(*), SPLIT(*) C CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC DOUBLE PRECISION X(*), MXDIAG, tiny, Large INTEGER NTINY C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER FSTCOL, JBLK , JPNT , MM , NN , & NXTCOL, Q C C*********************************************************************** C JBLK = 0 FSTCOL = 1 MM = M JPNT = XPNT(FSTCOL) C C ---------------------------------------- C FOR EACH BLOCK JBLK IN THE SUPERNODE ... C ---------------------------------------- 100 CONTINUE IF ( FSTCOL .LE. N ) THEN JBLK = JBLK + 1 NN = SPLIT(JBLK) C ------------------------------------------ C ... PERFORM PARTIAL CHOLESKY FACTORIZATION C ON THE BLOCK. C ------------------------------------------ CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC CALL PCHOL ( MM, NN, XPNT(FSTCOL), X, MXDIAG, NTINY, & IFLAG, SMXPY, tiny, Large ) IF ( IFLAG .EQ. 1 ) RETURN C ---------------------------------------------- C ... APPLY THE COLUMNS IN JBLK TO ANY COLUMNS C OF THE SUPERNODE REMAINING TO BE COMPUTED. C ---------------------------------------------- NXTCOL = FSTCOL + NN Q = N - NXTCOL + 1 MM = MM - NN JPNT = XPNT(NXTCOL) IF ( Q .GT. 0 ) THEN CALL MMPYN ( MM, NN, Q, XPNT(FSTCOL), X, X(JPNT), MM ) ENDIF FSTCOL = NXTCOL GO TO 100 ENDIF C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C********** CHORDR ..... CHILD REORDERING *********** C*********************************************************************** C*********************************************************************** C C PURPOSE: C REARRANGE THE CHILDREN OF EACH VERTEX SO THAT THE LAST ONE C MAXIMIZES (AMONG THE CHILDREN) THE NUMBER OF NONZEROS IN THE C CORRESPONDING COLUMN OF L. ALSO DETERMINE AN NEW POSTORDERING C BASED ON THE STRUCTURE OF THE MODIFIED ELIMINATION TREE. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C (XADJ,ADJNCY) - THE ADJACENCY STRUCTURE. C C UPDATED PARAMETERS: C (PERM,INVP) - ON INPUT, THE GIVEN PERM AND INVERSE PERM C VECTORS. ON OUTPUT, THE NEW PERM AND C INVERSE PERM VECTORS OF THE NEW C POSTORDERING. C COLCNT - COLUMN COUNTS IN L UNDER INITIAL ORDERING; C MODIFIED TO REFLECT THE NEW ORDERING. C C OUTPUT PARAMETERS: C PARENT - THE PARENT VECTOR OF THE ELIMINATION TREE C ASSOCIATED WITH THE NEW ORDERING. C C WORKING PARAMETERS: C FSON - THE FIRST SON VECTOR. C BROTHR - THE BROTHER VECTOR. C INVPOS - THE INVERSE PERM VECTOR FOR THE C POSTORDERING. C C PROGRAM SUBROUTINES: C BTREE2, EPOST2, INVINV. C C*********************************************************************** C SUBROUTINE CHORDR ( NEQNS , XADJ , ADJNCY, PERM , INVP , & COLCNT, PARENT, FSON , BROTHR, INVPOS ) C C*********************************************************************** C INTEGER ADJNCY(*) , BROTHR(*) , & COLCNT(*) , FSON(*) , & INVP(*) , INVPOS(*) , & PARENT(*) , PERM(*) C INTEGER XADJ(*) INTEGER NEQNS C C*********************************************************************** C C ---------------------------------------------------------- C COMPUTE A BINARY REPRESENTATION OF THE ELIMINATION TREE, C SO THAT EACH "LAST CHILD" MAXIMIZES AMONG ITS SIBLINGS THE C NUMBER OF NONZEROS IN THE CORRESPONDING COLUMNS OF L. C ---------------------------------------------------------- CALL BTREE2 ( NEQNS , PARENT, COLCNT, FSON , BROTHR, & INVPOS ) C C ---------------------------------------------------- C POSTORDER THE ELIMINATION TREE (USING THE NEW BINARY C REPRESENTATION. C ---------------------------------------------------- CALL EPOST2 ( NEQNS , FSON , BROTHR, INVPOS, PARENT, & COLCNT, PERM ) C C -------------------------------------------------------- C COMPOSE THE ORIGINAL ORDERING WITH THE NEW POSTORDERING. C -------------------------------------------------------- CALL INVINV ( NEQNS , INVP , INVPOS, PERM ) C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** DSCAL1 .... SCALE A VECTOR ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE COMPUTES A <-- AX, WHERE A IS A C SCALAR AND X IS A VECTOR. C C INPUT PARAMETERS - C N - LENGTH OF THE VECTOR X. C A - SCALAR MULIPLIER. C X - VECTOR TO BE SCALED. C C OUTPUT PARAMETERS - C X - REPLACED BY THE SCALED VECTOR, AX. C C*********************************************************************** C SUBROUTINE DSCAL1 ( N, A, X ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER N DOUBLE PRECISION A, X(N) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER I C C*********************************************************************** C DO 100 I = 1, N X(I) = A * X(I) 100 CONTINUE RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C*************** EPOST2 ..... ETREE POSTORDERING #2 *************** C*********************************************************************** C*********************************************************************** C C PURPOSE: C BASED ON THE BINARY REPRESENTATION (FIRST-SON,BROTHER) OF THE C ELIMINATION TREE, A POSTORDERING IS DETERMINED. THE C CORRESPONDING PARENT AND COLCNT VECTORS ARE ALSO MODIFIED TO C REFLECT THE REORDERING. C C INPUT PARAMETERS: C ROOT - ROOT OF THE ELIMINATION TREE (USUALLY IT C IS NEQNS). C FSON - THE FIRST SON VECTOR. C BROTHR - THE BROTHR VECTOR. C C UPDATED PARAMETERS: C PARENT - THE PARENT VECTOR. C COLCNT - COLUMN NONZERO COUNTS OF THE FACTOR. C C OUTPUT PARAMETERS: C INVPOS - INVERSE PERMUTATION FOR THE POSTORDERING. C C WORKING PARAMETERS: C STACK - THE STACK FOR POSTORDER TRAVERSAL OF THE C TREE. C C*********************************************************************** C SUBROUTINE EPOST2 ( ROOT , FSON , BROTHR, INVPOS, PARENT, & COLCNT, STACK ) C C*********************************************************************** C INTEGER BROTHR(*) , COLCNT(*) , & FSON(*) , INVPOS(*) , & PARENT(*) , STACK(*) C INTEGER ROOT C C*********************************************************************** C INTEGER ITOP , NDPAR , NODE , NUM , NUNODE C C*********************************************************************** C NUM = 0 ITOP = 0 NODE = ROOT C ------------------------------------------------------------- C TRAVERSE ALONG THE FIRST SONS POINTER AND PUSH THE TREE NODES C ALONG THE TRAVERSAL INTO THE STACK. C ------------------------------------------------------------- 100 CONTINUE ITOP = ITOP + 1 STACK(ITOP) = NODE NODE = FSON(NODE) IF ( NODE .GT. 0 ) GO TO 100 C ---------------------------------------------------------- C IF POSSIBLE, POP A TREE NODE FROM THE STACK AND NUMBER IT. C ---------------------------------------------------------- 200 CONTINUE IF ( ITOP .LE. 0 ) GO TO 300 NODE = STACK(ITOP) ITOP = ITOP - 1 NUM = NUM + 1 INVPOS(NODE) = NUM C ---------------------------------------------------- C THEN, TRAVERSE TO ITS YOUNGER BROTHER IF IT HAS ONE. C ---------------------------------------------------- NODE = BROTHR(NODE) IF ( NODE .LE. 0 ) GO TO 200 GO TO 100 C 300 CONTINUE C ------------------------------------------------------------ C DETERMINE THE NEW PARENT VECTOR OF THE POSTORDERING. BROTHR C IS USED TEMPORARILY FOR THE NEW PARENT VECTOR. C ------------------------------------------------------------ DO 400 NODE = 1, NUM NUNODE = INVPOS(NODE) NDPAR = PARENT(NODE) IF ( NDPAR .GT. 0 ) NDPAR = INVPOS(NDPAR) BROTHR(NUNODE) = NDPAR 400 CONTINUE C DO 500 NUNODE = 1, NUM PARENT(NUNODE) = BROTHR(NUNODE) 500 CONTINUE C C ---------------------------------------------- C PERMUTE COLCNT(*) TO REFLECT THE NEW ORDERING. C ---------------------------------------------- DO 600 NODE = 1, NUM NUNODE = INVPOS(NODE) STACK(NUNODE) = COLCNT(NODE) 600 CONTINUE C DO 700 NODE = 1, NUM COLCNT(NODE) = STACK(NODE) 700 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C********** ETORDR ..... ELIMINATION TREE REORDERING *********** C*********************************************************************** C*********************************************************************** C C WRITTEN BY JOSEPH LIU (JUL 17, 1985) C C PURPOSE: C TO DETERMINE AN EQUIVALENT REORDERING BASED ON THE STRUCTURE OF C THE ELIMINATION TREE. A POSTORDERING OF THE GIVEN ELIMINATION C TREE IS RETURNED. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C (XADJ,ADJNCY) - THE ADJACENCY STRUCTURE. C C UPDATED PARAMETERS: C (PERM,INVP) - ON INPUT, THE GIVEN PERM AND INVERSE PERM C VECTORS. ON OUTPUT, THE NEW PERM AND C INVERSE PERM VECTORS OF THE EQUIVALENT C ORDERING. C C OUTPUT PARAMETERS: C PARENT - THE PARENT VECTOR OF THE ELIMINATION TREE C ASSOCIATED WITH THE NEW ORDERING. C C WORKING PARAMETERS: C FSON - THE FIRST SON VECTOR. C BROTHR - THE BROTHER VECTOR. C INVPOS - THE INVERSE PERM VECTOR FOR THE C POSTORDERING. C C PROGRAM SUBROUTINES: C BETREE, ETPOST, ETREE , INVINV. C C*********************************************************************** C SUBROUTINE ETORDR ( NEQNS , XADJ , ADJNCY, PERM , INVP , & PARENT, FSON , BROTHR, INVPOS ) C C*********************************************************************** C INTEGER ADJNCY(*) , BROTHR(*) , & FSON(*) , INVP(*) , & INVPOS(*) , PARENT(*) , & PERM(*) C INTEGER XADJ(*) INTEGER NEQNS C C*********************************************************************** C C ----------------------------- C COMPUTE THE ELIMINATION TREE. C ----------------------------- CALL ETREE ( NEQNS, XADJ, ADJNCY, PERM, INVP, PARENT, INVPOS ) C C -------------------------------------------------------- C COMPUTE A BINARY REPRESENTATION OF THE ELIMINATION TREE. C -------------------------------------------------------- CALL BETREE ( NEQNS, PARENT, FSON, BROTHR ) C C ------------------------------- C POSTORDER THE ELIMINATION TREE. C ------------------------------- CALL ETPOST ( NEQNS, FSON, BROTHR, INVPOS, PARENT, PERM ) C C -------------------------------------------------------- C COMPOSE THE ORIGINAL ORDERING WITH THE NEW POSTORDERING. C -------------------------------------------------------- CALL INVINV ( NEQNS, INVP, INVPOS, PERM ) C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C*************** ETPOST ..... ETREE POSTORDERING *************** C*********************************************************************** C*********************************************************************** C C WRITTEN BY JOSEPH LIU (SEPT 17, 1986) C C PURPOSE: C BASED ON THE BINARY REPRESENTATION (FIRST-SON,BROTHER) OF C THE ELIMINATION TREE, A POSTORDERING IS DETERMINED. THE C CORRESPONDING PARENT VECTOR IS ALSO MODIFIED TO REFLECT C THE REORDERING. C C INPUT PARAMETERS: C ROOT - ROOT OF THE ELIMINATION TREE (USUALLY IT C IS NEQNS). C FSON - THE FIRST SON VECTOR. C BROTHR - THE BROTHR VECTOR. C C UPDATED PARAMETERS: C PARENT - THE PARENT VECTOR. C C OUTPUT PARAMETERS: C INVPOS - INVERSE PERMUTATION FOR THE POSTORDERING. C C WORKING PARAMETERS: C STACK - THE STACK FOR POSTORDER TRAVERSAL OF THE C TREE. C C*********************************************************************** C SUBROUTINE ETPOST ( ROOT , FSON , BROTHR, INVPOS, PARENT, & STACK ) C C*********************************************************************** C INTEGER BROTHR(*) , FSON(*) , & INVPOS(*) , PARENT(*) , & STACK(*) C INTEGER ROOT C C*********************************************************************** C INTEGER ITOP , NDPAR , NODE , NUM , NUNODE C C*********************************************************************** C NUM = 0 ITOP = 0 NODE = ROOT C ------------------------------------------------------------- C TRAVERSE ALONG THE FIRST SONS POINTER AND PUSH THE TREE NODES C ALONG THE TRAVERSAL INTO THE STACK. C ------------------------------------------------------------- 100 CONTINUE ITOP = ITOP + 1 STACK(ITOP) = NODE NODE = FSON(NODE) IF ( NODE .GT. 0 ) GO TO 100 C ---------------------------------------------------------- C IF POSSIBLE, POP A TREE NODE FROM THE STACK AND NUMBER IT. C ---------------------------------------------------------- 200 CONTINUE IF ( ITOP .LE. 0 ) GO TO 300 NODE = STACK(ITOP) ITOP = ITOP - 1 NUM = NUM + 1 INVPOS(NODE) = NUM C ---------------------------------------------------- C THEN, TRAVERSE TO ITS YOUNGER BROTHER IF IT HAS ONE. C ---------------------------------------------------- NODE = BROTHR(NODE) IF ( NODE .LE. 0 ) GO TO 200 GO TO 100 C 300 CONTINUE C ------------------------------------------------------------ C DETERMINE THE NEW PARENT VECTOR OF THE POSTORDERING. BROTHR C IS USED TEMPORARILY FOR THE NEW PARENT VECTOR. C ------------------------------------------------------------ DO 400 NODE = 1, NUM NUNODE = INVPOS(NODE) NDPAR = PARENT(NODE) IF ( NDPAR .GT. 0 ) NDPAR = INVPOS(NDPAR) BROTHR(NUNODE) = NDPAR 400 CONTINUE C DO 500 NUNODE = 1, NUM PARENT(NUNODE) = BROTHR(NUNODE) 500 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C**************** ETREE ..... ELIMINATION TREE ***************** C*********************************************************************** C*********************************************************************** C C WRITTEN BY JOSEPH LIU (JUL 17, 1985) C C PURPOSE: C TO DETERMINE THE ELIMINATION TREE FROM A GIVEN ORDERING AND C THE ADJACENCY STRUCTURE. THE PARENT VECTOR IS RETURNED. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C (XADJ,ADJNCY) - THE ADJACENCY STRUCTURE. C (PERM,INVP) - PERMUTATION AND INVERSE PERMUTATION VECTORS C C OUTPUT PARAMETERS: C PARENT - THE PARENT VECTOR OF THE ELIMINATION TREE. C C WORKING PARAMETERS: C ANCSTR - THE ANCESTOR VECTOR. C C*********************************************************************** C SUBROUTINE ETREE ( NEQNS , XADJ , ADJNCY, PERM , INVP , & PARENT, ANCSTR ) C C*********************************************************************** C INTEGER ADJNCY(*) , ANCSTR(*) , & INVP(*) , PARENT(*) , & PERM(*) C INTEGER NEQNS INTEGER XADJ(*) C C*********************************************************************** C INTEGER I , J , JSTOP , JSTRT , NBR , & NEXT , NODE C C*********************************************************************** C IF ( NEQNS .LE. 0 ) RETURN C DO 400 I = 1, NEQNS PARENT(I) = 0 ANCSTR(I) = 0 NODE = PERM(I) C JSTRT = XADJ(NODE) JSTOP = XADJ(NODE+1) - 1 IF ( JSTRT .LE. JSTOP ) THEN DO 300 J = JSTRT, JSTOP NBR = ADJNCY(J) NBR = INVP(NBR) IF ( NBR .LT. I ) THEN C ------------------------------------------- C FOR EACH NBR, FIND THE ROOT OF ITS CURRENT C ELIMINATION TREE. PERFORM PATH COMPRESSION C AS THE SUBTREE IS TRAVERSED. C ------------------------------------------- 100 CONTINUE IF ( ANCSTR(NBR) .EQ. I ) GO TO 300 IF ( ANCSTR(NBR) .GT. 0 ) THEN NEXT = ANCSTR(NBR) ANCSTR(NBR) = I NBR = NEXT GO TO 100 ENDIF C -------------------------------------------- C NOW, NBR IS THE ROOT OF THE SUBTREE. MAKE I C THE PARENT NODE OF THIS ROOT. C -------------------------------------------- PARENT(NBR) = I ANCSTR(NBR) = I ENDIF 300 CONTINUE ENDIF 400 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: January 12, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************** FCNTHN ..... FIND NONZERO COUNTS *************** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE DETERMINES THE ROW COUNTS AND COLUMN COUNTS IN C THE CHOLESKY FACTOR. IT USES A DISJOINT SET UNION ALGORITHM. C C TECHNIQUES: C 1) SUPERNODE DETECTION. C 2) PATH HALVING. C 3) NO UNION BY RANK. C C NOTES: C 1) ASSUMES A POSTORDERING OF THE ELIMINATION TREE. C C INPUT PARAMETERS: C (I) NEQNS - NUMBER OF EQUATIONS. C (I) ADJLEN - LENGTH OF ADJACENCY STRUCTURE. C (I) XADJ(*) - ARRAY OF LENGTH NEQNS+1, CONTAINING POINTERS C TO THE ADJACENCY STRUCTURE. C (I) ADJNCY(*) - ARRAY OF LENGTH XADJ(NEQNS+1)-1, CONTAINING C THE ADJACENCY STRUCTURE. C (I) PERM(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C POSTORDERING. C (I) INVP(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C INVERSE OF THE POSTORDERING. C (I) ETPAR(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C ELIMINATION TREE OF THE POSTORDERED MATRIX. C C OUTPUT PARAMETERS: C (I) ROWCNT(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE NUMBER C OF NONZEROS IN EACH ROW OF THE FACTOR, C INCLUDING THE DIAGONAL ENTRY. C (I) COLCNT(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE NUMBER C OF NONZEROS IN EACH COLUMN OF THE FACTOR, C INCLUDING THE DIAGONAL ENTRY. C (I) NLNZ - NUMBER OF NONZEROS IN THE FACTOR, INCLUDING C THE DIAGONAL ENTRIES. C C WORK PARAMETERS: C (I) SET(*) - ARRAY OF LENGTH NEQNS USED TO MAINTAIN THE C DISJOINT SETS (I.E., SUBTREES). C (I) PRVLF(*) - ARRAY OF LENGTH NEQNS USED TO RECORD THE C PREVIOUS LEAF OF EACH ROW SUBTREE. C (I) LEVEL(*) - ARRAY OF LENGTH NEQNS+1 CONTAINING THE LEVEL C (DISTANCE FROM THE ROOT). C (I) WEIGHT(*) - ARRAY OF LENGTH NEQNS+1 CONTAINING WEIGHTS C USED TO COMPUTE COLUMN COUNTS. C (I) FDESC(*) - ARRAY OF LENGTH NEQNS+1 CONTAINING THE C FIRST (I.E., LOWEST-NUMBERED) DESCENDANT. C (I) NCHILD(*) - ARRAY OF LENGTH NEQNS+1 CONTAINING THE C NUMBER OF CHILDREN. C (I) PRVNBR(*) - ARRAY OF LENGTH NEQNS USED TO RECORD THE C PREVIOUS ``LOWER NEIGHBOR'' OF EACH NODE. C C FIRST CREATED ON APRIL 12, 1990. C LAST UPDATED ON JANUARY 12, 1995. C C*********************************************************************** C SUBROUTINE FCNTHN ( NEQNS , ADJLEN, XADJ , ADJNCY, PERM , & INVP , ETPAR , ROWCNT, COLCNT, NLNZ , & SET , PRVLF , LEVEL , WEIGHT, FDESC , & NCHILD, PRVNBR ) C C ----------- C PARAMETERS. C ----------- INTEGER ADJLEN, NEQNS , NLNZ INTEGER ADJNCY(ADJLEN) , COLCNT(NEQNS) , & ETPAR(NEQNS) , FDESC(0:NEQNS), & INVP(NEQNS) , LEVEL(0:NEQNS), & NCHILD(0:NEQNS) , PERM(NEQNS) , & PRVLF(NEQNS) , PRVNBR(NEQNS) , & ROWCNT(NEQNS) , SET(NEQNS) , & WEIGHT(0:NEQNS) INTEGER XADJ(*) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER HINBR , IFDESC, J , JSTOP , JSTRT , & K , LAST1 , LAST2 , LCA , LFLAG , & LOWNBR, OLDNBR, PARENT, PLEAF , TEMP , & XSUP C C*********************************************************************** C C -------------------------------------------------- C COMPUTE LEVEL(*), FDESC(*), NCHILD(*). C INITIALIZE XSUP, ROWCNT(*), COLCNT(*), C SET(*), PRVLF(*), WEIGHT(*), PRVNBR(*). C -------------------------------------------------- XSUP = 1 LEVEL(0) = 0 DO 100 K = NEQNS, 1, -1 ROWCNT(K) = 1 COLCNT(K) = 0 SET(K) = K PRVLF(K) = 0 LEVEL(K) = LEVEL(ETPAR(K)) + 1 WEIGHT(K) = 1 FDESC(K) = K NCHILD(K) = 0 PRVNBR(K) = 0 100 CONTINUE NCHILD(0) = 0 FDESC(0) = 0 DO 200 K = 1, NEQNS PARENT = ETPAR(K) WEIGHT(PARENT) = 0 NCHILD(PARENT) = NCHILD(PARENT) + 1 IFDESC = FDESC(K) IF ( IFDESC .LT. FDESC(PARENT) ) THEN FDESC(PARENT) = IFDESC ENDIF 200 CONTINUE C ------------------------------------ C FOR EACH ``LOW NEIGHBOR'' LOWNBR ... C ------------------------------------ DO 600 LOWNBR = 1, NEQNS LFLAG = 0 IFDESC = FDESC(LOWNBR) OLDNBR = PERM(LOWNBR) JSTRT = XADJ(OLDNBR) JSTOP = XADJ(OLDNBR+1) - 1 C ----------------------------------------------- C FOR EACH ``HIGH NEIGHBOR'', HINBR OF LOWNBR ... C ----------------------------------------------- DO 500 J = JSTRT, JSTOP HINBR = INVP(ADJNCY(J)) IF ( HINBR .GT. LOWNBR ) THEN IF ( IFDESC .GT. PRVNBR(HINBR) ) THEN C ------------------------- C INCREMENT WEIGHT(LOWNBR). C ------------------------- WEIGHT(LOWNBR) = WEIGHT(LOWNBR) + 1 PLEAF = PRVLF(HINBR) C ----------------------------------------- C IF HINBR HAS NO PREVIOUS ``LOW NEIGHBOR'' C THEN ... C ----------------------------------------- IF ( PLEAF .EQ. 0 ) THEN C ----------------------------------------- C ... ACCUMULATE LOWNBR-->HINBR PATH LENGTH C IN ROWCNT(HINBR). C ----------------------------------------- ROWCNT(HINBR) = ROWCNT(HINBR) + & LEVEL(LOWNBR) - LEVEL(HINBR) ELSE C ----------------------------------------- C ... OTHERWISE, LCA <-- FIND(PLEAF), WHICH C IS THE LEAST COMMON ANCESTOR OF PLEAF C AND LOWNBR. C (PATH HALVING.) C ----------------------------------------- LAST1 = PLEAF LAST2 = SET(LAST1) LCA = SET(LAST2) 300 CONTINUE IF ( LCA .NE. LAST2 ) THEN SET(LAST1) = LCA LAST1 = LCA LAST2 = SET(LAST1) LCA = SET(LAST2) GO TO 300 ENDIF C ------------------------------------- C ACCUMULATE PLEAF-->LCA PATH LENGTH IN C ROWCNT(HINBR). C DECREMENT WEIGHT(LCA). C ------------------------------------- ROWCNT(HINBR) = ROWCNT(HINBR) & + LEVEL(LOWNBR) - LEVEL(LCA) WEIGHT(LCA) = WEIGHT(LCA) - 1 ENDIF C ---------------------------------------------- C LOWNBR NOW BECOMES ``PREVIOUS LEAF'' OF HINBR. C ---------------------------------------------- PRVLF(HINBR) = LOWNBR LFLAG = 1 ENDIF C -------------------------------------------------- C LOWNBR NOW BECOMES ``PREVIOUS NEIGHBOR'' OF HINBR. C -------------------------------------------------- PRVNBR(HINBR) = LOWNBR ENDIF 500 CONTINUE C ---------------------------------------------------- C DECREMENT WEIGHT ( PARENT(LOWNBR) ). C SET ( P(LOWNBR) ) <-- SET ( P(LOWNBR) ) + SET(XSUP). C ---------------------------------------------------- PARENT = ETPAR(LOWNBR) WEIGHT(PARENT) = WEIGHT(PARENT) - 1 IF ( LFLAG .EQ. 1 .OR. & NCHILD(LOWNBR) .GE. 2 ) THEN XSUP = LOWNBR ENDIF SET(XSUP) = PARENT 600 CONTINUE C --------------------------------------------------------- C USE WEIGHTS TO COMPUTE COLUMN (AND TOTAL) NONZERO COUNTS. C --------------------------------------------------------- NLNZ = 0 DO 700 K = 1, NEQNS TEMP = COLCNT(K) + WEIGHT(K) COLCNT(K) = TEMP NLNZ = NLNZ + TEMP PARENT = ETPAR(K) IF ( PARENT .NE. 0 ) THEN COLCNT(PARENT) = COLCNT(PARENT) + TEMP ENDIF 700 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: May 26, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C**** FNSPLT ..... COMPUTE FINE PARTITIONING OF SUPERNODES ***** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE DETERMINES A FINE PARTITIONING OF SUPERNODES C WHEN THERE IS A CACHE AVAILABLE ON THE MACHINE. THE FINE C PARTITIONING IS CHOSEN SO THAT DATA RE-USE IS MAXIMIZED. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C NSUPER - NUMBER OF SUPERNODES. C XSUPER - INTEGER ARRAY OF SIZE (NSUPER+1) CONTAINING C THE SUPERNODE PARTITIONING. C XLINDX - INTEGER ARRAY OF SIZE (NSUPER+1) CONTAINING C POINTERS IN THE SUPERNODE INDICES. C CACHSZ - CACHE SIZE IN KILO BYTES. C IF THERE IS NO CACHE, SET CACHSZ = 0. C C OUTPUT PARAMETERS: C SPLIT - INTEGER ARRAY OF SIZE NEQNS CONTAINING THE C FINE PARTITIONING. C C*********************************************************************** C SUBROUTINE FNSPLT ( NEQNS , NSUPER, XSUPER, XLINDX, & CACHSZ, SPLIT ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER CACHSZ, NEQNS , NSUPER INTEGER XSUPER(*), SPLIT(*) INTEGER XLINDX(*) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER CACHE , CURCOL, FSTCOL, HEIGHT, KCOL , 1 KSUP , LSTCOL, NCOLS , NXTBLK, USED , 1 WIDTH C C ******************************************************************* C C -------------------------------------------- C COMPUTE THE NUMBER OF 8-BYTE WORDS IN CACHE. C -------------------------------------------- IF ( CACHSZ .LE. 0 ) THEN CACHE = 2 000 000 000 ELSE CACHE = ( FLOAT(CACHSZ) * 1024. / 8. ) * 0.9 ENDIF C C --------------- C INITIALIZATION. C --------------- DO 100 KCOL = 1, NEQNS SPLIT(KCOL) = 0 100 CONTINUE C C --------------------------- C FOR EACH SUPERNODE KSUP ... C --------------------------- DO 1000 KSUP = 1, NSUPER C ----------------------- C ... GET SUPERNODE INFO. C ----------------------- HEIGHT = XLINDX(KSUP+1) - XLINDX(KSUP) FSTCOL = XSUPER(KSUP) LSTCOL = XSUPER(KSUP+1) - 1 WIDTH = LSTCOL - FSTCOL + 1 NXTBLK = FSTCOL C -------------------------------------- C ... UNTIL ALL COLUMNS OF THE SUPERNODE C HAVE BEEN PROCESSED ... C -------------------------------------- CURCOL = FSTCOL - 1 200 CONTINUE C ------------------------------------------- C ... PLACE THE FIRST COLUMN(S) IN THE CACHE. C ------------------------------------------- CURCOL = CURCOL + 1 IF ( CURCOL .LT. LSTCOL ) THEN CURCOL = CURCOL + 1 NCOLS = 2 USED = 4 * HEIGHT - 1 HEIGHT = HEIGHT - 2 ELSE NCOLS = 1 USED = 3 * HEIGHT HEIGHT = HEIGHT - 1 ENDIF C C -------------------------------------- C ... WHILE THE CACHE IS NOT FILLED AND C THERE ARE COLUMNS OF THE SUPERNODE C REMAINING TO BE PROCESSED ... C -------------------------------------- 300 CONTINUE IF ( USED+HEIGHT .LT. CACHE .AND. & CURCOL .LT. LSTCOL ) THEN C -------------------------------- C ... ADD ANOTHER COLUMN TO CACHE. C -------------------------------- CURCOL = CURCOL + 1 NCOLS = NCOLS + 1 USED = USED + HEIGHT HEIGHT = HEIGHT - 1 GO TO 300 ENDIF C ------------------------------------- C ... RECORD THE NUMBER OF COLUMNS THAT C FILLED THE CACHE. C ------------------------------------- SPLIT(NXTBLK) = NCOLS NXTBLK = NXTBLK + 1 C -------------------------- C ... GO PROCESS NEXT BLOCK. C -------------------------- IF ( CURCOL .LT. LSTCOL ) GO TO 200 1000 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** FNTSIZ ..... COMPUTE WORK STORAGE SIZE FOR BLKFCT ****** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE DETERMINES THE SIZE OF THE WORKING STORAGE C REQUIRED BY BLKFCT. C C INPUT PARAMETERS: C NSUPER - NUMBER OF SUPERNODES. C XSUPER - INTEGER ARRAY OF SIZE (NSUPER+1) CONTAINING C THE SUPERNODE PARTITIONING. C SNODE - SUPERNODE MEMBERSHIP. C (XLINDX,LINDX) - ARRAYS DESCRIBING THE SUPERNODAL STRUCTURE. C C OUTPUT PARAMETERS: C TMPSIZ - SIZE OF WORKING STORAGE REQUIRED BY BLKFCT. C C*********************************************************************** C SUBROUTINE FNTSIZ ( NSUPER, XSUPER, SNODE , XLINDX, & LINDX , TMPSIZ ) C C*********************************************************************** C INTEGER NSUPER, TMPSIZ INTEGER XLINDX(*) , XSUPER(*) INTEGER LINDX (*) , SNODE (*) C INTEGER BOUND , CLEN , CURSUP, I , IBEGIN, IEND , & KSUP , LENGTH, NCOLS , NXTSUP, & TSIZE , WIDTH C C*********************************************************************** C C RETURNS SIZE OF TEMP ARRAY USED BY BLKFCT FACTORIZATION ROUTINE. C NOTE THAT THE VALUE RETURNED IS AN ESTIMATE, THOUGH IT IS USUALLY C TIGHT. C C ---------------------------------------- C COMPUTE SIZE OF TEMPORARY STORAGE VECTOR C NEEDED BY BLKFCT. C ---------------------------------------- TMPSIZ = 0 DO 500 KSUP = NSUPER, 1, -1 NCOLS = XSUPER(KSUP+1) - XSUPER(KSUP) IBEGIN = XLINDX(KSUP) + NCOLS IEND = XLINDX(KSUP+1) - 1 LENGTH = IEND - IBEGIN + 1 BOUND = LENGTH * (LENGTH + 1) / 2 IF ( BOUND .GT. TMPSIZ ) THEN CURSUP = SNODE(LINDX(IBEGIN)) CLEN = XLINDX(CURSUP+1) - XLINDX(CURSUP) WIDTH = 0 DO 400 I = IBEGIN, IEND NXTSUP = SNODE(LINDX(I)) IF ( NXTSUP .EQ. CURSUP ) THEN WIDTH = WIDTH + 1 IF ( I .EQ. IEND ) THEN IF ( CLEN .GT. LENGTH ) THEN TSIZE = LENGTH * WIDTH - & (WIDTH - 1) * WIDTH / 2 TMPSIZ = MAX ( TSIZE , TMPSIZ ) ENDIF ENDIF ELSE IF ( CLEN .GT. LENGTH ) THEN TSIZE = LENGTH * WIDTH - & (WIDTH - 1) * WIDTH / 2 TMPSIZ = MAX ( TSIZE , TMPSIZ ) ENDIF LENGTH = LENGTH - WIDTH BOUND = LENGTH * (LENGTH + 1) / 2 IF ( BOUND .LE. TMPSIZ ) GO TO 500 WIDTH = 1 CURSUP = NXTSUP CLEN = XLINDX(CURSUP+1) - XLINDX(CURSUP) ENDIF 400 CONTINUE ENDIF 500 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C**************** FSUP1 ..... FIND SUPERNODES #1 ***************** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE IS THE FIRST OF TWO ROUTINES FOR FINDING A C MAXIMAL SUPERNODE PARTITION. IT RETURNS ONLY THE NUMBER OF C SUPERNODES NSUPER AND THE SUPERNODE MEMBERSHIP VECTOR SNODE(*), C WHICH IS OF LENGTH NEQNS. THE VECTORS OF LENGTH NSUPER ARE C COMPUTED SUBSEQUENTLY BY THE COMPANION ROUTINE FSUP2. C C METHOD AND ASSUMPTIONS: C THIS ROUTINE USES THE ELIMINATION TREE AND THE FACTOR COLUMN C COUNTS TO COMPUTE THE SUPERNODE PARTITION; IT ALSO ASSUMES A C POSTORDERING OF THE ELIMINATION TREE. C C INPUT PARAMETERS: C (I) NEQNS - NUMBER OF EQUATIONS. C (I) ETPAR(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C ELIMINATION TREE OF THE POSTORDERED MATRIX. C (I) COLCNT(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C FACTOR COLUMN COUNTS: I.E., THE NUMBER OF C NONZERO ENTRIES IN EACH COLUMN OF L C (INCLUDING THE DIAGONAL ENTRY). C C OUTPUT PARAMETERS: C (I) NOFSUB - NUMBER OF SUBSCRIPTS. C (I) NSUPER - NUMBER OF SUPERNODES (<= NEQNS). C (I) SNODE(*) - ARRAY OF LENGTH NEQNS FOR RECORDING C SUPERNODE MEMBERSHIP. C C FIRST CREATED ON JANUARY 18, 1992. C LAST UPDATED ON NOVEMBER 11, 1994. C C*********************************************************************** C SUBROUTINE FSUP1 ( NEQNS , ETPAR , COLCNT, NOFSUB, NSUPER, & SNODE ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER NEQNS , NOFSUB, NSUPER INTEGER COLCNT(*) , ETPAR(*) , & SNODE(*) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER KCOL C C*********************************************************************** C C -------------------------------------------- C COMPUTE THE FUNDAMENTAL SUPERNODE PARTITION. C -------------------------------------------- NSUPER = 1 SNODE(1) = 1 NOFSUB = COLCNT(1) DO 300 KCOL = 2, NEQNS IF ( ETPAR(KCOL-1) .EQ. KCOL ) THEN IF ( COLCNT(KCOL-1) .EQ. COLCNT(KCOL)+1 ) THEN SNODE(KCOL) = NSUPER GO TO 300 ENDIF ENDIF NSUPER = NSUPER + 1 SNODE(KCOL) = NSUPER NOFSUB = NOFSUB + COLCNT(KCOL) 300 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C**************** FSUP2 ..... FIND SUPERNODES #2 ***************** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE IS THE SECOND OF TWO ROUTINES FOR FINDING A C MAXIMAL SUPERNODE PARTITION. IT'S SOLE PURPOSE IS TO C CONSTRUCT THE NEEDED VECTOR OF LENGTH NSUPER: XSUPER(*). THE C FIRST ROUTINE FSUP1 COMPUTES THE NUMBER OF SUPERNODES AND THE C SUPERNODE MEMBERSHIP VECTOR SNODE(*), WHICH IS OF LENGTH NEQNS. C C C ASSUMPTIONS: C THIS ROUTINE ASSUMES A POSTORDERING OF THE ELIMINATION TREE. IT C ALSO ASSUMES THAT THE OUTPUT FROM FSUP1 IS AVAILABLE. C C INPUT PARAMETERS: C (I) NEQNS - NUMBER OF EQUATIONS. C (I) NSUPER - NUMBER OF SUPERNODES (<= NEQNS). C (I) ETPAR(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C ELIMINATION TREE OF THE POSTORDERED MATRIX. C (I) SNODE(*) - ARRAY OF LENGTH NEQNS FOR RECORDING C SUPERNODE MEMBERSHIP. C C OUTPUT PARAMETERS: C (I) XSUPER(*) - ARRAY OF LENGTH NSUPER+1, CONTAINING THE C SUPERNODE PARTITIONING. C C FIRST CREATED ON JANUARY 18, 1992. C LAST UPDATED ON NOVEMEBER 22, 1994. C C*********************************************************************** C SUBROUTINE FSUP2 ( NEQNS , NSUPER, ETPAR , SNODE , XSUPER ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER NEQNS , NSUPER INTEGER ETPAR(*) , SNODE(*) , & XSUPER(*) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER KCOL , KSUP , LSTSUP C C*********************************************************************** C C ------------------------------------------------- C COMPUTE THE SUPERNODE PARTITION VECTOR XSUPER(*). C ------------------------------------------------- LSTSUP = NSUPER + 1 DO 100 KCOL = NEQNS, 1, -1 KSUP = SNODE(KCOL) IF ( KSUP .NE. LSTSUP ) THEN XSUPER(LSTSUP) = KCOL + 1 ENDIF LSTSUP = KSUP 100 CONTINUE XSUPER(1) = 1 C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C--- SPARSPAK-A (ANSI FORTRAN) RELEASE III --- NAME = GENMMD C (C) UNIVERSITY OF WATERLOO JANUARY 1984 C*********************************************************************** C*********************************************************************** C**** GENMMD ..... MULTIPLE MINIMUM EXTERNAL DEGREE ************ C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE IMPLEMENTS THE MINIMUM DEGREE C ALGORITHM. IT MAKES USE OF THE IMPLICIT REPRESENTATION C OF ELIMINATION GRAPHS BY QUOTIENT GRAPHS, AND THE C NOTION OF INDISTINGUISHABLE NODES. IT ALSO IMPLEMENTS C THE MODIFICATIONS BY MULTIPLE ELIMINATION AND MINIMUM C EXTERNAL DEGREE. C --------------------------------------------- C CAUTION - THE ADJACENCY VECTOR ADJNCY WILL BE C DESTROYED. C --------------------------------------------- C C INPUT PARAMETERS - C NEQNS - NUMBER OF EQUATIONS. C (XADJ,ADJNCY) - THE ADJACENCY STRUCTURE. C DELTA - TOLERANCE VALUE FOR MULTIPLE ELIMINATION. C MAXINT - MAXIMUM MACHINE REPRESENTABLE (SHORT) INTEGER C (ANY SMALLER ESTIMATE WILL DO) FOR MARKING C NODES. C C OUTPUT PARAMETERS - C PERM - THE MINIMUM DEGREE ORDERING. C INVP - THE INVERSE OF PERM. C NOFSUB - AN UPPER BOUND ON THE NUMBER OF NONZERO C SUBSCRIPTS FOR THE COMPRESSED STORAGE SCHEME. C C WORKING PARAMETERS - C DHEAD - VECTOR FOR HEAD OF DEGREE LISTS. C INVP - USED TEMPORARILY FOR DEGREE FORWARD LINK. C PERM - USED TEMPORARILY FOR DEGREE BACKWARD LINK. C QSIZE - VECTOR FOR SIZE OF SUPERNODES. C LLIST - VECTOR FOR TEMPORARY LINKED LISTS. C MARKER - A TEMPORARY MARKER VECTOR. C C PROGRAM SUBROUTINES - C MMDELM, MMDINT, MMDNUM, MMDUPD. C C*********************************************************************** C SUBROUTINE GENMMD ( NEQNS, XADJ, ADJNCY, INVP, PERM, 1 DELTA, DHEAD, QSIZE, LLIST, MARKER, 1 MAXINT, NOFSUB ) C C*********************************************************************** C INTEGER ADJNCY(*), DHEAD(*) , INVP(*) , LLIST(*) , 1 MARKER(*), PERM(*) , QSIZE(*) INTEGER XADJ(*) INTEGER DELTA , EHEAD , I , MAXINT, MDEG , 1 MDLMT , MDNODE, NEQNS , NEXTMD, NOFSUB, 1 NUM, TAG C C*********************************************************************** C IF ( NEQNS .LE. 0 ) RETURN C C ------------------------------------------------ C INITIALIZATION FOR THE MINIMUM DEGREE ALGORITHM. C ------------------------------------------------ NOFSUB = 0 CALL MMDINT ( NEQNS, XADJ, ADJNCY, DHEAD, INVP, PERM, 1 QSIZE, LLIST, MARKER ) C C ---------------------------------------------- C NUM COUNTS THE NUMBER OF ORDERED NODES PLUS 1. C ---------------------------------------------- NUM = 1 C C ----------------------------- C ELIMINATE ALL ISOLATED NODES. C ----------------------------- NEXTMD = DHEAD(1) 100 CONTINUE IF ( NEXTMD .LE. 0 ) GO TO 200 MDNODE = NEXTMD NEXTMD = INVP(MDNODE) MARKER(MDNODE) = MAXINT INVP(MDNODE) = - NUM NUM = NUM + 1 GO TO 100 C 200 CONTINUE C ---------------------------------------- C SEARCH FOR NODE OF THE MINIMUM DEGREE. C MDEG IS THE CURRENT MINIMUM DEGREE; C TAG IS USED TO FACILITATE MARKING NODES. C ---------------------------------------- IF ( NUM .GT. NEQNS ) GO TO 1000 TAG = 1 DHEAD(1) = 0 MDEG = 2 300 CONTINUE IF ( DHEAD(MDEG) .GT. 0 ) GO TO 400 MDEG = MDEG + 1 GO TO 300 400 CONTINUE C ------------------------------------------------- C USE VALUE OF DELTA TO SET UP MDLMT, WHICH GOVERNS C WHEN A DEGREE UPDATE IS TO BE PERFORMED. C ------------------------------------------------- MDLMT = MDEG + DELTA EHEAD = 0 C 500 CONTINUE MDNODE = DHEAD(MDEG) IF ( MDNODE .GT. 0 ) GO TO 600 MDEG = MDEG + 1 IF ( MDEG .GT. MDLMT ) GO TO 900 GO TO 500 600 CONTINUE C ---------------------------------------- C REMOVE MDNODE FROM THE DEGREE STRUCTURE. C ---------------------------------------- NEXTMD = INVP(MDNODE) DHEAD(MDEG) = NEXTMD IF ( NEXTMD .GT. 0 ) PERM(NEXTMD) = - MDEG INVP(MDNODE) = - NUM NOFSUB = NOFSUB + MDEG + QSIZE(MDNODE) - 2 IF ( NUM+QSIZE(MDNODE) .GT. NEQNS ) GO TO 1000 C ---------------------------------------------- C ELIMINATE MDNODE AND PERFORM QUOTIENT GRAPH C TRANSFORMATION. RESET TAG VALUE IF NECESSARY. C ---------------------------------------------- TAG = TAG + 1 IF ( TAG .LT. MAXINT ) GO TO 800 TAG = 1 DO 700 I = 1, NEQNS IF ( MARKER(I) .LT. MAXINT ) MARKER(I) = 0 700 CONTINUE 800 CONTINUE CALL MMDELM ( MDNODE, XADJ, ADJNCY, DHEAD, INVP, 1 PERM, QSIZE, LLIST, MARKER, MAXINT, 1 TAG ) NUM = NUM + QSIZE(MDNODE) LLIST(MDNODE) = EHEAD EHEAD = MDNODE IF ( DELTA .GE. 0 ) GO TO 500 900 CONTINUE C ------------------------------------------- C UPDATE DEGREES OF THE NODES INVOLVED IN THE C MINIMUM DEGREE NODES ELIMINATION. C ------------------------------------------- IF ( NUM .GT. NEQNS ) GO TO 1000 CALL MMDUPD ( EHEAD, NEQNS, XADJ, ADJNCY, DELTA, MDEG, 1 DHEAD, INVP, PERM, QSIZE, LLIST, MARKER, 1 MAXINT, TAG ) GO TO 300 C 1000 CONTINUE CALL MMDNUM ( NEQNS, PERM, INVP, QSIZE ) RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C REAL FUNCTION GTIMER () C -------------------------- C FOR IBM RS/6000 ... C INTEGER MCLOCK C GTIMER = MCLOCK()/100.0 C -------------------------- C FOR MOST BERKELEY UNIX ... C REAL ETIME C REAL VEC(2) C GTIMER = ETIME(VEC) C -------------------------- C FOR CRAY ... C REAL SECOND C GTIMER = SECOND() C -------------------------- C AS RECOMMENDED BY BDR ... GTIMER = 0.0 RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** IGATHR .... INTEGER GATHER OPERATION ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS A STANDARD INTEGER GATHER C OPERATION. C C INPUT PARAMETERS - C KLEN - LENGTH OF THE LIST OF GLOBAL INDICES. C LINDX - LIST OF GLOBAL INDICES. C INDMAP - INDEXED BY GLOBAL INDICES, IT CONTAINS THE C REQUIRED RELATIVE INDICES. C C OUTPUT PARAMETERS - C RELIND - LIST RELATIVE INDICES. C C*********************************************************************** C SUBROUTINE IGATHR ( KLEN , LINDX, INDMAP, RELIND ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER KLEN INTEGER INDMAP(*), LINDX (*), RELIND(*) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER I C C*********************************************************************** C CDIR$ IVDEP DO 100 I = 1, KLEN RELIND(I) = INDMAP(LINDX(I)) 100 CONTINUE RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C C ------------------------------------------------------ C INPUT NUMERICAL VALUES INTO SPARSE DATA STRUCTURES ... C ------------------------------------------------------ C SUBROUTINE INPNV ( NEQNS, XADJF, ADJF, ANZF, PERM, INVP, & NSUPER, XSUPER, XLINDX, LINDX, & XLNZ, LNZ, OFFSET ) C INTEGER XADJF(*), ADJF(*) DOUBLE PRECISION ANZF(*) INTEGER PERM(*), INVP(*) INTEGER NEQNS, NSUPER INTEGER XSUPER(*), XLINDX(*), LINDX(*) INTEGER XLNZ(*) DOUBLE PRECISION LNZ(*) INTEGER OFFSET(*) C INTEGER I, II, J, JLEN, JSUPER, LAST, OLDJ C DO 500 JSUPER = 1, NSUPER C C ---------------------------------------- C FOR EACH SUPERNODE, DO THE FOLLOWING ... C ---------------------------------------- C C ----------------------------------------------- C FIRST GET OFFSET TO FACILITATE NUMERICAL INPUT. C ----------------------------------------------- JLEN = XLINDX(JSUPER+1) - XLINDX(JSUPER) DO 100 II = XLINDX(JSUPER), XLINDX(JSUPER+1)-1 I = LINDX(II) JLEN = JLEN - 1 OFFSET(I) = JLEN 100 CONTINUE C DO 400 J = XSUPER(JSUPER), XSUPER(JSUPER+1)-1 C ----------------------------------------- C FOR EACH COLUMN IN THE CURRENT SUPERNODE, C FIRST INITIALIZE THE DATA STRUCTURE. C ----------------------------------------- DO 200 II = XLNZ(J), XLNZ(J+1)-1 LNZ(II) = 0.0 200 CONTINUE C C ----------------------------------- C NEXT INPUT THE INDIVIDUAL NONZEROS. C ----------------------------------- OLDJ = PERM(J) LAST = XLNZ(J+1) - 1 DO 300 II = XADJF(OLDJ), XADJF(OLDJ+1)-1 I = INVP(ADJF(II)) IF ( I .GE. J ) THEN LNZ(LAST-OFFSET(I)) = ANZF(II) ENDIF 300 CONTINUE 400 CONTINUE C 500 CONTINUE RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C*********** INVINV ..... CONCATENATION OF TWO INVP ************ C*********************************************************************** C*********************************************************************** C C WRITTEN BY JOSEPH LIU (JUL 17, 1985) C C PURPOSE: C TO PERFORM THE MAPPING OF C ORIGINAL-INVP --> INTERMEDIATE-INVP --> NEW INVP C AND THE RESULTING ORDERING REPLACES INVP. THE NEW PERMUTATION C VECTOR PERM IS ALSO COMPUTED. C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C INVP2 - THE SECOND INVERSE PERMUTATION VECTOR. C C UPDATED PARAMETERS: C INVP - THE FIRST INVERSE PERMUTATION VECTOR. ON C OUTPUT, IT CONTAINS THE NEW INVERSE C PERMUTATION. C C OUTPUT PARAMETER: C PERM - NEW PERMUTATION VECTOR (CAN BE THE SAME AS C INVP2). C C*********************************************************************** C SUBROUTINE INVINV ( NEQNS , INVP , INVP2 , PERM ) C C*********************************************************************** C INTEGER INVP(*) , INVP2(*) , & PERM(*) C INTEGER NEQNS C C*********************************************************************** C INTEGER I , INTERM, NODE C C*********************************************************************** C DO 100 I = 1, NEQNS INTERM = INVP(I) INVP(I) = INVP2(INTERM) 100 CONTINUE C DO 200 I = 1, NEQNS NODE = INVP(I) PERM(NODE) = I 200 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** LDINDX .... LOAD INDEX VECTOR ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE COMPUTES THE SECOND INDEX VECTOR C USED TO IMPLEMENT THE DOUBLY-INDIRECT SAXPY-LIKE C LOOPS THAT ALLOW US TO ACCUMULATE UPDATE C COLUMNS DIRECTLY INTO FACTOR STORAGE. C C INPUT PARAMETERS - C JLEN - LENGTH OF THE FIRST COLUMN OF THE SUPERNODE, C INCLUDING THE DIAGONAL ENTRY. C LINDX - THE OFF-DIAGONAL ROW INDICES OF THE SUPERNODE, C I.E., THE ROW INDICES OF THE NONZERO ENTRIES C LYING BELOW THE DIAGONAL ENTRY OF THE FIRST C COLUMN OF THE SUPERNODE. C C OUTPUT PARAMETERS - C INDMAP - THIS INDEX VECTOR MAPS EVERY GLOBAL ROW INDEX C OF NONZERO ENTRIES IN THE FIRST COLUMN OF THE C SUPERNODE TO ITS POSITION IN THE INDEX LIST C RELATIVE TO THE LAST INDEX IN THE LIST. MORE C PRECISELY, IT GIVES THE DISTANCE OF EACH INDEX C FROM THE LAST INDEX IN THE LIST. C C*********************************************************************** C SUBROUTINE LDINDX ( JLEN, LINDX, INDMAP ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER JLEN INTEGER LINDX(*), INDMAP(*) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER CURLEN, J, JSUB C C*********************************************************************** C CURLEN = JLEN DO 200 J = 1, JLEN JSUB = LINDX(J) CURLEN = CURLEN - 1 INDMAP(JSUB) = CURLEN 200 CONTINUE RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C C ----------------------------------------- C GATHER STATISTICS ABOUT FACTORIZATION ... C ----------------------------------------- C SUBROUTINE LSTATS ( NSUPER, XSUPER, XLINDX, LINDX , XLNZ , & TMPSIZ, OUTUNT ) C INTEGER NSUPER, OUTUNT, TMPSIZ INTEGER XSUPER(*), XLINDX(*), LINDX(*), XLNZ(*) C INTEGER J , JLEN , JSIZE , JSUPER, MAXSUP, & N , NCOLS , NOFNZ , NOFSUB, SUPSZE DOUBLE PRECISION FCTOPS, SLVOPS C N = XSUPER(NSUPER+1) - 1 C C WRITE (OUTUNT,*) ' ' C ------------------------------------------------------- C DETERMINE THE NUMBER OF NONZEROS IN CHOLESKY FACTOR AND C THE NUMBER OF SUBSCRIPTS IN REPRESENTING THE SUPERNODAL C STRUCTURE. C ------------------------------------------------------- NOFNZ = XLNZ(N+1) - 1 NOFSUB = XLINDX(NSUPER+1) - 1 C WRITE (OUTUNT,1) C & ' NUMBER OF SUPERNODES = ', NSUPER C WRITE (OUTUNT,1) C & ' NUMBER OF NONZEROS IN L = ', NOFNZ C WRITE (OUTUNT,1) C & ' NUMBER OF SUBSCRIPTS IN L = ', NOFSUB C C ------------------------------------------------------- C DETERMINE THE LARGEST SUPERNODE IN THE CHOLESKY FACTOR. C ------------------------------------------------------- MAXSUP = 0 SUPSZE = 0 DO 100 JSUPER = 1, NSUPER C --------------------------------------------------- C NCOLS IS THE NUMBER OF COLUMNS IN SUPERNODE JSUPER. C --------------------------------------------------- NCOLS = XSUPER(JSUPER+1) - XSUPER(JSUPER) IF ( NCOLS .GT. MAXSUP ) MAXSUP = NCOLS C C ---------------------------------------------------- C JSIZE IS THE NUMBER OF NONZEROS IN SUPERNDOE JSUPER. C ---------------------------------------------------- JLEN = XLINDX(JSUPER+1) - XLINDX(JSUPER) JSIZE = ((2*JLEN - NCOLS + 1)*NCOLS)/2 IF ( JSIZE .GT. SUPSZE ) SUPSZE = JSIZE 100 CONTINUE C WRITE (OUTUNT,1) C & ' LARGEST SUPERNODE BY COLUMNS = ', MAXSUP C WRITE (OUTUNT,1) C & ' LARGEST SUPERNODE BY NONZEROS = ', SUPSZE C C WRITE (OUTUNT,1) C & ' SIZE OF TEMPORARY WORK STORAGE = ', TMPSIZ C C --------------------------- C DETERMINE OPERATION COUNTS. C --------------------------- SLVOPS = 0.0 FCTOPS = 0.0 DO 400 J = 1, N JLEN = XLNZ(J+1) - XLNZ(J) SLVOPS = SLVOPS + 2*JLEN - 1 FCTOPS = FCTOPS + JLEN**2 - 1 400 CONTINUE SLVOPS = 2*SLVOPS C WRITE (OUTUNT,2) C & ' FACTORIZATION OPERATION COUNT = ', FCTOPS C WRITE (OUTUNT,2) C & ' TRIANGULAR SOLN OPERATION COUNT = ', SLVOPS C C 1 FORMAT ( A40, I10 ) C 2 FORMAT ( A40, 1PD20.10 ) RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C--- SPARSPAK-A (ANSI FORTRAN) RELEASE III --- NAME = MMDELM C (C) UNIVERSITY OF WATERLOO JANUARY 1984 C*********************************************************************** C*********************************************************************** C** MMDELM ..... MULTIPLE MINIMUM DEGREE ELIMINATION *********** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE ELIMINATES THE NODE MDNODE OF C MINIMUM DEGREE FROM THE ADJACENCY STRUCTURE, WHICH C IS STORED IN THE QUOTIENT GRAPH FORMAT. IT ALSO C TRANSFORMS THE QUOTIENT GRAPH REPRESENTATION OF THE C ELIMINATION GRAPH. C C INPUT PARAMETERS - C MDNODE - NODE OF MINIMUM DEGREE. C MAXINT - ESTIMATE OF MAXIMUM REPRESENTABLE (SHORT) C INTEGER. C TAG - TAG VALUE. C C UPDATED PARAMETERS - C (XADJ,ADJNCY) - UPDATED ADJACENCY STRUCTURE. C (DHEAD,DFORW,DBAKW) - DEGREE DOUBLY LINKED STRUCTURE. C QSIZE - SIZE OF SUPERNODE. C MARKER - MARKER VECTOR. C LLIST - TEMPORARY LINKED LIST OF ELIMINATED NABORS. C C*********************************************************************** C SUBROUTINE MMDELM ( MDNODE, XADJ, ADJNCY, DHEAD, DFORW, 1 DBAKW, QSIZE, LLIST, MARKER, MAXINT, 1 TAG ) C C*********************************************************************** C INTEGER ADJNCY(*), DBAKW(*) , DFORW(*) , DHEAD(*) , 1 LLIST(*) , MARKER(*), QSIZE(*) INTEGER XADJ(*) INTEGER ELMNT , I , ISTOP , ISTRT , J , 1 JSTOP , JSTRT , LINK , MAXINT, MDNODE, 1 NABOR , NODE , NPV , NQNBRS, NXNODE, 1 PVNODE, RLMT , RLOC , RNODE , TAG , 1 XQNBR C C*********************************************************************** C C ----------------------------------------------- C FIND REACHABLE SET AND PLACE IN DATA STRUCTURE. C ----------------------------------------------- MARKER(MDNODE) = TAG ISTRT = XADJ(MDNODE) ISTOP = XADJ(MDNODE+1) - 1 C ------------------------------------------------------- C ELMNT POINTS TO THE BEGINNING OF THE LIST OF ELIMINATED C NABORS OF MDNODE, AND RLOC GIVES THE STORAGE LOCATION C FOR THE NEXT REACHABLE NODE. C ------------------------------------------------------- ELMNT = 0 RLOC = ISTRT RLMT = ISTOP DO 200 I = ISTRT, ISTOP NABOR = ADJNCY(I) IF ( NABOR .EQ. 0 ) GO TO 300 IF ( MARKER(NABOR) .GE. TAG ) GO TO 200 MARKER(NABOR) = TAG IF ( DFORW(NABOR) .LT. 0 ) GO TO 100 ADJNCY(RLOC) = NABOR RLOC = RLOC + 1 GO TO 200 100 CONTINUE LLIST(NABOR) = ELMNT ELMNT = NABOR 200 CONTINUE 300 CONTINUE C ----------------------------------------------------- C MERGE WITH REACHABLE NODES FROM GENERALIZED ELEMENTS. C ----------------------------------------------------- IF ( ELMNT .LE. 0 ) GO TO 1000 ADJNCY(RLMT) = - ELMNT LINK = ELMNT 400 CONTINUE JSTRT = XADJ(LINK) JSTOP = XADJ(LINK+1) - 1 DO 800 J = JSTRT, JSTOP NODE = ADJNCY(J) LINK = - NODE C IF ( NODE ) 400, 900, 500 IF (NODE .LT. 0) THEN GO TO 400 ELSE IF (NODE .GT. 0) THEN GO TO 500 ELSE GO TO 900 ENDIF 500 CONTINUE IF ( MARKER(NODE) .GE. TAG .OR. 1 DFORW(NODE) .LT. 0 ) GO TO 800 MARKER(NODE) = TAG C --------------------------------- C USE STORAGE FROM ELIMINATED NODES C IF NECESSARY. C --------------------------------- 600 CONTINUE IF ( RLOC .LT. RLMT ) GO TO 700 LINK = - ADJNCY(RLMT) RLOC = XADJ(LINK) RLMT = XADJ(LINK+1) - 1 GO TO 600 700 CONTINUE ADJNCY(RLOC) = NODE RLOC = RLOC + 1 800 CONTINUE 900 CONTINUE ELMNT = LLIST(ELMNT) GO TO 300 1000 CONTINUE IF ( RLOC .LE. RLMT ) ADJNCY(RLOC) = 0 C -------------------------------------------------------- C FOR EACH NODE IN THE REACHABLE SET, DO THE FOLLOWING ... C -------------------------------------------------------- LINK = MDNODE 1100 CONTINUE ISTRT = XADJ(LINK) ISTOP = XADJ(LINK+1) - 1 DO 1700 I = ISTRT, ISTOP RNODE = ADJNCY(I) LINK = - RNODE C IF ( RNODE ) 1100, 1800, 1200 IF (RNODE .LT. 0) THEN GO TO 1100 ELSE IF (RNODE .GT. 0) THEN GO TO 1200 ELSE GO TO 1800 ENDIF 1200 CONTINUE C -------------------------------------------- C IF RNODE IS IN THE DEGREE LIST STRUCTURE ... C -------------------------------------------- PVNODE = DBAKW(RNODE) IF ( PVNODE .EQ. 0 .OR. 1 PVNODE .EQ. (-MAXINT) ) GO TO 1300 C ------------------------------------- C THEN REMOVE RNODE FROM THE STRUCTURE. C ------------------------------------- NXNODE = DFORW(RNODE) IF ( NXNODE .GT. 0 ) DBAKW(NXNODE) = PVNODE IF ( PVNODE .GT. 0 ) DFORW(PVNODE) = NXNODE NPV = - PVNODE IF ( PVNODE .LT. 0 ) DHEAD(NPV) = NXNODE 1300 CONTINUE C ---------------------------------------- C PURGE INACTIVE QUOTIENT NABORS OF RNODE. C ---------------------------------------- JSTRT = XADJ(RNODE) JSTOP = XADJ(RNODE+1) - 1 XQNBR = JSTRT DO 1400 J = JSTRT, JSTOP NABOR = ADJNCY(J) IF ( NABOR .EQ. 0 ) GO TO 1500 IF ( MARKER(NABOR) .GE. TAG ) GO TO 1400 ADJNCY(XQNBR) = NABOR XQNBR = XQNBR + 1 1400 CONTINUE 1500 CONTINUE C ---------------------------------------- C IF NO ACTIVE NABOR AFTER THE PURGING ... C ---------------------------------------- NQNBRS = XQNBR - JSTRT IF ( NQNBRS .GT. 0 ) GO TO 1600 C ----------------------------- C THEN MERGE RNODE WITH MDNODE. C ----------------------------- QSIZE(MDNODE) = QSIZE(MDNODE) + QSIZE(RNODE) QSIZE(RNODE) = 0 MARKER(RNODE) = MAXINT DFORW(RNODE) = - MDNODE DBAKW(RNODE) = - MAXINT GO TO 1700 1600 CONTINUE C -------------------------------------- C ELSE FLAG RNODE FOR DEGREE UPDATE, AND C ADD MDNODE AS A NABOR OF RNODE. C -------------------------------------- DFORW(RNODE) = NQNBRS + 1 DBAKW(RNODE) = 0 ADJNCY(XQNBR) = MDNODE XQNBR = XQNBR + 1 IF ( XQNBR .LE. JSTOP ) ADJNCY(XQNBR) = 0 C 1700 CONTINUE 1800 CONTINUE RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C--- SPARSPAK-A (ANSI FORTRAN) RELEASE III --- NAME = MMDINT C (C) UNIVERSITY OF WATERLOO JANUARY 1984 C*********************************************************************** C*********************************************************************** C*** MMDINT ..... MULT MINIMUM DEGREE INITIALIZATION *********** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS INITIALIZATION FOR THE C MULTIPLE ELIMINATION VERSION OF THE MINIMUM DEGREE C ALGORITHM. C C INPUT PARAMETERS - C NEQNS - NUMBER OF EQUATIONS. C (XADJ,ADJNCY) - ADJACENCY STRUCTURE. C C OUTPUT PARAMETERS - C (DHEAD,DFORW,DBAKW) - DEGREE DOUBLY LINKED STRUCTURE. C QSIZE - SIZE OF SUPERNODE (INITIALIZED TO ONE). C LLIST - LINKED LIST. C MARKER - MARKER VECTOR. C C*********************************************************************** C SUBROUTINE MMDINT ( NEQNS, XADJ, ADJNCY, DHEAD, DFORW, 1 DBAKW, QSIZE, LLIST, MARKER ) C C*********************************************************************** C INTEGER ADJNCY(*), DBAKW(*) , DFORW(*) , DHEAD(*) , 1 LLIST(*) , MARKER(*), QSIZE(*) INTEGER XADJ(*) INTEGER FNODE , NDEG , NEQNS , NODE C C*********************************************************************** C DO 100 NODE = 1, NEQNS DHEAD(NODE) = 0 QSIZE(NODE) = 1 MARKER(NODE) = 0 LLIST(NODE) = 0 100 CONTINUE C ------------------------------------------ C INITIALIZE THE DEGREE DOUBLY LINKED LISTS. C ------------------------------------------ DO 200 NODE = 1, NEQNS NDEG = XADJ(NODE+1) - XADJ(NODE) + 1 FNODE = DHEAD(NDEG) DFORW(NODE) = FNODE DHEAD(NDEG) = NODE IF ( FNODE .GT. 0 ) DBAKW(FNODE) = NODE DBAKW(NODE) = - NDEG 200 CONTINUE RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C--- SPARSPAK-A (ANSI FORTRAN) RELEASE III --- NAME = MMDNUM C (C) UNIVERSITY OF WATERLOO JANUARY 1984 C*********************************************************************** C*********************************************************************** C***** MMDNUM ..... MULTI MINIMUM DEGREE NUMBERING ************* C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS THE FINAL STEP IN C PRODUCING THE PERMUTATION AND INVERSE PERMUTATION C VECTORS IN THE MULTIPLE ELIMINATION VERSION OF THE C MINIMUM DEGREE ORDERING ALGORITHM. C C INPUT PARAMETERS - C NEQNS - NUMBER OF EQUATIONS. C QSIZE - SIZE OF SUPERNODES AT ELIMINATION. C C UPDATED PARAMETERS - C INVP - INVERSE PERMUTATION VECTOR. ON INPUT, C IF QSIZE(NODE)=0, THEN NODE HAS BEEN MERGED C INTO THE NODE -INVP(NODE); OTHERWISE, C -INVP(NODE) IS ITS INVERSE LABELLING. C C OUTPUT PARAMETERS - C PERM - THE PERMUTATION VECTOR. C C*********************************************************************** C SUBROUTINE MMDNUM ( NEQNS, PERM, INVP, QSIZE ) C C*********************************************************************** C INTEGER INVP(*) , PERM(*) , QSIZE(*) INTEGER FATHER, NEQNS , NEXTF , NODE , NQSIZE, 1 NUM , ROOT C C*********************************************************************** C DO 100 NODE = 1, NEQNS NQSIZE = QSIZE(NODE) IF ( NQSIZE .LE. 0 ) PERM(NODE) = INVP(NODE) IF ( NQSIZE .GT. 0 ) PERM(NODE) = - INVP(NODE) 100 CONTINUE C ------------------------------------------------------ C FOR EACH NODE WHICH HAS BEEN MERGED, DO THE FOLLOWING. C ------------------------------------------------------ DO 500 NODE = 1, NEQNS IF ( PERM(NODE) .GT. 0 ) GO TO 500 C ----------------------------------------- C TRACE THE MERGED TREE UNTIL ONE WHICH HAS C NOT BEEN MERGED, CALL IT ROOT. C ----------------------------------------- FATHER = NODE 200 CONTINUE IF ( PERM(FATHER) .GT. 0 ) GO TO 300 FATHER = - PERM(FATHER) GO TO 200 300 CONTINUE C ----------------------- C NUMBER NODE AFTER ROOT. C ----------------------- ROOT = FATHER NUM = PERM(ROOT) + 1 INVP(NODE) = - NUM PERM(ROOT) = NUM C ------------------------ C SHORTEN THE MERGED TREE. C ------------------------ FATHER = NODE 400 CONTINUE NEXTF = - PERM(FATHER) IF ( NEXTF .LE. 0 ) GO TO 500 PERM(FATHER) = - ROOT FATHER = NEXTF GO TO 400 500 CONTINUE C ---------------------- C READY TO COMPUTE PERM. C ---------------------- DO 600 NODE = 1, NEQNS NUM = - INVP(NODE) INVP(NODE) = NUM PERM(NUM) = NODE 600 CONTINUE RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Joseph W.H. Liu C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C--- SPARSPAK-A (ANSI FORTRAN) RELEASE III --- NAME = MMDUPD C (C) UNIVERSITY OF WATERLOO JANUARY 1984 C*********************************************************************** C*********************************************************************** C***** MMDUPD ..... MULTIPLE MINIMUM DEGREE UPDATE ************* C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE UPDATES THE DEGREES OF NODES C AFTER A MULTIPLE ELIMINATION STEP. C C INPUT PARAMETERS - C EHEAD - THE BEGINNING OF THE LIST OF ELIMINATED C NODES (I.E., NEWLY FORMED ELEMENTS). C NEQNS - NUMBER OF EQUATIONS. C (XADJ,ADJNCY) - ADJACENCY STRUCTURE. C DELTA - TOLERANCE VALUE FOR MULTIPLE ELIMINATION. C MAXINT - MAXIMUM MACHINE REPRESENTABLE (SHORT) C INTEGER. C C UPDATED PARAMETERS - C MDEG - NEW MINIMUM DEGREE AFTER DEGREE UPDATE. C (DHEAD,DFORW,DBAKW) - DEGREE DOUBLY LINKED STRUCTURE. C QSIZE - SIZE OF SUPERNODE. C LLIST - WORKING LINKED LIST. C MARKER - MARKER VECTOR FOR DEGREE UPDATE. C TAG - TAG VALUE. C C*********************************************************************** C SUBROUTINE MMDUPD ( EHEAD, NEQNS, XADJ, ADJNCY, DELTA, 1 MDEG, DHEAD, DFORW, DBAKW, QSIZE, 1 LLIST, MARKER, MAXINT, TAG ) C C*********************************************************************** C INTEGER ADJNCY(*), DBAKW(*) , DFORW(*) , DHEAD(*) , 1 LLIST(*) , MARKER(*), QSIZE(*) INTEGER XADJ(*) INTEGER DEG , DEG0 , DELTA , EHEAD , ELMNT , 1 ENODE , FNODE , I , IQ2 , ISTOP , 1 ISTRT , J , JSTOP , JSTRT , LINK , 1 MAXINT, MDEG , MDEG0 , MTAG , NABOR , 1 NEQNS , NODE , Q2HEAD, QXHEAD, TAG C C*********************************************************************** C MDEG0 = MDEG + DELTA ELMNT = EHEAD 100 CONTINUE C ------------------------------------------------------- C FOR EACH OF THE NEWLY FORMED ELEMENT, DO THE FOLLOWING. C (RESET TAG VALUE IF NECESSARY.) C ------------------------------------------------------- IF ( ELMNT .LE. 0 ) RETURN MTAG = TAG + MDEG0 IF ( MTAG .LT. MAXINT ) GO TO 300 TAG = 1 DO 200 I = 1, NEQNS IF ( MARKER(I) .LT. MAXINT ) MARKER(I) = 0 200 CONTINUE MTAG = TAG + MDEG0 300 CONTINUE C --------------------------------------------- C CREATE TWO LINKED LISTS FROM NODES ASSOCIATED C WITH ELMNT: ONE WITH TWO NABORS (Q2HEAD) IN C ADJACENCY STRUCTURE, AND THE OTHER WITH MORE C THAN TWO NABORS (QXHEAD). ALSO COMPUTE DEG0, C NUMBER OF NODES IN THIS ELEMENT. C --------------------------------------------- Q2HEAD = 0 QXHEAD = 0 DEG0 = 0 LINK = ELMNT 400 CONTINUE ISTRT = XADJ(LINK) ISTOP = XADJ(LINK+1) - 1 DO 700 I = ISTRT, ISTOP ENODE = ADJNCY(I) LINK = - ENODE C IF ( ENODE ) 400, 800, 500 IF (ENODE .LT. 0) THEN GO TO 400 ELSE IF (ENODE .GT. 0) THEN GO TO 500 ELSE GO TO 800 ENDIF C 500 CONTINUE IF ( QSIZE(ENODE) .EQ. 0 ) GO TO 700 DEG0 = DEG0 + QSIZE(ENODE) MARKER(ENODE) = MTAG C ---------------------------------- C IF ENODE REQUIRES A DEGREE UPDATE, C THEN DO THE FOLLOWING. C ---------------------------------- IF ( DBAKW(ENODE) .NE. 0 ) GO TO 700 C --------------------------------------- C PLACE EITHER IN QXHEAD OR Q2HEAD LISTS. C --------------------------------------- IF ( DFORW(ENODE) .EQ. 2 ) GO TO 600 LLIST(ENODE) = QXHEAD QXHEAD = ENODE GO TO 700 600 CONTINUE LLIST(ENODE) = Q2HEAD Q2HEAD = ENODE 700 CONTINUE 800 CONTINUE C -------------------------------------------- C FOR EACH ENODE IN Q2 LIST, DO THE FOLLOWING. C -------------------------------------------- ENODE = Q2HEAD IQ2 = 1 900 CONTINUE IF ( ENODE .LE. 0 ) GO TO 1500 IF ( DBAKW(ENODE) .NE. 0 ) GO TO 2200 TAG = TAG + 1 DEG = DEG0 C ------------------------------------------ C IDENTIFY THE OTHER ADJACENT ELEMENT NABOR. C ------------------------------------------ ISTRT = XADJ(ENODE) NABOR = ADJNCY(ISTRT) IF ( NABOR .EQ. ELMNT ) NABOR = ADJNCY(ISTRT+1) C ------------------------------------------------ C IF NABOR IS UNELIMINATED, INCREASE DEGREE COUNT. C ------------------------------------------------ LINK = NABOR IF ( DFORW(NABOR) .LT. 0 ) GO TO 1000 DEG = DEG + QSIZE(NABOR) GO TO 2100 1000 CONTINUE C -------------------------------------------- C OTHERWISE, FOR EACH NODE IN THE 2ND ELEMENT, C DO THE FOLLOWING. C -------------------------------------------- ISTRT = XADJ(LINK) ISTOP = XADJ(LINK+1) - 1 DO 1400 I = ISTRT, ISTOP NODE = ADJNCY(I) LINK = - NODE IF ( NODE .EQ. ENODE ) GO TO 1400 C IF ( NODE ) 1000, 2100, 1100 IF (NODE .LT. 0) THEN GO TO 1000 ELSE IF (NODE .GT. 0) THEN GO TO 1100 ELSE GO TO 2100 ENDIF C 1100 CONTINUE IF ( QSIZE(NODE) .EQ. 0 ) GO TO 1400 IF ( MARKER(NODE) .GE. TAG ) GO TO 1200 C ------------------------------------- C CASE WHEN NODE IS NOT YET CONSIDERED. C ------------------------------------- MARKER(NODE) = TAG DEG = DEG + QSIZE(NODE) GO TO 1400 1200 CONTINUE C ---------------------------------------- C CASE WHEN NODE IS INDISTINGUISHABLE FROM C ENODE. MERGE THEM INTO A NEW SUPERNODE. C ---------------------------------------- IF ( DBAKW(NODE) .NE. 0 ) GO TO 1400 IF ( DFORW(NODE) .NE. 2 ) GO TO 1300 QSIZE(ENODE) = QSIZE(ENODE) + 1 QSIZE(NODE) QSIZE(NODE) = 0 MARKER(NODE) = MAXINT DFORW(NODE) = - ENODE DBAKW(NODE) = - MAXINT GO TO 1400 1300 CONTINUE C -------------------------------------- C CASE WHEN NODE IS OUTMATCHED BY ENODE. C -------------------------------------- IF ( DBAKW(NODE) .EQ.0 ) 1 DBAKW(NODE) = - MAXINT 1400 CONTINUE GO TO 2100 1500 CONTINUE C ------------------------------------------------ C FOR EACH ENODE IN THE QX LIST, DO THE FOLLOWING. C ------------------------------------------------ ENODE = QXHEAD IQ2 = 0 1600 CONTINUE IF ( ENODE .LE. 0 ) GO TO 2300 IF ( DBAKW(ENODE) .NE. 0 ) GO TO 2200 TAG = TAG + 1 DEG = DEG0 C --------------------------------- C FOR EACH UNMARKED NABOR OF ENODE, C DO THE FOLLOWING. C --------------------------------- ISTRT = XADJ(ENODE) ISTOP = XADJ(ENODE+1) - 1 DO 2000 I = ISTRT, ISTOP NABOR = ADJNCY(I) IF ( NABOR .EQ. 0 ) GO TO 2100 IF ( MARKER(NABOR) .GE. TAG ) GO TO 2000 MARKER(NABOR) = TAG LINK = NABOR C ------------------------------ C IF UNELIMINATED, INCLUDE IT IN C DEG COUNT. C ------------------------------ IF ( DFORW(NABOR) .LT. 0 ) GO TO 1700 DEG = DEG + QSIZE(NABOR) GO TO 2000 1700 CONTINUE C ------------------------------- C IF ELIMINATED, INCLUDE UNMARKED C NODES IN THIS ELEMENT INTO THE C DEGREE COUNT. C ------------------------------- JSTRT = XADJ(LINK) JSTOP = XADJ(LINK+1) - 1 DO 1900 J = JSTRT, JSTOP NODE = ADJNCY(J) LINK = - NODE C IF ( NODE ) 1700, 2000, 1800 IF (NODE .LT. 0) THEN GO TO 1700 ELSE IF (NODE .GT. 0) THEN GO TO 1800 ELSE GO TO 2000 ENDIF C 1800 CONTINUE IF ( MARKER(NODE) .GE. TAG ) 1 GO TO 1900 MARKER(NODE) = TAG DEG = DEG + QSIZE(NODE) 1900 CONTINUE 2000 CONTINUE 2100 CONTINUE C ------------------------------------------- C UPDATE EXTERNAL DEGREE OF ENODE IN DEGREE C STRUCTURE, AND MDEG (MIN DEG) IF NECESSARY. C ------------------------------------------- DEG = DEG - QSIZE(ENODE) + 1 FNODE = DHEAD(DEG) DFORW(ENODE) = FNODE DBAKW(ENODE) = - DEG IF ( FNODE .GT. 0 ) DBAKW(FNODE) = ENODE DHEAD(DEG) = ENODE IF ( DEG .LT. MDEG ) MDEG = DEG 2200 CONTINUE C ---------------------------------- C GET NEXT ENODE IN CURRENT ELEMENT. C ---------------------------------- ENODE = LLIST(ENODE) IF ( IQ2 .EQ. 1 ) GO TO 900 GO TO 1600 2300 CONTINUE C ----------------------------- C GET NEXT ELEMENT IN THE LIST. C ----------------------------- TAG = MTAG ELMNT = LLIST(ELMNT) GO TO 100 C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************** MMPY .... MATRIX-MATRIX MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - C THIS ROUTINE PERFORMS A MATRIX-MATRIX MULTIPLY, Y = Y + XA, C ASSUMING DATA STRUCTURES USED IN SOME OF OUR SPARSE CHOLESKY C CODES. C C INPUT PARAMETERS - C M - NUMBER OF ROWS IN X AND IN Y. C N - NUMBER OF COLUMNS IN X AND NUMBER OF ROWS C IN A. C Q - NUMBER OF COLUMNS IN A AND Y. C SPLIT(*) - BLOCK PARTITIONING OF X. C XPNT(*) - XPNT(J+1) POINTS ONE LOCATION BEYOND THE C END OF THE J-TH COLUMN OF X. XPNT IS ALSO C USED TO ACCESS THE ROWS OF A. C X(*) - CONTAINS THE COLUMNS OF X AND THE ROWS OF A. C LDY - LENGTH OF FIRST COLUMN OF Y. C MMPYN - EXTERNAL ROUTINE: MATRIX-MATRIX MULTIPLY, C WITH LEVEL N LOOP UNROLLING. C C UPDATED PARAMETERS - C Y(*) - ON OUTPUT, Y = Y + AX. C C*********************************************************************** C SUBROUTINE MMPY ( M , N , Q , SPLIT , XPNT , & X , Y , LDY , MMPYN ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C EXTERNAL MMPYN INTEGER LDY , M , N , Q INTEGER SPLIT(*) , XPNT(*) DOUBLE PRECISION X(*) , Y(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER BLK , FSTCOL, NN C C*********************************************************************** C BLK = 1 FSTCOL = 1 100 CONTINUE IF ( FSTCOL .LE. N ) THEN NN = SPLIT(BLK) CALL MMPYN ( M, NN, Q, XPNT(FSTCOL), X, Y, LDY ) FSTCOL = FSTCOL + NN BLK = BLK + 1 GO TO 100 ENDIF RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************* MMPY1 .... MATRIX-MATRIX MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - C THIS ROUTINE PERFORMS A MATRIX-MATRIX MULTIPLY, Y = Y + XA, C ASSUMING DATA STRUCTURES USED IN SOME OF OUR SPARSE CHOLESKY C CODES. C C LOOP UNROLLING: LEVEL 1 C C INPUT PARAMETERS - C M - NUMBER OF ROWS IN X AND IN Y. C N - NUMBER OF COLUMNS IN X AND NUMBER OF ROWS C IN A. C Q - NUMBER OF COLUMNS IN A AND Y. C XPNT(*) - XPNT(J+1) POINTS ONE LOCATION BEYOND THE C END OF THE J-TH COLUMN OF X. XPNT IS ALSO C USED TO ACCESS THE ROWS OF A. C X(*) - CONTAINS THE COLUMNS OF X AND THE ROWS OF A. C LDY - LENGTH OF FIRST COLUMN OF Y. C C UPDATED PARAMETERS - C Y(*) - ON OUTPUT, Y = Y + AX. C C*********************************************************************** C SUBROUTINE MMPY1 ( M , N , Q , XPNT , X , & Y , LDY ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER LDY , M , N , Q INTEGER XPNT(*) DOUBLE PRECISION X(*) , Y(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I1 INTEGER IY , IYLAST, IYSTRT, IYSTOP, LENY , & MM , XCOL , YCOL DOUBLE PRECISION A1 C C*********************************************************************** C MM = M IYLAST = 0 LENY = LDY C ------------------------------------ C TO COMPUTE EACH COLUMN YCOL OF Y ... C ------------------------------------ DO 300 YCOL = 1, Q IYSTRT = IYLAST + 1 IYSTOP = IYSTRT + MM - 1 IYLAST = IYLAST + LENY C -------------------------------------------------- C ... PERFORM THE APPROPRATE MATRIX VECTOR MULTIPLY: C X * A(*,YCOL). C -------------------------------------------------- DO 200 XCOL = 1, N I1 = XPNT(XCOL+1) - MM A1 = - X(I1) DO 100 IY = IYSTRT, IYSTOP Y(IY) = Y(IY) + A1 * X(I1) I1 = I1 + 1 100 CONTINUE 200 CONTINUE MM = MM - 1 LENY = LENY - 1 300 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: May 26, 1995 C Authors: Esmond G. Ng, Barry W. Peyton, and Guodong Zhang C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************* MMPY2 .... MATRIX-MATRIX MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - C THIS ROUTINE PERFORMS A MATRIX-MATRIX MULTIPLY, Y = Y + XA, C ASSUMING DATA STRUCTURES USED IN SOME OF OUR SPARSE CHOLESKY C CODES. C C LOOP UNROLLING: LEVEL 2 UPDATING TWO COLUMNS AT A TIME C C INPUT PARAMETERS - C M - NUMBER OF ROWS IN X AND IN Y. C N - NUMBER OF COLUMNS IN X AND NUMBER OF ROWS C IN A. C Q - NUMBER OF COLUMNS IN A AND Y. C XPNT(*) - XPNT(J+1) POINTS ONE LOCATION BEYOND THE C END OF THE J-TH COLUMN OF X. XPNT IS ALSO C USED TO ACCESS THE ROWS OF A. C X(*) - CONTAINS THE COLUMNS OF X AND THE ROWS OF A. C LDY - LENGTH OF FIRST COLUMN OF Y. C C UPDATED PARAMETERS - C Y(*) - ON OUTPUT, Y = Y + AX. C C*********************************************************************** C SUBROUTINE MMPY2 ( M , N , Q , XPNT , X , & Y , LDY ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER LDY , M , N , Q INTEGER XPNT(*) DOUBLE PRECISION X(*) , Y(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I , J , K , QQ INTEGER I1 , I2 INTEGER IYBEG , IYBEG1, IYBEG2, LENY , MM DOUBLE PRECISION A1 , A2 , A9 , A10 DOUBLE PRECISION B1 , B2 , Y1 , Y2 C C*********************************************************************** C C ---------------------------------------------------- C COMPUTE EACH DIAGONAL ENTRY OF THE ODD COLUMNS OF Y. C ---------------------------------------------------- C MM = M QQ = MIN(M,Q) IYBEG = 1 LENY = LDY - 1 DO 200 J = 1, QQ-1 , 2 CDIR$ IVDEP DO 100 I = 1, N I1 = XPNT(I+1) - MM A1 = X(I1) Y(IYBEG) = Y(IYBEG) - A1*A1 100 CONTINUE IYBEG = IYBEG + 2*LENY + 1 LENY = LENY - 2 MM = MM - 2 200 CONTINUE C C ------------------------------------------------------- C UPDATE TWO COLUMNS OF Y AT A TIME, EXCEPT THE DIAGONAL C ELEMENT. C NOTE: THE DIAGONAL ELEMENT OF THE ODD COLUMN HAS C BEEN COMPUTED, SO WE COMPUTE THE SAME NUMBER OF C ELEMENTS FOR THE TWO COLUMNS. C ------------------------------------------------------- C MM = M IYBEG = 1 LENY = LDY - 1 C DO 600 J = 1, QQ-1, 2 C IYBEG1 = IYBEG IYBEG2 = IYBEG + LENY C DO 400 K = 1, N-1, 2 C C --------------------------------- C TWO COLUMNS UPDATING TWO COLUMNS. C --------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM A1 = X(I1) A2 = X(I2) A9 = X(I1+1) A10 = X(I2+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 C DO 300 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 Y(IYBEG1+I) = Y1 Y2 = Y2 - B2 * A10 Y(IYBEG2+I) = Y2 300 CONTINUE C 400 CONTINUE C C ----------------------------- C BOUNDARY CODE FOR THE K LOOP. C ----------------------------- C IF ( K .EQ. N ) THEN C C -------------------------------- C ONE COLUMN UPDATING TWO COLUMNS. C -------------------------------- C I1 = XPNT(K+1) - MM A1 = X(I1) A9 = X(I1+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 C DO 500 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) Y(IYBEG1+I) = Y1 Y2 = Y2 - B1 * A9 Y(IYBEG2+I) = Y2 500 CONTINUE C ENDIF C C ----------------------------------------------- C PREPARE FOR NEXT PAIR OF COLUMNS TO BE UPDATED. C ----------------------------------------------- C MM = MM - 2 IYBEG = IYBEG2 + LENY + 1 LENY = LENY - 2 C 600 CONTINUE C C ------------------------------------------------------ C BOUNDARY CODE FOR J LOOP: EXECUTED WHENEVER Q IS ODD. C ------------------------------------------------------ C IF ( J .EQ. QQ ) THEN CALL SMXPY2 ( MM, N, Y(IYBEG), XPNT, X ) ENDIF C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: May 26, 1995 C Authors: Esmond G. Ng, Barry W. Peyton, and Guodong Zhang C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************* MMPY4 .... MATRIX-MATRIX MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - C THIS ROUTINE PERFORMS A MATRIX-MATRIX MULTIPLY, Y = Y + XA, C ASSUMING DATA STRUCTURES USED IN SOME OF OUR SPARSE CHOLESKY C CODES. C C LOOP UNROLLING: LEVEL 4 UPDATING TWO COLUMNS AT A TIME C C INPUT PARAMETERS - C M - NUMBER OF ROWS IN X AND IN Y. C N - NUMBER OF COLUMNS IN X AND NUMBER OF ROWS C IN A. C Q - NUMBER OF COLUMNS IN A AND Y. C XPNT(*) - XPNT(J+1) POINTS ONE LOCATION BEYOND THE C END OF THE J-TH COLUMN OF X. XPNT IS ALSO C USED TO ACCESS THE ROWS OF A. C X(*) - CONTAINS THE COLUMNS OF X AND THE ROWS OF A. C LDY - LENGTH OF FIRST COLUMN OF Y. C C UPDATED PARAMETERS - C Y(*) - ON OUTPUT, Y = Y + AX. C C*********************************************************************** C SUBROUTINE MMPY4 ( M , N , Q , XPNT , X , & Y , LDY ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER LDY , M , N , Q INTEGER XPNT(*) DOUBLE PRECISION X(*) , Y(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I , J , K , QQ INTEGER I1 , I2 , I3 , I4 INTEGER IYBEG , IYBEG1, IYBEG2, LENY , MM DOUBLE PRECISION A1 , A2 , A3 , A4 , A9 , & A10 , A11 , A12 DOUBLE PRECISION B1 , B2 , B3 , B4 , Y1 , & Y2 C C*********************************************************************** C C ---------------------------------------------------- C COMPUTE EACH DIAGONAL ENTRY OF THE ODD COLUMNS OF Y. C ---------------------------------------------------- C MM = M QQ = MIN(M,Q) IYBEG = 1 LENY = LDY - 1 DO 200 J = 1, QQ-1, 2 CDIR$ IVDEP DO 100 I = 1, N I1 = XPNT(I+1) - MM A1 = X(I1) Y(IYBEG) = Y(IYBEG) - A1*A1 100 CONTINUE IYBEG = IYBEG + 2*LENY + 1 LENY = LENY - 2 MM = MM - 2 200 CONTINUE C C ------------------------------------------------------- C UPDATE TWO COLUMNS OF Y AT A TIME, EXCEPT THE DIAGONAL C ELEMENT. C NOTE: THE DIAGONAL ELEMENT OF THE ODD COLUMN HAS C BEEN COMPUTED, SO WE COMPUTE THE SAME NUMBER OF C ELEMENTS FOR THE TWO COLUMNS. C ------------------------------------------------------- C MM = M IYBEG = 1 LENY = LDY - 1 C DO 2000 J = 1, QQ-1, 2 C IYBEG1 = IYBEG IYBEG2 = IYBEG + LENY C DO 400 K = 1, N-3, 4 C C ---------------------------------- C FOUR COLUMNS UPDATING TWO COLUMNS. C ---------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM I4 = XPNT(K+4) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A4 = X(I4) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) A12 = X(I4+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 - A4*A12 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 - A12*A12 C DO 300 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 B4 = X(I4+I) Y2 = Y2 - B3 * A11 Y1 = Y1 - B4 * A4 Y(IYBEG1+I) = Y1 Y2 = Y2 - B4 * A12 Y(IYBEG2+I) = Y2 300 CONTINUE C 400 CONTINUE C C ----------------------------- C BOUNDARY CODE FOR THE K LOOP. C ----------------------------- C c GO TO ( 1100, 900, 700, 500 ), N-K+2 c 1 2 3 4 select case (n-k+2) C case (4) c 500 CONTINUE C C ----------------------------------- C THREE COLUMNS UPDATING TWO COLUMNS. C ----------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 C DO 600 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 Y(IYBEG1+I) = Y1 Y2 = Y2 - B3 * A11 Y(IYBEG2+I) = Y2 600 CONTINUE C GO TO 1100 C case (3) c 700 CONTINUE C C --------------------------------- C TWO COLUMNS UPDATING TWO COLUMNS. C --------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM A1 = X(I1) A2 = X(I2) A9 = X(I1+1) A10 = X(I2+1) Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 DO 800 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 Y(IYBEG1+I) = Y1 Y2 = Y2 - B2 * A10 Y(IYBEG2+I) = Y2 800 CONTINUE C GO TO 1100 C case (2) c 900 CONTINUE C C -------------------------------- C ONE COLUMN UPDATING TWO COLUMNS. C -------------------------------- C I1 = XPNT(K+1) - MM A1 = X(I1) A9 = X(I1+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 C DO 1000 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) Y(IYBEG1+I) = Y1 Y2 = Y2 - B1 * A9 Y(IYBEG2+I) = Y2 1000 CONTINUE C GO TO 1100 case (1) end select C C ----------------------------------------------- C PREPARE FOR NEXT PAIR OF COLUMNS TO BE UPDATED. C ----------------------------------------------- C 1100 CONTINUE MM = MM - 2 IYBEG = IYBEG2 + LENY + 1 LENY = LENY - 2 C 2000 CONTINUE C C ------------------------------------------------------ C BOUNDARY CODE FOR J LOOP: EXECUTED WHENEVER Q IS ODD. C ------------------------------------------------------ C IF ( J .EQ. QQ ) THEN CALL SMXPY4 ( MM, N, Y(IYBEG), XPNT, X ) ENDIF C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: May 26, 1995 C Authors: Esmond G. Ng, Barry W. Peyton, and Guodong Zhang C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************* MMPY8 .... MATRIX-MATRIX MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - C THIS ROUTINE PERFORMS A MATRIX-MATRIX MULTIPLY, Y = Y + XA, C ASSUMING DATA STRUCTURES USED IN SOME OF OUR SPARSE CHOLESKY C CODES. C C LOOP UNROLLING: LEVEL 8 UPDATING TWO COLUMNS AT A TIME C C INPUT PARAMETERS - C M - NUMBER OF ROWS IN X AND IN Y. C N - NUMBER OF COLUMNS IN X AND NUMBER OF ROWS C IN A. C Q - NUMBER OF COLUMNS IN A AND Y. C XPNT(*) - XPNT(J+1) POINTS ONE LOCATION BEYOND THE C END OF THE J-TH COLUMN OF X. XPNT IS ALSO C USED TO ACCESS THE ROWS OF A. C X(*) - CONTAINS THE COLUMNS OF X AND THE ROWS OF A. C LDY - LENGTH OF FIRST COLUMN OF Y. C C UPDATED PARAMETERS - C Y(*) - ON OUTPUT, Y = Y + AX. C C*********************************************************************** C SUBROUTINE MMPY8 ( M , N , Q , XPNT , X , & Y , LDY ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER LDY , M , N , Q INTEGER XPNT(*) DOUBLE PRECISION X(*) , Y(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I , J , K , QQ INTEGER I1 , I2 , I3 , I4 , I5 , & I6 , I7 , I8 INTEGER IYBEG , IYBEG1, IYBEG2, LENY , MM DOUBLE PRECISION A1 , A2 , A3 , A4 , A5 , & A6 , A7 , A8 , A9 , A10 , & A11 , A12 , A13 , A14 , A15 , & A16 DOUBLE PRECISION B1 , B2 , B3 , B4 , B5 , & B6 , B7 , B8 , Y1 , Y2 C C*********************************************************************** C C ---------------------------------------------------- C COMPUTE EACH DIAGONAL ENTRY OF THE ODD COLUMNS OF Y. C ---------------------------------------------------- C MM = M QQ = MIN(M,Q) IYBEG = 1 LENY = LDY - 1 DO 200 J = 1, QQ-1 , 2 CDIR$ IVDEP DO 100 I = 1, N I1 = XPNT(I+1) - MM A1 = X(I1) Y(IYBEG) = Y(IYBEG) - A1*A1 100 CONTINUE IYBEG = IYBEG + 2*LENY + 1 LENY = LENY - 2 MM = MM - 2 200 CONTINUE C C ------------------------------------------------------- C UPDATE TWO COLUMNS OF Y AT A TIME, EXCEPT THE DIAGONAL C ELEMENT. C NOTE: THE DIAGONAL ELEMENT OF THE ODD COLUMN HAS C BEEN COMPUTED, SO WE COMPUTE THE SAME NUMBER OF C ELEMENTS FOR THE TWO COLUMNS. C ------------------------------------------------------- C MM = M IYBEG = 1 LENY = LDY - 1 C DO 3000 J = 1, QQ-1, 2 C IYBEG1 = IYBEG IYBEG2 = IYBEG + LENY C DO 400 K = 1, N-7, 8 C C ----------------------------------- C EIGHT COLUMNS UPDATING TWO COLUMNS. C ----------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM I4 = XPNT(K+4) - MM I5 = XPNT(K+5) - MM I6 = XPNT(K+6) - MM I7 = XPNT(K+7) - MM I8 = XPNT(K+8) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A4 = X(I4) A5 = X(I5) A6 = X(I6) A7 = X(I7) A8 = X(I8) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) A12 = X(I4+1) A13 = X(I5+1) A14 = X(I6+1) A15 = X(I7+1) A16 = X(I8+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 - A4*A12 - A5*A13 - & A6*A14 - A7*A15 - A8*A16 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 - A12*A12 - A13*A13 - & A14*A14 - A15*A15 - A16*A16 C DO 300 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 B4 = X(I4+I) Y2 = Y2 - B3 * A11 Y1 = Y1 - B4 * A4 B5 = X(I5+I) Y2 = Y2 - B4 * A12 Y1 = Y1 - B5 * A5 B6 = X(I6+I) Y2 = Y2 - B5 * A13 Y1 = Y1 - B6 * A6 B7 = X(I7+I) Y2 = Y2 - B6 * A14 Y1 = Y1 - B7 * A7 B8 = X(I8+I) Y2 = Y2 - B7 * A15 Y1 = Y1 - B8 * A8 Y(IYBEG1+I) = Y1 Y2 = Y2 - B8 * A16 Y(IYBEG2+I) = Y2 300 CONTINUE C 400 CONTINUE C C ----------------------------- C BOUNDARY CODE FOR THE K LOOP. C ----------------------------- C c GO TO ( 2000, 1700, 1500, 1300, c 1 2 3 4 c & 1100, 900, 700, 500 ), N-K+2 c 5 6 7 8 select case (n - k + 2) C case (8) c 500 CONTINUE C C ----------------------------------- C SEVEN COLUMNS UPDATING TWO COLUMNS. C ----------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM I4 = XPNT(K+4) - MM I5 = XPNT(K+5) - MM I6 = XPNT(K+6) - MM I7 = XPNT(K+7) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A4 = X(I4) A5 = X(I5) A6 = X(I6) A7 = X(I7) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) A12 = X(I4+1) A13 = X(I5+1) A14 = X(I6+1) A15 = X(I7+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 - A4*A12 - A5*A13 - & A6*A14 - A7*A15 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 - A12*A12 - A13*A13 - & A14*A14 - A15*A15 C DO 600 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 B4 = X(I4+I) Y2 = Y2 - B3 * A11 Y1 = Y1 - B4 * A4 B5 = X(I5+I) Y2 = Y2 - B4 * A12 Y1 = Y1 - B5 * A5 B6 = X(I6+I) Y2 = Y2 - B5 * A13 Y1 = Y1 - B6 * A6 B7 = X(I7+I) Y2 = Y2 - B6 * A14 Y1 = Y1 - B7 * A7 Y(IYBEG1+I) = Y1 Y2 = Y2 - B7 * A15 Y(IYBEG2+I) = Y2 600 CONTINUE C GO TO 2000 C case (7) c 700 CONTINUE C C --------------------------------- C SIX COLUMNS UPDATING TWO COLUMNS. C --------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM I4 = XPNT(K+4) - MM I5 = XPNT(K+5) - MM I6 = XPNT(K+6) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A4 = X(I4) A5 = X(I5) A6 = X(I6) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) A12 = X(I4+1) A13 = X(I5+1) A14 = X(I6+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 - A4*A12 - A5*A13 - & A6*A14 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 - A12*A12 - A13*A13 - & A14*A14 C DO 800 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 B4 = X(I4+I) Y2 = Y2 - B3 * A11 Y1 = Y1 - B4 * A4 B5 = X(I5+I) Y2 = Y2 - B4 * A12 Y1 = Y1 - B5 * A5 B6 = X(I6+I) Y2 = Y2 - B5 * A13 Y1 = Y1 - B6 * A6 Y(IYBEG1+I) = Y1 Y2 = Y2 - B6 * A14 Y(IYBEG2+I) = Y2 800 CONTINUE C GO TO 2000 C case (6) c 900 CONTINUE C C ---------------------------------- C FIVE COLUMNS UPDATING TWO COLUMNS. C ---------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM I4 = XPNT(K+4) - MM I5 = XPNT(K+5) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A4 = X(I4) A5 = X(I5) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) A12 = X(I4+1) A13 = X(I5+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 - A4*A12 - A5*A13 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 - A12*A12 - A13*A13 C DO 1000 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 B4 = X(I4+I) Y2 = Y2 - B3 * A11 Y1 = Y1 - B4 * A4 B5 = X(I5+I) Y2 = Y2 - B4 * A12 Y1 = Y1 - B5 * A5 Y(IYBEG1+I) = Y1 Y2 = Y2 - B5 * A13 Y(IYBEG2+I) = Y2 1000 CONTINUE C GO TO 2000 C case (5) c 1100 CONTINUE C C ---------------------------------- C FOUR COLUMNS UPDATING TWO COLUMNS. C ---------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM I4 = XPNT(K+4) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A4 = X(I4) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) A12 = X(I4+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 - A4*A12 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 - A12*A12 C DO 1200 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 B4 = X(I4+I) Y2 = Y2 - B3 * A11 Y1 = Y1 - B4 * A4 Y(IYBEG1+I) = Y1 Y2 = Y2 - B4 * A12 Y(IYBEG2+I) = Y2 1200 CONTINUE C GO TO 2000 C case (4) c 1300 CONTINUE C C ----------------------------------- C THREE COLUMNS UPDATING TWO COLUMNS. C ----------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM I3 = XPNT(K+3) - MM A1 = X(I1) A2 = X(I2) A3 = X(I3) A9 = X(I1+1) A10 = X(I2+1) A11 = X(I3+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 - A3*A11 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 - A11*A11 C DO 1400 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 B3 = X(I3+I) Y2 = Y2 - B2 * A10 Y1 = Y1 - B3 * A3 Y(IYBEG1+I) = Y1 Y2 = Y2 - B3 * A11 Y(IYBEG2+I) = Y2 1400 CONTINUE C GO TO 2000 C case (3) c 1500 CONTINUE C C --------------------------------- C TWO COLUMNS UPDATING TWO COLUMNS. C --------------------------------- C I1 = XPNT(K+1) - MM I2 = XPNT(K+2) - MM A1 = X(I1) A2 = X(I2) A9 = X(I1+1) A10 = X(I2+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 - A2*A10 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 - A10*A10 C DO 1600 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) B2 = X(I2+I) Y2 = Y2 - B1 * A9 Y1 = Y1 - B2 * A2 Y(IYBEG1+I) = Y1 Y2 = Y2 - B2 * A10 Y(IYBEG2+I) = Y2 1600 CONTINUE C GO TO 2000 C case (2) c c 1700 CONTINUE C C -------------------------------- C ONE COLUMN UPDATING TWO COLUMNS. C -------------------------------- C I1 = XPNT(K+1) - MM A1 = X(I1) A9 = X(I1+1) C Y(IYBEG1+1) = Y(IYBEG1+1) - & A1*A9 C Y(IYBEG2+1) = Y(IYBEG2+1) - & A9*A9 C DO 1800 I = 2, MM-1 Y1 = Y(IYBEG1+I) B1 = X(I1+I) Y1 = Y1 - B1 * A1 Y2 = Y(IYBEG2+I) Y(IYBEG1+I) = Y1 Y2 = Y2 - B1 * A9 Y(IYBEG2+I) = Y2 1800 CONTINUE C GO TO 2000 case (1) case default C GO TO 2000 end select C C ----------------------------------------------- C PREPARE FOR NEXT PAIR OF COLUMNS TO BE UPDATED. C ----------------------------------------------- C 2000 CONTINUE MM = MM - 2 IYBEG = IYBEG2 + LENY + 1 LENY = LENY - 2 C 3000 CONTINUE C C ----------------------------------------------------- C BOUNDARY CODE FOR J LOOP: EXECUTED WHENVER Q IS ODD. C ----------------------------------------------------- C IF ( J .EQ. QQ ) THEN CALL SMXPY8 ( MM, N, Y(IYBEG), XPNT, X ) ENDIF C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************* MMPYI .... MATRIX-MATRIX MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - C THIS ROUTINE PERFORMS A MATRIX-MATRIX MULTIPLY, Y = Y + XA, C ASSUMING DATA STRUCTURES USED IN SOME OF OUR SPARSE CHOLESKY C CODES. C C MATRIX X HAS ONLY 1 COLUMN. C C INPUT PARAMETERS - C M - NUMBER OF ROWS IN X AND IN Y. C Q - NUMBER OF COLUMNS IN A AND Y. C XPNT(*) - XPNT(J+1) POINTS ONE LOCATION BEYOND THE C END OF THE J-TH COLUMN OF X. XPNT IS ALSO C USED TO ACCESS THE ROWS OF A. C X(*) - CONTAINS THE COLUMNS OF X AND THE ROWS OF A. C IY(*) - IY(COL) POINTS TO THE BEGINNING OF COLUMN C RELIND(*) - RELATIVE INDICES. C C UPDATED PARAMETERS - C Y(*) - ON OUTPUT, Y = Y + AX. C C*********************************************************************** C SUBROUTINE MMPYI ( M , Q , XPNT , X , IY , & Y , RELIND ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER M , Q INTEGER IY(*) , RELIND(*) , & XPNT(*) DOUBLE PRECISION X(*) , Y(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER COL , I , ISUB , K , YLAST DOUBLE PRECISION A C C*********************************************************************** C DO 200 K = 1, Q COL = XPNT(K) YLAST = IY(COL+1) - 1 A = - X(K) CDIR$ IVDEP DO 100 I = K, M ISUB = XPNT(I) ISUB = YLAST - RELIND(ISUB) Y(ISUB) = Y(ISUB) + A*X(I) 100 CONTINUE 200 CONTINUE RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C**** ORDMMD ..... MULTIPLE MINIMUM EXTERNAL DEGREE ************ C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE CALLS LIU'S MULTIPLE MINIMUM DEGREE C ROUTINE. C C INPUT PARAMETERS - C NEQNS - NUMBER OF EQUATIONS. C (XADJ,ADJNCY) - THE ADJACENCY STRUCTURE. C IWSIZ - SIZE OF INTEGER WORKING STORAGE. C C OUTPUT PARAMETERS - C PERM - THE MINIMUM DEGREE ORDERING. C INVP - THE INVERSE OF PERM. C NOFSUB - AN UPPER BOUND ON THE NUMBER OF NONZERO C SUBSCRIPTS FOR THE COMPRESSED STORAGE SCHEME. C IFLAG - ERROR FLAG. C 0: SUCCESSFUL ORDERING C -1: INSUFFICIENT WORKING STORAGE C [IWORK(*)]. C C WORKING PARAMETERS - C IWORK - INTEGER WORKSPACE OF LENGTH 4*NEQNS. C C*********************************************************************** C SUBROUTINE ORDMMD ( NEQNS , XADJ , ADJNCY, INVP , PERM , 1 IWSIZ , IWORK , NOFSUB, IFLAG ) C C*********************************************************************** C INTEGER ADJNCY(*), INVP(*) , IWORK(*) , PERM(*) INTEGER XADJ(*) INTEGER DELTA , IFLAG , IWSIZ , MAXINT, NEQNS , & NOFSUB C C********************************************************************* C IFLAG = 0 IF ( IWSIZ .LT. 4*NEQNS ) THEN IFLAG = -1 RETURN ENDIF C C DELTA - TOLERANCE VALUE FOR MULTIPLE ELIMINATION. C MAXINT - MAXIMUM MACHINE REPRESENTABLE (SHORT) INTEGER C (ANY SMALLER ESTIMATE WILL DO) FOR MARKING C NODES. C DELTA = 0 MAXINT = 32767 CALL GENMMD ( NEQNS , XADJ , ADJNCY, INVP , PERM , 1 DELTA , 1 IWORK(1) , 1 IWORK(NEQNS+1) , 1 IWORK(2*NEQNS+1) , 1 IWORK(3*NEQNS+1) , 1 MAXINT, NOFSUB ) RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.3 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratoy C C*********************************************************************** C*********************************************************************** C****** PCHOL .... DENSE PARTIAL CHOLESKY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS CHOLESKY C FACTORIZATION ON THE COLUMNS OF A SUPERNODE C THAT HAVE RECEIVED ALL UPDATES FROM COLUMNS C EXTERNAL TO THE SUPERNODE. C C INPUT PARAMETERS - C M - NUMBER OF ROWS (LENGTH OF THE FIRST COLUMN). C N - NUMBER OF COLUMNS IN THE SUPERNODE. C XPNT - XPNT(J+1) POINTS ONE LOCATION BEYOND THE END C OF THE J-TH COLUMN OF THE SUPERNODE. C X(*) - CONTAINS THE COLUMNS OF OF THE SUPERNODE TO C BE FACTORED. C SMXPY - EXTERNAL ROUTINE: MATRIX-VECTOR MULTIPLY. C C OUTPUT PARAMETERS - C X(*) - ON OUTPUT, CONTAINS THE FACTORED COLUMNS OF C THE SUPERNODE. C IFLAG - UNCHANGED IF THERE IS NO ERROR. C =1 IF NONPOSITIVE DIAGONAL ENTRY IS ENCOUNTERED. c NTINY the number of tiny diagonal entries which were replaced by 'Large' C C*********************************************************************** C CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC SUBROUTINE PCHOL ( M, N, XPNT, X, MXDIAG, NTINY, IFLAG, SMXPY, & tiny, Large) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C EXTERNAL SMXPY C INTEGER M, N, IFLAG C INTEGER XPNT(*) C CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC DOUBLE PRECISION X(*), MXDIAG, tiny, Large C ---- ----- new; MartinM, 2024-06-07; were hardcoded to c 1d-30 1d128 INTEGER NTINY ! is *output* C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER JPNT , JCOL , MM C DOUBLE PRECISION DIAG C C*********************************************************************** C C ------------------------------------------ C FOR EVERY COLUMN JCOL IN THE SUPERNODE ... C ------------------------------------------ MM = M JPNT = XPNT(1) DO 100 JCOL = 1, N C C ---------------------------------- C UPDATE JCOL WITH PREVIOUS COLUMNS. C ---------------------------------- IF ( JCOL .GT. 1 ) THEN CALL SMXPY ( MM, JCOL-1, X(JPNT), XPNT, X ) ENDIF C C --------------------------- C COMPUTE THE DIAGONAL ENTRY. C --------------------------- DIAG = X(JPNT) CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC IF (DIAG .LE. tiny * MXDIAG) THEN DIAG = Large NTINY = NTINY+1 ENDIF CxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPCxPC DIAG = SQRT ( DIAG ) X(JPNT) = DIAG DIAG = 1.0D+00 / DIAG C C ---------------------------------------------------- C SCALE COLUMN JCOL WITH RECIPROCAL OF DIAGONAL ENTRY. C ---------------------------------------------------- MM = MM - 1 JPNT = JPNT + 1 CALL DSCAL1 ( MM, DIAG, X(JPNT) ) JPNT = JPNT + MM C 100 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: January 12, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************** SFINIT ..... SET UP FOR SYMB. FACT. ************ C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS SUBROUTINE COMPUTES THE STORAGE REQUIREMENTS AND SETS UP C PRELIMINARY DATA STRUCTURES FOR THE SYMBOLIC FACTORIZATION. C C NOTE: C THIS VERSION PRODUCES THE MAXIMAL SUPERNODE PARTITION (I.E., C THE ONE WITH THE FEWEST POSSIBLE SUPERNODES). C C INPUT PARAMETERS: C NEQNS - NUMBER OF EQUATIONS. C NNZA - LENGTH OF ADJACENCY STRUCTURE. C XADJ(*) - ARRAY OF LENGTH NEQNS+1, CONTAINING POINTERS C TO THE ADJACENCY STRUCTURE. C ADJNCY(*) - ARRAY OF LENGTH XADJ(NEQNS+1)-1, CONTAINING C THE ADJACENCY STRUCTURE. C PERM(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C POSTORDERING. C INVP(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE C INVERSE OF THE POSTORDERING. C IWSIZ - SIZE OF INTEGER WORKING STORAGE. C C OUTPUT PARAMETERS: C COLCNT(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE NUMBER C OF NONZEROS IN EACH COLUMN OF THE FACTOR, C INCLUDING THE DIAGONAL ENTRY. C NNZL - NUMBER OF NONZEROS IN THE FACTOR, INCLUDING C THE DIAGONAL ENTRIES. C NSUB - NUMBER OF SUBSCRIPTS. C NSUPER - NUMBER OF SUPERNODES (<= NEQNS). C SNODE(*) - ARRAY OF LENGTH NEQNS FOR RECORDING C SUPERNODE MEMBERSHIP. C XSUPER(*) - ARRAY OF LENGTH NEQNS+1, CONTAINING THE C SUPERNODE PARTITIONING. C IFLAG(*) - ERROR FLAG. C 0: SUCCESSFUL SF INITIALIZATION. C -1: INSUFFICENT WORKING STORAGE C [IWORK(*)]. C C WORK PARAMETERS: C IWORK(*) - INTEGER WORK ARRAY OF LENGTH 7*NEQNS+3. C C FIRST CREATED ON NOVEMEBER 14, 1994. C LAST UPDATED ON January 12, 1995. C C*********************************************************************** C SUBROUTINE SFINIT ( NEQNS , NNZA , XADJ , ADJNCY, PERM , & INVP , COLCNT, NNZL , NSUB , NSUPER, & SNODE , XSUPER, IWSIZ , IWORK , IFLAG ) C C ----------- C PARAMETERS. C ----------- INTEGER IFLAG , IWSIZ , NNZA , NEQNS , NNZL , & NSUB , NSUPER INTEGER ADJNCY(NNZA) , COLCNT(NEQNS) , & INVP(NEQNS) , IWORK(7*NEQNS+3), & PERM(NEQNS) , SNODE(NEQNS) , & XADJ(NEQNS+1) , XSUPER(NEQNS+1) C C*********************************************************************** C C -------------------------------------------------------- C RETURN IF THERE IS INSUFFICIENT INTEGER WORKING STORAGE. C -------------------------------------------------------- IFLAG = 0 IF ( IWSIZ .LT. 7*NEQNS+3 ) THEN IFLAG = -1 RETURN ENDIF C C ------------------------------------------ C COMPUTE ELIMINATION TREE AND POSTORDERING. C ------------------------------------------ CALL ETORDR ( NEQNS , XADJ , ADJNCY, PERM , INVP , & IWORK(1) , & IWORK(NEQNS+1) , & IWORK(2*NEQNS+1) , & IWORK(3*NEQNS+1) ) C C --------------------------------------------- C COMPUTE ROW AND COLUMN FACTOR NONZERO COUNTS. C --------------------------------------------- CALL FCNTHN ( NEQNS , NNZA , XADJ , ADJNCY, PERM , & INVP , IWORK(1) , SNODE , COLCNT, & NNZL , & IWORK(NEQNS+1) , & IWORK(2*NEQNS+1) , & XSUPER , & IWORK(3*NEQNS+1) , & IWORK(4*NEQNS+2) , & IWORK(5*NEQNS+3) , & IWORK(6*NEQNS+4) ) C C --------------------------------------------------------- C REARRANGE CHILDREN SO THAT THE LAST CHILD HAS THE MAXIMUM C NUMBER OF NONZEROS IN ITS COLUMN OF L. C --------------------------------------------------------- CALL CHORDR ( NEQNS , XADJ , ADJNCY, PERM , INVP , & COLCNT, & IWORK(1) , & IWORK(NEQNS+1) , & IWORK(2*NEQNS+1) , & IWORK(3*NEQNS+1) ) C C ---------------- C FIND SUPERNODES. C ---------------- CALL FSUP1 ( NEQNS , IWORK(1) , COLCNT, NSUB , & NSUPER, SNODE ) CALL FSUP2 ( NEQNS , NSUPER, IWORK(1) , SNODE , & XSUPER ) C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** SMXPY1 .... MATRIX-VECTOR MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS A MATRIX-VECTOR MULTIPLY, C Y = Y + AX, ASSUMING DATA STRUCTURES USED IN C RECENTLY DEVELOPED SPARSE CHOLESKY CODES. THE C '1' SIGNIFIES NO LOOP UNROLLING, I.E., C LOOP-UNROLLING TO LEVEL 1. C C INPUT PARAMETERS - C M - NUMBER OF ROWS. C N - NUMBER OF COLUMNS. C Y - M-VECTOR TO WHICH AX WILL BE ADDED. C APNT - INDEX VECTOR FOR A. XA(I) POINTS TO THE C FIRST NONZERO IN COLUMN I OF A. C Y - ON OUTPUT, CONTAINS Y = Y + AX. C C*********************************************************************** C SUBROUTINE SMXPY1 ( M, N, Y, APNT, A ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER M, N C INTEGER APNT(N) C DOUBLE PRECISION Y(M), A(*) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I, II, J C DOUBLE PRECISION AMULT C C*********************************************************************** C DO 200 J = 1, N II = APNT(J+1) - M AMULT = - A(II) DO 100 I = 1, M Y(I) = Y(I) + AMULT * A(II) II = II + 1 100 CONTINUE 200 CONTINUE RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** SMXPY2 .... MATRIX-VECTOR MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS A MATRIX-VECTOR MULTIPLY, C Y = Y + AX, ASSUMING DATA STRUCTURES USED IN C RECENTLY DEVELOPED SPARSE CHOLESKY CODES. THE C '2' SIGNIFIES LEVEL 2 LOOP UNROLLING. C C INPUT PARAMETERS - C M - NUMBER OF ROWS. C N - NUMBER OF COLUMNS. C Y - M-VECTOR TO WHICH AX WILL BE ADDED. C APNT - INDEX VECTOR FOR A. XA(I) POINTS TO THE C FIRST NONZERO IN COLUMN I OF A. C Y - ON OUTPUT, CONTAINS Y = Y + AX. C C*********************************************************************** C SUBROUTINE SMXPY2 ( M, N, Y, APNT, A ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER M, N, LEVEL C INTEGER APNT(*) C DOUBLE PRECISION Y(*), A(*) C PARAMETER ( LEVEL = 2 ) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I, I1, I2, & J, REMAIN C DOUBLE PRECISION A1, A2 C C*********************************************************************** C REMAIN = MOD ( N, LEVEL ) C c GO TO ( 2000, 100 ), REMAIN+1 c 1 2 if(REMAIN+1 .eq. 1) then C c 100 CONTINUE I1 = APNT(1+1) - M A1 = - A(I1) DO 150 I = 1, M Y(I) = Y(I) + A1*A(I1) I1 = I1 + 1 150 CONTINUE c GO TO 2000 else ! REMAIN+1 == 2 end if C c 2000 CONTINUE DO 4000 J = REMAIN+1, N, LEVEL I1 = APNT(J+1) - M I2 = APNT(J+2) - M A1 = - A(I1) A2 = - A(I2) DO 3000 I = 1, M Y(I) = ( (Y(I)) + & A1*A(I1)) + A2*A(I2) I1 = I1 + 1 I2 = I2 + 1 3000 CONTINUE 4000 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** SMXPY4 .... MATRIX-VECTOR MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS A MATRIX-VECTOR MULTIPLY, C Y = Y + AX, ASSUMING DATA STRUCTURES USED IN C RECENTLY DEVELOPED SPARSE CHOLESKY CODES. THE C '4' SIGNIFIES LEVEL 4 LOOP UNROLLING. C C INPUT PARAMETERS - C M - NUMBER OF ROWS. C N - NUMBER OF COLUMNS. C Y - M-VECTOR TO WHICH AX WILL BE ADDED. C APNT - INDEX VECTOR FOR A. XA(I) POINTS TO THE C FIRST NONZERO IN COLUMN I OF A. C Y - ON OUTPUT, CONTAINS Y = Y + AX. C C*********************************************************************** C SUBROUTINE SMXPY4 ( M, N, Y, APNT, A ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER M, N, LEVEL C INTEGER APNT(*) C DOUBLE PRECISION Y(*), A(*) C PARAMETER ( LEVEL = 4 ) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I, I1, I2, I3, I4, & J, REMAIN C DOUBLE PRECISION A1, A2, A3, A4 C C*********************************************************************** C REMAIN = MOD ( N, LEVEL ) C c GO TO ( 2000, 100, 200, 300 ), REMAIN+1 c 1 2 3 4 select case (REMAIN+1) C case (2) ! n | 4 == 1 c 100 CONTINUE I1 = APNT(1+1) - M A1 = - A(I1) DO 150 I = 1, M Y(I) = Y(I) + A1*A(I1) I1 = I1 + 1 150 CONTINUE C case (3) ! n | 4 == 2 c 200 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M A1 = - A(I1) A2 = - A(I2) DO 250 I = 1, M Y(I) = ( (Y(I)) & + A1*A(I1)) + A2*A(I2) I1 = I1 + 1 I2 = I2 + 1 250 CONTINUE C case (4) ! n | 4 == 3 c 300 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M I3 = APNT(1+3) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) DO 350 I = 1, M Y(I) = (( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 350 CONTINUE C case (1) c 2000 CONTINUE end select DO 4000 J = REMAIN+1, N, LEVEL I1 = APNT(J+1) - M I2 = APNT(J+2) - M I3 = APNT(J+3) - M I4 = APNT(J+4) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) A4 = - A(I4) DO 3000 I = 1, M Y(I) = ((( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3)) + A4*A(I4) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 I4 = I4 + 1 3000 CONTINUE 4000 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: December 27, 1994 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C****** SMXPY8 .... MATRIX-VECTOR MULTIPLY ************** C*********************************************************************** C*********************************************************************** C C PURPOSE - THIS ROUTINE PERFORMS A MATRIX-VECTOR MULTIPLY, C Y = Y + AX, ASSUMING DATA STRUCTURES USED IN C RECENTLY DEVELOPED SPARSE CHOLESKY CODES. THE C '8' SIGNIFIES LEVEL 8 LOOP UNROLLING. C C INPUT PARAMETERS - C M - NUMBER OF ROWS. C N - NUMBER OF COLUMNS. C Y - M-VECTOR TO WHICH AX WILL BE ADDED. C APNT - INDEX VECTOR FOR A. APNT(I) POINTS TO THE C FIRST NONZERO IN COLUMN I OF A. C Y - ON OUTPUT, CONTAINS Y = Y + AX. C C*********************************************************************** C SUBROUTINE SMXPY8 ( M, N, Y, APNT, A ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- C INTEGER M, N, LEVEL INTEGER APNT(*) C DOUBLE PRECISION Y(*), A(*) C PARAMETER ( LEVEL = 8 ) C C ---------------- C LOCAL VARIABLES. C ---------------- C INTEGER I, I1, I2, I3, I4, I5, I6, I7, I8, & J, REMAIN C DOUBLE PRECISION A1, A2, A3, A4, A5, A6, A7, A8 C C*********************************************************************** C REMAIN = MOD ( N, LEVEL ) C c GO TO ( 2000, 100, 200, 300, c 1 2 3 4 c & 400, 500, 600, 700 ), REMAIN+1 c 5 6 7 8 select case (REMAIN+1) case (2) ! n | 8 == 1 C c 100 CONTINUE I1 = APNT(1+1) - M A1 = - A(I1) DO 150 I = 1, M Y(I) = Y(I) + A1*A(I1) I1 = I1 + 1 150 CONTINUE C case (3) ! n | 8 == 2 c 200 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M A1 = - A(I1) A2 = - A(I2) DO 250 I = 1, M Y(I) = ( (Y(I)) & + A1*A(I1)) + A2*A(I2) I1 = I1 + 1 I2 = I2 + 1 250 CONTINUE C case (4) ! n | 8 == 3 c 300 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M I3 = APNT(1+3) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) DO 350 I = 1, M Y(I) = (( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 350 CONTINUE C case (5) ! n | 8 == 4 c 400 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M I3 = APNT(1+3) - M I4 = APNT(1+4) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) A4 = - A(I4) DO 450 I = 1, M Y(I) = ((( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3)) + A4*A(I4) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 I4 = I4 + 1 450 CONTINUE C case (6) ! n | 8 == 5 c 500 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M I3 = APNT(1+3) - M I4 = APNT(1+4) - M I5 = APNT(1+5) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) A4 = - A(I4) A5 = - A(I5) DO 550 I = 1, M Y(I) = (((( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3)) + A4*A(I4)) & + A5*A(I5) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 I4 = I4 + 1 I5 = I5 + 1 550 CONTINUE C case (7) ! n | 8 == 6 c 600 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M I3 = APNT(1+3) - M I4 = APNT(1+4) - M I5 = APNT(1+5) - M I6 = APNT(1+6) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) A4 = - A(I4) A5 = - A(I5) A6 = - A(I6) DO 650 I = 1, M Y(I) = ((((( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3)) + A4*A(I4)) & + A5*A(I5)) + A6*A(I6) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 I4 = I4 + 1 I5 = I5 + 1 I6 = I6 + 1 650 CONTINUE C case (8) ! n | 8 == 7 c 700 CONTINUE I1 = APNT(1+1) - M I2 = APNT(1+2) - M I3 = APNT(1+3) - M I4 = APNT(1+4) - M I5 = APNT(1+5) - M I6 = APNT(1+6) - M I7 = APNT(1+7) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) A4 = - A(I4) A5 = - A(I5) A6 = - A(I6) A7 = - A(I7) DO 750 I = 1, M Y(I) = (((((( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3)) + A4*A(I4)) & + A5*A(I5)) + A6*A(I6)) & + A7*A(I7) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 I4 = I4 + 1 I5 = I5 + 1 I6 = I6 + 1 I7 = I7 + 1 750 CONTINUE C case (1) end select c 2000 CONTINUE DO 4000 J = REMAIN+1, N, LEVEL I1 = APNT(J+1) - M I2 = APNT(J+2) - M I3 = APNT(J+3) - M I4 = APNT(J+4) - M I5 = APNT(J+5) - M I6 = APNT(J+6) - M I7 = APNT(J+7) - M I8 = APNT(J+8) - M A1 = - A(I1) A2 = - A(I2) A3 = - A(I3) A4 = - A(I4) A5 = - A(I5) A6 = - A(I6) A7 = - A(I7) A8 = - A(I8) DO I = 1, M Y(I) = ((((((( (Y(I)) & + A1*A(I1)) + A2*A(I2)) & + A3*A(I3)) + A4*A(I4)) & + A5*A(I5)) + A6*A(I6)) & + A7*A(I7)) + A8*A(I8) I1 = I1 + 1 I2 = I2 + 1 I3 = I3 + 1 I4 = I4 + 1 I5 = I5 + 1 I6 = I6 + 1 I7 = I7 + 1 I8 = I8 + 1 end do 4000 CONTINUE C RETURN END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: February 13, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************* SYMFC2 ..... SYMBOLIC FACTORIZATION ************** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS ROUTINE PERFORMS SUPERNODAL SYMBOLIC FACTORIZATION ON A C REORDERED LINEAR SYSTEM. IT ASSUMES ACCESS TO THE COLUMNS C COUNTS, SUPERNODE PARTITION, AND SUPERNODAL ELIMINATION TREE C ASSOCIATED WITH THE FACTOR MATRIX L. C C INPUT PARAMETERS: C (I) NEQNS - NUMBER OF EQUATIONS C (I) ADJLEN - LENGTH OF THE ADJACENCY LIST. C (I) XADJ(*) - ARRAY OF LENGTH NEQNS+1 CONTAINING POINTERS C TO THE ADJACENCY STRUCTURE. C (I) ADJNCY(*) - ARRAY OF LENGTH XADJ(NEQNS+1)-1 CONTAINING C THE ADJACENCY STRUCTURE. C (I) PERM(*) - ARRAY OF LENGTH NEQNS CONTAINING THE C POSTORDERING. C (I) INVP(*) - ARRAY OF LENGTH NEQNS CONTAINING THE C INVERSE OF THE POSTORDERING. C (I) COLCNT(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE NUMBER C OF NONZEROS IN EACH COLUMN OF THE FACTOR, C INCLUDING THE DIAGONAL ENTRY. C (I) NSUPER - NUMBER OF SUPERNODES. C (I) XSUPER(*) - ARRAY OF LENGTH NSUPER+1, CONTAINING THE C FIRST COLUMN OF EACH SUPERNODE. C (I) SNODE(*) - ARRAY OF LENGTH NEQNS FOR RECORDING C SUPERNODE MEMBERSHIP. C (I) NOFSUB - NUMBER OF SUBSCRIPTS TO BE STORED IN C LINDX(*). C C OUTPUT PARAMETERS: C (I) XLINDX - ARRAY OF LENGTH NEQNS+1, CONTAINING POINTERS C INTO THE SUBSCRIPT VECTOR. C (I) LINDX - ARRAY OF LENGTH MAXSUB, CONTAINING THE C COMPRESSED SUBSCRIPTS. C (I) XLNZ - COLUMN POINTERS FOR L. C (I) FLAG - ERROR FLAG: C 0 - NO ERROR. C 1 - INCONSISTANCY IN THE INPUT. C C WORKING PARAMETERS: C (I) MRGLNK - ARRAY OF LENGTH NSUPER, CONTAINING THE C CHILDREN OF EACH SUPERNODE AS A LINKED LIST. C (I) RCHLNK - ARRAY OF LENGTH NEQNS+1, CONTAINING THE C CURRENT LINKED LIST OF MERGED INDICES (THE C "REACH" SET). C (I) MARKER - ARRAY OF LENGTH NEQNS USED TO MARK INDICES C AS THEY ARE INTRODUCED INTO EACH SUPERNODE'S C INDEX SET. C C*********************************************************************** C SUBROUTINE SYMFC2 ( NEQNS , ADJLEN, XADJ , ADJNCY, PERM , & INVP , COLCNT, NSUPER, XSUPER, SNODE , & NOFSUB, XLINDX, LINDX , XLNZ , MRGLNK, & RCHLNK, MARKER, FLAG ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER ADJLEN, FLAG , NEQNS , NOFSUB, NSUPER INTEGER ADJNCY(ADJLEN), COLCNT(NEQNS) , & INVP(NEQNS) , MARKER(NEQNS) , & MRGLNK(NSUPER), LINDX(*) , & PERM(NEQNS) , RCHLNK(0:NEQNS), & SNODE(NEQNS) , XSUPER(NSUPER+1) INTEGER XADJ(NEQNS+1) , XLINDX(NSUPER+1), & XLNZ(NEQNS+1) C C ---------------- C LOCAL VARIABLES. C ---------------- INTEGER FSTCOL, HEAD , I , JNZBEG, JNZEND, & JPTR , JSUP , JWIDTH, KNZ , KNZBEG, & KNZEND, KPTR , KSUP , LENGTH, LSTCOL, & NEWI , NEXTI , NODE , NZBEG , NZEND , & PCOL , PSUP , POINT , TAIL , WIDTH C C*********************************************************************** C FLAG = 0 IF ( NEQNS .LE. 0 ) RETURN C C --------------------------------------------------- C INITIALIZATIONS ... C NZEND : POINTS TO THE LAST USED SLOT IN LINDX. C TAIL : END OF LIST INDICATOR C (IN RCHLNK(*), NOT MRGLNK(*)). C MRGLNK : CREATE EMPTY LISTS. C MARKER : "UNMARK" THE INDICES. C --------------------------------------------------- NZEND = 0 HEAD = 0 TAIL = NEQNS + 1 POINT = 1 DO 50 I = 1, NEQNS MARKER(I) = 0 XLNZ(I) = POINT POINT = POINT + COLCNT(I) 50 CONTINUE XLNZ(NEQNS+1) = POINT POINT = 1 DO 100 KSUP = 1, NSUPER MRGLNK(KSUP) = 0 FSTCOL = XSUPER(KSUP) XLINDX(KSUP) = POINT POINT = POINT + COLCNT(FSTCOL) 100 CONTINUE XLINDX(NSUPER+1) = POINT C C --------------------------- C FOR EACH SUPERNODE KSUP ... C --------------------------- DO 1000 KSUP = 1, NSUPER C C --------------------------------------------------------- C INITIALIZATIONS ... C FSTCOL : FIRST COLUMN OF SUPERNODE KSUP. C LSTCOL : LAST COLUMN OF SUPERNODE KSUP. C KNZ : WILL COUNT THE NONZEROS OF L IN COLUMN KCOL. C RCHLNK : INITIALIZE EMPTY INDEX LIST FOR KCOL. C --------------------------------------------------------- FSTCOL = XSUPER(KSUP) LSTCOL = XSUPER(KSUP+1) - 1 WIDTH = LSTCOL - FSTCOL + 1 LENGTH = COLCNT(FSTCOL) KNZ = 0 RCHLNK(HEAD) = TAIL JSUP = MRGLNK(KSUP) C C ------------------------------------------------- C IF KSUP HAS CHILDREN IN THE SUPERNODAL E-TREE ... C ------------------------------------------------- IF ( JSUP .GT. 0 ) THEN C --------------------------------------------- C COPY THE INDICES OF THE FIRST CHILD JSUP INTO C THE LINKED LIST, AND MARK EACH WITH THE VALUE C KSUP. C --------------------------------------------- JWIDTH = XSUPER(JSUP+1) - XSUPER(JSUP) JNZBEG = XLINDX(JSUP) + JWIDTH JNZEND = XLINDX(JSUP+1) - 1 DO 200 JPTR = JNZEND, JNZBEG, -1 NEWI = LINDX(JPTR) KNZ = KNZ+1 MARKER(NEWI) = KSUP RCHLNK(NEWI) = RCHLNK(HEAD) RCHLNK(HEAD) = NEWI 200 CONTINUE C ------------------------------------------ C FOR EACH SUBSEQUENT CHILD JSUP OF KSUP ... C ------------------------------------------ JSUP = MRGLNK(JSUP) 300 CONTINUE IF ( JSUP .NE. 0 .AND. KNZ .LT. LENGTH ) THEN C ---------------------------------------- C MERGE THE INDICES OF JSUP INTO THE LIST, C AND MARK NEW INDICES WITH VALUE KSUP. C ---------------------------------------- JWIDTH = XSUPER(JSUP+1) - XSUPER(JSUP) JNZBEG = XLINDX(JSUP) + JWIDTH JNZEND = XLINDX(JSUP+1) - 1 NEXTI = HEAD DO 500 JPTR = JNZBEG, JNZEND NEWI = LINDX(JPTR) 400 CONTINUE I = NEXTI NEXTI = RCHLNK(I) IF ( NEWI .GT. NEXTI ) GO TO 400 IF ( NEWI .LT. NEXTI ) THEN KNZ = KNZ+1 RCHLNK(I) = NEWI RCHLNK(NEWI) = NEXTI MARKER(NEWI) = KSUP NEXTI = NEWI ENDIF 500 CONTINUE JSUP = MRGLNK(JSUP) GO TO 300 ENDIF ENDIF C --------------------------------------------------- C STRUCTURE OF A(*,FSTCOL) HAS NOT BEEN EXAMINED YET. C "SORT" ITS STRUCTURE INTO THE LINKED LIST, C INSERTING ONLY THOSE INDICES NOT ALREADY IN THE C LIST. C --------------------------------------------------- IF ( KNZ .LT. LENGTH ) THEN NODE = PERM(FSTCOL) KNZBEG = XADJ(NODE) KNZEND = XADJ(NODE+1) - 1 DO 700 KPTR = KNZBEG, KNZEND NEWI = ADJNCY(KPTR) NEWI = INVP(NEWI) IF ( NEWI .GT. FSTCOL .AND. & MARKER(NEWI) .NE. KSUP ) THEN C -------------------------------- C POSITION AND INSERT NEWI IN LIST C AND MARK IT WITH KCOL. C -------------------------------- NEXTI = HEAD 600 CONTINUE I = NEXTI NEXTI = RCHLNK(I) IF ( NEWI .GT. NEXTI ) GO TO 600 KNZ = KNZ + 1 RCHLNK(I) = NEWI RCHLNK(NEWI) = NEXTI MARKER(NEWI) = KSUP ENDIF 700 CONTINUE ENDIF C ------------------------------------------------------------ C IF KSUP HAS NO CHILDREN, INSERT FSTCOL INTO THE LINKED LIST. C ------------------------------------------------------------ IF ( RCHLNK(HEAD) .NE. FSTCOL ) THEN RCHLNK(FSTCOL) = RCHLNK(HEAD) RCHLNK(HEAD) = FSTCOL KNZ = KNZ + 1 ENDIF C C -------------------------------------------- C COPY INDICES FROM LINKED LIST INTO LINDX(*). C -------------------------------------------- NZBEG = NZEND + 1 NZEND = NZEND + KNZ IF ( NZEND+1 .NE. XLINDX(KSUP+1) ) GO TO 8000 I = HEAD DO 800 KPTR = NZBEG, NZEND I = RCHLNK(I) LINDX(KPTR) = I 800 CONTINUE C C --------------------------------------------------- C IF KSUP HAS A PARENT, INSERT KSUP INTO ITS PARENT'S C "MERGE" LIST. C --------------------------------------------------- IF ( LENGTH .GT. WIDTH ) THEN PCOL = LINDX ( XLINDX(KSUP) + WIDTH ) PSUP = SNODE(PCOL) MRGLNK(KSUP) = MRGLNK(PSUP) MRGLNK(PSUP) = KSUP ENDIF C 1000 CONTINUE C RETURN C C ----------------------------------------------- C INCONSISTENCY IN DATA STRUCTURE WAS DISCOVERED. C ----------------------------------------------- 8000 CONTINUE FLAG = -2 RETURN C END C*********************************************************************** C*********************************************************************** C C Version: 0.4 C Last modified: February 13, 1995 C Authors: Esmond G. Ng and Barry W. Peyton C C Mathematical Sciences Section, Oak Ridge National Laboratory C C*********************************************************************** C*********************************************************************** C************* SYMFCT ..... SYMBOLIC FACTORIZATION ************** C*********************************************************************** C*********************************************************************** C C PURPOSE: C THIS ROUTINE CALLS SYMFC2 WHICH PERFORMS SUPERNODAL SYMBOLIC C FACTORIZATION ON A REORDERED LINEAR SYSTEM. C C INPUT PARAMETERS: C (I) NEQNS - NUMBER OF EQUATIONS C (I) ADJLEN - LENGTH OF THE ADJACENCY LIST. C (I) XADJ(*) - ARRAY OF LENGTH NEQNS+1 CONTAINING POINTERS C TO THE ADJACENCY STRUCTURE. C (I) ADJNCY(*) - ARRAY OF LENGTH XADJ(NEQNS+1)-1 CONTAINING C THE ADJACENCY STRUCTURE. C (I) PERM(*) - ARRAY OF LENGTH NEQNS CONTAINING THE C POSTORDERING. C (I) INVP(*) - ARRAY OF LENGTH NEQNS CONTAINING THE C INVERSE OF THE POSTORDERING. C (I) COLCNT(*) - ARRAY OF LENGTH NEQNS, CONTAINING THE NUMBER C OF NONZEROS IN EACH COLUMN OF THE FACTOR, C INCLUDING THE DIAGONAL ENTRY. C (I) NSUPER - NUMBER OF SUPERNODES. C (I) XSUPER(*) - ARRAY OF LENGTH NSUPER+1, CONTAINING THE C FIRST COLUMN OF EACH SUPERNODE. C (I) SNODE(*) - ARRAY OF LENGTH NEQNS FOR RECORDING C SUPERNODE MEMBERSHIP. C (I) NOFSUB - NUMBER OF SUBSCRIPTS TO BE STORED IN C LINDX(*). C (I) IWSIZ - SIZE OF INTEGER WORKING STORAGE. C C OUTPUT PARAMETERS: C (I) XLINDX - ARRAY OF LENGTH NEQNS+1, CONTAINING POINTERS C INTO THE SUBSCRIPT VECTOR. C (I) LINDX - ARRAY OF LENGTH MAXSUB, CONTAINING THE C COMPRESSED SUBSCRIPTS. C (I) XLNZ - COLUMN POINTERS FOR L. C (I) FLAG - ERROR FLAG: C 0 - NO ERROR. C -1 - INSUFFICIENT INTEGER WORKING SPACE. C -2 - INCONSISTANCY IN THE INPUT. C C WORKING PARAMETERS: C (I) IWORK - WORKING ARRAY OF LENGTH NSUPER+2*NEQNS. C C*********************************************************************** C SUBROUTINE SYMFCT ( NEQNS , ADJLEN, XADJ , ADJNCY, PERM , & INVP , COLCNT, NSUPER, XSUPER, SNODE , & NOFSUB, XLINDX, LINDX , XLNZ , IWSIZ , & IWORK , & FLAG ) C C*********************************************************************** C C ----------- C PARAMETERS. C ----------- INTEGER ADJLEN, FLAG , IWSIZ , NEQNS , NOFSUB, & NSUPER INTEGER ADJNCY(ADJLEN), COLCNT(NEQNS) , & INVP(NEQNS) , & IWORK(NSUPER+2*NEQNS+1), & LINDX(NOFSUB) , & PERM(NEQNS) , SNODE(NEQNS) , & XSUPER(NSUPER+1) INTEGER XADJ(NEQNS+1) , XLINDX(NSUPER+1), & XLNZ(NEQNS+1) C C*********************************************************************** C FLAG = 0 IF ( IWSIZ .LT. NSUPER+2*NEQNS+1 ) THEN FLAG = -1 RETURN ENDIF CALL SYMFC2 ( NEQNS , ADJLEN, XADJ , ADJNCY, PERM , & INVP , COLCNT, NSUPER, XSUPER, SNODE , & NOFSUB, XLINDX, LINDX , XLNZ , & IWORK(1) , & IWORK(NSUPER+1) , & IWORK(NSUPER+NEQNS+2) , & FLAG ) RETURN END quantreg/src/mcmb.c0000644000176200001440000001630213522564222013756 0ustar liggesusers /****************************************************************/ /* Markov Chain Marginal Bootstrap Package for Quantile Regression */ /* Maria Kocherginsky ,Xuming He */ /* */ /* This code modified by R. Koenker (July 30, 2003, April 21 2010) */ /* to employ R random number generation conventions and to conform */ /* to the conventions of the quantreg package. See the function */ /* boot.rq.mcmb for details on the interface to summary.rq */ /**********************************************************************/ #include #include #include #include #include #include #define MAXN 200000 #define MAXP 100 #define XACCF .001 #define XACCD .001 #define MAXIT 100 #define BMAXIT 100 #define UNUSED (-1.11e30) #define SWAP(a,b) temp=(a);(a)=(b);(b)=temp; #define M 7 #define NSTACK 50 int allZero; /****************************************************************/ /* Error Handling */ /****************************************************************/ void error(const char * format, ...); /****************************************************************/ /* Various Utilities off the Web (for use with sort2()) */ /****************************************************************/ unsigned int *lvector(int nl, int nh) /* allocate a int vector with subscript range v[nl..nh] */ { unsigned int *v = (unsigned int *)malloc((size_t)((nh-nl+2) * sizeof(int))); if (v == NULL) error("allocation failure in lvector()"); return (v-nl+1); } void free_lvector(unsigned int *v, int nl, int nh) /* free a int int vector allocated with lvector() */ { free(v+nl-1); } /****************************************************************/ /* Multiply two vectors */ /****************************************************************/ double mprodx(double *x, double *c, int pp){ int i; double sum; sum=0; for(i=0;i0.0) sign=1; else if (x<0.0) sign=-1; else sign=0; return sign; } /****************************************************************/ /* Sort Function */ /****************************************************************/ void sort2(unsigned int n, double arr[], double brr[]){ unsigned int i,ir=n,j,k,l=1,*istack; int jstack=0; double a,b,temp; istack=lvector(1,NSTACK); for (;;) { if (ir-l < M) { for (j=l+1;j<=ir;j++) { a=arr[j]; b=brr[j]; for (i=j-1;i>=l;i--) { if (arr[i] <= a) break; arr[i+1]=arr[i]; brr[i+1]=brr[i]; } arr[i+1]=a; brr[i+1]=b; } if (!jstack) { free_lvector(istack,1,NSTACK); return; } ir=istack[jstack]; l=istack[jstack-1]; jstack -= 2; } else { k=(l+ir) >> 1; SWAP(arr[k],arr[l+1]) SWAP(brr[k],brr[l+1]) if (arr[l] > arr[ir]) { SWAP(arr[l],arr[ir]) SWAP(brr[l],brr[ir]) } if (arr[l+1] > arr[ir]) { SWAP(arr[l+1],arr[ir]) SWAP(brr[l+1],brr[ir]) } if (arr[l] > arr[l+1]) { SWAP(arr[l],arr[l+1]) SWAP(brr[l],brr[l+1]) } i=l+1; j=ir; a=arr[l+1]; b=brr[l+1]; for (;;) { do i++; while (arr[i] < a); do j--; while (arr[j] > a); if (j < i) break; SWAP(arr[i],arr[j]) SWAP(brr[i],brr[j]) } arr[l+1]=arr[j]; arr[j]=a; brr[l+1]=brr[j]; brr[j]=b; jstack += 2; if (jstack > NSTACK) error("NSTACK too small in sort2.\n"); if (ir-i+1 >= j-l) { istack[jstack]=ir; istack[jstack-1]=i; ir=j-1; } else { istack[jstack]=j-1; istack[jstack-1]=l; l=i; } } } } /****************************************************************/ /* This function finds a weighted taustar quantile, instead of */ /* using bisection to solve the MCMB equations. See new paper. */ /****************************************************************/ double func(double *x, double *y, double tau, double *tTilda, double *A, double sum_right, double sumxij, double sumabsxij, int j, int pp, int nn){ int i,m; double *xj, *yj, *z, *wt, wtsum; unsigned int mm; double taustar, pwtsum, ans, large; xj=(double *) calloc(nn+1, sizeof(double)); yj=(double *) calloc(nn+1, sizeof(double)); z=(double *) calloc(nn+2, sizeof(double)); wt=(double *) calloc(nn+2, sizeof(double)); for(i=0;i 10e-16){ z[m]=(y[i]-mprodx(&x[i*pp],tTilda,pp)+tTilda[j]*xj[i])/xj[i]; wt[m]=fabs(xj[i])/wtsum; m=m+1; } else{error("fabs(xj[i])<10e-16\n");} } z[m]=10e16*sign(xj[nn]); large=z[m]; wt[m]=fabs(xj[nn])/wtsum; /*calculate taustar*/ taustar=(tau-0.5)*(sumxij+xj[nn])/(wtsum)+0.5; if(m==0){ error("Error: one design variable contains all 0s.\n"); allZero=1;} mm=m; sort2(m, z, wt); pwtsum=0; i=1; ans=z[1]; while((pwtsum<=taustar) & (i 10e15){ error("Picked infinity; need to resample\n"); return 1.0; } free(xj); free(yj); free(z); free(wt); return ans; } /****************************************************************/ /* RQMCMB */ /****************************************************************/ void bootnp(double *x, double *y, double *tau, double *theta_tilda, double *A, double *zstar, double *sumxij, double *sumabsxij, int *n, int *p, int *success, double *theta, int *MAXK){ int i, j, jj, k, nn, pp; double sum, s[MAXP],tau2, tTilda[MAXP]; int rand_ind; extern int allZero; pp=(int) *p; nn=(int) *n; tau2=(double) *tau; allZero=0; for(i=0;i #include // for NULL #include /* .C calls */ extern void bootnp(double *x, double *y, double *tau, double *theta_tilda, double *A, double *zstar, double *sumxij, double *sumabsxij, int *n, int *p, int *success, double *theta, int *MAXK); /* .Fortran calls */ extern void F77_NAME(brutpow)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(combin)(void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(crqf)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(crqfnb)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(grexp)(void *, void *, void *); extern void F77_NAME(kuantiles)(void *, void *, void *, void *); extern void F77_NAME(penalty)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(pfnb)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(pwxy)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(powell)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(qfnb)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(qselect)(void *, void *, void *); extern void F77_NAME(pwy)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(rls)(void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(rqbr)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(rqfnb)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(rqfnc)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(rqs)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(sakj)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(srqfn)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(srqfnc)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(wxy)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(xys)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); static const R_CMethodDef CEntries[] = { {"bootnp", (DL_FUNC) &bootnp, 13}, {NULL, NULL, 0} }; static const R_FortranMethodDef FortranEntries[] = { {"brutpow", (DL_FUNC) &F77_NAME(brutpow), 14}, {"combin", (DL_FUNC) &F77_NAME(combin), 7}, {"crqf", (DL_FUNC) &F77_NAME(crqf), 26}, {"crqfnb", (DL_FUNC) &F77_NAME(crqfnb), 18}, {"grexp", (DL_FUNC) &F77_NAME(grexp), 3}, {"kuantiles", (DL_FUNC) &F77_NAME(kuantiles), 4}, {"penalty", (DL_FUNC) &F77_NAME(penalty), 14}, {"pfnb", (DL_FUNC) &F77_NAME(pfnb), 23}, {"pwxy", (DL_FUNC) &F77_NAME(pwxy), 25}, {"powell", (DL_FUNC) &F77_NAME(powell), 17}, {"qfnb", (DL_FUNC) &F77_NAME(qfnb), 14}, {"qselect", (DL_FUNC) &F77_NAME(qselect), 3}, {"pwy", (DL_FUNC) &F77_NAME(pwy), 16}, {"rls", (DL_FUNC) &F77_NAME(rls), 7}, {"rqbr", (DL_FUNC) &F77_NAME(rqbr), 27}, {"rqfnb", (DL_FUNC) &F77_NAME(rqfnb), 13}, {"rqfnc", (DL_FUNC) &F77_NAME(rqfnc), 18}, {"rqs", (DL_FUNC) &F77_NAME(rqs), 15}, {"sakj", (DL_FUNC) &F77_NAME(sakj), 13}, {"srqfn", (DL_FUNC) &F77_NAME(srqfn), 45}, {"srqfnc", (DL_FUNC) &F77_NAME(srqfnc), 65}, // 65 = MAX_ARGS -- can NOT be increased {"wxy", (DL_FUNC) &F77_NAME(wxy), 18}, {"xys", (DL_FUNC) &F77_NAME(xys), 19}, {NULL, NULL, 0} }; void R_init_quantreg(DllInfo *dll) { R_registerRoutines(dll, CEntries, NULL, FortranEntries, NULL); R_useDynamicSymbols(dll, FALSE); } quantreg/src/brute.f0000644000176200001440000000216713752023347014173 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine brutpow(n,p,m,h,a,b,c,x,tau,u,xh,d,jminz,nflag) integer n,p,m double precision x(p),a(n,p),b(n),c(n) double precision u(p,p),d(p),xh(p) double precision zero, one,tau,pow,minz,z integer h(p,m),k,findk,jminz,nflag parameter(zero = 0.0d0, one = 1.d0) jminz = 1 minz = pow(n,p,x,a,b,c,tau) do23000 j = 2,m k = findk(p,h(1,j),h(1,j-1)) if(k .eq. 0)then nflag = 4 return endif call pivot(n,p,h(1,j-1),h(k,j),h(k,j-1),a,u,d,xh,nflag) if(nflag .gt. 0)then return endif do23006 i = 1,p xh(i) = b(h(i,j)) 23006 continue 23007 continue call dgemv('N',p,p,one,u,p,xh,1,zero,x,1) z = pow(n,p,x,a,b,c,tau) if(z .lt. minz)then minz = z jminz = j endif 23000 continue 23001 continue return end integer function findk(p,h,g) integer p,k,h(p),g(p) findk = 0 do23010 k = 1,p if(h(k) .ne. g(k))then findk = k goto 23011 endif 23010 continue 23011 continue return end quantreg/src/crqf.f0000644000176200001440000003462014620426231013776 0ustar liggesusersC Comments, bug reports, etc. should be sent to: portnoy@stat.uiuc.edu C SUBROUTINE CRQF(M,N,MPLUS,N2,X,Y,C,TZERO,MAXW,STEP,IFT,H,XH, * WA,WB,WC,WD,WE,WF,IA,NSOL,SOL,LSOL,ICEN,TCEN,LCEN) C C M = number of Observations C N = Number of Parameters C MPLUS = row dim of X, WA, and WC .GE. M+1 C N2 = N+2 C X is the X matrix (MPLUS BY N) (includes censored obs) C Y is the y vector (M) (includes censored obs) C C is the censoring integer(M) vector, 1 if obs is censored, C 0 otherwise C TZERO is the initial tau value C MAXW ( .LE. MPLUS ): Maximal number of calls to weighted RQ C for possible degeneracies. If exceeded (IFT = 7), dither. C If MAXW .LE. 0, don't pivot -- use only weighted rq C STEP: Step size for weighted rq at degeneracy C IFT exit code: C 0: ok C 1: M < 0 or N < 0 OR M < N C 2: MPLUS .LT. M + 1 or N2 .NE. N+2 C 3: MAXW > MPLUS C 4: less than N noncensored obs above the tau=0 soln C 5: possible degeneracy, rq called at tau + step, see IA C 6: LSOL becomes greater than NSOL C 7: MAXW exceeded C 8: weighted rq tries to include infinite basis element C H is an integer work vector (N) ( = basis indices ) C XH is a double precision work array (N by N) C WA is a double precision work array (MPLUS by N) C WB is a double precision work vector (MPLUS) C WC is a double precision work array (MPLUS by N+2) C WD is a double precision work vector (MPLUS) C WE is a double precision work vector (MPLUS) C WF is a double precision work vector (N) C IA is an integer work vector (MPLUS) C NSOL is an (estimated) row dimension of the solution array C if NSOL < M, solutions returned only at tau = i/(NSOL-1) C if all solutions are desired, NSOL = 3*M is a good choice C on output: C SOL is the coefficient solution array (N+2 by NSOL) C first and last rows give tau bkpts and quantile C rows 2:(N+1) give the beta coefficients C LSOL is the actual dimension of the solution arrays C LSOL = NSOL if NSOL < M, else LSOL .LE. NSOL C ICEN (M) indicates status of censored observations C = 0 if uncensored (or uncrossed censored while pivoting) C = 1 if crossed censored C = 2 if deleted as below tau = 0 solution C = 3 if above last (maximal tau) solution C TCEN (M) are the corresponding tau value where censored obs is C firstcrossed: weight = (tau - TCEN(I))/(1 - TCEN(I)) C TCEN = 1 if censored obs is never crossed (ICEN = 3) C TCEN = 0 if censored obs is deleted (ICEN = 2) C LCEN = number of censored observations C WD = list of first MPLUS tau values at which degeneracy C may have occurred (and weighted RQ was called) C H(1) = number of calls to weighted RQ (apparent degeneracy) C IMPLICIT DOUBLE PRECISION(A-H,O-Z) INTEGER H(N),ICEN(M),C(M),IA(MPLUS) LOGICAL APC, DEG DOUBLE PRECISION ONE DIMENSION X(M,N),Y(M),SOL(N2,NSOL),WC(MPLUS,N2),XH(N,N) DIMENSION WA(MPLUS,N),WB(MPLUS),WD(MPLUS),WE(MPLUS) DIMENSION F(2),WF(N),TCEN(M) DATA BIG/1.D17/ DATA ZERO/0.00D0/ DATA HALF/0.50D0/ DATA ONE/1.00D0/ DATA TWO/2.00D0/ C C CHECK DIMENSION PARAMETERS C DEG = .FALSE. IFT=0 N1 = NSOL-1 LCEN = 0 DO 2 I = 1,M IF(C(I) .EQ. 1) LCEN = LCEN + 1 2 CONTINUE IF(MPLUS .LT. M+1) IFT = 2 IF(N2 .NE. N+2) IFT = 2 IF(M .LE. ZERO .OR. N. LE. ZERO .OR. M .LT. N) IFT = 1 IF(MAXW .GT. MPLUS) IFT = 3 IF(IFT .NE. 0) RETURN C C INITIALIZATION C TOLER = 1.D-11 TOL1 = 10.0D0*TOLER IF(TZERO .LE. ZERO .OR. TZERO .GT. STEP) TZERO = STEP DO 5 I=1,M ICEN(I) = 0 TCEN(I) = ONE WB(I) = Y(I) DO 4 J=1,N WA(I,J) = X(I,J) 4 CONTINUE 5 CONTINUE MA = M C C GET TAU = O SOLUTION C DELETE CENSORED OBS BELOW TAU = 0 SOLN C 10 IF(MA .LE. N) THEN IFT = 4 RETURN ENDIF CALL RQ1(MA,N,MPLUS,N2,WA,WB,TZERO,TOLER,IFT1, * WF,WE,IA,WC,WD) K = 0 KL = 0 C C CHECK FOR CENSORED OBS BELOW TAU = 0 SOLN C L = 0 DO 20 I=1,M IF(ICEN(I) .EQ. 2) GO TO 20 L = L + 1 IF( C(I) .EQ. 1 .AND. WE(L) .LE. TOL1 ) THEN K = K + 1 ICEN(I) = 2 GO TO 20 ENDIF IF( DABS(WE(L)) .GE. TOL1) GO TO 20 KL = KL + 1 IF(KL .LE. N) H(KL) = I 20 CONTINUE IF( K .EQ. 0) GO TO 40 MA = MA - K L = 0 C C DELETE CENSORED OBS BELOW TAU = 0 SOLN, AND RETRY C DO 30 I=1,M IF(ICEN(I) .EQ. 2) GO TO 30 L = L + 1 WB(L) = Y(I) DO 25 J=1,N WA(L,J) = X(I,J) 25 CONTINUE 30 CONTINUE GO TO 10 40 CONTINUE C C SAVE INITIAL SOLUTION, AND INITIALIZE PIVOTING LOOP C SOL(1,1) = ZERO DO 50 J = 1,N SOL(J+1,1) = WF(J) 50 CONTINUE NWRQ = 0 APC = .FALSE. LSOL = 2 TAU = TZERO C C COMPUTE NEXT TAU C FIRST CHECK FOR DEGENERACY AT TZERO C IF (KL .GT. N) GO TO 500 C C GET X(H,) C DO 70 K = 1,N I= H(K) DO 60 J = 1,N XH(K,J) = X(I,J) 60 CONTINUE 70 CONTINUE C C GET X(H,) INVERSE C CALL DGECO(XH,N,N,IA,V,WC) IF(V. LT. TOLER) GO TO 500 JOB = 01 CALL DGEDI(XH,N,N,IA,F,WC,JOB) C C GET RESIDUALS C DO 90 I=1,M S = Y(I) DO 80 J = 1,N S = S - WF(J)*X(I,J) 80 CONTINUE WE(I) = S 90 CONTINUE C C BEGIN PIVOTING; WD = GRAD UPPER BD, IA = SIGN(GRAD DENOM) C 200 CONTINUE CALL GRAD(X,M,N,H,ICEN,TCEN,XH,WE,TOLER,IA,WC,WD) KL = 0 KM = 1 S = WD(1) IF(N .EQ. 1) GO TO 230 DO 210 J=2,N S = DMIN1(WD(J),S) 210 CONTINUE DO 220 J=1,N IF(WD(J) .GE. S + TOLER) GO TO 220 KL = KL + 1 KM = J 220 CONTINUE 230 CONTINUE C C IF ALL POS RESIDS CENSORED, RETURN; ELSE CHECK FOR DEGEN. C IF(APC) THEN SOL(1,LSOL) = DMAX1(S, TAU) DO 240 J=1,N SOL(J+1,LSOL) = WF(J) 240 CONTINUE GO TO 600 ENDIF C C IF DEGENERACY, CALL WEIGHTED RQ C IF (KL .GT. 1) GO TO 500 C C CHECK FOR INFEASIBILITY CAUSED BY REWEIGHTING C IF(S .LT. TAU + TOL1) THEN LSOL = LSOL - 1 TAU = TAU - .8*STEP GO TO 500 ENDIF TAU = S C C GET NEW OBSERVATION TO ENTER BASIS C FIRST DEFINE WD = BASIS INDICATOR = 1 IF I IN H(J) C DO 250 I=1,M WD(I) = ZERO 250 CONTINUE DO 260 J=1,N WD(H(J)) = ONE 260 CONTINUE KN = 0 D = BIG KIN = 0 DO 300 I=1,M IF(ICEN(I) .EQ. 2) GO TO 300 S = ZERO DO 270 J=1,N S = S + X(I,J)*XH(J,KM) 270 CONTINUE S = IA(KM)*S IF(DABS(S).LT.TOL1 .OR. (C(I).EQ.1 .AND. ICEN(I).NE.1) * .OR. WD(I).EQ.ONE) GO TO 300 S = WE(I)/S IF(S .LT. TOL1) GO TO 300 IF(S .LE. D - TOL1) THEN D = S KIN = I KN = 0 ELSE IF(S .LE. D + TOL1) KN = 1 ENDIF 300 CONTINUE IF(KN .EQ. 1) GO TO 500 H(KM) = KIN C C UPDATE SOLUTION C GET NEW X(H,) C DO 310 K = 1,N I = H(K) DO 305 J = 1,N XH(K,J) = X(I,J) 305 CONTINUE 310 CONTINUE C C GET X(H,) INVERSE C 315 CALL DGECO(XH,N,N,IA,V,WA) IF(V. LT. TOLER) GO TO 500 JOB = 01 CALL DGEDI(XH,N,N,IA,F,WA,JOB) C C GET BETA-HAT, RESIDS C DO 340 K = 1,N S = ZERO DO 330 J = 1,N S = S + XH(K,J)*Y(H(J)) 330 CONTINUE WF(K) = S 340 CONTINUE 345 DO 360 I=1,M S = Y(I) DO 350 J = 1,N S = S - WF(J)*X(I,J) 350 CONTINUE WE(I) = S 360 CONTINUE C C SAVE SOLUTION C 365 DO 380 I = (LSOL-1),N1 IF(NSOL.GE.M .OR. TAU .GT. DBLE(I)/DBLE(N1) - 10*TOL1) THEN SOL(1,LSOL) = TAU DO 370 J = 1,N SOL(J+1,LSOL) = WF(J) 370 CONTINUE LSOL = LSOL + 1 GO TO 390 ENDIF 380 CONTINUE 390 CONTINUE C C CHECK FOR DIM(SOL) EXCEEDED C IF(LSOL .GT. NSOL) THEN IFT = 6 GO TO 600 ENDIF IF(APC) THEN LSOL = LSOL - 1 GO TO 600 ENDIF C C SET WT FOR CROSSED CENSORED OBSERVATIONS C APC = .TRUE. IF ALL POS RESID ARE UNCROSSED CENSORED C APC = .TRUE. C if the following are left uncommented: still get zero column C TAUW = TAU - STEP/TWO C IF(MAXW.GT.ZERO)THEN C TAUW=TAU C ENDIF DO 400 I=1,M IF(ICEN(I) .EQ. 2) GO TO 400 IF(WE(I).GE.TOL1 .AND. (C(I).EQ.0 .OR. ICEN(I).EQ.1)) * APC = .FALSE. IF(WE(I).LE.-TOL1 .AND. C(I).EQ.1 .AND. ICEN(I).EQ.0) THEN C C at this point, Y(I) is a crossed censored obs (C_i) C for the grid method TAUW = TAU - STEP*(B2-Y(I))/(B2-B1) C where B1 = x_i' beta_j and B2 = x_i' beta_(j+1) C otherwise (for pivot), TAUW = TAU C IF(MAXW.LT.0) THEN B1 = ZERO B2 = ZERO DO 396 J=1,N B1 = B1 + X(I,J) * SOL(J+1,LSOL - 2) B2 = B2 + X(I,J) * SOL(J+1,LSOL - 1) 396 CONTINUE A1 = (B2 - Y(I))/(B2-B1) TAUW = TAU - A1*STEP ELSE TAUW = TAU ENDIF ICEN(I) = 1 TCEN(I) = TAUW ENDIF 400 CONTINUE IF(APC) THEN IF(DEG) THEN IFT = 5 LSOL = LSOL - 1 GO TO 600 ENDIF GO TO 200 ENDIF C C RETURN IF TAU > 1 C IF(TAU .GE. ONE - 10.0D0 * TOL1) GO TO 600 IF(DEG) GO TO 500 IF(MAXW .GT. 0) GO TO 200 C C POSSIBLE DEGENERACY -- USE WEIGHTED RQ1 TO RESOLVE C 500 NWRQ = NWRQ + 1 IF(MAXW .GT. 0 .AND. NWRQ .GT. MAXW) THEN IFT = 7 LSOL = LSOL - 1 GO TO 600 ENDIF IF(NWRQ .LE. NSOL) SOL(N+2,NWRQ) = TAU TAU = TAU + STEP IF(TAU .GE. ONE) TAU = ONE - TOL1 L = 0 L1 = 0 DO 506 J=1,N WF(J) = ZERO 506 CONTINUE DO 530 I = 1,M IF(ICEN(I) .EQ. 0) THEN IF (C(I) .EQ. 0) THEN L1 = L1 + 1 WB(L1) = Y(I) DO 510 J=1,N WA(L1,J) = X(I,J) 510 CONTINUE ELSE DO 514 J = 1,N WF(J) = WF(J) + X(I,J) 514 CONTINUE ENDIF ENDIF IF(ICEN(I) .EQ. 1) THEN L1 = L1 + 1 L = L+1 W = (TAU - TCEN(I))/(ONE - TCEN(I)) WB(L1) = W * Y(I) DO 520 J = 1,N WA(L1,J) = W * X(I,J) WF(J) = WF(J) + (ONE - W) * X(I,J) 520 CONTINUE ENDIF 530 CONTINUE MAL = L1+1 DO 534 J=1,N WA(MAL,J) = WF(J) 534 CONTINUE WB(MAL) = BIG CALL RQ1(MAL,N,MPLUS,N2,WA,WB,TAU,TOLER,IFT1,WF,WE,IA,WC,WD) DEG = .FALSE. IF(DABS(WE(MAL)) .LE. .0001) THEN IFT = 8 LSOL = LSOL - 1 GO TO 600 ENDIF L = 0 K = 0 DO 550 I=1,M IF(ICEN(I) .EQ. 2) GO TO 550 L = L+1 IF(DABS(WE(L)) .GE. TOL1) GO TO 550 K = K+1 IF(K .LE. N) THEN H(K) = I DO 540 J=1,N XH(K,J) = X(I,J) 540 CONTINUE ENDIF 550 CONTINUE IF(K .LT. N) THEN IFT = 8 LSOL = LSOL - 1 GO TO 600 ENDIF IF(K .GT. N) DEG = .TRUE. GO TO 345 C C DEFINE OUTPUT AND RETURN C 600 H(1) = NWRQ L = MIN0(NWRQ,MPLUS) DO 610 I=1,L WD(I) = SOL(N+2,I) 610 CONTINUE DO 620 I=1,M IF(ICEN(I) .EQ. 2) GO TO 620 IF(C(I) .EQ.1 .AND. TCEN(I) .EQ. ONE) ICEN(I) = 3 620 CONTINUE V = DBLE(MA) DO 650 J = 1,N S = ZERO DO 640 I = 1,M IF(ICEN(I) .EQ. 2) GO TO 640 S = S + X(I,J) 640 CONTINUE WF(J) = S/V 650 CONTINUE DO 670 I = 1,LSOL S = ZERO DO 660 J = 1,N S = S + WF(J) * SOL(J+1,I) 660 CONTINUE SOL(N+2,I) = S 670 CONTINUE RETURN END SUBROUTINE GRAD(X,M,N,H,ICEN,TCEN,XH, * R,TOL,IFLAG,WA,GUP) C C X matrix (M BY N) C M = Number of Observations C N = Number of Parameters C H = basis, integer(N) vector C ICEN (integer(M)) = 2 for deleted obs C = 1 for crossed non-censored obs C = 0 otherwise C TCEN(M) are the corresponding tau values where a censored obs is C first crossed (ICEN=1): weight = (tau - TCEN(I))/(1 - TCEN(I)) C TCEN = 1 if censored obs is never crossed C XH = (N by N) X(H,) inverse matrix C R(M) = residuals C TOL = zero tolerance (1.D-10 by default) C IFLAG (M) work vector C WA (M by N) work array C returns: C GUP(N) = upper bounds on tau C IFLAG(1:N) = sign(grad denom) C = +1 if bound from lower grad bound C = -1 if bound from upper grad bound C IMPLICIT DOUBLE PRECISION(A-H,O-Z) INTEGER H(N),ICEN(M),IFLAG(*) DOUBLE PRECISION ONE DIMENSION X(M,N),GUP(N),XH(N,N) DIMENSION R(M),TCEN(M),WA(M,N) DATA ZERO/0.00D0/, ONE/1.0d0/ C C GET X'(XH-INVERSE) C DO 80 I = 1,M IF(ICEN(I) .EQ. 2) GO TO 80 DO 70 J = 1,N A = ZERO DO 60 K = 1,N A = A + X(I,K)*XH(K,J) 60 CONTINUE WA(I,J) = A 70 CONTINUE 80 CONTINUE C C GET GRADIENT BOUNDS C FIRST SET IFLAG = 1 FOR BASIS INDICES (TEMPORARY) C T = ZERO DO 90 I = 1,M IFLAG(I) = 0 90 CONTINUE DO 95 J = 1,N IFLAG(H(J)) = 1 95 CONTINUE DO 120 J=1,N A = ZERO B = ZERO C = ZERO D = ZERO DO 100 I = 1,M IF(ICEN(I) .EQ. 2) GO TO 100 IF(ICEN(I) .EQ. 0) THEN IF(R(I) .GT. TOL) A = A + WA(I,J) IF(R(I) .LT. - TOL) B = B + WA(I,J) GO TO 100 ENDIF IF(IFLAG(I).EQ.1) GO TO 100 C C IFLAG = 0: NOT BASIS AND ICEN = 1: CROSSED CENSORED C IF(R(I) .LT. -TOL) THEN T = TCEN(I)/(ONE - TCEN(I)) C = C - T*WA(I,J) GO TO 100 ENDIF IF(R(I) .GT. TOL) THEN D = D - WA(I,J) ENDIF 100 CONTINUE D = D - C L = ICEN(H(J)) IF(L .NE. 0) T = TCEN(H(J))/( ONE - TCEN(H(J)) ) S = DBLE(L)*(T + ONE) - ONE E1 = A + B - D - S E2 = A + B - D + ONE IF(E1 .GT. ZERO) THEN GUP(J) = (B + C - S)/E1 IFLAG(J+M) = 1 GO TO 120 ENDIF IF(E2 .LT. ZERO) THEN GUP(J) = (B + C)/E2 IFLAG(J+M) = -1 GO TO 120 ENDIF GUP(J) = - ONE 120 CONTINUE DO 130 J = 1,N IFLAG(J) = IFLAG(J+M) 130 CONTINUE RETURN END quantreg/src/kuantile.f0000644000176200001440000000042613752201267014661 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine kuantile(k,m,n,x) integer i,j,k(m),m,n double precision x(n) j = 0 do23000 i = 1,m call dsel05(k(i)-j,n-j,x(j+1)) j = k(i) 23000 continue 23001 continue return end quantreg/src/dsel05.f0000644000176200001440000001107113522271353014135 0ustar liggesusers subroutine dsel05( k, n, x) integer k, n double precision x(n) c c Selects the smallest k elements of the array x[1:n]. c The input array is permuted so that the smallest k elements of c x are x(i), i = 1,...,k, (in arbitrary order) and x(k) is the c kth smallest element. c c This is a Fortran 77 version of the Algol 68 procedure from c c R.W. Floyd and R.L. Rivest: "Algorithm 489: The Algorithm c SELECT---for Finding the $i$th Smallest of $n$ Elements", c Comm. ACM 18, 3 (1975) 173, c c including some modifications suggested in c c T. Brown: "Remark on Algorithm 489", ACM Trans. Math. c Software 3, 2 (1976), 301-304. c c Array stack(2,nstack) permits up to nstack levels of recursion. c For standard parameters cs <= 1 and cutoff >= 600, c nstack = 5 suffices for n up to 2**31-1 (maximum integer*4). integer nstack parameter (nstack=10) integer stack(2,nstack) c c Parameters cutoff, cs and csd are as originally proposed. integer cutoff parameter (cutoff=600) double precision cs, csd parameter (cs=0.5d0, csd=0.5d0) c Brown's version c parameter (cs=0.5d0, csd=0.1d0) c c Subprograms called: intrinsic dble, exp, log, max, min, sign c c Written by K.C. Kiwiel, 8 March 2006, kiwiel@ibspan.waw.pl c c Local variables: integer i, j, jstack, l, m, r, s, sd double precision dm, swap, v, z l=1 r=n jstack=0 c entry to SELECT( x, n, l, r, k) c SELECT will rearrange the values of the array segment x[l:r] so c that x(k) (for some given k; l <= k <= r) will contain the c (k-l+1)-th smallest value, l <= i <= k will imply x(i) <= x(k), c and k <= i <= r will imply x(k) <= x(i). c while r > l do 1 continue if (l.ge.r) goto 6 c The additional test below prevents stack overflow. if (r-l.gt.cutoff .and. jstack.lt.nstack) then c Use SELECT recursively on a sample of size s to get an c estimate for the (k-l+1)-th smallest element into x(k), c biased slightly so that the (k-l+1)-th element is c expected to lie in the smaller set after partitioning. m=r-l+1 i=k-l+1 dm=m z=log(dm) s=cs*exp(2*z/3)+0.5d0 sd=csd*sqrt(z*s*(1-s/dm))*sign(1d0,i-dm/2)+0.5d0 if (i.eq.m/2) sd=0 c Brown's modification c sd=csd*sqrt(z*s*(1-s/dm))*(2*i/dm-1)+0.5d0 c Push the current l and r on the stack. jstack=jstack+1 stack(1,jstack)=l stack(2,jstack)=r c Find new l and r for the next recursion. l=max(dble(l),k-i*(s/dm)+sd)+0.5d0 r=min(dble(r),k-i*(s/dm)+sd+s)+0.5d0 c call SELECT( x, n, l, r, k) goto 1 endif 2 continue c Partition x[l:r] about the pivot v := x(k). v=x(k) c Initialize pointers for partitioning. i=l j=r c Swap x(l) and x(k). x(k)=x(l) x(l)=v if (v.lt.x(r)) then c Swap x(l) and x(r). x(l)=x(r) x(r)=v endif c while i < j do 3 continue if (i.lt.j) then c Swap x(i) and x(j). swap=x(j) x(j)=x(i) x(i)=swap i=i+1 j=j-1 c Scan up to find element >= v. 4 continue if (x(i).lt.v) then i=i+1 goto 4 endif c Scan down to find element <= v. 5 continue if (x(j).gt.v) then j=j-1 goto 5 endif goto 3 c end of while i < j do endif if (x(l).eq.v) then c Swap x(l) and x(j). swap=x(j) x(j)=v x(l)=swap else j=j+1 c Swap x(j) and x(r). swap=x(j) x(j)=x(r) x(r)=swap endif c Now adjust l, r so that they surround the subset containing c the (k-l+1)-th smallest element. if (j.le.k) l=j+1 if (k.le.j) r=j-1 goto 1 c end of while r > l do 6 continue c Exit if the stack is empty. if (jstack.eq.0) return c Pop l and r from the stack. l=stack(1,jstack) r=stack(2,jstack) jstack=jstack-1 c Continue as if after a return from a recursive call. goto 2 end quantreg/src/extract.f0000644000176200001440000000102613522271353014512 0ustar liggesusersc c Extract: Subroutine to extract the non-diagonal structure and c entries from A stored in CSR format c subroutine extract(d,jd,id,dsub,jdsub,m,nnzd,nnzds,ierr) integer jd(nnzd),jdsub(nnzds),id(*),m,mp1,ierr,nnzd,nnzds double precision d(nnzd),dsub(nnzds) c c Call csrmsr in SPARSKIT2 to transform the storage format in d c from csr to msr c call csrmsr(m,d,jd,id,dsub,jdsub,dsub,jdsub,nnzds,ierr) mp1 = m + 1 do i=1,mp1 jdsub(i) = jdsub(i) - mp1 enddo return end quantreg/src/rq1.f0000644000176200001440000001406013522271353013545 0ustar liggesusers SUBROUTINE RQ1(M,N,MDIM,N2,A,B,T,TOLER,IFT,X,E,S,WA,WB) C C Modified to remove SOL and related vars -- only good for single tau C Number of Observations C Number of Parameters C MDIM row dimension for arrays A and WA C N+2 C A is the X matrix C B is the y vector C T, the desired quantile C TOLER, smallest detectable |x-y|/x machine precision to the 2/3 C IFT exit code: C 0-ok C else dimensions inconsistent or T not in (0,1) C X the parameter estimate betahat C E is the residual vector C S is an integer work array (M) C WA is a real work array (M5,N2) C WB is another real work array (M) C Utilization: If you just want a solution at a single quantile you C The algorithm is a slightly modified version of Algorithm AS 229 C described in Koenker and D'Orey, "Computing Regression Quantiles, C Applied Statistics, pp. 383-393. C IMPLICIT DOUBLE PRECISION(A-H,O-Z) INTEGER I,J,K,KL,KOUNT,KR,M,M1,M2,M3,M4,M5,IFT INTEGER MDIM,N,N1,N2,OUT,S(MDIM) LOGICAL STAGE,TEST,INIT,IEND DOUBLE PRECISION MIN,MAX DIMENSION B(MDIM),A(MDIM,N),X(N),WA(MDIM,N2), * WB(MDIM),E(M) DATA BIG/1.D37/ DATA ZERO/0.00D0/ DATA HALF/0.50D0/ DATA ONE/1.00D0/ DATA TWO/2.00D0/ C C CHECK DIMENSION PARAMETERS C IFT=0 IF(N2 .NE. N+2)IFT = 4 IF(M.LE.ZERO.OR.N.LE.ZERO)IFT = 5 IF(IFT .GT. TWO)RETURN C C INITIALIZATION C M1 = M+1 N1 = N+1 M2 = M+2 M3 = M+3 M4 = M+4 M5 = M+5 DO 2 I=1,M WB(I)=B(I) DO 1 J=1,N WA(I,J)=A(I,J) 1 CONTINUE 2 CONTINUE WA(M2,N1)=ZERO DIF = ZERO IEND = .TRUE. IF(T .GE. ZERO .AND. T .LE. ONE)GOTO 3 IFT = 6 RETURN 3 CONTINUE INIT = .FALSE. KOUNT = 0 DO 9 K=1,N WA(M5,K) = ZERO DO 8 I=1,M WA(M5,K) = WA(M5,K) + WA(I,K) 8 CONTINUE WA(M5,K) = WA(M5,K)/FLOAT(M) 9 CONTINUE DO 10 J=1,N WA(M4,J) = J X(J) = ZERO 10 CONTINUE DO 40 I=1,M WA(I,N2) = N+I WA(I,N1) = WB(I) IF(WB(I).GE.ZERO)GOTO 30 DO 20 J=1,N2 WA(I,J) = -WA(I,J) 20 CONTINUE 30 E(I) = ZERO 40 CONTINUE DO 42 J=1,N WA(M2,J) = ZERO WA(M3,J) = ZERO DO 41 I=1,M AUX = SIGN(ONE,WA(M4,J)) * WA(I,J) WA(M2,J) = WA(M2,J) + AUX * (ONE - SIGN(ONE,WA(I,N2))) WA(M3,J) = WA(M3,J) + AUX * SIGN(ONE,WA(I,N2)) 41 CONTINUE WA(M3,J) = TWO * WA(M3,J) 42 CONTINUE GOTO 48 43 CONTINUE DO 44 I=1,M S(I) = ZERO 44 CONTINUE DO 45 J=1,N X(J) = ZERO 45 CONTINUE C C COMPUTE NEXT T C SMAX = TWO DO 47 J=1,N B1 = WA(M3,J) A1 = (-TWO - WA(M2,J))/B1 B1 = -WA(M2,J)/B1 IF(A1 .LT. T)GOTO 46 IF(A1 .GE. SMAX) GOTO 46 SMAX = A1 DIF = (B1 - A1 )/TWO 46 IF(B1 .LE. T) GOTO 47 IF(B1 .GE. SMAX)GOTO 47 SMAX = B1 DIF = (B1 - A1)/TWO 47 CONTINUE TNT = SMAX + TOLER * (ONE + ABS(DIF)) IF(TNT .GE. T1 + TOLER)IEND = .TRUE. T = TNT IF(IEND)T = T1 48 CONTINUE C C COMPUTE NEW MARGINAL COSTS C DO 49 J=1,N WA(M1,J) = WA(M2,J) + WA(M3,J) * T 49 CONTINUE IF(INIT) GOTO 265 C C STAGE 1 C C DETERMINE THE VECTOR TO ENTER THE BASIS C STAGE=.TRUE. KR=1 KL=1 70 MAX=-ONE DO 80 J=KR,N IF(ABS(WA(M4,J)).GT.N)GOTO 80 D=ABS(WA(M1,J)) IF(D.LE.MAX)GOTO 80 MAX=D IN=J 80 CONTINUE IF(WA(M1,IN).GE.ZERO)GOTO 100 DO 90 I=1,M4 WA(I,IN)=-WA(I,IN) 90 CONTINUE C C DETERMINE THE VECTOR TO LEAVE THE BASIS C 100 K=0 DO 110 I=KL,M D=WA(I,IN) IF(D.LE.TOLER)GOTO 110 K=K+1 WB(K)=WA(I,N1)/D S(K)=I TEST=.TRUE. 110 CONTINUE 120 IF(K.GT.0)GOTO 130 TEST=.FALSE. GOTO 150 130 MIN=BIG DO 140 I=1,K IF(WB(I).GE.MIN)GOTO 140 J=I MIN=WB(I) OUT=S(I) 140 CONTINUE WB(J)=WB(K) S(J)=S(K) K=K-1 C C CHECK FOR LINEAR DEPENDENCE IN STAGE 1 C 150 IF(TEST.OR..NOT.STAGE)GOTO 170 DO 160 I=1,M4 D=WA(I,KR) WA(I,KR)=WA(I,IN) WA(I,IN)=D 160 CONTINUE KR=KR+1 GOTO 260 170 IF(TEST)GOTO 180 WA(M2,N1)=TWO GOTO 390 180 PIVOT=WA(OUT,IN) IF(WA(M1,IN)-PIVOT-PIVOT.LE.TOLER)GOTO 200 DO 190 J=KR,N1 D=WA(OUT,J) WA(M1,J)=WA(M1,J)-D-D WA(M2,J)=WA(M2,J)-D-D WA(OUT,J)=-D 190 CONTINUE WA(OUT,N2)=-WA(OUT,N2) GOTO 120 C C PIVOT ON WA(OUT,IN) C 200 DO 210 J=KR,N1 IF(J.EQ.IN)GOTO 210 WA(OUT,J)=WA(OUT,J)/PIVOT 210 CONTINUE DO 230 I=1,M3 IF(I.EQ.OUT)GOTO 230 D=WA(I,IN) DO 220 J=KR,N1 IF(J.EQ.IN)GOTO 220 WA(I,J)=WA(I,J)-D*WA(OUT,J) 220 CONTINUE 230 CONTINUE DO 240 I=1,M3 IF(I.EQ.OUT)GOTO 240 WA(I,IN)=-WA(I,IN)/PIVOT 240 CONTINUE WA(OUT,IN)=ONE/PIVOT D=WA(OUT,N2) WA(OUT,N2)=WA(M4,IN) WA(M4,IN)=D KOUNT=KOUNT+1 IF(.NOT.STAGE)GOTO 270 C C INTERCHANGE ROWS IN STAGE 1 C KL=KL+1 DO 250 J=KR,N2 D=WA(OUT,J) WA(OUT,J)=WA(KOUNT,J) WA(KOUNT,J)=D 250 CONTINUE 260 IF(KOUNT+KR.NE.N1)GOTO 70 C C STAGE 2 C 265 STAGE=.FALSE. C C DETERMINE THE VECTOR TO ENTER THE BASIS C 270 MAX=-BIG DO 290 J=KR,N D=WA(M1,J) IF(D.GE.ZERO)GOTO 280 IF(D.GT.(-TWO))GOTO 290 D=-D-TWO 280 IF(D.LE.MAX)GOTO 290 MAX=D IN=J 290 CONTINUE IF(MAX.LE.TOLER)GOTO 310 IF(WA(M1,IN).GT.ZERO)GOTO 100 DO 300 I=1,M4 WA(I,IN)=-WA(I,IN) 300 CONTINUE WA(M1,IN)=WA(M1,IN)-TWO WA(M2,IN)=WA(M2,IN)-TWO GOTO 100 C C COMPUTE QUANTILES C 310 CONTINUE DO 320 I=1,KL-1 K=WA(I,N2)*SIGN(ONE,WA(I,N2)) X(K) = WA(I,N1) * SIGN(ONE,WA(I,N2)) 320 CONTINUE 390 SUM = ZERO DO 400 I=KL,M K = WA(I,N2) * SIGN(ONE,WA(I,N2)) D = WA(I,N1) * SIGN(ONE,WA(I,N2)) SUM = SUM + D * SIGN(ONE,D) * (HALF + SIGN(ONE,D)*(T-HALF)) K=K-N E(K)=D 400 CONTINUE RETURN END quantreg/src/grexp.f0000644000176200001440000000041613761210514014164 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine grexp(n, x, a) integer i,n double precision x(n),a call fseedi() do23000 i = 1,n call frexp(x(i), a) 23000 continue 23001 continue call fseedo() return end quantreg/src/Makevars0000644000176200001440000000014313522271353014364 0ustar liggesusers## we use the BLAS and now also the LAPACK library: PKG_LIBS= $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) quantreg/src/pwxy.f0000644000176200001440000000556413764642365014077 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine pwxy(n,p,m,a,y,tau,qk,r,b,w,band,n0,d,u,wn,wp, aa,yy,sl *o,shi,rhs,glob,ghib,nit,info) integer n,p,m,kk(2),nn,n0,nit(5,m),info(m),sumbad,i,j,k,ir integer loq,hiq, slo(n),shi(n),ifix,ibad logical notopt double precision a(p,n),y(n),tau,qk(2),r(n),d(n),u(n),b(p,m),w(n) double precision wn(n,9), wp(p,(p+3)),band(n) double precision glob(p),ghib(p),aa(p,n),yy(n),rhs(p) double precision zero,one,beta,eps,big parameter(zero = 0.0d0) parameter(one = 1.0d0) parameter(beta = 0.99995d0) parameter(big = 1.0d+10) parameter(eps = 1.0d-06) do23000 ir = 1,m notopt = .true. call grexp(n,w,one) nn = n0 ifix = 0 ibad = 0 23002 if(notopt)then ibad = ibad + 1 loq = max0(1, int(n*tau - nn/2.)) hiq = min0(int(n*tau + nn/2.), n) qk(1) = r(loq) qk(2) = r(hiq) call iphil(n,0,slo) call iphil(n,0,shi) do23004 i = 1,n if(r(i) .lt. qk(1))then slo(i) = 1 else if(r(i) .gt. qk(2))then shi(i) = 1 endif endif 23004 continue 23005 continue 23010 if(notopt)then ifix = ifix + 1 call dphil(p,zero,glob) call dphil(p,zero,ghib) call dphil(n,one,d) call dphil(n,one,u) k = 0 do23012 i = 1,n if(slo(i) .eq. 0 .and. shi(i) .eq. 0)then k = k + 1 call dphil(p,zero,aa(1,k)) call daxpy(p,w(i),a(1,i),1,aa(1,k),1) yy(k) = -y(i)*w(i) else if(slo(i) .eq. 1)then do23018 j = 1,p glob(j) = glob(j) + a(j,i) * w(i) 23018 continue 23019 continue else if(shi(i) .eq. 1)then do23022 j = 1,p ghib(j) = ghib(j) + a(j,i) * w(i) 23022 continue 23023 continue endif endif endif 23012 continue 23013 continue call dcopy(p,glob,1,aa(1,k+1),1) call dcopy(p,ghib,1,aa(1,k+2),1) yy(k+1) = big yy(k+2) = -big call dgemv('N',p,k+2,one-tau,aa,p,d,1,zero,rhs,1) call dscal(k+2,zero,wn,1) call daxpy(k+2,one-tau,u,1,wn,1) call rqfnb(k+2,p,aa,yy,rhs,d,u,beta,eps,wn,wp,nit(1,ir),info(ir)) call dcopy(p,wp,1,b(1,ir),1) call dcopy(n,y,1,u,1) call dgemv('T',p,n,one,a,p,b(1,ir),1,one,u,1) sumbad = 0 do23024 i = 1,n if((u(i) .gt. 0) .and. slo(i) .eq. 1)then slo(i) = 0 sumbad = sumbad + 1 endif if((u(i) .lt. 0) .and. shi(i) .eq. 1)then shi(i) = 0 sumbad = sumbad + 1 endif 23024 continue 23025 continue if(sumbad .gt. 0)then if(sumbad .gt. 0.1 * nn)then nn = min(2 * nn, n) goto 23011 endif else notopt = .false. endif goto 23010 endif 23011 continue nit(4,ir) = ifix nit(5,ir) = ibad goto 23002 endif 23003 continue 23000 continue 23001 continue return end quantreg/src/rqfn.f0000644000176200001440000001133314470133671014013 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine rqfn(n,p,a,y,rhs,d,u,beta,eps,wn,wp,aa,nit,info) integer n,p,info,nit(3) double precision a(p,n),y(n),rhs(p),d(n),u(n),wn(n,10),wp(p,p+3),a *a(p,p) double precision one,beta,eps parameter( one = 1.0d0) call fna(n,p,a,y,rhs,d,u,beta,eps,wn(1,1),wn(1,2), wp(1,1),wn(1,3) *,wn(1,4),wn(1,5), wn(1,6), wp(1,2),wn(1,7),wn(1,8),wn(1,9),wn(1,10 *),wp(1,3), wp(1,4),aa,nit,info) return end subroutine fna(n,p,a,c,b,d,u,beta,eps,x,s,y,z,w, dx,ds,dy,dz,dw,ds *dw,dxdz,rhs,ada,aa,nit,info) integer n,p,pp,i,info,nit(3) double precision a(p,n),c(n),b(p) double precision zero,one,mone,big,ddot,dmax1,dmin1,dasum double precision deltap,deltad,beta,eps,cx,by,uw,uz,mu,mua,acomp,r *dg,g double precision x(n),u(n),s(n),y(p),z(n),w(n),d(n),rhs(p),ada(p,p *) double precision aa(p,p),dx(n),ds(n),dy(p),dz(n),dw(n),dxdz(n),dsd *w(n) parameter( zero = 0.0d0) parameter( half = 0.5d0) parameter( one = 1.0d0) parameter( mone = -1.0d0) parameter( big = 1.0d+20) nit(1)=0 nit(2)=0 nit(3)=n pp=p*p call dgemv('N',p,n,one,a,p,c,1,zero,y,1) call stepy(n,p,a,d,y,aa,info) if(info .ne. 0)then return endif do23002 i=1,p do23004 j=1,p ada(i,j)=zero 23004 continue 23005 continue ada(i,i)=one 23002 continue 23003 continue call dtrtrs('U','T','N',p,p,aa,p,ada,p,info) call dcopy(pp,ada,1,aa,1) call dcopy(n,c,1,s,1) call dgemv('T',p,n,mone,a,p,y,1,one,s,1) do23006 i=1,n d(i)=one if(dabs(s(i)) .lt. eps)then z(i) = dmax1( s(i),zero) + eps w(i) = dmax1(-s(i),zero) + eps else z(i) = dmax1( s(i),zero) w(i) = dmax1(-s(i),zero) endif s(i)=u(i)-x(i) 23006 continue 23007 continue cx = ddot(n,c,1,x,1) by = ddot(p,b,1,y,1) uw = dasum(n,w,1) uz = dasum(n,z,1) rdg = (cx - by + uw) 23010 if(rdg .gt. eps)then nit(1)=nit(1)+1 do23012 i =1,n d(i) = one/(z(i)/x(i) + w(i)/s(i)) ds(i)=z(i)-w(i) dx(i)=d(i)*ds(i) 23012 continue 23013 continue call dgemv('N',p,n,one,a,p,dx,1,zero,dy,1) call dcopy(p,dy,1,rhs,1) call stepy(n,p,a,d,dy,ada,info) if(info .ne. 0)then return endif call dgemv('T',p,n,one,a,p,dy,1,mone,ds,1) deltap=big deltad=big do23016 i=1,n dx(i)=d(i)*ds(i) ds(i)=-dx(i) dz(i)=-z(i)*(dx(i)/x(i) + one) dw(i)=w(i)*(dx(i)/s(i) - one) dxdz(i)=dx(i)*dz(i) dsdw(i)=ds(i)*dw(i) if(dx(i).lt.0)then deltap=dmin1(deltap,-x(i)/dx(i)) endif if(ds(i).lt.0)then deltap=dmin1(deltap,-s(i)/ds(i)) endif if(dz(i).lt.0)then deltad=dmin1(deltad,-z(i)/dz(i)) endif if(dw(i).lt.0)then deltad=dmin1(deltad,-w(i)/dw(i)) endif 23016 continue 23017 continue deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) if(deltap*deltad.lt.one)then nit(2)=nit(2)+1 acomp=ddot(n,x,1,z,1)+ddot(n,s,1,w,1) g=acomp+deltap*ddot(n,dx,1,z,1)+ deltad*ddot(n,dz,1,x,1)+ deltap*d *eltad*ddot(n,dz,1,dx,1)+ deltap*ddot(n,ds,1,w,1)+ deltad*ddot(n,dw *,1,s,1)+ deltap*deltad*ddot(n,ds,1,dw,1) mu=acomp/dble(2*n) mua=g/dble(2*n) mu=mu*(mua/mu)**3 do23028 i=1,n dz(i)=d(i)*(mu*(1/s(i)-1/x(i))+ dx(i)*dz(i)/x(i)-ds(i)*dw(i)/s(i)) 23028 continue 23029 continue call dswap(p,rhs,1,dy,1) call dgemv('N',p,n,one,a,p,dz,1,one,dy,1) call dpotrs('U',p,1,ada,p,dy,p,info) call daxpy(p,mone,dy,1,rhs,1) call dgemv('T',p,n,one,a,p,rhs,1,zero,dw,1) deltap=big deltad=big do23030 i=1,n dx(i)=dx(i)-dz(i)-d(i)*dw(i) ds(i)=-dx(i) dz(i)=mu/x(i) - z(i)*dx(i)/x(i) - z(i) - dxdz(i)/x(i) dw(i)=mu/s(i) - w(i)*ds(i)/s(i) - w(i) - dsdw(i)/s(i) if(dx(i).lt.0)then deltap=dmin1(deltap,-x(i)/dx(i)) else deltap=dmin1(deltap,-s(i)/ds(i)) endif if(dz(i).lt.0)then deltad=dmin1(deltad,-z(i)/dz(i)) endif if(dw(i).lt.0)then deltad=dmin1(deltad,-w(i)/dw(i)) endif 23030 continue 23031 continue deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) endif call daxpy(n,deltap,dx,1,x,1) call daxpy(n,deltap,ds,1,s,1) call daxpy(p,deltad,dy,1,y,1) call daxpy(n,deltad,dz,1,z,1) call daxpy(n,deltad,dw,1,w,1) cx=ddot(n,c,1,x,1) by=ddot(p,b,1,y,1) uw = dasum(n,w,1) uz = dasum(n,z,1) rdg=(cx-by+uw) goto 23010 endif 23011 continue call daxpy(n,mone,w,1,z,1) call dswap(n,z,1,x,1) return end quantreg/src/srqfn.f0000644000176200001440000003244014714154417014202 0ustar liggesusersc 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 subroutine srqfn(n,m,nnza, a,ja,ia, ao,jao,iao, nnzdmax, d,jd,id, ! 13 & dsub,jdsub,nnzemax, e,je,ie,nsubmax,lindx,xlindx, ! 22 & nnzlmax,lnz,xlnz, iw,iwmax,iwork, xsuper,tmpmax, ! 30 & tmpvec,wwm,wwn, cachsz,level, x,s,u,c, y,b, ! 41 & sm_tn_Lrg, ierr,maxit, timewd) ! 45 integer nnza,m,n,nnzdmax,nnzemax,iwmax, & nnzlmax,nsubmax,cachsz,level,tmpmax,ierr,maxit, & ja(nnza),jao(nnza),jdsub(nnzemax+1),jd(nnzdmax), & ia(n+1),iao(m+1),id(m+1),lindx(nsubmax),xlindx(m+1), & iw(m,5),xlnz(m+1),iwork(iwmax),xsuper(m+1),je(nnzemax), & ie(m+1) double precision sm_tn_Lrg(3), ! = c(small, tiny, Large) & a(nnza),ao(nnza),dsub(nnzemax+1),d(nnzdmax), & lnz(nnzlmax),c(n),y(m),wwm(m,3),tmpvec(tmpmax), & wwn(n,14),x(n),s(n),u(n),e(nnzemax),b(m) double precision timewd(7) call slpfn(n,m,nnza,a,ja,ia,ao,jao,iao,nnzdmax,d,jd,id, & dsub,jdsub,nsubmax,lindx,xlindx,nnzlmax,lnz, & xlnz,iw(1,1),iw(1,2),iwmax,iwork,iw(1,3),iw(1,4), & xsuper,iw(1,5),tmpmax,tmpvec,wwm(1,2),cachsz, & level,x,s,u,c,y,b,wwn(1,1),wwn(1,2),wwn(1,3), & wwn(1,4),nnzemax,e,je,ie,wwm(1,3),wwn(1,5),wwn(1,6), & wwn(1,7),wwn(1,8),wwn(1,9),wwn(1,10),wwn(1,11), & wwn(1,12),wwn(1,13),wwn(1,14),wwm(1,1), sm_tn_Lrg(1), & ierr,maxit, timewd, sm_tn_Lrg(2), sm_tn_Lrg(3)) return end subroutine slpfn(n,m,nnza,a,ja,ia,ao,jao,iao,nnzdmax,d,jd,id, & dsub,jdsub,nsubmax,lindx,xlindx,nnzlmax,lnz, & xlnz,invp,perm,iwmax,iwork,colcnt,snode,xsuper, & split,tmpmax,tmpvec,newrhs,cachsz,level,x,s,u, & c,y,b,r,z,w,q,nnzemax,e,je,ie,dy,dx,ds,dz,dw,dxdz, & dsdw, xi,xinv,sinv ,ww1,ww2, small, & ierr,maxit, timewd, tiny, Large) c 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 c Sparse implentation of LMS's interior point method via c Ng-Peyton's sparse Cholesky factorization for sparse c symmetric positive definite c INPUT: c n -- the number of row in the coefficient matrix A' c m -- the number of column in the coefficient matrix A' c nnza -- the number of non-zero elements in A' c a -- an nnza-vector of non-zero values of the design c matrix (A') stored in csr format c ja -- an nnza-vector of indices of the non-zero elements of c the coefficient matrix c ia -- an (n+1)-vector of pointers to the begining of each c row in a and ja c ao -- an nnza-vector of work space for the transpose of c the design matrix stored in csr format or the c design matrix stored in csc format c jao -- an nnza-vector of work space for the indices of the c transpose of the design matrix c iao -- an (n+1)-vector of pointers to the begining of each c column in ao and jao c nnzdmax -- upper bound of the non-zero elements in AA' c d -- an nnzdmax-vector of non-zero values of AQ^(-1) c jd -- an nnzdmax-vector of indices in d c id -- an (m+1)-vector of pointers to the begining of each c row in d and jd c dsub -- the values of e excluding the diagonal elements c jdsub -- the indices to dsub c nsubmax -- upper bound of the dimension of lindx c lindx -- an nsub-vector of interger which contains, in c column major order, the row subscripts of the nonzero c entries in L in a compressed storage format c xlindx -- an (m+1)-vector of integer of pointers for lindx c nnzlmax -- the upper bound of the non-zero entries in c L stored in lnz, including the diagonal entries c lnz -- First contains the non-zero entries of d; later c contains the entries of the Cholesky factor c xlnz -- column pointer for L stored in lnz c invp -- an n-vector of integer of inverse permutation c vector c perm -- an n-vector of integer of permutation vector c iw -- integer work array of length m c iwmax -- upper bound of the general purpose integer c working storage iwork; set at 7*m+3 c iwork -- an iwsiz-vector of integer as work space c colcnt -- array of length m, containing the number of c non-zeros in each column of the factor, including c the diagonal entries c snode -- array of length m for recording supernode c membership c xsuper -- array of length m+1 containing the supernode c partitioning c split -- an m-vector with splitting of supernodes so that c they fit into cache c tmpmax -- upper bound of the dimension of tmpvec c tmpvec -- a tmpmax-vector of temporary vector c newrhs -- extra work vector for right-hand side and c solution c cachsz -- size of the cache (in kilobytes) on the target c machine c level -- level of loop unrolling while performing numerical c factorization c x -- an n-vector, the initial feasible solution in the primal c that corresponds to the design matrix A' c s -- an n-vector c u -- an n-vector of upper bound for x c c -- an n-vector, usually the "negative" of c the pseudo response c y -- an m-vector, the initial dual solution c b -- an n-vector, the rhs of the equality constraint c usually X'a = (1-tau)X'e in the rq setting c r -- an n-vector of residuals c z -- an n-vector of the dual slack variable c w -- an n-vector c q -- an n-vector of work array containing the diagonal c elements of the Q^(-1) matrix c nnzemax -- upper bound of the non-zero elements in AA' c e -- an nnzdmax-vector containing the non-zero entries of c AQ^(-1)A' stored in csr format c je -- an nnzemax-vector of indices for e c ie -- an (m+1)-vector of pointers to the begining of each c row in e and je c dy -- work array c dx -- work array c ds -- work array c dz -- work array c dw -- work array c dxdz -- work array c dsdw -- work arry c xi -- work array c xinv -- work array c sinv -- work array c ww1 -- work array c ww2 -- work array c small -- convergence tolerance for inetrior algorithm c ierr -- error flag c 1 -- insufficient work space in call to extract c 2 -- nnzd > nnzdmax c 3 -- insufficient storage in iwork when calling ordmmd; c 4 -- insufficient storage in iwork when calling sfinit; c 5 -- nnzl > nnzlmax when calling sfinit c 6 -- nsub > nsubmax when calling sfinit c 7 -- insufficient work space in iwork when calling symfct c 8 -- inconsistancy in input when calling symfct c 9 -- tmpsiz > tmpmax when calling bfinit; increase tmpmax c 10 -- nonpositive diagonal encountered when calling c blkfct, the matrix is not positive definite c 11 -- insufficient work storage in tmpvec when calling c blkfct c 12 -- insufficient work storage in iwork when calling c blkfct c maxit -- upper limit of the iteration; on return holds the c number of iterations c timew -- amount of time to execute this subroutine c OUTPUT: c y -- an m-vector of primal solution c 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 integer nnza,m,n,nsuper,nnzdmax,nnzemax,iwmax,nnzd, & nnzlmax,nsubmax,cachsz,level,tmpmax,ierr,maxit,it, & ja(nnza),jao(nnza),jdsub(nnzemax+1),jd(nnzdmax), & ia(n+1),iao(m+1),id(m+1),lindx(nsubmax),xlindx(m+1), & invp(m),perm(m),xlnz(m+1),iwork(iwmax), & colcnt(m),snode(m),xsuper(m+1),split(m),je(nnzemax), & ie(m+1) double precision ddot,gap,zero,one,beta,small,deltap,deltad,mu,g, & a(nnza),ao(nnza),dsub(nnzemax+1),d(nnzdmax), & lnz(nnzlmax),c(n),b(m),newrhs(m),y(m), & tmpvec(tmpmax),r(n),z(n),w(n),x(n),s(n), & u(n),q(n), & e(nnzemax),dy(m),dx(n),ds(n),dz(n),dw(n), & dxdz(n),dsdw(n),xinv(n),sinv(n),xi(n), & ww1(n),ww2(m) double precision timewd(7), tiny,Large real gtimer,timbeg,timend external smxpy1,smxpy2,smxpy4,smxpy8 external mmpy1,mmpy2,mmpy4,mmpy8 parameter (beta=9.995d-1, one=1.0d0, zero=0.0d0) do i = 1,7 timewd(i) = 0.0 enddo it = 0 nnzd = ie(m+1) - 1 nnzdsub = nnzd - m c c Compute the initial gap c gap = ddot(n,z,1,x,1) + ddot(n,w,1,s,1) c c Start iteration c 20 continue if(gap .lt. small .or. it .gt. maxit) goto 30 it = it + 1 c c Create the diagonal matrix Q^(-1) stored in q as an n-vector c and update the residuals in r c do i=1,n q(i) = one/(z(i)/x(i)+w(i)/s(i)) r(i) = z(i) - w(i) enddo c c Obtain AQ^(-1) and store in d,jd,id in csr format c call amudia(m,1,ao,jao,iao,q,d,jd,id) c c Obtain AQ^(-1)A' and store in e,je,ie in csr format c call amub(m,m,1,d,jd,id,a,ja,ia,e,je,ie,nnzemax,iwork,ierr) if (ierr .ne. 0) then ierr = 2 go to 100 endif c c Extract the non-diagonal structure of e,je,ie and store in dsub,jdsub c call extract(e,je,ie,dsub,jdsub,m,nnzemax,nnzemax+1,ierr) if (ierr .ne. 0) then ierr = 1 go to 100 endif c c Compute b - Ax + AQ^(-1)r and store it in c in two steps c First: store Ax in ww2 call amux(m,x,ww2,ao,jao,iao) c c Second: save AQ^(-1)r in c temporarily c call amux(m,r,c,d,jd,id) do i = 1,m c(i) = b(i) - ww2(i) + c(i) enddo c c Compute dy = (AQ^(-1)A')^(-1)(b-Ax+AQ^(-1)r); result returned via dy c c Call chlfct to perform Cholesky's decomposition of e,je,ie c call chlfct(m,xlindx,lindx,invp,perm,iwork,nnzdsub,jdsub, & colcnt,nsuper,snode,xsuper,nnzlmax,nsubmax,xlnz,lnz, & ie,je,e,cachsz,tmpmax,level,tmpvec,split,ierr,it, & timewd, tiny,Large) if (ierr .ne. 0) go to 100 c c Call blkslv: Numerical solution for the new rhs stored in b c do i = 1,m newrhs(i) = c(perm(i)) enddo timbeg = gtimer() call blkslv(nsuper,xsuper,xlindx,lindx,xlnz,lnz,newrhs) timend = gtimer() timewd(7) = timewd(7) + timend - timbeg do i = 1,m dy(i) = newrhs(invp(i)) enddo c c Compute dx = Q^(-1)(A'dy - r), ds = -dx, dz and dw c call amux(n,dy,dx,a,ja,ia) do i=1,n dx(i) = q(i) * (dx(i) - r(i)) ds(i) = -dx(i) dz(i) = -z(i) * (one + dx(i) / x(i)) dw(i) = -w(i) * (one + ds(i) / s(i)) enddo c c Compute the maximum allowable step lengths c call bound(x,dx,s,ds,z,dz,w,dw,n,beta,deltap,deltad) if (deltap * deltad .lt. one) then c c Update mu c mu = ddot(n,z,1,x,1) + ddot(n,w,1,s,1) g = ddot(n,z,1,x,1) + deltap*ddot(n,z,1,dx,1) & + deltad*ddot(n,dz,1,x,1) + deltad*deltap*ddot(n,dz,1,dx,1) & + ddot(n,w,1,s,1) + deltap*ddot(n,w,1,ds,1) & + deltad*ddot(n,dw,1,s,1) + deltad*deltap*ddot(n,dw,1,ds,1) mu = mu*((g/mu)**3)/(2.d0*dble(n)) c c Compute dxdz and dsdw c do i = 1,n dxdz(i) = dx(i)*dz(i) dsdw(i) = ds(i)*dw(i) xinv(i) = one/x(i) sinv(i) = one/s(i) xi(i) = xinv(i) * dxdz(i) - sinv(i) * dsdw(i) & - mu * (xinv(i) - sinv(i)) ww1(i) = q(i) * xi(i) enddo c c Compute AQ^(-1)(dxdz - dsdw - mu(X^(-1) - S^(-1))) and c store it in ww2 temporarily c call amux(m,ww1,ww2,ao,jao,iao) do i = 1,m c(i) = c(i) + ww2(i) enddo c c c Compute dy and return the result in dy c c Call blkslv: Numerical solution for the new rhs stored in b c do i = 1,m newrhs(i) = c(perm(i)) enddo timbeg = gtimer() call blkslv(nsuper,xsuper,xlindx,lindx,xlnz,lnz,newrhs) timend = gtimer() timewd(7) = timewd(7) + timend - timbeg do i = 1,m dy(i) = newrhs(invp(i)) enddo c c Compute dx = Q^(-1)(A'dy - r + mu(X^(-1) - S^(-1)) -dxdz + dsdw), c ds = -dx, dz and dw c call amux(n,dy,dx,a,ja,ia) do i=1,n dx(i) = q(i) * (dx(i) - xi(i) - r(i)) ds(i) = -dx(i) dz(i) = -z(i) + xinv(i)*(mu - z(i)*dx(i) - dxdz(i)) dw(i) = -w(i) + sinv(i)*(mu - w(i)*ds(i) - dsdw(i)) enddo c c Compute the maximum allowable step lengths c call bound(x,dx,s,ds,z,dz,w,dw,n,beta,deltap,deltad) endif c c Take the step c call daxpy(n,deltap,dx,1,x,1) call daxpy(n,deltap,ds,1,s,1) call daxpy(n,deltad,dw,1,w,1) call daxpy(n,deltad,dz,1,z,1) call daxpy(m,deltad,dy,1,y,1) gap = ddot(n,z,1,x,1) + ddot(n,w,1,s,1) goto 20 30 continue 100 continue maxit = it return end quantreg/src/srqfnc.f0000644000176200001440000005051314714213760014343 0ustar liggesusersc 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 subroutine srqfnc(n1,m,nnza1, a1,ja1,ia1, ao1,jao1,iao1, n2,nnza2, ! 11 & a2,ja2,ia2, ao2,jao2,iao2, nnzdmax, d,jd,id, ! 21 & dsub,jdsub, nnzemax, e,je,ie, nnzgmax, g,jg,ig, ! 31 & nnzhmax, h,jh,ih, nsubmax, lindx,xlindx,nnzlmax, ! 39 & lnz,xlnz, iw,iwmax,iwork, xsuper, tmpmax,tmpvec, ! 47 & maxn1n2, ww1,wwm,wwn1,wwn2, cachsz, level,x1,x2, ! 56 & s,u,c1,c2, sm_tn_Lrg, y, ierr,maxit, timewd) ! 65 ( = MAX_ARGS !) integer nnza1,nnza2,m,n1,n2,nnzdmax,nnzemax,nnzgmax,nnzhmax,iwmax, & nnzlmax,nsubmax,cachsz,level,tmpmax,ierr,maxit,maxn1n2, & ja1(nnza1),jao1(nnza1),ja2(nnza2),jao2(nnza2), & jdsub(nnzhmax+1),jd(nnzdmax),ia1(n1+1),iao1(m+1), & ia2(n2+1),iao2(m+1),id(m+1),lindx(nsubmax),xlindx(m+1), & iw(m,5),xlnz(m+1),iwork(iwmax),xsuper(m+1),je(nnzemax), & ie(m+1),jg(nnzgmax),ig(m+1),jh(nnzhmax),ih(m+1) double precision sm_tn_Lrg(3), ! := c(small, tiny, Large) & a1(nnza1),ao1(nnza1),a2(nnza2),ao2(nnza2), & dsub(nnzhmax+1),d(nnzdmax),g(nnzgmax), & h(nnzhmax),lnz(nnzlmax),c1(n1),c2(n2),y(m), & ww1(maxn1n2),wwm(m,6),tmpvec(tmpmax), & wwn1(n1,10),wwn2(n2,7),x1(n1),x2(n2),s(n1), & u(n1),e(nnzemax) double precision timewd(7) parameter (beta=9.995d-1, one=1.0d0, zero=0.0d0) call slpfnc(n1,m,nnza1,a1,ja1,ia1,ao1,jao1,iao1,n2,nnza2, & a2,ja2,ia2,ao2,jao2,iao2,nnzdmax,d,jd,id,dsub, & jdsub,nsubmax,lindx,xlindx,nnzlmax,lnz,xlnz,iw(1,1), & iw(1,2),iwmax,iwork,iw(1,3),iw(1,4),xsuper,iw(1,5), & tmpmax,tmpvec,wwm(1,2),wwm(1,3),cachsz,level,x1,x2,s,u, & c1,c2,y,wwm(1,1),wwn2(1,1),wwn1(1,1), & wwn2(1,2),wwn1(1,2),wwn1(1,3),wwn2(1,3),nnzemax,e,je, & ie,nnzgmax,g,jg,ig,nnzhmax,h,jh,ih,wwm(1,4),wwn1(1,4), & wwn2(1,4),wwn1(1,5),wwn1(1,6),wwn2(1,5),wwn1(1,7), & wwn1(1,8),wwn2(1,6),wwn1(1,9),wwn1(1,10),wwn2(1,7), & maxn1n2,ww1,wwm(1,5),wwm(1,6), sm_tn_Lrg(1), ierr,maxit, & timewd, sm_tn_Lrg(2), sm_tn_Lrg(3)) return end c23456789012345678901234567890123456789012345678901234567890123456789012 subroutine slpfnc(n1,m,nnza1,a1,ja1,ia1,ao1,jao1,iao1,n2,nnza2, & a2,ja2,ia2,ao2,jao2,iao2,nnzdmax,d,jd,id,dsub, & jdsub,nsubmax,lindx,xlindx,nnzlmax,lnz,xlnz,invp, & perm,iwmax,iwork,colcnt,snode,xsuper,split, & tmpmax,tmpvec,rhs,newrhs,cachsz,level,x1,x2,s,u, & c1,c2,y,b,r2,z1, & z2,w,q1,q2,nnzemax,e,je, & ie,nnzgmax,g,jg,ig,nnzhmax,h,jh,ih,dy,dx1, & dx2,ds,dz1,dz2,dw, & dxdz1,dxdz2,dsdw,xi1,xi2, & maxn1n2, ww1,ww2,ww3, small, ierr,maxit, timewd, & tiny, Large) c 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 c Sparse implentation of LMS's interior point method via c Ng-Peyton's sparse Cholesky factorization for sparse c symmetric positive definite c INPUT: c n1 -- the number of row in the coefficient matrix A1' c m -- the number of column in the coefficient matrix A1' c nnza1 -- the number of non-zero elements in A' c a1 -- an nnza1-vector of non-zero values of the design c matrix (A1') stored in csr format c ja1 -- an nnza1-vector of indices of the non-zero elements of c the coefficient matrix c ia1 -- an (n1+1)-vector of pointers to the begining of each c row in a1 and ja1 c ao1 -- an nnza1-vector of work space for the transpose of c the design matrix stored in csr format or the c design matrix stored in csc format c jao1 -- an nnza1-vector of work space for the indices of the c transpose of the design matrix c iao1 -- an (n1+1)-vector of pointers to the begining of each c column in ao1 and jao1 c n2 -- the number of row in the constraint matrix A2' c nnza2 -- the number of non-zero elements in A2' c a2 -- an nnza2-vector of non-zero values of the contraint c matrix (A2') stored in csr format c ja2 -- an nnza2-vector of indices of the non-zero elements of c the constraint matrix c ia2 -- an (n2+1)-vector of pointers to the begining of each c row in a2 and ja2 c ao2 -- an nnza2-vector of work space for the transpose of c the constraint matrix stored in csr format or the c constraint matrix stored in csc format c jao2 -- an nnza2-vector of work space for the indices of the c transpose of the constraint matrix c iao2 -- an (n2+1)-vector of pointers to the begining of each c column in ao2 and jao2 c nnzdmax -- upper bound of the non-zero elements in A1A1' c d -- an nnzdmax-vector of non-zero values used to store c the transpose of the design matrix multiplied by the design c matrix (A1A1') stored in csr format; c also used to store A1Q1^(-1) and A2Q2^(-1) later c jd -- an nnzdmax-vector of indices in d c id -- an (m+1)-vector of pointers to the begining of each c row in d and jd c dsub -- the values of d excluding the diagonal elements c jdsub -- the indices to dsub c nsubmax -- upper bound of the dimension of lindx c lindx -- an nsub-vector of interger which contains, in c column major order, the row subscripts of the nonzero c entries in L in a compressed storage format c xlindx -- an (m+1)-vector of integer of pointers for lindx c nnzlmax -- the upper bound of the non-zero entries in c L stored in lnz, including the diagonal entries c lnz -- First contains the non-zero entries of d; later c contains the entries of the Cholesky factor c xlnz -- column pointer for L stored in lnz c invp -- an n1-vector of integer of inverse permutation c vector c perm -- an n1-vector of integer of permutation vector c iw -- integer work array of length m c iwmax -- upper bound of the general purpose integer c working storage iwork; set at 7*m+3 c iwork -- an iwsiz-vector of integer as work space c colcnt -- array of length m, containing the number of c non-zeros in each column of the factor, including c the diagonal entries c snode -- array of length m for recording supernode c membership c xsuper -- array of length m+1 containing the supernode c partitioning c split -- an m-vector with splitting of supernodes so that c they fit into cache c tmpmax -- upper bound of the dimension of tmpvec c tmpvec -- a tmpmax-vector of temporary vector c rhs -- m-vector to store the rhs c newrhs -- extra work vector for right-hand side and c solution c cachsz -- size of the cache (in kilobytes) on the target c machine c level -- level of loop unrolling while performing numerical c factorization c x1 -- an n1-vector, the initial feasible solution for the primal c solution that corresponds to the design matrix A1' c x2 -- an n2-vector, the initial feasible solution for the primal c solution that corresponds to the constraint matrix A2' c s -- an n1-vector c u -- an n1-vector of the upper bound for x1 c c1 -- an n1-vector in the primal; negative response in the c regression quantile setting c c2 -- an n2-vector, the negative rhs of the inequality constraint c y -- an m-vector, the initial dual solution c b -- an n1-vector, usualy the rhs of the equality constraint c X'a = (1-tau)X'e in the rq setting c r2 -- an n2-vector of residuals c z1 -- an n1-vector of the dual slack variable c z2 -- an n2-vector c w -- an n-vector c q1 -- an n1-vector of work array containing the diagonal c elements of the Q1^(-1) matrix c q2 -- an n2-vector of work array containing the diagonal c elements of the Q2^(-1) matrix c e -- an nnzdmax-vector containing the non-zero entries of c A1Q1^(-1)A1' stored in csr format c je -- an nnzdmax-vector of indices for e c ie -- an (m+1)-vector of pointers to the begining of each c row in e and je c nnzgmax -- upper bound of the non-zero elements in g,jg c g -- an nnzgmax-vector containing the non-zero entries of c A2Q2^(-1)A2' stored in csr format c jg -- an nnzgmax-vector of indices for g c ig -- an (m+1)-vector of pointers to the begining of each c row in g and jg c nnzhmax -- upper bound of the non-zero elements in h,jh c h -- an nnzhmax-vector containing the non-zero entries of c AQ^(-1)A' stored in csr format c jh -- an nnzhmax-vector of indices for h c ih -- an (m+1)-vector of pointers to the begining of each c row in h and jh c dy -- an m-vector of work array c dx1 -- an n1-vector of work array c dx2 -- an n2-vector of work array c ds -- an n1-vector of work array c dz1 -- an n1-vector of work array c dz2 -- an n2-vector of work array c dw -- an n1-vector of work array c dxdz1 -- an n1-vector of work array c dxdz2 -- an n2-vector of work array c dsdw -- an n1-vector of work arry c xi1 -- an n1-vector of work array c xi2 -- an n2-vector of work array c xinv1 -- an n1-vector of work array c xinv2 -- an n2-vector of work array c sinv -- work array c maxn1n2 -- max(n1,n2) c ww1 -- an maxn1n2-vector of work array c ww2 -- an m-vector of work array c ww3 -- an m-vector of work array c small -- convergence tolerance for inetrior algorithm c ierr -- error flag c 1 -- insufficient storage when calling extract; c 3 -- insufficient storage in iwork when calling ordmmd; c 4 -- insufficient storage in iwork when calling sfinit; c 5 -- nnzl > nnzlmax when calling sfinit c 6 -- nsub > nsubmax when calling sfinit c 7 -- insufficient work space in iwork when calling symfct c 8 -- inconsistancy in input when calling symfct c 9 -- tmpsiz > tmpmax when calling symfct; increase tmpmax c 10 -- nonpositive diagonal encountered when calling c blkfct c 11 -- insufficient work storage in tmpvec when calling c blkfct c 12 -- insufficient work storage in iwork when calling c blkfct c 13 -- nnzd > nnzdmax in e,je when calling amub c 14 -- nnzd > nnzdmax in g,jg when calling amub c 15 -- nnzd > nnzdmax in h,jh when calling aplb c maxit -- upper limit of the iteration; on return holds the c number of iterations c timewd -- amount of time to execute this subroutine c tiny -- tiny number; values below tiny * max(diag) are replaced by 'Large'; c was 10^{-30} hardcoded c Large -- Large number ("Infinite") to replace tiny diagonal entries in Cholesky; c was 10^{128} c OUTPUT: c y -- an m-vector of primal solution c 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 integer nnza1,nnza2,m,n1,n2,maxn1n2,nsuper,nnzdmax,nnzemax, & nnzgmax, & nnzhmax,iwmax,nnzlmax,nsubmax,cachsz,level,tmpmax,ierr, & maxit,it,nnzdsub,nnzd, & ja1(nnza1),jao1(nnza1),ja2(nnza2),jao2(nnza2), & jdsub(nnzhmax+1),jd(nnzdmax),ia1(n1+1),iao1(m+1), & ia2(n2+1),iao2(m+1),id(m+1),lindx(nsubmax),xlindx(m+1), & invp(m),perm(m),xlnz(m+1),iwork(iwmax),colcnt(m), & snode(m),xsuper(m+1),split(m),je(nnzemax),ie(m+1), & jg(nnzgmax),ig(m+1),jh(nnzhmax),ih(m+1) double precision ddot,gap,zero,one,beta,small,deltap,deltad,mu,g1, & a1(nnza1),ao1(nnza1),a2(nnza2),ao2(nnza2), & dsub(nnzhmax+1),d(nnzdmax),lnz(nnzlmax),c1(n1), & c2(n2),b(m),rhs(m),newrhs(m),y(m),tmpvec(tmpmax), & r2(n2),z1(n1),z2(n2),w(n1),x1(n1), & x2(n2),s(n1),u(n1),q1(n1),q2(n2),e(nnzemax), & g(nnzgmax),h(nnzhmax),dy(m),dx1(n1),dx2(n2), & ds(n1),dz1(n1),dz2(n2),dw(n1),dxdz1(n1), & dxdz2(n2),dsdw(n1), & xi1(n1),xi2(n2),ww1(maxn1n2),ww2(m),ww3(m) double precision timewd(7), tiny,Large real gtimer,timbeg,timend external smxpy1,smxpy2,smxpy4,smxpy8 external mmpy1,mmpy2,mmpy4,mmpy8 parameter (beta=9.995d-1, one=1.0d0, zero=0.0d0) do i = 1,7 timewd(i) = 0.0 enddo it = 0 c c Compute the initial gap c gap = ddot(n1,z1,1,x1,1) + ddot(n2,z2,1,x2,1) + ddot(n1,w,1,s,1) c c Start iteration c 20 continue if(gap .lt. small .or. it .gt. maxit) goto 30 it = it + 1 c c Create the diagonal matrix Q1^(-1) stored in q1 as an n1-vector, c the diagonal matrix Q2^(-1) stored in q2 as an n2-vector, c and store the residuals in r1 in ds, and r3 in dy temporarily, c and r2 in r2 permanently c c Call amux to obtain A1x1 and store the value in ww2 c call amux(m,x1,ww2,ao1,jao1,iao1) c c Call amux to obtain A2x2 and store the value in ww3 c call amux(m,x2,ww3,ao2,jao2,iao2) c c Store A2'y temporarily in r2 c call amux(n2,y,r2,a2,ja2,ia2) do i=1,n1 q1(i) = one/(z1(i)/x1(i)+w(i)/s(i)) ds(i) = z1(i) - w(i) enddo do i=1,n2 q2(i) = x2(i)/z2(i) r2(i) = c2(i)-r2(i) enddo do i=1,m dy(i) = b(i) - ww2(i) - ww3(i) enddo c c Obtain AQA = A1Q1^(-1)A1' + A2Q2^(-1)A2' in 5 steps c c Step1: Obtain A1Q1^(-1) and store the values in d,jd,id in csr format c Also compute A1Q1^(-1)r1 and store the values in ww2 to be used c to generate r3; c Step2: Compute A1Q1^(-1)A1' and store the values in e,je,ie c Step3: Obtain A2Q2^(-1) and store the values in d,jd,id in csr format c Also compute A2Q2^(-1)r2 and store the values in in ww3 to c be used to generate r3; c Step4: Compute A2Q2^(-1)A2' and store the value in g,jg,ig c Step5: Compute AQA and store the values in h,jh,ih c c Step 1 c call amudia(m,1,ao1,jao1,iao1,q1,d,jd,id) call amux(m,ds,ww2,d,jd,id) c c Step 2 c call amub(m,m,1,d,jd,id,a1,ja1,ia1,e,je,ie,nnzemax,iwork,ierr) if (ierr .ne. 0) then ierr = 13 go to 100 endif c c Step 3 c call amudia(m,1,ao2,jao2,iao2,q2,d,jd,id) call amux(m,r2,ww3,d,jd,id) c c Step 4 c call amub(m,m,1,d,jd,id,a2,ja2,ia2,g,jg,ig,nnzgmax,iwork,ierr) if (ierr .ne. 0) then ierr = 14 go to 100 endif c c Step 5 c call aplb(m,m,1,e,je,ie,g,jg,ig,h,jh,ih,nnzhmax,iwork,ierr) if (ierr .ne. 0) then ierr = 15 go to 100 endif c c Generate rhs = r3 + A1Q1^(-1)r1 + A2Q2^(-1)r2 and store in rhs c do i = 1,m rhs(i) = dy(i) + ww2(i) + ww3(i) enddo c c Extract the non-diagonal structure of h,jh,ih and store in dsub,jdsub c nnzd = ih(m+1) - 1 nnzdsub = nnzd - m call extract(h,jh,ih,dsub,jdsub,m,nnzhmax,nnzhmax+1,ierr) if (ierr .ne. 0) then ierr = 1 go to 100 endif c c Compute dy = (AQ^(-1)A')^(-1)rhs; result returned via dy c c Call chlfct to perform Cholesky's decomposition of h,jh,ih c call chlfct(m,xlindx,lindx,invp,perm,iwork,nnzdsub,jdsub, & colcnt,nsuper,snode,xsuper,nnzlmax,nsubmax,xlnz,lnz, & ih,jh,h,cachsz,tmpmax,level,tmpvec,split,ierr,it, & timewd, tiny,Large) if (ierr .ne. 0) go to 100 c c Call blkslv: Numerical solution for the new rhs stored in rhs c do i = 1,m newrhs(i) = rhs(perm(i)) enddo timbeg = gtimer() call blkslv(nsuper,xsuper,xlindx,lindx,xlnz,lnz,newrhs) timend = gtimer() timewd(7) = timewd(7) + timend - timbeg do i = 1,m dy(i) = newrhs(invp(i)) enddo c c Compute dx1 = Q1^(-1)(A1'dy - r1), ds = -dx1, dz1, dz2 and dw c call amux(n1,dy,dx1,a1,ja1,ia1) call amux(n2,dy,dx2,a2,ja2,ia2) do i = 1,n1 dx1(i) = q1(i) * (dx1(i) - ds(i)) ds(i) = -dx1(i) dz1(i) = -z1(i) * (one + dx1(i) / x1(i)) dw(i) = -w(i) * (one + ds(i) / s(i)) enddo do i = 1,n2 dx2(i) = q2(i) * (dx2(i) - r2(i)) dz2(i) = -z2(i) * (one + dx2(i) / x2(i)) enddo c c Compute the maximum allowable step lengths c call boundc(x1,dx1,x2,dx2,s,ds,z1,dz1,z2,dz2,w,dw,n1,n2, & beta,deltap,deltad) if (deltap * deltad .lt. one) then c c Update mu c mu = ddot(n1,z1,1,x1,1) + ddot(n2,z2,1,x2,1) & + ddot(n1,w,1,s,1) g1 = mu + deltap*ddot(n1,z1,1,dx1,1) & + deltad*ddot(n1,dz1,1,x1,1) & + deltad*deltap*ddot(n1,dz1,1,dx1,1) & + deltap*ddot(n2,z2,1,dx2,1) & + deltad*ddot(n2,dz2,1,x2,1) & + deltad*deltap*ddot(n2,dz2,1,dx2,1) & + deltap*ddot(n1,w,1,ds,1) & + deltad*ddot(n1,dw,1,s,1) & + deltad*deltap*ddot(n1,dw,1,ds,1) mu = mu*((g1/mu)**3)/(2.d0*dble(n1)+dble(n2)) c c Compute dx1dz1, dx2dz2 and dsdw c do i = 1,n1 dxdz1(i) = dx1(i)*dz1(i) dsdw(i) = ds(i)*dw(i) xi1(i) = dxdz1(i)/x1(i) - dsdw(i)/s(i) & - mu * (one/x1(i) - one/s(i)) ww1(i) = q1(i) * xi1(i) enddo c c Compute A1Q1^(-1)(X1^(-1)*dx1dz1 - S^(-1)*dsdw - mu(X1^(-1) - S^(-1))) and c store it in ww2 temporarily c call amux(m,ww1,ww2,ao1,jao1,iao1) do i = 1,n2 dxdz2(i) = dx2(i)*dz2(i) xi2(i) = (dxdz2(i) - mu)/x2(i) ww1(i) = q2(i) * xi2(i) enddo c c Compute A2Q2^(-1)(X2^(-1)*dx2dz2 - mu X2^(-1)) and store it in ww3 c temporarily c call amux(m,ww1,ww3,ao2,jao2,iao2) do i = 1,m rhs(i) = rhs(i) + ww2(i) + ww3(i) enddo c c c Compute (AQ^(-1)A')^(-1)rhs and return the result in dy c c Call blkslv: Numerical solution for the new rhs stored in rhs c do i = 1,m newrhs(i) = rhs(perm(i)) enddo timbeg = gtimer() call blkslv(nsuper,xsuper,xlindx,lindx,xlnz,lnz,newrhs) timend = gtimer() timewd(7) = timewd(7) + timend - timbeg do i = 1,m dy(i) = newrhs(invp(i)) enddo c c Compute dx1=Q1^(-1)(A1'dy-X1^(-1)*dx1dz1-S^(-1)*dsdw c -mu*(X1^(-1)-S^(-1))-r1), ds = -dx1, dz1, dz2 and dw c call amux(n1,dy,dx1,a1,ja1,ia1) call amux(n2,dy,dx2,a2,ja2,ia2) do i = 1,n1 dx1(i) = q1(i) * (dx1(i) - xi1(i) - z1(i) + w(i)) ds(i) = -dx1(i) dz1(i) = -z1(i) + (mu - z1(i)*dx1(i) & - dxdz1(i))/x1(i) dw(i) = -w(i) + (mu - w(i)*ds(i) - dsdw(i))/s(i) enddo do i = 1,n2 dx2(i) = q2(i) * (dx2(i) - xi2(i) - r2(i)) dz2(i) = -z2(i) + (mu - z2(i)*dx2(i) - & dxdz2(i))/x2(i) enddo c c Compute the maximum allowable step lengths c call boundc(x1,dx1,x2,dx2,s,ds,z1,dz1,z2,dz2,w,dw,n1,n2, & beta,deltap,deltad) endif c c Take the step c call daxpy(n1,deltap,dx1,1,x1,1) call daxpy(n2,deltap,dx2,1,x2,1) call daxpy(n1,deltap,ds,1,s,1) call daxpy(n1,deltad,dw,1,w,1) call daxpy(n1,deltad,dz1,1,z1,1) call daxpy(n2,deltad,dz2,1,z2,1) call daxpy(m,deltad,dy,1,y,1) gap = ddot(n1,z1,1,x1,1) + ddot(n2,z2,1,x2,1) + & ddot(n1,w,1,s,1) goto 20 30 continue 100 continue maxit = it return end quantreg/src/bound.f0000644000176200001440000000174213522271353014154 0ustar liggesusersc 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 c c Function to obtain the step length c c 1 2 3 4 5 6 7 c23456789012345678901234567890123456789012345678901234567890123456789012 c subroutine bound(x,dx,s,ds,z,dz,w,dw,n,beta,deltap,deltad) c integer n double precision x(n),dx(n),s(n),ds(n),z(n),dz(n),w(n),dw(n) double precision deltap,deltad,dmin1,big,one,beta parameter (big = 1.0d20, one = 1.0d0) deltap = big deltad = big do i=1,n if(dx(i) .lt. 0) deltap = dmin1(deltap, -x(i)/dx(i)) if(ds(i) .lt. 0) deltap = dmin1(deltap, -s(i)/ds(i)) if(dz(i) .lt. 0) deltad = dmin1(deltad, -z(i)/dz(i)) if(dw(i) .lt. 0) deltad = dmin1(deltad, -w(i)/dw(i)) enddo deltap = dmin1(beta*deltap,one) deltad = dmin1(beta*deltad,one) return end quantreg/src/rq0.f0000644000176200001440000001404313522271353013545 0ustar liggesusers SUBROUTINE RQ0(M,N,M5,N2,A,B,T,TOLER,IFT,X,E,S,WA,WB) C C Modified to remove SOL and related vars -- only good for single tau C M Number of Observations C N Number of Parameters C M5 = M+5 row dimension for WA C N2 = N+2 col dimension for WA C A is the X matrix C B is the y vector C T, the desired quantile C TOLER, smallest detectable |x-y|/x machine precision to the 2/3 C IFT exit code: C 0-ok C else dimensions inconsistent or T not in (0,1) C X the parameter estimate betahat C E is the residual vector C S is an integer work array (M) C WA is a real work array (M5,N2) C WB is another real work array (M) C Utilization: If you just want a solution at a single quantile you C The algorithm is a slightly modified version of Algorithm AS 229 C described in Koenker and D'Orey, "Computing Regression Quantiles, C Applied Statistics, pp. 383-393. C IMPLICIT DOUBLE PRECISION(A-H,O-Z) INTEGER I,J,K,KL,KOUNT,KR,M,M1,M2,M3,M4,M5,IFT INTEGER N,N1,N2,OUT,S(M) LOGICAL STAGE,TEST,INIT,IEND DOUBLE PRECISION MIN,MAX DOUBLE PRECISION B(M),A(M,N),X(N),WA(M5,N2),WB(M),E(M) DATA BIG/1.D37/ DATA ZERO/0.00D0/ DATA HALF/0.50D0/ DATA ONE/1.00D0/ DATA TWO/2.00D0/ C C CHECK DIMENSION PARAMETERS C IFT=0 IF(N2 .NE. N+2)IFT = 4 IF(M.LE.ZERO.OR.N.LE.ZERO)IFT = 5 IF(IFT .GT. TWO)RETURN C C INITIALIZATION C M1 = M+1 N1 = N+1 M2 = M+2 M3 = M+3 M4 = M+4 M5 = M+5 DO 2 I=1,M WB(I)=B(I) DO 1 J=1,N WA(I,J)=A(I,J) 1 CONTINUE 2 CONTINUE WA(M2,N1)=ZERO DIF = ZERO IEND = .TRUE. IF(T .GE. ZERO .AND. T .LE. ONE)GOTO 3 IFT = 6 RETURN 3 CONTINUE INIT = .FALSE. KOUNT = 0 DO 9 K=1,N WA(M5,K) = ZERO DO 8 I=1,M WA(M5,K) = WA(M5,K) + WA(I,K) 8 CONTINUE WA(M5,K) = WA(M5,K)/FLOAT(M) 9 CONTINUE DO 10 J=1,N WA(M4,J) = J X(J) = ZERO 10 CONTINUE DO 40 I=1,M WA(I,N2) = N+I WA(I,N1) = WB(I) IF(WB(I).GE.ZERO)GOTO 30 DO 20 J=1,N2 WA(I,J) = -WA(I,J) 20 CONTINUE 30 E(I) = ZERO 40 CONTINUE DO 42 J=1,N WA(M2,J) = ZERO WA(M3,J) = ZERO DO 41 I=1,M AUX = SIGN(ONE,WA(M4,J)) * WA(I,J) WA(M2,J) = WA(M2,J) + AUX * (ONE - SIGN(ONE,WA(I,N2))) WA(M3,J) = WA(M3,J) + AUX * SIGN(ONE,WA(I,N2)) 41 CONTINUE WA(M3,J) = TWO * WA(M3,J) 42 CONTINUE GOTO 48 43 CONTINUE DO 44 I=1,M S(I) = ZERO 44 CONTINUE DO 45 J=1,N X(J) = ZERO 45 CONTINUE C C COMPUTE NEXT T C SMAX = TWO DO 47 J=1,N B1 = WA(M3,J) A1 = (-TWO - WA(M2,J))/B1 B1 = -WA(M2,J)/B1 IF(A1 .LT. T)GOTO 46 IF(A1 .GE. SMAX) GOTO 46 SMAX = A1 DIF = (B1 - A1 )/TWO 46 IF(B1 .LE. T) GOTO 47 IF(B1 .GE. SMAX)GOTO 47 SMAX = B1 DIF = (B1 - A1)/TWO 47 CONTINUE TNT = SMAX + TOLER * (ONE + ABS(DIF)) IF(TNT .GE. T1 + TOLER)IEND = .TRUE. T = TNT IF(IEND)T = T1 48 CONTINUE C C COMPUTE NEW MARGINAL COSTS C DO 49 J=1,N WA(M1,J) = WA(M2,J) + WA(M3,J) * T 49 CONTINUE IF(INIT) GOTO 265 C C STAGE 1 C C DETERMINE THE VECTOR TO ENTER THE BASIS C STAGE=.TRUE. KR=1 KL=1 70 MAX=-ONE DO 80 J=KR,N IF(ABS(WA(M4,J)).GT.N)GOTO 80 D=ABS(WA(M1,J)) IF(D.LE.MAX)GOTO 80 MAX=D IN=J 80 CONTINUE IF(WA(M1,IN).GE.ZERO)GOTO 100 DO 90 I=1,M4 WA(I,IN)=-WA(I,IN) 90 CONTINUE C C DETERMINE THE VECTOR TO LEAVE THE BASIS C 100 K=0 DO 110 I=KL,M D=WA(I,IN) IF(D.LE.TOLER)GOTO 110 K=K+1 WB(K)=WA(I,N1)/D S(K)=I TEST=.TRUE. 110 CONTINUE 120 IF(K.GT.0)GOTO 130 TEST=.FALSE. GOTO 150 130 MIN=BIG DO 140 I=1,K IF(WB(I).GE.MIN)GOTO 140 J=I MIN=WB(I) OUT=S(I) 140 CONTINUE WB(J)=WB(K) S(J)=S(K) K=K-1 C C CHECK FOR LINEAR DEPENDENCE IN STAGE 1 C 150 IF(TEST.OR..NOT.STAGE)GOTO 170 DO 160 I=1,M4 D=WA(I,KR) WA(I,KR)=WA(I,IN) WA(I,IN)=D 160 CONTINUE KR=KR+1 GOTO 260 170 IF(TEST)GOTO 180 WA(M2,N1)=TWO GOTO 390 180 PIVOT=WA(OUT,IN) IF(WA(M1,IN)-PIVOT-PIVOT.LE.TOLER)GOTO 200 DO 190 J=KR,N1 D=WA(OUT,J) WA(M1,J)=WA(M1,J)-D-D WA(M2,J)=WA(M2,J)-D-D WA(OUT,J)=-D 190 CONTINUE WA(OUT,N2)=-WA(OUT,N2) GOTO 120 C C PIVOT ON WA(OUT,IN) C 200 DO 210 J=KR,N1 IF(J.EQ.IN)GOTO 210 WA(OUT,J)=WA(OUT,J)/PIVOT 210 CONTINUE DO 230 I=1,M3 IF(I.EQ.OUT)GOTO 230 D=WA(I,IN) DO 220 J=KR,N1 IF(J.EQ.IN)GOTO 220 WA(I,J)=WA(I,J)-D*WA(OUT,J) 220 CONTINUE 230 CONTINUE DO 240 I=1,M3 IF(I.EQ.OUT)GOTO 240 WA(I,IN)=-WA(I,IN)/PIVOT 240 CONTINUE WA(OUT,IN)=ONE/PIVOT D=WA(OUT,N2) WA(OUT,N2)=WA(M4,IN) WA(M4,IN)=D KOUNT=KOUNT+1 IF(.NOT.STAGE)GOTO 270 C C INTERCHANGE ROWS IN STAGE 1 C KL=KL+1 DO 250 J=KR,N2 D=WA(OUT,J) WA(OUT,J)=WA(KOUNT,J) WA(KOUNT,J)=D 250 CONTINUE 260 IF(KOUNT+KR.NE.N1)GOTO 70 C C STAGE 2 C 265 STAGE=.FALSE. C C DETERMINE THE VECTOR TO ENTER THE BASIS C 270 MAX=-BIG DO 290 J=KR,N D=WA(M1,J) IF(D.GE.ZERO)GOTO 280 IF(D.GT.(-TWO))GOTO 290 D=-D-TWO 280 IF(D.LE.MAX)GOTO 290 MAX=D IN=J 290 CONTINUE IF(MAX.LE.TOLER)GOTO 310 IF(WA(M1,IN).GT.ZERO)GOTO 100 DO 300 I=1,M4 WA(I,IN)=-WA(I,IN) 300 CONTINUE WA(M1,IN)=WA(M1,IN)-TWO WA(M2,IN)=WA(M2,IN)-TWO GOTO 100 C C COMPUTE QUANTILES C 310 CONTINUE DO 320 I=1,KL-1 K=WA(I,N2)*SIGN(ONE,WA(I,N2)) X(K) = WA(I,N1) * SIGN(ONE,WA(I,N2)) 320 CONTINUE 390 SUM = ZERO DO 400 I=KL,M K = WA(I,N2) * SIGN(ONE,WA(I,N2)) D = WA(I,N1) * SIGN(ONE,WA(I,N2)) SUM = SUM + D * SIGN(ONE,D) * (HALF + SIGN(ONE,D)*(T-HALF)) K=K-N E(K)=D 400 CONTINUE RETURN END quantreg/src/iswap.f0000644000176200001440000000544214620434050014164 0ustar liggesusers SUBROUTINE ISWAP (N, IX, INCX, IY, INCY) C***AUTHOR Vandevender, W. H., (SNLA) C***DESCRIPTION C C Extended B L A S Subprogram C Description of Parameters C C --Input-- C N number of elements in input vector(s) C IX integer vector with N elements C INCX storage spacing between elements of IX C IY integer vector with N elements C INCY storage spacing between elements of IY C C --Output-- C IX input vector IY (unchanged if N .LE. 0) C IY input vector IX (unchanged if N .LE. 0) C C Interchange integer IX and integer IY. C For I = 0 to N-1, interchange IX(LX+I*INCX) and IY(LY+I*INCY), C where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is C defined in a similar way using INCY. C C***REFERENCES C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T. C Krogh, Basic linear algebra subprograms for Fortran C usage, Algorithm No. 539, Transactions on Mathematical C Software 5, 3 (September 1979), pp. 308-323. C***ROUTINES CALLED (NONE) C***REVISION HISTORY (YYMMDD) C 850601 DATE WRITTEN C 861211 REVISION DATE from Version 3.2 C 891214 Prologue converted to Version 4.0 format. (BAB) C 920310 Corrected definition of LX in DESCRIPTION. (WRB) C 920501 Reformatted the REFERENCES section. (WRB) C***END PROLOGUE ISWAP INTEGER IX(*), IY(*), ITEMP1, ITEMP2, ITEMP3 C***FIRST EXECUTABLE STATEMENT ISWAP IF (N .LE. 0) RETURN IF (INCX .NE. INCY) GO TO 5 C IF (INCX-1) 5,20,60 IF (INCX-1 .LT. 0) THEN GO TO 5 ELSE IF (INCX-1 .GT.0) THEN GO TO 60 ELSE GO TO 20 ENDIF C C Code for unequal or nonpositive increments. C 5 IIX = 1 IIY = 1 IF (INCX .LT. 0) IIX = (1-N)*INCX + 1 IF (INCY .LT. 0) IIY = (1-N)*INCY + 1 DO 10 I = 1,N ITEMP1 = IX(IIX) IX(IIX) = IY(IIY) IY(IIY) = ITEMP1 IIX = IIX + INCX IIY = IIY + INCY 10 CONTINUE RETURN C C Code for both increments equal to 1. C C Clean-up loop so remaining vector length is a multiple of 3. C 20 M = MOD(N,3) IF (M .EQ. 0) GO TO 40 DO 30 I = 1,M ITEMP1 = IX(I) IX(I) = IY(I) IY(I) = ITEMP1 30 CONTINUE IF (N .LT. 3) RETURN 40 MP1 = M + 1 DO 50 I = MP1,N,3 ITEMP1 = IX(I) ITEMP2 = IX(I+1) ITEMP3 = IX(I+2) IX(I) = IY(I) IX(I+1) = IY(I+1) IX(I+2) = IY(I+2) IY(I) = ITEMP1 IY(I+1) = ITEMP2 IY(I+2) = ITEMP3 50 CONTINUE RETURN C C Code for equal, positive, non-unit increments. C 60 NS = N*INCX DO 70 I = 1,NS,INCX ITEMP1 = IX(I) IX(I) = IY(I) IY(I) = ITEMP1 70 CONTINUE RETURN END quantreg/src/akj.f0000644000176200001440000000564113752030125013607 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine akj(x,z,p,iker,dens,psi,score,nx,nz,h,alpha,kappa,xlam *) double precision dens(nz),score(nz),psi(nz),h,kappa double precision z(nz),x(nx),xlam(nx),p(nx),qrange,pi double precision con1,sum,sqsum,xsd,a,fifth,hinv,half double precision xn,xker,dxker,ddxker,fact,xponen,alpha,glog,zero, *one,two parameter( zero = 0.d0) parameter( one = 1.d0) parameter( two = 2.d0) parameter( four = 4.d0) parameter( half = 0.5d0) parameter( fifth = 0.2d0) parameter( pi = 3.141593d0) xn=nx if(iker.eq.0)then con1=one/sqrt(2.0*pi) else if(iker.eq.1)then con1=one/pi endif endif if(h.le.0.)then sum=0. sqsum=0. do23006 i=1,nx sqsum=sqsum+x(i)*x(i)*p(i) sum=sum+x(i)*p(i) 23006 continue 23007 continue xsd=dsqrt(sqsum-sum*sum) sum=zero i=1 23008 if(.not.(i.lt.nx))goto 23010 sum=sum+p(i) if(sum.lt..25)then goto 23009 else qrange=x(i) goto 23010 endif 23009 i=i+1 goto 23008 23010 continue sum=one i=nx 23013 if(.not.(i.gt.0))goto 23015 sum=sum-p(i) if(sum.gt..75)then goto 23014 else qrange=x(i)-qrange goto 23015 endif 23014 i=i-1 goto 23013 23015 continue a=min(xsd,qrange/1.34) h=kappa*a/(xn**fifth) endif hinv=one/h do23018 j=1,nx xker=0. if(iker.eq.0)then do23022 i=1,nx xponen=(x(j)-x(i))*hinv xponen=half*xponen**2 xker=xker+p(i)*exp(-xponen)*hinv 23022 continue 23023 continue else if(iker.eq.1)then do23026 i=1,nx xponen=(x(j)-x(i))*hinv xker=xker+p(i)*hinv/(1+xponen**2) 23026 continue 23027 continue endif endif xlam(j)=con1*xker 23018 continue 23019 continue glog=zero do23028 i=1,nx glog=glog+p(i)*log(xlam(i)) 23028 continue 23029 continue g=exp(glog) ginv=one/g do23030 i=1,nx xlam(i)=hinv/((xlam(i)*ginv)**(-alpha)) 23030 continue 23031 continue do23032 j=1,nz xker=zero dxker=zero ddxker=zero if(iker.eq.0)then do23036 i=1,nx xponen=(z(j)-x(i))*xlam(i) fact=exp(-half*xponen*xponen)*xlam(i) xker=xker+p(i)*fact dxker=dxker-p(i)*fact*xponen*xlam(i) ddxker=ddxker- p(i)*fact*(one - xponen**2)*xlam(i)**2 23036 continue 23037 continue else if(iker.eq.1)then do23040 i=1,nx xponen=(z(j)-x(i))*xlam(i) fact=xlam(i)/(one+xponen**2) xker=xker+p(i)*fact dxker=dxker-p(i)*two*xponen*fact**2 ddxker=ddxker- p(i)*two*(fact**2)*(xlam(i)- four*(xponen**2)*fact) 23040 continue 23041 continue endif endif dens(j)=con1*xker psi(j)=-(dxker/xker) score(j)=(dxker/xker)**2-ddxker/xker 23032 continue 23033 continue return end quantreg/src/frand.c0000644000176200001440000000033413761210555014132 0ustar liggesusers#include #include void F77_SUB(fseedi)(void) { GetRNGstate(); } void F77_SUB(fseedo)(void) { PutRNGstate(); } void F77_SUB(frexp)(double* px, double* pa) { *px = rexp(*pa); } quantreg/src/linpack.f0000644000176200001440000003005114001520742014451 0ustar liggesusersC The following routines are from LINPACK and do not seem to be part of C the standard R distro. subroutine dgedi(a,lda,n,ipvt,det,work,job) integer lda,n,ipvt(*),job double precision a(lda,*),det(2),work(*) c c dgedi computes the determinant and inverse of a matrix c using the factors computed by dgeco or dgefa. c c on entry c c a double precision(lda, n) c the output from dgeco or dgefa. c c lda integer c the leading dimension of the array a . c c n integer c the order of the matrix a . c c ipvt integer(n) c the pivot vector from dgeco or dgefa. c c work double precision(n) c work vector. contents destroyed. c c job integer c = 11 both determinant and inverse. c = 01 inverse only. c = 10 determinant only. c c on return c c a inverse of original matrix if requested. c otherwise unchanged. c c det double precision(2) c determinant of original matrix if requested. c otherwise not referenced. c determinant = det(1) * 10.0**det(2) c with 1.0 .le. dabs(det(1)) .lt. 10.0 c or det(1) .eq. 0.0 . c c error condition c c a division by zero will occur if the input factor contains c a zero on the diagonal and the inverse is requested. c it will not occur if the subroutines are called correctly c and if dgeco has set rcond .gt. 0.0 or dgefa has set c info .eq. 0 . c c linpack. this version dated 08/14/78 . c cleve moler, university of new mexico, argonne national lab. c c subroutines and functions c c blas daxpy,dscal,dswap c fortran dabs,mod c c internal variables c double precision t double precision ten integer i,j,k,kb,kp1,l,nm1 c c c compute determinant c if (job/10 .eq. 0) go to 70 det(1) = 1.0d0 det(2) = 0.0d0 ten = 10.0d0 do 50 i = 1, n if (ipvt(i) .ne. i) det(1) = -det(1) det(1) = a(i,i)*det(1) c ...exit if (det(1) .eq. 0.0d0) go to 60 10 if (dabs(det(1)) .ge. 1.0d0) go to 20 det(1) = ten*det(1) det(2) = det(2) - 1.0d0 go to 10 20 continue 30 if (dabs(det(1)) .lt. ten) go to 40 det(1) = det(1)/ten det(2) = det(2) + 1.0d0 go to 30 40 continue 50 continue 60 continue 70 continue c c compute inverse(u) c if (mod(job,10) .eq. 0) go to 150 do 100 k = 1, n a(k,k) = 1.0d0/a(k,k) t = -a(k,k) call dscal(k-1,t,a(1,k),1) kp1 = k + 1 if (n .lt. kp1) go to 90 do 80 j = kp1, n t = a(k,j) a(k,j) = 0.0d0 call daxpy(k,t,a(1,k),1,a(1,j),1) 80 continue 90 continue 100 continue c c form inverse(u)*inverse(l) c nm1 = n - 1 if (nm1 .lt. 1) go to 140 do 130 kb = 1, nm1 k = n - kb kp1 = k + 1 do 110 i = kp1, n work(i) = a(i,k) a(i,k) = 0.0d0 110 continue do 120 j = kp1, n t = work(j) call daxpy(n,t,a(1,j),1,a(1,k),1) 120 continue l = ipvt(k) if (l .ne. k) call dswap(n,a(1,k),1,a(1,l),1) 130 continue 140 continue 150 continue return end subroutine dgeco(a,lda,n,ipvt,rcond,z) integer lda,n,ipvt(*) double precision a(lda,*),z(*) double precision rcond c c dgeco factors a double precision matrix by gaussian elimination c and estimates the condition of the matrix. c c c if rcond is not needed, dgefa is slightly faster. c to solve a*x = b , follow dgeco by dgesl. c to compute inverse(a)*c , follow dgeco by dgesl. c to compute determinant(a) , follow dgeco by dgedi. c to compute inverse(a) , follow dgeco by dgedi. c c on entry c c a double precision(lda, n) c the matrix to be factored. c c lda integer c the leading dimension of the array a . c c n integer c the order of the matrix a . c c on return c c a an upper triangular matrix and the multipliers c which were used to obtain it. c the factorization can be written a = l*u where c l is a product of permutation and unit lower c triangular matrices and u is upper triangular. c c ipvt integer(n) c an integer vector of pivot indices. c c rcond double precision c an estimate of the reciprocal condition of a . c for the system a*x = b , relative perturbations c in a and b of size epsilon may cause c relative perturbations in x of size epsilon/rcond . c if rcond is so small that the logical expression c 1.0 + rcond .eq. 1.0 c is true, then a may be singular to working c precision. in particular, rcond is zero if c exact singularity is detected or the estimate c underflows. c c z double precision(n) c a work vector whose contents are usually unimportant. c if a is close to a singular matrix, then z is c an approximate null vector in the sense that c norm(a*z) = rcond*norm(a)*norm(z) . c c linpack. this version dated 08/14/78 . c cleve moler, university of new mexico, argonne national lab. c c subroutines and functions c c linpack dgefa c blas daxpy,ddot,dscal,dasum c fortran dabs,dmax1,dsign c c internal variables c double precision ddot,ek,t,wk,wkm double precision anorm,s,dasum,sm,ynorm integer info,j,k,kb,kp1,l c c c compute 1-norm of a c anorm = 0.0d0 do 10 j = 1, n anorm = dmax1(anorm,dasum(n,a(1,j),1)) 10 continue c c factor c call dgefa(a,lda,n,ipvt,info) c c rcond = 1/(norm(a)*(estimate of norm(inverse(a)))) . c estimate = norm(z)/norm(y) where a*z = y and trans(a)*y = e . c trans(a) is the transpose of a . the components of e are c chosen to cause maximum local growth in the elements of w where c trans(u)*w = e . the vectors are frequently rescaled to avoid c overflow. c c solve trans(u)*w = e c ek = 1.0d0 do 20 j = 1, n z(j) = 0.0d0 20 continue do 100 k = 1, n if (z(k) .ne. 0.0d0) ek = dsign(ek,-z(k)) if (dabs(ek-z(k)) .le. dabs(a(k,k))) go to 30 s = dabs(a(k,k))/dabs(ek-z(k)) call dscal(n,s,z,1) ek = s*ek 30 continue wk = ek - z(k) wkm = -ek - z(k) s = dabs(wk) sm = dabs(wkm) if (a(k,k) .eq. 0.0d0) go to 40 wk = wk/a(k,k) wkm = wkm/a(k,k) go to 50 40 continue wk = 1.0d0 wkm = 1.0d0 50 continue kp1 = k + 1 if (kp1 .gt. n) go to 90 do 60 j = kp1, n sm = sm + dabs(z(j)+wkm*a(k,j)) z(j) = z(j) + wk*a(k,j) s = s + dabs(z(j)) 60 continue if (s .ge. sm) go to 80 t = wkm - wk wk = wkm do 70 j = kp1, n z(j) = z(j) + t*a(k,j) 70 continue 80 continue 90 continue z(k) = wk 100 continue s = 1.0d0/dasum(n,z,1) call dscal(n,s,z,1) c c solve trans(l)*y = w c do 120 kb = 1, n k = n + 1 - kb if (k .lt. n) z(k) = z(k) + ddot(n-k,a(k+1,k),1,z(k+1),1) if (dabs(z(k)) .le. 1.0d0) go to 110 s = 1.0d0/dabs(z(k)) call dscal(n,s,z,1) 110 continue l = ipvt(k) t = z(l) z(l) = z(k) z(k) = t 120 continue s = 1.0d0/dasum(n,z,1) call dscal(n,s,z,1) c ynorm = 1.0d0 c c solve l*v = y c do 140 k = 1, n l = ipvt(k) t = z(l) z(l) = z(k) z(k) = t if (k .lt. n) call daxpy(n-k,t,a(k+1,k),1,z(k+1),1) if (dabs(z(k)) .le. 1.0d0) go to 130 s = 1.0d0/dabs(z(k)) call dscal(n,s,z,1) ynorm = s*ynorm 130 continue 140 continue s = 1.0d0/dasum(n,z,1) call dscal(n,s,z,1) ynorm = s*ynorm c c solve u*z = v c do 160 kb = 1, n k = n + 1 - kb if (dabs(z(k)) .le. dabs(a(k,k))) go to 150 s = dabs(a(k,k))/dabs(z(k)) call dscal(n,s,z,1) ynorm = s*ynorm 150 continue if (a(k,k) .ne. 0.0d0) z(k) = z(k)/a(k,k) if (a(k,k) .eq. 0.0d0) z(k) = 1.0d0 t = -z(k) call daxpy(k-1,t,a(1,k),1,z(1),1) 160 continue c make znorm = 1.0 s = 1.0d0/dasum(n,z,1) call dscal(n,s,z,1) ynorm = s*ynorm c if (anorm .ne. 0.0d0) rcond = ynorm/anorm if (anorm .eq. 0.0d0) rcond = 0.0d0 return end subroutine dgefa(a,lda,n,ipvt,info) c use numerical_libraries integer lda,n,ipvt(*),info double precision a(lda,*) c c dgefa factors a double precision matrix by gaussian elimination. c c dgefa is usually called by dgeco, but it can be called c directly with a saving in time if rcond is not needed. c (time for dgeco) = (1 + 9/n)*(time for dgefa) . c c on entry c c a double precision(lda, n) c the matrix to be factored. c c lda integer c the leading dimension of the array a . c c n integer c the order of the matrix a . c c on return c c a an upper triangular matrix and the multipliers c which were used to obtain it. c the factorization can be written a = l*u where c l is a product of permutation and unit lower c triangular matrices and u is upper triangular. c c ipvt integer(n) c an integer vector of pivot indices. c c info integer c = 0 normal value. c = k if u(k,k) .eq. 0.0 . this is not an error c condition for this subroutine, but it does c indicate that dgesl or dgedi will divide by zero c if called. use rcond in dgeco for a reliable c indication of singularity. c c linpack. this version dated 08/14/78 . c cleve moler, university of new mexico, argonne national lab. c c subroutines and functions c c blas daxpy,dscal,idamax c c internal variables c double precision t c integer idamax,j,k,kp1,l,nm1 integer j,k,kp1,l,nm1 c c c gaussian elimination with partial pivoting c info = 0 nm1 = n - 1 if (nm1 .lt. 1) go to 70 do 60 k = 1, nm1 kp1 = k + 1 c c find l = pivot index c l = idamax(n-k+1,a(k,k),1) + k - 1 ipvt(k) = l c c zero pivot implies this column already triangularized c if (a(l,k) .eq. 0.0d0) go to 40 c c interchange if necessary c if (l .eq. k) go to 10 t = a(l,k) a(l,k) = a(k,k) a(k,k) = t 10 continue c c compute multipliers c t = -1.0d0/a(k,k) call dscal(n-k,t,a(k+1,k),1) c c row elimination with column indexing c do 30 j = kp1, n t = a(l,j) if (l .eq. k) go to 20 a(l,j) = a(k,j) a(k,j) = t 20 continue call daxpy(n-k,t,a(k+1,k),1,a(k+1,j),1) 30 continue go to 50 40 continue info = k 50 continue 60 continue 70 continue ipvt(n) = n if (a(n,n) .eq. 0.0d0) info = n return end quantreg/src/qselect.f0000644000176200001440000000264614470134171014510 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine qselect(n,x,q) integer n,k,l,r double precision x(n),q k=nint(q*n) l=1 r=n call select(n,x,l,r,k) q=x(k) return end recursive subroutine select(n,x,l,r,k) integer n,m,l,r,k,ll,rr,i,j,mmax double precision x(n),z,s,d,t,fm,cs,cd parameter(cs = 0.5d0) parameter(cd = 0.5d0) parameter(mmax = 600) 23000 if(r.gt.l)then if(r-l.gt.mmax)then m=r-l+1 i=k-l+1 fm = dble(m) z=log(fm) s=cs*exp(2*z/3) d=cd*sqrt(z*s*(m-s)/fm)*sign(1,i-m/2) ll=max(l,nint(k-i*s/fm + d)) rr=min(r,nint(k+(m-i)*s/fm + d)) call select(n,x,ll,rr,k) endif t=x(k) i=l j=r call dswap(1,x(l),1,x(k),1) if(x(r).gt.t)then call dswap(1,x(r),1,x(l),1) endif 23006 if(i.lt.j)then call dswap(1,x(i),1,x(j),1) i=i+1 j=j-1 23008 if(x(i).lt.t)then i=i+1 goto 23008 endif 23009 continue 23010 if(x(j).gt.t)then j=j-1 goto 23010 endif 23011 continue goto 23006 endif 23007 continue if(x(l).eq.t)then call dswap(1,x(l),1,x(j),1) else j=j+1 call dswap(1,x(j),1,x(r),1) endif if(j.le.k)then l=j+1 endif if(k.le.j)then r=j-1 endif goto 23000 endif 23001 continue return end quantreg/src/rqs.f0000644000176200001440000000060713752023347013654 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine rqs(m,n,k,m5,n2,a,b,tau,toler,ift,x,e,s,wa,wb) double precision b(m,k),a(m,n),x(n,k),e(m),wa(m5,n2),wb(m) double precision tau,toler integer s(m),m,n,k,m5,n2,ift(k) do23000 i=1,k call rq0(m,n,m5,n2,a,b(1,i),tau,toler,ift(i),x(1,i),e,s,wa,wb) 23000 continue 23001 continue return end quantreg/src/idmin.f0000644000176200001440000000076713522271353014153 0ustar liggesusers INTEGER FUNCTION IDMIN(N,X,INCX) INTEGER I,N,INCX DOUBLE PRECISION X(INCX,*),SMIN C C THIS FUNCTION RETURNS THE INDEX OF THE SMALLEST (ALGEBRAIC) C COMPONENT OF X. ADAPTED FROM PORT3 LIBRARY -- FEB 2008. C ONLY EVERY INCXTH COMPONENT OF X IS CONSIDERED. C IDMIN=0 IF(N.EQ.0) RETURN SMIN=X(1,1) IDMIN=1 DO 10 I=1,N IF(SMIN.LE.X(1,I)) GO TO 10 SMIN=X(1,I) IDMIN=I 10 CONTINUE RETURN END quantreg/src/ratfor/0000755000176200001440000000000014746436777014215 5ustar liggesusersquantreg/src/ratfor/README0000644000176200001440000000744613777256027015077 0ustar liggesusersThis directory contains ratfor source for the several routines of the rq library. These are not strictly necessary, but they may prove useful to anyone wanting to look at the source in detail, since the fortran translation of them by the ratfor compiler is far from readable. Note added September 17, 2004 Apparently g77 v3.4 doesn't like double precision data statements so these have been changed to parameter() declarations. This turned out to be a bug in g77, but the deed is done so I've left the parameter statements in place of the original data statements. However, this entailed the dangerous step of installing the SEP ratfor77 translator. (See http://sepwww.stanford.edu/software/ratfor.html for details.) Past experience, and now a bug file in the SEP distro, suggests that the ratfor switch statement is unlikely to be correctly handled. Fortunately, none of the included routines in the directory use switch but caution is undoubtedly indicated. The fortran produced for rqbr.r is somewhat different than that produced by my older sun version, and generates two warnings from g77, but these appear to be harmless. Note added March 16, 2005 g77 has been issuing warnings for the code generated from the SEP distro of ratfor version of rqbr.r for a while now, but yesterday Jan deLeeuw reported that it now generates an error in his gfortran 4.0 on osx. After some comparisons with old version of the ratfor translation, in particular the rq.f in rq/statlib.95 on ysidro, I determined that what the compiler didn't like was the way that if-endifs were generated by the SEP translation. So.... I hand edited these last few if-endifs in the .f file, and move that back into the src directory. This is TOTALLY unsatisfactory, since it means that this needs to be done yet again if any changes are made to the ratfor code, but seems to be the cost of using the SEP translator. A more clever guy with more time could probably find a way to change the ratfor, but given other constraints that ain't going to happen anytime soon. Note that I've for future reference put a version of the old rq.f file generated by my old BTL ratfor translator into this directory. as well as the new rqbr.f. Note added Oct 22, 2007 As part of the development of the crqfnb function I downloaded the SEP version of ratfor77, which seems to work ok on this function. It is installed in my $HOME/bin directory and the build is in the Rinstall directory. Note that now on yzzy ratfor is called ratfor77. Note added May 14, 2016 Contrary to the last note, it appears that my $HOME/bin/ratfor command works and $HOME/bin/ratfor77 does not. Note added Jan 22, 2020 Contrary to the last note there is no $HOME/bin/ratfor* but I've installed ratfor90 in /usr/local/bin and this might produce something workable. Not yet really tested seriously, but those ugly line numbers are gone, at least. Note added November 8 2020 I've installed a new ratfor executable in my mac mini bin directory. It is generated from Brian Gaeke's C distribution ratfor-1.05. And seems to work well; i.e. produces .f files that compile with gfortran -c with only a couple of warnings about legacy syntax. The good news is that these warnings are emitted only for the rqbr.f code produced from rqbr.r, for which my handedited rqbr.f version still passes R CMD check. This was reported to Brian and he suggested flags that could be used to quell the emissions, but this didn't seem a.) very practical, or b.) very necessary. I've put links to Brian G's code for ratfor and to Brian K's BTL memo describing ratfor on my reproducibility webpage. So for the foreseeable, we are ok on the ratfor front, including for the new subroutines pfnb.r and qfnb.r. To reiterate, all the ratfor in this directory, with the exception of rqbr.r is used to generate the fortran in the src directory above. quantreg/src/ratfor/rqfnc.r0000644000176200001440000001573214470134447015500 0ustar liggesuserssubroutine rqfnc(n1,n2,p,a1,y,a2,r,rhs,d1,d2,u,beta,eps,wn1,wn2,wp,nit,info) integer n1,n2,p,info,nit(3) double precision a1(p,n1),a2(p,n2),y(n1),r(n2),rhs(p),d1(n1),d2(n2),u(n1) double precision wn1(n1,9),wn2(n2,6),wp(p,p+3) double precision one,beta,eps parameter(one = 1.0d0) call lpfnc(n1,n2,p,a1,y,a2,r,rhs,d1,d2,u,beta,eps,wn1(1,1),wn2(1,1),wn1(1,2), wp(1,1),wn1(1,3),wn2(1,2),wn1(1,4),wn1(1,5),wn2(1,3),wn1(1,6), wp(1,2),wn1(1,7),wn2(1,4),wn1(1,8),wn1(1,9),wn2(1,5),wn2(1,6), wp(1,3),wp(1,4),nit,info) return end # This is a revised form of the primal-dual log barrier form of the # interior point LP solver based on Lustig, Marsten and Shanno ORSA J Opt 1992. # It generalizes rqfnb and lpfnb to accomodate inequality constraints # It is a projected Newton primal-dual logarithmic barrier method which uses # the predictor-corrector approach of Mehrotra for the mu steps. # For the sake of brevity we will call it a Frisch-Newton algorithm. # Problem: # min c1'x1 + c2'x2 s.t. A1x1 + A2x2 = b, 0<=x1<=u, 0<=x2 # # Denote dx1,dx2,dy,dw,ds,dz1,dz2 as the steps for x1,x2,y,w,s,z1,z2 # subroutine lpfnc(n1,n2,p,a1,c1,a2,c2,b,d1,d2,u,beta,eps,x1,x2,s, y,z1,z2,w,dx1,dx2,ds,dy,dz1,dz2,dw,dr1,dr2,r2, rhs,ada,nit,info) integer n1,p,i,info,nit(3),maxit double precision a1(p,n1),a2(p,n2),c1(n1),c2(n2),b(p) double precision zero,one,mone,big,ddot,dmax1,dmin1,dxdz1,dxdz2,dsdw double precision deltap,deltad,beta,eps,mu,gap,g double precision x1(n1),x2(n2),u(n1),s(n1),y(p),z1(n1),z2(n2),w(n1) double precision d1(n1),d2(n2),rhs(p),ada(p,p) double precision dx1(n1),dx2(n2),ds(n1),dy(p),dz1(n1),dz2(n2),dw(n1) double precision dr1(n1),dr2(n2),r2(n2) parameter(zero = 0.0d0) parameter(one = 1.0d0) parameter(mone = -1.0d0) parameter(big = 1.0d+20) parameter(maxit = 500) # Initialization: We try to follow the notation of LMS # On input we require: # # c1 = n1-vector of marginal costs (-y in the rq problem) # a1 = p by n1 matrix of equality constraints (x' in rq) # c2 = n2-vector of marginal costs (-r in the rq problem) # a2 = p by n2 matrix of inequality constraints (R' in rq) # b = p-vector of rhs ((1-tau)x'e in rq) # u = upper bound vector ( 1_p in rq) # beta = barrier parameter, LMS recommend .99995 # eps = convergence tolerance, LMS recommend 10d-8 # # the integer vector nit returns iteration counts # the integer info contains an error code from the Cholesky in stepy # info = 0 is fine # info < 0 invalid argument to dposv # info > 0 singular matrix nit(1)=0 nit(2)=0 nit(3)=n1 # Start at the OLS estimate for the dual vector y call dgemv('N',p,n1,one,a1,p,c1,1,zero,y,1) do i=1,n1 d1(i)=one do i=1,n2{ d2(i)=zero z2(i)=one } call stepy2(n1,n2,p,a1,d1,a2,d2,y,ada,info) if(info != 0) return # put current residual vector r1 in s (temporarily) call dcopy(n1,c1,1,s,1) call dgemv('T',p,n1,mone,a1,p,y,1,one,s,1) # Initialize remaining variables do i=1,n1{ if(dabs(s(i)) < eps){ z1(i)=dmax1(s(i),zero)+eps w(i)=dmax1(-s(i),zero)+eps } else { z1(i)=dmax1(s(i),zero) w(i)=dmax1(-s(i),zero) } s(i)=u(i)-x1(i) } gap = ddot(n1,z1,1,x1,1)+ddot(n2,z2,1,x2,1)+ddot(n1,w,1,s,1) # # Main Loop # while(gap > eps && nit(1) i){ n4(1) = i n4(2) = j call fadjs(n4,n,q,tlist,tlptr,tlend) if(bnd(i)*bnd(j) == 0){ ned = ned + 1 do k = 1,4{ x4(k) = x(n4(k)) y4(k) = y(n4(k)) } if(orient(x4,y4)){ call iswap(1,n4(3),1,n4(4),1) call dswap(1,x4(3),1,x4(4),1) call dswap(1,y4(3),1,y4(4),1) } call ggap(x4,y4,g4,eps,ierr) if(ierr == 1) return call srtpai(n4,1,p4,1,4) do k = 1,4{ rax((ned - 1)*4 + k) = g4(p4(k)) jax((ned - 1)*4 + k) = n4(p4(k)) } if(ned*4 > m) return } } if(lp == lpl) break } } return end logical function orient(x,y) double precision x(4), y(4) orient = (y(2) -y(1))*(x(3)-x(4))+(x(1)-x(2))*(y(3)-y(4)) > 0 return end subroutine fadjs(n4,n,q,tlist,tlptr,tlend) # Subroutine to find matching adjacent vertices for the triogram edges # On input: # n4[1:2] contain the indices of the edge of interest # tlist,tlptr,tlendd is the (tripack) structure describing the triangulation # On output: # n4[3:4] contains indices of the two adjacent vertices # # Adjacency tlist is in counter-clockwise order so we want to find the two # vertices that are immediately above and below n1 in the n0 tlist # # Roger Koenker June 4, 2002 # integer n,q,vp,vpl,v,v0,match integer n4(4),tlist(q),tlptr(q),tlend(n) # Check whether edge is on the boundary match = 0 vpl = tlend(n4(1)) vp = vpl k = 0 repeat{ k = k+1 vp = tlptr(vp) v = tlist(vp) if(k>1 & iabs(v) == n4(2)){ n4(3) = iabs(v0) match = 1 next } if(match > 0){ n4(4) = iabs(v) break } v0 = v } return end subroutine ggap(x,y,g,eps,ierr) double precision x(4),y(4),g(4),w(2,4),h(2),D1,D2,eps # Triogram package: Roger Koenker June 4, 2002 # given four (x,y) pairs for an edge compute contribution to the penalty # ierr returns 1 if the edge is degenerate, ie either determinant is 0. D1 = -x(2) * y(1) + x(3) * y(1) + x(1) * y(2) - x(3) * y(2) - x(1) * y(3) + x(2) * y(3) D2 = -x(2) * y(1) + x(4) * y(1) + x(1) * y(2) - x(4) * y(2) - x(1) * y(4) + x(2) * y(4) if(dabs(D1) < eps | dabs(D2) < eps) { ierr = 1 return } h(1) = -(y(1) - y(2)) h(2) = (x(1) - x(2)) w(1, 1) = (y(2) - y(3))/D1 - (y(2) - y(4))/D2 w(2, 1) = (x(3) - x(2))/D1 - (x(4) - x(2))/D2 w(1, 2) = (y(3) - y(1))/D1 - (y(4) - y(1))/D2 w(2, 2) = (x(1) - x(3))/D1 - (x(1) - x(4))/D2 w(1, 3) = (y(1) - y(2))/D1 w(2, 3) = (x(2) - x(1))/D1 w(1, 4) = (y(2) - y(1))/D2 w(2, 4) = (x(1) - x(2))/D2 do i = 1,4{ g(i) = h(1)*w(1,i)+h(2)*w(2,i) } ierr = 0 return end quantreg/src/ratfor/boot.r0000644000176200001440000000330513777105346015330 0ustar liggesusers#parzen, wei and ying's bootstrap subroutine pwy(m,n,k,m5,n2,a,c,b,t,toler,ift,x,e,s, wa,wb) double precision b(m),a(k,n),x(n,k) double precision wa(m5,n2),wb(m),e(m),c(m,n) double precision t,toler integer m,n,k,m5,n2,ift integer s(m) do i=1,k{ call dcopy(n,a(i,1),k,c(m,1),m) call rq0(m,n,m5,n2,c,b,t,toler,ift,x(1,i),e,s,wa,wb) } return end #ratfor outer loop for xy-pairs rq bootstrap #notation is horrendous # ratfor R-function #______________________ # m -> n number of original obs # n -> p number of parameters # k -> R number of BS replications # mofn -> m number of BS observations # subroutine xys(mofn,m,n,k,mofn5,n2,a,b,tau,toler,ift,x,e,s, wa,wb,aa,bb,ss) double precision b(m),a(m,n),x(n,k) double precision wa(mofn5,n2),wb(mofn) double precision aa(mofn,n),bb(mofn),e(mofn) double precision tau,toler integer ss(mofn,k),s(mofn),mofn,m,n,k,mofn5,n2,ift(k) do i=1,k { do ii=1,mofn{ bb(ii)=b(ss(ii,i)) do jj=1,n{ aa(ii,jj)=a(ss(ii,i),jj) } } call rq0(mofn,n,mofn5,n2,aa,bb,tau,toler,ift(i),x(1,i),e,s,wa,wb) } return end # Weighted (Bose) Bootstrap version subroutine wxy(m,n,k,m5,n2,a,b,tau,toler,ift,x,e,s,wa,wb,aa,bb,w) double precision b(m),a(m,n),x(n,k) double precision w(m,k),wa(m5,n2),wb(m) double precision aa(m,n),bb(m),e(m) double precision tau,toler integer s(m),m,n,k,m5,n2,ift(k) do i=1,k { do ii=1,m{ bb(ii)=b(ii)*w(ii,i) do jj=1,n{ aa(ii,jj)=a(ii,jj)*w(ii,i) } } call rq0(m,n,m5,n2,aa,bb,tau,toler,ift(i),x(1,i),e,s,wa,wb) } return end #does a matrix multiply to make Y matrix for heqf bootstrap subroutine heqfy(n,p,r,x,b,y) integer n,p,r double precision x(n,p),b(p,n,r),y(n,r),ddot do i=1,r{ do j=1,n{ y(j,i)=ddot(p,x(j,1),n,b(1,j,i),1) } } return end quantreg/src/ratfor/rqbr.r0000644000176200001440000003364313522271236015331 0ustar liggesusers# This is a special version of K-dO rq modified to compute the LR process # Note that the sol array is now p+3 by J and the third row contains the # value of the objective function at the tau specified in row one. # # This software is in the public domain and may be freely # used and redistributed for non-commercial purposes. No guarantees # are offered or implied. comments, bug reports, etc are welcome # and should be sent to roger@ysidro.econ.uiuc.edu or to # # roger koenker # department of economics # university of illinois # champaign, illinois, 61820 # # subroutine rqbr(m,nn,m5,n3,n4,a,b,t,toler,ift,x,e,s,wa,wb,nsol,ndsol,sol,dsol,lsol,h,qn,cutoff,ci,tnmat,big,lci1) # # m = number of observations # n = number of parameters # m5 = m+5 # n3 = n+3 # n4 = n+4 # a is the x matrix # b is the y vector # t, the desired quantile # toler, smallest detectable |x-y|/x machine precision to the 2/3 # ift exit code: # 0-ok # else dimensions inconsistent see below # x the parameter estimate betahat # e is the residual vector # s is an integer work array # wa is a real work array # wb is another real work array # nsol is an estimated (row) dimension of the primal solution array say 3*m; minimum value = 2 # ndsol is an estimated (row) dimension of the dual solution array say 3*m; minimum value = 2 # sol is the primal solution array # dsol is the dual solution arry # lsol is the actual dimension of the solution arrays # h is the matrix of basic observations indices # qn is the vector of residuals variances from the projection of each column of the x matrix on the remaining columns # cutoff, the critical point for N(0,1) # ci is the matrix of confidence intervals # tnmat is the matrix of the JGPK rank test statistics # big, large positive finite floating-point number # utilization: if you just want a solution at a single quantile you # neednt bother with sol, nsol, etc, if you want all the solutions # then set theta to something <0 and sol and dsol will return all the # estimated quantile solutions. # the algorithm is a slightly modified version of algorithm as 229 # described in koenker and dorey, computing regression quantiles, # applied statistics, pp. 383-393. # integer i,j,k,kl,kount,kr,l,lsol,m,m1,m2,m3,m4,m5,ift integer n,n1,n2,n3,nsol,ndsol,out,s(m),h(nn,nsol) integer nn,n4,idxcf logical stage,test,init,iend,lup logical lci1,lci2,skip double precision a1,aux,b1,big,d,dif,pivot,smax,t,t0,t1,tnt,dk double precision min,max,toler,zero,half,one,two double precision b(m),sol(n3,nsol),a(m,nn),x(nn),wa(m5,n4),wb(m) double precision sum,e(m),dsol(m,ndsol) double precision qn(nn),cutoff,ci(4,nn),tnmat(4,nn),tnew,told,tn parameter( zero = 0.d0) parameter( one = 1.d0) parameter( two = 2.d0) # # check dimension parameters # n=nn ift = 0 wa(m+2,nn+1) = one if (m5!=m+5) ift = 3 if (n3!=n+3) ift = 4 if (n4!=n+4) ift = 5 if (m<=zero||n<=zero) ift = 6 if (ift<=two) { # # initialization # half = one/two iend = .true. lci2 = .false. lup = .true. skip = .false. idxcf = 0 tnew = zero tn = zero m1 = m+1 n1 = n+1 n2 = n+2 m2 = m+2 m3 = m+3 m4 = m+4 do j = 1,n{ x(j) = zero } do i = 1,m e(i) = zero if (tone) { t0 = one/(two*float(m)) t1 = one-t0 t = t0 iend = .false. lci1 = .false. } repeat { #0 do i = 1,m { k = 1 do j = 1,nn if (k<=nn){ if(j==idxcf) skip = .true. else skip = .false. if(!skip){ wa(i,k) = a(i,j) k = k+1 } } wa(i,n4) = n+i wa(i,n2) = b(i) if (idxcf != 0) wa(i,n3) = tnew*a(i,idxcf) else wa(i,n3) = zero wa(i,n1) = wa(i,n2)-wa(i,n3) if (wa(i,n1)(-two)) next 1 d = -d-two } if (d>max) { max = d in = j } } if (max<=toler) break 2 if (wa(m1,in)<=zero) { do i = 1,m4 wa(i,in) = -wa(i,in) wa(m1,in) = wa(m1,in)-two wa(m2,in) = wa(m2,in)-two } repeat { #4 # # determine the vector to leave the basis # k = 0 do i = kl,m { d = wa(i,in) if (d>toler) { k = k+1 wb(k) = wa(i,n1)/d s(k) = i test = .true. } } repeat { #5 if (k<=0) test = .false. else { min = big do i = 1,k if (wb(i)max) { max = d in = j } } if (wa(m1,in)zero) dsol(kd,lsol) = one } if (!lci2){ sol(1,lsol) = smax sol(2,lsol) = sum sum = zero do j=kl,m{ d = wa(j,n1)*sign(one,wa(j,n4)) sum = sum + d*(smax + half*(sign(one,d) - one)) } sol(3,lsol) = sum do i=1,m dsol(i,lsol+1) = dsol(i,lsol) } if (lci2){ # compute next theta a1 = zero do i = 1,m { a1 = a1+a(i,idxcf)*(dsol(i,lsol)+t-one) } tn = a1/sqrt(qn(idxcf)*t*(one-t)) if (abs(tn)tnew) if (tntsmax){ smax = tnt out = i } } } if (lup){ told = tnew tnew = smax + toler ci(3,idxcf) = told - toler tnmat(3,idxcf) = tn if (!(tnew < big-toler)){ ci(3,idxcf) = big ci(4,idxcf) = big tnmat(3,idxcf) = tn tnmat(4,idxcf) = tn lup = .false. go to 70 } } else{ told = tnew tnew = smax - toler ci(2,idxcf) = told + toler tnmat(2,idxcf) = tn if (!(tnew > -big+toler)){ ci(2,idxcf) = -big ci(1,idxcf) = -big tnmat(2,idxcf) = tn tnmat(1,idxcf) = tn lup = .true. go to 60 } } #update the new marginal cost do i = 1,m{ wa(i,n3) = wa(i,n3)/told*tnew wa(i,n1) = wa(i,n2) - wa(i,n3) } do j = kr,n3{ d = wa(out,j) wa(m1,j) = wa(m1,j) -d -d wa(m2,j) = wa(m2,j) -d -d wa(out,j) = -d } wa(out,n4) = -wa(out,n4) init = .true. } else{ if (lup){ ci(4,idxcf) = tnew - toler tnmat(4,idxcf) = tn lup = .false. go to 70 } else{ ci(1,idxcf) = tnew + toler tnmat(1,idxcf) = tn lup = .true. go to 60 } } } if ((iend)&&(!lci2)) go to 40 if (!lci2){ init = .true. lsol = lsol+1 do i = 1,m s(i) = zero do j = 1,n x(j) = zero # # compute next t # smax = two do j = 1,n { b1 = wa(m3,j) a1 = (-two-wa(m2,j))/b1 b1 = -wa(m2,j)/b1 if (a1>=t) if (a1t) if (b1=t1+toler) iend = .true. t = tnt if (iend) t = t1 } } #1 wa(m2,nn+1) = two ift = 2 go to 50 40 if (lsol>2) { sol(1,1) = zero #sol(2,1) = zero sol(3,1) = zero sol(1,lsol) = one #sol(2,lsol) = zero sol(3,lsol) = zero do i = 1,m { dsol(i,1) = one dsol(i,lsol) = zero dsol(i,lsol+1) = zero } } l = kl-1 do i = 1,l if (wa(i,n1)nn){ break 1 } 70 if (lup){ tnew = x(idxcf)+toler told = tnew ci(3,idxcf) = x(idxcf) tnmat(3,idxcf) = zero } else{ tnew = x(idxcf)-toler told = tnew ci(2,idxcf) = x(idxcf) tnmat(2,idxcf) = zero } } } #0 # restore the original value of dual when ci is true do i=1,m dsol(i,lsol) = dsol(i,lsol+1) } return end quantreg/src/ratfor/sakj.r0000644000176200001440000000676414001520444015306 0ustar liggesuserssubroutine sakj(x,z,p,iker,dens,psi,score,nx,nz,h,alpha,kappa,xlam) # univariate kernel density-score estimator # the algorithm is basically from Silverman as adapted for Portnoy and Koenker # Annals paper on adaptive L-estimation in regression. # x--pts used for centers of kernel assumed to be sorted!!!! # z--pts at which density is calculated # p--probability associated with x's # dens--f(z), the densities at z # psi--f'(z)/f(z) the score at z # score--(log(f(z)))'', the J fn at z # nx--number of pts in x # nz--number of pts in z # iker--kernel # 0=gaussian # 1=cauchy # h--initial window size (overall)--choose zero for default # kappa--constant determining initial (default) window width # xlam--Silverman's lambda, window adjustment for each x double precision dens(nz),score(nz),psi(nz),h,kappa,con1 double precision z(nz),x(nx),xlam(nx),p(nx),qrange,pi,four double precision con1,sum,sqsum,xsd,a,fifth,hinv,half,g,ginv double precision xn,xker,dxker,ddxker,fact,xponen,alpha,glog,zero,one,two parameter( zero = 0.d0) parameter( one = 1.d0) parameter( two = 2.d0) parameter( four = 4.d0) parameter( half = 0.5d0) parameter( fifth = 0.2d0) parameter( pi = 3.141593d0) xn=nx # call srtad(x,1,nx) # port sort routine now done in S interface. if(iker==0) con1=one/sqrt(2.0*pi) else if(iker==1) con1=one/pi # if no h is provided, calculate a default if(h<=0.) { sum=0. sqsum=0. do i=1,nx { sqsum=sqsum+x(i)*x(i)*p(i) sum=sum+x(i)*p(i) } xsd=dsqrt(sqsum-sum*sum) sum=zero for(i=1;i0;i=i-1) { sum=sum-p(i) if(sum>.75) next else { qrange=x(i)-qrange;break } } a=min(xsd,qrange/1.34) h=kappa*a/(xn**fifth) # see Silverman p 48 } hinv=one/h # Stage one: compute pilot estimate of density do j=1,nx { xker=0. if(iker==0) { do i=1,nx { xponen=(x(j)-x(i))*hinv xponen=half*xponen**2 xker=xker+p(i)*exp(-xponen)*hinv } } else if(iker==1) { do i=1,nx { xponen=(x(j)-x(i))*hinv xker=xker+p(i)*hinv/(1+xponen**2) } } xlam(j)=con1*xker } # Stage two: Automatic window widths (Silverman p101) glog=zero do i=1,nx { glog=glog+p(i)*log(xlam(i))} g=exp(glog) ginv=one/g do i=1,nx { xlam(i)=hinv/((xlam(i)*ginv)**(-alpha)) } # notice xlam no longer its own self at this pt! xlam is 1/(h*lambda(i)) # substitution of * for / thus achieved speeds things up # Stage two: new density-score estimates do j=1,nz { xker=zero dxker=zero ddxker=zero if(iker==0) { # gaussian kernel do i=1,nx { xponen=(z(j)-x(i))*xlam(i) fact=exp(-half*xponen*xponen)*xlam(i) xker=xker+p(i)*fact dxker=dxker-p(i)*fact*xponen*xlam(i) ddxker=ddxker- p(i)*fact*(one - xponen**2)*xlam(i)**2 } } else if(iker==1) { # cauchy kernel do i=1,nx { xponen=(z(j)-x(i))*xlam(i) fact=xlam(i)/(one+xponen**2) xker=xker+p(i)*fact dxker=dxker-p(i)*two*xponen*fact**2 ddxker=ddxker- p(i)*two*(fact**2)*(xlam(i)- four*(xponen**2)*fact) } } dens(j)=con1*xker psi(j)=-(dxker/xker) score(j)=(dxker/xker)**2-ddxker/xker } return end quantreg/src/ratfor/brute.r0000644000176200001440000000215111555564235015502 0ustar liggesusers# New Version of Brute Force Algorithm for the Powell Estimator # # Roger Koenker: last revision: 12 February 2008 # # Problem: || min{Ax,c} - b ||_tau = min! # # The matrix H is p by m matrix of the n choose p basis indices h on input. # When called it is assumed (!!) that U = A[H[,1],]^{-1} and xh = U b[H[,1]]. subroutine brutpow(n,p,m,H,A,b,c,x,tau,U,xh,d,jminz,nflag) integer n,p,m double precision x(p),A(n,p),b(n),c(n) double precision U(p,p),d(p),xh(p) double precision zero, one,tau,pow,minz,z integer H(p,m),k,findk,jminz,nflag PARAMETER(zero = 0.0d0, one = 1.d0) jminz = 1 minz = pow(n,p,x,A,b,c,tau) do j = 2,m { k = findk(p,H(1,j),H(1,j-1)) if(k == 0) {nflag = 4; return} call pivot(n,p,H(1,j-1),H(k,j),H(k,j-1),A,U,d,xh,nflag) if(nflag > 0) return do i = 1,p{ xh(i) = b(H(i,j)) } call dgemv('N',p,p,one,U,p,xh,1,zero,x,1) z = pow(n,p,x,A,b,c,tau) if(z < minz) { minz = z jminz = j } } return end ##################################################### integer function findk(p,h,g) integer p,k,h(p),g(p) findk = 0 do k = 1,p{ if(h(k) != g(k)) {findk = k; break} } return end quantreg/src/ratfor/rqs.r0000644000176200001440000000046211612366270015162 0ustar liggesusers# Wrapper for rq solutions with multiple y's subroutine rqs(m,n,k,m5,n2,a,b,tau,toler,ift,x,e,s,wa,wb) double precision b(m,k),a(m,n),x(n,k),e(m),wa(m5,n2),wb(m) double precision tau,toler integer s(m),m,n,k,m5,n2,ift(k) do i=1,k call rq0(m,n,m5,n2,a,b(1,i),tau,toler,ift(i),x(1,i),e,s,wa,wb) return end quantreg/src/ratfor/combos.r0000644000176200001440000000260112762350710015633 0ustar liggesusers# Subroutine to list the r choose n subsets of {1,2,...,r} in an order such that # adjacent subsets have only one element swapped. Algorithm modeled on the pascal # algorithm of Limin Xiang and Kazuo Ushijima (2001) "On O(1) Time Algorithms for # Combinatorial Generation," Computer Journal, 44(4), 292-302. # http://comjnl.oxfordjournals.org/cgi/reprint/44/4/292 # Translated into ratfor: 12 February, 2008 R. Koenker. subroutine combin(r,n,m,a,c,e,Last) integer r,n,m,t,k,j,M0,Mj,s integer A(n,m),c(r),e(r),Last(r) logical odd M0 = r-n t = n+1 k = 1 j = 0 c(1) = 0 repeat{ j = j + 1 c(j) = j e(j) = j - 1 if(odd(j)) Last(j) = M0 + j else Last(j) = j + 1 if(j == n) break } do i = 1,n A(i,1) = c(i) if(n < r) { repeat { k = k + 1 S = c(j) Mj = M0 + j e(n+1) = n if(odd(j)){ if(c(j) == Mj) { c(j) = c(j-1) + 1 Last(j+1) = c(j) + 1 } else c(j) = c(j) + 1 } else { if(c(j) == c(j-1) + 1) c(j) = Mj else { Last(j+1) = c(j) c(j) = c(j) - 1 } } if(c(j) == Last(j)) { Last(j) = S e(j+1) = e(j) e(j) = j-1 } if( (j < n) & (c(j) == Mj)) { t = j j = e(t+1) e(t+1) = t } else { if(t == j) t = t + 1 if(t < e(n+1)) j = t else j = e(n+1) } do i = 1,n A(i,k) = c(i) if(j == 0) break } } return end logical function odd(j) integer j odd = (mod(j,2) == 1) return end quantreg/src/ratfor/powell.r0000644000176200001440000000564213777105403015667 0ustar liggesusers# Revised Version of Fitzenberger's Steepest Descent Algorithm for the Powell Estimator # # Roger Koenker: last revision: 6 February 2008 # # Problem: || min{Ax,c} - b ||_tau = min! # subroutine powell(n,p,p2,A,b,c,x,tau,h,f,U,s,g,d,xh,maxit,nflag) integer n,p,p2 double precision x(p),A(n,p),b(n),c(n) double precision f(n),U(p,p),s(n),g(p2),d(p),xh(p) double precision zero, one, mone, step, tau,pow integer h(p),hin,hout,k,it,inset,maxit,nflag PARAMETER(zero = 0.0d0, one = 1.d0, mone = -1.d0) it = 0 repeat { it = it + 1 if(it > 1) # Otherwise, assume U is A(h)^{-1} call pivot(n,p,h,hin,hout,A,U,d,xh,nflag) if(nflag > 0) {nflag = nflag + 2; return} do i = 1,p{ xh(i) = b(h(i)) } call dgemv('N',p,p,one,U,p,xh,1,zero,x,1) call dgemv('N',n,p,one,A,n,x,1,zero,f,1) do i = 1,n{ if(inset(p,i,h) > 0 | f(i) > c(i)) s(i) = zero else if(b(i) < f(i)) s(i) = one - tau else s(i) = - tau } call dgemv('T',n,p,one,A,n,s,1,zero,xh,1) call dgemv('T',p,p,one,U,p,xh,1,zero,g,1) do i = 1,p { if(f(h(i)) < c(h(i))) if(b(h(i)) < c(h(i))) g(i + p) = - g(i) + one - tau else g(i + p) = - g(i) - tau else g(i + p) = - g(i) + tau g(i) = g(i) + one - tau } k = idmin(p2,g,1) if(g(k) >= 0 | it > maxit) break call dscal(p,zero,d,1) if(k <= p) call daxpy(p,one,U(1,k),1,d,1) else{ k = k - p call daxpy(p,mone,U(1,k),1,d,1) } call dgemv('N',n,p,one,A,n,d,1,zero,s,1) do i = 1,n { call dcopy(p,x,1,xh,1) step = (b(i) - f(i))/s(i) call daxpy(p,step,d,1,xh,1) s(i) = pow(n,p,xh,A,b,c,tau) } hin = idmin(n,s,1) if(inset(p,hin,h) > 0) {nflag = 2; break} hout = h(k) } if(it > maxit) nflag = 1 return end ##################################################### subroutine pivot(n,p,h,hin,hout,A,B,u,v,eflag) integer n,p,h(p),hin,hout,inset,k,eflag double precision A(n,p),B(p,p),u(p),v(p) double precision zero,one PARAMETER(zero = 0.d0, one = 1.d0) eflag = 0 k = inset(p,hout,h) if(k == 0) {eflag = 1; return} if(inset(p,hin,h) > 0) {eflag = 2; return} if(hin < 1 | hin > n) {eflag = 3; return} call dcopy(p,A(hin,1),n,v,1) call dgemv('T',p,p,one,B,p,v,1,zero,u,1) call dcopy(p,B(1,k),1,v,1) do j = 1,p{ do i = 1,p{ if(j == k) B(i,j) = B(i,j)/u(k) else B(i,j) = B(i,j) - (u(j)/u(k)) * v(i) } } h(k) = hin return end ##################################################### integer function inset(p,k,h) integer p,k,h(p) do inset = 1,p{ if(h(inset) == k) return } inset = 0 return end ##################################################### double precision function pow(n,p,x,A,b,c,tau) integer n,p double precision x(p),A(n,p),b(n),c(n) double precision tau,u,zero,rho,fit,ddot PARAMETER(zero= 0.d0) pow = zero do i = 1,n{ fit = ddot(p,A(i,1),n,x,1) u = b(i) - min(fit,c(i)) pow = pow + rho(u, tau) } return end ##################################################### double precision function rho(u,tau) double precision u,tau,one PARAMETER(one = 1.d0) if(u < 0) rho = u * (tau - one) else rho = u * tau return end quantreg/src/ratfor/rqfnb.r0000644000176200001440000001213614470134411015461 0ustar liggesuserssubroutine rqfnb(n,p,a,y,rhs,d,u,beta,eps,wn,wp,nit,info) integer n,p,info,nit(3) double precision a(p,n),y(n),rhs(p),d(n),u(n),wn(n,9),wp(p,p+3) double precision one,beta,eps parameter( one = 1.0d0) call lpfnb(n,p,a,y,rhs,d,u,beta,eps,wn(1,1),wn(1,2), wp(1,1),wn(1,3),wn(1,4),wn(1,5),wn(1,6), wp(1,2),wn(1,7),wn(1,8),wn(1,9),wp(1,3),wp(1,4),nit,info) return end # This is a revised form of my primal-dual log barrier form of the # interior point LP solver based on Lustig, Marsten and Shanno ORSA J Opt 1992. # It is a projected Newton primal-dual logarithmic barrier method which uses # the predictor-corrector approach of Mehrotra for the mu steps. # For the sake of brevity we will call it a Frisch-Newton algorithm. # Problem: # min c'x s.t. Ax=b, 0<=x<=u # # Denote dx,dy,dw,ds,dz as the steps for the respective variables x,y,w,s,z # subroutine lpfnb(n,p,a,c,b,d,u,beta,eps,x,s,y,z,w, dx,ds,dy,dz,dw,dr,rhs,ada,nit,info) integer n,p,pp,i,info,nit(3),maxit double precision a(p,n),c(n),b(p) double precision zero,one,mone,big,ddot,dmax1,dmin1,dxdz,dsdw double precision deltap,deltad,beta,eps,mu,gap,g double precision x(n),u(n),s(n),y(p),z(n),w(n),d(n),rhs(p),ada(p,p) double precision dx(n),ds(n),dy(p),dz(n),dw(n),dr(n) parameter( zero = 0.0d0) parameter( one = 1.0d0) parameter( mone = -1.0d0) parameter( big = 1.0d+20) parameter( maxit = 500) # Initialization: We follow the notation of LMS # On input we require: # # c = n-vector of marginal costs (-y in the rq problem) # a = p by n matrix of linear constraints (x' in rq) # b = p-vector of rhs ((1-tau)x'e in rq) # u = upper bound vector ( e in rq) # beta = barrier parameter, LMS recommend .99995 # eps = convergence tolerance, LMS recommend 10d-8 # # the integer vector nit returns iteration counts # the integer info contains an error code from the Cholesky in stepy # info = 0 is fine # info < 0 invalid argument to dposv # info > 0 singular matrix nit(1)=0 nit(2)=0 nit(3)=n pp=p*p # Start at the OLS estimate for the dual vector y call dgemv('N',p,n,one,a,p,c,1,zero,y,1) do i=1,n d(i)=one call stepy(n,p,a,d,y,ada,info) if(info != 0) return # put current residual vector in s (temporarily) call dcopy(n,c,1,s,1) call dgemv('T',p,n,mone,a,p,y,1,one,s,1) # Initialize remaining variables do i=1,n{ if(dabs(s(i)) eps && nit(1) A'dy - ds deltap=big deltad=big do i=1,n{ dx(i)=d(i)*ds(i) ds(i)=-dx(i) dz(i)=-z(i)*(dx(i)/x(i) + one) dw(i)=-w(i)*(ds(i)/s(i) + one) if(dx(i)<0)deltap=dmin1(deltap,-x(i)/dx(i)) if(ds(i)<0)deltap=dmin1(deltap,-s(i)/ds(i)) if(dz(i)<0)deltad=dmin1(deltad,-z(i)/dz(i)) if(dw(i)<0)deltad=dmin1(deltad,-w(i)/dw(i)) } deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) if(min(deltap,deltad) < one){ nit(2)=nit(2)+1 # Update mu mu = ddot(n,x,1,z,1)+ddot(n,s,1,w,1) g = mu + deltap*ddot(n,dx,1,z,1)+ deltad*ddot(n,dz,1,x,1) + deltap*deltad*ddot(n,dz,1,dx,1)+ deltap*ddot(n,ds,1,w,1)+ deltad*ddot(n,dw,1,s,1) + deltap*deltad*ddot(n,ds,1,dw,1) mu = mu * ((g/mu)**3) /dble(2*n) # Compute modified step do i=1,n{ dr(i)=d(i)*(mu*(1/s(i)-1/x(i))+ dx(i)*dz(i)/x(i)-ds(i)*dw(i)/s(i)) } call dswap(p,rhs,1,dy,1) call dgemv('N',p,n,one,a,p,dr,1,one,dy,1)# new rhs call dpotrs('U',p,1,ada,p,dy,p,info)# backsolve for dy call dgemv('T',p,n,one,a,p,dy,1,zero,u,1)#ds=A'ddy deltap=big deltad=big do i=1,n{ dxdz = dx(i)*dz(i) dsdw = ds(i)*dw(i) dx(i)= d(i)*(u(i)-z(i)+w(i))-dr(i) ds(i)= -dx(i) dz(i)= -z(i)+(mu - z(i)*dx(i) - dxdz)/x(i) dw(i)= -w(i)+(mu - w(i)*ds(i) - dsdw)/s(i) if(dx(i)<0)deltap=dmin1(deltap,-x(i)/dx(i)) if(ds(i)<0)deltap=dmin1(deltap,-s(i)/ds(i)) if(dz(i)<0)deltad=dmin1(deltad,-z(i)/dz(i)) if(dw(i)<0)deltad=dmin1(deltad,-w(i)/dw(i)) } deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) } call daxpy(n,deltap,dx,1,x,1) call daxpy(n,deltap,ds,1,s,1) call daxpy(p,deltad,dy,1,y,1) call daxpy(n,deltad,dz,1,z,1) call daxpy(n,deltad,dw,1,w,1) gap = ddot(n,z,1,x,1)+ddot(n,w,1,s,1) } # return residuals in the vector x call daxpy(n,mone,w,1,z,1) call dswap(n,z,1,x,1) return end subroutine stepy(n,p,a,d,b,ada,info) integer n,p,pp,i,info double precision a(p,n),b(p),d(n),ada(p,p),zero parameter( zero = 0.0d0) # Solve the linear system ada'x=b by Choleski -- d is diagonal # Note that a isn't altered, and on output ada returns the upper # triangle Choleski factor, which can be reused, eg with blas dtrtrs pp=p*p do j=1,p do k=1,p ada(j,k)=zero do i=1,n call dsyr('U',p,d(i),a(1,i),1,ada,p) call dposv('U',p,1,ada,p,b,p,info) return end quantreg/src/ratfor/rqfn.r0000644000176200001440000001501214470134353015320 0ustar liggesusers# This is a primal-dual log barrier form of the # interior point LP solver of Lustig, Marsten and Shanno ORSA J Opt 1992. # It is a projected Newton primal-dual logarithmic barrier method which uses # the predictor-corrector approach of Mehrotra for the mu steps. # For the sake of brevity we will call it a Frisch-Newton algorithm. # The primary difference between this code and the previous version fna.r is # that we assume a feasible starting point so p,d,b feasibility gaps = 0. # Problem: # min c'x s.t. Ax=b, 0<=x<=u # # The linear system we are trying to solve at each interation is: # Adx = 0 # dx + ds = 0 # A'dy -dw +dz = 0 # Xdz + Zdx = me - XZe - DXDZe # Sdw + Wds = me - SWe - DSDWe # But the algorithm proceeds in two steps the first of which is to solve: # Adx = 0 # dx + ds = 0 # A'dy -dw +dz = 0 # Xdz + Zdx = - XZe # Sdw + Wds = - SWe # and then to make some refinement of mu and modify the implied Newton step. # Denote dx,dy,dw,ds,dz as the steps for the respective variables x,y,w,s,z, and # the corresponding upper case letters are the diagonal matrices respectively. # # To illustrate the use of the function we include a calling routine to # compute solutions to the linear quantile regression estimation problem. # See the associated S function rqfn for details on the calling sequence. # On input: # a is the p by n matrix X' # y is the n-vector of responses # u is the n-vector of upper bounds # d is an n-vector of ones # wn is an n-vector of ones in the first n elements # beta is a scaling constant, conventionally .99995 # eps is a convergence tolerance, conventionally 1d-07 # On output: # a,y are unaltered # wp contains the solution coefficient vector in the first p elements # wn contains the residual vector in the first n elements # # subroutine rqfn(n,p,a,y,rhs,d,u,beta,eps,wn,wp,aa,nit,info) integer n,p,info,nit(3) double precision a(p,n),y(n),rhs(p),d(n),u(n),wn(n,10),wp(p,p+3),aa(p,p) double precision one,beta,eps parameter( one = 1.0d0) call fna(n,p,a,y,rhs,d,u,beta,eps,wn(1,1),wn(1,2), wp(1,1),wn(1,3),wn(1,4),wn(1,5), wn(1,6), wp(1,2),wn(1,7),wn(1,8),wn(1,9),wn(1,10),wp(1,3), wp(1,4),aa,nit,info) return end subroutine fna(n,p,a,c,b,d,u,beta,eps,x,s,y,z,w, dx,ds,dy,dz,dw,dsdw,dxdz,rhs,ada,aa,nit,info) integer n,p,pp,i,info,nit(3) double precision a(p,n),c(n),b(p) double precision zero,one,mone,big,ddot,dmax1,dmin1,dasum double precision deltap,deltad,beta,eps,cx,by,uw,uz,mu,mua,acomp,rdg,g double precision x(n),u(n),s(n),y(p),z(n),w(n),d(n),rhs(p),ada(p,p) double precision aa(p,p),dx(n),ds(n),dy(p),dz(n),dw(n),dxdz(n),dsdw(n) parameter( zero = 0.0d0) parameter( half = 0.5d0) parameter( one = 1.0d0) parameter( mone = -1.0d0) parameter( big = 1.0d+20) # Initialization: We try to follow the notation of LMS # On input we require: # # c = n-vector of marginal costs (-y in the rq problem) # a = p by n matrix of linear constraints (x' in rq) # b = p-vector of rhs ((1-tau)x'e in rq) # u = upper bound vector ( e in rq) # beta = barrier parameter, LMS recommend .99995 # eps = convergence tolerance, LMS recommend 10d-8 # # the integer vector nit returns iteration counts # the integer info contains an error code from the Cholesky in stepy # info = 0 is fine # info < 0 invalid argument to dposv # info > 0 singular matrix nit(1)=0 nit(2)=0 nit(3)=n pp=p*p # Start at the OLS estimate for the parameters call dgemv('N',p,n,one,a,p,c,1,zero,y,1) call stepy(n,p,a,d,y,aa,info) if(info != 0) return # Save sqrt of aa' for future use for confidence band do i=1,p{ do j=1,p ada(i,j)=zero ada(i,i)=one } call dtrtrs('U','T','N',p,p,aa,p,ada,p,info) call dcopy(pp,ada,1,aa,1) # put current residual vector in s (temporarily) call dcopy(n,c,1,s,1) call dgemv('T',p,n,mone,a,p,y,1,one,s,1) # Initialize remaining variables # N.B. x must be initialized on input: for rq as (one-tau) in call coordinates do i=1,n{ d(i)=one if(dabs(s(i)) < eps){ z(i) = dmax1( s(i),zero) + eps w(i) = dmax1(-s(i),zero) + eps } else { z(i) = dmax1( s(i),zero) w(i) = dmax1(-s(i),zero) } s(i)=u(i)-x(i) } cx = ddot(n,c,1,x,1) by = ddot(p,b,1,y,1) uw = dasum(n,w,1) uz = dasum(n,z,1) # rdg = (cx - by + uw)/(one + dabs( by - uw)) # rdg = (cx - by + uw)/(one + uz + uw) rdg = (cx - by + uw) while(rdg > eps) { nit(1)=nit(1)+1 do i =1,n{ d(i) = one/(z(i)/x(i) + w(i)/s(i)) ds(i)=z(i)-w(i) dx(i)=d(i)*ds(i) } call dgemv('N',p,n,one,a,p,dx,1,zero,dy,1)#rhs call dcopy(p,dy,1,rhs,1)#save rhs call stepy(n,p,a,d,dy,ada,info) if(info != 0) return call dgemv('T',p,n,one,a,p,dy,1,mone,ds,1) deltap=big deltad=big do i=1,n{ dx(i)=d(i)*ds(i) ds(i)=-dx(i) dz(i)=-z(i)*(dx(i)/x(i) + one) dw(i)=w(i)*(dx(i)/s(i) - one) dxdz(i)=dx(i)*dz(i) dsdw(i)=ds(i)*dw(i) if(dx(i)<0)deltap=dmin1(deltap,-x(i)/dx(i)) if(ds(i)<0)deltap=dmin1(deltap,-s(i)/ds(i)) if(dz(i)<0)deltad=dmin1(deltad,-z(i)/dz(i)) if(dw(i)<0)deltad=dmin1(deltad,-w(i)/dw(i)) } deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) if(deltap*deltad1) mu=(g/dble(n))*(g/acomp)**2 #else mu=acomp/(dble(n)**2) do i=1,n{ dz(i)=d(i)*(mu*(1/s(i)-1/x(i))+ dx(i)*dz(i)/x(i)-ds(i)*dw(i)/s(i)) } call dswap(p,rhs,1,dy,1) call dgemv('N',p,n,one,a,p,dz,1,one,dy,1)#new rhs call dpotrs('U',p,1,ada,p,dy,p,info) call daxpy(p,mone,dy,1,rhs,1)#rhs=ddy call dgemv('T',p,n,one,a,p,rhs,1,zero,dw,1)#dw=A'ddy deltap=big deltad=big do i=1,n{ dx(i)=dx(i)-dz(i)-d(i)*dw(i) ds(i)=-dx(i) dz(i)=mu/x(i) - z(i)*dx(i)/x(i) - z(i) - dxdz(i)/x(i) dw(i)=mu/s(i) - w(i)*ds(i)/s(i) - w(i) - dsdw(i)/s(i) if(dx(i)<0)deltap=dmin1(deltap,-x(i)/dx(i)) else deltap=dmin1(deltap,-s(i)/ds(i)) if(dz(i)<0)deltad=dmin1(deltad,-z(i)/dz(i)) if(dw(i)<0)deltad=dmin1(deltad,-w(i)/dw(i)) } deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) } call daxpy(n,deltap,dx,1,x,1) call daxpy(n,deltap,ds,1,s,1) call daxpy(p,deltad,dy,1,y,1) call daxpy(n,deltad,dz,1,z,1) call daxpy(n,deltad,dw,1,w,1) cx=ddot(n,c,1,x,1) by=ddot(p,b,1,y,1) uw = dasum(n,w,1) uz = dasum(n,z,1) #rdg=(cx-by+uw)/(one+dabs(by-uw)) #rdg=(cx-by+uw)/(one+uz+uw) rdg=(cx-by+uw) } # return residuals in the vector x call daxpy(n,mone,w,1,z,1) call dswap(n,z,1,x,1) return end quantreg/src/ratfor/pwxy.r0000644000176200001440000000623713777262243015403 0ustar liggesusers# bootstrap estimation with fnb algorithm and globbing # Input: # n = full sample size # p = parametric dimension of model # m = number of bootstrap replications # a = p by n (transposed) design matrix # y = n-vector of responses # w = n-vector of weights for bootstrap # r = residual n-vector from fit # b = coefficient matrix # band = confidence band (see rq.fit.pfnb) # n0 = initial sample size # d = n-vector of ones # u = n-vector of ones # wn = 9*n work array # wp = p(p+3) work array # aa = n by p array for globbed design matrix # yy = n vector for globbed response matrix # slo = n-vector of boolean integers # shi = n-vector of boolean integers # rhs = p-vector for right hand side # glob = p-vector for glob # ghib = p-vector for ghimb # nit = 3-vector of iteration counts x R # info = flag for convergence x R subroutine pwxy(n,p,m,a,y,tau,qk,r,b,w,band,n0,d,u,wn,wp, aa,yy,slo,shi,rhs,glob,ghib,nit,info) integer n,p,m,kk(2),nn,n0,nit(5,m),info(m),sumbad,i,j,k,ir integer loq,hiq, slo(n),shi(n),ifix,ibad logical notopt double precision a(p,n),y(n),tau,qk(2),r(n),d(n),u(n),b(p,m),w(n) double precision wn(n,9), wp(p,(p+3)),band(n) double precision glob(p),ghib(p),aa(p,n),yy(n),rhs(p) double precision zero,one,beta,eps,big parameter(zero = 0.0d0) parameter(one = 1.0d0) parameter(beta = 0.99995d0) parameter(big = 1.0d+10) parameter(eps = 1.0d-06) do ir = 1,m { notopt = .true. call grexp(n,w,one) nn = n0 ifix = 0 ibad = 0 while (notopt) { ibad = ibad + 1 loq = max0(1, int(n*tau - nn/2.)) hiq = min0(int(n*tau + nn/2.), n) qk(1) = r(loq) qk(2) = r(hiq) call iphil(n,0,slo) call iphil(n,0,shi) do i = 1,n{ if(r(i) < qk(1)) slo(i) = 1 else if(r(i) > qk(2)) shi(i) = 1 } while (notopt) { ifix = ifix + 1 call dphil(p,zero,glob) call dphil(p,zero,ghib) call dphil(n,one,d) call dphil(n,one,u) k = 0 do i = 1,n{ if(slo(i) == 0 & shi(i) == 0){ k = k + 1 call dphil(p,zero,aa(1,k)) call daxpy(p,w(i),a(1,i),1,aa(1,k),1) yy(k) = -y(i)*w(i) } else if (slo(i) == 1) { do j = 1,p glob(j) = glob(j) + a(j,i) * w(i) } else if (shi(i) == 1) { do j = 1,p ghib(j) = ghib(j) + a(j,i) * w(i) } } call dcopy(p,glob,1,aa(1,k+1),1) call dcopy(p,ghib,1,aa(1,k+2),1) yy(k+1) = big yy(k+2) = -big call dgemv('N',p,k+2,one-tau,aa,p,d,1,zero,rhs,1) call dscal(k+2,zero,wn,1) call daxpy(k+2,one-tau,u,1,wn,1) call rqfnb(k+2,p,aa,yy,rhs,d,u,beta,eps,wn,wp,nit(1,ir),info(ir)) call dcopy(p,wp,1,b(1,ir),1) call dcopy(n,y,1,u,1) call dgemv('T',p,n,one,a,p,b(1,ir),1,one,u,1) # Check predicted signs of residuals (in u) sumbad = 0 do i = 1,n { if((u(i) > 0) & slo(i) == 1){ slo(i) = 0 sumbad = sumbad + 1 } if((u(i) < 0) & shi(i) == 1){ shi(i) = 0 sumbad = sumbad + 1 } } if(sumbad > 0) { if (sumbad > 0.1 * nn) { nn = min(2 * nn, n) break } } else notopt = .false. } nit(4,ir) = ifix nit(5,ir) = ibad } } return end quantreg/src/ratfor/qfnb.r0000644000176200001440000000204113755220472015301 0ustar liggesusers# Toy fnb routine for multiple taus subroutine qfnb(n,p,m,a,y,t,r,d,u,wn,wp,B,nit, info) # Input: # n = sample size # p = parametric dimension of model # m = dimension of tau vector # a = p by n design matrix (transposed) # y = n dimensional response vector # t = m dimensional tau vector # r = p dimensional rhs vector # d = n dimensional vector of ones # u = n dimensional vector of ones # wn = n by 9 work array # wp = p by p+3 work array # # Output: # B = p by m matrix of coefficients integer n,p,m,nit(3),info double precision a(p,n), y(n), t(m), B(p,m), r(p) double precision d(n), u(n), wn(n,9), wp(p,p+3) double precision zero, one, eps, beta parameter( zero = 0.0d0) parameter( one = 1.0d0) parameter( beta = 0.99995d0) parameter( eps = 1.0d-6) do i = 1,m{ call dgemv('N',p,n,one-t(i),a,p,d,1,zero,r,1) call dscal(n,zero,wn,1) call daxpy(n,one-t(i),u,1,wn,1) call rqfnb(n,p,a,y,r,d,u,beta,eps,wn,wp,nit,info) if(info != 0) break do j = 1,n{ u(j) = one d(j) = one } call dcopy(p,wp,1,B(1,i),1) } return end quantreg/src/ratfor/crqfnb.r0000644000176200001440000000274211555564235015642 0ustar liggesusers# Peng-Huang Censored Quantile Regression subroutine crqfnb(n,p,a1,c1,n1,X,y,c,B,g,m,r,s,d,u,wn,wp,info) # Input # a1 = p by n1 design matrix (X[c,] transposed) # c1 = n1 response vector -y[c] # X = n by p design matrix # y = n response vector # c = n censoring indicator # g = m grid vector of taus # d = residual n-vector, initialized == 1 # s = initialized cumhaz vector (rep(0,n)) # u = upper bound n-vector, initalized == 1 # Workspace # r = rhs p-vector # wn = work array n1 by 9 # wp = work array p by p+3 # Output # B = p by m matrix of estimated coefficients # m = final column dimension of of B # Note # d is used both for residuals and as a work vector for rqfnb. # u needs to be reinitialized to ones at each iteration integer n,p,n1,m,info,nit(3) double precision a1(p,n1),c1(n),X(n,p),y(n),c(n),B(p,m),g(m) double precision wn(n1,9),wp(p,p+3),r(p),s(n),d(n),u(n) double precision zero,half,one,beta,eps,dH parameter( zero = 0.0d0) parameter( half = 0.5d0) parameter( one = 1.0d0) parameter( beta = 0.99995d0) parameter( eps = 1.0d-8) do k = 2,m { dH = -log(one - g(k)) + log(one - g(k-1)) do i = 1,n { u(i) = one wn(i,1) = half # initialize dual vector if(d(i) >= zero) s(i) = s(i) + dH d(i) = c(i) - s(i) } call dgemv('T',n,p,one,X,n,d,1,zero,r,1) call rqfnb(n1,p,a1,c1,r,d,u,beta,eps,wn,wp,nit,info) if(info != 0) break call dcopy(p,wp,1,B(1,k-1),1) call dcopy(n,y,1,d,1) call dgemv('N',n,p,one,X,n,B(1,k-1),1,one,d,1) } m = k-1 return end quantreg/src/ratfor/qselect.r0000644000176200001440000000222114470134306016006 0ustar liggesusers#function to compute qth quantile of a sample of n observations subroutine qselect(n,x,q) integer n,k,l,r double precision x(n),q k=nint(q*n) l=1 r=n call select(n,x,l,r,k) q=x(k) return end #This is a ratfor implementation of the floyd-rivest algorithm--SELECT #Reference: CACM 1975, alg #489, p173, algol-68 version #Translation by Roger Koenker August, 1996. #As originally proposed mmax=600, and cs=cd=.5 #Calls blas routine dswap recursive subroutine select(n,x,l,r,k) integer n,m,l,r,k,ll,rr,i,j,mmax double precision x(n),z,s,d,t,fm,cs,cd parameter(cs = 0.5d0) parameter(cd = 0.5d0) parameter(mmax = 600) while(r>l){ if(r-l>mmax){ m=r-l+1 i=k-l+1 fm = dble(m) z=log(fm) s=cs*exp(2*z/3) d=cd*sqrt(z*s*(m-s)/fm)*sign(1,i-m/2) ll=max(l,nint(k-i*s/fm + d)) rr=min(r,nint(k+(m-i)*s/fm + d)) call select(n,x,ll,rr,k) } t=x(k) i=l j=r call dswap(1,x(l),1,x(k),1) if(x(r)>t)call dswap(1,x(r),1,x(l),1) while(it)j=j-1 } if(x(l)==t) call dswap(1,x(l),1,x(j),1) else{ j=j+1 call dswap(1,x(j),1,x(r),1) } if(j<=k)l=j+1 if(k<=j)r=j-1 } return end quantreg/src/ratfor/rls.r0000644000176200001440000000115513777107521015163 0ustar liggesusers#This is a simple recursive least squares routine Reference: Harvey TSM p. 100 # subroutine rls(n,p,x,y,b,A,Ax) integer n,p double precision x(p,n),y(n),b(p,n),A(p,p),Ax(p) double precision zero,one,mone,f,r,ddot data one/1.d0/ data mone/-1.d0/ data zero/0.d0/ # #On input: # # A = crossprod(x[1:p,1:p))^{-1} # b(,p) = A crossprod(x[1:p,1:p],y[1:p]) # do i = (p+1),n { call dgemv('N',p,p,one,A,p,x(1,i),1,zero,Ax,1) f = one + ddot(p,x(1,i),1,Ax,1) r = (y(i)-ddot(p,x(1,i),1,b(1,i-1),1))/f call daxpy(p,one,b(1,i-1),1,b(1,i),1) call daxpy(p,r,Ax,1,b(1,i),1) call dger(p,p,mone/f,Ax,1,Ax,1,A,p) } return end quantreg/src/ratfor/pfnb.r0000644000176200001440000000711413767155411015311 0ustar liggesusers# multiple tau estimation with fnb algorithm and globbing # Input: # n = full sample size # p = parametric dimension of model # m = number of quantiles to be estimated # a = p by n (transposed) design matrix # y = n-vector of responses # q = m-vector of quantiles to be estimated # r = residual vector from fit for q[1] # b = coefficient matrix # band = confidence band (see rq.fit.pfnb) # m0 = initial sample size default is n^(2/3) * p^(1/2) # d = n-vector of ones # u = n-vector of ones # wn = 9*n work array # wp = p(p+3) work array # aa = n by p array for globbed design matrix # yy = n vector for globbed response matrix # slo = n-vector of boolean integers # shi = n-vector of boolean integers # rhs = p-vector for right hand side # glob = p-vector for glob # ghib = p-vector for ghib # nit = 3-vector of iteration counts # info = flag for convergence # Maybe there should be a control object # Possible control parameter m0 # and/or work storage could be better rationalized. subroutine pfnb(n,p,m,a,y,q,r,b,band,m0,d,u,wn,wp, aa,yy,slo,shi,rhs,glob,ghib,nit,info) integer n,p,m,kk(2),mm,m0,nit(5,m),info,sumbad integer i,j,k,slo(n),shi(n),ifix,ibad logical notopt double precision a(p,n),y(n),r(n),q(m),d(n),u(n),b(p,m) double precision wn(n,9), wp(p,(p+3)),band(n),qk(2) double precision glob(p),ghib(p),aa(p,n),yy(n),rhs(p) double precision zero,one,tau,beta,eps,big,fm,fn parameter(zero = 0.0d0) parameter(one = 1.0d0) parameter(beta = 0.99995d0) parameter(big = 1.0d+10) parameter(eps = 1.0d-06) do iq = 1,m { notopt = .true. tau = q(iq) mm = m0 ifix = 0 ibad = 0 while (notopt) { ibad = ibad + 1 fm = mm fn = dble(n) kk(1) = int(n * dmax1(1./fn, tau - fm/(2 * fn))) + 1 kk(2) = int(n * dmin1(tau + fm/(2. * fn), (fn - 1)/fn)) do i = 1,n u(i) = r(i)/band(i) call kuantiles(kk,2,n,u) qk(1) = u(kk(1)) qk(2) = u(kk(2)) call iphil(n,0,slo) call iphil(n,0,shi) do i = 1,n{ if(r(i) < (band(i) * qk(1))) slo(i) = 1 else if(r(i) > (band(i) * qk(2))) shi(i) = 1 } while (notopt) { ifix = ifix + 1 call dphil(p,zero,glob) call dphil(p,zero,ghib) call dphil(n,one,d) call dphil(n,one,u) k = 0 do i = 1,n{ if(slo(i) == 0 & shi(i) == 0){ k = k + 1 call dcopy(p,a(1,i),1,aa(1,k),1) yy(k) = -y(i) } else if (slo(i) == 1) { do j = 1,p glob(j) = glob(j) + a(j,i) } else if (shi(i) == 1) { do j = 1,p ghib(j) = ghib(j) + a(j,i) } } call dcopy(p,glob,1,aa(1,k+1),1) call dcopy(p,ghib,1,aa(1,k+2),1) yy(k+1) = big yy(k+2) = -big call dgemv('N',p,k+2,one-tau,aa,p,d,1,zero,rhs,1) call dscal(k+2,zero,wn,1) call daxpy(k+2,one-tau,u,1,wn,1) call rqfnb(k+2,p,aa,yy,rhs,d,u,beta,eps,wn,wp,nit(1,iq),info) call dcopy(p,wp,1,b(1,iq),1) call dcopy(n,y,1,r,1) call dgemv('T',p,n,one,a,p,b(1,iq),1,one,r,1) # Check predicted signs of residuals (in r) sumbad = 0 do i = 1,n { if((r(i) > 0) & slo(i) == 1){ slo(i) = 0 sumbad = sumbad + 1 } if((r(i) < 0) & shi(i) == 1){ shi(i) = 0 sumbad = sumbad + 1 } } if(sumbad > 0) { if (sumbad > 0.1 * mm) { mm = min(2 * mm, n) break } } else notopt = .false. } nit(4,iq) = ifix nit(5,iq) = ibad } } return end subroutine iphil(n,a,v) integer n,i,a,v(n) do i = 1,n v(i) = a return end subroutine dphil(n,a,v) integer i,n double precision a,v(n) do i = 1,n v(i) = a return end quantreg/src/crqfnb.f0000644000176200001440000000207513752023347014323 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine crqfnb(n,p,a1,c1,n1,x,y,c,b,g,m,r,s,d,u,wn,wp,info) integer n,p,n1,m,info,nit(3) double precision a1(p,n1),c1(n),x(n,p),y(n),c(n),b(p,m),g(m) double precision wn(n1,9),wp(p,p+3),r(p),s(n),d(n),u(n) double precision zero,half,one,beta,eps,dh parameter( zero = 0.0d0) parameter( half = 0.5d0) parameter( one = 1.0d0) parameter( beta = 0.99995d0) parameter( eps = 1.0d-8) do23000 k = 2,m dh = -log(one - g(k)) + log(one - g(k-1)) do23002 i = 1,n u(i) = one wn(i,1) = half if(d(i) .ge. zero)then s(i) = s(i) + dh endif d(i) = c(i) - s(i) 23002 continue 23003 continue call dgemv('T',n,p,one,x,n,d,1,zero,r,1) call rqfnb(n1,p,a1,c1,r,d,u,beta,eps,wn,wp,nit,info) if(info .ne. 0)then goto 23001 endif call dcopy(p,wp,1,b(1,k-1),1) call dcopy(n,y,1,d,1) call dgemv('N',n,p,one,x,n,b(1,k-1),1,one,d,1) 23000 continue 23001 continue m = k-1 return end quantreg/src/boot.f0000644000176200001440000000361213777105447014022 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine pwy(m,n,k,m5,n2,a,c,b,t,toler,ift,x,e,s, wa,wb) double precision b(m),a(k,n),x(n,k) double precision wa(m5,n2),wb(m),e(m),c(m,n) double precision t,toler integer m,n,k,m5,n2,ift integer s(m) do23000 i=1,k call dcopy(n,a(i,1),k,c(m,1),m) call rq0(m,n,m5,n2,c,b,t,toler,ift,x(1,i),e,s,wa,wb) 23000 continue 23001 continue return end subroutine xys(mofn,m,n,k,mofn5,n2,a,b,tau,toler,ift,x,e,s, wa,wb, *aa,bb,ss) double precision b(m),a(m,n),x(n,k) double precision wa(mofn5,n2),wb(mofn) double precision aa(mofn,n),bb(mofn),e(mofn) double precision tau,toler integer ss(mofn,k),s(mofn),mofn,m,n,k,mofn5,n2,ift(k) do23002 i=1,k do23004 ii=1,mofn bb(ii)=b(ss(ii,i)) do23006 jj=1,n aa(ii,jj)=a(ss(ii,i),jj) 23006 continue 23007 continue 23004 continue 23005 continue call rq0(mofn,n,mofn5,n2,aa,bb,tau,toler,ift(i),x(1,i),e,s,wa,wb) 23002 continue 23003 continue return end subroutine wxy(m,n,k,m5,n2,a,b,tau,toler,ift,x,e,s,wa,wb,aa,bb,w) double precision b(m),a(m,n),x(n,k) double precision w(m,k),wa(m5,n2),wb(m) double precision aa(m,n),bb(m),e(m) double precision tau,toler integer s(m),m,n,k,m5,n2,ift(k) do23008 i=1,k do23010 ii=1,m bb(ii)=b(ii)*w(ii,i) do23012 jj=1,n aa(ii,jj)=a(ii,jj)*w(ii,i) 23012 continue 23013 continue 23010 continue 23011 continue call rq0(m,n,m5,n2,aa,bb,tau,toler,ift(i),x(1,i),e,s,wa,wb) 23008 continue 23009 continue return end subroutine heqfy(n,p,r,x,b,y) integer n,p,r double precision x(n,p),b(p,n,r),y(n,r),ddot do23014 i=1,r do23016 j=1,n y(j,i)=ddot(p,x(j,1),n,b(1,j,i),1) 23016 continue 23017 continue 23014 continue 23015 continue return end quantreg/src/pfnb.f0000644000176200001440000000645313767155436014014 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine pfnb(n,p,m,a,y,q,r,b,band,m0,d,u,wn,wp, aa,yy,slo,shi,r *hs,glob,ghib,nit,info) integer n,p,m,kk(2),mm,m0,nit(5,m),info,sumbad integer i,j,k,slo(n),shi(n),ifix,ibad logical notopt double precision a(p,n),y(n),r(n),q(m),d(n),u(n),b(p,m) double precision wn(n,9), wp(p,(p+3)),band(n),qk(2) double precision glob(p),ghib(p),aa(p,n),yy(n),rhs(p) double precision zero,one,tau,beta,eps,big,fm,fn parameter(zero = 0.0d0) parameter(one = 1.0d0) parameter(beta = 0.99995d0) parameter(big = 1.0d+10) parameter(eps = 1.0d-06) do23000 iq = 1,m notopt = .true. tau = q(iq) mm = m0 ifix = 0 ibad = 0 23002 if(notopt)then ibad = ibad + 1 fm = mm fn = dble(n) kk(1) = int(n * dmax1(1./fn, tau - fm/(2 * fn))) + 1 kk(2) = int(n * dmin1(tau + fm/(2. * fn), (fn - 1)/fn)) do23004 i = 1,n u(i) = r(i)/band(i) 23004 continue 23005 continue call kuantiles(kk,2,n,u) qk(1) = u(kk(1)) qk(2) = u(kk(2)) call iphil(n,0,slo) call iphil(n,0,shi) do23006 i = 1,n if(r(i) .lt. (band(i) * qk(1)))then slo(i) = 1 else if(r(i) .gt. (band(i) * qk(2)))then shi(i) = 1 endif endif 23006 continue 23007 continue 23012 if(notopt)then ifix = ifix + 1 call dphil(p,zero,glob) call dphil(p,zero,ghib) call dphil(n,one,d) call dphil(n,one,u) k = 0 do23014 i = 1,n if(slo(i) .eq. 0 .and. shi(i) .eq. 0)then k = k + 1 call dcopy(p,a(1,i),1,aa(1,k),1) yy(k) = -y(i) else if(slo(i) .eq. 1)then do23020 j = 1,p glob(j) = glob(j) + a(j,i) 23020 continue 23021 continue else if(shi(i) .eq. 1)then do23024 j = 1,p ghib(j) = ghib(j) + a(j,i) 23024 continue 23025 continue endif endif endif 23014 continue 23015 continue call dcopy(p,glob,1,aa(1,k+1),1) call dcopy(p,ghib,1,aa(1,k+2),1) yy(k+1) = big yy(k+2) = -big call dgemv('N',p,k+2,one-tau,aa,p,d,1,zero,rhs,1) call dscal(k+2,zero,wn,1) call daxpy(k+2,one-tau,u,1,wn,1) call rqfnb(k+2,p,aa,yy,rhs,d,u,beta,eps,wn,wp,nit(1,iq),info) call dcopy(p,wp,1,b(1,iq),1) call dcopy(n,y,1,r,1) call dgemv('T',p,n,one,a,p,b(1,iq),1,one,r,1) sumbad = 0 do23026 i = 1,n if((r(i) .gt. 0) .and. slo(i) .eq. 1)then slo(i) = 0 sumbad = sumbad + 1 endif if((r(i) .lt. 0) .and. shi(i) .eq. 1)then shi(i) = 0 sumbad = sumbad + 1 endif 23026 continue 23027 continue if(sumbad .gt. 0)then if(sumbad .gt. 0.1 * mm)then mm = min(2 * mm, n) goto 23013 endif else notopt = .false. endif goto 23012 endif 23013 continue nit(4,iq) = ifix nit(5,iq) = ibad goto 23002 endif 23003 continue 23000 continue 23001 continue return end subroutine iphil(n,a,v) integer n,i,a,v(n) do23036 i = 1,n v(i) = a 23036 continue 23037 continue return end subroutine dphil(n,a,v) integer i,n double precision a,v(n) do23038 i = 1,n v(i) = a 23038 continue 23039 continue return end quantreg/src/kuantiles.f0000644000176200001440000000042713752203220015034 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine kuantiles(k,m,n,x) integer i,j,k(m),m,n double precision x(n) j = 0 do23000 i = 1,m call dsel05(k(i)-j,n-j,x(j+1)) j = k(i) 23000 continue 23001 continue return end quantreg/src/sparskit2.f0000644000176200001440000003035013777261365015002 0ustar liggesusersc----------------------------------------------------------------------c subroutine amub (nrow,ncol,job,a,ja,ia,b,jb,ib, * c,jc,ic,nzmax,iw,ierr) double precision a(*), b(*), c(*) integer ja(*),jb(*),jc(*),ia(nrow+1),ib(*),ic(*),iw(ncol) c----------------------------------------------------------------------- c performs the matrix by matrix product C = A B c----------------------------------------------------------------------- c on entry: c --------- c nrow = integer. The row dimension of A = row dimension of C c ncol = integer. The column dimension of B = column dimension of C c job = integer. Job indicator. When job = 0, only the structure c (i.e. the arrays jc, ic) is computed and the c real values are ignored. c c a, c ja, c ia = Matrix A in compressed sparse row format. c c b, c jb, c ib = Matrix B in compressed sparse row format. c c nzmax = integer. The length of the arrays c and jc. c amub will stop if the result matrix C has a number c of elements that exceeds exceeds nzmax. See ierr. c c on return: c---------- c c, c jc, c ic = resulting matrix C in compressed sparse row sparse format. c c ierr = integer. serving as error message. c ierr = 0 means normal return, c ierr .gt. 0 means that amub stopped while computing the c i-th row of C with i=ierr, because the number c of elements in C exceeds nzmax. c c work arrays: c------------ c iw = integer work array of length equal to the number of c columns in B. c Note: c------- c The row dimension of B is not needed. However there is no checking c on the condition that ncol(A) = nrow(B). c c----------------------------------------------------------------------- double precision scal logical values values = (job .ne. 0) len = 0 ic(1) = 1 ierr = 0 c initialize array iw. do 1 j=1, ncol iw(j) = 0 1 continue c do 500 ii=1, nrow c row i do 200 ka=ia(ii), ia(ii+1)-1 if (values) scal = a(ka) jj = ja(ka) do 100 kb=ib(jj),ib(jj+1)-1 jcol = jb(kb) jpos = iw(jcol) if (jpos .eq. 0) then len = len+1 if (len .gt. nzmax) then ierr = ii return endif jc(len) = jcol iw(jcol)= len if (values) c(len) = scal*b(kb) else if (values) c(jpos) = c(jpos) + scal*b(kb) endif 100 continue 200 continue do 201 k=ic(ii), len iw(jc(k)) = 0 201 continue ic(ii+1) = len+1 500 continue return c-------------end-of-amub----------------------------------------------- c----------------------------------------------------------------------- end c----------------------------------------------------------------------- subroutine amudia (nrow,job, a, ja, ia, diag, b, jb, ib) double precision a(*), b(*), diag(*) integer ja(*),jb(*), ia(nrow+1),ib(nrow+1) c----------------------------------------------------------------------- c performs the matrix by matrix product B = A * Diag (in place) c----------------------------------------------------------------------- c on entry: c --------- c nrow = integer. The row dimension of A c c job = integer. job indicator. Job=0 means get array b only c job = 1 means get b, and the integer arrays ib, jb. c c a, c ja, c ia = Matrix A in compressed sparse row format. c c diag = diagonal matrix stored as a vector dig(1:n) c c on return: c---------- c c b, c jb, c ib = resulting matrix B in compressed sparse row sparse format. c c Notes: c------- c 1) The column dimension of A is not needed. c 2) algorithm in place (B can take the place of A). c----------------------------------------------------------------- do 1 ii=1,nrow c c scale each element c k1 = ia(ii) k2 = ia(ii+1)-1 do 2 k=k1, k2 b(k) = a(k)*diag(ja(k)) 2 continue 1 continue c if (job .eq. 0) return c do 3 ii=1, nrow+1 ib(ii) = ia(ii) 3 continue do 31 k=ia(1), ia(nrow+1) -1 jb(k) = ja(k) 31 continue return c----------------------------------------------------------------------- c-----------end-of-amudiag---------------------------------------------- end c----------------------------------------------------------------------c subroutine amux (n, x, y, a,ja,ia) double precision x(*), y(*), a(*) integer n, ja(*), ia(*) c----------------------------------------------------------------------- c A times a vector c----------------------------------------------------------------------- c multiplies a matrix by a vector using the dot product form c Matrix A is stored in compressed sparse row storage. c c on entry: c---------- c n = row dimension of A c x = real array of length equal to the column dimension of c the A matrix. c a, ja, c ia = input matrix in compressed sparse row format. c c on return: c----------- c y = real array of length n, containing the product y=Ax c c----------------------------------------------------------------------- c local variables c double precision t integer i, k c----------------------------------------------------------------------- do 100 i = 1,n c c compute the inner product of row i with vector x c t = 0.0d0 do 99 k=ia(i), ia(i+1)-1 t = t + a(k)*x(ja(k)) 99 continue c c store result in y(i) c y(i) = t 100 continue c return end c----------------------------------------------------------------------- subroutine aplb (nrow,ncol,job,a,ja,ia,b,jb,ib, * c,jc,ic,nzmax,iw,ierr) double precision a(*), b(*), c(*) integer ja(*),jb(*),jc(*),ia(nrow+1),ib(nrow+1),ic(nrow+1), * iw(ncol) c----------------------------------------------------------------------- c performs the matrix sum C = A+B. c----------------------------------------------------------------------- c on entry: c --------- c nrow = integer. The row dimension of A and B c ncol = integer. The column dimension of A and B. c job = integer. Job indicator. When job = 0, only the structure c (i.e. the arrays jc, ic) is computed and the c real values are ignored. c c a, c ja, c ia = Matrix A in compressed sparse row format. c c b, c jb, c ib = Matrix B in compressed sparse row format. c c nzmax = integer. The length of the arrays c and jc. c amub will stop if the result matrix C has a number c of elements that exceeds exceeds nzmax. See ierr. c c on return: c---------- c c, c jc, c ic = resulting matrix C in compressed sparse row sparse format. c c ierr = integer. serving as error message. c ierr = 0 means normal return, c ierr .gt. 0 means that amub stopped while computing the c i-th row of C with i=ierr, because the number c of elements in C exceeds nzmax. c c work arrays: c------------ c iw = integer work array of length equal to the number of c columns in A. c c----------------------------------------------------------------------- logical values values = (job .ne. 0) ierr = 0 len = 0 ic(1) = 1 do 1 j=1, ncol iw(j) = 0 1 continue c do 500 ii=1, nrow c row i do 200 ka=ia(ii), ia(ii+1)-1 len = len+1 jcol = ja(ka) if (len .gt. nzmax) goto 999 jc(len) = jcol if (values) c(len) = a(ka) iw(jcol)= len 200 continue c do 300 kb=ib(ii),ib(ii+1)-1 jcol = jb(kb) jpos = iw(jcol) if (jpos .eq. 0) then len = len+1 if (len .gt. nzmax) goto 999 jc(len) = jcol if (values) c(len) = b(kb) iw(jcol)= len else if (values) c(jpos) = c(jpos) + b(kb) endif 300 continue do 301 k=ic(ii), len iw(jc(k)) = 0 301 continue ic(ii+1) = len+1 500 continue return 999 ierr = ii return c------------end of aplb ----------------------------------------------- c----------------------------------------------------------------------- end subroutine csrmsr (n,a,ja,ia,ao,jao,wk,iwk,nnzao,ierr) double precision a(*),ao(*),wk(n) integer ia(n+1),ja(*),jao(*),iwk(n+1),nnzao,ierr c----------------------------------------------------------------------- c Compressed Sparse Row to Modified - Sparse Row c Sparse row with separate main diagonal c----------------------------------------------------------------------- c converts a general sparse matrix a, ja, ia into c a compressed matrix using a separated diagonal (referred to as c the bell-labs format as it is used by bell labs semi conductor c group. We refer to it here as the modified sparse row format. c Note: this has been coded in such a way that one can overwrite c the output matrix onto the input matrix if desired by a call of c the form c c call csrmsr (n, a, ja, ia, a, ja, wk,iwk) c c In case ao, jao, are different from a, ja, then one can c use ao, jao as the work arrays in the calling sequence: c c call csrmsr (n, a, ja, ia, ao, jao, ao,jao) c c----------------------------------------------------------------------- c c on entry : c--------- c a, ja, ia = matrix in csr format. note that the c algorithm is in place: ao, jao can be the same c as a, ja, in which case it will be overwritten on it c upon return. c nnzao = the number of non-zero entries in ao, jao c c on return : c----------- c c ao, jao = sparse matrix in modified sparse row storage format: c + ao(1:n) contains the diagonal of the matrix. c + ao(n+2:nnz) contains the nondiagonal elements of the c matrix, stored rowwise. c + jao(n+2:nnz) : their column indices c + jao(1:n+1) contains the pointer array for the nondiagonal c elements in ao(n+2:nnz) and jao(n+2:nnz). c i.e., for i .le. n+1 jao(i) points to beginning of row i c in arrays ao, jao. c here nnz = number of nonzero elements+1 c ierr: c = -1 : length of ao, jao < itpr c c work arrays: c------------ c wk = real work array of length n c iwk = integer work array of length n+1 c c notes: c------- c Algorithm is in place. i.e. both: c c call csrmsr (n, a, ja, ia, ao, jao, ao,jao) c (in which ao, jao, are different from a, ja) c and c call csrmsr (n, a, ja, ia, a, ja, wk,iwk) c (in which wk, jwk, are different from a, ja) c are OK. c-------- c coded by Y. Saad Sep. 1989. Rechecked Feb 27, 1990. c Modified by Pin Ng on June 11, 2002 to provide warning when c iptr > nnzao+1 c----------------------------------------------------------------------- icount = 0 c c store away diagonal elements and count nonzero diagonal elements. c do 1 i=1,n wk(i) = 0.0d0 iwk(i+1) = ia(i+1)-ia(i) do 2 k=ia(i),ia(i+1)-1 if (ja(k) .eq. i) then wk(i) = a(k) icount = icount + 1 iwk(i+1) = iwk(i+1)-1 endif 2 continue 1 continue c c compute total length c iptr = n + ia(n+1) - icount if (iptr .gt. nnzao+1) then ierr = -1 return endif c c copy backwards (to avoid collisions) c do 500 ii=n,1,-1 do 100 k=ia(ii+1)-1,ia(ii),-1 j = ja(k) if (j .ne. ii) then ao(iptr) = a(k) jao(iptr) = j iptr = iptr-1 endif 100 continue 500 continue c c compute pointer values and copy wk(*) c jao(1) = n+2 do 600 i=1,n ao(i) = wk(i) jao(i+1) = jao(i)+iwk(i+1) 600 continue return c------------ end of subroutine csrmsr --------------------------------- c----------------------------------------------------------------------- end quantreg/src/rqfnc.f0000644000176200001440000001564114470133740014161 0ustar liggesusersC Output from Public domain Ratfor, version 1.05 subroutine rqfnc(n1,n2,p,a1,y,a2,r,rhs,d1,d2,u,beta,eps,wn1,wn2,wp *,nit,info) integer n1,n2,p,info,nit(3) double precision a1(p,n1),a2(p,n2),y(n1),r(n2),rhs(p),d1(n1),d2(n2 *),u(n1) double precision wn1(n1,9),wn2(n2,6),wp(p,p+3) double precision one,beta,eps parameter(one = 1.0d0) call lpfnc(n1,n2,p,a1,y,a2,r,rhs,d1,d2,u,beta,eps,wn1(1,1),wn2(1,1 *),wn1(1,2), wp(1,1),wn1(1,3),wn2(1,2),wn1(1,4),wn1(1,5),wn2(1,3),w *n1(1,6), wp(1,2),wn1(1,7),wn2(1,4),wn1(1,8),wn1(1,9),wn2(1,5),wn2( *1,6), wp(1,3),wp(1,4),nit,info) return end subroutine lpfnc(n1,n2,p,a1,c1,a2,c2,b,d1,d2,u,beta,eps,x1,x2,s, y *,z1,z2,w,dx1,dx2,ds,dy,dz1,dz2,dw,dr1,dr2,r2, rhs,ada,nit,info) integer n1,p,i,info,nit(3),maxit double precision a1(p,n1),a2(p,n2),c1(n1),c2(n2),b(p) double precision zero,one,mone,big,ddot,dmax1,dmin1,dxdz1,dxdz2,ds *dw double precision deltap,deltad,beta,eps,mu,gap,g double precision x1(n1),x2(n2),u(n1),s(n1),y(p),z1(n1),z2(n2),w(n1 *) double precision d1(n1),d2(n2),rhs(p),ada(p,p) double precision dx1(n1),dx2(n2),ds(n1),dy(p),dz1(n1),dz2(n2),dw(n *1) double precision dr1(n1),dr2(n2),r2(n2) parameter(zero = 0.0d0) parameter(one = 1.0d0) parameter(mone = -1.0d0) parameter(big = 1.0d+20) parameter(maxit = 500) nit(1)=0 nit(2)=0 nit(3)=n1 call dgemv('N',p,n1,one,a1,p,c1,1,zero,y,1) do23000 i=1,n1 d1(i)=one 23000 continue 23001 continue do23002 i=1,n2 d2(i)=zero z2(i)=one 23002 continue 23003 continue call stepy2(n1,n2,p,a1,d1,a2,d2,y,ada,info) if(info .ne. 0)then return endif call dcopy(n1,c1,1,s,1) call dgemv('T',p,n1,mone,a1,p,y,1,one,s,1) do23006 i=1,n1 if(dabs(s(i)) .lt. eps)then z1(i)=dmax1(s(i),zero)+eps w(i)=dmax1(-s(i),zero)+eps else z1(i)=dmax1(s(i),zero) w(i)=dmax1(-s(i),zero) endif s(i)=u(i)-x1(i) 23006 continue 23007 continue gap = ddot(n1,z1,1,x1,1)+ddot(n2,z2,1,x2,1)+ddot(n1,w,1,s,1) 23010 if(gap .gt. eps .and. nit(1).lt.maxit)then nit(1)=nit(1)+1 call dcopy(n2,c2,1,r2,1) call dgemv('T',p,n2,mone,a2,p,y,1,one,r2,1) call dcopy(p,b,1,dy,1) call dgemv('N',p,n1,mone,a1,p,x1,1,one,dy,1) call dgemv('N',p,n2,mone,a2,p,x2,1,one,dy,1) do23012 i = 1,n1 d1(i)=one/(z1(i)/x1(i) + w(i)/s(i)) ds(i)=z1(i)-w(i) dz1(i)=d1(i)*ds(i) 23012 continue 23013 continue do23014 i = 1,n2 d2(i)=x2(i)/z2(i) dz2(i)=d2(i)*r2(i) 23014 continue 23015 continue call dgemv('N',p,n1,one,a1,p,dz1,1,one,dy,1) call dgemv('N',p,n2,one,a2,p,dz2,1,one,dy,1) call dcopy(p,dy,1,rhs,1) call stepy2(n1,n2,p,a1,d1,a2,d2,dy,ada,info) if(info .ne. 0)then return endif call dgemv('T',p,n1,one,a1,p,dy,1,mone,ds,1) deltap=big deltad=big do23018 i=1,n1 dx1(i)=d1(i)*ds(i) ds(i)=-dx1(i) dz1(i)=-z1(i)*(dx1(i)/x1(i) + one) dw(i)=-w(i)*(ds(i)/s(i) + one) if(dx1(i).lt.0)then deltap=dmin1(deltap,-x1(i)/dx1(i)) endif if(ds(i).lt.0)then deltap=dmin1(deltap,-s(i)/ds(i)) endif if(dz1(i).lt.0)then deltad=dmin1(deltad,-z1(i)/dz1(i)) endif if(dw(i).lt.0)then deltad=dmin1(deltad,-w(i)/dw(i)) endif 23018 continue 23019 continue call dcopy(n2,r2,1,dx2,1) call dgemv('T',p,n2,one,a2,p,dy,1,mone,dx2,1) do23028 i=1,n2 dx2(i)=d2(i)*dx2(i) dz2(i)=-z2(i)*(dx2(i)/x2(i) + one) if(dx2(i).lt.0)then deltap=dmin1(deltap,-x2(i)/dx2(i)) endif if(dz2(i).lt.0)then deltad=dmin1(deltad,-z2(i)/dz2(i)) endif 23028 continue 23029 continue deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) if(min(deltap,deltad) .lt. one)then nit(2)=nit(2)+1 mu = ddot(n1,x1,1,z1,1)+ddot(n2,x2,1,z2,1)+ddot(n1,s,1,w,1) g = mu + deltap*ddot(n1,dx1,1,z1,1)+ deltad*ddot(n1,dz1,1,x1,1)+ d *eltap*deltad*ddot(n1,dz1,1,dx1,1)+ deltap*ddot(n2,dx2,1,z2,1)+ del *tad*ddot(n2,dz2,1,x2,1)+ deltap*deltad*ddot(n2,dz2,1,dx2,1)+ delta *p*ddot(n1,ds,1,w,1)+ deltad*ddot(n1,dw,1,s,1) + deltap*deltad*ddot *(n1,ds,1,dw,1) mu = mu * ((g/mu)**3) /(dble(2*n1)+dble(n2)) do23036 i=1,n1 dsdw = ds(i)*dw(i) dr1(i)=d1(i)*(mu*(one/s(i)-one/x1(i))+ dx1(i)*dz1(i)/x1(i)-dsdw/s( *i)) 23036 continue 23037 continue do23038 i=1,n2 dr2(i)=d2(i)*(dx2(i)*dz2(i)/x2(i)-mu/x2(i)) 23038 continue 23039 continue call dswap(p,rhs,1,dy,1) call dgemv('N',p,n1,one,a1,p,dr1,1,one,dy,1) call dgemv('N',p,n2,one,a2,p,dr2,1,one,dy,1) call dpotrs('U',p,1,ada,p,dy,p,info) call dgemv('T',p,n1,one,a1,p,dy,1,zero,u,1) deltap=big deltad=big do23040 i=1,n1 dsdw = ds(i)*dw(i) dxdz1 = dx1(i)*dz1(i) dx1(i) = d1(i)*(u(i)-z1(i)+w(i))-dr1(i) ds(i) = -dx1(i) dz1(i) = -z1(i)+(mu - z1(i)*dx1(i) - dxdz1)/x1(i) dw(i) = -w(i)+(mu - w(i)*ds(i) - dsdw)/s(i) if(dx1(i).lt.0)then deltap=dmin1(deltap,-x1(i)/dx1(i)) endif if(ds(i).lt.0)then deltap=dmin1(deltap,-s(i)/ds(i)) endif if(dz1(i).lt.0)then deltad=dmin1(deltad,-z1(i)/dz1(i)) endif if(dw(i).lt.0)then deltad=dmin1(deltad,-w(i)/dw(i)) endif 23040 continue 23041 continue call dgemv('T',p,n2,one,a2,p,dy,1,zero,u,1) do23050 i=1,n2 dxdz2 = dx2(i)*dz2(i) dx2(i) = d2(i)*(u(i)-r2(i))-dr2(i) dz2(i) = -z2(i)+(mu - z2(i)*dx2(i) - dxdz2)/x2(i) if(dx2(i).lt.0)then deltap=dmin1(deltap,-x2(i)/dx2(i)) endif if(dz2(i).lt.0)then deltad=dmin1(deltad,-z2(i)/dz2(i)) endif 23050 continue 23051 continue deltap=dmin1(beta*deltap,one) deltad=dmin1(beta*deltad,one) endif call daxpy(n1,deltap,dx1,1,x1,1) call daxpy(n2,deltap,dx2,1,x2,1) call daxpy(n1,deltap,ds,1,s,1) call daxpy(p,deltad,dy,1,y,1) call daxpy(n1,deltad,dz1,1,z1,1) call daxpy(n2,deltad,dz2,1,z2,1) call daxpy(n1,deltad,dw,1,w,1) gap = ddot(n1,z1,1,x1,1)+ddot(n2,z2,1,x2,1)+ddot(n1,w,1,s,1) goto 23010 endif 23011 continue call daxpy(n1,mone,w,1,z1,1) call dswap(n1,z1,1,x1,1) return end subroutine stepy2(n1,n2,p,a1,d1,a2,d2,b,ada,info) integer n1,n2,p,i,j,k,info double precision a1(p,n1),a2(p,n2),b(p),d1(n1),d2(n2),ada(p,p),zer *o parameter(zero = 0.0d0) do23056 j=1,p do23058 k=1,p ada(j,k)=zero 23058 continue 23059 continue 23056 continue 23057 continue do23060 i=1,n1 call dsyr('U',p,d1(i),a1(1,i),1,ada,p) 23060 continue 23061 continue do23062 i=1,n2 call dsyr('U',p,d2(i),a2(1,i),1,ada,p) 23062 continue 23063 continue call dposv('U',p,1,ada,p,b,p,info) return end quantreg/NAMESPACE0000644000176200001440000001273014413563704013331 0ustar liggesusersuseDynLib("quantreg", .registration = TRUE) import(Matrix) importFrom('SparseM', t, chol, backsolve, as.matrix.csr) importFrom('MatrixModels', model.Matrix) importFrom('stats', approxfun, contrasts) importFrom("grDevices", "dev.new") importClassesFrom('MatrixModels', dsparseModelMatrix) importClassesFrom('SparseM', matrix.csr) # Export export( "AIC.nlrq", "AIC.rq", "AIC.rqs", "AIC.rqss", "akj", "anova.rq", "anova.rqlist", "anova.rqs", "bandwidth.rq", "boot.crq", "boot.rq", "boot.rq.mcmb", "boot.rq.pwy", "boot.rq.spwy", "boot.rq.wxy", "boot.rq.xy", "boot.rq.pxy","rq.fit.ppro","ChangeLog", "coef.crq", "coef.nlrq", "combos", "critval", "crq", "crq.fit.pen", "crq.fit.por", "crq.fit.por2", "crq.fit.pow", "Curv", "deviance.nlrq", "dither", "dynrq", "end.dynrq", "extractAIC.nlrq", "extractAIC.rq", "FAQ", "fitted.nlrq", "fitted.rqss", "formula.nlrq", "formula.rq", "index.dynrq", "KhmaladzeTest", "kselect", "kuantile", "kunique", "latex", "latex.summary.rqs", "latex.table", "latex.table.rq", "lm.fit.recursive", "logLik.nlrq", "logLik.rq", "logLik.rqs", "logLik.rqss", "lprq", "nlrq", "nlrq.control", "nlrqModel", "plot.qss1", "plot.qss2", "plot.rq.process", "plot.rqs", "plot.rqss", "plot.summary.crqs", "plot.summary.rqs", "plot.summary.rqss", "plot.table.rq", "predict.crq", "predict.crqs", "predict.nlrq", "predict.qss1", "predict.qss2", "predict.rq", "predict.rq.process", "predict.rqs", "predict.rqss", "print.anova.rq", "print.crq", "print.dynrq", "print.dynrqs", "print.nlrq", "print.rq", "print.rqs", "print.rqss", "print.summary.crq", "print.summary.crqs", "print.summary.dynrq", "print.summary.dynrqs", "print.summary.nlrq", "print.summary.rq", "print.summary.rqs", "print.summary.rqss", "qrisk", "qss", "qts1", "qss1", "qss2", "QTECox", "ranks", "rearrange", "resid.rqss", "residuals.nlrq", "rq", "rq.fit", "rq.fit.br", "rq.fit.fnb", "rq.fit.fnc", "rq.fit.hogg", "rq.fit.lasso", "rq.fit.pfn", "rq.fit.scad", "rq.fit.sfn", "rq.fit.sfnc", "rq.fit.conquer","rq.test.anowar", "rq.test.rank", "rq.wfit", "rqProcess", "rqs.fit", "rqss", "rqss.fit", "sfn.control", "sfnMessage", "srisk", "start.dynrq", "summary.crq", "summary.crqs", "summary.dynrqs", "summary.nlrq", "summary.rq", "summary.rqs", "summary.rqss", "table.rq", "tau.nlrq", "triogram.fidelity", "triogram.penalty", "untangle.specials", "ParetoTest", "Hill", "Hill.fit", "print.Hill", "summary.Hill", "print.summary.Hill", "Pickands.fit", "Pickands", "print.Pickands", "summary.Pickands", "print.summary.Pickands", "Pickands.fit", "Munge", "rq.fit.qfnb", "rq.fit.pfnb", "boot.rq.pwxy", "q489", "LassoLambdaHat") importFrom("grDevices", "dev.interactive", "devAskNewPage", "gray", "n2mfrow", "terrain.colors") importFrom("graphics", "abline", "contour", "lines", "matlines", "matplot", "par", "persp", "plot", "points", "polygon", "title") importFrom("MASS", "Null") importFrom("survival", "Surv") importFrom("methods", "as", "hasArg", "new") importFrom("utils", "flush.console", "modifyList") importFrom("stats", ".checkMFClasses", ".getXlevels", "AIC", "approx", "as.formula", "as.ts", "coef", "coefficients", "cycle", "model.matrix", "model.response", "rmultinom", "delete.response", "dnorm", "end", "fitted", "formula", "frequency", "getInitial", "hat", "is.empty.model", "is.stepfun", "knots", "lag", "lm", "lm.fit", "lm.wfit", "logLik", "lsfit", "median", "model.extract", "model.frame", "model.weights", "na.omit", "na.pass", "numericDeriv", "optim", "pchisq", "pf", "pnorm", "predict", "printCoefmat", "pt", "qnorm", "qt", "quantile", "reformulate", "relevel", "resid", "residuals", "rexp", "runif", "setNames", "start", "stepfun", "supsmu", "terms", "uniroot", "var", "napredict") S3method(AIC, nlrq) S3method(AIC, rq) S3method(AIC, rqs) S3method(AIC, rqss) S3method(anova, rq) S3method(anova, rqlist) S3method(anova, rqs) S3method(coef, crq) S3method(coef, nlrq) S3method(deviance, nlrq) S3method(extractAIC, nlrq) S3method(extractAIC, rq) S3method(fitted, nlrq) S3method(fitted, rqss) S3method(formula, nlrq) S3method(formula, rq) S3method(latex, summary.rqs) S3method(latex, table) S3method(latex, table.rq) S3method(logLik, nlrq) S3method(logLik, rq) S3method(logLik, rqs) S3method(logLik, rqss) S3method(plot, qss1) S3method(plot, qss2) S3method(plot, rq.process) S3method(plot, rqs) S3method(plot, rqss) S3method(plot, summary.crqs) S3method(plot, summary.rqs) S3method(plot, summary.rqss) S3method(plot, table.rq) S3method(predict, crq) S3method(predict, crqs) S3method(predict, nlrq) S3method(predict, qss1) S3method(predict, qss2) S3method(predict, rq) S3method(predict, rq.process) S3method(predict, rqs) S3method(predict, rqss) S3method(print, anova.rq) S3method(print, crq) S3method(print, dynrq) S3method(print, dynrqs) S3method(print, nlrq) S3method(print, rq) S3method(print, rqs) S3method(print, rqss) S3method(print, summary.crq) S3method(print, summary.crqs) S3method(print, summary.dynrq) S3method(print, summary.dynrqs) S3method(print, summary.nlrq) S3method(print, summary.rq) S3method(print, summary.rqs) S3method(print, summary.rqss) S3method(print, KhmaladzeTest) S3method(plot, KhmaladzeTest) S3method(residuals, nlrq) S3method(end, dynrq) S3method(start, dynrq) S3method(summary, crq) S3method(summary, crqs) S3method(summary, dynrqs) S3method(summary, nlrq) S3method(summary, rq) S3method(summary, rqs) S3method(summary, rqss) S3method(print, Hill) S3method(summary, Hill) S3method(print, summary.Hill) S3method(print, Pickands) S3method(summary, Pickands) S3method(print, summary.Pickands) S3method(plot, qts1) quantreg/inst/0000755000176200001440000000000014760372332013064 5ustar liggesusersquantreg/inst/doc/0000755000176200001440000000000014760373013013626 5ustar liggesusersquantreg/inst/doc/rq.pdf.asis0000644000176200001440000000010213513032730015663 0ustar liggesusers%\VignetteIndexEntry{quantreg: rq} %\VignetteEngine{R.rsp::asis} quantreg/inst/doc/crq.pdf.asis0000644000176200001440000000010313513032713016030 0ustar liggesusers%\VignetteIndexEntry{quantreg: crq} %\VignetteEngine{R.rsp::asis} quantreg/inst/doc/crq.pdf0000644000176200001440000144342514760373013015123 0ustar liggesusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 5012 /Filter /FlateDecode /N 84 /First 679 >> stream xœí\YwDZ~¿¿¢ßB„3½/9ŽÏ‘(Ñ–EI4IY²?ŒÀ!‰hÔ’_¿ªnƒ…W¡D÷!GBc–žªê¯ÖîiP )ŒP)+ŒÕ ƒðÂ#‚!ˆ(’6" %=5Biå…RB¯q"”“'By‡Æ ú9д…– ®‚ÐÊà; ­=ˆ$¡M´¸)´“¸¨„&–Z Îq#N •” â„Q½0ÚQ'aŒÃy„Ô ÷“0Þt&$4J˜d¨³°2âa#¬Fc¬°&à!ŒÓ ºXè!ŒBš(@L“pJÑɇ”pÖáy‡Œp!)a­p‰rÂK&@Nƒ®†4>@XÐ/ ïÁ"ûˆÁ8%| ¦EPà 肞`,ÀuNœœ‡@ÄA ƒ4Ñ/—D ]’¾^‰äqŸT"µ‡4Ð…L€ƒQÊ‘|ŽTGÊ…ú´<ô¡­Ä-( T!+4gè º$¤"E'¨Â*«ä"-Ð –tO’²3P]e¼ 3"pdÚ   ଈ ìÉÊAbP³ ‰† ^$+Òà *àè¾ûNÔ‡ÃÑt"þ{•âöJ­ãÖs¸Ü&na®ü¥ò—Î_ùy• ¨LáwQŒ†Óv1“«Ÿ·çýæÑè#X—\¥I§ª˜è‰ãfŒÈ(¹ÿI;ÝŽ{íD¤Ì¾>ûtÓR·ËV|ÿ}„ ö±Øëõ§mõ¬’ñ¨OEýÃèl„>¢~4Ÿ·ãÂR²\|¢òÉ¢~JœzSBÅ*@"—l%\À…Jb”0Å ÊE÷ÓÛ·S–á¨?|7“‡ü÷äUEî;(ÆÊãüþWÑï"P€ 0-g\%Éù¥­’"?óСýY%+½ÇèJ!(î$4»È£}¥ m* wµ^W‰ÂšR&} ‰|¨¢Ã\¢˜* ÚE¢w³k-D±”*E¹ÉÅ*!p: °âýÔ¶£HÚÛ¬·™HÑWˆl»HTE»ƒ@QV™Ò8U9ÊJWÁrZ®Œ¿§í$üª¢Ü<—È~ ‰vñ}äÍ*èŽDßf'‰ÎFoûÃÊídÜ0f‹Ük´­,¥ym‰Z˜€|÷­„B1T¸¡P¹T …Þ—õ˜Ü$'â7¿þFG0)PÀðv0ÒïQ3i‘üÁÿÙã“WG>x~‚Ê¡>ì'Óƒ«f kêð¸ôÆý›éhLå>jf]P,d"iÔL¨Lûuÿ|z5¡¢‹\cýâäɳG¯Áúôt™7ìb¹[aŽj+Þ~3ïŸÞüòãáàýh™5 ËUÖ>®ŽÙk+ÞîŽq¿9=~F¼Ïž®`®×ÇÖ@WÛ1·›™?ûíìçg?ùóUæë÷iù–¨›ÍÌ_?::z|ÌÌão³>pußëͼOŽ_¾ Þ§¿.\®óökßrÜj3ï§ŽNxܾËV½Æ[Þ—·ÜÌûÕñ«_ŸƒÇÏø·Yã¼â.u9ŒnqÃ|Ö?ŸÌÑÍȸŒ¬ŠeB’ò¹–f6%™M0JÏÎ|brGýþ&»'qkde5M¾êx”`ÖT4­½ÏŒbG‰DŠn!’FïLvéðu%w-á-fø3‘¸æ‚ò¾¡H¨O5­e(L#h.‘ÂIB0ïºW5ˆnç—°¾]&_VVN"g£4¥*'b΃dRB}¿•P öDËEY(«`Nv™vœíÌÊfái´2ƒsZ¸²ªòò[L•F…Õµªtj'vê¤ÀªFaª_MÀ¹ ´2X%„Æo ’‰•{˜‹d%¬ÉÆ]D:ù«–;Éd1_¦Õ¾Qh©±D%…é3®}‘”ÄÔ–½f§Sß´&ˆ¼âõÉ^F‰dgÏFJ‹¥ü@™0õN[D}üø¢µ§‹IÏ|5Ug‰tf¤3“É›,¡É L–Ëd&ô&—&&S±¥K&fÒ¬™¯­jW¸ÿ⪕«ÅÐz÷äðôáo§Tß-×·vC‘iïY\»Ø-õ¾²ëÌ oæ9ÈèÆé/óœÎ,ëÉÓ“'Oi–u¶Œ”¹†ÇÚoË©­ wãqvÕŽ‡msûç£ÛëAûé+¡ãÛ4­X„*Ò«©QlÞ+‹eùT2U€¿µ •ƒwpç:Ū†{Ú+‹4¡)¿ë¼~Hož¾HÚÀç[ˆäˆßP$r7ƒ0dƒª DÑtNïùP`+¯êgg”p?z¹®`ŽÔ#?í!gBË÷Ë5~¶P7žžpŽ®dúÔ%õœ=íI¡—ˆ®u `bqÄ.IÇ‹ù‰rU/hD†4÷YôÎ=h1“˜&Öién@>Î-©(F‡ÞQ#Òópã NxŽ}XÜ];ö*-ÄBSÚB[ Šß?ÑöE}îh3¯¬Ör¥Ã+_I.‚Ž’DÌ72ƒÜæN™q÷¸ÛÓBóº´¥Oç®q×»Ôvi»²å¶ F’Šr[ Ì@ÃVÕlØlL¤.Ø0ŠÅJw¥'­œxÚL…+QÓ=lÞ‹øRéS(3…r=ÅJÊ\ _n•D‰Ö½à1]7K`¬/AÅ„‹;ÇKÚçëKVá%Ùu†'«.Û÷'ë„›9BÊz\P´h€Òö‘Œ%¢Ä¹I3€ŽÙ(-2Œ©¢ívNV4 ð AM`UÐH»­Òì(åË©êyÞdù TÙ´-Lã:¦'˜“ÈŠ6’ѽÀâZË^§HZ•t ˜ uBAJ;Έ@&CC kÑŽÜ{õh›£\„ÒíÛ‚(7›¯Îø-®t:/Îs ÌíÆ®š6ÃqOOªÌmä`–[. rXã6÷à¡æ­;Ù!GôìO‰é<‡?2™ÈJp¤`¼í |¡Zn}¦ƒ¢ØGÒšÒ´@ §’ì”|"1"§‘ ¡Œ,ÐnFö'E©(ÅÌŠ"¸÷9iÙù ïl;å\±ÞÎÐÏQ?·Ëi7?¿ÈH9á‘U“¿J¢oq´>ÈÁ2‘=cB‡cƒ)1ߣ×¼Bj¸·Wô4X±'hžmÄ@žæ {‚c³O «'Ÿ±‰Ó4má‚rõœB–ß'g•ôä!¿6Ä¡¯¸»ù§{ìx$%ÔæˆâÃ(¬‡@¦äƒæô*ÞiJùÇìP^àzò%<#ÂñKꈒÏ£áÈ'i·›·Y‘ê´‘Ù¯˜Kà¢GqüÖr)Ñåv7k0ÏÖã,ë›·ÔYÏ:¡4âè ¬…ŒõÎ;Ù>(M£rf{°Ï¥)ÚfFٜ鶧D¨™hØšGUNA,K§Q2â:Ù#Ùå†CÇS¦ií>fŠžåNTéÐä•-¶÷²oIe²¥·ÃlÇÑ&avxºF£ÍU‹Ëe Iæè®×ü¬÷|W±Y>ÚÜLk‰ègÑõ`·VëݳäÝþ¡¸“ëM dAY.!Ⱦ2‰áŒH8D¶Sk‡IÒq䌞‹Ûľ%yL˜ öÆà¸_.’"áî#õÈÈ&Ö!âØ’=ßõKq'· T,GF§ÉxÉ~4oÚ¤ ,i®#IjC(z4|-bVîG«6‘-=r¾Õ¼zCaßpTôlËŠ®{ò¾RêÖež(ÇV¢Ø2¸Bñ9ñ:ÏyžcsŒ\˜å Z’ÜÆä* O6·mÚnn|áåK[zÄÿ oê¡9ueN1¦*'ª-fÇÌŸûX¹Šàš>§³Î]Ú¶çÔþ/I·i ÍN›yuûä+ƒV<¡Êcv”2)³•ɇ²Ü^_{žÏñÞ“R$\PÊùŽŸ/4yxÖPá{r›Ñé^ñœ[»¸vQéŽ)_!±Þægïùµî3t5k.k¨XN¦§Õ\cÅzÌìiŸ£.OR-ãAhãbš¹43,:Þ}fhËüÉ5vç.{Aâ¨È5×y¨;oÏÏ;Ë>‚:­Ìy’ì ë"[7›]²L¥ ã§ m'— µµãoº…^¦;K dV>DQu©Óy¢Õ:§ÎJÀjè.`κ½ºan¤Ë½ÿ®xü^ñXØÄÒ¤å÷¼¶9éѲ"ìTÔÍÍmÿò §ÑãôªÓ¢è^ÝÔoë^ÝÖ—u¿ÔÃúz\Oêi}[¿ jz H4ö94—Q^>Ê+šû˜JìkÆS)Fò÷|ÿ°?hé NY”Å•Íu»º·ôé´ô{‡—èŒÓÓi{ý ½Ûì¾O켊¬ß”Q`àó%Ü;†iºÃ<¨ׇõõõÓúYý¼~Q¿¬ëŸë“ú´>«_Õ¯ë7õ¯õo€£Ü\(oÛidz£ëë¦>¯ÏÛÎÛú¢¾lèÊå¸m¦í¸¾nïš››¦4×oÏñÕN&õ K\_Ñ›ú¦÷Gçv|5¸“þ%LÍä @O›ÛzzEÌyý¡þXìןêm‡¾™£oã:ú^®¢¿²Áµ ÿ¾²3ýYüú"ü ó>±Õ°`IyTÚn°)¯VGµ¼ƒôŽA¡Xùʃú Ã:bc:†!Á€Èpf¶’í¤_ÿ³~Wì`²AéYÝÛ)[Û‹Rr,z–å Åwéúó¾ö…°<¬±¿=fžÌý.Ãu”Ý$»àË Èq}Üï8ã/]wìÝNÛº¹†Mšá99æ¸é½k§ƒöb:;“ä¬ýqïöúbÐ~„ßFù÷¶5KZ·Ãsâ×þqÛ êöc> ¾ ÿýšÿ¿‡‹ê‹Ñí!ñª¾útsÕ‹ÐãuÓƒ0þõ‡m=ªGhááô‡%â£,D&´fî3¸ ¼þq;š¶çoÜ{v’à³|HAxÒ^÷ó0&í{1é\ÐÕ¸mëipŽöÃh;8êµãÑ–åfŽ&e)¿ðëX”Ys´¥ßCl Þôó„¯kOÙŽ2Ys—PE~#ð„tAØl‡ñ38Â&³«p,í߈Fð_Î`ä,¯J¸á¤ÔµÕl©C@t³Èæd_˜Ñégdë(¸UVöV-Å™4â+˜ŸÎxBQwË3O‰–V­Ü¯hå§7›{…°¼[±/j”ãÑÇlâÍx<úÍùm3æ@×ÎC^ ¸pMOôß7ƒvØkguI&Ò^ô‡ýé'.Jò¥Áè²ßkJ¯ûCøIŽN$žB‘ÒœÓ}›ëþ oG4í91QáíV«¯üÚä?–°g™‰rÒ,y/ªÀf)ÍôÖRÈeˆ;í®@¡¿STç(½¬ ¸x¢õÂs\3ÜåßNÝ«¿OƧ_»tpåÓ®3Ts¦?ÚPaÿ‚”„'½~?§­fBÉnò®n¦áÎöz‘sòe§à^ÉÉ\p_o›‘7dâ’l9Å.§×åĺ’F4ýÜk£Þ¨L3ô‡hQr5|®MˆV¶bîžTຼ§eïñ¨·:mÆÓbï´å-Ò•­NG`ûrØîO`ïàòpòéĦýÞ¤RH\l•€ÊarNGVO‡Óñèü6ŸâÁ—{¨êåûvü¾ß~à»iù®¦-–âxô¡ ēɴÝ`@Ô3É垦:KŽ®ÅA;œŒÆýá%÷R˽>;®òkªùÖŸò ¬Pþ2D)vTÉòªä9UÒƒ*Qì÷»ð]Úå»Ê$–¿;Q~·gÊ¢;‰an0·×Y3O<¦ˆÈÆ ?K±ô{ºç˜Mœ7ÓF˜²3©h1–³—7í°ì’§?`’¯ÝNpš‰0eŸ6ï1z>:§ÚfÒÎo—_˜­üììÜNæòÝN¯`‘{'£Ëv,žÚá;|¿Â}Ç$!1ºO 8êOD3¯Æo›a³(r}Óô/é7<äãð1<€˜IZ#¬[†}éþ$åŸfýˆ×QsÖ¾úÓ+¨ÐŽÇí…({üÑíYûéÃh ìñ~ò¿q‹82™€Ç_DÍ©=ºcÜ ÆÊ+Ù§uÁ©ãã³'oªÃÛÁ¢1º½³+ ÿoÎ/ É_Ä/4V‚¸RV¹¤÷UE/föiáæ{¯Û·ú@„ÊUþÄ»›fz5iñ~þn<à-kp+"ŸÉ"x3ý–Aìáø¬9Ø;˜âçÙOæcÄáùíGê;Fm>õa3˜Ì·ÇÏÜü»‹öâBÊÐJé>ôvpîq®ßJR@>?/—ï›ï¨É¸òi6œKôÃsçÏ9—Ïüž^v-¼ò–cÂendstream endobj 86 0 obj << /Filter /FlateDecode /Length 3552 >> stream xÚÅZYo$·~ׯèäi„h˜æÝÇÃ^¯ö®Œ8± g¦5’=‡<‡¥õ¯O$ûg5 œ í°›E²XUüê`—Ų(‹WeøýëõÅ?5U!½PÒšâú¦F o}á•ÒÔÅõ¢øvòñ¥œ´›=ü¿Ýasq9ÕÞN¾‚ö±ÿ6—ZNwÐZµØe&oÚ%<íZƒw["£aoÚÅññòûëÏym)jk­-¨k_LÎX^û Ž\¶;ž÷ äšÀNøãehíx>i YŠº¬%Î7µµ(½.¦R ¦ûzƒÜü|©*GÌÁßáRùÉ;˜Y«Éö†_¯pGH€ƒ¶w´èÑ“æÀ_£8f v7S”Òm³¾Ç¤]n©‹O®/~º ï²E% §«º˜¯/¾ý¾,ðú󢺮Š"ZÆ ùªx{ñURÕ@e®,jQ;åp—ÊׂԜtÂûŠ·ùÑ,þ€6ó±2žŒÖÍ4•Ö ]Áo%L¥x¦ëÛ !غªªÉÏak ÷É @==¢jb€ä·¼EÂã;&Zƒ"Aè‹0ÿw¥4¨’EX‡T„Üï±w»á× Þ ü¶Ø-‹Ø|óê¢ø–h‚‘ÀÜÁHx¦¾ˆÒÚ¶|ï|r¢Ê²jFcqœ„©Å%˜j=y}¸¤ÙÐ†š ‚‡]²,økÙü£˜BMeÕð XÀø¥CÁ @‰5$æGeË ãÛohs ®Ì»‚ç&³#-MD Û1µ4êÇÂÏ&È:æ6Zî½áóN½8è¶å6ðCÉÎqâvfÆ=îçx¨pG3䃠;ã¦qªÛ¸OKÓENwÝòaOÖñi"1ÌhA’U9”2»Û®a¨Ò¤v=-…[PªÛ´? o™˜%8‹† zhóðKs£0Âôë€ÃÑ÷Í’$€FQzÇK’1PG«nvÚêrÇì[yX1®>'ðEоøÇñÅÏajÕ*'2sIº¥!Mdg»!KMéže83ÙÂiÔ|úøEx¿ÞF ÁÐXÜò#ë»ÛÒ¯X ¹MÅ€¼@cI([&OÊöÇô„öÈÏ÷¤Ú{²'ZþD%q»D‚zn~!ëYDF;s^ño¶»œpö Vb[K;ip1²l\cNœ§ÕHµÚOþqY`¢ÕÇìž'£M‘ì ò(ŒuO<ݺƒ:þ÷<2Ú’íÄÜò æ{f›÷æÝ3Aœ–<<ßö c ÇR i‘/£ØXƒ%‘{É?ÎI7QMMTÿ"‘„qè¾N µì¹ï9"i! ©-ðÄ!@rîI-*ò’D@.—Äñ#‚eœ´êÐ^Hx†üÔÅ.x5". ÁQ0§„ª#ð{Üt±„å`ì.EŸHâ7óaM˜,ù)ås± ­GÑV»KQKß]qX pöv»n™¾Ù¿CP»;ØFò9¯NQη¢V«aÜØþûØÝ%iwA'ë&DÅ#ÝÆÌhy»J-ör<~Á›KžüR0tîl~ýÀR†¼ôŒŒÏ¢±Þ±$Ë |.&ËÊ _‡Äÿ‹àQü B«&‹}.Õ6N+{>³cö±i;©> Õ‰cqÅ9«×!@Ù¬Úh)Œ7ç¦Õ©òa„6ŽªÊ€œ…8¡‚m…<:dy¶,'¯S¡ƒâQà ržã<†‡§áóIYB:G+WN^‰Q³‹8gƒµ“ç€5„ f ÖWÏ8§Þ]8ünH¬z°À† ÃL^ÐOJmèl7üžŒ~ j &·l–»Þ1†~ÛÐ,g$à¨î÷Ã(‡ôσËŽ Çã)Ç㢅…®aÖ€NüŠk³Ž½„#èeMYOîüÛÏìÒfìÛRˆ>Ì÷b6„´¯pâcêBiâ°} îí.jó!-Ô.(Î_p›¦ÑmèÛG•Î 1ÿÝçdó\ÜE,°zwV𥽇¸üìv–J c÷î¬ØV'ŒÆßŲ£ë¼,´×ø~ÁFF/ÈF½”gÿµ]-˜†Ë;»€ÞN^u*̬‘ ‡m³ëÞð¡ÙD7áÝØ×Î%Ï2Nb%ûà"+'*íydåC /PªÂ‹Ú—Dè„öAR8í£‚3À¸.aŽêÃìªRX™R¤PÜUv°œÒ¶0–ïþ’á 6 Œí?Õ¼(+[(ájßË]2Œ×BúÈвµ·rs¹ÞÜ4l“cWZØQ2Œ=W.ÚD_`h­]aë €x`7¼æ‘QëçUèA…®¯Â Æu󘓒V`i 79Ö,ÄÐ D_d\ÃyžWmÎ r+e²sš÷ι̃®s R“/ݰzú¾9\DÐé×t©R¥ {°Á‘Ë¥1 P´égôœ•ç=¥U¢´vè)¿Êˆ¨%襆F£Acµ÷Žæ F%íPŒ}/¨…tˆÖ‰è‡ÌzJh«Æ¾t¸–w>·ÖcœƒÿŒîßdaÀÓ¨îüj“Ó¿e™Žêy«+;ì~Ì{4mžw§hiªq„+ _ˆ=*p¾c·2:{•^ì€$!냶JÈ ³i®ð ƒ©^$Ô±óî 5lS©áŠÖ»çB,óÿ ±¦ªRBÖ54JQây³át½WÓá°ïc©ã0¼I÷î™»‘vÁYv²RêÕUëÇöHÛ!<È^eäeˆz§td!ŽôÅ€ð óêVÝ=Â9V]½hºÿþpCتú¼|>^~—•³êEYÎÍFÕó˜% ì*š•”©DË÷æ}(Têg£8ÈRð•¨|ý\öà»Ãö!3I±ÙrrÕ‘Eˆƒ,ÖϺšÎ,ë€y˜9X& ÝÐ2ÇW_ø·ô¸#WÇ믬_¯ÁÂÁ·ÕU8ì‘i?üFF6NµP>x·or³‰†a½ «|쮞«ªž}˜ùÐ+Yü)+ÿ[žÐS‘ß±Ui‡ &bO™!˜9¤(¿i`˜ó&`@e¥ÿîd–O"\•t³Ì«ÙØ¡³<¡b=ÊVFNKK8ܰ 0!ÐÒÝ ònËWâ1) tüú%^ž÷ž[~$Ò}ø. ¦­ƒó¢Tóñd¥ÆÓTiÏßd Î¥é§i¥?iÝM•Þœ€¹³°î<òZ¾~Û¦*`ñžA®?}íˆ(£Êì}¨· nàY*ØÎÆâÍ:F¢»xï(Ô¢RéÈ,xuŠG(éh;9ר.¹Æ,!BÙq˜ ±Ð™aÝP¥Ÿ‹EAµ­Pt0Õ¯ŠŠËie_ì†/ûŒ/ßwuÇ7ÛøÕ$×lÂ8 é¨ì¿Ü`ìg\=¹Iesß+›C{MsS¡g¯æá‹M,13W7½é.lZƒ³ñÕ¨Šš>ñ¹;B‚+¯»JÕ‹ª§ã¬ÉɪŸËü.kÒFÈÎå?ã˜üYU%ßU•Œ‹×OCÉ2~Úu4á!ݰÐ}3><ÑÅœóõÞÇ@†ÿ<š¶Ù÷ëm¸lW+ çè>ªÚâ'ïy{"îŽÉx³û9±Ö„/_teáìÙÁ×ÀïP´FMç½é>i˰WI:€aíå«™ª «¯ò¾Qvý削¨¬Ï ©Ç¬ ‘î„{ç[™¬!BP)Tü’÷ÂÖêaƒŸesˆld%í©óíà¬iN*ÌgB 3ÔYí_&È“,¿,{;O»­í}”ãe÷Ù ¿]=•“%yC¾ÒL_´´ÁŸûpÝ;÷MïxPtÝ^ÑïðÌðgáñî2…e ;„`BkSñ×A›iïß>½%÷ùsI]ûô!z‚šýxgŸ®ÿŠ?ò辑á“w‡]Þ¶É‹ì:ŽâÔmÊ—Ø5._Rÿ‰²;Ì}›ÿÉõŋҫendstream endobj 87 0 obj << /Type /ObjStm /Length 2452 /Filter /FlateDecode /N 84 /First 720 >> stream xœÅY[SÉ~ϯ跠ڢ§ïׯÀ–qÀ Äv²å­˜•';’|yÉoÏwzf`$,ŒS)[LÏéÓ§Ïýœž "3‚E $‹’I¥YTL:Ë¢fJx S&²h™Â|tLkÅ¢gÚ30# Ö3)s‹…d^ÒS1ožšü¤0,€”ÛZ<¨cOÚ%Ðú„K ÉãM ü”Á IŸÞÀ#ö”•#0¦5HH‚j °tDZ¨1Á‹¨Râg5hÙ@ãç‰íuRô4O{GSXˆ)ÊÁÒr@C¤)PŽ´…Ât Ä‚€Þ4¨âb "©´³†JIµRC©¤\ð‹éD; H)Ú3¥I+:`hy„ˆ< ¥Œ ˜V–Ø4 œTT Q (GCâZ¦i^2™¦U0š IL;bkO–³‚éhI%ît£`Z 5šTg ¬LÌC~ã‰g똉dX°Â$0+ö‹Õd'0ð4ÌZ‘”ͬ‡&¤ÓÌ&û;Ü!ÙAÝ9­;Ç\ SBû>¹„ Ì+2µ‹Ì²¼ÞE¸›7úO?ÿÌŠgìW¦àÖ§¬x÷Ï‘Së¨8yçl5²÷ìéÓk<°ßGtAqº(a…>¦U‘{‘#)£ÛÀô–Ú&çÂæv‡3­a¡¹ËÒTfƒO/¸Cå0íÆî‘«"Eù:¢ãˆ¼ bÜ ‡³f0 dMïZs®cç³%K k߬"ˆT»ÏÞŽÿíq º1BÁtcDƒîÆDçzží;J9Ý9Ãb§zïÕ¶C£Lº1…}7SHOŸ²â¤žÏÊ%-Nž Yq^~Yn(M|Ä:ëvÆß`Z( Lk¡¸Y×ë»s‹m½çaS³w!»¹Eo‡íµåêØ’¶Ô<ø¬lã"hçÜ1§¥·Y¶3ÈÈ@ÜæÙÎ`#ñó˜§Ó¶µ¹w[lnˈV†»l€f5â<7[ ‰<ÍCÞ¥2Ø^Äõ–ÈÆ![l‹ì×(ÕoÉÇÝþ—“Ñ+®òþ—3{tܹlÜälãY'Qª—éÐpK¥œˆzšAת¯†dfésÖÙÌöK$NxT‘,×µáat‘ݹÏêN»ð˜Ä-§nèÛ%꺹Ìä47Yshßãí7ÔmÁz>çukØ÷r¡Ã¶˜Y»9ÃÃÖ¾‰® Ζ¯×ÑšAͶ6kå~€˜kt®=XÈ7B®‡H@w¡áúVµÇšE;ãjYò_êrÂE°âŒ/æçóT|÷çõEYƒ®HÿÞ³â ½Èæå/YqZŽ©,—WOŠâàtï5?ݽªçÿ†ð|^OŠ«ÑøãhRþe±úmQN|Cƒò–••©œ9hÌ¢‰°ˆXˆçPAéøñ«>J‚?V£Ùîðp(X 5´V$“[¥xÄiA9<‘óáwµÏw·¹ßt‡bH_ LØÖ7ˆÉEÊVÍzÙV:‹Ò“TÞ˰ŒnÝòUyQöç_ZZÔ…sp0djZr2ª±"cÓ‚Ór1_Õãr‘Ž¿ Ô(é¶éxÙ-ʤ§âàÙ«·û{?¼ÚwþR UÕ‹åÁ‡QM_:’2Ÿ•‹q]]-çu:Ê&’Ç£‰¾/Ü…v’݆Ío«‹å‡E: 7zúÿ»Y<"×*tQ(, žÕ?ð€ µ•—ÌWN±â¨ºXôJPW2n,£ì-3,ª†ÏŸ?oháûƒË"xò.¸¨ önËàú! ®þT}M¿ÛnÆ[NN4*1BÇÏ)„~ ÿ—£jºœ?©?ÎËÙDzþëªZyy±z8·RâP)¨ÈºÔf)*ºhĵp\XõcõMRŽç3Þñ[ü§žOÊú;üD A*ˆt^ĹŽ;pÿXñ¨$¼å†‡e^¼Øôî¡iØÊ6bCûTíS·Os;-ñø´Ü }_ZþÛó7¯Α–ÏÎ6²rP™¬¬6²2!m“”müž¤ü#²QËV¢KWdpÏáViNŸ:¿éc¿âÌly`ï1²Qr‰4†sn÷·1B¬Aásܵ8(}ì7Ü0gE·ºOUH`˜€z3ŒEG…ÐhçÞ7ª[ŒÉÜ.=º:,«É¼¢-È äŽ;Ũ(‹IQÓbVüQÔÅ¢X«âzf2&­ß•D`8Màk±ö/Û…’v}§VÞàÈ’tDóÃjZÂ/»~×£Ë2SØ_.GÓj¼7›:.Ζåå›tÑóž[ïZ1 ®s‘¼œéõZÎÓí$BÑH$p€ô6nH¤6%ÚŒ‰uT'P縺¬R6Ø9+“§sË÷ØA9[Ìëò‚ýB=±sZNêr± P8«.WÓQŠŠç_®Êºº„œ\@‚Z÷† Nqü¤œMØhvÁAeòçÅýdŸ/–Õå|r5 MÌ?ˆ±ØäÆkJŽ#¡§+Z•æC;ßç_ð£ÑÕt4Û}UVênÃ-Ø^=¹¬f â4ªÌZÉOæõr6ÿú ¡Ûcù:)Å_—ÓÅ|¶»7š–³»Ù0™µ2A{˜ÛSÒywoÿÅÑ ytë6ë¡È¶®5°ýSîÍ ]Øõ€oy  î†o^ ÒýÛ ìùï5™ÏÒmÞ ¼a€®ïcyxˆ”Ûñ|„$Ãs‹C—|=ò§8} Ò=_ø– ÚT„ `âÎõ€‡Çè3éºñØìOwš÷±|”>)4ã.t†ãEŠ5â/¸ )D_Š£¿ó@¼µ½E}¢qw‹é‰nƒûäCÒ§êÃ[éLxÄcbº/òõ÷º¾wÐuò}\Ÿ(ëY9Zýt¼ºœ–_ÛU;¿W“U]nf¤{VÐmõÍîçóß*$®$A_Ãoëë¾ïô>|ȶcìöO©Ö@jn«ï©E‚¹v®Ð_q)×%¸™—znŠÃ¸"NÛ¾¯¥6Hþ=€¤+ó$±ìîâ¯ÁQ×ìùuö®§é޽G4ñ»¶qbW÷!I¯k¬Wi߇`;­6ò[wŽm?UÓeszúf?ݶ޺ýh¡Íõ9w;WB»x5_T˶æ¤}ÿ ¦@îendstream endobj 172 0 obj << /Type /ObjStm /Length 3415 /Filter /FlateDecode /N 84 /First 759 >> stream xœí[[S7~ß_¡G§Rè~ÝJ¥Š‹±]¶c;±³[~h†z3̹8ö¿ßï¨ÕCh;ìÃ…n­Ë§££s‘4*&™ –);¦Fì™ ”ÌiÊGæ½GœXTŠ©(YrÈG¤•¤TÒ6"a˜²†èÒçOí¨óH 0¦¥¢:‘iå)‘˜6T’$ÓÖ£iRL{hI3<% Ó)—Xf¤C¯É1£iˆ¸–†HO€SÄ,L‰™HIɬ4ydf ¦–šY£©Ä0k1%--³>—8fC :žÙ¤€N‚$Ð2‚$Š>%挣HæZhPÆyO+Í\ªç’¥˼¤Y*Ǽ6žæÍ< "˜w£cþ>(ú”˜Èi-™OèLkÅ‚¤O˜[}‘0,ЀZ[$@­ &ReÏ‚×Ô<°hdBBgZcý$È«d‘€ƒê,SÍ¢õèÐiá´±,‹YÇb¤~€;æé€ŽIjjYRD “ ö±` ¼Ú*â`FƒhÀõl±ÀR}-–QÒ„5-–4ÃaH¤h…ˆ¡¤¡…· ©DËçÀÊ)V^Óâe–Õµµ{é˜(…1Œ¢I«˜Ü ±¬qÉýã§Ÿ˜Ø©æõþt²`âͳwoÞ¼ÿq÷åÎÀûÍl¾Ø=­fàdäPe¯žfÍùb:Ë£JvÀÄ‹ª«„ÉŠ·ËÃÅ—óš‰wUµm™xß-Nç9µüùç+Ã<ÙÝyó;†û{ì.× n¯Ýhppíào¶Þ½Àà?(ùµÑõ•ѱ[7<ößfî±G£fQó}žü膉'ÓwSÔºé쨞±3™ÿ>2±›3ªÍ+ù6C’:tmH£§’†b³]¿°¬-’€‰×³éèmMÓ¯÷ö1…úó3ëJS™û¡&d‹´q,q;Ù"mÜN…‹™×´¶¶@zY5ÕÎôs!?T‡Q…§84 š¼®fhflëÔóér6ªçÙ²ÉE-…_W'õ!º÷îýî“_¾ÝyyYˆF½FŠº+R”*m$EÃw“¢Püœ 1,·`}<Áªòbûï£Ñr27¼—ÜÁ*Q;ðÁphðûš/çõ½Ú˜‘GHO˜yœL5X”P70ö"w0•…¸Pª‡Ê•‚j{çÉó!d‚dOX-b+6²Nq2_-±WzDÖN’c…2?Áý€èññl:á~ˆœWÆs2‘aöÂX€¤ÅJ „ÏÉ¿x T4R=T–ä] @õjl¸‚6R `Õ£?T°±¼~@p–¹„WµBäH1Ç»!Ú@AËìÒ~E[“{t'Í}YY“g¾Fq{rz¿™®(é¢ÌcQæ±(óX”y*Ê<©ë›Û5JÞVòÉ}]Éïÿºýò×}xJ¾¯âí:GÉ\QñvCÑú›Uü·ÙC“–²‡¬ <©{Y¹ƒ÷çä®aI¨öˆž¿‚ë5È3‘<Ÿ—8NÇ@Æ$èh>¦ÅvzDÆZò‘:@@ÔÝð|o7à’0¹w©Ô :ªkãu½ºÙéÜï†ÍþMùÛ$ÅédÍc§‘‰a ò{Ö™N¡µÈ.”Ñ\ rIJC=}?aˆ°;§™—#>'n¡,¼ÂÖƒ÷ö4Œ0:×]AŠ :=ÝÒqs²œÕ\mHu™Ë4RŒCV棥U>Ðö˜¾—söü ìñAþ¢ä>Ò»áÎ^ø‹²\ßSR„ˆ[:ô Ôrt Á±”dBp:îGv´ +DZ!oy¯Š¨a™ü@ƒù(B&B)ìµ.øÈ©sÃG°$¼fD8Óä“u¾r‚7½!•Ö+ÝMíMæø`œ.·Z­êJìKJK\´pM·Dm¬J¬×heG­Üͱ§–Õ6ø·]àb¯ä„ÒYÌßiìN—˜ü€çÍQ&®*Ä,.ݦå¸@êb¶À€ëˆ×QÂù«ÓžßÎEÙXâëÃÿÐ|©ù³3…%êN/æ°Z½ø V/Ý´z»³ºZ4ÓÉ^µ¨Ù£½¼‹ÒAöhˆh²s¸My9=º±"æz´ÕT“iî³R}×,Æ5<™Uç§ÍhÎ^-çËÅ׸UçÇ{Íää°Â¤Å/Õ¹_·;f×úxZ?Õ‹fT1ñx2š¡»|óšç^º¼ý8÷æ.·v¦ã£[ú5›ö»ê~åd{2o. öšãã‹HkF§bLœ5“åœAæŠ?—ÓE=®–‰£)(;Ÿ7LœÌªO¦-±0bÔÌF˳ãqý™‰E3>BÑY5šM'LÎjªˆ–ÕhDœ"ŽŒ6o@oŽísT31Ë@Fàµñ¸ê•Ÿ.''Õly6®–h8=™Njl¾Q•{žŸW£šX°ñjBë%üÈAj2À΂YìmV—Ù&…€öÁçSÍû(¥ˆ<Ô¤Žˆ"\f“î‰è˜¤äre÷ôfÀ•§ç 2ÕÞË"ÝÝÿíÉ ­a[È,º°0´Š»@~Eâú~Oks(Áxwên€¾¦64®(&Ýk€ëf‚*Ë”X­9q+/) £þVu¿2çè*,z'sîædÜL…µÿWU˜IßG…]éwcÖöûöËÙát¼j}ûS—ÿ+À ?ñ)ÏÜ6pÏ8ƒ}é°ðE†{½Ð HÑ#‘¤Vˆ LIˆÞ Ñ€ƒÐ7,ßÔÓ§QÜ3]Ü6]Ü6S<ÛÅkQ»7lCä·Ýðuÿ)OƒüqG7´Ì+É\UºZ6ô@¾!3®¨Wn\(q,qZC%=˜JÆËuTj>\ ?"´æ:§¬‹Üt¡òýn”,½…±ÊPy[Þ#^Lðÿ\ "Àlián [ª9 ª›÷v. Ýw%éô—®=L)ïú& »¨Êˆmí6}QËæ¼íÕèõ°JÝŽp“°ôØC–gÐßH¡›kH)K²Œ­ ½ÔÏëER8F›k'N×ñ)Ï0Fâ §‡ïô§Tˆ`Ù„%Ž™”ކøÆÓóÿ¨‰A½ÍõR¦¡×%Yx5^¬Ó§FFÎf¦Óí:åXKö×—J/­z2<–’vUr»UÝö»u„ÃÚœ¾¨•¿µjÓmø±ÕßólLc£A?WçOëæätA‘=­fd6=ÛbW<OÅ3ñ\¼¿ˆWâµx#Ä[ñNTb$FÓñt"ŽD-ŽÅñq#Ž›OHBQ‹q*N¿œŸÖш?ÄXœ‰‰˜ Øßâ\œ×³fzÔú3WÌÄ\ÌaçOļù,bq:«k±øk*–â“øK|_`ïÐ{½EoVÄþ¸:IÑZ¡;­1±å ÛÊ¿b ³Ò§Ûïû üAÛ="¡’Öºò;…g‹jÜŒ¶''¨MñõÙoô+‰¾WÔ{•">ºÑƒ™Î0j1Ò– ºÊ>UgÕèzA^ÑasrÒå3%rAs þÑø¨™Ÿ«/«üö«8'˨´m3]Cqž=áE×l¾<;Ë>öµ‚ÜÑ'õähÞÐlûÔõRÞ@]Xê[:Ñ/‡èZ0}…¼öy/ÿb-yay~º÷—©{mMŸÀ+õè³ûhIìC?‡If û¸«ó»ô€iíìÙ]gGß<»Ãj–Y&»ÕmªÝD(8Cs°Ëq3i_ĸZ,šQ½˜ž òºë?—Õ¸õÍ7£üž­D¯é­Yé 5üUj\þÕMŸ[ô³ŸB¯o¦k¡Ÿ¯]"Hêä 7››8³Ø²ôË%C¿˜ÒW6\cÜËÏÏ×3®üêL¼¹|½¥{÷[Åé,Ž)Ž®-wª~ì;:ùë¿x íendstream endobj 257 0 obj << /Filter /FlateDecode /Length 4456 >> stream xÚ­[KsãÆ¾ëWð¨j…ïTù°ÙxmDZoTåJ­}€@ˆdDZ‚´Vë?Ÿ~Î @«¤|Ì4æÑÝÓýu÷(Z¬Ñ⛫¿Ü^½~g‹8 «¨Š·÷‹2^YVI¶¸].>æú×Û¿½~WD>Qœa”Ó¼m¯ã àW¿ÇÇåõM’$ÁOðx„Ÿº»6Ep€§ ülá§e‚÷H¼ÚcÃ0Hwßy}Küü®à*’%O×{£k¹I²°Ìs^Ño×YÔ8ò¦¾ó&ÍË`‡“\ßÀŠ–­ô ¯ «È‚GjÆÖ=Rmpɺì—Ê#lµ )ah,‚¡©í$ð¶šû6ÀZº%÷ô8 ö¶òáNØF/«¶ã.xËM÷Ô¿vƒŒpÏ×­,È{ùtC¦ ž‘mÀ2`P˜¥ó…wrcÊ*°ëàצG!ù|;¸Nœé—(NÚF¦Âë›&y¿Y­q²Ò•ACkh¹–iÀ\S•A=ðXØ.;"lu=´è¤7ÂìÁ ãߥèÓ¾>xÊBMdê ÌTQP?ʰ[;4Ðw,ü3ŒB~;Hʃªî37Ö8JÓï¼™…a¬þ@rÇ‚ç, cñˆßÓ‡Õ& ÛÕŸ,}¡ô»M'óÜÁày Â[à|›à÷*} 8WžÛU7´Á~×"ʤ‘uEÔè³w>ç0dLìC…in¬A³KRDDQ„EUÀˆažÊc¢Ÿç$Là0{TbI¤ ^‡úXÀo5þÅ¥E µ5ÐEÚœt,¬gH_Ë`Â+w&£ZÝ]ê ’ôwÒuà¶Ç²')FÏp)ÁgSþlªB“%>›¾µHÊ MÈ`Q°é.Ÿ3õІֲ ó¸d‹­o?ªÅöXbdû¨17Û4Ç)7G4vbêÕÜí=’N e‹r@…eŽ û8@û’šàg VCÈ«‘Æeq©òr£j;åT‡`-•Œldƒ"SïŸy!¿óÚêNί!~‘®á3ÙsZؖ釶õöZO7ÎN® Ó4ž7-& :æC HMÊÜJmÀƒª7*ls—%}ê¡`þCüQ.vÖå˜( ²àM§@ C¹ÁÎ.a+L@«)©iæ9ÍÂ¥ÒFkŸE™ãÅ9N"ph35ðÎÊâ´À_ÅÄ\IdD$Ë­O¤˜ÒåhíÎè!mMb.«@ˆ`8GÓ윟‚3aԬг¸í9)b!ª=ŽÐ7´')‰AFð6})v#¸›pˆßòó˶iÁ—KO9‚¦L…1,$gS ’6H£àvÀrh§GäÐã8ôH|²{¬â€Äî1Ù…æòÁN£ýú¨<¼ÛN·<ç“ÃéCtñ.“ÀãLÒÄŒdZa06Ìâ,€ä³åÑ}a”q¢Oz qæA}ár^Täý‘RÃÖ~8ø(lЇƂ§);F[I@p|xD&IunsH¼˜Ä¦y°±÷ò<ónCÖKg[ÊÑHcçê€vI‚áÀÜj&´·$ïÊK“GØ5¨ë¬gn^ײ¸;«ðmw9ëq“D àG H0i™àqÏ‘1%iö#F+:•Ÿé$,¹eœ8à`Àô·^! –ŽlˆÊÀKÊbdäF6wã ïœ7j‰Ë@Zóvvýªó±6è?X»™ñÖu«73¦øÌö½T$°3€ÃQÏæ8¾©]Xù«ÿpaX5Òƒ·VÉI›lXòïwš'U Líª«õã£(Hÿ¨:Ìöê+ì$c°!^ߌÚxjçœm:2€Ém¦ãllÜQ Õz™fj«¶`Ô€ãÐ6¹ÅO0c+”¦Î`0?;Zfç–@l±š}bðÝr(²Tl–ÊžE5Ke Õ TÊ8øAü¸IQzf^ÐÊáâ?‘)÷2úÅiöwàOšºã9 ÒÊæFÅsÔˆˆK¶˜-X,ªËþ>'/Ur[[Õ@è¾_¶7¦: ±L•xªÌ$Ëœ|Ú“òç8esšÄ’êØó8Gë0Æ¥sPtù›ÅÅdЗKUãß³i¾ðŽU­BÅOvÚ'É©ŸÔo[È´ZÏ¸Š€_Q˜-öX âÇ÷ß\M™ø½y'V}Üv&•Øï%ÛÑA¶…¦Å¢ú%Ê¢K3ˆEñäSü,ÆÂpw’Ñ3Šž$4LVª‰âÜC¯b†²COü,µ)Iñþ«v/®à@ Jàö³Q"= C¢£™4ªÀçŸU‰Å”Œ¶<‘ÀËØ–ϱ Xõ!,iÑw¢7ƒPŠ!&E¾£*ty Œk}æï8)¿ã|Ú™‚͵²)‡{ëVGª+eM…6äç°f@Îhí ‹NX‚Òì˘óKÝê$i˜œ/‹³ƒ’oxÓ1ŒoëýP×[µ‘8yçÏô›&Œ™=òØ®¥¡TjaS©å8•j2ÚŠÔoð‹i&y ø@“ý}Ó‰ªpÕMÏ4ö匫ª˜UNY,›H2ÖU†¡vç"B™‘á<_œMÁ'Ÿ­ÆbçðHuDyÓÊŸ¸:ª¼nÞ²(,Ʀï úX|Á?h¹ÝsCë‡ »ÚÓû¬­5?‚owªeàs*€·¶¸FYzÚ–¨éqZjÌ<˜@Ù4Pr—ŸÐòhå•K0øN Ny4¯y䓌òÞ{˯6u—:Âòë’ª.ƒ[öƒ‰¦·)™”$³¯ü6\ãÄgÆÍwÂà›Òv?§7d©s)îf{°²õé²£˜X®€¼·™çéÁJ³ôË ~2oôñ{ÅiÇý ûÍ¥Yæ`7¹¼(uY éÛWêAá dMd ë DˆHÓN4ÞÙa(‹ÑNÒ )O±-HwFZçP!, FÇ Ì&yÛ»§ä¦§ºÍº©‹¤/F¸ -6A!#~Š:îÔ$Pų•~/F·†™rÁÏÜqâ;¥´ó"Ì«|Q„eVh¨ˆÂÿúöêãULª/Ò¬‹²X$¦£,_4»«¿F‹%tó´ð‰Hw‹؈Õóíâ_W?ñí¥ImANJ˰*µä;“mבˆâ†=¬»cl^ÙMjżLÂ$ÉæÎ^É.]¢ÓsZŒt–Óä:¤¼0BÏ5!êä¨Å¶@Šé”ÖÖŠUÅqdw?ÜI$»½âˆÑÖ +)'2‚×ñµ#XÜçS8Q¹âe5…8³ÁžÅ=&9ÈÌG9|un¨î¸Åù ¡¹™sCÄ"JúG|U¬qx>Ëù¾ºŒL‘1"iµ.xáù[Æx§qô½ à–ó¶9²®=}£!Ïé Rã‰Í9KáÑкZãLé€zk×f˜ážFŒ¼£8xO„öBZ&ªEÊ”Ið¢6jé'ø²DÒÒ^Š.3îrÅ]4®Z¡ê™‚eŽC¯oÆ5ÎárÏT©í©—<…΀÷sü Çy ß;Ày×ù´$›F…MÁFîlãó’a@;ßoj‰¾¨w^Qi<ò@‘w×ÚÈq…i;AÕ¥N8Nù`ËIß¼ n×ívµ­µWÈ>­±Ù:‰ ;i¡ñè~ ¾Úâ@s,+—Ö®Üý =õòTÌW ;µ “Iwî½çSÞÚ´¾E±!ÿÏGßwÔð‹ üJïmžÚS1µ®–d‚ ì‚ÅERWÍÄ»zïgVö>(øiâv?Ê‹fÁ=•þïö g²e^¤&}²*b³¢\rúxze zîuû;~?¹`á/]¢ÛÅizãŸZ½òì§rûÃ8&µ;!;ýÌö–ƒ\„YËX3[d2ºî’M0ëœÞª;ÉJ§åøÁÆ ØW¿œÄ¬Dsϧ¬Œ½xm%FT¶·TÍ@Â¥zÁFsÅëDYwîc[–jw£êÕ¸Ôí­K¯8ùklyZ{/¸]õ£TRuF£O5_ޝõ~rÑ™.¡æ… æQQ3W×µ÷2ïHî„îZkÔþú]^ŽnååˆÐ^aPl'PH»šƒn)߉PÒZøê ÚJ®y {xêÂÿ>+ÃÈÝb{?±$Jì•¡·{k/kååÙYÉeãÊä²69½üR:+/õªŠ)ã0I“ÙóGYÛ¹ï%Lá×<[­fŸQ®Bjðw.‘ñÎ¥°°ïŒ½Ä.²dø0¹G8@bªÀôE ÀcdÜÅš‹Xk:~šäý¯Dwyœp6d‚·jø„9„)#)Ý"ܤ3´!¾óØ3-/áôt´:²oF¨gÎØ¥ó:ˆíj¥RT,›P Wkû}ïöž Ìÿ–sItö×ö…§xs’Mª°(ÌEÞEj)ÞìCšXgXÂ-¹I*`‘©{m˜maF\EæÊ#iC9þ‘$­Â,NÇ[‹Àü~^ËÖx¿Ÿ Yñû †ûÞI–»1’A>e/ý+Ä$4ò¼’ï¾Ò» ÒÞiÇ·gÿõŤ°í2õìT ŒúîÀe?µå qNëx~Jˆ Ü.¹4lñ<¥8p0A§Æ~등“ͦ5 †dõ¾¶y{kúΘìªå¯ÿvÔÑY<þH ¬¶ƒíõòR/5†9Ú8ÿ¨ÒGMrÙÖÞ¹Qp ]‡ÖW\*©Ú;×xÿ¢Ììa=õ»ZÊI 3½œDá4ôþwJ ­œ[ìõÌ3¡Z5Ïi1è ÜÎ×Tñ¡iFÿquç ¬Ÿî V¯Öü… €€Â_û”?Fc×lBÖ`|:§hS”ÿã¬Õ.Â#wû6­fî FÅŸüÿ!&x÷Ý[~½?ê!q«¬Ý];†èHHA‘Þo½IüÚ«Õ;r3ºé0Ì1À”G2{‡ôüæã0u^íÕÜPEX™Ñ?:l/qÓ`-È‘>·@šx²>Þóðåa]ôG7û]2-â°Œ'ÿA©\ºûóz/fE.Q¬Ú×X4÷nJɹã‰dS#ÆU0d]ßyœüŸôÙ”06[”©½ò+o0ËÜ¿rEN@4c‹#*º5™åYðæþà2^8}=Aü÷ëÛ«ÿ{>Òäendstream endobj 258 0 obj << /Filter /FlateDecode /Length 3771 >> stream xÚ­[Y¹~÷¯ö%Äâv7Ù×›‡,âs Ž×‹ ðæ¡Gê‘ë«%ç%¿=u’ì5c`ÃV7É.‹u|U¤³Ùz–Í~|ñ‡w/¾}Ug³<3mÖæ³ww³Ü–&/òY]Ö¦µåìÝjö~þö°î7 k‹ù_nòùáfQÔó~oŠfŽ}®­²ùÏû ´}–¶|>ÀßÍ _ùëÃÿ¾ÞBÏ#‘ÆÆBw'ñ3~Ûaw·øáþìîñ_»ÞßüûÝŸ¿}•—1ë¶©LS·°2bÚ☙,u¶p.Ÿ-`uMUñ€[ tDr=üÆ\nai°2^ö~Æàˆìfþñ÷mz~Æ~bm‹Ÿì@,ð5èNòõaÿ†Â¢˜0Íô€=$&³¤$±ÎxŒf"é+}EéôÂÀç}àþ¶Ó Þ¤KVùÜ*g¡"M$éŠ ÄµÈ­)]ËbÂ¥E.¼žóƒÛ5váeI/÷ÝQÆ ‡}´±<«Á/YnU£F$º)|¿ @†FŠÔ™øQ€Gl?bû~­ò¹˜ÔŠð»8øi?V%×Ìrg¬« ²‚º6®± /h ¢0¨æíüïÄ"ðÓÇú‘PÈ…'SXã\Ádþæ-hÕËögÍ$âd)'µ‹5vµ²qD¿ªcúMnòÒëûÛ yn\[è1EØ#¤‰‚Ìý¨s·DîzU àãV ‡¢ìîÙ ¥ Yš°Þñè»’Ý¡Eë;@ª„Ä–¤4·"ψ„75 ³›ˆͪ¨bZds©ñ¢-LUæceF&(œ«Z1;äì¤Þe¯L U8€ç0Ì]f…×0ìdp9ÀÕlQ`UZ.$°Û¿Ü©zÝ>rêÃIÚc‰Ë‡{mgûµl\;uÓ€©yº%yçäÞ'Íúú€Î;+õFhrmÁþe}ÔÝØa_ÄêÐsüúLRe‚CÔ!Éy³Í­wF^{H*ûe´LRífìî³Ê”¥ªöRäø)iµÉ7W•yMSø ¼ÃBqg«y“lÄREª ¶]µí¥šáVmæÕ‡ŸA:8Ýp’n¿"•à–xç¢/ZŒ-ª(#çŽ_‡Hi§³"7g¤³ )%Ñ¢¶¦Îs•ÓOQ”øœkQ™Ì:N¦¥«ˆ6_ï»%®üãMYλu/ά93˜ÛzO5„‰ãÏ7%Xù6ôkS”ž‡—8]ƒŠ‰Ssü‡?¦œðã[BEó‰w˜óî^zß9ìàþÐÃ_IÅÉJÇàâ=õÿ’•ÙS“¾ÏçE–5“Oñ³Ü[heê7ÇPó–ýVÀÊ‘\PbÛú.q>†uÃw=/a4‡¨½¤‰óÚ™ ¤Hqª´<ÿöª”;¿ªo_,Œª16ìþ¿dH1ƒˆYg4¢‚ürSÙšGm’[hl”Ã(°ÙÌ¿¿2qÝ4:ñRŽ&.º:SfŽý>ÁHtŸ#ÎÆ3Õ& 0ÒzÎÀöKhM^+C¿MòL:äœVáÊ”°Æ„.„õ»$ò(*kZhã)ädËLP.œq…ûJ«'ö³2¢Fƒ6‚qÖàþ()@.à½"]Üx§qó¹*v݉M$ír“9¿¯® ¢ºò»±Q7Z#’À»N½»@l8(øø*rWœ±»òËcÄ`8 ø§ºF¡<µü’·™É³rY|X* ß™‘àZŒ#j1µ{h‚»=÷ÝrpãŠ#ãâÐ~ð~däyècÉîà™ÜSÇ[é‰1ÎðHâ%ö8-AÁ…„9lût¦ H@"†%Å,Y¤€MÀ*ÄÁ¿C_õÍ4,ÊnñŸÝÚÆJ€A?жïi0hʯ y2äˆQJÐ1€àVIwà(K¼÷¸£lv…í”di@10 ŧ•æh1À\ž„äÊkq€Æk‚|W%.º¸°.›oDàQÁ,u?w©âã³ßÒžTEÖÁi°ŽE¬è8Ï åˆÉHKJ}úKÅ„£Og¸uØŠ–} G…Š ËÃ^’ßMä‚r²t"”t‘¼$°?ïðhÿë¶œ¿~Fg]™]ÕY9é,>ü¨_0âDa‘ίQXšãó—žß|ÖTf¢_²-½ßëSèâôHN÷xbùæ¢R’€–¼A8 aâ¨z©©xREU#‹ü&¿€À”TBE~ÿ¼U-ÁÔÍ6-îdÉLcºåR}îS˜¤Z¶O¨e+j9ÆÊøz¾—ܺbí—ïøË»èKùL…t×GYãN:W©Æ4­˜ª\Bf‹÷ÝÏ„/´ôó>â‹*yEœÙö‰o;þ¡ôÿ@é¡–àjïä _¼ÂÇ5%H«¨óJôÅ.ïãî¤s ‡ÝJ}:Yƒø;“’ÌëKÍ% ƒV^‡Ní\ÝÎ{®(îÃW;f‡WLûAQNÆ‹Z¹’7­3¢uª‹Ç†^]üò”´!):ÀÓ’´Ú§òK”Ð|A+YªìÁcà#“ä#ÝH(¥öŠåÔ Iu(5¼n+ôyÄÔšúÛ•Â2( ò«Z-脆pzŒ“ïÉmtòÂúI@Ð[#ús˜T»NbLè íÕMÀF?û‚ŽD0ìXieÖçiC"60n).ª3Šš1"Á"F åß°s&ð%B†ZE…¶€ø®×°y†«ÅÈ¢…L#kž¬FB>IAÈÕqêçsõ÷4ñ•ƒ‡ äõµix™d,*qeœ3W{²Ì8çÆÚ®š³Þ«ï= žïDE+ÙuZ©ãŒì" ÐDÖþ‘¤Ë&yÕB’êÓ¶Xo޲ëÔV¸ÂØ<Ú‹§åŸü#ŒÁòW=ÙäýÙ- BÈíäÓSç­ç7+b`SÒ7©-†|7£*æoiD÷%ª3"Y ¸©«›ËÓ£N*î' ÆtÕò™Íà['¹ýÂÖY0ÅzŒ“ê,.+à+éâQrr¤Þ ä×w÷R²œ©JýöªFä»ãh¤3’L¤²ohþ¤`ѧO!‘M„Ë«ÕvkS1øe²îQ6ÆVÍ(šüCT²Š8© ¬ ™¢ˆë|e\ç‹‹>¹3EPa-óÙY #êŠ\ ð€óš"/Çe¡x^kr* ùAZöœÔî¬H¢Óý'Á8®ÒN«c~jM)~&eǪlá_gCÉB'Àù ɬT 7.ze™›²=©ÜelEËg«k¡Xýß«¥å³ÕÒâ™j©ûšjieêà6Ÿ’zq)õ)¥Hê‘B]§ô]º\Z·¦Êð4 5NÙ×â "ò8&„VJBë脞Ñ@Ñ¢ÇÉ… wê"vãkeîØÝð¹:õ¡J®H 5§¸Þ@™E F«&œdwsÔœÿ‘éQ0¼UÄqÔ4÷‘?÷™0r×1@¿Ä§> áq,ùoBÝRB6ÇçÄì饞ïˆýyÓ½Ð𬽻  |êë½¼×Yý!vÍÀcb\EœvZºÁ*l¹8f[ËÁv”c%<õôüdàc®¥Z®¥Ös9l¹V6µOÀèÜZx®Ÿ>ÔÏLUE‡ ZB]'õ‚ ÷ä1)‰5EŠ®?KŠÎ¤‚FûãÓîeŠ.Ö4X™3[ŒsvÞ„Y}ÓãÇ…¨ô…•û'<˜Ïûeõþ—¾$ Ýeœ’°Ò\Ö9RçÌ‘ /•˹S>öpü…W|Ld]ÓŽîõP)N.é¿ÿÒ4×΄]›ù×§Ñ'ÝÉOÛÜ$åôú‹€lš ko ž nÃ=Qw‚ž²c{ášéào yd££P¦7ø,UY‘ÄVÜe]côêéE%»r«Š®y-Ô™$u2¥?ü •\†Ç“ ¸Mùž›¿ñk…8ì›_§¸ê5Å{™¾ aÊÚ#·ž=͇`_ØÉ¡˜«,]¯©\¨“C|’(£Á¥ÁT©„9U1è®*¶ÅfM«Æ|çø¡`q?}ãndnƒÜ hI ‡étëLݹÖt¤ê:Œ—¢0•×:ªÜIÁý@­+}ê–à$Qب ç£3z¹¬g½YSÁLåòúa¸85àˆöØ=P¬÷à ¢›…Âl|mBDqŽzŒÏMp)é>ÐÜ–á ZlIM—.=GWŒ2åþ¼K9‘]­‚Ö‘ôÊ«Î5¯¼À(»%A.~Þi½×–TÜÜ%'ÝúëP›¥œ!aû;º”të<¨ñòÚ[™PÚ+çäĨÕz’-Ô>ÍF nø<¤’£ wùò› „:|ðÀc÷2`lù$>T ë覤xd.5âtÇõY•ÝÃÕAçBÝC×éS=ß «ÂñK}¡²M唼G°p…ØÊR/Ѭ<•ïRjÝb¶ÓÄZ݉Ÿ®ø(×x†µp~9îs!æ ŒÄà¡øËªŸ©ÑÂH7ñ¥sq®®‡¼L–@J÷¤¡Ô“D7.éýNÁüNX!)ïq9µ(MSÛQŠqë±jVM ý·zázàn®%yœA¥¶–KNK)b òçé®J¹”|ΰ¬" ßÉV„»Üš¾¼Œn²ºžDSœöì¯@º Àð8ºcx'µ'h'%,ó©t0Ñcúèœä¨€`?ѪÊÜ87u¬OT¨!Nß9L[DclíñB›7" ‡3o ö$Vâeæ2¾LHµ­G®^ßðõI†ŠR¸ÜrWÂÈ­§-2£6¨t̰žßìåýñ*Óø?òÓ hŠœxý†»/«Ùq)\ÿøîÅÿk‹¶Dendstream endobj 259 0 obj << /Filter /FlateDecode /Length1 927 /Length2 2931 /Length3 0 /Length 3533 >> stream xÚ­’{<ÓýûÇ‘ã$Åí}(B˜9Œ9ä<›œ’™m1›m˜H‰RIè.,§b¸©9/’äB1çBŽñ[õ»¿wßûþ÷ûøüóy^Ç×ûº.Eygu34Ñ'(ê ˆ`agÑ š EE IÁ –H Æ€À`À,ÈÐbû¡Ú:ÚP"`A %a}|)€²…Ê÷ =ÀÌC¢ÀIñÅø³k xÀ™ˆÂb(¡€8}Ï N2†ŒAk€ EQoŒ–„ œ#z?Íè €¿\Á™- Pf‹TØÑD>@cÎÀöDv/ [ÉÿBÔ?‹Ãƒðx{¤ÿ÷ò߇ô/7Ò‹ýÿ¢@Cìˆh ‰ðÏГ˜ŸÚ̉øuAPx,ÊŒàƒÇš?MX2KÅ °”/p‰'c~Ø1ô?%°§öCØÆÍõÜúÈÏmþð9 ±ŠKhÀª~þÁ¿™=– ¸kjhjBØìï¯?ô²" ˆh,}ºPI"!CAì»`“.°4† `¨lÁ` ‘ÂNعœ#’@ß—ÉÞùÝô“ô°÷ßÀ¨ÿ„ÝŒùµ°Ï/¨ €±¿ »þod¿LøÙ¹¿ &ý‚ìRä_ €)¿ [qÐ/Ènüÿ½ss"5Lª¨kéj~ÐÓÕ¼ð_¨  C ü¸nö&ÿâsXöÞ1*úÐMDFû%W\Ͱzø†Î£Êiîó4Á¾¬þ]`To"'>·Å6Puð±ÛFÁ=Ñ=ã<ãB¶dÈ7ªÃÛàó‘ )ï·Çƒ½Æïgȸ}¹gÊ PXš®ªèZžÕå<þvðuþSÙ/Òšf²”-]&øä9˜îÁåÌÔh¨žüþDÌ•ÇJÚòN{Só¯éÄ| Ù{ç6÷ÇŽ¨¿þgGú‰ÕA"ùïÿ±}–cÅK–¾ÖCêû,crùc¨\O¦ûüêhÆDafEþ“v;ðŸ2õ¬ÓÃG¶àÔÆ×3G+Ëå6F-?¾*1z]¼œÐküÒuý}íökIõ’QZRýÞ%.›ÓFØæc®èìQz¤ÎOÒšÊB{ 1æŽ-Iñ]—+ˆ=9°r‚Òݦô¬0í(º%ªX¢˜öõ=|"}TÝ,-®€0t<‹®öøJ‹ò¨©¬.{ÍKˆ!¾zR¿Dì!d:ã[U°î{×µ3&µþûÊÖ YÃù›¶jÿg­UœÖY¦].ópYÚ)®¤u~ýœÉÌÑWíÂÁ¼ÜkºØôpþ–þUºqëÔ¤h7®I`¾ž`-oЬ|èÇ 'bAÏ7hWÏýö ´:Ô}úCÒ¤·ÐƒAœœ†<Î ‡I[|íË,OñhHÁ(u-£¦P¡çi™Ðž^k5£÷8êL‹ÊPþÍÙ:ôõ„QLñ¼KO˜1‹f7qʽ1Õú‚»×^1\·\Ñn*e†™UìWÊPxfe÷9qeW“cˆ¡,nŒi³/AÊòÖZõ”{A¾Þ“á›`ªgàþÏ“H7D.™]Îëâ¶nxDEˆß)Éç:ªÀ_5[_é–®Ehk™ð65—÷äóœŒiSìwNÛ‡PYp#ë¾Ú•—#5L4¥7ãwúûö¶I•]ÀçÜàÃù¾¦¿íßÒHZ18&žÙ@Q£{Ià*ïâ¡xèŠÓ̽þ›þg÷.¤}ÅHæ<“Õq|y¬t^Î1Ï¿.$`^÷‡ ˆBUùƒsRÜ>7-¯eQÌñÆÙÍÈ·è+Y×^Œ0ëÜÃc³CBÆÇk9Qû?^áĘܹ£Y$³¹Ô-\ƒ)Eïn%ÓfJgos±V+dû·ð^™Ï9翵qc Žúpé¦hG¹ï¡¿ÿ²žCC¤㦠9¶£›”¤–3)ÕwüO󾮿¡°b³° M콌Cdìk‡P'ن̲Uµû}±„àBîU×Èéê=B7kûBâÃ$O eV6^ô·­î¯ªpX¬Öð½yCF«ÁãîÓá×ÉcÂL):¬f‰C âšYý-ùUò„Kåpò[Ð1%ñÛÄÝ3‘¦…5òÒ]¼ö[‘ ^üb«•V²ÛªYUŠ5‹'ÍM ë…í7ô!½›h‹4­AãĈK¸¹Ûe|a¸éZɬ¯Cý–Ì¥(M»—5>“›Ĭ¾eÅÊiià8ãtx¤] bã$9Χ’Ú½ÿ2}ó“šÇ³£_–½NU1κm×¼4ÀÌVŠ;CjbR·;|]=$ŠNeö¸$˜Û[þ®µè6ëÎ|°ö@py·Õ‡dùl¸’Ch3ܲ'WöÒûoÜzzdåw?GÐ8bË 4Ζ{¿3½['" úÂûKl_Læ¡ÂSr;ÕœéO<ãnsî_‹½4gZ~|"ž’Å÷È„.°°’gYÎ'õÔrOãzÕÆnׯáƒ;½ðáˆç³4›OºËÉx¤zbC’¶ýž*쬺 Z‡Gùèâñ°®®%¤ß·#ß²\^{E\©Œa 3Û!”}I*FÆâËKµ!ù9"Žj}²ŸC™¹KðÂÙd„Ÿýþ¤ãñ'DÂ"g^–—¥øÅ?=ÿͲJ|¯`ÑõÕÊPÅpN«ÞX)* –cBa¸U<ìâQbŽ&d‹ÈyŠíJñUõûC?¾ëê Ïóɘ ?Ø×ÚEh×ùˆ¬Ž¨ù:FÞqcF£ÃDúây?!Éz, zI,ÖîEõž]ëÁËÕ Â”¶-fÜå|²»ÄYDÍS¦8J8_›žÇ3P ÔŽ$»€Z¬eMÚO]Má}¡¢}6ÒáPR ¤Dm°&>h{Ç­“‘ Þ ‘Î&‰Rˆ›Í~7o'ÏW…ÝaFïû¨ÊþËé¦È‚ûæ­ul8Ë{šq»êÀ&‹Eߨ¼ke(oü™‚ü²qK­! ½}i²7É5WMÝÊØ$¼RHÚr«)Srg|‰ =õ/4¶ãe¥¸Ë{’XâM±°ó‰AÐVÖîË™>'Dtm´poÂÆjÕ´ò)Gü`û–)‡™ÅÅ— ‡§âjMóõPú2å>S=å[3$Kˆ.3õ¢ÁôíqešƒF2«3¶fY…é~ÙF˜W¿açô¡¹Ú’Ù[ŧŠç$ô-öšvK®q+"¸ZÓTKi!•5ËxR]*Äš»;Ùu™ÕW*$eòæ¹ø¤§ILÿþlÞ!aéö†‰9Óðx*bTò<ŒìnIêk–憲n·%]'ás0éwƧËÙ¼7ØÇy§ÅGVߨäÛ¤ "ãôp$ã®lóÀCLWîã[*…Ÿ õ辈SPÒÓèíb:·óíâù€|³"S£›þ÷7D^ ëØô vè7ä*n]Þˆš”tû5®ëch£pZ«®Æ(¬ÂåLgÐFLòóK’6õêuœ ËGÒ̵ÅÜŽ/&¯;M9\| /“½Ä}`"$ ²Žç8±±(?Gô%z2iP¾V§Ù™ê¹û·©ÒÝÕ÷˜qC‰’k6:+¦*ÃO´Wt[.HÌu©µ8~ª á‹Ñ~r¹°Ý¦j~èJeOF;W“í\ìcóGñÖŒ›¹]àQéMÕ70ðNÞ«¬ž|ÖtP§$ïpéÅdqK¹® õT Œ7”Ó-»,Ììª G.ÚJê Æ«ÛÈúqP[´}D\‚:ÿ6Îó ‰ÔXzp†<Ép+ÆðÅÛßÊ4 a;–‚g6hIã*_ J _ Œ?%fe¨%$œVƒºGvÊöÜñ‘‰U“­L};³U~ˆâ[È,å:3âX,'`cÞù²ojä°Köuñfãå;v[ÒÎóͦk¶m855­žõÉóîÖÊ"^TòÙÃðnÃÍp"0§le˜tÓX/{¨ê Ü‘+Kª¶ tQœq?趦‹¶åR?áqÏŠXhÝßFÎ3ªEp=V‰kN°vmʈV²5o«1\t—¦ð6ËÄIÌîKô•ÿræ¡“Úõ‡ÞñúdäuÖÍw%c犛l§"m“ä)ƒž¶s©vÚ:¦|sÃ-Ê¢(™ë6™^Ìüú&¾7Z„Ãä<=x¥â‚uR;|-¾jãNHVä’±å™S(R+ZèêÞ–ÐÉC^‹Jæä ÐõŠÎXV>­yú.ÇàÂé+TýѸÿLßÚ•endstream endobj 260 0 obj << /Filter /FlateDecode /Length1 1614 /Length2 12700 /Length3 0 /Length 13622 >> stream xÚ­—cx¤ßÒîcgâL8騶­‰mÛ¶LlMlÛ6'¶3±mü÷~ß=söùz®þÒ¿Uµê¾k­îzº‰ñe¨ù môDl¬©éiè9‚RRâôt€Ï÷tt0ÄÄ‚öFzŽf6ÖBzŽFzvvÀw'K#€Ž•ƒ™‘ƒ™† hcëfofbê $ÿ'‰Àoedof g Òs45²ú¬a g P°103rt£ð[ZäÿÙá7r0²w62¤¡§š8ôL̬ahÿñ$nml`ý÷²¡“íÿ†œì>MÈþe“ðiÒÐÆÚÒ `hd C+mó©fôéåÿ‡­ÿ..âdi)­gõOùÔÿ׳2³tûŸ +['G#{€”¡‘½õ§ªýÛœ”‘¡™“ÕGÅõ,Í ø­M,ÔôL4tLÿ^7s1s52”5s40ëY:ýkÝÈÚð¿|žß¿|ÐJ¨+ÊI|§üŸ«ýWPVÏÌÚQÑÍÖ@÷'û_Lÿ‡?ÉÞÌ AGCGGÿ™øùúßwZÿ%&lm`chfm``fèÙÛë¹Á|~ˆ>‰àA0³64r¹~:¦¥±¶qüÜø</€±=Ì?÷Ê  ügéßÄ ú±ÒhEþ=€Vô1hÅþ#€Vü1vþ‡>¤þЧ‚ôbÐÊü‡Ø>õdÿЧžÜúÔ“ÿCŸz ˆ @«ø‡>Õ•þЧºÊúTWýCŸêjÿ!öOuõ?ô¹Oï?ôù¡Õ³´5ý³ÂþYIÿOüÓ¾‘ã_áÏÒÿ!æÈÆÊꯂtŸj†ð³C#KÇ¿>%þÂOã?øÙ¿‰ÞßY>ã&ÿŒŒÏýŸMŸeMÿÂÏ“1û2|:°Ð³µýSƒáSÒRÏJß𯲟I–Fcù\p0°7³uü«ðgVÖç&ë¿ðӚퟳø<8ÛÏY`óW÷ÿ´ÿÇ6焽©Í_áOß0|ÞŒƒ™Éß½úv°Ôsø«UúÏ 2|j:ê9ý ÿæß=ýgÕ¿þÉpþ ?tùë¶?týSýÓ½«Ù_ÑO;nágûîÿÂÿwJظzP32¨˜éþ¹/¶Ï/×ÿ•hàdoodíø¯Iü9kþ—Í>Ç“‘‘«‘Ìò‚g yrcp‰·pÞT)8¹NjQàxgP}*'ÍÉ'òœ}Ó¤¢Ñ·k¤ $s³2Ĥ3‰ ZCcæ-ÌF~Ï!Ú %¤!xTòœ4È ƒMmá¬Á^«Œ°ƒe¼]Û&Ê‹»MçNð*É#zÖ\̳`%‹ o7Þ>¿¶–aS ÷’`´²Ú$”7cÆžOEmòl– †¿j¦Ý¡¼/cö®ÏX¬Á§²‡gIΧr¿BÓ‘»oÿ‚¡O·À[VÍdÿ®À…Ã2§œ ÂâÆOUåii–:‡Ú™&gßÁO…›÷÷JSWºÇ.ÍA6(Á¶ä-À6ªîUï²â±î Ù­–óG¶¨žbàN ·mJ$–×}z#¾&Š»ÕzyÙxøÇìº0ðÀ¨Q¡dKçu&£ÈÓ¯´­Tó¶µñyÃŒËw Âç&@ŽËÄŸ„ßÏùñ¤«Î˰Åþ&ˆ+σÄ^*Z˾V®NAÇÞΕ1FÖ!®JV"1º‡E-§Ûˆ±ó8 =†_Ž AGév˜‚À€2¦+¦Ì®`>t¥ ú~o è~¿ŠüòkÚп…›Á[a)"ûø9¼T¥Ã¥µM‘Á‹68³ 1¦)ù©üàŽsŽø§ïŒ—Œ`žÂ¢÷ÚHB{LC‹#ø9i¹p}d­ÒtŠÉH¦5‘l€2˜œÕ¢ä°ˆë^IZý¥¶PÜTyý÷¥à8r㥣ÖѪ;…Ï´%N¶µ>Ú:Œ´;ØåNb÷ 0{ ØûÄ9ѳè]'ú(±àÖ{Ž•þÈn›”ô,ey¸€œ'–×<¸¯Õåó«û¥×ÆÃ\nÓE´˜‰Ã¼!+;> ¹¤SPf84§/áÛ`UýÅÌM_Lj¤}xCF¥‡®W°ï Àõ?ª³${df¸ížÍ„(+A\ ±Ößµm€®™sÌ…{ Ï¢°Ž²ÜZ¶ªPí›§½Gg+s^!”Y-¢ ÝR|;ïIøàNÞ#H[eM­=k¨¾+GÂ:­ÖTaJFJä…Û·Â5¾Ë ÏÒH'šÒ:ª?jÛü¨%vÈòC.®&ö°‡FÁ°±B… X,¥çmèUÙôA4íT\Ïôð¼ÿ¢\Kh ¾K¡Ÿ5J^K‘Ô-¼$v)‰«ý”1»FkD'ünÊ AR»0E°œ›¾zˆ.Ó]š.Rv ]6¶[­&txå÷&Ý«þ›®N×»Ü"m ýýÙløöEZmð¶uY<Â.Q†ßÄàI”¨6êň7/¦.ãõÃçìjÌì©/×G×âÝ“/ G颜ävnŠK=ÿÂz޾ř¿¼Rg¨l%¨eÄg—ÞجBV—¯»Èm‹§—‡²Q;AöK¸S}t[– :ßo7“(Û™QW5ÎÜ@vâõ¡p!>ós‡A€é{«îÕÓ/WW©Çê<.Q%X%áóØX1gXà#=aeÆ3I*Ø+H„iR ÷ÐÑümÞYyOZ'Ñžˆ®±ÚLpW¢@ꊑînm}´\)n·Ø EÄì{LÇÀ§ v—ªY鬔º‚;d[À5Oa0˜r<$h¯\c¡Îè­†¸áÁlI™O¦ý!õ5l\õ\HÕ¸s&²²QK4¶¾»S+bÍzÕ’ ‡ýd$jxÑ9ó|(‘IDÔ:ß%“M§sÓúQÚj~Å©NO­KO¢¡ ì‘ÑðÊ;i›§©!ÝîAà~Ù„N °—ÉS¹ÅS]tß ˆäÞÈßOôð(…(ë ©Íd±hÿðd9;™ãKþJùÍ'LúØ-+UZZYÍ6äG뤴>{÷3SÔ{7ˆÇ«_ö„èU¯à(ÈÂùž/ˆ¼vÂæþ]¶^臎€'Á«K¦èÁÐìnš:‘ŸûÏtéA‹“‡ìçábH+.îQi›#•6{½|›Á#ø[Ú.™I/ ŸJqàx®”z” ó[¬ÕÎíbÏLo€Ÿˆ›m_c®¿sG@ý-*uT]:ÉQ…n~ºó4 :N… ‰<Û ¨Ö™ÊóPìZM*öPƒ„¨xô–_iœ‰Ã[TÍêÜÁ‘¬ÔlÈL´ÿ}¬d–ŠE°[5r(ÅTMÐï!ÀÔ`¡²ñ7Ü—,„)Ÿ‰vv¼Çô² =,´\Ú»é” ÐÏ©Úû(•™I^åòí4“ÑeÖºÒBôßýwâº5p³ñ(13¸áàÍßïÍòýºì›ätû&µTTïµèÊÇÐ-E{>ÝT7ÕÛ5›ßóÉ—'ÃëÃdöSÙâßR3ÃÈü¬À=窘”óÑÁ†«:Û8 (0¨2&ÓŽlí2—)Ê¢²3­°aXÊ…ÞêÞÖa,Ò¸9™zÝ É¬JZJ*bfü> £ (°:L_q?Ûz0+myß_PL3ܨ +YKS%‚ïxLÐMg¶…®õˆÒ+‚¡‡~¸­]ùŠ‚8á5¶Þ컵®$ÿ”kk„Ï}qt£rƒiÖžGnb$3÷Œ]_þŠÐ~ûvI7³’{Äp=ïo`F,Ï ÂZ:æsÅQ}* |0.Ÿ×£½ˆt–ŠôNx VÙæð\ú¤2·î+õÆ›ÑaäжɟHS]Î^ªÆ¢-k¢÷]›Þ¸™4OfèWiH„33Qê«‚›¸ÖúBj›Ù{{n^ä¸ÏqÕì ýý¶„"d5Оt18!QËfm=*kÎ* [<ÁÔÞ]ët:ÿUÕ¢]HŸ}:aR­±*<öTš(_Η;Ö£ CÎ…s`Ä^gF|$\ô<éò0tÎŰ%Žƒ-ªbt¬AÔ¾.«óhØ_ot——–Àk£9TŽ=ÔT^fÀ¹sïý²¶#¹ñê°¦}›o’çÁ/h» B};V×±•’š«ÕZ ¯Ÿ?Ýc¡Ã^¿ˆÅ¦>i.RÅMÍÆs ±ÝjJ3t:ì¹Às5 ƒÓàA¤-о$.•Ù®?k„·ºŸôRÕ“Œ¬uÅND­n…<–gPتWµi¹7ŽD]ìÐhC.¬|]ž<©-‡îrÓÌô„Ê1óŽïé¬`ÀmÔLÏÃqZ¢š­æ/5ù SC"Ø…¡F£«ï«ü¸:k%¶† M*Î'*êK Q´E†Ø¯¶_‚œ«ÃÀƒ²vG¥ã»ÝûÁI'EIf9'])ws3ÿ»Îõî•Æ',åÐÖÿ+N7þ/¨>ÂTb_ˆ‰K8“eûyŽ¾í“ˆZTa~I¤ã (»¥áI|œñÁ,mqNè`cý"Žø¢dÈŠ±÷;û©žc5ÿÎ~·Å(ψ•K Éþò'ê{“ñ²±nì_·Ó=V|‹tot¿ö ²ô+<&CÕxì¶I;m†Ñ Ï< ùÜŽo prR– ¡ÙŸ¥ëî4´{¼¦÷ÓS$ƤPkYjõ½-Ú…#sÈC®ôû;Ì›r»¯6‡È™¯êDåÔs–W‰â‰5öÅĵúêcZ—/i}wÊ%(9â’¤¿‹>ÎARË1 L³uëi¹Ã4W¬úæ—UóS£ +&a ¬¨„t]Iüþé.{ý¬æÞñ•]cÌÿžé¢e¤©ÝŠ™–“Œ0‡òD†Äz¬.¹ÊÚC§¾–¤ËSdÖÆL q»ûÛ(ÉdCºî«Ì B0šŽaÄ ³[Ð3Z•ŠF‚ø ÃóOòªŒZ™}57Î[CäïŽ?Œ‰ò¶‚‰ƒ²Ô×mWfWYÏ!nÊéŽl´zx“™uÖø…ʾìŽÊR#ýÌʺF€ì,`Ú;ˆ"?Ÿ}7E{ÄK+ðíxúz;í†ÛŠ¥ùE¾8ÌR5 ꬄšâ[n¥³0}ÕÜù‡ó¡ ˜§oØ@g5Á„¶’À&Á_k*ò§‚–®§rI˜)w_ õæFè0}ù²ãæ¸ñhr ýËú¨•ðq Y"vÅqRzy¿êáPâçàb߯y .½ò5Zü~\›ÈÏ¬Ž¢o|Åý2>» [_ŠÓü@¯\Ð#0h>P*p™¤2ú\s–A™îûJÈÒÿÝ™×þ½—¢FwQŽIœÀ`¼ë˜ñüð1ò·ƒ†¦ÖXª@)E,ï!™ýËÁV“À”JÙºíci”‰Ý$"!;UæÀ£úÔhü‚;²M§{·QîÌe¸ø]úX'ƒ©YÒÄWä œ)ú¼Ôpeؼ,4Ò `”ÈÒ®œ± ßn±W´ÈBòìhîÃìcŠE²ÕmJêS€¢\–@´y^ýÀq…Àkj6êíêy*ZF€í®“ì W4\¾áa Ü3x¶¼th67uMû°Í¬ZžÁ{gE ´e‹UÙdÑ (Ê•“yuÛýÎ×üU˜Tm¸OªˆB»k~’p—š`Xç¡Eݲw¬X$@>é,Q\‘¨uS #ÜÃÛÄp§‡Ü¦ps9_a°†;È#š®‚ÌÒj'¸‹ † ÙZm/9bŸÁZðDx,Éy2‹ž—€Ù僎¦¼ÉKŒúD…¿ÎFí–ókidNˆû@ÐGYíø†|hR£$ýãZ†4¨§]ç¨Ó¢¿+¼äÀê7ŒìÞ-Û®É-ŽE æì¦ºc"7Ô—bt„‹{esýcÎ&lýÓw²ƒâ•Ä6ø¹†=ÚhTÇ£ò¤rfþð·›¾©H³¤7p7H¢ë[¦ïÆV²qÊFÙüŬ‰h?ñ$ó_[ö’×a—Š€FæXTq)wµA†w”¥bè¸ö_ˆ{llÐ-t¿yñ0™û›[Ò“ìÇÈÔ¹¤¼›uÉhЋa¾z#ùI=Õ)âï·ÞêóÉßû”g7ò½õübÇ“Hñúž=úø: ƒO—«ûœwâ݆L´xÕÄœLmF®…„µåR,Ò¨ë2™–GnëÐs³9Àâ£c-^§çVãzï¶oÈ£×ù¾“GsnáSsoUÊFµhê û[‚+myvó#†³å—Èä<®í°Äœ©m)o)÷"--\ÔÃ`+®¬ØÍŸVØw ؇­¯ì/Ñb/äâbÕbjó Ñ×þw )1e¼¸¹Å€¦]`%$—WpVÚKÞ&s="ç&AS ŒÈ²hmæ`í6UUÛŽ·Ré:v)',,¡IoÉEŒ—r|Øþ°™Aòc—êOåGôØîó%gxÕ#Wï2ÏØÄÉïÙÀè Fbr‚2Õý8LTUÃ1XÂ)q ºÜGãr«øF”$ZEô>$p›Ê$2zéq…ÖÚwÙ® ?_€1¾ÇùúW_AU›zõ]ïŠE$½³®Z3Îów<Â8ØWkn <\õR£f5{6à¨Ñ]*4$ôë0Eœ>o­W»‹Ä€†ËËÐQI(äx 8Ÿö޼߿Mœn`W„MÄÛ" Iµ Ù¹í"hÄg¥.¬€ O¤?Ê&~-•œÁ.hXàTâ9Ù`rÛ¶µÆt¡«˜EÖÌžÇ;7O‹üŠ‚c§ÊŽb\šæ9°qìŽLG¥Áºù˿҃oç&Ý!6V*ăÚm†té”ßšò°Z!¯ˆk6ໞ öŽba^I°ã²üX܇¥¼ðîë%©Éuð—7TÝRe¥Tž—ŸeI² ²ÌQ׬@yÖ0^…=J ôsȪSëØ÷Ìjp¿&~€ÎÄYÄæ©@µøKöBMâ/®çoàÍæå 5n#ËÕÅWaÜôzyÄhÒéÁd_^5`n ãĕŚ"«XøÈ±á7ÅKF‰Ô(#kî/ïjX\QÌ]—¸«~¹µÔD 0Ê•ºg¿œ@HI­ß>BöwÅv|Ī\hºGsò|7 ‰6Fÿ¾9¸Ü¥Žßïƒb&“Éêž·ãžJÇ,A®ÔŸ=• ÚL.fñ!7·u/ Ë”˜Ô5X±á§ ÅÓUQùX‹% P‡Ž.ðcmUHˆtÎ%z|êõ»üÕ^aï\œ³âÆ´ms¸^ÃäAäá_ƒ¶“*_ÞØl€Ëüz |¡ñÏ/J6NwÛL_Cìâ–ñ|¡¢Ô¦²`» '}ëòëðvçÕÛ›åwïϳð¦Ð{Ò-9ÑBÒÉvÔi3LŸ¨x˜!»ý:˜v¾Kæn ·­Òད²ÚÌ,õàØ“w9+Û0IŸc35QäÀ-_•NÁ d”_U”åm»"óá·!lsÀ(Å¢M=É.¹ýT"¦Ø2l[©×ê$´Ž™£·h…IÒîÓd»¹ ÕÇû²` qêTà=vn匽ì“+|æ•w"M’'j$õÈt|â¹]?™ÉH¼!šoû`$­,¡û@ÆÏW÷¦• ùf©ëÊC»úùaqÕñªõ>ϰ͢۱êáüµ£qÆ2üì²ïª¶b[¦  h'°¤<à-àdÔݧʃñI(?À˳SLGDq=Õí9Ð×_ÝoV'ê©×i^ƒYÐl "¦gn°Ëq> $;öšùÔi%’Ð%Y~JÞ:†¤˜ý„£­È]¢ì´¬³b§žb 2F«`-ôO  Ñ¹nâTKÒÈVýbg?¦fçFí¢gE·È§°¨/,}n§éÝÆðÖõ¼6’Ã2mËeâräÎZD€u mmhR˜¾ã=®"„,ÈãÌjבXL‹²aj•q¶m‡™h²ÊÓu»§O†ªØG$©05»>í?m”鑾2w”ß·ÉÞâxûW°fFÁ¯BvFüLzÆn#×§ØÒL>ºJAõ>u˜Bˆƒ ç!L#Û—˜UP[#äÄaìܸo& š©“G.ÅŸÜLC€™NëµÐá#°t‰=I|mŽBü>˜±Õ™VÅÁSçr35]*¼® Én:4„Ái-%ŸeÜ1Î=n €HVI)| {ÿ™à—gò/a:\㿵ZûÁë K¬™3©/\™'tNCJ7i,‚i¾hE› ±äÁc#¬h¤…¨í…_½ÌêÚô:&£YvƬ±‡ºˆ¼"sΖ‰&Z€œ{·“È{‹|±Uõ¹ÝlÀ•x‚ÊOÖ¤úÓŒ<‚¼:^¿ºÿÆDª…%;¬RmKöæs {Iö¥S¥‚«åùž•eñÞ†µsõ0q$¦t»—¯ Df;ô.²áê‚Elù†ªâHï<æƒOämc €éø‡Œb{°;$Þb¯¥ežE¼ŠU4Ò/ž<¦j-°´Ê\]ûÃñg½Ç*mIz雹wNÁ'Hà‘4j¿“† ä¤=u¦£džÉ.ÝòVÄØ.$é…øR3I¸Ì°¨¾©1t: Úørê‡ûyÅ\YmšR[B¹¯ü— \„i̤Р,L½"_ÏÝT©í‰ýÍà˜ˆç ‰ ŽôÂÝ.yȨ—J`].R(Í#÷Z5ÝÀÜÕ[¼a¾3ã4-×Ð~à`I¤óäÙ³f£k24:{®€ŽjEû™…;ÉЇ°6nÌ †{‹ú9ÿ@‚i­ÆíÖg;¾<¯ÀM»éòîÕÈ.ê½2Èã¿Åµ£8*v!Y§^€VÂÐêÝšè8ìYs4ÙÃ܆(Šj™õ .‚À"eIêÈL ¢¤5ð_ê­"<Å…ü‘w ëkê¸PƒÌl¤ûŸ+ÇWЦæ@J!¹Tê¾2×5,bÛOæ vcxeš‘JÉ`Sæ$ç’Ø¸ƒ3ôâëµÏf¢„`—M+fókv/¬\9§Çí™K¶G^ðy)¿¼¿†J©°lU±o°Ÿ·?Wq·;™²ÊÀÊÜirr.øýl8\v-­ËhôôÀ®ˆv=b|ñ×-ÞLNÉ+9þ†_ÐäêäŽA3Úsý%Æó‡!ÅÞZÄåEøe!ŽZÒó|çˆ{Xahø;yvôE‰f<ãGÆÇ©fˆÞg5ùf”/½¼µ½â×…ÊPCéyÃ?aZB¹îï4྄¶$LÆ]pìªÇ) ÿ:Eš'Æ+|'zÿ]çÉ–µ.wo`6™c6`Ug'«ÊUFñÝпl—äîÒ²ÜÒé1ÂP-PާJPÚʲ‹5*P$îæª”³¦üMêfòñÁòø>`Axº©‹:Þ2 -Ô$òÇn7V²@y¦ uóljASuí¤6ÐL<ßÄ#p¥p¡b†ãt §Û¾óäÏ/#zå¾ú’¼pîqéEQ¬^ÅŒ«r¬([6ƒ'cA—××ky˜åšƒö&Ðó6u*ôCcA»°5$'âÁÒšÉ׸_×÷yúÒͨŠFyíñÏwX)=µí~’Ÿûú’ÁÈXc¹˜Êד†T¨—%ËfýŒl47xÇVñ,Ç!¡~–O*åó Ú[@»Kn‘ïc•(%@0¥¢ö^¢.Ô²ÆÂ-Èê~Ô͹ôÒâË5IkÒs •£¼ÄˆX3ó/ðŒiô$(F–€4o0……è£æ5ûJ‘ÁÐsÃ×—`}Ã;‹,Åpõ¼[nñ³JŠš—»þFФYƒÕrvg='.ïÛžÕÝ®ÑOþ•BvY³8)ã3Ú¨ãœ8WsÚÞŽ´ž0žÈG8i1xM¡fxCµ"Ѳ¡ ¥\´4;Ø ±\V¦‚—ßn¹&v[KÛ‡;ôɨ# ó6r“yS ¥¹)Úœ×<ÄN*Ö@\af»å—Ìño‚íª1¿C޽P¶?Ø+/Ç ñ¢o )n‹uüÚò…ô[øGOÅQà¸æã•£OEJ~ÏàÌE Üe¢×b¢¶º6¯þ®ÆêÑ"3÷Pq9-‡†~?aRÁìõ›äÝüîäŽÿ8§šB; ª…?ÑýÍ*?H}èõex•#CRqÿúÌþî' (ùœ),säÔž˜ èÜdõÂiƒšª(¿ýÉå!+|XÈŸ±Å‚£‡­[Â^÷Ë5u+»í›ÌDZHIÔnÞ<¶!,;¥dªšÏ~¢]àÄ —uçm™'7¤ëŸ],Åûѽ6¦"^oŽéÍw©”XÖ ¸ñÀ¹ž¨´hyø K7?×È7ûvTP_p ¨ sDlÞ·³P݉Ú."ZÄ©¾\ Ë’ÅuT‹è®p“ª×ôö@V<0VmÈ,°?¤Óýþh…²­ÜGs[Áº„ÃÆ8³OÜb7ß`«fðž…ýé…x×?”i÷Ÿª[Rè‡X°ŒRC‡²RšýºÜQ–ü*{r"$†¼v„ßOƽZa>vXÁÚ¹d€´ø+0êCŒ³˜´Fl¦ôVù^Þ¶È’ D©B8‹R™`Ÿ*Í™…,5¾–$ª-ß2+0´ñÔ¼‚PÍra+ÛElt4v¦ß‘ʲ£J´dukï“féêü*š½®ž@^š§«èsÕ)mP­“^ÐaìÁ\\§¿™ä9¼‘Ü¢ Òï¥béØËs¦y;ZÜÏÖ³&>´£g´Æ:})¦õõjè»wGÿV¸TÌ>¬2<Ìï° ZqQæóP#Ï%\;»#…_Õ¹Ï]Ñ-Ú).¥Ú†@ž $´Î\[ørþí)¿y0šË0/ ƒÿ +À=Ò*ŠÚbˆba1·œTŸ“‚}µ'_Ï UìÃ^œGoU±Y^ •ßobÑT~ ®óRdÖ)ˆng®‹ÈIl¨ý³Úï6kïŒèšèq@䣎ϷØî=ÆíX7z=ÄŽSß§£ý1cN~È7CæÕaêÑXuUd‰7Ÿ¿ÃÂüÂèö z ;¼—)¬ŸØãÂóšØAU d2ò3гIöÀ’é`¤F<Ðâëà ¹9³Ä¨îºŒÏß-¿“¹sÚ¤ñJ‰xJwEÖUsV6¡¨­üü‡@Çë>º­3ÓÉt>ý6´ËB¤’;y@á4¼Y„{Þc<¸;ãºíÕFZ߬ãn–DB¬n>_'³9 b‡øBy¢&wÖ®v‡q À„MZ ì‘K®xŠW!A†.¡ ½óÍ#;VÖÂoO>Þ´{xD©ÿTRKjiÿ+}®ˆ;YÜÍ<¿& ¼s$•‚óT/Šùux«Þ I:ÍÃ×—îM‚|”I&¢'¥v`½“ÃGç¡ÍÏlɲˆ. úïçùœP÷Nîxaü²!ŽÞÙh ¡s†.·!/÷|`”ÕÌ¿Å0]´×Á2…}÷§¨ÙÈ ñã–^îgJCC=ßMn2€i‚×…©è £  ¿X ¨“å=uÊŸŽñ Íëø~ØË`7½ %|Óßåîò΂hDÆl²°mV9¸<|ŠËÚi½'ˆãŸ+€;XTí{E?r³ =ÞÌ+– -çÌÁ†_!¥¾9<;â«îôÏä&þáJ!ÍX×à\«³¡ñXyŸ"üÓ„Þ§QWþ,ž2›ªÛ±*‰³û ê÷7‘ Ã}Z5Tõ|½è”¢)‰ K¾ê{¼mfooÑTlö¡ä äMüxa{‚ ;ÆN¶M«Ú}ð0[ž‰”1&_C?ž½2§Ô6…©{¼€TÊ®dlMí/ßð eÅ à D—Q†èGcʼnzéPQPÒ„¿‚Ë$»:€Ïj©¡? KôgÓµÁ6ñì,¡´ø’LƒÕ_ìõ~æ–Ôù1´“ãY|)ÁHÛö“T Ö$žÊĬêN?–HêþtÐ' ·Ÿ¹˜m§›Ãyèá‡óØæ¸bœí8öÑ™ Äø#å™ÇS»É°J¼— ¸æ§ùî~¼¨òû2y@׺Úä(IÖŠV9~µº»QÆ—“Í íÃ1´É„®CùІ¶g¯°xor]Ѿ€¼Áú®Bb±ß4õ9Œoƒb6v¼rßh'²œÎ“Uð,*CøîNÃŒm”!ìEÞEeÉBcÊÓ T6·&÷2–nÊ8ä€:»'Œá8ïîvÛž2ÖíMyÌË'žqAâÖLE—©çËkضêÀÛÝúí£O‚Z' ßàoÑݱ7A=žÏâ9Ç™­sêÕgævl©j1‰ò«;úñ¥ÔÛâ$T¼j0·`µk÷œ±m„ï—/7lìówÖïP…yj£ÊŒH# Pù‚¤ºÞx2?’Ó‚ìôÝ?È<Ž¡”ÝgÕ*PÜvÊó‰K$ßnpÁ g¢?.H­­D§}’V&ºý7+ƒ[öQh¾¤á­N;ð8á)t6¤Æà pq¡È@lŠ^¤b¯µ 6e°MPñÓ01r«ûÐ^­UqZ'òžêTŠü]Ð.­‰¥fW!ð>m’FkTP]ôj½ï«dÓx X ¨2K:0\óçyüJa÷Ó³Ü:þ¡Û ±`—Ëýƒz©‡!v¯Ô-AòOÿ¡ž9¼¨&ïe ^džÅ2‚9q‚T´]jW”‹uA »ôDj"y(JTêPñ¾gÑÇE¤Íjßjx{-Ü$ýÒS5 KË5mçûãb¡ÃšÜÌù—²Y`B!òö:MQ› ¶Æ/ÈX½Râû¯Œ÷»Ù^ŽõZV-÷²Ë?ÕþCm÷p`;”ÃçäX¶&É®yš]ÓvJMèD¥¸60®1=¥rXH' cHB Áyxøå ކ?Ô›‘ììkÀ–ì;H¶¶ŽŽ4¥D“'uÉ\ƒ©VJ’¸|¾6׋ &éŠzƒæ2~Â- IE'!Q}Ä ¢Ã—ä½%v'¨ Ùzéj †#цéÜúÕ\d40&o¯Y Œe‹ä˜H±Wñý”M¸­KœM¶ÐÎtq`¼7 j¡h>Éî¢Þ/ò|þ#jª&W¥}`Ç¢#Z ˜¸itOä;Ñ9Æ)™§Œë款“Æ ––“¶Úä»®m­ˆY ™E.Boæ¨Eˆ6¢åf+0y¢ÆÉ}àý¬z”ô&ëÀñÆêÙéédHf}É_óî÷B&‘´ôªU^W'Œ¾˜ ÂÔq£:B­®¯LØxHÜß¡õ§Æâ65Æñ½flŽd©™ñ5- ·bYµ*Ê%Ô ÌIÀÑÕÓ.#v¥q¦NÏNF s9Zs ¾€·—Æ>·ü]Ö:kœ.I>Foï|w@÷øSVð¶T½]’ž$Ó‚%{"aóË–Å$6\滃øKä5WTwŠwQW¸’çCÀÚæÖ¢‡\JzÆÙýS:ëÈiŒÉ[¢M˜V6f|ó^È!Dw0 ·ãVÃ27I‚¶õKã +–,o›Y»Éš#ÆUªªÖ ö`ÓüœI´ôoê®rQÎQ²m”[GÅòƒ²1$ðöÇg&Þ“¨œ=(z·øÄkI"o„Àê]¹Ä ‘¤40Ã^i«wÙ~Å€Tœa_yküº ;ü·ÿ°}stÞ®¸ŒÆQt¶û ²Ò'ÅŽçÑŽVKØ%¸‹ç¸=_n¹á¾$~ $ñ¼š«ã.Íý8ï:ß ¦|#mÃú ÑHwqUøŠ0^kðb&Ò­Åɧ°ûÉÇÍôù8´qGûõý™VÍô£ªÙ±q÷¨*vЃo·o˜ðñ²i…J8„QpkÎ6I Î9g§„RQšY„{‘ìq•i¿ÈtÔ[ïBÕhæÓìÔ~oß×Ý_5Ÿãs®YÑ|ï,3¸š¶æ³ËOô8‚ú”[¤e¡±‡Ž£:PP½ô”>¡â3¸—–‡iy¸‘: ‘NÁˆ§ „ôý½ºd£2°-È˪^Iý…óĪ7sJ}Ì«xŠå…Ø1ô·§Y«8X,H‡jŠ÷ŒzmSXp¬ß4ßNU{^P ´Î”Ôcãò£+J\ê-Ý7¯e~8³0&Ÿ„,CìR8Ú ž.œ³Qí|¬_aº+ŠHå~sì0g„ãœØ0LÕVÛ^%Ý)ñ¹˜B’¥Ð©s¢]|ÁwɯTÑaÕÌ_hd$<]E8s A'Ù[ù·Â@Q Ã]HųIwTB¸\vµcÿ¨Ÿæ$Bä`ãJe §ÃÍœ€è¬´Ê‹ž¡Y,a6ÞlöU…œ8™b/È3ô,–Þp2dozLJ‚ìÄÁ®v?èÕëôä*º»ÙÕ(æœv‹ØÉéúió2<ãÄ^¼ÕÐS[Rñáá¤0ãÉù§–øfu(¡·ŸƒÇU>\¡ÑA³‹ú d„(š®tkÞøn/±~Ü]#‡b%y b°ðš:“{ÛÊŸyI­:œ¥*$Æ«„ÓIó(9¬C–9抢 Ö-ð£²BNÏo°UÔµw K-uÑï‰Ø)™_AO/Ù4ͤ™È¹?…vgxI¹L³?(€ •‡ òÑ-ž¹ñlƒàÎ5j»qp€ BŒ…™ò§™ÕM¾‰®)"qt̬'qi9ÀÇ!ÿ^@ƒ\åâZý6¢k±Å äàYÕ”oÃúMÖ¬˜2sa´‡ƒ´î£úÐu!fA“‘F²£` ´Ê=,Ý ÙM ;h"W)@¶6D%µ-R~›34VbFu_îé5ƒ”\ÙH&%eeZ»HVÆÛE$J˜DAL‘²Õ‹B.ÃÒ×":¢øÉÜF.é~ߨ8’q Ç =D›¬Ñ^0¤4u–‹xhEIg² j4_—1˜¤ª› ö¸ŒM„ +b ”UG®ž¨ãðàZ»Ô,]¶`¥$ÒÈ Ô÷ÞûºìúC5£‰¯Z²Øû¸ÿm;ocµ6ÆóÞ¡Ø‚1YmÑÆ-_Rµ¢ËþÒ©T±asšmCW™Ñ É.ÆÍöšƒ3üY¦K.lË'ꇩøáÌñðT9‰^D ×Ñoe¯/]ï¦ÙÅWùýËîDh§ò!Á8a'F!¡þaÔu1IÚ N5¿BÚÞãú§ÂÜ78Ÿ–pà¿ ü:'¢Ë\>ܨÚ[ìRYÝ»0©‹J‡úâ@_@ó5ªrótÌ:zÌ{]tüÚD—2›·‰N‰ ø&'‹“nsÕ"cN€Á;y#ƒèŒ•Ï ‡ÊXO¯g:Èd‘±\Sˆž€±ù( }Q“Æ55hªŸŸÞ¤bê„ZÈÄítŠX‘vHC%Q²êÕFYgFšÿx?:Çݾ¬’."žëø%j«6Æe VE®ˆ;œCœÑ©/ªIqD{Nj6»/a´Æ•Ù< @£Z7šP{¿ D‹¾¿»La4-ýàæì ÷«”‡@kÛ®.í΋¦s ˆ´›6@”;s@›G–RéÚ=.i<$)‘ îzvƒh¾åÿùvÄ ¡lö®©ÿÍòµ„ÀRc% ÷±cˆûŒ\N’¢ÚÜ1æÆ8&îÁZqÔ‹°µöqC'šÈHd3Üó˜_—A(ˆ¥WéÕüÀø^ Ð:¿M²×I!H@Šf¿N /?!ð{@Ë%q»Y¡ƒ­i½Í@2¦ÌÃ?ýÛO@{X q•Ø|=Lòj fÏ]´]·0ÞÆ-5öŽÄ¨<<[Ìš±«”ÓvpV^?…¤;yµ‚Sð·ÌM¯D`3H9æ;7•QÑðfÉXÎ%vÕ‡·æN 㧯÷Ü·xi¼¨y@œü*GŽÁDó×Óºm.þš}Éè Ÿ#N´×^½ãRLTxÌÜfè®GnT ß^ sW›‡É[;ÐaÊJ±n©Rø·CØÇ yúêíu0( (NX9óTb¡rÖ}³!]ˆ3‹Þ³a·5"»üw²ßT,çlÀåÚKó¦TüÙh¨™Xï¾¼-Œ×>À±\Oð¦ÕI«Âyцø½Á󄬼Ś»Å̸Â8ÃvªéªŸ UÆd¯’ºc&˜?ðé7 õQ¬ï¦vÛüæóä§jóoI(Ä1»¿Ä¹q™.аZ]©‰HÒ?®pSX ' à©õð\ ½uxæ%ÜUXÙ2F–ÑP9aI÷êø×И~í%ÿ jå±x°\Õ±w84×l×°Õ[Ëms.îéÊâ¤ä|7t»=‘™V#´2ä$—8ý`ÏVˆ+Y¾^Å>hÅñÒÎ$…\m=ƒkñry·äÆ“Z„5 «ìÖ¼ºüíwïÝ\4Á÷~ƒ?-vóÁu¼E§Þ„/MIaЯΑâQe+ÒR̉BÆ ßKG®(ø €v®@[Y#]ÂÆœ«te¹Å S­ùÆ&í`ãfñ4Ï”Wfò†¹Ï‚× ¬WpÞ´†Ïù¡‰ š0‡„Û.|‰þ¦Y[lŽU¬žùšp¤íþ&6GU>Õݾ*pQßúÚ~ýÚºZý÷(¤7endstream endobj 261 0 obj << /Filter /FlateDecode /Length1 803 /Length2 2329 /Length3 0 /Length 2890 >> stream xÚ­’y<”kÇO–hЬ!©GŽ­,3ÃP¦lcIY²”²ŒÆÌ3 3óhÌ`²ï )!”}ì%[( E9Ô-K)dKéê=ïyßοïçùçþ]×ï¾îïó»oyÙ“¶ªÈ4¨tU„BÀXX˜iœ%“—ÇÐ@QptP@>¬g¤×ÖAiè 0yy1i$7w: „QþnÒ ( „ÇQ ݤpfàqdÀ“@:S 0 “›ï;¼Ð¤ù€5Hx:à º‘¨0õïHfT"hÿ,^µ|@š7 Pú© p •Ì ¦n qN9,ÿ¬_‡›0ÈdKåûøïAý££ÈÌ ŠƒÒ ˆÒ¨¿ZíÁŸl Ä üÚ5£ãÈ$¼Õ ªM5¸æÏ:ÉÛ„äN’èxw€ˆ#{ƒ?ê •ð+ '¾êfææ›ƒ?/öGï$ŽD¥Û1½@þ·ù‡Fü­9ÑH~€#\ GpŒœï¯•ó/gSñDu(-G£á˜08g…ü‰JýЬ®F…èœ-'˜@€Ñ`ßoU¨Ÿø^ú©´u‹ÿ(œÓ$ý-p@ú_ ¨{ýÿü{CCÈÏŸó¨T‘( RÁ9ø?><ƒF©ôï‹á_šH⤂~ 6ÐáÑ×k¢ŠƒŒóºKx•½÷¤Ft>Œ¬NC«ÍŒ EØ´Ú?ìÀ½K‘¤R¡”¹·Õ DÔ˜TA@›¿­zd¿p›€˜rNº-ß<~Æ Ëõ4ëÉ£”Œ˜·û&½jÎÊ­Œú<ä½cþ¡+5w‰§øUß×å ÏàçcÛS rS)0ç¬zódðôô蕎/³¦P4ÿTÂ)}Ets@êÑëžÃi‡c³,¸ûŠMï$Ï+·â††S[VlNn‘‘z§E­ù*~TGhG‰«ÈDïÀá+ÞÁñHЦÐ0æjû¨Wd݆x†`*[>¡Õ/ñõ‚¦J?&Û‡?9Ü£o]µ¥Y/XÂ/Ég2‚‹Iu·æ»s®@¯|„‹Øë´ës¼fØáN=mz¦GøV(\±gÏt›Âr[½Qý‹ðt–›½é(îOx>V9 Aò€žÈ¿ÃÒ ÷1¡ó4}ßâCAŠÑé)f·]$!“;o%ç5t‰ÈÎ vOœzÅm ™+àÛ²47¨ßpÿÐn¼‹Ÿ§$uµ»Ä®–òVÜhåtÙÈrˆ$Ìû4U8'yê¨×˜uµô¶ßƒDýÉò3…!Éï·É÷ädFCÊJaï{q&/¸%òŒ¿Y–¹îzäeÔ‘/?qO¢+×§0!Ÿ¸¶Aô,Bf“ŸÁïêZH‰7ãw˜yiÙmS°à4±Â‹oÉë JXªkÎÎäý˜Ò´8“§9©Æûا=Á…ÔD>ߨ”»|+Íúz±#Äõˆµ–9ÅQ¯¨k6}Ò½Šóó]¯ `¼t?k‡µ¦)MÔ„Xå‹8Ô Âøô¥G¼C`õÓ `_õ–"»¢n©’’#’”1›Êg«quó&^ÝYÈò7"Úïßõ8Åj~ƒ<]™tŠÉ V|]'"×Òqsc¿¿o¡$ïm‚¡&½hÌ¿½ "1]Á-*éã6n’yúY×å‰ù&Q…ÉÐJ¸œœ›|lÏ&Ûk¾„Ëq¤Šuk’θ3‘û,ZHXyçRPu å0È$½éŒ»^0•Öôa4G6?rSäX]MÏq¸ŽóÁæ Ý,+Eq¯l§7ñ|ýžŸ ,²0.*öXÑ-“øá!š]özáP}Bï{3 ÇKxEKk±Ä:·‚i‚IÒÕ„$}Yzú‡Xý¦ƒû¥±K²ÕŠoÏÞÚ74€ÉËé© ež M†°¯×²QÀ-GYXêbvºBµ±íÏgnK…ªÛލ& 9]ÉŽ¹¶Ô "¸7@´nâËG7è N¨¥ÞCŸ­Lv9¹ÔºXÜ{jííÑáÔϲ%Îl†$%u­,ÀÚ}¨_yr~ìTk4aäÙǹËRù™GwÆñßvv—nPÈ/Ò×ôX1:”.£Î>Ža'ùã[úË'¦&3F^¶.œXZª»Ý*:Q¡Mbi ê W<ÁïL|¸´ÝÔ³÷ £ä0ïþ+ã´I lx|^±µ½ÏÆÔcþ<`äid‹Y2ë´w'/·èõfOZÏFιõº½Ùª‹Uä~CF0Þc‡ô4~ׯ)Mwܪr#»©’Ÿ§éÌ–sV±—ß1¸Ë1‚Õ91&OÌü{_ÀŒ¬z%ìÜ\sUb”ÅšŒ©ŸlzÊbœ£¶õÎòS <®†^ŸX4àg¹*–n=\™ò›ÂŽäêr-ë2>îVÄÕÚpZ9¥,óyžá^ÖóÛ¾G#®’_NY*KÞP¼iÝbø2JÏu·ÄÌ¿ ¼Ve{¢„jƒŒ…ű}=}âsöžk†ûãØpáÊ–zÖµI£d¡«¹ëq Ú!÷6œuy|Ÿ¬º6õ›~²’lUã¯7Ö(`õ÷£ÓŠ6?íÊÒG u4+—Ï#¼/5µœ¥œËÉŸ&òõˆKvÒ ±äê×h8ÈK*°‚¡ÙÎgsðöfæQ+¾K>c{ ŽE韋hרš˜bð6ìôoV.bgd°ÝÇ“‘èhÆÙêü½™>êw^Û¯Á#ÑçOÂRΤðW½¹;Û6ÛAÖgÊ*On¢Òpúöcu»ÕþØôâvõÉPHm kýÓÖ÷™Ëç ·”… QÔ˜/ NžtéW´FqGèØ”È}y¤ül¢Êy}âDó`¾pÌÔÕ Q”<¥«ÕQô_Þ¿ä—&Fqù º¿výyð'‚ö•»©¸‚ç²Èй¸ŒT[Áî‘ýOxÆfÀ¦’ª%|ÍáIò[ˆÎL`­ÓßöÆ-;ÖѼBÁL´ªwäILù²~1rö]gaó°ž±?Ò®}¾ZµyºÖf?y;v(t–U¥¤Ç:Æõ‹§°Ã‘Çþ•·tªú=FM ®uƨmõ¹<•xÆ@öqÝâʘÁì1¶í(÷‰¨¡§O7‹ó½[/s0ônë•N¹‡u5Ѫ‚›ën;W™í-qeÖùßÂ…“¸ßlÜ¥!xs¿Q„݆hsØó°çÔ²o˜Ãc¥ÎæaDýjÕ⯢ÃìAmÙÓÜôrïë‹ Î™èíìœÊ¼Ý±O‹Ã2ñ}¶Ó ü%²±˜}!fR;ß&…ÿñ;‘\”¥/«iÆaÏ“-m%çRTØž®Cô–õic©û›Õ¸•I[<ÍoוµÌÔ@ÄÙ§æîe×·µrX™p‰î}Ån2ƒ’åS6Uk—šÐ³7QÍSÕ¥tõ‘®ì¥‰ËÒö‰Áó°ä'¨boPg\op|:"€«3U£õ³6~Ò°4îRvëåQw1ɰ±ÇÇk/òEz_„ªÙ•í¾åmm{»-–{tÛ6pƒÛóòmÌú}ðO ò”é¹Ö°È‰ mòæ~DZ%Bô{£VE/ý ë|—gendstream endobj 262 0 obj << /Filter /FlateDecode /Length1 1153 /Length2 7101 /Length3 0 /Length 7821 >> stream xÚ­“eX\Û²®Cp îÖ¸Ó¸&w÷h ÑÆÝÝ-xðàîîî<$¸Nà²Ö¾{g}þžgþoUª¯jÔ¤¥TQg5³3IÙÙBY9Ø8⊊²ü€—#;; -­¸#È ¶³•0†‚¼9g'€O‡K‡… ngïî¶°„Äÿ âˆB@Ž`Sc[€¢1ÔyÉajlP·3ƒ îlQ€Ú_7œj '£ ÈŒ …ƒ`6…L@`[à_’dmÍí|ÿ2›9ÛÿÛårtz`ø[&#àE¤™­;À dŽT²{©zÑò!ë¿“K9ÛØ(CþJÿ× þ—Û¶qÿÿv{g(È hgr´ýïPmп´)‚ÌÀÎÿöÊBmÀ¦¢¶6 +7;÷¿ì`')°ÈL 5µ˜Û8þ¶ƒlÍþ[ÉËøþÖÔSPPaþ×ÃþíS1ÛB5ÜíAö?Á3Ç~‘#Ø ð‘ã%ðåû÷Iÿ¿jIÚšÚ™m-œ<¼cGGcwö—Tœ<<OØÖ ä¹½²ÙÚA_®^ã 0·sDùëUù¸@¹¿Lÿ"Pþñ€ ˆTüCü ÒˆŸTùCœ Úz© ñ‡Àÿ¡—µÿ¡—œ&ÿ¡—íÍþàK3 ôO8ha üÃÂþ¢ü|iÀêøRÍúø"ò9^ÊÙþ_š°ÿ¾dvúòr¼±“å?^jAÿƒœ/­@ÿ¸ÿbKÐ?Õs¾Ôsûsá¥=·Hç|©àþ7þïÕ³sód}¹ÁÊÉóòÖ)çãa÷þ¦ÎŽŽ [èßïË‚þ›ÍÁ/; ¹LQ–íL…‚¬RCJ|$ó§KáHÓŠƒÆ;ƒëÓ„ØŽ6„°ç›¦4@äXÁXVà2Ì”ù  ™9Ï&Q£¨×§:0x k—17]ñÌôHÏàõpÎ`/$+|o™bÛ¾‰ùl…úê›K'|•Â_ÑI\É×Åß—>Ö¾›Ë¨ŸÌ¨wRPôsÚ’AZûßâÆî¥íòí– ‡ ôÒ¯pž–‰z×g­×ÐÓ"sa¿üü(]•|ÆP2`¼ºö©ßëJM†Œè€×¶ñ7Þ;AL´Rì­…e8'ßhN·§ÏšxüÈ7‰×ÁÍxYo>ÍÓÆ¸%¬ß¨›±,ЕXM®ˆÜb©j¦spS“v!3å,ÌBƒOY&vb^ •™C7±&}v²u½;»LZk§¡ºØ%b=r»„3O$X%S9¥œÆž¢vàCñÎØU0ÜA˜"iÅ¢Òƒ~ˆ»QA3Ó]i¥ú®ÞaÅs“³‡¿*÷Ûá’÷VøÙÖk«‘×MÕY [šŸqÛÛ¬êHB¾:°½I° I Dpl¦TÊÐGé±ú†ò[º?1–Çyp4~¶A³°Ñ/¯}q«¤=¯%…È©²Ä"¯2ֆʛÆis9OhâŠ)¤^7²»*¶Xƒwí™…Xp¦“HD︻Ÿ²TêÄÙÊÁÔtÀ+pÊš¼6Ê&ÃûÀûĹ|A%®~Q`ãsFig]›×z£ÖyÌÛ/ªiuvüK£Õ«­XÝs ó¨SšK0<œW4+Økù*»P¿Ü*‡Î•Ìe­°"_$Ib«ˆc¿ÜQÖtáÐNj#³ü\×®Ò-V yã­Ì¼‡²—†÷'‚ þœY‰¤9Ð"€€©³}(Û¾\Ô!µ3æìl#?‰1jéóÔ—’-%xÞH…u¥e˜_㥸úhºF~Æ) µïïsì×òÛÑÐ2’À%v*XÞÚ÷÷#??L-‘¨´ä‚$wžó.»CH†õŽÊ¥”éºeÑí/ôG¶Ò[Óú7é’d_GXû$l–ÜQÍ­®v ®ºtÁWäå#¥GÑGÚìYå+–ÃÚK¥ÐucÉm„êáfy¾jkÁÑ蟆?P¢1äkh»õÕÚ÷ØŸ-å_èD-(ºH*у)õ, Ú]/ð@f³¤_#ɲ–±Dav·Kz`¤æ ‹’òp›À!#h›¡ÜwéxŽÝ <¹* ÅX&¦,2KZ]Ä:­;Ÿ}ƒädÑŽÔëþøîäH}f¥þW;Ôä'c6`VsB™ Œçá‹ýî]ÂÝã,£=Y§Æ3ÃUã-£2<Ì«ÁÕŽã½É\L?%Ìû1€Šÿ¹È?þÃM—úuŠÇDWßvøk]ó$ŒÊÊìÃ2fnj&¨ÇC¿¶uŠ(ñ×…ÖúOêô«Yåt¿Uˆ,†ÜX$ë\<$Cuq#1â™øÓ‘¼Ã4¼1L×äò3Ä,kˇĒѢÀñì«ãâ0°&NÀ -†à6 ’ß$Ç ´jÕJ.þ ¶êó‡ÎÊ*{ŽipÉ,|àî×ÏìäÞ[%ðþµ`+7C±Xo<ÁgÍŸÆÜðßuQtE±kœŒ×_’‚Â[¹qS1 Vo‰ü?¯¦iá+rõ9©ï´;‰âp 8FåUjn£ÈèÇé ƒ ¿ù()Dé¸ †B嘧6ý‘e”(¯Å]V0K3ó«Åeƒç­ºoœ{êa.Ŧƒà@.%cïD^Æñ‰¬yNÛ ý|&(×Мí^¨g,MBöàÖ]fþÒ¹å!­Ì~L<ÿÃ×j‚ÖõÏdžÓnŠÍN¢ç«2¿ò(ŒâÆúbâÓ^Û0dŠÇZ.|mÊ]Ú»Í}Â^(Âú#VþkÌGúӽߵMýQ\v:8V9ãí¯I£Z¥½@õÌØå}³6²{=Y £3Kvøº©è¤/Rc\2|çÖfd× Ç3’—ùD˜8…ÑMÇ=ëFCG¤~šgoМsä7 tó®\E¸î*o&y•EdNP#ÊByƒT\àÞDÝØ:ƒíeVjwÔ½Ÿ–—ö`DozŸ0}~¸õaËwWî±’Å$F_.Yfô[Á¥°D¤Ê+¸C`Õ˜,ÐÜš8m* qoâÆ»ìòúÖf¿—"–ØØÌéæN5)ë§ Bx nÇ‘±6V¿I p¼¥Bíº°Í†×suì }' œ<¸8?1&SÑl}µaë„­SàÇóÚ Œ†%k½gªˆ›às˜Ìÿ*´ÌL®›®¬÷óõÈuéWíFÙÅÜQnî±\›- |™¼mÅ)påm(Ôò†’áHÿåL]íÛÅš‘Z‰KßÅéÙsÖIºÌ½6µEM¹Ëã5E@W·1ô»FP@YÕðQT‚pxÎ+ÅկܶŸÌ~o¢êáìr7J˜«!^Æé~pbØ£Íô Ñ÷’æ1åÔ:F/-ëã$á“wq7glBkxÍàóOþ¿LZ¹a¨ú¶¹h¦?x|޵+*dP™lÜvñycãAžŒÆ@¨$¬_ ìû‘yÍaýÒ‘‰'sàðY0r·Xh—&/3ÔΔÃјˆó;¹ÇªðÆ¥’}eU*½wXµ®¦¿ExÂf$tM{À‹ó=‹+òKÏH­(¬ôï´•æJI´N•ÆÉÉ´Æ™ ³Á½ÿfWgeá§EÚu Ç|5SšÀ‚´4nw&]Œ¦šÔ¿ÞŠX–{7núEÍ µ‰"‘#sÒ"lh«þø9iî-¥ôïÀ³]ÆHx-Û…,ž˜Ö¼ò†‹…ÖöÈR†LÿWqêüÙ¹cèß=üˆbi™w‹6…”½So˃O:íÉš%„¯®é¼ïËH¥É‘ïh†®´׺©ë©‘m?RôD/ÖfvŒÇšH%©¬ZðHÙ!cgñyÑ÷^ö™Y¾I´§}Rñ'LhËðeåVÕ6à+‰Û»EgÙ||5RÁ2þßœCÐ$aQn“ßBà6—)F]ñ¿OÑèï¡Ptr°ì;ãagG±ÚnC œ<[Ék¤5m«7ÛüØÞS8óM{ Æ2Z‹Ž=®?í7;(Ëœ¦é*¬#ÕJíÌ׼)>y%Ì%i[Œx?€¹„€P-3=Yn}þ>o"§Å‹½¥{Ë×ÑŽËûXˆ&EúM´yC.}nqaU#Ú6VUâd…¡¹ý;)în¶§Ë€óJH§ÿÖOYÑ8ˆø ó+9ù¥)\o¦Ÿ8ã¾tðÁ k:ã}\öê¨qUŒX6ü|ÜØéGÜ‚ëÐЉHž<¸Þäô[ +nSó»7^}çÙY“òoË%¦V`dö×1Â<0çdNÀe§^ÓéÒ’ž¨¢Ù…`kç5ó½ZmÄ\Kþ}Cv¦¸ÅµaÅrë–é½íšpÄøÿ4W§¯÷ÛnD×»:È>ݾ¯÷ãúTé$ˆw«C·¸ê@ºNpØtsaâ«Ç^¢Î¦»¦`mÆ"Ü_)|îi\ç V¶B±@zärØÅÚÿõˆy*¹îÄýW„¨|”Fs¡h°¿‚ý 2˘ó©®vˆOÐ˲ڑœ b]µ=èR™L‰êC•ëúÒMÏ\¾gPïoZPF8T ŠÞí6½6Föú .ÀŠl!7ÉæƒáÒ¶o€}~¬™¦(-¶úÇ“5]”²øˆ0\ø¡m+—Û2MžÌ^:þêg%ƒÇñÞ"îþ¾Ðñ{úþ hÏExýcqŸäF×ÃÎ ·á -[)®ü½@ú›ùó«gÔ¦‰UÄÉK¿¯s†èÝÇ”‚¡nµ4$SñrCïüžµ"C¶ëÛü¶’žœõ·rg»›‘ǩȮ3`·T– -UX÷)µ`O[Im/zøÔžÃøõ—úbWÐÚóÍT_ãŽZ{5î¾pv£ Áw_¯þ®TÐtZnéaéySSRݺܣò¡’_ukbõÁ×9 Õ‘:†ƒsHv—Ÿ—vËV›œww6]…]X—X纼‡@©†+izŸhRB¡ZAîi_ ¤ *íz­½‰‚z ƒ9ê‹ÌvÐf`ùŠ ëÞ&ì¡G%¢ouøò<@Rcµi‹#¡ãX6â0öSO¼lWa+Ôòtëè­àòécèû‹[ ÉʇR’ÁÜtIfÌžž.È1Ç@êmƒ ŒTÉyìA1#rÓ€gøì¢Æû–•!ʸ‹ ü)úo=ã¶ÅZ¡K«´jfR3vIÅš:ê·a"Öù1g0b›sй4yeAÃþùKÌ}sdF bÃ5çgL×°üè_¯¹1JÄ…z¿Û@ÂUµ¶~cÚÒ ntÍÈ]…•Ü?œbTM«Š6?^ËÚ˜|¡èƒýniªCí¤« ÚI%š”,a ~Ò>vLäÊ%êátGüšB>šÀ¬½ÿþ÷µß+²òl†è]¼Fg‡kqÛ•lÝ!¢y YÙ›"ªŸ•õ>—縫-„ R&ûó2…ŠÝÒØ£Ä¡Ü^'¿Òãô„½¶AÔtä¬sªxüU¡ß¢™E¬oñ¡ ÅÜÊþÉRá{“ŽšîÑUCŽƒ«mKbÕÜŒ‡ÄUõBkeîš{L„ @žJƒö‹SÝ7v¤e R¯æªÕ© &5´/ödqvcD­€ X¸ù­•æøV3ÂÎ C#_–%£§nÚV)•Ošb{ú}ôÕߦ3ªI“¶ÆæÏkß§ß' ÷ƒ², Em“eÂóCá¥A5½Ÿ¥‰ úý{5<çÏc?ã°¸„¾òD¼.ü9*ÁŒñþâÉá‡1ß)˜’ƳšôDz[§©½´-Ux‚N,¥žþŒ×Îø¬å=öÑpÒbRᡨ¡/áOõy½Qa ½–îÞE±;‹÷]‘EæÌié°™:užZ„…ÕÁ¸Æ›¢ÔÕk©„¦²…+ã¯i+¶iO ÖßEËcÎvëÜ JùQÝ9¥^‚adzÉé`‹|龌Píê³ÌG>6ã;² ˆfÏ0t¯ª/‰üzÕAØÑ]H…jëÓdmƉcÄBjd‹;äò¦Ç~7ýÖêÅŠ”ËdÐW¡ÀÛ¸<·e¸ß˜˜…}F©Ñ®šWLŠ¿íñðÏO>Ï;l„=Y–Ý1k³ÓôßS«}Çì¡6Ð¥‘¨{Ù #„À 8±[Ç5—¯‰Æõ‰D\@‹Ë"@# þ•½:ÑðxuûŒÌ¥†—ÂÐ8ém×Ç@úÃ=4i§¾„š¾A^…úë#Œ¦ÓŒ •ÌìW}JÏ»ºrÂb+Nó(xÜ–È Å¡U¥)øºPsýU8§lhÛOAüœ83rxì—±_wЗ6L¦&ÄgÜf•ÑÌÚ|Ž”?i_…h«§ø.„7\”RÐ`ã<úÃk2Ö°p á…^o;°áRGСçr5ã©E®qL6kp—<µ§ œ÷øwy?ÞE€c FDõGÎJtm¼-ÙØ/ 5¥VÑ“ê­Å{­®j¾¢«Šílµ¬tl³i¢̤©™ÂÔçlȺM“¼²êÆ'gOèÞä3Éy]ƒ .ûp²m#·ð5°%Õ!ÈÀÄe0®ż– ’ú"@³³¼eÛ¡z÷ƒ¶0˜"p¾E*ódI–JBCõc ±UD¢“„ç^hv~ÕMܼ‡¿ÁpçàûÔ½J£×3œ0‚^.›¤¼©Sø1¤üé!¡Ó¥!GQ1)®õû—¡¨k%†HËtJ´aÏ-ƒJnÄ´f/ÚV¾;äk÷·ÌÑ|m?·—º“Ä4 |ßVKæÑsç|_š "ñ©5Tü¤!N/×ËGvО0mìî3ˆ|=7­Ø©qZ`8%çXƒòöÑ;SÔKF?›Ò&@×¹hœ/ӶϤ´8ÁéêÇ8æxT¥M,׫WÚâô;mÒuLpÑö%ùÅÙFÌreiIΡj¥wÖ^÷è‡Ý[$)ÄMˆ²†I7Ý›vhm>õxcéÏ”P®cNƒ‹·7‡:#+E”a~HŸAß6˜9ßW:þ(×>êÚRjÊR^pëÞÔpxŽöB1™?L¡ó ÒL…×h„»Ó bÕ–Vøð¹_ªÉÑ˨ÇhÞáŒjŽ'XqQª]é8;$/Ÿ“ö'úaø%¨mg1õ£jÇŒÿkâëõ£c1|Úd'ßÇSMd/弎HéÝànåÍкìz+›T)Lêñ:G‹/ë˜ïÕî>§ˆ**…à€6‘:·eLA]gå\ÞkäË-ÿd¸rÂw¾µä[^í~|õ¸Q~ŠÌ×Ú¸næ æ4UW[¾ ·-¿\><ëЯRuUuŸ³QÃõ32€ä"\)mDDº~jôÛöw”áÛxÞu¼Ëû%rêSºcŸ8>¹fçÛòhnßÿ¹ ¥0õ;æuøšÇtíHuFem«2jÈ%nê]9Uñ¦Ÿë b¯pA;üv÷\…Kq€ö˜Ú!ìõ¬F2“Ç]· Ú^2$»·‘.‰ð¯Æ8Û€“¡ÞZ'ëH1ÁÄ1°M êÒ‹†ÎÍɼ£2ä#Ì6òÆÎ›RÓ,-]»”äÒ‰Ïÿj:®»ßK¤ïýä`|éfæaq)ˆ»ÉØa^hNˆ~ z—V_ª“Æ£ýët–töÍuÜÆ3Ì¥ëQ«§òërkÌÀhq½å´ç#¨—Vz—ä¡?|ŽÿbNþ±×OD„ɨÖW½¶`¬íÒHæ§êYP1òÿÕdzÎ\Ô<Ôçú1A¬ªû§[ v+RâõÇ ™¸ˆ>ùÓ¯ô 9ÛŽ*zqˆ7Zð©.ÑûëZ唦êk¾–<ßt(Çjß˺”úãGgdƒ$«=¢?åòÏüT>#Ò/Ñ;źJ$&ÛÍT3›|Ä»,£d<õD0ÔZÁ²Œß ÖJÐæ*2²æ´¼dËV!ï15ˆÔ_ÙÛ»_ÎÀÈQÙ/@ŸpV}Åûð‘æÁéj™*Òé^e£t: 7»ƒ†×uEM8Ìvbˆçs°3ƒyš ì*›³‚ÊŒ Þ££u8ŒQ+ô7H”—,¶}E]¥¹_±!õï\"ß~Ì»dIrñ´1éâc«¨=´ˆÛ.Lh{Vzbkšñ¤ãKpdðº:Å!í ”Ô¯ÐbVên˜söYèS²Ëæ/ÒÀ’è=QO÷ÑCB[lnŸ²¨ø4‰æÏ¾ •ŸëˆQÛd Ñ’wøŠ§Eïv¬µ'Ù-Àç!Ôç«{}F§µ)ꬉˆ6ÜÖ^`1F\'êjZ9v’¸¨s vJ&ÅÇÎÕ™ú ^endstream endobj 263 0 obj << /Filter /FlateDecode /Length1 2254 /Length2 16689 /Length3 0 /Length 17895 >> stream xÚ¬·eT̲¶‚w îîîîNp`pww'Ü‚»wwîÜ! þͳ÷9;Ùçýû-X,®êꪻ«ª{€‚DYAÄÌÞ(ioçÂÀÂÈ SPea°023‹"PPˆ9]@övâÆ.@^ +@hþüÍËÁÎËÁŠ@³wðtYXº¨ÅhþqâˆØ@¦ÆvcK -8†©± @ÍÞtñdˆØØTÿÙá P:Ü€fŒ,,3© Àh²C`úG’Œ¹=€ëßf3W‡ÿ]r:9ƒE¨ÿ%“ifogã 0š#0)Úƒ³ÁZþÿõƒKºÚØ(ÛþþŸBý?ËÆ¶ Ïÿq°·upu:ìÍ€Nvÿ×U øom @3«íÿ]•q1¶™ŠØYØÌÿ6œ%A@3e‹©%ÀÜØÆø/;ÐÎìÿŠWî_˜däÄU5äéþÝÓ­)ƒì\Ô=þõç1ËWÇ äÐe——ìþúßßôÿO. ;S{3€•ƒ`ìäd쉞0q¼Y ;3 èÌÄhgïÞ×Ä`nï„ðOC99L"ÿ˜þMœ&Ñ?Ä`ûCÜ&ñÿ €6.Æ–yLÿ!.f“ä{Ký!V“ôbW鱘dÿXœÜ‹“ÿ·ÉÛš˜ýQÀ–«ð‡ÀrÿXÒŸ½`=JÎ6ÆÎ–ÿ1qƒ+ÿ‡Ày•AÖÀî*,_õu¨ý!°|õ?£ñ‡Àò5ÿX¬Ö‹ÕþC`±ŸþC<`e:¼ïÏ‘ÁÏ“±)xÆÿ ÉØÖ|?ÁcùŸ]`«ÉŸÇÄÉØÔèb4wùcgûýß×ö? à4¦|HS“©«­¹ x¸þS3pS{ð«ð¿öímmÿÒË >ŒÙ_VòG;x€™€ÿ•˜…, |¿þîç?{]ÁÏÆÎü“‡©±í_‘Á]2ÿƒà=æ!û?ú+ ˜ÿ Û?èöGË?†?ù8þq·wuú+ØÁâ/Çÿ#˜<–ž–@»¿<À¶¿ò3ƒOnõ‚›lý‚+kó‚»ñ礬`1¶Æ¦NÕüÖ0ýAp4;Ý_Çù§öôãÙÿ×28¤ÃŸep0c' ÝÍ ;ËÿXÿ{RØÀ¹ÀÃg ´ûË•ó_6ýŸÆ³ƒëå`ãêüWN°Åñψ8ºÚ»ÍLlþ+-ûŸ…ÿ“™çVþÛÌòO¯ÿê ¸ðÒr€79mAÿ=·ÿøÝþê8ˆ3èϬ³ƒùßï ø”Òr€Ëãbéü«ª¬ÿ8€lÌþšwpe]ÜíÿŠëú‚ûîö‚źÿ¼Ûã/gôü Áôú£É èôïTÿïg•¨¨½‡7+X4øó?·”ÀÃÉãû_ž¦®Nàv»üëOð•ü_6? @ )ÂÊ¢½)_ˆUjSX™ŸDÁ÷rZHQ‹æÏŠõ=sˆÁË 6ÅcrŽ´›uÚÈ0ÄîÏÎQ>*“’—ŽŸÓ^ÜŒ2¼Z ´¯3<÷HïƒOQÚ›æoÎ8 •f7ÇË’>f_ æ)S‹«¾_'èÕukèÍ áäҖ̰Ñ­£d#QEMs,‹`ßpGMJ|·1ìg×B·öÓ¾Ãý±.÷Ë«Þ=V<ši1›ê-¦ê¡ÐYia8*JíÛÀHp&ÀBÍ p³ §:&œƒV“í…/a8s…3%¡àvIßÚ¡MòBÁ©¿Y¼gÈFghY(»\Ä|•X`_KõçõzHùÍ“ß!÷ÅŸ|;àÒå‹K^¬¦ R«ŽÎ`FæwL/ä›, |?R¡¤7oWá }ßbgÐ.꣕(ͳŸ’ "ÊÀ¿òqNN#‘¼Ü€*ŽQœðÏ¢qžŒ5Ûz:Ês1ªh ϳ êP>ÝèhöïL7…UKªÔšDòý÷“xk„92 TÖ"+J ãÀº¹´7ÐfWv~óöâ{-U:ç™x²U×­ëÈ1ÀN5{_‘¤a3G~©•i Ñ´Î[‚(4DíÄÇ'ê²;ÆYo*ÙK 6ì4AÎÄGB/·ë˜W"Ÿ‘tñ¥è ¨u³íŠ*U³H;+€l©¶DCIãJÙü ‹)£²¥ëúŽ5Ÿù¥ ÑU‡»ñ0•¶¢— 6?ýù7n¶cËÚM²rÛIÖÏVŸî቙¸‰/Ñø8¨M@ßc²âOkáZ˜Þ˜Ò°ÎÔ‡»ý¾¸u!ŸÅ %>lw`]œ@ìÅLšFüzæ»\^€€Ô¢0©ÙBkRÖ¾!€–X‡ó‚mMõ˜{¬ÏŨœhöÛ´™[¢„ÉûY­f)I5Jñ4DPT™§ßÏàœÈËž‰ wÛ–C¤o¾°šp¤è™šy’E_ƒÎF¼ècªl<šö¿½Oí¢cmPv½“!8þ4sÇ!)èh‘£ê¯$aï.Gûûõ×òStú+Šs›xý4V1†QÁpÞ¤‡€`±ìÔ>À5ÓJ^Ü|gù~8̺ vëûìÐûç ÑÓùåÏŒ{n8ýÕ•ã>S,Ù°îå¶ÍÛˆ*ŸãS@î1±ï_:o¾k‹+úú&xÄž¤ûtÁH|f´À“ó.˜D¼Q.FÌZ7RÎ.4²ýˆÍ­5PëhÙÝFµ¨GžÝ oýfËBZÂ%¦3Ïp<Ô„™hý"¾…:#uzþ†ˆ)G˜9Ëàì©jòzòÊ2RBÒ7o•ûÕ’ , þç‰Rž¦uÊI˜¬D¾ìê™éá×™`·¹”Ý'¥Ž +osبô9Â[ù¥-R“Õ„‰aêȱbºö$qIôË“‚Ãj”¸q ̨Ÿá7¢0WºÏH´Ý³²E Ûˆ›ð:õYOŠ*+@Û´áƒöûB(ãó±²ìÙ§TòÚ Ë*Ù“l×u]ªmcÿRp€æ ž!çT…§b% AåÈxxÃvWž›BªäK¨GÐf„éǾ ·‰ánFqD•x„i¼,¼ÌQÊ÷ôD…}f3Q_ÚW9H¬&ë6|ªìü%HÁ‘9ûí0×ÒJ3zÄ…ôyظ²»_ùáÏn:ê1VuX5SËÂ4=ÃÛ¨KìŽKSôæ2×ÓrÔžóïHyß=DÌ>ùð ‡ìëÆíÚ4^b¾hsމÇaäü~%% ò……+nE†¿‘e6ϸÙù°Ð3ƒÛ\£Ôw z×òÕ¦3G™¦i8›bWÇŠJcŒ:4ufw íXè(:iuÜâzašýÖ ¶ì,õ-€x›±xðMÈš`)ñ)=0‡"ÒûÙKÕ/ý…Ít1¸Óxi<…^±Ø/¿-t³ .ci±;žÇ{J Å¡ /|.Qj]mO {\”ö”øÆ/]Fù}=Û›u£ÁWÇ‘„~Hp§ ƒµŽ_ZŒï>†t?W™Çc¸µL½²êˆkÝÉ`Ÿ[bµ4ûÓÀùÈ ‚ï†Üþ.ŽÆ”}¤Ö¨aSYëƒxÛD.³êñ‚ùÌbaWi>ó~ÿy@k' -ó¯¬Ï†h!¼Y|áBe(ýÙÔ;|_ñ¢hÓÞìÎ͵Ï*¾>´¢w5¼¯r–69¹ÚMÌ5éí°ÎlB=Š‹z7º5‡ñ¸é[L}Û½&TuÃãm…~¡ß&éÙ€IëŽHñûK¢RÅ£Œ0¡ËÙ,Fãá|ñr ùfh¼AïÃ3¿ï;Û]OÞÅbF DÖͯ+X±Õxš0հŘó»KÐ$ѹ·î ŠwŒÝ6[3nª¬VÖ/ç}iåßê àkZèWöÊM»ôª05ʳqP@~pQãö廢޼”ÛËßÈXŽ:!E¢ˆzÔv~³¨`§v̦¶$º£Ê/_&² ì­ô|­™Þ"|‡í³0–E€‘×£‚9"ô ±¡ÛéÇb‹Œ^¯$b±u§]ì¡6ÖïyÔÆ%ïE6¦Ìèy ÿImËX¢ß—ÃÛ?H[:¸J9x/¿˜óÓ}B”VbÜñï›|•¿²ÉÝ+çŠäÏ‘ê_Còбj–9ö-ÈŒˆýf6ãø6S_¿lýŒh7‡«¦õsó¯L'"´iÏ> {®AýÏïÓÏïHí|¥ð´ÅNí„ M’—°…!r{Ü6RúDOPR7V"@s!A[Ç„4ŸcÔ±¿ëÜóWO7êïr¶^ti¦CžaŸâ(ó‹cáYšª–?¡´f'@Ó±~-…¡l‹dSÐuLNDn´\`æp`ü^'î¯ùÊ^^&"Yx*ĬÅÏJCWWKŒ>mºÇ­Ùó·ñAM#\õä†NO_-àI-xáWØIöæ gÚ,s•HŸ¶¶Úa\¯ö$E[QmüÒÀmöB§û0íOþð…ÚÅ´VðF”ûøÞg Ò„MõBXn¥”xu +úfùLú”/_*¤Ãci[õE1×ßaÂ¥¿žý-»ûakááæü"?¤³´7g')äNª`6ôå—ç¶c,ˆ¥–ùQ½rá yŒ.U?ZÚ6µ¯Ñ7Uƒ;Ǔ֋o[µ²œ[/i. Ô³³¼pŽ#å·¢—úЉþÙê€l²tÓ§PÈ^š*6gl€|ÖÊ]tC¯¢ß…ìƒ G;"é%”0päs‹™Ä‰Ýú{?h‹Àýöea7é¶Dºá»•Â(“·`ä‘Ì)”ä¯X3QóFakÈyi"QFœ)yÞ̇Ζ FšB2Ù9'ßv²’‰úß´5êûÄ—±Éœ•QWÔÈkc}f42†°öÚMs€~É™_…Vß̸•òSI?lr 3ùÄå°ÍÏÆ†‹UX¼­ªŒ3îÏ‚a;¡2»á‘o¶#ú9b|Tédr‚f¼¯ÒJ£ƒcSn[òÓܹ£mE³°ñW¥r!ê,÷÷ÙyÙḱu{»nÙ ½3D£¹^GeåHýƒóÙrw£‡}‡‡ãd£GˆÛYREIüO)›fȽòo¾ãÙ¬T“¢þË ÌÁöÕŽ—ˆƒo¼BSãukt<  v(:¢Ü®J×e”ùœŸZ‡›åiî•ïd¸][üˆ6’‘Î,ZÏIÉ#ÒìNvÓ¬:DsÀZÛ¥‡ð±v!‘êýOn"»EæïLÃéGÝôA,.A×çô&ò *O 88š’ùv8^⸠׺ûAWÎÊ•2z‹ÓA“žOJ5èùØOë»Fi4Ó,j*åð;Ãþmäö¦ŸX=ˆ/_Ûýà»­Å¢¹@£¿¬lg‰(ÐÏ šžÅO:LTCÆ¡g¡Éë¹îÍ Ú¼?‚­h/J]JYkZ9,z¾¦mòiÖ¹ŒÖ §Ài£ ThÐÇŸ¾rÚ:ž<"¥[ZøBNÔ¸Lþ@þȳWŸ1[hîPo$¿e©Ê°£bëU(Ðò;ìc”ÂÆru°—NPÖ{ã±»¬•Õ³³wsþ;…zðZ¦•.L8š†»v€?cÍ m÷B&ºƒ 3óÈWóÐîœ[¾ ¯¬µ¶²ìÀ›"ÜêïOi«ó[„Ä&y5}ya¡Ù…îá–ðØ”ýÖs6—xiÅ‚µ½§¨A³ãËQZ|ŽX{Eô^5°¤ýû¿ø[§Ë$6X¯É§Çç4g¸‘EwÚ½®©‹ÅÓn8¡Ø4)|Z±P:}!ŽªŸ [­RfW }µ'ÕòY JDz°X®'BæÈ¢d¾ÛU}yˆ†·¢\pÙŸ(Lºoqž ½ ®;àt5Åú’W÷ÝæÄÐ*'I—“Ó¯QW§±mŠe0Gsà3A)†'¢æõµ?Íž‰©ânX­üpݱå)íµê(i VððÆ'™Ênf=Šòò°Ä£{­Yto·X…•7EÖg½èfRQ»¯¼Ï*H<­oF™þ#)£W§!Á9' ÖKßâ\ºw£ð÷.®*¤ßÆÒùùjªèÓKi¬Gd}Nñ1f§ G[% —!h&ê¦:;lÆS†A†v÷G@Có½#™H(£ÌÑ@½ïMLcëÜ8`|[0(òÖ_Ô'/(iv|Õ¢+$kKBNÔ¶^>^ÍW‚POkÚPz]̧ÚXÝ&j~”˜-Ïrýýò„KÄo“ôË ™iç2>Ü%á•o7Úà ‚kŸ(*q?;‰½¡Â±dÝþnà¦ÿ¬ Ugðìèö*¾‹ØlËÓ0_Î?¢š€J»0 ³öY¶bõÅq{:È”ÀaYÂÝEÜÁû{ž[æ¢yŒfl¨>~ç"ü3Y^Þ!Þ” +3¥UŽqú·™~x†­Û¦`ÏO€U–g¥,Ö÷lékOu~ ¤AªÉ)^µ{(© "ÚZ™WƒÒ•¢TÎfÓý¯–8†­;1¨zºï×±ÓW¾=ya”={¬=ÍÏo({…xîUƒ€ðNè?Ggf˜~éÆ~Žm´é4Öií‚ø Êg”Rkƒü‘âwÄàâ·)þS(׳WÚ-W›®4lÚçÅ(]±öØc“­ÇÐ$~hU¤ÁC[aÕÕ0C…¤Ç|®Jðþtô'^|ð‡èO£…J©[ ¹BS–â-#õb=q2Á2ÞV޼¸ááøc»yYʺ\ºŸXÑ}µprR硲>ßB Kž†óbÌ>|ä þ†‡PÉ ¬Yi"U’¦¡Šô@Ý™ùí±-'Ì0—Î/|ÊF¨þÈðvOZ+˜æ›dšÐY`z-rmÑâ¼’·*¦X8D¨ éè“­m”©²w¸ÉJ5‰®ðÚ‚òÍm{¯,B1«{‚Ÿ °‹ÐøGÓÝmó.ÊVÉ’ò§EW{¸!.•†Â5lÝUDíu-5QOEAVØÁ~¹ s±Q±Ð~;†-¤>þ4-ß½¯«ÖhÎ"Sù¤®ø •Q|^xæk.ªîüÆÕq ¨R§£ Jfb³‹SxIô™—ò×UéRe³U6%$7Ÿë4‘¾D³Z-F"¥z|•Û¼cp}Æ}ZÄÆƒD]v·v/æ[½nÂÍiV“æ¯@9ÎR3j¯>S™|µÁHÏöeî‘mÌr÷·Tþ†ÓC¤Àû'sü¢¸ôóOÎókŽIÁ7²—!0øu¸"—ôE_//g?þBsŽèæ9D›d¥%½ObˆÙªvÁFgšÍCò„:_úúã8#5øáÅ×e{6YÀ§ èG â"}y¬2Äpæ†ëãå<žÙ]uT+¯û{•0ÛÕy×}á p+Ga€¡EK}~PÂŽë#v\çU±˜÷ÃH%€ª Ež—â‹‘E»¿‘Öο} (v ¯Í\¹%'ƶ‘ˆ­ÞžÏ…NŒ6xGêô£mˆ²4ü$YnB+ÏpR†„FíC@ïP§)l(ˆkÉì(ÌÕzU½Ž2fNçP„P¹ŒÊÈë]›±¶s_ÁH´˜áâÑ;¬¦à…fì•´Z2(J¡¦xx˜8Ù…ø¬÷;WW•8³bG?M#UY¯Ê›è òÍ‘¾F½Wf¸ sz°%Ždž±½¤ãëlö­5Öž­z7’›h!Þ(Õ3¡]îÐ÷íûÊ7Ó³U¿éÍR¦¦m›ù¶q SѨ<Âs¯$÷Љé-Ñõ²N]qF§SäÄûX!ñþ–:bä³ '»±¼–½)é‚ß«óPUÄ»_™Œ¨®p#˜'ÅÀB„Ó½öT¶/•ðK'iuüšafHèPÚEÛ §=Çø9·¦S,Ž‘GRV?[áÐ,¨)àðb¼®×§ã£˜ßŽYôSóÁç½¥ÖÜ÷bòx–Þ¼âbø76ù#©¼Åí§C,UCÜt>W S%VŽÅœjozƒÆ»½sùªÆhÞÒlö£ž-RAÿØïµò´×¨Cæxï·¯9Î0—c½&Ì“äÉ‘` G£†Ï\£æ6Í9c=¶çÒ–ð}ýPÏ’¸²Øš~‘XMŠÓ5㙇Ù}’RGx"v\Ôl‹Ú"Û'hwuáñÕ .²÷-¥´yû*+ü,Ü=/Ô€LÏhòCá’9¥÷» ã¨Dá@L3ÞîoÇšH±îÑRŽÖíðåÒš b [Áà3 CÑüƒ–9E\A´¸Ä­ ñRœ²e}]¹™Ó(™°š+¥`]tgŠô£©üP&oÕO £ÄYAæcq(ÜRd-†Íˆ~Í?¼S€]]Ý‚#¾0ÍsSúsa“hAØ<dÞd‡ŽÊ©Cæö}ÑÇA¡ Õš½2?¯ ÕQ¢Š1’ú%­êr†ìO(V¨ŽN À4Œ(1g»dêFšÅ-Ûp%}µäY9¼-ÆÅÀD¸sAæ$‰Ÿý/cÛê$µuÅÚe2-ÆÚ³½fЍÐ-eôNPcýÎáiD³§ê`-Í7Í5Tâu2‘޲e·A¨æ«êÍâ†t³ Ôi)…ÉÍWÐZç}áW!ù 6\ÌFuøS![CH?šSx'Íž€˜}V×|·(b¡½‰Ù®Â=" 8®ñŸÀüµ:KÞ#“s¤V+ŸÆFí¨¹Äù;ñÒø<¥‰$HwkC#$8HXå½VLõ³* ×K‡Ëj©w3Þ}ˆŽ¢ýçËajwú†Ëì‡Ý>!ŠÆ<¼sHXIÄAÐIôùß}bÖy³yMë:(6Û‡ŽØ»ZVÏíýzÖœ‚ 3ûøÏ;IõUŸtÈ-R4ÕP9cŶP⎧¬An ÃéÍšÒò(út,ó¿É‰s@G·ÔYɳoÀ·çŽÁãò%¹Þ c;ë\¯•Ãè—XuÀ¸—:ŸÈÝèLXí[¯VIã=ë76wõ ÞØãpZüµíÃÏv¥ê—¸]{™‰Ÿgò´¢›?}˜<ŒE0Çqª9Íw¨·Š 2/d‘šØñ2ÍÛžQ·n$(á!ÆŒŠïZÙ +ݱ†JO 3ACSpy·¨ê—¿yÓÜ‘Ë1°—#ê6=FÝå: ýŒ”5†0Q•ÓdH³—õlL(Âçadüüx¡äáAñÍA8Ǿ¸Ø®‰aZ¿Ïd9¶1êž>NO™~p?ª=‚&§êiâØ…iG(W8`à•íB­ò8ÛS³§ºöN»ë¹DW²!á¶Õdþ>6á*ÌʇoÒ“r÷‘´(årpÜÞ.lÿì=ZQ¥G¥¥ ž8µ›r#ßÙ4£'Úgøé–ž±ï 4ûvÀ§êOÁÔgTkÛ*K¼+ô¢ë’ÒR¶Bd2#µo‡M߯›rÉóO¯]ä°ùbL‘Åù€³I+Aõþ*ð 鑸þU¬·clÔ§a";ãñ×ΟoY\bJ¥ V&ÞH‡>}[_k¸™Ü/j\ƒV$Kú=ÏÚ6ך7t1/ðÎ ¨hoapýºËà|¯•£é‚ÊÓà¸y”j¿iÓ]»Ï|6’ô:({t‘Éêrã]æ gcwÛ½ê‡V(ùÇpû® ´ecÛ*™­WÓNÒ€$øôdGXß©MОá×wuAtÓp}áðù5ÕE×s(œêå:Ù]ÉÇ©Ö}•Ù–µ5Ú=̲bˆ#.münûÞD‰€ò<ÖJ”¾­.)Îù‰ÖÏÑîÂM©oÀe,¤ª‰÷ÑôÇ?&úYœXi}7žÅTï[gCâ»52Øt{‰ÊÇU™D§!doîEÖf•ö];e`3¢ <äT|—GŸƒ0â?ꪽ;2ÂP"¯F‰}] 2®Óš£÷v9MÎЕ½¼V1Œžü™§øÆñ ³b âÌÐåÝ/µäˆ…sLÝf&¸¬ Ä&L’a}êgxPZ¹ðú1ë‘[ê‹d­ër?Bü÷ŽÆ2–^­ÒO&©'&·äðÓQ|¹?ÉK°×D¯0J‡ùŒºg7YbÛ/$‚ (í©ÔjåO3ühé·£tœ;¾7$ÛÒÍÍ’¨j<Þ_sÉ^0[›šÕllÕ•*Uf’·«fàŽ¥ö‘" R"ATèÞàk×|Ö=ï[©’? ˆá_¬#ë0¹ÊÜêÝÙÁà2‘È®`ზÅŽªß™[]N±Ê3ŒÂ%e,,Ü' ÛaX<ȉê“JªîÊ£=âeëåT1¤'»½ÇLNF è—ÅôššdØJî=Å]¦½Aq'?)éaøƒ¬8j-¹¤§w¹(|OjvµÞÔŸÒ:Úe^¨LÉ[H‰ Ùu› KÇÞ§ärOöáðyÿ†M™oMÎJ´óTϪ&ÔùÊ™ÝéòŒ#Z†OÂFXI‡¯øõÜ:DÜ~÷Ú¡ñº¾z-ɤøŒÿÌd;¹Ö@Ÿ*e|ò6c5¤k6#аªÿFô‡*ÞÆD±gÊì²6"ôˆÞGݑȈæC–„ö²#‚¯ýŽ+ßE†¡8gncÌß©hH4Ü°É ã¡©äšø) Ž]„BÔ¡1’®gÉék¢w¼¿Ngˆ­[ .=>vY¢qb}Âb¿Ÿ[ôÍÉ_QñxöýŒ¡Ü/:€?8rx»¼tü +Ô¸vjbS­õ°öTEÀ’,‹(?ú­?õ5@t ~8êf¦£øó*7šÿyªï$Vè,C,†¾T5ÎTLÿ| þ‡‘Ÿ,“¼£çv~kÅñð{—ůM4ÉÜò KÞ²É;¤ jŸ±Fã÷7?[‰}`&²ÝÊ@~3¦}7"™LÖ÷Ц)œCŠ®£ŽrÒÅ’4M׆Ôûir K–—ðnîvU8—J…±n?à ØÌ&¹§w?ýxã¤WÇT ¯Ÿq’ž°¦Ø„¹Ÿ©ÄŒh’*ªF–gפ*’B„ªÛ2+àêÎÀo (î!áe=ÿ’L½ÝîYØê›!!°ua7Œ+«(‘”äá¿ë³ïӵф+/rã´©ÿšÏ¦Ý}”x…`[ê€÷Ëö.‘'¤Çn9vòàM-Hî{$U‚„q(Wô˜ÖLXpIî=üB¢¬¢ä»a¡€”6ŒÇùóï}ßu%ÛRyê¶ñ ÒýbÛâ|â¬Ç‹­mÓ4;Î¥xúPkL1žúž¨äáe´‘Áà þzUôd>™åjS«1Í|]ˆõ±Ÿn°Ü•X¢Îkò#* ™o¹³›š!—zT¡å¯÷Äd¶¢®Ä¡Îb/ð ‹²ôH7$Ä/okì³éE¾†³ÑͱÄÔ{;9¢÷ïEò—±ê02)sÃW8þo# ¹ð¨ŽC=m#jB[²o£XbËz—KÏÞ¸è¦+‹8Y[ïƒãÞû2G Œ6«ˆñÎÁ‰¿ua0W6(™¦a"ekÇL4„u5Y­ùö‡i¯: í|6‰)ÚDã°Î{Ü’™oÕÿaC&ÿSuÃëóø×uYY-Ž4ùfÒ£[=Aù0ø5Ì eüa3d±îØ+rSÙ­†¨Ø „ šÑ­™‚‚W¿ /5ÍÏ«CϽ¾茎ͩþe^{[Ø<íü/kKCz-/¿Qª¾o)A ²¯‹p9ìyŠ\ÕX`¦Óm5©K=™NB¿¦d¼üHËÎèˆá´œRMb[Þ¡fá¨é«éx/Ѧ¢Ëhpö*xÕÎŒ ~?‹nˆ+pÄk z’P½ýýý/ƒ[t~™¡ R7´eÁ+YR vB²¼½á ºEn©MÍ]2vwS’´^ªðæ kÿ¡Òr¥Îd¨E=æ8*à­šÇw*«Ñ¥Í<Ȥ\ÞæÝâ$$ÃÇÙ9J”‰FÌO«r½áÁ°>§K}ôtiD´K¨÷ê¼uU–½ˆøÓÆCV‹‘1rI«:ajf Z˜ÄZ.Ã’"ù¾6˜;O¶òË™9H¸"Úúrýˆ«l„žÒÎ7;'p6Þœó—êvÚ¤iµ?—‡<¯¼8R‹¯j| ˜7»CÃG8¨½'¯0ˆk<ÙŽ«HýÝoŸkcj~Žã)Ë3Ä;‘¯n ›•KLó?è—o˜ìͯCßžg:â½ÚBá#F¿d«Ò7ÏN¸9è¶ÓZ‰3Íb¢¥¬º'ª✌Ú;iÇÙâíÒïÁ~Z²åœ"¥Ö„CÔùÎóû ©rAãÀÝ÷™e6ÍÁ-gƒ5<à}g°¼½ˆ§Áæ)M+¿“š±í„2¹+üе;~Aí&““•ñžQoy`8ÅSÿêA÷¾e=Q¿Z½2Šøöå{˜ª+ÿîÂ,2'\z/¶Èš¼rCЉ–Êym1Õ¯†rXÙ«i°Pº£áAJìIÌìy¹É†Ë€—³ ½"ó§wýž)ˆP§Žê‘¶Dyš4¶¥û jô+%Çp½«ÒR¿9”jrAÙ2¯”î %Ä9ÚÊqÌ ëÅ|®¥Äûí Bu€3ö¤g®d¥À׻ʋ/Á^vØžo5버¬ãL0ˆdí7J}ÛÚD1‘ Ð*0eEl_xñ/á #,þúQñ¾Í{øÝ`ï\Btj[¥ÿÜ”Uws ¯G§ÐiéA'sÄ™¾=œÂ2›FàþzRz­áL¿‚™u¸QX"‰W¼©N‹3}Œ#¥:²¼ÕwÇþdw%Y®Üâ&rÎ1[ËVBå¢qéô€¡N+ˆwç«kÿYzlÓcÇ®'ÉôMɪuG4QªY"ÖïáúÍ|0Çš=|´çßâ¨Æ'̾²–“{VIeÚ½‘ë‘ÁQ@cÏ?„55‰.Lö™éŠÒ æ4ÆY_éaåD»rjœÈ1H„9—xå³oµ;GíPl˜0P¡"Ù¦KFYt6ªoµI ¥®4Ã%èZ1P~—ËŸÀ–Ò_—â‘´®— wµžÄJþüdlí1Õ,F††@R²SLV[ÇRŠ}f•™é %>Ž+"2çÆGé2LÝ#¤rsæåMêùµ½w1áå\5àwœŸ­›t¥b^ÔS¹¦º,¤lŸš¡?µ¹=ÉU•„†¨tóÐ׺íø×¹á3Ö–݇Jó=.‰í…¸Xù§è+?Hþ¶Q©S ‚rôo(¨}!vö•_;QXňw¢BÊj’òîãŒîÙxò«™é> ðýJ£œZj'2óöàȺ@GÇù­\ž§W£-Ö†E*QýäÃf*X;9gŠËpfr8¹Q€lï@…Jë‹j RâäC±ê]LŠ¢KqRÈ0¨c¶ ,ó­m9õuþ½7ÚiJãÛ²´fe¾rhôθ³Ùé>䆇>vô±6hM‹?Ø0 E¾J¸¹Ú†Å„JüÅ…@ÉÄm\ÜI”\šK—XÄnÑ]Æžƒî[ 2Uý—7¦`¸Æ Rê©[§[ÿi•p¢l)¥4¾\¹`qqég˜Zd±ÚåS4ïdKÛu_aÒV¯–6­à)«Dó 1t>¡ÅXZÉçc×Ë/V½ÄŠÑF$,ÚpÌjN*Ó³H&P0ù$šýj‰/6Kd™ªý;²Óƒµ©§ÃÏ¢v:sµé²ùÈjðûUˆ)çâ;Ïídšk çFJƲ?8/ÜÁŽ„psÝüFó1lÊ‹ÆK,.0žáìp9<—VFMM6Üê~æ”ÝsnùÖWÏýÊ@§aàNq(nmŠ¢"ÝÏ´ÄÜC…u©¿²±~Ô£'S°çM?áÎ ¡69×^ÉŸƒ~mˆ!ÓÆ­†«‘ÙŽ+û¯À˜™Y­_pñijå”åôó‚ ¸JµÜ»]¦+Í…­< ™¡(’‹ûEþBîlI‡¸Ýðï3ŸÂQ•´³½ûÞk¶–4ñÛÎÔ;ÑãA•{kdh9O&^2¤Ã•–$ŠEH©ù'²íd§¿Uçîúès£÷Yª4íæ¿íÉ5‘;yM­Äp©s{ßFž5Ü!d3¯›Ø¾ó\ÄvÙ ¦¿Ç_çVà|Æ›€Mçi|ö!•(ǽ·òœ³Êëó•Æu5šc~N»nr$oy"w‡Ôy–Eª5¤¥þè”Ù³$FݹÈZY§]mqñÛÚÞèy›¤âPWø »hù(’Ë݈¬ØI´uBcFôhÿ pb™¼÷é*¤ÉùÆ«BÓýY‰ý°ô‰;ù›K}‹a» º: ÇžÀ¡Ñ[†zK΄psMfu³þb#„Þ‡)Ç!y˜Æ »ÛqK-¬ž¢íòSFÎvGU¤öù©÷­Ô«Ä7Æ—1\â£Äª¦7d( B´¿‰Ä’P‰7\$ó®%³£U-ðž{Hf-j½öé4 ­×‹vå÷-‹Âc¶ÍuEe^ÞÜ]À–ŽÀ6 ×xFrnWdn¾. •w _çÌŠ[ް@ÆŒ}(¡`³IGßÐ/ÁÑ$›" ”ñE„¯f³+™ òß L¼Úé‡Ðà['þüq¦‚ f‡šÄXzuí`kc’‚e˜_ç”A—(Wš¥SrŠ€žÏYp¤[/•8I@½‰·A¾øiàÕ›(CÁj¢¸ç‘ƒßÎÊKŸÇÀ­?Æ(^b±½ †Ý ,eÝØN +¬[›â”vÔ÷ª´ÌŽ\#ZeÐlQì$‘JýbÔ(‡_oq+«}K}šgs|ÑÏÜ~{‹D°LBo‚¯:ÈJ#’ý+Í.Ëá+¬L";ÖYS©˜cåº!®žFÆ¡—ŸUxÆ’$N[štÕ*l¡‚V£|\¿\)ë¤WÞGÈPcŠî VÿzÙ$Ÿâ>åÀF&þÎsnÒ¬®Ä¬ ±Óà•³Í;ÇY“”tê¶½9R þÎjé5³ îB¼åÏ–ï´¦éI㎔2j§ÛüqOH÷$ð2hðåâ~XL‚¼&›)iú-! á{{§QrA%ñë”Q<€«Z.• ~­ŽŠ>g×£—:PÓ¬ñvÓAkê€ùþ˜jë† þcègÈzÀh€’ ÛEèdívx8éï1&AXgú;³3™ùdúƒ^£¬„Ĥ۩ï=?wÁ0„*#a ‰ÅË Ö©­ÉBTc„y·^i/8bôm<ܧpæC¦ ØéÕ¨U*™50…e=QEæfˆãsWœ’`¬ï•¾~‘â?­‘f6Ï)Ìç6š´‚wRRR‰Ä€!OîÒ×VMúlêº-n/þñCpÒHUˆ©Ú+¿vާɰ‹•¶ÀÇ9\»K¤ú÷ñ18¤™¢°þn~ÂDémë©6uB¢ñþ *8› Œˆà8e9n×8ANôúµHÎŶD¥µsÜj‡íööŵ·á}NÛE»Ò¯“uN¢â9Oé`º•o‘[ß¼±V{QøÉ¶è¬¯í„%s– ¢P¤I'Á¬õ¨.éë =±Ôö²²ë!_¤øÞ‘¢îBGjnO÷‚tP¡)ƒðÃq†éÚ3FGqIfNíÇy‹< òfGzmPX™0—;Äsåœè©»k)TÀRÃjÅ·ÍàŽo,ËÃŒ†úÝR>6æ(×-Ú0ìÊ('O«tÚ¯Û-¿­Òz?‚l›0¹I<2ÇF)_•μðÚtBG™òËØ¬O ‡ì{Üa…)=lÎà²(AXG'»Ä!¶™‡Û­Ýý-ðV]øU˜R&Ähi89Î\Í>„MWóÆ—ŒeñAñ#ãá²Ã¿VùAF,7Nº®æž£¼l}ØÑNÛ¢%+§ž, ÂëŒ:6;”8v!|ŒŽƒ6sb>™‚µMë¥ÖA.@Ü'ÍøqÂYö)GZ|ŠÍ·¢(ù‰™B¤´ù¡a6< ·W#¶¡yª˜fB‚ã1þçM“¾¬£a2r ‘?ª›«(®O“k{aºï[MŽCOb˜ýj/düš½ ³ò–—Oå£Ê/ç °Ù0ûÈðv­6ä6Ć­ qäŸ\Úø.âÁ¥LZ@”Áãyš¸pÈœ&b u¯˜×‘N%š±4#í¤2ÅÎn)%J9 Æ §,%ìÉNj’Ã8ú³å5Ü%×¥´á–ËÏÐü¹G6ïËž?Ç¿œ”+ª ¶±x„ìSjoÁ̇3-Èb¿‹Ð-ÝŽ®ù­¢ªæË|Ð:,Ìdñø%d´Ö¦·'çš'=zÃYï~½Fšµ{¡ùLS7ã‹‚$ç°X‡‰ŠLŽªË[­u^u§¯‡Êd½pÀ’%íÒ¬pñzf#e®õØÔGÂNbçJÞ*âÛÕ$ j¯ö)W‰Z¯î<ù‰ò†ñ¯ñþAý·]”€ fø¤º÷b ¥_RZ¨Ì ?s»-® >Ä|Ú•]ârìu6e"fã%¨n Ç’]ø.®Ü[#e¹ûálOÁ×…8f‡SPjJ²ð`Ÿ—=:á¸$Тû·ÿœ„=œ¥Yæ9 8¤?¤(eõ„øÝé&]æ¬6“žºœeçþq­:ïX—°ç:á‘:Oú*L³nSUáDS¼HN­Zèk2e´©‚˜oŲ„£ìE:-:æžÞ¤,æué8$ù ËqÒbý„œ‘³ñ¼c´JVáf¾D}Ua±û$œË”ñN‘¾G3M<‘SKbX÷çðp¶g¯§Ê¯dæ21õ âjè=aæö#…W­‚„Ž­UTÛîÒxHçCqÇu˜õ¢ÕB¯Å¾ù*z[¡[‡Ã;Ì‚Ÿû®ò¡öcîâ }1‚ض“Zl³¢^f ꎺQp©1É`îÕEËÜž“$„ Xˆé—%©#æVyoð‹u{/iY^3ýGÅÏqå4ƒ'âkµwhxPž~¥Í8dq|ÂÒ%si ¾vAµzÞ±t½ý˜}F´p镬Š`3â-D"óåâæSѦŠe0¸ú ÙGÞ™dyøŠhW—CÈŠÆ[3xKYŸ´ûOÎÞe7áoÄ£ÖÕ9¨vN‰<\óg–òWô°±6¿jôp›€/ Aóª¼Mà© eˆsð+†j ü°(µ|/Àxù'ÊG§_]*¯ÈŽ.|ëQ‘·È˜¬cS¢Ûi:12%nCº{>‹ý¥Å2‘»'þêêÅA¦äÊ÷âÜGgëÃ g…>{ØíÙâYÆ‹m§D\ûÐŒ)¾+G£XYn^-ÎHùò¯ßdj¨‡^E>þN_™X0/5iÅd©Øè29jä@F^ ÿØ;¹Š–¬«ïpW¼®¶“Œ›gyžIµSmMYG4(;qTí£—™òÄ»ÉãLsd+‘7·ÝÙßÓí%)v*~¦ÑÃëö˜i¸i]Þ÷F{_D‡D·œ„;¦nØ^÷~ò'—ÁÛR(cv†·ë,ÆiSý;G’Ðd ÇªM[φ7™îjþÈŠ…™xŸ_ã:Æ|\¦´óöäÌ—u…Ô¦¯è8±^RþSA¼öÂÝîX¡C©ÊæíqEÑÉ áDP¦Ÿ?~ˆa`a£|¬´^i6’ºi[ã1| Ÿ9„-Âh-¾*³žmÛ€éX§2o QÅ^’4Ú?@¬‘ÿâÉß ýébèž’®¹8„Áb´Y€Æ*á“6ç–€‹Ûö¥áórD>R3™.#$]ìá| ¨«$ÏV!{óh³¿ÅÓ(lÚÁ•z'ÆkÀ6‹ªUhšœqü#|Õ7¬î³aÚʹÙnSy¦›]Æ>Ùñ|‘ßé,Ý>ìIn®óŸá ñúZ,9ÒúòF!ëù%3=eÕëÛíÆCÙPxFí—g¬Ëýû£T§Ø”› }ÙE“Ý|9q1º‹Ôfº'Ž+CÌp¬[ÙŒ÷¿E“ EïV¼88ý”Œ!£ (o8OJží}íÉÓ¸ nè–âÿ5„"8ÅGû-¤ÇIŦÕ^ÑZGÑu¿ß2"Ì¥måk«Wiyf‹§nl»L-ù ñÙå{𽄻QI>·¦b+佬M‚±Qþ=yÀnθ ß8L­Iomn®Bù˜QºÍ™â’0F0ïˆplòµÌà&Ý»»÷®·P*m•§³áÁ—àA÷·Š” A)ë°€¼ÞUD5oa"?7Ø ”n/B_]Ì‘#eSß"µ²øë‹ÞGñIê»ÁXãmÁôÖšBµD”3\™éL9L¹yâè¦I%'%;µ<Ûl±VgÞF‹ À+ r­,¶îIÓq¤3»êAIÀöõµÞuŸîN¿n÷ÌÏ[Ï<Ûû¦º÷4.ÃÎûȖ֋Î_Õ¼øàåžV0 ‡·ê¿àMIÞYZÂæ±Ÿ:‹©ÐÑ]'emW]P¹™V8-VÚ^çT'*~.Dž³Á•PEÉížî/Ÿ¿Þ(EuD×rjŒÀsMÉØÙ^]ˆm}UT&xí)Á·âZ9?—ˆ±sGä*¾ýZCª:bÆ"mîWçxkï\o˜…€³2Ü'YÆq×Ly¹x¹xÁ»wµO>žÅêÎO¿7Î5ÅPetSü•çäV0){Ó™ÿî]‹“ž<ÑTXÍ{Üüü»§.1ä™Ü%9s"èn½ ËÞ¦§Ýë0wûö¦kƒ¾úœqé ¤-fgbšÒüÝY±¨÷×ãWƒnîÒ´*ÄhUªŽ2¡=‡m {í¾z¥ºÅœ¾¼«êcšAÖô;…Oc¹‡aî9æž½ÓTKã«~4E‹¡Pn˵’4<_Í T³J8}'ÖÔ…ð˜m,òÜé‡ |~š<‚ÐŽåm<ü±aYîK%k€C‚k³T‚‹†µ">Òµq=¢Š#7YBÁ"µkDcpêöpÐÞ Bûl“€“ýîÕ/WëÏdßçæCX°<Þ?¸Áx[ÅS©¤(ß?ŸC½ˆøÀ •áËV[ãßa*z¶øØî¼Òè’‘¡“ø–¤%SÃÔ¾‹ôžÏÚæ ¨R7Z•ïå¯tf)A“Wº5çEB2gR@ýýZ ¡q Õk/.ÛÒeòä&Èò{O£4HŠ+)¨ýÞ‰‚ ®äÐÎ_ø€Ãª:ÈŠîÞ™ ‡ƒq'ÊE¢ ŽÁ>{+¢+ú€U¸|_(«e~Oc÷çõÿ“ ¿vÓõ8fªXY÷ö²„åkù¯úhªŒõzø@üyÖxß™u1Ì勹• màzTQú ?m€¾²¦ã(t·¼“˜ólþ9-B]k÷…XPpš E}òö§JLoXc^r<âͪôj:,xÐiaº¿’ÉN×´óÍâþÏ®NÔÙY;¢‰`Øånƒ¯/n@Õ Vý[­¨!ÓØ2Éñ’¨u*ë`åûü#¥/eËýÄÆ“¯=;ÉØš¢ÄöüÖ ®°iÏü óìf\(‰}ÐCw›^3Šè†LýÊî®øXI›ùßqÄ·Zpú³ð·t´ .÷S­l›f\ƒ-1ü^üSËZô.MnE![ÜÑOá†>WõÛpü± HAI¹ï¹$%/™ÇÕpaÙ#l‹ ·fZQwïûK²^ >F 2$ÇÉ…4yZä4å06ÒÒÏo•=Ç\‹çÍ‘‰S£~¢Ï‹sù|rÑRm}©,6Hù{íU“fˆcŒÌc­€~¼Cè«è¿îˆgCsZD˜¬(x‚áÑ%¥‰‰ V£!WÇ×+ TÉÈó(‰ókFFPUHªTSéRˆrÚü#PdBÒ¼£½Ë?¦7VÈo]7U .lÌ× <²66ŠÿYe…ïn8xñÖJ–xßÜI‘\£.N¦õÒMDmoë„Cs ºNíÒ(Oà¼úŨE¹m´›¡ËŸZñäÂDcN ŽL«ˆP_—ˆ–r3}DsöìfkWÈdþi\bswÊ"÷G*ü(¾þ ·`CLH…cØ:$‘EB’\¹tn˜IÄúSàæ Ô1ô4V–òÚ‰ƒ>}³N ‘ãO»Ñmœth%ŸÔ×|ÞETÕ¾Qœ?dÇapÓ0Eƒ@7èV¬sÉØ¥°Ñ@Ì’Ñ~ÉtJ*dï?¿o¸˜ôSeX0K±÷Ëk«B"{`_JýzQƒ4˜j1¢¸á‘œëKøU|(YÆ`Ñ:ع+R‰IªßË6×dikdzÌ!†#´Ü™6ÿàâ‘qq÷,ëÒó÷|’‚èR*™¿{Ýô¬'Òž3:¦“Fw ^@Ò‘ouêbfhÙ–geØÓµ‘!O%á÷øÖ(Y®> stream xÚ­Uy8”}¶VF–l!Ë3²–e&k"»ìk4²Ž™gfaÌŒÞÆRBЬ!á ÅË$D’Ф‘µl%¢"|S½½½_ß¿ßõüó»ïsŸsîëœs]ÔÁYÅMô͉² \® ˜Ø:épUDN΄"ÉX"ÁIuøáÃpÀˆâ‚p-]õúL`B 'aýüÉ€¢‰Ò7‘6`„IX’Ø"Éþ žY…ÄÎD$‡«F8àô-#pC@D«BàpE‘_ÐK€¨}ócIÀí4šô3DI!LS€"Ó¤À´ˆ&páÄ@ÔìˆÌ^ ÓÉÿÃÔïÅÍ)8œÿ­Íîæ½gÍÜ4ÆVÜŸ­ƒŒÑë×syg8g¤C¿î IºåøÄüýÁiÙÏ·f¨>3¹·÷!–smçƒd>ÑÞñ5Õ |œ×dµïë*Ïp+éÈÿðà]‘ƒ¢éñÙ#P–Vwjmk^œ–6Â<ç’O—W‡:ñg—ŸÑH åϸÈ1ÚK‹ HÜÕppx‰x‡"°^¼ëJú–ÇÇ·ý†î"—Ÿkyzž¿ðÄãü‘ç’-jH'§æÝnüº^yYÍ O½N>-›0 9©eÖ°ÿâóǯģjócTO Äw…*OÉ4I’h•~î Åµ9lm^²â¨tA%a°"üüDçô‹Š£å1Ï2ÅžÞíµÂ£©‰F swÞ»Q#-ªì/\3#Dê‡ùî{_-†«î6/ÝäÀ\çŠBl/ÞßÁÚpØË)ÔòõÅpÒͽêp~g)Ó’.ë“ONˆ‹ûdr O9d$yÍ ªóÍÁáTqé‡íÇ¢0‡Z¶t²n%‹)ÀÄäÛª–)Z!b¡Êy€„eíf™|$‡$q/­®ªäåýÕ›ÑA‡*Ðë“&%o›{.s\ƒêœ¡Ÿüø:½¢gèÏæÎTäK c½[4þ“o#ãØwóO±9wW¼£':†¾ã¡/¼Ûé*µ2Š œ›³Ú®ÕÄÏE7òÝôÒ\ SýQ¤¬Î*È:ߘG8HÁ; ¯Š¾Ü>¯Ã <<›‰8Ó=m¨ŽŽ4y£.:¯ŸhŸì'°t̆ý&¬~“JíV>Jö)´m©q+«£¥i—ÔYJòšxéÉ/f¸+‡ƒ†Úÿpß(¼VZ¾¯8€«³§4'9YòÌ+‘·¢}_V÷vïk—˜RN*3UÓyªï"7ï:ùøl|Ù|ÆšÝÓõùw’¤KL”@Í 7÷/X²>ªŠá÷AÐ^J¦°rOj^cS‚e!M¬Ìicâ0•⃠WÛÏëò.@¾×VÜÏð;°§gÍPä‚éî‚jká{y‰®™Ó³¯97ˆow¼^(Ì»§ eë¯|0ôÚpƒE±ÓK|W‘ QGrsÝalv½±Ví¯º;Û#8gæK±KÇ1:I³´Îš¡±&C¡wc6Æø2n‰Ä×¥žv~÷òm½ûÖ›%ÇÜÏ­~9VÙœ°ª·eCÜt`M÷F«Àa³é¤íõ W Ûñ§©ÐÀXæ¿*ÂÿÆ Õ‹]pª¤?7q&¨øY´ÔcãÛMP;wý3K÷O*tfˆÞÏùš,¾re€>q‰¥_Ùyn®Stx×á´”GŸgn•žEšsï²sè]s­Q²Ú«wƒ·LàpoÑ“¸Ú扌[zçkª?ŒØhn@ Ú¬Š÷¸ Ý9çüZ1v‘×UäÄ(UT».»h™V»ø½W[ÞLê Ñîv‘êIâ·Þr<Ñ«éëŽñÖóLuÿ‹±Iºê¼OÉÕ R!ášrÖÞÈM®F`ò4-%jäƒJènK~¾SQ‹}Çeþ¨ÆÛ Êö.ÛúKî0º§>™í.£gƧ-ù•^áÔÞ{¬ƒfœè•ubNˆÛÛ^ñUë1ðIDìØj‰Í³á5y'õx–“7zCZ¬LÅS—¶V´w]‰Ñì¡ÌŸIz±ÛÇÒh%of®3_C6 Y¦¿ÇS9“0q;ÙÛ±&Ïuï¸fºj;ÍÉ·hÕpœGqÎë¥õ8]9ë|÷çGƨF§˜75€¸ú”Ij®œ›À‚Yœ–Í5vŸñó²Kõëtc:?¼ÐΘ˜îDz¢ÒÑRE— Џ„`«­ßìâpÙ%Ðø…È4ü±%+7ð­µuŠŠ~sýÀQ¥‚]¼;µô·Û#‡öH`Bã.zí =u½ãÅÓ8ÝHµ5© oÖ°Fb,„ÛÚ*lõ–| :òjÖcŒPï`•jÎçXN†ý—žâä_½>ß8üšå5Ç(v¯ÙÆÏ¹j>ë”T“êùc-t1%lä\Ä©eàŸ‚‡¤l[Xº÷{œ <¿naZ%¹üWV·ÈþΩcvDM7ê0ƒÄ¦÷§ÙàÝ®oÚ^—?×ã¹ç”T·9‚M¾Î8à*WmàfÛ´l„Z¹‚»¤Pì)>$÷Å  €WƒÝ' #Çâ;f‡Ä·"JÇPý„}Üö MÛèI ûZ=&M(ª{®K¿¶(Î §ê8÷èŸKZ?™kƒˆ •S°Î.í'#µµ…sÞ‡ |ð/§wK¦ S ^Íó®Ör‹æã¾hÿÕ¦‹º}PW]—³;Iœ=K%†t<áZ)JÐQR]R›1J¤¥<œ‘¡g'ãE‰ÑzbQ¨g‰½«tVj½ÎÌcO‹î0=åʩےÀÐÎì¾'©Ü±Ÿu棕6îH÷å^…túŒÒdlÞv¬¼÷élgÀš÷€"IÊI×Ú-`ºmn¸˜w;Z<=~¨[¾ ÛJaØ/†ÏÏHÅyUuP$}¼·ü>…Øö0)ÒãEmßxó|1‹¯Å¬6‰4´•X}«Yˆ÷…„d’g§ÊÀcï.iN)<´OCéM®ÜOße±æ{*x%v–(X~vGOÿ'¶ŒKéÃ/¶äÚ_å1Jvó-<\Xc{'šõá©d> stream xÚ­”eX”íÖ÷é–‘J餇în†I A@@:¥‘n é énR$Ÿ¹ïýì}ûîçë{\_®ßZÿk­ÿq®u^¬ŒÚzÜ2¶pkˆ"ÜÅ›‡O §¡§ÎÇ àãáÅce•C@ÀîP¸‹<Ø"àåÈxØø‘y!1^1~¤ wõA@íÜlr쉄2ÎÔìл;@œ‘5lÀ0€Ü q÷áÈÀ`Ý¿¾x Ð…¼„ áü'Gï0JfgîΜ^~ŸÇOµeÞJÁ3ÏiQO†î®Æ _*Á àóEÍÒ/ÉîçŸt-O:-=JÌÑ@ÿ–&q‹ËËîm·6ŠÇ—áÄ0o”ÄÞ<˲„™È:?=‚.þû}I6¬ÃÞ^ð`ÔÁ¤<^gá¾?²žúH˘FÜvAgíæù¥ñ½çEë;?^oqݪDí’‚’úãa F^ŽLýžý¹ efk¿eNºæ‡ºI_¤_Ù3oºƒ®dÉ¥´üï·å>ƒÚ"›7ÎT[Ç_ã­F¡X¡KVFižu®œŠõzœÖµ4Âq%@Þú¤Ÿ8írê^Pq2ñþ>#s 2*ž¯`zÀh‡}¥“«r5êoÖû9ß0³G?\j¶Bb\½•¼X‘230ð¹FXó§î‘ä±òSj¨VB¹|e9QŸl•’qÙ£%¬"Œe“«äùKey¶Ë}ž__¦v²nÛ¾D8(ÒÔAýšýdžUiMŒË['÷æÛ'omUù±†E²‹ß“7½ÑÙ¶ke¡ÑݺÒøúËÉfzý9Ú÷à¹kD!œ$Å¿8žKÌ,Ótñ?;èÁÚ—æ­"PÞL¯îqH­"¡ÚtzˆD¹Ô,oåè².‹ˆ’mæÁ! ^I§W½x ŒAt;ënÏÖp¹.®´lê®×ÅÎ}86ë;Z ÝU<´Ÿ{J6šÃ?¤KèVO—×HfüŽ^Tl:Æ›4öbžR÷ öÂ&\í<ëaðkï@$ª–4â»-¯ùêžœ‚Gy ËÊàLAZµƒJ׋7n´Q½qã'žlL¾æ1êb"{Ú9Ó9°® ™KXYÏ´àûŽ×wl–…$ìÏ×8>«Õk–-§8˜o:>r6èZÛR-íG—ÙÔ[ÎvǸ¿Ö¹c Èï´7Îs$ÇN?åÕt>"`Æ$ŒU¾ΜyüA(o[.ºÑÔ\œl›“<Òâg. T†™4WãTkQ.‚¶÷ú·Ê™Ø ñ«¹ív´5ÜÜÖ ª ⑲ìJˆE~ž’tÇñk5]ÍÌNãzîP‘ìûïVá:mü£‹Ëò­´VÄoH¤XKŠA”NƒBúi—-Uûñw±×Tù°Pü¤Êyìú£½æg‘&è>ž}uz5œ6Í[ŠTLp+4&&F–­cU~KÄnØmÛÔ—œ†•ò~ïMZÛ…¾ocìÚæiq®çhˆz;Ý"æ9Fú5šÔ×±ºg®àÈíL–$u?§çL ¶èéL.a`hùy,š¶¡jŠ·¸A “õM†V'}±UK‘µÖ›ÝÓži¢Jðì{;àã…þʦ¾ÚÐoÇÑ9!ü×Gód¸™ò[£e±×èÅoŒdînΡ‚”ö£ŠW¡á·CBá=}„½Ú¿ñÒ­%Ò· Ún™ 2hQuï››A·$=&Ö1ø¶ÃÁ&û ¥lèBrXϹ|8kî¢Ç&•1«ŠåÃ9³wB:5éÉ<Ýn5³~;zÐ FÉ•ub5š?¬ñœÊ¸Y=ùå$¬â‘ôNfyL z¤Yè qü–«kt©jØQ#¶›NJEÓÅVªvüHO3û^1>4÷ØWùiÓy†>ØðpPè¨þêºp1Ìïìk{¥kægþ°Ð»BQ‰/y|kcúó%§ ,Æ5ÓAœLx¥25|3ë ÈÅELhÍ\ŽªMƒb¤€XJH|ª¤þ[ˆBêdœ¨Çï'×äÉhž5Y½q xz•‰‚H2$‚õŠVÿ¶ G@¢ÂAôë]ßm§¸±Ü—Ðw‹ªSß7}ž)pS˜rîRžÈîÎYy—Ý,Á´¿ÈU¬zûkž0éûf5¿'ë^wÈÞ 10.h®OqÊûJÙ©àá¬öû2& ΪÕ?ÜŒ½ØN['ƒòû#îÜf¶ßérþYwÛÏÕï?B»›ÞöÄ«cw]ÊÐ\7Þ0—“Úol& XÙX=!¥’¤»-ü¶•–ÏC\q`»,èš/Ä y1®µ¸üqxé/t§¢fá(¨ksÔ¬›q¸j¾A¤~—²sìWÍ¶ÖÆ±H)ÄTÄB9-‰Rõòrö™é[6•¶ül r ­Wž²gÜÇj¥Vu˜Åõp§–HË“ðž:U/ÐÁúbVÕ|­ìÏ]«°l)I‡5šíw‰Ïª]ÐÎDcDÉÒàÓú’÷ÆQ‹ ö‘’Ò¹…wPL쮕Á‰OЩãO-9Ã×rôBp/¡ÁŽ.ÜøIMÆ€ Jf Q^'J¢Ã±¤i…´æ¯g-ûÄO@êi«¯û÷+•éË»ÛWÑ»/ýÀ”z|Œãq…öPøÚ™µØ&ÆS=Y/[ÙÀ#ÕŸ;dƒg8Q,aÄΉöޏR|·<âfŽ®Ê]F(ÔOu¡¾ë~fPl=±¬“c²Ô«mbyð‡DàŒÿýQ‡ðð\²Šd8Ñ—·D+{ÑÆîg#T⎎‰Ö?t|é<ÓfxTÖÞ@[Ò–V¤Ï[™pWCϵÍ⦛¦Ök“ìBéÎOŸ›”#€+Úk5˜øiI£^¾iP*•§»OƼ)ðA'Šûºa$­“à§5¤~²¹ŠÁ>k·n^is(bL•RÉlÑ!0T'™ ‹-þlýYsšïþ©p\wµK=hñŽÕüLŸÆ,û+Lõwžð)µ:"âeÿ4nç“kÿηë¿èÀfk”Øí³êÇ€Ìôã4½¶Ioj“…VÇÎaô×wõ!Û¾E³N[e–Ä ønÊæ¯8Ï8bÛ”¢ÊûËɲ̼¾ÝYJû™ )9ÇÏøyö9k.ÛC¨0îa‹4\ð#‹éÍEÎëñA. ”¼‰7ž«‚–ó.ÉÂó*rè™K›™ü—Øï±+AFU¯xXãØ׸­‘­@ýš/]×‹hA¿Z"PÎíœü•[æ«,N0­ÈJ%zÿú´âǮރx²>Ïp©"ñêú“¢o÷¸>¾7A[táè,ÐK©MãÞ±å¶phçŸ <yK-¾Y8ñà(Æ URË^ûæ ×x´€b&ô­^ÖŠÙè2¤BCRÁ… ¦/ç˜ÿE¤Ÿ¨õjmNµnXk ÁžÆo_ÉÄ*“¡ä•nsbÖÓ”õ¹„‰Ç¬¼‹ù£XÎ'J…N©æiVàÇŒ_›j‰|†ÒÑñî|ƒq6P'c3 40¬è—ÄrX†ã¶ µE¸hϨÎY?V¨a÷”mÞwU®d‹0 œ žŸ¸OÖ ”ñâ˜dûxÓ5uÚ隌ER‡·=Žu¢5W3ªŒæ}Ø2VÖ½ø>ïãð‰^ªg¼ùM¹uj‹Ö(ñôº)3ÛŒˆƒÅÎ@ÕB~––ôŸÎsV»+óÔÐ=,O=#“[œ Ò.CçJ 5’`¦ªV¸„Û¶À°N«“J³o2f ô–úÅÖñpR è#‡0àÇÆgd9ùŒ9EOv®º¯Ÿ«cÚ´ò~Šg)½BL¢|gLb†0ßì0wû uøÆº,‚Ÿ'mð¨.=\àîäq‡ÄùRCMçC¢±&tB#Aœº¤Õ3}ü.v®·L —&­™JGM@Ê€Që§lOô‰‘5<šþËÑÆ:pF^нr@®ÿ ãp펱`—%™ðp°½Ç[K„j&ž%3]ûST¼»aàšJÇöãúS;|ÙÝUcJÃ$•½»žˆŸîA‡îRE%†3Ň?B–Z‹ÜC§3€\ÙýýÝs!BûåÙ£ñT˜ÙÜOºè³N¦ÊᡶŠ[û‰¤*Q2þ+ûVùÞ_ÊMX L¶u/ Y¡*Ž5bôª¬­[jÛSÔ¯–™ßôCñPÏãǽ®iPê2&*ÙãbZòE}£˜-_rü“U·1}Üx¤ÃÄÙVˆ­@6kíöç°‚è@³ˆýF\"Ô×íUí~ëœDö^̳€Â6רÀ &4·Æ=ôAÌË2.2-¿FŽMXå½·ææ1BK„,/x ¼ÁP­F¬]‘çUnŸÓáYµwu„3¢ ç"äb»Í­}äEI§l6t™ÞÜ&A”sÁç1 ßO2LدLq"™Ãqr«pbý]’ˆ×ã ¤{y•¾•¿ä$Üœ+šž¢|åÝ >C˜S†eÝ•* 䌊úø±•‹ÎŠŽ|=—f¨Úû$àõºÅN¦‹b-‡žhœ@‰òQ/ƒ¸ žA”Ëϱ¿«±5j£ÿÚMX·†‹{C?ÁV‡Éד•a§~­T„žÁæ>þ¨Ä£yEºŒ(Š\¹ŠŸñ¢ÍB…±ïKp[edNC1EÝ ƒK®:”Ï/Rwp&såÚ§è(¢Ð÷êì™Çj|šo\µiå3•~,¼[€mwà)´ÓœŒa¨á˜®H=NË )!$Ì dÚÑ^àà¡h›«¸“OË)Ë¥-êúÓÅ}ñWãBy×ú2=§¯J~±T~¶˜ž©"Û÷—)ƒ\ü§ÚØl5˜<ðÒ…—áø]o"£Å†”Rˆ°‰ÿ‰ôÚ4‹Ø¾²ùœì’R_2}µžÂ'n¡>êT¯'´ðé6”¦–_^q‚‡×-Äö~]'§º1Wü´Ñ"ÃŽUƒK±o–¿ç/Ž*qKLŽPì~2heÞwo´û£¬ê÷õ·ðœ4lRæ°yg\O ÉÆüÓ”PEôXvêpáfÚÏK~|SŠŸMRKMsÚÁåÍ;Þ® .• Íú[äkÓÝiu{8H“(’€üQ|Y—ÈëÓlÍ&yÃ|MŒ¶VVb5§5fÞ¡zª§(ÀtÙÞlé‹KàöÇò5…•IáWôû—Ƙcðó•Õmû Í:ì”Ô [ûªbÒÝôP”Ç<Ç8–`ô²ËÂïÊúú±ÆÚ{B7ÎjÔX’$9”Æâ%€Ÿ{åýÞ£ŸÝ ”ÛÇí@£ÍÊ}=ß 'ìÔ¾ðç%ôh„E¯\‰I‰ÕOÂêñžTTòNM\´ŽãŒŸ\=¥æ}MAŠ«éà4î+PÅr0!\Ú¾«”3­”ªáÄZü°åùæk¨ÿà‚Ì«¢voÿ.é¾nÕ&6=´À0„ñvDCÙÕÀ±›€˜=+ó¹Ås¦wlâü‰²Å}él;2ˆ9]¶»²ê#®j“À6ßS‡®_ÞùÓ¬o!:¶ûV ÖF¿¨òËåý®Ó±¬6³e}ØÙ°ÓUvÀM¥H6½M\ìQª,¥¼˜:p7–“U£‡ÎŸl.«+ß@Ï®iï-¤Žv¹Ê{µ¤F ¸8‡ñó ¥üwÏÍE|ÑŸœ]dÔJŠÙJœ7Ëьѩz•`[_U·æè—>Ù˜¹BžÏÇšj æèþqêã4x%$)Žjõ¡Ç)Ù[.ÈÂq^Œ¹^zã»$–Ѥœ$§©â0B åcï>‚9ÃÂî¥ä>Vߨ”xÏdX‰›KoàÒ¦¬©=B±¼9˜ÿ©YËS¿=7¶ZŠ‹ª2É–Ðõ€óxtªB)läôóÜ ›ÂuÙ‘‘Îݦ9Qס¯-ã“<Ü¥î_Õ?Ád S:£'Ýåô)ütbmxõ-øÈP…1¦Ã_Gýv2“„­Úx°ÅРçàeewõJ!CQ“ÎiM磀¡]LXdYìH …fYF·¬J÷ëoócò#È-Ý㪕sÓîÔ´\ (xxÍ„‡›­%X@kÎttSÿk ÍäÔp¾}.äyóTŸ¬°W˜ýñäèZ™ TÊ.Ç<{öv"蜶ÚvèV•½´86¶3úùDùèÔ´ÙTÁîŽWˇóR³cEü™GME0¥pže¼ËÀÌLÄÁ˜Rà$áêÀ˜à‘kž›“Æàµójˆ•|Ÿ6Ý:kÀ=lO°ÍáÖZ×øS]Û5 ìV‡‹ƒŠ¾øruÁ=–£…y!ëºç`Ÿ3ëÊ¥F`R¾›3bA‚`P}Ò wŽg Ÿ[‰·}j,_þW6¶ï^Ô‰y#–ÒÇé­™‚‘­ô‰ü`|({ch®6Û1)¤‘>µí݈>•så9µˆÊ‹¿^áÏÖYðÎ?Ó^tx°pTÒ·¹‘¦OÏœÝ.!{lo7|ŽŸ‰ƒØ+¨Z:‘“¤-áqôp}yóP£•+=Ü–Vàæƒž¬î{ñ­ÒX(kf“béªä˜/µš/ª§ø]j™÷4â 7‡eRaü%£‰]ôíBÆ­Ñ‹.•ü±'FÐ,Pl’E¸Ø&[Èh–J¨ Ǿ‘'NGd—àÜ—‡Ußâ—§=^*ëSŽK Ѹ6 n‚±žÉA'¿í+à‘U/L~ú&rµTvØÅ¤¢gøõ6¢^ær¿~^Czvw•6o¾§EiX޵ühÛJ–«HC¶QA§“j ÞdhTfTßÊ’ƒÆL´($-@|Ñ Ç…óÞê“kÃu«Ó=ÛæJåÌ(äïõÍ—¶Ú`çA×S'Ÿ{ŠÊ}µïE#îÚ^®*v$ËœjñÃߟÏA³—©×œ<Þ]ÃêeZ¿­1‡;:~Š™ùFò¥8uFGŒ€`Ñi˜Æ‘ jþÌý€×Pš½ÕÕURðØRÅ_{®¶šFa˜vˆ<ó—冲‚J;~ÁˆÝõñ}:ŽÏ€> stream xÚ­R{<”iV_N“"¥VT¢Q1c˜Ùj™1‰0ˆl«1óâeæ}ygÆ!¥9d²ösXEñk?+­˜"QX´-±­(-åð‘¶r–OûÒöíï³ÿ~¿çŸçº¯ë¹Ÿë¹žÛØÀ…gf+Dý .ŠHÍ(æ&`;ñx2 ˜“ ÆÆl âKa±ãK!& 0`¨8oÅ´°`ZÐÆ€†È08 P ˆlÓ‘°C,à#À‰/ „Äx_x¨†¤2s`+·…àI ,š( „RàÀ´àÈñGÕDz0,äaÜ â&MnQˆ""Bþ’3ŠßáNþ¦–6熉DÎ|ñBûÅ”þÆóŰHö§‡„I! 8¡BC–JBÍ9AB8L¼”uòE°À A€ü±K¸p$$t¥‚@àÏI Å:„—šÀƒ[´@rvã8²îøóGI>ŒHÝe!ÿm» ^Ä”¿0žG²9™LÁ…øú´;¼ä2"@…0‚„%ð1Œ/#à³#KM0"„"‰;&™#¨?ðPb?Š>”Î$ÎBiY“Éå/D$·Eô÷÷±Xhd´̨–dÀ`0€•%#öt‚0 ƒéâìà!}Âþ0)EB“Ǩàó“A™7Nå´~¯¼}+ Bî\^Û^³òDç¹e¢Ë?;†nï)óš-ÎY»z@y`KÄœž$©:Æõ>÷÷ã¡ò¬_æ äDÝÔóz—ã$ë1œ:1¢yëFÇø+Ëeõ4ex6žÓ4rÑ…hç>¨úÔ@©Î'\Q÷íIº•7Gä‘pªÌÄÂÀM++´(‘–ð,B+#}ų‡'Ž%¨Uîè~‹V‡iϨå=ÿå”NÚA̓áÄTU£»cHq¯-«ÖZz}`úýx:€Švü8 Vîáeê_cq´†Òíˆ^s{§§ïD w…eótêf÷kÔ”s•£þ©C:Œ,N_-heUv榬αèþ9®¬ÿ©pt×9ñž»wê®0ÿôé[ǧÍNW ¹¬/ñ›+uPÛi~¨ÝÞ®»Ã{ÒCÞ“ßc¿1Š6˜M¹æºk?Y‡b“ãXÉíÐnëšNjW5|kV}±¥IQ]ŸªRúèœÃ³WniUkƒãûzešJe뉤·†¿¯Ú[AÐ3uuz³ÂrÔ(e]Í„ø{MÜí)FZæÈ7Þª£‚&ÙÑ*=î°nñµ®š‹¡åëï»h6¿9Óüã@»ËIƒ½M‹øõñ™;OôŒofží&Q”ë?Kˆi‡[™¥;)©|¥õ|³gø(1èBkÛ=îÓË—.‡¼V§¿ß«Òâ×G{øº}ße†T"–Ÿ0¦.ÿé+aUàØ/u´iݶúyfh WKHÝ ·†ˆPr&UoÿŽÆû/”m}³ÏbùÙÑß<¿£GÔ¤r™²­Ž»‰oö­ñ%Ú>LJÜVì©6ƒvf'ùÚ¼ß=ÏÌ¿ ‹_ö¶¥Ö>rÌ „ÍYhØž«qkm‘ZfJÖþH´×¤Þì)ûaÚdóÊ3¥œâåË5â_L„Š›lø”SyÞ1}~Ø·Ôq†á;äŠä+ ê¿ÌlmÃìWg—§7çØ`g^‡UGnóˆƒFÆÖÉôÊRh³õÿJQ:ˆJHËMÞÈWè6¿µˆÆ™¨ÊUnæÄóúÒû´=¢åT¥ÆUó›4]¢ 5”ÏÐï)•æ¡ÉË'Û‹âDM/ç\_· >­ÑË~®†Íx>‰º¿O;Ím"ö6ð䔎jOÝ âa­õ¥Q°½õ±Üõ§ú’G=ÄF«­ë²œ”½ÜœE-qÛUWÙìY­ãóÊ’önkeóW罬Ò\×ç_ˆV\·lCracƃ䑆~çÀo6ðÎÞ {ep1-¡€5Ø¡úÚõÉ¡'ŒMºc%¹?(\¢cvÙ˶´a­åZe¯i|w2›iŸ\x« uHo&˺@ŽéØ›^ØyžÑ6>zݨ|?±§( èð¶ÖIÛ’B‡£.±§¶ö5Ë»ÕjuWŽ¢vçãÛ§Þµûʗѱö v×Î*Ìd `›di¸ŸÌ²€&ëÑaaå¯T¹â¸9]‚endstream endobj 267 0 obj << /Filter /FlateDecode /Length1 1075 /Length2 2850 /Length3 0 /Length 3561 >> stream xÚ­Sy<”m®2²TjìId™Å¾ÆDdß’]™ÇÆXÆ)Y"eMvB…¨Hc[öŠ$*KÙ“P¢|SïÛ×ûöýûýžžsë>çºÏ¹nIqKy4ŽìITy¥è™Ù8  Ž„JJêQ@ •@&éc¨ €RWGh?<€Rª H eU¨$ Gö¦Qx* ­wøI@{CÌ0TЋY‹!6d,¤ÒàšH¬œð¬A_ââàP À°TÀ ÄHPÄEF$w2 úŒóóþ•ò)¾LQ€4Säa€)G&it‡"ÌÉÌ^ SÉÿCÔŸÅ üˆDsŒ×ò?§ô?yŒHû›Aöòö£‚ÀŒŒ)¤?©và_âÌ@ÁÏëϬC$`Ñ$<äQJp¤¢ò_ ‚¯!ÄY¨XÀCôâ ÷§æø~ AX[Z˜[Êþ½×ŸIK D=AóäoöÏõ;fN‰Bœp$Å$2¿_.4;FÂ’qPPV0 †e:ˆ)Á(€@ÂÈTŒ€“ÈTæ€9šPÀLþX«ª€0ÿýŒ”ÆÛ›B}ü˜ ú…+*2q …ð×ZÁ(¤ €pÃPþ(0  A÷òÿ†ÿ}^ ˜L/ô®*óñ#øcˆ ‰é¦ÿJCü'Rþ­MI@HîJûÍfV&‚¾¾ÿ¦ª+1Q2þ‡÷0Ì­ý‚™\/ÉÏ÷·áÍ”JÆa™Ê˜ý~SQ(æ)ÜOûþ·³¬/i¿¿'ñ¿n8z”,¯ È««0·ƒB©ªªÊ¡ÿ"bý(f»ŸŽé©_±;éC ±Ðáçd¬æyϴꨛaÇ zoAëe3Ãìö5a× ¸Pål+q<µp6o¼*¡v¦ß«™²—r_ Þü’ëJþÞÒªØÜ"ûÄpeü… Œ›Êõ]VjÖ¨Åçdzæ…q! e"#FBnxEâlÇ®lÜôQÇ‚†ÏcÏ9÷ÈX_•9 ¨:\Â>º}?Œ6ú¾_l¹ælZ»6vññKS#K˜¯A¬TŸûN·ÌÚ$ÔÅÝ¿¯OÖêºi`z<€·Ékq‰á8/}à¢äÇV›¢ÀÕØ0¡à¡.ovØ³è¹ø¼Õ (Cäè£ÑÞ–óíãˆËᆠ"¦ÂŠ‚²æ©|xä˜âŽ»ïjº='m+ï .nM³ ÞûR„9“ù YD>ȧ¸Vû³-,>nRîð¡°¶…óyí>Ô^a½Ëë9æ=l± f~Uk©5 sØÔ‚RÏó^Ép¯m»²B¬\@ã-0ßÙ⛦Æây+},GPœ£9G®Dš±%qÖY³Ýêÿ¨ì©Õöx÷î6¿Hšp[­þÁ/Ë-–×5(îlã®Æƒ_{= xr_  Â=¡¼mY˜fÕë,áÊ*rª1Ð>B•$j.<Ú•ëÄ׿"úªL®òTìõ]Ü1Ç=8ÈÍ—uÒÚt.Ï ä ;ì¿U?C{•)¢4Ð.Îþõ•᦭* *b²‡k&m!Áú“p]n¾íËŸëÒì=Ôt _‘VŽ»6÷Žæ=œ–è­åEwîXÓ»c wÝ­ùtò{;)§¼ U÷2Ñ]ž½$µýZikOµÏËÊ[½å›ÅÊ9żµl˜2>ð-Çø~ö¥-€ûf´U€É"štÒ'=%Èš]ïArL]+-†Tç&&%,ù/œ×?Ð!»Ä3¦ý˜«³WÊ&'z8”£v"²þôH7{qÄó9¹¸õCklCpAº·È'Õ­Í¯ŽØ…ÚyÙ)ã›­U·8›)¥¦¯«\¥_ÔWÆ«g.jXu8ݲ(ç VÜZÛ7+¼ð²¨uÃÅ…|¦†V¬pü½mGîmº¿n=käÔµ5¹„i/'ÔÞ.ÒÄÓJH…ê3=ï¡qe9ÃǃgÎNþ×U÷mߟ½Üº$$eeH_¸Ë¿ÜpˆÝ—Ýõ{níþ6²àýn+ŽR¶¡^Zõï¸&æžÊîºï_¸q]Iõ[¹'´‘,Àkf¨ëÅʈÕɼ1&//ªÜr¨‘ZÒ~’ñ¶_¼ËŸ!þ°e ÜóRv¾6y#edzØ…ƒÝ)V^ôZÁxDСĀ;ÕðDG1ví´½ïö½’™Í/üСE궇e;&¦ç»Åx~>` ;¨Ëžcczí4DHöBÏÞká]˜æúe÷ËWÜ7ÃN5Ãpå·²²YT׬ní·{ÍY5¥^ibO<)øL…SWØ?/YÑ#Ôá߸´òn—6ÚEYe6±j®«9:<'îéHhÚ)ÄêH2ŠO\Þûö´‹ú­Áí$½Ë4Ë"•"ÕXë’Ëfl<ŠÜwFµˆ#’˜c{¶?*Ý爵¸ýÂö‚vÈL‹#b!ß±$x,“‘×9ê*á;=:³ƒ¥%#Ì’½©T@_']ð?Mü×Ò©8V¹§J¾`™­7nhÛ\¸¦°PÕ$gák™ úV«{Þâ®~ IëÜ‹+÷`¾¨rci2Vl½W9þæIÍg&_L5“s8Ä»rí?j• ;¤¹§4íÀ“º{Pòª-ÆlYàÝ… YÍëõyî]ð»ÅÖŒ¿òj,Ï ð¹FðÕ?IÜb°}ú¤ÛC“>‡w{ž:¯Ÿ§bo+oÔØ§ÎÃrüHíØìfå,¼÷C;¶ëÕ<-; ö'WËOA(oÖ«‚—ñ1ŒÐ!Þ²ô¶¨ âêh…kA4C~FnÀýüómsžiO¢‹Â_BͰ‚Ü”¨=:+ât£Í…zj~ E\POqc''ɇ|{ëS^®í~eך¥hOÜCÉwN[ƒÎzR±Mµm—ó#½[zpæðC£s=9Í2ZÒ¨AÉ”{)Oá¹­çé²Öª}‡”ÚäÞg…€÷Ôî4" $ïÛ¶gnR ¥Ù•CxîD£ñ²N~ÒsZMoÉDVßXú!§N©ˆ3]'§€„}¯JK w#ŠæErÖòÛ¦ûá%l~÷xµ \äësZ=ö›ß²˜²[îjÀž”À½_½eêÓÔZ/ò·Òz¬B6n6‹6*Õëg²R,™Sï+ ;½áy;“´–À€LOs³þ™l­*NŸöl7Ì”Å+ÔŒ5WÈN5çÂΉ·û´Yõït‰¸$> Ö¾Ö›´3®¤ïœ7½XZâ$íã¾ØÖôº¡ßo îÌ×ïÛ”z,©ðô#Ô&a¶§‘×ÍØºl¡‡<ð-iúb¹^þ¶àõ)Ÿ(²>¿çT—P‡[åe1eÚF‹û\ƒøº7ž˜Þ=8¨'ñ ^‹þÀ¹!‘!º",zâ¢LùqŽ÷bŽáY=¯)Ò*눪ýÞ–è"“ök ™ãV„)ò Jý^ôÓÎ,ê›R)™‡åæCéŽw£féêlƒüÙÐÔÑK×WÄh´7£ºHç\;•¢XW—¾íSúCƒ}S¸#3-/¦ïå{~Q1zîP4OdÙT{æÙ`y®‰üÑ« _×Ä#‹¸xã9>V$ße)r‹^fØ.YËé°6ê8S¼Öõb>â‚àµwl¿ Å?ÐP”pÐÎïK‹HsGê|§Ørm¯%σÒðð›WÂWƒê6©çøÓ½ +nt •Ë,%i‚Ye÷{š²OÙ%¬²t'¼™È[ôH+¥¯^Âq%Éò©$mžKŸ:*Ußéo— 2‚_êæ¶+"øÌ%8wí¬îGÄÛU𠨬nмiªÐ_‰<ãO|sÐ ª¢=xqjé»ÝúÔLçÆF¤ŠŸ“Umý Ãy¬Êâ yrßׄ yf ÙµtNni»J”ÿè¾É¾ªÔGºØâÒ´¦Î#ƒG±Ò]RR)®£3¶» ÆÒ9®~kqV‘ä _Nñô,ëƒ'ÐwLhµÍÊñfN¥*¶Éât®í>›$hŸ¢“Ž ±ö)Ÿº[_bl}Ü’žË©>~È8ð«}虥{ú]­û—3‚ÌœI šÚâöº…G<*Á7ŽìF©Eª¼…- í| Я®µÓ‰“quá €ª¾`yÛh/ÃêÇU£çü¦÷µo‰<”?Ã2‰Ôôúvùï;Ó'£ýŽá‡«Ñ­‚BgÝEºký pwl19»-n fn¨±Ñ=¯±Ç„æ~°i ±¼véŠ]÷y‘~XÒnÏendstream endobj 268 0 obj << /Filter /FlateDecode /Length1 1458 /Length2 10686 /Length3 0 /Length 11540 >> stream xÚ­—eXÝÒ® î,ÈÁep'¸wwlpw ž‚wwî$¸»»;áðîý};9ûü=×̾«ª«žªµV_ÝTäJªL"f$ÄΙ‰•™• &¯&ÃÊ`efaE¦¢s;ƒ!vâÆÎ >+//@dòzñúçãäâcåB¦ˆAì=Á–ÎZ1º‚¸"¶ G°©±@ÞØÙdûšÃÔØ  1ƒœ=˜"66•îp¨€œ@Ž® 3fdVV€ØÔ`²Û!ÿÑ$cgpÿÛlæbÿ¿.W£Ó«(í¿dÒ^EšAìl<f sd äµèUËÿYÿ\ÒÅÆFÁØöŸôÿšÔÿã7¶ÛxüOÄÖÞÅ䇘íþ;Tôoqò 3°‹í{eœmÀ¦"v6 +3 Ç¿í`'I°;ÈL ìlj 07¶qý˲3ûo%¯óû— ‚–ª’¬Ãÿ,í¿œJÆ`;g5{€åOô¿˜õ¿ÉìÐey2ëkàëï¯ôÿ«˜„)Ä lg`ãä;:{ ¿n¢Wâx±Àvf wÈýU1Ùâüz àu2>sˆ#ò?ëÊÅ Šücú7q€¢ˆûC< øâ%þCÜ, äâ?þ¡× ²赂Üz­ ÿâyÍ¢ô‡X@å?Īü!vPõ½ÖSû½n6 ñˆýUµ±­ýë¶5~]§ÿļZMþÐk/¦ÿ!ÎWŸ)Äæu“ÿ¯…ƒã‹­íŸ¬¬,¯RÍþÂW­ ¿ðU¬ùü‡Ày_Å[ü…¯Ù-ÿÔz–¥‡½%ÈWÛß÷¿6hý¾êµù _›±ýƒ¯ÛøWª×“„ü…¯ÒìÿÔ~µ7vÙÙ€ÌÿXYÿÇúïýóëB¾Ž ùk ¬¯9ü…¯9þ…¯m8ý…¯ œÿÂ×®\þÂ×®\ÿÂ×®Üþšè«R÷¿ðU¢Ç¿ðÿ=ˆ¢¢w/&V.v'Ë?¢¸¼\¼>ÿW¤©‹ãkƒÎÿzÚ½žçÿesðë#r™"ÏÏ@Lùƒ­’êC‹|%rÃÑ9§´‡Ô¦ð3®ðcO96Œ«H/°B°¬À%˜‰Ç²e@3sÎ5Âzï~/U`ÈV?.]vª*©類ô@f_†í·ðÝy²-û†ÓÊëU×v¸ ¹}VîÂãØ¢Ù™çK_k¿Ñµy”d3ÊíDdý̹ÆÞêçá‡#)H.dþû¾^ê5Îïy®å ë%´ÞÈLy˜éÁ'$:wóõQdÖ4k²y­ ^é—ÊÚ] ræA×¥”94nL« +8îXò#.1„Œ£µÁµZ7fý¡ÀŸS¥ýWÀگŰ¹ßÍÀ­‡²ê·§?ÁÀìMî±ÐŒò=Ä¢L™î ¡;˜«×°=Lq:GOe “X2âeÍýf¹?Ó=û®ÁA–EH:'-=>,4§Nú|Ér½JЖVuœÊ•q‹™JMÆ´<»- a\Lú¯ê² C@s¿VŽ¿~ ´$’·4yÝÅ •Ú>.ʦ.SÇh²jÌàÓŒ• ´P oûÒJÃ{Œ÷òß[¦Ô×õíXýYITÆ•*;|ýÌ.³I‘[™½Êëd~“(#F½åNé[ ¯›ž1 V`bC]%{ ©ÖOГŸ aE¶·fC®Ö‹vf„Ð%°©=¨-”ï O¹…ù¶NĤֹV 8v QxB: wü`s¬ºiíÄnÊtfY~öÛçQ“—!7?¯;ñΈ­Èé`ý½—Ï?ÿ–íExHò‹M~+}¢¯âñ²ÑÌ\ªÖƒºÝ%Ë÷:o¼ÓñÁö#°xÛ•fø©éèúØÉb‚:Îóò8o¹ =I×’Š¬Ý‘ÜІf\t×'' .NÝÈî^}vöbhÕϧÒïê„)ç[âwÝÑN¾»•ãe˜—ø„"Ô"gx\ˆŽ«ì”¢•‹±z+y/ÒDà:NíÍãï0&¯VÊôGüR7ÏMh³VW!ë‹ `cM“ÚvCéâQHÙ6†KÆ+¶¡uÒ±9ʸhê«Þmhn§2Ó »b¶Ï@¿7óÐ9hI³PûîéTóÂw†Ty¶ïÍØRÚÁVÌ•Ž¨0vÁ2º#‚'ø]$–ôë´hÍ„¨¿4D`hWðTÈ™gŸ¼mŠÉ']ì-K…Fæœ6SJtÞYH‚±¥ó,‰ܵ#¡»¬.ûè8ãÜ™1ºäZù‹éóÙ¶WéÞL¶ô¥†óϴεUŽ9p†¶ì¤Ìz‹æ„]-ÿ;Nrþzì¦5¬ßeš… I‡2s6o7Ú}Í8ÒVìÌëzü3Ðä@Y•ø&îÊ-›U™­ ŽÁ(“šá3ÄM“{žÔ½ÙHþÑ9ê8pd@ˆšvTöwÔœÚap‹^V«³²iÞ•@3Þ[³öÑ݉ëT¬è×òùªG<©²"Éèׂ: 6¶_ƒ±ê3ƒ•é ”EÛÖó‰Ù‚“üŽüíûCÊ/ø/0ÔtíDBOêEÓ­wç¹Ø]LîÌðLƒÕ†9‚F§Âµšâ¦"WwÙzÏ?`æÉÓÇ£Á…5SpdåYáÍ ݘ„”e¥¯º¤ÚNŵ0 ¿I`®¬Ð/PÝ´&vx¥gDfñK0múìë-½¨Äd5  ?EL4Ú¹IŽb̘¬b`‡\ŒÅJÔ¾ßuñ|C¢Þ‰³b9(NÑŒ‹ˆã÷ûiF%ÿ$–’¸Ïí }>Ò6oŠJ´éj‹ iæJí±ô"s˜ÃËô³$çÐ'ü|ÈW¡\Ü0k€C ßeÑ …:ø¾1uKm}í–4Á;=$ÄÇjWý›$`OMØ×O´a“pÿ› ö€íÓ ](Ôx1w_GþiR_5_gÎM äü ûfÑ»o8Á&2JCƒaèmÅÉ´ÐXDªôâ¾Ï*>ÓNBzÎnõòÚšñH]ìäõàæw"#§æ/——¡"ZJúK]¯µV)Ô1g]¿ƒ„ΟXL†£µX…M’”‘€DUv 43©Ñy ăVË¥ <øû6Øs<¸­ Q\T\ž±¡]áÜðœéÁ½5\é¼½F[’=F}!I±áÁ¯pSuÜYüïKšð‚¾K0ÚÞ˜>s1øp–^Uÿˆ¯`Så´KIIà“,)2eîÒðHGl¼ùùk¿-g²ç [E̤—tâ>œ1w™²!H‡Ñö`³º}¡º>Ñxùú§ë´žiWB³œ"ÿ sÉ–ÂÎáe8§líç(÷N[C"Pް*îY9ñÑÓáxvÕàfq\aËæwÖ%Ô‡ÙŠ˜U»ïO9±‘s'&Oç€SùFü²ßGÙ‚<…Yž.PÉ©æÈÏ©Šèââ1À¤ì}Í¡P¤©ß4 €×ŒVv‘osìŸÕ Ðùè_ƒ &hæ´Ç¡ ^¢6ìØ]GÁ ß2µN’È,E)ðÓ¸LÞMParð†:ˆ¦W‰ Ì0p“º$v6¡}ª;„Èär¸¨:MúÀ{‹Åx$ÂÝhÚm~ˆëÀ/ÑWÖNïZd@”Š©=À%™)K•aع;ÎÓ·ß– ÜÖçYõèó,² _¼¹u“5¼EZ̼uDF¿”Ÿmãªi žcÑä¥5ë6?°¤Ë¾g·R9ó£Ù&­Ú!}A(mHFr)ͧm,Døç*´knK7ç­à¦×t¦Ñ=‡œ2BÕîgNÄ=>Ù}u}û•íaó*“‘æ(óÅoè¬ ýSTáM¥QÅå1­uÿpÄ /k—ОŽ!úR1{Er’êó4fp´d«Ë\jphCÚrÆwB$b"GxB=mû§»ÑÜ·OÁûrúŒðÍ‘·bŒ÷?åþˆ(Ît«rƇ„†\:³šî n”‰©@TË/ÁNâ…["¼h;äRP/éM6LÛ,Ö ~²[i ÚCìé¬hUèÛ=˜4«EÓ’—²Þ©`° u7,X‘°‡‚HxÄgbR_ñ=ž Õæy¼âÐS6óŒ$cyÔu<³î}x¿Å[Tп_ÓähE<ƃl\¦r WI\IV¬£ ÉoRÂWMN³_Áë¼dÒ¸S’¢§þlMÓ*ÅúRª¯lœ4’Ì(]Ý·æï>G…žÛÏ¡òý 䜤=x÷LjÜêêÄ ¾Ë 2f/JZ𢥋a_Ûõ7ˆh—oËs+ÑË¥˜±&¯Ê:²¢’5”bêÁŠ4ƒá‘Ã1.ó³Ü2é/cSÞ”þl ‹¹ÎÜã{#Äèš0‚ïö•ëj|~D÷«?OÑšžÖto¹0‰. 19j‘ÔO .TWõ!hɮٰG°ÇJaÑ–&˜ž•–Ak1€†š n=P_·4lv)„ñOˆT§¶˜nu±»$Yd¬=…Æž5½‚*¹Ÿ^šëø|-“2{úÛ`{\jù„åÓ%ó5ET³\a«ÔTrš‰ÞõRg\'€"ÚååXL¸¥V?M¯jµ|ýZ·fü6ti9Bìó ÔOíLu¼vç'æáq8þæ¤Iq÷ò>i±ÁFÝJœ«òyw×<ÂpÐ>‘jü÷d8Üêc×or'“?ˬ%‹¬Fiû õÛ+ÿ"œ¿Yâî'C|Ä’r»´,n8þÂ軯ôÈìÐ¥²ªÏ0J¿dü>l|OÖî’mzG³°cíG[øç8ïë)=$Cnž›(nâ:­NÆ5Êëã Ô•¤ÉZA²e‰[I“c*†ÜÃYSfÑË‘v…÷d˰¦Ôpvf«íª/ ]¦£ ä.¦¥È'CH²vB\µ*(κl+Ý÷jå˜ëî›Úôè¬6oþáDÕAeëžÐø$‹‡ßŽië °"@¥d»:7sÛŽ¦ü¸yNp =ÁoöZƒ/eûùt‘oª(TuhWlØ9&lÊqòñè3]µÕ»ì„=óa¸UÄ:2>¥hÙtÙ¿¨éö4I7ÙTq:#Ï„ÎË"}¡‡6 1©›CÏï o0EFènUPJ–wøÄõÜ0EH, –âàödgŠKzkµC)ºo£#5Ì4㺱 XÛ§ëÕP‰5_–½qãÌ÷˜;9Ãál8xä¹ê ’GŠK_Zú Û¤ž:ÔpgKÜÃΑS÷›‰$ÂV¸}¿;$Ó :c…Bt’2BQ=hí}:0D•rù*ÒE kr" }eÂîŒè¬0ÙÜú-õž 7 ãz±}`öPl k¦-Äê¤'—W˜] u;)£wfk×bg±5ìV¡sQ÷¾{(yWY/h‡“Ûq’W­[ª&èÆM#ïºÕv‘Øß®´¶ÆÃSüH™ŒÛ¾Šµç$¬å¸tï®l6%%’뜤\Á’b6”Õá²Ô•V¯Ø¯º3ïƒUž((£QÕiø%]Û ¹X Ý¥?%Sá¾(EZ«*ÞºÐõë;¨Ëag¨ àÎìç¦U3)§h<*^o|ÃÈDâÐÇU›¯¤C”ñR—86ªB† Ûù=Ôê¢,IÒÉÆçn:ö}0îAž“n;¼ Ÿ )s†»;*pƒ ÞYRÿ¤,¼±ð¦•]D9÷}‡6Êá ©ÚÉ£º}ã’aî3cªB>e9/£à‹ølÛã9±%¨Ÿ°”kø[e®âZû~Ô–D0'‚z ·›2Êf‹Å[àŠÀßjv”VËvÙ@šx9»G¨À‡Å8*™\FêaÜ×?Ge†RÑ̓2nôUvÌ*sÖ¤^´6jj³Í£$§ÂªRme^³%'¢ °P HçuÌ^BhÏ¥ÅëÉjá°÷]^¤B÷R¸„…[1)7tä«>Ø0Þ[µEGŸŸÔ̼xGÐéÌð>oæ ±%zû²P ßÑ}éÐÁinIœÍ‰,AøñÃ9 ÊEÛ솲1r¶ ·Ó'ø• nmüÃÏ——Ðæ<·Ù÷Çò¤„%νð2Ÿ½ë®«òW!R†Nìø‰Ä ½Øc”ñªR „\º³CzͧŸø[’Ÿš†RöïæªµzKd™s0£ÑM*K’E?°'lÈŽ‚NƒÖò$:N†ÅÊû¿<㶸²&òo° •YëkõPZ5JVõëŒÃù]z Ó0Õ‰ýœ||ØŠMôõvß“\Þü˜k›¡°31+A3ç$ò1Î Ö_ júë»îž„UØLõÓà°ËüC›Ç÷¿¿ô,•ð/V‡Ì~4d^v:®˜~d€hO[¡§ƒ¶‹3œ„ܙ͡£86hÚ£FwJ`OÂïïÁÏËýË›H]„t5††¡“ã‘ Ø·Ðü\¥åm’VÞŠ>šNƒH3äÈ8Dâ)ê/áçÇ àiþÊ»E¦*œóV«€ Ä ÷qGܳÔ0$Ï·ßK#Ä…•WÅ©ô©.ƒÐïò W–±Ä#Éæ|ú—­Ùy¶]Ü€* &ƒM¼íý\š;Œê†Áõš˜¼=LV° —¡×E£h|˜#¹¬³‚0ߨ«˜úojÌ\fÙ†÷,®ÔŒÈ¿¨H|ãz§ŸÙq_ÎÅdP¤ÃŽ-cJŸuÊW¦—Ö)$uª2c64=þA|ÞQá1]RŠÌib±Ju‘¶löh!¿…Iƒnz’_˜¦Ò¨ïŒ|ÜroÖ€gf!XÀ!ݼ?‚VÛÝÎW¾B}'÷4¿3ªZé}«»*27jj9Îhd\T þˆ°q°¾È2òƒ›é×ds=%Çø¬ƒC°{¯ûïR¡Õ§“ÇãÈ‹Üúu¯ÆQ.çjBƒfDID_È‚K[À&å*A(j¤ &@WÃî;µÊ"mï¡TL…,ÍuOˆL™(aw÷rákFUEÕê…Æ©27lõÉ ;Ë"äˆd:­î©í33ÁcIÛÐ(yßH²ƒl*¼AK×vu®ÛÜþßÞ1§³Ë‘£Ž:[¨†‰zétÀ±|Ëæv‹ýrRÊñ¼$¥³ÍÃÞuƒãæÅ O $x>X-® 6ƈhQ‹†—¤®ÆïIwÑFcÕ':Nk£’nåÿT‡G>ǹô«ÎØð Ý^¬Á’(q4ÅœmÑt8ê6LL&é6rÈ뾪h.ƒF Æ@Y8ëu«TŠ •ïy¶2­ËÑ £mðu² éÑú5¬übJ£Ÿ¯ j²µ&ÿõ ÍÄ;•@RF{‹š Áª´ÖÄûÒ7Sþ΂z#@¶?Ýó÷1>Ž™äTÊÎ4%¾ ‹È#IÄícÚGTöÓ»9ss96ÇÉcyÆßO,+¥j¿úŸfjNçjkZFòçÅÄæÔýš{ z[gUFìzÍ`€Ë¨a~Dl@Îñ<¥‰núWøœdg¬»ÜÙƒL‰öÎ ýî‚\wšP Þ<¦ú»{7ÞeÝas6tåµ,0Òú¿ÀB¼ºáÁÔÎ*ë,—øõkW7î2Ú:ÔÖ²½°Qܹ3 Ckö J$;÷d©d@=fg®P@QUÑL¨B§—ÅÄ„ñ´Gt$Õ8Ñew‘º³hô饻žþ”´uݽ¾_A­±DÂ2ªËæ ….óÄÝ@S‹; аÓˉˆ–¨Ú÷71æî´íM—‰Â„Ãõ½`ûãlt7üÆ{ËRÔ$ŸmÜ„{äÔU1„Üå²*íEq²ÅaéòZÿ„ˆœ{{d׋9A@,üÁ1ª€yˆ(eáÚ#r·c‡×/š¬ºCÅ…’9¾½ þ7ÈÔTøU]8ofF=°E1IaÛS U” ?Õ"aŽh¦ãð½Ó‡,¿-- )ªè½þU ÷ÍŠtÊ0l5 ÷Fì­%“+rÊK©;DÞÎÖp¾+P0T®ÁY½Ú´l¿$ücD@c¡§AQUp¹EXÝêj¼šuR³KÉ7xÈàÙåƒÆB6Z×Rß!㸤sSÕáq9+ÞGˆ (Bu æŽp¸±oJA 2nMC@çøŸ!Ê‘ÍkÔÒL wÁI5y® j±-çº.úñÑÅ­Û·D¦“LÝÞå[ê…gÜGÚPCêˆñ++O0ùåK;S—°ÓÌöL¦´d†±è‹ªCï.æn'Æ—Üødø<ˆ¿Õ`«|U5!‘ŽíŠNÕ¹j¤‡²vìàˆ²jeÿ‚wá‘ì‘vÿxï¡Àx™€„f#P£gû˜é{|]_'ãÄXÓòá>çдD<¦;Ε0§gNì>žöÔlÀKV8$ 8°ÉcR)1,^Ò$®¤4AŒ oÇø C¯y0ßz›ŠBºŠ‰SÛ K¤ë[íx/•I%x] Vê³-Ì ùÍà®CذNüƒǬ‘sUM>,âÞM‚Âçm©Ý2É[eÛÕM\Ê´ï•ûúG! °ÙKÖj•W| ƒË”;8•ºÄ85›M¡Ô£1jçmÔGnxˆÑöD8<5©‡¹¡kÞÅ=R !°ûjNG¦´çàöç ÈÚ%(Ž57¤E„ï«°`ÕØsYè-`d{=‡FÊ,K  ~~Èïtr£ä{;Š¡l<ñá¼?F²îIÃia¥ðÒ£ ypwǧI¸3æNëR¤7â®Íoàöbul–ÐFxT>MjŠË­œ‡ÞákÉh$ÓxYùTË«FŸÅ„XtöYìhGÉ·"gS0ÞJV2À—ä1ÂŒ±›õñ®“/?Úgàd`ô"LݹŠ"]j¸0sOÕ4=—¡4)ú>˽=kh¿sˆÂP2»ŸF–²p»Q~ïõ&“=³ú½©ÿó…«2žg÷m¾_XʼnÏÏw)¶ž¤†$ÆK›ëã€BËFù¥è@_Êb"ñÞ2Ãt…ìq Äb=ëUôÝ{Áq ¸°rfJ€0ŽÄë6]Ø4±7s}3ˆ/7õy%ø‰àÚ£ø›‚М|ر˜ãà‡à7Ö4'Ø›óM²|îCCi„1Ÿù‚\âüb&(Ò~+å)>z <û_°÷uT«Û@“½¬&½ÀЯüþŒŸË&rÑÆºdA~‡OG2ƒ†_em˜r-·-]?cicže÷VMµ"$Eìždã…ò-2„óx”Bø'm»ØXô6ÍŒJ¥š‰;Œ~˼6|7c­Æ‰™`=ΰ‰9ý³z ì¥W÷­Ï7”ËL¡oõZ»qžÂF!oÇ6Wi— 1í2ãù+k–úG]Ï/ľp´µöºðÈFмQ)jþñ´í/l„¤~Ñ3;2þ$g@~k,/B„RüY•i‰˜-61[<…š  ÜüâÍ*2ÃÎå¨ÓðîøI\£¤Ù›¿l. ôMw; Zµ‚´ø0б¡ÆéÞ+Ë‚‡CF;“Wå£Þsë?vQ­áÅ'Oš`EiÉàAÂT†‘®õyHÁtË—’HñäN„v²­2-ßÅ€^g#Üp˜!3Ú, Q6_X¡¡œ¬÷ÐÀŽáK³öuÜ]å|yΑšÕ«—è"¾Ê)ï>ü`æqzCK!P;+²—‡ø5HŸçÓæº—Xvy÷UçñÒ]îMòØKøgìèÄ:p0(ÝÚòQÙ'%´³ß¤ÝÆünôºÝ-ðe¢ç)ÚùÑvg\'`ø'ƽ¬qc§i–“âØü´ˆ9Íœ™¼gþxf@Y6-­Â,,É•]ä;šmÛvS…Oe`ä½Ü X‰ÎÖu#ß½G#ùÈqÎàâtO¢o ¶eÇð ?TôZ¢)¤·s€ƒþkíŠuç‘h>qX#øP‡P\vgM™Wqï{ï¬B¡zRðñY5VAŽÃ_½ ¥ÞÄV«Ÿ3'ê'ásúà>P²W¡¤³!âRe­¼%ÂàGθñ•¡€í¡*t¢O»ÎV ¶Ò¸ô)S”›Ä$ÑrÈ×]hþþA·¨®ì¡dà¤ó÷ÉB¶ ýŽ­HÏ/Úxf¡ªw榡|±³Â˜1FFK|!ªË‚%±¿*ßváÅ¿Ѹ5#Od¡&¤¯øÑê%œ Ã™Œœ:Õ4§Ûþâæ4¼ ÎêëÕøÕ6åM¯m»°Æ—Ȇl,žêHîâšÐwi ³Ì'—õæ‹EGéÚ¼4ƒá¸ªcƒà}ÒÙ+«k•E…«Q©!Säps‡2NE¶º0²ø3ŠîÔM¸Uå8ÒDaÙ“»+'5õòàÛ”ß<Ðê†9ý‚¦É˜u«Þš€M4fBÓlG༠—>ƒŸÝï[öU2f¬Ä&«Õ{=ö'Â>)=Ká§ÚþðT*EÀ_è÷ÿÆ )ͶºZ.R É×’þ’ÖëU­“²­p€œnÆi±ti•ù ·s/íùÒSr¹x§ÁßÏ»à4 rºúÅH)~s«òœð1;r󨶰Xñ& å ³ìwÐ’.ô8„1h³Ä)Ró†:ÙÊïÚ¦.¡/¤Ç›m:wPp”K©ŽõÅ'^?hÒ½²ÙV§+è¹£JL)æEâ1hFy{ßO½dtMÈ–@±f³8y™  ^rE£@–ÛŠamÍ­ƒïôNa%8þh<¶Nù‹ÿ>3,~Nn¹ÓÛ×Ïš¦aÐè@˜9ôàWƒg‡2•q0FÎ÷~\qEÈv,‡€HS¬Ø§3p¶âƒ=*(ñj¡¯‘ò.Ÿ&]Nlæ"WDôsUˆrs¡dÒ Ȥ\È‘Ð&Õ¢|7ºÔJƒ 4VÃ]‰ô=,êw›ä`Rn…7 ´™‘ôŽ&Öñ[4š}‰Žá¬~å’â¶Ø¼oï€Uá¬B»(.#ùZKǤ'øT¶l46އ¹‚L˜§õx4²iY+|—.³8Km³¥ ‰d¾2öã6%Æ…¡7šèíd·HCÔF¥ó8QÜÑuàè÷Ýh_¶vbƒuÃÔBK)`[Ç’4/k‰4‹•`2¡É•} i2å((BEõ¿ÍŸjÞ—Ѷ€¸ädxLß°…‘LÎm/ðøí·8öõæà’_òý"è¥ ¶‡œ%7—i™;‚ i Õ\6ƒ˜ÄÇ–¥‹déÍ~IĹ…|XðÆ Ëúü¼Ë*PÏõ­;¶7'4Þ¾ Ñbyj“XTªG’å]´†œÄtˆ‹ƒ/M¡Ñ¼y“×9J%b˜Öv"«DñoLî"ƒežTD½«ëô$UB%5£çíi¬{!WÆè—RøÂ÷ªÇ=£Ý1üXÕO5‚À¶ê–¢ÁöKÛ{Z.ÂÓ;“áòÆÐNL·?‚MÖðí=ì²×«ûÈûòKá* B£§ÍŽÆÜÓÚTÁê+do2Ì ±~4Vˆ”ÏøZ/jd ¯…µôßÚÐ##ôÞž“ËÝ@\¿ƒJa•½7wiÙÞ>ña$(ÃÄ—}dêùÀî&Eü[pC]j¸Ù°e1Ö¬ž¿Ä…a\¬‚æP¼®˜®¼Š„.Ú‰væ(éå×áFe°©ßΗ°Jö0×vK†z6º:m_Æô¿ÊÔš±:Éÿtfþa?SÏtŠÞlqÛA8¯7UV±üÔa‹Æ`Y_ßÉCèvnÊ$ïBcâE”pÍÜée—lìì:^©Í¿Ù·k±¶'¾6WüÙ[_þç©AñJD]¤„ØÛo¬G-Œ4Òæ^>œ ÖwxÔÆËRñô‹~¢!Z“F+Ëþ\ääB|gñŽ%é oÅá;WL>”ñ¸œ•Ê®Gfõ™Ïya”ôÝ&CcLÔNHãÍ;FÂcð1›t–Ì/Æ÷­,TèÛ±—ÜÙÉËиÍ&”uµÝta Q ‰:+ï“âÙ¡6JQ“hr‚žçEúeô lÅVT‘%ÎYÊšJeô k]FZœ²Üi_A}1vâ´_¬«Ö,ŽÒ ÉòO©á©zjïÝ™ÜÞ—™Hã†áìƒMµïÁåÕ×R:p$p—4Ó¨X®$|À,¢?áàòµÓ­Ó¾—ª4Ÿ'Ét­–ßZ Ðž $)¿P ŒÍZF:ƒ³±x%dÜȸ™õíºb|…Ö’Š.E¸?À$ðølë0Lé5æË嫌g}AÓ¨è`w¾ Šû1Ñý¾`ó"¹i9¤6é«úVò›z7忇*•‘#ž"(“±Ýz~[IŸÊ«ë8É‹éê2[/{QÅ<)þè†N~1 ·K6$ ÁøL€ŒYöR& ñn†ë€ß÷Iâ©^ó³Íukï3—ïºþ…L0³ÔÏéZ»ôȉɖ“`Y áC®[ò6£ÔCêOˉ¡Þ¤–ÂÄ~•!ˆUÇ_ƒ b_*µœo‡]…‘­ìÎipj?9/MÌÐ*ÒI:S]Ìíz=Ò'®Ùé™÷>æÕ¤|­’LL9{Þ¢t&9£ïnÅ{Ï'ïºÉ·íèJÙhq§øV þšzPöQ¯êkùù©F~éeç9,ÐðÄõØb²ÝT:@gC“¿ÂÌk¥¶‰‹%GîGÛU¯"Ï\ÎnÊ}©øÐºaVd3&”ÇÒÊM©ŠÀ­Û!ôðÞœ/¹ŸGäa$™­ÑçԜڀ/ålÍl@Ïç°÷¤¸}5ƒÄNž•õ¤µ°Ì_aÊd‡Àæpzû·½¿×9-0‰¯öÚÞ0fý€Œ—óüê ÚÖQ& ¤3Î-Sá9ÑÎÁMâžú *)¼—7lª…‹V‹UNW:g¯jž›€õ]ú&0ÌÖ—Ü_ôNµYÇ!šgUÝþf žç¼aЋ×üR':éÆöãÉl­¾ly{¤³CË»SÌ™ïã{”Y©«‘kÆrùh—ŒãÓ1lô„kDgÊstW7J‹¸ßzÝûmm\Œ!YCc±*/Ó@èç¨ Zß+¡Æ4Ù*I‘ÎX`Ð"ÔtC:å6Áu`Z%¯á­S\Ñ’·'xÆGaÔ™×#\Ńl0;%*6È›)ÁÛ]®”Z䇵lmàã+ikPÛ^oTx‡Œ;Õ]Iå÷â Åløœß¢•”¬19Z†#ŠCD§GP²#.ª"û-Ÿ¹-ºdI XÑ>¡(TNK""n#BÞÊA™¾Iûh¤S×'é®ô?Ô1úd¾ Ìy¹]8ÈU°´(ïþ”/ÞcW‡gøþˆP6í3#‘õúbÌrÞj´â}lׄ®‘°ãù¡fëø#{]§<Ó‡«¼×Bnú«1u¤hšz<Â/ ‘>ÿ+WCëïì3´¬»€aÝ©Pxþ+íÊHX©¦Í ݺZï—mç?#¸Þ<ý i¨endstream endobj 269 0 obj << /Filter /FlateDecode /Length1 1787 /Length2 11248 /Length3 0 /Length 12255 >> stream xÚ­˜UX]Ͳ®qO‚»Lœ@pww·àÎÄÝÝ-Xpw×\ƒwwww‚ÙÿZ{/rÖ¹=\ðVWW}õÑÍrbeZAc[C ˜­-##@XVE…‘ÀHÇÀ „@N.ì4p2·µ1pr99™‚v&6# è lkçî`njæ þüO;@Ðè`nd`5p2ZƒjX”mÌNîtA++€Ò?;J@G ƒ И‘`lnä0ššÛ Ðÿ£IÒÆÄÀþï°±³Ýÿ.¹A¢Tÿ’ùilkcå0š ÐËÙ‚ºAZþÈúïâbÎVVrÖÿ”ÿ—SÿϺµ¹•ûÿdØZÛ9;²¶Æ@›ÿNUþ[œ,ÐØÜÙú¿W% ¬ÌmL­€†‡ÌÅÌÝ€Æ æNFf'gà¿Â@ãÿÖrî_ èåD%•D%iþç¡þkQÁÀÜÆIÅÝî?UÿÉþ3¾3Ès7€È_FP"èëÒù¯f¢6F¶Ææ6¦&V6€ƒƒ;èõ+À“`nc tÝ@‚ééll@[ O¼&¶ÿ¡pM4Ë—¶mΨùp9ñ¯z`F0LBY 㼡i´8«Ú"¦«‘:¸°Ú¢zrÃô]©?"fZl[ï–:&6•[ª»ÜÁfž·à ©Gqöûe¨`'8ÕNaËÅ>(As‰6VÈ"[:BVJ30‹Þ`%ð§ËŸi5 ’)KêP<Þ¤Ç ë‘‚±’&ÚÍMÃ<Ý_*VEã¯DºäN>jzIõÆÝヷ ©½¢V1ßtŽ¡Œ'£ËÎØåõtí\Så“ï°’?bvúP°fþ!²ô<²@ Z5¢TN,„,;„Û åÈž¤&>0OuÏò%+M§ËýøÃÞ¾ýJÙ”â F!Â7òÔFETW.@úÀAl~»Ô6Õ­ ‡ÝŽe‘I8v×ý·üÃ3©û0J6¡V{)îÖ'c@;!Í„‘%ÔóâÙ‡îYk“ ë2Q*’ᣠ¾Ã£Îï”6‹Ô¾Ín]nÐËôRÞO…¶sU!vÇlòàk߇žª€Þf¿sQcÕØÆÊË" ;+È©Íu$}#*??0OCØ> ® &!ÉÂ0dNäÝ_du”ZZò@7ìB™‘šåË×RÛ¨F”Àì0‘,G?ÏNÄxha/qç¤ÛhëÜ,"tªÍ}æâÅ‚Àž'õë/ûЧƒãDTøjÙ¡OŽ0B)*Ý—<$“Xhâªt*­ë¾¢ï"¡r‘õ˜í|u á3 éªZû`¾&'«†º?Á,«œgGS¬òņØ2†aœj¡¹[5©´Ž†y‘$AŠÃž9pÚ8\êR?ÿçÀ5{z;ÍÖþ‘dY‹ó³ÞÕÍ…3 ^bJT¿òf•ÿ$?&ºr‡MrÄ•7÷ïÔ=×Êñq)Ú2µd?Á>ëuéûGüdÕ[‘GÝNO‘ …VÞž²¿àꞤŽ+˜°¼`.¡5¹,DFÂ;‰-Ìïàç–$g§Ãž0³ï#µnç»’jAõ§·.›Œáã ~[úé& ëV@&SžxNÿÌ<Aæ.FÈÓÙ E#áÎâüwË>R\úû&vß¾ÿ.r†“R‡¹‹„òùTŽ=ÜWË8¬ξa¦KXÏz1Òu¤vFü¶ÍJó|®ò°‹·Vž~'¥[× û·vžvó”&·ØÕ˜MV%¯°¸~¿»âL+‰™¯Ë”ä«F|ô¼¦}VXïX§viU¦c0,Ô5ÝÄ2SÄS'™h4²‹È*^!, =Ø|ºGâû“·'jÓœc Ëcà°ë>5–;õQ †Q@+ÚÄŠUñ2Ì–pFÌp6¤OˆiO$LCÜ ÆhcfƵeǯ[Ä…ÃˆŠ–%´üÕr#ÉÅ`I/ÉÃË,ûç©ÖÃñyôÍŽý®o#sHý0ÖZ ¸]‹g¸Û¨am\¢òK± 0gÉÇþÃtgÓkɼø¡ø,Z™ðö1Œ®Tã²?k!2lTKXŸ¢ÝÝK]¹ïR‚”Ü*£Éh L¿'û*}âàï/9႘‡‚2p¼èÆ(SÖÐy§56bæMn¾Fƒ‹n‹|ý•B‘šI¬Né³2‹;dèíAs'ƒ8»›VtÆŒ¸°ŒØÉj½Œ‰¦³1é0Ð)u¡özâ„ðH¦`J?8na-mb,{tæ&ýØù’(îËëÄ‘¯š[GŽÈÖs·`ªÚQÙzàéÑ ¡Ô³äðK±(t¿Çˆ'?A‚¼|šZ¿ÞíyKã á¹mkzHŸN;îø ¼±ÙKô‘…­—hYµsgÜR‰Ànî¤e,W?T<ý:ì`Ú…`·N Æ"º‰®@¬Ohwyu0".³{Drâ ¬ÉìëeoBŽ® œe2' 4ká¢ë'ºzG8X5Ñ*DÓ†Ÿ«Ûqûš–DÎKs•bûذüò=ðÚÃSéo”ÑõFÚ*a(ÜiбMðço¡÷ªkˆÌ+‡æÉ(I{)¿³îšÌµ*£åÄwÇðÊg+[›ÖYfq/C Ët’µTµŒapùT3äkɰå-x0[>f½”!²Y­Mk„‘'<×÷üÍ—½ëx"…:y6¯‘™ q>„·Ûy:{CŽÒaóFiÙ¤Ô›«l`ߦó½š#ô. ùáŒ"diQ«<š•0ÁÉaÎ]kf¤ÑXҜ؅Ÿ [ä^èœ×ôñv |Ô&`£À0lw::‡&ð¸©ï|ÎØ Œ.%@žOͼöDQ,÷*ÜOªVû€»¨~ƒ#iÀxSÖbðN ¶˜JöŸ¦rDÿthëÒ{¬qéα9'Ï-ûu‚“kÿ,*VšéÈ„ÖäÓˆëêGv#$’ßS„¹NݘáÞy©êìJìr=oVObC¾Rv!@ŒÒ+cùš|›²pØ*ÆùÓ[kHgSÿ9,>,&>Ô ÒÎN§f„î€A3ãCõ¯|÷MY_üP D!­*{5SHo~ñ°vI4‹ÇðN:ä„B¦kÕ0ÎÌ[ÝÞ=ˆUwƒ>>~Žè QeW"ê&•¦T}àúÎþ3wçÕÇE¢¨$E§f¢T]æì¸æƒr_³¨¾€Î­µÂÃËîš^>÷]E»ý"eظÏOè¡´¹’, vúÊ#ÛPï‰k¦ŽV/½Iïæ‹…½3¢ò¾êÌv½ÞcCø4ÅsoUÁwvÇ3ac„¢MM”—ƒOÑU[³qoèû´W¦QöÜÏvåÄ!WCnÖñ­ ·ClòB÷äBËi#xÁA¤¦>‘¢4Ö•"ß!b§Cˆ±>\j>ÞôÓÎÄ|oP@õK ×Ìÿ#k^ºÛب±êsŸÊZ±\Æ×Zq”‹{X÷{šµ»QäPDÒœÀññ7DÔ—Û±G%êã<„iEz£ïøR,T0C7T©LäøÒVbÜNúIYŽÃ2Ú:¼ä­~;(ê>q<ÉÔ—yÈQZ#µÊßW¬Àdh™Ö³¸k‘hn£)^4ËV;F˜Q,Á 9ùfáÝíCJʹ1×éä0Ü_‘Žn_ÞV%´ I"úO¤Ãø«T8æÔǵ¦Ð6Ñ´x¡N>ÛKkî‹ÂXà5p?zcé@–™¹¶DFL9[îì2Ó¹¢‘…€·4®64Àž\}¹#\Àdì«§f~Keã}4jØ©\WGÁ•RµÍq MNŒ^Ô;X F–p(ý}ˆ-ΆÞm_G&4øjE{öUã<æ(7–†µU\ét½ýõ8Ò‹r‰°-)5ž¶±±XŹ £LI%¡å;”z‰ó6Ýõ˾®Ú¦n)°×ÞŸì˧öœuw7ï"ƒ±”.2ÜFÌù±fßËà¹_aêìg6B2¼šr—t f9$Ôº:Ûd0uås i8‚ÍÔ ÂÀ ‰WÂ}}r–«7Íåp¢ß–A.¬HHÕìwD˜­ø‚‹ ¹†U5…-莢C[b>ºI8½~Õæ4‡:_.7ÒðœF&žã-¨ù_½©ép±"A¾¶Kþ¾èlR¶‚MVœÎà?}ˆâEM­ûÛ+Ÿ…•›§H­ÙÙÀ®2…IÌY‚rÝX=Ï­T,Nç¾Ê'-¦s@c‹êÄKm+È6ªPƒþê,åêΡËt+"tü(çs½†!Œ¨»láoˆW-.°eú¨T4ð•0_Ñ÷Iïüö‘çƒI[–ízy@; çÄ«Of_* †–õzžþMíZ‘Z„ñp"XTÒ¸žÓ­ê WƒW_Wÿ+?Nƒ&£IÛÊfR¶ rôtN²fÝ*]pQAñø¸xt½® !U;ÎÓ.0ðãŸÙuœ£šLõØ·t”#V—ã*S“ì—ú¿|"G’£H¡žK]8Ò`"¸ó­¿…ä¢N2b7þþ6퉚›m´u›b“ÊÎGëÄ¶Ú Aú|ÔºB™0×­Â#±¨ª§ýk%·º íˆœº‚ªàU”ÆÁYaÖì„7]=ô»¬†µ!Ïùí9ï“)Œ¦°”1Ü‘nùdY ÝÀ¼/×wÚ¥X¯ÊÛˆòä4Ç Õj¢<48ŠCøåXϪ’²è“uñÕÂôï=ˆå°|ÕýÁ_ÄÔ°½ 5j¸ 4Xui>ÏÓ™?7zåÆM “ ¶žG¾aXó1ÑÏ_©.4ÈéuiÇá! ÷,#GB Y7à”RÈHWDzna“âE*¬â1¯ÁÓµ àøÕñÅΜv gyY¦Ö I„æl=žÝÒÄ ¼’÷QüÆì$}?ÿ"@ªIÃêçh3ö1M“'=ÿΨ>ócÆÞr1„lÉr&¡p]yKÀì¤êìøÇÏš–¸õÛÅÔ^[hˆõ#\ëë5®y"œèQÉ% GÝ”l‡ÍìZ„ºè4äæ?{MÔB”§’0~ø2ÄÙÎyû,VcÔõÕ «©nÖ[^|w±nt‰Õv‡ðe`RÄoÕsÆ^ÏÚc„+Ÿ¬bÉ¡k‘̪øãDÕieò)ìüG3ïÖÂ`®ŽoÉ7šw¤ãdç^bØ©=­Ößà•: gsÚ*mðᬰ®2˜ÃûÌè¨8á²hТÀt,^Kru¥à b¿Ö×ú.ÛagÄæŒa˜OšÏ=îo” ¬SN] ®õÝØñµ¨máÈš#+qÐõé9½Úô˜VéÉLc•å‹üSruþšúˆ]lOÆ-€¯õìë? k² )ò$  $™®nõEa®>ÎÙƒyé¸W*Í¤Í Ûk5«#v& ß<©äA)i…8Mó_ÆTjN3 uóëÛ%±Å^j<^ _»<e®aTúŒ4ç4ylˆþKx^Ó åeưýÆÛZ—¶¾ˆˆ²ìÍýˆ‘§ˆŸK`™ÔÜnì눗–ÍÛŽ¢1v°t‚­³µ—ªÍHI –2Óv ?”Í‚[ ØỄÇo€K†JMñPÖß W\Û÷’j’Œ5 -Ÿ îŠÕk!¹þ&È0jXQà[.Õz–9–Bóñ›¨¦üO\ÎQ0xVrªjŽSÔßEÊúéåÓ¦açÏ—¥Ÿž`ü•ì¨ nq,ÝCîGéëzûØùmÃ+;sóÅvUsIqw'±;¤u¶±aš× u"(ˆ½uéšED¼Š0l¡ú¤{Oï>¢BÒÛÞöQ@‹\Éô'êâF—‡cVÄd¥'ÆÖŠc1ÓFB!¥:]Zô2ª¼3˜çÑ“†½¬Í¬¹ºÁ>GÌÈ?)¹ùDp­+¤HTú(jä7 ` Ë:KÝt¦‡Má*[¤&fÀ{ºãk/„*§×B+Eáy)ë]ëÍç=a&fäçQ³Å±H¼ž"/În|ñMư*Sí’Vn[„ÐDqÖVÍü‚zɱJ\±H1µÙzO'ŒÝ ý»™-X¤:>Ž^7ºF³)§¦4‰mÊT4çÒéäŸw¬ BºaluNÜSêè’«ºdü£ÆC–~íGÎvüÙf.±ŸHZÕº ì4Á:Ujö‰lÝÇÄ«pÒîšá1q&üS¸OåD.9o{Sa’ÈxóOŽóÂFrèàÀÓp§ÌE0qvÔ^-îžµ`ÅŽEƒ·ý1…nà镼|W… ™ {ÖW-U0l]ÁÇ“xÍÏH*4íB²«¨£Òg$¤¤O£®ãñj]Ì€-yø…UÅJ‹\Ô‚î8M!¶3cҼ燛ücZ‚ËIQYÁ¨Ü®ü"¿„¾ÓX©&§ Í• ¬qÑÉF'Íôï^‚ÇánüöˆUÁ¶ëVÒþS J&0K2ß¿Oà´{,ª‰÷ÓÙlnÀC@GsoQÚVºëÏ mÝ(E–Æ8 ­ÌiäêŸÊ4èÚ:µZªÒÌcêJ¯£0ò̵å¡í?W£ÕQœ´6?FÕ¦W£‹o,–ò…M¥Í(”.JåêJWîpùÍÕ^UØI(lzÝšê((ÄN¸ÞÚ±€Vi­o ð2(T¾$yYˆ1ã{sÜûQËô³\ÖYJeG£äRnà-wöˆí°DÛ¹v•øÁœy½´98Zð8%«VcØ¿Ñþ(ë10ûglâíü,»ê5½ôŸ*°„;/OkHÊQª`”Ì$ôcâ=5ÐL,#äÏUþñƒ^ÇÂi3ܧ€ÕX•Ëqæn7µ­Pó-R>­´ž´-?F8.IœÎ’u_x «¥|‰®•ðã1 8)\ƽ§é’(aØkké~‚èÌ/¾Ô®{¯HËÈ]3°Áí\Úñšø·Œ0¡V¶»+I(¿Ø[‰Ÿ4Vx©Uf(yC:ióxhþsƒˆJùÌÑæžU|!©(£¾J¢¼ÜÅ?&µCkêéåZý.½ŠŒÔÞ2r£ÌPžØ³Ê «´µÄÝ0 íûþ¸á›+¡- €y¥æß8Áñœã%StòÄ*É^—v\Œ9 ²ÔW—¨ƒ—ßÍä#«ëDav}|<Çòfhœ«Í̽ºâ†?ͬfÕ9#†oµþ»«s½í1AªCõ£E_õI6Q½¤Lò×è_ókšÕB±"„&üõ"Yܽ£»ô?n2µl‹HÖ¢YžÖ«O¾Ïôe-ú0WÍ™Œ·"ì5=%¦0¨T ^‹°[»äIX Æ×r‘K©å½˜\Š¡™Öèñ«!•Õ¯ùô¬ýéc,Ùí£ ‚Ôƒ(Z;7•oFɳ h;£K ¨Ñ²«ºob7Ë?Œ¢Ûd,¬£Ö3¿¨|Vû2×±WÀ©ÔZª¯—¢–ÙèI²É«sªþq”EÖ‹4:=ˆEJ ì!É— ·Óö„K&1ìY:U2¥Pc(3Ÿ† ÆÛäš,hC˜,ØT¬¿åßw·`·¹×½ùÑžÈ×ê ²)w+憵ŽT·üÜ6Y†åÆ~Î㊔ôÿµç“äÅÎZ­¼,;â¬p_ƒÙ^©Ž·xP•"®V”#« …L,¨Ç ñ¢´Ä¨JûõLâXÏý6 =Žq¨髺òÚ‹Ë!â"XÈi*¡K³•db±Õ›ºø12 F!6ØV†­,Ï÷¨±rLrÓ†g ZkÄ…pnÃc5î;;Ä9E°’¶¡ ÅÿªDö(2É °Ö5ÜVö4+ÈÒ|ñ”¦£=DÈîiH|ì“LwDCýÑÓ¼³àÃwT R“Ø,•V À&³¿bà„¼Ï(Ñ_´ìN‚åèVï?fÙø„*º·x®.ß!•‰¯l/ÑΊŽÎ/ÖYôwºA§.Éån@OãÔºœLqfn!‘2øŽKÝJrö'Ñ]íëÎ’2F#…pPnŸÉ`÷…•híí†FÔ&=1fܧüî>Dý^–ƒ’K¿Pz ­LÓ°BkR-×2jLÙ§‚š/Œ±q>þ"G4æ¸ß;qðmŒ¨±DRêçÉÇÙê%Šh¬[]ûü­—NL Qa/Fõ»ùlH§RÑôÁÒ†ùIRn²+›Mü§òL‹Ç9}ú>ÌCÄß¼#ÓpÖÕò4*xAD$±™¦%ì÷×F!íÌ"ÙKy-q¾‡Òu½•)ôvá²VÔ¢êö / Ãó¬Ó”®—^ùýSd̽UÜbÖ†¹ÞŽb_!ù1bñ¾Í›÷+Äù1 >Ò’³Yê˳$©fvShtÀDð‡Ëüz–HRÇOÖò”gB}Q¼*f Sÿâ¿GÐŽ0‰š'¥Í¿Ãœ*ßÎ/;iÅI¬û¶Ð³i¤[ÔÓrµÊ£Ö‡'̦¶;Û·~¢:¡ûõjŒ†LB›|Û5¢Y@Hÿ¢äþòHa•Òøâd( evå%fÅíúIÊCû 'ðVIýrÛF|Äã_¿×_¦®oóÒ ×‡Æh´YKH# Oe,i•Q¹¸·|&¯‘Š×s5‚žéÎl-W–ÞM—ôª& Šães1m‰-+â]uWÏ Pò(çÌÑëN&˜îyVá^ŸøBý:¦K錉†1†K5J  4»‚ =„Àsüà‹qØ“ÍDeÊIˆ:Ïìø ¾àÙèÅð,÷{â6YÑ_Ðx&Rf¹›cLÃV–=¾8TÔ¿gÔÂb×ú¶(‘‘n³VTM"ú¥´Y·pžKq¸©ÒŠó¬{ᄚûõ¬~‚PüU@õNÃdNÖ®y,™–ö½ÈÊ­Ëù]?ÝG³Ù…jèžíÈÓ«Þ>þú?ÿ?€X¶üÆH<û¸H%¦Yñ/×òéîMœÊ¤íE‹GË—“|›Ðñ.ÔJ:¤t¤ÂíÓà"4JÂŽÐFvºˆóˆgx1!ž_x¿„(xqP _1”@ÂPÝÞyÓ:x)=÷õG§oTaãLSõä4VŒ¥ž„u {%Á°¡g`%p¢û °f½ú$‘ÛAçu+Ö6(‡8pÛ0xÉ>ðûI ÜœQšÝ/$j?ªd¹¾¹y>Q€>˜óQaÍÕÖÈËbÊ05ÈÛ· >À16¸¥@|^Tmë<ËÂj¾§\Ât§œ¬*]áz»ø®Þ@}ñ¼Y_=hŽþ§¥$ôѳç"ÿÒy\¬èhÉJ$O˜fâux¼{åžl}Òð̨/Øs¥bßÔÜ}VC‚%±V‡¢)ÕšíµN9,¹ ´æhg‘Þ¡S?%N?á¤è´­e}8½&Ÿžà\p \zªÃ?õ‰¯ r’1“™TFânš~MÚ+T1Ó?-¦ÓH{ب|Iæ—d@qš:ÉîàÛ8õûíL!3>=móÙ~YÆÌ#œ…þ×-”9‹(Þñ2O’VŒ‰eë°¥"Œ(Õ‚iN«[9gdº g~ô6–„¦°×'{ˆ3ê;õ*(ãû»ÕÍÅÃ(ÔMEë⨠ëiºy8êš ¶Š us(?û™"ûºžG!&WQ¼ GÒ<ÚÍôQè §,, ­KÔ§†§Näî¥_–§%ŠO9!«UvCåƒO,8eÛˆÏyÜm8®$ðxž"ÁÐàûkq[”n´³¦)‚Mˆ §D]ƒ£#fµ9ÆÙ”D0PºûXŒf@B5ê¨ó3¿ðDž‰D2æ>oLiÊ7ì—ëwÏyø8Å­?êY?ùË<ôôüÕ×ðYŠçÅ{D‡’6¤6æÀ­Ûç#ÔÔﲌÏu°®6¶ŸcߢÄË%àzX¬ƒßVvÁצÌÚXUÎÚÜIbÝ}/ƒUSe­Œ¼LGŽh®vnz¹M÷ù°µ3 ­ò4.|ã¹!ŸK GÃ|f½‰GþZ!ŽØâ ˆåoxï,°2p¶£*Xè ÆG9Þ÷÷° 5É\ï¦Ã$!Ãÿ¹GM÷Q ûÔ{ ,©}±Z‰X6®UÒ÷l†Ê AML¡¸Q%›ÿøQ—·Œá—X‘„Ê/Sòƒc–”8Ù£¼Ë•ÙÏÞk=6æ Í¡ XÍŠÔ%õ‡ Œü#V'âôV‘©~"¦Â”×›Ui­Çp8_µ@(i¶Zª2dÅ_^¸Åð»- ×(OY„ÂöA&Ï\ý“­0H³°·v¥à|:ÎM^¿¼ëH(È ÆaŠ#îVj«Åÿ€ ò÷TV¢le‰`ÎVcƯ†UÄÀµ[ñ tbÒ^x™žòQáü1I€°/ …{SŽWúMºÎHúŽ*ÏØìúBÑÇ·Bµ'ª©Zü¤0#“Ÿ»³‚>,PCÝmƒá—>{eâÍÏò1ˆk·„ïÅZÚúúLÄŸIs˜LÚ¡Þñ£4Diâ¶EitŽ£2åúŠ–HcûØŠŸ€ŸF=9NKÖHUñxƒëƒŒOÅÌÞdÂl7¾2$_ËE”¸ÅÜÐx‡JÆùé­¥ú³ÍS¸sxnL$׷蔥ëÿúGVò-=â¹´6ˆ4,$î5‚œþΪq¸Bwò`&&ó[¾’‚s«þ76ÕÜrÏkGˆOiÂ]ÜS~OÙuì)›8Uy£0Ì—HùÏVžÊä*-]ÒÝëÕ“ä= "ßég >êâ¿pÒå\rb¨a;D³þÔ„"ðk¤x¹@%/~†ºËÀz£ÒrNWÑmÅöú`°lë[hl“÷G„ž•7‹²@1tÎOŽŽw¹|Jfæ+ï¤á1Å‚Q2˜éØî¶ºí\ðÖñ˜îÛ·†ÒEÙ‹Âg¡©­(M5ìµÕ$²oûŒ¯æŸÄíà3ã)”qE TzfH‰ŽñÑÃw#xu½½"à×ñ.¾»êOtSo&+CéòAè1Òv« ·z…ô£§Y¦àlDw±Ó,Hèï'ÚCÊm°ŒL{Kà ¶+6%ŽöÒ÷¦¹qâhu©~V‚Û´Ôš+³J³ì }ÐeyR?=jÊW­{ÐYÎÙ5¼DŸXoÅ'ºôf‚ؘÛÄCA‡Zì¿Ó®ƒ[‰€çÄŠóÖD”¾½™Ñã“ÂzÖPmãYrPòüÓ¼_²iˆiýêa–ä‘fIœïp_f»íBoš ‚Ì¥å¦ûyþ]- ©ÄÜ%8Yü+–£Ft?&¤¸ ˜í™ÐM°ž}£YÙ:b1ËTޤú nmlB”=±ŒÎ0Æ'@ë²û¸û_§ý¤ÐY"u…Øi¨úœ`#c°Ì—"öÒ…tŠÊ "V½µéåã;la Z¼oñÒý»:½©0m늙ÝjÞš~£]¯ŸÊœöX–§‰HN¤Yä”À=œä µ¤çÞbºœ)WFoPb0­òÓ¨××ÄØ\t±œ=#±¡#ÚðVüêä`õšä˜ÚYµÁ¬(âXNœ_M´p%úf6÷‡}ˆd‹ :6ôfœnÿ°™oHn§è†ícß‚ãoÓå0s0S«’{µéEr´&@ƒ-wôð°éì*NãU%jæwI=jðQ캉é…mž† `«-bøP3ÝCä\)®ð…("‚LmÖÒÉÇ 6ò†(Aa›™9·Lòù%—K½Os)°ó€¡4;ËñÎÄÂ3¬@/Û“ˆmiLø"-ß,^è¬0,ŒS4$…=:‡Çfî¾?}ç» ©'ÛáiLV½*(`æb¢¯|úe³í†÷ÀWÐx–<Ë:!qUúÃ’IÇþÆî”óehw‘í•Õ®}Dc!T(U>zž¨Es· ¤3ØO¼þb³s¶bXFl-LU´°#T¿áOùµÚWœu÷Ž!e)þµ†Åû’ÑrƒÔ±ë;ÇÞMK36É^?Ò©Ê4l#¨ú²ÙÎm.ÀV¾WÍh¾)¿n§îµ÷|¤×¼w7lX<{h4­îQ>†¼^˜‚‹ÄYèºÛ<øzÊ`¸I ’(+[† ´îÐêFŽ·„7Þ¡ÔÖsr«TLzî<Ë ¥B½SÕrTW]æyY¯ ɼ¾mýRsÍs²³jÂh-1ЦðUvUç ?$?§( w”£*:¦]!h _vcŒ…î¥=ÈϯœÕ@wÂ+5ÅQ›Â$ȧ.ã‡ÅpŸ~f3FËeŒÐ¡%Ñ#DjÙ¬Ãs,ø“Ý–áe˜³cBáNýÉ›ê4…¾ƒ´©¢çÁ»<ÖX’ pRÚHŸ<­Î$¶\ÜéEE×êëoT£Ùƒ”ø›CËgÈÜu¯ñ¸e±‚ƒДÙÆÃ¿<x»û~E“~©M/M#ÍÐÉ ±.ýVQJÎŽ­¸—=¥Æ€Ë‘̪Oîì0ʲÎBïºúÖ>}®eg:^2[±­P?uZ¯#¢¶Mé¤~D"\%X¬ƒÒ¸wM\TͳÁ;¶tìÚ,Ólý9aèm/5†ásx‘«æÛL)…fÞ4*A̽HèDÝ>ã,´nÙêgxœŽ-é^âÚñ”åÆY¸•9à éw!¸å€ÚÞ–' Ú‹j'°¨ –ÛŒf»_´]ðt4·,|1[døä½dÚ›s(üHŽ–ýÆØ”´(‰{Õ$ב[Å:ÔHàÍ,q†TÌôã¼^ýŠ'ÄÔß!t¼‰´qxF%ð®ñ×FD!ý2&pR6õRÌÆ–:t`õºíb¶ò×s0|u x–NºzÝÓ¶/SýœV.zê:oÑlÝ…#®^{Ñ‘Nc7P÷n®’pß–Š¡¸OŸósݾ¨Àás^ÁI'ç{.ÿ§}5+{½îu®\,Ž k¶P)nhüsÆv}ç—J Ç‘uøÔä-T'iŠÆ®ï{=­úZzYÑ7ªLöJÆ[è`º äHÅÕê¶5íçt™.Ûg“ÛÕ\Ì@ì5h¡_¢áÄ,˜`”|„ª @WhhuMXëŒG'§`å üfÌqMp£¹?ú˜Y¢½SŸÑËXôUº+.¯6 mÆ-µ˜\ùãqö7p.„ÿ¦ýendstream endobj 270 0 obj << /Type /ObjStm /Length 1521 /Filter /FlateDecode /N 81 /First 709 >> stream xœ¥XMoÜ6½÷WðVïÁ´ø-A#mÚ"iâÆ>ô9(±àØ•+m>þ}ÞPÒ.%kµŠ{°E gÞR\r¤,aÒI¦ Š ¡ñÔLH§aÂQ·eRÓ»cÒÒ{Ê”Pxz¦àÓ„i‰¾T0MØT2›H<³Rà©™õôn˜KéiY*R<óa|ÊD"á0õh ºô 1%/@…bc¼ Òƒ¤éÁR(=hMË„M¨áˆ8˜xxvŠ𜂋JàÙk<{˜1M´D DB0’,ˆ'ŒA.„§dJ8T†¢0@*A…ô(É^•€gM±(Yªe×Hóq†g+LÉ5†gë L)WËs€C2I… YTh(JFIÊ2¦$åÙR’X*ê"–˜UL.á"§Ð¤9¥èŠFRtïJ‡øÃÌ(ïš´ÓŸN© # *bi,ùÎR5<[¯“¦(Å®õ¥ŽR“’âíÆ2-4YÓ”QÄa:ÄÂ"Ð U¬¶”À;æ_þôì»ú…]Üæ›¢*yÂÿ(›]u¿o_ÅŠ]ݲ«ßª»Š=À×H'­ûwìêMþµ =¼Ýd»¼lÃð~W4ëœ]ÄþVädhüíç|÷¹È¿œ ®ÁÓéà7»üsø4c*½ç–ÆámLAò»O9»©¾äë5ûµnŠMÖT»St\L'³tÌ€ÎT”–ÚdϘ¦âï²ò¾Ú°yYW»¢|8A‹?„}QíÁéR³«—Å®nÂÖ:^gôæU¬«xNI:P2&Òªxd=(ب;+îU¶]gååŸy‘ïØ_û¬lŠu^³¬f×»‡MQÖ\NëNÝ€ða*:Šgƒ´œÏÃ&E~Síš²úösÝéÍïÃÙ»üa—×5 Ñr:¡É&!™ÖÔNB?}ÂeÐ þáQ“ú%“¯ëª¼¼ÎÖyùC“è‚Õ¬`7|6d«ðqðxƒÑü¶Úäìm™_ÖÙf‹a×õ·Í¶©šâc}b¯ñf0~n}¡3ÁZ]s€1wïçeß›ý:kB¾nó]±ÃS¢ÒHyfDõûf'ê),ZµO9Nƒå/ªòãz_Ÿü1§£Üœ?sôÖ’ŒÞ»Ðÿ±.=/‹†½0üýÏ¿8Éâì"¹6Ž•{üÚ½qZ €Î8îqz 4öi@›Jžˆ) è[κ#ôÜ%Sr„_JsŒ4Òqœ| q`䉙ò)“¥ŠÆH­·“Ñ¥XªHÊd)RÉ¥H=ʼK¸Å]c iFYò\N•M‡Ò¥åZOM&ã#—–ã¢2ì´ú5' Ç~2ô‘GÀFÓ Èp9¹š”7 ó4Fª4årR”N–~qZ< )”à†./Bs;ÉÜÆpÅÅõÚ)Ì×ô±tj)ãô®qõÒ6ᔞ³pDZ …eã§Y§1Zñ”îá&áÞNMµŽ¿ÜÐñy¹9¸H‹\ú™ ôÍ#ÕbŸ#¤Åô9Ü'¶-í–n…‹öööfã›þÞ.6‡ì»oÛœ]½Ý7ë¢Ä°ûºØMPÛì!ç"]u-‰s~ÀÞd›|ØM5rØYü*ŽŒ£šGdHV¡HYÄ*T" R­ã÷'¸IÕsÓÔ¨—j ‘O½ E…ÈbV¡¨Yì*TŽr“Ä ÉKâg™"¶«¶U]ôuƒGü(´ˆCSd¡#ƒ[…’ÎÑ@É1ʵè%ãQ5çÅþPÔ¡m‡ #®B€Þæ3Ú(I"Ú(OBm$ZŽl¤[Úsd‘Œ‹&û°ÎÇÉŒT(j].£«P4{ÜAB„™èjüDIêö”#*— ßbäºR?tS-rVî LX¹:¶P&•‰-”Çî´p G¥·Sä>å8NoÂ2ˆÚ‚G3Õ Ž^÷„QÝÞEŵöÙJ¡ÒZ‹?±ò!áó;=²µ½endstream endobj 352 0 obj << /Subtype /XML /Type /Metadata /Length 3967 >> stream application/pdf Roger Koenker University of Illinois at Urbana-Champaign Censored Quantile Regression Redux 2009-04-30T14:31:07-05:00 LaTeX with hyperref package 2016-12-24T14:57:51-05:00 2016-12-24T14:57:51-05:00 quantile regression, censored data pdfTeX-1.40.3 False This is pdfTeX, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6 uuid:e26bf70a-42bf-5245-bdfb-e28975262bc6 uuid:57a61952-0d42-934b-8354-330c224975f2 endstream endobj 353 0 obj << /BBox [ 0.0 0.0 18.0 18.0 ] /Filter /FlateDecode /Resources << /ExtGState << /GS0 << /AIS false /BM /Normal /CA 0.6 /Type /ExtGState /ca 0.6 >> >> >> /Subtype /Form /Type /XObject /Length 294 >> stream H‰ä’MNÄ0 …¯ò.Pc§ù=ÁHH,KĆ ÐÌXp}^Ò'@‘j®ó¿öÖ×ÛŠg&ð¸b|!_âöNñ€‹ÃâøÎªr ‚hÑŒzF’äaN¢Eœ1íñ„)‹ûfRÒÔȲÿ"“è êÆÓ,y¶eog/s ›)•¼³BÅžN:‘ᄊá' ·.¾ªâ ¸¦‡nœnÖ©DýÕ½}Ûam å¯ÖŸ· U1ï˜2q™ʷ̽u°Ð,äÝKÁdR"CB+:n¤±>kCu¾ äèš%…³ñ³ÁJ—21dí¤X””fqÎmàigÿ€ & Zš=+ùÔ5VìŠûæQg!ŽÓ²AûªÿðW»Ç§!lµ¼endstream endobj 354 0 obj << /Type /ObjStm /Length 3229 /Filter /FlateDecode /N 84 /First 757 >> stream xœí[[SG~ß_ÑEª6P)ú~Ř-l‚íµ± vÅÙý0HšDh´ÒÈ—üúýÎ\@€°rì<Ä.iº[§»¿súô¹ô4Æ9&™qž)ð L;gd&áãsu/™¨{Å¢wxj¦¤¢ S TÆ[¦Œ4(8¦¬ÅXcºdQL«PˆL%Le|bZiÌ$Óš Ši«@4† †é@#ËtLTÔDŒ!j¸­©°™ú'ÐYâ W4E¤‰ X¤V‹ß#*)9ª1«XtÌêˆÁ¢gÖ"ÌzM="³Í&&fý”$s’†OŠ9­Á`ÒÌO&ˆ‹FÛÎBT\Dì™K¦À¼Ô©–¯—‰hó Z )[ R1ïŒFA3ï µæ„m¥ÅJ…‚c>)p = ÊS÷À‚‘ÔY°Àeb!ÆQ’…@ã@Ä!*h%­2,*üI°¨‰Ä±Hè¬ò,:`±*`Ù!:«"‹Áqb1ZCÄ1’ŸbIÐ@jÀ…IµaI[Ì%’Å %g02˜LžÄ¥¨©Wd)jIµja#QÒP# ~•´„ÍâY–¥@%¨žÄÜ(A÷”¦¹Á«‚R´OùºõÓXµlo3ñ ›æûå¨bâùÓ¿Øû采~Ä~1™VÙ„Y‡HöòioRŒ«rRÏ%Ùϲ–Hoñrv\}çL¼Â·jM_&^ýj0­ñRÏ+Ó>=x½ðÃÁËa~v¨ëõÙý•Ù‰èV“ëùÉw}ï±õ^Qå|ÿ1Ojã0ñ¨|U‚ðÊI?Ÿ°_Ñ‹þ¿eâa]QMå1O˜8Ê{Zuˆ\+ÒaÉt{”“ºjà ”ôíÂgÅè÷àîhTV‹í>xôt@*® môÈÔG{ËëMÅÉJ}}<Ú•¹À“÷Ú.‡¨^Ϻ€í‰ýXëÁ>Ä®][†"jÕ•aEuW†ý4]™úÚ®Bv¹ë s¡BGF;veL!Û2 ™í4 š;){/sâPîíuþ¡3‹•ìˆ'»’ ±†€«ÈU"“n8Y$g-O°ÑwXÕU!ÁâóDf½ƒ” 0Æ+@zÊ¥[ ‘çÆ=9.#ùŠÀü»Âó›à#‚DÌ9Ê+»žÃ§<…U´(i®É¹ƒµ'_î¹ÂFñÖsŠP¾$2f¼ƒÉg,iã€(ëÜÜÊPgÝ/&Ô±ck)(äêȾˆ !§µb7Ø)îlž¦}6@ÈÉ7ÏfJ’8D’ÐÛºÆAÞ/²å‡v]´’6K´Š#¶C—Ãl‚SÛá(Ÿ–³I/ŸÖ!lÝÔÈþ0;ͯiÃIq:›äÜÜJTW¹¬žÎóèµô´b0z†â/™8"ÍoáJœ8¼ "žp]:ð€­Œâ Úú œ)ö‰wþ‘ Üú°¢¯º_dÂ,ò²”]ÛbŸ²»üqí–ðí3-Ø i¹­`:.æ¶BÐ7m…‹˜öу§¯žüüóݗÿ¹RÀõ Ö] j‰èVA­šj–3üè™xZôk´r¦$±~Æö™ÚöÔÌKÉV+¨Îtí‚Åé§5çVFMüòâø7Rbêþä ¦ÞË®Ï9ÝJµoµ•ºÆÆù<“<«Šr´—U9[ßÛÒÈ¥Ó((½Ñ`qÖP9(û7‚×þ¬—%ƒwç”H¼*ªaN &ÙxPô¦ìŬϪëŠòßl|²WŒN30-žgg´ÈŸN¨®ñ8¾Ë«¢—1ñã¨Wö1\õ×¼·C~:Mšò|hÙhw4-.öŠ““Â&ÙþZ'‡gÅh6E"ËÄÿfe•ó“ŠÎ>˜è—ÀtZ0q:ÉÞaš¬7ƒE¯˜ôfg'ÃüU1ì£é,ëMÊÇ“œÑ3ëõhEE¿ÀlÓráØãýü„‰I ¤³¹öÁltšMfgÃl†Žåi9ÊaøzY=òtœõrR•†ãs†Zç¯y\%(VŠB¾#ÆÀ†"š¢j¯¸¾[Ì·*"­)ËR爬㊙îŽè«D|F'®$ù—ÈU}ä/¨JÉ“LßQ@|Ì¥Cd%¼>ŒÛRˆ¾¦Oý#Í [¯ÑFœ±8cë5ÚÐ—Ž ¯¹×6:]ÉhÇöå%ýlµÜLIìL,Œ9bLÄôÈfƒ£: ïtL²2¤àx4éRJMŽ'Hm<~;Ó±87Îr‰üU#—ζ·t Ø-ü¶xn' ðD̓Žx’ä*, èË$­¾Ñbl7Ò‚8µMïVÚHéÆ8õß%è³àí<´¿&’ÔÚž¤ˆÄ}‘Ø¥B×$îsá<á_5 Léï€ðváâí1¿%î¢ùÈiÛÌtaºVÖnz{¶´v+«Ò­´»%ü‹j7½ ü[»—Kwªìx˜s½‚;VÊpKŽÐE¤–)pYÑû¦ÄÓÒoš<«*«¹2úEXÒJxü x°«¹¦ Áóˆù-ú½³wÃs»4ç<  ½lñ8„À±~µ¿ž?á=Ü¥læNÁÝhβ‚ÈaÉóoºpÕ¶ª›më•c7ºaPCQ-¤67³m¸h[yÐÛýÛ»]Ñ‚U‚z¥÷Zi-÷AÓ•€:7Îsã–=doð¬Ô+¹'-ìð‡¢{&ËàYN+¿„µ«*S»Ê¦}Ú ¸ä©óBtËEó_„Ý ÚSÕX¸ñÒ×aaÉå…,¤/“S} v–Š?òI‰]Joñ í¦"¸ûÃì ÞÄÕÞ¤ë+› DwpY²µ%'‚ýb˜SFØhiÎ.®ÜÆ}Reâ·;:5ª/«üìgºÙ; 1w™@üÒJÌ"ŸëösRÎ T΋3siŽy'ˆe6ɤ$[ßÀ¾Â‡»ÊÇ•+ó|lü†+?ˈQW±˜ü’n¤yfŽ>ÏŠd›NZzJw›+s¬ø«¬\¾¡¼pElú,ÞœóqXÛüçØPÝè6Aâ²þH./ÍõWƒbʦƒr6ì³0Mò¬¿õfôf”±û¬Ï6Ù›õ7o²áxQùM?VÙ›EGÊ+­‘§8§í¦tßKù=èöŒ¸8¸Bt¼ yŽ_µÔÆEi6µJ'›ÇÑæ›Ç.w›.§¾œ Ù»|2ÎûkÀÚ¿v¶ËþG†FÓûkƒªo ñþý{þÞðrr*àû“ø0¨Î†k ÑÖ‡“ì!ê5å´7ÈÏ2êf?«2áúœd[»‡O~î&ÝíMÊã¬Ú‚%”\¹†`:Î{÷×4ZôÛÙ³~1¹¿6¬&k;ÛÓq6º¨³iõq˜ß_;ÁŠmN‹?ò-…nãê^…è}úr:Ú¢ãÂ{d›&[ßÉúß½šü}­[£rr– ›¦z´¶emgñâÿó;%ïÕ_ŸTm:íl‹1>$Ó‹ðV™þZ‹Êé,´wM]˺ÞD ¿±õ—UÑûý#{^VùÆüÉ*¥&â[Ÿ”§ùdcqb^ëÕ‹q>b'Ùpš_øõöÊb¦ 9#úKŽÐÔµiêó¡K£DW§û?¥ˆ8endstream endobj 439 0 obj << /Filter /FlateDecode /Length 3099 >> stream xÚÅZ[oÛF~ϯöa—,–3ÃÛØÛ¹4Y;Me»AÑXÚV$­%Ñ•hgÿù=·eJuŠû 5÷™óï\¨d0$ƒ7/ŽÎ_|÷ºH*‰mbÕàüó@™,VZ Ьˆ­Éç׃_£q=¬‡#ctô¯¡ŠêáHÑd7C]FØ–Ú<‰.Vs¨»—:mà3oðç®?sùv- 쌓Ôsê -&ªîqã/+l®FÇ3,–·ø}§«áoçï¾{­²pë¦Ìã²°p2ڴΰӋDκ]Fiª#8n™ç<âW»žÀ×w™\Gà}À?jÜÚ´’ÖO‰)ÚÆ7xb<}¨jü²mÆipþùµô[M¹á½›,K”µ J­13·á1u®cúcž5ôlæ¸ãg½f:ªpñÒD§$®L޵Øpí^$û^ceÕ+.qÈÝŠ&åÂ&#©Ø¤ƒ‘2q«ÓÚÖ8žæ§U'"ósÓ'¦4uî·tR¡l×þRH#øúyÛ%,áVÓFÉ{ìð…ŸÁ.$“›¸WâƒQ˜.J8ƒŠK-{?ªÖ²$ÃùºZЮAeôö€Ëq} 9ï ”Býk.P\P©l‘z‰RFŸ”IÏjœðΉZñ0Ò(B6ú±£4I#7¸^âXÆäšÁó,»3¾‚ºßqɪ]S¶ÌÊFØ6›°l@ÕCí§G²èþ¿E†v„P$,B€@½â܈ê¨>I—±É¡¢íõžÄ´Œáëo}Ð6%pNê A@Äó/ñDD-Œí¦=X–óÙ¡lf~8‚ÄŽOûv¤Œu÷+È&: ˜Çyæ{ L‹Þ™tœé`""-£ì£ÑÉ.jÀ_aó-’˜ñ<Ë;™íãµAt‚ÚÆŒ}À’ØËxfUän«ç,|º©“9Q8CèxFÊÌŒ} b¿5çJ uËŠÒw) ŒFW·ß®6`y׈ªÁœI8u¨áf–ÀWDeÐßøê€îàÇÎÏò8Qª{ãÇtפfs¡€ ©n¶.Utæ˜ü~—%}ð>^JDhu=§ýrÍ;i9uTFwÚ0ËàðSnÁé$)ös}'^tá“Ë€bDáx Í÷ÃQ–ALd×m‹³4i‚g=;¦­.y j雾é¥p•ÛØª²•3o½û°wÛµãÞé’8o-Yù«!Pò ]ûT€²åV™,d;²ÖjÑ›‹ñ Ã!F$&ƒ5 AÇoÀá)»‹gIl”ÇìLpÕÚ©è{ø|'÷>‡ðyO"ãß#¸¿,ºõæDEÿ‘ë»’™b©'ÏAf£sJŸyžÊ¸ûűèÌb~ûNušÇØ:QŸ¤ÊXÙ”Ĉ~àÐE“söu†Gž^b¹‡ãæYôó–)ØB )îþ)Ñf˜%ITyOê«·â¨Ç8îí—è*‘Íeb‡‰gb#±õ‹VOòÖÂÊ…ý‰,Ý 7FT Çñø™¬¾$¸;f&bÇû߉tîq#ÞwéD‡á/ŽÆh¿wÂÈÇ$ûÍÆû0låFF•¼œôÖ»8¸LãÔ¾G0ná¸Ðº^»KJJðã °­È[2*`7ä|6áÎç_pÍš‡œy‡Ú]T¶µßÇÇ¥^DŸDédÍÑ/Án/‰¿+9u ñv©KOMŽÖ•¸I0& ¦e;È!EÑ‚ýa§ÈZŠu„ƒmx^²%•Tœ5¡O´iÚ–ö̼s¥3gÍ?¬9pðB˜NÎ?lߣyëõEo¾Q°¯Ûø•W üN޽À"aჄ@!L‘Ñ-r‡7ÂeL¸Î™ x<¦Èm㥇Sÿ„Cžªvãù¦ÔÙ£»&ùÇã¥QÐ4± ¨êö/Þp™vÜ ûØÕ‘Š«)8ž\³I'+©Ø뤠þP­®‰ñvOõM[ö¼¸C×ãjsÀèÔ€=öE '$Sr´ÂÈû Üô[?+ܼˆŽ¸üD¢ T?î„]BLµ¢Û¹Ø8Ÿcʽ·ÅÚê;E7,Yb»Ö¦ÂZŸY¹éõúnÝ )x8…Ë$QŠGæNj½®} rOÔÙ#ðÑ3 ³„6äìÞˆcÍ4×tÕ}éBg<áDB1ÀÄ¿wÝÕó#7>$È¢µó‡fœ¥èõêmœkõüøÀÂLɳ㕘Gwz2IùÍðÑeFðÁòcàxz&•>¸èó=G:e½]:3%¶¾ÍSàØfÆðÁçãš È]³ lDm¤N!Ù°MÖeÎÀë]lcÇ'B9=„±‘÷ÏdqRènLl›g £LW-†y("K kE´ö°ñ±I €sâ¢,þZÞÍPF;¡e¶ U–*Ù‰,]˜Ø¦ùSd±¡Y¶ó1Nš¢¡[ûè›§ýÐ oáwóþÇþÄ•*lœdyG<°Jº;§äÔú°(Àm;kÝ6¾ú{¦$jdÑ [½xpQC8cacy†­¹¥`°žIÖ$Õb· 2Ö0Y‡©þ.>Säó’ÒyV)t NÙBâã˜ó­ªõÓ¡ø‹ÀI´A®*O4i=¥ WuãÔiÂó½ ­g’S(‰Í¿;-îd›°ÉY|F¡¬~éV»†ÖqÞÆ™ç>o…‹®Ür Yâ¸ZµØÊµê¾ió}h°:.2û| ÷êé¶ (Œ~, 6Û%w8qéUâ±êÍ’#2¿O'›èd²$­˜9‘µàfqí^¥ÌŠ8+½Å;¼½uáQ›ÎEÏž(Yé•Ì{ÎçÂd„Ê‘™Ì4%MÝJÏkÑ/Xã´¦}*ŠA, –(ýùR¼4E5#AÁmæÀð$¼º{³’œYÀÛ=¢ÊR`¦t+oõ±u„ñp ³N—ó4¶¹éêò®×(Os{`¦³}´àW)WvøðÜõ…$úÆ|ñ­TW ¬÷}ÊÆÆn'ôŽ«%‚íҥ쯉”x×a\åc¹¸“š¼÷zµþ% Q¥Ï»+m‘ñ¨h窱8 ;4=á*ŽØíkkwÄ<²$Å'wÿõ!c_Þ®,cí-Ý;‰Ò´€Y§}ކ{k½ÎjäÏæ §êHt½ÙÖ x( jec굋Å¡6€’$QçéŠrë.Wñ|3´ó  &èbˆã² ã¾v먞wf~Ÿ­Ý"jËhÚkò8ñÀ¾Éµ üJÿÔ”HC;ñ¯’,NMº7Ó E+‡þ §ŠóTïËpâµN8¬Nfª8àˆôü7%8M§Y±;Á)!—гm{úÿI|z¯ÂÓ·P õÛ›ô“›´hÚýFÇVég² 22W@n˜X™,‚ £"“F?r·ö­ AçfˆRª[wYÕ|†V†_Õµ|JTöÀ3ž76Ü·)Ë‚ì,Àt³¤8´Ì&²õ Žò¨Ò’&¹ëºÎˆÅÅÎ|›„û+¿“3„ζ 0ðÇÈoXºú½ݑ^‡N3%ðä±­y Ñä·…ëù³}µ4+Ó|w¸$olÙñÕvÿ=ÉQ)E^ª2H’È+§5;Ôñgnf÷­ ‚ôÂ2–~=¤¤I½r³%:<ãI´¶¿ñ“‹Ó}¤ÅÀÅνèÀ†=ñù^¹÷‡@¿èø”(ñ&Èе±vß{d ö|!›o²)Í#šÇ]BÆA¦èrÅÉÄÅÓŠ"• ÏEûF¶G$ËÚ‰»ûIµæ¾§íŸ\¾ÃÅÔ$ÑØ'"k”+à&ôcB)*Õ¾ì€g÷÷/·™û;_1uzFèvlZ“uä¬$Ë Ü¸tî‡ZÓ[ÿ}2ëAˆÿ¥IŸ/¼D=šÄî$zÆÛt”¥píÝ; > $RSè°Ö¥%É{’©eéU‰’©>MZJBW^tàïžpÇ·2áß÷Ï)W¼áíÊ«9~söÕ¥ðaÞÅýN:潩3ŸOÅæ¯Al/c‘?ùcÆí_šDã ò/I¢u‚sól8ôµýpzuþâضùtendstream endobj 440 0 obj << /Filter /FlateDecode /Length 2013 >> stream xÚ½X[oÛ6~ï¯0ö0È@Åò*R,ëÒ­]:l‰»aØö &®ëÕ–2_’öÛw.¤,;’—bÀdÑyxx¾ï\H9šäè›'_Mž<{©ÜHIQÊR&ïGA¼ó¢4n4¹ýšébüûäõ³—^vG)k„4¡A/¦c•ÕkøiVؼçÆ˜ìGhná©ê±öÙZsxðLyÀ9ž­°c½ŽŸ›ºóí §ÿ…<‘QçÃ÷áò¤[nœEÁþ0Ö!›Ö¸ˆ÷6;{Šo}»­Ú^“ý¯ߤ“ZÊoÅ8·Æg¿)c/P!TøÕ½»"«,餮pkwð¬q#k–u‹mÜûþÜ(¾5 þ²QÈ"°À›fœÃ”+º @µÏž¢ìÚÀ”J8ŸÐyVMzפni³æ=Î+)ŠBÝŒp¶ä)'cí²%éÄÓPÇ˱Ө6Ög›ŠtG%6»¯(lr²Žú5c‡ŸX@µ‰“Êû°)g…·6éŒ&·:{9 éŠÍ‚ÔiN€‰^VÀ6 ' gF¹Ö©.ü,§&­ÀŽwÈ3›]0Ýrø¨›êF+Bý1gÝS¹ˆAlimh-à·-mƒ®8— Ùý!2lxÚDdæÑü‡È˜Ï_Ö ö2UÎLÐÆ eý>ŽA€8.©ý4nm/NE;¢I¡W ¥ÍNQgJJu¯$|¬æŽ8»£8k[dOùýõ£#¨)0¬øÛ9¾|â‚*K¿ã‚ò&ÈÅ)ÿ¦Ú¶^Êl ùßV+&Ž©ê+nl:Ϫktúêò`ædLF4ÃÑ Áˆ@?w2{Ñ,qÞ?VïRèàÛ¸#Ù°Œb4 ‘'”ÙÅŸ)øÄ0­²|ºŠD‚eiÐO¨õ®·1Œ•2;yG¤YD¨Á4'vçžâ Ó–!h7맸ƒ`R¯âÐ5b»î†<4ú€Ã«„Ô­Ãá‰êë({ÞÞJp²ñt¬³šú§} …Ö¥rnµ²(÷ÝÉ¡9m8­}yo¤b´6ÂÓÇhäñ-þPà‡i')PœaSíl‡±€#2ö aªšÕ$ ù:FJmÕf—‰8¢Þ”²QôûÈl·l‡vOy€ÝçÓ#SÆLrÞ´.z…ÃDè¡z_ôô Me1€ž¦ˆØÔMŠ£›Hq£}XªB”Þ?>ÒiäéŒ4÷F»Á„f‘wöQ´@q‘¤´(:IMNj¸ùü¦ûQÁý  '6§„áXbû¿ i=Ñ|’ÃB-y¯Ü4°Žß‹&xaíAéqÞ·X)\™–"·»¡4„&m0Â/Éc¸@„°` ò§”õe rê%w슗]ÉJ«–k¬B§…Ïû0óݺÒŽ. šÃ—R9$À,åYÔ>q’ƒ¡§õM +2áXox@# }ø+8)JL¸¦”7‡µ{Œ #;æŒ;?€¦7x@S†ÖC¹þÜÖ1YrÄ£0U”Ù{ÞGÉûhëÛNR¼/ãNÚäãêV$Ae?ÍÉ@¸HE]p–ئH›Šï =×Êì.öÕ÷,Õ䥔x.}Ý2Î~{~Æ„‘äh|Ís¤mp »lú!ªÏ5•TZ £äŸÁw|n;Fƒs,, ý:’@<D*\Fé"ö¯èü…’º^öÐÓ­ÚíÁÜ-!zc÷}p‚›¢’<…ª p –roÐf…ÏÎÐâKŠiwÜ3áAþ¥ö}+[´±I°¥s"‚w4èñ5«E|ÇÙ,‹m{¼ŒoâPI¥qó.’l>C)à„wÔ! áÂÀ/hB¥ Áè#wgS¶ÌM,»Ùì¦WcsEl”ŸÈFØi!Ì>ÍRRµÔ{é†çšïÿ#ýXzÇ|ŒíYœ÷E4ûÞ @‚ˆÒï1új ›ÿJ_L™¶¦ãÒ@6…—Þ¥x×½­(ù¬rÚÆ¢õŠH±Ûtf]té°ÛqÂõšÛ/ßMvFrS'U0ŠÚ5’ë‹«n2Ãt¨ÚÈön‘êÁJÂJi¾õ®ÓX% ¢ñðjÊN€v;¬!èœÜCvãÀæáñ5–wÅã‹~{oŠ!¼ G¬ØƒûgL:˜gs#KªšPeÀÜÔõ ¿v‘Éí ‡#C?tã¹-ô’Ó×AÐqŽ/ `QJ”/÷øo¹ÆgJÂÿn?Á6îbBjLãê'±˜Áöwݳúmý¨Z?†¶>X¢SÖ»ú!rxÍ·QÉkøÚêð¬È6aÑž˜>Ç#µe„_\·æ´>X[Þ[Wưmd>Q:§9:Ê ÆIáe‘nëPYU,èà–*©¦~Þ·¦zQ(£3ã›$:0 \Ž ‡É}ÓG'WìÇB7ž ht婦gO]Îcd]wFÒ¿­ùBD}R‚Û´WuI¦Î^-b¬¢›À&]¶b™üªbÒ »gu4ê«x"*TÐ’›o/(môì uΗUº—}þIÅTI*!ºŠi¤IEpüŸîédß—1¦Ë™íÑ”’ÇÅöt‡lû)úêJ3\û©Á/¥Ò&îKüë^XÎß”<ëØâÙÑ[þÓɓթ4endstream endobj 441 0 obj << /Filter /FlateDecode /Length1 913 /Length2 3065 /Length3 0 /Length 3663 >> stream xÚ­’y<”}÷Ç+²ËZ(å²'±ÌØ×"û®¢†¹†aÌ0ƾEöÈ6¦lYB–„Ù÷}W¶¢t²„HQùMÝÏý»{îûßçuýs½Ï÷sÎù|Ïù ó›A4Px{P#B¤$¤M„µ¹®”$ %!É ,¬I‘D w I))@ÃÓ’¤äa²Š2 ‰wó%`ˆÀyM±Ÿ"9@Ã$`8ÀIt])5XÀ ¾€ ˜þÌðLAà¢$¤¤Æ؃Žô§']ÈýFyºýuä<(¦€ó“bÅ" Ãú(Í5ÄSz'ÿ Sÿ,®í‰Å"]–ÿÏœþ¥@ºb°¾ÿÑà]Ý<‰ 0À£@îŸR+ðO{<ö_t‰H,ÆA爈LBögã¡ñQÆ¢ƒ€Fb=À_q‡ú§Êô~¹€j^2°Bhˆÿÿb#18¢¹¯Hþ­ÿÅR3eLŒpMRBRRŠ"¤|ýÙþ£ÎÂài¸,€$¾ ”'D!8à/`p(Ð}(ž¡8<‘’P& ñ†Ÿ{¥,ŠüúER”Pð7” Ž¿!€b~CyŠý)7„â~CJ®ûo „ßRÊã7” ÄßâÊó7¤4òú…ÿ5÷ñ‡H+i8åâÒr0@ ü/¡ƒ'∿3ea1CÙ1ú€ Óx¥0ç{ÕEAZGŠ‹yð¦> h ¯JU’XSbA¨6Ïm³…³9cJXÉëWJ¡(4ü-OµF@·¿4|Š­›™S,'ÍŒö£Ãêu»c=Y]m,®™ÑKÓ| n5âgwßx5/Ó_‘’ËåY¡.šœøþ)È%xðí4ã}”à"™Á6«^?´\~“п¿¦ƒˆŸÎïẞ¶Ëñcš§mvÌå5sªÂ,ƒ#Wn»Â–cg¢ClB@rTî›w~qÛ÷s1Š™¦©§Šù½Þ¯ c¦ôâ7*£aÚ&ñ ^g èáú!GÙšôcoxà ¸KFqHô§²]¨Tê•_³aùœ$bÃnW$¸y>|!½àèŒ«Ìæ3YšÜÝ“o;nH˰!IµòºgJ²ÞIvøŽ‰ ÿ1ê›%JÛ.æ™GÚüj¢jp[ziñ’Û4¯výUUhÄöVF×®Þá섎³q¢c^F¾ð£‹ù'B[GbÅå Ïômt»Íª¥úäj‚î…Aå&gøÐô§ƒ¸v'Ñ!ò•t˜Éh$I^'•«åMHMt=Ì™˜ÓK‡crH6vtúâé?u–“W{5}—v£-Õ>›Vkõi"*bP„fViìÇÀG!sÒŠêöâ¶æ¥—º—dѼmMÒâͪ¶¾WîáQ*îú…;r^="¹`xÒ=8X‚¤|sµDpÚåÚw=^CßzÈj2>aP­d¯l6Ï,p-79AƒÌl =¦ïEóœºþÔLwÙŠ+Tê@¶¢—žýæ Ôvý`<$ì ÿ «ÅœiÞ=:„i » œ^hòL/žœUÑÓ£^ÏŸ¾'y°çpÚÓÑù0×»]-ÆQûý¹¬•zÖ.W\q0›îœ÷ãÁ à ¶m„±Èk÷ù®må¯Úéjc·wŸÝÓU«ë‚XbÏ ÏÕ‡|È)<âüP·­oÁh»8\œ¾2Óèjã=/´{óžðUR4Kéjó—9ˆ\Ó­a­ˆ)ƒ¸ÇߨñøyÀ·Š¬ …}T¢Ž;°vÒ òðë• —JÃó›ú²\îŽÔ RRü2ø ‰4¢Æ%~À1‘|o\}}Û7ñ¤ÐPAu3³UgqöؼÖèúíäRßÛá²®ƒ >Ý ?ŒšWÚS¥ív•okÆô«|võ÷RWÌ™ÜñªÈ( £ñµÀÛ£ýCoAÎìSÃ+Ù©«'ô.Þv¤~ÿyý‰º—ˆÀÚ‘¬^ˆŠ«EçÂÌ×h´Ñd¬óœwLK‰ÇYçg¸2ëÚ¦EЉLs•*Ý®H§{?D—NÙ"j|™c~l q·A(m²ú$½Êü ýŠí Ô –±‡ù(³ø_­žê …ž¥ûß~K[JŸu©‹[+böÞþ Ï¿ÈuÞ/dy ¹e%Ü‚#ªCàj¢wå Ãî2Cu­Â9çî“XB^..µwÜÕ ÞÐ]î 6ô#ñIˆ>©õCœz(RÆ™j÷nc[`9Íÿœ^Œs1†MËóùÕÏtãŠ+,ŸÛñ*(ùÜS4Òƒ7èÖ)£ëmf¸©ŒV¦{PNEÒ êb“½-Ö5¿¹($\75{{?ûüeM~¥ }VIñ‘Šܻ˺QÁsv›îpæÆùD)Ž—‚´:¢û}7Å¿XÕ0òS/‹æÁûÆõbÉ[²ãÙïOÜ–õ¾îcõ‚ži*qµ•®kh²ý“©øGÕ³·¸ÃB&íj+7/#€÷Lm*ÉŸx9âXÿw†# ÷ù¸ØÌ"ü×>Ñk†Â•û!Òö’Ë_g•iÑñ+ý®:±†Ée(³ ñ0$ %´ÓE5ɾZ?Á¸›=¯9Ÿ®9Y§¡e¶ óBë´»úµ­’™‚rP÷ Ú?ÎÍ7½Ùh7-å±óâ¦ÍÀie¸®²¦ŠêxZÈÇ}‘ªQb?ßx­§†…]9²óh›nù•áÓ 6ÖÀhsX~HEª‰|éŽÆ´q@åQMXÎ7g™[òeuzo©dC¸ëä'yYܷןW’Ê.Ÿïg5‰í 7ò¸–éDU¤î†û"šgs¢±fÆiÀŽXW³zhóG„ŽHž ,¯— 5m»£9ZÇs²¦ùG;Ç1¥êO]²[ãg2ä––yôÔÅTñÄ4ábDIž5»~mªL:¢ÏðlPÈ*#vàŠq¼%çÝ!®¹ÆVýP¤ŽìíF¬ß#Ÿ—ਞ˜º×þá\-qt4<ó>Y%Ø€ý½vûæ­s×kÔëO‹ß©4’³ƒÀGÕû\ŸBƒ©rìsê7b™ø‚͸–ë{$ºO®b¼b=Pj‘rE°Â…Á“’Hgª†¾ÚòHÖƒ0Gê“Ç¢³µvyÌí–U7Ý2oåCé‡âŒÂu51iÓR©'Ž?àBÊŸû"pÊÅçUCºÂ5ùÞsDGpøäfp7ùƒI¬öaà]½0q2ý’JŸ&d®…Ç3©ÄóÑ$«•Á²–±ÑØ5Nšàôr·UNI‘û²zk¥%Óýt‰Qnã•úogl›XüIybTtãê¬Vm¢’L—äkÑ‘l\xü ÅÝ,˜Tc²¢æ{Až‹æ+CoZKL¬"‘רcè-§©Ó+3»9¯èuç?aŒÞñ°”²ñe_ÝÖ”î‘i)ꟷA ›5KòË \ÀÇ\pì)öæäʪ’4Ϸɨ·¸_+K•û ÁQ¾ö‹ëÖâwøLÔÉŽ4ÈÕ²O aHŒj^ -=zµlO„Ƴ—9ý‘ž¹ÍÅÛÜ÷68‘%Û}ÔmÜú¾ZŽBãWoaï¤n:Ë–@ÞÑ„\`Îí„r>QM ¹¸¥ŠHòñ¯D´ÆBMm+´Ö¼ŸœÝšÿäÚ3KðK·Ë7—¬4pzœAú¡¥÷¹©èbd¸_ÉgT›¬Z™\p|¨ðDOOúoíÛ¾qv wU†YyŒÔmàûGN~·»ÅJÍÂüù2Ö&†å±Áñ¸Ø÷·­{rÃA0Í*·¹ ¤ëÀê(¯Å°8³®oâU¦hÎ5‹J½¹iûZe‚ZÒ)>Ö®„*‹­§mz³ñ„ø1>Y6¨=RôécM ßìÄëÞr[–ÙÙ#jw3EcÈõtâ%¶á©/uŸhrÉà‹êùž•X*rù]À$ר8NóÆž!K+¡×64ªmÁÑÙ íQgx¡`›Ö{_6ð;òN×,;¬sÇùûÇhËp¯¥Ëw$dÞ|¥d”d:ŽD½ó([·U¢ÙÉøšvQPM~À!,¶(Xd$úy?%Ëmÿ(‹¥YºeÃÄëz#†Ê§sêÊž/Tù öUdUðK·¤×U6®¥&1ýQ(ÖÑ+¿¼ºâ[ëïûí¨õ‘ùÈÐꜯŒO]c}b·=ÐWã?ôSÍ ™uŒø)ðm×cÏ—?s ‚¾ŸÚÆÍ±‡. •¤ qí˜÷Sä)KðåµèÞèÝÿ ÉÍZDb ]/·è¡™L~ÿ ü+Á±½Å æRÕ2XÏ>]fR$^õÚGˆ¨áñŠ8‹…ªfƒ'4äŒ9·;ª²™'…ŽžJûî±Sa`K}©?mxšÎ))¿‡sbpðN©‹¾Àd­ÞEì²*ª/‡«6¥¨¸ºÊz¥6¯J/^™W$ÛÄÊçPO*öÅ›Ý_3%[`‡:5{Ð$öuöÒ΢ÌCÆ{(ï^Ó–-Å€¸ç´£…­_1{€ ]­ßá,§q£ûn’l¨þô1KÿR½cêÉóqç$j }  õ3ÌÆ\R­™}0ÑE\õ¾ÙÍÐTRÜéçZ,L–9Anï¤}“!ì(Õ×ìÓïGÜ®ZÕê>½#c·þ書endstream endobj 442 0 obj << /Filter /FlateDecode /Length1 744 /Length2 1028 /Length3 0 /Length 1544 >> stream xÚ­’{8TyÇ[•m¦µ-Y”â¦ÈefhLÃN5å2’qI.5Í9Ìaæ;s†r©%OÛM$·Í´EEYb·B e•KE*Z]…ÚÒUµëéYý»Ïùç¼ïûý½¿Ïïû¾”%ž|K„m…1·¤[Ñí€#Ïw¡ÓÝŠF¦P¥°G0ÔI€Ãv€ÎbÑG ¬‰:ÓÎf… “LŽX„RŠ„Šp`êh6.bŽ–"B x\KˆBð1!ãJ+À‹×ø ð‚e°4†¬Èt:€!¶Â¡J¦Ž#¹ !`N¦!yÄT)–Ê(`J@šÂP±@p™êwÁÉÿ5½¹³\,öHÆÛOÚô…@ AÄÊ%˜$BŽÃRÀà XŠN—úÁ“t<Bä’éU\ F„4T Kºõd‘9# òDp¡„Ä2x"£Ðt » ª+×—çèm>5Õ‰ª§Aqoe hŸå1ýsLx$E €fE£Ñ !ñMýM»‹ 1A‰µ`ØT*P’‰ý "ˆ¡…`€2Õ Åpâ |‰!˜”<>Ô•Ö€ê5ž"ùLcIÌÎÒšAô¤1™€É`ÅþG(”K¥0ŠO, aÅT‚ÖÁ°’»¯cBûaåI…q\ÕÕ³Íd‹2ï¼R›X–io5xÇ^«SZÑæ ü­™¨†œü.}È­ˆ …0ú”s¶]ŠáSoj^ÒÐ6;r˜ÿõˆp00X­)ïbýîN×)ÈÏnª{ü2œopûU.5£æuO6º™¯ëó bž^è¹Çwóù2%È6ȤÚ5¸®ÍZ¤ï´Z–Um²XT5 3ægùGû­ê„šÊQ“çžÑ³çi®þTÿC´”š@#Cà9BÞèôèY» +û]å5ñв+Õ"PÃX?Ï1xnqÅê¸G‚O}+ëT=¹ù|v—Bá~ª7%bÑ“¬á‘‡»4îgÁN?±ž‡çšoú½¦µ!,Ûë ûq`g@OhhšÞ øuVAü&E?^Nb.ŠÌwÈeq—ï¶ŠE›î꿪S°œÝJ“— LDòÐѵýýág.\¬nR4›‘¶«µ0gîNxfv?¤–ä%×9AV1ª"Š]PüHaLcOXVåɘ}çßd”Cß.T×Ôó-*9Ú#[úž E-¾X›:À‹19ÖTyÏg¡­ŒÕÝðHÃÚ­}çF õ¾njk®þ‰æk±¡c‰cPk[£gkw櫯úuÛ ½,ïªF®ê\gIÿIN˜“]`]ûa¼ÅÈ-õ×;öïÛ- -òÔ+Kõ·AÑõŸ´¬Š;¸m;7·#³¤{8*Vg}ãÃoÁ›Û¶™ÎžÙñOå»c÷‹¸ôÁ’¤Ñ$³õ›]·žF÷²/¬w°Ñ[¾Ä-1]Û¡¤¡¼9gü`ÙÍŒÒ jöÿ¼QN•ÍqX÷WOnùJ ´¾þd˳ÚǯÙX†¯<»Æ¼ ²¿Ï‘ïg P’ž¼N½èvJ²Z¯ÝØbˆ'^•¦úù’èé,{íIû¬O-öùaOÒüÚ8—ɆsÞã&¼hk1eh62Ì z+–ºWe±ÿ|Ðm{m¬û%;™¥+OqmàØ^E9Ú¬ GI3b"‹ÙdŸ¨3ÒL•ú¬ˆ-vè?N­ëo޳)»ÌXìÏqF®¶£o¶I+rÔ†·ú,T§C»þU%î¸endstream endobj 443 0 obj << /Filter /FlateDecode /Length 4167 >> stream xÚµÙŽÜÆñ]_±ðKf-Ífó´á¶a9ÎCàÈ œÀ î wv¬¹DÎèúúÔÙ·g%9ŒÕôQì®®®»ÚùÕú*¿úñÉw/ž|ùÌTW&Ϻ¼3W/î®ZsÕTMÖÙêêÅêê·EyýïýòY“‡@Æ6Y9Ã|?\›Å~‚#6W×7ÖÚÅß¡y†¿~]4‹´6ð·…¿ž#ðzÄi’éÃ>˜[áçïƒ'¹ <Ç÷Fq¹±UÖÖ5cô·Æ}Ûù¾Ek´£ì ÿLºoÑFÜÒä‰[æÝâÒvÙõMÝÐášEßé¢ý–¿êÇ5nÇÔ$V¢q^c‰xÜoU îÔs9Â9k&Æn#›L¹,rE‘•¶½$q—ñ-ô໦­Ϯےst712óÛPiëÙÍŽDxä½Á‰ð†­ªÅ²ßsC9ƒ:Hr來[â=¼ÌM©Š „´yÿø‡Øfì°UMä=œun¯¬ŠÌÖùbÀaÇ3ïSôµ…É*c•Z*½ÜÝ)ywExwÁ±&?:ÄmIã=ÿ(ò›@ôù *›u ߀¤7×p¼Ñ>#êΩHlÒ„ÝåÁшUÓöá›{| ÒKüçíµ,µ¥?š%¥D_ðN+!rÓ>ƺU™¢T:­ ]%ù¶ÎÚ®š“vO’õᆀfý)4´0¹ö[‡¤`õßÚ,7],áâ–i¿Çsv<²dÙâ¼â᩹¦ÌiP8§ þ£|ùF‰Žê¼mUÞ‰øàÐ|?µ0µê™g©³]*͉›DºÚÿyïg˜¸vMBýÚ¶N·bD+7‹Q®ÉóÈ«ì<†­¨ràž ‘Ùû ã%ìÌÛgDzkU; ž]ë.«?Å}% íäÜÐF¿;9¡Y§ÊhùÝ ®Ó}ýz E3!â>8 1`52þûåCt¤ÉVË4Øò§Ã¤Œº?Çɦ’²±Å– LèЄLaK§.wR¸òއF¯Ô¬'®2²ø‚ç-«Îñ²=jl¬é¶ÉÕI0qQœ8¼§,LôÇ£@nÔMÓgYÆ!hx¶ïeǘ³†UHQ—+u=úŒ×úíÊnn#öÁþs5ÜÇò,Ê1/Õ™B€Pö¡K®â®'€ŸÆÙÃtà‹çë½9yô°‰Çê'éèR*:ë{ñqŸeJÍäHZà·å†|º'«¸uþíŒg‚)È% ’¶jþ˜:*¶ÃN¾¬ 8Èê0=,L®ƒŽÉJC:É?©’ƒ)á.#IÙÕ[\ù  @*ëN™Ô\Ô•¸– áÍ~œ¥õ-îxTn]ÎD½ãN¸–¢(ä°%ͨ¿DuΨ† ¦ÛH„#ÿC‚a”o°=!Ñ€< ž~Ç—rl€§«~yòv¥eg¿cjªND³ÑŒ cÒ¬KDö^–Ú¯¸qY;Ó+˃ý+œíá%Ò/éÄÐŒ"0ä~ ³tÙjòÔÛ{FÙ­Ný÷Ü¿õÎ#é ±Ø=ß RšäßÇ{e{eÊÌ–uÁÁ¾Í꜋i–fQ›tÝâ mS‚*GŽ¿†]ßbKø‡¦~ðQ_¯b4¦üœ·UTlÊËž€µíe7£4<íM­çmÖøû{)®à€MN MÖߙնa¨M ã&ƒè&R«H Âb>hµ¶ùjM—¥ó ÿ•À¬Î¬-S˜Cf²*¯BÔ^æE™$ÀäÝÿo5̾gzô”ó‚TèUìWþB›»2>pf&éÒqQúzë<Ë}Ôù.IÄÂV€ˆCÙ:f§Ìvn»çI ¶M{¡L%šá˜"` L‰y,ö”Ýð%xÌ §ÜP¦¨U·E:ë"šEmÀFó"önRtµàŸ7À E•YS]>.ý­¨û2·eêÈUfš&æÒ*Oí]‚X¸Èý6M½ÚÇö°ŒAFkßÈjMtÿ¶¥‹«-ñÏä‰PCÈ' ¥Hœ¹ÊêÒ|ò™ëÏ>óÿ  ª¬«‚X¿?“ó¥Œ&«;MLÞÛ.\½;f—ä¨9*ö!i#ÁÞl5(]qÆ PˆÿÀo·ˆÏ+ñí€\ñ©*A+9ÐYÓ¿œà#—‹#%ÚnHйŸÀ-Åeè’–â’ÎÝOHÔ,’:ØRê¨{ÌØ|žöýdMd?WûâÑ6ÿîÅï…æ–·æ“|MK™Æ0l]è˜L賈/ô€š[©"»DŠÇSdȈ©\Ý£B7úaÔ…ãÏàâ“:&ƒä×$ s+–.P µ5‰‚Ó ±!²W?ï¾—cxwˆQÎL2®JÅLJÉô-7Ô”á¥Fä&4‹õVù•¤ Fvª#âý2©ºÁYu5bñ›Ï|rõÛ (øÅ3ùòDnQãÖWYÖœFw…;øñQ»¸´Y˜®«gŸ*KÁOK­ÍÜê Ñ$%àáP†¯]\@!úÎ;àžhµ†Ðš ¶aE&•WÚRvB+[KÎT?B(`ùïÈ—}ðÖ»zY­qdµx~ðñÚÈèÌè‡àŸD¿¦LÓ·!´wšmÙ¢Ñ~P Ï¿cìî‚`m¦‰À.uÆi¢ÿˆVèMƸ/[²º&¥; äiØ?¨‹%Dã+gØ ™Ð4óŠÅ®\ü´ýbª¬±³,öð27Öe 0›*æhÜfLmRb§ÿ£ élW;iÄ<è…‚`ÂÏQUâ+° ŸEr¹¸Š&º¨hˆÝ£æ g.,¿uõ²ÿ^© IÆ¿Z&^Í×(g¾lÎæKó¼NáÚ¢cã¿å\œ¶‰§–œÑ¤ö­ËЄ}JzÒŽƒ’÷ƒZkúŠ®-Z·Y ü†z>1=¦^Š‘±ÐU¹2æ1Í¢yëœ9É œ 2ÃZc³\A>psIg”PZÛ²9°|5S/)¯HÙ¿.9‘U—QN±f«´…É7‚Riµ•$&Çó=N¼å0˜òhËe$~þ®Ɩ·½>ØX~Á£ß´–]*°v äÏÀ{Jd²‰ìDæg*Ž ÌÞsÛR†YI´Äg{-ßHj¶5ê§%“ ÞºÇ¹šÐÄUÞ„UaÜãntÅ Ôwk¦#YØ/x”SZg_Ü ï"ˆ5‘x²nÙ³ç‘ØA"†3MzÐÎÄ[“Ç›®M…íGmÿ¬N÷q'à¦, _΂ö¯z1¯ä4s30Ÿ`æŠTݶÅp±ÝÄ3dÜê"!<…Úúzz¡VÚë­w“¡›–“›ÊÚÅO$àä?/]´úËlô w%¨ºpN4ïÈ ×P«Ž ´I¥½ÙèŽÉãén¡öñú&¥,w\ÈÖ:®&⯣ŒtË!z\ÞÀQª‰Úà•¶Cš@÷Bù·L™~žQ À÷¿ŸC±s=ˆW÷‹§÷6¶†²‚sÚâÓ‘µ4a>Яʛ¯£_h"(RÍG÷4Ç?Õ¢ùÊ£í]Ðf:íe‘‹ÓÚ²#°^‡ÎbÄâcîe/Î\¼ç‰‡¥aVS+©Œ›I&ÿ Ó<ÈoL³Jw%ªäÒD²ÿ|Ðʰ ß3áÂwœ‡’E™üžG(•M0äκb«Ô»‚w|V «˜Ð!@!=&Åy20Tc8;=Œr™½D\ ž¿¨ë1>xkÔ®+ÐûÐÕz‡K:ôƒR).ПÒÉgLBúœŠ)/ø ƺdë7¬JsÞ™D~'WýÃ4IðÌf5ìÏêÒÝêݪÐçVg?B+6ˆ ¯ÒãB´Ã>H[dm1sz9§² ‹¯¶®ý:lj8ÐŽþâOÃfÏ•´_ÖëAÈÂ93A¹•×Z=å¥Ü¡ØP'Ãu¥ÕRdÄÄ—Þz0+ï8JDö£ìÕÞt¯Ap8ÈX‰+ñ”G‰ö„‰1p#è*a¢wºXÒQ oQ•V H”ÜøòYÝÆž*+jWÊ ¢Ns$³uf}Æ?N0ì¢È6~~áCÝ•J=)Æ“¼s;i@x - üŒ=ÅØNɵ÷}É$žåsš¬.Š˜9q××IÉ«2Û:Z Sà_í\ÍMþzï^!9žìj]¤KÙ_#Ö¢ò·áž9쿲Ò¿ì7„¾ØªƒWø"‚»&tRF z•ìÄ~g S\xÁôˆ³,*g÷pÌ•u5~Á:äQ] cœÓ÷šòÚ:ÐΆÎ]?ítZ–Í’]¼þ„–3Ûøc2Ëï*¨jÐz­=‡Æ"‰HÔ¤öqÉ{á4©åÇèë.”øwúøW ~’ÖÎLõÕŒ ²8scRufü“‡Ô êÇëøŒº v;÷€×—‘¥Íä«FC?¥Ì O¡3aBÇ;*Që ÕÒf¹½Ñi)@{³ÿ²¸§/¸êZ½Mrìžr©˜róµu¨Ê€ÄÑK«SbEU9ûù¸ÀôÀã> stream xÚÕ[YÇ~ׯ ü’YxÙž¾æˆ¡Û° ÇpàÈ2Ãv€9ËeÌcÅáj½þõ©«{z¸ÍÝâ1‰sÔTw×ùUu«œ­få쫟¿yñÉ«ºœéRµe«go®fÚz¥žÕ¾V­õ³7ËÙOÅëýª?\Ì­5Å7ºØ_ÌM]ô;¸üõÂ4¾smU?ìÖðì½<ÓÅ×G¼½ç¯÷WüûõÞl™ì×D olÑ™âüþm‡¯»ù×ø³½Á‘vµ»øåÍß>y¥}:uÛTª©[XMÚ#Í‹R–:›;g”­Ül+lªŠ‰~ÖÖý\j‡3AÎGøÛà ªªxÀMxRx‹ÓÚ¿¥‡[øçþ~âð0Y¸¼%ü9^/.@P×ü P·È€–µèeÕÀyÛ!á=’H„Ë&gq°ßo‘î”óbŸ {œU‡+À•À3zyd…á(xy-«ëp17!î—(¬™fi«¼kY@8Ý'Þw‡qXž=Ý]‹AXW¬pE»^¤Ômû=“ÑÔèã_yÕtMóañâíMœ>ñYŒoŽa Ëê82Óeø ãwÝb¢‰2Šò6loLŠKºG ÞóD§À”uY¼ºh\±?E§;aÃ<ï/ šG‰•Siíã’Ä]¶}xÂN³äyT8z*™ÅF>€sÛo{~yèNyÞ)ÿv<«¢_Ã]2A·|á+´2ð<’ϪTœo­´mx¾o‚ø+_\Ý©'&DnÖLܬ²ªÒ&xÙB´ý.瑦T¥«)²]jKJF)Å"`¨Hñ€þN¦…!EˆçÐÓ$ÆcÇÇ_ð7µ,d»Yí²(zµåçË`Ü zû–ŹÄW¬w@àò³Æ¾| áä'bð*aú{\ðAž7§a¨ñùfj6?—¾|t0]è¶­¦œè3‘×Wû_Çë¶—Ó¦ÖUª£€ú;úBw‰Éo(ÎeT켪­Ÿƒ÷´0™•u׺œ¶p‚ë%~á«%Û9(ú­D$¦¦“®µ^GQ7u½"ï6dús]iU×õTôŸ¿F}t_þý{Ô›•Ù¢ÁQþbÛ¯Ú-ùý–ø÷áFdËbCQƒˆ)‹¯™äš|]¸Ò“nCñšoÖ” 6Â`Ù“˜l'qõørê8“xÄìãÇýobÝí|[æ’ `« å7˜ ¤IW 1ê7”l|Æ—(â«*ÞRÒTßãd÷âæø"ö¸äÕ5VÕNbLË–u°,œ‘/‹ “šzbÃ^ùÚÎÕØÖ˲J3 S—Dè!ù«¶T³c(gÁ&U•–ŸßäÆp yh£|ÛÄ1tÎ#!ód6ˆ :²á¯ŸS5Q] Y^°ÌÙºöª‰ðz:}Ü'¯@údîÆÕªiOÌ}0ÙÔšÂz!è:áë€×w8þ5w‡ÿôˆr~þÄ‹ã¨ä†¿uÙT>Ñ” „†ÑM"z’¼ú EHnøø­ÀI"I ~yu/»U²¦> öx^Oã¾ÒIâ“öÆ/ùÃäJ†ʷBy6L¶Z¹*†ÉK˜QÕ¦ˆÀ©x\‚(jS@YòÉ)LIñg±_Eþ.AߥNˆrj€‹†®1Œ0ùÝèÇDÕ³w|×1QrÚG(D¶&Ë›˜¡/Î`Î! ˜“žH\ÿ]n":…ëˆ:o7‰¡V‰Ñ)¥oÞŽ¶àià‡1tºhŽ §¦ëªøúÈ´dçû—Ù2âÖ!-ùÓI}ƒºéÇeœÌzCKQ]¢ÑN<}(WÛÕ``t"&¼Ý…È®²¤mzj}NÔœo¦I¤Ue„A¯ssÀËÊ’›¤¢A°½ \›IÚ(UÓÄå’ÌЇà?‚ÝsÀÊ@¦2IÄ ¢²Ó?K-â_†"0µ>+,¾_ËÐ\#\riˆ¨[’‰B*RÑ €ß·Á¯¹6E³š‚Q"{Ž5eYgq¬.d*“:ºD¯l¸/O>‘Z™ñèº>„Ö§ðœ8ƒf+åã~'eÖ1BVÅÚp G§,ZêÕá E:âí0€´mñšÌx¹$T{g¿£:ްD®ŒŠç‘«™CME\¿ÆØ[zIìó!¶>$pº²âxœ„Æ¿šÄs¸ç¢‰–ºå'‹ž»‡4W–~Ì•p]êlÈ æßK’*i8ŸŒè—,y.óŒñäÈÄýŠ1{áU@&,b›`'ðƒªvçMˆgÎÛ$zCX{(¤+ 4U ð“IÔvà×>ímP'è®iäÏù®R…âuítÃÈJ¢.ùßÍA8ûñûn_þÙ‘šo(›uÔ©Ôe°˜‘˶û-,$´9}·,ö_CíB͵±ö‹¡)³Ê ïólY½Ð)ÌÞêñpã)>Ûź"ÔN˜}NF¶"ñÉ£¯ÖIEyi`Ìo‚¥-Gó<4@ö¼ŠYŸ‰4ŠQz2›ä…SsíË ‘ ŒoÑÑbq ô;îuŠÐoG²cð\¡ ªˆÒO„A±Ô¼dꈊ€à›.„S¯<0Á/C>Ôy•A¿!`÷ë˜6üŠü4Ã^J]¤3¨9Hëû\œ«•ÕMÈdAs§Œœ2΢lF„iÛ„ænÙ½CøÕàé]Z£9pslàΆ˜[f…("ú¿r3›kÕ8 4ªöÍËlŸ³Ló¡Ë4u•G¦*5^5Äû¶ôÁ™²w^«Òp–ñZ‡fÝ&t°JTÁ_3ŒŒ²>Ü A9ó@PW¼: xVÛælBhÒNý:Ãɨª²)0O¦c•âÉ`Æe¦])ßÔOȼÕ‚!kWócº 4´?Rž6bÅ2.Pç,Á+(³Åˤpä7»ÜŒ„y8á)›é„×¹éT Ü8ÒÇ`•ù5ª&QÏÄZøMô¥ ƒë*£k«jW?×j𧬯e¬FO•ÝÔŽÜ9ì}šEg¶Ô Û.œªAgw×!ÓõYÞPÞhâ"'ó€)ݘk5ã6­;ÕÇYo×zjØ5\ŒƒýEú+Æq5¿ÛK)‹OÒñ ]cb§þ‹qùôåŒóe!lq¸zDN&6c2R£^ŸOl4˜ÉdÁlNÉÑîÒÀ˜‹zSqûHDA{R„ŽÜJÚv5˜s V‡]MgÆ­“]@D‹ØC±rœU¿ÄÆØ!¶½&HªµÏCRU¾f#ëÐzÇd_±nºž%ô¿Ê´Z«JÇbµm¹-DÝūӞ¼Ü²Nø†ÀP²[‚שJZk7Ì†ÐøŒä'Í–È2t~Zw'çº-Á ÍÃmÕ5÷¾ä]JQº–}óXP=—C†Bg-;岫IØfAݯÃ2Ùcf44‚S®vÃÂáš›„ûßIéK'ÚnŒ›Õ'Ò¾}lü¦_dîÓbZC©ë`F ¡µ•è‹›ï*Àò²äâ“7ÕÕóo{ÚF [»â8GîYioÂNzíéÃ)?£âƒ ÑÝðˆ‰ŸZLÏÀôJñ=n„Ó$uxãöÄ“œõÏì~Ø3»xÀ ±µ¸µäW¡³7ŽÛ²»Ê)êâ[ÞHD‚ÛGK$Áe;­dz·Á“¨V¶:û{®ìÐÎ]Ù*]ú§}Ü(‡Ù>¡{•ßFñöÓS<Y©e´5ì¥ìÉIóUªñÕ“ð‹ùãbÜÿ®h2 IúÜø OxC{†á´KOçVhW¼ñÜå’d +‚¼ ]g¸ìø‡wB¼kâad˜3r’.~6v§ãfÕI£»:=“Ãí|{àð¡·'î2ž‰òï®Y‡yÎmÓÈÉIçëx¨dÉoÓŽ›mZJøI‹-í9Äb¥=ÝúƒitJf@>]Ë$ÆöÒžÉé\ïYðƒ°ÝJ=e ½óJëâ³ñew^”ÿà7lš#u †l/î‘õ»“õƒsõ±1~ÍiÃ1ä “h—$=¹äÚ°ˆ—¤Û+驸&æ<¡:Ž”q3p£Ž|r3Ө†ï:a;nA5Ù6)0éÒLÉÎaìfMO8áí!ëÖ»[Ç,.Gà†`®W j´ã1¨À)‹"àäN-Žcâç"„¨Žê“Âõ±ÚV lõX$Ur¼HŠè7xPŠì¦ŒESµI³ý=T㢓=f" o‚/ÃåžN>…®xð‚òæq‚“ù¤3'ç8ÈMê8‰¬ÇÓùu¦º¢Ç·éóZ޵ZWÑQÃ\%Ã'ÈSD.ÁñAÈ›zRS/•T®Ï8}[µ£WdEaR½ z ÿûƒ+¶xì”þsâ£ýzl:gÆ­Áµý`u™³êrªõ:£.›œá¥þ ‡vÉéJ1½K!ŒÅ‰SÊR“¶PøýòÍ‹ÿ`>Fendstream endobj 445 0 obj << /Filter /FlateDecode /Length 4358 >> stream xÚÍ[YãÆ~Ÿ_!ø%Ø¢Ù샤 ç!Ž † $ÁÚ8G#XÇ:¼»ÎŸO}rZ#ÍîìÆXìˆì»««¾®‹åd9)'»úË‹«O¿z"Ê¢-[1yq;iĤÖuÑJ=y±˜¼œšëŸ_üýÓ¯ë2n$d]hhYr›/ûk1ÝîáϰÃÇÅõLJ9ýð¿Û^WõôO+ø¿†ÿ=7ø/wX°ßÛêaÕ-°ûk\ÁUi—<^ïÌ­e&uÑÃ+ú'ô»£Uáh‚&¿ÃyvnvXÖÎ>̱l öUÓòËép³w=~»ÖfÚÑjÈ_á¾¢A:;Û=ö®gPKc»W[þí𧚺-oˆ,ÝŽ+o;,¿³´ÓOxÌþõµ]éý5î'ÙVgß_ÝñV€`@, M¡UËñk5Í”ƒc G8š††éqzSÃÚè¼+¹6EÕhwÜ?•RÙVÕX¥.©‘*jÓ¤…‘öVÜ*=°ºm;‰Zí´3XÞ/v[Â]è²(›fRMm7òŸÜaV‹™Eí`•en~]Tµ [ÑenÏ~e!;£V0§À㪧_䦮`ǵqs¿±C¶Ñĺpª°WXÎxñeQµ~«Ì@@­&Ú%,+{^MÙNÂdÝ–$<·rƒÂO¥0™9UÑ|ÐÅ+€„0ÙLø…ª6‰P Ôݯ­H¸ÌÃ¿æ€Ї,B¡ÚE@á° ¬ˆ¬  Ä׳JªB›&Ò6¢E Œ‚÷v¤~ŽÃï?»ž)%ú¨VÎ{FBàM·bH¦"†‡ÊîÌ ƒ›X-yu"knuOÀ58t:DH”;tm ÓÔçøµ¹ðÈÕ;¹,jx“}bi°]Xú9ñÏŠ(Þ[‚¼¢,^Þñ••ƒšÆZk¸oJØ—vèúp; 8âíàá)”ŽfвT …à,›<Ј¶hœ€ÇÍœS‰JP¨ª ƒ–ÙåñãÛAæÕW/®~½Bä-c"K 43–¦åd¾¹zùs9Y@%Üj…‚®¯¨éfR|ï­'?^}ŸSgdÙB©‰FýhR‘Û%LZ?û.ëGN~VÁåVÃOYhÛŽµ‘(Ѝ(Ñ3]¬ŠüŠ k5§¸³ÑE«žÄ%(­q°Sªöàuˆ´'ZÒ=A’Ã(XííZï,hÜl‹hÄ!KPðaä>*ý𺋘&+÷¢*ÚªŽ% ÁÞÈéǹÓ¢·ÒßUùuQ¶ž#bú,ûHáÝ^#¦w óD,›5À¥>Ëg.¿¼wC—êRt©žŒ.ßeJè É]öÂñÂ1H2î^;¥ÙlÃ÷ wÉíHý%¦§›ŒzWÓƒUsq>¡Ý›ö¹•B}‰RèitÈ“»•í~e B5³ýp°fñ –3è±³¿^Äzݺ+‹ï¦ª¤+üŽM þ»°oý`0É~AÊçXp—½Ê¥tïI휩@VœÑ¡²•F<FAQw%'†(´$ó›±,xD¥0@™EÎò¶ªá]Ô,Oœ©ñR˜Â€ßeøÃª)—ÿ—ûî-›¯níy;‰À6÷ÝŽ-— ÿÒ“Ÿ3æ o¢û}h?ðdù{³E]Õ_œ²hZ/h<ãѲYÍã<´q«ñÄuvÙcˆwAÐÉ–T«AdÛ”?ÎÅ1ÞpÓœpìHí¹ÅÎ*7PìO¡i1¡tÇx „NôÞúó!×MuËÑ–„QÓŸ„TsG‘ˆ >âÊ[ò£qÿ€8 –˜¥X<ï->¦Û´v\b|î Ï¡ÎKxaFžtxª@tåH÷[ÙëYªÀPRÙK‹š¾æ‚}omgÅè;X°€×yä+tp„&m°¡ùXtbF³ôA;ZÔ|8Æ›êÃ@ÕôxÏ¿'5NiZ`}N×i‹Zy6¿áK4w]€æ ý•ùMVÊ¢TæIÊÅÅ ˜=®@cÖÇ„*©S‰ Ùé<ÑRä¬ù¸,ªzl¯aGÀÍä!€›}ë´²ÃUƒg—\5©ã`RÁF´Q ¶ÕºyLm« ¥Ð. í¾>¡ð‹Ò“lÞm>×nù=ù­G¶ß;[X̶{ïìe4¬GK÷²Äa?/îwMN—Ïì… Vjôx€1¦-ù7«­ÝlºO@9¥íƒ©Â-ÿ•Ñ9fÜlV©B¸W"Øözä(ñ|ReÆÄ "ðMÆÕRu™SˆOºè"–MÝ}&¶ªË&=q]Ð/zn¼™"O-;Q½N ŒX›IÒð¯Ê¿3SšBJ™S÷Ò{ΧMx¡á"'5 ç}œe! òb.c¡1åYGžcsŽuÔ¬£ÞŽuÆfò`Ì:/³ _”òÝuú`M×ïÌ/éÔ‰ˆç‹êœX¨ËÄB?¯XèœXÐn&kùUmaÚúi¾½wãñdìyŒKŸ÷)Ni •„èÞ?ë'3Êï]ýˆ÷UˆB¶â=èÏÙ¸&´òÄý,뤕 Xò%\æ~åØú ¦.؈ðšU·´5lä[íÌYðÎ >Ûkgv{CYͰPh%Ðï’´`R{;±ú½·=œ£„m2……ò:Œ0©«D³©“‹ÁC«óÞδFŒñ*Š¥gbÍñ ¸¹[(X¨9][ªs'ÚÀS¢C>еs1qš`åX­¢>ÞlÁ0ØÖî†tXŒx…xý¹2ymßÁYý:Ã@ñ–AïûsF \uQ çˆ3KÐààÚÒ^#'ð!²S n¡”§VëŠõi Bb…+ÝØñ챨ðÏõL—åô»k ™d‡í€Ïoþdi\«é—=[lä”EêÖš³;:¢¤ÍDX¹Ô¨ý¡_znÂVP÷•ó€®Èõ€SÒÈ6Ïþz²[NÜã³>J ›´.Ýã;<éaw°çJî“7IÚÈä%ÅŒ˜U€ÛQO±‡þ gF̃cÍù—V`¾[O.>Rëƒó¬yˆÎV’@,9ëfÃU΀ÏIZ1·/ƒ5ÂÌ829,¡=aP4Ì*,”ý7ÎÜ9Q~‘dÍ€]ÍY3ŠÉ={GvÎíÅ”V²ñtýCjÅWœ£R·­ªNc¹±Ïkäp90Ðpa¡ª¬î»îÃd'Ö0lq³}·qùYˆC?¾s?¼¶ ûüz¦tðX*@Pd^G“Ü9:ÙoŸD°OJ‰È–·kUáBðÕ=w‰"õ{gy¯B £Ÿ²ðO·¾d<08ð%ßH8Vî¸â¥ùïÉÏEàʦ÷‚½\ÒàZIFg ´ÀVÝD›. ªÆœôZp­e˜€2È-8bœek©ƒ‹>à3š_T@\{^±ØaÉ”ˆË½®\ž ßþ€ÓJÁF<M2„Ù9d ¿(.Ú´î’Vu3%Ö ÷@k.º!¯­c (ð[ƒç»tPò{¿ £»øÂ~´vnz‹ÐƒÄ";ÀÓÂаáB4Í“L ¸ˆ-mÜЮeÞ¹»z°Þ^Y—…h«.vŒg¸p™ÆÁ°‰×_9{f†î6÷C ŽG¤@³äŠ/M&A3Ý ÞK:l ðRÙ3V® G0m¯o:¯°lq!ßö.ÏgÇ ˆ³67NAvÀZJÖο–%ÇtCã~à㎋ŽîÌiW:qKã+ñEfGq›u±éâº9¾uö<Ôýb¯*ÛºÝw¡?QH7Qç–skéêî’„´Ðƒ©‹Ut^C6ùÑ1Ck¢˜ãžÕEì±û¼U¡ozÌN&9Æà’D´5'ïj¬Û»ˆ]ÿ·R¡.S[E,Ug¨Å´ö‰öAÜB•¼eQRÑÅCA[s–Séίeõ·wëå{gÝÊ %Éꄪ¿ïùö»3Ö6zsŽ…àaã Z<^6ö—ÙÆ†ƒâ Gîýük•Ì˘Á 31KÕqûpIvü-ÿr†­¿-´¶Œ©“³‡ù%ìýy"ª$Õ8Ld‹ WÄ1Êkr©ÎXEV ¼¬ã´a[¶#ª.³|]U`”d“–TðÐÁPd@»&/˳^ˆÏs£p¨‹þ̯dãr•äW=±Á&Xk}Ы½f+=Çõ..Á†Æ ½jWÓßDrx³Ž s§ì¸ÐÍÇ‹?5G7«ˆñ:ÛvàR«1oÃxö1VCµÉª¡T‘½¡°âÕÓÝz^Z.[™:‰~>Tò2¬ÝÙd«Tpt¥L®|e ŸrPå•%Ü8['S£ÏÊö1á¬/s:4 Ü¡VI@uëR9cíŒã¨ÐŒCW”Z? ]Ù-Û—þmå—±æª[«Q9X0ÙjÞþÀS—_ÁÄ#…Ë)Ý%}  Êjú5¦[xÌß"AmÈŒèí5ã\L1©pBª21ñðu$+eXÅú£[‡§C±2Dá{o_~Äõw{Ý9¯É#^ ñKoÄàãÞ-ÉùPIï¤Âð°ÜÞy!¾HwÞ‚+9¬vÒž§6ßxÀ yøå: -NæS’àù¯ðˆŽ8YzàFÀϺÄT´Mó#`h¹7G›«ó/§ºG‚˜6{@”t:œÅ̦Õ>:žÌ9Œí|JZÔ.ã˜Ü1$–:G!6x‹Š&ùÑ®´Û¥×{ÎaV·E]‰svýª¬Îøô5°Æ"ÏúôÍ[DÿÕe $æñèÿ:qäaô_=gôÿÃ~©#/‰þË‹cºæÒà¿y¾œ˜.‚ê¬гaµ E°~ËLóœ™ÿǯ;ž'Óà½på©Lƒ&÷ÐÉLƒ?[¾ÝÍð¶i ªu¨ÕiZÃès 4Öt= >PаÿxÃ&!ë&عìeÙpßUæ`¿M§—£õz™é"Žøà@Þƒf¬ô‘¶Éˆ-'ËPO< yïÇDo3Y·Å1‘R¨uô\…P†u8G€K]ûCÜ·`Zúoj9š¨Äºz‡¢Øž{†fVxs§ƒû³¹Ê2¤7áWoìϰ<;Ÿ‹útVçw.¡Š­¦jgOC@ùÊþ’q¿Ž¿ôCÖO€â¾GnÇÞ… 8–Œ ز—‡uz¥éÃÔ„ääV¡XÉ.û™ó©h‘ojqÆ?‹-"7½ÛPí>Ž/8÷ÖŸ b­ýÎxã¹ÛØÍ_·íØÍï]FºœÞuvA<ܸÜïW/®þ©‘É endstream endobj 446 0 obj << /Filter /FlateDecode /Length 4217 >> stream xÚí[YãÆ~Ÿ_!¬I,šÍ›qÀÞxmç°Ýqò`;W¢¯®%ïñßž:û ZゼåAC²ÏêêꪯªzÒÉj’N¾¼ûüáîã§u:1iÒ¦­™<,'&/“™I]ÖI›—“‡Åä‡é³Ãª?ÝÏò<›þåÞL÷³¬žö{x}yŸ5S¬+Ú*~¿ß@Ù/Rf¦ü6gü|˽K~~½…š-6ÆAj 5ù´;s‹ï±ÿ‹«»Ù“5>vGü‹mWûûŸþüñSSú¤çM•4u +#¢kls—ÊR'³¢0“¬®©*n0\p¨UTžá×/`궘¤ðR¶T ¿‘_n}ÒöˆD!­‡n~\Ys9/^_¯¥Ÿ_c­itú¤A˜­s,&a3p}OÓ–ÐtQR˜Ü|zy:|”ÓÕI¦“ÕˉW°§>¯Ú")›LyõcšÒ¬¤!MLYh«,Æuc’"³M~Hc³5IÑ”Ú䓨(EÒ¶0?%ض,k“¢Í'3“'eÑrí×°Þ¢*§(B.vÕcAEÒÆB²íY °qº÷ºœu»O\Øac¸…X¾qc¬HÖI¤;’\ø½å*êØ/µú$ƒU$ýØqÞ{¤ð¦#½*þkí ³€d…¬9JÂ…æœÓdº—À¦€!¾,•,°ƒÊêNEûÕiR¤õ$£SB]ÿÛ­™IʲœÌ¼v?¦¦ˆm[•ÔE儨Œî~‘dE~-iã‘ÒÔkT^Œ=]|6è¬\Åû™4ˆ·Žõ­4É& ÐêTä1‡.°Î*¯¹Õ1.”u#»V¸B›²Mª¶Ö?¤2)€§uÒ”þŒw_<ܽº3Дð$«€óUû”')ðu¾»ûá§t²€JØô¤È«Ékjºv•t^¶“çwg=R¤cUpÐÛÚðœû8çKwôçw(x/UFW\5PK%ŸŠ‹¯$I+AÒøe:î9ÞWÜË[Âg)è™¶ý_íê-¹µ2Ê:˜±²â¿=¬b£˜2iÍ££\o+¿NWÙ„gýüªÀ`ЦÃPM/VÙÐNÕ!¿kâ·Ø®zzÐMòÚïzQ‹kÞ’{Ò=]“äÂþ +5Ü3g“ûYiŠéƒ7+‰ÅêpbÀí¸ê5·‘9Ϭühð àý¹`"»çÂï°ÁátVð€Uo}½( å5Vt¨Á³ÚnÐEw[UáPG’¾èù£Ã^,ÓÑôÝ y¡&ª·©õ™K›ZÕÁ¶7)Pbu³¦³j¬lº!ô’,ýJÇm¡„>©•¹9²öUtì2ɬÉý¨-±UGµ›d§²Ò­§"ðq ‹&I³°9Èš_ë®­ùûá¾ÉÅ~Áï]ÇÒ›m’‚¤÷›ÞabèáÂ"œõ”°Þ‚ßw¼©P×KÓ%ˆWቶZ^d;çNëÈ1…,GYQ‘ÂDõF§¬¦Gäwƒü.‰ßT¸î„ +]¯ù›9Ò÷Ì."€Øµ^bgæeÆS¼YÕ¯PUvöŸz:„»~-‰m:£Kü? jn¦*²¤Ž ×Úýë¹…c!7õĈõ^jˆFêQó9’Þ+{Ø"W>wªE dËã0Îb×DÐ×@HûžÛ©:¾CK‡hrZMôõù ª€šEóZ XÄ«;M–Úý:%Xõ¼%ŠK«>rÒÎZ^«›×ÚUc-ØY°ß=ºòw¾: ;U±ðÙíüò×~GÁÚ cH6Mó<3mÛŽWl—CS± A†®˜x·§—Ue’çíã .MªÊ6™{2áqÙ¶Úõö@üžGj‚‘fYž&Y]ÃKŽK­“šéÁìdùTõÏ+"ãð#î˜é^u'rsöš­¤5Á£óèͶ!Îòôf¸ØÃ­¼li5}þ^gü:ê^¹)žË'²Š¶xKâÁk¢ø} ¿¿Áï %„6‡~"¥ßȘßÂï™¶¢ÿ¾Ÿ™ô¶øü¤øwüÐÒ,(ÅùþEKqá9©v„cd:$á3"Öæ©ÔbÍ“ Æ•b_¿K¿t¥¿åÇsaƒÌõQlÿ¨èS~øÛ'w"z|¼½N¸ÏßIÍi¼ï³Øú½íGo‹À û½“_'S¼uí:[’ #CÏ~ÓN™iú~âkùêQ©Ä•¾¹g¿þUé‹âÿeð½e0.F×Jäè)s¸!ùxâmad³?‰£e¬ægE™Ô¹ uó?!{Kȉ­þJcTJ6Þ&½[ø J¯ P€„MPØEžVYøå”z̬’,¯no4ˆZ2­Â}ø•‡ð¤Y ¼åRY#D¶´Û!ëÕvûqsk‡µUÏR`ª:iªP;H@++3¤Kر, å ÂnêÊj¨!7,"˜{"5r¸Fv_5Άïsq±àÃŽØô¬Í“YÏ×»’háÕîõÀnp?FaxJB~DÊšA¯£Ë-8¼êNO¡ïä€OÓ< N…/ªV=ðåôG“÷RÏp?¯Sôä7‘íýÜKG¢¨3p9~fàm¬#½õ|ÀkÇ…ðå²âo Yh wìŽpÜ«mdeuêv<å¢÷~á¦#x[Y£÷½î2m·x='®‹G êÌPÛvL£‹mŠžÇÂÐäIë¢-NßGd!K“ÂXÏZ¤=&_iÒäWCƃØubŠÖE¨AÂUšÞ^/y£œ¥P?µ¡3]­Éò¤n­º¶D±ô†IG#ß—ž¢ ¶«”»¤ Ä‘ÃÃëXzûDè…±˜þlÝžA<ø¶NZ û*ÖL›‡qí,oé|l¤ÆIöSF Ê&µ`­>NU*¡a”0,²§$$ŒêÎŽ5.̯°Ã¤.¢ÒqPp2ô¸ÉuËÉžª´Ã-8S#N³’³Ô_Ò#!pÿɳápÆÇÈX\0îäâ$Hi…ß-û^}\VÒ6Éîsðæ}ä¸h \àóÃNA’ÙíçÒÊUX(Nç¢]7$×$EeO_ˆ’b‡5sUúÁêoéÀ%åqÞ£×%ˆIÃ?‹ŸŠ1v€;eò[§I=–ß`ƒÈßîæ^HƒÔ¡ÉÄk4y ä/yT‰C3Š%a;qì ö¦Š+s&sîŒ3u DdrÐ,yn÷Ça¿¸"-Ë܇A'gü/ãòmPÖ?ç.)&05Oš60¢7€É’:­ß ­¦²X¡÷´› p  W²¦¶ÄfuŦoÙ]D¦gM°Â†£’Ä“¨*’P#ý U(/øìäÙÛø‚˜±Ïö‘äŒÂ„PÂIZùðªøM2:×Ð`(¢›sÌÍDEª0åT#·—3§¹JÓ ƒÀyɪ ËG‘@Ä^U˜©ì¸z×ówY— ¡œÎ‡µ¡´]FÙ¨ek_ù¾íãÆ°{AK¶1%ìp¼èé˜a 3e;«‚ÊÉ&ÉFxš‹*Á@%*žRbÜ'òñq8‡j±°Vm/–[)°û¶ñx èÈ“pFSuÖÅò·XÌnÒšÓßeIJµÛ›Ž¸áM4Þd(tÄ#¯HÀXÚÉbÆmèƒËÝ–óuœgÁ’ý([¸“´øzÉîm”­&9W'uÐ?"œp©Å4L-öüΞ¦¿ñä³áçŠoN@ãÁc—g·ä²UÏarLNŠ–¹ƒ ãh-{áOÈš×q8’Z7@6Çš†õ»=„5ÝùÀ§džõ,râä°Û‘¨—2ÁwɬØK2Êkq/ êL½«cØà4ž@½×BQ—áp ‘Òk©°†q=òÅc‹¨þHÂÀnaÝòÖžûï +9‡åÄóƒhÞ8"ˆP?J¬lìEÌL6œØdÃÅÄâ‚&Tì2¾ )”Ï¿ØÌ*[$A•ÝV‚tÃæÖy²ge¯‘öà›*ªp—‰ MÇ%€ •ì£ÓÕ“ùènÖ²„a§~¸NÙ`ÎhÉOËx§éO×k‚ªÅÆ?N@Àƒ`+ÓmåRR@*‹,'eßàkGÔ²¼onz™‡£ËKjZRvÏäÄÎî)£—„á ö=Œ—Ô2¹'£;?YfÂ[ZÐôE•Š^»$7}?»ÂPC鮪 ~Ìt£\¿4©êGW*Í£ÉÑhf%/‹$+G`â:ÆÃd‡ ö¾.Œ¨3BñŒ£÷ΣҋÂüLã&ø:W)QlïbJøNW¼ë .ÞÙK$ »ÈÐì˜`¹»½ãU?r¯ ¤žÝX5t'Ï`Ñ,Äev8˜ŸJóÕ夲ðX0爇Ÿ£ s¾\µ;¼fvغX ì¾H­ÞÓwAŒÁ§;rÊ©!­\—¹+pÙÈǧ¦da7^𠋣؅j(=޵·NÛûº¬ž ͯNÁT–²CD°ÖyB3|Ó)jAsÐZÁÌʲmµV‹BA°¬~‡´´±æ ßÅGV™î0‰k “õê5³Ò¥M&+¸½áŒ“c\{Žqnï]bû­Zn©Só‰C¹KºÖ ÿ¯hv€Æ\‹]•ÀÚ¤q ƒ& +õLÉȵWnœj¦Jšì¨;&²ÆyðøîŸÁæÖ…Q"F­1}DLiÖ2$èE³á4ÞÍqä§½9ŽC{q›¿ÔÙDéŽ/?´æ}.?dij¢—h7û#º¹5zól#¸¢(ýuŠ¢÷O” ¢ÅI— 4ƒ[x-;QýY¯ÄoU½¸n5WÍ9Ÿ¼Í®®þ´Áë‚„oñUò?“É{EDb¿x‚%?ˆ3ºß`%àÅ\* —E“À>_¡¡$ª`¯ð¼‚=×{ŠÉ¦ð߯cè3àЙjïºu{µþÌîO‚³¤ö™l†Œ#fB³Œ± ˆd¯½ð°`ÑÊ-]FŠÆxëNPY w|§6‡Õ`åÒ«Á°UÔ@ÿqyÝôE7ÇOšŽQv%`s`ò„C²¾{K ¡Þº1t`ØHz‘S,#·×`Ôpó0z=qÍ6+ï· „5±jÆ! [‹Åp·%§QJg ±”N'ˆîƒÜ,Õ@»çk`=©t/ÕÁ®JšO_\4~;æ”UyhÃäóF²ŠþËFaÃÝWyl7¶3ÔÁJüˆï¤ÿÉsrãø·²Î®xÁ®FG½{Š&Žy?'æP(wè£ÿEƒ@¦ã£ö0pÍHb[Ý] -ÿÏêÄ‚óûû™ª˜Uwv>6†SÓF•ÅÚÂC¾ÏÕ ú7e”f§'Ûü7oŸ‘¼p€šhQ„jªÀÛͧ‰fAÚèžßû Z™ë·\¥ad—À ç“ÏG0æ,3í­ ö¢^§f ß‘;`ª.DðFO8ƒ¢fAIÖ«$Kªz¿*©Ï/îþ¦¾åAendstream endobj 447 0 obj << /BBox [ 0 0 432 576 ] /FormType 1 /PTEX.FileName (./figs/Ex1.pdf) /PTEX.InfoDict 221 0 R /PTEX.PageNumber 1 /Resources << /ExtGState << >> /Font << /F1 222 0 R /F2 223 0 R /F3 224 0 R >> /ProcSet [ /PDF /Text ] >> /Subtype /Form /Type /XObject /Length 18980 /Filter /FlateDecode >> stream xœ½K¯-¹²•ûõ+Vgá·Ãô.—  $î=‚¢ƒxHh:ü}2bŒáô\Ug×̪}hœÚg¬tÎtú¶#ì/ÿ÷Oÿîãÿ”>SJçÿþ_^œýãÿþôÿÓGúø/?å}ýïü”ýúÇ¿ù©ÏT>Z-Ÿm~üü‘sþ[ûø‡¯ (Ëüœ%®ÏöÙû}ò¾¾êgZ÷uÊûúëïÜ)þÙŸåÅþÏÿéŸü‹ò‘?þüß>ì“þøSü7tOŸm|´Ü?ëøøóÏÿ(}–üñçÿñ· û\ëõ¶öÆm6?{}½m¼q[NWq~É¥Å}÷çŸê••ùÑÚøœé*È^ògE¹|½Þ>K–<®ë·û}ò¸ní3åû:ä}½§ò9ƾNy\G†öõ;W½í·¿_ùOwA\Uܯ—où37¾|z-´ïÝÖ×ç\¼­¿Û´ÏÖã¶üäik~æÄÛÞZ¿*v¢b ŸvW,[üO¹\EÞvŸ“îu~¦zi–ó«Ü©ÿÁ{>žY½î®FÕðÏ*þÏÿù¯ÿáã~§U¼ ÂÑ@ñ‡y½îÕ™zù\5Þãßþó¬÷ð¿äÆúg²ëÆæïÎ_•SÖõ»v]IŸËâ©¿ÃP}\&á3»¡^¤?û†ßá-¾¶«$>®âþ¬vý¡æŠ?ÀZ5ó|ùÆÕ/¯[®„·\ÝáÊ^kësü!þŸ§H3þ@‹v•@áÖg¾n¹ ÿ`õÓJüadü!ÚXëõ³á´zýjDÈÇ ëæÈi¾úUõVîaŠ®wÜ$Óx=(wþe|–뮫m,<)—«¨W” …éµ~æqÞå]9—_^»äôôëUJÉáõ¶×…ã%æôz9^sî,ˆ«ñgYTc|ŽtæU ­ŸÅ=ª…£BÆ.VÙÈ*;Vê•¢¥³Ú¯¿—u6ŒËd$¤`Ó¹þPPl\W…ÊþÚaò/Fö¥¿„¾lYÊѯ^áÝå½ÚŠ_¿©ŽMnö·oBó‹vZÞ¿©y;ñ†I‹ûÖMë³{ö.Söþ;ö™={ísÖ÷o²OËx’½}ÓÕÚZ‹Ž3Æû7…Eð›®¾{“•Ï™£ô÷ŸtÍ ®Žè­µ¼_O+_–òº©yÉ¿}Ópûã}«¾_ä9…)lW/+ëÁ]ýÓ,îªï·‰|ÙòžÃôϺÆÐì9¼Fš÷ #çåÈ­ÕLÇ]÷kÝú|ØÿÛôîôóO²å·.s ûAƒIûr5îìöEƒÊpÛvIØ'´âKr@¹®º¹Òp2aç5˜ÌOó_ÖPbJh?ÇÚ×ëÝŸKû;¦gîš7Ð@ÏÓ/~éæù’‘ŸÅÍk žÁó ×,bö˜Yüê0ýeÚ©ÙË=ïÌᮂRX>x_2lŠyWŠ9ÍÀ”.uNqJHóŒÖ«mÖ0çñÚ—l°ÿQ—Œ¦˜}þí§»xI›mF †å¿ä dbƒÌ^Ü-ý¸º kŸZéÖÉ¥gòj1Ÿ@2WH\¼º£æ"qõ‘?†¨ Y1¦­Ù‘8F´KÆƒŠ¯`.ÙPë—¬•W $›HN³á¹‘¸‡¾d4‘Kv\rIf²F®†d#C–Ò(;Ë*Þh"W*‰a;óÞ˜ »Äs yÎþOH_›˜[†4ÜÓ¥Æê¾®H&ž”JìÒçBó¾×W}l r;WÞùSr°;$'ÑÙ¼³ãj-E‡Í9†¿à5¢²è:eEÑÅ4ó’åœyuá¦7³ËŒä9ªì’­=° r†ì˜/%ÌS.ÉÄÑbas¼ãD»ê¨AŸådȹÐéâfdò’ÈÕ„é™ètן}Ür;5!çÄØŠŸ Y ŒZ£Al¸·úXà…lÑÙ§WÆ%‹,`]^VþSé#¡tM ™«A9quƃd˜»_²á}ÅëÒû¾^ÿ²¢¦vfÈXUš·˜Þ5Ü"EžGÔ‘¿¶A T4ïóz—ÑC/Æm±4LWgƒœ‡q£ÃA58lrB¥\2zwòªÂX‚Ä1•¿,û@í‡ùº¤ÏîÔ6&[{B#¼Ì~âÕ Ùq5&Í×,ªàê膫+aÐ {Å^vÉÁæmÞ®FEO¹dL^*Š}v¼QÅ]’óû˜y_rÖÑÚ/}°¡Íáoæò<¼¸ ;yÉè¿=<.#ÏýZ–D—ìh'úoG±ÏhA‘8dY£NCát —\5r…L¢ñ{{Ê=…ŒÖ~ÉÒ0^5–F ð)>þú²pµS!ŒLdò’†b6i9£ñ_²ÃndÏ•¼oÆHg1\ì¼äJ¨_ßkžQ'†Ô9ÑÌ¢~Õ0Âê×­JHŽ) ‹jc…&tºKÆÄÕ±èe.d_w›¼¤á§P8ÓÛõÉ)ãóƒrÉ í™ õKVŒG™W ¦>¡-µö¬À ‡Cê%'†Ô˜{Y OØO+Á>WÌö.ÙQƒ1½»¤µ¨ýÈÆÊXz6XàKÆ@ÐÑ6«¬{5‡œl±^¡î°ñŸ˜Q¬‚ZÙ/Ù1½6yɉ_Ž•ÿ%SCÎ£Ž” 3Â&zI_p^¯Ð;¤¡"W ¯Pasý†µÉŠÙHŠK²œ‘ÉŽ)S‚Q½ä„UÁszYbâ#{=ä‚ÙŒÞ}Ín}Îàf3Arh³(vCÇa#¼$-atÉK.´÷.ÍU¢K®¥7FKvŒÝ(öÛßàWsJqé>qÝP´1³s=Û]Ô®,ËÂýQ4QoFO0ø®£= äÆuÔÆà¬<ÜÏÁÔu̇&º®ë° EžSÅÔkb’ãº0}§弿ÂMÌñ×½wÑUvú†*åÈÞ½ôzÝðû×;ÚËDwqík§K/£XÎŤÓuX&C —¸çgabéÚkzÒ‚¸nZ×;V9&íÄk|+(Ȉk^ŸðIU43×±*j0:®¯5_»F¢Ô¨½||ƒ¶˜dÌ®÷ÅÜÖµQûôOw|Ü+Ô^¿“ãRNá”r];µwÝÉU˜kŸò\:UêXDW=oEù_ïCˆ/²}”¸Fx“/í¦~f¶_„Ó'§ëáÅË|ߌU /Òãù9ÖYþû=SûJΟŸ¨+~Òágo˜¯»žxßÖ¨½¾¯Ñå—1Ïžœ;ºŽú6F¡£¾ë'Ç»Yby^ÚÇ.ËÊO‰þgœÕçŒEó5ÄåLíýÁTž—ö±@nM×>¹¹tÑu7Òîü1jŸ \z üš~?ê7)óÛðû M×a´ÏKG~Wñ9œè͆ò Ïu,•]û¬ö ˤöò6ÎÛ]{}'Á®}bœºúªßG£Ç;¼94ìÑ¥½½¸ãwR{ÿ¸~ö+Ïh¯¦öšÑŒ¦ñˆìóïÆ~g¼²\æõŒG–Þ¿,‘‚ú(–+ËgÌRúHQçKÔRúHñòÜ;4l™¯õ÷Ä-‹7û߸,5ÿ®Èeéé/G.Uûî_ðÐ#µ‡ XI¿Hqu÷’¥Ï>'=S@Ÿ)ÜRŸ) ÏWÛŽ¦R@)zŠN»SPŸ)®6bóH}¦ÀÛÝ)î·ýÍHhž0šÇAàO¿¨öïÞ8b­ù«Íå»÷]%ºGQíß»¯—8QÔ£ÚØ,ט~6©w$sÜ«þÚd8ó¯Ü,n;¿D7ËÝüm3öã›™K%w4­ˆoæ•¥šŒå-L¦ÜiØ—¬›¼¡þ—×TÅ„Ôÿ²1ã”öú‹bt@Nþ6p4 ×_JÅÄ·`àñ¿pV0¿þâƒEveZÊkºgè•–á¦6…G‹GlGü…A?·& ËjeOý-xÖî¢g¸±ø‚ü%ÖÉ¿±NÞå±NFúôË—¡óå鋹;‡>ÈŽ—·¸†õž_ÞÔè·»KÄ|ò“_JÕ$õ¥ä}‚:_jçúË/5¨IÝ]Ë×_¬¼´„™”F­e,LõïuýEq^-Ð'¦g¿7ð™½säh™ö~œ+»%ÆJ´>ˆù’tbþä.. cbúî]åZu,Êíý¨ZñEöÞ¬÷Cº>†–øÊ°ä §QxKÞ¾«Ð½=_ãc¿u×À‚Þ´æ­»®9F,aò³»zø¯…EpW‹yhLÞì–†I¶»Ÿ< ¾½9Ÿ´ÞâþVâAĵ\ƒ@,;Ãuóö]t¿ÝcP¬)þiÛ‹ÆÅ›,JƒýØ£O‡-ÝcÏıGžX3\Zã΄­Û£ŽÁß»ÇÈ·Gœ… Ó¶°‹)ÙàÙ`ád¥çÀh(;>9ÉÒû&°È?Ç‚¹0‚hŒqgÀ ÝÞ ‰~«jâsÌUÿÒm¥±b#Ø¥;bñX*Zìµ û4?‚…ÇR kÔ†0tƒ+déz´OlÉ»4ì¦Ïá&uƒºëA½¨ ®·ñÔ•Ú]Cž^× ñ}æQ“™¹¾t[gúWH¦kÆGA¤ºb¬ºîk•íêð5oFz”¼ø3ëýéšÉ˜åä{;ÒlÔvÉð{t½dºò ;_\gj殽«w$¶ÆL®Î5\w–WäÇÃë(Ÿ•åŠÁÒ“Z×p ¸ù‡ëqÁõ73<³® ÷ÃU±ØfuÍômP+=zsÓûòþו\E—^ãÌ_GoÊtÕ¬ˆžÄû%êW’áy®L×Ð¥ ËS×Ëzª<áŠXˆPúï5ê÷›º¾ð>pM¹SØ4Î@wôÔï £k¸F6_LÆÀ\3=\k)}äÏ­]`üõ®#ðµPÿ%ÑÛo´n)Ãz™Òìâ®×T²F‰A8Cy»°Žuк6ÜõWÒÞ®P×óê‚çYÓpµ¹/9¢®#R·Ÿ7•¿Ö©'®wäÏô¼iÔ ï»õ˜gy,Ì-—ò·öbµR‡«›ö­dFZ\k®iý1äŒ]‹ÏÏYö2ê×çOõöÃõ<ì¥|$ªßBWàdxÂuë÷†™­¾â÷Ú¬®}F©öSrßpðû#æÄ®;uÇõè?>s+¸Î÷på2Âå£c-wu=Ø4zN¸¶G¥^°ŸÏC0yrÝçš+ Œ¶¾GªÆœ"éú‚k7\¿¥D`9\Ï…ºb´Ey•„þßø~%!ÿåU2ú3]›® \ÙMš®w´ïR4šc´/ˆQÏÊÙD‰uºkÌ6 ú‹çWÚC³²ü/=P>hŸ…ã!¶°_ºm×¶tAù ~ úÛdœÛµ•Û~—Òåj¯‹ºÃþ$äj|<®Ô­õ{ép…'ØOŸí„«ž\OÜþQØúp=Ñ>3Þ—ã×¾Îú>tŒwj¯5Eÿœ‰ù¯I¡ÔWÅö¨™0~ø<>#¿ôNh][¹í­ÏÖØþ—Q×u”Ï¥ ãIÆók„ž4?qÝê=ž»žùœý±½vÒÌÂÙ`mh?ôr¸6Ì¡3~¯cÅ\±†vãMÃøáº£}3±›¿a7„k¸Ò'7¸® %MêŽþ3”~â÷Ñ/mhïh_×l6êoçg‡ªÐž/=Ð-QæCé ïSô<:D‹îGŒü.?Sùcv^æsI¿‡¸øL˜ýûÚ*ö³áŒÍäÞ× öí½elûZ¬¿–÷xåÕÊKhÏ5í+ì×¥æ?°ß­jþ„òkUã=ü‹­j>5”ž~´·Ö ŒÐ‘ë†ò†½âæ¹]þ ¡lÙtÝ#;›ò×ñüF{ÒŠ™ÜE_¸¿ÎC{ø½û¤wÝ~Vj†Ê°ZiµÌNû×&ìùNÏÐeg}µªDý7CÚé õÛ1ÿqÝÓëuc¨õ½äPgùÆ~§X]uêU3Æ?EÐìcOX/0´ç:ê{2¿=!´ÇеëŽÕYÖj-æ«ZýõŒúÓüëÒÞ?Œ›¥\G¨*a~éÚC¹–±ÙÆu„2ûC/]q[“ko¯&{~iŸç¿®}~e²O›<óßÒz·ÌùSÇ. Ëœtì^³Äñ¯WØõ—Ž]W“¡8÷ÄøBÏ©ëŒãAÇ^âiÊoÃ|Gó½ŽÕë4Ú£kµ›ðûo/]°ú5]wû`:C‹‰ãgÇf-ãÎL×^ß&{Ò1ßW(Ôµ×·/CuC¨sèz„rZw¡\µGß-\"ôÉüÒã:Ù¿:ú–Ðjœú6A†J u„rÖ#®#”;t¿é÷Ó¤æï£ÿwÓïó}0ß½ôjÔ뽺Ï&¡W×¥íðShŸ?¯Ý~1?¾ôHÔ^Ÿ‹{? 6¿¸ŸöÇw¿\¿· <â{ûüz—öö²B½®~/ÁÛ‘Ñ^5ŸìëKÄ_ªÏRþ¡ÜÚÚK ¶®õ%”û‹ÔwµztâåJ),¿„r¥/ϽóñGC¹µÚï åÖ>~W(·Îþ»B¹uµïBeí·Øû³ZCÏaZ£ø~‘¢ ”‹­³G s§€>RðWwŠã)¿B­Üá§IB}nÄ*‰±×wŽxòƞ«qž_=ÊM±Ð–ËK,”ú>ÕÉø¢¿ÄB‹¡Æþ ±ÐŠ#G,ô_ýûúrÒó7íÀ‹…V®LVl’þ9þ.X/lF>kÅlÄ÷ë!¶&ó° þ3ÿ‹…G£â/×ëéÕÇ«> ”°¢JC#²8/ö¿`™™N^VÞö¶ÿËÐl„‘=™KŠ"VëòOÓ¬„XèÐ9KïŽ çKõ¦2P;ÎÙ°?Áÿ˜aóme¸‹§"ù—#Ê»zæz}ÿr÷ ×8ŸÞö:r}±oÑ3÷qî7õÚiõ,ž&抻ÄüHôêg©úïôr–|ÏUoÊÚñ¿ôuÖ ¿Åk-û/+ Z‚oÒxm-½p­z·¨Ò÷»£Õù憘ÏýÞXh½ÖÙÉ­Wyi¬5B;þ¢d>ÈßÀsŒ·ïÂÊÊk§=Èa‹=£=Å›·ïòYöŒõà¬eÅÑÌ8£üàY~BÁs˜½"ß¿ óV¸ß¾kÆ&çžb‘òþ]=Ö—µy®3–Ð~W}Ð6,~דZ6ÎRc¨yû®EßÚx“¯î¡‡Ç{½ÿ¬–*b¡íÉAÜFoöúR_)*kÃÛøóO²y`µ#‹’é=–Íq§ø «”¸_v û¥]òùËÄuÚ¾TàÍÓ˜³Ÿö31š¢ñfqãªF›EÛ©±fUæ‡#ñH“Æ?¾QF¯5ÆLž§Ñ³øü¿t<ôËTN{*÷ëçC¯Û Fükü9´ûöÂ|È×Þ‹|„x ˆó¥±/?©=Öè[Et=ÖNk¯ZÂnºŽq×uƒŽµ·ëA­ëî E¿u½Â·± |[®Ý·²¸ÍصÇ&WÅŒÁ[SÁóqjµ&äOék8Mý÷b-V+b‹Û®]»oq16Yé{EˆÚÐ×c,­¾ôEß¶ëÊëF­‡Ç:\OØ¥ð-úh”ñ~1ŸpÝq=| ®™ßü´ðu/-uí¾‹ÅXžëÎòÂïwµV–Ž­ªüŽè´YBW”çªÔ¾¸Z•í¡bÛÿⱫZÙ¸ Û5Ó·J­ô¸;vîû±U¬µ]¯qæ/œ(ÑÛŒz°~ 5g•1ߨ-aŒ)ˆ­».(Ï.=P~1W¬-ïò4Ꚏúi„=©Þ§ây8ž¼¸ÍÝuGÿ u*°† ¾†Ú°óbuøº+Ï$_:ba®#}WzÖï€/ʵÇ"yÖ_úâ1׆¹9¬¨-1æj….ƒoÌçáË0øÚ\GùÐæÖµá~–öÇ,ClØõàWX[ãYœVL”ã÷ õ²ãy=+áËs=qý¾ÃE_ë†÷í:ìÇd}¸/°€#”©;ì™IGð…Vž ö3RÒQ~<6Qý 0®Ã¾uí¾4úÓ5ʨ/“ž§½¤“a×/}iâÏÔa:ëËG+¤Gývœ¸Z±×î«_Ç0jgÿ o¯Žʆ6êŽëFF}7Äz]»/t5öWœÃ¾û«@KGÿºôÄè„öÃÃ+#vQqàtûÎ*¿µÅc.®Ý·é³ƒD¾<úf«oyÂÖñXM¹®XÂþ8?:S{þ]#?1iv û1ºfYák­8סqVÎŒö~ v|=¿êzø.Ûë˜ÚÚûêÛá[dùψ…úû5}‰¨ß²ÄòIÔåƒö8ØßˆÀpm¨Ì<È{Íò\áÛ]í}b¯ÌblØu«GýÎ8¨õÙM†ï’gn+6!E{Az¶‡ŽØ¤ëÉu}¼ßäøÅcGu²¾ rãWò•WÝñ{è_{¡VçxæAžqæ·Ë¾ÂžLÚ;ƺ}¶–оK¡®ë,œ^^ŒuWŸ–õc~2áÛÞã9‚&\@s3f—{acÕ•GšW‚·ÄµÇBWb}yÐí½-j·ß¶8žMÔ§Ÿ«5êÉö ‚|Ñ&ûîAúÂÚgú~]é'|ÏÈ¿>bˆ ùl6Ï#?ªÜíùÒ{ZŒ»ûɽKÕ |AdL¸¦oïoˆEïò³"{Ãß«˜Ï1–ëzÂ~eü>Ž}-îìvÝ`Ϙÿ8êóC똿tŽÖ÷xŠëˆ•ìöjØ«³çƒ´@ûAÿ³¹gû™šóKôg-b>2©9Aû÷Š@{áûqþ›´zÀÞ¸»üwlöÛ !ê«9Žú^:–VuÝkAy¬„ûí×B,Ùßg%Äš´zZŒU0öèº0½®rÞÏXŸæ'+¸%ÇõõkƒóïXéü=´£çÐ×·a_Ç'Lü"V5©b'ŸWEl¬q±ûÞ«eÌ÷'}ºæÞ¢È¯ëVî½ ®»Ý{-\ó¤Æþ½…½„é³ÎÙ£.ð#Ïsé†cä%QÛΕzâØöÐï-óí'ý>>8@ã¿×¥ùûÀ%ÌwuìÝ5ÁÛãÇÒAQ˜‰ºàäGØ3× L‘°¿ .é@ŽHÏréwm¤ªàyÀPù4t{/ò ­pMâÅÖg™€Qr§&(ÄH±?лóí²*õC¡Šñw7—ú¦ð¿Rx÷uÊû:Üû:å}ýõ‰wî„Âëï~…÷å¶÷)¼/·= ð¾Ü÷…Âë[c®qX^_­÷“’{_fGy\w»rSx)ïë5Å:C×)ëxà¾~?ÿMʮ׬ٓð&ïóyòz‰n¾s[Ew{Jçu/Ñz¥óU^x¹êÒîa8¹_äN}ðr8ý¡aTÀÿ|uË(êŸÿþïþæÏ¿$æ~džühbnE|í&æzå0ü°¡§àÉGX†¶o¸jÍë,áWk¦£U€V¿e fëSóСG@ýÆ\9ôV..l¸Yjšú X¨ «|Ãf«ƒ<ÝÜaYÜý¸™µþ—Œ·‘³¹i¸€úÖ%žO%öÐ7û½sÝåg/wEHà…˜ën7ýOGå:sèá¹[¾DY‚üò5KÇ(¼ ¢,ý‹ªr³ ³ŒYÜ•3‡]!e«Ye…¾©]©îCïgµ×¬¹lu#ŒÙtÊTŒ•«ÖAÌ­åQ Ä\orù}ü(ˆ¹›ÒŸs}?J{?ÔbnÍá+zFÌõ‚ÈO‰¹KÄ\§ú³ »¸éýì˜ëñàh*:kõc­ïW.ˆ¹nb„p±-äáM$æºEìOîŠM¼~WyB±q>îz?>JbnYqÎê!1·¬ô þ>1×»Óµî1·‚&#b®7—X¾Ó¾žž—ý!‹Pö)oèáÚ¿,b®ß3uÚ¿ÂÀ ícIX—Ð~fÃh_³øk°¿’2Ð8×óMÄÜh`áÀÈg±¾8x,.Ò5t¬ £ø]bîžjþrÏ¿CÌ-«cÖbnYSþ$_~_åÞÄ\V·îµ¬‰ b®Kø¾biM<&bnM<‰‰K.ü|hrÙnb®K,Cƒ¾²|ˆ˜÷ŽsCÆš-BRñS717®’§k¸7¦" æúT%ö¶‚˜[s]–›˜»bnQœ@—Q æúÁ1×帉¹ûõAÌu›S(;LP´IsÃ"ÝÄ\/Éè¿`Z¸Œ£C æºD&'ŒÛB•˜[Öȸw‘§»Ö]ƒ 溌I6ˆ¹.õ]Jn$•yswÛ˜lí çÐã—燈¹.#bn…ßMÄÜh„ãCÄÜÝé@ÌÝ=Ä\_Ý4&öÉKê¨# ]ÜÛa(ÈØÁiši»}üs«oB*"æúB+¢V æÆº‹‰#ÏÄ®ƒ˜ë²ÜÄ\—ø©8l÷F6 ÖŒñ„—*N‹˜ë¹Z¤ÜGYê b®Ë0È æúðÆÒ "7¡4¢§€˜ë2“§Û`d¢ºAÌ KDnQ '<ˆ¹.A®-x_"t@ÌÝ5b®Ë°À æV¸]EÌÆ’ÕÍ艱~y°Ã8¦sË ½e @< GÈþ!bnÈú!bn<7rÄÜÈdù17Le”cº æÖD|BÏQè,%"7÷{VbîRAÌ cž>DÌu‹ss£s½~óMÌu9Áõ©a2L]@Ìu ’+«ŒÛ<@Ì?{Ë\N"r+š¨ ÛáK›Däβ kìqoE¡¿U‰DD®/8Sç/WLú†àÆ+tÌ‘}x mÄÜ]V æF-DYuL™2ˆ¹a¾Bô2žØÅ`²§y æºaŒ–bnY<bn$ŽŸ2tN17Ì×MÌ!5*ei®­ÄܘQŒsc@žîÂÜŒÄÕ„·ß:f”ƒÄIsw“˜[Aø&bnÔ›¹Åîj%1·‚ðMÄÜš…±1×5 ¸1Õ©YX s]Wr}ê•Iƒ&1×uQ7Vûþ æúÞUîëq>>îÔ=¿‡…Í@AÕœEäípʉ8šèí¨"ôƱ;_•$­Z|žyL”Ä\_ŠUq[ÖwAܤäM쟯Òñs}IÕDÈ Ÿ”°- æÆ ,Q[ m“ÚËçZædqs ½‰¸>·u-¢®OAËn?±¶q=¤½~/½b®ë“˜ ÄL]á߯ÄÜX^êz”ÿÒ*/°¾fDþ@Ìu½‰¸áÏœl æºîFí–$s+‰¹þû&]°D–ÄÜZŠˆªhÏ…«&sýýºˆº^ߥcb®»â@|1×}†ý æÆÒNí6t_ÄÜØÑ©ßóþW¹Õ†ÄÜí¶$1×wL.p},¨SÙ æzúysc§´O*]®$æÆÎDÍßG{17vd*½/A뮟†üû ˆ¹áŠ=ˆ¹±#ò æúÆ$íåÝ*±@ æúƪû}Ò8!17v$VêˆÁˆð b®ß¿¿«®a®¡HÌ x>úC-¿BÌýñ±E2ºvhÌ«#¸ø‹Ôwðœ®;õ‘$®;õ‘âå¹w>þhˆ‘ÄÜÇ1FÒ`I½xe$1÷×£ŒªýÛ•71W}ì¦ÌÞ)@™¥>SÌphÜ) ÏØ r§€>RøXa—úLœÝ)K» ¦ä°1Rrý®gWIÉ-î$yP† äúÿ±\RrÝŽõw’[°©ø!%×­èxrWøóü.{P äzÇ"/(¹Åú“Ø1)¹nWç;‘OYƒk6Jn8$ÄÁ¬ð‘£ÈÑgs#1ö,q£d·¸Ô¸³š8‚uÜŸ%®]Æ>räˆHâ†q¼áYÙ`ãÞ Yiß~Pr½•“Kƒqferc8ÊØ¼¹3>Æx›W#Ì$wçû”\ÏÝ(7%—ú·(¹«)7%·è“Ѥäúh%×g‰ :¨¨eÒsKJn™…ËuPr}£Û¦ÞL£á~%×õ5×£"³s9J®k¸C@Éu w(¹EÄwRr]ƒj JnÙ%7Òj¬Ì.Š.b'“ñRr½ôIõÅ.È9D¹xwº“’³Qq+®gQq½õxþu}6<ù w‹§OÒ×—4ó‹ꀒ[&CN¤äz~‹(ºåE kFþT>8¢åõ³DÅõN;y2†”\×I݆‹ã äº†»h±=ðd')¹þ<|@GN#=(± ï»ï#=±12S/ íMÄ%·Ü”]ƒ5ÌtÇ‚’[f•8èÞ¿Ð_àov Ê(¹eðÛ ¤äzc”\7MÔ\·^ƒAeRr‹¾IJ®Ã©ÈÀ›ë.íå3Dí%·è³®¤ä†žÔa/D-%×5(a ä}~—”Ü¢o»’’[ô‘FRr‹>GJ®¿(’ ä}=’”Ü£<"Dêš×V¹ƒÔ1Pr]OPc#ºâå‹üÁîT=PrËÍXϰ—tg’’ëzŠš;{)¿È`P…”\× œ’[6µ”\¿Îç5”ßÒïǺHPr]£|@Éu j(¹®Ae%·ˆRMJn¥›”ÜÝ_IÉþÕ©'ÖZ'%w¯«HÉuMÊ1•o¼H1n %·˜¨k ä«#0ís”7(¹®wzÏ¿5޾Øè×ñ~ äºÆl¡p+#ž¤äúý¤ÜF\ºèd)¹ž?”(¹‘_Qp¯“¯FAa%·LQ: ÇCn-"%×u=(¹®Q äº='õ7N*‡ýFú{_•Ÿ8¢éöTBPr‹>ØGJne”Ü"Š=)¹å¦ê%7Ú ~íaSºAÉuþJn\?(¹¡u=Æ»$êkp@ʦ€ƒ’ºPòJ*(¹Euù §¨| äQçIÉõ÷‡=%·lJ1(¹å¦Ö2¡ÜTÙŠòâxNJnÑÉ+Rrcv& nAý’:ÛÐßöl1^oïST\Ÿ½ZÕûÆD'| ¢âz}ºD×ç@û×§yÆñŒ”\×›¢Ë™>©´øðûM× íÝDÁõú3~3—”Ü»=ƒ’ëïS”>æ#& pPr]ÞWºI¹÷œ”Ü(?¥ò/¤v‚’ëõÇúZ(oQ¾AÉ ûW¨ìg’^°Çí äºÒOQÞ äFû<(¹þ|”XNž¿) .çO›ŠõM )¹1ß,Ô1ÊOÃxo´× äzù–ƒ’{·Pr£¾DÁÍ)ê“”à8ò_tò’”Ü‚iè7QrcÝ‹ë÷‹úJ®¯nêAÉuñ”ܲ)— ä–Åí¤ä†>(¹÷ê”Üã÷ƒ’ëšÔãÀ­ÆõNö{©¾°³ËDU%·ˆ,@J®¯ÖHåûjïJnYúF (¹®M×|j&jn‡—kSu þÏrPrãèD¥æV؇ÎM­I”Ù ó¸70‰¢Ëð6úH®·"\MJktŒÎ&%7ÂéÒ†pø:(¹ž~So=|›EÕ%×=th? äÆö QtíØ“HJnìd·[dHÉÝHÉÝ›(HÉ­)ßß„Iðj&Qq vwl n…t)=·#ðù]Û ²Ò3\ßJnx'uAx=K7„××AÉ @R§Ž“ÆþJnœÿõ6«UTã‰ðj§ý%7±¢êàç0Þƒ’ëÑ‹.jn„o‹ÞÏôû¤Öš~?ézü¾ú?(¹îE7ò;DÍ] ßöLá[QÛAÉ­­©<·ãNáÛÉñ”\º €’ë@ä”\Ä,éߊB J®?í”ÜüÀÛþP~ÿ…’ûã÷Ċí°)1]Gøö)¨ïÀ*Ñbw ê#àaw ê#ÅËsï|üÑð-)¹Ã·Ø<ßÔñ8|KJî_8$ªÚï¦äÔé…p{¤(8(úLyÆ‚óŽ#Žþß)ÈlºS¸mYùNA}¦@ÎîwNß%íú<…ÝgÀ\_É.Å}z9â¾/æ}±Ñ«?ˆë¾Á/>«:½€}w<–ú>~ªÕ_â·ûþ5â·$CñÛ¿ÿ›¿ý»_!ûþ‰ßV­¦x¬esXËýL’÷Šó\ÃÇEâ,èŠáuE•|Åð³½}‹¾°ù²>הŢollNmDk_X¶Åö×ReçÍm±ü‚ì»×­›­»=»›¿[ÆþÂ+©‹1IâÁKpø-ÿrœ=å]1Æó—ãÄÕ<Ÿ`Ä|æpo|Ûoû\×Ë›.Û¼d”F̯ÊYb±ý÷µTÙ8K^|º»vVÖaXÕ -Å¥UËØ#|¶„ÕtbY­eí/àªE­²ë”­nqùɾû»’}½ýØûgÿHöõuø¢*WƒøÜüC²oøˆ“}½§<¡í‚ìKÿÕC²oxÙPiAö-öè 0ɾìʇdßò•/ûÙ·€‹õìkÒLe}¹ò|Höà jÃç&bÅ$ûP:’}iIÞ&û†Ç¢Ýdߢï”È¢=,²9¶Ù˜°JV©e·¸á[–ÍÄV¤í³F–­£ ±à0âl–Ç‘veƒm‘MDZfe±¤0ÒÈ&ÊÒ'®(5ÊٴɾEl:0b)~Ÿì»'¨šùÜÔï‘} ¾‚³É¾^Z EìëGYAöõÒm"ùz¼Îx|“d_×í ûFéFiÚÍNrȾá_—óö·“ì[ôÕ’}ãúAö½kdßí'Ù÷þ=}ïô ûÞ­dßðï'êŠÖýÅú ɾ®A†¬ôÿó+R$ûœ*ú&²oÙ$2}ãùÙ7ÒêÎ닚ù%y¸)>²ȾÑ{Œº³üß®ü¡õìõƒß²¯ë!]1$ Ÿ©5ƒìÏßía“~™~Mê×ôØetêÆöR©î7‘|ëá¿&Ù7ʳS«wƒ¬›4Æ\›¿é"ÿ–ŸH½,O’€Ýõ²o”§HÀ é7É·Ðß.’oGy¤çFb€üp‡bÕó+ÒóX2ɾ®7É7ê·°¾@öþ ò.ýÿ"«ìëý›¤ã}LYïŽt×Öñ<Ë7éwÐßi]î¯È÷ôˆì²ohmÞ_õ"Ù÷þ=}ïçõ¬ü\²oäWä^>äU}úOê°*}]ƒ¬ ²¯ë!mõ°o8½« iƒ½K"ùfÔÈX¿m;ɾ€Êo"ûÞö’Ž‘]¿ðÿ…^Ô £×”Vz<ÏP~•äP}ïöÓÙ?ªH½ sâÊþ²o1‘LAö û-Íø'ìȾwÿÙ7úC£ž-«È¿Üñ†÷ÇFˆ-ꎽå ûÆNßAÍ]½h? ûºf~â·F{²oh¥7Ä/0ƒìZ$ß‚}|èσ»§èÏ&Ù7Vü•:Êkêýâ·S$^ö—Éö ²¯ë|}ãý2µ±|p=Ⱦ÷ldß(¯NÝ`¯–H¿Vû ²oØ×D­xßAöù¼Q·zÔ/Ⱦa>:ª·Œw ûÞíe²=pÿɾaŸpUüoH÷~¦¯ŠO¡½‚ìzPwÚÃNmø=Ãì+ö#¿]öå1iïdoAö½ç#8s}”ÏP{GÿÙ÷žŸ€ìãÅAö-ÆýA$ûz}aþƒÀmÔg¢î¨_ôo}co'ò³0{åî=’}c÷ߤîhßIz²}ƒ$›¿5Žg ûººñ[‘­ìŒö/mhï@öü ê°G“íd߲ɭ ûºn"÷&ÄѾ@öò9Ⱦwùì[èý&²ïÞÃO²o1žÍ'Ù÷¶¸1ìëAöu]ôŠûIºíOIÚèoj¯ û†=Ô\±c|´©ùH· ûFÿ3êÎùH¿œ ‘{¹ºÈÙ×Ë—d^ìçÛídߨ¯ƒìõ{}Ë&›ƒìë«Øî÷Sü“dßbÜOA²¯k’jì1Éœ$û["áfØó%-÷¿,Î÷@ößGú‚þ´¿ ~—ȵöò¸®øíAöuM²k…?) žïÍJìÏ ûcÿ&²oì/ÔÞ'ô'}_t_÷n^’}Ëþ’Üùe¹d_×&’ïö §·6;„dßðu!?C0‘"Ro‰¤dß‚m‡ßDö p‰®ø"$3Þ¾IÊØ±ºêûã6Idß‚×þ&²oœ™· ²:Ⱦ^>K$_î~fyR¸>Z\½êK"p:º^ÒC¬w@ö¨I¦ŽÓa]«gì÷Zã&/@QH´˜ï/»uÔ÷ºu#®DäÞÿÉ&ùÎ~¯Î›Ž¿gÔ/ɾà›ì¼"‘{Ø8ý ûäBé'@$çf°8'Ù7ˆ?ëc“}k¢=#Ù÷Æ Zäß“úC²o÷?ȾG¨›ì»ñ$ûºÞ$àð9“DM²¯Çש &ULd¶Mö TÃAö­iHG`:N)dß }9ɾÍþ*`_üì¦êBÞX_]¦ª¯P_]¥ÚWÑ_t•j_}yÔýäúÇ‚µÀùÖü{h¾ç]ïÃ|Ï»°|ÏÛ¾ |Gl'É77|@e“v÷åheP÷U„/t•ÁŒ}5zk_¦<®ãaûúýì7)¾}Ý'fÓû4^L-yÛû4Þ $Þ—ß\®±¢à}ýµøÙ"Eíe_̽žÔÞ/R‰†/?2^:Ãça —þÍ¿|–þ†¥øÑøÞ~Ò›ÞÛÖYb´ŽªS®°Ã»eq,:fqì“à,Ž%:-,ÌXŠë´ Ö¢INñ(-ž¤}¢ÝŽ}~•¸Å1 %oqpæ·©º¾u;}àÝÑ‹%rqT0år[7š7îÉ­+ÌÊŸÍuD”OöV·áÁ‘9ÿ ?|Šì;݃å…÷ ÜL: @AE™B®(@_¸£€µ\`³*È6óhMŃ ¶ª 3€UwE™E¥‡4y°àzêè‘óg|ÞYž.çõÈÛ¤oœWšãI8 pÞÙeÞgóÎþäã›@óÎñèž óÎøÕ30ïŒ8Ö3./î|†åµöèž òš= ±Ê‹¯å×O¤ó5ömLîN0qKWžtqá¾Wß‹CPF17àp)Ðp& W»0˜Y@á*r®ñ šá¿' ®ñÌ0¸²ƒ àéà€àb§Ÿ¸–™2\ª#pç€`ƒŒßã‚ÕQMk ìÜ0r’G4r{°+âP>"ðä°‡êÑ"ÁŸ î­eB€ã¬ÇÎÙ¤%šDâZüŠr›ÂÎÇøäí~÷8Èe…ﻄ5ƒw«Q ¸[ã‰D*&ìVÑN°n+EŒÀè Ç.VËú!Э ÌÀ¹5îÐæÖøí=Pn= 4?¹UôŒ[ãWà€¸5ž„áÖÈÅàv?=¢SÚ󃇑Gº­5Œ\€ÛÚM¯õ¶Ë½X@Ûª\@¶5b-¶5~_\[¯ÛP—}ÕÖnäí ë†r‰SÅFß9¶FÎ ˆ¶ØW& ­·nâmWÔ{&¿ó‚h ÙZÿ0[Í––ä`+e«P/I¶Ú©C­Š”[ã4š[¯¨JéO‚°Æö3B4À°Õ"lÍD\ ™«1ý0b»É¯EØî›ðµúP+éµ÷½A½4:eÈ®½¯Áo"×Þ?… 6qY£]›S l­-½`¸lÁþZ»’ 'Øl+ ÙÁ¨Å‰‰µ+Ã9C`íÚ¼Þè« »)õasÒjõiÂjÌ!«vñl/QµkUtÃ"—œ Z—…ò².L횢Ì¥v‘Ê@H­ÇÆÄ¬Íñ &$íUJ«‹„Ú%â µ ’O»8k'žVðÒiW¹_…¦Ï“Më}_(ÙkYí–×豚À²¦]ÜXH.­ç¹QÎxÁrPi#”V@2i³‚^dÒfÁÕɤõ–L†kìŽbÛý&&m4OhúÞ¥”‚íæ›˜´¡õÀ ¿IÏ¿·&m´hä¯é÷Á,“–‚obÒúïW1h/» UÌÚÈï $'Ó3lJ›‚\b&­×4z8ŽEU+=]鯌DàýcYź¿L“ã:™ÄÁ¤Ö©c½Ø<Á¤Íúà™´^«èìøÃ£bb)8E¾Ôûzr¯ÄÚ×)ïë^íë”÷õó÷óÿ`pŒ Ú§Ñ1òVž†Çˆ•x#…öWãc¬nß?8nmà`¿î@¿B×±Ai_'hâ¾¾bçžy\w—N| “ ¨ÏÈÓâÎã»ôYìêŒÓ‹åÈïšC^ð Ø5õ¡µOòI§i{p—oF†‹z|©VÞR,rGÚTÂ_ôkè·|sXÐ5Ñ·øW~ ¿ý¦Múá¬Ù;GÐ_7lHúüõÆ‹ÂHçþÒ%aÓôGÒþ„Ú¨SË V‘÷‡}{0uzHü›sÃZaòæøBf]ÁCBÿæÐW#Iý;~fq–/lÙ¾+ü׫ÎòG0Ž÷xH˜ßääÏæ²¿ÛÉ'»·»Î3sñ—~æ?è|¾¢Y ±bâÏ‚ZûK˜,Ê51LïÂ^ãþ®ŽUvA¡Ât8fW©¾¨´+=&/ól«ì$ZŽü©»mç(;Âoö'  ÑCœìŒ ×Cš¬Ù“C{„Éb¿öC–, DQ²ØIù$kŠœ Y°¥rdm<9(IŒ,Ve)²fOÄÈZ2d}OáƒÒBË´‡Yìn|]óÎápŒ7Âtìû#ö!n|ìÌâ+†í˜ÖžÆE»Yi|Àôü&t¬Î‚i,z…# wŒÐøic6£·Ip¶ÂzÚ"¶æÕŸ JRØ_ ô¿ »¸G| 1ï?AL‰1`q㉠}zèû¸XM&9O9&“é¦RcÚ¬X¹«ˆŠµ&rjØgmÌ'(Vç¬È‰µ.ljlK”ÇŒ”Xã ‰µÎå~SGøˆˆÕ 0b % ö¾·Ó(G‹¸Àþ©Á\1qø©q’õ›Ø°~”C²Âãxamƒ['´Ä}EŒ–˜ZDÈ6ÕÕè0œÖôI0a­ $¬N’k„ «ýúäÁÚÆÇϸ—4Ø] jYç§i0é4¢#ˆ‚5NrH‚µ B â©Îí‘+Ç;1°ÖEU­¯‰_pËv4 `ï\ÅÑ=ð$VçÈ5} øWã&Ò_u‡ðWãÞn²_-NP~úu×ȯօ¡ð«uº`À}5bG‰}Õ)R_µ7‰ÐW‰$óUG2‰|Õ‰-_=p_5×!ïuã1{U,™´W[°W«7Ûµ ÔÜ(ñ„]éU-z=¥wözc\ó§&åõþ©Øîp?h2Wf〹b«$¼Z• Žõ€‰o ¾ëýú±gÓø[Ò]ß¾"ÜU‰lW9Û‰vµFÈ®&°À®ÆÏD‘ëjÂBë*ãF/ƒjPW%ÓUGt‰tÕ‰j]]&Ê•wÛ ÏÕ„ûÎUgÝIsÅ™™o‚¹ÙÙd¹½nD¹ª—‘䪞B«›óºŒ³£o¸êT)®:$Hˆ« Îâ8 ®Š°àjüZ%®6YÎà·÷Àßjë@o5~ŒðÖûÞØ{¯D·Ú™5È­Æý‘·Ú¸¹¬=í ±­ˆ’}µÕ߉ãtÑf.‚Ùj<Bd+¦!ßDl•%°UÖŒ¼Vœrú&\«mZm¬`v ÖŠî›X­:JMTën µz›¸v\ApZ­;Lë)g4~BA{Ù–}ÝmˆVA„V8¾ Ðj]|ÒÌÒȯ¦¼§¤³îÒœU!²Y5+ šUc(ɬÆï¢Ìjâ‚˪c®Ä²Ú¥4¨¬6^ ¬:J&«bMD²¿SL"ënϲúù¯I‰€âžÅ}!ÅqÀXmÒÆ‚Ū£{D±î& «1èA« Í7áP`5aµ!Ê­1Dϲ2–s9¬Ö‰°‚UQWX·­€u[BðWu|žøUã7lH_œ€ðÕÝêÀ^5¡Ûù€äUëƒV¸¨ApW…Q vÕDeuÕõ'tÕ†˜¨Ø:¥ê ѦÔiÄ àê®PðVi$nÕL?5i¬‚¯"ÒØ$g$njÕÈ‚"iõN<iÜ‘Æ*Œ*"¼jŒ46AWiÜWi„1bÕDèaUP X½ù±q^Ë–ð )&Û‹µºª N¸ª‰Õ ¶êJ,+ UO ‘¬º’@ qpUrUq«ºD¡Uuq롪«ˆù×S¶p‘hË–UH8¶èVä©®çŒ8¿o¼-Õ#„¦ºòØ#I¨×@?lR.Hª+ <;Â%Gu%šM`T7uÕýI@TWÖCuñÓMD¨ŠwC‚ê*z.BÇâaƒŸºx\øÔUõ „޹I†ðÔÅÏC“ºÔN]ü 7É©ë¥Ä?ÅA½ÚêÂÚÆùü%jªAšº¸Ä#3uu!c¿\DDå/ÀTùÉK]èKÕ7èIKÕÛ K]SM4f›k£t£/î¨#)u Œ PêÒwÀI] þ“ºxJ˜”ÔÅ|’ºxŒÔÕðú/ˆÔM$žIÑ<ÒŽîhâ×ë”;ÚG<Ó¾Ny_Ç®¸}ò¾~>ð~þŒ&’‹ú4šHúÇÓh"!O£‰„¢þúi;T·—溑¨¹§}¢îk‚8Çy\Ç>·}ò¸¾^Y§ë+ê4BëP•úLQÖÜ) ÏÈõâ~‹wq©½è“TòÕòûR›:ñ§7OáñÆ\âàøËiÁ»^$ÅKñ=Êûà àU¿†I/ýñá@gù¶„—ÃxÿôkHð7 ËÇ—rûÊ/õ ™Kàã|¯S49ÜÆu€-cÿÿˆ\ü2ïFη–䈦ïêhL”\ì6BLŽ09ne:€±÷…9„ 󀕙˜–úö‘Ic —cãC-)ŽG;§-¼B |ÏÁ)íå ¸ôòo4³ž?› ñêûɹؗ„³z†)ýÎ.ëë;Ó‡9UeêÓ*«š®Uy–©FªÌËÝ©^J×§CUwÅ6 –õ[¸Uønen +Û Ž‹àÒÜê 7E{k„KüApi.ãààÒx¯ÐM€Ks©:uü\³ :.õíL>Ipi†Sè!¸Ô7f¬Ï¸”´‚Ký½„[ .õ–ïpiQ{ð^—f8‚K½–Ÿ´ €K#øÿÈ p©[¹ö  .‡ï—Á¥±îÉ]áW^ë·ÔMȵJÛÜÒ0z"ºA)ür¡LNæ—^d”²‰”G³•`Èö€Ã/#ìá†_r“qÌ"Ñ|f®d`}(ÙÉMp&•ZF:+4ãi“g`è=Ú R)…›2«8¦NRz‡[ºgyšâܳ¼ïqKÝÌ×ysK½tóÁ-u3θ¥®ñöà–ú>—nÔm…—ÜÒ\2œ”ä–ºFé€[êºKhpšÀ- ß nièF]+î×u7_EFpK#½8¥‘?¥·Ô58?à–ºgÜÒh=·Ô¯'qNù¼,.iÂïçƒ[Ú¨cxÖû€[ϧ3®Á·4t§f~‹8¥ ¿‡™+¸¥q^ôà–Æï#ÿ]ùcùt ü<îOn©kp¸À-õúäï‡ë,ÒÜÒHN,ÛO×[êzsM•ïcz_ÞK﻽€[zäoaR$î&¸¥Qžƒ:Ú'y ä–†Ôå™u=¦0‰ï ni”§¸¤åANgpKC‹sº~ˆSí­ón©ëªë×É­˜ŠñÔ¹¥®—8¦‘žßý$·Ôõµyñ€ön©ëvpKÃZŠSZÑ¿7ÇtÎÐ&NilFeô‚ÜÒЃÖÕúÒ•ŸØJò¢Ve(?pKC7ê(?qlÁ-½ŸniägRO\§õ.xž8WØáê\:pKïò·4&¶•ºÃž³ÕÙŸ6÷³¡þ%·44ž×aª8¨ý“'|É-u]ném/;‘ª_¸ßB'ê°<·Jni\Çó åWXà–Þí§³ð๥¡ºã:¸bà–†ýnÔ†ë䆨?õW,|îþn©÷Ÿ&õÉ[êšœÏ {“ô¼à–ºNJÏѹ‹KšBû·4ö jïÿ®µq_1Ò`Ð58Œà–ºîÒ>úúu”ÏÀhnâ€ìSæ¹WrKcÏæÁ-üŠKÚÉ4(Ôå“¥åƒç·4ÊcR”Ï×4ú[R}Ú£ì7¸¥a_u‡}!e=Ážñ»Pä–Þõ niÔäÜR×àÖ[º÷±’[íoQGý‹ã;9~ñT&¹¥/:Æ;µWpKC7êN{xpKãùà†FÄ2ò{pKÞêºá÷ªfklÿ¤ÐÇ©(ŸNÍöžÄ)Í´ç·ô¿Á-ñ!S/Î.ñ>û‘h?pD6ê_\Sk˜}âþ…ÙëâøŽýÏÑþ¤;Ú7êÜÒhß@F%‘1q;#¬³_qI;K䊷4Ú¢6ö'Íf¹h,â”ÆlWíÇQý}ª´¡ÿ’QàGÜÒ(ŸI]×Q~à–FýàþŠù¹~ä–FýCãÓ¶86|ÛW„Ý]3óîÞ&·4Ò£üú›Ú'¸¥Ñ¾&5ík‡”ó§qpK£ÿejΧ˜ÿ©ù8¸à–FÿÎÔmŠòMÜÒ£ü öÐô{q2êWÓbg}/Ø+~wÜR×°oà–ºnâ”¶¡%ø7qK]gqIÒ§ƒ[z¤¸d¯žÀ- W¸–ÑÑŽô±Ñ>´8¥=½^7ü>¹œöuŠkÜR_}-éÇÃv{–7·³Åz!só¹¥á8¸¥¡ÚíO§ÜÒ8i'.i¬«Òwô"î'Ç~G’ÜÒ8²–©£|Äu·4t¦®8âVÅ5m8‡õ¸¥®³8¦Q¿ícsK¼#.)PÖò±¹¥îÉ›[ºA>ä–Æ‘NÝ?qä²ÏÍ-ÍØÆ·¹¥ñû·4ŽpŠKÊß''óÝ´¿r²”V<¿¢<¸~ ·4'rûÉ-£Øâ˜zy§,njʼn¶_rKÝÑniì O›[Þ qL½½$î ·ÔŸWŸŽ@¹æä–z}”ûˆfÙ°a±‚*­ÅŒ\AÕŸþ7Þ´“endstream endobj 448 0 obj << /Filter /FlateDecode /Length 620 >> stream xÚ}TMoÛ0 ½ûWÈÀìX–å—.ûÀëàÛºƒk;‰8jìf-öëGŠÒ¬®Y8¦ÅGòñQRÂv,aƒ÷u°ÚÅDWI%X½e¥`…*âJ*Vwì/ßõ—Õ¦H|E¬™f݇‚gøÓš]I)ù ˜gxšc˜ü¬ž<=¾#x7áÂ<[·>z¾ßAXÊÿ{¨ä4™HUŒDÓ4Ó¤`íœ _V¥2ß§‹“q.%-!¾y!,~±ÓEØ…ÕçQ°kÜÀϹ"/›·ê¸E¹ËSe ¼±âìΓU¯¬¸¸ #¥ÔEõÁýºú°êã?©¯1ùÖ:Œ }·‰ÈÛÁ„¡Ûæš ÷ͦÔÞÚÖ0!—÷KÉO =v}íјú‘p×Èc›+>H «¬"9ê¿)3>ëƒmÍô-ùÝÁ6nÆ}\¾ÓÀÑh]¡~&ï3Â?a.T°|©`ÆÍ0.í_ð݃€9×Ã"ša×#Τ—ÒïÀWåÿÖv}íöNtÔj"çerî)¯ãn€êôìpTÆz½d>ލRoÉhM_°2#3PÀÖÀ@ðÆÈ‰M¨’ÓÅù )+WGAíÙô"ø/¬lƒÝ€`b;M‹Ôöp ëúps0 8E§Æi4_,o]¸×æ@<‘»Ÿ´Úär=£µo~ã×´Ü¿#âΪrˆ_½Háýäj endstream endobj 449 0 obj << /BBox [ 0 0 432 432 ] /FormType 1 /PTEX.FileName (./figs/Ex2.pdf) /PTEX.InfoDict 234 0 R /PTEX.PageNumber 1 /Resources << /ExtGState << >> /Font << /F1 235 0 R /F2 236 0 R /F3 237 0 R /F6 238 0 R >> /ProcSet [ /PDF /Text ] >> /Subtype /Form /Type /XObject /Length 3814 /Filter /FlateDecode >> stream xœíœOÝÆÄïû)x´fÈ’C^$ø`[H± xcØð*°,Ç_?Ý]=C¾j®v×Zé¢w°¬*÷ñMsþý4Ø_n¾ê~¹úaºãŸ_ÿ]Ì2w¿ßüû»n辿»È?ÝŒz½ûòfËý’º’ûiêný:»ü¹û†.C-KŸpuœS¿–vÙå~=©ÇvÝåázû¼ì×!÷ë9ý²ßïòpýø¸íé÷ë~uÒ$o~¸ùÓßR7v¯þÓɹß}aÂXç>­ÝTú9u¯î»ÏäÒçÝ«Ÿ½oœ¦~Î7¦'ݘ†Ü—rqãô´—ÜéâÆåI7æ”útù‰ëÓn\Ç~7ŽÞ8}u3oý0ueÖ?ï;¨œÖ>'+]ûµªýê˜W}êe—ûõ4Œý²¶ë.×—YŸ²]‡Ü¯ûãÔ뇧“—¥}÷Ã÷ýâÐÓØy]åÏÁ¾z¾l±wÞ5æY+¥·MϹm“œì¶ù·¥EÚe±Û–gÜ–ÓÔo«ÝV¨¨èc7Ó€6ÀQe.©ß¤Lµ‘/e cƒÔÃ2û‹7ñ‹gÆ8”~,]ÞJ?Íöˆ_ývûúí?ßýÚÝ¾í¾¼ûþÇÛ×Ý_þû¿Û7?Þ¾½ëþyûóow¿ú—_ÞÝ‹RÑî7.ýPì'¿}¿ÛÞÝÔò×­È`8ô^£¯.? ¡·Í|[ttÓÛ¾ýì%ï{è1“Œ…ù¬QÞ붇žRFøòíçïuŸ¼¸ò²uÇ0O©/©KÛ¦C×›»î_Ýë?2eN6ËÈ\˜Ç6'Bí3f»*Oº¯š^‹Ž=rué×Ñ•]…¶ID®®ý<¹²«¦åÏM¯ŽÃ “¤MÆ0Æ”ûy³€e¬‰££ ™u¦Ë„;©ÏÅs?­U#áNÁ0«½2U#áÎÖ/HÈ#NU#''ý0IHË.¥jKTgêÓb‰ÔOcÕH¸cOS?NU#Ꭰɳ®N\#áÎÚ—ÕE×®‘€3 }FbÓÑØ5îŒýdOšF}×–¨Ž,ެ=¤1×±j$ÜÉÞ¦2 ÏSÕH¸3ëØ§‰Ego×H¸³ô“ÕV&6­54îî­ Zkh$àÌC?Ú§dù¥jKìÎd/aÎVkh$š³Y«Kɶ©j$Üû„Äbµ†FÂY.Z›JA¦¡j$vÇ~†Dk m‰êä~´ö‚h­¡‘pgª‰¬/¨k$ÜÉ:Rß[sç©j$šƒÚJc¥j$Ü™ôuÕĪ—\#áÎŒ…‰6•ÖËìæ 7̶vs]âîøJS&4îHÿ°o+—¬Ö¦‘p§h‰ïë_üH4í!£kªFÂÕë² ¨õÚê²;“ýŒ%¡Ö¦‘pgÓ¡Rjm 8‹ µšX¬ÖÐH쎵úR¬ÖÐH¸S[l±áÉ5î,}¶'ÕÝI®Ú»ƒ>'óŒÖzÙûÜîdëQe²ZC#±;ö¤eÑñÞ5îo²Z­¡‘pgñ>·bj„¶Dud8³'•E|ÉU#ÑŒ…k¶ZC#ќվ‹î’†ª‘pgów}]trrœ2ø[¸®Vkh$š3Û§lƒÕÚÕu3© éô¹j$ܱÿi"[­¡‘pgÔå®&f«54î$}‘4Q¬ÖÐH4c²¬+†R5ͱ™0É ½UÛxwÊh‰dµ†F¢9~†M®‘pG¦îÍ‹Õ w&Ô6É ­µ†FÂoa6¾\#á΂Ý[G«546ûÍ™ßí[­MWàÎ’-1é&Å5,¨õZ{åÁ±m`WÔz­ûÀælX$™¡×¥j$ŽŽ$d†¶Zï wÐm4‘­ÖÐH4ÇÞu]ðKÕH¸“t»¨‰Åj DsF$V«54îØ”yoë\­5´%ª#•²êgh$Üñq,É ­µ^Û8Ö_)%Ùªj­×¶R:8þ)E'I×H¸#_ ?殑p§è2D2C/KÕ–ØëûI–Hy« 8Ûè-6MVkh$ÜI^™¡µÖÐH¸“½7(ÊØªFÂEwìšØ¬ÖÐH¸S¥X­¡‘8:šØ¬ÖÇÄÑ‘Äf‹ýc¢:³·‡tG­54î,>®o“Õ 8Ù¶†šX¬ÖÐH¸3ÕŸQ¬ÖÐH¸³è&å,`« wŒoÞwY»cªÚ ³;:X –5Þ\5î›Ð„5·k$Üñù6Ë ­µžÚ|Ûœ£e–=sš«FŽvp<éfµ†FÂëÓ,]Ik m‰êlŠ4‘uxrY¶$f«54îø8–G[vºFÂïi–n°ÌU#G:çdŸ"Ý@k m‰êø\©üZk]Ú\Ùœ‚E–n°ÎU#ÑësY^?­54ÍIH«54ÍA›Êžy˜«Fâèà_-Êv‘؉dµ†F¢9“Õ 8²lOöŽÉ -KW×H¸³`_™åÖZC#Ñë 9oVëµõ†æl^[Ù3kÕ–pgó5B6­õÖÖtÍ™0«g™¡µÖÐH˜£Ýf¶êO‹â×H¸³ø·lCé‰ÝÁ§¥sœÑ&fIÈ -?Þµ%ª3c7Ÿe/Må 8òØÈŸeÏ,µv„;ö:šX´£¸FâèhbÕZ_$àÈ“ÍöïZÒÙÒ\µ%Ü‘…ÛŠ„m\\#qt4a“ÂEÎbD“\#GÿÄÞÙêkÕHÀ‘¥­¤'…ÚsÕš ʰô€G+, 8ô–½„¥†-}' ¸ôˆG¸4ÂPÆ¥†2. 0”qé e\a(ãÒC—Fʸ4ÀPÆ¥'0”qi„¡ŒK# e\a(ãÒC—Fʸ4ÀPÆ¥§0”qi„¡ŒK†2.0”qé) e\J0”qi„¡ŒK# e\zC—2 e\a(ãÒ3ʸ4ÂPÆ¥ C—Fʸô †2.eʸô †2.eʸ4ÀPÆ¥ç0”q)ÁPÆ¥†2.=ƒ¡ŒK# e\zC— e\a(ãÒC—žÁPÆ¥†2.eʸ4ÀPÆ¥§0”q)ÃPÆ¥†2.0”qi„¡ŒKÏ`(ãÒC—Fʸ4ÂPÆ¥ C—Fʸ4ÂPÆ¥†2.=ƒ¡ŒK# e\Ê0”qé e\Ê0”qéÃ04âÒ <ºãÒSʸ”a(ãÒ3ʸ”a(ãÒC—Fʸ4ÂPÆ¥g0”q)ÃPÆ¥†2.=ƒ¡ŒK †2.=¡ŒK# e\a(ãÒC—2 e\zC—žÁPÆ¥ C—žÁPÆ¥†2.eʸ4ÀPÆ¥§0”q)ÃPÆ¥†2.0”qé e\Ê0”qi„¡ŒKÏ`(ãR‚¡ŒKO`(ãÒC—Fʸô †2.}†F\J04âÒ ç°)>%ÒSæ«;M­öɇM+µ¬4u皯‚ž ìË6mŒÖééâV§qMÐÓ#ù|êaÓ=zzLœóÕwXðÕcâèìÇQ÷áT†­¼Ú`+áÔKØú N嫼úôê¦2n}ü°j„©Œ[¯‡U¯‡U»X5ÂTÆ­S·>~Xõ ¦2n}ì°êLeÜúøaÕS·F˜Ê¸õ;¬a*ãV‚©Œ[_æ°ê LeÜúèaÕS·2LeÜzS·~J‡U#LeÜz S·^«^«¾×aÕS·2LeÜúq«F˜Ê¸õ ¦2n0•qk„©Œ[¯‡U»gV0•qk„©Œ[_â°j„©Œ[¦2n½Vý‡U„©/zX•a*ãÖëaÕëaÕîƒV0•që LeÜúL}ÆaÕS·~œÃª¦2ne˜Ê¸õñê¦2ne˜Ê¸õ‰‡U#LeÜz S·>á°j„©Œ[LeÜú‡UO`*ãÖS·>~X5ÂTÆ­g}¦FÜzú»Sè sýÅÊãh¿fù‹)ëŽâÍ]çÔd¶áÈ÷¼¶Œrm»¯ÓŸ‹Ûü··¶Û\ëmô·}ë†YK c¬,pôwÈ~}ûûÓ~ß7îL²ÃL~çÝí›7·¯¸û¾ýÚ›ÿ¢L‘eendstream endobj 450 0 obj << /Filter /FlateDecode /Length 1986 >> stream xÚ­XYsÛF ~÷¯Ðø‰j#†÷áÖI“Úu“vr(if’>P-©E™”¸ýíŹ\Êt⇎G& `ì‡cAz£åÈý<=z|–z#ßss/÷GÓˑƮø£4NÝ<ŒGÓÅèƒóº^–Íx†ó|ì;õx¤N¹…ÛOã så‰ç¼Ý®v#4ßiá·Þãã-¯®/ùz±Î…QI½&Yà„N±g‰·¸~V »˜<]á¥Úá”]nÇM{|æÇ¶ëa–¸YšÃÎÈéeŽ<Ùê}×_¦G>Ü#?É]TE©ïzy<šWGWGž›FADÖ-°tUè&aÈ$”Îü$õE¼»'¦®Âã‹*=«^ÁŸ²&–6‹ªžM,×(v}2ð—#p†ð#\×f A c'8O’(w^2Íw(2ßëK=­· YœuMØ0óÜ_ãóv y°¹ÚHÀp‘Ävn) µ/E²ÞsÌQüŸæ#y%®þZ·*EO'/лªÄ”ZÕh÷3 =CGpUq‚À&~èÆQÎLWìVæN[oÄ×fâL1G…Ÿ˜ui)«èQÁ˜ TË\õï1? U#½ç'Ò{¥eÎÞ "×[]€L„ ÍŠÖ¨È Õ6ŠS)¶uóMkÑ¢%ýGS­Z²)äR¥(cœ…•Œ×—ˆYÞk5#åv ¼G ’Ny3ŽLØdaå.ÇrÇke2±ÛÖ";€¤R³„HŽrW}ß„æäëE‡×zMÊ]È¥ d„¨¢ì§Œ­©Ãýc€œ¦Ô| M/“=¡cµ6Û/s>úaD°“3 m}IÊŽY€û(ò¨Ö¤˜4iíò pf‰ô½q{ÝwB?ËÞ¡Ö9àú1 ¨Á j!†QßÅNó¡Ä €fÅž ¥¶—0gMI®§hK–]ˆhÑ,øQléî™hÜFµ6œ 2=¨–J•dµ¨Y”Æ.-V ü0+p‘C:Ðù‡E^bGô"ç’*`¦Ý¥eÁƒu;X–8uÛŠØLë’SÕ6]‡ÅAϰ}ÅÕp;Ua-^kÛ•=–L¶!‡é¦è\5Â3¼‹ƒmlmpd4 ú ó´[SqV%Щß`zh†yÂa`<¬7R1 …R"è¤N?N°ðÛšÀ±vbô\aÑ—l|Gõr­-o¶‘-ˆ¶b»`9ìGäË‚F›8±Ž½b9Ø/°<£$êÅ?‰Ù‹{M·[qkÈ+vzºÔ¦×!]ú‹1G9“„Rvð»•õ©¨‰ËÇLݸµÜ`x¹„Ã Ž•'ÛÎ,§a©©Öî­~³Â¥üBcüÛéáÄÜÌ 0-í˜@Úu™NW|Ùò2KÌÂ9VZMzyeÖ‰Š%)\H“AJeN²b#Uɳ+ð»å!Nyê4”Eæ 6F¸ãâ$šåHo_Cÿý@bÏe’FéO]¿€Në»ÿ97ž°»Þþ¤>z±÷UœÀóüƒ•¸Ê§h«‰§!ûp.&oÆê3øã[ÓÜôüH”Ù‡õ¬7§¦™›å™ÎéÚ«®†fúÀƒq6TÑz6žÄ‘ówÉ£Rg]‚óš‘¢SB<»"ŸŠ°0ÔÄ€{ywh ýŽÙêŒZ¸ótD½†RC`âºå‡VÛ“)®’Iž»qà÷ÚêÐ ß;ƒ»Øzw²’dgÏÙ{kF¹Ö÷2΢Y­suÈÒý­©_6[µ5Õˆ‡—t&oL£î”DçÖÁy2”‘çBþŒ&AঙdÝkþ Âg7½'H¶TÒLÉ+fÿˆÏ·ÿòå àûÏß÷©Az”wð {Ô)PЃ_à÷~Ó÷L¸ÈyÚãtT\kszÞQ¿ãË \~Ñ­ø‡®…Éû;{_"ÒŨ–}B®‘çJ’†?ÖR2¥êjN‹ø¾tËî¡CŽœŠØZ2Pz ]ZžµÉ­øö™Óø`Ã…ès­qJ_\Ä[ÙÉO:Ãzß9t·•yM‘YW2ùá>›—ÁAŸû\y[ìû|i½?Âá.º‡|Y¶—ï¸Ñ!é”/ÇT¥H\J˜PÙñÃ÷º‘„°vp¸Iqç‹•*³ž;¥ä˜½°Õ~%ú·~Ýúu1qû™xõUkÆ(“ûn”}Œ¢Ñ‹µujËoùv&MãüÞHÓ±ò±0‹Ch>ÈXª»“͘át¡Ûßó›XOÅÏ!7–ȾˠwBÚˆm²—2”ø¡ycÞ&ä¾±¶¶ìw¯Ãë§A!Ô…Ô‡vó·}p¿%^>Ÿûb?MÚPoÄͦ‹Â©àeïà¸óëPÃÊê¹÷-†~ f57Ðm‡ 'öɸs'í{&‚Ç‚i!}‡ýïèß dÏqc`#ÐßörNèä~(ð§ÒW-ggVo˜Ó'ì¾ÓͰc ìá„ ¦Á‡4‘©%bþÄ/ ò5gâF¿Œ„±Œ¨­¬×Ü÷I߯Cžø›&?›ã»•ôÑigúWÙ›ga¬$¡îSjÒû꥔òù•^WÃÞk­Ì—þÏü­¶æ_¾öl:'Í'ƒÎt÷tç£û-·Ÿiendstream endobj 451 0 obj << /Filter /FlateDecode /Length 4331 >> stream xÚí\ësãÆ‘ÿ®¿‚©: Á¼0@.þàøÎ;©­ËF•ÊeÏ©¢H.ÅXd‚Zyý×_?æ H®KJò!åZÀ¼zzzºÝÓãz¶™Õ³7¿½¾øÕ7ÂÌD]uu'f×f­˜Yc«N™Ùõjö~.êËﯿûÕ7¶Nk ­ªZ5Ð Uúz})æ÷üé÷ø¸º¼RJÍÿðoq)íüO[øwÿÖ\áVÞìñÃ0¸âþ>)[aóŸ‚‹ÚÑ<&øÊÓr¥LÕ6 S´ìwÐò›x<­ô|G}n™$1økÿ±â-Ñ⪼4Í|±w„-n˜òÐë÷øhæ4…øÃsÁ?0çªä=óë€À»íÊkA5=«ž‰%Ôsr‡õ6à+­RØ*Ë„§8Ü~K»~Ü~Ž”øL –fþí‡âPÓÒÍ=ëCÒ[Bòv( µ}è“ö²¡í×óï öI=7:H>“^XÜü†»jx:áy™‰Ô8"am¾}¥H lxñ¥Èv@§ªNJ¿ú?•¤©$è[Wã ¤²ŒºOèõ™ck•Dé)¬MH ”lÝü74ÅØ|½Ž+ëºÆI¬‰[X¬Œ,Æ—uÞx á?o½ý‹!¬,r²QÀIS;•ÿUf¶GÍÏïÞ\ÌÞ‹ùïyD [²ZØgvbª1‘³0Ymæ»j¼–ëiÇì˜`YÁ‹²¾7ó6+T¶8ð·ÞÉê7*ü.»¸$¬ä>òdÉ ÏxXï~ÉîÉê‘‚P ¡Qr•ó}tŒ'ùØ!À¥O—­F…nêš§ºÍ×ÙZàr8ƒM{¥gëZSÿ ”¾G&¼îþÎ+I}%⊯Ñ6&ÝS›5Yxèd÷à‘ÁÑž¨þÁw·cÅV`ñBÙ¬9¼Ò }j'ðë7Õ¨»†Ø@<~㸵ydÙ=&¢Ô@ŒDŒ>>eKï tϤPüÊîçØÐ¾ÅľÅàdçê¹´äE†'¬óéØXöA›ÁhF–à#A¾Ýš_h‹“êp£ÄÊ :$ºä9(úØ‘ŒÝ1gàk3ÿÈbîÍKúÀe¼ó—ËG7¿}£,š6ªaT3_FË·g™¦ªÄž×‚Ôù.É0[*7U‰?_¡òà¹;‘õw¸¨Mx‡ÏAK0P¦©-ý»Ã•ݾ82i±±G·5©“'Ü> üó‰?¬ÃïŠVà.(W}ëFºu4Ü4À¦xe·¤¢yv¨˜¶÷\ÊÒ•i ^û„EÎHlÓJû ¿‘äÇ¥7]-(WÖ3G7ÖûÚ)[èµÿ™&½=zcÀæMig`ã‚Σ-‡+†Z]¢ú[Ü¿°ñÕŸ/[Å‹àÚ`!ó&hÀ­=ÚM÷6Ö=i¹Ðð4cÃC†…P¶†Þ¯i^[6$ØéCdÖ2øD{¡lX!fž×Éëû’˜‚¾æp­ÈÿmP32ê;•ì‚,M›ù‰uÕŠ€ëo„ö¸sS„õ¦êtϤÖÎp$´¬0’`á5€{f%HÎ6¦ª# x’ÈÌ!ñYÃüe¢˜åÈl„Ý Áîva“Cå…g0AFgR+&IÁ{0F’ó*¥®Œ8¥êJ¶L:2•b‰@9}KŠ›T-Ž{õÕÂëJ$Ôö³yúÊ©‹;ç§bñÂ?êùWȨ͎àÿpDRǬ«øUM§˜Âÿ¡I9«Àq¢Ý¢Àkú;›g–¯> ×Áöh‹Ûƒ:'IwLe 'U•HÏf³RƒÏN ~"Î× *0„mÄ…w¯Uô›±§e!Ÿ<y®$Ùom†©Só=šÆN’)ƒ²>:ÒTNSÝ Ô£«rÇEÞ—¥—‚k×Ê÷žš;x%³öFùê··H¤Ÿ\“·T>Ö¡ôÑWºa O=ت‚bJQZÛÍÉ´ï¼F¿KפõuH~&¼±â/Q—x«I´aøB°GßsÍ]ÈøtˆC‡]ß¶(ç¬Mi³CaØåðDÞ‚„å3Æ¢­CdСÛðõ‘VH¾ãB¦sn<ÆY“ùæë¿à·Èµ6½Ò*0ÙUÐtÙ?¦;&PJé«38}¹â1R»ë±ê.ÃôÊù!¨ABÞ®0åãtmAZØ"jPZE|¿`4Ò'ú€Œ7ª9/Ї’CnêJ›ºü_WEÎlÕÙÚ¹ã@0ŒV5ªñà¥`OlU =Kj}É3Ým“:­Ž¾Kì^‰4 ,ظë2e` ”åý¨Jµ"¥ì?/¯¸¯ ] 0¬º)ö©öY4î]¥uÙ­xát`³¿!‹»»yÅ ÷™óI_ƒT„P‹ekSŠ´4ºªcÀ6JS˜¯®Z°Á¿dqKCÊJˆ0â·EÔQ5FFšL]êGWRËXøgTÿ†E²¸ð]ÕA哜À…—iŸÎ {o&.mjc„‘ÂFªé*ðÞó-LZ'„ã¾*vÅ®½*õ|ïT/‚-ü"²ˆá·©CY0°ï\þÚ#¼h*k™¿vÌ x©‹j¦´¶²ý%cúà à/Øòïh#‰:`(Ñ8ø¸Mqã†wæ*=ªÀ&OëagZ­¼Û~ðFyý˜ƒu@‡@pMû*Yß"¶GXÚÚv}Sbl6ÏœŽp^T¶ @ÿM©«¶2¶M®ªkãÑM l-sÜÁ¸’ãgM-ˆjÍ|¢j,ù¢,A¢Öå LDæ0 :U{ÜyàÛš 𥫒Z¦ @84‹®<@ÙŒ¢ÉÀê²f¯¶±-A ²Øƒ‡^Kø˜biËŠöI3²–#y¨+¡Ã*æ#I.NÔ—‡èÒõLÉÖ—"ñ—Šê9¬ÂçCp´ ˆ¨ùá³;iº_?w*õ̧µ)+¬¶j›JU²vNáÛ‚iAÎÍy \Œø¤Rñ¼­ØU§ºÄ˜è„*ÛFÀ" ç¤mÛ¨'©š„Mú—YOkZ-F–Nê²t‚ÓnFœÃ¥„S›òÖÕ­)j3=²#¦ÓçÏÿìéNË ²@Œ0-žF‰i´GÎ1´$/ò¯¸©1hêÌ ü»¢ÀËVý[à_UàÍ« |QP˵€ZsmŽº&L4oÛû؇Sð}€‘ècµÅ†Ã(›pPëº+ú¶ë)X"Lˆ&¬Æ»òFV=ᶨSQ³Yš P[ €æ.$WZ6ÅžlRïͲgm+û s¥E›Ät¸·d€oË®g—jÁíe8aÎíYþ˜ý §ò¼¹ÐéTÈôá•&Ù6£<‹<>¦!>Ü.~¦³aq:†|gªjpr®$x‰Mëé©ÕÔÔ@µ¢=57]°<:w—¥M|s)J‹Lº¯™ PÕ¿–ÜijH¹ †]]RíÊbÐ+¦uZ·<ź’RT·+ç±ÍVþ¬ÃPVÏBèS¶:ëf5QªZyW sµ;«æWÛ3¸ póðÂO»Mjî^˜¥ÿ}}ñã… £1“­­P«JÁ/´^î.Þ_ÏVPøÝ¬®4¨—'ªº›i蘂Mw³?]ü±”¼:“¶ÒµÏà,K~k“_O‰ 2ÿ\ÿó,;É'uJô>6„‰µ*¿‘W˜‰ß—E ùòúÙ?s/U¨ºëXM“,rT6•ò…X*^Aö"âR ô‚Ômíuš?FüŸdhQŽMv¸FUê£Ú¤°=A˜Â©ý ¯£ˆÞN¤Íµf„"ê]üA aÉ&Y¨àÑ_&—:ŸJÓ%ðO‰‰@q§ÚD)þkiòIö6IpI+Î=í£X¶N(î!mÕçØ`@Ò5(%¹ñ·^¸ÄÄ¡©Ï@Ã7áYäy .C±…š)Rõ˜d?¸L=œeüÈΡ“<†MǤPg‚€!æ5¸Ö. Iö©ÁQuÈ–‚!Ÿ¨ŽyQŸOl¡ø}ÑxY*;ò\‚NÃg£.- Z„T^§zÀÀT™ü¾šOǼ&kŸd'\$Égý á¨\zduïj0 iðý]²pìÝÆCtŸz0Á!ü-CÎö¼Ï®WáD…AWPê>¸Óy§*¤´’úÈSZ±´àÀRŽgž6ïîÄ F¹]¸¼ƒ]¿ƒDínzº’°ê‹Ãè6ô‚'h¶•éæ¶bhe_ ZA&±†¾ }Áðµø‹«gRйAâ5øçùéf~R-ãvÞÀ—¬Úx£ø×…ÀÇÀŽO/Q Wµ !Z:i‘ÂäÇ£)½ŠÂI¥$ ?l5­ŸæÕñúï¦ì®Im18-l8‰­§MT‰/d6>&e*uN¾@騽9¡?€œÂ€J˜{r*¦æ(âD–SàE)_qžàÄçžŽŠ {eí9èÔÂ.Õè‡U>”ÿ&¿šÀ%“ÿÿà•sÑIIy]ÒïwV[г$>Ø3Ò¾ŽÁb«ñ;Ò®Z<†P!R^Ö°Ú°ãæºæoSW Z~]2Ü£0îjCÊÔ aÉ]ì¿çÇô"î•€ÝÙI=ºOõÓÃT‡Ì"ýSh¡£¬Çòj¼ª«ìVÄ(®3ãí ϶}rI œÕÇ»ëñÕqlFi†›MX¾?§á²ô}ëÊ·±j áñ}®2&ݽc ¦÷iÛGvýq@Q?¦Ï—snÎ.FðC’«äü *íÿ®Öø9endstream endobj 452 0 obj << /Filter /FlateDecode /Length 3224 >> stream xÚÝ[msÛ¸þî_Áo•gB„x›¦3¹4ir7—¹K|^ó2£ØŒ­ž%ù,ùœô×wwRJ”#;ÉM&%.ìb_Ÿ‹ì4+²|wtpÿ©-2^°²(yvô!ãR3.xfµe¥ÔÙÑIözôr~Z]æRŠÑ‡|4?Ì…U3¸üíP¸ÞS¥)F¿Ì&ðÛá7>ZÀÿÉ¿~òOÏ?øÏççpç‰qù„h᎗žâ|þýoóÇgø1½À¿H{:;|{ôýý§\·—.aΖÀ-šs$:(¯Y®Ïr`Ïã)ÆïqÞ9®åj *\üÿä—rŒK›«xÓ/X¹š_ác xVrô ‡/7c¢öBÀ?:5ºç¹"n—5ß§~¤?ƒ§ˆ%}{7¬„k Ë.˜ÖhÙ')æ53ÖÕ¬¿) ù¦ÐErHÎo(é±8W«±4Çýv£‡©á`a0¯eÒ…Å=MÈEÙ2¹4 RbÇ•á?9:øý€ÃÏ É™(-S¥ËL©˜ä6;ž¼~[d'póû ¤(MvM¤ÓL•L8áyöêàgo ñ|Í`N1^Ø XaíªMiÛªòOËž.kª¤¤ÓrˆœdGNñjPNr}5Ý©”Ó]af¹0œmáB0WJûÍ òJ| VI×—Þ¾½åÜKr ƒH˜6ÓZí“ñeÒ€Ó*ûU×Fks ºuÓ© ½ÿ tö³´E{ÓrɸÖñÔe‹,÷Ãä‚3킃éS”+áÞµÍÜ©HʤHÖ4œ\K"ÈmÒ̸ èômÛYmkÝù"Â/àå·©×_SÃä`Þà/:ð®žòvÜÄаç”8€¹^…?ŸáÓÙåiV_¾„hýšBãS|Ë” “²‚?ø³ñåeaÌå|‡ý×DVË©w:>âeÙÉ‚Xx½WNÐ'ÞJX 0û¦à*,"ສcL(Z¥FMŽ!|ì~µZ„Tb2­Óˆù%yÕŒkÇ Ž¦T2iBz—Ú°6óÁ ƒót¯RÛ›»[ô·ô‘4aP,¬›°M˜ð—wÎ{’^¯ûPCÜÇ ;•]‡ar´–Z¼óáž³ÂDêò•¸á8³%fìŠ*ìÙwWd"d.‹Úæ+âDŒ[Ï¡h î6 $ÞâŽì‰uGê1›NÒ€lݽ Ä6'±!Q‰d7yùT$ß+óå^˜ïÍH3ÈŠ(ÿL:¹] ƒ¿Òªx¯:^ܲB7ªý"1eÚ&øj!™XiY*H˜Äm©¤0VdZcU»±v FÛ©£õˆr K©Ulz™XL)ÜæäÎÌ%r^WfQ ÂD^CH ~Åj Oæ *Ba¿¤¢nµ­’Ë`[7hÄ÷…k¶uãˆoãpP˜ŒË‰šR¨tDFÎò6i/„áê³|Z&‰¢dxѱiS”Z݆¬Ù5(6“P‰êBCM-6Ùµäà:f^Ò1¸ t‹•¥ˆíº³ÒØ[â/‘.[k3„lŒnÔA'3+^HoÑœ5Ó*€Š}p€‚´~‘&xð_Þ /ôB2ÍyœîêÈG•ܬ©•5ÊP~Þ1 ksa xj¦Eùíê½¾,òʂԤި÷‚¥6*>„<•)¥”Ð[ÔÞÝ{;©}<#¦:Ö†éÂÖà µ ʲ¼> Ã1ÆÆ37' ÿé ýùé,Ðü ç+$`¼h!ý«Ÿ±—2¾¤ãYD°cRf@ºù0 ˆüaà àÆ°²îf…‘•†UÚ²ßh}çMk·5øhA<]xš÷–šQEÍšk ýßàÖ¢ñë iAƒäÆçý ÄãÙ‰¿èåÍ·Jˆ¿§Ø[øÛ“ðé›&þç½Bš¼\91œïrR7žzÏ9×àC'8g…k”&ð<÷ Ò/gíÔ‡~Y̧á Ÿsj?MýKß SÒF2‚¯5C,]-<9ö¾ð“Ø™Q/ë’ÚZÕ2@D^¿ˆh:þè l8…ùÎÉo>]ó¢œ5 9ÿ÷$%˜´Ô’ôÂ#[2&¼¬pñt€¡ÜØaîàËÜìQ#W± ½9SF†ªASe +_Æ«²‘±xKϵ ðÛMèL¡wÄœ½ÂÙŽ[ªlÚÑó!ŸÿèóžC*Bâ.—m„q|µ¨÷íê8H—43< Ûíññ…ÇÛÑVÕ˜emR3+m"p«Mçõïjíu­ Ö£xƒ,âõO¤Ð¡å¨”hT¼ùìŠ,ôÔ#›½@>æãÚ×ál˹¿ì‡Ë½¬M ~þ¹÷h«_êCKƒ¦'OéF糺I¹ÚvÿiæadïCß×¶ƒ¬¿)¸Àê¢m(ËÕhA×î?ż†c$”ÂP‹Õ†ØŽ@.S^#tQ€üÐülAÒ¨ 'þúòM?œþ%4±­=®fä qmU ü¹¡<”Áëw_V§D|×¢ÖT¼÷¤ÑÒFä‡FNE¯‚0Î"`—p=e‰nòt+ç²V\yl=Ùy6ò˜&íü5™ªI©°|22”„“tÝd ëkQ=L÷ ™mò£ôl¾×fë‚dêöÕ»”—¯ºµ“ˆ„-íæ,È EÂh»ÿ /?Ã&Á|ê©|+À†ÈI7ÜÊEWþ;>–Z¿‚zŸ·j n<Ì{ÈÙÝ6èyOoJóÊÝö™oÔª¿À Χö[Ï|ÀfBŽºEåܰh[ÛYîòbÑ„àãIõ+‡s(;&öÿÇ´ï‹:ߙԞ¹´>̜԰òå¥Ô£ГóÍ=we©2ÛŸ]À››Id¸Ç“IÐk‚é†1à˜ƒó®µÕDu”*XâŸÒÕ¦¼EuUqɧ  ²);{ÇVF´œ*ÉΚQ73L© ÁÅQÚÒ,ÿS©U§u©U/TP0¹šô|– ¡¶÷Hƒ°Lm?Ñ èüÑ“Ö{–½üŠ5±¥=Q2›£æf+ó|‘X…cÖ„U˜A«0·|J‰÷wÄz#¯H¸2ÕkKR3i¦V¸Ôgg6æ`ŠwÕãì88;=ؾOûÝPÜ® ãÔ<Žñ°ú. ½šÕBÞ§¢˜qÍ÷Òí È­µ”PGi&køïÇôÑíä0¿!†ú qK~ã3ýÞ­­ÿÆç¢~=éB¾æ–{wíÒÈá:º¥¬Þäd×ý¹xW m?†Ô¯; šØ¾Â ÂZ,šQ§§Ž®¼Yš‰ÄÃS¾à" )<úÁKÉôÉ´Óöì]T¤›g±Ÿ*ð%¡G¨¸¿ˆ`BÏF«Vįãc^)œj$d`Yy,Ž8×°Ù•‡ƒè×6*€ß[/XÔ8‘ðˆcC~H·áràîÀ'–2®OÓø\(ìOj ú^ªãàÀŠÉÒl®Ä¢6)f̉=„â‚kñåò“‰–¦·¨ÙêOµG³ÜRÛyœQ8<¶…¾¡ÎBTÏ)>evj®½)dÏHE¡ÖN%÷ÇÑö%4h®]ŸNÜŸ·,¸X½Iz Óoàþ5£`'KTàð.MJÝxtœàIÓlogoHW{Ž7;G…•ï9ñÑEݪ­40¢¤Lðܶ¶ñdvéd$™®2´$óz[$™%-A+G– Ö"wÙið7ÖΓ‰¶ª“+F#D"}4ê|ÏËÓü;ýfUHZgö!{…È÷”’­é_õñ¢O !Ô¶\gŸ#SííÛàÈø:2y#GÖ—\r”ÿâÙågï•ÞÓ^©¯`¯’ûíÀÍ3i¹ÏLšoK¥Õͪ)’ÂÛ–ç·é—d”ô¼c Xˆ Ÿ/m}< ƒè5Œèä¨t*ålyûtT`²‹ dÔkÞŒ6'aB°Êr *6^ %·ÚÚ@ PtÁÍm¶ÆïÊÖ¾ŠïömÍn±µhƒî6Œ˜<ÛÏ‘ÕÁ»Ó…˜áól?§ ?³» vîì|Ó µåZ_6íò›ZSœ›½É†çÚ%½É&nÐ;¸•ÝÂÊ»£C`–M<ò]ߨ¿êéK*½!­]?Ѹ®“¤#À×t¥ØÉy [ØVþtN÷ùÏ'Gÿ ôo—endstream endobj 453 0 obj << /Filter /FlateDecode /Length1 1460 /Length2 8342 /Length3 0 /Length 9189 >> stream xÚ­—eXÔÝÖÆ A$‡îîîn™F`†RRJBº¤»»•TRº»éxçyÎ{}Ïùú^óe~{¯½î{­×õ§§ÖÐf—B߀ä ;7·@FUÚ€›ÀÍÁ…AO/ã²€¡W0€[X˜ åb àáp ˆðò‰ðóaÐd N`k€I†ù¯ A€”=È li¨ZÀl@öð–vm¨%óàHÙÙ´þZá Ð9ƒœ\A@ nnl ¼Yƒ!œ9R„XA‚ÿº8ü{Êää 7`‚›dÀ-¡;d…Á©…kàNþ?Lýgr9;;5 û¿ÒÿÝ¥ÿš·°ÛyüoÔÞÁr¨B 'ȆêƒþeNj÷_2Š0 ;°¥ÄÚàúרYìj€a–6+ ;gÐßã ð?-ÀÛö·NMEMM}ÖÿÝÏ¿'5,À˜Ž‡Ã?iÿŠþ›¹3¼;N`w€17<þû÷?Óÿ“…XB`ü@ð ,œœ,<0à'Nü€wÜ0r€ÜáŽ99 P| Þo€Ô ã¯íàpJý5ô/pÊü&a§ì?$ÈàTøM¼NÅßÏ¢ü›àYT“€Sí7ÁsªÿCB\NßÄ ïØo‚ëiý&¸žöoâpêüCðsÅiñ›à –ÿ?\Ýj?©ÿáæ‚‹ÿ@¸*è„ËZýF¸•øw:¸ +°ëïxþ¿Â¡.N$€‡Xÿð 6ÿ ¼Q66 ?ýÀÇÀ ¼Û?^€Ý¯Îþ7rÃkù#üþrB‹Ác¡?jƒŸAN‡ßÓp‚_GèïfðÂW8º@áWæï›ñ{!¼ˆ?Jä†;vþÝ‚¿äúGIüðpgøùý½.õ;?Ü%ÌÆ ôGáeÀÜ ,€7Áå„7Áõ„Ûtûð§ó1xz¿ñ¿¯¥´4Ôý;|Ùyà.¸¹á òsyÿŸ@K''ö÷‹¿Üÿf+0ü)ÜA–³ÓPKÑÀ·I ÁÅ>²Ÿ¾• ° J[7F«ÕvM´cüˆA´+TvdYª1¸)M%ÀÙBÙ¢r»#skóÒ‘;öwŒNžzØr5ßJõl&3ø™ªê±é@s°ÛÚ0y~À¨>¾4To˜×›qÒ·Ÿ£ÁôJgûé5B·±k]wZ € \ªnHP /µ^²cñ¾E7¼øØ'‹c>oCКXçO¡m.ø7ŸÐ²ãÌ#zæ—ÊG‰ØëF7Ñ×øÕ~¦Eaë.Ùª)†‘åwoŒ¨Ò¹í~F¤M2ž±ÁLR*:æ*&3óŒ®ÕÑ^ð•ȇ* bƒÃZÚó¨uª£+|ÇsÛlÌÔ.(‡?M“Û(Ë?Öð=\©›À‰lé$cÑr3ìãT2¥1Ó=*ñ*ÍFMÉÞ—×ù¦P:GWã켕˯ü`Õ…G£A7µÌ®¸Tÿã`(aV: C@Ü&/Úñ•މغ9ºì³0Û®ÚÙ8<5øãÖ¡$…>ã£òó€ÿEÃY™b¤¬Ùõ U¥.ã¯õal®@ke f¨2™‰®)~Xè6;·Õ§Þ™—µ¥ÕŒcÒXÜö×ú!âÙ*'óô…ü°¼%uvSµHLT1_>R²y ·îxWµrƒÞ óÌS4™$ܬåY„VØ›˜i3¹EN)mÜ™V3þxdÍzë¨29iq‰>¤ŽY\˜V'Ós¯{_“ÒM4>=þD?é+/ÜM¨Æûèoò³¬üÆNÎr‡+ÈÔZl7¬1Êì}–o.C©þÉ; o5¯uœ‰Æ}l.þ^ÂE³7| |„÷Eë ™vò™G©Ï²u|¿¢™åY’~OßX1ŒäNø¶BtǦŽ*ºÙS]èÈ=¹m9?®å8³ 0âeæÉ ñà´®m¿÷9 Åápjp$àò¥¤åõrÙfv Œ›êè²ÄZðUKpâ=@¿&Þtó‰ |žŒã(Ùg‘±B< /bOƺIȾŸÔ•3ü8^Þì¿%Ï쨙+»xQ"úž~·,RŽ«ê‘gÚ〱¬<¨OX­à¶Áüèƒx¸µàî~ÞkÑHF$—âsñÉNu„)µl WVcÍÞ@uZ7 zÈdF àœÍøkþªš-`JÈ|m¬Ujý1í¥åhs¾ö MúõX'ÔtúžßÏœ'ðMâ›ë(C(>5}SEø †c³Ok®sŸ·@’I¢„B<– Ä1zyž)b­ŒZàæ#lsÅÌ òÅåQõ܈ÃúÌÏ?®½ ¼qÙ3räYdŠ%dÄíÓ^+;fP½æÙC]·ë¯\¶0ŠsÀ°A»JÍ;ãi·àt^3¬˜¦˜3ŒÚ]()ÆçT´wñm-]Ššqëe¿ ì²ò@”íî9–ÄÕã¡S=uÝÓºJvC'ú ò+8_‚xïƒ] :ç¸ç®£(Bc©F7çÌ׫O×NK:ü@|÷d·yl˜.–ø…ü†ÉåÒÊ?” j£ôÐl¿o>†7£%U ’\êŠ$è³$þˆ)œƒP{,mæ›ûxl¾¹«Sêì$¼.(·ãqoú$Eûí cÛJa|xD¸Ù ÅFãGaXŽÉ\Çòí½>ºNkròÈBˆEÄÈÒ©Aºe[”ˆÆãÉ4ΞJ¬BKq1àìÇçÍk¤À§Ë¼‰FÕS¥5{T$”dªÃH´f«”2OMÏ{£æ|Ë9³í'ŽÖ{=½Þ“ÌÓÑjö ]à†!“[\;Ÿ3cŒß–˜ª}o|µÅ`0G/!ü-3ÓÕºIÞåy¡ö‰~\"ŽõPl™êÇXÒÒ÷‹Ç%Æäˆ—à®bHX(»Ü÷³:«»sÄ­ a¤:¸YÀÝálר†²ÛO@ÉD‰ÿ™\ð;k°ëR¤¿D¼AªçÄKÛ`3UY´Òçt«m‚úUÏË~^»Z—L$xœ‡¤+Øe1`¿Ió)5,³ª>ié-â7,ålŽÏOÙ:Á‹ç9‹[sÕxËik™ò›³í˜‡µŽEuZŽiBà/ʘúÅ¡­å|"R~‹ôËRA¢’F2¥ÞÂÀêÈ´-!&™¬}“>"Ñ×@/Ö¤ u«`&BOt[{mAªHÑdÜí&;Ñq3ù˜˜`äkb´OÆ4¬ŒË¤X(žÜ7Òn[r]Ò+³þ'ì% ZÛl‚Z.Š §à.hc´‘ÿX,ì{+¹ã#ÛóÂ…VAaÙ´ö\`&Šê›q¾Á…ùØhSŽ Lt7‡_(ƒìñÔ-V¦‰­»öYÙrA%èt|±gÔÙÝu>{E+uèãœþtv }ürÿÁ\`9Û}w/š‹uï»z*PVf†î1Á“ˆ}S&{ÁõaŠ‘vR ¬õ¦Ô¡ÀkeÉØ,­Y¼Ê>íøÁ¡—R¯nti„5”5Öû:"ƒ/7róªùÄOâRxÖí'­Çr’®K©Õ²þ:jÚZÏ/c‘hpîØH˜G¥aß6¥K5m{¶b¾ÒÝ}ã öx’å4s¥(R–Õb$B²|‹faÝ#S1‰€ô¨“ŸÙ'QîæŸ\ÒâÞ(ÓÏkŽô#’RO}y› .ü^º¸Å£Ûå«oó86ªü é G̤zEOºg¥n?é1ã îxº+®6¶y…׺Q¾ª}þLãrüÍbÇGÚ•ìÀcÙbÞñ[ðåÐÉVÇF)íE´vl.Dˆb߆†‰¨?mD¹FŽÆ¤~Þ—O2í- ~¢‘¿üŠ êj$,Úõò×ÏØ¯á“Ç£ÃÊ÷o‰öB´iß6ÅQ  9Øa¸Àz2ó}EŒvz‚‡ì7p¤­¬ Ø¡<´£~-àÆ mtÑzËÏzí³Wûb§dRwûÁýcn¿N ×}—É\nneÁÐzdWö$ÂkÃ{Cþs!ÏÙ1ÊÃìšæ§ª^Õ1Úˆº¬ñVÝJå¨]>mòÏfN%'Ó9-L|Þ-@NU ‘ÐiéØTôbIH¾O%‡¦8íl\ ÇñÁ°qЖ·Ê†õDXmäY2šJQõ¯mªNÜj7çs.jg$dCYg A…zš —B‹‚4MüÐ>Œ4ò™¢]kÌàq×›¸8ì`Ôl»ýnë4t; âU,ÄF»ÂGMuMp£3[‹nLñ¿Óísθœ‘JFÂ\÷_y{Ï]ŒÕ¯µ“j çżÇX¸ésJðºÕTÐÌÊ./ÏÏä—wøl2`Æ`çU9?ºh•Ä¢'1±p*àMß•!¾ŽXVÞ("Lï•&–˜„!I¼(­ŸëÁ¿-\6èý^»GlŽ‹¼ŽHÊZ‘*ëŸaÑDÚÿñÛ·ùwbµ™²öbéÚ÷&fçXDý(AŽƒ-Hm$Ýw‰£ìÍ1ˆã}-â9hçÁ‘]÷S?k";CÝ |$åI¬ñ;™»~5ñÇ x/²‹ÇÖLθÍG·á.c>íGö]bf¢iPÕ?¯d%¨LöoµÛF(ꌭÎmÒÇØÎ*Çcài¦Çÿ9w"Y¹, ¾[Ss±0Eñ(ö^ðÙJ\ò%QZ?=ÕJ¨ù$‚˜ôÎÈñGÆzcoˆÛ M›õ¾]äEÊìIÆYY£0cz?ˆºïȨ‘S4î¯Ûç&íOž=²ˆµ-V°c™¥ ¼Ùo(k)N8ã¸q-_¹¡WQ÷Ö’\qŽoùˆéû}é¡û4'p¶Ž;ì€ö…–Á5Ç‚ûãôQu¶.ëÆ^ĸ #&5Ë™®Y>¶ÀÂil‰Œ*¯î½Î…ÿÊÖ[d¾q+Tc^Nòh4}gµÏƒ6‘¥¦ø¯7'øŒïð.íÇ{2ýK¥Š+¾g~÷(c„Ùnš?åïœäØÞ2 Ñ!Dj>Ë\Ä÷úГ˜{Rà„œéJ€”öM}¤Ö ‹Ù w¨´ÌË_uçpªOYÖR]£9lÒ_µ<ÍÜ*ÃÁ‰FŸž¹“úrbwN,vM-«›²ü.ÎµÇšÅ½ã¨Ø!Qð•ï×ÕE~§cŽ«9ô¸o*Ð\~R=•wùƒ§Ž*»É+wù¢Ü5Œoa1‹¦’“œ±WRA¬àDj%%µÇú/®múÙX ”oâªzÌÌ8Wtcsf›W¿Yãú¤vœ±y<ÕU“$J/Jn¥™øê¿º™óx‘Eüy7åõ õúìq~¹UŸ"BÌ÷cÇpU’ê’¶_E½'F,fèN»d)ýÆCªíË—ƒƒ3Ùòc›‡ÏÕkn*+q•KNûî¾É²â•8Ï›M)xoc(›s ôÊŽï’å3–æaŸÒȸ>O„l>äEªÎlú|ñî ³w÷Í9+S+F gðÞ5b‚Fã£>U«„I¿ö0Å•ˆ÷«é]M“X­}ªoÕkFߺóï)…ÔºŠß¢æ4‘#ª8Hô{º~I/øiû¸2:#Î:µ¤«af¯]­ž±V[$i僥øŸ=ʽ™Îè3‰ìŽÌ¦Â½Eø@c^È[R¢§7þ\èð6À·Û+i¦_]2ô³IWª¯ÏåA²†xÒ†8Ɉu¹.¤š'™ì­ÀÉQëâKÝë°ž'ùbá:B-M¼¸DÚ}ê…2&C‹Þ  ûòWI¶–k4,ƒçÓè4å‹Ê Ô2”Oñ~ò2]³;m†rî©E{LöšÚss§0e8ìÐ÷u„‹†íqh T8=žÒ!Œž¯5æ¥cbÓòùµð:¯¨:A)¯%ìL$B›õÐ"ÉLþaF¨Ü•êꜣ{»‰Š¦†pßÄàGÆÎ<U;~£ùóÁDVrV™º5vô"Š=ÉÌ8OX¿áš· ˆ E'Þ+¹=2}DÂF¤‘¡Ôiòƒß›t¶øàe*Xßµ$ùêIƒö±LT`ðÕñvS%kÖÉ„OñÖ¦[ ~‰C­0: -·ÝèÖè:—× Ð¿#h Ûžxð¢ñø¥O11áY)yè}Pq¬dSÎwæý›.ÏÖšÂrsŸa;hŒqµôS‰ 0É´Ö‘¬A|T‰ ï}H"˜ž_ÒÈ“² Õ(Ø`ÊE÷UäóݦEá>ÄÕÃÄ8Hÿ ZÏÆj…‚ëe[ÿñÔ¢Ä\) ÍŽ’sß­©÷…ØÁ››$ÿ›g¨²Œ ´Ä˜DÔ¨ë ©Ø(äÃWÊö|nš÷Ã*?#dK|v~XPQÓŠ3 xÈy¼!<× ¯9îs«[í:­Äq¢÷øJNðÖxíN|0 j°_Ò®@ýb&yÜ\ŸVîÀ?ÜÑúVê§5ií¨Šƒ•q”_U’ÙÊQi±ß 3Åw©Âí ¥Íµ½©‚v\i寿¼(,¬£éÍ(‰Ø0¬ø¥zžíz¯Ì‹Ͻ?å‘DÞ»¤]Ä*­Êlƒ1ÅCµùÂîYx[.4ù^滽{j²F¢Ôm[Z(4B_7Ÿ£œS$¾Š¯í‹ÿÈkºÊÃÕHJ(6~÷!/  s`"‡M¨ä¯ëüHá’”z©ÖÀPÕ¶)J¨®baàfÀ¼Ð®e! ³UjмCÝ}•wb7Xô©L ý‚®·ˆ%LØè„–5Ù$ì!s÷ y–&’JRŒÕQÄê¦vô÷AÑ*w>]k+s˜‡AŸ„ò}"¢/j åz·3K1g8fö¸Ã².q±Ð=cœ÷׈ÀØ×šª›¯sŒ#­Êò¬ÕýlLSDùwˆÏ¹pŸ­¥¨ûÝ$i‡~Tü*‘‹¥_Lbºh¢‡Æ1œÂkón'r¾zHÖÌg›ÿ®%^œñàœ{”Úr­±æ"¯ÓÞ(м¦%R容1ô‰Ä<Qrx6E¼¨d&uZçr¤îÎ2¶Œ‰ú”´b°”Ÿeٛв@jÐY?Èã“Ášb.‰‡ò¬‘äP¸ )Q:y›_%»Zë缤à É˜êŠPf¼Â"‰ÇŠx®‹ncly™Ê§4ÎÊ¡QÚê´”1òšK‚ç*ôZnò /¬#>ÄŸ¬±1;MVúà3Ê›Äu܉°E6³þÓÍ”)QKסü‰‹þ¶ãQÈA£'$c˾V>!2¦Tt4ÜlÔK¶ƒŸ…bm¯Õ‹¬<±èd³ŠKYm‹ým§èç,dÙº¯PµbÝ}ñÉÜ‹ IŒ•S±ó@ìïéÍ·Uø¹>Y4Ãæ9NŠvÚŒ¨¥MRngº²õïw¸Õ.•Vû#Š·ò€$_mÐó£×å:…ty¿Ú¾âÃðõ ~õ  þØ/·!¨V\ï—ÃèæÎs& gÎdL±z‡ßö…BòÍ.tùŒó€û&Bk©£2º;.`-ýãqØ}&‹¹íçûŽÓ·bÉ+ *Š¥%,·=àÒ™÷v4æOnÝm,éõ”ˆe‡¨³P1ù.ãšÕ:Öîx|Ðèd‚& :r~Xù3HÌ#‰ÊlçhÄæy_3ÝbpáAÄÅ{ S3Ä^ÖÉ„YèÔ/m94ø‚- 9¤3öŠá —ß6£y7’¹ÑI vñ¤»B—EOóïåÛì™cDDtB¸ß2«°Þ÷„V‘ììˆ$åßX0,¾úz ‘=‘¯õ8)Ã'HÇʽƾ~¿Œq%Wé•ïw@Õl[ßH°éÌ…¥Í;3[\l‰Ô|gáCõćŽàyŒÃŽy@ŠÁ(Ί›Ù18Š‹r‘eez&õ‘•=x9éj¡Îì‰ÿæ;§¨c)»“$È ¥´êš_úpœÕ N–u‹ J/;yfBOU™îpªÜËš‹Ô‚ÖªÌòYg#!¢Ã}ÑÎìŽö„gq4¼v‡ÝX·nË9ZFQ^¯D 7?gsENe¹|—µpwipücBÒgó; ¶i5ftGÆ8r£€§ˆ~?¨O,}+ûNÃu’uÑù.4ã…‘;¦Òúk™nÓx¦è%VV©µŒ‹ðé å‡|.¹ðbÁ½FFé¯]ŸjÔìN~ôuG r?8½$£ÑyÐzÐÓ|(9• Ø+‹(é&›ÆzDLs»Å„ƒ˜49FëŸ\Ñ«4¸nµ”È3»Uçݦ,+h†”ötÌ’­€¦eìTq‘$úY|Ë­G¡ ¨ÆC r TŠADr .…Ï=¦"ƒJ;3Ð××ÍlýQ›ÇtÅÔtñy»–B‘ú¤ò»Bö´ñ¯·ò‹/šEU5ö †‘v‘k›€Š‚ ætgÃ4ïúpÏܵQÁâ7ó/NÇDÑäU q˜Æ'všöT67ï誀D磄®¦w—~¢k?N‹ë¼c9]¨0—ND¶baŸêZ^n‹¿YÏzõr> âGg¨;6¨ɬÓÚ/zâÔ‚ö1ä§ÌZ ÷lÏUYê‹8¢CR/–ʬØÜG›R‰Zù3l„!.ã*T6Dj}šHÏ·ážïsßnK|˜š,DÙû.É#1”™ƒ­d™XÁº*b»âœfgYÀ‘Ç…¾µÊÃߎòR­¥GIr °éB1ÒRÞJ|QmP\kh/z.E6c3Õú¢^ùòµÀ™ÛfT³Ä™>–ãbÀF"ÝjM^Øp—-ãkš»zf—£R(• Qcugî«KE"1Ì<»Ö×˰¶~•úí,¿»BÀoEÐs±‚œó‚¬¡8ì`HÁ—*p\>9a6Ö¥ª_}J¬§U0k^‡ô<»E&£å-ýü“óÅŽ¡£@m—gs"]¯ŠUÄv¸W[’uQU2ð訉;¨~¼lg±Ë¶S55>*ñç¼ïÎjüÞæF®Uñ…MÖRÅnÖ ¬„¡á¦oòÉ+R%ÚyW{ÿiŸ,»ça¹¡…e/zXôP¸,­»t«D•²Ÿv€4~±3+Ù|@‡ W´5R#-"Þ¤c”L{†lØð]1­èó¢ZRÄÞꓦb¬£•ê´Ò¨¼™6'¸^Ò±õ<ÿ¤“w`/1䆰î%±lïÛr&~51ÖTUÅØŠ`o’¬íygƒúNÉ~«wŽò؈\,ç1¿õ)¤-›\iZÑR#þŠM©3+&ëé46ͺJ¡û¡ÇâX'2•ª›½”ê`•‡ØÏÄØž•Ì஑S·-‹=nG‹ÐÂÔ,nçt­g ï¸})zwƒËWõË&`ÊìñcÞ( Ð4/*ÃVðË çÚ„©¾—5ˆ]»ó´úRùn$r±_è¨ù!…zÈÞú›E¼aÙô®‡gÓ5·µ9¦VP–ÿõ’ŸýfL .Žt|ƒ7b†zogV›rô@BHáBÚ~Ì¡µÙdlåu6£üé–~ÛŽP4–…q—P}Ǻ[Aɲ½Ês¬î‡é¦—T2ñ‚-­âµCIðj´™|äõŽ6À£5|ßÐWuÞܺì´Ýkª8Ç Zkø˜Áú],1,?øŸ ™Fì~±»Ö}UÁgÐÍC\<Ž/È“3¨u¤8 5XÌ7¤}Ã9˜ìõ÷\ƶÑÛHucþÞÿT?¬š°ÝœvKY]¯ó5êÛUq°ÝÁFpôƒ(R]9xÿÚò¨hÇ“Ÿ‡½9ÍÉ[lÞFÿ‡­8ÇÈ×) /™ö¬,¦–|³¿zªMëÖðåî¯ûÜn-¿Žœ\¹‚:-´Q ¹{¡~¾9Ðb⌖~!„úuß'(M¾¨=ê3G+’¸ŸpÞ_…S1¸6"Ô¥GQÖ÷ôÐÚk]‹n"&TåÜ©‡ðÙs M[ûÜl5¿"2 Ï)œ 8êa9Ö#G›“¼5`™_‘ ÅÒ ?Í9ïWëÆÎÛÍGŠC‰y¾FUù9ÕeÁ…!¢ôê ËÇu׫¼Sñ< éÎúË\ðUeH0Z _ÏBý“ ®™zÁ„46µË7Ò§PÔw/pL/î²fA¹| ¶¦/˜ýò‘Ma:6=¾$µg>l:Û-³*€¾™Å»$lç—ꔺ§ÃТðÝÏ|¶Z^«eÆû5ÄpË|¢ìû‹ả}Ö´Úx29¾t«JAh ‡§à×0ï|ÑÏûÓ.ÃTC*S +C¯fIWž]› œzüX6³)ã¡÷Â+Þ¹yŒÐ…‘Kµéì©=0ªPžQwgÐÄÿ›Áá—endstream endobj 454 0 obj << /Filter /FlateDecode /Length1 995 /Length2 2339 /Length3 0 /Length 2980 >> stream xÚ­“yŠàšð$EˆD0´2v„¨%6))C"ˆ ax# Ô ZZPÀÜ @U(D ÕVÓd“ ^DŒ» 5”ÛNÒôq ƒDà+ÉÄÑ4,p‚€Ä€¤%@‹àÛ>ô‰d¥Ä( ’¸î<›ò¶%3<šhü£|½~!2Hô¡™d·]Ê4( @4›2Œ@kÒ¬ü?\ý)nâ‹Å¸mù9ýÅ8 6àgçåK‰€ñ¦:€?ÌY(Œ/îOjFB`1H}¼;T~„0>&eƒ!!=4ëîÄA<êO´ÉíXP¶Õ‡Ãí,~îtÚ 0x’]€×oÙíì3äŸ3m>DŒ?à¬B›/„–H{~½ù£™1I@aðîTý0€ l´¿‡vR‚ ýПæXY O ÑJÚPB4ȶ½Q¨  ìFD =AD“Ü0îîÛ ?ä7ÛYä¿ ­ö% ;Ea|¼°ˆ€ßLú#þ¤ß€Vã… ‚øŸ­~Ç!?ã¿Úü£¤E#DÊIú«‰& ìã‹ÃíÜ¿ ÊÿÀY€Ð¼‘iÚÚ|0;ëÝ&/ÐÀ€à¤U¡Z‡iUSW44 !ÿÊDúi®I;÷ƒ&øëŒÆÐdAÐD²õ¿% DžK«Œ. 5Îï¾Ã(Ooà^uVÞðæñžˆ¾+ôØ‚ où¡2ǵ»¼Œ¢~B>ñuÁ¶]&óáÞ—Ó{7'È®5BŽKVã^â_#f8k+{–gÕé­_=/Jqºõ4k¡u&ÏFÖÈî3ó€]£3¹¢ñFäa G“ ìɘ¨2iU18WºwQ¬ZÌ WJòîÁ—¡çbXª>,ê|yÖòYr¯nž^©îh¥Ô?ì'soÝ—àb&HB„Sºƒ‹›%¨®±a"yBƒ”ä0*Ô)ú{éÝáö$‹cŸÓãÄzmgYÜg:Œì®è©ì¾MU ÂÄl֯ƵàJB/ë1v÷°äÞ “mS[TiT­ˆ¯ï‰ÖºY³dYúÌõÑü:õøÈ²–嬸¡™>n7 >]ïäü µ—• p—Ó KÒ4O»˜nªÜhqìþT7ñ=‚#”µôCz '²ÊDs#Gìv‚ÇñlÁ(q{¯w™ƒãÅ{üVŠR:¼öœå\\ kÕý>"®¾`ž4 ¤?A“›Ýö ÞÉOíšg3Ù'¬ê.­ë§›¥]ÑÙ~çŒåoù†M÷BjlÒzÛà»G-§ææº¶&aú,³¤ù‹1ùgÙÙ'ç`Ã9æC 1¬’}½Uº °’0ã´àŸžAã!t~µÔA†h>KuÇóƒÒ¬í×^Ý>˜ìDJJÿâ- “”Îî¥Êª™ ´W_¸óqP>£K ý¬öºþ­ÄªÏDäžÄ‘C:ÒèA«WÏË‚n‘õý_ü4·1ø´„~E…{þ㔄LNßÀEÈ ­ˆloJÅ“Xa§®¾›¹‚!£©ž¶~Tù“Ö¢Ée­7Ÿ¤ì“¹_K/fô". 08¨5ÓY½ÈB}s2Æ%,$–p¢^lž¥EÏaó„Ý¢§Ä®ç“óôžk»æÙ¬XpÖ] Œ}<ª«÷dÝÃ'ÇCñò÷0I¾#áçÕÚ:é÷7i@3'Oö¾ÇqsM­%Žñi_.è "™T”S³:$)F›¬»½ôhØÍsÎäKGòjjº;^Œé üª oÜo4Õ~ûR$æÚWÎoý™[âd‹Iïš À@­@šÞvÊŒ_6+ðàÙôÝeCØ7‡×eÆ'§æË EÙy"·žõ<˜ÅèÛb#2Ç×$eHý§Žn%älZk¥éÅïÂâ–‘ïk]diúž [üü¦ÙLï±g' ç¬EWêâ°./CdýÀĽу’}’Ï”ïˆT˜˜¾Ä5ó(¸ßÙhÿ_brüàýîxÐ ?§fN C`°Û7Äšðt—˜üÍ (¦"/ß‚§6õ<5.1³WÎéµ{¥ñjB¨À|nì@š‚.Om ç1ºÚ÷Î÷JXüå¯Mѽs]ÖR÷JßLeÖ̘sú~Z2ËÿÁ½%VÚñj­•õQê›4íõ£$×ø†:QKŸnˆ±â"uY^Ìâl•Œ§œÜÚì¤ãT5X!'”ÇtMSp#ûÌrŽÄÂK¥¯Dz”L1¸˜r2bLÜgúe"Ævå╳­½7Y Œäô¿lÓéì7:•ì†É[ÆåbEóh'P=Ô õ£²ÆƒÇ£Í ='óܧãÀ´UÖÅz’ÚГŠaÞ+‹¥ç«Æ<ËÝ»ÍXäj}öršâï^á]`ÑzuÁùØë‡A\cˆÍ@ñoúûþsÒøQWdö2ŒC(í–IÞûÎ$Ñõu£KÊ=ŠkÑÐFá䡨"ÏÀ~£lӇꮭ6*j+…“¯Þ\å~ø±Η›"ÚôBþ¶Y€|NÇþ‹£¿˜†åµ„ MÀ¡˜îK¸Ê`&…ùÿf?|oD …!!­ÙR¤A9nZW®÷±…yÅ‚ †wVņÝ(J~­™è†…5¹r‡ÜNÍqåõ¸Ê‹Â<÷7ÙOêšy ZÔÑ#]uÙûl¦ã½èö†Ö܇ã²ÙʺQ.£œ9ªÖ¥oœš‹rÃ(òÔ+IY.׫u*ƒC7Yt6aÚq‰(œáãÌ"ÿÕ)ÎáPÆso·Buã†È¦xÏÓ0qqó #ÄŸú=ãØ±íÚ#`égíÚU-U9qÒ@\`4OJ馜c*ã—J·¬H]Ý„–a»èò7›Éyùo‰”U¦ƒ³y¹y5ØÖýRÐãÃý® Æ[™Õ Þ­Ä¿Sºmp§O/¬áõG4 RoÔijÅD?}··iþ³T3qª^ÍçMføõ1ÈSkìæIža{ûÓ,ó6Y÷Øo&Ý‚)ÊQ§_i)]]ébgø_¯Ø1hg0³>Œ¿z‹µ¦ù\®ë¥ 9“"ñ”†½¼õ©ßEÖUÍÏôÛ.˜Û¡ó8£Ùn¢tù#šYmv}’åf·ï¥žöëN)íykô$°ËÉ|~ôÿTÖ ¹ Êõy'¸‡ÖŠ6;Ï 0'c’?_Î6¿ž‰yJ®¸.OÉõÁ凗þ³VB¢sáÅœM¸Ïº@®qï­” ûòœaþ½€bÔXëÚ«endstream endobj 455 0 obj << /Filter /FlateDecode /Length1 764 /Length2 1172 /Length3 0 /Length 1711 >> stream xÚ­R}<”éN8Ù±‘röõÕ’Œyäø¬Ã‡N*ÓÌ;æeæ}Ç|0ãc’ìé‹#TSc„R+¬•∠Ùò5‰JšµJlÔoT6š#í‹íœß±ÿžßóÏs_×ýÜ÷õ\÷mkIÛåèÍD@("tñ 𥆑OÀÙÚúò!ºF?º¢ ›x‹bg’)D7 Ág ø¢< Že ;_û…$WÀ› ña¨t!âb5t° eÀP‚¼9 lá…ƒ?bâq 0a†8ÅÂÎiAÏN„…®K0SÄûL%B|& °ÃDÚ˜D&Šp$bᜂQ¬„)ùˆZ^<@ÄáÓ¹ å1~ÇÒ¹0Gòry"!Ĩ(â#ËS#¡%iTˆ ‹¸ËÙB:fx#± ,A° CL,d°#€qa.Ù¶(Á) ›à°8ÍEŠF‡a¸„÷Ÿ¢ ¹‹1øßó†‹=<b‰Øù|Û»¬•?Â@™0‚­‰ Ðù|º‡í‘€€&$ 1¦×  Bì €Y’°P>na˜.À‰GçCb ¨%ü ]Þüûúø âGl IXKи’iÿ“Èñ±*ÂÅÝÁlú³`ÌTC ÜàC”áž'«ÿ{¹Ôÿ¢²Bw³–O쵓Áßß|pCÿðã\-Îå{ ›¬Ò|+7Z3¦;öUÒœ¹àxSjhw€úPÂɳóc‰1còäó¨·rªäÏjæðäÚÕ÷O¿"i…ôýØY~jwi{áÔÉš_øøª§–+níI¬»UIv s"Ž|S»‰hfp6¡ü¨ËU’Á©<UïaiܽëCoÐ&Ñ:ÍE½âüùèé—}Þc¢ ïEz±r9lú‰¬._e]üGACãœæŠÂÉKI¬ßtò,Òï©È§“ý¯[ç Ü1K­+”â3žöÓY’föéÃ~›^iÏht˵:R­Š7ºÐÄ}ÙÛ:guºoÏÓl5«u»ÚÕ7Ûf¥¯TÃ9.£:Ó wTx_¢…à炦„ñ–£Eò%^ê¿ÝU¹æM9?O&ñrwøÎT€~FJ«*ç­}œ´ðË_”ÏBhÆ¡º_àfFBÞD‡¬{7Wš6Øí‘<‘½>T+ÍÚh㯠‚tð°•ìRck#çMçóÆ·${äùã‡;$X|ŠIœgþðÏVï¢2ávO†•—Æ»³*Fá)‹Ï®[%š<%Ðþ°UOUþ>ô½y×Ìé]¹_guf™!÷¬ž‡:Êzuø•aÛ…È9¥77ÃTyIvé}zýFÕ§®Ì¶ä^ú".[|—E.?,ëÛ,ÌÇ_s‰Sî{¹«Ó#½‚8gW‘ŸÅ |’ÝvŸÚ5ïðufó‰_üWN–W÷H¬SuiM„—'jJÑÞ¸Ò±£êgÅßæWtë2WÔß(ÖPì/ ŽÖ³Y‘%´¦åǽ>kC^­yRÒhúpk,¢x³»R`«ÞÐ0¬ç àÀ­k5ç®Éz ¢ý­³•Uü¹>b%lç85ø§ CʬŸôÜt.²ªÜïïVšO;ššß¼´áN¼¯ HT…¸ËÇÿmXCêIˆ^÷ÇÚG’D‹liá䳤]æ9à¶_?wW¶Ó:2ÌN4¹ +”VèŸÚé.«žhמÜ÷¨ìÛØVmùÚýÒº%é¸é…:!X]à êYcüóùœ(Á­¢*Mn¡ñeí^jnrÜë:‚顯«&„®Ê©meU¯4Òãq^V/6ÌjiaÞ[ù 0^tš\]RÒ{v‹¸mà¬Ù¨)Ñø¤:O¶7k¸¾v+¾t?Ój“·ñôáà%SVúme±['!Ÿùô+Œ ˆšø ªòZeeøñêÝtæþú .µmY¢ŒUSç/ov3· ÚsŸôѦù×ÑÕ üÝz}…¢¥¸ÕU—Þm¢<æætîžÐã~uv]Í["_¤›tÌ^Ί1»Ke´NÕ<>¦5ð؇b3NÉ‹x€ ÛáíûÌ2ŠËZ"‡®Ï×öM¿Ó4„ež'柗ë*mØ·z·5§|¯“X$Ê >ødÿ»óžÉCĺ²óñ–™§ o襙:÷{IVäei‚Ã:“Í}gª ü+øÉùAöÍk^&5Øxnë;þ+ðùR«endstream endobj 456 0 obj << /Filter /FlateDecode /Length1 895 /Length2 1627 /Length3 0 /Length 2234 >> stream xÚ­’y `JþÁôh‚Ù ¡¼ +Ëa KûrþÁd,ŸÁØ:|§ô‡àà eðïÞššrCát‰Ž†=“D2ШTZØÿ™Á‚™ZÞ^lBßÏl›*†‚LÑîN.Ó0rÿéŠßÿ ·Èi-$ˆÌÖ¿íºí^~b…9ëg:ªø¢Gο.¿+ïצ`Ã4L‘FÊÖÆÙØ3yAº¨<6;Ï=!Bÿ¾ËYžw,6U|A[cÄún [Ú¹¨×Šô[Hÿ™5îIµ#õ«3Yæ97§{;ÅÖlrJܤºŽÚ] ÔÃ''ÏëyÓ1¯¨"r,ÓÓéåõM‡wLJÇf{JŽ˜u¼g”xª=Iº¦3.íßµJE¯Ëæ¶$ßyÍÊS=ÝíªE¥wt7æƒû™^6”šÉM_f(äUU…”>!™)k†Ô+×:kIþ’qd~hiJˆhMÒ´ àWW›{&/÷Ð¯ÓØñ)hþ&ÜS…«{u Þžñ‘¡7íõÎi—GÔy£‡*VFôÚ$+Ë·íÚO…ä'=g?=ôú+—OÌÍ¥HìÕ³„ÍåÌRƒ­ÕDÙi¼cM„,3ºzÆ(Œ¦›XS£ØÜtN"ªÓ›¤º£UêGò$ODÊù8†ŸµÌaºT¡AB Ä cÒ4*ôÅømÙ-ªÓ8Eº¨»<“ðx~´ï¤QX°&íêÉ‘¶ )Ytm² ë^ÝaÙšòèèRTx·ûs,M:ÇäãSç—ï«+Â=ßdÛ^=*d”:Ï­è|ÿ¶5u¢¾wÌb¿2Òk2”\§\VÖ\)6ë¡ÉKHèrF¥ãoDMgMV¢½”.zzO<íIí¢n­mè¯þϤ„Ä®œÜµö|oeî__lŽiWä§Ñ GåãV|䢔x!÷ýsO¤Ž_å´OÅÞ.ë÷î%ÀGd‹ jùôL?ÉZë”Ø­xnÚ€cÏfl¹­—:Ïs°SîïrÛØ¿­Z§äºY(«t}›Ã=¤60–ô;½®2‰&Ñ|¼Jò¸*‡P?7·«ïÜ4o‹êŒp+.@t×FîòÆÒ:Ñ g¾O_ÙîþÈ`0u´›_9QoÒ0_#F«—Ýr£]¥:_$&2a.­YºMr$§7f¶™÷>=€ÄGÿ`Îoìð“ó»5­.Sàn!wDáÈ‹‰¹ìA{QMœd·Á‹¢71oܧ#Ÿ‰8 Ÿ‘`Y¯lËñò4ö<<˜HSÜ‚ÈÔíž¿Ù$?›z¤èÖQí±äï‹IÃÄW"ÞeŽdÆZo¾yìך¿,ŸÕ©‡í0 [9âwÑ;%ð–ê›Ë1ÌÈ«NôN*®©ì:³RåxÈËáPrfÆá=›Ågâí“&o¨õ—ï„jˆ5Sð›Ò$*NݳJ_} ߥÑÚ|±³õ²À •öìómJï²ô>Jû`«v½•DiÍ7ïß!¾¸xÍ$§¥™\/Ñ­•½NC¡<ïÝN-–ŒkyZ†ÑìÇì;M©íw}%w,Ø-fŠ7=¸crxò]ä…u ¤=E²ËÚ]mç]MÿÌ‚ ž™òí,-oã¨è™»øÝR—òuvØû=`x‹%oó^ó1½ê”OjñýAÄcù[JFý¶J+´±x‹< Ì×w±~a<Ä"¿tŸ“äý*ûr´K²Èáû²Ý(R&…iW¶ÚjœŠ¼äœþQóí†$ÃiÅ2¤=wÕJÕ¸¾ †÷Ïd8{ƒ\ ÿ.K¯cGuN VަgÆî1o¸z@®¹vÍÁ°qñ_´\ Äž‡”–ÐÎ uãs¤½®A53WÓ3F.ó?Ä Ú åL‘ÙlðâG׌Xå¤P¥ «öµ;E8¯öÕ„õÃø¡BWò„bBîÉUï Åª¤ô¨¥‹à˦Êq/ÊOwF>NÖHT–¶‰,™»Úªæ3™Ûré&¹9:‰òà}Ë11cÃ!†\¬-(Ô0Ö‡æYjçØ®ÿ€¸y¥ºÿŠûg¯uGqÁCvòŒjQC˜Ä» qø4(ÝÛfØj¡% ½8ÑXS5ÅéOºQ7ÞŸøÐ”â&­RÇM„‹)ìRÛ(½/ã´û}F…³‘çMMz1|ìz·×¹NŒlóÞÜÚSsÚ’]Ç^E7ÙÿÙÕqx}ŸÍoÏ ½û¨z%½I ¸¡+⟪Q«dΡÉä\òñLûÊ@gqÊIÉâ Îî³õÆbñÊ6)®`L»¬L±qzö¸SÜ8_d¼šîÙ@e˜©Dã®ó6”–‘*z72ˆe9Y­f>^endstream endobj 457 0 obj << /Filter /FlateDecode /Length1 801 /Length2 1236 /Length3 0 /Length 1785 >> stream xÚ­R}^ uˆ.i˜L„–Éln†ñ®ä“33gÌÑÌœqf§ŒMÈÖ Ë´rËK iC«¸7*j#Mb£–[Ȉ.—ìUw܃íÞϵÜösþù=Ïó}¾ßçûœÇÚ‚Dôä"lˆˆ¤D²=Ù`y1É$€bO&X[ÓQ”ˆh(…\²‹ ‚ęɮd’+•F°˜ ”aB6"x8ˆ‡PàB8Zq6Hùà)„P˜ŠVñçå€ áÀ³ÇyèˆCáh¾°¡Û®ˆÑþOà)+ ’@hĵ'ÉæH6 ‹+Î|D< ­¥¹2ñ‡R„Jps€ nÖÀ­r‘Ãçü\ Â'ù=†ZOÎ ~ §_Ûöoê `ko™B× µ‘˜– ×W}¤ æxŠ¢@ZKÁœqY°”Ãx @­æ!w½4¾®Ua‡€}ÁaôÏí~½‡Õ" „EÒ`LüÚôjLþoŒo…€’=‰DÆø÷á¹NÌ[ÄA¸°( 89 Š‚„SQœœ€ãdq¡JÀ'v°!R¼ˤrüÈPÂÊoÜMWR„ßzðòBŽq"¢#¿fª#p¡äÿäÈPIWÏßć˜ã{ƒ ˆCøáìIùæú©ª$ï2åej^ÑßçúÕ·>ù‹nJÿ×j‚Êbw] _ªVlútLcl[ü{SIfKbÀCÆ›äØÜ¢>ÕX\Ô˜âØ Óð9{%¶\Ly­ß|½w~ÊIÍ¿g¨³*ÿ`y{Éß;^ŸgÙì ×úÉ⣶ˆ¸†¶³©Î´p†B’žvmÕ"Р(¶êKÇôÁxƒü¼ ƒR’bÒµ›ìžÏ"-²KeÚ>£:¼Ðô ¹ô} ¯ü#¦¾·§—)BsºžæÐö¢yjùŒŽ‰yÂK¶‚½4ÁÜxqk|ªÆ(_å²Í/«§=©/d£úQ½¦ñ˜¤ùMÓÚÑ¡C»ŒÊ®îM »é9”NùñˆÁÏÊÝ–à°žªº 쯚‹ºüiß,waOlÙ¬Òà"*ÔökÓòŸzú˜ˆ^1º æ×YÔ…Iš¢f&¢²gY::mÅoVŠ?¶S”îp{òõˆtÐÜÔ·÷i äAùÈü2꡽äTëØZ×ÀÞ2Æ/Ó˜FÝf´#–ц-*—Í–aWÍí㯳lá…\ermÞ๠ËaaŒáÇÎÜIYHñé®ýµÊñò ÓØ…œW½ÕbQ[z-gNR›Ü·&('úÈ–î‡zûŒà_R º™Â¡ä³áé^7HíØô"}îžoÁ¢ñR¥¡í•­láÛwf[l5òÓÇïgE\©õæÉýLFEà'§2­c%Óz¤ŸË[sÓ˜ý´œ> stream xÚÍ\ms·þî_ÁöK©±x9¼MÜiê¤éL&v4Ó´Ž;C‰”ÄØ"R²eÿúîâGœx”)'£yäá€Åb±»Ïî‚íèbÔŽ¾}òõÉ“/ž1"mcZCF'ç#MFJ¨Æ01:™^ =z}òýÏU›·"œ5-“Љmô÷ù/7ð²Zãåìh¿€Ë[øŸ.¨ßÀÕþßÂÿÜ5x‰/ÖøÅfão¯–Ù½>~‡¥AECD\¾»êòá,³åû[…ºv4Q Å댲r$Õ´°1h#M¤ŒðºÈ).‡(»L‘°žžÚ6W›$üWr¢¦›TE7·‰mÓÿVøá›Mô)¶ˆÌev‚=AKJ¬øÛ¦u­H !-¥—ÉÖæ,™Ïb÷þSm[­"m%Ïdà )¥Šªæ$¹¹Oár§8ò?¤8îi{;²X®5mÈo=«ú ¯’±½Vza¯ƒWoª.‹¸«âØ­u;aš7–mL“Ëäo9ãEµµpsëxMߺ[gÎO³×hÄVè²½wŸO,ú˜^Ã]ü_Û&w…uœÏœÕtNOÝ3ë…õ Ñ6ÚïÛÒ ê¨G$¾¦hJ»£¤.vK[9æ$kõ•¹§W+£ËMHv[SoÅõ.‘*^IwUF>BÆ-šK½—hÖÞÄ~_÷’Lki­¾Ú­5‚›4Ý׺±ÀJ—52îiVÕnFÇX9ÈpË=vgPFÊ1­;‡Á~Ë>7½à·iáhŽ(QE·…ÒdÖ¼âËït¿:n#\7à@±Ò*´/=ëÁˆzSÝ5’Æõ¬íÓƒ0 •ŸÕèÉAFOÐè%Às¿&vZ=zHëFrື¶Ñÿª;‰X¬4¡Væñ|µúöPª#2…&¸;b£Üö Op»^ï=‹®àGç)éÏtfZ—F)Õ~ˆú÷âÁ •ìÃÔü^L=a¸Š–‡ÑÆPïø}ðþÀÜêZþ=+ò_L—!ZDÇßÝÚO—»m·´vN µÖðxãpmñx¼“ãñ®koš–"ç Wú0PZ}2”æ;¡4A,-‡Bi~?”æÃ,ra?JïmþwAiú¹ 4Š]Ôï¥É¥”5êõÔôã{j;æ:шˆ€ÛËU¹ÍB퀚á 0 gÆüLâ¼ujŒkÞ¸Û—Í܇M€2¾ñ©+¼µ\ùΜêÉ‚ÞuÝ®n}cxÁ¶E¥u7=K£­-ú‚iCwWSìêCgû ïÞ*Åæh¢$G%«Çs¯uÝHžôï\0þ9…2>žàÞÛ8³ª2Mn ˆvü aüÂv6wh| HOɱ ú#Ãn“ÎÅïþŒÏSˉ…›gù…æÃ_#FkŒé»Ë—ß>½²]>Gr‘R K7’Sbürqê»"5`ŸQ{G!cb ï<ꬽC¨Z¹ÂÊÈ^p3猢–2¥ŸU§Ê)`±¨>GÓÖMZÂÙîεu7OC]Æ•û;›¾±”Urâ8&ø/ÁÃaȺ‡Ö~Ñ&£eyA-*¡ÓªŽ-ìöÃä~nÏé—!,_¯Ccsø02j=£1ΓËjX4ÌšmÌþôÆÁœQÿ墄±Eˆ6:ù8Ïê© HÚøo«ÕçÕ]t?ÝÕ×UQòÓô1Ó‡ C(’ÿˆºÊβ¦2^m_GƆ~’TÉ*l]ÁÃÌ_Šwèñ•ÅÊê¾É¶L¾€,RÚä•!ݵUðç®ü³1±L§Ã±I,LŠŒxî Í]UªL£Y%¨Óé0ê *kŠ7*ÕhUŒ ¦¶¡Û†$^Ö‡©Àk=½;òXÒúpÖ`mªb—Œnk‹-¤¦“k…î’ ã{’BÐÃEÙè'( Å; zÜ“Wf{;taX›ò›C¸FsƒUç)Op¾Žå¡ŸT@ù±n*]›'ÙíSÔ«û|jöÀ9Z_Ä5Ê8Í1wN('Ô˜ '\EØOÉW´> ÌU…¹¾°;Úd™°¥r1TJ.üN–7®ÕÍÊ¿W:±ñÆ¥ ­ÝWž ]¸¨Ü»º*¶¬[ ·ÎkÚg{ýX÷;E¼.HmˆUåµÊWÕÄq^G'Ç+JDŸƬ¤¨+¨e’5»íqÀÄ~ vˆÒþÍÚ)Ü‹›•—ËÜâ ô)`7Óm[/Êü¬ÑþÜxW£œ¢¤ß~ÝY„û±G$2o»ºf¾ÇÏG°ýU_‡¨ûÃYµòírBÅò[Œw°•äøKÌ"ðz§ˤtHQF»SÚýˆÕuA3¡ÍÃFä½#^ôÑ$:é¥RN2Ä/“ìˆUd6<¶qúÈžd°*ïø@Zè›KÄ:Eú¦m1ÙpWå&, JŽÍùN6|¬…`•kYsÛ‚É)Ò¬=îºEšuZé xînn«øð+|§_we®®Ì‹ù€Ùi!‡LÏp2dz²6½®J 5ˆr ³ÇEÚäûè{Mƒ|\ÓÐO”÷ÔxH"vËÖó?éð ßyx%N¼®VW ;—­ÍUf£u±„u¥èNP]h$wž*%éj©…§xGÒ æ`ºÆÛ®sʀά•…Š.Í2ÅA"‹Hòø¿²Y†uÄ®öî꼯¨»1JB\÷xoµùe=Ôßð„†¯zºÊ23Î7}¿qäÙOëàËÚ)^Ûï–³TÞÄ ÷© ßÔ»sáeæYÏwÍ»Ü7)AìÓ5DÙ0Ráé÷#!’àÒǪêj²Âƒœ÷®0ØÌ›€lþÌÎ¥/ÔLoâ„ÁØn<¼8­ÛKHmë¥ÊY•ô: á’kÑ Æ´Æ‚k,4ÁP ¾–ƒµc ÇœWW €#züÁ3a•GBõ¤™` iõN/‘}O/ÑCe[ÄÎ’+̶È=ÃÂàõÚö/õBÈç ˆîÍÿ‡g÷HÅvŽ\’Eîh½ÌÃ"ËCÇD÷bÃ1¬!I™+ܾF)ž¹œÇ³,>S6×þó¢Èцң­íÏiCˆþÜ ¹od¦¦Ëã;«© Ò­Ö¸¶ òÕ&ÏÏ¿ 9Áj8õÝÃTÝjQ.¶ŒöÉÒgm™ÄÅ4£Jçõ#k´ ‹nÓ$ªÕÎgzš®§kÏ_nk—]¥QV†lÃ[?†ð–-ÀN:ÑP§<³u\þÃ"u«(–™¦Xál%°FKŒA•…Pñ`Ƭa©ìÊ{¥0ñœk2> åD ¾6 (Xü{Ÿ6Tš2/ÙÁÏ­1øªùc€ÇjQÖlÖ´ÑÃ6û ¡ôt@*áŸÚé=/‘¢31ƒ~¼£œ©ÙóDÿ¬R­>PðFl/ë‡F0~ägž,âÓGg‚Ü;žÔ-F¦è´´§ª .b(߈Fmñî=Þ·û¦¹S]Ì9ö»k–+¦ôç´GFÜ#HÙ'•Åb ª?Ÿõø^i { ÆI`ðaˆŠdXì *²ÕÅœ;*’›Ïª"™9ŒŠÃT’(§Þ¡I¥¢O ˆífÿé“!h;€Uògà…ß-·ÑOTÀê(X– /ªð‹º2v-C½×öQ™Ý5FÕ£vYtPl¬kXh!Ø×þ¾àëó-Чʉý¡Tå,ÇúúÖâ €÷Ce/eN{Oƒ¶¶'+ A(¢¯üö(kƒµ¦¶ÁcY×áPÖáÅ~ë!X¯ü÷ƒ¦U¹Z^Ôë:Çm£ïbç*êñÚª·U‰5V´÷ŽC`Ý Î—~ªýÑnUñaŠz'{ŒGXBÜÉN6_Ôèã#©ÛU”Øälêk¢Y«l-pÒR³p‡~æ3ïœÙÃ5"à<Ûà<ž :» 2ãªÎc™¶vU¡þA<Ó1ód?8çÂÆG§‘Ü»7ÝlÒ ‹ –÷L^nqëS¥hdznuº §‡Üà© Úý¨@÷ÌûP£dÁþNÓ=¸ì›„ËÚ<Ï6[ õEI·s\YÔ?Nžüö„Ø“Bd&1ˆ5Öe;»²§‰„M¢º×õ|tþä…û µ2ˆü\ª„_Z™°$¼©†úQÑÅ_ì m¶xô•ê©“ÖKÿãŽQ”äõ÷¶£;±UTïoÜ­ rÙSs÷±8W†_Ä¢bx,+*¦$ž%XÆ¢bh ßܸmá§]¬þ"•ëûصfÄÙV“‚g'>®{² Y€ãþzm‰ÐiŒÚÌE×»BcëÍÑ„3þiîÕ…lãvÁëY8„á¶rþËwxÛ±À^8Êö¯¸gíÚ¼ ažuQë×{àG¡ÞÈOáòSÜv(ŠÎñÙÀšb!8Ù“t´¤ؽÃîú?óè1}endstream endobj 459 0 obj << /Filter /FlateDecode /Length 4486 >> stream xÚÍ[}Ü6zÿߟb €çщâ«êº€/­/nz¹\¼A[Ø) Ïjg™—Íhö6¾Oßç…¤( ggû…áI¤È‡Ïûó#UÍ–³jöÇg¸~öû×¶š‰ªlªFÌ®ogBêRÔbfµ-©g×7³wÅ»e·¿šKYß^‰bw5¯mÑmáòç«ÚئS?nWðì¯þ™(zø¿:àíG~{wË¿oÖвÆÎ8ÈnE}¡Eí{üˆïh±¹}‡?›{ü‹}—Û«Ÿ®ÿã÷¯…NI—ΔÎ6°2"ZHìô¬òkÍ•³9,ÏÃ=»-Òv€q¶¶?x:´+q¼¿Ã{[| 5ï’'tÙqïïqœÝôxÄ?®nÍÝh 7i·½yK/|än|çp¹{3r‹÷ž,ì¤-ð]OI¿Cv>|Ón;¼ÛbK¿ã› „Ów(™{^R¤–´c¾‚ü¾V³¹¥V sí>Ç{]*9?§õã4´ª-’Šb5®èP¬8{GOÒ‘)ýøì94[|§–“]ýRmUlP„£Ð›´ká)y@~vܰ ÍíI_<àk ZQÏ"÷ýË;¤³'¥Ÿ#fsæÈˆs½Ò<]fIJúï×Ï~y&€`‹3-L)¥˜™F•³Åæ6èÒ˜ÆÿÝw³Ûgaû ÂÁ{Ö•R(žó Y ÿ°Æ'D€éº† Y¿‰UxK KìZ¢‰WQ›±ñ›‡6´À]ׇ174:j¬r®Xmù×› éŽq)ɵz´çWõ&Hi™S;eK£ux“üÆÏÄé¥_Åß§aWÞÔAÿGËŠIhRš²Rf,¶„'Þ¹ßG#%eè{~Ž„NËšTÆІ¼ÞòoëÇCšh {aáùø¾*ym‰ó®nHgæFÔЮ+¸»¾ëª¸cð¦p¹ÝñïÏÑÝ2€#ú®{ôÊAÏ ¦!¸=ÜtC*ˆºG­^›o¸‘Éáþ•z¶_ÎÂå\ßA7‰îÂæâ4Å0£ç2÷ã€ýŽ:“PžšY¢iìäUÖ;2YÅõ]0 ‘Låo™«h}ܸÛ"‹>¦:î“ )®A–‘û{| $îìÂÝ¿ƒ/ØÃÀ”vBAâ`‰ ñ–\(sªÝ3¿ðq µõ‘”G^ïÑŠ–1°÷Á³c«:»+X0Xpª`µó!µlÑd)|èÉ;¯s> ÜòÎ[zÝ(ö®^öxO´Ýt|ClhFú\7šxGë]ssV»fÅå„›1²±¢ú¤®ç>¼Í#ÿŠyPàFß8õJ²ÓÈàqþÛ÷Ñ30S[y—ä5“e£=Cþ5ç¸lY9 ‘fè4|:¥*kU~PßI¥ åUnèTeG‚ËÊŠd(y‚2Ñ ´ 㩊7Û„wžq‹¶¸xBètfH+Uét=Ö”d1uÂ@Ek™‹ÒHŸ¡¯òKVàú“^ï«Zä$D©EÌÐ¥ Å®œ/Cf_*d žpIÁ~Ó|1z{ *ÂÆ!Vá鑯©?ƒ£°ORcÀ{6†0¹·C|ô2Í~ ÔSÓÞßûpOîxµ ¦cçWrVÃNàMx^×¥µz,ž!öÎ2DN Ò• $pNõ”“î\4‡¬«R©êµ‡/i€"£‹¾kͺh¹×6_÷ &½Àfô(à ÷ƒLÓ¼›V¾ 9¢vqðOIHt³¸Þmq yߢ¼ïס¢‘…¯§D1¤qžŽºXèu¤$iºo¦Ã'‘«óÚáléÜ‘í*?S:˜Rj(à:(iáhéØéù5Xß‚Øå5[oB0[³ûWAS€%øšÍÀ§fôœbÔj;Ô n$²Ú€¶Ù¨’osÁ’w<®eñ’¾‚'ßû^<ª(¾ )yöUÞ5¥0q¶}°TŸ´ÓZc²ÍÑ ™·Í7£därªw^‡¶‡8EmeJªì©ýèYOnå†Â©AVûtí#? /†­°[»ç§œT=øDåJzLB±ƒ Š´½I3ŽÆ»ÔöÀ£¬B·…¯ŽöÔ|?<§Eø:fè‘6$`”qöeȲy½# ÷ÖÇk…—p¼GŸ ¡dù!#kÃ<‡˜uhÿšI"¨!í¡µÓŠÖ^*^mi2L“ÛP,´Û9üýS$â¹<¤V¦ø®c°Í_QªßùuG3Ž jxªÆ£¼‹ð­cu›¨ fUÆW ÔæÞ+^_9Ioa’‹ã£Ë±"::Ë…´®#ûàpq”V›0q»Zó“»ù>ˆ®GtÃYº¹ïbÇ(cœ¬öx_é¦OcɆò{ ÅkOUè¸ÁÉɦuÞ„ÅœŠN/w1¡-ÙÁ½}ðúLê‚M#Óõü ®䵤D¦‹>ˆª;èó!"´rTZÂí«×ˆ0xqàdøžÓ"„©ËÊ4”LÔFòRÖ»e6ÐxÌu&ò(ÿu. œ¦ “,ðå‰ô#Iõ5£éj9žîDòaå$é*;œ°¹Ñ¦9ˆÓHzýîDÚžðê2âë/J|ý¥ˆÈ „eiäH'EÞ•–#àp²,Xþ ܇%€¶^"êW‘jÎ…:YxIPgK½.Ÿ÷UvT+!­Œ“¬|†¢ô¸ÉÒíJ{f|¬Øê8A‚ sòÃSÅÞ‚œ¾w+NïEñ"o(üm&¡Æ\cÌX«d¾¥*Ësëu0JL’ÞeGrÃEa¿È¢Ái-,~b‘x¶åÄ ®hèÿIæu„Eº‘yù¬%hD\ç=û6ÄŽˆç<÷ð³±¥n&éÈ(ÊlC_s„œKU7©”G2Öl?„„$EL°/"î‚’ÜbP1®øzZå.¹ÿ8¢¨$6Âu6¢`Ÿ>Ëpà¸iÔ—PuV¢¾ÉÜXÞÅ1þ9»›XV2B&î'^×ê67z¯¢ÏP$xA¸qLƒ´¬.*ÏÕ¼;™«ª.µ›¨Í1³“œ@•ÌýK•gÇ8KɧÒ~– æ1àáÁX JòPpßùLŒ„ËO -Ö)W¾ÈZß o‘…=,ïbÎNOkýO~PvÃcCòüÂô]:ù€ÿìyJ‰?†Èn7¾ÂgÏàÀW‰±„éí¿ùݬÚY*Zœ#¥;QUÏ9«WñJ˜x+xÃñ7ÄCs! -Ãf ¿@ÛÇ Vì«;÷žüCslÎcÿææÓͬƒh ]K1O÷·‰¹]ö·ïú¬xƒ±ù¡lzì@^0T&˜Ž\Öûª<_¸2|•[*äËF~2™ 2‰ ¤g 8W×#¨!•½„ˆÖó6ë€ýdˆ2¢´ w—¢­ê$1CŒ2¿@[Jm&â>:}08‹‹àôm¶ðÐà”FÀ|^ÿ,e¶)‚ø;à¦4…ñ¨¹®lñ:ì†øÍ–§7Ï´*äÑî—VÉæð(_è½(ÐDÛCji/بä=C=Þ3„[e@…ÂQ•œXQé€ù7! 艨!`Mö(»>Á!ù(@GÙÀL5P^ØYMjH}ÿ7ÎÀvzMú}V¹’)~t«Æ{¹Ó0 P­ŽŠuÁ¦L=îÿç%Òî-Aª<"㨼³ @¼óÝÓŠÄÑü¾ó]8ÌãÑFj¡{HJz[Ä(KH£+><.2ý<‘W\SÑdímu0‰®Ï£)þ„϶LzŽ{tþ0Ûî6_¤„9å gÔã=‘ˆðð1†²ˆ}€Ù×c\çOÎÕ…ƒP]»ORÉ{´wJÉ’DX2=à …*¥25ãÐÀ4 ±AâÉ@ÇtioÓow$u„½tñçÀÆyßzhø~MmªxÕ{¤ss`àH^ôYx@T¢W >½yªa£N‰¡ÆêÃI¾‡EðAq_@Ȱ‰†oL`>%Fþo…¾%.oZü‹Æ¢óR‚ä®Ìw÷Ðóc>Ãm€4Ô¿9øÇ¸k·Û÷Ú¶Yrúð‚O i±1w< ÅüΑq›f÷!„îm(õ’NÝô$¯ w|Ùï6ÃsO-¬þáX/•`ÕK ¤é„E­·Ü)ï(¨Ë°¡µŸç¸601\-03¤<Æ9É–Ùô”zêP¶Q4>¤™ò2‹{¿E†Ýg-æ¹–éÑ3º÷Gáº.îÚtO [[þ¡Ôš0|`7=‹´öãiYò®Ïsª®-0-&E·_&·ú$PwR”Ò‰4ù|öëÌ|Ú;ɾ´¶.À#´JøØ ìÙºTıN%çiþ‰ÿöD>"‡¨¿Ìµˆ=ÆEÁÚ!SØìÓ„}ÎWs¯óô€êó|ÖèHtNliûw#ú'ˆ¶vD5`]ídÏý4†Y×eUÙ/°Å!.tèufNó›xy<§žâ¦Û#¤t@¶ýÙW0Šÿì²Çœ+­ŠLÿŸ<;À¸/ Íš)§ ãܬ²]²cp{ÐúGºÈ ,Ç)õòT$PƒºÎU­)SPonöS¦Fó„ Y0£ÜѶéi°æ2IÙóû€XMÆßœ8Ê£Å%N~)Qý/¬_9)ÖUiŒ»,ÐM«@áíÏð¡œây5ʺZlø´I1ÔøîJÈäMÓ_Âg#eÝ'ë"Õ”N'uQ]ç½fbH//Ž£“b.FHO(—'Õ7ÂêÕ¹\yÿ†ÓœžƒóQÁ¸’ PážÂN*:G؉›²qr¾ ¿òBržðïOíCZ9Kºùt‡jžå& Ÿ/žú”HˆzLŠÇa ÅWŒá8;ZŒ.%~±UÖVŽý|\YÁkX"ª0Ú*#Jàˆ‹†ûRœHü nhʲr‘y2Ï<£FgOÉSâ5êxvœ‰[ö O®KW™ñ„Q³õéíùaM¸R¸úlXS#“ƒGxÁ©k6&9Шó œ=’ô'Íb^sYÙR5À_äJ7£]\ú*‘P ª´Ô‚À×uЦÔôV«ñpÌK+ G2fê‚^ß&À+K´klð°w?U³hƒ"“Þ>Rχ­«Ùzö6|6Ñë0”6`â‰Ó¬a¨‘ª¢Ë `ÛÄõ4—º7r=ÓãŠCä`Œ'ÔD•O… `cQYÃr=d ÙrM`õz|w²´qñ<û"}y7—x†>2;×ÄÙó¸s#. DòÃ’g7fÔ'åT·ù0 êRWú,>Oº]4áSú2 ŧَ…ø%p¢¥çëÁ óˆ •=ý¨8á$¥Ëñi­7é22ìO ŸS#¯Ü€ZC×6Ó‡kÔ3Lr¥ù!ƒ‚z4ΟEõÜ›ß2É[ºøö©#µØ¡Ë‚Ž:†¯_O>u 1 ƒEW= ¿‹®ɹ™xºóÇ>¿åÛÙŒY“<*¤¦ÚP›hñóMøX€N¿þ˜Qúd™ívظã ?ÐPds6žÕªŒº™áwJ¨Ï ha¬ÆQ¶ó[♹,žÉSñL" d­dzPx} EWSü)ë,lYi=®Ò>7¬©Kš<Öds>®5Ÿ×ÎþyÅ;gû(ºñ(Õîé]b‡b’~oóð€}Ôöy>uÄÙT/s * àF*uY@S§€&FgÂ/îÿwÔ±endstream endobj 460 0 obj << /BBox [ 0 0 504 648 ] /FormType 1 /PTEX.FileName (./R/scat.pdf) /PTEX.InfoDict 378 0 R /PTEX.PageNumber 1 /Resources << /ExtGState << >> /Font << /F1 379 0 R /F2 380 0 R >> /ProcSet [ /PDF /Text ] >> /Subtype /Form /Type /XObject /Length 132773 /Filter /FlateDecode >> stream xœì½;¯-I’¥§×¯¸")ô¥¿ÝC€$@€9 P ¨q†À`šÀŒÂ¿Ïm¯8·Ê?;•$-tvŒÜ{Gx¸ÛcÙ²eÿå/ÿÛÿòãÚl?Kùñ½ ùÿµ”£ÿ¿=Kþÿý?þÿï¿ý§)Ÿÿ]~üúÏÿýþüË=üù?ÿ¯åÇÿý—úãùüßúK•ë?þ׿¬þ³¯óùyÎú1÷Ïõø_ÿùÇ¿÷«kÿœë½j}]ÝógïUûëëêi?Ÿö^µ¿¾®>åç*ïUûK®þ»„gù¯ÿÏ_þ‡ÿ©ý¨?þñ?þ°Û×üC±‘öö³}îÉ?ÿñŸ~üwÿP–ÿþÇ?þ§ßøÁÏM=Û>X~ÎßöÁó³ö»þ\S?X~ëÚ瞟½ûçþžß;ûg©ú¹xÀÿñÿ<{jŸŸgÉ[8òný¯*÷-ïö9?[y¯ú_ïÕZ?Ûk¼—ãϯë}Éæ|¯ûŸ_×åå·¯ëþç×õÏ_7¾×ïÎ[ççóÈÛùÚy¿í…ÖòÙûû×OþÖ­ðyQ?ŸþË'ëÞ«ãùÙö_}ð7þâç)Wý僿÷¹ÝÑ×Pûçàäcvúßn»Y>·/¡Ž)ÿágGÕ*׎ýãó‘ÿø—Ú>ß8¬ççx®kòÕf©îÏ}¬Ýç7ÎøYÇýŸ.zºïkcËêïM×Úüyê=d®Ï5¹Oy†sîóKŸû,bC¯Ï±ŸÏ•…÷Ù~ì.ÿ¼ž}ËSîå¹o|žzŠ‚gŸ]oýÜp/Ÿõœ?N•U½>·~>C®ò·×> Y‹¼úÙé}^òç6ç}›]ÍÝçñ`9ÛÖ¥nò2®Ï}v£>^‡¥ÞrŸï÷ã½K[I–¬Êko÷Rû«Ývxþæ;§óÏëÛðŸ¥nrŸô|Ÿ­´e[×û;‡:ê϶†­ÔÇÏþèšMºVu»Lx}ígÝâ¨Çý«È3œÏwÞký1¡›òyíûþ½Ï3XhÛìóŽú–µþ<åõ|ãüè–‡õ?'{ßß9–>Ã#aÝõ|a&*üÞós‚±þ´fMM9¼¿ÏµÏiþÜçÂó ¦nÊ·5ëUÖlÜçáóÞ‹Ú 0Ÿ­ÉJ~~Ìn=?§~ç»TåÄ~Þí¾ïË=Àº4yãòÀ$<ìsKn,ìçB·ù±œk$6ùÑg_`³ªXÕϽÜfþs[¿’L]Ó­«¾¶üVoKüc8·¼>0åŸG—k["°¿½V>ß¶õñÀ\ëƒ}¶ÙÁíÙõ÷à5|Ì„y[0»38ºÞ'¼†ÏQyt›Ý¯¡VùÄgKÀñë]MÈ$oûÙºS׳Àñ›úúrŸ÷pt͘Ï%AŽlýߟw&R¶ÙT—ƒ÷rýNøÜr“<À¼ÿÜSÐÅ ŽJó©Fîs ŽôÇ…‹+ø{Eß'Ç]`Z«Õ5%&“Uô;+¸•)ŽHŽ-®gÑ÷N硉Q•¨õ¾—OtÖ4œSð1/¶w'ü^'õy¾ˆû[Y8ÑeEäs`zšºÆ-oêÚ× Ö ¢ÖI–ýÙÄa]Ÿ[²žŸ°§ƒ™ïên7…D’›,Êï5«]öÄç;ìÏ*oîóŽÀ ŠûSûì.}¬‡ìk´!âr>O‰!CÕ3Öàù4<;…B° ±Ð¦€m-jæ?gÞŸºþ£‰Öõ9 X÷Â÷ð¨ëo´_$dP×îo¨õ—õ¼÷ËÇÖ}VYp$x†%vðsŸ”­t±åIX×Õ.m:+U1©Ý¥ÌiêY©tV>þÈÃd<›Mß_‡zûùk°'ªf”…®}ì§d\ƒìüÐ`áó`ç±ôèþÎùùß;±ŸŸåc_>¾ö øÛ™ùœ#A©!'°.]CØgûb~öççÝÚ}Rgþ}xSÜås üí熞¿׺ú?¼ÏÏûdá;Q`ŸM÷ÅtÆVà¡à;4þ¼£Ï7Õ}þygÙ’Æ}Bö ¿ghÁ¤xé³.rÆŠ5š&M[w0¼‹ ÈNTõÓG,<ÃÒó)¬¬™ú±ë©¡¾ì øN‹—V’Ø>4¤•½‹©ýQÿGéÃ’³yÔ›-°=ïïc_,~!»ôh°é¬|îÓRˆ[?ïo¨ »4ä­Š½†s»•Úð|CÒwˆ‰‚[—ƒ-ߣ,²Éÿ0Õ~Büò9GC!°/Ÿ=¸Z²w‡&b•*5äLŸAiÜPxB  øœæŸt“b0èä<€]*²‹Ä‡ƒí±=Qqï}ˆòIÞ¡iìëÚd‡}|#¤ÓÝÎ>ßÐûÙ»å¾ÏyÜ÷ƒïhšØ~¾óNãd¿<š¾C\ {Wá°»C#žýнôîï–âÁ©{pHäk-ñYA»«°âF(Alˆ~'Ħs)ԵўUñ¦ ckï–PaO£³ùñÅG÷Ôå+îzn¾÷¡f¾Ñ»õP¸SÈ0 æC8¤*)aaˆ)öÅÎ VÚÌ`†ã®ŠBÚ*–Sö'¼Û­pÝ&hôóþ…ÙÁ4ƒiµ† {·êzBxV·îëIiÿgÖ•ìϪ’…)Iß]œÕôܢͪCBö…圦d ËêÿŠ=ºÖN8lZh¿Tý· +˜SŸ]Jn`“‹¦íüÒt¥£œ^)§Ï5÷á6=•»Ó{7xé`Å»VMaKo…‚ =ŠÇ kÌ€Uí®´%‰‰0f(º_à=ˆŸVvìݡᙄƒæT½—CgºÚ«X¦l O,ÚKM)ír©®%%Lá‘Mõ©` ”³îAƒbyÍŒ‰3éÚ'Æü$õŸsiÀ4¨dAý(~¹0ûk†îúÊÏrZåÇ¥ ÁÙʣĘËÙ”ÓÉýÕîh2UØ5|‘£aæ’’u Ià‘ ¾si¦Ýh›É¶Ö­ ™hS|oa5G2ôGI%˜åXvDßùxu…ÖskX7Ðw­ndEfʪêQ‡@G¡†!MïåÁpâQÔ³¿® ÕÆ¬¿N¯¸1ñè~!rÖwÅŠ†®õ:TiíZÅc"U³ôïÁJòöpÎJWt~?Ú¨c߃BïjǽRjÑ,]iX‘Ú’ŽDJ>æl—„±ÐƒûI®j«‹Ûh>Õ8MF6ò-»žJAõñ÷¬"᧤znÁ VEå!Ñï–Ö…BÅ¢viËc*ËCBL#5ñ[ ‘ ¸R çH¯ÁïuåõH¸‹LI¹ð¡Œ¡”Á³5”"‚™‘³°Â×íYÈ Ïõ,üTÌ÷çT4ë°+6žIkS«ý¥9£{G騣ðÄ¢ó0´vÉ•]tF.Muú ò«®T&0œ˜' iÇôg€ó'è™ÚO ´yEª²Ýt÷q ;”òÊ·^¼ú@•ä¥ï¶$ˆñ±Šø‡%A¢T-À§.¯ Ã¥išƒa¹ Ÿ‚!)v{ öÄòª/ØëqœBì—å° Th›~N؃Ȍٺ癸ü‰2VWäiõ–b†¥!mæÇšÆYó5\>gìç0T¿ÑwC…ª: åüˆ€=hÕ¿‚6YÑ]NšR÷D˜OïPbØgºf’ªa…vªƒ¸Õ ¥xÆ`hÅôòÒrµå>aOt¥œ‹]Bò”¤*ꬮqäÔïÄß“¼ÑÊ2È 0½Û£{‰YÍêÙ÷ 8d*É '4f€ªèlž?cÏb†Š~z)\ŽùOŽÞ‚ H<˜~guc©,?TgÔÐ}NÝóc‹'2N¶ÇRàWªZÕ$ž×÷ ñ<²mÌß’oT°j/‚iÛã¶ŽKK[}#ç›Ç*Âh“§ÂìT1U™4à<5ú´Çaab£h¤+¿‡,®q9äU‚÷¬„Íו¾'²ŒµÖ½±qhe^ C,½´´IJ Ü$55ó; K(êÙ¹±EÊÆtಓ2º'<{0\¨ÉÆw¾££% .Õ™ï0¿Ûl:·_ûË›·‚íiêÖC Á©Þ4aG6Ï)a=—F_§ÑzV}ã lªhΩ ;Ä÷<°¯g`:̆nÊ6ÅÒüÖóß9Œ‰³Ñ–óœÏÊñxJRÊqç¦ÈaþmÏÑÜ©!¬o;X¶faË`ï#‘ÄBÌñÛ öç,QÚÅòÃR¼0Çn}Î ™¨–f‚‘YY›Î‘–²ÖÆg¼yŒbocuÌa5o\˜ËHÙ~$Fc9îMåþèÕ†µ^jÏ [×F`Xr+Z£s«Å˃¹Œø£r€ÍÒ|S0@, ?#c6©W›Œ6˨ëkVÁ{I0¤–°ò¤ì«l7fº?3aUJs£Æ|ÛÇ¥¿îÕ;õ¨‹á|Óq§ˆðÞ„Ï×GÏ4æ¾RGPj3‚-‡%&±•§ìka_ÀñÔ¬›ÙâÏ‚]´Æf/HÕ|¼#”胊¢Ë9‚=¨ &ÜP¶v£wÂ{zõ3Æ¡¶—¸VPJB-ìJúÙkŸæŠõ?6¹¨M|BüŸÒ.¨;G;Föƒ>µi^…ñÒÔ¬W°JôGÖÅG¾ãh¡ÈÂè+rݨ¡$>¡ˆÍžÄ·Îˆ„¢«+y*í ¡Æ´¤®Ý5+ä|ljÏøé‰XÉØ‰(Ç.þB~³{Í›èŸÑB1Ÿæ†{¢ýœ.DCšJFÛƒXÞ0Œ¹Öo©c+PÈ~Vµ!ë¾[žŒ±æ¦Þf·ë5é´lÇã݉{¢iÑ›Ä`©FNäXÃê›ß{ñcëƒûìÑåÍT?$!¿2´FÔ¿V¶Ä=ˆA<ÖQݰÖÍL|«[ ¤¥Wíü@š£pq'¢Ñql ìÒн„X·!.@õú-ØAiÐz?ÕãÔÇ1Åsš"ÉÎê†ZS„ú­k!.Œ³4Ú(ë‚Ïë¾&J©îÚ…”Ù®ûz7´ÉJf.ÎR¼ü0?d8>ÏT~óáPÇ+Çk(Ä?›úŽØ–Ío±v&]uÚ…Bµžæ¸0×B,΂=/˜ªÆìÔyU弯'‰ŒÌ{°¤¾)u Å{¨¶Ôýs$ú£¹¶ÔEÁê› k­{¡?zä—’:×Ñx¢¢m-Žm–P½þGê/Ú;¼w­ø¼ñpMe˜èÝG(à&‚Nú”3ëµ=ÝÈêÕÚN"Öex)æh·é¢Â³ s›ŒNKkÖ\-ˆl¤ö°É^‚¼cjþ¾§µ,ª¡,Åb±mBºEwV£­Þr@Ü´êjH ž\u”®•>cS³ó=“óÐkb#›²8òQ†þ[©[Àž(áÿ`jvÎŒU{ªæ+M×zôcÓm2aŽf™fy#*íXÍ{l¡Î;$?f¤öçP1À=ÉöLíU–Nuî´œÉûÖ Ì÷i* Èw›jÏÁš[ó:3+-ãìáž/OÒÁo¼ ÁMqÍšvÔSüi˜ç›&„X³Z«æ¾T?ºç;ÅYuyÝ‚ïåÉ0«ª‚µp]Gür‹íù&¼?äÚ`S¤|q·½êXížœ¿´®/WÁ‚|Ók•°QAf/5SÃ®Ø ¥o|cýým !)µŽ{aþÞ½Ž@íjÕí ­‹6Eì†jAf Ðöôæª?TŸ6õ:>­ª±øô¬œŽ-ŒÝ;ã ×âÃOAqÌÇÉwX?ž‡®´<¶ŒTµ»€Í´â\bâÞ…ùÉSëG¹ÝùK\SsÑüEs'òºÛ÷Áó7”{ÇÜ ã3Tj««Çm2qqŠ ´r{œq³éÙ­½j §Í”7*Å’?´¤HÚzjÖO¢æȳҸ@j=X?ª%k·–ÉFûeêÙ< k˜*̽*EF¶‘³>½®F*<†2ßFûP$@n\wð›ÓÔ'ž[=|mX= ¢]ZŽ9?Dµ¿*õâý¬tU5††½ÛT*uÄ»XÆ~çp,r ¥1Ñ 2LOûÉâë’ðÖÆqþ µV/oæÚD}å¾Oàs¸çg&=bmz›>ùÍ©­sÌÅi®£N-¯ÝÏ=»ñ58ï¯Þ@1´á(1øå빚ñòãÊ7` \8(7Vy2~«ÙynYžÅk´Ìk~,yœ¿Kx¹b¬Tæ\?ôõ8ŽÚ„ŸàÈ#®ø´Œiü³ƒÊ§Z¯:T‡ýÓLÀønºÁ¿ÿçÄøT•ßðßý˜Îñþ7Õâ¨=>Uáú—¿ñùøwþÝo˜¡Ñþv¼„þ ÙJŸ ýh1]ÇK”?ßp“ïýï~µöeB,üÂì}¼oÈÖñþ—¿ñ®“ú¼1#L¨²nóQ"íOúÊ’‡ÿ#ã¿Âÿôw,+ÊiŽ‘;ñç;r§âü^÷?¿®KÔ¸¿®ûŸ_×—ÆÄïuÿóëúÑzÊ{Ýÿ|¯÷¢A\?ßëçBÖGðß9Ú¦ÍÇi4w9·YmS{¬|n[Iì Kš5b랬Rí å·Ï±4ùÛÞF‡÷M亠–ï\ú9øNÁƒbam©äø"ñÃf„lip`8Ó¶Ñ3 ^nÀ!5 ­æ°æ>µié Á#mM/Wßðr³$XÂß{=¥¸‘Œ ’û´¹)wøÛ$x×rË24+†!)Ï`t-úÎÈ»Ëzm™È_‡ÒÜçT5x†eê%DãÖýb%b¸Ïã²°ž+Ê–7„%ûÌÈh¿LŸÅgl½³fîç[6g÷õRØaw NËYi“é²_Fã’t3é÷M3\äùŽ®çMÑhFøG*ž¼[S×¹Óy¾m¥&ØÓ?w—îdOÌÃê:úÞ§Rm?Þ&r§úòKßPw3ÒÎ~‰õ$¨M¾Óf±Ü0Ž¬Ë²k°¯ílÝG׬2eBlȱ9W÷»]=Ú†ñ÷Zei y¾–7“…ßOÊó•ÊÔ£6§§g´žËßß aŽPË´ž‡D– Ùô,ýèÞ5åx¾æÊI7uSÏ»©ÁyÐÿ½'ÀçòŽª•Ë`ŸU‡ÈÁfíéå;Õ—÷`”ò›â¾ŠËå^Lì zû@ Uü»·0ƒ]2¹†{©¹-ù+ãL¥~³0 ¿™Æ–õŒ5na–ó`’`'Öãô0òqÓil°fîÇ&Å+Ù)&:N§¸)RmjcÉnI<Ñ“!²?Û`ˆµù+¹ÏæÃC`­mEP,ZöîHZkäLŸÊ2rn]ölHø[°Ö„…m„Í"ÖCåÜ6•¸âÔr޶ÙX—ãeYˆÏÖt?ûl7/ÓÜôZùNƒ¾nYr‚]“÷>ÆßûÄY.çþaú½À™6ku ù?™–¶X6JöÒNÊb Vå1–í(ôPÛ¼÷©v÷.ˆh&òŽëé­mü‹e•Ô‡›j)ìÏé~ú†—e­‡æ7,-ï}¶ÄîIM|*Äúö T¾’sdâdÏ_³–ÖûÔ27ÄnÓľ òÔõܬò'ß¹“6´¶-¦Åýbz{B#ÿn>€±ÉwZŒûsi#5Âà‘s-ÌÕ4ïÞJ“¿ØðexïÇ!–šÓ©@°Ök¹€8쥵ok É%ùœÙVÂÈ–SW茭˜i‹¾ÑdÀ§ú{' Y³–PItÍ6—êuO<É9’U6ú>ƒJ§ý¢‘5Ò™š‘36É4kø>Ôb¡X‰í ÄX 뢽d'ÑS4§´AzüŽlÀ'Æ`í$~looÏ#ßÿø N²ƒOăð{KÛYHR±™H ¶ Ëó­ÅòŽÍšäeÍ0ž_&Mƒ±µT±-ŸÉ0¤¶‚:}Ó"šE‚(ñxO†åÙt†›š#Ï`RËK=N“Ûº«Ïý&Ûƒd)jÞò¸ðNG# BO¥dø¦Dûæ<œ˜/ûºø;âúŠÑþïÊfÂAØŠ¬˜ÕNlÈÔÑžØ2­9lÏê95•´ œ”ã¿êûú;š´f;ä/Ø÷¾KïýqQˆÝĶîį¬á4(Ñ,m/Äi·Ç×”sY«.µüií³±”Ø/û óð3YOÖÚÚáÉîÏ}ésÓeã ‰tz;R.\ôHz@ó?ÃFa]ŽÆK“bhC"Q½™„Jh\nùܧI¡r¾R<Ö€gŸzæ†Ëè¼Ô^¢Ø…® =»éQš[ü˜Ëc]Í1N|öÖ¸ýIcZõ›pÞgHê&²{t6Í.-ªãM%tJÕkuÞfçöñ¼°‹=|¸)ØÈ5¼eâ‰ÙR1ßRQgÁ5ÐY}“òðåõ~ÂfT~[ƒÕÿÕ^Ñ*HûúñØb¢y\žpÌîòV„uY«.cOÁ=¸)‘Z+·¼ qöšH(VÙ¸½Y1}GÌ+ñÆúV‹¼ÛƒšTæ¼xª8ózpͪ¿ŠëT0‘¯î¥Í2ZßTL‡üÑô–bx»Æ°fŒ#[2%êË–Þz¬¹PNbÂI½CQQÉô°Ž0Ô¾Ükêk‚‡ˆøßæ­‚=íÊ•Êá±Vk´u­ó4+Ý/BÔ³’ùwñ6#ÕY‡lò4™÷‚µ]ã`a}7—¿§xâø™fÒ\ÜîßLyÓ‚f‚Örn1‡µü΃ 0é$\3—ÁÜ¢hDåõÂ#‡ûp²‘Û¥àŸ·Il4éQ1Ü4&Š6eÀ<–f¨É¹ŽRl£"çb—ІA‘±§1¸mªÙ  }kT¼IØ“ òp>½V`¿kXlCöìqK‚Í$r>Í2~ÉZ¸¶Û²kÚP‹ƒŽu/„ÓfO-\Š]˜|%ÚãÔ€/žÃeŸ‰SÓ5ǽ;Ÿtê«ð5ŽÊº€íÙÁ©áƒqN˜GmñåUÚhœÔµ§Y ˜¨øzöåœ/Љ´uoOäÔhã=Ê4ôd^Â2Ù  6Ò$¡ñÙ×âVkyMïÞÃ)>¤ìüܾ.̹4ÌŸ0Çí\â34甲0ÿÇœg³Y”ko÷©T'yœgEös9~MÏ÷¸ôà»»ÅTb䇨#N[qŸC1XóÉÑà«^åÁ¡£û´1Cìsfä˜?XmòÆ]»§üöø( ²»Ö<å°äª×BxŸÙDm°ƒGÙI2VÏŠáÉœãÎÒ-òŽzM8ž‡²=ŸûìVK†w« û›¤“ä=˜Ä qÌÌl²‘Û¦¥Ï÷_ÿrm—Å"Ütøyânõ“l1<É¥¨]2¹"ä›ZþÀ× §¥:PÄÉ›O‡pýéõî0N0åÚÛå@™·V[’§Z¶•ðb‡ó¨÷^Ý95”…'.ãòg u‰1 PŸ1Þ”ìõq?Mý9Æ($_©þ¡eÜ×î£}ó¨zÈ+‹ÇÉiÝÞò<·¶'¨V·=ÖŸ³‹¤Øm9O°ØùxË;ìk¬aìpª¬Òzˆ¼óiéÁ‘(ˆ©ŽßæZHO8—&>–Ô>‡¡\[;ÕÒ~µQ²Ö8‹rCë `βŸÌÙ>¶‰ß»IåI‚ùÃYMÃzp˜¯¡âœÛ»ïï ѬµÖ'áÆÏñá!êoÕö_1<y:&ìòâÍ'2#+Üì'Ûg6&‘ùÉÍåqÙøHß´ÿaRmÂó¸•Ôêkë¢Èõz’^«Çqm79¦5Ó4Ó^Ë}2ßhõ[¬AÛ”uòÕqâ‡hÏ–àÞˆÛ˜Ï!þRÄÔøèž'iuõc=ËW¯¿Sžƒ±þ¬,§±7ckGÒ¸V‘Ãúxÿ`Ôó¸”ÙžªkÖÑ^Û8+=¬öŤF¸—Ílç›OÂÍ^ÛsCÂ#MžŒÆu5¼i|–b,…Çëóežµ÷F¾°ÙOÊÞÞ|G¶wé;§ÛVâ<›d9ÇŸ†®¤’öõLeÚ$½^÷ßÒ>[!ë‚Xå, GbÏeß]ŽYïÐr„–ô‡ÍEé½çè’­3\1U;•̹´Õ’¼Šk˜‰Lªî—–àŸŸg°ZÙã€dدÉh—øè9b^lHPsâ²Xx/&KGÏX åÚ%äÚq]l¤ñ—×®éÝÆÈªu¯e%¸¾ž1Ê‹MžŒ{z›KSL´=΢:—ÉšMŒ«÷rS~«â”\;lº:nC½zÃÏ-sÅì^'²º(ÖÀ¦Å˜‡{ûJlí]È}%;°>0ÜóVÓ 2Úäß9Ÿ¸`e}ì5ä°¯Àâ]âð<>þ ê¢ëMµyÃi©}ú˜nÊñ ÜXßìέ ÷n£kIf3jnÈX1Ú‡û>m­)Þ5©×™p›ÆƒÄ/W4\ÞîOç»±ÿÛ GbªÈ`ÍÈ­ÈÆÁkÝ©'Üì—»<ï=áµAΔñ›ô¨çf“ï¯>zƒî¥;?™|œa:YÇ®IoàP´ GÆéóYþÀ¶.³ƒ3ä·©dÏ—iS4µg„÷LMO¹Œ2šÓš”ñ1©Þq<΢¸ F® Ùu:Gª¨²r@læ¢fåŸ0ï#>‡®,¯÷Ùsž¿I¯2¯ëI{Õ»ÛròGË冉렑Jj¾Ù|wÆI’ƒÍ„x9~±.îý`­u¸Œ(×Lm”aðÇñVª%›¦Ç×ã! .•ŒG ŽüD›¼¤g/Ž•°ÿ3¹a¨ióSö<Æ6xd·rïøúgzI¦Xñ“AÇøÚ9¥Üã Ø ­çöñ˜¬1a£>‹U¦ k™Hþ·Yú_±‹™qÝ‹û*z·Ë{Ù¨–¼|Ô*áåÝ÷÷ÕG0–å9%åq†‡,ì× •ùÉ»9K1Ãɹk8Œ8.ͱm²/KóÔMç}jÅ%൮½3¾iðt˜7c\[z¾¥5·žérÊÜ;g¼Câ+ï+'ßx|$ cͦC@þ};Gžú»K¤³ ±3Íý5ã˜Ùnß4f¡™@±œ?ÆX´NB¼ßõÈñ´BÂ} « qö5²>·æ\T²óÓùåT;[ÞïËõ1ëË¢\T¹ÒI=nù8U°!Öu•ìëéxÙÏå#²ˆGVÜ÷«ûXwòµ¤îkxk±-ëÓ`lf$ÜçóºhÝžóç:,Äü-†fN[Œ<¢ç+®½ÈÏg¹!Õ¹ý½M{×ĵ 6kf˜œ)¦IÏ`Ü Äù†"uư€ç3Þ!ìOçGV\³ãò÷ôŽºÇ»€q:wc­q›°‡Ø¿“Æ%h`zOh ¶Õ°WÈl2ñ_ºçÅ„·„£l×ÏâÚÒ´œ‹9OÒÓ4U„Ÿ9Á‚‘NÏ`ü냽PV·§‘ïúYO…Çú˜[÷MÒ#]ÝOSÞq¼~KÏn{‚Fdÿú`l3þ`Á¹õÓ»@Nã­ÈÝåÞîȶQz\3 ]?Æ,‡¥Ü°8oò[ಟD/Ö8 Ä»(Î3¦XCÙ‰ënÏàÝŽGŸ=Ó‰r?Íú!ÏS 6=–bŽ®qxÈî.ç SonóºEÞ{<.€Õ–¯^› þ|ÉõQ¶iâ¡ý\ËkúŒ¿˜ö)cð}g¹šÊKê›6òa“ÏÙV·«i½ñȉZË}#سù„v-bªf?‰çx|_6c¨e¹ªóp ó(®ŸL¿7Ü72Ndµ,®œ™aŽÕûs¨aúØó ûs86JX³2ÏœV‡CâˆÈè›çºÚññ-¯ß’?²|ìÁû¬Ÿ±twMJâNϵÉçÐ±Ž„Ç»¬¹³ÚÄòÉœÛ[öü<>z‘ò‡î±Ç=6ÆšâAã žÀ<ÁwC›µZ†G.µ=ÌéÞþÞ)†®®QžäÓ-Ñ\ùÂÁèð¨ÅÜú#ÃÑWm=P+w.1ªÖ¼¸d8ßºÒønkZwŠÞNª¹·wcŸió:×zIjÐÖ}šè3œ¨3³>ôJp©e㥸¯§:O€{ãÏÉß»ñõ¹no˜åcÍßiKÎÐÄÚR±¼qÃõ ³ªÞ“Ƶùšq5—½?ÖÐ\£ŽûÌ~¿ ‡Fâ(õduʵrÔ1ìz~ž°ƒØs>Õ7²vm™™FŒ!ßáÚL4b)zÄPWÚ¹FØŸ³TùsŸ,†~²s´=¿%ß1ݧr fõ8Žëldó8gKr‰¢V²žÓ8C¬}:œ›MïhGm l¤Õ;x/æØ°V^\÷ŽlAõ‘°ÔgS\ã“´}ïËâúŠéБ³¾y쳬žyªòÞw¢¥0Ÿà5cÌ×K‚]Ì'jÌÕ<Ù¾nn?¡;í<0Ÿïq~2kzÏÏUÙ}šžþž×>iŸæiO¯z”„¢]²ìÄ·äLïÀÄÉW¯«q}ºX&Ös,c¾FÉ´L¬ƒa/Ô/ÐŽÝD«l{ÅÐÅÇö2×Ï0¬–÷Wq½©ŽùiÕÓ9øì՞©è­Ymx·Ëff Ÿ^6æ÷™å@¤¿4c. ÚV›ÝEyGw­2ºŠk³æ‘ùª™ÚŒ‡†µ‚áu¼dFŽÙOäO8^1ûr EŠ'ŠëÂþ”Xßt·8鉿Ø1}̃`O9äšixߎ‡û#‡úÿñÃA¿ý¡ß?kRýÏ;ÿš:þ„ÓA¿}öß;Jð¿Á|Ðïé_ðÒ¦–¢þäB¿ú›úG¯EÜñ;ÓÿüšÐ9µÁé½î~]ß*äô^÷?¿®?J²}¯ûŸïõQ·„&q=þüºÞu¤Þ{Ýÿ|¯ÿó§£üíéÐö®B­ýH%‡ã>! žŽö“Ré¿~²üÖO>¤~}òóoÓÇçÿÍþWüm¿8šÒú¿>X¾†{L´œ:‘ü³²K«”ö§®¼]_:Ðä½nþr}+ö^·?¹~By¯ÛŸ¿\´y÷½nþŽÙ¯ò_¬ö÷Î~íÏ~Ε‹ôgyžrç ò9Ño¬X®µ„-ßi=ˆw­Fφq¯J®Ù|˜;ü8c¯AÞ9¡þ^ã½þD\}×Nâs4‹U>gÜÜ;ÇîÏãóïÜG>gó nüD>7 „gرÑàsÛŸïÆ3ä÷Œ;~çØ²f³gÏ·]—áÎ å;­ùŽås6ÃàÆKå÷ÆäzL†¿‡—×=¸CÐkÆÀýi\¶;§—{q~ê½fçÕ:‚µV…QÔë•g°õ¼ó"¹—Q¸ï½?QÞübÙóÖcr×{u=s–e]ædÍS¹f3=n|]¯%ó"F©Îy½ë1rŸÎÂï´¾œ;'Ôu1;{°97âÆúå^¬7óÆHä|çØjëóúÇîZì¿©íIøGj'¬?ïÅjòw­Ï`š®pŸÇ{%éLǼ–{_ëþ|²½´]ëï~¹ãªß˜…ìO;›7Þ­÷9¸WRîó±ó€ëi{‚ì§ñsh^`Ø:â¹é9JúŸuO$3ÅžÍDEö õýÝØ´\kùú öþ®5%t³n]0yëϸk zŽÌî¢M.I}KýÊf¿Æu~yGÎUÀ=èz?°fÇùG´?»C½>jË'ׂåZŸŒÝÊwZOÙåè}–Ì̘ ‡¾Êúðh¿ Ç×oÎä/¾?wN¶_†ë¢Ü8²ú±‘Ù‚–j×ôs|Ž0í¥ékvïAyöŒO¢ñ’iÐà~1?­õ;ƒmÏ£œ¦Û¯È5ëͤõ\®½w÷jlZòó0 s14þ4»Äöló¬y‡Üµn5 ×'Õ–[¿ Ú3›vÛùÎÒX\ÏûÃÜcy¾–Ägjía,Õ“Eò9ãÐ;jÞcr׳5N.Ì]•ó`3YضÚ,‚{­ã;9†¶9»T»TÛjh:Ôˆ! Óꇵî^³¾óé/Ûssw"¯bßѼf}ǃŠéh\@>n8¯Ž|jàu”¯¬ÐÆØÆ87E®5ó·¸wÿ@1Øtý\¶/ód¾ÿ8þI8ƒ=CGßQƒ‚ñçêÜ xÝ'>ƒÍµ§zúy ï\ÞûÍyœá×´¯Ç$2ƒËgÓ¸ h ,~!»\uºf.ãuÏ{$üe‡>"ânæéÚ‰9gh“M«ñöáš7næþk|m310]L—kDк,ç:SÞhZ4oUŸogï}ºý¤ç{ç(ò9nºÝÎß\!µ!ÆÇÃýR“튕Ÿ«zŽHÓNãë4&Úš÷“vÆ»zÞoÜTŸ=ÑÒÖü¶2LãätÍ竱ý´¹d·ÇÂàÇ>ß¹mOÍ s5>kÜ“«¾£ñL¯úíÁèÕâ8«'}z/Ö_ƒ9‚Ï?|¢ÅÎæHVÞŸõM'ñYÏrf‹‰ø=¼º\W;ÜË;JwÍLÂäºÇ {¯w={›aœheï}:†DùûöܞϘÛVÌ ggÍ>]³‘ᘆ3°ŒØ®m¯[ÆÒ]€ê¢ÊJüíô¸Ž|Uì¥ÛÎk¾Ryî˜îÝÊ\|ýÎÅüýÎóÝÕ.=6c{0{óä߇÷»+>SœÎJjÄÁŒ‹O¿½v÷þÔÚuå¹$jwg÷¯ËpÌn¶•r„'¸X3¾áìý®Ãv½s:›ÃŸ1lž—ÆÂ–ÛsMª&þá<®­tÇâûm^5åcÝq"ª•Ÿ¹M\•5ôUæèL¿3Éð;mî&Õ †ÏÔ¡øÓðkÆÄM“‰8îº_’9/ºÖ-;Íû×)®{tå˜âgv61ŸQiq̘mK˜øã½¼IÞ¨1 ÕÊMoy">aËù/÷ç”W™Ì ÿ¶ o=ÎSåüÝxÔŸï$ë©ØŒÚVÆÒí^ F9¦§I³2tÍR\¸G\ÎutãÂÙl>ƒ‰ãÖžøCjÆ¥ ncé6Ï„ëèv¸ÒƧvÁÎ8'õ›÷WÓ¼ãјh!¾üy>#ÑÕÐk‹9 Áçã|s8FMøËôX˜ß‘áu„nÇëè¬ ÇÒiŸE Œ|ÿt}öŦåD~Ó´‘™ÖƒËþvg¸ÍòÞæ­ezîj³z–¿kœØÈШæý™s¢".'[>œ?AqAð½£îiNè5%ü¥‘ó ç£ûlÎÙ#žñ‰¹”ˆ3˜£ž‘æs™O;Ò³úÕ\2 nª“t×÷"Qßßs>ôJf |ñîÉîÚL\®#ÄlwÎÇ,/¦w´#ï€Xsý@æ¬D+U±æ•c‡kñ lÝ»i<1ãI±pÔZ9V´gçxi¥Ü‘åêô|ïÜ8æ‚÷¬¦1ÙÖå¹a¿Õñkн½æ©ÖÐ÷Âx>»íÏÑwÄý†ÆO¾u¡uŸéy`þµqž™Oë³ñ¬ìD³êK«…°µá1;åÁugN©á(”-ç2?Ëë2°.ÝõÀ¹£'óVÕöÏ‘ñ¬T¯d:/–õ jêÃCs…p›‘ÎôÞ(Û‰àâÜ6r”áu :c6gžù¯ÞÚd‹{¸×dÚ9úó'_ï–ë–Û&P¼–Ek}|&a:‘%ý+%«¿Ðžb¿i>y¸În¢œ+æ\“O~.î7\Ÿöµi%ñ^ ¼•54ÆÎ°®åš\”‹†fkŒyÆÆÑå÷ГyŠcš†"k>”oò*«ß¢ýôº!ûþTëjúZ3‡ÜtÅ’ž×™åN¿P§ê 'q9nÊxÈ“j(êD¼Í:‚‘“PŒýš^%í3eˆ'ùßö¾ÖÞ0?ÆšUÇâôcVc'góØ(×–üÝðAöÓÖ{̺T§g½eÛ¹[„ýZÿÃBü¥:&À6y%´ßó' O¦Ymz¦Sí·è¹ãý¹’>ŠïŽ,ÿ‹œ„kå£óܽ³KŒ©¶}n+å'Ç>c5ýÞˆY—|ŽÏjûâp¿¯k=b fykdïéöª«¢¸õÇ ïecì×ò•$~i¹ý4ÕnŠ?ƒ×Eöú¸Æu®Mø=‹îs;O‡öuÕwËý2;rXŽi{†³¿ñÖ„gªóÆY×Ö“ü_`é¬1hx}gäTŽ SÈôhæhä”™†ÆéYMx;æÏïa¤ußæy#={è“-ò95æ}Ó·tû~Í kΡ3D6Ù4’jr•ÐaŒ%™M¬q]áEÁ‹Ý‰þ™a,d³‚«Â|šbVZ!A¼<¸TÌCZ¡uŒñ’ñä¸wÕâ²óÝëö¬?XÒúÃô^æt×|@ÔBXÓÂÎ÷˜¯JjÞÖ_ŒÃwI¿§8¶Íº¡‡Ðž˜®sB1Êúó©~÷sEï#á×чÉý26˜p¾ÐŽfµåÚÜ?f¼ îèZo$Ÿc}¬At<Öç{±yÌa]ß`%³Ó{è£$šÆ-Ä÷nïˆúÀ«d’á`€UÓg­ÿï|\èžSn~…yâV#¢½ÛcÞ*ë=y.³¾Ñ p¼•{½,~Ásk<ò9Ñk’èÝ÷ìÙ§÷¡°¦Ì™=‹Þ2ÆÄ­'”cçâ°^—ÅÂŒ_—Œ?ÚhIþW3ŽKà ¬ë^Ó¸<惲>ØÑ˜{¡lnÍéš”´ç£§‚ü{õ™Œ¿ÔdÎÁ·÷DKf=+Ηö;Ÿ{pŽk3Q\ØÅ×=8ºÀå8^G ½JÓY/6Ú3NâsoÙ¯” ›©^_¡Xñq<’µ,Ö§Ú|pè8‡µ\ìÄ;{†µ÷S.ÿùž«¹˜ƒü•’Ý]1ëmyù&'1nE’¤¼ßã¾8Ñ’-y­Õú4xF€ñ'¨?.fù$º¡ÖÛÂ|è´Ç}:ND1‘Õ^Xóï8·þŽÏ—2.8|.øu¬0SܭƳ3Ïe8ô£¶‡û§cy£lÇn§uØšëÖçÚoÛu ¶ŒjKa ßm©®{ä†Ì/0Î:Ïî*©ÎPè=ѵíýýTØÁ_B?mZˆ<›Åp7øì^O冦šèÝõw ê‘«q-Ù´éÑœÆsoÿÊ'«ì>¢’T‚¬kqÿfSÖ˜,üêë0kpgrnªï„{ùzµ·R!§¨Sµéô9qSËòuRË‘P‡¾ìâÓs0uî|DÐ~ónøD*º|³ÑÅ®úòœwšª©ëEX¡¦˜Nv>U ^ß9<çcûö™nžÏsÎ؆Üí˜úœ78,Ÿ;4ˆÕW§N7‘óI ¯M8òœ`º®¸ÜÐMÄþ˜_Ù°bûî ¹6­*ë)ƒ¯U£§ÎÞ§jvëÆ‡SV$ÉJ6Xשb²‡ÀõfÛ„0ÖÚ´W^Î0½l-ÛÉé§­9má Ï®©¤©s’=Ôm›Ðonõpƒ”jUû­6á~”Ï»’W66pàå7õ­ÐÐUY!½Û ,9Yš]ôâ qÊò‰è jÂujŸ†nj8+šÄÊ"ÜL+ýZ3d‡TÂG}öý›]kŽÉÉžÝ.’:¿œ]>4RòVª½²û“ÅLj'ò—lÙ`ãÐ)k¶BƒZ|Ä©©9ÀO”c?‹Ù>|Ÿb‡ä9ïW6´N-!ˆ :ëYÏ«¨‰< yÁ"PŒü77Ь>ãèA‚£«Ø<'¤¡ub5ðœù²PJMä­P냾²iŽö2¹å†À-mt–ºÑÝ÷ m|ŸJƒÐ÷ &UY¨j«à7XÔƒVSy*zxá )A^.‚Á¨v±o –ú±—Ý(î“}k± lÍ¡ƒMÔjÂ)+bKå"9€qß]¨Ë–oR™Wí·FØ}Ÿ»}ì}Âú< ,ü8´‡¦vžÈÿóÖ•'w ¡]WTO¾–â>ß}Ø+â\›9W8Ÿ}ÚŽ?ƒ‡÷&CéA*¶ðøÊ4£61Æ# ³z³S¶¡øP‹GÆTÉ’·²ÌÂîû¸Ža'~è!Ñ— ¡€m4p}k˜Ÿ±CÝÞ',‚jÛꛃåSo£æèÞÔUg1ÉEøÚQ-ÈßPó©K»½$„½‹æêPvfÆ[7§S(Gš¯G‚˜z(Ÿ\–œN·,’ª^±4Ý`à–Dz—M3e|ÛÉEð+á0zÝ/É^Ë+›nûàðzÖA ß½ÁË®fã b×çP4ÒøÊ×öЛË'6)fÁî«ÊÙ’›¾I˵2×iòŠæ–äß2ÙCâÍ j܇™ëcé;!.nR+©©­Õëúa–zŠÛ2×AH ¯Y€+$¦ûlÌ\ÕÛ?Nj‰]ß9|R+™òœtCÛ¼=q»uÅm‘/S"¨> xÁn©t’l-žOööÓ^¶Ü×}·Ë²HI`ñ”y Jc‰-Õ´a …òŸmš»êÐE)/{Ø$BÜÂPP…·æ¶,´®%[M÷8³ŒÌøªº|“M'áó”›§óÉÄ—õ ZfM X*ªk¤:;WËt(}_†Õ4«ì>jødŸæ(ÈW†›#Ø`Û"Fðö}ÚÝ\Ûb.r“¯†S÷MçsvËZ0rˆ`,¦F€óŽÐå'JÒú QQd <Â3•É]'‘ää”ÕmáÆCž@1ˆ­ñ-CîU úrÐT " ÏÊÐRÌø~+³DŸàÔ-;‚’øN€PÀâ¾N# =´Èð[Õ“ÐÝkT!¡¾ò9Ÿê\â·UIˆ,_qdWMîD/úa{¨?1:ˆ]€'+Yd³:¿ìn¦†Žý‰¬ƒÊ3¾ò쩺Ÿ²}ÜÛ¶É¡m2,ÂD«×ðÃ! ¸!‡×¨Qà˜aq»Èn'›\䌥$eW Í›A@ƒXù’g³š€ü¥kʱ§:R·“ä8h(€¡¥IZÛG”3èk§eè®F±SV±ŽTÌ`´ 6o§¬7;H•¨:-¨h©[”á`'´cE‰N±fó(µPíÊcÍqªp &õyÙÃÏ ìøÇ|Žãíb_´ðý±´ÿ©äTõ¼ã­´ÀÕZ-v?äíGµ ýÊ趘óömUiôÙ™y•ä¾X«q¥Ù۱͹\>ƒF:´= O¢q¯[• ^YµƒʶB„ƒ½À|²*uCÑIXmûÒEÀóé¨:DRU›ÌÕ wð´önÖïó †…çR2<¡icŸ®-—ļLŽŸlæè(%ÑNÍ?Ñ¡¼Z;£E¬‘eØ8õ]iMÁÌ8™·i:ôfmGXø1ziÂÉ>ÂA°4ßOB ÖZ7ˆjìõõH˜éT3ãpú°Ê M?¶|Èâ~h¼ÚËe8óR+þ`&Ý åGëÖ§eµÔn¤GŪ6Tcz,Àèä>Û‰‘]ÔF9²ÓPGQ 0C=<$˜¾©¼¸ŒØ°Í ,u³4¤‡ª^Þc%XÛjÕ)d|}B°eè7rl8]ªü%/¨s[Ÿ¿ÛÉÖkƒ¢1nˆ|ë•4‡Y7RˆVÑø{„Þ6KÁ ²™”(­]„—á-”‚p¼p·SqGÅÏ0y_ŽÁrÝ–Q°æ1>Ö«‡ÑY©O®D£49h™·¹Œ4ÎÆc›z!Þâ&r;æ0jéIxmÇR‡¤¿Ó¨NT6užE£(kô7öEndõ÷‰©ƒ7’@:­qbgË8ÁX¥Ø·´‹pU +’oÍšpKn\›we„%2Æî"Ù‚y Á‰ë´°ÔÈõ7Kf‡z5×±äíØ±‡Ò»uö;‹ƒ~Óà*øÚáLkL³¿c R«¢Ô}„=Ê7ȸðŒ'»Zw”Ø!læuº19{?¨g͘(¬ÉÐT_Oë(LS1P ¶wZ©ñ [ëñhxQ'ñ蛃=ddÍ1ÇF¦Æ“ÝשÃË.VX Áây‡}-!z†Ë¥'{êÄ!OuŸûÖë2Ô·1"@£¢ªŠÍ,R”ÚªÙij04†sð6£¾¶X7MG¿u3Æûý÷ýœËûÇ0«›Cj/¥s–ð”yÜÇǾ™ÿ„ˆ±l ³âÒ5Û&²Bpñ±©Ñ[)ËÊZ6{ v(¬ò¿ÅR+¹µJþÄvýGBœì&3h$–Ê…x-6˜Ÿ2 'Gßäbã²çdjÌN›Ð«wÿ7rÓ[U<+&V3*¡ˆm›sE#½³‹ ãÒ¨W›"‘9ï$)pËÕ:ìø8Œ—е=ãÎf¸œ3\:íÛêZšý¦lý–V‘žà¢ƒjGË—\á…jÒoíÎçôžšö¬ÎÚëÌ¥3ï@ôª‹@=kËZrIeý×"ú2ס‚ØK-…»­®w±PïâDûÝ-¿¯wb©4|r:ôàÝZÕž™Ösµ»£ú‰Vr@¢›)Ÿ˜¼ã™aDZå{”zŒ/dÍ^Bm…ÂæV"©iþSRL„c«÷€ÁÖ÷hôSØšË Bp²­iì¡0²±È&´m P(ãôäDÀJg7(%¥»Ç èW¦EoÌ(ÔÄÓ÷îNç$L£·ƒ¦¦¿("Ú¡ÇK°Bå+,çÓŒKxr}•¦On¶|L2 ”ÙCmX‹Ø¢x¨ŽH<²*\ •C©„DÀ- hÀœŸá®8bÜI±ËÊ{-KT‰im½õÜZDR°oëjeÄ@+‘bؼBú ÒèÑN n9¢71ò:Wšã‰Š¾´škqaïl5.:•í[0ç TiV¿Ã±n<Ï1¿}+ +C]s$ì°{,Ó!çúv™P)²ÛáÅ>Ö>¬¤C3Ãti Y‚m2Ò#xÍ÷èRÀ»v]X,š:PRÞÞ‰ÊÓÓlô9ÃZ $Ô(Uå ¸dجϋÔÓFÔ¼HKÊ8f5–žHÉܪ'Ò¯EûÿØ£$Ò‡^v€H}êD1aÑåN´¬Á'Û0„–+ ÓòÄŠ¬c™(ÁuŒ^5á8zp]é­hø ´¬E¢CÆdÄ×hW‚G àG¸ì…gwFùŽù{gd°É4Ë—ÔnŸÄþþú¼!‚³·2b¶3Œ¬íÿ¢ÂÌÛoJ+ôXïçI¸èÅv„ Å»×™ÄÒ Ç©(M:ßVK Mœ ʸ\·“ ö_4 ­G‡`“iQóCxUs¢úId•ÊÍnmE'9…}%¤'(µ?!âEˆÞÛ–zÕ°ÿ VŸ¨½PžX#‚å ú08žzˆIO _®½Ò0äWŽ%W*b½ÙYA!›jðШï¿ÿëO–™Yͦ}ZþiÖ„EHÚŠLNÙIaa¾ºWF@´­` ÑNQ‡ô³NC¢‘€0_™3nÍð®!²·ÛÖqërÈa0¯÷P(ðXÉõ I!AU›â¤æó::0©Ër6Q°E…iWê¥tÅ2VvY,³·t>‹¢ ÷ÝëÔÙrŒLMï4-0T˜lŸÿ&ÍÏx¿•]‹«r¢o…v 5"^j.D°Þ³Æ}8³F'æÃžyAÎÕO¬LWØ`UfÁL…¿Š”±õY.°/{N\J3SàÀ Vê˜A-/('¨ea¼+à°¢QµÆÐŽþÓr†D^.u™¬c€4AJƹoÆ(郞MðßWv쥊dpÄêˆVË ŸÜÁ¹$ —¯¢z…‰mqÔA°%AbÓ™šØŸ"NǶ&'èÍ"Ñ £nªßÎbD2[Vé@Ôéó²=´#2Ý Ñ sXA€§ò@ @”&ô4‹©’;|Š ²Þf‹yTv>'`Ø<Œ/&5zc få;êFíæãÞ›.4ÀRu<-l¦TpY«êÀç|"Ègƹ2Ãê_¬þâð\VÓåD œÕ´R¬¡³ (ðã{ ª‰{×’XÆ ~å%ZÂq\¤œ;ìJíH€"ª!Q±A¹Z[qB´è;,5MtÙ¯œ'ŠOƒÈ–—c€™w’ÑÂB,‹øµð°o›õ þx¿ìéÂ}½Ü _JL³¢–¿w<5îY? ‹s,+éOöîbÃJTÄè­XûñqÓk@ÌS*NøÂR· ™Qp ŒŒŠÇÝo6ªYS ‰8vCô˜&ë"«Ü’åÄp4ŒÂpñX„mÂ'È—%:&¹ïq§h­DMãxB³Ò÷iÛdâT½îä+ '´3ȘŽC5ÉíþéFVâ4Æ?rb¤ÿðr†Ú7q÷Ûúý³[£Åt©‡Ó‘»‰»ß>üßýzýÛöcÜÀÝoè_ðΚª×£å›·Ûÿ¬ïŒþO2Äõ_éZKßþÎá´m9D^!boksõ.\´u"̽#<¹èªØ·•ß í§+–hëz““Ú®‘dݱa[3ZVoà¥Ímâ”õµUcˆÃæÊ'Ÿ™0‘å7Õ îL›ªÌ´‰¶¼g„´ÊÛöjïˆ\~³¸bê}C»„ùñ¶=‚(tƒòœ.Î Ÿ\-ŠwÈÙVye=á}¾­ü7|"ÌwÂrÊ£8oîΆÚÞ1fñ†qeù|€Í™È ùOx”ãÍ„¼ëî3låftʪFX¿#vY>gcÜ)¡ÜÐpIFxe®Ò´!ë“Oº:}²Æ0™ø÷}}dðM1•·q7¬í²œæ¡E˜º4,ZÜVå±ð­8¨Eã±ÝGr]rўܑl›Ë.Òœ15®ázà rÑ{¢ob¦˜·i›úF+ä¢kÏÃî›':'oÜJí­K Ãq¨QzK½›åQ„`ÊÖôÝés·Ç'Ü_;Ÿ˜1~Û²¶n5o"‚¾lü‹¿ésqØu´lȧ<Ê<™Mcìcà†\'¡Ø#{hÛû öÙñ'IªÖÄ+×°5wÈ)ÝEï 5¨íë"< 4¥ÌÛõá“fŒ‘È'&µç›º™í+PªÓ}û$T=+[ݲ%ÍwÚ¶Ç ÝU ðNöÚ]Rº-Ÿôº,xRQœMÞgÉt)å888@±ÉŠÉµ~¬$,xÙ{D_à ŒêN°º‹_ò(^÷¹y²ðÞ§rc¼›Wã®®êÅ–^ôiœptkÎlSÏ'Ðqpµâv‰[vEØškD ë& ŠIu²öÏÉE_¾·’‹ÓûTÐ`¸Å]ß’ÝçRï7|¢Ñ[Ílüª1üò®ûÈs¦íÝrì»Ý-}ÒtFqήûnLn>e=ë6‘0+f&À"L –6­Ðt)¹¥W9HÝŒñ êArÙ<Þ†q¿3MÀÑ­óVèá9Wè Ý´utÞBÏ9Bº™"ÆòÂò¸©A!Ý`YO´Ú¾–…«…NÅÔŽeÌ:Þã}— ÝL¹83½Ù·~Cí%æ©}_)ejëm5°Mj(ß5‰jº+÷ÀáÝ1®,µlj;Hä"mPÒô}ú(#|Ù{f^p×g£µuÞ!Ü»GæÆ²å­‡åÁ¤ÎXxðHçãF‡WƒL–dѯµÝG¿éò(Tu”E(V½IPga*ð¼#Úñ|.«‡Ð£øL0b§êYñj¤$Ž›'E#Æ‘Ùøm}[È Ð8Þ‹¶°¶5ºû(‹ìÁk‚¨fírà Í'Zÿ(*¹º¬PoéNðQ"rè ù8L÷ªÓNà“#œ…Íݪ7Ô4¨Q­-9ô'v¥ÒO´DܵCµš>nß§7’q¾Ínâ²õTî•cÿX¹—(~T©Ä&xáÞw‰–¯«mß@9ŸÕ)±°%&ïÑY9¡i|“$¦öÑå;íñN0CÏëÓ¬!Ïöæµþ$â£ã{uiÀg/ÙD=ÑŠòØ"ŸíŸ¤©ŠÂæyv Œr$G~;.ßzçÁ6y e­'Qðë6¡Q^6íbðd?1ŽÌxiÅ›dªAáN?é34ûFs‡’Ïåc_ˆ ¨Ù²Ç·ð(+˜ÓàзGŒ“âøíòÄ-×…·mB0E šÅñ;:ò9» >;ìÇjš77¤Ø+–Ú•F Š~Aϛàq‚CÑX=p$â¦c¼à;€n€&)¶é5RÔkâ]ƒ”J»F Pkâ°0®PÍF h À ‘›x.áG1|ˆ@²'úðÀ-ï—K‹`€N¤“»u9|ö¼O&>, ”«WÕtŒ¦ÉÈò¥šfòE²‡\ŽŠv_· ‚šd…\!vŸLW5O ñ°>Ùƒ0Å+hGp®À5ÁÆOçû<”-Ï'¤Jèd÷C£óùDÏ*A´/C¦æ„yƒã°gP´è}V«zQ¨VIc„*/¿ÎJ!‚v ÏKçó‰Æ-0Ÿµõe8eŸ)UEÒ#˜õ,©ÓñH }™Ï‡†P}—÷¬ zlÇSÜ÷ºeª’Ì@'ÁÑM¬´ðËyj4A£qƒF(ÓÙ’XïN‡$ê~©už0â7©vuâ‚ëØ®HÝNä{?0çŸ("ê'(ùM/ÛÀîÛÂÒùÜQ™áj­ÜäÐG€d°ow I³›‹¬¶ÏÕÙðkgš— xd%þo¿&%Š5$)/óã@푺Yß›,Ÿs"(ÓÑ~Eﳆ>?ÕËÜ0’HŒ:×BüÖõ r¥„(JõQ=|·ûíïÃRnhÎÂÚö˜ûE Ô]½„Õ´°Ô\C?>¹Į̂¢ºoûçsÇ øÚÀ‡hHÚÛ·,õ`ÇPµ¶¼7¸e×z$}IÝ ¶o©úî-\ÿÜ1Ž“ò²]#T•ÑtCû‹kRþY‚ÌÚô)Rð(OŒ§èím=…‹’œ:Ÿ«^®!LÏÙ£]‡E‡7VûŒk;ín+VfljªÌX[ï I±}Q”À’X08ð!ŒtVêÛ¥‡i­3¬(%)ï(Ì"‡!.pñ«Ü8aßz”Š÷®¸p™<æ„À)s‡ŽI–Ïè¡a ÙJ¬u G'™o2¿ñ>bŠªÒ#°°CNšò…“;´Ì)çí¡eÎà‘ÏŽ¸Û]µŠéüwWz>W7‡Îqß KM¿Ù^±BŒR}P9W·&Çï·‘ ìËQ¬;t+ð›%4¾áQæc¬Rn¾ší’àÚÊS#Žçíq=*Ä0<}§c¿£Ÿübz2ÛÉÓw agÔèw‚%þ=RLŽÆ}(ùÏÑñMJ4ÀÜ­òµ'S‰üFD#åŒã„ã;f:ÓŒ1Ó7¢á:ÑFÚz«ï˜XxÒö˜z!'âDîv×wp2“4|nÆÔÓ ã7Å—•Ù!oÆ“ýXKu‡D< "º‰=D W%È—Õ˜•ܶãžñH—oDÀMNçœL¹C1`®`ѰDî@¡zfkøÚí#chäò{²'²¢û;Çãx'VR™Ükïö¼¤òÜe€£ÄlJ÷VðÞ(»údž糤4íµÜ¥(µ™ãÔž#qñ¥DP0Å|b›Üzʦ0ÛGۤŠ]Z¡úÎ5D›Ø¾'ìs©¨¹”!f‘#Õð¦$ÃÉn!ìL̸‹1?Þçæ$f<Ï‘|Dšv‰d†P»üxÈ®æzÇ“£< qzà‚Tˆfù 0Æ{ÆØn°·Ó'­“"­‚G^•«ùòÆÁÎ:sЦkÃÉeˆ¸|ìÏtvÀÄFœÑ°OG°>{hšp}?I-ÒK(NîPÞ¥âˉ¬ƒPNðÛ=£ÎKÇ~†,/Ü>Òi$ÜÉ1³ätšª½¤AØ)Q}޳¿kÚ½‰"ÃÂ+kdW_v²¿VðÁÀ—m×@9‰·w2í„'”=¹ïÊ1m“ýj1a^ êâ^/ç1B*½}ÜðAü¶†T()¼2ƒhóò9eàAËl_uŒ‘%'xÃÝŽ¥’¤µ¶¶ Êœ+¸«ÝcŽq'Kè‘pÅÂõ+Èöpè´o÷«_Þ¾Û[E˜ª¦ÝßL ±z6h>åg%e8ÇáQö ”ƒØ`Œ[ù¯íZ”(ÎÈèˆÖÛƒ´JÇ¡h2ÓBí$Ý3´ží ýÌ«qÞâC^š'Z*1„“kD™œö­ÇÔ ›!^LŠŽÃ i¸¸«%P“öí®ï”<4Œ%ÓÈU#UáJ=+ö>¡˜&â~¦9Eeò®ƒáéÞžA|¦üó„JÝpÛbjé¡Tbó‚DìèÅ$c\CNš¹ÍÕƒ%ä~¬”Wó15Í\ÿÜΗí o')v§Ó1jç°R¡FK£·—ÛL©× ÀdëÇÇNÀòjbóæ}Ôð¶ÌHqÿç±ô‘¥¹ƒßGtº'¦@S$u¢½l‚¤ï5Ý çíÀ¼l8n‚ƒždÆ]4©Â£HbX¡o†€pò¥õRλC¹žrÁt:â í ’MèVØâZ¤O›A²õî¡ñG8ØŠFŠÆmpwÂÍò¾e“ªËçÍÛ­¨Ñ%œ%W°Ã~ÁžRlw 0áF´Ù‰!d5«¢ ÛÜ ôÀ0ÈÍÀ5á7ÃŒ7üäyÕä°JâΕº¬ŸP'Ÿ]ÞfBU†Ç&œ’8É#cN&4yzdí•1ÁÛ§¯Ò[é68¦p½ Ù¦Òß|Eêˆóë˜qÁ¬ãÕŽ¡¬c„ ?»£TÄ^ðÄ ÒxÊÜ ç²ŒÚ¹5ᆚ‘­»„‹$fÃ]Öüö@82v°p“Ï[©VV¥nòŸ¤XsÅ\öÙ1  Í«^h0|¾•æÏ›!fÜm÷?a6žW8Ùšë+æÉ`Ô¸[2R/0GáÇK{ hĦ´óYÙ%Z° 7)Áå!²ÄɆ»Ýõi£8Ùo® xã’¸¸Âý>w”„Š/;r$Æû¼z <]ä~k6Ÿôe÷PAø†äÈ/û‰ðƒ*P'œ+…°#Áf­èÊ%¤pÇDfV¿ª^4Ä–@ï·§ãàÔ¶Ž{¨чÙÂN¡~7RY#+^y‡áñÓÄÆ·e:¤û©6Át¹Ú ûhjºžËÛ¹8üxb\3U,ZÌ®bê©kXAd¼}ò4צÅ}Èýøy8a‹¤˜ƒvÞÏg%-¯iäŸÓ%L‘öðÕÁÎk[œY2b i;­èÏ&ðè„ yû Oä?G›¹mí Î1rf\x´£Q“²'ìwZ[Li'm‰nU çÙxìÇÉÂU^>5¹Xq·dR·h40Wª®Ã+ÔóÞÚc©™ˆ7ÝšÀ6©ÑHbpN¿:X϶q€¬è#ù§W¥‘g\¬ðÌÝä>kj®. R±¾ò í1ÌaDʳŸ :é’î4+Pº¤ wû„¸¤wSSÒöÕ{À­æ¯Iùì¯×0’¸ÿ/„ X¡¹C÷ƒé‘¾ð´ÁzL‚å[;’.v÷Ÿx>C,±77©t¿†¢ßw;LŽÛ¤æÉ¤fÒõzr&ÙyAÖ7É‘ˆnqüAu€T’®›Vúã’u‰‘ß„I ¶%¥¢lXÃËægY† d0lTH¢º_åÜCÍມn.’ ½œˆ…­%¦zƒÃi½ÜÉ4Þ‚—PZfoƒ–Ä Ž'@2â|Òø½_©þPÿôÁCS’/&£v΀ĂOt<ç#ÊËöÖ ,“;½ƒêŸžEr3~ öZ¢ü—¶²n›<*…J®u8W! ê•pÌ‘3¦ÌõĤJŠZõ)üèÑ*ÇRÞÔLØÛŒ6~ŠÆGV´<_¡9"òVœ¥GQêÛ{@5ôr\ k$¤^=)Zø 1¸\;VUô‹¬îº…Å»í)³§¿;“ƒö!#p\wr'½ÛÌËYúœTnÿé©BÓjAÓ¦\ðÝ• !oW.…°+@lZÛ¥\ \^‰[.´†îmˆýÁ³Eé6u{å¸Ð†Ø1šñi©4õ’øLá‚V³Ù¬äì%1nŸuýZ¾=3¬îê ŒÄYêQÏ&ob¼ Õ.㸰0›‹ÆÒòíH¨ZëyŽ ›u¦¹Ô˜'²+ŠvÐ8Öô ^äËz…L%ö¢!cÇM¸ÅsüÍ=þ%hÚ wÒ'!q€×‘Tîó:¹ ë¥"!²à׻Џ}¶œLÐ>ª^HðŽÞZ&:?Õ;Ö0cœÒzÑŠNÇÝUNGHáÓjA !Ä¥_“¥_C ¢š¡:g:ópÞ^°Å°»:1‡‹åmÞ¦øÖ¥ ½mÑæ ÙÜo¶ŒïÓÇ P4îmßœœ–o`vZíø·wîö-ýQ¡rÙÀ¬lb‚×è¨ßÞœ«h´ÂÖì/'­æ°“Í£÷ø3•Ø!w(L7ã(b¸½ïŠóUµ€,òÔUA‚·©™Ú¹šÅ&È$[>S¢%`»ˆ¦®;I_ëÊó<â ê)Bv$ ·@¸ ͪ1f€‡–¸ /DoÇ…+h0õ[ëàVÖ·^Æÿa O–z¾Ü–oòp’Cõ¼C¶G:[êáÊ(Øiè©4eW5ò2j-ß‹¶šè¤T´Vtkä "ㄤeWÎDyÒ]"6áȸøürL¥ÛHcÍÇào&²ŸÈí¹Ñ¤ÙPj;ÁܥʌÍÓMXîþÊP%âx~+o_•É_áDB›_Ê÷ux÷»Žê ‡˜]Tñy­ =¶bB-s~]³žæÌ쨴‘Ê´|2`ÎnÖlpA{±{ô’Ì{\cn”„jáŸ$é€j Ž…:¢3"FøM)Ž–ìk‘ÕE:€;Ö‰p‡N>{Fû,«žg Y#N=¥¼ìà–À– óToïÒX¹r–¶BÂ1o#õ#ù<.ÛÔÀRÜuM²„gœÏ±ØQ_añ° Z`cŸã·Ü©ïx“¨V:éc>Q!¿²¢ú Š‹'îãß)ônrÊJˆoRQâ‰Acà³§FòÖÿÍØz^ñM~Úi4^CÇ…âL2Ø&Ç@•YªbÉï¶Ùo"í>Èb“|¶°ù:÷.WÀ¦%5]Î’Eº½lS°4?¢9”ŒqÑø¶ï¤÷Ý75«øÐz΢”´ÁN›’D_·Ù6'íñ 1FãÇX@„NŽ€¿é9W|-•K¼Oþ¤ë’äÅ´ºŠ‰p¢·[²~BŽ~ôŸ¸ÒŸfç÷s ÿÈœñËü\Üïé÷Y• ·Xý¯Á¸ãO8÷û§ÿ»ßp|Ý?÷û_ú¼6q3ûÏ>÷û§ÿ·á¸ôúiC°šb4ÿôcøä!ûû?Þ@ü}I®ýõ_Øß¿þFüú/ìï_ÿ‹©%æ¯ÿÂþþ«ÿB5´ù/ôoù/þùsPþöè?ÇRWY?+÷ùB9ÿð9Ÿz~ëG{“ˆC?úñm×G­cÊNßß÷£C%ì“ßoNµu‚ùÏßk¨å¿$þïœÜŸ•Õ;ÒêÏ PôŽÖ?>%æ'ݱK^9½‘‘O4»Â0ýÍL _î6Š3p·g(Ü”‹>ŸåEå†\öœGñÞ¾¬’þ K°ËÑr4úŠ(e…N½×V¿Öu¸ØcèÐ}·²|N[¢å[Q¿¡Y!ÏloÄ´?oÏFËE—¸s½è°1Ü­C~ÄQëO3Ú)BËòyRÇ¿é=5w.ËçlÅû­ŒR#MºË‘²|çß8¶\ô±†waZž³g ˆºB>B›w|†¼ï“z0ô7 Œ(°‡Ö«Ó ÷Ûï‹â¯ìƬôdÛòÝ´%ý¤‡ƒ”‹ñÊð†œ·zgÓòÊVvxå9]qö.ÎÈ)sZáTèò¹˜#¾•â?|ŸÞ…=á ½SnTooa™¼ÊÚ:§é†ªû㢠…Ì_Ö–RQ ¸8Cýõ®Uê×úpBØš/-‚¿ÖqÏ»,ïsZeõ®rêÂg Âò›~‘ΧMþE°PLMueØš#*åtCî®:¬¼²X!Ø ¯ŠæôË[©Þ÷_Ûb¦÷]<Õµu\_öÊÈØ¯™Á0Gw—Ìt›< ŒñK„ÁNÇ»°ohSß§÷ŸáóÖ«¸“—íÚ27­PC'µCÛ 0³¥ïÓ‘DÜ&ÓÛñ†¼ŠBþó¼Ç6õ˼«z·®¦këâ ¿ö ?nÀY^vɃˆݬ´VeÞf\–ÏqO²&¯¤1…OÞ…-‹àb7wu^#)/â š(|í ~îM烱|Ú0|í|'4 h"¸)ÕjÞ<€:¹lƒ.‚‡“p·¯Rò]«T3¾ÓçUàOl‚·Ã"¼ŠÕœ9¤z‚Ïy“8ôzéϧӖh½­®wáK.ŽšÄCš”4±XùĹ82앉5ˆpvîg‚òE_!2oóe0cÀízôœ3æÐÜt}N×WÀ#èa3Ù¾Ç!þý_;:Æo¨Z¾ÖçNßõõŸOêG+ÞØ¹,¼Ï«£ pÛYéÀ4“À¥f¥$y+.Pw?§zÁLZwÂLwÂs…nξü¦OP½å¿_SC’©êywêèlô6 ÿšbbÈãÆ˜^ÙÎ¥aÉ?oú¤ì[— "Ï»làèÍ#Æ{Ç«5qBn‡î»¬Ðli¬ù^¼CXÙCÝX_d¤¦±ÛˆÐÿKIéû"Š5w(ÄÜ¥^=Ù-}Îý ‡ã …f6.¼s¼ÉR¿´7]@ÓnŒ‡|¤…Û]$FŒ©Ó›ó’@º'1ŠJ9žlWé£8~tÙª‘{^V&ùî³éd÷ȑȂõ÷†pS×ïb°È)ô™Á”¼7t›78°Â…w ÑJkðk OãUl¿ïöÍI!FnÈGÜß"ð÷±íÌ­èk&«9ßÐݲ£ä®V•Pl2CGÿÛÜð¾ùŽ'ç ÀÃfttÞĉ¿o°›«fÜ!Ø`Íb°Šfü‰¦-Z¡wò/¡ê/Å@•”M ރߊËéÝñlMï©¡—íè$Ã¥3 2o=òlŠÁ¾™²"oÅ{orŸžÌ ÿô®23p“›‡¬ÖÄ3f<£ã€™Ö5³á•W® -µ|¨FW£$F>{Çİ;T—°3YOõ+ßb¾ÐÆtZôH>U™O¶Û[ZÛâóô›3ŽàM “M}¬‘“öí0“JR¢jjF½Í@³ÈÑù¨ê ”¶—´¹je‘Õ¢qRú¥ÈÄ`C(¶cØì¦†B»'"FÊyÏ Ñ2Þç'3“MùT/8¿y΀h$‹‘è÷y5ˆb×®àìêDþIÛÄMMŸ-Á¯k:‘z%üî<{”5:z”wÚÝíÛÄ/Û{M(xgüð)Ûþ>1NxNú²_ГBž-¾è—|÷Ñ[y)${릆Z@5GrAP†Ü³P@ã>s®w5è×\(5j:éµ@¸É¼¹ö‰i¨_ɦw©/ˆ‡ªÏ.ià2ß;æHÕ’r¯÷Ͳ}«{Ô#¥ÌQ|NŸ9ñMyŠq°/hÞæÏ[Óå×(pyÌ`¾r$Bò{ ‡ S6_ÍODÕ=iKžó¤6ám–àÀe¹CÇ|Å3tÚC+TÝè“_õOô+Îà Ö3aÅ·JBòJºy’V#ão+á^ ÀòhœÑW†ßŠ#¿wœ &Õ«{è"]DíÆM”‚à=Œ øîc¿’ªKþ‚ªSï.2Ãoݯ’?CÆŠPžçÝ·y €«$óõeXx¬Ý‹òloXP=øŽá(ufó©;ìôŽ?¾ãxE¸}þî!ç,1á­®”@ÍhÖçŠEÈ’a¾â` WfêHÅó,ESãRù\À kÂéž5Á­éã8ï&< –jê‘Ö÷Õƒ“)¬é£dÕ5ã¹5ÑKÍö0Œßá`TÀ!ïD¡z‹ƒDÆ‹1ò"ûŒªçõìYä]>V/ø¤wû 8NèÎK…*1/€´a5:ö¼nh0«šÔžìPæºC:õü”™Ë³"Ì"Ö…J*Æñ¯ õÝɯ_ë%dé9¤G¿¹l¸U5}Ò0kDíŠ#ŒÞÒã°¢u™s^ϳ™—ꜶñÛÙ¥xq«‹ìm5óF¥¿ft\drÛ‡š7ŠÑNxŒʵŽýÖ™ƒæA>šÔõ]Eqeú›òxa³7 3OÊ“6f;yâOAþˆä”.¾UL y^1äÛšÈûtÒ ³K·—ÄÈÉÉÖ/Æx‡vZ±p~RO½W“ÒÚ·S˜Nö|UÅ1Gª™:–B2‘CMNík©†>ÞÆ•=§æŸæÐÉŒŸh;eª¢Ïq£Á ÅŸ[Ayoÿ?{ï•$[’#ÛN¥†`œÌéöüŸˆETÛ‚Kg–dË‘–÷W§<=|o# …ÂèùæÁ¢ºƒÓéb.Í×`Ìz¼F¢úÊò§e ¼¥A\!vµmæ1î0´ŽˆgixA–BžõÆÒœËóÂß¿ºP¨Î[|6e‘ÃÁ]*vwŸyHùÊrò¹Ž ES…x»¤£y¸3£Õr®ÑÙ-£Ì”ôlW ÿ¬[òÙÓõOÈÛß±Ýôaý;u½ö\»ºe8Jšãšzvßl† ºéãÑ´ûIéÁvÿÉ û&¼mò/*íŽaÇ‹dd1ºÅ3WøÍeCÁ²ººñè ×'"¼ïšq®&ã¥~k!£Ødy­–ø¿q‰¤š tÂ÷´8ÜÕ-‰Ñí«gír~`ðk…g²·ó²)ðC{Oö+Þ™†k[bfCò“À”LŸŸ„§ÏbЂ¥¨ßáraKP‹4GÇ]EÞ$À‰¤Ã$‰¢IŽs¿ƒ?¢¡ñ¿k®'XFtÙ¦»³ÉÃ-+—¹Ë50J4Óéºë¤q¦c<) ¸o—Y´ÖcÁH„Yj.yàk5hEa–„ÚKBO[]x†Âyc<&F¢"«9n¬‰‘”é:3Õ?E1˜Üìîçí± rîpê WÚŠ5špúnC0ï1‘½;¹èM½äUl,0üÙê­änh3wȶÀ0Þ@”£ëð¡Ñµr4ÇßrIÝn8Rg¾¸fÔ×aCÞ€¼é;mYsôƒl_ó ät?ïÌ`¦g‰q“¯íÐFc!SÓ¼g†Pžáð•mº·npׄ۸vµc”gùòáŽÉb6Š˜ù`w s¸MÆŠ‘¥ðh *`vÈž–™žþ@Øûnw… [Ö[K)æ=é=›7¤’_1¬†µïcT@¦D½$Ön¶ ÛŸåÌ5"/HÀmbÈè:¾@´?T¹WÚzÞ7ãßN&.2%õ‚oô&üSE…“P´€×1 ê^‹¤ð£x³wÈz =æN’Ôï/†ŸíòRÅb»Ò#3Î{Ôâ)5ºH.ZŠúÖ`Œéž`ÈélDÁÞ.ãÂf¼e÷˜À®¬íò”uÜTšÀÀâ‰ê+ͯCÐd®­Áˆä®’;®—YGƒØ9V¸¼ÁRT 2Uqn+µÞZªóšI MŒò oÏãCm⛽YÜÇ'ÞzN)[¾¸IЪïIž·¹ZÒ{yåÜZ¢ÈõÏÜc¢ÖG‰¤ÔéD»®È [°¸Òvëö´¶7Å|ÎyÏ/Lì»e¬uéZ@\³†7´ÔÖÁ`æwe¿ùúl©´E:¿ƒÅ–úö;Pakyz@QÍÅÆé=:žÑR±Ã‡[‹úTLôCC’Rªps*m–{,\W€IéKØìÔ zFâ ¿eVP³†êç-w.Ÿ¿ÜÉ”¬ÿ3®]Eè¤Ý2¢_u¯z‘»º²×L¶6·ƒG€•Ø!ûMn‹‰¿y?$!éä'ÂÉñ0Ñ3Žú®¾_ÖE\°no 1uÛ4— #U›Å6Áð>:}·vÅ*™óžp!ZJo%œÛ¹fŒ/Wþ{CáÅñwr![jó+S_² Ic°ˆ5ªÎuA¥Ä3ä, Œ5«b©TÎ(Ž~0ÌoØÅ ·¥¬ÉíÓá[f‘1g; ?ä–Å=ÄÍ;*ß3$±‰ Ë )î Éñï–ÝVV’Ë»òj¡F ´n7o6WýMæ_ v.kÄm¥±šÙuLž÷n8Ö£ñåÅ}K+m¼ÙÅ«AdM(ÚÂæ"‰RrùC<ÚÀlÅ&7äá¦ælj,,‘°B§“5(xË®Õ Zv5£ ôÞìÚcÔ×—ø¶|ã'ÞG´¤q;Óð›!Œø«vÅ=m-æp7Oz•[4¤éÂ10¸¾ ØãfWÈ.Êù%¶ê])¥^VÍqO«†ÀÁœÃÆù~Æ%ë;žeÌÍÏ©ÅÞ~¹Iåoºò,õ"zdV¬†Ô¯$b´PnÙ1K¨z÷É- XÓ“/¯+­²úòÃæíMvôgä÷ñ7·ž(Ö”SÈ8µ«™1;¦…¹àMüÙ¹Ú–1pn|¦¶Yk¡î-Û¢K$ÅM†‹]//¹ŽÛÓÆÎÕk\!îáœw. dÙçéðÜcNPX›»RœFr"F׉Fry!¨bZU¹°.Ã<Æh‚ê¯bU(Cò¹e+ĸìUYê>Ò•‰x[A2õ4l0su6wŽÖÀ]‰ºŽ™ñoì¬äh'žð!7?З]2 óÞ,™a< b;f̆ñ›h)QÝSvYY,»B^” .oçVs ˜Ö»­MMQ7™ñ8…;¢Œ°ñËŽ¡ÓWԯЀè_,wºeÙifŒïØ— ý³dPb c;,Lá¤iÌå@äÅ0)^¡A#"–aí\¬Jœƒµý=ëù³Ì|Ðïs ÿÉù¬þËÿüàäï¿ô÷'ðÖ©öågpràääï¯ÿ—·ØÿÜ??9ùû/ýû¶´´þgONþþöÿg''ÿ•ªØ¯Ýÿõ¯>%ÇמÉÂúyI2—Ï?·þú—þ'“«äg‚¶Óÿñ`cýf9¹Bùks«JVÁ_kl_ÌâÜÿÊTcûb‘*Ô6ÔøŸùOýx)ý:)9'iU+ª¨ûßÜî’–< x|qÏŸon èä.m€%Sc]îéä(¥dˆ†s•ªSÉÔ—‹È½”LÃQr“,îìí9áŸ|þ\—·¯Bºš<íËbªšÞ»;3¹{’zËš¹Éñ<ô²ä>;xBÒóžô*¢ Q2u£å*Š¿çÃ7àÍYjÇl¼QÿÙ•taÑfhO][xOIeÏÓ¾IÓ™i~–/QFeÁ³|/Âl}Ž%ã7KÕ6ŸÉ]êÓçUÞ”àŒkogá7¡.ÈN)”!Ÿý,]èmùÉU χ/R'H®žxÚl]„´M:û)›}8O+Ë·€¶—‹höÉ–Á‰oz4‰9{® ìç&×¹Ùç ¦`ܹebˆrunÙPóúV€r‘ÚI*ѹ úp¶ì­ãȉojjÞªRÀ9×áÆÎ”ýÄëÐ’zT¢y-ûœÙ20R¢ÞxþÍÿ¬žyþ싚ÀB #ÕT·x¼¬­`ú²Ù°RÃ>Gó:Ï]jÆß„ôŒÏÿ>·ìÅŽÁ˜]¾Ùa¿;¿ù¢,Çš|léY>2o’7Ë£y+KÞóËω/õ€©éºlÆ¥é,<™·®ÁTHí|˜ôÀ5A<Î ¥÷϶¥ßœÀI8'á,|&–³Ÿr4]Þ²ôUH·êXÍ©ÖØçJ·©—÷]¡Ï‰?æ-QëDþ<‰¹+2"W'÷öStTä:€X'|=ï ßféz[ó')8Îõc©_œøüÙlk‹gè8ôÔéÞeùôœÑÂkT×¾Þ6”MÄ0.±C/îouqï}^p×hm“ÈyœWy]kxÃk;޳–…‡£9Ôó´/ø]–÷|‹g˲:tˆ5ËÒŸ *lÌrË`Ë4¦N êçhÖ¤¡ÝkM,pI‹V¨ áO,5¼§ˆ‰‚?+SÎ Á,¢¤ AÄû*C¦žÐâ¾*yÜY!8 eûÍ&G'M4ç–‘Õ ´øOtèI=DoŸý´„¢ñZ5´#ê§Ø¡!GîgÖÍN/oÖµMPk8×>kêEöV³«ÏÂÓI°À…HçþÅ;¼Uþœåÿ=O›ñÏoÂËBÖŠv¥èo ¸KwwE·lùÑ„ôÀ£·IYG›¸¬ ´ë𠾕ËcÞÎÓæE‘quU1xËιM ê÷hâ{)~@ã-'œ…—H*QTSš^û´wù¦F©`Mº”~d…Þ?›´ÓOiÑ712Îâ§NÎKGsib‘¦{@2B’æÙìWòyAqè°eM“6bmäƒÈõ+ï •¥n9õ„K³´:NÚÖZy§»ò¹¼Y °Bi«GÂh2 ‘ë€`ÆU Gþ,ÄøÂˆ”ô¢æ¡æ spÕA”‹[¦+”&°û­KT"°š"irþ¥ž£i#øìç•"&.-k@Ð&ý,· ú‡ŽûR4Œ“ª¢zò!½š•yá›5“ ë¹†ÐR(°¼jóÛO( áí¤Ü´le*LüM©7œC qèçUìòRñ½¨â‚bU ‚º5ä®,9ÔPvhÙ×LM•û.7Ö{²ÂC Ÿ’8ÍÁó&{Û––y©SMŠÒ3ÜÐE,I‘/«½A ¸hµ1 ʼŠfA ]déZ˜Éò¨Ê›lB-ZêÀØäÚ4ãÀÊ+o»ÞñeR”Ž\ÇÐkád—Ê“ 1pLºŒJ wuŒ"*¦’6?»2 4û‡n'áªAÛ×5¦&v¸Gb”"•(ýüØ5Ùê7»Œ¦$aó¹H W/u€ø,_×ÐŽJèK ã†F…WÁà€i+ÐM¸ì –B¼4’Ê„y¶éÅwºV$¡æˆ»ŸP £ 0!§ åh\êw+*z ÍWJ¦P½4¿öt´äú9ð*EÚ/ýF;”g´B¥iÍp#U )ë!!„1œsC(ESïÀpŸp<»"¦ÅÔB8F©u**\°`a15RÐ<¤Œ*„+$•&“é5 º]uB˜bz¨NéÁ'a¨^¤;NÂ,H Úô*m«»"ÅCY>åPÁÓ¶¡n™æd =A}Ø¡²;"^ˆð°K¢>Éßnä.\wFªut3€áE/8–¢LY2$bæyÊÆò€ÏV-™’H½×h”ÈË//TPrS3Ns¦ÏÓ+´a.˜ÕR†]$º—„Ê+Iõ"¦EMΗ çÚ¼’KÅÚ¥[6(œ¬K™4ëæœÛb)&†vD@àÒ‹͉ñíP/ÿæR@¢ú'ÌªŠ¸pÍP¶ qsÕļwe(éÎP)ÎŽ$ó¶½®þsH{ôI¥ÉÞ5R‘B –ðÄ÷¦`ó¸ÿÿ¿ûO‹Œ ˜3Þ逤ù ±#›~Ô¦%WàE¯ƒ¸À‡j2¾ªy$†×ì –ážfÆÁéL¸¡6ZE¯JÒ ¤½eµ&Õ®ÉL BØ1Ãß¼š›=²V30ëM‘%Rb8·lÆE’©°ÓD¢g×8ioŸß<×¾0%"é¹%á ó*]Ù„ßþÀü°ŸÛ+bðgÍJËÈàkŠ1B2Ó’ & ²܃N¼ )0‡#S(`‰"’ôNJ¢†‘ø/ó^^pY[1°[„œ!-–ËŒäùJ™—ÂànSŒŠµEƒ|D³´Ó8°C¥yÈË×÷¹˜çÄS$Õ¿ÔtJñkOï)gº€>”¼‘3ŠÎ¤»$A~Pžf€ÕD†úÏ„„œ,C¨JÂk_†#hðžnÁ×”ˆBFØ)+}ˆ„N%üÐ 'PIs^‚…÷—?Û5•ÎÕx?1N(î¨ç£ËÊÔó/¹½‘×0J]š´Ê£¤Ë“¯`Ôµ@@(Ï–[V¸¦Ÿ¢i#ª+ŒI»òã }ÆÍ6ÓÃfØÏã³5Ž'óV5î#-pñ¼Zëp††ÓR߯j8Œƒ‹$(Z†)I8 FÕ–FDÞâ Öš‘ºHÍÃ$¢Ö¸E#©áp)aR…5ªÑ”þJW¨+cËL÷Üž(Ï?mÖ§…ýlÕé&­œb T©CÉ‘àÏnýÍN‹PµbÁT»¦|¦Lúãž’$´ñ-ke†ÄrÏ Ùó6’Æ +p:[mr¶{"e5ãÈ€oÂ8’BK•o~¥¤ô¬Z*A¯ÒLQ»^AæPMí IK9‹dœÔ¡%Xž”ÉßJÊýK$¶ m‘ú*”¯hŽtN’€ŒaK9¯ñõf‘C²«SGB/X4 ¢¾¾¬‡:5+ËcJœß „ï©¡Ý—ËÛÉWãáeÊ\•µp`'ª¾(2Æc|ùMqè ™mM-X§î‚¢Î5'rêVt’ÄUÕ,Ö¬Šư›P”¥:…­y—e®ÙÓªbj4žÒëY‰[#Ȳµ¹bÜ×ÃŽÝZœÙOÛ…¬$ f†ÂBE±'ïë{5!å$˜I…sÛ¢è²h áoË‘:†Yª¯èÚkC\¤Ötá¶’Æšø›exIŒ~ÓPšc{Q;ÒY?û¹­ý¾)j;Ñ †vEÛÒÂm84ˆ¨­xÞ\µ†º ¤ ϾÌ:Ž8!nFăЮª‹$Eï›Lb/'!i’;!¢I3Ž0¦âš$M(½-†fÁŸº¶qíŠ9™öd- "àUº²—3­m×rcAªú D«Ò“Zho»‚ØÜ8:ݤr£¾‘Q¨n¯ùJšˆ'l "UÿÙl ­Á‡ÖÖ¬„L⬩W¢»¢šÛAs†ZŠã?‰~eë=<\ W‰1 á"iq”˪NDù„\ÔÞ’6íÙÏ=£x¨J½F¶ |™â}…þܺòûzVm´¤¡Q*M­×H„£ið‹f\g}FM(Ý¿ ¨z–ÒS@ŠëU©§ªWõÙ4^øCjMÈÔTm&'vAaÃþ mÙö¦àWÚöp¾yP@Õ!á„Øz ÉéX‰s![X;Trƺ}Sk²)üЖd)ЯX<µåº4ä!½Í (wlÝS8&‘Ü÷¯¦= kCfƒÜT­-JÉ$åUQ‡©å´XèÑ$LÊÈ $ê—œéÜöªÞ¾STS…|V2Mý;£sm…ˆwô°ë»­ÛãŸ-Õ©Ät퇧Ò6—©€ÕÄC}ñ!ªÌT¤mÎ*ŒrH«ìËô=‰¼Ð½¶¬-Íy±µ%…c;©°¤¤{ˆv}ŠÆ‡cÆp³U·PùšµkGú•OJb¡:wC‚›±kÁºm2"‘Ö SŸ@¶íO¼õ*1ÀQµ¦CÕ[k9ëhf©±l3ã ±¹+šªrÖ¶Z(€ÀœS„°éÃ(øP[Tò ÊpKM U ö—J›JŸ? °SÙ_˜G]·ìÔš°´ùžö€Gʧ¦ÿåÅQ`E; 솶,BõîìoˆÁ²çiDí?+¤ÎXQÉ Eb€ «´¨@SÂ^º´hÈD¼©ÕîÅŸÊOHx³B´$Ú} •î=ši Þgˇ «²ÕÛ¯¨Åßj:°ŸÍQu¢‰°•p?0=0f ¡<ʰÊ(‘rO^¥gu‘‹v¥kgáô=;íÚœ’F¼eÞ¬D3C$œQÍÕ_«^GÄ ²xL¬j‘µ{ €¼CWÆ`µ(š…¸¦³…±T4ô ~Ö–QõmQêóMÓ&ßÙF‰èÄoÆóážÉé9ûå­¾ð°Eÿl¢‰Ù¢x¤·Zf¦»j%é.A8kõÎG²Jq9abdÛˆ H£*‰½³ê%ÇÖèÏÖîÕc’>±†z’ÍÖCúš¨[!ëV4-›ÔœqÚyõªP.“´X‹/ÕUPò®%g%Á"h%QÊeà9Ô9ÕŒá–XÚE‘‘„8ÎvÄü\‘¾ÿ’P ÃzxF<§ÙF¡?49AlÊ­Öq„e¤ª”ˆÜÐF%—V ¦¥HtGWv{šÁFëõ-A_ŸUé¶+SP  ¹\ãZmäØ.jcÒ¿lk0¾p?§³;‚ŒDɈ¤·¥MœÂà¼ßd+0*FІsk¹ 6Y›ØsQŽ· qÖÏ yeÏí0Ildê±ËžWÚ^Eûi2×ù…в°‡µQªÐ[Z(÷9½Ï„¢,sÙ ÷ê)/i*fÕ¥k¯tÍL3†Žd(8ã"tA÷†6$@Z¸cw^×oNìh¨žaB²¬c« ÛR]¼‰š’v¨lrµª8édçŒÚš¼D”¥¤ßd)k”H¨t¹.© á¡©Äz(Õì”BjÊ_è}u\r z$Sh¥Ê_ÕnK„0ªö<¼ìÊÔ5•‡‡¹L3ÙD”ñ23ÎÝ–îWªÚe½ÙØFW»ž!ÌÞOåÏ:ìñP¼­Æ„û5¼’F슜ڠBíÿ·¨J *BŪVЧVyÉ/Í+fï&‡„ªYµ{C%:Õu¨XûÐî d$­¸(w—Y-öóE¯âÑÅ”T±Hn!5••Ü‘+FÛ“+jðT5ÁB3=…wdV®}u`‰TŠùVìYpn ØÓ Ak‘:±¤Š'td¨«ö,`éEŃ„ZvHÁf6Œ.ö3é€ ¹{G ”¨ÖKe+2ò«Oò€RZíŸÑPç_™åOz™.ñ£‹B'ÞD']ëÚÅzÅEoB9ö h0Nñ¶¶|î Æí!HsR@ÛËpö-°‡zöY ¬&•­Ìd:½ePJK*ò˜˜ t_…:fÚ­,cÏ‚ d¢Ñ?ÅÉè÷;!°¤ùS À1ý¦©Ä"ö£×™“Þ ÍÓ`r„R8—Ÿ¦ž $eÝe¨èiªý@lëÖA¼Ð¯L³˜*fúðäè’+Ìõw\œeöju$šùæ[Ëάƒoª“” «vdÐ a(´}ÝXÆx¨=Å£4ןfLÅHf\êèÆ(dZeØ@Öº3¡©ÆS騩{Å~ø$4#±J„IûÅ% “«æøµ/˜EÓ—%61“ŠZI£GWð(®kVK§o)ÿ±a…ó6­Áꪭ£BpL²5Êñ€EK©m¨ú('ÖÃóƒ¥bê·pn·2³.K#Œ†)ɼJ´ØkSȧ£iâj˜›ÖîÓ˜99­óöÓêH¦«Ý‘è€a|8€`ë]@MšI³LÐöÖ3ÐòöFsÎMø›Ñí•ê>+ŒˆÄ3N³ÿ¸qŸ8ñŸœ‹js>5eù'ý¡¿?÷Vdã>‡Q;ÌeÔæ8®øëËÿåíµ¿ÖDBçŸVüõ‡þƒ=3ÎÆA/¦ÍUmêžñËÿŸUüGü§g<ðÞyJë ˘Šçoð±e‡ìß<êüf‹Øxe¦U>žò|s˜âÔã€ÏÝ芕½ÑóùfÒDàÍiÊèÎã{ÁÒ·J!Д·2¬s²B \F¹x ¡1ÑΟ-º+/‘»¬ªl© `¼§®íË"=¯²¬@ÿ¾Ê¼Uí76<”ôÃ7X='¡E·2šóUÞØ°Œê:šowÂy ¦Qå Þå3%,|oJü¢Ñ¢ç›%E¬/?Ôü´V›~a¿2›ã9p4gR®qïÏo.eù½tŸóÍ­D„·Êr>\Fûbý¬oøw^ÅBë7Ì=¯b]RoTyžVuƒTFòâ­¤œ…ŸZ0¢]Y.š ¿9MÁº6!)¿ìа¹£ âny•H±±ÌêŸ7£>Ë·¢©çÏZgÖ ‚œ-3ÖZ‹íÓËûÖøŽIµpþMìJ×é¡ÈÂ=ÖÚ^9ªsˬÕú-"”iRÓTè<æmÕË>¿Ù#õþcMv4—C.oxÀ¦ÑŸ+AyÛš¨ƒ/¦$AhÿY„¥¹ìç°bI£+8.M Ìx·Ùïëþÿÿ~Wf 1R*sì­µ¿æ9š[íí[ª»4é$ôá³#è–M9!§Süi_DZn¶úl8·³iù™&@ˆë°:ñ{ÀÜ’~\ÞøÜv˜2ÙÛ±ô®€ÈÏ3Áx•±o,_R@‚* ç=͌ӧ5½E„³|6å$Î"ØdÖ—˜ymB#ó6›³kÞºìy Ž †q»Õ tŸµ5îå[ ¹ö–Ë̽H¬P4ñû|3›3|Øc™ 9ñŠ`Òå½ ¹oùá8é^°ëÙ´i?»JH$^¥Ã3ÉxË"(öIG3i¥“(€gá‹ÒŸÉé$A&µ/a!Èïëááf/§¤¼\½s?-@£—£ý½MUÌ A¨rÍ#[Þ®d±I· îÔ£!×ÁdñÐ-›(XêY<´£k¯3ÑšŠ Ž¤…A„VŒpTƒ¤$V@ÅÜÁ&´¼¬Ís‘,i¿2ÖíîÃŒnG»â‘R@Çû¥rÄhü#p‘žvü³Ë§ß¼E¡³+9R°>¯b´à—2vž6YµÖÖXkÓÚ pç€|YR¦I> VF´e³8á¾ùY¾¬>ûÅìÁ0´ÿ% ÊµÍÛÈŽ‚ƒa<[5SœcbA!œø±r 6¾+LJéÊf¯0Gºs ÝëÛÛGÉR/ ~Ù‚eeÄ&,÷³ñÙί«™õ›ÝÒFú(âW̤B4n}5œuXJRÑ0n›Àˆ‹EŒäkb…g<šÙrb9tÈ­íò)Ð÷y¨¬š|,ÅÔËM GÆV•æ§*¸KFr`Ž€ó¢YGEܤ:c~óô暈:ºm C_´CSi~W‡Kù˜$SBïÐ"¹Õ÷ž@!ì:ÐsVï“¥r£Å&Þ$A‰s-qBH‰[$…§Ïš¿©ú>µŠ‰'a÷´i m|ÖVØk;=õ¢b÷ÔZ$çHRJ “pOßáôUÿ9–ÑAyj@Å•™¬F üÊÇÛ›ÀÕ\M ˜fLý‚.阤ë‘мm½œîíÅñ=;%–ÒƒtK¼ðêíƒ÷4°á} ¾¼óè¥r Ȳ°Ü8¬ÍŒcjuè\>îºe”XÜ鎰Ù}øÓR8|¤Q¡ìfc„1ïX0ÂÆ›KûCT3³ƒõàÐgóæ*g‡.©â?¬§8aÅM7â?ÕÑ›í²€`m›Ï!:]ö<›ØNËO<9åéð*—'ÅfÜJœÄàÐ~°LÂØpk.H‡úN=¤µ®‚þv;] •A•éà€žc9k„â¦G³cî\©›Mª Ðàbš9t¨ÌâUiÚ쮽<ˆI­*ÍáÊëàè>ïiu^8 sû´1bSØ(ÏÀ16׊Ù1–g3pnø-¡âH`©3»Á JæTƒAjÒƒÅ'¾{7ó‡Lç––¯¸ :ã&ÙøCð›6gkWWÛG$⽓D±m^¥ÊpzY°Û›EN§{$…Šòà`‰óž6ôŠH7]‹pa-(¤àw;jGÀ†v0Ic»®8Ü÷$À±]Ý”îçôâ$¼hñÜòÊ>©˜`ŠìbÜÀ°šWŒ‚_ƒK£zv7É{tËŶ iUC@?Îý´Ø$.°3*`·Œú…`*axym¦™ÔøÝrÒ€›lÂô ŸøñY¿‰¡ÝèzÀá&Ó4ôÙ}ú°p‚ùû-«Âo&—ldöZ7F_•‚ätÎ; ñ¾º‚^u)øØXjF¬ÀŽ´$W{S3=’¢µG•/Î1IÚ¾ÌnyÙÍ›é9BØÜ•ƒ–¨^.¯òÁ¨˜–T±…dŸÏÛ-ʖǾla,2ùHa´ñV€zÙèÚ¸‘\u?{PÀ³áL§«)² c}k4ÑÎ]†É›"ö64QL# ë4«ÌÀIÊs[¥#DõVéº&P4¼VLêŽLͰ -™Nß4QäDŒæ²Ÿ ÑŠ ÒBp·]ú2†Y54«(pNbùf ÂöŽ~ ×(BŒÑÀzJÚ’ŸÁö„Xoqж}à7WQÉLU?d8fyÏð·1šÂ0²ÜÇp-ÑXl Æ(¶C=X“Þ}¨+Ü‹+þfo961Hï} ¶UŠ£SÕ«+Wàˆññ«Œ§¯::Étt[!JN› )Ý«Î<¢äÔf­“$ù1©KiƒÌÉ·êÜÝÉót¦ëR1mº¥U‘¥Œ®£{‡,Á1–Ì`ø1öåÉ&Õh˜à Ñ#‡+¶ŸÚäMIÓæ¶4`ûÏÔ]¨â$]¹‘–á‰ã³Æ`(w-ÓlQ)ÈZ©ñKˆ©±OÛÖpúÁ¡ ¬hÌ›¤{J{ ûY´º‡D‚n.’{÷²SøÚžQإƘÐìTb0Sç%2 ;tºcH$0óO›øÊaóˆ&ÛJUºGÇä0wÕ;€·ïMý')ô‹ÿÔŠ‘B§NN§ÝA[Ȱ²A[„Soo•#wU<™“0‡#ù„ƒmECÃÒ½ŒÁ’©wb^Ö—O¶%Lª)d@#º¤(}’Âü©3ZÅL¯ƒ¥µÌÃÞVÊ%±lE}8ª'D Ã:õ ήŒJ•Ö L °âWL–óÏ7¼MrèòÚxBlVZVZ ùæËà`Æœêì^ð2 á–u›œIºì¿ú\)T¯>®™jöez²£3©n¤BÙåe°ÞqäÕ˜¾ ·ã™µ#Ì8û¬‚‡zÁÄÊ¡q|¾ÿÿ; +Ê®ŒqÎ!ì̽‘¬œxcéa`êP": Ë™ 䳓½åskPH`ƒV ‚žÓâ#.$³lˆÞfqnkä¬H¤îÄ UÁ¨„R½nÏ»bÒÔC<} %ŠÓ— ÷®™ë€»ù|%"ni?ï9špn»::Z‡§ÒÄT¹óìbe‰b×ý@Nþ¨nj(œ®fÎC>f;™ºÚ!"9&^Ë´^‹Œ©ô§¢½¹üÛ“¨ºž>äDŒí…ª„WïÓ¡…o~W žímß ÝrÒ©Wã„í㌸#d×qÛ§{ѵ/žîAn?õÄçˆ0ùèdfó·ð€uoŸ%×ÑœéI[¶|Ô"{‡âš³ù¦žÚÂs‹g™õ3yZKq¼°6¾j]°a®^åbîÿlá-ûÁo1G²Ì•u?ì= K½, =§CàÜE]xzÚí5tj&Wó~t‰tºj¯9=é®Ó@•vÿÿ?·f¤XÇŠ†Sü"!cÑÐty¸ñvèµ'±Œ¦œB¶}Sƒ_”­žMZÝRL3§ƒM<÷¬(žñUº&óf- %`ÑÎo½AÖÄÃøp®ò‰©Ûˆ¼ƒ³ùYF»áÎýd”GÏEoÍš¨1!{.ÈmÂÞLÈ]b6 S’PúUÏ&Ûg:ñæÍí!çÍÎ.¥ät9…‚¥¥~…%i’7 ÀŸ¦òŬ‘«÷F§Ïzü¢ÊhM3íѵ¥€{xÃ'§Å® ÆšE!â H©?Âtu:Îǽ‚°|69 Û fòp’AlËhá«|"<¡ú v.ÈÎXÅrû„XÍmÆ'Àª\ÀŠK JP#% ëiªÂmjîh‡¦/ê¥u^ß[æ}‘ØUd  M/sa‡B]XÅtn3×?S<›õW+ë÷Ù¸NÊ•¡Ô®,àfÈ 9½ƒc°a…¼¼† ƒã²ÈuHõJwWh¢Æ„Û3+´4ÀÙ¬èÚÒo¶ë¹ k:hìËôi YÞ©Ï­¦Mñ¥lÃõó&Œ‹7ÙX?në#ÆñÖ˜@‰Åô~A’jÑÏŒÍ?<)² R]ŸÍM<ªã‰7á J¥-ˆà¨Æ†‹Ò\¹HíËͶñ$¥V§|‘hÏtÂ>Ñ—mÎ8²§Í)@†ò¨w¬¦Åì-Úx×3Æ8Þ˜G,›R cä¼Þ²åBS-½¹åNæÐfW%¦Íº¶˜wg‘&¦ÙÅT¶p 3×¢ËÇÍÕ›ì¸æšBÂáz$s\VH{8aVœ’\Ú²â@+u«NGÐø$XŠEÒ¦Ò´¹ÿÓ™HØ·W!Êt×v SŒÛrô.¼ë,Ñ0•»6¬y6i‰[ý³Ôž·\k„ì-‡ÃS/ˆ4ɇ•§(ż¦Dš.›BŽÎF8"²4¶_$zÏ¥Ò;¨«ÞmŠ ‹‘o/`¦ç0w…´^Ó§æ6a‹ÆÙ—™ÐÅÔÍG¾\8xù¬‡™ Ö Ai;nÂÞaÇí\ÝÕéHêlx/&ášù è`ݾîÐ`\á j·L^úƒû¹¬÷€Ùˆ8'šYö&*ÃÝtí‡ÏZ¤Êiw|ˆúy³o65öU§ ÂÝ×äéÖF‘qó² G½ô‡æhÊ”ÄC!5|EÓßoA–û\/Äm1=%.×^ÓwòÕµù‰–Ô¯œËêšl'Ö\ûAú&ŸßÄRQ EFû¢MªŠÓå›(Ž_î²Ôv·z…}Gš³ V N”cmD‹ûÖÇíxkÒÕšpEs!5J&ûϸ8Ø@)Ét±FjÞ6ù&ªbã)È‘LÀb°Ã)L_"Æn]E߯åŒâú Tú[>˜ KÓ.e$ÿVüyŽ…—§2]s”¸DBA §ùT\^¾¡ÞØGèrª?åÍë‚Ô×ѼÈDTâì‰ü§ñR¹·¶j¬™ƒLÇ zÏv^^£ÎPŠ™=($µ¤áV“~³;׎wņ"Rg÷åNr!ä‹°Ìöz6)úü”PpáÍ‚‘Ó)®‡AFªê‰´e]é®áƨÆy5€ƒ)s7MD’Ï &›æ´…íêËáÁzc C·Ñ@ƒ‘Í«µÌµ«z¨)¾½t:Šã´×{Ûߤ=z8¡fšò_´W:í@xØPuÆ©³šq2©Å sKíPG;”o[)8€¢9ÒÀßLªó{·&ä\oéuм§™43ìJsVpHŽ,‘Cï®ÚF¹ýT…&œ…2º÷øÐ¥©ÝcÙ¦Øh`&†ÄHþð®yúæò±hÌPŽ‹L};AáRC')Ð?Ëʹ]‡Õ>‚¦OP×m²£鎹gy5Ë€´ÞJn/ «”˜úr ?d¬K@WòýÙìer2ãÙËÇ4¡:šÅgÈ …ÍÉÙ¥LØ7œÜò,>éƒ*þ—°OJ«¦Ç¸ÝfÓ‚Œn&µC5Pæ´¢¡ÉÑ,’í¼¢=lo§aŒHžïVã› èü1#8¿Ïü'gpÚ/ÿ/ÌÅýþKÈêi*;®ïg0nûã~û¿¼ÃþçþùѸßé?ض®fþìÙ¸ßßþÿŽûO¯ë"jž·äFÿõ¯6d€™ýûÿ}vÀþ‹3j}åŸÿÂþýû¿ÐÿBÿýû¿(©üüúïû/$îüõ_È¿ÿß_? ç¿å/Oþ­»»hÈ/ÕϯXûÞÔ½}z×[=ß4èäm½ª»xuþ…?¶Ö[´ßrGÝÕ‹Šoz_÷ºB™g>ßÜѸ¿ºmf0MŠ=+dTŒ—ës>4â%}Ó*7¤("Ok$e\!¼ñÒ³Î7ghÉÚ5õYÛóM«.¼±‹lö 7û²„^Dæ|ÓzŒß0¬n£-%ÈÛäèãò<펦 Ÿýôјϫ´”Å÷f|çi«¾'ýÙíìZ¾êshÞ(öœ«ŠÑ«Œ;ÉMc{ëÝò@vL`mo“­írmÓ¸; ¿¢ÌV~à﹟ÆxÓ‡–Jœ‚Ê"D}<çj¤ÑqVȶì½笭–oø”Ï—ës~Ó.Ò[Aþõ*´|wˆ1möôJù …§µ®@~ Uå¬> [6.…–oûh¯è‘…·Ò=¼§AD„ôŸ]±æ—Ë`éýcûä • <—·FòkbÁ"îÖy•±‚sûÛöI½$Ž7í½Œ:¢å"ïÙyÏÜ•ó@F9¡µÝ®¾óöÉ¡6“ŠËg8ö‹Í-3öéKÙ”-3òÚ¾QŸ}ž¶F#]Ï"ع}³iñ¼=н“÷´í`‡Šrš*Ðò9Šê•/Eóæ³5ø Ys>­«µàŸ5€·nxžÖ(ø~Úí·Æ~þ¬/ßR¯¼Š­^¤)_×üf¿Øœ|Óp2t5šƒ*öÖæaÁ‡·!ŽœkuNÓ»¶r‘LýŠkбˆfÇIhg‹Ok²žTº‡nÔ7¼ް±£‹f1œ¿´xJ‡ºx¯ ™šíÕÜf”8!Lu„˜Ê¹5Ï‹›m†ñ­…œ÷4Ñ›—N<9Ü4o6Ûñ-õÊÍŽÆ«žå«&å‚[fiЋ˜Jàb7«µÍ¼Ä‘sL¬nø>8‘„AD‹S¯Ëú¢`i;´ÉqŸåeïIweWŽ \ãXÓZîÑÛôKzÏûgo¯7ûœÏÓšpø;A•N_u­ƒ—*uÈ»TØšDü\1Æ#p:â,(ÄÖ¦|¾Ä.I,VIÿ™J $‡zïÙRÕ÷$°DRúž”ÖŸøÆñâ–­ð…×Þ;¯Iý;àò…Â3ò´fjÐ#YF÷îç/cü.r4M: ?´ ýeñ-›Ñ¤õk‡¢…÷f}ÌíM•²Ž;=šìÐ!ò–Ì$²R.ÙU4)l¾#´ÉÛ/ï¡|åNù¤ðc;–‘%kƒ¢Ìµû úÍí™C]VÛú‚ƒ©õ—'ï°œ ÃËçÉ üæôN§·²*^Ðhù茤ücq+¼H6,Ok¨™Ô}“ø°;ÉŠ¶ì*4rÏ-ùÉ Ãt‘†¦$œÑŸJöv{ÒF)fu¬æ ¸Ï åÚ„y1ü°†ò7T?ÃÊ_ŸDR6HÓw›šC†qúÚ¾44ùMõä_)——uVÈI9x³=ñ‡W™~ÀÈéÔ ¡_1kBàîp² ‡YÕb0 \L΀0Æë³É&,Áè vçP.h“@ˆR}–ϸ!ä.XO ß}`)y¤êŒWއ …åœ7T釮›MYÇm ¢“Ð+ûÒaOzPg0~êxA>¥ý¼°'þ¶¶oL}^¥YÛ ®±‰)„µ&jz>ûiC08­ÍÑhiAy, G?mš ^ÞbÆ£šÅ}²9X!‰Œg`M~È0þDRhŒMv—nvwæà›ÜGâO 'ÝqbˆßZK*Õÿ,¿Ý •mö0…Ù•ièçí^¶!/ؼŌ²Èáî꥾I¨é‡WÔ{+¨@\|Ù—¶„è¤Íï¥åw?ñC'“a|»# W9š6É#FØá2œ¹«—!ù»‰‡Ú$ Ü]½—·%+5ôeÕ;c‚(ÕŠ/ø´ÞT‰!OîAqÈ…¾ £ËWm‚³ý1 %pïé#‘ý_fœ-µKtºŸ† ÂqórFè"­‘TÅ%=Xá›ÞJ÷¦$Çg›¼ç+Î[Åü³ÙÀR´&ÞÄŽËg¾Œ.Ò5oT»ºÓõè=·kí³–„Ëw±q²C†¸p½¬¸yÞ›R•äçp¯« ïYÝóRL½õ:°ÿ¼Z„ÇOŸ,ú¶µIn…±ñ=xÚãè†uã`½¬Z¡’ŽI«£‹,Qü¦h”Ûmú!Zº}êdã—_èfwé:|‘%“,>·Åk:ª\,õ]¡ãt¬ÏŽ.RwAmò¼VŠÒÚõñ˜Ã‹´®¬ ÆÔéQ ÝŠiœ—ÝòñÛl(¬«J££sø3ô¥¿I!Ïõ+AZ[£c©hHZˆD,—­bÃMæ×kOÇdz»× _‘áïé@-Bu!>ª’؈‡ðj,Ó¡¯ª¿Š…°L8ôP€©ÆÍÂE0”‡‚ü¡ˆ g_«AûÖ\ÑR¯8ÌZîPÞqrzõ‰‚÷4>ÞUˆ‚p•X)¬Ñ¬±ëËHÚN}O¶&½„ìb1–(%ùEã ÆÌ†é|j¦õZÀ|Mcõôò‡^0Pb“õ%ˆð’ Sß¡´¶º’C´5’Šl‡ööoáh¼Gjg’Û[•„«µ¦Í†'Á¨ÄdMšht†ŒeÀ°°†“8ÖP¸~0wÒnºeýІpÎ3WC@·ìî ]‡~1 wkÕÜ ŸØN—D©´›§¹_’ÑÅÁowÙ]Êt¶F5ÌÉßþg¦ðyé_éè¸fÁ˜7nŒV:ÔÝÙN©‰ÄnäUŒ-Œ¾Ì8ù„üökMà›ÙÇlÑuèZÔgÏ»ýÄSôfa3•}“X#·I¾lÞH ³×zÇ€Û5ËÐóZœ@uÞÛµPømætÏ ‡Œä0£«žg3²d÷“6û¶S굜äHîjÞ ÿ†Á£†ÓÓnÇÞ¸Äi„ æ¥Z^Æ4–_Þå¡u\2 ç)æSßp’îg÷kO¯R¼¡œ3W+O‘Cap©F¿b>&–(R£Iºc ™6h65 aŠ·Ÿ[Ф.VD±òCv*΢ë]¥ïõ+Çö™².s›{ÑŠ†R‹7š6›«ÑÁEjˆ¾Xê/"9€åŒÂ®¥"ºÙòž‘â/Î/•m~à5´î@ßlZwHa4¬¬7˜‚’¶êDéAWwÅ6áÖ:˜Om­dº#dã ¶·VQÄý4ÆÅ}ɉÏoùøWceWã6}0R—ÙüÖwE7{zÎûn¶.6zHÓˆDæ‘&È]µ;cíi®p_‡%Šä®ªwý½,ƒ[!aùÍÆšMKÔ²+ ç£ñÛ>ûµŸ—‰Éç|¨MÆŠu 3×¢`=£°+n üU “Úâ @u¤ûËEv¹ÈEÞFŠ5·htn‡—mánn©T1p—ÎmóÀåæÄ-[Ýoöˆ®à/2]‡éé.<"ˆ¶ßÂ3·²ZwÅHåäZT¸Ë¢7nűj-®íˆ&»oßd3®‹ÀlDûM¦£[a‹€¹~1F¼–¡Sq4yõ€~óö¼[&ÌÜ2?B¦°…' _÷À…,õvÚ Û[ë :ÀøBþ[[B;œß+·ÌÖÑïZÀÄÂËSø*¡°¢C, b@Ù~ãYâO˜ÔíG¢ÔkÜ£É0E¯Ã¾Ì&À˜,?Ð=où†ü^œš[qÊrAùM+Û0‰*—÷W˳h͹fÜãa°ˆ–ð–ëÆrº+Éq.˜¾Doi…¹`ÕR.»/Ø@ãSÉýe]2³!Å™ë¼ä"8·—ÖKÞÁÊÇD{«+Ä=н‡ZR/“‚à:¯¥xy]tݲýY a³“çßëpòOû0®ˆF$‰aŒù·Í}6c‡ºÉ·xˆûy#šÙ/;h4±ñÇXú³º=ƒ*åkî`](ÕŒÐjvg¯½Ù²´nhÏtô/TÅí©1¬–ö)Cר$‚ø)ý¡Ï¶.k: ÇﮧÊ}Ë#š!ŒV%QQ¨ž\p…ªµÝ ˆ5’}L%ugô‹ ao• -•&c<œMA6á60!ø§Ž+d•=8}=ôk?©†^üÇY#xs©ÈÙkˆ'Ø´aB³º#ù]ž!.ÛcãÞ§ƒ€jüM{O"ç6 "h–î¯r# º•æ2HÂæâ£¬ f½ïI8¦Æ´Þ ¸ËGˆKu‰!æNš[~¿yVÈhfœ/¿¼„ü6gÑ’a¼·¬ãÑÌÑÈŽ›br7Ü•H <{¹‘ ®ƒI¡MøÒ¿rI7„ƒÝ–ªJ¯(2¡©[uKÖVÀÃ4ÈŠLTV½ƒ:ðö¥d29w‡ZH«q©hyF÷’o÷T°ù mðªÎ°»ÚšœV$>'zK7{8ˆt-˜èú•þ-/3–çŸ5Î.*ÀÍJÆÜeÚ½…$Ð¥E㈛XàÂOÛ¿18Zl©ï¡f1›?Ȳc;æpot 9®ÛÙ´•Fc»ÅÑYÃú‘Qh,°h(Ï0«zLz‡éÍøž¶»íã:’‰5¡Àìu 0|‘l…¸óÅÂ,îž_Œ±«*¢M°ê%þé2”¹ÝÒÀT{p ¬ÐsÅ?ë™+ã&qãít¿Bu¤tÉ(÷M«¹¢û‚òT=&?ÿÿû¦Q‰9õ2 †ïéBˆ›¬hà·€*ñJ $¤Ýœ÷‰ÙpoÐŒŠi¿P–°,’bM[Û†¾l_n¦ë´À`È«Dñrì€ñ«ÄÔ¶æ>›µ)L‹Õé²I€á]±²*÷îY±›?×7!¯Q‚kbcëßĺÓÑyÈET |Èj®Œ¸Xgê÷YÑaÄkäGíXZÒ-¶ç•Ê<.D9bt å7î[Z>N+ƒ¶“"©;æ™Õîk¹ ÷ô)¸Ã4±12ÿÉ…Êm\Ê5Î 'Z#CzÆ<â÷\!Î-’âñ5¦À9’EÆL3³2niØÑ”l!²›üþWEV3ìí+Í _¥ÇøÐE–x´A™ ÅÇsyʺéi›“ÅXÕØßlã-‹$×ѼÁ8°}=X!ù5ȧrÆvŒ6;«‹$Ö¥t¡|+ÈŽoþÓ,5…ýÎ.ç>€¯] ùK8i…JB.Žaa«uP›¦ ²ü/¯Íïe‚šuÛðo&Õrç o.ÖˆçÖ?d-{¾‚QéWC Ëý| –Ò ÏЭup j.x¿ s ƒß[Q T-ŒÉÈÒ žVj‘ú@AÙÆŽf¬aÕ‚$ÜEA0Ž7\“ÞóŠÆÒŸm®¾Ìü>;Ô\ú+ÑñÛÅÉdÎê*™”ónoÿaŒÑú"!¯hÊÑ3àòûÈrÀ¨ýòÿÂäßï¿ô÷GÈÖ9Ä‹ÿLþÍãýûýõÿîäÐÿ…Ñ¿ßé?Ø·¥³/þìÑ¿ßßþÿìèß¿±RCºGdhüø×ý«k¯…þóŒÆµÏ§ˆ ÞÏõŸ¿>_Ò]p?×þþ\ ¦ŸÏ埿>?qý|®ÿü£yÿ™ÿÔIèAÿãy¿9k÷Îl@ÞÎM¥ž[s—?^Ö"7åX,BSrÓùv‹ öYKve&2sWôúó›o”t^åÄ:³C€óϤJ¬¼g’§}¾\UDoöóÙIqæ¨%âíçñ @8‹px:k@1'WeY¯èùðdÂsA4˜UÞ¸Œ y^þ˜š³¶kDxÞódßsª›Ïñ«ú!;ÒR|?û<­ì'uF墨Ï'*x9áç:œ:Ʀšßy SÈ^ jÕ¹jµpÑÐŒÜt"Õ"&wmÐY>¹*¤4$*g³eù:ÞO¥s}¶¬) euˆ—sÕ3sB{õyÏ¢Ö F•¦ëc^8ý\ûsúÖ‚LøêƒÃ,jò;´äiá–5%‡~>|k çftlNZ¾¬XÁçÄ¿uã¬xä9CoKZî‹ÉDkr*=s,™“5cA‚}ŽÉyÚE•õÜd˜ýùžV³µ9è€Ué7>‹¦¦Šñù&ý¦âû«Ñ~~®½œ[ÍY‡Ì åËó›ÅŽ ž¾ª ŒqQù ó*`o…Ü/gèIsW±úMÌ´Ül?š7Œ´¨rL͹HsBÝø\AÙ2’ÍVƒAŽNF/ÿùrü³¶'/ž·ªã¢úx.*:T å›j¤^ˆPl‚ºHøðs4bu:CEÅù›EXgåá®;´ˆö-ËyÏ Ùsú–ê—tN‚X°¤æó´ahjzQ“ÚéÏ~ÖöؾIbØçÄËý\´+UçJ-úÎ -ý³tWô:,"}œëÐ-Ï+ãz%î{ÿl±å[PŽ>6þTz1|ŽM°› +T«Æ ø+gá6'À¯¹)¶ž÷Sˆ+çCˆŠ´ß!O¯a¼ jÎJ5?¯»bÆ¢XóãËΉ_üç1YÃŒ¤ÎœkªÒÊjäíÏåÕE ØD‰š‹ŠÊç °ˆVzvå„<“¤_Äg'=Cà\u¾Àä»bÉÝ„ª¨˜RßzÍùÍÓF¾:´j‰wÐsKöV e«AMáD5‡°hHîq#<ԥȡž4Bȼ |³©íëäЋhHF‡ÉÌ)¬ÌMý³¶ žƒ—¦c(Q7Î å ˜ò"W_^E#Œ·ÜuVÈ^îJ·(u“smâÉÅ`ÀuÐq¬s²UÖrè ³à=‡ŽYãkߔƿ¨ âxÞ¤ ­­ÎŒþ…dR‹nÙ¤¸¯ŠîÁùðeÃÉ–©Ó¡Lxì\«¶Ù,"}x 67Àé'ÿ”kOÓøŽ”“0¡Tq~³ç(Ý+Û¯=DãMFÏŸ…‡4èXÍ) ×Þ4Íe-æsË(UY€•€$pì­8vè*¦2;z^mé^¤#"Y¤Æ}pLŒÄ3Æ¢4йèôU­­FÖ¤RpϹÍ9J,ŠŽ€‹®`Q2Ä"ZŒ\^EÀf5ç‰Õó@S_å%©Ÿ*úM:ñ×gÃU™ýz5xÞO¨>4 û©³ø=ëP›°1pÉš’LJ,†ù›xèg?³ºer”yqð¡·óâx{)¨§êœËßZØ ¸°êxÀÄg>ѸDI‚aà1É%²}Ÿû9ôPC^öóg!·?Æ”9ÅLšuÀ7?¯r‘æ¦x(©úÒ$•ÆcŒÅÔtÉ>'>ëé\³ ›ù,et†£½mBª•Øî§rI>vè- ŸÓ·zô´]µ.>ž—þ¬övNâ]åkšÌ@Ü×´ûu5àXœWPž¨æÒ;ìã…»Rª»ˆ0šŠ?.D?Z÷ߤSûD8sõ°9ª^Õ#-bvKL'þÊ/û<- …EÕî8çm*d¼H‰7k¿ÔÙ2°&Ÿ»"ðÚ ø¶h?ÌÜè?»#K”él··öó¿ȽªXÃäºÃr<®½ÎY h\j·ä"ÌsW’® ¢MGQ³Ï®*ÛqÊÌè®ÚŽ–¯.O÷¨(¡suã$æ–_ ™€ZBcÒ²&PÔDrÈðÛ—y~Ìð ikìç=_Ê‘X“ª‚‹ÔŠ«cP¨Lý9éi³6L\T¿ü³Bp‘Š6¸ÎFàQmzBêUÄ–Š/0¦V¹^sb5¨é]I„IUm"Y¤¹#y¶»ðž*”:i²¬Ø„-ö‚ߪšXsSÈS¬T‹n¹êp->CµjE‘š‚^Óˆ‘έhýE‰ES\“æ-»Ö®ÞÎ ÁÞt³éô-2‘*îÉçŠÖ¶«VÔZxË”¶0Â(*|;_TÑtQÿÄñ¼Ck‘ôžZÎXÔY,é†v`R›ö7q©¨h³é¸Ù*­?åÙ=9šàeÅÁ¤˜BÓ=È?›fè«Q×¾èuàýìŠäSz`¹Ã¦õ²s0»šõ[ĨOK×Aißs¡sM^BÙšB—òÏ¢Åѹ°¸Ù[sA,Í[s¥`…ŠbRÄ{›Ú$€tô¬õ•Iârgù¶&§”Ö6M,hêÃÉ\‹ÑuåÉa2Ó5@[kª=BÑF¿Èå1:: ê8@W·L=:G!¦ Œèðî òeÉ‘BxÚ*Sï¤dûYµ¾B&5©ÓÁŠbÍÚ´p³uÐÕ丯j•^Î…¥£ÙUG²˜ T³“€I[Ë u¤ÓM¤ ¨ÉÓ=vtEŸ–è:ÅÓêΦ¾+1Gªš#£+Ú5ù"é8¹¹°Öѽà Fz†&èpÉòTéEK¹x5Ye& UuôcnÚ•¤щÙ¤å nsÊ͉•ä:Ü=˜1êå™+q³†§^TÊš¹f*ý}ö3Yý¿YÕ¹EHΪ6ÿPø(­U…ÚÕñô)d°H¿\è:ê˸“i!øý³CÒǃ~ÐoªVÔj”Û7ëIäòVü‘‰]4s‹zIŠBÑ\nt‡Î›}9¢ÄÈIê?±d]‡c ›uôâ$E¶KÇ ¢+¸Ë9Ri^ÊeÈâ>¨Öž§Bî@$ÈÚž7;ù•®ƒt˜ÖÛ4Ý[½•¢¬.¬Ñ•›zQzÝ0&|HëÙ\ëhæpX·Wf7iŽ,kjŒsÃ}ÄñÙ8XÓ)Ê<š¾Ù ù¥¡6R °^L¬#MMN!Ž/:¥.èõ²‹†î[ç¥öŸíq\ÁbÍgÈýð“>àèd›‘¿Ÿýd©·l[Å‚Âáa3ÊË//…:çdäÂ6ï•`.[Ò>´CöZ±8$QÄ0jO‚ä @"ü7’ât`Ð$qsYx¬(»RéEË%඘ñRúËù&`Þ)Txþ$þÆ$#°Þ¨PH¿j]ÃI@,‡Z !Üd·¬2˧eÕÅ\õ¦õ•M+Ô4Ž_L^P¾Éä.멈KÃäT÷s")®ïÊ¥vÕŠZ)x µ£”¤VG³‚"“~HÄçîì5ÂÞŠËK°G*Z[†§u/Ø.­6som©ÞôA¹ "¢lÁÊTKݪî8_±îcJÌgGì˜4¢ô½fZZU›‹’Ó4¼Í l_UíÌE“CÎ]™† !íÁÈ „7¥d.R†¼=P#¢Î表ˑ_äk‹à0k±I«ZÿDšY³ß¤™]RC/aqV(à© ©Ô®°¬juAª(fW^€û™¶Þ2š¤&|0£BaïAUcLqÂí»"N„†s@·†7d6ª6¡Çó²Ö<± Ê×v#t“k¦Cõ•á¹ =PòûÉIøèa­C PÉàU–—3¸2S­%»¬µy›Âá› ÷óãËÆüIMåSSBl´ûMnÙSѦæ>[Ö{ty½c«¡ÁPË"ÁI±ššÌ@ŽTU(•ë+µ»$nóðz6¹+KüG#MEímžÞãÏer òéPµ`4&F^E #™•ÁáŽÚ œ'/LB"òò&XpËKÛ-7󌻞xš¥œ‡–mŽL2üæU¬"ïµv5±oy 97†YͱT¾eKMà›Ç]©íƒà·dýMΫra.mE ¤4JS<¯çØ ÕÕgC¦3’"hµìm¥S,§ÝSà¢C¬çBƒ¡¢üÃ㙼ÐtÔKµÔêuA(‰õìm€,Õ¤H»eksÂ,ò¬­²h©Ëºy}…´c¶Kµ@h×.ªÎÕZcÇ­š ’·7~< .»è$Æ`-{I 𡬷0×Ô0&BD³++y‡Z¼LN Žî´{B?ŒÇÈxB÷V9ÊW4­¨,Ö†3ZɹN¯QvqøÈEÍŠ†-øPÎ-Ò—ÛÌíÝ+mÜSz´¶ezãùm‡^¤Î}XÓ[F’4Eƒ_ª*Ú&†¥…ªHñMª§µeõØ}ì5dG·#Ï[¦+Ýp¾Ò´¨ÏmkÖ A^Ð: ;6`$ïn¤§MI1‘½(¹hcõ@Qufó·[d‚?Û”+p%|Ï”"È +‡{MdémUôAZRW‰>ÆŒM4H–+Ý y^¼‰ìSIŽ”Û7µ}ƒÀúfx´&:·SjtÜhb•xâvODöª½˜7»8Ë€:ðL?F¨K†ùlØO™^-4mÔcÖcg’->tͰ  ¨@p òX•èIóÁ%â1z&‘M]•¬‹©½*·Á–ox û©lnž: %zϲ2Æö2'¹OTWû©‚ÑJ¬Ïh¨›‡C¤ÁÔt˸Mçj"pTm>1%’aÓ_5‡”00Þ2Q‰ü¬sÐg£âA-J3Æzë.-LdD ¡Én"a¥ñ6¬LÐø/ij‹b§8t(Ïg3™B«6Ü)×,ŒGqºªx&úÖ¾\ÖŽïgÕÓGÜ…áELjGÚÎ-bÍ»¬à]$# ­¦L…RkoWí¥½+É`¡Ðª6g솆1éÍFVo³Ö äë{S.Ã}Å•‰ƒ\/ƒm| á„ÜÛ¥*y×ªÍ @Ôe'„d&÷Bd/¡3ݸ֔í5odb:uÓô“%¦7v3ƒ¯)hGµ´ª,í‰Tö…óÖÊÕs@ooñ 15k–‘ª5ê¯@)t¶ElI{`Q ´lU³äø,]Ï †Q¥×Å…Û\Í‘L½Ë›T«c•¼l?š¤÷yá>ˆñ‹áUzš›ö4¯‚,íz• °zœµ¤Cro’¬I"˜7Ós˜(DÕ/Á ]‡AŒ¤Ð—”úAŒFåa6z ÃæR½}²ÚdÐEã„90ó²OäýKÿœ).ÖQOÍËÉÂD€4åWl>nÆGU†lÚa;ЮvÒ5 N <é‰g:õ¼z‚x?M8—Ù®I×ö º†=YmùŒ ’3N^¢£¾„¬ióG‡’hq"Ççi§Õ)±ï¶˜&R?¶†°$¥×\•ždpN¶Ïâxš·'õuEà6bC0,F›É©î¼®˜vÅ,}bG¶ë:°á9¥è$Të®È„²j#²#ëh·°zQÅ4.él­ÌSÈ3Ô—-LÚö— +uÜž„–¢E(z4gFh<ëécå€î’»DÜí÷QÔ®6Y÷Å}g  Rí¨D§CWÃö²é<:CUÑÒTX35ÌêmšX°ôZ÷iÌPîͺ¦‘F @KZKÃ÷öX¿«Ã©Ôi®`«“þh¬l4 "E«NP(52ÞÉj½¾L ìÞܰL¥× î£âÞEHF{&O³*V·r4¨SNÍøB¡¸£\—¢­f';Qþ9ý=Ykõ(Žÿiì&¹šé³“¸Wikð´Ñ™¬ìgs…xbØN_jìÎ ÌH·¢E iÛ2ã!Ÿe€ˆS”Xü¨ÃâÒ‹²¯¸’›ý¦prº¾xÁ¶}ìÑûºÃt4›6lqye(ÍåÞN›¢`©å‹½ûJuÙ6–:ªüo) ‚yÓqÜs{ºM³ÈI­˜I§€ŒÔæå£ ¸×†7ºÃÆ“EüvÅ¢þõrV1lž&ÈŽL ›qAqBU¤Óƒ®Lâ…¡ºÏÇ+Sè¹åCÞÈ„ÀI—oaîx‰³ÿÉy“úÃ5•s ÿÉ‘½_èïO~•áaóów¥$#{ÿÀ½__þ/o¯ýµ,Rÿä¸Þ¯?ôì™â¹5‹à¾NëíêžñËÿ!#`ÿþ§y+‹á/޶l|û)v›(ö¸—Ò§cðá©’¤ œ79 IϞȧŒêÒ[ƒ)£ù@¶7=+C¹#ȸ;£Šº~ó%¸Ûäãs âQcëˆ*<‘ïtð› Œ-ùgÜõ°©tïÚEM1»•®˜ö/ùz¦AïH?WffZpónÙè3½ÁYø’‚€J$Él³ßևƆB9&V´}?´`u%H•ÎÚ;: ³zú²3.A¦y~skïiXg—[iGîŠu£g{äUfÀ¸8OÛ5X¥ë “ð°MÊú¨xÊ~Àhmuˆ*2EÏÑ´Ù8oá,‚ }CÎó´†­¼”±{âIÒæ|3ƒŒTvØï%,ž÷4tøM`MEއ ÈÅ´a±p?§ú/"}a+èü¦gr¨Wx⻫TîÌáêÍoó·É3¬`QJt^%™íCóf£Ü^ˆüx;·/r^¥¨‚åÓ!d’¨ÃIÈ>Òƒ Fvœã¥Sc\wpt‡efó[`Ë®dã↖—žIõdM¶sÆøôMM`ßüÿ<Ð4‰"Þ2%½Â‰·±ÞˆÊXÛ2Ëy•Óâbem8`Å›ôÀES®O@é4yÁà=«/ätt”8Žá:‹`XÙ cN=Xj-l Û V¨º½…§Õ{¨øôY§"©Ñ}pÎ Ÿ›°"z幂–â¿í bRgP¸0~w œµuJ'<мäÞ÷úT¼uà«LïÖyqåÚ™ªÔK¿b g´CÍ:0Öܺ/‚yÖÖ¤)ß à9}&eght§K‘‹4â4mÁèÖÊÁ¯^$ðÙ£ø½Ò± ­|ñ‚3Rñ;¯2#‚ƒµ—-˜ÉÐÁÚf—Ò§…o>+Þ3ù Q”º½–Hi›Ç0b Vmî-¼gö) /¥çü¦•<Àöy>ñÆ… ߨIÔ‡w~³è7é”w>'yû‘ý=éÚßXR’ѳçC­óÔ‘/{®}3i-\£ÜAÄØ†;Ð;¨4%Ê K?͈²È™\ªûå0œ2©×°î$y|¡ÙäØ <·Ý!ŽïÃSiŠ5““!ÌšÉ#)8ñóþaW§9-×Qc¨G<Ò³¶#ÒÙ—ØDÏ-Ø„®‡z.8®Õ|˽g…º ™‚W¹,v. €ÆØ4°èÄoG¸É;Lwtp4ûòntyV$‹$ø}ˆÑ[·(­ÉˆŸçf±•££möfs5©{í|8vÂŽªÒwø@ÓPuâ틳ñ7èè’A—ˆ÷m…KÍÞ¸ûR#Ä—ó "Æîqr:Óu øýò+ÑÛgÝ.„¸´3 hÛ}ÁHõ}…Qá YË/VI¦µ¶U\øt•àÄoíµ[˜ÖÎ;,uó©®´|Å) üöå€*ÓTk èÀˆØƒ~þs Çã!ŽÍóÈ®ºv6Lš<*GÓÄ;qW²i+2jgâ)`©§†|»ºŽ£ËjŒ;ìgsj>¤AæWæF°Þ¸ŽhRuz «^皀ï#¡€®ùOmæD*·dWú!scª–†êÓôI—]Ò hî­Ü²mvߪEbÌÂ×Áue ÌjR_¸äÙ6¦½}kѵ?¯²#‡>mZ5Àˆ‹´È±TËWà S\ô*?Ç®ý¸³T^V_Ô‚Ñ¡¾3º(}¿ª©€~h±U(0ã—­ áäL>U‡ö3ùxGÂÁ¶w(’Ÿ}lÕWTèvnDò§ç‚”]éh!F O¶l¯‚˜”ÅCDd1 K¥ÒJP`·Í&;ÔÝ—Gú)“©ޏP·¸Æ¥µÕ'Rz ó>‚Í6D4r:¦ÓÄ®£[K dM°…r¤¢5t Dgºsj0œ4 IÊè¶»+ a—‹þ¼Ý7 Ѷ¿0cÉ ¤ªºÒ.ëÒÌU×;€c2Mb¾Q;tbQx­5œPØî÷“6ÛN õ‰+Ò‚,•Ä–'3Dµ°Zi+J`¢³LÑ”„j®ÕçŒÓ¡6abß ­É)7†èÇLî³)sMŽÚÑÍ^ZVEÌxd‡ºqQQ.œIáÚ ›qmÍRS½¬ùÀD¸H³ù˜vZøí@¹Èyï'þ¦\&Ÿ¦&Š›mDeN LH¢ñÑoŽ„¦ÆìØø©mƒ« X Ö“$œ8"¿ZZN¼3¿qm-l&XØçj¤3 \ƸRiXì¶[FQê±®3êuX•žzné¤h%O‹»bžÊ6³xŽÈ Yƒß‚ùçð¶^²·ýN"“ZÝÆ ¬¢ysa‰sëååðCŹÄ&cy­ƒ"ã즆RéËA£§mÞpØøTä"ùDñHz†èŠãC”ÑÍ{y±˜VÃt)¨Bž×& ¯ „℈‹if@^¦³%ÖD¦ŠñM˜½f1íŠq ©ïŒqÂLŽÕtxÏ¥®ù`Sãx¸â>B ‹O¢‹dœ¼öç ê~B8Ù­‹mŸ³h{ Y—;dS4%I`ÄR¡Œª¸ð~6/ÃuP麈fÖ À#-<žÝ RlryR”Ö_[.«šž_Á¡15ݲíð7ב²¶ž7kzlB¼ñt)%˜uô%3}ë¹]d0æðáKÌàh9‚cº²ÜÏàV8·Õët4Uêàš˜ØðBâÂ&Ÿó Èé3€™dÅh,Ë€3t«E2ݵ˜ä1FÆ–zÑ~9—ÆéÚÜ›ÓhBntD.ω©µÄI&µú¼I ò§ë® ›Š&0°{…˜áµjÓ±êekKõlmGŸi÷Íek2˜É£T€cVòá¿”5]ÛìRGÑŸíÛÉóŒüýŠ =X0i3{‹¸‰ê¼GéÞr‚MÖ³°}IÜ€ñ-QÌF…Š¿µÑåº+‰(™Ó¦µÑæJèWŠkpráÙ•£¸ÍÉ*Ppn›+õQޤêcÌùÙ…Ô¨´Ðu…h@­ö9sÛÇ#CQæ›-cR‰§)íNDˆß½ZutÔÅ™oŒã:LfNŸ"1Ÿ¢àwTÕl\Hïj0˜Ó®Ãü››c¼Éóž€ :b!Ä@@¬ ¤fñP€Å2Zx¨{u=i¢ d—Þ!ÄåÒ’m¶˜ñ¾SGŠ˯pEÂô½8_“ØÂý*ú€wØºÙØrd¥\6ã}ßȼýðWòÔ´ÎQ’‘ÿ—ÓÓ”¨9œ´-ëdÉ2 `Õ­êÅ¥\“…P}*Çe†³EiÐx1XoêWhª‚¿FdG6¿Íf¥º½iÇN´šÛkË„Ú5çp3Œh 5'¯ÑQß\éBõnmˆ4fV(%&´ÉŒÅñÔjÞ5•Æf§w ?f\Õž]‡.Rsš6Ql§w¾0ï­®°B\ü€1s·Žô\Ö·Lc’  (“pkâ¡`©;é&(ÈöÈ0ö¦ý‚aáî*BWÈÁzüк8úr ëöÍ-53²5!OÊ9hoå€1¶zÏlÄKÓ•¨Xêlê«t@ñú u¡¤Ûþƒ´›Ä¢ %G ?Mª5cŠ©GsnLü»c`¯î.’hIÅۄɹ&o&$ìâšÄÛ®‘C@OBÀ§¶Ä?aΛ}H#ëD 5RÄ<êNK¢öÙìÄ-‚F†¦(ÿ(iP7ùô!äTÏnZš§±:¿| ¶ …¿Årå¸ Ð—hÀÓÚ(ŠÆïÀŠÆ›ã`ÜÙ½"ýaôbóv&‡vÆA#¢Oº-õ¬ä¨…-† Ħs›œ¼@šGÕ§¢]bÊïеå¨Óà m—'òßòÎrtÙá*øT×O °A‡2ÚüÓHÍ43ë™ácKÂÉ¡g’QÖzØÑm/òÛœ@‘Ý ‡P OŒǗK¤­‰‘‹JA´ ÌzIx?Mõ”bÍí|j=—Mr Ñ/^[Zq¶Ï”$4ë².!çw Y°êüøÀ-çÐÛüm.7wËô*é*`ÝÁˆà˜åÅw³kW ^Í]\>«¡SÁ§kæÚ/hµH‚c’".k®K#F ògÖâ +n/‚½íSË#rV(OÚ·²K'‚õKyo+þ—qÎÕ=‹ÁH)ÎX@9@'­Ÿ—ŒTõ+ÈR-6—šJb639#ù„=j£È¯¹¨x"ž¯´ƒØ6?ŽH«Æ)dŠPòÑ£DK*ŽD*TuF%§Úö=i2‡˜·©éjIäÒª0Z„¡‘G©w³IüĈ•›ìºŸ©235ÏF8æ ÜÖÔÌ6ÞÄ7Y!ØÓUà;ê/…çËKåEWºAÈ&CÒ oãç$ܹ“púlWhЛx£ÐnÜåCZ¯5C@)÷×®0Œh.áµnçh¤ '–ÞRž1Íæ¢ÜÞn¹ãÔYól "ŠSJhWúåÂÂ7—×?F´VóÀóöÈÛÿԑد3VÉÑ,è¨aø1MÛ «G»ÔÄqYQÖêÙüöúåÚ0äq•¯‰xü:ÿ;ª#5½e|ú¶ ®púÞõ:PFwû‘ˆN—®43 ‘ÔŠÛ%À([Î>…œ™ž¦ÚFqßðêÙ¾¥ÆD¿ãYn¿{ßYÝ´ô¸åȺU!ªÙz*6 Ï‘ÈÞ¯(RþY\¸‚ªÒÅ5±I‚º«ô+;W›ý…QêLÞ¿BYGö«°+'C7ét,OÙ0j‡^º=P*·©~dÆ‹·ñ³È¨éDp÷ñÖc—·[n³ „=y¶ÍžFe1×Lß„!wOe›u[T8_Qˆá5kÊ"oß}Z yÞäe8ëï gijwã@[“ž 5ºÉéHcÑ¥2£#Q¡nÀðw2Î#KÑènÜG”é«ë,m-<<ÔÍñ[¶ÔÆåEPc1 /OŠçXÛé½ ï¤Ë›4%©¹Ïþÿ±÷nɲ#9²åTjÝB{’œSÕü{ 0ßY¶à])çJHÉýIɾéNÍðP(1O—,uÛsfqþJ…M5{ŠAìWžEº‡#„pVÏã¥ê“>Ê<šµP"ª9Ò?fç÷9r§~ùÿÀ\Üï¿ô÷‡¬®ðg ÿŒÛÿƒq¿?ý_~Ãñu~4î÷_ú7^Û0ÝÃølÜïOÿ‡ãþéõïcdéô¾ÿú>½)ßÿýŸ?o þb•nú¯¿ðÿþ‹Ç]>áÿþ—¿0¸ã×_Ø¿ÿÅk­Ÿ¿ð¯¿øÿ?×?ö¿}“òÒÛÎÁÿós>í ü/µ‚ª]gèzéòÈM§ï¯ýècàöïsû?½òµVA›`þÿþ]C½þbá.qpògˆ!Æg4ÐÞü9¯+Å 9ùíÝã§N¬µ½oŒ?>ÑËöÞ¡cxæPëCiDž ¬öÖh~9«(íuÚ/ö‚µ÷ Õÿ3ŠÝ_û@Áv]©î*~”–ÿæ V&=çcdÏÈÙÞ—ïìjX*çScÝ­’'l¼>œ¾ð'"³î¶æo剺>ýæóάdí>¥,'Þ°>T9òL{ÛÛó,k÷…È>|íãa5oͲdtVÚÖ½ƒª[¾v«PŸîÚ&’4¦¯½ƒ®~Â5öœâxã ©qá„NÖÝvѸaõÀ”é­tW xáÃ~i€éŸØîËf߬—Šì¯çýƒÎçGáÝe¸ÛÝ}‚hfÁ„A¬_{Äà §®G‘ÔÒ K­¯Uã߉ҮG5õ¬É®=4³é´ëJ :éYkáÕXÄŠ®N¯ì3[E3›ÎÔ¬‰Ž=c- ÙYé Ò¿¾VvèÌàͤfeÛ ¢ý¢» “Šç3¦B¢—ª•Mt?k•ëÚMPµ’ê"l°éd2"ºÛAÒ±‡Ÿ|€û:1ôÞJßãáŽ2§“Í«³­Y¿ø™qòH3TLh'”ÝŽ‰gE-Úì–¥Î|ý×òi›\ð>ÛË_+qNâ/˜/ËC§ø=4-ÑïLw߈Ç“bqŸÈ*¸ã{6na-ŸØþ§Z¶OõÑ–Zwet´Ô÷H-˜,5͉úDPøqÇsžÜJóŸwjMJxÁ›³#“m0ÿÙ’Òý¯Aöö4©v¥lÆ·’Ó;•pÖs ¥%×Ñ#à>‹áëé“ïS¶ÌøŒÚÖ‰cÛo>©ÁØ"jƒ9ø›ÜÏž;¢¦J ò7aø,ZØÖli˜µ…¾Nz³íøž:×îõîJ½ë ÝW8[ *ÂcÉ Ó¾SæìJc|àÃ]8ÉGë|Þà¼Þ§(’ºBLã,/[P˜!X_{eºw물JkÑ0*?Ë:¿Þ -|K}Ö»-ÂÐò¡“¤Ã»yåçÝ® ¹ãÍ&x.Hoe„ë|²NDKNÅ“]¾¹«¡ãÀ±I~žÐW È`l¥GÎtbÀ zÚŠ¾¾å¾ì‰+É<1$•´W‹€L“]82~3 ~µ=X>ÜŠÐg•Óâxµ˜Ásëj@ùó+%ùð÷ ¡‘>DööÙòp…ºcR§¢ˆÙ!™tËR(¥¨fì¸ FœŒ0”„Ÿeºe¤4£ý¬ë¼¦ƒ„oE‰’™áÒYœo@FÝfc“6RK½»7(­í‘uœNg-‚˜dŒû›†+(¼ÏÍ*9½ å+‚ÐÔÔ<91’ÁÐX&Æj\¼#c Õµ‡0Õ  Õ·ú'Ø ] c©—?'£j;WÈœ«0 Ø -TÀÈÆïјä\g ¦êù=KˆU²ÀøVèäÉV\Æ9ni½S¶<#z£ó¹ýÊÉ3¼O"pÊJÄ&õÍ+ÇW&ºÃ؇·Kh-Âí‹@©Çü ›ï]bÏ[Òßœ!wI–ú =¸“®nÑ›4®0ÖìjpÄ“-ØéÌííksr„~-üíƒQØÇQ±·£;ûlƒ½i€¶‡Á’훑´‘Gš!ýqù+PsÇñEߌax!„ Faêlû¤„s†+N¨RßA“:6c{ ŽÁMZ{ì®$iL8Ø.P^Vô$ÌØÌx6+Ŭ< ߌAÏ¡Mͨ0 |Ÿ5Ço?ãÄpkêJ Õç£B)ƒq&mvxµ¶œ¡gsÄí¬øŽ§ †C#B ¿•r''m%F°0H¦…§#¸Q8îkY;‰}(ƒYdTÚ8ïÉÖ\e›Wºw÷i¶Yê=/€Buµ°Ðä_‹0jrx×oŠ JϹAlÚ`6ÚØjË\wèé[Ùù ™„ œXªÕ\•X`¦#W²šoÔȯÌ]±Õl©ØkKÐγmabô¼·Ç&g»×¯#È©—jègœ°¬fÏÔÎ,™ùV¶ßšÂæÇ¾ ‘Úò„k¾1Ò•¼C‹reW·ÿ&ÍT3(“d´ˆ1¯¹Þ‘X0n"f¼æ‡÷\¾ßD³Äñ.€Â®Eè3A-f6‘»z7ŒÈŽ. ~C#¸|úð¤«[Ü—um̘ð!;Ù%±}E«‡£ñKG¶fÛÃìÐu´'õ;/£­ù‰MÀHI½®aAöÙŠ³°5dÉ€Ü)üø¤{ìËÞtÇ?á"‰MÑcb5…Í»³”󥘴‡öÌ&Z¾­ép¢¿Š/gؼ¶‰²H*øx5èi }ª^ (+pÁ”DÕwë½Ý ë+¯I»¾åE‰=K—qÙ}ÃŒŸ&Õî¬OÝΧú[æ¯yÁçf Ú`´™]‡`a´C¡×ÈùŠæ?  tñ7%ÃÁa³å”™3<Áv•&3w| $öø+[¹ÌáÎÄç7Nž§TnÑg+!> £…ÍÒÁ·I8Ø[Mz2–^^”èáj>W(£†ËéPú~ |FoVd ŒWªó›¶IÛú¸ø( 89•* s dæMC0ØRëQ°À®Ñ^gyÊ|Çn–vA1”™Í¯).OIÊ@ìçu\“(|¿(%̘‹²*Õ‘’öN³Ž-ÝLaóýNéÁ†‘¶É fÇ °|sï! Õ¯o½$"ÅÑÂ_Ѷƥ"¡vܼÝrl¼…‹L:GݼQ¢hºˆ ÀÚ–Ð’N:Óòlye¹¿Ž„ƒfWj5¢Z$ù›@ʉE¨§3=’ìÊêH=Æg$ÄœóªnO È]C§Z¤ýÿ¬¾òýŠ©ï¯ÞAöËäªq“z¨¿â•R;7µ5JÂN™÷ƒ'{çŸD-Q}§ªôëi-38îP$ #¸ ÏaˆòÅùgô-c·jÍæ,ZJ’Í«û2u&žcjÙV$˜™°ÿ/m¢û¡­‰ªª—1!À#<‚Í…%·š8ÜØN™Öû¯N Êíwá™útöYa£˜O±8ƒòÊL Eh‚ôªç+Œƒ=›Eû-œ$ÏûFw2ÕL îW•„Ë6=g½aÁ˜N7ò,òÞúò¬ÒÒM­‰~L¨1ø‘[dÞ˜e }KˆËx­ÐZµÄªòPĸùCd‡vg7í¾êªGûc5*<ó‡ÊW8=˜Iz`çS€YÎkÖDÓž¸ e$É鯤ò²Ýt>¥Pz'!1* q'É—•ÈWøJG¹|])Qvc5LÄ{òJøˆ¢!«Î„£ûÖBFãVàgüV¹v í(Ö|£LNÚË´Zô–5öYCOïbU õ R©èÙ*Ôx²¥ŠÊ)IùèkÉjîª4‘‹š…¨§jªbS°ŸiÄø„ç8A0"ã`bÖÓÚ­=QG¢ZäÖý`Êô› ›4;$ö÷7Ò*k’Ev¾'ŸÑ¬+}Ÿ^ Jª$3¨§¬Ùpg’QÕäžwCÄ,Á¢¥DQ#—¹µjC#¬e Ž‚ v/ ÓÉE\žº£‡!½hjf·¬j÷;(¾Åm¢&;æòHýŠÛ¹jÎYºƒ¥Ç>¢£3¤'¹<.¾|"é7ód¦‡’Æ™g›»*_’™¡ÈY]UÃ[ÐÛk¶#×®J–#Ù¾­iß{{0 ß,Z¤Fhuѱ߬.–\T„ÿý¿}­JE|½”Ë9oà`©¾IÒrTb,ð‰a@¿ w»µè m°žC/­.%Æùe›sÇoÅÊŠ]b[q‹ªµÏ¦Ý£IUvÅWFÕ‹Õ¯žôØ?{ ŸO9WnR>„ÎU¨:…Qv®¹¾ÉsZÀ­Ê)¼•/dk«#IY Q;18N6ÿª„wÏh'[ÕÐIf —4¾ÝzR¼Bª’ÿ,ÇÂmA„ ¦*~£%ÚŒy™0c ›5r™zßí­äuï­Åíw÷×#bô¦¯M¸=í=ØS!yS‰5â ) °¾G2C!l •LÆj^…<_Á@æÇ‹üwÜÐoºë7±FþPZ´„kn´™Eåe„SïÆ!zÙ3˜G퀛‚ˆ /,Bñ²Š¾ƒv9 ú‚d'Fïs Ëpô¦ä”p°û›tÝîä&µÏRd›§2Ü¡ù•êu‡šTˆc%·H;-µÄ‰Î-ˆ¸ÓæÐ­XI‰ÅÔpkcŽÉE#W˜ÁÉ' ßîVe¹Y…¤ò%‰[ÙjfÔҰ͌݋Iù§|î'©ÌÜyiË7Q©¨Eã-I.ÖH÷®øClÆóºà®¡"Ú½#„c°Íý`0PÁ#¢!.Ç^¦ìƒÛŒ¹ÃÌI7}—Š0}×Ú’»ê!åKqü\82-‰ZŸ\ÈömN³ Äg~‚†sP(m bó €¬ y^Ý61ªŽDÅ´ŒÌ¸‹Ë'qߧôÞ7—IÞÅn‚¿¿¦;[fÖˆ˜Ø<Ç"nfîŽ4îÛºœ@‰@ÊLlu«R*=÷x edRktJpãmq_ÆD<µ­±¥V· ‹Rq~Yæ1'²?AÜbè2´¿±å(ÇiîJE`î>®)ï­{¯ô›”P46‚Alù²Ôm‹R2YÌ-5óRÓ6þÝ|V“\pƒ$BÊ3/T*py‚·´)¨„¢N jâù¥]JØx n3w–, µÞûÅXsË<²Àõ U޼2Jb,ß$ò†Òàˆq·ÊQi7·hÏV ¡Ðîn÷Åì)¸ÛO¹‘;ðòzÙ»eXÇ%ïÅü„ÍH)¹str„|0¹Ž;˜Gž³Y9#i¨yöPê¼ÿ“‹L[ƒƒímÉ9¿O¨ž h+rmYÑ©í*æùœ ‰¨ÞçÊ §BXB¸Û÷’µÈE‰Rô­Îüx‘ÊŒ1ìLGÏ•s»§˜¬R²eâN¾{Æ,ë6ëJž %ê)FRw&É má~:HÍ*ŠéÚÊ;°xµjèÌ«#‘TáÒ —‡ÁQá–¯äMÓ§»SÛe‘’¼àÙSYë£i¹ËÑñ´µ|m7ñ™E%áÔ9Ú"Â`$@™eTB!3^|… gH¹}vf|°Ì|Ðïs ÿä|VýòÿÁÉßéïOàm·I^ýœ\æ?prò÷Çÿ˯8¾îÏONþþKÿÆ{[)çõOŸœüýéÿ×NNþ+5M&©5ëØú¯ÿfëõÏ5YXŸw«öçþÏߟ<ôùÜþùëóaåÌý¹ÿó×çs¬Lkîÿüw&·º"”֮ئÿãÁÆq¥µoý¥¹ÆÍÔ?ZŸ+ý+cuáh+Öý+Suá4Úú¿7ÔøÏüil/ShùOJþù¢™®•<3ªÒ†=ú Ì±T ²[§®ØRŒžØzƒhýfY[÷†¥›Ð:a𥵒®:1¾òóc¯ßÐu‚¥™ üúð çJµƺ¡Ð-Íhïö›ç‡Õ É­@ÍÊÏþþ9›vDáÃâË7!ø,ê;mLˆØJÓÝ’oiF Zr–Œ×Úþüÿõ›ðVšqQו'è¸vÂÏ%ë7Ϭ¼T{öµGÔ¿åçéÛ ¦¨õáz+cÂlk»nˆOÖ[±å»‡*ÝÞ6*ð_׺»òL×¹y^Û&ôµÆ2o£Pz_gm=çÉSZÖË_üfqÃ~:¸îví¾Ný@¥j³~ó.ýq0è8tC8צ†¯m&óßQ:ÖNh~ÊN¼m}¸B–A˜ÐÚšÅ×ö,I­ª25çÝþœƒö³Áµk”n Ìz+gêSªµX®­yæÖå²±­ ©–‘úIÂÖ•´¬â»~ó5Ê4®ò:¼'®¸nènoχ¡½ËgÕ­ûù¤N¿uêôå;¯¼¬(ÐÚ œ¾2­€³Û™x¯#Ø×Ýv€`J5Ö†í[¸!S¼Zw{6@¬—ýø69“àÒ­Zº>„+›ÕåÖמ´ uÊŠ®ƒq¹Õì¸B}¹¿ÖÚ_GP'û–í³“}Ÿ¹T› ´¼Ã‰·­EXlí[8‚÷ªý¯ç„»íV-µG峎ôµMxÇwMàÊ’³šgIjy^3ƒ,X5rÏÚ tìõ!¾ÏÚݹN2oý o²ÇÖ«Ã6õÉ¥Yžw9ÑD^Ûd­-Û¾f”öõœ'í`½Ïe¤úCËW,vµ€mßÚ·ýn±Eãn0N´wù•æ¦Þg}ý}âòµæn™&r-#5ÜšÀËnVѳãööYž|ý&œ•ie˜µ|p·£»[n@O´àÛ„Mêt§QÍŠ_Û·'f[ŠU€–ƒØ¤Ù®ƒDA~ñç$†•é”îÞ®4¼¹H°Ô¦Ýbá$X“âÞþVUñ,= í†É'­…§¯µBÕÚ '`^ ¸-B1ðbÝmcL­cOÉL´½OxÙˆþ¬âIÑY›úq›wÛ¦¿OtËsXJ2îäQ,ü¨”6#k­ßKà`µ7À1Ř?†÷ñqP„HÄpc ›º»¥^1ع³:ìDôí:Ê‘ºÍ5üÓ÷êQ*$3?Nçú©×ã1çÙÍzC¼Ï˜"ËQŒº¿rØ&íõ­!&Õ|ßÉpa‘(bß<„¥„xzr:ÐÑY¬cÖä¼ÛáÛ$Íži7»¯¾IQ—Ö íº#¿;ÉÑuš¯°îVyöÉÛ¶dF¡^ù¸I=µx̼=÷AŠù¨ÚÏÉ6 FÒ7ë9/ÇÁA+~e{膊îÏg3V•-ljGÐÍ›Zc:nV³ZGFòLÃa–"§#p—zÖoON!Xš—gè7n›‚l;ÖÖšrÌDkì_ƒh1ˆ˜ y`›˜^fr·uúûlß àËJóÃÛ€±¶¶æíè$$PexTÃH„çHƒšWð«€›àµiËÇÈïÏ£Ü=rWôFº5îX|Ë€UMGíõë-¿Òg«©ÌõlÜ1œÚ!HÚŠµE ÙÕtÿ91C7´Ó²HÀ5mÃÚ+ƒº¼T„Ç^U’°p/~ÀÉînã>„ T÷Ș—¯¾Q/;Û åqóF€òXpÀÚ T™q²á6 -ÌÛcÅBU/øÚj“ªÌ—¡í›žg>d‚1ž‹P^ã“2¾ž|eÃS2ŒÅ!ƒš9·cÕ&Õ½€^Ë“[9㼡áX͸ðFY^³¯ôÑ/)kº°,£ñ&xëeþµôVÜtj*¶žKTã®:» q™Y^_„AÞaœŽ½#ÆñËt5[xëûå *”kzÀ}QêUoG¸oŠã{uóF+ݳÜ!³ }fŸ…1úÚL1þÆlyÝÐáñÃp˜µBJ×}Ù ”H‹ÞC$uo4 –Ï‹£½¡y3²­•3 àî¥vò+ÍÄ*,GÂØd*î›pE‘‰Êª3@lH÷ê冑:å׎<2&°áŠŠb;LAµÈñ-G*¾5bŒw@ztåb8íu¸”zÊŒã'ÀÀ^ÜgcA¶ ¯¯PSñzÙ+ªé$ûe9¯â[°}îËØHµ¹)peu椭ܡxÝbê•ì TAôãN«$«Pé89×efät?+÷Õ黯cÝ¡…Õ æX^B$èÓ9ª¨23*V z .Œ½YI—Ñ·VÝ¡N0Øu´¨¯@8Yô䨤zÄØIÍ_ '_/„ˆýB"Öo¶‡ÀeQïŠR lPñ¥Vã¨nfÞ>0"|(‡Ž¬$À SÕ[;â„¶QX ËNka…º3Fǘºøî£.-˳oûM‚KÝ-3†ÑJ .Öÿ¼«!ÚæÝ >Äò¨f1à•]¾‡HÀVßš‰»rÛÿý_¯,"âaªù•ó6•þÊËzó]…ÎûÐnð‚åñ¯¥YÒym€œr;ØÐÐ-¿@N4o·ç‚¤¶°²È. Æ.òIñÛæ™Î„& \üJÀû–ís|öÐPÙæA¦Ê•6ªéTç>“VÖòŸmd褜θè® ”JÖÚùá]Þâ157}?쾩)ˆn‡XÁäv&ÔM-Š«:åìj²é%fj˜¤'Ñ,¾Tw!ªñÆ—Át“‡—l|qÏKªð÷‰NŠ4—'Š„ ‰â2‘ssm¬ÉڷÄCœ›NFj8Ÿi0:YPn‰½}<Ť°ùñªj#ré2Ñ—ƒ ˆÚMïù ^ÈôÌu`ŽäíÙ\ NÜÀZwñÜW¨¾Þg2( µc*ÝBƒ Ú˼¬¥ vÂªª`~d%µîÞþ"ÈÝ [mÐ8UËt„ªc—ÓíÊXt‡/Ä0¤€èd¢z@bf’$CéµvÅ)£Èxw²BbQôìø›kù<@cêÇÐ[ÁçU3ð¨5‡.±bQo¸¹c÷qd‰y>^_Y¤KX[ïX_¹œÚPò¨Þ^E-ÿ¯ à0G¢mNþvrü¦¨ÍDF”‘"µôâM-‰‘úyŸÅ=/8€%Hê$wFíºž“ÓöVÜÔr¹K¿dU#Çû`MÇ5g§„¸Ø`„p T²V‹üÛYœ†"|¤ˆÇo¨Ðs:ÈÚæD¤/»Ä™‘âX»ZR]½ÇPh÷ú‡7EŒ—£Í˨ GR|KuûÇAÏJ=“õÞ›ï¶9"Jü[—âžPoâ&±áõ•šÏ®ˆƒ¶…­a…¼é¬ ì”—Ëa”ÚÞºdÅâh*bF«‡Í$óûzs#Í¿2PÅ—$w§s~Q>¡¾[|¶ë¼3RXÜjöJ§¬¸œqç‚O |ˆ õi¾ƒÝž`WL¿B¨«µh²¦²ª(%Øøâa›%°ÑP6t‚ÔP‰&£ÑLƒ¼ÃsÙ HˆEÄ{ÈéÔ¹‡n@iá f ±h½õ}<˜b–¬(Tõ±šæ¨VNûúçD˜(Á^£&žKEßÞôÇ] óΎç)—”=œ+À*’<%ί`ÇýñlbeæŠ(•2Ú Ìšî"¹ýg*¾E! µ-“*½¦ÜHæ|CÓ™†nŒO ÚÕâ~T›{bûÌ‚ˆêÊ•ðGh‘ƒ¬¯7¦uä1Þ~ʰêåJ ñ}VÉäcÏ“3ίè±`Æù«7š\ˆ]¦coèÚ(,¡vR¼àÞWƒ-A¨Ž÷1ݵIã%×ËÆ4Õ‰[Ìï›^ðXwpõ½ cœá‘À`´œ|ª-·UïMH¡pêFhPg2ø'Õs³CȺ|[¶5ëãdA²õ 6+) ÿMÈÐKñì ™G«P馆QÅ€œÈF¼B­€ÖVC7*ºÈ4P‚cÚ~ND„›P·oM¤¯o0â,µ8+¤s M>—äÞ¶¶Ú‡Q*äÙîÇˆÕ ©PqtÆ4¢d^“9$ÆÒýõ•*¾ÉD´¹†Ø=$)º¡Z{«¡­¡]{=G¼ì3J ]ͬaæúx˜Õ’ãP¼ôGc fÜWfŠ388T· ÿBíÆûmîQGf`‘8:*P·kçèèæyÞe…½3:¼#¤$0bš[–J<)iãbÇÖªu<)öv D‡¿¬Ö¶éäÖšªƒÑ”;§ vì}÷ò¥™qLƒºñLX XÍ7$U¿Ý â¾­=Ù°®Gû,…wL£ÐN”D¸ëp“z£²Ç†Ä2h!ÖK[S+ÔÀýãF…â,Ç?9SU?|›îÀŸvüõ‡þþÌÜu®–Yºm„ŒéüŽ:þúðùõêÛ3«rÐñ×ú7ÞY5ðö˜ô‹ÏdÿÔwÆÿ¿vÌñ?âOË뤿8Ú¶Ž/¬×:]Ä£?à$êR~u×}beõ1GêLšë¼#ˆ;KuUÁ –YêíÃ(qŒê|b|ÜéôëÔô  uCj<âõ–3¤&Çõµ£&Õ›u·C»GpS§Q4[®Î=‹ì ÿêÝV9éŒØëÜm½§œ×úZåg"°^¶0¤“ܵ¡xP~beëÃPJ8:Å´½!ZJöóÌÿ×Ýjìá jÕûÚé°‡DÖ#6K]³<%ïsG[´MjÞà½v_÷Ô÷DMëlÞ E°ÂúMMÐ8ƒ8Û· Ò¢þ|ÝkD’9óâu·¯Ç†tVJ€ë'õwíÛ@ûáQ4&FÑüzÙ°|w‹ù,"¬çÔ$‚³” Z|fjzR¹^Wé:ÀÖlŽÔRº½^ÙMÕYÊÔÀÝ>> vók½lÉfŸ†µã•Ÿ€¡íø'³šÓkMã‚bIu‘ÕSìegl–õ>‘GÎ廯Àaߎ×m×HyÖ+××Î7µ}>д?Q¯Eåz¸²ø¾%õ”ß 6ØãYüEgå¾¢|¶L¯’ð¸Ž)çJ£.ÖsVMЀ»u©Qì2SÓS#åâmìíŒñTk8n“èÄF0z5†çE‘ïzß›» _ë®E€çlÓ×^{H#ì„=W“ ã6þl^0ÿéFŠb“=ËóÄ­lߺ5PàVÁôÙÌŒûî;Ëfvx}ß’1îÛÑWŽ;”Àè•©ûû|}¨¹·gÀ¶¦ âø¡F¾R<äÞ÷ÐíÝ1H´Š Ð›iÿû‡]½ÍÊ ö(Ρ;4%Ú~¡Cï!ÞvBËÞV/¸õg³ =aò­+»šÅø|j÷ÁNÁ1‚ç¼%WKd=;Ÿ-;Ÿó.rWÞ‹ÓßíJEoXÜA䀃äœÕàs6My€ƒ$1V’sYÏL!<öê«h|:¹üʹ#Í\G°&wó˜šïÖ$ž¯ã0³Iìah4¼ì'Ú#ẶSë¤G²lŸº)NtØ‚_Ït8´SvütJ ÁX¨^xs}mW>,÷f­dÏBñ \¤@¡ºªKÖoÆ%|ŸšƒqKÖîÓðá³+ºp·YÍêcaô°&g¡Øœë•fÞÛìnðÊfSß^NÄp³Ep3~"Òën%oúíš6£ ÁPžF#˜·W;¡i1ì¡ýœJÏ;ªqdMf´»žÌLË:²Ñ_ë}†0fèj*§_"´£ _Â>ÔXi‡ÈѸMOÀí–MÀz¼ú]«¡ ¿ÇÔ Ю@–ÎJÊ:HãIC»{w#¨ry{¡Y¯³µ9±è!‚ÅI›vóšy¹Ï¦TºÆTW”ï÷ …æz?¡ÅDx¼³A±íÁ0ãLÏkýḟÀºÃ¥ÀÝ•TgYº%ˆ¯lΘgwç,ëðÒì„U™ñÌ•×VS;ÈÑMß` Qœ‰ç½–ïÂ=½¿Ç#¯+5´š‚¥kŸl<ö1v7µñ¨àÊÉÝömŒÑ‚I÷bͼFI::4…ł¬½Ã€OßO¢•…ŽˆR1öˆήܹB¢x·¼d¤ŽsÚCÃ}6†vËz2gå.¡L1õ-­£ë¨1眫&V0*à-_ý!#uׄAæ­ͰqŸÇƒ4\C?$‚ADsþKѯ‰Aá«:/Œî¦æ¤¿™y«iÄxy«?)/ZŠ)¾,ÆÔš¿ÍnyJ^SÌ‘5[Ö¡®hŸ™®P 6ÅYL-;ĆÀ#Ø·3F¿Ð¦ÑkG‰âýÀ¼Lƒ­œÝÓZ„KgsøÃÉHˆG‚ƒ©-‰Šú>4Œã„áÜòUØBXø‚65qžF¢XN‡-˜Ðrî(qR¨®{ ó ÇØ$nâ"›sÍs‡‰?í oñ ½{€ ^9|ù úÙ}·ó+aÝWŒ'IÐIéá»ò´vFhGaóë÷Ô®”œÒîse·¤¤¾·‹p“{„HC4— •Cc½'–ŠîHƒ¨ø2¢}™å7„©Øý†Ø„v¤8úþïÿzx%IýŠª4øìµ?¤úƒ¹Ãhi_LK¢? ½1à½}ªBa%N½øÚÃÑÀ‚;fír©¨ø[¡ pH'{D7I1sp·‡ç.Ï=Ü¥ôàŠŒ.J u=ÑAÄÕ=€ Ʋodj6nB–ZÃÈHœx{!…̵ÃËÄEøÊpCB ±ð|ïNO°`ãq¼oªþså›ÍcX,f¡Ó¹…IaY²VÿM…º1Žo¡:KN§xØ\’(µz¨ü„[ÿ¨gÉEuzB„qïÑiHÒxj¹¯ExÒúŠ”^Úšã !RˆoE¢bæÑzÙrèÖk6§µÒåå4H¥\¢ðõH…Ýõä?ÕpÈd±ânÑ[S]I¾ÙN¶ÇԜ֪°En¹;¿ýÊí¡64ý¢*26®ÄŸ‚üéq<µÝÛYñE ¤­‡: *ïq-‚Äø°Èt— nQйéÄO¸BsŠÜÕ.-À¯é¾È&¨Š:±-ñ¿Ò0«™ÕÁ£± [hã%#O¸fwJ& 9¶¬C 8€GèË34P˜í$NØ>Ÿ4œ%§3*§ðœ³»$±ic;•,T¿kà}ä–5üËS‹f¦Pƒ¥`£5y%³ÉoE€2¢sdèÝÂ]ÂÝ¢ÐîŽ)Ìmá-&§¹Ã§<®ã¾‚‡A„‰î'ƒß•éh²&§iSœY°AûT÷‰Ø*Np»x8Cî#ÿ(ˆx÷ÖD‚šnª— 8gËv‘Œ,©†Î8XÐXð÷eQê]]{ ¢Áè^_a ul¬–o:êbåXêhH ¹ƒÌÀœâ¾$¾Ít®Ìg{†¡ÝÜŠÛD|~ù¥0«ì¡kE‹ŒÂäy9Àû¦fÛ2èÙ#Q$·,ûÆ}»9.§Çr:ÊWýhQ™Pýî1燨m"ÏwLƒüdwÒ´ÊF¿XL--&4Œ11)+ù •‘ÁßþØiF¨1TÁèM 1£êíèi òö̵kjÀ€­¹s$¢ZÔð+àЇè‘)Q, |Ÿ"­’Ói1·‰­oÏp°Ï"Ÿ­9¤duû;[¾»†8%Ÿ² ¿jÓ¦A©¿è‘Ç vBÌø¹BE˜I7]Ö\ÿT¬‰eUaŒ„÷]±Á˜í$A *¦mR9ç¼ à7‡ÚîIrÄJEi†°T¢¶â¨flÃŽßô+ ÐJ¤ÒätJ´Ê‘ÚBàW†Æ¢·ýßÿõJÑ;cÔ Æ™X°.HL¥Å…e#ÕSÀ µà÷똎çQªÛ!:¼›1Çþg«ßÞÓÆôŽ+%­Î7È(ô>7 ”Ó=Á1TQ|ý8\ô树ԿPÚ`rËxß´±oÞ1„P»1bn0ó¦Æ×rPødÈï=}”éDn*1òŸCÈ—µÐ«%“zÈmk¢ÝCh7Þy´Ù]U÷ž¸&ïÐ]L¨à"<®aMS6i“™ñ†yÞ'ø ,]‘´QÿÆ”FÊÊ&Ê¢a¼3¡&+ê«‚[T|'Sœü‡M°ã xZYß]ÅD°¡JYMÊDr|C‡ÅÓÖ¹ƒ`h`3Ü ?£lÅC* eZ™ERo´[r#µ¬ ñŒGsÌÍŠ³GpÄX:®]©Ý’‚ü7t–Éuxc_@Ö(3³^´A*7/Rq¼„ÂL•j„¥–Hˆ)¾õÞƒS#ª.Ž(½Ï+’6Ê?Ÿ ”€¥þ`©Ì TÜéö¢Iâ§¾öÙ¡3 ÓŠÿíótP^L‘1::•Šè7߇åV5Wöe¢LseæÑˆø°Ä ÆÆEÓ>…e·ªzûá3P„ÙÀú'ƒ!.³È'Ö–¢ñíí ^»Ü‚áN¸ ˆ_9d:÷å]Ö%©œ^iõý.ÑãO5oÏÃæB{艉O‰ ‚›T.qVe¼|¥w½)~[‚IãÝ‚gL%±¤Ujâ™ÎlèÇ︬¦DŒÆg_¨JâåŒAj–Ì×äÎîTåÓrD ŽìR2㻨ŸÐ´•’0U1-TÞÎåa²Øð‚lŸè\'0yG|KÛdgäíkž™8Ó–úÙ#p!×1‚ûA[Ó+þ£¡/kq‰Öw—5†vÕëÙDæÜš`0¢ÿET@FêÊÄä‘‹ÀœšÔ©ýŽ=Ä"N>K{º¤þ²¶ÛJ¹>³ßTkr§‰»¾B£G-bÌSiO½FKM¢”Pλ}6Å`Å%ëðQ!ùÓc,êõw=ûÖAg¹¼<¨÷Q#õtwÈ–àkriAœb6¼Áæ'pWâ Ÿî)¬gkNiǽO/v'%ë;ÐfÒ)Ü(]ÙcX qyv{wà©ÜÈmˆOË´ûÚnÄ0ž¼­ôÚç_ðø]c18-•É•J³yûTÚÀÔtÙ5 n íçJTLé!@G9Òv,y´o HªÌ ÉR÷àps±[…-ˆÇc@I¦ª‡z$œìи@0£Ò&u(ÂfÝ%E&sŠWÃ$ªê5:ne&Ü·ÑiÈbp¾¶dÆÝ;Œ ùš%Z“Y)N¢±”„—°ÄL66õ4Pb#>®ÂÇ‘=º§(Nø¨”äõ2ΑF¨žR ¬¡îG wEçóŽÞwÂoK4 ¥ä Ò €*ãöV¹b3š((Ü M—nD”mBW‚»*Ž1?‚#I÷nQÛ…íÒCGwÝYr=3—]`§»AB&|¨«‹ì­· ³,Ã|¢LNå©í\Ü5?%~ÂNGÓ´˜~¥ôaD¡,&kB;á MlФv‹'‹+D:–¬Å^2º§XPPôe¬gß-25ì-ôÖŽ;Cè}ÎÐý`YA@àèžàa.[Á›Y@9ñ9è‘Lꎪ#ü½Põžú²ê¤¤À/ –Ír³\P ÆCRw%æîˆ¾e*ÕMKbU(ÏɼU·}3ã›è79ðÝÇ+¤ç„²Í5Ñ„=a•@Q¢X¢ë*3=*m`Þîkóä®"í¸KLÔSŠ0v¾Â;>·À]M;¦±:ÖKäÍ[ËYÑ»·–ÿ+à5J,$ütaA¶…V4­wlÚ·54Ζ¯PžoÙ‹ßµ¾Ñµ@ÝOÄÔTθÈ!6…V ÷PNC:Ù[æ‘‚ßâ"/¨pøa’‘êÌæû\%¾I^p„¼7Y“È/íø‰"± î#Ïù¨¥¡%ú&]JT,›âQ*Ák[¤›vhÇbÇâòÿ|‚‘Cz÷Xc“q{JÂÕ÷Gt:ërdïS¼7øM JE©íŸ ¦ 1·Qhj…ê›ÑJ2#¼ *}¦ÄJ½`›Ì˜^À=3Sxõÿçψ¿èÖtõù ÿ÷¿ü…)lþú û÷₩:ûù ÿ÷ï¿pzìç/üßÿù×wÂú‹ýýÅÉ¿?¦-`Œ3Èhïžov–XÚ»YBg&ÔÞ/èëæ¡}GÔ³>”@:]éØ9ò9×ÝÆü¤Ã3¯§ÊánŸG9ÃêöÞ"‚ß|ª>+ŽëÊžMÍioÛs¿à9kpÏÁZ!uáɺRôIzŸÞ2ˆÇú°åïó pézìCóOðw-ÂÈôÖ•]I:î>E±tå¯'̸~S~gz¿~³ÎtÍÄ8J»!í>¸¡Wžä†uåÈF“¬#8Ÿ¤8³îöÉÚ1ã†Þ[*a>Ñ®µBZ„3Z·M-•„ãÃu·Con艖¤³Æ¾®¼{RÍ]7$ÌêD£×[pG7Ô6-¯ZÎ*ÊúÚ–µ…¯å뙪›í[ÉÌáYxâžë7ÅH?3!3Œå‹ík=AõúU"û:á·öö(»ÒÉñ’JÚëCi›žÍivV²´ëQf†È˜IÍÿÌŒgÛõ(·ú·á9ï]$†—½¹ìgòºŒ±¦dÞ6’H[³ÇD?z׃Æ›õÊļ'Sóq¸ûoœIºí[¾ŽGé×lN0=ŠÎ ÿfÏôÃÖÉV‘˜·¦Ò{:Ÿ^îH6ØMìÐE‹HÝL'ûMmjÜ&-SÚ°Mý¤Ûdì!5°B%VÏS¶>Ñàô‚ýª1òŠÞÊ@ìYï¶çÌš¶ì}JëXøõ>£nèò³¶­©Òœ•×4È þÚñä‘v¿]ù¸$9[¡’Zê7­ékgÞøga³ïÛ“³ÿËöñ£6>« ë†B4K1Î]„‚Géî퉻e.RÚÃèí«èhƒW7t»ö0ÉÙ•ªÁî+!JQê "-ì]] 8þ3°oØ>ÐJŒ+:¯ì——w³^“No¿ÖöQ'¤mmä\çfÔ¡í«™Œ²Å}W‚^þ \(ˆxöÐxÜ·—ÿæù>w ö?w=ç­®#t®#SÌ[‹ ^ùYAþ•’ÐÝ ä¦ 6¿Â“+k{HCõ˜ Gp‹‹tu°·—[¦&<Ë:¤7$e@*õþʳOjÜ%©KX8©` Nˆs⾎h ~gÖD`òl🟖$ò³!Œö(n0Nö©ãžFÆwHR|ûY!<’¡mòÙ}ò¤†'̤µ,˜Äâqy¢?”¢·­p’Ö+Ód4zÎ-»Ë™«%NƒBV%/öËép*­ ! f¥+߀FÈR·`”é˜/k_¶¦¼‡;¼=ìù ÙÛÝD@™kóMÍövQ¾V—Y¢’5Ú )<»Ž,Ö j·–OÐA]wÄ}d©gŒËå(uæÐÈt«ÉÚv®'aŽ®§ ÙîÁ ÷y0wÖžÍ`ÜéûüÐ ÈÑ`¹“ÔjFJ‘{ÁŒU²N¶ØmäW¶ÞÝPÂR[´€žÜ ›õ>16D{ú͈&ÊÇþNsû­qE6þÝ* 9ŸwlMNß%ØK^p†¥æS}Y'oumû£iO{¢÷©a´ð椙FJ¼|j@>[]ÍÛû¦¦$|+_S0BÉœlüŒŽèó9Wž]Ÿ4ÏÞ­t„Õì)~¹ª;Œ¸’2ôM©&;t{s¥{–X¨ÿŒñ[u~cø1Çsê¥y¯˜´…,6§^ê,ÅÝ'ÔŽ±¡ç"¬WÖ4óQèŬC£ßéeolœ! 1ÍÈ»Hpî¾{LB—ªhdjÈö}ED7¼v&Š+s²tfËS+ÌÂHJ# á¾Cò¥M5€ÝÉÏnYãáá–I¥#8ö¸?"²µ5\ÓÏÊyCëCá·œ‹RM'{†¶)Å`;Žðœ÷î:Âô@û–Š/[u‘bÍ´Þ­Ši´ãïØ €cý(†Ç£HÓ¯D‘–o‹Q¤7Â]/ÛbÍ+jF`R‰Ï9oÖ°j¡Ý›^ùñ˜;h0+¡Yïžñƒ/[SVÈöÍðŸô²[”3Î÷¹nHñãæ1F±lO6±­˜½ø²Åÿ;# «(ª–Ã,õbd¬Ùq„ í‰ |T|!øÝZ.˜)3XJRGgFOoèQÙs™Ìñ¾¸Pôöù®¬›?&5tô1X’È!¥$›0œÔ³³1x¿öA#ÊÐ9ë12ò<+VV}ˆÖ°qe®˜’|8Bp¥+²ñ=,ؙ֚GÊ:.-Nhé¦Þ_Ëq_RŸ½V¦h pòáL [Í)L’¿ÑIÉö=Ê®F`]~¸3k$âûpÿ|äžuÞ_É A#=xR'½Ùî¶}‹%3‡k«zG?’ãèt¤ÍÆ\ñ Ã|‰Ý0Ð*ìâ'›ðÛ-mG\žÇ3-ÑÊÓ#ýªgsê¥ryE ¿…OÃh¦F Ô·t*á)<÷å‚êÇG#5söZó!R4iÀ,µZîñØ‹kÇ>»”dS[ñ& ¿8…TðÙqyû7¤òŠ\ËpÅéôÊúž„0ET ØÞf#´-!ÎTÀ~Üd¤6ìDÎuW,Ø‚‰ Æimܳ×fâËV ªÑ\£»r#uÛ‰“p=çù›vå<§m0dX9+ñ¬¢%Œñ}Šo7ˆJ rnê–É´ZFw¥åã%©7‘»õµx·ÂRÉ·]LCXXàÕ?·ô§˜Â‡Ò›Yó¨ÜošóÞAB&×±áf¼™½5K=S¨Å"œ­á =%V×: =rKkE…BB“ hknóÆ€òÝÓgÏôæGkK¿ÙbŠy‡êä·ž Ø{‹qŸ¦ Sozžö!¢°êSgòþ­´Á© ûûØ£w¨ù • Lpn/$Ÿ)_ ~ qùTßCJ3:±h™òÕfÊ8Ÿkx´çy$Ç>›fú+z£@´xMg¢»ºwQŸ3U ¸°•c5=ìÓ$>Oì ‡Î¥\qÐè­|’p45Êè7gÄ·|x… ‘ÕÜŒ‚×vúΦ&ã0šUÓ8~Hiáw£ GR_j‘Ûö1ì$r.CO¦¬k"šR„#‘}oÍ“fZ6—ÏåMíít×3Å´Pàù¿•Á @ÙŭѤ®+C(#)¿\xŽ÷É™kK#ÆOiíЭz6¾O© Õ=+åö4ñNä€û‰M˜"±›eÆ5 –™bbs.z,˜5’iÚ›©ÉDñ¢Û¦g¤Õ˜›‰æM¬è¢5œz~a´jƒ­wcRL×™ÙD"³&ýË+ÓsRœðz%œifo„êÜ*§Þø$Ìò³r xü*-P1­EO“‹”’$…žð¬ž÷Ü1‰’ j"xs3DÈ swFOB_o%!¾©1Þ…gÊ"wOíWÖE¥d‹‡ôVøkózÙ;žœëÞ&¼5åU—±¢ß€¢Oƒ±‰†üʨvõì‚ã†~½læÂŠM›z÷ ’x‚~uúOkyS:zu½)8~Å·uí1•´m“1ÂP“ÂÉ^!ÅÔ„'|mâ¹ƒÚÆ ¶ˆ²E¿Á)¤ÜáÿÉ1µÈbçÖ\ ߥ(Â}apN¿Ĭ][&#UclRÔ¿œúWËù•½5Éî‰~ÄÒk¾BŒ ìŽ-înÉ‘V-´‡)ºƒ³Ä±æ•ÃÂ-b”Õ¨IööÙ>§°ñS¸ípN+4¢½Ðæ+jt ó‡†+nê÷[d\¾Ù>­-Å&;%!vŒÏý59öÂŒÏÕ•`±È¸&›Ú¼ xÆkSs†.8†<Ò:¾!aãÜK¢X“BõݺA‘Ôž¯ÍÍ¡%'£UZà>:õ¹b„ñú[!RÜF¸Éï2W%£Ìíyâ½qÀ-ÂÄYâ´Mý$ä«—ùòQp4pmÕÃÐHùv¥ÆàQ}¥oÞ8zA•3N°ç¼ÒçlES{Aw¬† ÿâSs°$«IW~´ol "†Ì\ZýW#5ËäMYÆl¸RLê#³;AƒïÔ`´=b?Ìaþ¡ú¹5©2’Ãìû2î™ÑÉNhƒB?¸IÝÍ%3{t—#â8á›,ÃÃü»€[qb.<sãË"„6"ÜÐIÉé½kè¬TÒðùƒfkXº§N`t‘-‡FÆnÝ@ó¦²*û•7‹ÞÌ#=iº·é\V†Î9Òó-‹¬nÆ©†þ%„µÊá5v‘’‡áJ¸|6ñ‡Þ(Èr•D;d¤f´&sob¦w|9ÝÝÕ¨_Ý,í…'ƒ±75•þJÔËÃ(¡XI!ì>H$ˆ´…‚Î àWE)gI3×ÝÍ´{õÛsíêÖ×2K¯%Ù•Aµš£Ábå·ÜžÀÀýœ\¹sÒ¹Ëäߨ¥”;ôè$ûŠ.kŠ0ZèIì4ÚÁ{DÍ•9Fª ¶ßdØ)ÀÀo RlŒEbY†’åÙ_ûÌ—õýØü>â¸|𬈈w:tK $Ì¢Zoº5g„<Ü}\s!Ì­îÊWª¡†«’wqέ‚ÀÒ’¹üħ»·æ›m“µÁÄv"…¦º ðd+zcå…ú­½]¶ÎJ÷D1kT«9õ(¾aoù­¸Iª:“ô#Íœœû+'k²)™”Ì´­pȉ673 F'.¬-‚¬ ûì–X“_Ëw¦A›OÒßî ¾¶¬ÿoWr)5_ÒÀåÝ„ &­Š¹‹‡÷Í0†ƒÕ/';ê+ÈYÒ$¯úštöìrî|Ѱ,ÕÕeÍ`ª¾3À!îZúA¹ƒ?k’bÎ+uWw´ “wh'P»å”›‘"²&â^[‘1دÄgÿje¥ˆñ£H€ñP4ŸáûOboͤz F]ó%úíY"¡dãÉ ÈS…kt3M >Q*òRU·O4ΕE"ª^ÚÞÛs>;èí£AOeùäšØ{¤¾S/ \î¬3ÍìmOím ¾&YÍÏØˆo(,u¾lÚÛ„H½Xt`$6þ—&sag6Gü×£pFS•ó¶nß9R2î$ç~ì&Òþ.ÁפS¶mw¾¨BuÁ¡SœðVCÑxAØÔ¶ví‰ÕÕÌœI¶=s–B€%4œcÜ'Fk2]DÚkÜ”u§~HÜ bXSe©œ+þSå2\pÐÍjo¥þÖýÈoˆ»ŠvøÁmJÂOçjYÇ“Øx3Rš?Èú %)ÿêÝã<[Ù2ž#„0 ÄÞÜÖ^Oê‘vÜǽ{¡Öû­TÄìRµÑ£ìô,ا…[<óþÏ!7`|[>µ 3ÿ6Dº1T0ÇUé'w»†ÎJqj¼å4H;á«&ÙY¶1zG®'µg±r‘v<;€ªš9U=mxì%ÄUé°šè?g޽í‰Õ,J!F›EÄ|%íØ2$b¤9ïæÂ²‚Z½Ò@ôŽ­IGлPÖ¸yÌ‘ÌqÀ}çú}»’´­õ4ý¨B᎗bP´}cŠ)<HÑXè æ¼ñ+2tâ Ì8e<3MJå_•ÅØ¡¥ÒX%)¼öK,™c¡M+¤ &fñ¸ÃgäL²Ð38”ÛóáÕN ÀvèL…ª¹"ÁV¿b&Ùl¼9¯†™ØoVÄË [ÿ˜–ßG=þÉ¢ñË~¸ï÷_úûSbÛígà3Ü·Ìàtßïÿ·‡ƒþùé¾ßéßxo‹¡þ³§û~úÿµÓ}ÿÆJM£ñ/”çZão‡5ÛéŸkú­>/–víÏýŸ¿?7Å®ÏçöÏ_ŸW“ ßŸû?}ÞÚrûsÿçߘ¾ûgþÔoÒP½ö?é[n›ÕÒ[…8²Œ¾ÎQ¯ ˜¥÷•<÷ZÀ“¯4ôZ*Ýbô^‰ùRš‡^(„*Õ€„^:¤8¥„¿~óôÇ¥ÛÅõµð›Ã’#{N¸!‹Xz¡ÆÏõá|ükТüì ÒìÊ3$.­¯L¬ÿX¬³áʾ¶Ú=[Å‘éu·g¨Xš5­+Ox§4Sî¥A¼\ÆX[ ×N;¡iáI,p}¸¶I™P/Ý HëJxe£-ŠJ¯ÂðÒµ¨Odm“Ÿ¨wý毗Ý.Û`gŒ¾ŽÆ5mÙZqˆj½Ï“x»vßðG9Ûòs‚úÏ[)€¾Rª[0n×6™ëÊ•ص¶ë­BªÊÊr‹½2X„ûT§Ï‘[/ûçÇÖ•p·«‡²Û•gj¾þöE SfÕǵ5aá»Õª×מô^[|Ÿmn‹ ÖÄhëkO®×Z¾ç±·r¢c¥šLÏÚ 'V°ŒT+öµ'¼c»¯ØÉ>S¹òóôÓw,ßÏNøÉgW6X3¾ m0¸!ƒçצ>ÍÒ^ÿMR)Ãûz¥ŽøR­]a= \Y/+4¶t \7¦æÇ;t½l8HcÁ¹kÇÃÖlVÔ4Û‡+tû‡`Ægµ++ÕS× Íbw{Â;묬»]»Χ5¸š¥>¯ì¦J´žÁº±–GSS·šìR¬fýæ™ì®Ý×n{e'~Xª‰–ô‹Øë?+'ˆº ã[}ÐóŽ×v‡×m•À—£kþµà"|võ8l_µYV‰Iýqõ±+ik§Í¾lB[0ÖZ¾01oï –ïg'¬»-pÒRš›Ò=ü‰×V ¹~óÄaJ3I±µB'±Á¶f§HªšªÂúb“n£L,@C/Ø^ûÍ“A°¶æS,‚>au·fŒÇþïÿêËÌš[ÕŒqÉâ„6Ý—e·xÿášH}–õŠ·?,§s>×ù4ï@( ½í°}݃¥NN§DeÎßJ)¶B'ˆºžóòWk[-`·̪¬æ\ÁÆ·}…öPÓA"YR,(±WÆÏYÝ;Àz,N(Tœ³¬xFÊ&‡¬ç¤¯­üâ¦þII,W#"ØrW¶ð êoË67R°M.C’5òüX!Dg+ÄI+„±ÉppâÞË#½þÊ Ž/nÞ.ª§ZLýúYµ½=ë˜äyÛñ}m÷Ș k'Å&ð›Æ÷^_ ‘T8ê+XFjERµRzP¬Ýo-ü©á»NöÛmÀšÔÛííLì­yÞ‡z»Ý¡“pürËÕ‘ŠŒkljÈ‘~ÜÕʳ렌®Í(NÜûWBL6Þ4”lù`L”¹+H¥»G© W;4-*˜ÝÅǶÙoâ£Ôá‘ñ¹¼×eY0º²º5™´ûªÒ½†_ë)Iè.‹û µ‘¯ãðÖ4™©¾ûnÚ&õõ+ÁŸ+ïËV2×n•]Ëèà9kD©ð(õ×Aéñ+1i«V5_;á$+­ ö àÀãðêk!%æÐnp“j³|-»âÊ×ölËXŽn%ákùà•5ß ¨8vV^OÚÀó*Qlè:n‡HEµÓÀ[15e‘oÜDcw·LbØešòÜZ!¬f,<Á1Ý FžkÆ™Yi-m0ãl¬»¥ü³™Á¨Ç›…sóÞŽf!4Ò.RiT¼¡<À±>ôl™P;OÂk%YMK¼Üñ?W>ʳ!C¿<»"yiÃ5å0[¨BÀÜåÏ9 *&×fû×öu²Ž^€<ùH½ù"œÍO(wûÚ“/h†P´ó÷WlrÏí|zIÎÕUð­tÿÎÊ2þœ ,?Õì”ÑámN4©ÃCØ'A–„ªÃ׎鵎‰ý2È ¢Mh–`n‚ùç-Ôr^Ã~Ö•`û¼-Ý #<Šõ‰$ñí0+¼…,ØãÝÀÈøu·LTÛšy `:"ʻϑÂÒpßÖ€ÀŒwY\ OùŠâ¾FÑÛ¸=¾%­ââŒ!K¥áe{(P ¢¯gW¸$VGò»=éy+wŽÁÂÿ|X¼fIe8cÄÛݲ4Ýw²}Å„o—¢àwz€†E¦æ²jWˆp¯êA¡YçD¸©Xs_Õ· .ü3=@ƒ÷©#8Üm·KXdªÖ‰šíøê‰"Il€CžÈy;‡úz„10(ž—=zß&x~lßëHáÙßd@15ÖWÖÚ®+ádϨѱ4¿2Òû±ñB"Èq™;ÃÞàØ{”Z:ft%â!È\žsú˦$¼8Ô…†qå¼^Ï&;dà…-ßùV¦ƒ»ë®ji-§ïÇþ-6ºØê‚ xulüô°¹GѬ;ƒºêè$<ÊrÔ.)øx˜Þ¾<NV|Î×ß µ5×­ínTÀHU?ŸfU35éX®³2=@Ôný×Ëáµó ÍËãxR¶2ìÍBØe5SØ©{Î[‰ÿi)‰ÇCàWÚ¡:±)ž°Ôgφe‘ž]AbÑ<6)DŒ/Ï0fCà ½ULJzƒ½ òÁŒ›ˆ™q\„v§Æøà c£Nx‚MM ÏÍÖÍò0ãÅ+ă-\MÉ)8:/J”ƸûêÈàyNšú!¿¸ðÝQ;XÛуÞc}}ƒ!²Ôo?öüÞ~>I‹fÓ;*©1<=@.Ït·\ÞPÒ<…%|@—ýŠ¢gåδkD•¼C‘zÁ",Ìì˜â!,M\-C0?.BÛ +ÚñŹÔt`%ë™a5ý‰’5ÀüírŸÝ(ñŸ6[rYMŠMZTÚˆÐÔ–g ¸¡×ï–:¨×¾mÂÞà|v;+V Ö Í €üq:ÊíÉ]‰'Õ(6pWL1«5@›GbÖˆ ìuÙþ0ž<Šg® ƒc×(··y–¶ðçî[è‡؉I6Ö„çóvþEŒÝ½ iý[=MÇå4–Šà‘g®u`!0pÒq¨oTÂa…$C`®W iº…c_!¸¡îÖ¤R/ýæDp)÷õ¨††,,d°0Vkëã¼N¾lx…¸NòHÕÙkñøj¢1æqásîGÓAâêÁðç¤^ݵ‡nÏÐ) ^Ve.ÏíaV§§=~e'8æ–„7RUX6Þ²+„ô"•žX”Qñ^ÍžutŠRËë Öí½!o­™ñ'@2ˆoûô*IÇ Oç‡U‹Ö"‡+¤¢VNë㘀rõê;Æš½¸5¡®mó‚^>&êéí†3>œˆ‡Ué~±@°ÀaÆð(ÝmBCäWìRê:Ûæí&T¦co%9eª@”z¹[ƒËáeo¹Èq9¼V“âËãDˆºéª%QMÐ’*Þ•6Z§ï!šúPг…/$ö+jtNÖ>ªÌ g`ɺ½Q¡³òôƒv9ž3ô·eF5c¸Ûâ6QG;Ná:µ¸€[žF/X%1Z+Ø[±¿v…°Ù«]w°¡";Æcï³!Gçu*Tz2SHî´8ßÁÈ`T!&P+¡8ž¿Y/‡I8ÞRÏP»OÍn¨?ÁÜÈÀëo‰êõŠ"zÁªº`Åå«ÁÉwU§­ŽCwH¯^ä"{ó¯EèðGYÝÚA23œ½V[ÒF!Ö0ºÔ ºÈR‚ÕùÊÂRK†,õâ85þf‘4_ÛüfÞ¡ÏàòX_¼æŠ¥…È"/ì_y”¥AÍ«à"ëqÅÔÝCžI±æ8TõB„ûR2¿ÙùRÕk:¨‚œˆÈ°dí\?Ax_#K­»-4¢ym°§g‡·_E2oÃŒA“ªÃ÷Ðä¿Ýþè˜DúQ<ë˜øœ~jãíl_¿¼øB"@+ 2ÃÈ…g¤–5Á &Œ‘k®÷ÌâøîVÒw,X(Ö¤‚Fù§^ÙE¹}o(ƒ©io4ŸÕ¬‡ê# DeR©ør3ÒÚò¸‘böw1Êôò¼ù¾½p÷MÁnÄÆk”Ä€›5=[nØZÕ‹ãšÜáÓ=@djæãdkšÌn±¦ŸZÇŒ†78ŸåjlÍé;¾’ä_ñs°>ɳSà¼^îíkR·¿®Ì06*Ñ# /¡p°äÚSæ–‘ä8üQhkîfB@ «ÊܬTÕ×Ñ1üpÚ2ãØž×FŠ?~ì;Ö}'x?|hý+ØÒ//°“ zùµ’íkwäŸ\¶™ž(*ð:k„¤Þ~!‹\ù;t(7:,i‚ÏnÞššÇaDÒô(ý Ž cŒjú Ê©S„*âñ«†{¥!ló´a'—¦5œÒZg¯1–ÚÇ·FͶ]$šÔËM*ؾַCG¢lañ>%P”´]¸`*dë›nÈk'+»‚ ¿ÜÑ=E½A·—m0ÑÊîw@k4P8DKbMd1°ÔQ„çSW4ŒuFž ÈRk›îJN§bc‚M¼Iˆ²+ÅìY5¨)så>±|ü³o_§ëp‡ìívŽC»½÷½cÇÖðPc“f®È‚dLjòõzK`£­š…ÞçôP 6j&\•X?+ð›—SJ®zq²Ø@rî¦ÓQŠ9T)è?Gô B_G+qûÏå<)ä÷+5‰I&·œ•P.?eôœ=út(ÿ웉û¶xÜG[Ó}Å<É &埖Ì`ã¡°5\$ôÖú 2Û‡&U HÀÁ¦ÃIÈEìïšÔyß‘!.­;–ŠÞÁçµ¹“™×‰[Öv;†¬IÙ’ 4—Áß,^·¿ÌÙn§± —§ç›4º²ªøÒàÊÇ?»½±9œ©È]ßjQ¬(0œ,ŒdŠ>ãJ’¦˜öuìáy¼z Ō韻-N¢e’AQÓ¬®œ½<=n¡Á²Ë9DŬ¸3„V†‰1á𖚊64NÝ\Þ*]{ÒÀ^Ü Ò[y½ ÇFÓ»Ù^ôU80 N 0ÄV¨G E]ß-Ĉ\êI$××»M2I˜P½zŸIEÖ èšV¬»GWVÜ+)rù:øA¡†a«GÛtn‹l-ƒV€áÕ)Šì^ß}˜¸.I•‘…·ÕËÙ¥¡ZAõßD²S{Bã…‚q§òf£O·ÿ‹$Þ_œ”\GðI½Ie$ä¬~¸ÖľªA2 èÃ[IÊMü—>£u/©ƒˆ-ŠÑ_ WªõùLKˆêÎ2¯È‚=JwEš„~ë²¢BÂ^ÍÈ€ål„¸(—AÊûÑ ïð¸Ó!U×R¯À°Â(Þ }Ñ„I;+sÙA@•\‡«T!L]DT¹Ní}ÔebaF° *ïÔw·é¸FnJš‡&e&\±W™4ãÉê¢À,HÉäœ~[F" v»_ãàd Rñ­èQ˜Âýú[Ðå.òâ¨Ù•*©KÛûìYJà›Š\Âjeaœ$;$É`´~3úÝpmEFä–SQò‰õ ¾øNĆzGC‰ \þ›f{wdµ”"M/Ì4dÓ9q%‘xx/é ¯òõš!P\†w4T^x§,%¢m=úiˆLáµQæþU'#'ÕÇ,–:ÜgcÜ7­S¹¿¸º^Y£=ôQŸ ¿"j3û•7.B./7o$ ohŒ8åXwzñ²= H±RGª¿ž'rW.·œ`*ÍË+ebYðÝ*aÔ;Æ›«]ØÑ º3Íz12¢Go„u?HŒ¹^YÅòJñ8áÂb­ÖÍ…9ø”VI^Ï˨õuŒ¬Q&]ÝQvs]!WCDì½¾$syö>u’Õ@Õ&Öà ù˜G£S£.›\$ð%.\®/{KÁ•Ãuö*M7Z{H€(8²/¤˜M’Gƒ¾Ö‹.v% ÂesÅàd?ÞŠTV¶ ‹’€)ž¹²ÚO ßXwnOFý¨ÓyÏY@wŸMâ®›"Jv¨E‹¼ÏUêh‡ÿ↑:Y/ONñ•­LG’G,'¥Üþ¼ÛY¢ÑA•šªOŒ7´™QÒ¼‡á˜ªÐÀtaNVËÛè79ô×ã[l².o4„‚É»Ó ¤f Ž!ÉÝ;´O5™74Ækæ†ýÊ®XCb±&‹y™wÀÚV/¾ÓÜO»[çmq¿xñ¯eÖ}ÐÑuHµ“n¨Å6B¿$£‘z ¸w 8ÁU6–G‚òS3TÀ's&Z6ÕÃ,Žã»º¹hp¥å¼ÎO#ñò:È‹I[/ÈË'Mgv®S]pìEAC%¥^Üš`çÆÇ¤{ù£÷É@¾Ø¬'˜ã"È€F$ZÍP^I—õɬú¸è„ò„çŪM®9QWæõv$ "<°]ÇžœÎå`ÃDåºÛ¹EØë[ÅøªètDÜíÜN“ªMwª:Ö8K÷ep>kÚ àC.ó“ƒBp Á†µ5ý¬’_U¢«ÈÛ’çe˜¿Dw˪_¾ã PÞ\k*„O¯N!['$¬dм߭ÐH½Íø¢éºN^i¨Þ½„ý‹Õ5Ò 6y1ÇPXÌ–Ç›%þ«î}­ !—N%”PW«¥q€ÈNÌ2‹j#lÍñÅ]uOMÊ+ºhk¾APfš”äj(»rRt­Ød­æ©Ë6WP~YBY¢ÄÑ-lxU *á»zSÅ…o¯³Ñ¯„Ñ|ß’/Û-ŠDHaˆàµ7˜Ä쮪âa'°Â0kQ¸sDt„d¤ÒmÆ@ëp.kŸ¨T„Ä@yx”>¶´0rsë-¼Ë—7˜ŠLpåÊö_¬ìÊÛÐ)ç½Ã@mª³†¡FØ<Öă4\>¡ëLjÁ*t·ã ÕTG?ø•5/7–9q—g®Éü[ ìM‚>¨‡ä|ñµ¤œÞ£½  ‘U<ÏuÁ[|-Y°+ÀzBDEºl‰¬ÝL x}„M §¹ˆPÇç!jAž·¸G=¤vyÒÖñQZ(F1q÷õòUß«7sõ@Š,ýí5¤~„LD¥ v+ˆRÊ•Z* ݴȳ™M×T•þÖáITX q&7<§šy…T$› t²b.(ê$¶’,©.±é`÷]nÁ^2ãà ­•%ztÏRåtlV‚ž×›Ò¶)Á¥#@2"£HͲ#©«„¢|¥W€´Tï ”P„áàQm˜Ñ¹*ýõR„q9Lqá ­Z˜“ô¸l3}±bÔô}ËRîêG¥ß”ÿdÑê÷@>°^6j®7‰± E¨ª[9.]$ ùúÞ¾ÂÛ$bêã¡oR@-8’þî!fFÝ–O= ‰h~‘Ë©éÜLîü³·H¢}<1Z÷®Ó¯­9€½¡Ã;< þnSÿâ¬^*J¼!ÈN‡¯?gVõO–î•7Ä´Ù V¯ER!¤†#q_/7²ÀD÷´–ç½1'…H7æ¶é¸iÅ‘/½G»ñû†cŒ¸M>ŒL¢kú•Ëé@Pïc×ñ †óÙ£¨OJ„wŒBa9 ¡ÍÄ^®Áô§:o[ÚÔeë¼cJõ…'m¢wëC"Óóv°r¤’õ,q.{K¼Ô'Ð,ªùL¡ÒˆkWû®]¡.x÷W¥¥ÂÊÂbÓU6xâÜíh3ñûjDo„ü¾Q"†•¶È;üæa&ƒÿä0ʃiðOÎóýúC,lñ™½›J’óýNóýúðùõêÛ†ª?9Ë÷ëýïÌc‚>îú(ßûŸúÎøáÿ!óaÿ—þiyaóWçÞÖ{£glX§¤ô'D!uÞ¡šzúž:D@¢æ…z_!ŒzFxun]Ù³I£Îé´°èRu¶<ýÝzN)ôŸÈ»­²»î³X²~3Øg¸eªAùˆ_ê]¢”~fCõîA:ƒÕºDÖJÂ#­O ¦ÐYS[ ß3Œw­ÐŠ“L»žSÒ”g Q§ÐŠ;ax fíd-¼””O°§NŸ V^Z„Ÿ»Fy.üÏ•¥&Ñs%úðN~åÚ·*'ðÉz13O²ÞúÚKŒ ØñêïîW¯WV®Ë®·Ë\áéµM./³œå‡uV„¼ŸéY½'ØÓØÃµo‹g}ð›Ã ö¥Za‡7ÓdYÛDlít^WJÕødòÕ)öÄòýzÎ`1ƒMø|[Óu 0î^;þÖ`+øÍ¡õYk2› QQçù¼“RiLÞÚ}šßr†ën«È#°ðw ¦tåÏy––5ÑH,Ø s4uænkmE£%CGc ×ËŽ“}n“¡êê ÷yo™«ç¨ÏRðVî;§Ð£lv–$×±oÚ èè¡Ãè‘Ôß}²°Ì;¨¡ £FœÀË25O†š®çIæ,yüöHà\o¯0Pm½ÉíExÛñº­‰l¬ÐíÃEmìí½Ög™e½²P‹ÛäQœ–Z¸5£Ô¡¯%ýÜõVD±O»!ÿœÎx\'©m0Éya˜¥p’v|ßrᅫC’»¼ËàHuýf—FZµ“whîth£m0?H6ûHæzAµÜÞ§{$8Ÿã µ“BiîêͲȩ =Ú¡é<ï2èQnññ.(þŠû(Èw@¿^Ð~e¡º/ÄÔw‹Áà†HOÔ´Þ§Ùüj’,Œû ’)#ôQh÷=Áu‘nl†¦2òëULòH›/KçssèOq‹,ݞўpû®u1=P­ƒ±Þ …°=BZø7ÆüÐ6éÑIšZø°2ó©¹D;B‚ã¾&€nù¼WÖrN>ûzŸ5kгm’–ÄnM}±ÖñÄÀ yö|_²š#` ²&{FÁkOèÓ•·ï„MêæŒÑ6Ù(,ERO`5äÐgXM²`Õõ¼.¼¡îq d½e7ŒœE>Ê"1sÕ[“½fÐzE‘¼ %,Ã͹_þæ%D]÷“MP×®¹B`¾¾ãi®¦¥{r:¸5›Ûx:+%ÆPUzx·0žÏ»†JÌI¾\»ïRa Òî¡xÈõq ¸ Ñ SÅ¿'¥ùK-ðpC-H¦´ðÅcjšlhïÓß ­íeAkS/q ÌèÆnÜ‚+ç ›‰Å}Œx’À×±WØL†ñ @™bêá¿I²of¤|(Ìj!aÖxb2 Ÿ-_Vðy2ç:wg•þZ)ˆ©£æJ:ªxKâ?5[)%UéBîêl`§sËŒ³í“,VÞÜ[R÷­D˜¸¥‰(PùuCX/ ˆâ¾¢íPØâ–Ó´6[>¿2ÉÜjÒݶHÉÞJù‚d,ÏîY234Gj£ $‚¡DE‘Á#•§ ¸½?¾Ò|BK ¼³NÙíZÓŒSϱ{\˜'å–šŒ±šç1s½ËÈÔ 9f_ö|ÙÔªœRAÖ›]3“,˜¿OÚ·š«ÉiPõ4ˆ¡‘¥ˆ¤î-•C‹ð8&u£y»}áiƒÁßÂè 0Æ»ÈD§lW½À-?—÷I‘ÆŸ½2ßÔDô©Q!¦Äb÷ªCzpK¥”A콑/ë[½“néW@F'½ZR׵ɷ&ÑéZÌ ð(®ÐÌùÊì~CÔ6¸NvqY JN¥©Jc,× ½œ“GÚBÞtëÞ&è?CtpÍ'ººÈ—)Â@¿r+ÿ$±¯µ‡ô(œó*@£DñKÇœ oJ˜xC†ˆÛ‰>4Úv£ê$9ò+%aôC$dºòÝ“VÕ¥‡õOÙ!x”(¦!ü=Ÿ˜gGñ­Ó¦rÛ}‚K1~8!…,Œû‚l.“ÅnÊ$–ù‹+À UßFÊíqm›Çñô›ÎFÄŽó_%k*êÏ™žðj›xêê2ç*~<”ÄòVšÏž¡ê÷𵋨êïKxoe+QclÒfa晾•ª ¸Èzôá ½ 8eã‘;ŒÇ—¬¿ÏXѾ¨ÀÙ¥®rËלªH'»F-’«^#ïÎP唆ÿÚî»ÓM]¢L/{3‚=ôøû¬ÔXùë¬ÆØüØ#5üS£Ehž´ ¤¶I‚f‘-ÂþãœÆŒEh‚ØdÈ]‘pÈŽ‡&~x‡££·rGLÍœˆ¦¡Õ¸M¦ß-sí¢ôÇi­F 1­¥ìÃÉÛ·ÇÑ“½•V7Ö?çîU'®€gW(k< ß L{•˜ÜU‹& òßZÍH¾²«¤àñ-dèŸBÈÀ§h½ðáŒÀ…¢ñâΕaŠ+rÞ„ +„ÔSICkÕ½5UÉ0¾! Êe¸GÝSx¥ì }¿Kì>‚ÜgШ^voQPŒ0R1!£†ë9±<52Á›_=mìíœÓ«no1}_y™zò™eð~IßUÇçØ@€ò³h¸ŠÙrŒ±Ç£PkÕŒIìÛß%ž“€Ö7J(pÏÍYBP÷´6q‘),PRô]Ïy_óáfq¯|…*35bê‹ÜÏIãö–îV¡ÀÙ•¸a’ã|÷(¦ØJ×öÖîC\³ø[áî)Uˆ“ÊŒð!,êKkBõY#¥¸ïŠ ÚÔ38…P_’Þ¥Y2 ¡¸†¥Šˆ‡‹pÝ©ÿ¬fÁŽ_ q^‹¡ûI®£IƒàµÃŽ˜R"2 í„M˜bNï9%…³Ô‚Fl¨"â1‰ª§F‹Æ>ÊöDNjðŽçJÅCˆÞwÈO*Ðľ±ã¹ÄNàŠÅ5Ó}[‚Àm›òE}‘Oˆ0s3Dóß„jÐ7ALä"Nkõ!‘4œ,ÆÙò}Ç`Šog>ªø7®‰•Óh­ÂçÔ”{òÙJ ?ÊÿÇÞ¹%É’ãHv+½1¾i{šÞÿïÝ»yUY%Ùred~Jꦇ»™ÑH< …¿OÚ·5<1æv?ÞÕ=úÙä?23X#ð³íõ“Ý{ÓÐ5«³´+úá+øíô «ûúˆ6'B–Š6dúÕfpP„Q£˜œkv#… ã㉊?‘4žhã¿`ãþʈÁásRÓ{té†À#{RÈúb6¾õ‡)ÌÚÐ%38ªø}H.j÷®¢¦†¶fó"0MسÀE°0ÿlºí¾/„›ëöîËè›o”Ué­4§L³òBñ^Ô^0=·§IŸö(âÕ #G.’*32:Ê\sŒ;¢OÔèhPªm0u¦»ïäÐús²»÷s5è-×ෆλŸÉójÆ'>X2ž¾§NÞ¾íY»”bZ{ØK²M¿·Úo=á³ß‚ßþ†’eý¦g8º„Ä­-MÆD»† ?â[Ð5ܤ\ÏçD¦Z<·¡¥Öx+Ú †ÍÝ75Y°ýd©Ëž{[ó µdj5Oþ³/R¡ZŒ1cl\‘1=J ©ª#Õ(O±Õ]‡A2ÁÂ|·S‰°=Bâ~doYuæ£MÑÛ¸¶ìöêw‹”’!Œ›!vo-Æá¼7Vô‰ðƒ+þ%r^ê£ÛØ&mº·¯—ÎnáÔfiÄ [êºu–Á!]¢Lï‰lä\»›Ôqé=ÀAAD‹0‹@ì'¦ÿB‘iä-'Âz5j‡æ4H?‹´AU h' Ÿ ™.¼q ¡ÌµF3[0©_“ïááÖT?¤B'¸<´ãËžŒFj¦ëھ߾˜Ñ¥h¨¡–†iÊ}ÄÄ yJDÆ„Nêg±F7Þèñ'²º1&‘tCyîÐÈðø–ã¾D&­¾×‚Ÿ`IâœÅH:r ÕNdë'æªqùXy¨LÞ‚ÁÁÏó.®ð†þ×?Ë]Û)Gª‡ø¥T$؉«^D0cNrù„aøœ‚Õ`}eˆý¹ÃëdŠwC “1r+Ž+~+²ÔÌ$ ¥°·ÏÕYƒÃ÷ý¬Ã‹ ÌKÖ8¸Ï€s ³3‡[š`©åt˜¤!æQŘº‡^*‘­wúQM“îGÅTú“@1Q¥¢ßûhMS]GéæZºå‚¡ÕŹÖ+`°Tr.›ÂªŠÃ:ÀŒO ÉLû^ÃŒ³ ßSIIä³ÙÔT§BQ§Ä.°SWÑðv.~”웚fEĸ #^³©Y LÌxAçZÈ(µ©ñ–†ÆìÊ̤<{ŒåÃ< ÑÌ.Vrè1ŠIFzŠã±8ÚS´Ò)+ѤÎÒ; ?H\á¦,Nfĵ#ý„ÍT¡²jó¾È„‡÷“þk’´GÚ£Ñ ªúÎ.2«‘ÃæéîŠù`¡RÂ"ÝšmËy¶àÜ}rüPí³Â>#Ò£¼A8¤HªOßœÁá&lléWxÙÃ¥¶Y*ÔpsïAWàAú‹È;ìj-U1k< Õлç¼\õòX3gìdÊÑ)AÞÞ5=/wûÆ6¡Úe¨ú. ‹T¨'¶ Óú½«h ÐQøQCºŽƒ|©=Ð)û0r~+Jp÷”ºmôlWÁ²¦_‘H°©Šüa4Ÿqøl<†<â'°Úà›n©×"ÿ‰R‚Û$y å'êé¹±fè”q3áx®Ñ[‰¤ ¶)•3§^Ãq0Ö|<± #õz5‘×.åzöÖ^£X³‡·ð(š²¸1Þ{,¸Ù÷#ÃJEý¢±DïÈá‘8lHF޾Ę{f « ‘«AJüi'd7ã4UÞ”ÅoÓ۬v‘«ÒMzQ 9m9K Õk^ʶƒ)¦ÐIªh`SC¿ò‘òEœ:µ›Õ6äS¯'¦¨RíêñN œôÑÇVFE‚*¸O™¨§ ¹§k¿}O§æBå{ûæ‡ÇH–ú‰¦,.°«ËšG•˜™dêiCL15³h_Ukqøƒæ0›B&•6ØÝä$šKEv>1º›§âhÌ7e©$FeòÝØÇ¢ZÅo/@«b0Œãó]F®‡¶0³¿5qˆš²\i5?8äbºˆ>2ë‡3É\ŠòÍå'XÛé¹M[ßÞž‘_±¿ùØï² Ox“p­PuN ÕnqypË3Ç”#ªœº.ìâ ° «^ö’ÌtË\Çó:3.¡vOËVÒD´iÆvA›°‹£,ûHöš+=s%]ÝD@ÎtÃÈ©tݲ€Çsþ1S6õøwŽÙÔ•ÿFßþ~¥}Žj®VRúš}[ÿÀÙ·¿?ý_~ÃñsÿôÛ߯ôo¼¶æÁן=þö÷§ÿÿóoÿîõ¯Í§¬Xé?ÿ£ NôÿŸŸ7‘ iøü…ÿû¿ü…áê_aÿþþ‹l™Éç/üßßQ¬_ôóþïõÿø<ÿý8®à Á2ý?1Ý:ÿëç|ÚAø'¿Zk=·¯þø¶¿ôÕwM¾¿vÑëu}ó¯]³XheCÊÿ÷¿j¨×_üDœu6ryí™H[~®’%=ySåÑ›pÆ…öò$FuÄhëÃÈO¨gýl»©,ïGQ䈴ìgÕJßœ1Ãò„kÖ5U#8©Rë› ¦øC=ÊL­åS…ê„íQò5X?+Þ ­P¸ð]ì†ú%ô[Ï).ÁYEù‰o 9ÅvM‘ ággh÷ŸÑz+Ò;õaMËWŸ•Õ3Á*ïní m"!ºæzNéWŸE Û··Y_/›~ëóË®÷—]£ÙðLêì†nÒvö³RÚ€KÔ_N|w]Srgª>9D+Ï”e]³Ü¯YC‡édì¬oJeèÌgìg•Ô©öÚ·B»N£¼.„€ªÿkÚ¼àØ¶o5“wŸdØÔ„<â±ÖS¯ ‡·f‘Ø*.‚6õ FØÏΫënÁHlÕŽ ÆYoEý|sÏ.?د—}ÖG¿Lê™jÛžsïøóðš¯üø¦½O{°}Å0+Ìý×ϪŠrÂRö³Ñxƒå«1Þu‰³j¯ì6|Û^¶VñššäLk;b /²wwÐÂ7[Ì^=¹!_>ûÄrÖ é­œõ3ã·c¿=5ÚqȬծy™(oqëó}®çl’‚k¦¨Ä5øÙ¹%Ñ;hŒìéWÖݪ……¶‰pO"ê™ÓiW·,=8r®ë9£¹C;© ѱoñ('„»Þ§fœe3ã·)¼_>›ÞÊãs|#]ÜÕúPê;§‘2{{ÓþŠRÉ0î†rÚ&oL˜bcüÜdUÌ0ŠB„k[D¨À·¢}K糄b™·ñh?çeƒÝ$êSƒÿw„ÖÂkúÝíLm í†)š4°Nv÷¨æŒÌšü¶Ážç‚ÒÚ‡*G¢/‹±˜ÌÄpB0o¸FÓ£í9UJ‚GÉ®ZLZÒëCÕ¶ÎB¦eEŒ¦FÂP1nå±³»ÊBÉ6`îðÞšõ—ç†îvF1ürC¶Àpò—Dq3$Ïà×2[+Ù>ù`jvQ‘ÒƒÝæ6çÕvZ“õ³ó¦À¿î6†ÔàA’lÃÉx5›¼´Þ§æRôöFTC¹Ã~FAáØ 1`ÆËž•w«Ñ¤@ñuxÏ:“™7‰LÀò‰®Þ€%ôSS Ö‚+KlC#œ¡ÇD"X¾ä»jxöœ·0ë+™¡ó¹Eö)‹œ‘brࢼŒâ¶gßàîÃãlƒZGP<*ƇÄŠÿþßÖv^’™µûÆM°w=Šè°gQÑâq·`ùöY:e»Éçd[|et”´½áËè|nñ…“CjßTû8€=Ñ|öÇ#qbá+DHÄV䢃ô+öÖý8k•¶Ánú›'<׌®Äܯ“de^0_>4«©“¾¬HqÓZ©Kžåe;Ù7–­-_º,ü –BNϧÂ,ÆÞä")ݱ&cÂÞÎG±å“îÆ}!QÐë1gW*†Àñú‡7¤0„„Ðéhdäé–-ÒX Lƒ‡·¼OôMžD=‹ÆÝgs|+ºÀ ´Ú6Q¢ˆkÈî!eËç5Í—Õ«/›‘]?»vßQ7XÓü´ñѬÞ^ìð3Ý3PE®¼ÁÄ[åDQR…¸‡Ò=£å«v-Âó(=ÈXÛÿ+ gÏ›¥ÓFJÌÁ“shp©¦\¶QçBϽ¦ó†ð û2Áü”¾F^ᎆAÇ~Æ `µ›ØO Õ6u¾î„é‚hí}ÞfÂX<¤ê(¬ÐN,è•ÍÀ"¿Ò"J¥oºšÒ%´Óèš;ýå³i÷máSN Ê½€'ÈÝ•ýÿ[ú>Y:©Æö>oÒëÃ`¤£çí'ÐÝî®@Î?³fãŽïójjfès$¥¶6Z„é+DŒ:KÂEjE$þ3Ž·#˜¯Vsøòñ·0BÀÜŒD‘nH‚÷4«sÙ¾ÇÛk Ùm§'Ï?I`DzÈÛè óŸýê?w}匌-ä¹É@Zn/å1®¿×—=ÜÔpÉú#Ï!O¿D5ߥy¶šþÍ“¤l'[ULÎyûÕRï¾I ›úƒ³Œ¾­&nÍlŽß|o#¯ì µk|[ý|ò¦N÷Fë/ÌøÌí-TéAl5Îã cj%K{> BBˆïVƘ˜ 9ºTØ&É'kR=í-aã´BÝwߨÿý¿™ñÛàdÃj¼TDŽÎçk#ÛÝ ˜3Ø®Îõ#µnHý¡çáµWv_ø7D‘qÐäè¶`ÚM»âËŒaD€ŠÀ»2sÂ1_²ño0ƒÃGµaã‚á&Ò'€;ÒZX„ñÖÔDö3‚g”m(ˆØ…Â5ßÀ©F7‚ËC5×-ôEÎuƒžTiÛÙ2%oôR“߬.25ûÒò ÕiܼQJúå}žŸKº§çäðCuû³ØÂñKvÕ´|ø³1ŒC»t¤Føìóe¯çìjÂc#uxµÄ¢þ’— )ä Td‘¼Æ5GÚ®@iªò‰ßÚòùŽçÜAù'eW9”Ì©²_Ù Xd àϧPŠM>çMê¸ifÇCèèš´HºÔäˆsǯm"ÖÏmŒÏ–^³ ùjw@„‰Ý˜Ëu\’sÝcØÏE0ƒq”]*"àüc‡ð iܯ­9É0n9wJˆkp–èdï)e„íƒ\GÝZ流ûùì[ôHµñ­•á&NÄÞ`T{BwlŸ+ᬶSôHÝ¢”¤G™œ¡Ë~{Ù¶¶‚FÞ1o’5 Hñ¡~§™õ8èg?Ô¦¶IðK¹`@¦fçH”uä­{¹CñÖHzÙVL“¬'cãî?©”ëš¼¨™ýeRR¥í<_E` D÷„FNN'sRÑðSñGÿ9o‚IÚé}2ËঙýeÞˆk÷©¡ó6ÉW‡ÞcÇ“©ùÀˆ,)äaJ¦%¨¶lciYnÄŠi¿QJ43vcü[õ‡bJ¢ 1ŸÙ 2ØÉ ÙøG ‘ (3=ò½ÍÍüÂoOZ¯ÕíÇ/as»ÉÑZÜw'†lV%P%lU÷>|\¡«6¸™q¥ÒH·™Ò ™+óã5Çq0Fr:5:Ü Fü 6‡Ì5‡Î dŸz}ÎmÞÎ}kÁ¯²+üÙzöñ¯0“L´A D%ÓJË;ôÍ×í-·âT¤¸1áƒp³/»ño¿xãâÖU÷.lÔµ@Tµåß²eâNîEàöŸt\r(%Ÿ1õ?ÐÉqü¯Ui¬ž{?’æ1S¶l¹ Ú0„Õ[9“6;+šs¤pqT)ÉIc1èò–Z­Cl'ŒÞêÍ-·QàáÍ·¡Cß 1z^}“+ñoé9s<Ê1 ¬¡·Xç•U ¶bû¥gF(Fã¿p\F@]”JïY€=SœÐBt‹ÀJ¬§lƒm0‚qßþ ¨4Ï@kLPES£IZÌŠ.é6¿éqùXØÛ!Õ®ˆ‡‘bjÎ…5"¶É.Ã]@Ï;dð¡q{Á¼Æþ“¨mÛ;ð+{î'»þFdŸA ¡lyËzr ™-ßFÕ ¦0AÍ$%‘}[„þËÝ*X:3WÔŠƒËÓ0s­‰^˜Ä0dj¨@P#bdVt(BcP˜¼Üx9Ÿº!F~oÕ T++Æ&ªP.X£Î\»ÐNDÏaÞŽ™l­Ÿ¥M]½(ÁÑx‹xˆ\GqSÃ4íî‚ U85£óêèöœEb —(ÈRŸb¦7žÕšÌ(l ƒå¾ey$&£¤‹£3ì6ï«nÏDvUN™M!Æášhû:æs‰Áv”zëÿ«‹ÊW‘C –îžw hƒåñ@cõ¹Óù9` Š>) Z°[ET ß¯~CT rÈ ?ðHÅn¦%‰~õkAötËëš’Låv®Ÿ¿³¿IÕÍò©3séÏ×–e*éQöÐx:3&0÷x_G» ÂÁ(JÝËG6Azí²B¢*RÎ;¶ 6:WñM¸woz„Aéû–£dæ£Ó͸æ¸$Ä_!D…úÈœc}å3£T%Š\†K÷ŠÅ'wàµU«FRâ~0µM>›óì|ï”['ëÙî–)z+!*ÛŽ`Þ¡]c°­_M çˆ@”›~A?jtvSKÃãwËê'ND÷dæôpíJa©ÝS¯[»ð¾‹È‹o*Û8N}áüV¿& Þ¥HOè‘ÔôÁAD¹iƒÛ·_b͘ÂË=þ7~¼í!¸|ÑÊ¢;FRj[ã~{&̧CÁ£‘/Õƒ/@™« ÝàÂ+•溽FÍp?¯B ‹/¥{)ÒZnÝ ‡v·ôýK{ý§æÚUñSÅ„kn(¤z5øæëéƒꢰy :œ\/Ú=(¥¶ñ¡I†þó¹kÇl1ÆÁæ]Y¬G!„3h”uì}KuÁ-‹Í‰%~ÕÁ¯tï,„|1UÈÔŒ:ÄMꪄÓsO”gE%á|¢FÇü¾›vÿö+ÜÁÞÈ¡=´óOfî*/cbˆX]ÄP.X] >Ú ða÷1x ™»;´cDTÕVr|ozŒ_ ©Ü¡4ˆr¤–ú"¾)HSiuý!Œ( 38®}Ë_Ô¶3·Êi»Œ5Rvˆ[YeM¸§í6ýò‹E{‘öÐÖd9Kiª 1‹ʹþ–-sÉZÚ¥|ì£%£”¯°x˜XÜï ¥8.k.Ãy*Í]¹Ò‰ ·â$Çk9C´^ºæ§Â/û^sÍ[u†±q…“ÜÄóö´^¸¡SÉju+Y{`µs1 +bã&*àqÖ1®™ë?6UË.B‚ã×T¾B³®¿Zv)lÞŽŽŽàfSˆÄ&úaüElÊ ²"Á)Śܤ®¢ÄÅ¡ËR£[VÒÆ/A{`U 'ÐáÝÁ/“âêvÚÂlT­ÍA˜`T êHn.\Á1˜Ì8½Ï=F– [y·arÑs}+-‚†ôô!5Cä=1Œ7˜œÓÑomÂÆºuŽ~*¹Ž¤Y×txKšXøI‚Ÿdo{¨»RÀÝcSs¿Ã5iûâ›0a_m¥~Ô¸!nQÑá¥:ï.°S ¶›ÔYÅV%kjeÍ¡;ÉÇ!Ü&ÂûØGËÑoxzÙ5j®aÔ L*ü 1Æ8ü†ßÚÂtÍ­øÌ¡]P2±I@2¬ÄT™‘éPùQrdÐSC¬J즆ñ¡ |Á5›‡°7žTìWTúÃ/f=SàUwà ½Üy©{:Óu”Û“¥þT÷pá£àþLñ-ÿl¿>g ›À½µ¯ú~3oœÑ©c‹Hå»Sâ¢a%¹VÉ×°ù£¦w+M•3‹\7¤‰~äúžÑþ[ÇšÚ`t²·¼÷Y•6Ï{kã·ôÝól®X4ͦBà<‘q+ν]dGYð3Á7A ·‰°vè6ã[‘"ˇþ-B”¯ðËVºÇŠ[Bí¸©Yó¨^V{c3®´–2º-žü(å7iæáÏɆQì5V nÂL•àÂ⾕SÃÃR³ôŽô5‘föÞ»U· /EŒoŒ?æ~‡ÐAÃTZR-”„×M|¾§7‘Qá&1^•­ FìW_6Bƒ”Q4œèÅ2\v×ACRkW®ß,[fîÇ#Fjÿqª~Pe:ù"pnoÆûÔLȰ°o¹È$/ÈTÅÐæç“}o¨Ù°0)sæÐaVaŒ' kUmjÆ5=à&˜bÓX¸ QÁ/7öŦF¸T± í¡­OÍ>Âo¹º'"Á…Çxïñß9š6 åögÎûM€ùM›‚5U„ä3EhÞ9d™ããUÑuÁ›Á]ÁˆÌOp3N¸‰¦d·ßg-PÉú¸07ë^²žѲ0x¿Õ‘l'ȯðì Ñz±©*êDÒ86)×ÚÂìD%jø…Ðto9ÚÂlƒmVÅŸ³£ºë3@3_ž¸½äe·­i‹Ú¡¹Z«¦ýF%.7Hó‚Â0ÐÆ‡w`¶ðMHúËÑ‘ÿH{ ™SS• áØP¸bOZgP%Â,îis—•­eã1­mЇµ‹|½ r^fÇĸØš›Ã%”¨@á¾Õ¸yÉrûÓ¼YlrÖl¨€ÇñÁÏiu5ö‰<ϲFRæ$72ðçsûç×çÓëûsÿç×ç^ÙŸû??Ÿ7W½‰ÏõÏg²qqÄ>c›þÓƒõÍÑV¡ó/Í5.æë,+¯þ+cõEWÑý+Sã‹FHù÷†ÿ=ª×ß­MóŸž”üóC%Î9J*ɰ’CtŸÉI‹kƒž™cª.¨0)ÏMÅÛŒ&)˜¥–Œþf 1¥j£¸êK[ªž²¿ÔRq}èÙ H’®G9£þT?TKͳÇÿû‡EcuTHŸS.FEú¹æ)‘~ÞöJeÞÊ|¦âô§ÙK­ûòH·Rö¬|f€¼í9ý­Ð+sm™!ÈNÝ ¹/ÕS±Œ{ýì™®ŸÕs U§WL~+FZ?{Vôl÷=öáY@KÕKÆ?&àŒÀ×Ï®²ÉKÀØze ³™vBq¶Ñ¤.T]ut™Ø eTã…cÊÎäú¹æ ³§æ3?ß e°õ³«qg>Ð<Šé!ÔIÊiùrßÔô(Îp𔕝“]ügO¬d}sø7Ïz•Y“uI|d-ßãoåDÖÝ.Âß‹§¬xÎ9+¾ÏéF*Ó+>ë}’hNÊÝ7uÜ"5³ºÕõàgÍö_2%;˜u0ÚÚ`‹™7IçhÙ¾uV|ò\ÓR*•âo…ð¶u²²óÒ@³e0ÖsNÊçS÷Ѱ/q¨×s.ŽÉLt®­9ÝÔœ r*Îü™„û/óÖü¬œPpªÉHÀ“p‹µÁúð&òH?×\4’I’jËEÚ5íÖá]ÌŸ‰îêÇÆ/›0¾l÷+“´&—‘Z®ã}_Ç~ñð®yr†R-FøùYpèÅÕ3~œNu=ŠIо­­Û¾“Qš² ë}‚1v:ø›m´aYêIµúµð¶©+™ñx’c^®ºù$æÏz+ÝO6¼Ï¢÷Ùè8/ÍJ6¾;Óò¥ÆºõVÖ -ó×4\k­íYZÉ…¤©–MhõªTßð‚°‡ªW^šr»¾™<Â8±é½­… P–×Ë^µ£Kôæy¼5k‹Ïš§ù²×^6„Ùûig¡·âz_æyá88÷ÿ²ðþ>'!’~T7ŒS/pâòUÅC¤ç´¾Y=z;‹ÍkùÌѱÁðɺ“ …ëð.k2‰ð—~2ùµûØ-ÿ˜7ó‚Õü|s1EõGۦηWV¼ÁwÙ!X×$4°Â;¼bêät¶A“צ~|ÇÓsºLÔ̸¬ˆÑSð‚Ùkž³sm>~!ß`R}<â›nùŠ»Ø}ÅŸN’×^/;»5¡ Àç¼¼˜ü¼•äÛ"©âí“Ê·ËH­:ÎÄèígÇÛ£PëÄÊtºïpÅ{x'ñ%Óã ?Зe§fÿ¼Oøfu¡I ÷;ÌJIåáN'ÓjÎsJêñ³>e¢ZíYÙŒ˜ñæR€/^³xëÄ$v‹ÞÜé@b‘=šªˆ+¾µ}KŒ˜•’,°ù- ʱüÊ2ÆK2 >tAç̓5YAÄÀ,²:Åui²ÁÂ÷XxZ>×M^=\¡…lNjÉ3窀’¶×Âfγˌ4è,Ùùô$NYò‰–ƒd§—a|.šÓÚìÝ.+ާó8ÂiSCÍ™ë9…½ù¸B/Œ—Y$%.N;IŸË²\àe·âÖ$Qú^šÃN²«ð+kгB¨€ÎÊKˆhv˜bDaGd¤|îÀràQºWÚxk¶ðà–WAÖa'(Èo¶åÂsqfûl„ª§ñ:ézk³bvUäR^¦L§Õ|¼€7Hif­ms3N™Žöz¤ÒÃ@|ûãtR¿-ßã²¶£Q©¨:ÆÈâây³Rª ¯éP÷Ò:¼zNB›ü’ÊózÙ¯? W¥_OüÁ¯¬Ÿõ0‹` oùy3&þ.œ?I\oÅ`r üÈ.Å0iв}ϼ¥ÒÍ55_Dв"ãŠoÅÙô³Ò£Toë\N¡‘׫^PsÍ®ƒÍeòŸoj÷/Íë+Âë}6¯(ž­MIô¥‰ÈRÝD#rW"þìZøéÖr‡U4LDœw[]à‚ûÄI}Oë9-¨ÐnûV‡^YмŒ`aﱟ™<Ò§lCïÓùÌ3£1v=áIbl浇 6Q%¼`øq˜±·a¹þélŠc“…÷¥«Áx"o_½TtÙñÍñø‚‘±³)&±éS*fÇC¾¬ºv(oMï*Y™y‡¾ ò²’ýgñ¤–‘ò І.¨ð&$ø°òAý@ ¦(ž—j§ä´`®D½Œø Ù3×B¡z ÍXnŒ^G’Fóº}ÇÓaÄUBAÒN6`ŒÍ'¬½ˆ1®Ã«'F5Y?‹•™êp)ã}É1F‚ù}œÞ”Ñ‚©ŽÔà•¥à½ý‚Ç—Kb‘Ü#QeÆU WÏ-8:'}*Xêæè$‘Q|öÓ|ÆâIÛ$õ +«*r‘38\"¯¹’(°E¸ò0ºs\^j”4wå 'á 'mH{¨&Eg^ŒTÛ85zÁîž—>lnM2Ù„ì I“áµ{ˆž3y¹ñÁ ñæ½Á5Ñâ-±)¦[°³e—ŽûY[b]6/<ß >¯g®—’uòGAÐóQ€ YÀkè? åIX·W‘©áqè~3†YÓ¢“Õg–Mj£ß‰2Ê¡q›gP-È+ÓÁBÈâWÛÔT Pi¾aÜçâ´³\ˆ>ÕƒB¢Ø:Lñb=ÊpÔ«l…·&œ¾WÁèð:ø>TçMžé ,“7'V¾SgQÑjQ\œë«†îÌ#Xxo@Yׄ¸¯x'.³.{Ãô@Œó‰Õ÷’ƒ F4íâ©W£è­jkfĩ߸ÉO>ós…—&§_AÑ¢} UÕ?Ý2€h· ÁjÎ=£ƒü³‰IV)pq-˜õ(„Iu¯éd¢G®Øu=' ±ÖË6T†ó®Øå\1ªIîˈ'Õ< è­”ìÞ£šâºsbî¢ç³"xÔ"[ –}—³Ç ã¥òTóNùËùÌîÐ íøüzÁ§ ç}ì8 ?F$mDÓöQ¢ŒÕühé½qD×òy¬I$ªâÍ|ªiZô+Øñ¯GãØ¢R{ð5©ÒÖƒe@Ié;ãEôqçJßTh‡+”§š*¢Í>Õm™7x¯EN{Z»/_‰ÍéWo .´j­Û!øfö¡[³P„Ñ]vú¥ÎêõœJf€ÑZ4DZ·Ÿ[n/@²ZÜgãsÆ£T Õ›Óz]ë¼ÃÒ4yI˜Û:_Ê q©>Wk’ÊzÎäÈ+³¨›™ 3VˆÊS#x©lßCzÎØ&\[žÎĦ.1WÁc&Yò¡Ïƒ Á®}Ææ­[C‡m0€FF¼†.(S *:Í\ÕÚÇ軀 œÁ"PÅ%Õ¸À^]zuÑé0·O*J€GJ¾B9ôZ=s%)@cpxd Öäq½˜Qé”eŸh9Ñg—.ŸÈ ¾&‰ž'Ÿ²j¹ š7!¿N'Å‘I}"¦®@à Ѭ<<‚Ä¢ûá}±i²º2É…5ÒÜuć÷¤&f Èt‹©‹+{ÍNáÇÏ uÇ㩱o'`jš_xåöÍ•f|\mõèímMðH>×y.àtœäxåkªlCwkq¤1Éλí½ÜãbO“¤mk:\J·ë91Ý57”±e·¹0÷K2âßU/,ý)z#Ø)ˆÐǃl/X ™Ãˆ ÞÊë‹P°Aª:=²®ÔÈËOŽÚUìÝóÙ‰\Øê> mµÔÿ¥‚/jná(µí(ù·ÃëHPCÏ=" ÊW\ÞŒ¿ÙÔr„L²%¤ÒÖ³›s˜Ã]Ÿ›Èοå|%Y©žá|þ¬PwÛc™3cÁŒæmˆ‡òão%£²Ôñ­ä€F(sÖÈ¥¤ÚU¿”¦ÃÂ@§ëž¹¾ãÒÅ9l ì ’_ªóÞ^ÄÖs: L‰ñÃ;¨¾’½lsÁ5K …|CÕi,„,• Ý@*ýó¡|É\mL”YubÏŒP‚¿7_“ÊpXqGecšÈeDõb’Àñ² Qñ‡å+ üí¢s‹ŽÎ=3Žä“Äãg¥b/S“˜›ajhS ¢Mè:>=§XžJ‘®€S‰W€n¹ýÖ¦ÎnXÛää¿A“Óã°ðÀˆ±ùzIKÝ0ãëËnÍ£Ttp®Ýª’ Y¬{(À›ZÑ0=ëëË—‘lƒ?Û=XzQ!Ï SÀtY¾åË0™i~Vˆûxï6‚åæw›¨°UÄî—àWBØ'Â,"nøYÚÔ*°“è‚׆7HqîPÝRc¼BžŠfÜ×väÂfÏ3¢ýñi0”^‡c¢U'0ÍÇÝâ  | #AÑ3v!†+3y ËD›£ÇX]Eõ2šÒ·"©æFм`ý驨ë¼ëš† È]EÜþóx®™)(բ╒àò ê"U(Ÿ Âí–-B‹æ3¦*N§*Ò¾uÚàìØÏ+Z/&mÅ×v’.ëÖÈ!UkÞvü– >¢|5òŸÙõ‡.„‰7雸¸‘‹¥n^ÔGvisÍÛ ç·yµ–ãŸKùbêU•bÒð«îù"Ð6q up Y³B9ï§5íPr’õ¯3Ê¥K,¬&¤YnméÛÔ M[mß´‡JÈàšås$¸ßaÁŽ1 <|á/’íf‡jvÿIà\½ÈDÙ•:ðpÇ×Ú1P=貚=ovK]ùtY±L^}›t¬zÕí(Gš~x ¦$Ò{zª@S’OPH…ä[ê-(H[W^`´ìÓ &Cj„ªt_„Ž4PÎßváÇgzR|Û"%FŽäò*–þv;yÞ´Q¬ÖN×l` ^*ÕtÆnçÂ÷) ‡ªµc5¶!÷Ÿ/î„Djs!è@‹áÇžVÐȃ›Úe^ÊS¯ÛxV{pd‰E^B»þj Ñv~XF”ĸ|\¼4Opéôeš¤:¤RA6{5ˆfØáu›@ò¦ôi²´°¶ÙÁ¬;Ô2Uð²W×¼³c`ùòt¾ ŠeHëòÅìš"b¤Æ„â\ìB)>§›#©¬S†›:è‹dq¿×¥Zˆ#šÜ-#Œ˜,632U>P4Go^ ב‡• F/.üÔ1/ÛÊ ”X´à÷1LÑ<Óá–£æ± ·>>"‹aCj÷Š1ZstvSeÆ;¶æ@‹}ÞÏÿ6»Ï•\Gs5¬]ùì[ƒºPÎR%k¢ TOIù²Õ_æ 6Ó¯úµ…¬ô¨JñÏ3¤B)ÂhÁ{‰„ê(&Í´ßØ6 Ý<ÇEÌf8íêEFNíÁà8á œš+oz‘~UÕA@“SŒk7og%(%ˆ%“÷Z '!.3Z˜«.q ³<}gêLž]%lìËÛb~’ðÅ(‰ZžÕ%ö·ú"ѯ4S姦ò K‘¡SØœ\ òætÔC$Ç7âHÚ¢nÿP™|…Í#²*qwÎ/)Ý8_“¥¶jçdÒlh!“Ìl'傤¾\£PI ÊÆoa›Ôâ…¤iG)Uø ,©ÕZQê蘯ÌèL#KíJqo¢\°z#õîê©4¹+'ÊN$Åóä—¬£ôÐ ¤Šb …&Ú`¯ÿlÁsFàBÅî¡Áæ‹+tÏI­WAAQçì1÷ÌxcÂ|heÏèÆ‹ÇA­ùÂ.•Ô!Kj[Cܤ̀€((|‚ÆqHë¡èâïà˜ÜOuùˆòˆ,ÆFÊ7óÖœ6È Œõ ÃHl 'Q½hÁjŠGaÀª8d@,÷ì×dÊWrN8\YäoÕw¢%)D!’!˜4É^?ö…â„ ±0NÝ"·'òBÙ7”gOCíÆÄo6ß ‹Þr4'rÞÁaŽË+>5|3û)Cˆ¶<¡‘C~eF JM°¯o“v#ûᥚN ˜Ÿ²Ž¾'}@-Ò£š·#W]4³Ô¯—§±”Åüe39w(@UÅ\oìµ’ƒO†Q²déðHÙ‰[Ú`õHŠKbÍ+(˜]ÞMÜb$ÂWˆ`áæîª aüŒJŠV?ÂNY\“ŒkRÒ@›aúE¨‰fv¯zai!+äa}ê™Ís\óE‘î"¥¸[×¼ˆ¥NAïЦ7·4=ïV8ïª×D¡ƒ\~Q]¼T‘­aÇϔυÿÓ‰ò¤Ç¿sâjLµÒÔß9 ù× ýëuWjøsÐ[²! 6Äó„üëÃÿå׫_ËF þ;Ç ÿz¡㹎VË6 Ì'¶Î?õñÃÿ?;ùøÓôº:Ù_|›û§þð yHR§?±l{eî:hm5F›HàvMß&°o{Þþ‰·.›P¤ßüŒS„G.eõà •q¦¾k†×·NìÓŽ Dà†öÝÒšÑq¢2¶Mô!\ó ”•YoE¹øIø –` WÍ{:Ù£9HùÒ[±0Œ%½Iªè w…YÃÝy$Qb'h÷Ø[Q“¼ÏäQ*Õ`ì›ôv>g{£ˆ@6~«þœxÎZ„yƒ×5U’<ËIëÃWÕ8Xx{Þ„i79Ò ©æMŬVâU-G &Dš"Œæbömk1vù¬©YœàÇþ$U¬W&>ûIXÇ!ÆïáŽÏ·)Çûš$X¾ÜUwæ¼Ï‘Cõ‡<Òãˆ4MZYw+Þ>Ù„“²Oü|-‚æ1À)OjÀ[Yü Ì‚ÝWB4é„-Öô}K'»ïÐ]dLÐìèoàW6“R¼ý¬;ŠÁrôkž%ÉõÊB ýJº¢#úÞNZØZ>µB‘Ói.;NÌ/[ßñ”¯Ì­%9’Ö|¨ã™/sƒ¡Ýxî…b[xI˜ÂN˜;Ì:ï¶)ª¡v–’¨r ?»å~)Ý«.6ÍÎõ‰‘ó'Ñ’6…“¸oÕÆÆ+×[³xTÃ9¯jMÄ XË×´ððÍ7P8+#Å`MX„¡9í/&§Å%žʳûð}KMqë›Ií‘认÷д …3ãΈbܤ¼·œwxù>dR‡xÞ“¶1¥Ò3æSA”:ÄS㸯xºÇãÝ3 à•¥ Á5w{$9×"ÌIÕ`üÃŽO\“Þg÷ˆ‘T-ϾQî,­½Íð]k«²­Ðtdià7_çMðòõÜ7ÔFð àd·- DÛDb$ä½–ïÑØ ÃQŒ0Ú3Z«îËžÏéì¤qŸ”¨I-Ù,˜Û¡“à°¼ ‚¸ÛUÿì—ž% ›= ‚ؤK¨‰X¯üºI×1|BЛ(b[¥”БìÛæZÀ³\âÛy?¼54§è9Sd hNÖ»Ä}=ÌÝÐðî5šB¾ÝtГýŠÆ˜ÑAÑíDé{sˆ1ãîú‰³áÛ³(™ia92–ŠpƒrnÜÅ¡Þø†fL/$\3ÅÚÞ7D £ {ö>BIIàÅlÏ× ôýqö éÙ7E“g#Õo¡úpÑK9_~å¤×XŠéç¾Ù¦>H5fÂNhFµåÃèMƒNʺÁ½ÁÚŽÝTN‡7é‰bjgNszÐ÷ BJfÄ1BØiÕWÆYr…Ù.6A´j:H*L3-ÖL·P 7ÿ&ìÍ&ä«©éî‘:Æ&S´ð õ7Ž YÍ7”L bì%d6)ª)޽½À ±GÓbá†Rô,蹊/þ!ÅCÃsbk[Š)AGÕªHjô(nêUëÐ6A‡.²ì¾&¸”F=¯o {ƒ“Ý[\4âJ·³a¹qÛ¡“ZhÙ•úã1_ÑYoŽÓÖ oÁpƒh|Xjné|¸‹à"›&sШgC4c·‰J6h&^³¿!Fj¤rÉuÁ\n#<i­çŸ*PC°0 ©Yz Ành·£ƒMhoÀü€ò¬)ØÞJLqBò¿ÙÕ¹‹÷*+bDG§ô‹ÖƒÊM!ì§íß§ Ïì:õk£”GLðZ \8+mÄ=B¸k¸È×|µ#fCŠ 1ØÛO¾§,–/Sà2j(’1ÞËGl«±’_™üƸ{– ¦ÓŸ¶K8Xu›@2¸æ:€Ùk”ÏnÄu>¯=ù_È¡“*q"ó“#e·CòH žjß“$ØÖÚŽ[·ð±'Œ‘£µ‚Âá+D-¶æ?eoá8Ìà'@Ä8Ò֒ಪð>LˆÉJaâßßkؼ…šùÝ!²·j¬Dÿ³MwN6MU ÑÀëÃy·ñªzMLI¶_!ÿù„_¡Eh @9c¤èÍôc´`¥“Õü¸H¬œªKrÁmIÄ7Ù vˆ>1ß‘‚¥ÒAÒH$‹µÝIÆ5cZ¡â;wBo{À’Q®CrSë)Í%5L4Ü&âaÐ ½QÀƒbZÛãƒÎVE#8¨Ò\S•ýʲš¾ûˆ÷æ„o.øŒìB*ˆY€³’üz¶ ±ÿtÅ–‹Jn©™Œ’"ª¨iâSFxm›€…›:n^°^œ‘cÞ5“â4=‚¸<[»‡"©ì¨]ÅÁIåHÒàdÄ¥„ ?%%èWìËššÊ¯9ƒãB<Œ˜ñÓo1XŸŽ1Òx/‹oݹ2f,ÑA±½nÿÒØHC¸U•†Ÿ}CÎ…ÞguÔ®QØG°È\‰œÛ¢o™2"’Œ v}ÙŸŽgÉòµí»¹à Wk§&Å=ö —o\»r—_fŒ1˜Rɯ¼á˸¾ò:6NyÙê)µñ»V77ñ É¡Ñ\oÃjžÛY $!ƒÀã;ÆñD)i‘ø“·o>†û:^0‰BH¦þ²aäûYÞ 7Ù7 ò›`€¦–z*2=Á7!Ä%Eú~‰Æp—µ|¸ EÕØÔíÝ-»XwP“ ‘¹åÐÐŒë|’›[ß”¹Y·Ù%fãÅcÄMÝXÁùì17˜ëŸjÿ¹,‚/¡Y¢Î`©he®åkî1ƒÜÿyï·_-d*‰að+®ùŸ¦IØñoØ‚¿KÌ §‡¸?Y“ÚÁ6ù²&D(XŸU€Æu5ûRâ_vc2=s½ù_v8‚=LôHÉQê±ØãI ·oÊ VFŒ$N¾|6 ¡µ³â/>l>+ uËÌ0–ÛÉÃG§aÕ«÷(g\šB½ƒJ¹ï/$ÇHNBz=b0ÊW4ƒ ²»%jÝî–‰•ŸîFnsÒÏBŽÝp(íáÇD|¨{.ˆM“+Ùˆ¹\ĉÍgK\WhÞ [2'ð”—1y~Þ½ Äl^+[v,˜òÏ›œˆz ˆÁ1£S‚jW(p#sþÒ£¸Á¸_PCdÆ?±ÚÖv®I~aêQ[&ï0Cg‰hI»(Á6!yôÆeUÉq3N-Ùq2ãO ’º”Á¾•Î27ÞîövÊ"ÕK8ùjø#TßßàIšŽ®©'ˆk O¸9•øc ]ö–Mͼ÷#Õè™!†Uw@ƒ0ŒRrgÒCp÷#½s)ê{TC5ü!ªÌHlêÖ‹òE)‰Ôui•%§êÊÅð£^R?L2úæŒHŠ!ƒìç“\䌶oâª?Xqc_ðRñ}æëŽwr¨ \£» ¹.]»8#´cÚý.Ãqõ]‡«Ö=TO™ ‰Á“ŠÐŒ¤0 Zäˆö  ‚Uð ¿É¡gtè%¢Ú`#Ô8z“ò?ÁüŸ†´}‚É—Pºaõi“1Þ©åH[°Œ«ïPÈÌ@©±p ¦ä”êÙÉslj“J#­W Ò*‹<^Ó¡^éêxßs¡±ˆàM|°'ê¼ G""5&ì‘·/A±ålñÞ(@1ÎÊ'z£¯ÂÐ0[`=³ îݪ»±ïâ?DàAªâDÀNxB‘ÌÛpKtº/ÙN,kÖ7ÁÖ;;&ù5éV“¿‡îCô渜²Ç¿IË—ý†°·vL÷ér·êì¦ÖHÁîööÆÄV”ÊýH¥¼%Üš°„f’©ÁJxò8V¨9ÀÁûVƒÞXòbDs(÷óJOо9ï€CoÕA2š¡d¨Ý¸FãÝñnʪ¾‡¸þ™}˜¼é,ä¥> OJw{üdÅ­=—”¶É 6? {˜Yò5ˆ¨ÑjÎr\² TL!:@âD)çNŽS…Ý·:nã ŽÑdH´ñ¯ÏU#×Q#ÏfIÔ~-°7e‘4ÎÂêHž¹ÒÏîÚÕ%·—½Åò”ª$¤0Ñc†×–çµ±¯×ÐOà&AÑD33àö"бÎJ¿²…Ú)@C¬FóÉÍÆº¸È{Û÷ØwÕvMzP‰)ëØb$¾¹õR‰®³…‚.w‡ÞbÞ‘RàÔ´5Eùz/©´Ô™äø^¹<½Å@X²ñ"ÊrL-‘Ѿÿû]ÛvU$h>õÚþӮ¦ý‰¹¤Üö³¿Ž™×^ÌõMA´°ðÅÎM•xªØ ÏùÆÄ'&â‰TN»oìDeÕ݇N…- á~‡¾}†Þç+þ[«‹8h[â–)_ и!U…Ê˾UÛB#AÎE•̦b7Öëû±™õ´57VC`î;OjOŠh÷Ùͳ¢KðÁ(ñÁÌÝuA:öŸ¬EºS¿©Å4 Õw¡’4±]TëM„[Q •æá$w«VŸµˆ"k›H`ÃÉ¡N&f9¸K„ÃM˜`~ß{÷5%á›ö dÀ+¤—ÍÔ6弨¶0WLjh…ð}~Š£Ì. n3Æ)Ã×ÜÔ6î —È UßwdÌ{ûEêìÓDz5;2&´Yð†IHß}JÃû zƒéÉ‘”¬&ñZò=Äd”M)a´ù½3ë[„¬¤¡1°~ÒƒæúñNª^Æý‚¢¶Q/E‚LXÍòöŽfHöº[.˜|*þ,¦‚Kô¹XIÒtß&äonUüåi<æI›¸ãŸÐl ÎÍØføí¾] € 6ž8+ÄêRsK#à|<áËø”žY:@Û„«$ò+,q;o/{ÔxŸÄÜÝ0á`[’°·ìoåEh¤ÅLž$ óF»o ¸RQÓ@)Xz£_éW25ä‘46âÐBÂa®Y.½{ÁÇM­®"R*Îg!̨ó]eš—Ç[Y‘ 5\¶sá (—îìï Üd×î‡wnH÷Ðû^ÃæüxJßÕMŽ:ùmxï^¾ Jñp’q5·ð¬ᚤíT|…äÝÀˆ@ M´|[¾‰+þwÁ²®áÉ\*Úµ+âS·Úæ†%3Dm+›j'sÖÍÊÑ4ÉÒ; ³È –Ý÷\ÊC¿àÀ°YC¢©*ÝCÙšš·¹c ½yvuÍt4¬ž{1Õ™Æõl5 УtGy:мl 9RSÇÚ¾‘£ûø"Dâfœç@G”©P×QlMä…ç¢~õH{Âû•Ó4˜«˜5ÔX‘@úÔäç`÷5Ñ*ÖÈsA0«y \ê¦Bá5cD9'§þ>ÉïiÎD!Ie¸\XâùXן<Ö¶MßÔ,¦Úa”g^' Œ¼bînõVÜJù¸lá' Kà&ܪÂ7uÏŠ”Nîä3‚ó÷9ç N]ù`.îïWúׇ¬æjÉõ×`ÜúÆýýéÿòŽŸûûGãþ~¥ãµ5£‚üá³qúÿ?÷ï^ÿÚŒ¤T‡áÿùc!½QÊÿý~ÞÀþ ȾþÂþýý^›ùü…ÿûû/^k‰ýü…ÿûë/Ú“—Û¡ÿŸ¿¾Ö_¬’÷_œü[Þ±ËÙŽ¹>|ÅŸ?¼dy[DZg¶> QÙÃ…®ŸUqV4Ê» ¶g¨`ÞÔË;7iîøÙ¾ÁxÎ=b°á‡"qœ‘Öz”ˆ´à†„êј­u·ã¦-³îVƒTÎËúPé=ʈÖÈ3 [×,7``}(ÔàŒ—Êû‘r—=Bîò̦íeßÀµM4gñD/íQD0ŵ+ó,d®oªåáò>ß fe;¾^"çµðU6Ø·ŸQĸðJϵ­ÏV’;ñ†u͘‹°y'$¿VH óÉ!-«@óÍp‰xRp×sŠ!I6aÏT;—ÏA%m|”qCžÖ‡EÖwŸº<éš}k¸‚Ú”°³ìº>ìãô¬ÕsæÄvDÏ‚ç,Ž“qÄV¨],ØúPýøtVödn²}é.¹VHd²¯·Ý§žq|Ùý&Tb&U£Âa6ô—Ö IüD»Ìi¬!Ÿ•v½ÛM·;¿i¯l„‡»òcà_ìšjцoî!©ü²û­§Æ\‡©Ó¯¬Ÿ­Žåœ8ö—/c#5nÓ»Ö±gÿÌÃí›’i…onú=gwö i³­oJ&ç„NêãñÎ|’·“-^9ÞмéËÛ7E¨€k¦(Bɼƒš_à­<î ò[æ»—ç­°ËŒ«4H` òD»ìQnгvx%ÓŠþó½õ0Z€æÕ:+-†+]\‡Fº²—[†·~5h³¢8áó(èÐ_Þ(Nè»nç³ù)#긙±¦qÇ)¶Ã‡[ûé,|­G‘À-†äO€Ò|™ˆ´xÍ~‘dq‚º«`|Ð.ÒD×òikžä†uCÑA{ü¬™·Ût÷uVD}ã¬Cì¶³¤mk«E8¾i¹ƒFÀsîy§/[¡oPl²iÜ´ð#Ú(Û}Íô({ðÆª¯å ´ñ±`Á¤¯ðâÚ¶è¸<«½IçOYŒåtï¦à´¾–Ó=ÉES öÙñèË$ŠGùçc¿“.GðÖѵCNƒjLr¦Ÿ­ž'{í>µA‘ׇ¨R¶B¢à²íëŸmQü &:ñ¢!gµhýlױǷ"FY“ý!…“ûð’{÷¨SŒRåtÎ8~Ýí+Õ L,Bò Ÿó¹5-óVnÜÍKÖ“wü¸ú²=•ƒŽCÛòßpì߈oÉ‚}‚_´ñ!ᇾ¬H—£šáÏI©—3,1üï€+$Ê‘ZX0Fí¤ôHßì‘z1L)&柲&1ªS˜p“­™M‘ñ»G…#ü­“òl‘ §^c<¿$P1»œÍx»¸«õ³Sâ hŒ•œÒ6ÑF‰ÿ˜Ù!‘ëIæÜŒ”¬ <ç{ˆâø7DHằg^f _¯áä ì~v„è3½ì#bk«)øÙ=4s$YM²Ô=F×’ÁØ‹pz^˳}á9ë ’ ã§^IxÙ½CüÊúåe›IU÷#{$!…ˆIiÑî3ýÇ[h· gBlÉ©ðx\„÷^ÀÓù¤q(_¹àÙ6c+túú*àÍ/ëdkî!ù{Fí„䎞·)iÛ÷„!Y°êÜ­ÑÉ=ˆ=Òœ—Ì"FA¸ù&i¼>”rçÙgg×ôb öª ÇðÚoá¤ÎçYw0@¹]6Ø:HÍË”éÌд'T`ÄÌ`2R%œø ©$F^pD¡’kËjüã»-7‰Sï4ˆ¾Ùâ¬6Þw]J¹)ä.)QœnŒû%̯ülüû¥ùæ`K–ÑÝ“¾k:XGzn匯 €¡‘Ð鯭)€ƒ²«dÚ}Ÿ¦µ"c“M˜îí;:€=‘¬æ.P¦ÓbùØ—‰‡AèÇŸ§¢á–B#ƒ±_ÝmìŠÎç ¢Ó]™í“ÁÀäT….v·yII m–¸5¢aR1p™J,êzïU’¬ªø‹\OYË%Ű“j°B%*'³Á!_\Çú¦”Ǩµ©Ï·b4I¡q¨þ^ŽƒA´æðe‡ÏÆkjôÁßZL-ü}¶¦wwûõœ”(J°!Û©x àwe®#]\Çúf*×c¿uº)üø¨hÂ7wÉšYzššÃ(¬«_a Úš{€¢=TúÈÛ?n©w° ßd×WÈEö(øðÉ.w¼/ûù¬X·ÿe±å¼âfaΫiàçÏ~ñ5!àžÒ¸*¿¢ F™k GG\Q-&h#T†N*ñÕÙRkÜ©˜Øù|¯ïs«¿ò£háÉ`4wˤ`f<_R/‹ãŸß\Xš ¹P)>cÏÅ‚}q–Î=ôÅOàœWû–üÊÚO'p¾^¶ºÍÙR‡®3nM…<´o“?ÊmÇÇ[ÁàWÃC)ÊCÌ£/cÈ@Q*‚*m^×vÆ,@:ö3Àª@}*mhÕ$ÀDY}x¢°–]Ý‚ßõ>…Ç7øÙäX*co5Š£ŒS‡4,²hÕáNì˜ÝôqÞ1Ud0ÈW¦C9ïnú8ßçZђδÖv¼Z—1îSæÊ ™xãTâÜ¢x´Áö¼W6*YŸq¼2i~â6Ñ@aŠM6Ž}¶~–™Ò!îG5%v:!)…6~ÜfpYhw[„ïÞ|”h¨EØ2Êäí% EîÊüç¸. ŽÁnƒêí ©¶Œ+ƒÍñšbÑÂýi4oªƒ€qÍ>›ø&»àCk»£qZÛ7zýØs.κ áñ.¾@,ƒ7Ti˜ß5Wn’^Ưö-µEèdºÄ~[>®—5Ÿö·È¡ºŽ c©ON®#‡œÝ@•‡[Œ ‘_,˜ ¿!.<‹íÄu$s\P¾B–zÆ7¹ô§)öÜæ”|m9±¢ƒd±™Ö{múXå©ášì?Ëœ[üð²çÝã‚ò¼×àWuŒç˜4pzA[[I`*-yŠ õTI8.¹L)fÝXz”GðÒÉôkNe8ŒÁ@šµÕZ¸­4ÿV{oCMÖÚ*p¡ã°=]sì1[˜éH}‡‰•ÁÄ#¥Qïåd¿·Ö s*Í3Œ¨B%<§Ô±Ê¥%Pš‚L×Ñ|г^fà‘r^¤ð¥rI1-[–†R¦ˆ’ë(^‹lXñßÙòéí¼ð^wBs°ùñŸÝ‡[³Ý†Ñ;˜ «R.å‚9ìíÙnÑÛMø›àñ­„O ׬1[ƒùÔ8¨@ÐÂ`Ð5ûÖXfÚÃAÛìR2Æ{x ¥¢,Æ&1W#ŒõÄ寖ZQ*“Vc~/ÊÏkáG¿„VÏV¥ vB‰Ô‹Ürö=DC·® ÷µ#èÔJTÂé­ìV9jÞÞÃ`r¯7M{{Ÿ’9ÇàWtlockrKƒÐf¼¡è&çIÅx+[\¯Ùn)ì­ˆÐÄBXÄjÒsy+fU/cMp Þä׬P*ZŽ®¸,ǚѭŠ#¹ƒ]eÕ{ÿÀ"ÓˆSFú‡XùWƒßO. +!ùÜ·ìÃ!Ø‚%ËÇ*-(ÁÜ%bH âó¿uƒAd”'²H*¡¼1i€ü'dÉH\!ÅÜiâDˆ¾ü^èèýÎOx½lÃ`CuŒqêéñm¾œ²k£É—‹$q…"ЉÅs#[Åš´öˆM(zû”¬±˜&/Èü!u2qTÓ5µMj˜7D\ÆM’ÑBu)ÿڻǡúoôeµ}3Ñ(c¶¬A*„Õlb·²jÀu޾aû–X•V±û¢¤!Q|eˆr‘©_3þ“ÿD%æç¼étu¦QÝ~wgèÀVE¥ q󍿿"ËÝE~¦B"¥$y €>̾‡(™ùnÇP½ßt€ÍEªê…I¨u2I¯‘ñ[ùÏ«†Ð,|ŸÒ<¢:R¼ŒCõ¾Í¨€&¨2Eí"èÐË µû:¼,Ú£.k®¢ådFæ;|ž{2³ñ> "Þ°CtVv3>%3[Úã²¶íò³Æ7‘¼0F©j¤fZïsÕ¶U„hÚ°9:a O(Q†cˆ¶ÝFÍX¨.˜ŸiÚ¾‡ÈÔìÜž®¹-5È¢Bq'°Êªô>kôó2ÏX< zÙ[z‡ãÛtÓÑ7RmˆéÅÔVwµÐŒkZ7`Ié®ù&ÀüMcÁ—ýÞI›jA©tršÙDuMÉdtRÛ„B»7Šú'òkÏ©¢._ŒDÇ?á<Ÿ_…2o;¢ã°…+N<ÞþÞØ·i÷ÔÎ5Èa¹Ÿ|ï•wá/«y²ºlßúû¤ÒÂŒîv„N7…;p!\³8 ^Ø¥Á¢åJ[úå­ˆƒÆâç&Ïox|ý%ëÐÚ2íá¹Mº3K} l¯ìÞ õ!Á¾­1×–ŒTó»e±ùAbÈý z‹H.eƒ1îzŒ-Æ¡pÛZˆo2f,-„cò­éʆ7É s‘ Œí?Ã+Pô²‹)’âþ•ÚfgEE`.Jhø6¾Ù>Ê\ÛoLìæÇ™»»Ÿ—²«=À€‚­XIãc‡{‡{T³;ÓØéˆ7Îbpï]³á×zÙ:KFé›ì:Ê]ù¯Œ…¼‚¡ÌÚkéSgOßëOø…Ÿðßäó)¢ìOàF° A#ºd1›+ƒÃJ¹bc¨® ‚er»ž•qfg»O]E°BÙ‹,]·‹ú„ mÅÔ5Æ03°Þÿý³D§kŽa0ç7‡æÞýMÖTÁûRi“ø&·[:OŠÞgrÉÒ’;_ahƒl‡žûáÝp w7*±¸ô©5mƒ½(y±1)©{hW½D¿ÃEgI€à•í~A2599Œf‰DÅ v¾‰RˆÝ¯;áÓÊhÖà]Ãu°fCŒÆdi{?Rž6Jü?-ïÛ³®9àV2C9o½76Rj!ÿYcò/k#jùÈÑ}ò2Ö8×°I¦%•_‚Âf‡‰¿)4¼¦IÎÜÓ&Kü¡¤†T¶š7Ù”o-Z<ŸíÖÏHˆ™?$¸ôtË&¹¨zÞ65#.é†NZÙæW¿¢ÒÆ&äb‘È&d'ÊÒŒ<+qº m°ÂM’[0V…j¯q¿`h¯1Ós^b°ïººHé~_Ùh3—3ÔõÇíÐM…_# ,ê+„¥ ”ÞÊÄþ•­BnÑŽ0dRÙjf·šôÍObÁ•Ó{g÷î·'(:GA™krÃHôåK“´˜7®E`ÉñÞ.E‰tMIvÀ}‰Æ•bþªŸÀmßwDôÓxû›" HÛ‰8.[d”Ì[uÅÊ›·w?/ëÕ„Düo‡—Jó[Q–®ù©-³»KE?!6ÿ–Ðd¬&Ý z€ÔÎ%ò_Å ¶ x—vKÙ!öÙêse= ˆ  ™u©RÑ…zzÇoghé‘CßTbZÛO§+!ßGÌ#Ë}Wqx±ê%r.…“›#Ê"Àü$;´M*÷—¥;Ë}“âXcN¼Tz+Åa î9ÑMÎ*Óêå 5Ïf¶l‚´Ü‰ö@Çc_îâ¸#|NfÔ¬DTÅÍ…¥Èx \ñ´yƇ¢Àá¤àožÄÓ¯¹ 4w¹õqóR)ëè¥2ßD(™B,ƒU¦ïM“¯Ûxy6•˜qM! —*NøàVV)4‘ß](¿Ž;¡°y+£œi팦Ví9tQ¾¸¢X®ñÐ- l©ÇMØÔŠÝ¾Á(´+ž¼ˆ¶üȳÕÔù¼ˆ‹°ÿ+q‹¡Ët5ÆÛu\déï,ƒ-½ÃÌõ ’ŠÐLªu|JbL¿º7eý*³1£ùŒHÈÛ&pï^”mø›"† ‚¦"0wvk¢ O‹‘Ä-ÜíR$X+TÐŒo9¶Ô×á,ÿ0ÈWçèN®³Ò<Ó¡·¼õXH7k¢ÕüÔ~“Ë£ŽÊaŸ©ÄÂj¸Š)M2„Ü¥ÖË­rš{@ÕƒœÒ)Ë18™•bŒ—æÛÕ-ï¹ð|Ê‚¯É²ôwâóÖ¬§1f€Ç¢I"ó²@–ð†¤'ÅÜÉv/޶è=8mü3àò÷9ç€Q]ù`òïïWú×GÈ–aÖõkòoêàèßßÿ_ú?0ú÷÷+ýïmš¸Ð>ú÷÷§ÿFÿþ Ï4lE¬Ûô?ÿCÿLû¯!¶¯Íkٟ럟ÏS2–Ýþƒø÷×_«ƒ|þBÿþú‹fÀçç/ôﯿÖ¼ôù ýûóÌ‚vë‡jÕä þó?šqŠôÏu£ñ¹qé?ŸÛ?¿>o¥ïÏýŸ_Ÿw›$³?÷~}>L yîÿüûê/þ©n²jñO:NíYbëTLR5„½µ Å‚T­t}óÌ—R1¬h­qü÷ÿúM[àz“R5,w]ó„¥Sµ.ãõá™»¤ü¬@¬UZû?ÍŸkf@S58¢µ¢äT­ðÝÆMÙjå­¾×Ý&”t] ÿs¨mùλÍ&¿ØZVYú¹˜=J¢*¦;b7t.üÏÏ>¯ýìÉâM5¯®5[NÅæÓÚ™kêà ¸jJÖ »ÞÊY¥I?_yª½¸Ûj{Ò®yÞm²ˆµýÜô‰Y¯ïm÷ý¬ø%lHy©deåòVÖ˜úöšÜܬ=t¢Ý©¤µ'›¿¹ãgßehÚÏI?#óõ(¶¨ŸxÝmîöÍtMÉfZ´J-léÇÅ®—]ñd+á¬å;“Œ”Óúÿë›'~l7äÇþ¬º¥l4åu·g±®ùt[¡3wY›º ûÙ3ÓJŰ¿µBt¦Ûzê}HÙˆhö>ágíNìQ`kš ÓúÙ³½¶IMö³'iÖdÚ69ë;kÇÏá?ËÆøñSv¾•jÉöúYXøf8í:eg±}YÍeoë„úNJ~·•0”µ©Ókïó„N×sš©!VYÊÆÙYBÖÄÄׇ`Œ‹Iÿ¬i ¿f¥kv›ƒÜ: LÙ.Z}±ÎgòSvÂAëšµ_/|£jñrë9ûƒ~¥¹©IPZ&õ'!_¯ììöYžÿWkòú)ëèЫ[MjoXoE æùkU· `0–_I¾Ð Ú[y³^&Unùä¯o.“Ú­íÏ"¬ú±&'¼·6µÅ Ôª·6XIþ²ÏjF'[‘!X“y¨£s•7Ù AàRM7z}ì›K{Îs…Ö‡¯}xäVl’ª‡°ŠÛø °e‡F±pvØÉöxˆÞŠ1HÖ Áüy+¶Áð­¬pÞÍø ô.ó¶6õ:+ø(ïpƒ§,™[^ |Ùãv(A]Ò|¶¿2°š%¹Çç\Þ¡xØ ñ­" "ý¬È¸]Ÿ³ZIhýìIì\׬ã6—†ñ,=®mÒ‹…pMcö[”z~جmÎü ÜŸ[‡—\‡±&,€8¡ù{ÈÔ«×7)ž¯à å×k@Û~ØÝ‚5ÉÍ­æð»Þbï‚üj:ýfÁpÇ[ÜG¢ë9_?`5¹nÇÂIëƒ_¾ì,-ÿ¸I…“]L²×l<„ž@5êMZVs¤k|kÉ‘-$Š&Ë~ yŠ5GšG‚µ}ÜEúæÏ¦.¾À¼-°Éß'X°býP7Ã(SC’¬ëÃö؇gÉ|-ßã ŒTz<ü Uªu²íQ8Ölî\Ñ ®Ãëy6|³L0pI¯Ù„:¡ŠºÌøôPzòð£6¨Ü®»µó™ hi~¥¹ÿ„ VÝ`P»ç²&Ù· û•éξù³5—½ýY(ˆ©³õ ­á9ëãFŠ 1k÷{FW׿Y +TŠç+•⡟³òøÖ¤ ÝSé•@áÚG"8ø5ÈàöV²¢78ŸÉ¶5À`ŠfFê¬.._–®(ÏO”Ú«G©˜EÖtƒFЇ@l…Ê-£[w;Â÷ùV»æIñ]';{êu;×7§‡“àËjÈn¨ÕÃDÆo€GpV~ï25•¤¡—»zÝ€»*Ó×–¤Û×ò½‚ôàÃ7BXëë€ÕƒáÇðÌ5ž§˜im»µ«¬ŒvßÇgŸŒƒå–_OÂášÍh9 ‚ì*;Ç" Ø` ?¨½>%«þ¯¬ƒÿÿkÇO‡`mW2ÓìgÁ#…a$ÖÊÚ}Å£TH¥köå#†´*ÓîöäÅZÈ£µƒñx¶ŒqB±MNæ“å½Áòýœ•YnÐH²þÓå\ÁåáÆ8ugmê׀ɎW«4pñËgÀñc-‹$Àõ(GRu·ÔÄâ]Žêæ Ž}÷Wöbð[v¿²Lù,Õá&•×{•¯ ÔõŒ›C_ã=„íîè¨7)¥ %°ìíãAaÂÀÅ4-ׂP=9`U9@Žª?ˆ6+bDoßž_rûfº@ëCÎè†+ÜC½UÊ˸]/ÀÀ2<শœe0†Û¨¯”×·&ÆñÅäÀÌuÀËVbArñË#MK`Œ­ûyÝ-Ù!w­bÄ8#G‚=T-ô_F LþÊ*I²Zéï¹­mòt¯R§Fr\m= %PÕÅJîª w˘;”×Ù1˜(ÖâGzÖËž¹:™«{ûLûöç|®GYU¸Û|ð 0ñðJœ%9+« ƨLA²feÚeMôÌŽß’–|ò‘U,Ð v•¬Á%3­\ªÒ¯\{U‘0Q¤ÑˆHoé‡êTõzwnv¨ùÝ’vÍzÙ]ð7ž²Ôn6¡t7oÈÈ)Óí)÷. V=„%6Å8æRçu« ¡zé&!Â]½”[ñš²šÔÌhì9-xÞfË×Ib׊Ýùº‡^Nê02 ÃI7g;ÙZx± à Uÿ-TG”‹³…9´‹Ìµt™ÅmfUñ,2!ti ¶|ç7ŸáA~¹Ñ½ÜHU¯ê§,cׂõÃX8Éœ|± ¢ýT¥ášd†ûãGrÁLO:H²` [ÂoI©.y‹„Ql±â¯žUTÃà·©Ö‘É/FÄë©m¢žÒô!#ÝxNéžÅ:æ®gÜœpl•3Ôh´î] $™¼LªÐfnKn!’zLQuí[:Í ì£KÎYºäŸ»ØMõ²ìq|Ö£ælÄ÷67ï= ž¶¤8æ¥ ¹€n HΪhkŠÒwl©˜U¯¨ze¹FSÖ©a'ÛQ; =xsŲš”]%O1±å(Û4£õʈöDã€õéõ¶µIA~õF“Ž qšŽD0…ϲÅB(Û °¶Îm¤qg¨÷ÊS[0Á¡·] ÌOx½”KÀá+ùJt¾L –jlbôpdŸ ÓL1‚2MŒåö4ÂpgWljªÓ—+íÛj37ÍÔ`ð[à Èý·N‰šc›£ËÑÜBÞ£`ƒ"Ô°¢ø8j‡=P={e¦ÂݽÀÞ1Q¬ž—5šS¾îöÍ7ƒ±JEn©i÷åèCg4K¬FyÄ "ðÛ„®C¡G= ¿tÍ]Ê…ZdõP“ðZ}HÏúÐݹ=rcŽ F‰8BØá˜qBÂ~rN!VySᚥD›0„¹XO°pú'%m*v#žP†_¤¢†N3J¬þ)â׳ÇJ\‹wÛLćœÞ±âxŸÓÞJ.1Ø¢ZT†3â–·•R.̸8ÃjhœŚék:œnrÈ{Žä“ÐA6°`\là ’¶2ÝgÓÔɵ^·šp>Ëë^«{y¯†*m3ú:`kþØx$ÐÒ¸&[“æà.5¹XFE˜Ù/«Â+{lbƒmX„ê]»4Æ+Nà•èA†Uñ¶oÚšÓ“ÓL5ôæ¡@Ç ½4w‘xÍ<|áhª4loZjS<Å{,¸ û„½…óÙG–¼æô€w[r°F¨÷ ;ˆMY¹{|‹4–U_I¿d+Xªˆªg.Ï­‘Z¥"$¼×0«YÇa©`MÔÓ–)Ë–`_Ú¹ªÚ(^ŠÆWY¯_‹£Õ÷PóңêE8µ*¢m#h`ŒÕìË-*ù !÷âxvŽ–îmÁº}÷“MZ› yªÒ+ÈôÌõB|öµ¥r£Ù˜#ÇY#ë•¡¢Ïã\êÿ¾Á eg+)Âþœ˜ä›š¤=Ì8Ça§Jšù«½9ž@}tÕÛE²º¦g‘Ìޏ`‰3¤Z Õ®ÙÚc°†[³xÒF+¤öYŽŒ‡h±]$¿¡Ù@œßÝ£HMfº–/£~oZÁ×4,8Hs±Ô«È¤þØÔOðÞ¨GqFÉš¶f)-|ó®Äò )ƒžã¹æ¼)t"ȹ>ž—a|[(ÛhBÎÚ É™*T *,¤š  ›š«£vTs-n0HhÞøCW‚Zé ±8QvÈRM¡©B­Uͳå‰\Xµ4¼ no /÷¹Š,†èdò «ät: §ŽÆ>üÙÒ"G‚ƒ”dÞ0¦ÎÍ jØ­ú€Èé$¿&³ ²‡YØ}\Gè,ÁNhN^è\*òê^T*ªÃÒÄ­ù„1&Òª w¬Ö¶^ðø4\]Û™f.+Ó\ .RD< yªóÞ]cõ’5%þ›IF•¢»"¹¨Ö¨„C?Ržqhkö ÊR?ÒêTC—¤)…p¨þ‰éÁ«áe»FNO”GRJ„I©bÒX5ûsÒ0K+Ãù2ƒ Ñxóº=w“G±›é®eë1B$åä¿{•D± 6 <ª“¥~¿eºNrÜ„[ê¥+@ó -çõ&RFy¢GiS#Y¬?ÑìKÙ²Jb4ÆkíøÐ ÄÞÚG…JÂ|¼'œZêŸÀ5©ó¥ñ¬f¤‡d”UÿôžÚ&'§ÈcÌ®‚Pß %s¾·k.Øé¹5H­öïÿ¤:ïãÄÊ›[Þí:¸¦ã±.‡7ÞV*JdR“Åš{äI¹~ÜEFn½•nËG5ö ÐYAМlêݼMbÞ%Ö‘ûñ)‰Ql"®]BÀJÚk¸oKŽÞwŠÆu², òQY¬(@C(:—y¨„R»_óÅbï/cVWòÞ Š½*ÛÔc“Oc¢ê*JPïÞ뎩þ¥zØŒ”¯î¨]gTÝMÍ¥³»x¢X‘ŸP\Se¢lJŽ=Êã\Bt:/8XÇ36Œë†ÈÛwß OöŒmB¨ìõÏçÂÈyõÍó …B¢ìêWsÂ!1ZSÀˆÔiX#Ö”§uï†ÃRnu¹ÙŽò‡¥ï&&4¹¥fzäãM<¬o2¼ºÇ"†Òý ‚ÒupK Y@:eÞ[[_”ŸhQ%¡r†Ëv^(_¢£cF×’ÛÛ„YdP…›Ô Icæúª°þsF)ömê.\Á?› ¼Ï+§q°] '•’'bjˆ5¿¨PØVš=øåü³]›ÔCóCBÖ¨" œYšètJšôì~ú¾,U("?óÓÄÀ• vçÁùÌ-HŽÔÁ>d¨»ç-X”x£ñŽ\‚qNÌ@×µãG©ÙSLÖ~¢ø×|\ÔyéÕbsKó €*á[µ¨mÖƒc0·š»©!3^¢‹“:Bj`©TZhß2Ê#põ—]sÁ2 G8t²}eï>Ô{kN…"Ž‹tò¹´ ˜B(l³!á7K¸HPÒh†{·ÎÚk~>¹—äÃ.%†òk¾¬WT=-ü÷ÃÁÝú^ÊÉ‘%m v)µ`«$Æ+´¹“¤Dåìï†BÒÍÉbk®}·Ï²¾¦Û[*2é ±Lr²4ˆÓWVi醱cyªÊó¢ÆÜâI©÷€AO7ãô(Õ/–U«$‹±#¤<‘Ì©™ÑÀÈ9RòG¡\pDq”޽¿²ŽmÙ½ƒ·Ó?û:6.:¢ÙCšcÑ=T/òÞ¯³¿!_‘®ë-!Ï‘ˆ ûD¯4aRê•Æoºê¦_®Z–5ò €ã“?'ʉ”æ¦õMªWü/¥…šddÁDðFºÎ—Ó@ÍO:hÃsÁ„öÖÞR£…Šú¯‡v¬v³/ÖÔFAš6·BÑ[¸eì|©Jˆ_lÐÔIC?×$¹ '¶++:ºrYUQµeìZ(Õ! Š1˜—Šê‹äù}W$c®LUJj)%аé:Ä^›@¾—b÷ãœÕ’‹ÄöÙúl‰!F"$®€,Ú¢vy4¥EµúÜôRÕ‡ž‘I–‚–D,ZÑu°lÍ?ë®é‰¯LÓ«HLvhR8™Ì§?Të©y C<‚MýÙ;(ä*¦I€®FפYaª¡<Ïs ÄF„GIX~èþdË&8«6uòTšú³¥qþä^NnnÙ„CjÞÞŠD¢’>C#bzbíjqaÍOõl5‡b3Dn¤ñš£vB#›ǃŒŠÓ; ð´ÊÚóÐH‰aÅimsd‰Ñ\;H¥»ÈbHôùÈêrÛ÷ô. ¸]n¶?˜ÖzÈS±œ‘›g®é2I`ø ‘vékqBÅe‘]áÂײÃI,ȪÄIâ 9")6©Aôaâsõ8 ¯gWœ¿R»Ãk7EÙä¦ÂæPá(Q21ñÏ’H@~_NßrbŠP6XNN™F]õ2£øBÌú'ôÞù-Q£#Sã{åÌÕq°Š„ìtôˬ…'‚_nÝóˆ:|¤y„ïüFo%²ßP¡ ÂY(¦Ú;á‰Lç¬Xüi³2y äß9ª2†dkúïtüë…þõy¹ÖóózÇ»2›süŽ9þõáÿòëÕ¯½`üCŽ½Ð¿ñÎ~ìÒ2ëo]fÝg¿ê;ã‡ÿ¦Çþ ”Ÿwyâ=<8þýœ³É#þBÿþú‹Õr6¾þBÿþú‹nÒýŸ¿Ð¿¿þbZãíç/ôïÏ_”ÇòéýñïÏ_üãÍ÷ü÷ÍçÿûZSgwöñÚ|ÿëÇ)ÙîûG_ÍŤ¼¿¿úü³_õê×Wþó?÷M·lÿå›ÿä5ž4×ïo¦ÿý7›Æ?âOÓë_ÿâLåÜß-@tD¶‡ÅK:âÜ罃1÷¾;Žp<õãUÉC•­ E<>ûGœµnHš'9÷£NTe-B–þ>ÜгÙ(ç -ô_Smq4:”~¶;9‹xƒë›Ra:éëQ48è„òhóP{ãZ¡êPÜíØ5γ,½VHr,'Ú`ª‡ ÖV RZÊ#Å@:Ø +O~v'óD³gØ<¼qÝPöp&÷¹«L’÷×üÎ2æúYõ!žäÉõMÍÃ=ëk¤ICÇ!G#À „å®ì´@/û„p.¢¯ VÇmF‹ñytìÕIMÉýºÛ"­–óš î (wMÈãƒôFÊ™{­—­61ÚCÅëSDëZoeˆuî³rÉ. ɳև¯ÀÔó›^â²×25%@»¯‡èîÉð^>·bÇ?°`»N~ÂÖ£ÌßÖVb]ôá ¹Þ³*±¾©a(t²Eá ¢µ©5ÜÃ5s d´5e5©¤h/ÛStð+«"(nhãˆ'^š]Ÿ„åz×î+ª“ã) ö{¡õ'”¿Ö¶ˆÑ[s7ÑqØ;œk,g *âË7Šø2g½Ñ" Y4ŒÒû¡êªÀ£Œ'¤çÁéôzÐ`5û&OÂáO¨ÙÐÖœžU‰µB;W8ö½ÌCqBõa—æDæ9·ÉÈ¡lzÖs›Q?>éNëeË;@ÑjL‰_ÖÅï iÌë•% O`sÝP0öa…¦7<`ÑkŒ4!çZB]þÄײSGYÆÌ¸‚´ñÉíÐ Ž¯“=Ûí†úÖ1‡è­©†’h…âðÅ*ûdAfÝØ£¨n¬„žå‰¹Ûô*0y$qýûÍ ú5O×|™ï 4¢ÐŽïÒ,¦ÙyH³˜ŠWvx5 —/y¨îjä^8Ë$k…ÔdG°mÍb:öÒÁa/¸µ”(Ž¡ÇFª§hW¥Ÿí¾59Juæó唵° '8þ}xñ”Ît»¯«ÞHtÄÜ>z³xDÅ>kóë•‰ê ‘ñtæÖâ|Á«SÚ·£Çlƒ“‰·¶¦ ½ät$ÈH´®µo¯’>ö("¾Á+ËN&æ³ýì­Ø’…hÆCq¾Øù¬/™ññD­4oÚ¸Y0ñîinöQ0VÔ…/A_ƒ»].2ßò•Ñb†ýYŸ2ôÃo¶Éý¿ÒfäeˆJÏ’¸ÄÛÔЀ‡õÊf¾šT ÄZ5Û÷^mŸT˜Þÿ[ÝÙ%K®Û0ø=«ñŸ${Ùÿf2ÙUú蛓[S™û6S}ºÛmK‚ Œ¶ØX`–6ôEÇ$Pms¯9¡·Íx:Ð{N7ÄÀP£Ó’¶Ý ½s¼ï•PÍzº'e6Q3íÑô¾ñž\Žœ”Ä“sA»è¨3¿Ø†iàÜr/Í]æN¸³˜o9Áqy¬9P@M 1Ç¡Ã-Ï´úÔü^ˆ¡î-­ÛÑùý¢‚6¼sd”îi2¢eX³ q3qŒW®4 ¯!‘³ÔDA*úóîðûh¦q¯_?åŠ,rÖôÍ›uŒßïÔ–Y˜Úo|@XBヅ¥;4ºxîÞH³¦¤Ç¡ø)”-·@ÔtÚÁ¯®óÏ¥~¬¾¬cw‡°Y¥8s¥¤M í”A c`ÐÚPsRvµ1GX=OMd`q[.<•ûÖ¨ó¿SfîP™i‡]{è¼Æ½Åtï*颿1TZXÌ›ÌúȾ3ß”NÇhŽ3ƾ3p%Š’(‚Íõm °nWOó˜Å<¬;DP`ñŒOJÚÂé½tµEp’¬¨¾Y»›æ×Y†¥"mÞ L.i\Zé.Ùú÷½§Ã¬þë1þÊŶºÈÄ€¶ Æj»$zØ14 m_µ:tÂö4ÈÁ;UQäTZECÆÔ5›–¾©ß’)÷p«ïzt¤FTÈÓjä‚®øjP»-ÁDkÏNKÀ"ØHZš°³ïÖâKtV»©Òùyz®(Üø¢aÖ+bêÅ´¡¦óBæ–Ê×ó„ïl1Í#¶)-0QÑÈÂ^gv4-“QÍŸ«{ª¾Ó<¢N@jt îO|š» [„oe=`î0›Td¼YÛ(øS®ø)°Jµm83ùšúÅÙ•Ð'ÔÓv,”g«Ä¹SÎÛSîEVMÈ£ö©~舎Á¨y¶ ü¶Õc<¥V Ç©=ã~qÏfBö€òO,Íïqè0ˆJ¥ Tqõ2ºÃGǧ¼ƒ O‰;tb`ÜM±z>#ññ\K®ZS‹.Ž©úqèˆÍ{&«O§p©MOå¤C§Oïñጽř\` äoHî®– Àæm›g”ÁÃ.JIVÊÐk ýrA²aZ5‹«µÌS—¨z‘Ê #’iDý#G"h76=²§@€,ϕ͹»×GñÀw^öW£„xc™9Œ2ê0O-Tƒ8^…nIH°£Œe‰²*ÍïY1¿°Wvc*ÛÄl=œ"Þï­1ê¤Äò‰$–XžâF¢)V›bC»‹iQ·§se÷XQµÍ”cú Æû,Óv@„!}”Éï!l‡ª+!f¥ÊåÚåö‡\ª– é0J¼Hã-ûŠÏFšt8©9눩åaßÙv{´“ÛÔŽ*ƒ-ÎήFÎK÷VŒ Jn<$a%l‡Qa2°®„mò¤!‡È—àò®ƒÕ÷€BVس+¹0qQBWKÙòâÞG¸Ú¶ÛwŒJb{:0µ¸Ã˜ Ï‹¹¢)$…â˜P}t@LÙÈ}~âqeñž‚KJÖ+ÊxDž[8‘1O'=ãwbŒ1d©ôTÅnNIª”*˜;H"ÄçÊ‘Šƒãâ1]1'eBõ+V<Õ®TðÙ'” ×üÅ^¡ÄIã‘ô¼¥Éû¨@09‰¾Ot Æø–M°| ‚Y÷–`V±4mÞá çu÷pUúØÃD¡š‘(È/‘Ö’õü“®z“"’*žçwèô\4K#Ý#L=¼%i™.T’c3OMgöâªyqRðâ˜ìH¼6:0`œa´Äu^«K^»~ BWu ~ öC)&7C5C <ÒóÂæ :7ÛΈX£P‰Zž¶'ÐSQ@VÊÕí‘lX´úæ«}ÄEI%\hÁgø˜“Dh3Ž'-ìJ• Å-Â8¶â„ä¨_-&3[æœxo^YÝ€¦N‰¦¸"jÒãþN9Ë M¡Æ=ÊÐ)ç­¦cXT~è´g¡OXV’Vàð7NÚÎÀ·P9WC!¬y‘ÃZâc™j¼ŽÈùç†ÂÝTÉ#¯°õ§v’/ÒNjI$¶²¢úRpÐ…ª‹…•Ubklÿi::®$0qA³/Ã+Óê²-žûK‡Nõ„äôæû2w¢ÎNj; ÈwGK„ÔAë‡ v-.åR4yNø)%2W*ñ.lá)¸IÈŽ¸o“’ ÙIMKg/ÈC7aøåQx“æ·}Ô~[ À}!-|XK›wÌ¡|eÔ‘f·Æ~µºñ¸4%)!zír31hc |ƸRú%®–e÷‹Ð îQäª29°vš£…#5;;D+´¨<¢r ïפ¤•€°Y-žj¶ø)ä2:¶ý‰´‘„C¡²iÛÓœžÞÉ´§çJÔ«î+MH–>/#€ˆÖ+Î}þN[!sãmÜx¢ –ùrÝì´GºTuår`‹N`®gW›óS)7’6nµÃrzdcR)7¬odŒÇ•ÜYïžæ¼Klä‡ê±¤w™<Àä¼­„åõYÍO¨â™s¤“Z-A 8Ô¼³é;¥^Û0s=-."¡Ïè&§Žs \†c g‘/ Ê][¤Êeôà·ŒeT&ßLªðS‰Í­û4¹Ü• ¹`¨’ŒÇ€ ]ø• ÅÖ{TÉ;½ŸHg òU`?$d`Ò%Ó|q‹HM{½Â °dpòU bT£1õ˜-ëy²ðYÕ="”«{,(i[¢I&ü¼Šú”zYlì+ [®óîºC¸n[pDT+”ႚÒ\`U¿“˜uàR2àòÒ¢R¥­/24¦¹ý\QìCV@  ߪ=&Ìö ,qµˆi—IÏ+áº7d?¤všy»ˆ*3Q•6î`ߣ¨ ÚÓ)A¥?©)PÛÜ4køÂß¹»mÚgKììëeÕÜyShŠÛAçJ`€N #Ö\r*z(”©Î[—†qö• ú'Rz[ \îDQBd"Ö¨±E²{8–ï'ÞIâ¢=¢ ö¡?-Gì‚ zG«›ñ©˜6*Ä´‘t _HX•puÎЛ&PÕU4!3WÑ1(ÜR[)˯ÎH÷¨ž=Ⱦ j‚¥j S‘m.úBÊ:‰-£B”Ó©âϵŽE™++=ƒŠ†€á½á#û,Í«–D;)HèQÀhn‡¦&žÅeÖNŠc[ññ‡†šŸ ì2»$NjuÙ†zI‚OˆÎ]øÎE8õCâû¨F'!JgZñx.j‹¹œQzÐ" bd<´Í³ö8wªî=DëVË™pKÐŽ´m –†«—„¯VÖÖóæ-ÃIšÒ÷ÕÍ-I3„ì~¸»Q@3ºKÒS®¯„-yIGáMc“¹ÕüðˆÜÞH€– rDå¼+ú ©%É£fG‚ê—‡„Ð)¨›€¡¦mqè´ÄƒãƒPÞ'ì‰<ò<²3ûшÒFjv×á&XÙ/ÓÎ^̱ǜ¢&`Í'!¦•0zNéÆî!¦_­É'P¨ªÍëCG$¬ø™+v¦µÅkäËÑOš—UULc¾S£m– ”X»1†Œ"ØîYl'W»±P=û ¬‰EúÙ= ¬ÈÁcyIKœöÍ*¸›íòHv/•Í„| ŸQý+™ÁPãÔ‹WŸF‡rµ6haînYO§½p‘Ã9º?VO…ÆnÈÃú¡¦xË›.°V¬¦ <Ôâ©`?R[ÝçJð£Œ9=¸†D’±ƒšZêIM1Ä |AKêÐôŠšÌüʵ ï­Å ³¶+Ü7¦Îjz °‰¦"'ÅÛÒ~¬Øöé主÷i';à#;Ðòlå¶Ž9Z˜;¸çûn­šoü…ôÀqµ¨‚ÿ@5I·ªl‡ÕÎbPÔd,d¥tÅÜnoßmpÅ«O5>MxèÀ—Œ V߀“ÞFãfB÷Ñáþ”Š–žJñØ .¦í18ˆõšvc€Ñ<Ñ›x“= Ýžôgk~*õé›>ØJtt"mQ¦±Ußõ•»½ eGÇÓmC‚‰ÃV óFuI\Û®5Ë?‹lhÖðÛ¿kËò¢%cäö¤×lÖ÷ÑÑñ4R³7 )öT×ÉŸQ°¸¬ùÅÕwH‰d½jtœÑmy·ª$ÓX.š˜°aKÃÉÌš™e¨¢ˆi¨hJÂO³“Ü+}ä¶)£éƒŽŽÓÔÄä‹ZÔ«· uJ ï5òTÙl'ÂjDå+ÔH]ƒç&õê(âÞ'ÄTwØ-äñªp)WL5Á¶ ¿KRõ’m'Õ\¥vbC‡Z.´ÆºÌä'¥ùÜ òq¶FÈ#›d J1ùc›“&ÉÜsÊI[I£æ 8¸ºg}—8¥µÃ¢¡Õßð&±µ®–™ü§/’ã#ŒS.8|D)õÚLSPÙã2Íjay´rK½Ä ¬æ_2Pøx(³Ñž¤Šl°|gË7‡Á ãñNÒ~´à®¤OG]E¬ÜÕJ€hRZpo+^íftv¿2ÈÇ.”¦dßy¦fǵ¹4ϽïíÌ€Çå‹ZÍ—HˆÙºNƒR®$çmKš¹în+%Öî¼ÿÝ'[ÄÇ#cJ¯*™ay‡È].’Øò¼+‹°ÐBqK³È±·j5A\͇+Wüe„í\wb!°!µ’baÈ6ªÒhJ)—i2èк]PÚ¶ŽÆ>n¤–ý!–3®|"Øn§›„êÂà.ë¸}d~²E¹‘qÂjh—T¥ó4HÞ8­Ì)æd¢%´“*ŠóùùÇL;ýžù;'¸ú›ÿTåïoúßGônG¹þ«|üc•¿ýŸ°?î÷Vþþ¦¿ñØJ(dÿìÉÊß¿þŸ9Zy?º<àX¬ÿ¿F—^=~þBÿýÅ/¼ù+?¡ÿ¿þâ:ïóáù ýÿù‹cíJ­ñþÿë/öÞ´ùü…þÿüÅÿýþÿÞGu”+]QùëˆÞÿ÷[ä¿è|èë/úÿßQºûóñÿ÷_ÔÎj=ÿÿEëéúóñÿ¿3ãú¨Ý ¦ìŒiÆõ7nÚo=:qú£×~k(~2ãz¼³Ï»üÉŒk¿³öÙ<oÆõý7ÖüáÜèýÚ=ƒrÎ*ö«XŽ3kuökÆ3ã¹_Õ3Eg(~ï{W'Dx_lfñþX•MgJý~ç!qßôÎcÙr Ð}Aò»˜ÁýÒÀQâîlÑ/Ðáäsæ¡÷k´XÏië}Aâ¡é£Çi&ÞŽeµaÜÉÜ/Ê+n_ Ž‚8§ûR8ÒR¹¿€Èø¾Ú5hx¿s‹ïœ³þûEÉgié½4ÝKóˆšê„ñ}A[æõslê'þZš35ÙYfRx_P‘•¯Uïð‚DûÒ^©ž˜I·¯yxÙL0ÞW[òß<¤mλúÇ–ôcKø]а«ûj­„iiö-(9®„3ó9ë»Lä^Ä}3õq_Rå9Kì‹:nÂ\¼·ƒhü¹Ò}¿SÞ³`éþN'ÙpA‡YÏ$uØŒgJྠK69©ßx-¸Úæ^.Zš%¢&5¡ßß¹fö÷:eØ/n.½ÏŠò{%(Íì~ç.W6¸·£Ùžb¼ŠÙ$6¹o‚Jµ3yÛ§Zæ1ö‰Þži¥;`´Ì¨ëþÎ##Æïï”Ü|¾·÷2‘YÍ,œ¼ïj6óO¹WB“OÞªðï–þówö/&CÒðpÝciÎL}_šñ;çÒûý±ò+žKû¥¶Ñ X¹~µAHÍÕØjr‡î§â*%<ìÑfHqhüNÚÙcÖɬ~élKÆ5FÁþgöŒ‡úóÜz»o{ÙÉâó”·Ú,êçŠÂ8‘g6d¦4IFp™HÍD/nnOHê²¥?m‡a¸K¿Sóyó×á™·ì;»¦G¤<ä¨%÷}A|~Ö„ñì»,¢&áøæk^ñ{M@Ľ⵳ù‚|"ñq¥«å-˜ÍºÊu¥¸ïÉð óD¸Úæ‰ðs¹â¾ ]š{ 5º·sAçRçc¹ƒˆš€ˆ~\©¸Ûa±Ñ匤Žewçö¬ ê$TÃ`I17¯&³ÌPýŽ&¶—`„Q„qïl ÅœõAïI2sou»ñê“Bƒò²Ó) e®Õ ŸÒ 'Å„wŽPC·¯Hd뎎0bQÏ wž «1;¬øû©¨bH™Îa+†ê…„ŒÑñÁ9o6ïüþX©õiÝŽYÕ|A2 œÃx‡“òÀýyıL}U¯*É‘„Á¦•ÐO¤6ÓÕ.nºš‹Ù=QŒü“ôÓ¼ ßbœ0ëú#S'>|¬ºQÉ«ý~§„°„Þjœ$åŸeøKl‡¹“°‡Ù¬â¹å[Mè\9}–͸¯CMzÅm$…C®Ã³¨Ó#ûH àÆ÷óYw:r¤–<;Ù Xj¡–˜T÷‹KKs¤au?Wc{ŒW“+\аF'„QÇìq…™Ùx'¬bg?ôäÁ5 ª¯Nˆéy7¯Pì;ÇŒXx±úDJâ­DRˆ¤d?Jùgµ\ŽÂ[³SƼ:X÷†Ë$íýé'R,ê9ÆwÜ—‰R{»>2[ÀãPôTf©“ÆeŠ–àäévgÊÐǽÙ¤jÖ[Ðí2NNõÈ'¤òä¾WÄßâÒT¦Ãç§n߬íXS´rj”¦íð cxØÏ‰„ÉŒ°æ,äéø6°æÌ t*:¶¥A‡í 9=ãÂÀE6«¼¨EX1‡!Ž‘Â¸¼ Hh×YùE!g,Ý ¯Û–ùbmŸ‘‚°ÈƒI¨N?å°‘;GÍ+s êóžMzÄDœ.Fo"YÁìjÕG~ýc—ôc„¥•Pưe¤55ŽW¹90ÁQ·4š R…öç@”üßg6gË™cO?y%àÆ‡-?S—F5¸úô< ëdb®¹„BOåt•„ª^Ãø›RÌ‘ RMg ¨$„qÙ¥6!8´ðXÖ°H^}—Ð8¼s´ƒ—: æøPÃ)ã2ÆÀ"?$·2ŠñÃ“ÊªÃæ†‚q¶¹xã} b7ÃÍOEuAÌèjÜx*=°Ó=©»“E šï2L÷ÒA(}õÅ"ö¡¢áw{71+ IÌÄ =ÃËø\ÑÜK¢Â HäÒ‹«·=+ÍÜ*µ)Ý[<ø˜QMÚCñ^ñˆÔ-NgÙa]8/Í´¯ª?2µ’c©ÈÃËðÅU®à0Žl„Jß+G²WîßÙäQ…›÷ÊÊp¯PCåŒÓ§GM4KOÙ†¹qEã¶×FšÏ•{;ìªÖ"¾­Ü,F f‰ëÙ ¼?=‘o‚çºcL«Î†}ë6+!fòÈ®‰ÈNªÒFÄy1‘pA@Òê;|DÕ5ÆÅ“Þd·w±°G¬xjë~?lÌèdÅB˜ZóÛ'ò@á©-H- =‚í)´köQâÁ¦hïÔH¹ e,»í舼ŒMøaë àÒ†k?Fû áÑá',”¯“×i-t[.hªto‡g'!ÆaÔEï“vXH ¬9S@ï"â!%¸€—ùý÷œW>¼?ÛGì³õbjs a%ðËÊ釸nŸ¥{÷wz´%|çn4®¸b8aͦÆu-Ö*…Æ!Ôlr:7—õ}¤+^æš y°až€%±øÜóǾ÷ ®¡%3Š~« ~&8쉿*þøSdIË¤Ú ‰ ì@Œ,æÜ24Þ!Ï•Bž©™ºÜŽ1œ ðK/~æ{¬!šbÔï>•GbÐèt(®J3p‘s5a°blBTÌ 2~ªµ_Q“/è“lÐÃæCGµ”Jæjˆ¬œ1]íeÃzÿ-ÿ¹;æ<‘.u÷È*B5ÕZ;ºÚÑÕ—(±³w]³$Ç® ª!«-¶Å„f’¹žýãȈêpåŒN Øè.æ²\Hf.µ_Pd:¤¢vìsH} +‘ Ü"i#|[] )T³V€²åË.^$ž¿<¶…•*:íé¸ZlÏû³ef5o±ÆÕ–é­ÁÈ‚¯‡¹>!WcOÝOŽ‘óÏüÐ)VbÏ<Ø«âO8á‘d²ô´¤˜z‹c™N_ÒS"”‡Z˜À}‡êRóãéà›ð³‡Ý£‰ˆV.‰éjù¸e€õ2i\ˆºlžuBœñÉ)×WF Až:†óbÑPB<ŠÔ»GÏRýsŒ…à§R³Ab/”Ê2P%ŠT·¯iNùçp!¡ÕWÍ~p§ÄG¡²YG<Øiv=e@Å´1g˜„Ï#w •0h –™‰ïc‹¤Š3zë|‚\û™µÓ°f"b¯píªdöú}ófówß] xf‹›as¿ñ±ÀHÂ7üP'¬™~¨Ó¥KºnŸ.1 ©kv¸v®FƒŠ>Kx"Â~roŸûW_Í<é_UÒN.ÞXÍ_¬¿¥E}Æv Ô«¯„<Þžn­"$5êHLªðÌôšÓ½O”ŠMmé‚ÃÍMÊ£Yý}_}B1R·âQnÿ »BM¾&ƒûqYuI¸o·¥"ïì–yåõÕ[éŸöÈ÷)}§seó¹ÂýH ŒT%sžH$ù2ïì-Y¦<º2—½w_Ä„‡cäì* é¤vOƒ¡Ø7-0é©Ñ"„¤j¬Û# ©úX®@i.ä‡Ê%•™ b¤¨YLœóWwË—5u•V߇ ô \>IO&2cþ¾Ëâ;I6xº‘#µÊ6t,Ù_Á˜vöÏ] b?òý±tD6ƒ|5)(ü éîf|fyŠF¸ŒÆ[B5«õÔtt\Œt†ƒãS­Å]ù's5Š}´âõFÕ®¨(! ÷–Èz—l–Âûc±r*89¯¡ÎòHý¸fy–¾ ¦mOÎìcƒ3’N‰|¯ž=>§Òïš:ȃnün1gŸ2ä‘L#šýÀæí+>–„ì§5ˆ3Á¼À†&ŸTî£ e^Ô}™ÄJ õÚú?tØo‘A¡ZŽˆÍórX¯)z›`?ÄbÑ’º3ÖÈ\É‘à‡¹Òs°êsH홫<¹¨/cîVÕ¨5n0– &fèâ5¹ø¢ "Õ ¨¦óhò1j*G¢ z¼½±@ ’ÊS§³H†°Å‘ØzL›àž¦ãÌZ"}gêr8†P£Éæ»L—žñN.ÈŠÄæºCͬÑß¾o}"áSÑN[ð)°cÔ<²ÔëÅ÷‘>aЈÄ=: 55M½7MÒ;G÷ݾ§‰‡¥g²ÀºÔ_È~ˆFdÛ”%À/e:ÕË„*3[㆘º 'rTpHÁBvÍNe6KD|ÂåOîiÓq•HÃ%”eÅœZvá©,óÁE}yüÆOÜ¡“—VB±R…öÊÓÉÄ@Tä—•¹rß²ÖgW¹¦ði9b¿& ìݕ˩Wæ~Õ·}ìlÖ ¬±âItS=œ—’6ù‰gšÂ¦‰_Ö;Œ×Œ€ìå u„pýSâ\„ê»:%¸)KÒ6XšÕVg í| âÇîšþ\S? ‚bõîq”€è—‰© N?OŠ}{0.{¢Ÿö½v%GnjÎmª¤¤þ•·3Ê—é½sósúžŠ4ŽåˆxÛaˆæ)sï»XªE6³,KÒ‹s0îE& [fµ¸ >\? •‡…ìÜ)Qs‹¡Ï‹Ë±/)‰i—a†¾¨¥ž‹ÝB©\س;ûðx7æŒå,F”Ác´‡†]±!’(wvг†7o®ÒŠÀ­|£É™MˆêL…çO=5çeê à2\Vغ¶çÍabQóæ–GøÌ>hë@ qVSHýÍç§"+Z&[" ‘4œVÂSìFÿÍÐ"º-T´Dî¾2tjR„²¼âƒ«¡~ÁÇÌfúÎ~ä˜Ë‰ùf=K×­ Ý \Þ,APoíW¢˜˜fö¤¯.’dÎ:˜å‘ ±x±Ø‘€ä»­“QMg‡/ä™xîšŨ©Sˆó§õ‘ÛÛ…Á˜.Uã-÷(. ê‘Zf6<äâJ1õ³¨1Ó±Ï/fˇ˜%\·.T"´“NŠžÊèýõÛ—«cN, G+I2·$¶¤É«!|f#Ìq,óéPóúÊêRNˆ‡!u #©–CXy(ïx" 2W÷¤'V½Øk„A¾ÊÕ¤X2­wR‰sƒÉ™ýÞ„õ·Ù¼Ö‘îØsÄFbBù©sÃx>üa3î#¡¦ÅМá·;϶Y“£ã­PF~ÈÜ8†ñ+WzV³Y,üèw8ý°™«‘~ˆ@þQ“OÁjPȉ¿{6l¹¯z‰#’f÷ØïdƒH‘ \&w÷ñgùù¡-†¼=80‚¹)‹óì’dt½ê¥€0kÕˆ”žÊL•ýü|A59ºaY,šm³: çyW’r§¡’†°±K·¯Z“OŴâUV—*šPÏÌSse­züV]êˆ$!ÁPäPãÐ8ظ_òHJ G.“ç¶C\DAê0³ÄšˆC´)qo¨{³gàçÃFÄèaüRz€[Pà—M>6ïà© \íæIvl„)$Å.%š×‘”É×$Ýë)‰z1ñ‚¤Fd$¥eB¤Ql|ûNÊTëhV±ÓMÍwÿN%¸Ÿ7j‘üÈtÚs¥Mþ 3pùcæƒ~ÏüãQýÍ¿nô÷7ýïˆ÷ó8Ÿ¹ÑkýGÿü?bÜïýýMã¹köàèï_ÿÏ\üïý®lYendstream endobj 461 0 obj << /Filter /FlateDecode /Length 518 >> stream xÚ}SË’›0¼ó:Šªk2[^Îã”M¸es †%TØyóøúÌŒ¤˜J%[.@žéõôHZ B‹×Éó&ÙÀ ÐY­kͨ@”¶ÌjcEÓ‰OŠôsónw(õ…É´Ùc½èSóНåLË.UÆyƒË >íœæ¥t¸ñ9áÓ{Àg ¬kH/ó&×ý)HtÐü¿ï«&\ L¹ÍHhžçÙ¾®ÄqJ¾%(¾ª+Ëí“‘g²½1>DøRk ]s22B`÷v2âå’Üà/¦Ô¦Ú&µ©¸ª2Ë x‡ÁáröY+ÍÓTU%?Édç8’÷äòB‘Õc—;ÿ¥Ð×ÀŸæN #n&8Mé§O=0d–* @È’kσÂ÷›KK„°{ޝqºSëø\wi ¶­G¯ŒŠƒ’gÔ_ãÔLOåW®Òw4~4OÉlQ{?ÖKh”„Ž)òÚòAËiIªíˆK[I&G«‚t1f@ öÎQÄ7ÛN÷t>{a¡¿ò„VÞj¼ DÀ±Îy ÇÄncÀ ¾°‹ít«‡±?aSº`ÀfóGÿ&¿8±xßG6‰k¨­Qáúžødüuµ¾ A86G|“í9™_¯#bñÌžlrq‚­[hoN»£x7ëß]endstream endobj 462 0 obj << /Filter /FlateDecode /Length 3206 >> stream xÚÝ\mo#·þî_±ß²N ß–/W´@rÈ{¤‰Ó¢½K%Ëjmé*ÉqïK{g†ä.wµ’V¶|çÁY«]j83>|f9 /f/¾:ûüâìÓ/-/gž{Q\\BULHQØÊ2¯ªâbR¼.ZΦ«ó‘R²üî\”Ëó‘´åt—ÿ:—®ÄgÚ^þ²˜Ã½ßâ=Q®áß|ƒ_߇_/¯Âç77ðä£åœÚÂUŽ7¡Å/øû·c|<½ºÆÛwøÛÎç¿^|ûé—¢ÊUWÎ0g=XFJ‹ ñhk1ÒZ#0ÏZÜ£XRtú"ôŠ O§A“)\3ìŒE9𫊊 —?Ô× V—Ÿ¡ž“$m=%ÃHEã[Þ•‚U¦VÛ¡½•-Ç7Ô]®q×>i™«Dúí^ñ½Š‰Rx/Ú> Ÿ èéÞ/FÒ1%xE0©ã`öÛyeÊ1’ú(¤gBéB2[¹ÐêÁ<ˆ”LÑ`œµû¹o¤,õÚ1¤+LƒJ*5Úô8D¨ÏÄ2bÓ•ì“(ãªv`Ò̃:ÞòL1Í*!ûúÕÌ* ñÔ4Ûgƒ4ü{l%3Õ±=Æ7UÕî/7p¤Œ0]œ¼O/Ç4ç™ó²11i§Û1M€QÛÀ{=.S«¯ûºỗêüÞõ‰1Êݨ¢ªÌ`¡«ŠÖ &Õ[.3ä)ÞŠ‡®NV©V ±>H®è·DµtfÉ£FIÒ;'¤äÌpsœò_íPÞÚ'Ò>®ö!¤0æ`a¶æƒÏŽPH ǬsEøXSJ[&­<ŒÒRGži£÷€4LRë` q°ª¤?|LôˆB”®¡`Ò;Ö°2Ê|²ž YCÄ5`(€_ªD€Ùbð^[”ÆÁ0Šò:^ÿxôx‰îñ²<â»øÔÓ×56G&{;Æ«å*üðvøô:´¼ \’!sÆ{·Ô<Þ\NŒÂ§á1Qê« 2IÇ{ËExNj"Žß' _w ñDöÇ©‡ô“°·yàºèŽQ¬J«ÄtM¤¶kÎöy¤»@´ÑŒùì­wÞ-ÂRb‰ö·ÚlHõø%“Fn^Þݤõ)H3edò·äŒŒÖ¿áÂ\’ DÔáÇbßÀåUyq•_7Z¯q¨?i:Äæ+Toڥ즕Mo$ VB„WänQ¾1œ®ÖdÆ|IŠŒ”“¥8˜@ž£šD ñõ†¬Ñp “¡=d¹Óˆ5u»7\ÊÐÂŒP"¹7ÉïÎGV@$ôÍF ½ö4³©­ÛY€´HKÝ+®"ê?¦­?ög0®×ÈvÆ×‚[ðö’ÆdaB!q l‡J “«—½‰ˆd^Öhüj¹H5©§çVä˜@V1£‹+ÐU?éëa‰>bEh\ß]δl%C}©(0R„é¸Ûp]y t#¸ W¶n‚¹þ¥ÆÀZ›5¬À ÕŸr‚¶¦a"K†åÿUÛÉdk`ƒ íífœIVZ“qfŠ=(éôÀÚ$%jŸ‘%ÕX÷»^uTÒ©&ö`ÒÙž{’N;VÛSÒêaÎ Á¬z\– Š>ñ¬ªc±kES[+ÚÉRª9©>íÎÏÜÁFwT€Má.@DrÙ!C€ˆ‡ÞUû“‰$ _ W>óüÙgÿ>ô~_²r X¬öüZ—·g¯åÅžA2äÈ÷Ôò¶ÐÐÂb—7ÅÏgÛ==…(ËÁ-_µ&F—¬g[+ôýÁ‘îlC.ä•)d Ø{1ôJeÜéA÷T8"ž9è>HüXù‡QÌQ(7÷ðH¢´7„â¤Û\…IÐáö@ð] ÓCý‘Ø…oó‰Ò<ðx(©ÛRÛ LhW§#¼—5HM‘ŃØö½ú!®G h÷¹>Éäy7Äóâ$åó®‹Ø02°Ků‘Sèô¦ÀD›þÛÕ ÖäWÉzg¥ü^àÇ7yš '÷`þH@b"n€Ã€š½±ÂÅîáž%÷ø*\†{ÃŒ”¿ î1>:ªÆa7Ápš4á(å»XYªÒCÇY«(ì)ú#¸ æ9‡yŽûx@,1È÷¼©ðÌh5dhÅÓÌóÝ´Ó0eô³vvlFØPÞRµÁžÐ´À¬+¹‚ RJÇLõì6Qç1M¢õBˆQXלËcô Wºƒ”óÖPŸì%Ò¾@U Ë}Hå™­ü€IUÀ¸;Y4ˆ zȦ:€ÑÕzez¹í× PI)ƒ>¿âýŠããßÕ´¸ê÷£ÃÄ7Dâ‚6qïÖTx8RΕ‹%î¤ZS.¸k‹å¡ÖÖ»®pI[½ÓpM?Œ×TAj]½‘šÄ½xQ.Öq‡\¤âh‡,²2u¿ê-Ò°Þ†-¡Èçý¥{ è`Öê“F}Ògüö¦Ñp÷ó@wÚÇmõ „zÙø»°9ŒÛÙ‹æwµ¡®»%?ú!îbÏñÏ*VuâF¢–öåa4?ÒVºæ¦_âTc|{yOlI{è(„öÙ7ÁV|Êxér>hûq“Êaç©!T#,¡§ìgïÂn=¶¹Š… õx²ó‘1–§Ë»Uìù:XÛèô¾ÂÏËÌÈe”¾¦:‚Yí€u_ÙÂýu,S–Ë»U¸ ç™ÌñMx0ýO=P¨ 9­]lá|¨Ù€ÆT9Ò°êá]ØØ­Çý6«A V÷x{¼"niJÌî¢ä …õK5‘ˆ¿yG{¤ãÛiTu…Ï.ƒˆ›øÛPZ’¾]‡ª%y~Z¾Eëé¤Ï?ë$z“*_f¨¢æ8æøA^nV\†à¡F¨ßì0]ÄŠúÕuòÆ}WW¨lÚß§ý“Ù0ïåÀÉl÷Læ°Òd­®R]NÒa®ïbÑú%Õ¿¯ci žàãåÛuŠû°ybž¦KíŠ(lL>š§™FÞc¤ÇÒ#©8¨¯ÚCAS¢èGfVî|ŽЕïCѼ.Ú1Y¨®ÖÛ‘ÛTí¿ÀHÈN !Kæc?iÂð«›FN |ID(:²íAϾOß±—„tV ¶¨ |’ÜE]›²x®²pÎ ýWù+r0l}b¼ˆõFÅ1YÞ´\»ÚtŠï©å º}§wÔí³Ú–¦íëq@“èø†–//—·ÓpEΜ§ôÙãU¸žÓ,hŠÏB%U ³¡†-þ< $Š\¦Nº%'t²âÔÑô>ÜZæ°7Z¨Q³VqÓ €‘/”(›ÖÀ¸n„5‰¥³]kÅt‹õ25N _ª®#©3>I6k—ÑÅ–‰ Pý\~¿a% Vô³`éÞ¸±±ÅJE·”å÷Ódÿl¼HËd½hѰ赽ÑK¶#&q]¯†âÉyV˜¼‡À¨™Ðfpéa:x”³)¸3ƨ"7üV£âøMxtu—À­YíÀÈ/¼Â½!˜šZ>è˜LkÀ °tJÑ¢ßï([)Y«GFi¨ÙW³Æú¼ÊÈV¥\'‚€Ä-u×¼<ýfG-s%JƒþÖë3êl{’´å¦E‹ºÿ)XºÙU‚Xõ½íÛýŠc§…â¨7%GÁÀ¶…â( «y¶å´û&œ çíI´=Ö­»v¢Ýéƒä¦Ö\é…Ïÿ“s·C‡6²œü½[ ÀÓ™³ŠNæhSµ—6*"އlTÔ©]ïåÓß œ€M7‹m-B#“X§: gC댩a/¨%e¿‡´ˆzO¥/¾«uv¬'JMµºÇ\¯—‰+åšcD˜6t Ø™Ôþ¢Ô+aºáŒIŠSy1ßÁåÅ>ïå¥çµZkŽþ³·¦–ñî$ÞÿFmß™Ðxl‡„Óª1¼²3P#Vf¥ï'®áàƒÚâ04& 3*1–XC³Ápb%ŸXG梙ñ@¦¤¥Ó6Ôë_ÎêžÏ»G~høÙ¡á§N~ò`ø‰ÓÅÒ¨'Ø |`ú¹íqÒ{{Û’+æ ‡8zG1žÅÞmKÐÝ«ÂêV¨±è°\bC7,ê¶ Ý;÷ ÜIâá ¯•œŽþãÿ µY²»ô ñ?çÛå›endstream endobj 463 0 obj << /Filter /FlateDecode /Length 4042 >> stream xÚå\Yã6~ï_á<ëÆ /QRyH‚LŽÍ.r °IиÕ=´íŽåÉdö×o$EI”º{¬lX Æ–yT‘ŪÅb©Åêf%VŸ_|òââƒç2_I‘U¢’«׫R®Š¼È*¯^\­~XK{ùÓ‹¯>x^ˆ¸•4:Újôis)×û>G|¼ºÜh­×ßÂãkø_ï/U±>ÁÓ-ü¿ƒÿ 7øß± m]õaÕ]a÷ßqÂy8àËFçYi-èãß.U¹nt}ƒd÷7LGñʱj¹¨ùžïáz ÔÉQÅ4~~½‡Û~^aÃS×Xß1‰ß.s»®®ªÞo;¼ñƒÙ¢Œ^1Q¤üº9ÜÖÈ_fÖV0g‘™Ü„9{6?Š\PCUeR›•Ê`Q¹Õ¿x=•ì 1+\m¢vß»vjÚPjf3[VØ¿¨Õ×ܪ¿$6S@%jå‡3dk2e´W¢SŠ”M¬| #3Iæç#Ô ¬)>e–EÏFåú£1YeUi@,ºäöÏ'(êˆàäüÕCó7ñ°RRÒfÚF E’!?úV“ã–ÈÀiÜŸ½¸øõ ¬´°Y±•É4PÜî.~øI¬® ò«¨6˜õjºƒ&™,‘çÝêû‹oSÐ¥¨œZÙÒ€ÎK_)YYYTOÕçQš…D•¢¢Ùq‘™ÒYû_S¤6ª=cÝh™ ë0¼Þ3&顪m~uØÜÒœ.¿åF¿zÔæš[†lL#Õú%Ö¶MG¡¿O²âï¦õp¸«O´;pùK°.»n°u°Ç@Çu(Ǻ¥±@7„åÓá01õÎU²™bŸŸq2-¡/ý¾sí tUþ ‘QŽé,7¢ÿhõ0)Ͷé©ÒÂpÌ[~¦)6üü Žý€oð£qB¼ÃZþ9ž¿\g0 ÷1·¢=g‡ó:þBðý²Û"±þ©3éè8®¹v°›a޾qJœØŽögÞ„©hï&TGåîñØÑ©ï¨y$µÜ«3³¯O,cêsï&Poý¾Äï–¢ñ+{ë·Ä-r,H,ºyÔ5öÆ«Ô;-MÚ¶’`ý*„}CIT–¶Årn[T™)xW,ÿÍØ+Ÿ(ŠïµûÍ›ÿ]T’Þ'DN³yýdfþð{c×`ß·rî}𞘶Ό iÈIã>{RUA^MÑ·ó7”[K-SÃl°žhÝv „æÛáùn÷ c¸ ×dÚ;BZòîž±¿Ö’ ˜pþݹ‘h:øƒÇïPÄ›jhÕù‹Úv±³éÛ?ó¶c‰lžYpd6 |¤Âí-_¤D^Øýÿ¶Gó_x£‘E;uµÊ+•É"Ÿóh Å^é¤C#Kp¸s¹ÊK heº ¤å •\È­)‘Wßuï|YE‡Š|šZË\q[•졼DíZ¥]s€j)#×|R!Ìc&¨Ÿ<ÁU6 9çÌÀª¬¬Í¤°Re‘YaçtY]¨Býº\ü¹ÎEì§ÿ(T>©ª9DÊÿïSäc4Uç:³¦|Œ¦>âiÁƒËkªü3ܩǟ'?Lž'5××tæ‘÷KôLJ±¾iN.ˆV†£Âž¡ãñÚû!:*â¯/7¹áÂknèÝ#:(5õ—®™ïù0t9áÜ*0?Û…%gœÿB뇃b÷_̬r§¤þ¬ˆÓqB÷|ôgî™)æ¹y„{®:;}xGo´Òþ˜:)ù¾Ä£†'ö¨µ ÉÅgÀ0áªÄ}wçOW@ŒÉEnפü×ètŒþ¿Ì{^/´þˆ‡…cÞü«èˆpÄE2Ò€å¤IUÙ-<·^9s]ÀmÎ9V =®ØS†ÁyýÅùëS"=ÂÝi¢¿Lƒç‰j‘UA!UíB×·i»†¥XE­þ‚£|æ"ãð/ËWÇ›•üîó‹Õ §^–†…††“ë Ò¹Z}Û ­S—.xÝI'—½¥Í]Ì€–änx¢ÚXñ!Žy4ÝÒŠDU>ÆŸ‡ã!Tâ,©­È”ŒŒØu9º+¢8Ðæzd€lB®¿Ä¡S†FøÌ™MUd¶*ûÊ‹AÙ91¨<ÁèÖuØq(Æ ªjw©uMïêNy¾në{r'^щF9uÀ„ªÚÓíÏ‹-òCËõ‚ZÉÄ‚˜It³ç’šC‰Ed]A Éź=p¤-v¹§ Ÿß’zw×mÛ¨bØ‘$väÅ¥‚î~¦ W>m‚„k>¥ËDÅ8ÂÂÒq¡ÓíaÇ ÃQ Wn)âH×W]üï-·pÝNN´<{ Ô‰K­$šB9Þ mJ5ÝÅZb¬´zræ½0C ®–s/^\–ö‹IˆjÕ'¿uÚhgu–ãÃ">½õ¿Na3¶Î§°Ý¢¶QÿÚd©@a_I‚f¹À5I‡¶\·%uÀÏ»×CõÀún#¶."¿¥9^ ¦x; ¼z5 —jÛÛ”Š²Û‹áùè–™gBZÞC•"Ú‹‚7~Ò#Ÿ–KIhвæ¯vW»7V¶ÛÚß弫’ÆàÔˆN=^C—¹2îí0:„Iz»û€3~÷*ªºÅ…4Øà6èuJVõÎ;5J¢¸#õÞõÑLðÄá»ípóè/t¡8Ûg\u=eÕ Êvlæ5¹ÐGá±æ¯mC*r8F;RÜã ¸ÞÅÓ e<õ/tg2Øõû2Ùßbøßʰ&4=ŠØ£](+‚Žb+ìU»Û”„ŸS•p n÷‹¤—,²ÂtqU&둾¦=³>^1gœâáfïùŽ]¹÷]R1Þwu'Îä/Æ´U1 €‚ ±»»ÅÕ&IxõzÅ]b8éÜÓàIËh9Ð)Å~"ƒ*ÏØ P¹„#”éë&¹gH¦ò@@Xqå ‹-~M_'µÜŠn„ªñ™ ëÊëܨ•›ü¼i{z,ðqOÊ{ÔÈ-ì òº¡[@rýý »8‡Æ}› †VT í$¬vÖå7¢Õ³ñž þA;CK’Ý|Ìxµç*7Ÿçþ¾mN˜›/zŽ¡àäáÛ]Ë ÷ÑtzÛ=´ø†6ºîvÐ!g²sbþ½‰€«ÞøSËM½G'CÈÔdIÆDÕfóí®Ñ %}íf:A–Kº‹ÑÛK&ìo‘Þ¿›¿ú;ø;«·Þü>Öa–Ç9Ôû~òŽ»ÓHxŠäOy%YïÈ2üîE”JÀ aá\ éô?(ÁÁ/”Œ™,«QÓ0E&í hl¨`HS›r]žG"ǘñ“)¤®#Àr£o¥Ü~ÒS–ñmH¥2§¤EØWxj®úìçP"Ю2Q¨EFÛQ&òþ`ØXlàð&\G–ÆÀHˆÎE&Ì`UÒØ3Fi³¢(—G…²Dð‚&nª Ø=.ø&ÇÑ·þLnÀøì"0 Ùš‡&0ŠÉÚ¬,l/×c®Àl*sŽ$Ác’<´Î”T ƒ1xŽÎ¢Áxt *gÐPp oÄçðx`gÐ:z ¯`²Ê¬ÕO A¶88P˜ÌB½V:+”» Û§¯r£(÷Gœ´é¢—ýÈ«î“G7VÝw›àp/µƒ¶?C‰ç+ÔÌ>ºo%á¸&‹ïªP3»æ"¼aeÁèóVÈ[1½O.Á/ …0)Öº˜Ù—à N&¬JðVÚÌlk‹ðOÅ Ö•Égv«3 Å#° gf$€"YTOD%æ àÉÃCÁ»Íp â)’9楜‚%x(ñ®”™‚Ex{(óÖ3P°ë1k² )Å ,Á;@Á˜·¶3P°o#Ö¹(f à CqP @is›/˜âÀôTŸ` ž>º¼ãÓHÏ}k§`ÖbÖ¼7J;˰v80f­ô$ ,ÂÙÃÀˆ³,g‚EX{±V2ŸeX3Œ8FMcÀ9&â1 ¥yðüH (aåžz.bž<¼1¼Û '@ š"{ù,Á:€Àu)õ ,ÂÚƒÀ˜µ%8ˆ83ü9K° 0b-ËX„µ!çÜV3 p†‰(³ržÄƒ!,es[y”˜y«I‰¥~‚7‘JéÈ”3óä!æÝæ>1ñäcŠ™Ç"¼ÆŒx—ºš™Ex{yo2K°(³v¶>çk,Á;ÀÌãxœY„·Ã™kcõ Мa($LVÚê)@“þkJËÌú+ÊMŠ_ÑÄ«Y‰iÍ¥Xï^dt)]B®ñ6 K?ãŸ×”Ç& eïm¯#½üÅŸ¥2ùÜ¥,%” Ù¿ý+` óm¢ûÛ–Þö­£¼º¯¥Kn?¦aÎW3•zäÈÐ lÛ›2'šñÕ/¥¥qÆ J«‰^‡ûwÓe‘˜§>¸\¼î®÷RÔäúm:)qþ­7—IôÚç™tI-½‰ÛKa…yj°á×Úß4—»Ël ¤(³©,SÙSЋ³À®Cf—ÒËÕ]·¼ yòî¢K½*Ñ»ù†š{~Ø-ý¶÷G'sÎw‹òÊ({ŠÆósO²Ë•»k5LÙL)A?Ûš.­ž{÷ .éÂ%;Am3‘Å‚uQfXOl6_‡äÆ~‚N'0èK º°þÑ«˜t®·Ç(Á§;Q2Nà%'ʱ®P‘ÌßwC†6)‡­Oe%­Ãaˆ(#1è›ÁkýªŠ(Qä>…þžH퓺jÊ?aÀél°y[‡l Gw B™`´ØgA‹ðÚ7öNŠ^‘8¯£¡uÄýŸG9$Ò ÉDHÒâ}ÿÖÉPZ¤“°0©D7kׇ—œ~¬Ø¦GzmmH›³ý1ÂÏ~â]ßÞ™q”ÈB „iÛFu¦níTÚö¦Ì|&ã~N€7uä$¤D:ÞøbèaD´9¼å‚6~ï—ævôе”Ä ß÷Ç8)j§ÊÙ¥‡š> ™B4͜٠çA‘ï3QÖXi·>= ´â¬`Nòl®¦²œüÖå¡d”cÞE:éË™„ «Ä¢SNqŠ\ÑK}»;¸JÿwC¢©ìý‹#Œ ¥<—²ËFê½Â@©}ÉŒ÷¹|¨S·ýö—ge…×ûC”^EEŠ–S§üÒ ð Ü”’ÑëO°”Äoø>œDVÓ¶åÙ½ Ø]ã¬]èµ÷;'‰¨îÞ‡WNj¯“Ï·nßKfj¯øf5»·endstream endobj 464 0 obj << /BBox [ 0 0 576 360 ] /FormType 1 /PTEX.FileName (./simulation/figsim0.pdf) /PTEX.InfoDict 396 0 R /PTEX.PageNumber 1 /Resources << /ExtGState << >> /Font << /F1 397 0 R /F2 398 0 R >> /ProcSet [ /PDF /Text ] >> /Subtype /Form /Type /XObject /Length 11363 /Filter /FlateDecode >> stream xœ­Í®$9sž÷}g)/t”™üßÐBš AÐN²a>ú6öå‹A¾Okœ='y¤Åt»**ÿÈx"‚L¾ÿþãï?þýÇñyÇÇúç?üMÿÇ’>þïúçãã_~œÛÿû·§}þñw?rúŒñ£ûóOW ŸgSó·_~÷ñlåüyÍOÏóú Õ?Vsù<µÏp½>ŸÍ×ç×Ñÿ7½Ž>›ËçëéøÙ½>ÿï¿Þ\òŸÿ÷¿ú×Çùñëÿúè'¤ÿøËñçü‡T>Ïã#–Ït}üú§¿èý·_ÿíK»óˆŸG|3LÏ ÓñÙêbx>=b+Ÿí|3|vÄ+ÆÏšÃKGüë_ôÇЯ¢žŸµô»:[W»>Swõw÷¿i½>=C´¯ó±šËçµ|^ÇëóÙ|}~…¶þ¼šËçótüó×Ùõgî×¾\ï_.÷!žŸ%”j&véñýŽý¡ÕN;S3K;f5|Ö<Ìò†Ù2'YvÌjã$ëûCÕPé#§Œ{02Ípôn˜{{~ùwM¾ü‹ù’y¸ñÇU«ýòhýù_?þçÇÿùöÐ;S÷!ý¯úYf¿ü®»ÿo›wY×ý\·ëzþg?}]£çël¿áG?;u-¿þù#™×éæórü ¡÷–þüâ8¡ßì„ú§¿þùíòghÃÖ=»î²R?^GyË®~æ~k¯úÃŽ]éàŸçÑ}Ú²ëã /vOlÙ¥q_rÎ{ÇK6€Îîíò¹e7üªÝϼwžuz‰~¼½ólŸ¹wÎx}Ö­çP‡;²>]6Íbíݬ‚­Ëëv­¶þôÓV7«×çiHxÁçvÝÀγl=¾šì¶œWø [èŸgéJÚµë‘M?ÏŽÓ¼u}-Øó>»ÛNmÓÎü]w¹{Ý¥õe¿¶Õ_ÚìÖ-™óÛ°;{Èf~©ÛsëÆœG=-‡ÍÝušaµ¾cxž™aÛº§ÖšOË#¢Ú2ìñj…ÝçïõîólÖ?OÃüÖc4ÃXF¿ÙëoçuØ¡Î>®ÊÞs¼zdf×X ë[†ÑîÊÙxÜUO=÷:’Åᛆ#!í(ßë9¹Ùx¼Ž°;¬ºa¥¿qsú eý{=§CcŒŽjÑÜ–aïkmšÚžÏ±jBùÎ5ÖcÔCJ4LnžÃ!­ör÷ÖWž9ì]c–ì]Çñ÷ ÓGp #;?÷b€nØÚ·îj±l1À^|l†æ:z<¿{Ä:"ëþ׿xlc‘Ë^èO>ã©´½»ÚŠeo߸«= °èÑÎxë®^Çe…Ûý#^= 8¿ÓÌ¡æï^ßër×Y¬¤ñ=Ç'ßfhêçt{^î:Gµg8ôMÃè~ë9ö, ÆoF ©ÌðÜוoß9âèäß1lF«oö`¾|«ç„îW¿uW{hÝoçw {¼z}Ó0|ïˆiÔû¿eø½Ç‹ãß1¬–Ýþ¤®_»þÿ_{T@¾³{R@¾³{R@¾³{R@¾±{T@¾³{R@¾³{R@¾·ûº€|g÷¤€|g÷¤€|g÷¤€|c÷¤€|oöuùÞîëòÝ“ò½Ý×ä;»ô €|c÷¨€|g÷¤€|g÷¤€|o÷uùÎîIùÎîIùÆîYùÖðIùÖðIùÎðQùÖðIùÖðIùÖðIù'†_ï o Ÿo Ÿo ŸføeùÖðIùÎðQùÖðIùÖðIùÖðIùÖðIùÎðQùÖðIùÖðIù'†_o Ÿo Ÿo Ÿo Ÿï o Ÿo Ÿï •so Ÿ”sbøu9÷ÖðI9÷ÎðQUöÖðIUöÖðIUöÎðQqõÖðIqõÖðIqõÖðIqõÖðIqõÖðIô'†_×Ho ŸÔHï ÕHo ŸÔHo Ÿ”:o ŸUó~bøu5ïÖðI5ïÎðjkmë÷JïŠëŸÿð7?ºƒ³åy=m/éãO?ò¼MǘáùíG?‡«?às0þ·ea-.>maOÝÍqôh·÷»ÞL#@?{ǯÖ,º½ÙÒlæc$RÇø©f dÏ3ÛOüö£ŽNkÍjKë€Ñi%ØÑ QýÆ\çl¦4šÓ6ÌŸª6Ä{3Îs®VKÍ6ãÜÓNæ–½F»„ž6x-XŠÐ›q©ßÈh—Ðæõ00ŒO³ûh5ÛhFûôìCÝ–¾^Õ<·µ«õ5 °ÆY›ZGÜÔƒÊÞ>Ç[« \y´Ãˆý,<ßïw®{Ikh·îJ£‚4®ä¼:Fíûm^·µSœí:Ú×È ¬6F{” F04ÛÙâa Uòl—‘|Xè’Ô¶[ÕÛm\_1£ÙÎfí0VjöøáÇc±´µó¸¾0µ¥ÀWR;×™_£]f%¦Îî34c¦yþ=²Ï;ôñýá¤cYí6ÛeÏNÌJ㴬Ǔïí6®ÏÊyÖŽÖ·z;©ä‘çö/šoIœ_ÿ¢õØ4£µûƒ=Gª4ïoÛ·Ôi´;@K}ÉH>*TÉRëÞî£'ÎÄçŒj[ÉêäVC±ëïíù¼­=¿ßÆù•Qs·Ÿ÷¿L·Ý¿6§MYö ³qü>¦¬‚ÔÍÆ˜2”YÔGmçÓÇ=ƒé8^)v=}Ïóë êîÄÚmÜîæ-¶q=ÛÍ:ºµSQÛí<­Þî 2:ôÓ:Úm¶ççe”H,b¿×]´%†½=|ÏÙšuL;Ídö†Ò$°ž£-6§F»Ù@²Ó×o3?¥LæÑ!•aîœíQß7=ÎßÚ#FˆV½Ÿm»ÞÞ®ãxÝgXÿk£’dí9þz{ô's¿ÖZ™®Åf,,”ouú›ˆ°’W¿¬hýõ Ç$Ë1ŸMØœJ5Âl;›kãã ÕNÄH4úëÕÇ˕ǔÚðV ¿,ªjsp&+ÅŠÞž÷_¬èCg NXÑÛÓW‹•ç)Vô¿Ê±°ÂFS]XQ£ÎO¬¨ ö`EÿçÙ?ÅŠÞžÏC¬°õ eaE…bE-ºbE;+‰½-ÖLVèµ!gE²ãùŠ>H§ï+šXå¬h°c°Â|ñ?b…%×#Ö+¬]â‹Ö±“Xa‡¬+¬]ò‹–OLV __¬¸Žªëóµ)g…ùâ”{…Ý-¤kaÅ©ç+ºï>i+NÅÎ ùg…œ;¬è—YÊŠ~™£ÿ9+úuv‡å¬¸Òd£X ‡£ìýb…Â}XÑfœ*V„c†b…5ë‹áœA‹XÑ}öDÇd…¹ðöbEÐ(+BídEwU£Ïˆ®·+‚¢±¢çcà Ý/±¢‡â#ù+f=ÓYy\±"êe-XÑ]ÜŒKaE™÷ÞY1R¸…mÆ-°"ñ{bEwiéXXÑÛ…<ÂXa¾º,¬HÄýbEJäbEVœ +DQg…â gE•o+ò¡8^¬È°F¬È×+°Ûåq¶XÑ}õ<_±"Gå]°¢ˆ¥°‚¸VTsa +ªârXQ'à …°¢øþÉŠî‚°°¢p~bEoØpÌyékÅ óýÇÊŠjku^¬è}y²H¬°JU[XQÕÉaq4¬¨aúXÑÛóþÊ,ÀŠ‚/+Æi,¬hŠãÅŠîÂçù‹íÐù‰ÝwÏØB¬h°W¬èCè$ϰAÛ‚î·XÑÛ36+z{Þ?XÁø€uúgE³ÝŠ6óJ±Â|ÿèßb…ýóô“Ãw_++Ê?°ÂâìkaEo_äÆŠó˜eXÑÛbÃdEƃݰ¢ã™÷ˆg˜¬…gëÄŠ3Ïçã¬Èb¬¨ÊcÄ óÝaaÅuM+l˜—…,+º3Ÿì+®$VÁ Å"Ί2ûß‹óaXıbz gE¸æh+æ59+‚â^X‘•Hˆª ÀŠ2;¬(óºa…º ¬h3Û†r°¢ÍxV´™zŠQB¬°9þúb…¹kaEš¡¬Poƒ `E–/€Mq¿XÑ]ЬˆÝ…saE÷å3®„Y¾VÕ´`q®Xa¾;,¬°eÇŠL^#Vt—6}©Xaq65§súòé ÄŠ׊¬8VàÛaEû`…J…Î M¾B¬(°E¬0ßV”@j²¢·gÍB¬(–LVX\ŸVV$Õd`EQ\ +8?XÑäûÅŠJ,VØôFYXQ9XQ¬›,¬¨²‡øFXÑô¼aE“/‡<§&Ä ‹»¯…suÊ‹Vci++5)±"ëü`EQž+ªu³…¶ˆMy ¬€M°¢‘G VXÜ>Y?Ya¾~²{²ÂÚ#ö+ÆlÀµ²BÕXqóúa5XчÙô…°ß +ÒÌSiæÕΊ¬š ¬PÝÜYQ§kqV4åbEÿ™™Çˆ×)_/VØòÞ¼°â’{uV(sV§ˆýg/ÚÆŠ  Xä`Å<ì‹A5hXÂì¿Ü¿Ù/€„qs_Éó$ˆj ¤Ì2©ó ÍãñH‹Þ @¢"/$*Ð@,n_çÎÄÖ!.1²ÄË®I3d yFHRaOIòÁˆ•n€$eŠHRÑ€ Þ€ êP$+ý ™ß@²p @z{ÝHR"@”G9@($0ªÂñB–‚@l½bYR.MŠ &€ôvZbHwø3ù •IÄ“ ¤*8 *Ú:@Úà¤*x ½o+@*À@ª‚CR)ò¬à€ä¬9@š&€t­±`|HS' ½^+@‡bE÷7€ó„IÂó M…¯ QD_bÁ{\2^XYâ…dn€ŒÂÍü/í²„ä€4?irè3ªä@ iöWH¡%€TM Ý¡7&-òÌ ½}Æ 6ÌÂ>Ìf2$€\JNÈ™ä@’&EHQa €% ¤Î€€ô¯Õ öµ7€$€ €$#€d €äYÐw€T]©³pþË΂ÏÝÂL©Ï %ļþ>Ï ßˆ&HžÝ€Õ£&¶:û6išØ@T²@€€’H9&@z3/I KHš€äéÃHžµj¢t€dUþH³¥/€dœ’™… I!Ér°D¸v€ªO E€”SÕ¤øÌÅHQv @,b_ÒÛaHÁ¬Œ€hFÉRŽRUí ™ z¨Z&€ØÃ>€Ì§ýˆÍ‚®©8X¤*Ìp€¨òêÉÊÈHpç@3! ŒCé€8V€´(€BõI©² êä¦ç @Úœfs€±M€˜ƒ¯ @Æ2¸ ÃÏ.ü@T"p€d2D•y!C j“¢êµ¤é÷“ XéÝ>®1¿ÿ")³[à€Ø0Xr)ƒu€¨ÚèQðìÉš• Y€ÅÓF3Bu€ôˆ?¬3–¬ r¯¢jÑ,4‰@˜‰€™‰òç@ln^5ÍëÕª8Rø+Êt–°B‹$`EwV´ù°‹‡ægy±"‰ÅbEoŽPL¬HŠ¼ÄŠ¤@T¬Hê6b…yôeÅTJ^Ë?¥Š3¬PQVÌme: ±"+à+²âi±"«·‰Yé¤XaÕŸuÅTÖ¬œ³¢É—‰VY_WL¥_°¢ð{b…ï늩޾ÖS%¿f:ÒœU-늩B5 VT%;°¢1k.V4’±‚àT¬¨—‚±Â}»Xá•w±¢F¾?YQ£ÎV$ù XQ©^‰žLˆMìƒM•}±bº¤+š‚GXј5+³ÀbEóU“½Lß+Š‚oX+aESð=Ya¾ûXVL`<¼X1‚ïðb…ùòcY15ÚËŠ)kk…”XQÅrXÑ”¬Á ž§XAeVØ,k\Xq²JC¬ R+Î(v‰½=Ÿ‡XÁšHXqj…¬8™yƒ$‡bÅuèüŊ똱¬°àÿXXq%°"Íþê¬PÜYÑäÛÅŠ öà æÅ ›|]VL ß¾¬˜¾}Y1e¾=¥…ü·•Y×+ŠX+ª’X!÷ +ú0™+¼ÄŠ9,VdVH‰Yç + Õ,±ÂW\‰uFÆÎ UOi¼ 謰a³ÌlàÂÅ [Ÿ¸Ìl$•Ba…VÀÀŠªD¢°VqôÌâUša±"3É+Ì…§+X#VdåbEÖ*=±Â|z±Âr~±"ká¬Ðý‚uºXQgo `EÓX+ «CÅŠ¢J©³"«+ŠâJXÑTØšõsVçŠUcVX»-¬¨ä5bEÕ,¬¨™YóÉŠªÄVÔ,ß+ªâXXkÄŠî³ÞGx­n„¶B&,¬h…£ÉйòþÅ «¼‡…GbEËšµ‡Y«aEQaVTùÚÉ sA“-“ãEŠðb…µ+l8´¢f™Ù0—5cƒÉŠ1ëºÌl˜ ›,+ÎCl+ÎcYM;gU“ª¦/Ÿyjñ-”GLVœQ,+,î>Vœ¾ÂI¬`Ŭ¨:XÁ* XÑ”§‰n`Åu*/+¬ú¬÷lÏØ@¬°vZXa…𰲂™BXQ´ZôðBN^g6.U`E÷Ýé\XTƒ½Ø0X¡U Ί:c;g…X쬨¬¶+4ß +zœ~”…½[kV|²"j¦V°BVD­PƒQîÕYÑf…‰)ó®îuòçvÍPmf[Š`3›Ù&Íãt›†¯ öžc™8ÇxµjËp¬_cïæ•½ƒ%<›†mÎÿlÆe„Æc1ç^_-Ég‡÷|N÷Çœ†{wu.<›Øî±ê•°±fË0MY‘mÌ—KÆ Ø{}µ_œÍ«µ‘·lj£Þ1a°eXçú̼©“¬Ä4ƒÀ=Z¥cL"ØÍž’¦9I·8VR¤MIØdk-Â|¹q«ç¤c<[›“÷ŽØ³€¨‰»½k<¯¹ÿLÝ}Žgd‰Ûž(]:ÕÉwi•Î2\‡ÍœÎA›ŒÚÈÉ^Þ‰ciCÜÈin„eÓk{ÉâÕk@gsf8dE¶{NsÚà P¾a8æÓ¦rn có›kÜì!Y‘p·ú¶¬È³Âò­á“2ï­á“2ïá£2ï­á“2ï­á“jí­á“jí­á“jí­á“jíO ¿®ÖþÄðëjíá£jíO ¿®ÖÞ>©ÖÞ>©ÖÞ>ªÖÞ>©ÖÞ>)ºÞ>)ºÞ>*ºÞ>©Þ>©Þ>+Þ>)þÄðëèá£Jæ­á“Jæ­á“JæÏ ¿¬dÞ>©dÞ>©dÞ>*HÞ>)HÞ>)Þ>*þÄðëòà­á“òà­á“òà­á“òà­á“*ßᣚۭᓚÛᣚۭᓚۭá“ÒÙO ¿.Ý>)Ý>*Ý>)Ý>©€Ý>ªGÝ>)+Ý>)+Ý>©Ý>ªÕÜ>*¹Ü>)¹Ü>)¹Ü>«œÜ>)GÜ>ª*Ü>)Ü>JÕo Ÿ¤êw†çŸ~8ß>Iœo ÿ qþ™¾…­ŸZ.,í].B*o!Õ7 KZW‘ ËEW• K1W™ k¯:anßïB!×7¥ ËÂV©‹`/O,ZÖ^Å.‚öC@í"”ëMîÂÚ«ÞEè½~¼°üäZ/,íX%/B oš¡Æ7Ñ‹07žðÍØƒ­E_T/BËoª–+¬ª#XT/,²_U/âq½©^Ä#¼©^Ä£½©^X{U½°ð{U½ˆóÁù^.ñŒoª±?¨UõÂÚ«ê…M¡¯ªO®ªñºÞT/l{U½ˆs£W½ˆWzS½ˆ(¾é½F‹åVÕ ÑVÕ k¯ª1„7Õ ‹ÌVÕ‹ò›êÅÀÕ‹h‹ôÏ—êE´³¨^ĘßT/¬½ª^Ät¼©^Xð³ª^X„±ª^X{U½ˆ©½©^ÄÔÞT/b>ÞT/bNoª6£¶ª^X˜°ª^Ø4Öªzç ¤®zaÑÁªzçÖ®zç ¥®zKyS½°öªzç;I®z1Ú‹ê…‘zU½°É’Uõ"šŠÓ¢zk}S½ˆöRÑ¢z[yS½°‰‰Uõ"Í—é]õ"Í—n\õÂÚ«ê…µWÕ‹d;[-ªIãÕ cäªzaõUõÂP¸ª^¤³¾©^XU{U½Höã¢z‘®ü¦z‘Âñ¦zaZU/¬½ª^mVÕ‹4w–rÕ‹4·{uÕ‹êïT/ ²Ý 'ˆöÄ„ (_@¤/ Úñ ‚úq+‚°y:A‚°# A‚ AxÛ‚ ‚áÑ„ è`@„0 J) ‚A ‚ …AЀ ha@Þô„ ha@´0 ˆ{`- 'ˆ¶œƒ ha@´0 Z- ‚A ‚ …AЀ ha@v€ ha@´0 Z„÷ý!Z„·‘ Z- ‚A à "- 'ˆÞ܆ ha@´0 Z- ‚A ‚ …AЀ ha@´0 Z- ‚A ‚ …AЀ ha@´0 Z- ‚A ‚ …AЀ ha8AD oZ"ˆkaˆ ¾¥¢âZ"ˆkaˆ ®…!‚¸†â;n‰ ®…á‘A ‚ …AЀ ¼¹AЀ ha8Aäœ ò÷- òÒ€ ˆa@Ô0 ˆ{t¢}Šœ äD{ŠA$1 ïBD1 ªY ‚.A‚ ŒAÆ€ hc@Ä1œ SA‚ AÈ€ (d@2œ Rp‚hï'ˆ2  … ‚BA!‚ APÈp‚H!à "Â:A39A¤APÈ€ (d@2 ˆÇä" … 'ˆö¹q‚ãB)d8A´©­D› :A1@2  … ‚BA!‚ á‘BA!‚ APÈ€ s‹ (d@öér‚H!à "… 'ˆ2œ Ú„‚ APÈ€ (d@2  … ‚BA!à ¢ñáÑ.ðN)d8A´WŽâ "ˆ+dˆ ®á‘BA!‚ APÈ€ ìÃAPÈ€ ì»APÈ€ (d@2œ ÚÒÔ "… ÂÞ,… ‚BA!‚ APÈp‚(Bq‚¸B†D„]!"• ‚LA'à ’É9Ò›R†DRNíæQr‚h÷'9‘^†D‚Å ‚dA3à ¢]w êNLßt3œ *U~ÓÍ€ èf@t3œ ÒÍp‚H7à BL,‚ ›AÐÍ€ èf@vƒ èf@t3 ºNéf8AðøDºNU ª2:A´ +A7‚ ›AÐÍ€ èf@t3 ºNíØâÑ–6N΂H7‚ ›AÐÍ€ èf8A¤›á‘n† A´ó›D»Â:A9GzÓÍ€ èf@t3 ºNDUëzÓÍp‚H7à ¢mü â”7Ý 'ˆ«¾éfˆ ®›!‚¸n†âº"ˆëf8A¨’Š èf@ª0Ý '‚h78'ˆt3œ ÒÍp‚dªP×›n†D2Ý ‚nA7‚ ›áQÎç!§AÐÍ€ èf@t3 ºÝ ò…nXA8ñ¢Í+*=8V´·cE{öÔ3À ò`ý °‚€XAA¬ ¡VÐÐ+ˆh€T4À 2Žéh8V´,Xau°‚”XAK¬ ¦VPÓ+¨i8V4 +êf`5 °‚šXAM¬ ¦áX‘š†cE‰—c…RX)`$¾©i8V¼–ÞÔ4À j`5 °‚šXAM¬ ¦VPÓp¬T&7Î75 ÇŠÔ4+*;V´a*XAM¬ ¦VPÓ+¨i€Ô4+RÓp¬HMñ"5 °‚šXAM¬ ¦VPÓ+¨i€Ô4+RÓp¬0™Vxž`E_ +®¦!¬¸š†°âjŠ—~„WÓV\MCXq5 aÅÕ4+$’`EjŽ©i€&oÁ jŽ•4û«c¥PÊ oj`5 °â¿°‚šXAM¬ ¦VPÓ+¨i8V¤¦áX‘š†cEjŽ©i€6à+¨i8V˜ojŽmJêX‘š†cEë9VþXM¬ §V˜ƒ+ì¹VPÔ+Hj8VˆîÁJCéMUñ¢ýñ+Ì¡ƒi8Vsèç›´Xq,+ɳ“ëM]¬ ¯áXÑ>ÔŽ l8V¤°áXQ>êX‘ƆcE` °‚ƆcEŽ• &®7 ÇŠvˆ+hl€46ÀJñ‘ëMc¬ ±VÐØ+hl8V¤±áXÑŒ•cEŽil8V3,éMc¬°;XAc¬ ±VÐØ+hl8VTÏu¬Hcñ" Ç çV´÷0XAc¬ ±VÐØp¬êWõMcñRÁR{ÓØp¬HcñBv7±âŠkl+®±!¬¸Æ†cEÕÇJ&{‰oŽÂ°B6VXªoŽil€46À ` NJܤcE` °‚ÆXAcñ¢z¥cEa¶cEŽil8V”-9Vv;V¤±V¨46À ` ÇŠ46+šñ+hl€46À `VÐØ+/ 'ˆD6œ RÙp‚hU†D:NíAPÚ€ Hm@´6 b„­Ú!r½ ‚à†$1#r½In8A´[¸D¢Õ ‚ìAw‚ ¼APÞ€ (o8Aõ­ò¦¼APÞ€ (o@”7 ÊNüšAY•7œ Ô£ ˆ”7œ 9úô¦¼á!APÞ€ îñE¯è‹ (o@”7œ RÞp‚Tê_ç›ò†DÊN)o@”7 ʤù}{SÞ€ (o@”7œ RÞp‚@PÒ˜ÉoÊ"ˆ+oˆ ®¼!‚¸ò†âÊ"ˆ+o8A´Û·DÊNž§BÅ‚ ¼APÞ€ Ì@”7 Ê„Ušå ‚ò†„DRAy‚ ¼APÞ€ (o8A¤¼áQ=Ý "å ‚òñÀ_Ay‚ ¼APÞ€ (o@”7œ RÞp‚ÓÞ”7œ ò·å ‚ò†$³J+¼)o8A õ°ô¦¼á‘ò†Ä•7 Òí â]A}‚ ¿á)”ªÒ›‡D NFi¬¾ip@D8 «r 2‚A‰‚ Åáa‘‡DjNJ{¤1‡_ßô8 zNéq8A¤Çᑇ„9FBL,‚ ÇAÐ〠èq@ô8 z=‚‡DzN$‚ ÇAXw AÐ〠ìAÐ〠èq@ô8 zNéq8A¤Çᑇâz"ˆëqˆ ®Ç!‚¸‡âz"ˆëq8A|UW}Ó〠èq@ô8 z=‚A‚œ¾ÊêxÓãp‚Hà ¢5!Néq@J?=‚A‚ ÇAÐãp‚hÒ "='ë²!ˆj=‚Aà ¢5'Néq8A*söõMà ¢]‚A‚ ÇAX¥ AÐ〠èq8A¤ÇAÐ〠èq@ô8 z„uñ=òÒ〠r@æ`!ë$!šQ‚*A–‚Pu îq!sèD1/A›‚ ÎAPç€ Ès@ô9 …‚DA£‚ ÒAPé€ ¨t@T: *•‚JA¥‚ ÒAÜ‹ ¨t@T: *•‚JA¥‚ ÒAPép‚´Wαªtˆ ®Ò!‚¸J‡â*"ˆ«tˆ ®Ò!‚¸J‡â*"ˆ«tˆ ®Òá‘JA¥‚ ÒAPé€ ¨t@T: *N©t8AÚ²ÎwQé€ ¨t@T: *•‚JA¥‚ ÒAX7APé€ ¨t@T: «4!*•‚JA¥‚ ÒA˜¼… ¨t@T: U‚JA¥‚ ÒAPé€ ¨t@ªð•‚JA¥‚ ÒAPé€ ¨t@T: *•’½J•ÞT: þ‚ ÒA•Žÿöô©endstream endobj 465 0 obj << /Filter /FlateDecode /Length 1992 >> stream xÚ½Y[¯7~?¿bÇh­Œî3]ô¡MsÒt±Ø6=EQt÷abÏñ1j{R_’æß//ÒŒÆÖ¹¡í"H,‹I‘üHÊ©ŠUQ¯¯¾¾¹zqí«BV¢©YÜÜR[!•,¼õ¢Ñ¶¸Y¿–oûU·ŸÍµVå?g²ìgsåËnËßfª.‘fW•?íÖ°÷!ìÉò×Güú‰O÷·üùf” 2£~M¼@Ñe{dŽŸðü»Éíüå~lßã¿È»ÚÍþ{óÝ‹kiSÓuíDí¸-=2]Uá®÷}¾º¹’°'RY²¬4Â;[,¶W¿_üº©-±¤k ÆsZ8­y ùÈ ìÃ’H‘?l¼x³5Å7ýÕð'’扬d7Z6OL£àM=PËÂøF¨¦f\£ÿÑ_'ôfQ’º4_Ìæ®ÒåÍÇD±çÍ—ÍCÏ|²\òöÛnw”Ôï Êq,‘¸ ‘&¹¦¼¹uQìS=ÂÊÛXÒšRþžPÌþAíq²èѶÿTÒ¬N)yMûf¢Ól9D¼6—ZXÓ°#8Óæ Á“ÁBüJ·Ú¢…§`Ç è®ìþ€oï᲎Sz½Å³;¼ò ÐnTù5º†%“Ôí…{h›Òu1Dxs½f£¶×-݃pÓF öáÒýþAá Ï2„|tP»az7@3XŸø)àüo»C¸›´å¿ÙwʸÔwÊxòVwKʦäýÈ dŽ#…¸ &ð>Z¶;Ð cIXñi¬ÈÒn6¼²‘CÒÓ±.(hß‘cúÄÃT& œ¥eB:!eâ—\)‘RøÚG–/Ql]ºœ4Ö Œ_dË’¨td°Ÿ£Ùš`D¼ W#¤Þ%Ž!âm÷t(вU—¹@@Рè·;‰o1¸Á·Hj”1û˜1»UĬŒh Ðz;þ%Á—wWë$«Ïœ.Ãñ´H†SŽ« ÔѾ¤î„讜… ¶I;Ü‘E`ÐÇ]ó-⢆žóžÛU(°³XD-6œ=²„¸èÆ”'ôÏâÒ&<•³ ÷£,P±–uá zxMš@‰ ·ª$q0–l¹Îä}ÛErn°‰1 Ö£9· Ĭ‡Þ¡Qíïó[ðžD ¿ö ª©3k¹µŸ[ tJrñf”²ˆ•›s%6û}丰¨±hqEø4ƒŒ“®þâÚÔôDmœ ÀuÚ!R„r†¯é8ÝlU•_8YÇá%ha¨¼-ÀÔ’Jâíê[ÔϽO½i?r 3OpL‰¯`ZˆFryÕd Æ<^BiØ ¥ù b*VŒy¨˜u( ½tê‹$0Äõ1ô\“+TŽ|0²¶ü·Ü¶›€ô°1öʱQ&Zºñ®péu©÷’*l@ ˈ}ã‡úËEÏ3_D} Þu¹lNšô-]lÛ4ϵ­xô„ÏXÓpýý,¶ vP„/"ÁZ$×à£cS‘ñŸlw¡0XÉltÕüÛ¡tÅ\Ýaè¨ä¬~p:Ø#'pƒíE:ˆ-yï÷0µÁ‰,2f§e`uóLCÏd¬‘õE-ÇbÜÔåψ¯ŽYxšˆA'¶=S°á÷§ñûªãBCF mtuT`îÈc”¸[*枢D‹IŸ¨©´¤'JiΧÈ`B8¼"‡uû4!Áÿ™éÂL0&£Ö.™yâ#ÄÑ%z¢‰Q9ïQN|‹˜ÜÌ‘ä¸BÐ ‰íÀXš9·;ëÐ-¸œ éËñŸ øý&NœÞà—Õt¼…íÛ)ü2„bžsŇ`㔓åÇØîrƒ…—Š•q°É>Èa}}6Dɪbéý»Ct݇™ug#=rDØ+§†„§‡Â!صoãsO„ŽËk~÷„®à®2[ìWE\¾}}UüJ'̤±Ð¦Š™ðèa{vKˆ‚ò6uÁÐÜ,ÁWî"ß•B|ä“4:-”j2“¶êPCÓ<s’7öÞünÚ¥*Õ}ÏăçL¿˜xòJÅm^HÍ&¿âQÀŸÁQeà˜Ž ú¢ÚtãUºäés7`E`÷a&œ0u ÿ:˜>}hÁÆðE׆ó§×çù'¦1п0UBn§*`„÷1:¸º½³|F E‚‚‘ëˬV)¬^54°¬f¢Qz9ÑXå4Bœ¬K5~–ÕHËgk”9YFx­Rdý¥ôüeE]=ßz­³Ö+­sþº´^§OyëMÖú³ç©Ðõ$ÚÿÈΈÊWÂx7M²˜¸·é>ˆ–C7éñÁ³lqv]ä’=çBc…“õ³Ý=’èœî¯Hô‰Â{óܧ ÿ\žOʇÅ=œææqoi>?W «²Í&©´p[ù„„7¹{üŽ{ bA–zŽç2Öac2ªŒ{¡y¡p}¯kY™®ñÑv{O<•Qñ‚€Þ= ôî_’æªQæý)à^æ>‹Ðç,CǦù‚zÝe£T™è²ýMUJ4€zH(cÂCãeæî^øÆÿ]¨W枺¨já+l¾ ’ÁMëâù¸‡–‡êå&yÒ<ðõÙð'%Ÿ_m(P·Mý·Õǧi|dpOšžY ÿßEêCÆz+TíŸVÔEIÈý÷ÕÿÞös©endstream endobj 466 0 obj << /BBox [ 0 0 576 360 ] /FormType 1 /PTEX.FileName (./simulation/figsim1.pdf) /PTEX.InfoDict 402 0 R /PTEX.PageNumber 1 /Resources << /ExtGState << >> /Font << /F1 403 0 R /F2 404 0 R >> /ProcSet [ /PDF /Text ] >> /Subtype /Form /Type /XObject /Length 11307 /Filter /FlateDecode >> stream xœ­Må:’ž÷õ+ri/&-‰”(n Œ0à…§/`†wþݦ7öÏ7ƒñ>!ª¬ìÓ³¸U÷œ8ú"ãa)¾ÿüë?~üó¯åsY–ñÏü‡ö?Ëþñ¿ý—ÿú±|ü·_ëÇ¿oÿýÓ¯Õ>ÿø¿Žý3ç’ìÏ¿|l{ú\«Ì?üé·Ý:ŽÏÍ?]×í3ñ±Ìáó½~¦íúÜÍëómiÿܯ£»9|>žNœÝõù¿ýãá’ÿú?ý›·}¬üvBúÿ×ÿôÿ±—ÏuùÈåsß>þøËÇ¿jýë?þé[¿uÉŸK¾9îï÷峞ƒãúöˆµ|Öõæøîˆ[Οç>8n:âßÿñ«=†vçúy–vWÝÚêö¹§~Wû¸ýu}º¦l_çc™ÃçgùÜ–ës7¯Ï·TÇŸ—9|î§Ÿ_gמy\ûp½7܇¼~–㣜æb—žïwìoz­iµ35·}ÆíLŸçÑÝŽ ·-œd™q;+'yÞªºJë9¥ßïȘiiÍðh¶ù7“/ÿÉb‰®ÿ±§ý•Žnýõ¿ü§ÿõã®·î-†´¿ÎÏâíòÿ¼ºîöÏêwY×ýŸ¹n;×ñü×ÚzÛzË×Ùþ 0öv¶êZ>þøëÇnQ§¹û?Žü™Ro÷ËÚOèÏvBíÓ?þú·ýŽÏT?Ö¼|¦eʯ…¬½¯ß½¿óóh·6%‹?~¥uƒvžiùÜæüZ?hÇkít=¦üv¿/ûç:w¼Ý:ÝÏR¦üz\5¿eîÛñŽÉól~Õy¥¸ôÖ¯]XîÏ=m“~-n®S“×·û}i=êújk˜¥ùv{fü6;Á57¨Ìùµþúõ5cÎÏ^ñÌʼnÚ’õ¿úY§ž_õvÝÂÌ2u¼µÙ,0í§ 7¦Koi*ÛÔ™®K+˜ãf#ƒÇuµs\4í¸õ ÖŽ˜§‚ýº& gvĹֽ®m¤Üþ*‡]ê¤c.ýTÓT¿X·öšc‹§scÝ6ëk[™êùë–?Kû¸‘¦Ô9ljöñÙbÔÜ]5Ç™³õ‘Ék¬–ØØ5ns¼ñ³zË©s£üÞÿ†•¯Û¡ö>R:æZN"íc)Î5r“Xè˜ 9ßÞ×Iæe숭ÌÁÆð›“wä¹ç˜=Øã˜¼Æ>b]Ë2{W-ký±ñxŸ<Õ£wä6@=&ïjµðfÁªÌ…Ç–£eÿkŸtÜlŒ¾ž- š»9-‰¨¹ßÕs®´xì[#Ád°j˜:Ž9ÖHâxÚP3LÎÝÕã$#lr­·þ¸-»Å¬IÇ6˜þÁ5¶Ø0eOe2 7LõÞÑFÿsì0¢Övª‹ ǧÛȯüä[”²‚ˆõǹSm]ßrÝgÙÑÆÔÖV—ÕH0åØÀh `±1Ä”cƒ‹«e››c­?º«Å:²ñ:×ÈÏÞŸúç€UAZ°j‰Ü$‘Û´Tºeœs©ÊZ{\´1yšk9µØÈèwµe6zlwu›:â¶l62š?¢…·õ'  ÷àŸ9n?krÛZ,û™ãîMn.7GëVG”$_;ž}œ³Ì7Ë;~ô[ó[nݪå»e*XmÛaýé'Gìü'ŽÕhõÇ6˜/?j9é°±ØÛк©âØÆ«?®˜cK‘l gnعå½üpÄý‡#—Ïóg7ç´¢ï³ãÕpýÚöÿþÚ« ò“ß› ò“ß› ò“ß› òƒß« ò“ß› ò“ß› ò³ß÷ä'¿7ä'¿7ä'¿7ä¿Wäg¿ï+ÈÏ~ßWŸüÞTŸý¾¯ ?ùí/*È~¯*ÈO~o*ÈO~o*ÈÏ~ßWŸüÞTŸüÞTüÞUßTßTŸ_UßTßTßT¿pü¾‚üäøª‚üèø¦‚üèø¦‚üèø¦‚ü•ã·äGÇ7ä'ÇWäGÇ7äGÇ7äGÇ7äGÇ7ä'ÇWäGÇ7äGÇ7ä/¿¯ ?:¾© ?:¾© ?:¾© ?:¾© ?9¾ª ?:¾© ?:¾© ?9¾*Ë~áø}YöÑñMYöÉñUuõÑñMuõÑñMuõÉñU‘ôÑñM‘ôÑñM‘ôÑñM‘ôÑñM‘ôÑñM­ó ÇïkŽojOޝjŽojŽoJ–Žïªr_8~_•{t|S•{r|U#{rü[E™¿·|¥QlüóÿáW¢Ø½í´2é_~~Û0dMþՂѶus·µ‚¥Wa{rÙÍÔ#NA[WØâˆ ЭÄQÌ,º©s©›‡Z»oµÚ?P‹–öØÉÝÌ^s1³}©™©#*õGÑÍ}ïæy¸ÙêôãZÛØº¹žnZ¯hfCG3‹ÿTµ@òç_í& ×›}¹eCÙÍ6Äl¦_Q»¯Ù|[«]’›EfuÓ¾¼¶a‹_óî +×å´LÅRÀíè¶_r³Ïþýµ¯²5Œök¶Á¿ýZ*íß_³}±§Ög·wMš]³·ÕNË x²w‡¤>ßzNÐì~Çmül¥¥ˆÇÖíîrݳ¦Ù¥'ÍNY¶Ý*³ûï·Çžw_ÒÙϧ µÄ³?àþà}Òµ?RçÙíjv*²³Û»^z)¦Ù}YªÝõ~ý§üÛíŸsÿÚg_ºwÙÕmÿ½vã·³ÛG¿þܡٵ_¯Õór_–ÞF†œÝ.ýóvczPZ,â›{‹µ„síöiµ;³ýþ6»G†År®f·QbÉ)úóm}ÉJTÍîÍÔmÇk_[²lk/f÷ûÓý×ûí^tïv?ÿâñÞ§ýxå4*šÝ;«QöðÏý~XÉeuÛ?Oýy˜ÝßzJñÁîѯÅÊÕÏǯ·aBy´ì^K¹ÙeüëÒ±r³ëh÷N?ÿ~=õôÄpóÞ¶ÖÖG©éŸƒw¿ž´u;Û?úý;º]­¡ØýîíÛ¦~JñçÑWE·þÓÏWË ûì‡Ûþûk ÝβOþÉžÿÖ2Þ}h›úß±èø­YûiíiwûèCùfoý÷[Œ]Õ»¿GÕhÏ6oÝöï·þeço Vív»ÿ«/jè¿oAëðþׯ7;÷ÝÛ—Ù€[3®Ý?—þü›ÝãÙýxÙ¾fv¥„Túç-Ј‚í<ÛóbÅæñV¨yÁŠäW+²?Xá/w+J £³¢Ø »XqÞ.Vœ~ݰB·Y¬°Bm¹X‘õÐÄŠfö6&VdñM¬hfBbEV…ÙºÙÅŠÝ}aÅáwV `Åám7XqZ“¹XÑBR9Vìôe±ÂÊ{ydEî/Z\¬Èêë°"[HXQìzV¿iÁŠ"ÖÀŠÓQ¬¨ÎÉ`Eµ1ÎÀŠêm V´¾·,+š½+š]GVâ0¬°X¶¬h¹¦ÇB±¢euXqì|W˜ÊÀŠ£ç8+ší±_¬ÐËFÁŠ£¥.V´«ÇNXqÚmXÑ— ¬€í°¢zß‚¥W4.V´ßc ¬(›·qXÑ캬h½j vœn×¥—ƒ/V”¬û/V4»Ô…û'V”]ÏS¬h¶·O±¢e€þ|ÅŠr¨=‰åà÷–1æö‹–Il+ÌN+ÚiûõˆÍvö‰ÍöØ(V”ÓÙ +Z$I#+ÎÅ+ší±X¬8{æbE‹5ë>°â\ýþà ³ëÀ ›9Vœ9à Ïg/VX,Ë+ìE¬s`Å©±¬0»¬8‹aE³óÈŠf÷ö +NkXqÙΊScXqÙΊS,‡Ø+zú{±"ùVd¿°B‘V\`E±KºXqZ„ºXqú/‹þ׋ï‹àÓÀŠÕ{%¬èSZ+6kÚ+6ïò°b³†w±"y‡†‡=aEñ$Vhd +ú|óÅŠSãn±ÂÆýidEö¯+vÅXqh\ +ŠÆ°¢¨ïÀŠrå×xì+ŽE±C¬8«Å ‹å#+¬†=æ»—fç‘Ù“½`Å®ó‡5É‘Gˆ‡b%¬(Þ·‚UyŠXÑݺ ¬( y„³ÂåÅ Á+ZÈÕ÷eÓõ‰%éù‰-Öúó+,×ÖÌÓÀŠrˆí°BÙo°¢ê|Ä áËÀŠ“ö"VXl û¼b¬°Ø´¬ðÎq±â$o+NÆbÅ™=VŠsKÅŠf#+Ú_Ë1°ÂêVûÀŠ“ö*VXÛV4;…]Ý.+Ìmd…}íXQ{ȺXÑìÎzXQW +¬K×­OwÁŠªÊ¬¨Êƒa…Ùu`E=üz`E³ýíMõ¿ª±¬°e~ËÀŠZt<±ÂJcy`E»ÌeÌ+j½çµz¨+¬6êßwV˜íŸ;+lÑß>°¢Û°a]»]a‡-[’‡`±ÂlÏ‹œf÷~±"õ—„ƒ»³V¨¬+4Ò€ÅC8¬¨‹³ˆyqjŠÕúÓÅ åë°bsdà °`EŠOûO%¿'°"y„Ù#¬Ø=@ÀŠÓÇÞ°¢úP]¬Øi‰»Ò±¢™{`Ŧ¾ +o;ÁŠ¢VœÞ‚ŒãaEÕ8M¬h±ßc¬Hа"yª¬H7Š¬ßƒ‡ú:¬`+ò±âôG¬¨¶|h`EÕ¸]¬°X?֠ʢû!V”U÷C¬(Y±VdÅX‘5n‡ʹƒ»jj°‚ëƒ5'±âÔõ =ü`EU'VX¬&Ïè±uÕŊ“û+ˆ¥°‚ö+ŠØ+Šb3¬8u¿ÅŠJML¬¨Êf{ R¬¨›Ø,V´.ày±Xa«`FVXŸØV´NÑG]°¢Ùv~¿Å ‹½e`…ÅÞu`E‹…^³…UcgEŸþÉ+¶Ec±Âb_K‰ö¿t±ÂJòbAgE_=ä[ë¦u`…ýÌ‚}.Ý^‡”Ùy¨A™í5"g…­Y\΋} ãy±ÂNk¯+¶Öí÷ób…Ùu¿X±­Ù‡Ä°b«aŪ¡+¬h§}cŪr;¬ØTã†,+6…dX±©nð§çwûH¿¹@Ž{aêP €/;ÓŸ¸’uBdõþ@Vze=DI9I>Ž ¾wF$ËWÉÊLÝÇHDå røS@vMÚ »êÒDeQ²úqÈJr!€dXrª@ªg2äˆI ÈÁï VØ)#@(úI äpb@ýˆx9 HU‡ TÄïeHÙTÈ@Z«ðBI|_I:_Bò@NFÈ©Âa€¨ƒ@ª¢r2)$€´¶åN±e‘ËS€œù*Du€*ŒCÉ©Jް}RCiM.3©aí¥ª‘Ö·±0eƒåuHB”R¼s@N€ð<Hõ¢¶Òò0‰aƒW®:@ú+ùˆ > ÉEÈIÏÃb| Sfç¡0Õí!Ù°î÷×Ò9F€TéuQÀ@ÖM…'ĺÉP˜²Yh%õôþ@Zõ-€´ntH³×<dSò @Z7óÁ¿²%€á±µwÛm÷b ±nw iö1$æVËö5/Ì †£}’v¯bµ¡ Üó› &1ÌîÉÚŸþæ,¸'@Š¢ùfrz@˜a k”§:@”<ÏHòÖ @Ô¸H¾Í‚·;rž@4Ô šp ª¡Õ_Èé)<Y}Ô @6ÄäcF¢!IÊÆÈ¡¢b€(@˜¥ €hA$+€ª%$+à“ê”rªR@ªªˆe#@ ³´HTs³Ç™ «œï#@vU?ÈÁ¬¹r¨:@Š2$`“™ädf@9©® gÒ¬°r&2„€@v2ˆ•Œ@¶rjV€TªYÊLŽÒ±ŒHkC· ¤ÅÅÛÌF­ú}Ro3'¡ZÕíãÈÆfVHqˆ­ŸóŒÇb#pÐ8@lî× @N2 „ö"€¬Ë­Zµ­ªŽÛ½ŠŒ¤( Ÿ@š}„]»]†™ ðÇ<Y«wÕHŲmÊYadÓLÙ¨þ ióö@RbfÄÒlðHRõ€$ªaHÒ€$U—HªÌdøõØ 9ÃÌÆFQ€´n°ŒÕª|Ÿ·¸¿ HkÖ‘‘@öU€@¬B2Ì‚›}Ö ;À@˜U¿ªUý­Û‹§VÔû̆†+°bõÑ3¬Øô©X‘œå°")3+Ôqa…VßÀŠÃóXQ9+Šú¢XqèÞ+vÅvXAß„E}VT QbEU¡D¬(¬ö„Yã2XAl‚»ú>¬`Å ¬8Ym+Vhõ_°âdÖÛYa!' ¬8™Y+üµ€™Õ·;³®·¼Â ;ã,xÕ,¬¨ë5ëÝg!‡<£º}Œ¬¨‘w8+¢Ð#V´‡š×‘EãtXQYAÕY¡¬°BLbV¼Ã•+ˆ}bźÝf6zìfÁÍÎc^±’÷ˆÍ;´¥Å®ö"Vl—ÂŠÖ <+6ò.±ÂBÚ6°¢ÃýúÅŠÖ,êÈ —¯+«Ä {!p˜··…©¤YjX‘´xV$­€‚I,€yQl+˜ý„QÆÂÔ®•“°¢=Ö:ÎlìÌj‹ǢŒXa«¥)\Ùõ1Sá¬8( ‰öØÇ”Š÷GÑ -±‚v°¢lwV”$6ŠE+aE¬ð+Nf>ÄŠS3u°âëaE{ Û˜Wت‚m`EU^+jò™¶`Eî'p±B«aïZˆšçƒ»'‰%Ö¢ökƒÅSPXQì\¬¨Z×$VT/ŠílÓÀŠ}iocÅ®|F¬ØWŸ+öÕ¬ÐúnX¡J5¬(Ê2‹¡o“Õ[;¬¨Z^%V0K +X- +´bVf±ÅŠ¢Õx°ÂÚÊ:°ÂŠþã$FcÁ6΂ǸVTfÅÅ úžXÁê>Xa!cÌ+Nj`bÅɬ4¬ f+·ÃŠªX VÔÅŸ8¬¨šÆ‚ucÜ/V”ûŠ©z*Ï‚1I!VÔÛŠ) )˰bÊŠòûWô#+¬fãExgE·ßXÁ¤‰X±jµ#¬XyÓE¬XlgE{ …<ÂŽ·i1:¬h±z&1,Äøª±b;îyÅÆï‹VCYVØ&*ëÀŠvÛ˘W´Ûž†716ßœâb…óÀŠÌêp±¢ÝvÙÎ ›-Ä.»/6l}¾;j·ý÷Å »ÍëÀŠ=fѬ‡;ãf±ÂvXYAƒ¶:yd«‡aŹÂg…Åò»ÞsÕ›bÅÉñÄ ëi`Å©I8XQg5¬hí½Œ“UµXQË-¯° ô5ÉÑY‘–ƒO©…‘c¨A%K ¬H«VdŠÉf͇յfûŠ3gEÚ6­VvV˜Ýc£oÙŸrùfüŠ„¤=2 {^ï*!¿}.óÒéÈí> :!2‡Ï½*Ÿ»9|^ó¨"óúüvBq~ÿÿ:!)ï? Iuû™PHöUóB!¹ ó$²§íK¡5(¤@db¿!Õ»Xˆ>µ}a áè…ðK0„£¢¢o ’!÷óº¾1%’¶úÕ¹Mˆà7«"¿iáü”Cnaã/­3í£tˆÌÐ Ñ··ïâ! ´ÿòò!ÙÞ­—ÑÙ~¥ò}àü—I6™šüˆ¯ßêtÌl7·ÙjÚû»<}‡´©M¬ÓÞËu6èœÛ8?ÙÛaZY5µŸh²¤O¯VÌñèÕ‚þfàä}Dk`ž»9ÇîûÀ­“{¦&ÛïèðEZSÛ‚&ç¬Ï(M±ú–girÃusÌþ¾åÜþ÷樵s; 'ËIJ/š˜{6r?z¦;ÙÈ‹ï³ÓÇÜ.­©Tßî˜Ü©=ÙîCïM9öÏü¶ÙéÔžP½D9å¸ù¦pÛô½‘ç4©{“jö]áêl 0Ðw•›rì“^*{L9Vß…ªNîðmãàÓ+ÐyjKé¼ô ¯VO÷¦‹¿Õ;»5¸9ZñiŸ y9}¹e™ Vy]üåÿ4íØ“¸¾»ß¤cò×áɽá»cõ5üs7gík~:¦Æy=}îbŸ”\È«¿¦Yz~9ãhë }ëùБ7ß¡©,“¡#o}Eikiòˆ}'É>Q1×­¶êûГâe9-}gŸ½¿5éxúúƒ9e¡ìù†]ãì7–gÏ)™ä”½:[fCGê“»ýÍäÉ»Z}<¾ÍöGûÝ9”[vQãeŽ)GÍõ6Û:åØßO·I³9Á¼ëÄs6 ï>«P×ÙŽ¼;Êë>[“9½¸=ÙVwßbùœMòÞëh} æÜãð…E½Î=5$ËGfç»9ý´|ô&Ó÷Ú›t<{Ñc™Õ¤Ê‡Þ(J“º[¹¸ÎrÎŽsJ_Knqu™tÔiš¥oqÓ×L:î.´Í¶œ²ûJ¢<©Ö’­æ½ù¢¹þxö×5‡3å¨W¶Ù`eÔßíšË­²¿\bݪÌ!À'OûÛ•sƒ‡ªz—É=þsí­û8'õóv«0Õï¶÷|tìkmt®s˜£ÖýÎ̱/¤˜ËïK_VÙßóž<Õþfþêï°Ì8® k0&¯qí{tôWü&˜Y &x!-“G,þÂNšìÇûÚ÷3°¹¨¹~¼o}([ 1ÇÕ}ë[(öÙ¾¹#ÚpÕß Ÿ“3Çä ^ëÜ©Ú xî«sæÆ¹æhÃÇWSŽý5œþ^Ãä.+’ž:ò´¬È»ºò£ã›ºò£ã›ºò£ã›ºò£ã›ºò“㫺ò£ã›ºòŽßוßÔ•ßÔ•ßÔ•ßÔ•¿pü¾®ü…ã÷uå'ÇWuå/¿¯+?:¾©+?:¾©+?9¾ª+?:¾©+áø}]ùÑñM]ùÉñUyøÑñM•÷ÑñM•÷Áñ]±öÑñM±ö ÇŽoеOޝеŽoеŽoе_9~[¬}t|S¬}t|S¬}r|Us}t|Ss}t|Ss}t|Ss}t|Ss}r|UsýÂñûšë£ã›šë£ã›šë£ã›šë£ã›Òé“ã«Bæ£ã›Bæ“ã«Bæ£ã›Bæ£ã›zäŽß×#ßÔ#Ÿ_Õ#ߔߔŸ_ùßÔêßÔêߔܞ_Àž_Õ±ßÔ±_Ô±üÞ•£ß‡ß‡ž_Õxß”jž_Õ?ž_Õ?¾pü¾þñèø¦þñèø¦Œñèø7Ê_‰XÑaT±’À(7’|òÐIûy±„~T±t{”±,zÔ1{±œwTIÇy“±DsÔIe½ ˜=*$ín„ôH²·í³Gñ‘doŠê#–Im¾‰pIɤQ$é&@’|…{(t{ Iöb€ö ë×[›‰¥C£IÏr K^F ’¼l7 ’¼¤›I¶}è ³G KF ÿ$yÍ7 ’¼î7 ’ìo^‡‰­g%Hlä;Jäm»IØw” 1{” ÉÛ~“ É’ßC‚ÄÆ€£‰ íF ³G ’ܺá(A’S¾Idë4ù#$HúÀm ÉþîoHä¼Ý$Hr>n$f$y_n$6h%Hld2J˜=Jd¡*$Gº=Häc¹Idß¶-$Hl2Jdß…'$HlNq” Ée½Iبb” ±ÁÂ(A’]ßr°ËM‚ÄìQ‚$—ó&AÒíA‚Ä?JØÌÕ(A’í «A‚$ŸçM‚$×í&A’[ÿ%Hlšh” Ù—t“ Ù}š 1{” 1{” Ùm›±¡=ìêH#G ›Þ%H …£ɾž7 ›c%HöÖ¿F ’};n${Zn$†¡Q‚ÄìQ‚Äh3Jì¾ÍWHì©Ü$Hötþ&AAÐ ‚èU° ˆZXD2$A½úÑ«PAre”" ‚hË… ˆ^u ‚èŽCäH »…AI Š$I‚&ID[’A¤JÑ^˜AmÑA “@„I Â$„í`‚ Ú<¢í™‚ & ‚H˜$¢WÍ‚ & ‚H˜$"a’ ˆ„I‚ ÚЂ LA& “@„I Â$a‚0 A˜‚ LA& “@6D† “@„I‚ Úî)"a’ ć zm‚ LA& “@„I Â$a‚0 A˜‚ LA& “@„I ¯B„I Â$a‚0 A˜‚°ÍA˜‚ LA& “@„I Â$a‚0 áµu‚0 A˜‚ LA& “@„I ¯.C„I Â$a‚0 A˜‚ DA.{¿ “@Ë.7ar “A¤LÑ”Ai“Aˆ°D›NA´ÉPDú$A ”@ö¤‡ H”@4J‚ ) ‚h£‡ ˆdJ‚ Ú¤)¢<‚ R* ‚Hª$"­’ 9Ñ–ÏAÉ•@äJ‚ ’+ ‚H®$¢—cƒ ’‚hï² H¹rŽQ®‚ WA+ È•@äJ r%¹’ ˆ¶8 ‚hS¤ ˆäJ‚ ‘s¤›\IDr%AÉ•@äJ r%¹‚\ A®‚°Á%A®‚ WA+ È•@äJ‚ Ê™ƒ ’+ È•@äJ r%„A+ È•@¶À‡ È•@äJ r%¹‚\ A®‚ WAØt ‚ WAØp‚ WA+ È•@äJ r%¹‚\ A®‚ WA+ È•@äJ r%¹‚\ A®‚ WA+ È•ˆ !W"‚„\‰r%"HÈ•ˆ !W"‚„\‰r%"È W‘^ID‚%Aª0Dc ˆö0‚hÏHrb¿É–A´EfDY~DÊ%AÁ‚ éú|/ ‚H½$¢­•‚ ;_‘€ID{®C$L &“ ˆ6I‚hk¯ ˆ¶ý ‚HÄ$˜‚h{‚ˆID[mA$bÑžØA‰˜A´]F„1;9ÈQêMÄ$"“ ˆDL "&‚ˆ AÄ$"“ ˆDL‚ ÊÚƒ »ªr„ëƒ 9J½‰˜Aôüƒ 1 ˆ˜@DL HDp“ ‚¨=A$b‘ˆID"&‚ˆ AÄ‚ bA1 ˆ˜@DL "&‚ˆ AÄ‚ bA1 ‚hÛB$DLD1ABÄD $DLD1ABÄD $DLD1ABÄD $DLD1ABÄD $DL "&‚ˆ AÄ‚ bA1 ˆ˜@oDL+R1 ¬¿•¶¤cX‘I`E; ‚¤L+Ò2 ¬h¨ÀŠR¥ÀŠRùÀФ+4 ¬HÑ$°’Id¶›¦I`E¥ÀŠTMÀ ²&`]“ÀŠŠ­)›V$EX‘´I`夔UnÒ&`åˆÉõ&mV6 ¬PL+’6 ¬HÚ$°"i“ÀІI›V$…X!Ì +H›€¤MÀ Ò&•Ä÷ÓMÚ$°B¢V´«R`E»@V4¹XQ·¬h×0°‚´ XAÚ¬ mV6+H›V´óx`EÒ&I›€¤MÀ Ò&`i°ÂŽ—`i°R£”µß¤M+’6 ¬ð<ÁŠv[VBÚDX ia%¤M„•6VBÚDX ia%¤M„•6VBÚDX i“ÀŠv¢+H›€¤MÀ Ò&`i°ÂÎ÷`i°‚´ XAÚ¬ mV6+H›€¤MÀ Ò&`i°‚´ XAÚ¬ mV(,Ò°‚´ XAÚ¬ mV6+ßH›V¤mX‘¸I`…9m°r‚õ¦oXY¯úÖ¨pXaôV´‘k`EÍ,°’ïsîÈœV4 ¬0ƒV¨ÇUt+Ò: ¬Hì$°"µ“ÀŠäN+‰’|< ¬hs=°‚à XaN0°¢5 möX¡ÞV$xX‘àI`E‚' X€OÀ ‚'`%êA ‚'m|X‘àI`E‚' žV$xXvÁ ‚'`Á°‚à XAð¬ xX!Œ•ì§ÞO+< ¬P‘V<+ž€O+ç}ÆÁ“ÀJ½Í˜„à‰°‚'ÂJž+!x"¬„à‰°‚'ÂJžVNÂþv<+ž€OÀ ‚'`Á°‚à XAð¬ xVû`Á“À ˜V<+ž€OÀ ‚'`Á°‚à XAð¬ xV<+ž€OÀ ‚'`Á°B5¬ xVò}Î=OÀ ‚'`Á°‚à XAð¬ xV.Á“ ˆO‚ ’< ‚ÔßfL*½©žA6>ßoº'AD"SnÊ'AU^õ¦}‘øID3AÉŸA ÄÙn(A) A¨ŸAV¡AˆAH| Èþ[½K`‚H%"” ˆüƒ "`DÛ—A$ƒAA È @dP‚ ’A ‚dfPö› JD2(AÉ A´]r¤ÞçÜ‘A È @dP‚ Ç}Õ2(AêE¤ÜWm!ƒÑvÊAæ"2(‚ JDBAÉ ˆ !ƒ"‚„ Š2("HÈ AÆú× ƒÑ %A‚ ƒAA È @dP 2(AóVï ‚ A‚ ƒA¨Ÿ@dP 2(‚ A‚ ƒAA È @dP 2(‚ A‚챊+ßdP 2(Y ‚®A‚ ƒAA È @dP 2(Râ÷ÏßdP‚ ÒA ¡@”P R(Ai¡A2ëv÷›JDr(Aé¡A ¿_oŠ(AI¢A*ëz×›(JDª(Y‚.Jd¿¯ûå A1‚ ÒF ‚JcçM%²+G‚ 1ƒRoâ(AJ)k»‰£@ÄQ‚ G ‚± ˆÄQ‚ ¬š 'ë€÷›8Jä„@õ&ŽAG ˆ£A2ë‚ÓM%"q‚8 ©ë5Ç>Š£@ÄQ H%ßÄQ â(A‰£A*«¸¶›8Šâ("Hˆ£Aˆˆ"â(q‚8 A‚ ŽAG ˆ£@ÄQ â(q‚8 A‚ ŽAG ˆ£@ÄQ â(q‚8 A‚ ŽA˜a… ˆ£@ÄQ â(d9ôrG ˆ£@ÄQ â(q‚8 A‚°Ê‚ ŽAG ˆ£@Xe&‚ ŽAG ˆ£@ÄQ â(qr‰£@ÔQ‚ Z‰áÍ’¨B­7…” ˆæ0ƒ ÒH ‚H$%"•” ˆdR :)¡‚R A*‚ •ÙX¼ßÔR‚ …c»é¥A$˜©¬òÊ7É” 9 a]³‚d A2‚ ™AL ‚H2%R/¢Œ’)Az¤ºC‚d A2‚ ™¡êAãCI¦@$S ’)É” H¹¯ÚB2%“ÛM2E É$$SDLAB2E É” “1"’)É‚d A2‚ ™AL H¦@$S ’)É‚d A2‚ ™AL H¦@$S ’)É‚d A2‚ ™AL H¦@XÇ.‚ ™AL ô7‚d a]3A2‚ ™AL H¦@$S ’)É‚d A2‚ ™"‚„dŠ’)"HH¦ˆ !™"‚„dŠ’)"HH¦ˆ !™"‚Œ’)¿þ/TZendstream endobj 467 0 obj << /Filter /FlateDecode /Length 911 >> stream xÚ}VKo›@¾ûWp)–eyDê¥T©U­¸TmǪÄà&ù÷×Â:q* ³ÌóÛofboãÅÞçÕûju~©Œ§â¨ŒKåU·^¡¼ÜäQ©WµÞO_ÁïêËùe»V*ÕQ¬3BFÖòûþ†=.Û ÔZûß`y€«îƒ$÷'XmáÚÁµfƒïh¼Ù£`E=ôŽ®E÷'D°Šó[÷OÕJÁ`z*1ÕY%‰ñšnõ°ðEY2q× ´~:Ê´fÚgGÌç%©¬½ί:ã}VßàgU¡Ë‘Zd¡ít´Ž£ÜÌï¥p³9ì…¼2÷ÍEš<ñ«Gdw`áµÔ€ܲ _Ëbaÿ™u¢¼Ìük¡Z´Å*¡’’h¿‚å„‚¤ðݤ÷TcŒ·YbëŒ×Ã`ñ÷õ´ ÇåÝò8Lœ¬^'ò}¡Ò‘IKf¤ÌÊÿ«t¦¥žæi\Pï¸k|@MÏKÉEëå&;쎃°~ý÷Ä £u‡¸{ôAë(³\ùWâp¶™ì%¥ß`Ü‘èf.ÿ¢» 2£âÐ¿Þ Æ ÕqíPˆGÌaEÎjÝ4¶Ö-o¸:“’‚ËÒ2Ù°Du+{ãýbªß3å\JFÃØp;á¾,a ‡ë¤‡¨XÔòžÀd/¶73Ÿ-›l{Î39À(Ý“ä’Ó4ñ¿r­Ú±Þa´ÛIÂ,Í„'úg+ÕPŠÊ3Ð)™ê¹*öçô8l¢ËpËwæˆÍù<ÝsõÉêšš·;`3sÙy¤&Ê=ó‰2‘)”©?Øæx.À¥­É;î¦ìT4UDp¢­åÅ©`8Áçtæ ‚é˜Û0ÏGwF£çn¦F-ÜË8B™Ãèžg>Twè,—ø8Rk†T011L@õº,=’¬³¹›[i+—VNõÑAMw4¿H´Ù:g$vH¤Ù£­é};„†Ë†º§InRc$Ý6 æý‚f¼# `ð(ùj±–y"šf+ÍÚììa9;Õ¶8Ñú†Ç Kgé[°PUË]æ¥ÌÖn—ìèÛ7@IE3_L†Þ–b’5žñLûÝÚêêž=v¶la»À9fÆ*ey#àê þ¡†÷œ{àÁÎ}c¼ù‚ PÎH§# Ÿ ¨æÅ÷Hs2pÇŒ,µEE·ÐAk¡ƒ’ß©ÏA‘¼úß7 |«üì;;Óendstream endobj 468 0 obj << /Filter /FlateDecode /Length 4393 >> stream xÚµ][s㸱~Ÿ_¡—Ô‘++WL*©J¶f/¹œšìÎÖyØìƒlÓ'–5‘ì¹ä×§»†HÂX"NMyÌ Ø_Ýýu“¢Úbq»‹o_ýéí«ß|ãÄBЦ\¼½YHm©äÂY×tÚ.Þ^/~^þ°½íw+­Õò/r¹½X)·ì`ó_Ê/ñœéZ±üéáŽ}ˆÇär?w¸û9\½½ ¿¿¿‡3÷8…lïh,œÑËõcñ^¹ÆÓëÕ×ïð׿=þco.~yûçß|#íPuíÛÆ»fFJ˽q®‹•1r±‚éù¶ #¾,%–ýú u|‡{ry…(û>ì<‚÷fèºÆ8ÉxŸâµ€•s‚F´‚5\ɦÕó.«y£=H>ŒúŸ¸  ÁzGð´sÇŸëœ6Æ4Æ·¬ÍO9ŽGü,rR<±<äw9!¦ñ&-²úå+T ìöpL/Ý6¢K<åWɼ`•Àº^Wé8¦’hÓ4>d0m£¼ÿÿ³Œ9n™ÿÍáÀ¦µž‡üCX‘µN×´{¹u$’ §î–o. fIåõ¦¿žƒ”fð1EmœoqÚcD<ö<;ˆ!aÀ¤h1ÝX@#¬=°‚"E òp¿»ûí{`v¹ÝE=]Gü€£‘øeOcúëxúrÏZ¸°-`àšoÂ,ðÂ4˸ƒã¶OÈïpŸƒ-~Nú¡Í5ñÑãdþ6ëÏ^Á¶=ØJš8ÌŽ|Ú™ܧ³q}þ5»l´Ñ°¢‡q¿G-¹€Íº¶jÀœ_ô?ò¯r’VFyˆ9¶ã?„ÖÙù´°ÿÅùˆF‘ñ|2Ð0o+Ó^å'á”<- ~›`¡y€î²ÊÐæË£*«ˆmŒ5_T$MHÌÑÄQûò%9ê²m´U (““Õ5ú`Èßcaà—íq'XÊ~Ê€õC>§/BÐf]VIÎrYšÆñ”’êåsù¢•~w±’­ËKrÚÆÙÀèDÃJ¹F ¤aXZmˆÿ»ð†j)d²m¨šv}XÏâÃXËõûǘ¶6kÜÚîuWjúÆÃAØzƒGFäø%WÛ¦© pt8—†oúëxxý®¸mTóO¼ ëR®±PÌ­Ô¬Ì_Ï${¨{ #c²‡œO£Þæ Œ–s0ªíØ\Q0r€f| âS^_¬.)ƒßæ×7ÎûiÒ’Ý(b¤ÕD"ï‘ÒºaMôë/sÙKe¶²mœ~Ÿ²Ô%…idÛýá&86þ]ðÌž·¡Þ¡raJ8Ú%ÏÞ…+ýrîy®¹&‚ÒoyF¾7@oPh*k¶(þs€LF‚i 7·«ïžÈío#äžë¡AHâ1$ÃÖ.‰¥|šC ƒúM")CŒS=ÖIZ¨0#û/Ý€n û‘ë.pÉ·pbݰûÍ]Ôù?¡dƒ—áö—ï¶l#©ÆºÝîø²Á™ Ï• ~·F£†Z»E2_¹ ›—ádØ!ïï A¹¤ÐÕ@÷pefêp>¹]ÐŒîáŸÿ~ýöÕ¿_aM%@J4*,ë —‹«Í«Ÿ‹k8Ú6ºó‹4r³€plœÀ²ûůþž“ъƵª$†‡ùOdt]ãà^nŽ %$È8Gz¤ÓŽéÀÍuc ^±@^¹ôìS5±ÜUÿž—z´¤ZCy‰nÎT´{œ®ÎLtgÁ<Ýx&?"Mlƒ£kžÔŒ§a\©´­fÛê’ åÜVÝËÀ©ç¹× i2'Ë £ŒÓ®’¦1pk¡0…©£ü‰b{?µ…Ȳyhëçüúo€üÇ×äNÓMgd-À• ¼!ÿ€Ð?¾.ÄÑ ›qUÑÞšFxõB“iNU‚î‘{™É ÜçI¸‡«‚l \aü M–8cN¨Â]”e¼ %ÁZ¨ÖÎ#P©à¦^ÀhBü¹Ð˜Ô%=.{¤çñ˜>O×$QÏɪd¨gŽ æ92˜ fÈHa=GF ë9"8>gÈH‘6G‡Ì ÉÛ%¸šlOõög·  Tƒ «4ÜüoÈ?IJÎ?{ˆ%Ãÿ‘8Y½Lœ7ÅgP@T~4Å•h ˆ…Ъ~«€CúU˜ùà»Õ¾€k`k«l»ó¾gŽCµŠúèÕ…²…ô[·ÃOÑTÛ UHÀ5°QP~gL&Á_ x†Éˆ¶‘­«D'pLÐÓøÄùädý2|rÞðÉpŽL(m[ ”*èL(CônD[`”à‰Q¦à`̰ͥSJý)§Lt‡*pJ`æ”)¸îdTj€'RÉX-—«Ì°³ŠéTÓÊJ¬b`[XÅ“«”­œ®à”VΜdžVF“dZQ…:¥z¤•zWñ-¡,­TgZÉ€k%ÓÊÛEZ©£?ùÀDw! ´R8ÒJÎjʧ•*àL+9«sœVæXmH+Fúy ŒóÍéÜšZ`<,ÀL ÂÇWð³ú.~V»GŽSÑ©úd˜h†¦“"˜Î‘B{†ˆÙ3$pŒž/"EÚ /ç‹HžÞâ«•’pÛ5ÒÛš NV/ãøgÍðùSzpœVŽgÈTn ¸6çß)v«e!ÿVÀNéwŠÝù¶~Ï7Çh ímÞb*$߸œ{§ØN¹Bî­€Rï[ WxN0Ãb‰J¬„𖕸ÄÚÃ+uœ®_†LΛã‘z~8G®ç…+ÐItæ“!:ßpêŸÔO„2·Îe†í˜QªèO>0Ñ]8S ”*ÀÌ)«ù®À)5À©d¬Ö̱Zbí¸e©Ä*0á]ÝÇ'+˜¡•ó&y¤HN2ú§4V©ά2WÒX¥xb•)¸V¦À*3LǬRE{Äj]Uª3«d¬¦Ú«ÔO¬’±šqV™aµ«¸Æ«™/e`þJ ”o¤îFohµüˆÿõ÷÷þ9Y‹ ÿÌ‘Á42G³Á )¨çȈA=GÇç )ÌæÈàh™!#9:~ÁNÙJ9Xš†¿+Ré!ÁÉêe"à¼))ìS\½$Wç < :SHÀ5°S~Ž-…î ùw†á8T«¨Oð|ÙDë é· .§ß ¶/>'¨²ïÄdʪBòa2¦œvç*½žd €…©ú>ÁéúMùäÌ9á“á_ò>At&”!z|Ÿ@>ø«že Þæ>òdJ™c»H)uôGJ™ê.º§ÔfNÉX-÷„…I¥ x"•)¸Ó…þæX-±Š×Q•Þ'@“˜®îû§+˜¡•ó&™§•Ñ$ÓóG_ •*è‘VFè|ÏY(Tª€3­dÀu©R™c;¦•*ú[™Ó]H] •*À‘VrVkMVj€3­ä¬ÖµZ™aµ!­(5ó}Ýb³›®Î“íp`|¡à[ü Æ_áçuxNFÏÏLsd0 Ì‘‚yŽŒÌsDp\ΑÂkŽ Ž’2’ƒ[ÛtºRîµ]ÓuU_#8Y½Lœ5ÃüúÑ ž§6§Ý)¶U…ïÔÀNYwŠí|áùü ³qœÖЬ [7Ö>•K²xk€sÞ͘MžÔÀNi7g6QH»ç›-ñ @cï°:„bÚÆ˜ªïœ®_†QΛã‘Z~8Çô¦®À)UЙT†è±0˾ÈÀ¤R<±Ê<·À*3lÇ´REò‰îB—(¥ 0sʼ\Ë×O¤’±š,|ê7Çj‰U”o¼®ô.Öªñ][÷ÁÉ fhå¼I©T†“ä”WªTª€3«LÁ¥SV©žXe ®Lá‹LsLǬRE®V†ú¿¨Z©‚ÎÔ’1][zúXôÿ må`û&l¾I=Jo¨ÉÖ†¾up•zÛí² è†½`÷ulu°#±Ïàס‰ècø&µ¿ Ç]H©÷Òmò5)H]Íäòöiž¦ÆE¹¦E‹•£%YÑe—d¯„]ìn¼ù\ÿóJY¿Tã®Æx°tÂ-_¬sS‡UîÈ óÆ©Iî zwëØˆL9½¤²×ܾ ‡ÐöÛûømǰú*v#Ûíb¯,{}áö.6àÊ¡îÿÍ_-á°x4´eˆÛô¤ÙSè\‹=®2í©¨5¡k¹ÖЃ¸ÿ:‹s‡®^0:4ÇÚw¢#CÏrÜ‹›¥…VJ؈ÇÙØò .ÛGûRß[®n—ÉÝ×›ÐKg¶ç†jàñujx6“`ÎiþZ¡Ü|'8–´ë£$©–ûÐpû~peþ‡¨©p»|ûîpöÛ5k¿6ö‚ÃûëkÜ  ¦[ê&÷ƒ…º¸Ýc6ÛÐo®¯CŸ_›B¤ÞöÔÁ2Êâvh2µ‡ƒS¬-÷¨|L±Ë½ôdK>ýô˜[‹Ð¸¦û’ã&u££ǰó@>Ñ ÝþÂâ…yxvÔYœÆhw¬G ÑÑað’|@åèq;ßQ1E”ù¬»ßPÀaGÕÞMj—\ÝS&Äz,Þ"<\o Žü2Ö‡=õÞeÚž‰—”xJÄÝÇ€YÝ éù)bP¸Dâ"cYÐõûX4ÒT²”³Y2ÃúŽÿ®Âø– w)ÿQ­"Ç9ž\S ø´ •ð ™+¬Œ±.”^\džÀÃ^â¼›C þˆLfL&ïâáÑýê{ø“]äòiÜ«·Ôߥz“˜·)ç 2ד|°E, a )îíHqØ ŠS¶MŠÃhúXüuÒ§°p+eŠn0±ïºå7Øû¦/ù”þluv†õ· Œö¡ôýžîÇ÷¯û¡¾&0L®ùî—óe¾endstream endobj 469 0 obj << /Filter /FlateDecode /Length 4138 >> stream xÚ­\Kã6¾÷¯ðѶŠ=ØÃ&˜Ç› É4ö’ÍÁc»»µÛ“V;3ó﷪Ȣ$‹æ´MbЙ"ëÁªúªX¶%f31{wóýÝÍwoK3+EÑŠ¶œÝÝÏšrV›ºh•™Ý­g¿Ï¥Xüq÷ãwok1œUjUUšôÃfQΟ:x9<ãåzq«”šÿ —Gø[>-d=«-üíàoc'ü†“žq ëÜíÃÓàÞ—A n„“ùÜÿoînþ¼)á•RJ*Jlg«ýÍïˆÙnþ8ƒ[m3ûLS÷3eš¢¨Ênöáæ×‘²-D£³Uat;%ѶEmšR”@â )ȸÕÈlR›B—rVKU”ÚYø_O %ç/4Ãjó ^_hÃGªT ¼êE”.ab=TkÀ2íXè[xù$ÀÅ&Jèº%¯Íb¦h V"4d]²‰:–0…Qešg%ÐðÊ\L#²Ô…Ö ˆµ…i+k“ï1¢—ÝÔR×E¥T&ÖXuÝŒYÿœÿù&À¹j°> g%€G;æü²þð&D 6ã(Ê"½Ñò•&S øs-3±nk@¢úu&Ó ÂÜè<œµ†ºy¥Éga®µ,ê*hµ¦Öç3qŠÕ<ªTP«6&ªTMaÌ… ¢£ r±xP¹NÅ3 2P‘1Eš¦daΘ2`ny«ZE %o)Þ&Š( †cDÉ">ØAUuÐn¢ JæŒ*S»I•¼=¨Lx뺌`J‚Ý<¦håÁc !ÊË+•ª\,`U®Sò ª •|¬dáΰ2än™KÑDp%s+Sæª,#À’`;–,ò“Ld¢Š€JÆ *Sæe[FP%s*—iTV¬6„•ZÕ‰MUmÓdj€? £Mƒ 6 àïö}ßñÇ‘óXt±@,J¡Áˆ’Bƒ!†ï.¾SHp¨&Ðð—Bƒ'†÷y© ­ÚLùXÖ…:kçàbù!pާ{ðŸªëÈÙ¸Šdã,Ì9O™WªdãÌ}6ž2oµŽdãÓq´f‘ß„­¦M$gaÌÙ8`5QG²qæ>O™7MÉÆ Vó "ڢɅ)0±ÍÜ8¸T¼¤\¥áDjè|ÓÄ%o”)oÕÄ%o'SÞF×<¹Þl '9¤ç¦ÁPzß5HÉÁœ%`6)"ˆ’·”)o]W@¹ÞlŒ'Ôf! -LÖ¦ÁåN!åJ%Ï`ÊPIçœe{Sò0gP™2—¥<*Y˜{T™2ö RLç`%ü&lµX#2cÆ”)ó²‰T)Y˜{P ¸L¬gbµ!ª”qßî˜FŠL_40MUh3þ¢’óÏø²Ùí"øs±üI¡Á0’BƒÑ †ê.¨SHp|&Ðða–Bƒ£%†wôª)é+¦–8–³Qp¹|¸NÇpß~¤ãkúöy¸»<âîΜU¤°Ïœsð”y)ÊHeŸb;×,ò£L7N„2‘ñ,Œ]YÍD¾b…9çà Õd$'XÍ£Š1…l3}ÅÀp'Óæl\._U®Ó1\ØtäÂ^G@% s•)s •Ì=¨L™›&VØ'˜ŽA%‹ü®a0’ÿöŸæáÎÈ0]¥#È’ƒ¹G–€éTä‹)¦óÈ&¬u.dѦhò~ÏàrùÈrŽgê•Žìž¥Š KæŒ,æÜ1`ÉÁÛË„· µJ<®$Žq%‹øä§¢‹2†(Yø2¢LM&TPrðö€25™ˆ|2ÅdC<1ºJìHˆµ6Ó7 B‹¦rß0x‡?Íø7ü½‰@ÎÅÜ“Bƒ‘#…#@ É)4\$§à¨L á£+…GI ïà¥<ÏôÑŸ)›B•*k—àbù!pŽgêù¡Ž\Ö‘¬›…9gÝ)s£ci7sŸv§Ìëh=Ÿ`:ŽÖ,ò›3V‹5ê³0æÄ;e®ëȇY˜ṵ̂šŒ•ò Vó "DQµ¹@EhPDgm\,_T®Óñ ¨ ud÷l" ’…9ƒÊ”¹lLTr0÷ 2e®cßQJ1ƒJù¹I0”ÿ6b:,Y¸3²Lgb5}æY¦ÌUô#ÀÓ1²hØÅ2S@·e!˼ß+¸X¾)°\§b¸E0RÑ{g¤û˜…¹Ã•s÷ùtì¼V¼¥nÎÃJ‚ݪd‘Í?•<ú-¥,|œ„,f"…JÞŒ&!‹ÉH‹ Áb=˜TEk.ú>8ÿ„¡Võ0€¥ûJÀÝ¢QóåÇñÓÔß·Z«ù‡=>•fùìžÔÙGÉùáÞNüe!›9=¿æþ€¯{úùÁª§tOO&²×ø¢ÇþÖÖu,zãžðL„þfùü‡¤#ö§2þ°p?èhÁÖþîÁÞ:à›ÿŠRãO#Žx{ùÒ?ä(ôL£ÙmK{skdQiW‹þµ0sBM_p[ZÒ^1TßÚ-Ø<Ç÷ÄeÐn¢¶³èòó£“n…kz´ƒèy@öWkzÌ“}–eq¾º‚c¶ä<àæ”í¬.ÚZØ*Z€€Û0Ô=yC…óI¥õl0‹Œûl­èEÿŒ’Ч:ÊØÑc£Àpàÿ§[óMpÄMu[û#¦u—f·²¿®Á.$,÷/Ž®ú¸u;R()ÉÍOüô*ڢ瑗Àœ»ïýP–hTÓ{4ÍßîÜ»4òW;4@Aý›½>¸7¸-Ä/;ö¯=yoÞ^vý´/ö!I¸{hmœºY[²÷´É{;×n->¡‹ˆw½ç‚G;D«>Y„'z¢—c^ÃQ(týQ,8rp㬭=’ö´di}¿(ï••;h˜ÜáÂÌÝE mì'¸K7›ÿ·þƒ–B^ÅâÖTåüÃÆ™ x*i°ÍÎjcþföü0ãËß l'zÕ(¦Ý AÑúÛ‹ëéb[ §0&eù‘j]áç5=xœë7´LžëSApð5ZhÓÌMh1yõ7òHÄ/˜û‘ͯ[Áÿ¡›Ë§µ½à'óÐÆq¤:Šívþ'ÿòl=Ú•½Û=~뀯˜ÜY7h Þ[\q’QD~Æ—CÈùüÓõ> +q>‚´{øK Ô±Üf@¸Ð¿Ú™á8¦[ËçžÁŽË‹òÌO;ùÈâ<=¸ÕváŽÓÔféȾnsì\«OcÃswª[`ol裻n´ldêJ÷vëƒÖ'Þ½wwŸPÝ1`è¶í*Ì>ø÷¨Y¥æ„õœ“qÆrÀt¹öH„³VvI‡;QÍ7ÈpÚë"ª¦ÌH6b™—ÏøúAÃÉ7ÚëÁæ¸êÍEÕ­.«¡H#ç…[,ÒÐ8+/·÷¶²ê®Wƒªiã˜øø)+ŸLðÚP´O·ï¿ß„›µò@bm¨Z=ÿ™v}3 ºÄ/ Ô½5ž1,Ä`ãm]ûȪ„Wr¾·zØ*ˆFÆÎáø;TïÁõáèr$\S<ì.:vÃ=ô<\™´±þ£[—h@HNÑlS["V;š rx•äIŽ®8®·ƒ ed]•|ãggÖf~tr¬†F·Ø ðú<.â]WýáåÐðvE˜4¬=_Ø“ºOU…®J®û¾„*ºªÊð J÷JfËÊåaºÞ;ùm™ ƒÚÖ_ƒ¸| JLqؽÌl±Gªª­Æ»N‡ŠÊ¡Ú¡ckÚäs<Ùpö Ìf®hã¥{=†[ 9™µðÁNX-]!K78"@‹ •?îÞ³éì’ûÃó€u/³Ë3\“qžÁ™”añ"ü!w â€K™NIö¼Cõ79Ýà°`—‘Q ã#T¶ÍÜG ªŒ£ ³ŸÐ b+‘Xþô°ïºÃÞn‚l[<Î4`Êm&ÄQ(ŠÐ¡ÇžÆ#íÏç^ªƒŠ²Ù‚}ÇÑôrŠj§Ž|IˆO”ÛölâiÛÑJ3‹à4xƳWãs¥3H çæ·¸ß·úep„éìЧ£“ÃÕf]/'o5^?.-ØÝ%QQçwœìR¬|@ÒõùüAè 2²óÞrfv„¶/–ó’ä>îzá­GªeÝŠSü²ëùLc,pŒW.J¹uî ¡z€¡ë1¶Ðçw ±ö¡µfYܦáÝG>t+Š—íà²ãòtå #-½Åp¥Åa‹.Y®zFî=¬îyƒ­-§Y!¹ǬâÝ­jØß©h£èÿg6ØqÅ.¢Í…ŒÑîîúÊÈŸãç-x».àI’gßKƒ;%ž€¢M ¸ûŠ£&ž#µð1\ušÈ¥íáR©ñÜç(Üèý ƒµéˆùÞáKn·”­k+lܤ¥[·´|¼îŒؤýÏ`NÛ–£c(éÄU=Ú¹´ž9(¦¹ß¸ã ì”×<èB€¤w|²£†b[jú†&¬?ñ+áž `ó\øž¾€pw‚[ïÏ] M üE‚,»á¹FªoÛŸfQ2‡õŸœ.›{»ù®k¼sä  Ò³§ŽS4¸åb×v}ŽÙLÎñ¡=à Ã7Ë~.x}@°|±rَǃ;Ý⬾¡çDâ„@QQ„Üå-C•sÆAûŒ3ìq>Í0áÔè}gØGô¸Oh&™Ø¶á–‚$h»…ÏܼzS> stream xÚ­KsÜ6ÇïúsäTe< `«ö°q9¯Mª’X9esPlYqEÖd­ÙMåÛä°Ûìˆì>èa §ÿÝhô¯iäèÝÝNᄌúìúêÓÏ£Þ­²Îfwývg\PÆš] Qev×ov?u?ïn?ìÎÙîß{Ó÷»Û‡òëo{›ºá5Ÿ{Ýýøð®üíÿÓßL÷X¾Þ†þy~÷ñíùçW÷å•ûáàÁÈñÝxlyÅu7§ó?ïÿåfxùæðâ×áÇû߇ïñwûŸ¯¿þôsæ®»Ô«s‰ltÚšá +=źôóåõÕ¯Lùµ ÃΧB‰º7YE»{ýþê§ŸõîMyíëV.§Ýã‘ïw.ZeË¿õî~÷êêû– T¦”Ã˱>W6¬îUži#•¿Ç 6ÆiÑ_L J¸:—ÑJ»xá¯ö%S§1Õ¯o‡ìœÆ!¿Rç{e2/ç“2©— Åk«Ì˜ãY(¯†ùx,ß~/ÓOw·u>•œKI¤mØ•-!/ϯ­òÖ±æÏÆ9˜õ6Ƥ\Ö®µFY—‹±^ù4%峡Öoë\Øà‹d’î½ Ñ_J[”ÿõ²1›u1oŒŒ²ÓQ.•¤_½\.$NΠdÜïuámzfÎ\öJ÷IFÚk¯¬qÏË™wYå ”3ï£2þ¹9hpr6¯wKÛøû¦bR>AMéŽÁØ]H¶x‚ïön810ÝÐ NcWšÃÐ÷“í¾iÔ0 hµG qlK6 PÞ,Sysl@2l`Åql@é0là¬/ˆÏ¶_;ëËið|ÖÛ¾4í2Ùú¤r>Ïúæyh)Žg¡ÿΕSg´&J`µ{Øâ“VhÊü —!jUjYëä‰6,¢]Œèá  Òv¦'±„¶Óe¾ZÛÒÎ=щyÃRñ¿$ÂôþÂÿÃ9 Ñ‹%Ľvª­ÄÅÞÝXDÛ—bëMC;÷žhÇŒÄ!S‚Q.J1%å½Y OBeµ ¨l‹q*ó'ªÄž Šˆ8P¥/L`EB±R‹[ï®0R‡\ ¸2Àâ# uK=|e~d²ÔâÁ9-ŒÜ!Z\TÉF!´x£R¶ëÏW(¶¬v°Á–mA.°e$œ±‚-"âÀ–ZÜXC°EBÙÒ÷™` #uÈ‘€-ó-ÔI‹„:²¥¾2²[DÄ- ñVGD¶0r7gKosÁ:•’Ð"‚*ûg­"|Oi­G 1LV¶›@80L@‰sLLÎ0eºÝÔÌv8ÙˤuN¨_ÞDֺטù›"\èÄó§Nlщ%´¡×Ú¾¥µ& }¸Ö.d#úðö´a‘J¸¢Š¹o¹o¼'š°€6öàJ»L¤žèÁÚЂ+m«3uz¿=mÀŸ ’J™ÊÉ÷’ ëý«‰²1ƧHñ*X㘢—™"£P™«O§§–€Šˆ8R¥!žõ2U8¹¬È\©ÐÔˆ8‚¥:-ƒEFÈR‹çæÿ,&²pR‡hINYgeÐâS,ÿ ˆ¢ ël°e[m¶\ lÑΤŒúÄ– uX9°[$Ä--ñà ¶0r‡l `Z9hæÎRp‘P¸4†ÏS×;dÄ'¸4ÄCŠ\¹›ÃE;æþßge“—Y:ðÑ)çólé`Ü“xW¾_–oÿ¶¢œÿòw»ÖûÕÇà…a)Á±Åβ1;Ç”,ÃVÇÃÎýTtA¨;‡¬’ä:Âzï°-ÂöJÂ,B¸Z‰¾," }ù©´3ŽèÊÒØ•+él‰žÌH–©ˆûГ?º€e„@td mìÈO‡.zb%_FúñSéì©S}FÖ&ÞŽÙ“I™N6ˆn?Xï_'Ûb\ÀÉ<Æ (=±©IF€R‹›L!EB‘R‹[O-"0R‡P  2°b)¬H¨#Vêák2Á""`©Å=µ>ÉÉ¢Å&Õ;¡íÞYµìöƒõ6ز-ȶ̃|ÎÉŠˆ8°¥7Vl‘G¶4Ä=qÙƒ“:d‹HÀ–yÀ–Dl?QG¶ÔÃg#uÒ""l©Å·[¹›³Å;æöo¼êSZD(5/îb ˆMëýjp‰cð°”àØ€bgÙ˜ŠcJ–a+c ˆaç¾6Êx¡Þ¬ƒ²Zt7Âj÷°)Â…Æ<3±ADúr­í›'­PqÚØ–kíàÑ–·§ UÂýéªakè’#z²€6¶äJÛD‰–,¡ ¹Ò¶®u­²=mÀ—¢ Yh7‚ËFõAt7Âzÿj¢lŒ±”‹'¤¸°Œñ‰) qr3‚ˆ8@¥%žÍ2T8©ªÈ0a¥€Óv+"âÀ•†xŒa™+2âXjñÒÅ °pR‡d‰e½ÐfË|нè2ÂzhÙäZæAÂ>' -"‖ZÜXb‰RDÑÒ@ #uˆ‘-4±Š "Žh©Å›§Kˆq@K-ÞC …‘ºhq*yæóy†ÇWè,´Á•*2!_ÜÅàl÷Çðíöþž€Ðj/âØ–0l 86 ²Y6¦ÊæØ€eØÀ:ãØ€raØÀ™^Æ6x¡.hÕÉ5ƒõî5J`[ˆ }x"l+#n&”ц6\i;Mܧ,¢]¸ÖNTfä KUÄÿi-î?ìtÄM "âØ„«Á‹­ÚÈmèÁ•v¦.r‡LqVå,´ÿÀ¹¨´ì²Áj÷LÙb{£ñ‰çLpEB¹R‹·÷X¹C°ˆ`iŒž&.rˆˆ#Yjqˆ«2‖Z¼ùŒ/d #us¶X™K:(Ÿ…6 9ôÓÆƒ/†'H~S¾^ôY­Þ Ç0„aQÀ±Ͳ1U4Ç&ÃÖÇ” ÃÌp›MñG¦ÛÜ+m¼äRÁj÷ê Øa{¡à"Âé²J"nLÑžšoS›¸wPBzoCÛjâJ #mP¨"îOëþ›;¢§ —‡Î[]Ñ&¶‹hO·¡m[7ÒQyC  oâI²Ê÷Ar™`­w œl‰o&óø ª2Ai€É3¥&|idICÚS,Ùœ2D‰€ó@’¹óI µä(  ©®- Ž4¤#±à¸=gˆ‘2QSÚ¦d‡§ÅÙÍël°d[ 4™y®+C=ˆIFxòLq䉄8¥!îˆû8©C¦ˆT™ç'‘¸ßID¹R _[¹""diˆgb7'ws¶ôaÕn‚F©8ï¢òfÚp½O®»ùeø\™òu;|¬Lìü?öït÷âxþ0£ï¦OI:>œ? I÷Ýwûá–†!¾^‡ø~¼ áõdiúóøû©üþëG‘ÇáÀÇÓùÆ›ºÓÙæ‹ñƆÇÑØøÑKwŸ”Œé¾¼=ï.jÇdz†éÞÜ<ŽèSŽ}=½ÿøðŸrö8Ü 1Üñáæ0䥌Éaà1îÓdýø@~üRÉæ_žŽæëendstream endobj 471 0 obj << /Filter /FlateDecode /Length 2737 >> stream xÚ­MoG†ïúsQ¥¾?ØCb8ÉY Ž…½dsP,Ù»€-e-Ùý÷[=Ó¤zTÆÝäAÊDÓæK‹K¥êi»{·³»o/¾¾¾øò—vΚf›Û]¿ÝU·+©˜Òîúv÷óÞûË_®¿ÿò›b—W¹Œ ¹9\ôâîÒíïû·‡ÓËÛË«ÂþUù{ÿº¹¿ôeÿ©¿úwÿzß¿îŽü4]üîãôƒÇÇùí‡ûÅ{·Ó?ÿïäÁ…}>÷ß—×ÿ¹pýewtç\0©‡]3ÅïÞ|¸øù»»íï}¿³&´ºûãpå‡](Þøþÿv÷~÷úâeÃ&Óx#ýò~mlƒ o³I) mÔþó²ÁÆ!½ù$q>õpmëc{Ë1}»¿ ~ÿénJÄ›»ßú÷O‡!?Ò³qMJˆÕ¸šuB‰ÖwÈñ"”×Ó{èß~ë³Èöy6Äk25µ”Þ†/Åøš™ù•š7ÑÑü’Ù8³Þïñ¡ucÙÄ:'åë©®oÇ\ø»dS’ÎѤO¥ÿÞ•¿zIÌfÛÍ;§£l1ɦSåŸ&é×/Ï’$gPH:îgkj©Ÿ™³Ð¢±¹êHGwáórC3-)å,Æb\üÜœ4$9[Ö»çmüySJ¥šX’Œ ®wÇäü.Uß/<Á—¡÷à> S3øt?5ä©9ü¯ã´úýD ‚V{D HbX"°TØ€òÙ˜Ë[bêT`+NbJG`g}G|óyí¬÷îdÖûÜ›vŸl¹šÖ޳þþ¸È=ED/ŽÒ`‰û×Ë+_êÞYË”Àj÷ˆØâ³VèúüI§!ZÓkÙZ™6¬¢ÝØi0h÷ñc±†v°}¾zOhGW˜N,È–ªŠÿ=.Çÿ¯æÄåÂôb ñhƒÉ…J\n–éÆ*Ú±[v£v¯·Â´cAâ)É™P´˜’’‰Ñ­„Jd¡²Ú?*Ûb<•eŒóät¡ŠŠ8Peï«8+∕Q¼/^®R‡\Q ¸² ÀR- uË8|!†,*â@–Q<¶À E;DK(¦ú¢„–èLm~ýz…cËj ¶l ò [–A[2Ãq` !Þ Ã qdË(îBcØ"H²E%`Ë2\´x†-êÈ–qø¼ãV-*âÀ–Q<8ϰE»%[²¯Â]L­J›¾˜?káC¤µ@˜¬l7p˜€—˜˜+\`Êt» ,6 (™í&p²÷I‚R3v±ÿˤºy°Ö=bæoŠðL'^FØ1XCñ¨’g±‚6öáQ;EËôáíiÃ"Õp?SZ&ÓÖ"Ó„´±ÚÎyÇô` mhÁ£v³\ Þž6àIlÕ)¥O峿ÆÁzÿF¢lŒñ R–1Îs“Ê EG˜2Š»Êl¨ˆ#TFq_¨HRTÑ ÷Ë`qï˜Å½Š:‚e¾Ä-îuÄ,£x)ñž Ô&.*ê3\NÔg¸PÛ q€ %ž™Iî.*Ìp!sG­5.êbøB( \TÄg¸≊á"ÈÝ.6ÏÄÜŒ¯Qgë –`Bl‹­ƒ»iËà]ÿºúîé áô“?;…°Þ/L€ ¤„Ä»ÈÆ\ìP²XyP@8÷S2%$¥îœš©šûë½#*`[„ô²!°½2}YEúòsi_Ó•5¤±+?—fO H’†eªâþ¼0&-r YCòséLm` T¤¡?“vÖ1§$IC–DHžKúlòIõôÁzÿšl‹ñ M–1OÃqàÉ(î"³1©"ŽDÅ=ù+80E:dŠJÀ"u!1TÑGªŒâìáqàÊ(É3U@Aê,¾š”ÄàM±º‡Ö;H e[gв ’ÙãB´¨ˆZñÆm!hˆ#ZFqöð$uˆ•-ÄèYn{RCÑ2Š÷ùÉ EEÐ2ŠÇ¡Eº%Zbž=ˆ.š\›ÒB/árr ¿ƒÀœ@Xï%‰  ‹ÀBBbj]dc®u‰ (Y ¬<‰ ( œûÖ•Z³MÆ[Õ£«Ý#*`S„gúò2Bøm”¹AEÚò¨rdÚ²‚6våQ;%ÛÓ†…ªá>ôdbè<ד´±%ÚÎUnµ¯¡ yÐöŽúKe{Ú€'¡“šÒQ„МÉIõ(ÂzÿF¢lŒ‘FÊIŒpgsÎXG|f !î*sk”Š8@…÷%‡Š$u@f¬P£—˜N*âÀBø æö i€ !ÍÝ„¬ ,!¤seX²9eˆç$Kç$•ÙPÐFŒ— stXC82JçÈÜí´=gˆ‘>QkR:¥ä§OŠuºg Ö;H°d[gh² r®«ÄÑDExBˆ³‹ q$ !N}êE:dŠJ@•e3U²m U4Ô‘+ãðeË|“Ž8…§î&A²r·dKN«Ð?ò¡˜èæ3×—5ìo~]<´(Æ}úËåUçþÅÇéQ97ç=ž\ÃþáíñÂ/}ݪóöðd¤‡›Þ> stream xÚ­MsÇ †ïü{\V…íþþHU±JvìÄUŽ%çâø Ë”¬ŠD:—ÿ}zf­5Üà@J"—xAãÁ°·Ò‡×}øòêóçWŸ}‘ôÁhUt1‡ç¯Æe¬9¤TqáðüçÃÇïî_ß¾¿¾qÎÿ~mŽ÷×76oïê_ÿsmóqúž/Q¿¿{S¿ö¿ö5süP?Þü>¿ôÝÁ…¬’ŽõïoÏ®þ‰ÑQY)#õåN_F¥¨2Ë†Õ¦ÚØãǼ.âj]X”7¶^­lr§KüÕÝuMÕÜ뗷Szæk¾º¦Î•ª•X¡8oê e"q%Ôô”u$Ϧõx_?ýZ—Ÿ>ÞŽaøT”vQ,#ZʆMIÙL-¯X¬Š¡°–Ç³ÝÆœ”uíZã•÷®‹*YJÊçS­¿ø0æÂú¤¢sBÒ•t)åµô7Uù¯OåR­ÕŸQvZW„”µòw“ô³§ç눓³VG2Þ¯t¶¦Ì庞“’.©Â(]–2ïœ2ÁË({_Âç SÌ`•ê¢Ü}äu¤˜ê+ŒáñÓØ¨\`̶ÖM<]‚o¯Ýt_`ŽS+x˜›úÔþ¯IGÏf_ôplC86€ ½¬96ZYsL@}2lôJãØ€’aØèË=Ö{Ùh·.÷z÷»º!®/H5¨X”µé´ÜÑûÏR_—áîó/Ó=r>­‰ØìRûbü¤êÚm^Çx£U-c­­&°ˆzmÀvêýKõ“xòžèÁâN×5k"nŒµDfäÊUÄÿš ž:m‰F,¢^Û`žîÔeKôb qïkŠxêb"º1#u-Á¨hœZBP•wÑâI´löA˾Ï ecGK$Ð"¢hYªŸÄ]2Z$Ä;ZFñFî-"þZ°ÔiG EDЂ¥.h‘ïhAR—"Fê:Z\V:z!´Ô@ŒÍÛïZ(¶lva˾ ϰedg‹!Ø"¢lYªŸÄ- 6`‹„xgË(î|$ØÂȰEÄÿi Œ¾k ¬ˆV¬a®cEB¼cÉZ °ÂÈÚG¬$•il X¯ê͕ЂÍÊd³Ø@˜ßRx]?nþV?ý6m%¾ržE›BXıDáØ00lôúæØhõÍ1¥Ê°Ñ+Žc ‡a£¯ùºtCLBýØøº^¬è.ÂfÿØã§{øuýD³Ž±qÝQ›"âÐGñ4Ñ%Ä{7ÄÙD`¤ªUÄÿ€g-y¢‹C7ų¦º±„xïÆHÖŠ#º1#k•P’Ò& A¥VñôNŒàþÁvÿF¨ìŒñ T–1¶åéíy¨ÈˆTFq—Üy¨ˆˆw¨Œâ!ºóP᤮AEÆÿ€gÍ;2Â,kÄΈx‡ ’µbÏC…“µ•ì”BP 5%Á9уí"TÙ$N•Um}š@PED¼Q·¦T‘ª âΛ’œÔUDüxÖl"¨""ܨ‚e {—ªSEB¨‚e-j‚*Œ¬-©bcám„Xia…N„T_˜×'œ=þ>}º}û–àÏf/þplF86€ ½¨96ZQsL@}2lô2ãØ€jaØè =U’Йƒõì˜ànÁvÿØ#¾y¿Š6ï#z°ˆ:ôà¥:ñ‹g¯: ñÞƒñú‹g&z0#wP®"þÏ.œÎÔ½ˆ0ôàQ¼ªKˆ÷‡e£1„e£¡€c*šeãTÑ,­.96 ¼X6Z•plôžµ²B‡üLöÊù ¹Q°Ù=¤vEˆŸð[EØn¨î+"ÞšïJ6 ˆ ©ÚÐ{Gíº€ˆcŒ¼A¡Jx?§¸j&ÿdzˆnë¹XÆ,q¦@BZ.’1“‰-FÆ:KbTÉ S2I«TDOl÷¡É¾Ïàd#àýïL'"êÀ“¥z;Tî(žHˆw Œâ1sÜ9¹¢ˆø?­Ñwk‰ùl2ÂÀ$k†ØvïPA²ˆûxNÖ:UB $ )0óÚ—=R°ÝA+û‚<ƒ•eý.…Øy”Q¬,Õ[uP'•DÄ;VFqoˆGNî+"þÏk`¼pÔÄeaÀ "NïXA²æ‰mœ¬}ÄŠU%;©IJ~žÃR—`-gbR¢)¹6HÉ>6Hé4EÉ™¢TW´Ð¥Íàý<„c¾ ·ã¥é›ë1JÓ ¥é ó¥Ó ¥Óå¹dŒR]-ÿVq]Þendstream endobj 473 0 obj << /Filter /FlateDecode /Length 3341 >> stream xÚZYÛÈ~÷¯ò`Ñ$»y!OÎbí=cc‚ »yàP”FI”ÙÒØ³¿>u6›25³Þ!ÙÕÕÕÕu|U­d±Y$‹÷¯þzûêÍ»4_¤I\'uº¸]/ªtQæe\›|q»Züeöæ?·?½yW&!UjMœ˜˜ÑwÝMü¯ðqu³4ÆDÿ€Ç3ük7Yài ÿvð¯c‚H¼ðƒs2Ü‚±NÿмJDæK—*ËÒäqU,Ѽîx¥Eô×Ç5Ó6¶È(Þ—YœÕbió87–÷Z²#æI}G!³E“?;‰âÄæ2V+Ÿ,Ó¬¼š=liéøHe ¾çb³½!I#”[2:T¸Dø Ú{ Ô ÒµHrßì4º‘ítމÀ¯è¯¬öÏjŠĹ§œÀ”isÔ`B†ÑœÆ<ÆæWeôV¦0Ö¸9O¢|@–IÛiÔ5wè5Èu¤“Xp þµ%»ú=¿„§^ã&Ðx†æs"…ÿâ|1`>åÇï_-~%ì‡ÓàMÿÂ,´¿%yò,Ç4JëÊ^L^¿,L+.§Áj)ïã³bŠŠÑg*>¥nã¸ó€Æúß’Ôç;þ@·Ÿ k+ŽÒ©-‡–^–¦L®Æ8v] èÇ€1¤¨9âPŒ„a$²v7 ©„tŠA ãi”:¡ ‚o¶#ílÆþ º.ql4ÖžE[Äv=NfÛ{ÜÀÙ+÷’AJm{ÍKGÇ•ÕÒ‰Žë‰_H‚G!oNºZKœBƒÎjÞÓ*0yõ²Ýˆcx^”*œƒô†T¤,â>ˆx¤˜•Dþ¶c²;Ëé&ÈÐZf9g5î³^Õ©­²èŽft+~ë¼UíÕËûÁq$­j†4HÇ TÍ‹¢ÃpV¥ûGFbÿ8+´ÿPóÊSØމéØÊ¾·õ‹ãdòÍ1Ð'’2\˜QxšEà®´`Ymä=ŠÁ ÈhÍ•G£–ì›Ì%õ‘™xdNvAάq'™MYåñ7’Ñyûu-è#a ¡-5“ª·Þ݇­fVæ³ìuôùz©ã•f”µ'‡éiü@ësm2ÐBnÊÁ©±Á¤ÑŸ€<¯£Äb‰Î{åÈóUˆE“Ä–ÀÖ*¶¸¦+ê†ä6ú/·Š~<œ…M?J¡ k} {”„F“ž‰¼mOàü¬Õ׸gðyðÙŒÓ#XXц}«1‘q¢00Ìcú0€«Ù¬ŽþÆ!¶eÆqáÑGøcsGDýY`éJ>Ï”¡¿Sùú£jw²ýÝï‚b\í §®›¿]¼‚}ÑUìÁì~Tclȹ„ºp0?j¾#4ËÏ!èׄЉ“ÊláMôÁØ–yÃh…³~ŸÄ¢YØCò𵵌•…ì¼EÁ\Ÿx—/;©¼$€^IÚk'Ùâ5ƒ\ }>åiðA`¬ðÛKχfbå@õù¥NFx§9Ý\ ù Ëý‘°ŸïÇ@×ܪ㫰— P´PÅ&ÏX Ô7iG p‡hýî²V›ÃE výlö‡ _–$fÃ!ñŸç%ÊlXíáÄÜ;ú&Ïÿ-au]ÂoŠgü¸õjÆ2ó¬~$b¤Aû ¢²~¯Y¼N/Q!A’C—¶UNsß”0uZAÝimU§RõPéÑpY¥eYM±Sqjüâ—íX|²§ ³@ꨉý$b["ÿõ¦!Œmh{äO§Ñ—]ËÖ’Ô_G?ÂÙiL]þiM>ˆ‘åE4Jc‡%üÿm³ë¤£î,gþ8B‡Qº¤À(ùÛ ß…µÇ>@‰ª”N¢GÈí1¬ÚÈí1+”PR¢¤¬xæ>ÑÒ¦ŠàÑ—øu.ÅÂ% D}”% ¿6AÛ^ÓFï;Ü'Ô3ñ®¬;]y'$§?ÓÄ´& ÁLøJKu¬®™Ž+ïÕ¤yøù[Ÿ7©”8ÎW"ÞuL¢]?|œšŸÒ¬£Â§°¼ÜèáBj*uèx6ºùŒNBP¦ƒØ)4:ñ7 Ñl]3ðØVB?'L:凇½Ùø––ãÏ“6Vðî SaJäÔ]1°Åý=…!’ àNG|ò$ó¤æÎƒÂ‡ûй ܨ;Ïè†vŒÍá„×¾ì¢t‰õ…{é> pMb¯"ešµ1DšÆBì”!Ç"pÓŠêÏÞ6O@æÄ¿ŽÚsÛµ0N9N-¸yP¯—N ðºS쟨= èg!læCê¬S ¶Á"¶ûŠŒ÷C]CêloÈÔèÜÑX¦ ó™Öãtu"¦S,$Ï¿èY6h¯A¿·4ÓîêX‚aN¤—+7a)éx^3_¤‰=gVÚš¢ ôÂÇD2â$ÓÓw ™8OwFäs²§P>í‡'þâ»6ˆw[¶QŸ5>ìqä5wBØû'ÓùÕ1.;9_ÚûVM`3 ‹RÞfãó–›v¡ßlž¹ò5ÎàþuvŠ¦ÑŸÝ‹ Z=¨|ý~ šæ¾œÙiQ0 ¤?!Ë5•ÏܶF£ß7H°ƒmOjt"e³³¢¨4ß$(üÖ†°L¼´/”0o6Ã\ñ MzÈØßÄ”aÔ|ó®(Ãv=dì¸ÌŒÞò~œkéIšZ%aøÄ˜ nW¦œ:Òæ¬‘ÛÖ£Né™Á’îÒ_¢Ùºà}]Lå­&²›Leaß÷!Çw]çva˸I“~²?8*íK t”îgŸTèH¤ |Y¡å¬Pî®”(ÀᬸD룺›h0¾3“Hÿæ]5Ù}fª¸,½âZ1Îϳç]Æ)œ¥ÆrÒ¦Œë²šžô÷ØÔŒup¿ðÍCzì}ÀøÃ´®Ä‰*3é"7• î9'á]½d¡šl ^e·Ö~2½…÷_ùjþ† ›;º£@\õ¹;åŽL^ƨF/÷¾lým ½ß…÷zÔ³hûÁ÷qú¡ á€Ä=ˆz vhw´°“ñöHû¸$·}ƒûG ÄacäȵÞá°Mwõ¶0/㬔ËBIoi×§ý n–<{µ‘ði4mÌÞ ¿ðÒÐC4xöµÍÀÝ?R¥ÓZiT'ð(Í0ÉßN&- Ò9u©¶SKœ„Û¿pñ}hŒ‰‰~PÉÔ(áù“¦!o>‰Os84¹ô†Öº’÷äk÷ÀŸ»¹jÏaRàr‚gŒfXhÉæã}¼Vð‰à§ô}‘‰5Š\ß÷LöÖ÷5aÒÇwãÍÿàÁò}wIrþÅëÚìßSm*Ë“î×¾”蘜{ðp¯Î‹µ>ë%å|?9ÈÐdÞ c´°L¤éC¯!ëä{!¯™ÎŸªIF_K¢O'mwc1I+ý«ñ~G MS|2âÛ“>Ih[(ùùÄó(0‰ØÃ L²ñ·((ðó@?Ç5ëñ'ør%^á•Ð÷ˆÔ²Ýé\Qqè™+]2¾ªáë@xþ€B¾ãçÍþä Ù|Â<‚Ë$Ç&ei¨}ŸMŠ*œ> stream xÚ­”eXÚ¶®¡8i)E Á]‚»»K±â¡8ÁÝÝ­¸Sܵ¸»µP´@q/RÜnÖÚg﮳Ïßû$?òýƘs†š\UƒY dg –¶³…2Y€ü %q ÈÂÆ&ŽNM-á6Bìl%M `~ 6…ý€}ù¹8ùٸѩvöîŽ K(€N‚þ¯ €˜ Øbfb P2Z‚m`5ÌL¬vf0Ô fm Pÿ+à  v;º€A,è@ 1ƒLÁ[tÖ¿4ÉÙšÛxþe9ÛÿÛåvt‚‰Ðý-“ ²³µv€Àæè¬Êv°n`˜–ÿ²þ»¸´³µµ²‰Í_åÿÞÔÿñ›Ø@¬Ýÿ'ÂÎÆÞ v(ÙÀ޶ÿª þ—8q;ëÿÓFjb 1³µ°Øþe‚8ICÜÀ UÔÌ`nbíþÛ¶ý·ØâþÀª¬ ¯"©Æø?gú·SÕb }ïnÿŸ²EÿÍÀ? ÛŽ#Ä  Ç[/ûüû—Á5“²5³Al-ì\ÜGGwtØíÀ€Ø‚Àn°L1+‹­–€­Ä`nçˆþ×rsXÅþ2ý‹ø¬Rÿ! €Uæ±Xeÿ€UîqXÿ€Ué?ÄË`UýC°šjVSýÁjjü!Nëûÿìî°šü!^«é‚©6ûqÁ|fvÖ°Ûùo ¶9VðŸ˜ØüŸ˜ó?0æ—düå¶svüG,ÄâÓjùä„íÔÒÝÞüO 0äçã?¦ÙúÈæ®ëŸR\°T[ˆ-ø~ØxvºÃ’íþ—¦Þþ6½=ìÚþ“ÿá€0­NúýE`— à w‚]Ï? °š¶É“µtÿc° ®vÿH€Íàü„Ivýƒì°îÃvãvüWöÿ}hââvnžÌ°#ff‡õiáðqr{ÿ¯H3gGG°-ôï¿1Ø{ý7›C`¯ v›¡/~·3²Jm )õ‘*˜.Cb€·hŽS®ïþÖ¸o]<ªàÀ°Z§sWžŽ‹µƒ´Cæú@ìÑî¥6!ýËß!îÓÜÓŽ‹ñNºG+±Îyº’û¶=Åuà!v[Óìï#.x•¯«c¥Iº…Y§ƒ‡yªt’ïwQVÈázô\z2‚¸yt¤Ó­5Cƒëh8ÈÕq>9”†q†þpÅIJ@ü1ècŠÚ¸|f×îüú®57ñÉîÖ 92Ò‰(lйtL,àݺÖÀÃÌÇÕ²™½[‘ÓTÚ8©ÄZEܽýañAZÂ͵õJŸróKéݦä‘rbÁ±n“€¸¡!­Û¹Î§1æšÍ´ÔsÐ,jЏË'id8:(½n€4Uð¶b"þY]¾ÒÑ´AmëËtlÄæ×MÈÕ÷0“î[äŸÛC"«"£_½¬»$šì¶Z,¼«OòÂÄ£Qžj×YzTÚ,o±;(»gÞÉ-äåÑ]°DÒ!Qµû‰í(OŠjôç AÒ[háXr’lê¯$8bƒý^ÁÅpD„ÇRÈ]¦Ì‹Yø!ÚÄG…®Ö©4©¥ac…Ì@ÑÎÈ]…,]×à‚×ê ÝÅæˆ„ØXBùÀȼôzeº/ƒ{ÌË$Ûþ‘µW´Xñîë„ÁE Ó¬}W6*½˜˜p„V ÕO(™š>ʺU ÙÜMœ9ùݵ—¿%„• Š|b;D5ô±ë¤1¯øÀÅ|N‡Ì0•3ª¥Å‡Žè%ŸvÄ#ºà4õ‹…*RrW:ñs€®Ò4„Q©‹ìmÿÄQqB?–äcç5"Î+‚v m½sZà;g¥Ã‡>n÷æ Qé Aô¬™+-šZeŽ©%Ûºƒ~É;S4½n§g¤Ž‡Q…W—˜gCøn÷¦©ô¤…À¹gL4Ã%'ô8Î.)}g@É…-9«J“R¹¾Ï”åÁiH‰çè\}°s+ƒÕ&·ÈL”ú¬¤åqòj9îîCXØ­‰´À6(‹Q˜º¶8Ùµe î×wêî• –ÅT4s´]—Çëº1Ä‘n¤ÉÍé9¥˜»õ‹ã SwW«/xœ¤â;ܶ/üí:íÖkÄå ƒ^¾º5ŠX}vÄN7b¨»b÷Ñ[Ç"‘VÄYžÞ¶“£"“s~>CÓ"ÏÔ‘é^`Å 1{½h¶þz s!-žt`Íί!³@RñŒ^¥«\{­bdšDúâ «É›#¶±amú³nèì™ù{¤‘²»åÈ-Ò‰²·)¶L/ǃÑΥʥúË4VÐuËlst’ï.¾Ýn¼GÄ×@ßýQò‹cµå$ЮþVøVrñªW±ø©³Yf;§­ ´)F 0æº?+‘Ý£÷ëŒÃˆâæ”[ÍK”ú÷kÃï£A”˜ÊŒÖŸq? )¾Ç”Fœ‹äj Q‰öÇñ„< srLrç‰ ]¿¢¹òCñ¨<ªÂóBòbÖ¼rÒùÅ_¸¿^Ÿe¥Nc1®Ç®½tWA"ø‰8 /Å×Wéh6¡ˆ™«ã9"p ‘·¾^Ó%q³òK­Ül2{ÎËÌ…ŽOC×G¯×hçîGZÊ­;Û.Þ4qq^ÂÁ±´™*¡5¿´ùŸËæ\q¦¶²ñVZŽŒ0ë—©Å¢l5êöx¿ZÍ’OS®‹¾ÅsG»Ð”‚eíƒÝØã6ÌÒiÄ»ƒÓgï6Ù¹·nA‹jOFTžUL"|_ä H¯ØEIJæG -7:òsoÍ´$ q9;O Z9¯-ýn#G9—å‘"?K ßàS„ÄÂY¸«¸ÆÏ¯"¸¿˜\•®ò%Q™©4©ÅøçôÆÑ¯êŒÌEÛ xÅ Îi\Êv³›ë¢¡ 6d†š‚R4.ÝúoµN¤û؈c’¯Úú>¦Š„˜®Æ;§†/gº™Ó©¯©ë)ÖVºOÖ@Þ„ò¾¨ ÇxÙóç¬øaÂå^¢ ìxBQSÑlhg_¨!LûuA·X¨ß¹6¶µ·r.`„ý2KóX™]“E&­G}ï9ʶˆ¿ÑÌÉ$a JyêÒ¶ pôÁ»µaÀ: 6öfEGG%‰ê¢3©*ñ9w9©¾ŽÂ•I¢0K烨("–jgÂ.¥ÞR çqµ¦Y“﹩µ”@[=ï…ÅËdÓ£ÃX¯gâÂx^Cµ—K½¡Aßé†íÕXM£Ób4ªe¶¶År‰?ÍÅ@ƒ}céÐ{â„]s?%˜ ~Å'ìÚc; ]tEŽè Qú¸¤Þ¹ž½õ~­«”ä©ëÇ[¡âš×¢V¤ÅË’x;H/½ šºÞ/<®=IGå‰L(0 }Ʊ¢ÞŠkÓå7¤wÖ+À ƒ’säØH©Žét6Ôpª»¼µüÈxÜBî¡ÝÌÂ"Ø’¼øã OËsã Í+ÌǶ=“K|…¸S¾Ká¯ÚmÊ£Ðé9¸ñNÒ„û™­—7K(v‹©Xò|‡E¥­£ôõ “œÎ8Ù”O£Ý|UzÖ‡òø¡H|ðP`¥Él} ¾ýüî7ª€V„õÄów¤ñf‡², 攣$V[ÄŸd“ö²ßf‚Úv ¾íô3o”ž· d²¼W)¯ÕV®&AȦøáßÈ)šö|SJ /÷ð˜>1[༊zA\íM}€UE|OÝš€…ææåVrüÆòv5Bf(]zó®i£ÓU°–­Q܈‡ãýˆ"”pn G„û|jä%žEN—TMßöõÍÍÝ<‡Owú&ï15†ëV5 •‰þÉ<ÎR6¢ÒKZ$ºº Xnwÿ'nGø…3î£ús¹#¼,af~eì …B4ªÆB±Ç Ü?ï-Tþ'Å,ã”·· ½ãä©b¤‚P²r4B4¸=RõÞxϤ}ú˜©EVåçô;Lü3ÛtÊ8¤iö]Ìgu ƒSèÎÅ\Ö™”DOƒpÌwïR@Šn‰(–#¬H_t=ü®ó•£–'¨T íÆRê_ïîSâæ?%ä—¯(¾KZ«í¬±) ¤Ü“¼–p©ö¢V«gN`ädh¿Ï´á˜lõIEè ®Þm›ëè_@o ª›ÓŒ¨¹¡Ž“õK8Ïk`–q÷-½J=’®æ)ÎêdÎx(äoàe3 à8.SÓ0;0–pú‹û)9ƒx¨”PaX +[ë—C¦Ù/ÄA³õºô`"§¡ï8Qö¤ä¼¼Îd!JP¯m¢Øv · 7¥œÛ¸™_VDÌ·ºà‘­™í%ó]ä²CK¤â¼Ñ¹—ykög´ Kyî¢+.}MÙ—áÁ‰ÝôoÃ{TÆ}‡ ¬ŽiÉnÜqœ„l\>§[£UÅ3^­Yt2~ÿòçZÀí§Â’â›U5J몡bÔ8R5ÐQ‰/R”à Q—#í’q‰ÊjªÚ; G£õT•œŸMÊw£|‹ºÕ³9#5Ýýæþä©';¨Ì%±–Îxyås6‚çÊ œ¤ûè‚´ ¤ÅBQ{YÐÉK™A:ôÈ÷MÇ}ñ²shÉ\y€r}#TÒâ,w¤ºôËÊwDR–²©›ÙÎKÜFlR6áSÊËŸ•ã&‰d´ks>“CùL^E¸1Ê6Ï÷ŸDn4µá¡Oªÿ¤¢k\ ^†~˜¨>Yøª„T–P)æd™ªó½ Á1ƒV#³Ü*I*å#„ô¨ºÒç×K%Wár>#ÿèt˶+2s …QÞ~qéšç`ª‚L%ÿ§Ÿ9%Þ´&,xìe€œŽŒ5¥§/e1~Gø92x·†øA—,49:Fx£tRûûÜéõ/OÅ*z…†^¦Ùá§ô›—h¹y•s,K„.s}½O¥éos°ò¼du¡Ý+—­­eó®Oh6Y¸“S-{aö]x- kî«Lª¡ÎáO­ Bô yÌÈÅ}À€è'>³f«\ù—WÖíj±¬ pZ{?Hi y‰´ëЛ ~÷_N¡ÒN¤(ga•½=æ¹Ôú¿õÕ&ëo&ÀSŸ^™6¯ðUó6^¦çêsÝdzveY/#Îoá±Ùw\Ò»UÇ3F]D|í=ùÈK›ì·Æ‹LÜU ÉúM…³¸’4$°î(ÆX~u‰Õ>v³@éo®’w_âŽ*–&Îü‘‡íìéÝ‹ÅS%FÙ’Ÿ(! 9ôqCÌèëc¡ÒôÉñmPÍ\›Ðzì=™óŠHªôcoïo*~gü ï¢0 pIF>Æ:ß×gïjbLŸ_Q’ŒDUæs/`¿E‹]òy÷ýû _xmùTJµ oâ¬I,­UÁf¯SÄ~·oŸ¨wùˆ$Ë ¹%qcªÏ’°;è9A¥öÉTp‘?­ýnÉÉHXž•Æ·ñUuÀ®¥7n9¬ Ÿ­æÇ‘Ыz3ãEOÖ¦Sæƒa%ž3‰xø Îùº<}5?o1nV{‚?1ɬ¼·Ïã®ð„è¡DDŠ"¦b”„‰ë à g’R2ûÁÂa|•º“¨É×·’#…>gh”Å€U¢‡ÊK…<£MÊûƒœ–W·ÇcIû*z­Gƒ[¦v|2}'OïÎväFÀÌ/Zë^½y,!5À÷BälJ¦ Z°Z¿Äv¿¹SóÜ ç££ÿîI.IHâÁ_ÊŸ) ]]7f¢*Cä%hÜý(wÀÜÃýåI«ª7“rÍ´¹B’ I†À×*›LTå Ô+ÉoêFʳà[¿Ö¥ —y …¢’™^ØÚCäX’l€Š5ÊqÔÕÙ2£x9íJ×i! q)Ž¥ÎÐfb‚&÷¡Ó‹F×Áw¯ª×t˜Ò—á4ß§§­V÷]¦R¼‹!’a¥ò †¾hXqg*;ÎwšuNQ½«”!âµF.ã{Ä(åb‘¢x ûI!çÖx5}äÊMšƒôÅ •! "4xe÷¶v²NuÛÖà“¾ZjÃûDë〠·üÏûˆ%ÝFcø¯¾­¼6ü¢5Eô‘º È0½W2€y]kÀu³r¿€sr9Êçf@bô«òlʆ¿YM}y Ýÿû™ÑQ+’~ðãÂþéZ´ØØá‘¶ñ©¹K‡Ê=«‹Dì˦ñ$ñÒ¤¹à BÕ ?Ïsc½jO¦ÎõXÓŠ–_Úír®Þ=Š­nòÅe™w%´™ Y™Pp”TzZŠ‹1æá'®‘¿ç½@è:ps¦Ërªú±Bùº¢oxxß®£öi‘Æs¿š!š ÐB%øPí_˜ÿUšc„¿2yïá‰;çeÛ`W|žYþ$ífÀE·²lõ«Ü_¬WoÒÌwg¸7s˜¨+“ìAãs/“LJ ¤4Êà ía>s¬â6Íz8Zµï›2³E¨þ:qý½¤ñÕ9¼W´³³ú%MåA:¼T-D±‡=ÌE›ºÉ7µÛî‹K]{Mv>™ž4£Çöë [a}”êXiÆ‘h–ƒGˆ i¦°òæ·¸³m©Ž—óB·»êËhäÝí;: "âYW>͎ܼÊ}êµ®ÞZµÙ.qQ«ð.¸i7^«â0ü…õ… ~<›5Ä M Ù0ŸVQ±¨P 2y©‰@;CÓgŠ‹ÊTÈ[Jº§_¸ýšŒé–Ñí±¨A«"LÞ Õ«V1ÔÐ5Þ8z§‹‰ÄÑp¾‚/Èq;õŒ²÷‘ã¶ œ~Þ«+¬òB©w™Å­ØõbëùzÛ$ªf.üR3Æ!&7Y{+•K¾#Ñ7 ‚ŠÔ¼ÛŠó.fÚË•–~ªlõæÚoT#¢:@ÂiNu*|FÇ×p§‚í1Iý–;z¬ÃxRC¼ÛÊÑîÇ1ÕÜfCËnä:º]e£=¾ZæK‰8áôñ7˜x1«2S#œ-üƒ0óâù,Ψ ´ò]—Œíú^„);Ìj¤Í¬#ì¡¢£EÆ2Ñ—<ªp øâs|'jLŽ¡HØ(¤B[ë=CYI,à éå]_*…ŸôE¬çÜ<®|ÞÐ'>G®ƒ¿!-K‹kÛ#µÂ—ÒØ0J×+ÿ*’DêjýöÅ·R'%9«Üí.Ý“ô´ fž–89û†oÃâ —òÓæu~Á·Ž¸ RA3؉n$'Ì_—vƒö{‡š²6é²Ö¼\)O^ËöâÔåXÆ›Ž&L(DQ²÷052›Álái:M~n¤ýˆÉunÓˆék¾]*z–à˜(wû¦WK½ 5ʳÐèD¤ÂøÖü0ÍŽäÐÇõ)ìl÷*5Kc[%q‘ÐÂÁý»k¦;9ØN~ &D*F4CüÛ¸]˜Ûﮯ­ ‡}K.]£%oSë>Ò•'è)zÓ'ÿìc× -ŽX«è¬'ŠYÂþ`/‚Hèû3šÍ›+“¤ìkÊr°®e„ƒŸ€ø› ®=zÎ^Q†3À‡SH¡KÏ]¢³ –Övlg§x> )ùaa åöjþL¤»él X˜'—<볜µOt>JJOwKêMWõ•ï}^€³ÕHˆ@« EÆ—ë”Q> &‰ÖŒTkžùPô‡H5 cSû»-$QçàêhÍ`ñ£>~Àr²NºÁÒÂé–±Ëó 2-mØ ®,ñ“»Ç÷qÅUàа\A­q§CK¹3ƒJPfV8–ë¶»Áhbí*I«¤_6’À%¬Å}mÖâàÍ3‹«ò~ˆÆ+C³sý¤Ïë¨ç©D6Ù$q°¢ øvBFÎò\ÊüŠ}2„òëlg&ÏXG$wòÓ!s"2í}’;Öñýâº$<¨ÿ-!ëõ´jÅ'%iDÙm ¶ßð`P–¢§½/à ®‘ày¸1'Èm¯¨ÒïŠ!Â/†¡ñ%Ì )Þƒòz²sÐHnñë7/PöhhóRÀä³åU%+}æ‹~ÂáÀØYAfñØvÎyz’`ðD•õ¡x!éW²!þ/oš‹„/«·ÄŒÃÈ!Bd;þ¿Šàþ&Ë:WKXíÐW“³ñ½XþTÃ7]œ»hiÂŽÀ$Ó©–äÊé†f‚RÅñ&5³×}…®«ðÝںЦ ¼Å%Ãf©nV5±¨·^91F&Š2„XxJüd(s9&#l}¬L«T¢`Áâ±Åì$þžòã–Ü&¹ƒÀ…=çéç7ºþ*Ê£mùBÃUç³NqÈ“Ž Å8àj^,ÄG´¢Íd†~]ÿ¢è.­÷Æ—Ñy®ŠÔÏþ¸ŒÄ¨ébäY*öË8üžv;Ô×Ôü˜¥]ò5©¶¯xî9ã$!´þóAR'Wʇ¼“óºqÿûzT5ÃŽFäf—zì^Jž“D8Žs¹T)ï ³ó¢:|±5` h<¿ÿŠ‘I°VðS”6Êor¯SÖÖOPƒ„¹+ãX£Ê>²¬âFÂj³Mb/éÆñ±”-[é0yã¬`ôïß?ma¼9#ó%0ðe§zvcÆC*`þ˜€.æÿ~§Ü¶òMrM@á“0ãÅð *yµM[¸W`žà¼~OwÎEÿëå9i™eÑßMTXÈ«q›öfQÄš ÷W“Ý>Ʋ%~fúñŽ+?¬ÐöÑâ>,Û®Ü:5¦åex …ªõç{lSо9=Þ}Ý3#é·Ð) wò”Z 'ýpQî逯ÿ=FN*¿Ê¯}uvK.§o&~péè`§|QŸÕ5¢¡?2`U¨êÞ¥ßÔçùA„B-µªÎ‹®8îÃ[í%¹6‹h£Æ›tˆ—îÞ† ôµã ê‡wÚ%¡TøÐ–½ú3f¼Ÿs¢ÂÎFáx§Ã¿¢6ºÚæLÕàºN&¨ìöå,¯Q|Ĭ—öôúdE’w(ŸË¸tõ› ›~¼8KþMÑûèш2à/RµžùÿåÃõ9Ïà.݇¼f¢½ÙJ“Áù`Å]‚ˆpËì ÓCvƒ@;OÎW‚ðZú&"±Îã›}9Šó¥W(“º Æòâ¨ÒŸc/ùX <9qìáä:ª‰|ËBÖôºLZËK.dT“åŸìZ¶e&Rá×*škˆÄ·_PÁ ÈÛ—ŸRøÄÏgrŠÑ•>ú<+ô!Iá z‡‡}»Xµ+a)œ,*âyø–×p¹ßIVô²º~Îyn†c±IŒÇ½à…»‚ì÷ü_Ï“ú/F×˪¾\«ä„ÒûQm…ÖŽì9ñð#ª°$[ g£r¢£váǶbE¬›Õl±Pfä© 2Æëm j§ç¡1»|D›W]S·:JêâS&xÑ8ªÜW˜NB£srÉä;Äšâ‹ ”žôtAÀÕŠx¨ìçå}WYúüJ+çØEŒøè´}ö¾‚UžÍ÷©_ŠÒåÑDú]N²e ý›qú7ÏÙVñÁâͬIÞ|Y²t׳çDÓP01ô`\d÷¨ûâ“xÎûÌûƒèíM}}kÉJ‹ÅááJÝõ£†:I*Uþ‹ lèÜr^bh…¹ø‡U °šŒ £È˜(·DÍMÖÙ(Úõ—Y’ƒoš¬j\ØŠ3Úq—ÊíÎ+ëev¤ÔÑHŠ~âäº ŽèfµÕV‡¶vÁæ·»ñJÈ<]÷’¥Ý׬+{ËÝŽê3ú5¸gÙšºÀƒ*Å©ËÝžåì1ºaøŠ¥sCÈ[?š"e§Ùçîµb£5U`˨„¸ˆ½/x‡™™ö€•µG4m$ÜØv ︾£ú³PMmPa¾¢²3{w‡KÔ§&·˶Œn#Xîæ¼3&z[“vg׃?[@ù¦x¯“h- ší5ãèŽeÆòøÀ÷ó›kƒw®y°yqÓâaK°xEȵ¹opx¿4:Téf‰è@×ã§óû̆:èát»TŠ'}åä²h‹­ÅÇ™+ÑûBʤa§ˆ@=/k–ù)½uEÝGX'ï›HIÏî„Õþ^ì´þ  ?õžÊqÉAkŸ:ŽúJ1$:¢YAÇŸ_8¬zr$íÁ°ÏhèíçqbaMÚnèlBàL¾ ‹z™n—X"~æ 8“ØýaÖ¯«ÓPòi 9ï:¼úwìÇ}¶¸hl[é®À ·Ò†Â´±­8…Šø½³Ý¯áÍ÷ù«ÅJê96Ê*"䇦Û+Ùá¨6µç¬JUIØŒòçɱ/¤/† ÉX ”óÎC5)ϰÇc35«Ü; cfhæ1Ôá’iºküxŸ1¢LÛò«ýÖ:åÎdO.8eïiÏAW•„Ñãß"ć§ ŽÒæ*zͤˆB*íTxCŸc±™ÑÃwáõ4žÎ餫ۛ_©` c9{aÛe`^ô"ÓÙÑn–OÈü™h–‚?ð`›í&ž¯™éÜË~9y‹¹t;ßß=qf¾É&9¼¬«–öZº¨,7á‹ùñ²ÇÛü°¨ 3ô—ë¥í¯šÉôß(Ò¥J÷á¾£úã=£©ã‚Cûê9×–k»Ï¸¨…BAOPÂm…›¶?1³ÆWcñ>}"¶œqû%žtf6P„¯?GöYc37ôY‘¡ø\±{¨˜«u}üÔ¨{kÇyf$äaûJ×ø1ÈrZ†è©ÜI—âÔ¨iN | } > i!OÍ×JÞªdm@Âý¬œP´9–öû¹3"#MggNe‹ogJ¾$EÑä=0“˜Àß}:+¯å·YÆFôšá÷í,XccD*(ܰU¦àK˜<‚èUÿX>oN)ÙYP½q7ÕrÖÇSq¿Ön¢È÷âR&ùÆT¶dm*EÒ,Ÿ=Æfˆ€èR·¥û©§ aßÈ^´ì¡0ÿÆüÕusÎW®$I§/µŸÈµz¿—nц°9&½ Á‚ŸýPï-ݾtTÏåt#²üZ¬(´áÙ gkœGkËSx|)†ãö!½¥£µñ‘Kõ¾ ~ÅÃàÆÅûkmÚŽçÐ#ÿmI^Ñ@=FÕ^#~ƒäNÖM(ËÌ;#| CjV?æbû»ñV‚©:ʬD´ï].ƒ{."™™÷#87¶B8k©)U •d³Õ?Ú|’S¿÷×§YÑñLŸMY…¸²§Åñ„h×G“%•º®¯1úÈó.²eHõw4·Í[¬F»£ÈÊÌå>ãU’Ó.ú‘I²3Ù̧xF}B›P˜ÿr£ªÃò°!#1Yp5õ6€rj¹¨M^üvO]ê‹þîÛÒjô{Fc¼ÂÆþ…ÜãoOÆ›\äÜþêÔ ßJÙDNèŽK¸±ó¶N·ëûŸï«,^ŸÅ^â¹ÆW|q¨ãF€%㫊‘VCqñ;f(7AåÔ²OŠÉvŸ5Å2W<›Ñr}Ìf±š°0¼%\ã(CjœÅÑ*,0³×›qdXé´ò§Ê¢A¾Í q‘ivkªìQÇ­õþˆ{ZÉT)ãnȺEš¢ùag©™Péz˜X´Z‰¹5Fì×qØh;œLÝê@5cO¤ç›È†¢ßfØ8êõÔÝ2âR†¥§Þ›§Í‚kë¨Å§tÈúšqù,Èß‹fÓû E¹ñ#(©9šSÑË(Tdôzç;G“Ý/+á„Mp®uNSq¤2 1l¨n;´dζhßcø±­ÿ@+uÙkº^&;½÷q©…*- @I ­rë¿Ê®qUêÌK6JˆXRgÀøKš—"‚p¼‚c!Cáj@ä¿Oý¡_Æ:Òá:ôÍ|B}øCìß‹½L_l\„Oß ÎRÿÝbn¢|NŠÕm¼ ßÇë|ëÿÒíûLÌÏÄJ C¸ªfø(ûoãq!åJæÐôù‡¸§×Þ8¨Aô²gàæ^… 6vѺ+Ê;›éÛ ]Q¿Â¯Z¸§Rôji¶¹Ò(L•æ s±Pn§s-?zÖu‡ ”÷°¨@“?e6·àä°Ár訞ª)¼,×çÊ aj´·¯•'œk5èï6+ÜGî«^¾·ÂMëI•#e²ÊŠ¥émh)ðÑŸéˆü´Áe2’§ü‰TK2OÊ©…Ø\Ù€HT™ È‡ÕÁë='aah(5D(kDÕ@RŠá¨¼²Ew„€Õï_;ïâ$º2¯Ì¤†vu©ZòT=MãQ9ÿTÜbêZ T°°Žê"'?*¤”I̾Î󌓭FÝ=—GHQ<}# ,-›ØY<&š.sXÊÃÄW-‡V´C~vW+ ·pNi–Ŏn?~"4µIš3! ÛšÒ6- åâ|¼@äi¬zÂòSÓ.³~ºZÝ_MqÂ|uÜ qo Jþ|~÷ûçgžå9uf¨Cü{{—Ú!KůêÝÌ:ÍþXÉ•Ã=ýr>î > uרD5'÷šúñ¡!ß³÷¡à }%½Ìñk^ªé¼C K‚MzÕº› áÜkÑÝ/rû_ãü? kpendstream endobj 475 0 obj << /Filter /FlateDecode /Length1 789 /Length2 1194 /Length3 0 /Length 1739 >> stream xÚ­RkXSW…òN U¤hÐc Zò"$&*O¢@y V¸$¸c¸` L ;*¦  *”* "Ïbä%ƒˆ´ŠÔj¥Â "¯‚Ìêt†þï~ßùîÞ{í³Ö^g›oöð¶´ç C`'!*¶¤‘iàjïíO£™J¥áÌÍE0$F„èH sͦƒOyb@·t*‡ÆæÐXÈ ŽA¢ÿ¢c`ŸTëÿGa¤L„„…‹ÉÑbñ&Ö'ËPûX„ð ¸Aâp8£ãAà-ä!°XFöðZì‹^p4,Šùdø¦#CPeQ> Örš/‰|_ŠE‹Òii" €Íâàá8Š»cƒ1Eÿ?q+)œ$;‘,[û§:d¿# øàJ€¼,Ì æ#’ˆ•U® <{4LKƒLµ²^. ÑNˆæ{ b^8…ÑðRFù+`æ-ÑSœöûp}·ÿ¾KEAÅ>²HPÿ@/Å´?bÌ"ÔE‹1 ö½ÿûlÙ^”'ä#h [3$A2¶lXd âhAù°ÀRL1…Œ ÅX ˆ”ˆå T(Â->ª5P ìÀ’¸?Oáà ”ÆYÒØ˜Øž² ÀÜa%ÿO"Á¨xiK0+ÞÇ¡f Kan OÈ‹ÍóÊ.<Å44´´kB7Œ’]ÚªJµRÏŽP¯$LߺŽ$]ݳ÷ ^ æ¿£Þ:´å§@+wÎkÇèò¯ÙÇL|×w̤~ôèãðëݼ˜çúº‘¿‡WµáÛ †;Üåo´I•rØs†ãqÀÆûaC»Jƒ‚5oòì¹ ÂY“]‘A'ú¥ﵚ ên$µ8T+¶+ðMÞrâ:½ VÕ§Ypž}®¹Ñ©Ò¹Æ?£YŸ9|lõ‚ÙÁœ4'âdìí×Diá7šˆÁ eúELÙ@þ‡.ENiêî ‚‘)Øß^7>eý”ù*1ÐnK›l›ÿÉüœcJ¥ÎÃF¥*FYWtëŸcðêžîjKAV@ëÖm…ÅsÖ…§ŠóÛÝ]…;@Êw,霧¶yV0z÷Z…ؘ¸«ÁNß0c½.75}vhʤ¨rÖ¹ˆ9úÜ×[Ó¼¨þi`bb¢ÂÿÈß"4¬°8ÃR®8ßq%SÚ£:3†õ³½Ÿ_]À³ñ¡É»36±œêe—o/dyÆÐÂÈD~Hߥ—Asw´«ýË‚¸fItgîЪ¯’ ŒcÊìý/Óù­>~x½Ð;dUªXng_L‡rGb3~|jšù29?îÁÍcjk 7ÞÑ$zðzÆMß”MZh<ùG€œKüÀ´1ßükF•‘Ú¯_}ÿ—)çï;‚¿5è™ÓH/×Ú”p¦+þ˜|5·mÓл¹g|×Z5ü\–5ûy­ ‚F.™Ç³(G›ƒ*j7f WÆo­ç~¡Š´ù¼å-|"둇öý·øïÖûé;<õ=_Vª•‘{Z·8ª®ôÂŒܺS_µ× ŠÎºæ‚]õ„·µ”¯Ÿ¨ìÜÖ¬gùãÎVBñÚÒ›¼ÞgÃ÷gu»ëú5‰ÆÕã·ÞÖã/Âéu½ÅV²Û¬AK‘†bŸcBÉeD™š”wY‡"ϼtwƒIÞsOàŒ»—®3us²æK cináá!?ügr´b¶‡ÜxbøÅ!\»­!yW#9Îsn$çšËùþêáÕÚ*á®kÿmýéí3ñW³$vƒk~Ú®Ëh|8Ö«7ßÀé,7VSΔ?¶ú"ñ¢É󟰉Ö×C²jy7#¨¬¸žF÷…—êßÝ|¼*ÎmƒMIHõñ†U±&-µ½½“yÌ7~ ‘Ñ:DU·ñÂtóîÔ³—ú^,ø¼Ü—O±Ê%P *šú+€ήI}(ߨW³°.Cù¨§üHã,rÚ6Ŷ…¯[%·éÕpITÁíJ5ÒdiBN¨ÊOxÀîÝõœ{³Fý 9y#™iŸ¡³c2ž5c¿g|Zyú€m»[ÿ[© ï ÛÔÑð¥`”’u}γea„Ù¬‘s&áÖÑfJÖ¶>øŒˆºEOÖõ°Ã‡¡¾ñ8N»`⯒Cý&ÁŽ.äšóf’wR:Ùe¿é;Ì”~øUÿ´±EAendstream endobj 476 0 obj << /Filter /FlateDecode /Length1 797 /Length2 1236 /Length3 0 /Length 1791 >> stream xÚ­R{Ä‚A&@ˆ?X<ˆAƒ—ð`ÊË ±*‡ˆØå±ápÅ<ˆåz6ûÅÑX³Ù€Ëbpù O2 18À„P“tÁ£ÅÁ`?@XN3ÜÏ%!Èã£Ãzè°ûtT&f‹Qã~#'ª¢NþS+ÉÉ6Û‰„Ò/-ûOeZÄ/ìl·à.;¢€LH´²ê€ÐØÃf±A»œ‚ødH2!„áøÑØ|p)ÂÌ•Òè¶–„œPÜÉýåkXª9Ó qsÿ˺^Šqÿ‹Ñð à5Äbq(ý>¿|VhÙÁ ‚Y€1Þ  ñx41‹Rãñ@(€`&(@jØÈæ h À aè‰ñ0‹?ÑÜ0rYLaþ<‰Ä…b<Ö06Ãákö8†€Çadé&Ð=|Žý tk (˜]ÆÁˆ€¤² Ò3v9mùë¬"±Êcn×<­Ú y·Š×t$ø€ü–ÇLAªªòàºAÍ9uþ÷÷Nk&…Ç&w. }S¿»«îñ!•"~ÃÝ;-Ù\Y&›ů:Ú!,MôÌ­Ï8rÕYÏÖõí/÷(Ôz KjÓ"ÌäT¶[äù[ûLö¸¨$K£L#{CTã×ö¶JÎD*ÝÑï™àÜlÉQÊNX8ñۦʬ¹¿\ŒjçÔÅ߃4lô7)9^Ÿ¶/+¾ŠÝÝïoYÊMkhy¾óYÊꬃ9éq*gÕËÅóÀ»§ñ7ç·$?"´çmkÝ¸ÖøC†¼ä~ÆÍ}±?TGÿê¢æ&O›rœÔ¾d¨Bös‰•¼íøúå×4׉¸ê{)‘ e%MÕ[UŸ"ÝÆQ5ûâ:\ç¨^æíCÛ˜‡íþX“an¦&¹ÈÀ.üD R"ÀŽ›{‹é;~¸qâwbØ®¦§Â˲DÏék²‰ öŒò̬„«ï‡î¦ãÌ;èº5šœþü…o{Ã[CUÝÊH-v©Fõ¥ø.¸o![X³~Q|bcI-wð ô`eNìÞòí)»Ó›,åκ—£;-~ù1¤Õi)·ÍîA~œ¹Š½¦â‰Þ¼MßûÛÖ¯æz^¿“muøW%é’°gGTeuåwé'tnæ¥/?¸]˰°ž&Æ«­ÿ óÄÙë|–_}Œ79%ËQæÇQª\’Îö·”6oˆßŽDnÎ*êÐï(”¯.åzŸ*’ð&DîVµ%«¿ÍZKðNÿ”4ÜV3ý\ìU&«¬‚Ÿ¤Û ï¿j0>úòFóPâv³D<ì¼Cdâ?¿™qãRÕÆýÏâ¯õ5ÜéZ0²d–ä~zzöÔ^…ŠC>ôW\òŠH/y>]Ÿ!\77ådk;÷ú”Æ;Ó_v‡u5n¸Ñvøñ~–УfAý¡§“–ÂŽ÷ÛäÏTFR·L=ÀŸÌÓHÏ–\ÞCpt*ˆ®jf[¶?ìç«Þ6WŒ²“ÒÇstìçuij…ïj¨µ>Ô­*«Ø$è’ZÙ\ïÙRD®ñ!»Äj;>Êto¿¹Í@$ûOfl/}ï+U@NÙo1©;ÃõX8¹æÂ};ß[c9;Vß{xÎJ—AªUn~[çY4ÖÔs.ÿ ™É˰²3?TÙ õõB3³”Ü"²k+4·Æ”¦ŸMòÆï×þAü÷¯›Ú$‰5Æ^׉“½²Â_=õF’³{–¨«"ú¹Ù¬¬Ž uHO<ó•Ôm¿fûµJ¸Æð/']»«3d‡É´P ñ'MF†7¦¬¼ÒÎGeÉ¢*Ggô; (˜šÙÖ¶{&ÏѬ´(ÊÒIj,Â`}‹v}Òú…ºOûÊ÷åt©ï+ûŸtwÄ©+])-°]ç©=Qp1ªKêÎ-ˬ'Eeu¼¿r–Õ-¶sŸ?xÓ}Ü+!ES‹ìß»M‘4p½8ÉÜa²ËrêM¤‚endstream endobj 477 0 obj << /Type /XRef /Length 287 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 84 0 R /Root 83 0 R /Size 478 /ID [<1d0f4c8335a1c8f8bf96d00556d49e7d><4006a493eed14e6a311378aeb9eca9b2>] >> stream xœcb&F~0ù‰ $À8JŽ ò?ƒçZ ›O”¦‘Gþgй±ûWjGcä‘ÿ,A%€Ð&Pìó³‚H>[i¶Dòì‘òÿ€$£[Xv"ˆ”‘‘ìi`]`qÝvi,Iþ‡ê¦¥áNþgܤ³È¸Šk&>P¼ÛxŒÆûÈ#ÿ3^Ü*CxRA±Ï¡.öƒH¶ P¹!.1ø@¤Pˆ< "½“A$óV)`ÖË–5‘¼@¤J¸—6ò Ó¸´ÀìL°Êe`3/I&öë`ÓüÁê/€eÁºt€M‘z ’åX¶lo X½5ˆäþ 2Ÿo3¸” ‘ê`»À²ìù Ë3é endstream endobj startxref 410849 %%EOF quantreg/inst/doc/rq.pdf0000644000176200001440000057675314760373013014772 0ustar liggesusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 3071 /Filter /FlateDecode /N 53 /First 420 >> stream xœÍZ[sÛ¶~?¿bßšŒ§Åýv¦“[¾äb§ŽäÄN2y %ÊfKI.I¥Ný™DŠÉbb·sì¡@\€‹ow?,È‚Å@³CAƒb ÅÀ‚s0)%0 Ì ŒgÚãÀ7Àpm,0 ÜZLàŒÓ ”$U˜©™æ@#€SÎ*à e8Å%.@).KP ó ”–¸e n@sé€[ÐVàŒã8ÁÀRJAp°LP¬ „« ¡Àé@h°Ö8w„§áÀIARpÖP åZ€äÀ¨â¤À§ÀKÅpR£Ø™DùPg@`Œ ÒcB+“’ƒ¢À˜R %Ï©80f•%€1'( ŒS£ÿóë¯@Îâ"šDEJ…!óè&ÎA†ÌÅ·»È *¢tq/^øGYÉb~1<;ü/§\2ü“Âr·GÙO”þô|Õn‘Á³‹øê9³Åd×çÙb²Ç<;9?…“ÛE^äã,¹+€Ñ_(ÿ…=¯æ°XÎ \^ò&™äðÂìyH É*ç|"…O4 I¨3¡¥ uÆøÄ†&–‡$Ȇ:ê\xÀ…^œõ £l•†Ú/¥ƒL«©Ï‹x^丘AÊgñ$‰÷ð°D3ŽhÃÇÏ£,žåj ã|±ÌÆqØÏÑ}q2*P¢< GŽ(“Uãól1Å|r~x ä"¾/à ¼xQŸT9§ƒ(ýÓäýÁáoG—{ƒ³ƒ+FÍÇ‹I2¿r™Ì÷çy².8N²¼ÜF(Æ>ŒÃj-2Â"§Ñª‰Õ@FËëÂŒã³raØËdRÜâ: æ¼Ê«Ë¼ñußO Då˜/Ãv¯Õ´°¨¨`­ô=|)_t?£@µ³ë»—qrs[fo£ öŒì“#rB^‘Sò–üFÞ‘!‘ òž| ãEº˜?‚oŠýüÌœrœF79h¥ôJåbúz«©áK¨ö–ø 9ó >¯¬ñå Ø 0'_c2],3é`^Æ9Òé<þÏIžÜ#ºo³8.1¾ÅØ3ÁÕ›¬=’6ÿ"-x‹6¼Ûøë‹pv#ÂÉÕJŒhb:p?½ºzýþÃÞàl4²=Ányì¢íØy_?`Í7,›n¸aц5ÙÓ‡¼,­Œº%sÙ–yS=%îz›”×ÃËׇç{ƒ³‹‹¾2–ª+cÕ1(¦§7»Æ¦Óz¬3îö×þ­çiËa7ëñÚŠý¯å:öD¢ÊµÅu?ö;™“EËm¥Q~K ²lø*ôWB´•+‘"lÀ•j㪹ðm\E÷µwi¢ KÊ,Û¥ÖRnPë“ÓÃÃ#t’ ¦XRÇÚ,ñÞ@Ã=½RþB>Ur*ê¯@S«åÆ€°Ö_U^Ÿ–=õ¹°=÷Û7ã‘á–‚¡Öó>£h‹¦‚ƒ±Ò× Í‚ó2¸ïWà˜Ï`Þ†ÔíßÒ÷¡BŸŒrSeЙ–Ó-ÓJ 7ò²JUU¹UÌó0u¡éªË…c œôâ)ËŒfù¾i]°«hÃÃúlÍÃ9$GÞϾ$¯<}<íx[Üû\’+ò‘|"‰ÆË"&×ä:‹ÆÄEO‹ò>ó®xLÆQ†|3ÉÆËÙ4ï[t’ÄYœ'yå¼ãùõ3þs¥–N§ ™NS‚‰÷ëéڵ狼¸möÓòwaR•1¨ÿŸËEO®S߲̄Æ>n=˜%á ÖD¡´( º@þ"÷HŠ»´XÑ-´XÒPË(u~}ZÆF·MSåûҵ;tLÊÛO?¼þädo^¼‰*´÷ŒVô¥ 2–ïc‹C2jÚö7æœ 75Ó–wK}YXÞ£}˜Fi—­ÖáœÎ‚\¾û0ᆦ/« a9o-‡V=—CJí¯† ×®×Õ´ü¸+Ùe ˜h¨¹¯¨}PtTóMJ^ãñ•ZvTQº‡¡!g6é¢mc£±4}U‘íˆØ 9Ã6U–`Ì›®¢€L@¹Y2%Ëbü[—÷ÊÉ9Ç@i¸7P¶p`ë#Ô¢’î1QIAƒ|stup4ôlªIjh›ÔÙÅy—Ôô=* R«¦ÿôEk¿ÝòÍ%›g¶ž7môúo½É¶k»çªÁî¹hïÿ7)™ ò’5+ÁàV”“¤HÒIL¢]vþ2“(óŒ$®¸ÉÊ™?DYš e‘¦Q¶æ'%1©…nð|#κ|$óüûHÉ]ºÌ71“p³æ'OÊHxeM‹‘„J%6mª9mÛÀ–ºnÝýàZ7m"–”q;µ{ûÃ7˜Š³Ã÷è›O[Æâ!÷Xnöêf£áþ³±]%ŸÖT¬s»MÇöñ~ªm>þ]²íéLG}KSnhp;‘hvgy4Ÿl3$OoDâûqÍ~Ì–Ì—³ë8Ë“›ùN³‚"똗•UiF<Øl8×´œ†j$Ö GçÀ«£¼uÓñ3ûã±3$Z3M.Õƒ3q¼lƒL[xSI°ÛwvûæåÛ×o_¡]½ÛœµÔ[´Õ{ÃÁ†ìÉ÷ÿ\Elú\;ð<{]"Åc|Þú¸¢û¯¥øîþðS ŠÕT¼[oÝ8–ñ‡&¼“2 ¤Ûà#iƒd‡l¥ÌÇH Ó»Û¨"¼i4»žD$ +Afd¶$óR RDK²D^ÙÐ@´Û<(Ó`¥õ·´¯¦m!¦÷#æ=èVµrèq6«•}¼Z™G©ÕÛ“Ã÷ÃW{£ãÑÃY{î—]WÅÚ‡ÔØ¦÷v¹³µÃh}}3Çë8óû\½4îÿI€¤Â÷Ó‚kæ#‘ƒÄ9GÓ¾ç)§Ã£ßöñC£æ'•Š·M™ë2Õf*ئŸœë'(Oç4*t“¡?Ô,ï Ȳ½røIhMPí0™Nã,ž#Ð?{{>®?ž­ÚýHg¸^+ÖŽ§¶°æõP#öO4ªÀ:LNÃ:~÷DC¬„C¦ iŠ÷x3Mñ´-œËB8{õ¡ñÆ™fgz' €á•õ‰­ß¤¬Îeƒ•,yؽ 9™ñM¥“$¿K£oO($ï—üâÁ'™-ÅèƒüËÁ)Ap]~­V^ë©&±[dÿı,[endstream endobj 55 0 obj << /Subtype /XML /Type /Metadata /Length 1168 >> stream 2024-11-11T14:38:29+01:00 2024-11-11T14:38:29+01:00 TeX Untitled endstream endobj 56 0 obj << /Type /ObjStm /Length 1144 /Filter /FlateDecode /N 53 /First 424 >> stream xœÍXÛnÛF}ïWœÇFÀ½ ðµ'®Ôn<Ð2-)C¤ ûï‹E‡’lU–è ì’ÃÙ¹œ9;»ÖCÁhXq§àÁ‚8 QŽ!>Àˆ88 "­áH{çAl=\YÅpòÚÂ+7 O ^C+"x†VAà ´fo¡YyxÍñ;mÈÂhë^ m í#t FÐÐBÁÊX&ͬ=!8°‚àÁìcð_Èæ~ަºÒI‹éœöºÙ´²:›ûã¢ÊŠª±®W<É®ò´±PÁ‘†Í;M'Ó8Ôr½¬ßOY‰¨çð¡ú½_¥UéçÉòHBÓÉéd<ˆqº@rzp„ä[öPMÜXwš³e„g£²*¤sðòµÎhYRôwzw}ÃË´*çtɺºzš ëkžP,úY0ȃ\3ЬzZCS3èF†#-6c&ø=#0Ng#³ÏÆ.Ò{kõV⸣ÄI+q^u“¸w{ãÑU+âÉY^ìeþãÁkÒxøéììàëÎþÉÉÇyÆq‹ŒcÃâ]X ».å0Ëô¿ÈD¶Íõô‰ãÛÛ4¹Ë&ùøjŽ„BpÖµD ÂÐ,Su ¤`Ia> k’Û՜𠨯oÃ`·6¼“žŸ6+³1džåyØÛm`_ƒ\oòõÊþ?c±ì릌½m—±ÛªŒû·—ãÑ\¥Ù7 ÌuPÔFK0±}>о£(†veœl¸a¼„œ 6†°u…z³ Ù˜9–ý”íýäŸÎ/ûÓäy[ ‡6„M˜`Ã~©nW`ÕPG>·ë6¼qÝ®ÃU«|î¨ã–ÖY²ÑžÖñŽÿz®2[5±µç›œ5Þ¬†MG¹uíÜúÿS ·;µeÿ·êÎZþ·%ñÎæçmÄ´¶Ë٪͛…¡Ó¾õ%GWôªf«.kæD§åºdllbWœ:òëël’Ѧ 9$Uz-¯}’ÜD]<|Öç>Ô§ÀŽô‹úz©#}ªQ/ßš ¬ŽtÇ[À$õô¼º—ò̤endstream endobj 110 0 obj << /Filter /FlateDecode /Length 6683 >> stream xœµ]KsÇ‘¾Ãþˆ½¸gƒSªwUÊ'É«UÈöjC×I‡@€°À’ Dñß;2³º+³(¯ÂÕõÈú*_fµÞœ[ãÎ-þ¯ýÿÅ«3{~}öæÌÑÓóö¯Î?~öÉ·å dŸÏŸ_ñ îÜ•lüyÑ8[Ο¿:û~øfg­©”áÿvÖjqÃg»½5ÑÚœëðõÎkƒžÓÏÁ_a ÕzÃßéͼ¾Øí#“]¾¥NÀ•á l _âc5B^iSôÃw;kœM¡$ùS ù¿ôÜÆ†¯qÈl ÝäkžŠµ8¦Äœ‡Oñi5<®ÄáøZˆ±uÑz–Sýz猵ÞWžhõ¾‚ˆøù¾– @€Ÿÿõì“oá¼(Öáf€5Þ…r¾÷`j-pþüòìûáÛ-ŒDï|¾ÜY“\̸Ëlm¨€B )˜TÃð·¯&»œHíï²-nžw.d7üY}“u´%ÚÂ[ Ÿx²Î‰Ùî&çz¾÷Åxžëg»QÆyø WÍ?ïh¨}Þñ6@ÂÍ|‹ÿðÖæ8vÞ™ P‡ ÙâÝΚZJ¶0˜iõKÉÅd*Â×ò4¾é‚ºßYSœÍ4®ÒZq8’t 8ÁÅêÂpÃûëlÍíøý¥+…g<=¶¦Úšk®E׺ ¡œ­Ã]`æ´FrØN×–lÝpäQõ´îxƒŸ­†žëÔˆ¿ r\ ~8‰Ære¿ô‘£EókîÛC~Ú!2ƒM;ôÕ—Ãp)àÆÕ5ä?.s)°ìK-Y-çXÃlñúÝR"€Sm.Ä»½jœ‚­nxÅèˆ!—·ÞÏöß/w2ï’I5ް:Ñú=ä¤Ý÷䊎ÔèídûÙ]¤C¿÷Ù™XÃùžô°sÜû Vú(Áz^éøüUSM%¶¥z¨9‡Ö>ÇuûÙ®Æ&8<ÓDe‹KlQqµj±Ý>DÙ ïIÅ@*õ!QujWˆFˆ6W%ŒÅj{tä5ÜpÑ‘4“#.Ó9}úbôÚâLïE‡ïÚtmT’͸è,h8ÈÕm!ù´.óƒ˜Àí8õ2¼Aƒª'u–+x?W]p½7nR‡7¨‰]ªsµ†#x—XòÕU—X]¯h { ÔA¹‘gò4w:!ÖTˆ1eÔâÅck cáj(  É'„çϤ¸ ~4MÑg?¼ž+·±Dµ/%º¨7Á•2.ŠmÑ´±Û¨µ¯Cer_¯øi®ZŸ½/¾ ƒ ŠVm/øUoó¨«Ð’Éi“â´>eÕ_ÓOµ„…~rõÓìàѬ½—&POo°™ÿ L®‹ÕdFŒîZ°aiž«±õ\k+A¨Q<ÙjiPå±Ä­)Þ£Sx­§JKœƒ¶r[JÓU5ÀðË.¢W½eûÅ€?mÑið²-`iY¦Ç}vÃrZ8íê|~Æi;€$öõ|»x¶]Iyk)›Ÿ©à+oÅa7ØUJ>2'ò ¿£“³ožPkòBëùñù!˜šò³Û'WHÇ=ïä寶ànf0¶ù-M#Ê×ä=¹X´úÑ'GŸ¢R£«ä6aßøSí?ì¦}Û²HmVΔZÈhWªÂŠl}£p3iÔ+î¤Ø$ã½’üºzÛUëÍnýXÝŽr 3|z±¨®å\OÍÝ«u¸ìfç^¡s]° ÖAM¬(3:Pe¾›hJjâm™6v΄2yiëGF'” (gÂhm¦ì|6ÞÕ¬”]²>ä¼ÄøÞWgb>i®´ÐH)ÄiL%»Áé5L- ¯iJÖ”Œ†ëçUÕ6[°ÒèREdñ¤¥ß(i,r›@‹I`S­ÃûÓcg‘oúRx#Ö†8¹çìâpº7¥ßvîÝ®3ÊzªRP«ÍE“ Ñä®-Üp¸Ûí‘•†~½¿œ„ú¢í‚e†5»d¡,º²§è\&g|ëQjh s&[?niJÙÇ0\ŸÞ’æ—K›ª ÑË®™ LÊ“ëÅŒç ÚRprL‹Y_£N]¤êÑv$ç{ç ¤XFU?N· ,yq±ö —Þ¢¤xæ59-BŠþ†xÎê¬Sÿc·w¹ä_ìzZƒû+17$1Ù¥h¼C~@ì†hp‡Ó‹&@R{zzE*»ZלWFã}G£€àâO¼‡[YV§:öLÊÆâ×ψ<œ8> y‹uŠ™ŸxRPÕÓ—r@z-:`©¢Éi@Ë…ÃáiÎWëšãˆ?Z&kIµбgÌz¼k° È8(ûÉIžE0ÑzV ÓcÜÆêBaÇ¡ÚPjaòª ²eø‡<æhýH0šÛÈŒæä:'4gŵ ‡×½ó×<ÀtÍD.»ªPÙÖN¤b(`À¹&iÒ½/ec“í­À?‡š”лZ=‰#ußߣޜõ%oaã ·ëSjRx¼ïI2 _Öû Ó)rRwú7vˆ›Gª«âÄòÇëä5]I§ÄV ,Ð-ƒ :Ƕz§¥ö®§!…ˆ›A³¾ ]Ö7_(ÕéaÐlj€ŒNLq"*¦£kNŸï”Óp-vâFÀøýñ…xñÀrÞ-`ÜÆm0†¹R–¸¼¶B>'z9£”6^TZ´?æî¢Ïy´'ä ð*m‰Í/º»äñ`ꑎŠ'âÃúñŠR ш©=EQßñàhõ®úäf¶ar_OJñ~\àóÀÈ“´[§ï–‡)Pæ 7º»\ra,QÈÑÉ®—-pNA­I™ýM©yøl\¹ £!+?˜ÄX äiã©3>—%Ŧsšj~‰8Ï:¼»1S»ë°›ï¸«>!Œ˜ò'¤¼ „ ‹$a¼ááñ ¬¯Fl0vÍñä³zœ{8kPj3buÇ¿Ëï삆€ýC¡)OWÒ P§f$5Š!ÏF)þÜV•ˆíøùƒŒW+{‰-ò›2yÀr¼qû$´èƒŠP½2yÂ9»VQÍ´Æ,b”ƒ8ÞÍHÖä0ù'áÈ2èÚß5ì–«—žìƒÛíÕö({ä#žð¦Œlš£·Œ8Bùø ”ôŠ*³?®½É»ùìV`#ŽÝeÐ$6˜Ý”2a§I @»xø]Ç£¶•1 Ô‹TlS‹ë»ñç[î"Sh-f!Žú8„D֯ݡâ”K½ï:pÃ((Ý9Òñ#%!í_ºúÚP­ï™Å®€']b …’Óa×Ñ)YŽöN*ÎWc:-+5+P.Îò „X8Ûæ¦q>‹ÁH[ç<a€ V®Öäª>ôZ  p0–bŠkÎX¹-ÓFæscÁ¢¬¬è„FÌåá$´ÞißÍ©ò¦¹ìÖYl×]G„À”DªeRÕž¶%§Õ‚D ö=µRýâŒKúãjœ#<Í?ïö)±6Þòå§8î÷‹øÚŽ”g)&Û¹“=™^¹$ ›Ž1ŘLb±ðèêÔà qޝ%ð›çyœC3ôü¾æ Ú8)NÝÒn*…f<e°„÷–ลS¥HÈ [çÔ˜R§î£wd´×ñ*™®uQß)Naj‚–­öÿ÷®L€ªøyøY÷3äæ ëÃØï³Ý>Æ€™„A¸¨'²Ú€e:ÈÇ.¡pçot`c}<Æ”¶€;¶. ”oyÀZ“%ã¤ï3T˜hk\ŠÝ-]ðž#ß1õqEsÎ …± Tˆø’>ñåÜah#jEª¢xiÇÐå±å-~©f“¢‡KwF0„ìçÁÀ’þ: Š”’·q¬ÎšÒ ±0%ƒT<—0…›ÐŸÿY°ÓG¦D»ãžÜñ0ž îˆqîöbqì¡¥¡@¤¡|D|UE¡’k2g… 9ç'Î`+•´O”H”^d½¨ÊI·a þ*úE'å1Üð¥p¯ïFè<ˆ4hIóp’æ¤Á3ƒm•ÁÉ›ë̹`ÚPä2²áó(¯HFþ!‡ÿ¡0ÆP¾Â_§Ã¶³’K6ÊÂÌ®U˜þ§e–}m¦6žŸ±:p.¦1o6@PrXMŸIÅÔ*1^NÅJ¢’jö€npœµ@dò‘ºÅäëÌ,Bø@ݧ¢!.Úam“2°-_-m2RÇÜ žÈàš©ºAh—G•‡ÌP(Çw\ìŠ+á­IÿðFeóBq/iÈëivE,¥r-4ãN“šÂ.u#8¹í?›ÝD)…²æúm‘FB È#¼ïg› Ö¥@x€ÆŽ²Ì™³ŽsšÜBJÅKl _JçPåØÀ.NSdèc“`Ó6]±£$ë·<Ï¢¹çã*de¯ûŽ®çZ¤tÏ8͇¢BZäÁUá*½ìãQË·NÝLÑÖ©új0•òàægH£‰_KÏQçXqbH[}ß[cÇM´P•yqšL€ §xýpJ˜ ÔÏÔä Ò€³wê:Ú~nFô¼¢øÂ–,ÎÜ¢»‚Ç‹CÕ€…ÃÒ`É3˜u†ÈN ÍÃê..qR=V® ®d‹ÿÂlÚh󞊼rJ3Ýt ¢ÕY{k8÷”j¡Ø¶òI*µ=WðÃ_v|)bQÔ2:` 1-5 íiÉ •~¿*1:^›‹sŠWIñöøVêÇ·vkž°û¹à8  ×åÏ7­°¦¤»³.Ž¥'«Ýë—JÖ%˜ÇR³ ÉMy)¤ *Ö™ýyf.”H¤áApžCø"–kÎ0]‚I0üýtœí ]m‹¬Y±MMƒNÎtû¦²6—=+ºÉ¼àT¬•ç`VÛP¢ UªƒÜ„'èdŒ$(ÕÂIíµêÊ)kH=`¾îª`l‹ó[‹]¹aüÆj\ì%É eÙþ®ÃÝu q+I.ô\„ sf·‡dJ«+¤]„Œ,‘(ªŠß‚Ôa‹ä_ •˜’C»(íDÍŽÐÂ÷ÖL ¾T-ÈÀÒ“W<\Ì÷œµ$<Å8 ¾nÊ­ølªËy¾ã{ÅE©¯OÓR?Ѹ ,³­©š¸—tÊŸv½"ãŽ/¦@–‰k|¬#Øîûr6ˆœuGW)ƒ»v‰Ýy¥‹„3üAGXûqÚþë\ö<©4/Ú¸žeºóŸ¹N»Ù2eod S€j²M²þo ÂdGnš rt…Ê¿~;W=¼ÉUë½<@©0ÍnŸñ$Až‹ÙÏ ÒmR‘ÕyB@sýÙö­Švcyxy¨5¤°¶£B(H»®×I.ãugÃeÕÜèºf“âDMþÚ'ñÛ5ûÌæó³LÐŒ,®ž,àFÚOB¹ÞõÔŽ„ð›î¦Jó/ØIÒíŸZë’©á8`}³DÆâ#)÷i ‘Žª·cÆQBA¯£UÌý|/׼ż] à N on EV=àkž©µåq®'õ"’OºìVâE[´…ßL °ò­&—ÉSãþÄ€° º©\[«\MLUEõžc±at32À#f–:mrlñµì’*c^' 7]‰ï¹ŒQDY²­.”¤ÒqPJTå?”;¶>MŠû.òŠ¿šó—«i‹tVÞìf…!SyëjÊi”u­OªÝRnc5Â$əǿ™.ìà:’bB,[%ùÞöòÙewÚ0M°ø}Ë} »¹+¦a´âžø¬læ#b*¹÷ˆ:‘ûã-rQ%(Tï”MµsÃ<•‡ló >Q£ß»Ó'®IX÷^ÔÁÛ°#Swbr‹’Žæv$aÚÕ?A;7IÈ‚!Y½p⾬“µ2û9uû¹êYtÉ#$È”°÷!ô›¾:#·dÀÖ•þ¼Ö‰%]döô$$¹Hs¶Yèâè™Ñ-žj5u?JËÖœ5×Àú%•\DðˆY“ž¿ ˜®E’Ø9ZOÊ)øâ¨ aýb‡fb™ Ìs7‘æŠE1ê>šÍ[#±/hâ’:,Ö<ü;n{ Ø ÔíÚÕ§ÔU×RÏq®à/»”žMÊõÌÿõŒMgÛ—Vž T¥¯ðbºMeËêm*ö|ŽK·½õ<ú)h`ÃìfÓ–ªGfz¹óÛsü­@+Ëœ¥|ÃV ÿ]Yw0£ ‘·¢$AüuêÇE¤=ð'^Õ¹%V$uV>0þ¤L6Fâtý(}”ß~Ó3]Ч™[Œè‚žŒ˜}°®Ú±WW¨èi±ñÿ#;6 mÛõË[ïMõ~-Gq×a»ER|:‡eˆ¦,üáyIJL!¬»­21>«ª|WA&ÊNoùy®Û€ö5™hëð7EVýßw2–t¶Ž ì¯]þe5#Ñ2..»-ìŠ]¸ãžÇúÎ^êÊkq^Z"˜èÕÏ BF/ùp0gõÃŽ> ^Ã~Æ×ïЂJI¬_’|ËK/nÎÎŽC­[ï»&xW7ÝNåäLé…–ŠÀZÆV‡Y«†b{k;4;{,*P'1õ¢#}ÜÅ2š‰^F°M²™¦ÙBÜëÕ̸5¹`QÖ‚iŽÕ£i¼Y.‚]>?8àaɈÖFø4ƒ{À¼'ê] þºÃáñê€u¦L,ëôº×Õé>šLëVrH”Bl,}}ðúÇ(‹Š¸êtV…ñ¿µþiEQÕ€vÂñ³æ»‚Âñqn‰”[xLŒùå%¼– YrmàÓŒkS•a¡fJoÉÄ„º”ú3úUZ1LÍä¸Î`‰±8ýKÚ…ÑÏ\h‘(ªÛ^M dŒŽ­cuòòü—n®;ñq‚MâpÓ3½é縹M«LëòÛ¦e+^¨‰ô‘×Zp׆ÿšíÞJp¸z×e.ÝLEjÒÜÀ5k¶Fu‘¿Ï.Ïw˜=vQe\bYÊõüïgÏÿó{¹)ø ‰»ç‡:Ž­Ê¼¶X0¤ªwS¼t¡)=pMhÍ–’ÿH9Iêê®=yºN23ƒy«C“æ‚° a%“&®^Ì Õh£¨]ª< ©ÝAùÀs/5.œÆ@žÎ×¥*VJw´šŶ•jþXÆ´k.º‰su^«9¾NR䵩'WZŽïéä-Ñb©RöxËÄ¿#Ë®ü®Cu¥Š:TÊ9§Jw›¶(Ø-§¥ËPù*úRHÅ”™%û]¢d\E•¬À|G²®M«ç²ˆ‹§ØéE*zþŠ;Ã/ü<¾’>´—\”éŠV“ð³ÌÒ| y”Ñ’ÑXÆ5²öJ0:6Ú¶êÁyÓ¿6‡/ÎÉù—Pðy~€UÄÓÌqØ·!µIþ¶Gí+þ†v9‹<Çòëëùl)´“ø&ÐFžBh] ™ßª¶éa`-ÉSn!oܲ£¶Lê¡Í­USàOgŸD+´n;3»ê›N2™G÷# ×Jê“Ç«–Oóy÷«ø$އD~Ñ䨦À÷Fd¼–aÚÔ ¢¸[ylĘj%Þw÷Aêf¼læƒÁÏ¢‰‰pò à‡µçlÀ1=1ȹP:¼S«ók¸¢T!ŠÄkøqÊè)È‘µ‹g2¿vtŸÔfæH§µ~ê Ÿ]ZAWã,UýîjM‚,•Y˜ŽˆNÚ£w^Öï-ŠÝ¤ÛÒ&?«»%±~Nu-v€zj=!®¶€ÒaMWP…ÞýkBç£Ì–J> stream xœ•SmPTç½—eï½:¸$ìì ³›‚‚ TB!&iG?0Ñøm]*Ô( .BtaùØÝ³¬VÀ ò!ˆÙ hXPn$Á$¢ I£Ö©¡qÒdB?bc“Ÿ{}—NH&?ò«ï¯gÞ9sžóœç9<Àñu¡a"Y(d•ZY¨#mýMšéSÿ‹7 <¤Á0†A\˜¶/^»!R$êÿPÏIt%›¬|?]Å4¤Q­ÊÃÿ’Y"›Çø4Ƴ%N ýÀ¨$'‹ÙŽX`AÌ/iYqŒ§LZ÷Í `£NUí-ª óꇵH™0üµá`ÝuHÇd!Û•î܃LlFÖX÷O¨vT¹&¶ÅŸÎr•ííIuóaA"g ö­H''øÚâƒöN„5¢GŽK:ú;(fS“4T¦úsº-–œ‹¥;§¿¿»»ßÈ|¿úÓg.lšÁqÿcûŽendstream endobj 112 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4587 >> stream xœ­XiTSçºÞ!½¢@w =½;ÅZ§:W[ÇRµÎ´Î€až'!Ì$¼!Dd&¦ˆq`AE,ÖÖ©-­CkOõb­ÕZ{ÞóqÖ½+PÛžszÏYg­›•YYß·÷;<ïó<ß' ,-(@`µúým‹Í?þ´x›~4yZÁx!Œ·,xåÅ8Üj}b÷$Êü™³24luxĚȨuÑ1±ã¼7ù$ìõýÀo³ÿ¾­Û¥;‚‚C/Y:köœy󌣨ÉÔfj 5…ÚJm£¦RÛ©Ôtj'åL¹PoP®Ô*jµšr£Þ£ÖPs©µÔõ6õeO½Lý‰š@‰©‰”5eCÙ ÆRs-(eIå „‚Á ‹Ï…«…zË-–¬æYeY™D;išÎaV0ÇǬS=öå±Uã¨q;ÇõŒÏ°bB—8IüéÄ95“Þ”<é¡u½Í,›#6?ؾn»ÔÖÍöË^8Ⱥòr±é0ÑÕÈ¿§ðËLëÙìRya"$€<#;™D ß²K õZŒ”>¤: •pš GÞ;þ5#½G¡…F(€Ù”H;AZ¡ìCÚø'’¯¬ˆÄüm0ò“ôsC® ùDìgÿì×7yºçê(—{_D^Oµ’Ò—fºIHí)ƒMœ”nWu@4B´F´IÜ@?ùªç£Ê½œ8’ð¯×Šy}šwÐ š†°sHÈË1Eë)H;b7…PÄšX?›/ ûôG´æˆŒì`w‚·.¦%ò¸¼záœ3´ëZÚ´]p Ú#k¼•;a/x(v„y‡ïõLØŒØt0Öhšf <æ š…&ÓR¶ŠR2ssSÒ9וûŽnèyì‰YNâ‰ËÈ"܃ËÑíQ\…I©òì´\I™C&­væ-²í°ןûá2ëÉ»:‰2C™YŒ ª$bþ6q6âzþƒ…WÑ0$Ä ²ˆ-кËõdÆ!`Ð-~ÄÐzêOd‚ïÖ4WÉyšÌ0—ú3u–·dØïÿ(Ÿ#_ÇÖëmý˜kÞ"B¯^¼4À£¼7H"Ó€ª1ö·Z†ðÐU!ſφ‰üJOïnv{bM,f–XÿeNüüı¦: yï_÷k³Yû#ü?pÞÌ2§!¤PôÅ×7¾î^ºC"6ùƒÏ±é°_¿‹þ¡i=–²Á¢23ö²2Cä¡(h–`ÅúaYÈB‰µÁ¢…É!Ó¹™˜*jÎ+8Áád.…êÍ•äeÆ Å8«áÛÒѵ¼TÉp9í¯H}‡‹‘òDb~yªC€ÂA Ñ ãYøÒ€Ôý¼¬œ´ ˆf‚ë’µuÕ-Aú=÷¸mårŸˆÈä?€óQÕ¨ƒȃ #)ÇÑ«Ň%bþí4=?­^ÐÒ‡™}BäùÅ#ðÉ–CR§ÈMO—C.( +?©8´Øòj°ãî]­¡*¹äXHmÎ%YWúµdXÇøFxÌzýt —Sš«–“ñ2‰N‚´ÒJeU%§V—ªÕ>] ƒ»C?%ãj$yÛ‹r ¸À½Ž1M5m? ¥zIX§Ì(S1‚:Ó±FL2ò’¨ïº+4¹¢{,_ý)g¤]åa° ¼`)øªzÇ¿&m¡PÉü%›hˆçÐ]aÛAÌëdýy¬Æ:ÜôáÝŸÐrYR/Q¦)³ž#eôïGÇëƶù`OÜÉŠ‘ÑÙ‹Ébô½v«và˜¤2¬YZL —KÄüü4?Áˆ‹µ´¸Š¯„ø?™ÅF2‚E¹ó|fÍ‘3awˆŽ&cî$œ¸tìÜ—\ðNzm°¿ßz¸UÁ‰ùÛiz~bÇs–ÂÛü*öyWÑ‹\œÞ]”ÓÞËá74™eîïU/™ôj˜ƒ ïþ¼PÍ)—ŠpF‘•‘^—QÐ#Á'´˜?›VÍ¿dð›ñk¶®¿¹´UÉé¹| Ü!x¤Zt‹¢0!M‘“N(¢¶#c±.«@ž}ýaÐpFÚKîñ »!htÏG Î*Ä™ä¡]Áþ™ePÕ%Œ˜o‹ÕŸB >Æ(8…¸hHÈÏãf;Kà“_:µö€#øŒ<§™¾gîÔ°+=wç.g/­!šÓ+›4p„i ׆Å&{­Ürïî£shÁ‰MGó1MÇoØÂZMÇ€9©\^áÏcëPG@ÈäYŠÌY$Ïn ê²KAùöºCÊ:ÎHûÊ! bÀBžg“—]å<—€Ýt,ÉÍÏ)†|û†#P9’¹'ÄC¸BèèÚ^(Ê)×É»ûUé übuéSl¶{JšÕ)ù©°¯€ü¢übƬzŒl0ÞÕé71ôê AÈ/Æ“ì³zç-^´!¤:A§¯Ò6Ôí×Ĩ¹Öú>(¦¿ßw‰$˜Þ*_/_ú¦_âV2‹E\ì<~¬†Sûéü:€)ú6ÿ;É™à´Ïþ¤X8QÌ9ždg.‰Øë²§¥ûâùË8O͉MÁÈÿÍh&,!ïÈ/dÑW^8­¬UÚ›ë p9lÍM›[™q!O‰O$&'ìð"ÝšW|«1ŠÞ’+`3l¼5²¸†å¬Êçœ%2 ò98yðíÉÄÐï(Š[%¸ŒFEèB´E)ÒAf ¿x/4@?´Œòð>„ÐcÌè0Hôè7J~Ífò3mdGÕcd&†¿3ЇÏ×vù]ûçRc3å!/wóJH”¨6±Pyå•­]Õp ŽkC4áe° ¢á½}îû<ÝS¤°öÖG•Uý*+^zþ3£ ú–ߌ߰õg[‹ŒÏGÆrÀù9eI Y¹™Ù²WI¶a°<³ò ߾Π¬áŒ´§Ü b~?1§ L¡ñÃä¯vž!kÖ™T’‚¼Úbhdô±å1qÑ)Á{Úýû†ºŸåsb>8Í€GîTh\À=!oÉ;°aé9Ñ c«âôºêʦóëšfÉl"$ãˆíãéhƒ-8¶¤$ä™Ù¹ir.36lù4`Þ_ÐÓqÊ}ƒ…§!¡Eòû· aó ošeœ}tÀw­ 0ÄšÍ::ñ§×Ñf Gßb”8Ñ8ëW–ᦇ/±9ûãÂözD¹ƒì­‹j ?šÝ]ðaáñÚ–ºÖNýIè†î¨&fÄŽB²™ßÐ,ÄÓ<6µ,W Y&Õ‹*á h:¹2â™ár:vOå¤t§ª t ƒ.èËTèÖIøš_3ü°P–'/{ UJøNZÝFZàîà9Ú‚G°;B2ìH–v¯¸³‚ËB~>Ƴ5 vÈí)q “fN!“‹Ô4´AÛÞgµùò¢”TEf–B²oæ"yx‚Guȉð 41J[ˆ¯~[× 8ò‰ƒ2š›.ÅM3 f±Êy,4à]=È›¸˜8“]d>YB܉¾Mæá6tÆ…¸=9ò”|Åqøó1§~õ¤pòÛDF È”7'KÄx Œ¼Àˆ ½ÇÞ¿#Äífo$ÑJt»§³£¢0'7ŸKHÏN„&¢*^×PY¥k÷nt~wÁÎW9b¹Dz“ þ[S 'Þ¸þÂõFLm4 `Ææ!®¼Â«"à0Ô(,(l‹<š]ÌÃÁ+×$ŠÒIÊJŒÕ=Êyv6$1 ¥)•ešÂZMJóžÄÝ9Þ\d¥¯Æ˜é«Ö®p×TÇIb"3‚ |´Á5‰.É>¾àÁ¬þËv´Ck´8y£/¨Mªá¶Ü`0ÏØ9p¿¦U­+×J4µú’`¾‡7bü³#öÇIb‚2€é"ï² ø,ÛùŽÇôiŽ'úª+nJĦKÄùñZéù*ƒ`à.Ñã…GB¾ë {·'!¸žù§ÞxâB²5« \õë•o}Ìc¾p¶Ê’e¹©™¹’¬Ü"}Á"ꂾ`ˆ´‚u8¾æ)àr³Ðá{"Ü$XûjîfÎ÷îîÒ@`vùùzÄ$ågJp©š Ü’ ŒKF{©¾¶ñHOݾ­fC1zdá¿8µ¼é±=(ËÅ{¢ß³aéÿã±ÅT«Ï4b·»Œ68m?züSÓK¶)|(~Ï^×Þ? ·˜‡Äök2ƒ#7~u®¯Ž êïUhÛ“h#úŒþAëÀ ¼ÚüÛýû³ùF{³é”&%ƒ¹¸ÙN1a°²N$ -c›’y6í ±hf]Á’‰x@:eqªPy´ÀÜA; ÓˆpÙ>ó”tøfBó˜Ñ…f£¤¡ÑA±º–êFGf’X)ýIa–›„h~‰~(‡R8÷\’6æ¨JxŠã5³8|:úØ}÷î 1Žf ‘õÁ!‘QÁ 1zcmƒž#óGžûe¡¹/ötxÎÔµûcòÕ)ܼêRÐ3 ñڰȘÄ`×þ°ó_]øäÇ'ÑbÓA0òÏŽ ðŽÙØš³ãDq$ÎÊ *õõ8ªÀU9Ê4ˆd†5t$¿ÆùIE­*¤ Ú)h Ù~ ÊZ$¼††Z(©Î/Ìk„*ÀÙPYFV0‘˜?kfàmbÖ³ß^¾xªM]o¶Qòdð7HVîÉá̪ÜüȂظČ,2…0v|8ý‡Ð;ªê hÍZû;8= /÷©@Po_[WWWû™Äx¹lƒ # }^ooHÈß×ÅŒ6Ñ£¹ÛÿAüKß.ó;ûþîbÓáØjg˜Þà¿b.~¬Ôc¤Cå®ñàñ\:êbÂ3råÙ©â6OüxuN‘"òíOC=g¤ÍŽÇvC¸Žn85Pᇪa´;P^ • :x ŒÿuÌow ¡æ¯ÐTƒýì×g‰`®‡Sh—ðù6íF˜ kS™ÿüÒáFÏÇŠ]wüÛéýOÖŠy}l“i¬NÐq?ìâ·ø7¶¿ár/\g~˜Ù7ÇaѪÙþ¥õ¡œ&6_qÞ—LÚ¾ ¶3Ä…N(À‰¿yúq`[’†K¬ÈU.êcÈÜ{l¨&ªZ˜¯ûìú'Îk¶zºm åßgó(Z£I­H?›™w–î^²Àñ£›_ö\9ÄÄaxpSÏ¿¢tÜCõ}!ÿ v³DNï­±.*C8ב¯2BÓ­‰JMõ[×ïsÿ _ÄWPŠ¥„¾:…Œu˜K^"ìƒÙhõY{çÉ:޼¼Žõ€Ðê˜ÖèV膓0m ÇëÒvÁ%hÜ Ê®vS®€8f¹×¬œp(D? î¢Pˆ{øqlsxMX`Lx˜y¶›k̳=hùOÿ‰±›8WãJ3ÙlÖ qs9 !°Äñ=¹\®€,&½0K]úÍu&îÔniLDhHuDKMY‰Jʼnñnº (Á!vá&öiÙHòKgþ9sµô¦±zÁñ!¬òÉø9 ÏR/H?ÙóßKkv±ÙÉaûV)¦ƒ lPMí^vbåñ§¡n•÷>lý\5M.°°¶"öIêY¸§à |Z|¦úçëEõÐ WµóJvÀ»°¶À|ÙöØÉk“¥`>΀‘?dìÐ PvCˆ—LÖlƒBÎùìuŽše¾Èk€>ø°.¢ýå²Y\€Tt\u :¡nÃñìгä%­fðÁMüéÉFÁé'ýƒ[Ћ­(o3V”?;p¾cpÜ´kÄšŒ_>oÛÑ̲jCù‘S»@Æ5^ªïæûîåo¿¶Ê‘Œ%$ü(KDÚóQ#®³ Éã2vÉâ³2! ²V$æÿç7÷$ĈÁw„|¤Ù@M0’Ih)ºÓÛÞ¡*ì²?2Pþ^)¡RNzt‹*˜iÄv±’‹ðSÄF8ˆÿÖs‘^|Ì¢€~pûèåÂ#ÔÈE¤Éc 2òbjÓä2H€l†XÒbn¬åÛÚñc(ê o"pendstream endobj 113 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5009 >> stream xœXyXSWú¾1’{Ýb]®Bgz¯k§Ö ÷¥â¾ïKÁY„°²ö$_‚ì†Àe‹ŠÔ‚Å«­ .¸ÕV«mÕv:Ö¥µßMO:ÏïI¢ŽÏL§óË_yžäžó}ï÷ž÷}Ï•P;Q‰„™³lΚ9c\mßÿÄã·Óo'è.…îwÿÕyao\ÛëIÏcoQ¶ÏèYaÛç„+æG.ˆŠ^ã³ÄwË2¿åþ+¶® X¸:hMð‡ÛBB×N˜8iò”£ÆŒ7ž¢Q+¨•Ôjµ†úõ!õåNyPïSk©ÙÔj5—EÍ£FSó)Wj5†ZH¥Qã¨ÅÔxj 5ZJ-£–S“©~TÊ™r¡Þ¦P=©ÞTª/ÅR®( Õ™ÒJºI¼$—;MêôDêÙù­Î‚å´Óé¢l–ìS:ž~Âlb~벩Ë×]—v-ëÖµ[l÷>ÝÏöð—¿'ßÑs`Ï”ž?½UòÖ½Ò{/êý¸O\Ÿ/ûº÷}Èz± ìÙ~Óûï?PTÉ-'ÁŒ›Ìâ|£ä‹TœcY̦•j²vB<¨Ó3’H„õ用x¯±&„.ÓÒ‚à´ºDs´û`3½.ª²"t†þìç„{e§ÉHC¨Aå¶"¸ºAÂahÑ|¤¶=G/äÜäj†LF–¨d(Ç»NrÑ‚è'H®Æ/«¥è.ªÙ”B5ÄCº+dP Æ4ÆÚ‹Ž9œ‚.Ó6ëŒP -Á¶¬@Ïå<þFçíÂvëÂ¥²Á¥vïåÅþt9œèà:Fã¥Þ à©UèŽv¬ ;À#Š'Gi¹¥gb¥˜T)9vÿy_*ÞÁ‡‘nøy #]É[dŽ=HW|ßÅØ‡sÄH2Ù¹¤Ói\+QÖÚ~ Ö“d=é´z./·TE›-#Í’ŽçbN•Ô"­lpÝòSC€!ëÉ42žl&Þ8ŒÇ èöÿŠÝò`w’Ò“5|*Jº|@:3ެ<Žûñô9xù×g“ɨr^—¨U³ôe<&Ó%°[™™ »R9¹xô/ÇA‚].ã®ûR¼‰I쓯ÏÝì˜q™Ð<©PÈÚ é¾¼UFûf¤/ätö´Î&hS×jì8.ÌÈnâq"­Â@öA_Ï]–ao˜±Å¦“Þ<‘ÈäâO‰Æt#L!ô¶mä~Óóþ5¡Ÿ¸\\Í‚ ËË3ìÖWA)0×ï©øeÌ!ýøq2œ—Ä^)ý¼>c®Œ½@zp$í?Ê©Õ~¢«†8®®|³œÙè>G¨Ô˜CÊ¢!6ÈÛRw(¡˜óÅŸ —¤Ô¤dòiË4i°R ÓóS÷¤W'O­O>6³†‘[6˜±¥N‚c¿CoAjq²Lc­í!²[:eo-£ÔÊé\dˆ¬^ÿ4B<„•µÁô(¬çQóý¸ d/`©B6aWÈ0n$fËöëváÐE†£¡Ú}À2¹è™(ˆ©&ɱc¸û˜Tì+jÙ=“œ®ÑD'pÉ ™éþ< |q]´Àm;à‚]|m¨1óQÌɤ¿uûœß!Ðò[Æë'c 9éºõÆøF¨eZµ¶cŸRÒe[§Kƒô|` Á°——[E›1Ñ,µ“öÃ烙M7ö_[;=¤vå™àB6’©d"ñ$ž8™LÂÍ·ïWž©ç £mÉ&rŠyœMœŸsfz£:@ã ¾0ôG»©§„Ä ~ MzѰ˕¬>ŽuØ€¶Þyñl ]νIp¹ø-¢—Y‚…Rñ h`­»d‰ÄÍIåboc)JiÓƒ7o¥è-™Êé\ŒBÖ¨?‡àœFÛì„zzfþ!^¤èÃzhCÊ´“ôÉål#²$ ¢Â¦9Ø(Hq…¸œm2d·s¦Y­Ž†hX£ ÕÚ•âRVº7OBiPÀV]RîÔ/§¢óÏ´×ÜKkUššh…ÚC“Û!L»ýMÙEfº¡C ð}N.³Eb¶ñPŠ >côù·¹J³,P5 üÁ¦A ­Jú¶ÞÆÌ :@¥œÆEؘyB#܆z;3#èiªü^.Z”eb¤ Á…âb6µtÅTÕA 'КêXˆ_m¸£¤SVŒË­K³“ti…Pºìì"œ-Žu®:׬+Ö2£×Ä@8lõT½jw Ä‚R•š¡$ƒÈCg»hã¯%uâGR¼#f³é{2²•è0 Ö1ÎÊð^KÕŒ‚6éj´&(µÑq¶}tª:È…ÐÕ}Çà™iMÎŽÂ HwÙ;9]¥=£3B4ª+¬CR=Cz!Ë’²0ÝInùú_PZ¤â·ìº£•gµŒ™ŽPmƒp€ÕdÇ’>¨1DC ¤d(ãÈ}rÂ¯Ñ ºü[\… øYàþ0ó%ð´C*Þ„ëp—ÀGÒÓÕù <΢±7ÊЃTd§æ%€Ò%Ìb¹ºÞn| ð‘ú Ã+=! Ž‘4|à,o€ñ& $Øõ"ߕн°œ½Ttº>eÎÍ;O$©ûwyÄS4J¯\ºraÉ©IùÐvœ:9•“ÿþr,«Åã_I- –A¬Vãdíxçý%h„Fh‡oâ)V¼š q“E RcI‚õ¢3IÛÓJÓ!\ˆÛkÅVÑá°iˆ mm«n?ì‡Vu½í!p¤ŠÒZ-æþÞ%+Å’.y`ÈÍÊeä–Î/ÓF—Ëxú®»t°/®£qà dðä†`O2„=”X'°v0E9m‡ý–ì>ÞTgÚnòwaJ‚O̶øhïõ£±ç*-«ÅeÕR̵Œa“ 5Ú`ˆ[ˆ¬®‚>E« $0Öb:<ÿK-µ¼¸—YÏÙeƒ=Ó”ñb3] -Ï93¨Ù †`Ø  ÔÚYþ#ÇS¯îf¶´Œ=l0\å:H³V°Väèøª!Û·v¦½32ær ºN{\W •p\]ç@ln†á0/1Úlq­–tœÇ‡ç¥¨'³ãËb.Cséô¹{Èxwh§K‚ŒWÁ=í·œ4ÐìJå¶® ¯òl.„;nà’:¯ÂþȆڴ»;öd–¨ödžI4f˜ƒ²ÓjƒÀ™ë1ÇÕgaÎá¹ÅÇT×4ušÝ麌Wéy½Òòwëô¹ÙܳÕa¼Ÿƒ öºóôÅ—ÿN:UñrqZ¢©á.þS´ÜÅn—¥xEœÆ~Y'9P¹C(aÒËxTJwd)ýxr“ž²1"$Ú?§:ŠkÐí ˜)+ŠÞ‘æq«£ýbc{§Í†(aä–*0‹ä€Ÿ~'µxY¦°¿÷—Å’h'AV„ÓŒ•8öB ä©M*ØQŒµ‚‚ÄAÜ–Y“þ´@ <‡&ûзЃ ¨ÎæžP&}ž®öºBYD™f׸žoNÃYTü9uÿçñÑ?ÞC² /© ]b#Õ©œ‚6j/êJ¡ Ìš*ÇÍ<bô[‘Y˜äŒ«pf™ö°žè(u‚Fá°V—èØ3_JˆÛŸÈÈżU+†¢«¥~<– f©Ã›Dš>Z 7ìå/Q‡‚Öëþ¨|q4-·$½\®[µ8á¼T<+ÆÙãˆë«ÚV]=ÔCƒzÿnÒƒ~™EfX';“™â”WY¤ÇK3"?üù« ±»-Ь°zÿ[ùíAt™e Yb)G)Kfˆiš,ÕnÈr©= Uœ™PÍoífÝÞÏ@¡*?.;Ù´2A U ù›u¦3q“3 Az—Ú6¨¶Õ<{¢õÖù:‚ÁYØ …~`µ:g)u©EPúܬ|œ+8ã0ûK„ŠŠBpl¨Ò×õÖ(¤±ç/±v™ôŒÐ37oçqÝ’X…À`¯вU†42’y÷è °6åz•¦lùŠI†ÔxÞ^£8Èôõƒ&AòéÌ} Å÷ð ¶ŒF#¬>"4gVpI¾àR‘`ÚS›ÛØæ{|y‡ðÄ™„’"dÜ~Fúé÷èÒynõ§|x¥ã$ø|—$ne%ì\9—¾'¡1ã3hbn|öwc3,­çʶÂXk`cÄ–ØíÛ#<ÀŽW™xá–=IÅ|ñ››:01$Wæ ™ _›¥ÉS3 Y0ñudú’¼ö¢œ|à (#dC Gw ³ Ô%¼ZZ 9k¥˜P~ú¦c"–ž‚äÓ£xñc)>IJWëÛ>kÌ£Qm#Mœ=rÌù­g¸U¡#6À@†tÂNKÅï¾øxç…i­Üäãì–òM5ÑE~&heÎ]9tý‹Këg}0u“"‰û`5‹oO©Œo ….n“7N3íì½sMî7qö>¸g‡¼ÂY|¯³Ûi¢!ŒïʸUÚú0î㜚sdqt|hŠßâÞßã;ØßÁ`,&²ïºmÞ¼÷Ú½æ@`Ö²kꃾ„P;¯‚!oOecÁ ÏD7ÂQ8µM5MåûjÊŽBÔÌÖªŒëa*$23·ÎÉE#¼øª /?j7I:]º+Å]ÀÆAzA!ä–rõ4`Ÿ_¯í7Õ–•€&¦mËm2ŽÐ‹- *O,¯.5V6û@·¿íbA0ØE·ÀwMìŽÄD~ùr¿©0ž¹@¼ØšÈа°ÈȰ°ŠÈššŠŠNŽðBòâ…OüÁ¯b+˜ÅæÔ^—â K_¶tQ܆ ‹fB ÐmUŒuMò‡s6ŸMo¼“ ¤‡Û$ß¶Ô-üå—§fÉÅ_0ê¡T܉³Y…Lµ3eY’2-m&$CÜe­ß¹aÈ*ÙÓÒPºçܧgNÂ#» »Ez‘nn®cÖ}I}ASe\e *4*®ìlÛGíÀ<:1sÜêÈn“yJâ’“A Q.â_eöAw CLØíÙg‚ä›gèõ\Š×m¡†:ÐpÎ0_¹ž~wÈä5›bkÌFSÍÑMÈU7·—´Óz*|b2,ôYLJ*ÔK3ã4éJF¹J¸£²;-Ë“~ó=¶Ì¹äËȨ ži7†EnKÜ<ê§%(Ãþ¾òÕâÛ„*sÀ‰o›E£¿¾*=ŒëجïÈHQ¶Ëæ{F:ÿò²åÈHßüj n¤Ÿ¬Ñ$%säˆ5€ÅBQîd•Ór®kçIÆî](êÿNPendstream endobj 114 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 157 >> stream xœ’mÿCMSS8‹‹ù%ùJ‹ ‹ ’÷¿¼¹R3PøˆùC‹ ÷¹Í÷“Æíí÷éæøU÷Ø÷#µ¯â‹ÁóûÞû%û›ýJí÷Î÷9÷WûÎðüaø÷“÷,÷ÕUAEFRû  7Ÿ ¨û:>endstream endobj 115 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1401 >> stream xœ¥T}PTU¿ÏgÒ*Ò›jÔ÷Ê GÌpò TJrÄRTòXÁÕÝ…]@>•…ÆQÎ.àÇ€­¸ K,«ˆ" "hfE»*=¿ÒÇ´pÒœšóœkSƒ¨hNuÿºçÞ;¿óûó»‡!Þ^„a.|î‚!½»@Ó•¦ûs|,¾ ø²àë½m8wjè~ƒ!½ËOoHJ6¦¤®ŠÓ$$j'{;ˆy$ŠÌ'’ÈBMÂÈL2›¼GÞ'‘dQ‘ÁdêEâMRH33†ÙÎÜóšïÕÌNd Ù›Þ{|^öÙâó•Ï-n 7Mqª'xð„‡ùUÆ(™U"°Y¸³äówÕǙ͢k³-NTsYI ÕVÃ.©‘¶ÅöG8ÛU µµI%Åâ ®çüÖ/l©Q"5id@«u‚MÂÀ§^q*ŹɃns\Æ ™U ¸N@Õ¸»”§ü¸ª¢~=c‘C®§ýDºš ásÏþÜÝÑqölÇÁãçÎ —TŠ“=8ö1m«Ìb"5 Oq‰áöêe6ì_Ð_œðõ^›iHR!íIv?-i ’!|}òÈ·'#&ˆœ¥^}¥UìÏø‡9(c¹Ì*K•‚ ¤DCule4ðÔ7 ¡ªž1È]n9ZT$ÑØå²õ ÕºàS 's¶¨­ÕAŽ´œ Å{¼è°Puäék7ιå›gÌûÚÑæa0PÆð›,¦a¤€Ì… ·Ek¼3ðU»kª2§-Œ6%×€ýæZ‘2\ŽîQ™¶…öGXÒ_ý×Uÿ„ç^9ƒoÉ(³˜®0s6'ÔÖ [¢Á—¸>]Æ qJHûÞ>^¥é%òšÎžŽsûõ—œk6ˆ[b’4À«áx¥ôþ‰™”W„‡üž±ÐjnjX¶f:ÔÔˆ¸gÀó÷V.¨Cµ½Þf¯‹õ°ßõ/ Ç~Óô˘&³J8Ö WætÑKGÁô${ªË^]zÀ*Âv‹e§µÄR¥Àÿtxõé5ºÈH«ÏDÞ½ÔêÚ±SªX×´¹øêÏŠÏÑ䙥ÐNÒ %>=1#¾`ðQ±uÛÑË…¼Ezbßs2jo³Š‰°'sGZN¤ä‰+âr€™uºûè¾?Ñ¿¦lKA±TX`)€<«¾"³ x—}Oõù7`EÅw¨oO¾„#÷õ”=‚öw£¯‡i¿ˆ;/°J(F vÔ£oÄ-*ÐÁ£©Šº3 ‡ãˆæëU½‰3Í©fiýòóZƒ°–¬‹¼Å-Ø:O¶zàTÎÚº„ïuoºCÜ-n\àfÜ2Η÷v°ø&ŠB™¹6§øÛ]]Ýuön´Kå%%–2ëVÓî\;ð»Ý±×è\œ´2?9QÊÛª©\ | Z¼¶$±"YÊß°1  /5”f¯2éc †Ÿˆdú£?’o®w‡¶½V$ê,ê-ú"~|i)-Üf-–n4 KV4;ÖÜÔÚvxeô¢U+¢%+-\Go˜¾jtÀÌà ‡4¶?¬öÃá„ÌÌ'œó¼˜þÿˆ¢ë=J¥ç$LKɬ2H9.¸LÎdÒé&—Ëáp‰tõú·ßƒ²@“œ¼F©`,lË-Í)KƒàS“²ÖLýqdr]’ÚG¿W'ÃI8ŒÁÆâ5ü[hXëLŒ3¬MŒÛg¨kpî«éïçÎTŠËÏ3'”`V™‚åBÉ!¨?¤=ÃåÆƒ&¾J¥>øÇЧžGV)Ίû)åŒw°m—`;ïXoË0ægænéå¿Â>É*ÈÕTž½»j{YI±¨_ðÎ0ø$äo3WFendstream endobj 116 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8237 >> stream xœµzwxgÖýaÍ„"‚ÅÄ6-t½$!´„Þ{1wã‚«p·å"«\Iî½ÈÂr“m°M `:BB ”Ð6!äŽx½Ùï‘lö·ÙM~û|ŸÿðãGšWš{ï9çž{Ǫs'J ˆf/^1vŒõ¯¾îDÿRaI´ƒnBèÖ9£ïˆÅöøyO”ö8ô&eýY;sÛºYëgmø(øã9¡sÃæÉæo_îº0ÂmQ¤ûâ(%žK½–y/÷Y±u¥ï*¿ÕþkÖN0iò”©ï½/Ù¦Þ¥æPc¨¹ÔXj5ŽšO§P¨…ÔDj5‰ZLM¦–PS¨·¨pÊr¤œ¨ÞTª/KÅQÅP[©7¨~Tê*‰  ºSÛ¨)1Hõ Þ¤zR*Êž’P½(VÐEÐUÐZ׉P)­ ·àa'ŸNŸ 7¿î¼µóq»vu¢¢lZD73k™â7f½QöƯ]ºœïªî6´Û­îñ0qb§ò7û¼Ö³SO]OÞ~¡}³d@¯î½N±‹Þêò–‡ÃÛr‡çŽ9N§eNgz§÷YÚ—ê«~Ûéí8Žáй¯¤ã¤ÎÒ8é‘~Ýûåö{Ö?°ÿ§ý x{Àé=îxnà·_ ’ Z4èÌ ¿½3áêÁ ›†øõæÂ«Ä–D0ãz3?ß ¨±Ìò,‹Ø”ÎL{«f¸Â&­«­PÅô)/ F/òƒ#YK·Ç/ª×_„ݰ.¶—)ŒþP•½[Š«i±ÅKf¶Œ2ÛÆûÕ…˜$ã,qÇId,.ÁÉ?¡™lȈ“ƒ"AÃ%‘ý¦0KȺxX*ù[píÎ3(¸;† 6pºXPåSúR)&ÐE!W*!>‰[?Ó«~Ý¡à$yH–’‰d<Ù"ó-dGy§æ“ý‹ XxËAògðÝØó4dÅùÅ …‹Tr£Õ§ƒ0;µ-ºr¨€Ãêº×ÉõE§E7¯þìúËOÈ¢døcÒY*y4 \]ÂeŒž°JW>Xu˜KgÆ;ÒýãÉ3Ý= MAÒØRЂó;ùßÌ‚ &~±IÈïµôe3r@ L¡¹ÖU"9‘Ù™DhW}§ƒcE­N­$YHrŠJƒRŽw¡Á.D”D¤£Èb`ȑؒÚ^vî/y"¬³LgýËè¬v µ“?@‡â2\AúàX2]Jzý½k+¿«ODŸÂÙáö,ËšÓ€#–zoZ±|00b¾¬=§ÃMáû·°ð‚ƒäÿæ–ÌýÏ9äOÈhÏ1v’G•qngßïC˜ÃÉ[¤ç£ÁÈH%7¾„¦=Æ*Fþ,éOƒ_d ,4.Ö/ȘYKî"]¿¼uù›æ k¤bË`ÆÓf¬Ý)À¾wqƒ G˜ô&!ö½ÆvÄyYÔŒ9v!¢2:l™ qj'¤áý(Ço’Ô„Å!¢‰rÿáÜXLµQŸá(¨XUH¤ŒIˆ2»ÖÓ|ó}:dùÅùw$Wñ}ü–ÅN4‘ZqdSKɾßEz·ö€®á4Ú8±ž©Î©—âhúqóݯ3t Ñq*Mx<3¥1ÆbSnMÕNruxϋ݈-ýÀŒ̸¿-ÌU&hò×-°­û_ÉPé+Öé¯Ánh‚ûí$ô¥GB^5wè³;žœà;‚›ˆéíwáp0­,$c‰yNnä'•Ø×šB>ÁHSØ'’»èkX£òf4ÌfÖù¸O›ì}âÛN•§IM&’#¥Ä‘Ž‚äœ4­¶¤„Óé@W\²×uŸ¦¤÷þÕ‘€êø\©oG¦k&#¹º2g^ÞÉÞuåMw°SÚX§MÌ0yV"ýÙFè5ÄÇq*eB¢RåYé1À±ç¼•>…2©änMp¥â«XFl1É̉ 1óïØôeÒ]Ÿ:I ï,›'ktÏ& 2 ¤8‹Þšög¦½4«Ôà“ÀÛÖ­jè{z¹—t!-9@:Ibಡc ®¯=ýëý±dÈ¿šÕG‡‚YB&‘qÄ•¸â2WH%1—à›ò§1ï(7ášqŠAðËìmâL~‹Íd . i¦ô¦ddß’*šôx_±òâ9îDÈ*zf€§×<¸_ĵ“O͸ÓlÃAË]!o៲õºœ«\™Y䣚 žà 3ÀÇU;éIiÁ8úO®ú]Duú˰ vÁ¨³á'”þÐØl!v•˜o‘eͼ]ó+×Á÷¹ÎŽ¥qPŽ™þ8)ã T²‘&C^Ñ…Ì¡'lœ;k²ò@ ‡ß¶¿s Tã¤d8= ÆàHNqöVV}ʈñïíúÖ÷®eÖøõ9×¹rkd€'xÀí‘•Ó×õí‘©äpÁÖ{¾»`7\o¿ç`ú•ížËä¥|o³ „ò𛵣hÏy«C SoÓ„A(lÒEµuÊMND@¢Z©”¿C2Ig¬QätN廡˜3Óš•ê0wm€­WÒg!U‘çƒ:¦ÇêRò R³R³1Ÿ-3žÄÎüv³  ;ã°;B<†CÙwׯ\£˜ '½¹–Üêòú@C lk¬ËÌ‹Kï>½ôå•©6t°“á—ÑMùp–3Ó.jO3¸Âxð´^Oÿq>R±Å«-¬b«‹ýÞe‹™óê¬aÉÔÛ42Ø›umaÕkŒ‘°  N‰C²‡b2Wcu»ÁÀ™émšuêP€mQ5@¡:;.M‘1‘¤8ŽDCJ.è µãD[”°FëÝvâäªrýОüꘫO²æA—ž–ÿ3Ö;>% ©rëKNy oËJnŒ2£Ÿ±üÞØûöÍW7>ÀÉ.™$GðÎ×lª{…ë`JÏäßYI/QÈ}•ûÒ8t¦¡v{7xì^_¸˜©sœç¢Ê+‹ å¹)µ›´ÒŠºƒ95À<á1NêEKöY§úXµ(`ÆÖµà¼÷(ä,' 8rö7–`’q ;„9{ëæ nu‡Ž5ß婎ϯRü;ùAüdçáÌÌÌ#‡oXÝp°Ê‚ÀVÀÖ7œ‰”LΓG¼ø¿@ÈÙ42Ø ç“ÒôĬ8ˆw ð€p«Õ·Íu°«ÝöÒ«a{jÀ^k˶¶.³ —× ±ãÙê]»–•›ë› Xa¬ÐC¬ÑŵÁ¢TÑ—¢X<ÍqÚωV[˜îYÛ Í|u4lgmP[‘¿­æÀÒÇ„uEºn\¾L½ÝjßËufm9TA³º¬ÍÈôÉyPƪÚ3_}=Ä1Sž HLŒ ²úöjíq*`·¦º#€H]Xcy)?Ј^Í6.gðÝYü²ÝÇÙ¥õ¡‰Öj3ó+0’ƒaÍë/÷é0kÑT3 ¶8GG2zRÈ¢ % Í)Ü}üXfìƒúà2Ïr7ý p/õÒm›·û{ú®†Íà]Ú[ z(fÄ;0£»çÚ´ø[kCÆ6D$'–ô$3µÍgðÕôNÈÿ«5‹¼UcÀ <`Ú¿«4_,²Ú*Wcñm^f”Üòãñ.[~ö°¶^©Q$8ëdmõ1k £ 4ê”øÁDãH„hTf«S!Õ©¼J¸¶E½®FŸ@ äûàðVcJ\¬¯"N¶*pÎBH0ˆ(6§f¡)( —Ålnö>t¶éĉ2NÌ/“›°öAƒÉêôÖ>ˆ5YÇ¥7p‹“o6É:«ñ®ãÜTŠˆc‚‹Ã+Ë EÕ_Lßý!éù.¡È›œä9éõx(2Ø»»eg'€*Q­T¨¹m£Ä{#á׌߃¥â—CÛyÕ¯’/»!D…e›hTA0dÚ+¯£¢ƒÀym¨=¨«…Z8Øá/Á )_¯¥Qñ÷Niqi‰Ùà”úÌÔÔXº;j[/Š:XÕ ÿÂ6«| ¯³Š/ë`&™& Ð$G’ÀÖÓŽb~˜ø^FA³ ?5 ùÞü;lVŽUð˜¼$ˆäÈ%‘œL´3‰ÒŸ–4`'`P$"5­Ýå †§Ø (áð–¨—Ú…ˆI—í.„†tutL'¨Û}t ÿæ1v>C~ï™ù_^‡8ñ§·Õo)_mýŒÃK$? E+²ÏÁ¾¦K;W"A- ظY¶Å àòÐ]ÁMªÐ ºÓUûJÍ»jB4ǘ7çD"_›ûVòS+…cÇ&æj´Àý«D`Ðhv¨´ˆ`ZKþ¤EtZŠV“ªàG¶>rÌŠ×j2€É‡Œ)®€Ï83í£Ù ö_Ø óiõ3p’¶N§Û0PгŒö•·0ñ|ˆ t1MÇa·M;y–MúxHIâvkDF=”>^ýˆô$Ì»ƒHO©ä9éý|8Ò(އ’ì$]J¢Z‘¤æ|…XîÕa ŸÀy¨gÄ–bY¹er¹àø3Þå™Ðâ‰XÜBFà$²€Ì%£ÈâF\q4ƒspŽÀñ¸™#ß’ïÙ¤÷÷˜¹8ø‹[ßáÀH)&oO~W*Æ“6±Å ·3ì|þÁwBœÍÏf‘¡¿ÿ䓽úH.àâ•‘q„†WTʼj×|‘!°’Ç>ŒûÆ1ò܆ÚU%Œ«mc>vaåÅÇç$ñc~ KúYü,K±AJŒiªÑÕ•AÔu¤i¾2m·Tòs*¿‹­ ) ô—ƒÍ•¦ÒNÌ·ÈÌ–1•öÇ˃ÏáçÖ”;H.áSÞ‘%½Ì‹ <ŽÂI§/ž¹†ïÉ”ÍéœVŠœö¹7ÙÏd&>™óYPåÖ4œˆpòøþSŽÌº$ÍQŽÿ2Š‘<¬H®N®ô* Îö_æ£õ³'o›žvp ·ü¨êœ¦^“ªŽ©ÝÙ6µghu9hõúÚ#æ­ç¼ïƒo|óv’J.Á“ù7'1ž$®ÆÂïùP[VÜ´<_pÞZL/k^FZór5Ëj¾úÑ›'.L ƒ¼`® ÕLy¤!002=wŸ“<·Œî\Z¶m[hè¶me¡UUeeUœØâf~j)ÎlÔ›0ó.fš„–Ñ–©l+Š"l ±|œXP‹# Ê![]ª9„1­eôVˆÀ¹û‹šôOa?ì‡gÐdÄ;=òwZÛ: ¿85GW%€# À7ŸL´m;Ú\17 ^œ¾xE”Zí]TC£¦Qý;QžÑçŽ]íß¼""¢”œ?]©=¥+…*¨ÒTµ]ç2ð»ˆ~•¬#:˜à ºá5U±Þy©¥¿YPbÙ(´ø›l~CEÕÚö´uÖxµƒnÑ”C$©jYغݑ¬äuŠ|Ûh]uL¶5ôð„°¥ã?³šYOŒi}阑¦Êƒ"Ð¥¥å3bËå~vb[Düß||ò¿¥š±ßÍÌÙüê±ËW]¶•þen[‹_† _öço²Å'ödï¶jMlƒ… ü\cð…P¨’Ô 2¼ÕÍ‘Làã4©êtHsª> å¶ε¡c‹Î­íÌ (…\oãÇŽDÚ:“Läå½&ôÿöú+š’ë…έG}¢>!òA—‘š‡Sù4G|¯5½íE§¶W­S¼¬;ý„‹ŒèpËþÐãfŒ¸ë ù•_›Xì:õ ¡6n‰öñæp-mPÔ&׃=¾¼Ÿ—®JKÖ¨A•" OÜ>ÜaS†si’^ j` )ZJÒ‘”Ÿ¡Ó§§r9… Go@ ˜6eFzé<`=#y >°4Ô5ÔÃ+xÌ‚G¢Né5zM0µE¦²²(“o¬Oò¦‰†cg©äWdžþˆ«»á¥¥Û±¥ÿ ûZì&3^¶þrü†£ø;ìéÐ}[|"ƒ‚ƒ‹‚ê ùÙééœV§ÕjÑA¬Ò/yö¢ÅÒøxPƒŠINS¦åÜú»p¸æ­ÿæ˜-sü€·î7šì›ï¡Çƒ÷$­èˆ7Ø2ÓñÍúÃeÍŠ­F.Æ6û—Å «³vŸvùd éEú–K%/‰™¢ð‡¿¡#JÆýH„œ¤u.x­ ßÈ`Wr…]§‘à(f®Õ<¹W¸›¹b/X`#¬òXº)% l•,å?»*8núáâ_°YÖmO)C”""už²„ ù7;“H_˜u6/7#ýäƒî"yôD óKúø)¼Ã$Àæýûa_6w˜†cúc™GSwäßÙûi;\>?E&ûæCa{±|oØ!ësšÉü&vSµr'1g>k¾xéÜÚÙ+<6.õáŒ1ìW [à<ó`܉1CÞ›9:R·¹Ù™Ë‰o1E1’gË·M\9´wÿ§óž£Ý·~­—ïólæ"J£³62C\Yì1­2â@,qš9cíÔ‰³?½u²æÜ·ÚÒ_ÿàö~5ý  Ç=+l…x‘õ£IÜÀMË£Vëvq{3«ŠÌ¡²è€DyGݾEÅØý¤’—h$ôãVmˆÜ¼…sÛæ 3ÒóûaØ™“üzššwœdÈ›²Ñ° üÏF6À!8Gá@iCÅ¡]yu°j·mÎõK]›˜)[‡ç¬Jü_î¼â*^ÌþKû$×þ ¥b5Y]Š3¬'í(0:H~þãÓ’‡­BaÚ™ÉI¿ò«o©R_^Ýá4hµ\†6G—™a­ŸËè†K„|WK76+#3r™âÈâȹ\¡äH72ª(ÒÎzeCé2h¢ÞÚIz“¾Å‘ȵªyæhÒupDôO[?þ ¼J·qÞJƒRû;øF \´ì¹Ð&÷æ¦gfs:V«‰]¸ÄÅYªPh4 ´1 ÷úu¤_EŒJƒÜ¯÷yÉ#^Âbÿì.øßho…ä†4Z¥Î/ß äÀ ‚•¥5 ô6³ÄíD¿Þ9«+¹DetCdfL‘âõwmâxK"KÞvôÛÈáîø¶HŒwpéIA ± —²'Iñrká1Ó(^)䕘É[•2Ú¦«m¢zä0ªjÇèqÞAÈ/°8³iyVú19‰YòXeB‚Š#ûmVJ¨@í$ÏJÌÉOÍÎÖÛzˆÑâhì¾…™·„ü¼ÄÂ7)ßø\ÞôãÔBWX ³‚ÝFûÍI™ïÌԱMÓ÷¼w)ÜÚ¾.ÝûCÍ…´kp!ÞäëËL‘?ÊOÃ8çà|æÑìz%˵p>²dhöJ˜‹`Ì•/Œ¹"`³­]óyGØ …¨çϳ¤Ë…ØptxŸÆ¬b f¾Á¼× À ËB<`éÅ–.Œ[¼p<øãOà´”3­´·*~,çgÝ}ÐßµïŠü豪œ«g‚«øüùÏfûCÏÑå~Û–Nr•}ñ Ç wú(K¦Í¤ 2¢»ŸØ÷‡ÛÅzŸ+—¹x*S¸m +Ó‚€I˜µ„ú«„D¯?]H’ë^ÇŽ~t³ù³ƒ• å4t”:Ü:î*´!‰ª8H„x†Ðtû„fÓµíâÒ®§‡åü/ÿ‚ê¡Ú L‚J'Émê¯ êøî1‘\X«a=0£Èëˆà/§Áû/h×üvézòÝîSeu)œ‡:1ÂA–]œÒ1Ÿ¾.¬6m}lú×µõÖëÚú1¬–yloZ™ãÌ0"ZÓïÿ$žG7š?/Ú©Š.çÔÁ‰à 1éQÆ$•u{!g°šˆþ³bs]:O6t{ƒ¢þ]%eÊendstream endobj 117 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 278 >> stream xœ ôþCMSS10‹uøýù`‹ ‹ ’÷–þºRS34OÄøˆù‹ ÷¼È÷˜Ãëá÷ÚÜø7÷Úò©ÎÒ‹Üîûâû#û…ýJá÷Ñ÷2÷PûÑäüGø÷˜÷$÷ÍPDDKPû ø¿uÐøïÍÃÚ÷±Úøeù.T¬TœB‹û4)(`™a³aµ^·Æ}àv•ˆ§rŸz¡j‹`ITI0b1•Ò7|:ãTÛ}Ê‹÷çð÷Ìl»u£\½j”/¢Q™{m¥„‘o¨‹·ÆÁÇçß»jl° 7Ÿ Ax¸endstream endobj 118 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1540 >> stream xœM”{PwÇïr$9," § ö"µ£¶SGPßÕbm‡J+8`ÅZy‰A(¢È›sl$q€4€@HCEÅA ­ø`±ŠTªµêPdÔúè^ú³3è?Ý¿öŸýîîww>4å"¡hš–…„N$³èmÎ)¸1àæbœ+Û9ãáô+Ó:=¨‰˜ºqùŠÀ•«½çç¿tYE½CͤfQÞ”5›r¥¦PÓ©”'åEq”»„¢)JK/¢OKæH꘥LsÓåC‹(¤D­»ó8p›CüÈB‹áÎÍÜ‘J­ñ ­úÈarøÍˆw~jf”?°qòƒ]×í0t´ºÜæ;äQ*‹µT§/.SœÇiRl•]$ ôƒ4>ªpHáãä]ú~½:á–¶¼h¢$Cþ)¨Ëò¬,éË9ô"ÃRr\æ.d4ÿù 7YÑóo9°tŒÁ%b/w!§*EïáGåjƒF@{T‘V‘±T¡®Ë?&@°9wXAÎË3!·ò¸No*ã;z/—Úá4ì‘ø}ðUM‚9ƒ70í‹ß–¶(Þa ƒò”¡çË»H ÄüÚÂç”Æ[²KY8Æí¯P5@+{õfëáÁÈMKç-‚®XÍmæðíµõY]ɰÕgÃʯ–/YÛ72ÔûÓSÿyߢß¼¹Ž úZQþ¢×Fߪ¿¬ÇÜðáóˆGОÐèeå}JE§¾üT³Íiµ{UªÌÝ‹_~ŽSQñdôÙðgÃDRË¿jk»—ÙÛ~}„!ÌŠð5 5›,µV[Fõ^=o?3XÞ ìÙ«éÊì]û÷*cUÂmª €¦ˆ …¼ìãP5¹¼½b¤…ÆÑaF¬Ç•œƒ0b˜¼Œé¹G!;Ÿ'÷Þ|#ÃÎUòÈ]ͧÄÉ&èê€V躄 +Sä«ÁÔ¢‘¯po$¤JîÎOq ´¸¹RÔ¿ƒó5$endstream endobj 119 0 obj << /Filter /FlateDecode /Length 6068 >> stream xœÅ\ßo9r~Wîä©'ðpù›¬ÉasÙIö’¬OHìíÃX’ÇŽ-,YçUþú H6YÅfÇ>ܱÙd±XõÕWE~ØH¡6ÿ•ÿ¯n/äæpñáB¥_7å¿«ÛÍß]^|÷RëLÜ\¾¾Èo¨Ò^ø 7>‚ˆ7—·?Oz»“ÂIéUüåòŸ/¾{©}Õá•ÞÈÍåõÅÏÓOØØH°ÓÓVŠ • ÓÕ\˜îÚãG|TR9m§·Ø6Íô>u!• jºÙîLð"J5½Ü*!µ vºÙJ¡‚rv:`S Qj£¦‡Ô³4ÒÆÔ¤<>â£2ÎMØ @T1¦ïE ÌtLóƒè­ÂÑ™„WZ8fþÕ(=½Ü„ ðÚ£ vJ lvÚPRgYhQ>£¯’ko)ÒYrÿ‰-¨0½AiȨ•›ö[ïDP`Q\8 ¥PZ(9ˆ<Î*‹(‰utÓŸ²˜#ÖøE.mÀYÕܴΫ’š|D€µX“ßâ³—ÒÀXZ(Л ŒŽyz—yu$Ø<=ÖY¤¬¢ `p"Vƒ0 §klƒ\„TROWI@Rz“jÑûé6«‹TàÒ²{%èén«½0QNÈê(b´Ó§­¨LaÚÏ_‹aúD†ö€ÚAù@‡†rPRƒ¶ôñ¦èºµIEð#"}¯üêé[oªð°ü³0ý¡Îø¿ˆþYb¾m‹'ZÙº¸¯ÅnÖê91Àôj<ߤZ2*ÃlyýTç6ò‚ù骵 ªuÁIº.qú”d´yäAÊèq÷%ó©¢ó>>ẊfÖ1XjiïÚ‡vÅá4„ó ËÎ8-to¤_lwV!nq\ƒ‰}Á¿[é§ãSÛ€ÉdDã‹ —6(¶r·Ñe7§|u¿Ýö¥)hµ*ü‘ÑÆ/br3³b^ç¾°®ÆV*y©c›µÜç ム¨lYJÙXåÐaœÀÊã8Oiu,Éí‹í΃Åõ[!ŸqÙuNÁ¶¤jd‹{ſŽjoù>Mºl‚б*ÚcùbVˆ:gXPÞâwÏ FÙ3yzÖz•PÞMd V0h~у*°„ùô„A)œ@‘èNÚÿ ¬Ô&Ûÿ(¥Rz°É‚A+v¶ó¶Ú 6ý¿+İæWGúþÔš^5E¹És0Ð<ÏÝþXB"Qz#¤•zSB¡ï[L7¼&ˆ›^Ä ØÚ gtT›ʪOüÀb'NgC[ü×$ïnñ“P@ˆô¬·ÜIˆÚ‰ŽMàc[±ÝE£SÔò{böil‚í'Þãlã…´ñ̽ª„4¦R&m÷)ÒrÑÄéÝÖ9¡§|¸ák…ó7 µéÍfùþÙ­˜BR«MbGo„U_móÓ(ðÇ ™!LÅ-øˆ¶þ 4R&h¥éÝï@[¯:WaP…1¯jcl3¶Ym‚lsh]}C–Ïø‹ôMAø˜€am¼l~‚ªõUnn¢!(û‰¼˜ÕÞØ~" ÎcÍêZ÷ïIH“Ú€RÖÑ'¤h²çÉóÿPõk[QfïÁ"æºÉ7G:#¯ ¼‚“ ²ˆq™~Ø›† €ù#dñ÷wó÷Bo&“ˆ=#H2 ñ†ì¡ëܱ—}t×Ô1ÀÂí¶1Í:C+´õÍ×y¼I€UyX –ޜќ·sxm×Y•¤S(U‰L’êØ«ªŒWMåÉêSu½nêºÒÇ¿@\Á¯DWç)—p/E¸³>4Å_ƒ´ëÀxö¨«0i»(|3Þh–àq7ÎOûútWŸ>Ö§‡útSŸ#¢Ø:ýjÃééE‰:kNé%B|Ÿˆõ#8…¢Ži¸ôåDÁkAŠ©3!†l„³mbÚ¼/2mã¢e±[ܹÓÒ uÑno²è訚I]FI»¯š&=ó¤ÑYÐKÎôÃjaƒ4Ž\êÂã@+¾«O×õéXŸ®†ú¡Dð¦Bþ.`°j³3Q(/ ;d¾(Ëð[Þ4Nˆ“þí9%A¤2¦&nÐZ&âÛ][þ˜«ˆàr ˆ–Þ£cÆ•cýÞä¤LcÌò\‚‘8ç.—ðOÛ $¸B„$‹jB¶QÁztV;ÐÇ9Š˜>æ_A2ò–¨Ç€ VVÎ0±4w¡\oáØD8Ï#S—ÎC=ØÚÀ=qïGqGýC™‡ÏS`ld#üÔr5WŒãªÜnÇxã—‘ñf2ø8mƒˆîlĬ€í‹yIS¨¨ÀKëKZ)ɈZNnªDûŸcæz ¼d 2Ø œÜs3sÙ\…C>v;®ðýãXˆ QœV„Èès‚Î8Ñžß77º’Û !×N#Íg•®ÏP´gJý¹bd û¶ê –¼¨þ€ÉØ1ýv»õÜÙ'åuBʈδ†¹tlÇÙ§ô_f³´x2²¾ø¦|Q©³p .šá§Ä×òÙö¨ÈÚ`"ºË¢.á71—\”þfî™ÒÎdÏiÇMöÅñ=Ü’ß ÕóÃ>o°Òeœ‹Fçap­&é-¥þe»3N¦œ5U×ùg¯ÌôsHeT§ˆ5»'(0Y÷‰´Àî01±ò•—ï* †ñrS­BRß"©¯OM‚7ùg›”©â8šFjT#Ÿš®ÓLíä}s uˆŽe+ˆmXÓvÆ=SâÇï„.ÍP·ýuœˆNÝY$¿#-Êš¤ðý¿&Õ®ªôãÅå_ý<æh ·–J1/O$Œ&<"Íd³ò”ohÎÿ¶E÷¡Ì=hFžƒâŠ×$Kûjè5WìÜuþœ—á ÙIžFÈÎdœFXe Ê—g YÊ`–Åñ/ÆÊƒ"0Ê«œ³CybôÈUëšXd*bƒzG5d]cÀj”’åÒ€[ ÆÈ¥eЋuZP¢T«‰K£ÐBt)ì¡$Kô©¬Ùn$Oèþ9À$šÒ1-߆ô@f´òëWEðpú¡„ZÜä¿\¼C!V–˜àxÍÆìJµÍÁäQ¯Ìtœ“Å&v!5Á}1Z[j&×tØß´]>æØˆ‚J€5ƒÓ™t¨)å!ËÜòq»sˆ1œ›þ»vJÕõªùªy4\Ÿ'ÄŸ±ò¦ã¯ðÓ˜æIåy@mÄöÜtzT>M7õs†–#|qEwÍfÑŽ¥ü|%ùº TœÖ‘'!nËðå2_Ù2ÚyɦߕÌuÊõ° €{Ž1ÉÒuºùmH^OÊ.QÈ»,JéÎñ.³®Wt«§˜gäêpdAÒŽæ›iýЯmvm`­m—[§šiö~dfŠûJú&q+!·œÓ ]PtÀ0ì™rc5ƒ6¦°)‘¼¨g+â\.W ã\"¸‰Å_Ñ5¡>.Ö8íÐäDœÀã¼Êþ9†bgœ¾·xø9I.æi¸Þ4H4,j!zš:À§Ðø/jG‰a¿Íƒ4Ò/½ɘçéj¡uÉì¾ÈcˆÏG3­+çYRªMŸD¾]H^®@X–WQ•Ìáó®‡-YS|‰3*¿‘š%ü*ý¶‡jI×÷¯ÈÖè#+¢ÖʲgF8ƒ5HHV÷Høc©êj8-'—I¶žVo<µdÄJV™HûÐJÍhéW[™Ru&uð|Ðu‘ˆáœ+Ø.«A*rr’ƒ–ý\}µ('K¥^<ÃÆìÙþŒKø«Ôs[^YV¬z=´3«Ô-K cß!!áV|y…öÇ+é1Ke…V˜;ôþc‡‰±óN󯚡>`Th“ß²zUci%1!ÐoHÈÞÿ\øOí>‘Ö­ƒQêér1ÆÒ:ÅÁèlT_Õ?(!¡Øˆ¶© ̯iR™æ‡ I4¤B„¢áMJû!Av±Ë‹z¸Ò)C;Æ·˜ÔÉ òðýb ž#‹ìf¢’*×»ce(3¤ë¹M e­¢©yZt×LêH/¼ƒs!@°VU¼@5ý&Ø®Mé¶‘sˆÏsDÆå ~ÒR ZNÊÇÎr;•j+MÊ€ymK…ÜßnwNk)yz^:²¥°ßžD}º¼qUŸÞ þz¤¿Ûþ8ÕÇ¿¬Oß*ǾìùÛQb5 ÏÍ|ã¿'åŒXEJ1PA»z¥dåz;¬JŽÝ /»J|Zˆ Э?·Ó,—’Å듵Ž4Î4ÜQ‚ï£A#M÷ågL‰äGô8+ÌF&Ul¹3Iu';(-7d7 &½ãN“â9<,§8k}GksF¹Íó’yEìå…bëPSf‚ž·Êf9 IÆÌ"ÿD¨n2mb˜Ç•nÅ0çnûÚ~®`ÉÒÃI$ϱR‡ÜUSî¬ÕéŒÇÃùçJ~ªÞvÖšœ<½ob]©*¾gú]m»À¾MÔ4þ¢†”dÐVtî6÷¡Yj-Ëø“&D¡(º§ðt;R­Ä 7Ÿ'ømpù:ÿ’Éq+´z˜ ?¿8:0Þ=Ýña-G|=úÍ_[O|¿iüµ|çâö´ª€‡¯¬Ãï îçþö$Ž'ˆŽüx$K²uy!À8p<âjÅ”6àÉGVHd°¬H­•Â}¦b O#7²ýÿ¶bMûEµÊibz~ÊêtØö qt‹Î½@©¾ª­HÀX›²#Ìú&=§EQ2IIÕczŒ*Iƒf¼g®eÙi­…³½Êw|B–ÔT§à¬”Õ‹z…Ï/鑪¡eΆ'ÎV2h§üßÌRÞå " `ÇPTÖícåçOwíïZ•oóC ”oCùX‚j2ÊWÔå7¤Þðþ«ÁvÞ~{añoÀWq·ò1ÎÀ{倕03edÊråèÖœ-gÇݸ¨å%‹bÍùÑ©²äÿÆG¥3º!Ôm”úŠiÓ wœëÞ» ޝZ^Õ{ÌÂÀɦlaP©Víºþ€ÄVÕL®·˜ŸÇY¸Œæý<è¡Q.v€ÒÈ5F© ›IÁ±Ðz%YR  Ρ¬Üÿd@AøvÀ­;YÍOªrW©…G`]Ø·‰nG®Ò ëu—iȇ(m†ýÖ‹`OॠAÛ¨W.XkÍÀKcŽßÏŽ—NíY}QÕé6¤« @Ĉ‡Ø¾œ­c£ÙªÁ\ͤ7(7<MTîz¦•| d‹ûúj­ùštÃAê×v5µ£€õ!¿ˆ?¯R¢k…ûø¤òûbåeÞ«x [8Âì¢÷%eîø˜2¢¤Y‚P¼oe(%&¶¼¢ÕH,yè©íáËš?ÀY]NUHH‰Ê•U¿ÜçÆåðÎ|œ*£hœ#OôÅÔIž ¦t‘ÓxœG‹ò¾2Ðù°EPFJÀ2^M´éŒÃß<½AYÊ1ÿMJÍìwR ˆ†ËàvsĤŸ¾ân6N„±¸¾Ÿ¯ËuO™H@×5½k¢GÌ¶Û ßT”˜ã3Ü´^låÔ mMt·7žŠšñ2¤HqÏ!iÊÜxå:õæ³­år]Æ4UÊH5`QK  4»˜d®²[¹gã@—’ýe1•aq5Å$X§æ€+ý¥8Ã~Åè?—Â;ź%=¼c‡J#Ö+õ!G+¬L”f4+ÚMCïÚWW ‹ò©q™8¡r–›uV§¹‚/ñ#¸È*l/£íëzËÂ3âe¾£ Óïë6iv¼œª\ÀÜÏά¥¹YŸ¼/Ø$9ühhÅJæøM“ò̦ê}üõÉX)‡sDAB¤7 Ö¦ûQômÐàßü$8ª®| 9< Æ}" õù€N{—j õéÀ¿\‹RÜ;í­Ò,#íÒœÆâ¡vz­È:¼R3C—ËãKYà£T„CY!¬I¯ó[^Q«:¾D‚R¹hÚø‡4S æÞ¤[5v³8¿ ÁÐ§Ï ´£Î͈5Sû˜{Ár ^BQVa5Û ¦¶]5¶B*V{°kÃ)æ2¿Þ]úÆŠÑà ¿ÈùœŸ^Ïq` äü–\û‰‚ù=«õ¹Ú= ¹ ®»˧ûQh.úȉ·QBëù8SÔñm §ÖŽï¥”øÕl ‰iÆ„oÙ õP ŽL¼K™áD KÐéË•Õj–8 ?(wÎÑ¥ìÌí °¤zq4¿ÀnÀ¨JÂ4*µÄº€ÕzfïÛñ)š§X\Ãè( œ´®ªöÛ¡ ù]'<ùn'`cª5ÕÓïqd AÏ‹=¾Kc BŸ°8pµª§HÖ Œì%Uî:kjr2¨Ÿ…‚kÉÐϲ´&sþަüÐøÕWíãšòáQmZý¼¬9OÑôC!ؤ^!Þ3•Ë ÜŸ—È$|jC©õÃt»Ï±Á¦7Š®óm˜KçA¨¦È]ŽšÇ¾¢i~s7åt©Žsñk+Y:]îô0ø+Á¾' †L 3:טà}‰Í-îù±~vü0ÙïCQXNçû5BªˆLK¼Ònåv¾K´’z#}àå>åê…u˜>ƒ`Åaƒï€!cû'‚';ö„J¸ß’moÍP/†t«phgÌqpàÖïÙ¬ÀfõROìod¢e±tt¤€KqQ•ʃ“U¿¶-GËÇsÕ­–óH$K½#5Ûýýj¥‡³êŠÄm¸¶vyC–ÃÂÖõ²ÄÌD;¶öìêîá}ͳÓPÕÀ¶¿w>Ÿ$Sqœ.øÅѹì5,'¢†¤e×Y©Ò0Aª\ˆ¡ìʰ3¹*’š…zÐ'ßµ–¾SÅÙ=Œ#Ʊásøã|>ǘÍÿ¦VùZKuŠ›kekS=¼îËgIž£z¯ÿpyñÓÅOÿ XÖ«$endstream endobj 120 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6517 >> stream xœYw\çÖžeavìÊ:êI4j¢ÆX¢±Å® (Æ‚]±"d) ì.½íž¥,½ïÒ›"ÆŽX±,–¸Ö‰b4‰‰škîó’{¿ß²äÆïû.¿ùƒwçÌ;§<çœç¼#¢¬­(‘H$™ïìâ2a¼ù_>‘„ {^9Ùh{‹ ·z[§}mñÀtèwº?eþsžëç?ׂ€…²EAŸ;†8É·.ݶÝ9|ÇR·ËÜ—{¬ð\éåâí³Úwò”¦›6ý3?5ëÝÙïÞ0fì¦÷Ç}°e¼b‚r¢jRć5ŒúŒZF½C-§FP+¨‘ÔJjåB­¢Þ£VS£©5Ôj-5K­£æSë©Ô8jµú€ZD}BM >¥&RŽÔ$ʉúZLM¦–PÎÔGÔRjeGÙS”˜L ¡l¨¡Ôß(Žb(žêA½Eõ¤zQ3©ÞTjÕ—êGõ§æR¨”-µ‰’R®Ô@j3ÅRK­(eM…Q¿‰¦Š*¬†Xù[ݯ·~ßú‚Í;6µôzÝ,(©e¦2'{|Òã`Ï9=³z}Ô+§wïÞªÞ·ûÌè“Û7¨ÛúOìŸ:`ú€=¶=lSm¯I'Iï tø»˜=5È~PÅ ûvEv/íçÛÇÙ_r°wpsøfðØÁ_ é9dÕœ!ׇàPû¡Ë†æ mý›ïߎÿ­•ûŒ»Îï䯼õ‘PÒW(ã?Œhº+ª¼Ähî²1ûTZðĸ‘>m{A¼:*>>"ß (ä^ÐEePS+w¾ô68….nã.ß2(â_Ð…P“›™ÆÇ§ƒ2_fµôeb²!ötûK±Åèb´}jB“ôKœ. dë ;7VÈÀÇ·òø#¤es× 'ÑyPS+¿ÒÒ#Ïní;q*Ïÿ3ŽÈwHÚå*Írïw—SÒÏךÉI¿ü\=CC™¾BI¼¿4ŠÎš°Ü$ÜчÅã~!ÖÄzÜ»d‘þ8­ÐêǟЖ#[Édv®óí'ß_¾|ýÆ%§ñãœçÌåû %QF!Ã(Úo«ÄB¨p‡-€rß°„è¸Nê™WÕ&ýZ`K¬É`âD£5Œƒù®õÑî@ˆŠ ?5÷ÞôÀmÀŒŸüŽÆ÷üÖzá̦éy|Jx²¢˜z0èÍ/#2#~`Ä«þÒ™ì¤wq:²çϺxëܼÇ,tZø±ÇÃci}`롘:`PôôG”b¿‰?¿½Á5ÌÇ“—>­Vç¹ýÉ»mUÿ›w-TFÑ=™Äd;$óù’6U0ݹÂm4Ú=Ä·p2~8GžHÚYAõ“mš‰aHå¤w³äV»ëJMbÁEx‹-†OwãvUo«X ±1–HIÿF£ÕÕ£ ¥žx¯—(eàëS<ΠóË¡¦6üzz"»bý´is®=z|Íôõí#³9 ¾‚¸¹Ýav¦#¦&;éïO¬o—æOïNϬã[% BäÜ"¢—HÛ0í$Û@Q¿Jй'·Û8b‡›Q½š…à=æàp7%µñYž\[Z¾>æ]kº£ß7á¢vÒ#(Ã¥ìçÂ>œ6°P^L‰¾ RypêÚÅaK\xé—{,[+ºÓÒ»¤ez× óè|s€@ÉqÇ[¼Ì—è… ‡šŽ˜Ä8«XJ¿Q÷¡è…)oÐ}@—Gv·©¼ºEv\—£×ЯóÆö†#>F;és<lPª¥PÌ7ÑëÈ  Xq4ò@ØÅ¤lˆ†Pˆ NŠÛN¸D9£¡×à ›&K« ‚ÐÎÇ PÃ_ ­©A)Êýà°R2‹Œåµy)%Œ–N[Ó@z¤Ææ„A4@JAj ó:þŒÏŒ¶gL[ZÑÙd' ¬êØŸcš}ÀT•@m ”[£ÓRbyô‘\_uŸ¼³eÌó5(Êò«2´dhµúä xi#Y˜Dú­3xÑE§œ4¤ZÒk™(\Ê~$ Ùæî ±À8oÛóyÓw 8"•ïGk³«ñwÇ¢‹Í^³“vŠŸdö¹¥wRlƒÅ%’ü×­e”% åP`é#«gt§L0:ÐO°¾ERlT¯ïß¶Ü?^š¨Ó$3¯ë¬¨Rðã~”±Hã»6ûé¼Ê×øëÀW TòsGÎ~nSÑá¥ö;¯•ÜOcOò.éO&Ûlïú{XP>üwد•ô³ñ~º=ºÞ±½#9 ˆF´élÐJœ.سèô×\kÓÑr©ßúrNÚ´õÀ¡˜º!ݺ5/Un×0O†¬³¾)ùK‹7wÑP£°Ç(:ôàÿI¨ùÄ3bg|Xœƒ†N(Ž1ÄÃ8ûò7gW-ÃÈ«ÔhPƒÆÔ²i2?wµRÚ´ ÈeÊÊd»ÂöîÙÞôìÚg§rTê¦ [ÅÂN±U~¯ˆVËã¸øˆÐs™2ÿÚ÷ǪP‚C ŸC ¯õ(V•Sf(¬¾9\ÉœÏÈÐI¤÷#Ðù=?vÜá&¬1Š®5cy³ 6l¤{Œ_¼£¡£'aŽZ]&0+-ö ŽoSI¼C:Œ¹÷:vÞ¼ •doºD\R#2‚rÝÒât±9q9 yy)ºoQ—sŠÑ¶Ðo|X%©3t@f%½ U1]¸k2á“XX…¯Xƒ^›…Ìž`åÈÚ+6Ö‹ß$é쵘,!—ISˆ\“áž%PÌ ýèè!Ÿ9×E@ÜH‰äu²_mÇÓÞ×xúý8ëªý\÷j/èÞPí'ÒÒ¦j¯m[†јv&õhôo¼TÙ +«ªô¶^ Yé:uÖ‚Ï®·þtíòµKM+]¸Îœ~ÒŒ!Íb\!Ü`#w+SvóI·þfî`«ßºµ(Á_Kã’¶¤\M8Ôä¤ìã]¹¤Sâíî}Ð_ÓÁ'†^ÀFÑ–™ÄÂL\ÉŠ¡éÅ?“A¤×˜Q¤éû|$²hßø¨Ü ­°Ø¤Ð8>xíª˜sŽ+¾c´ؼ›çÏ\ƒ“Ð"Ë|§3<8À(Â%¦§Ĩ3Ó¾Ýpß·‘¾óÔp‰™;êõ¥Uf€bƬMr«Guqƒç¤ed·¾VÖÕ×Fv°¯%FL2ŠžšPmãtT³8€Fææ£'Oæ>"žu£…mªnÔÙ®Í|iAeýýÓ¡E«WoY4†Û¼9 »€sÏž¹€›.ØVŸ 5÷üÏÏ-¿a'ýgªp»jk㩳‡Ÿ<}pãê›7¯á'x°)ê}AMÀ<¾y£µ&¦:¼Š7䔥æju»Jã²€),Í©. ­]µ^㹉Wd{oæýs¦l)ôÊ奄ŠRÄûÁa0k]†uËÒBútü±.À£¥ÏµuUp‰¿p°¿IpUUII÷z¬¶=y .»]6oÞ„•lUü7røY³eÙLÿõ©•Û¹­•‰5EšBM‘wÇ”@ìÛÇ„]^]&·ßר¸ 27¶^r?™ËoÛ¿+ýã"Fú|zÑÖ·zht8Ñtì:öÌßGÇ¥gÇë;&´·Œ* ᾱܶúU9®Àñœ™S>=êøM /}’ªy”—Ät6á»Ïlµ¢]»+^ Ö®˜Hw–Ôö> áàà±ËÍ‚À"“•ÉÚH†t¦*¨0$(8ÜoöÏpGìÅÞ—8éá×7zÇR +Lè`Bû×´Üþ #ÝKš×Õ€N¡C›jM·!zîÌv–’ÙË(B«f3™Ê`±Jl껑ùq]¸j É2Ö_Z^èÔÕšÚTë»M1ÝFÈõwé¯oa/òå ¨Ý5=»¶÷¡ÿsæøâϾlO­Am*Âv[ßëVÔ™wˆ5˜©Q‘  «„F¶”š·aÁ¦êùYä|ÄêÐÙq[Ì´¨>±0¦a´à`_ÿɽ<Ú·f¹@58TB1d60ÝfûSÍØË|™cDÂV]#‡0`¼»'-÷Žth±4ÜyüD"mj=Ðx 4/܉#*IèëšpûOBÿ¯H‚DHOôݱßSîñ/òFz×|UÁ–ɨù>rFœl´=ÙºÚ„“ôŸX#8°°9n[0ƒ+0®«C“Ú+.Æ›'Å’0ª+JMËÊà*ëFúû½#óœf,øì#ÿÅgüù´´ŒtÐ3ÕA!JߘSï/DkðË#sÒ>Ÿõ3éiIglhÁiFÛS_¡ªuÉN*`üžÍ÷¸÷ö@ATZBBBB<„1EòŠr}aM“ûéÑd0LúWNú’D£õ¼_Pôó}ìô¤VbÅI…5°&Üuƒo‘¬ìh’Õ:N­c4©ÚL€ã½‡kÒՅδ\8þ÷»§>;ÙqÅüvµ BƒQtØtÖ$ú,™K–x’]@¬xÕfWsiØ€ïã<ãy}Qr2ä1fqä:¾ Ì< yBp(¿µ#¿Š;j&q“Ñö°ÉÅ|¸ežÒŸb>¶±óœ4Ÿl>öÕ³Ö¬pÞ<ÿʇýºòHœeîM¹Cz‘ÞÍœ¾â躯8é¯sB/›3xô“I8m?|zÛéü\7“Ô±S›MÆs¿|vÉÒEŽ+§š[ÞÅFÑ¿©ˆ Ô÷~ÿ›ºóoJ¸Ä¦4zfD@(øE¥lÎ%›íµÊ”*(‡´"m¡9è[þo ‹1ÓZ°Áh{Ê´¦#îØIŸ ï`MúüîˆwmHAjZš ™²0}€Lîë]´¢=öøž“¾Äx"6%â‘SIB?œˆVœôéI8YxäCÞIe§¯þâÖƒëÍ7UÉ ø ¯œµj !U1ŒËªSÛë@G Â8@Œwk¶Á·ÂÛMæã³³& n_ym-GÎ[ÿå·¾BÉTÃyã­ûèr¿Åx^o{îÒâÖo¿ÜZ|ÉNú‡b5{%â+¬…µ®G1KQÁ¥ÄU·­DyB—š•¥LU`¡<Æ=qÓÔs³‰âvšûLm ”pû$Ø·øÄwp šü!#*é¿NáÉîÄ㪂µÑ± ‘Á†TÊr¾t¹Azfq íÝÅd ÎMB¬"φ¹¨#Îôa®Y¯ÈZ½NÀ±cû[² QžÛmͶ/;o>t{£ýÒ'ËÚ¬ÙˆUn¡ÊØø$U(e~xaÉO§ÑúŠo›{€¿§¡G“Ù)Ía³^Ô,Œ Ë›ž›ÅLihŽ"&I£âÈ=²=&>"B "#*+¿#nöy1)šL` ŠsJ‹#2¢Òy²mÌ\síÞ5Ñ>ÁE,8ã36g7Ô×ïO~¡U;ÁÃc7äðø’Œeó ¾Þ "yò;é ׎á3†lõÌ=]j4‰„xöË Û¼ÂwéƒjÒÓ´Ì¥BL|hÒü™›øØ„èP0a…ª¼²ßLhûf­À 6Sg6 rc³£ÓÉwèf¯ÊLÒÆ£ ÍÍŽãq?q$û‰cT\»­AÅ‘™)ÚÌ<ófÓ ¯õ"œk>î[ÅB~\jXé:Zó}Èãàï ²ÓS!ŸÉHÐø‘-Äžd’^G'Ô¯ãNÍ»½² ˜Š4}F;Ÿ|v߀ÿ0Ú¶´}6áëßÚ«ð~Œg¡±àì“Õ Õp’i= ÎäíõŽ+½Ë”CiaUNBV‚Ž+¯jLÿ˜Ÿ{ûG†FódÄ ˜Û™±¿&K·‡“>É"óØ7†+öšÄøϳ€½6=ò8¾úæœæ@`dñòXev\ZS‰(ŸL'µ“ðdÈxetl(™X¼¼· =fšw{dæ“'±ßÅëzÛ«‚=‘_±“þ  Ž5zîÔ_ÛZ©H† `ô¹Eù…‘™j-/+üdw@RçísÒsÓ¡˜I…êíé??¹B{ª2a·—xÅøi“8B]Teª!äaÊÐìøÜ8E˵,2."ä‰à·ŸÃþ7ÔGðsˆ¯Ý»awfµæŠº¢=ݯ†E(3‰…Ï^õa»:›£¥³ý±X⣋Þác7Ú0öÕp3q¸kÀ¯á,½å×ÄxËXFçÔC}½‡²Ãp8õàÉ‘ád˜$Ò<<êÍàF†Ó‘àQ_õ9œ%oC° 0˜³v¤¹ÚXŸÂ*7*"£“Â@Þžu/N£•qÇç›·ùz»UËvëÒµÉéÝ Q™ÄxæÕÛ<ȱ¯ûÇp2¶ÛÚÑò)ÜMe×,I0 ËØ.ý¯ÓúZ*êëjÚò×bÒ^8_éE焱bÁõU?6½@ Á) åÁqʈxŽ|óÇ¢8… Ö!,?\_’žŸ«3?'0ÏFa‹\o‹‹K‘5[~Y˜ÎVÊK}ã4 æ!SWœrã«£|FZ–ù¶(TŒùP•ÃÇÜTtœ@…ús$†>â§Û‡ö_l>z ¾f°÷ÈÛ¤/é9sÚ”UQ…–”“Îåm¬=̽/7MZ¸~¹£Ë›\}ž…*8²¦zCÅ’T`ÂeàPœ˜Ç#§wðbÈd lÏ÷>´Ò[½²H~àNF¨Û=îS…~ÔßÍçµ:8UÌ# ì…ü½{óiË,¡« ÔFóZb•¬nî`.ÉÐÕh{¸õ³VÜeÚn¦a‚°Í{«ÎÂiæÖ¼/ˆ„ô^¸a‘W¹Jo¶'/>+)…«­½n>¿zÜÝÕWé±+˜÷©ÝÕ+•~ŒôWs¢qGé_N|º|éÊ%ã·ÏÊn àÓÒÒu ïüŒ0ñérì‡vß>~ÂIŸÂõçkÌ: ‘ØÛé²íüÕNú­à(ü-P(¢ââã8_ÿ… ¢!63"'"Wnð„]௠—+ý‚!ŒQä+ ²uiºt®¦ª¢ ² #&727B²*¡ª ´PŸ_]E“ ezèEÕ×PÖ,Þ‡IlL¨AÎxeÆÕr˜F(çngŸvÁÉ©;]«ñ%½;.Óó§!A!gÈŒ6†E¾°!/$}¹žÖaþ½{PÔÿÇåôyendstream endobj 121 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6955 >> stream xœ•Yw\Sçú?1æx¬Ö}ª=§JźWµjkuï=q ÈÞÙO6„, DëªÚ¡V‰µUPëhµÞöjÕ¶v^ûžþ^ïçóû$ Áû³÷þ.„?8yó¼Ïø>ßg„GtîDðx¼®³—¬Z¼zõøqþØL,äþùçB®;ºó¡{gË ¡ ú ÷{£A=O÷"ü?Kg%¬Oœ4'ynʼԴùé 22·/ÊÚ±X¸s‰h×ÒÈe»—GE¯Ü³*fu울øu“&O±€˜H,$^'“ˆÅÄdb ±”˜Jô'!D'"”à/‰„€ ‰—‰.C°DWâ¢1èN¼HÌ$z=‰^Dob3чèKl%úÛšXÖ‰à !OÀSòÎwšÑé4ßÒy\g³àeÁ1r4y¢Ë‚.Æ.÷)K×]-/ô{ÁöÂÃn)ÝÎwOé~ëÅ­/^í1±‡³g÷žq½F÷:Ù;½÷>Зß7³_×~ÙýNÓÒþ[ú_°aÀ!¼¤ ¡ _"_š>X2ðþ úA_žürÞËŸ3{˜z¶û. lÛúJ×WV½rqð«ƒCFi ë&ã¼=8/ø~÷q/ºyÜxî­©TÛ"’‘"H…œ¼ûqeH*)N†˜Äj°³HGì­I…Döàï4‰´„ 2HqÄ&Tƒ}D:+¡¾:âXü×…vìs*¨¢t±$ä€P'µãÜJ.E}tÝǻۊê.ò9*¤Qç™—GãÞ¸;î…YL}5ÿ;Ôõ@ÝPƒ¥x =›ïÊ·¿¾yáýÕsFÏ ï·"×Çøxkás7¸ë´Î¨³€žræ92EÊü\9£TäŠTò={#Š7…ÇàÁx)^‡™ë˜D=ÑoPOŸMáJeAš‚MÂü‘¢8 &¯¿ó+šŽº¡Q¨ÓOÓÃô¬T—^ï)2W™œ§øÐض8nmá£wŽÓÞ”º„³@¡QwÔ Fß¾2nå–ä¬d¶»žÖÄÇÕ‚AŸ=-†âè(È*Í-{åUPzÇ/GåÇŸ8 Ô¹ƒëfcbü„É¢×ÊGã9D?½¡˜œöX"Hꀇ­$ú %hå{³¸÷Rú{õµà ‰xÈD< ÷eG‘A˾ðñ®´ð9+7€6¸@Fª<Ë$ŽÕH¶É©kÏ¡Ù@á~¸îŠYÌ¿þÖÃË':KØh%Xz3ˆ©Ï@qô’'®?ºç»k¥oïPÊæ+$lÒ¢å«çÕ–é>´ÍÇC1èú“Z¥ZJ*Å£²W›ì¥¦øW½t -T—ÆÆi$r÷'Ð6R“êtù.PQ©¥Jg­Þ^fdl-@È—Ç]ƒ¯8(:è Ž%÷ÎTxBo·µ‚™ò"^#NQ2¹s¸´=mÏùxhŠžÜÁBGÓƒISë¡Áæ½ûÕíG ÛY£²UYê©<3¤#ç/–HX½ÃXö$q§àõ×Ú/ˆñ¿x(UÓh ©Ê (¨„j°Ôê].Sü‹¾(`¾_½Xh§’ÁÉF#@úÿh~ï «æGvÀÇØ6öògøòiZ¢Þ>”ããsó¹Ét¤w-ˆÂS¶ÏXÿÆÝì³ÙÃòÏò ‚ÒÀ›8|ˆ¢K¹ŒÊ£qÆCMüô·K_´ø]š‘§HQ1’·ç¨r€Z õN3è Åm™†2|h«ÇUrÇèÒYÕî-Ü”$µ{ÑMÆà­å§nÁ_žñ»>Ì~RVP· ë³È&”!@Qänœñ×gžx€‡È>'åz?ÉÐÿ[20-¥ÈGmÞµ¨…O±¥à}c%kª6V›ªm—CŒGŸûÉXpPnèð_ ºá°¹æcHð‚ ¨+Ù*ÈB¡Ü1 ‚ ÷óí·€ÕXÐq‚!{Õ/EåA|<.—#é†6×%€”Å]ƒ¸ŒÄSðÕÕèª`oPƒ¶m2+É3øž9ºÊ Ô npÕQO£S|Îå^öœ¨#‡áZÜ`—]‘]ÖFÃPåÅ-Ü€!Z¬:;hÑ@€º‡A|¢ÙG~&Æ=*ÀÃêÓ´+tiúÅð.,¦æü Ó.cµžAta#¥‘™Ö7-kuyÀ ^°5PmQâûÙÇ»ÚÂçкRŒxxêv̇I‰§à€ñã55@Pÿ0.«4™Z;W ó \õàÃf[å{LIR½ò$PUåÝ$¹Y`JgW~E+ö¨³£2“sväGµ.ª|ßg¨G#êm–ôwô?4Z‚V <Á@Nl³¬ Y\€K RAU0xáä_—_‚q‘^Š:£®±A™ò”÷rR!}ʰÜNޤ®'€ÇTÝVB);.|ù/‚Ú²çÄ~y¿†GâI‚­AÄ ª-@IÉ>B=[pOAtÆvõ+ç/‡"ÃѤönä ´Wu;wÆŸZz0<'A¦>V©³AªP?ã:=p\Ïüuð!¾û_ÕtTÆ£›ýÚ·'Óä6°úkN]ÀÍ;HIbû®Û³Å«:ñIr[ñ’ªzêÃÅùx%wøS,àß®AÑ^wÃùñKÔå WT‡®Að u8YIÞÂÈ І‚*bŠL²cñnHk²˜PH9eîÑžÜ-;jÞ<÷Í©jæiQyÔ‚LçsYˆG;dŽ”t•"[ƤEF¤ojÚ¦æ–Ö³¨7blµ ¶²:­N£JÑ]uEï]›ð‚×ñ¨!¯]º£Ð“Þ  Wl=~ ñ¾ûûí+¥ïf¨”ñù›XÉsß}ÒËBâ~¶ZîX§?NhÉaœJ^/6$AèìS%u,€_r ùóc¥)Å$Ý¡Ò N0ímçÐAͨŸw§Õµð¹´Š®u—hШ†98¿€{à,øv: þŸÞ© @P­å±É;6emjÉ̦ŸX{3]ÞÚzæ Pajª4Zypθ}]¸ÄçpjúÑ„;/–ÙÃD†íÁ2˜O…í"õÿÀñk#SwoÃ% —?^K‘Õú®Ö£ùÎSlÅýêâú¦V:ka ž—Á&a"+óá)NPo]ô77}:47]I£Gg5ºÍÕ®!¢Œ@9kmûNÏÑôm;¥¹llœ&7{, ò÷ñ°ƒïQEPäÈöÖs±©}<.«•v" z‘hÀ=ÔùçkënàN,Îú7Í3ê„F y““Ðÿ T-Ú¹xÙÌpvH€~„ÍhÖ'§šÑ–fžãÌ{-Hu–â}t>ä@¾žÊM‡}{©ÞÀºrkŇ€úéηÊ^Y [íôì:SŠ'ß”ÇS\U,mX™¶]¿™Möì)ŒjèëÆF¹âô*6+Mñ €TgÚ¤-Òw š{sz õF´ïWÔ0naPzs|ã‘sgš}G÷ÆlY²bÙR6?¤G,;°¯ÄyàP[í²Á% î݃¹‹‡îÃ>™Ù…aL°0¼q"×aäÇèJ›ïÛæ<¤Ã MO³õý©>÷§é3,…T©f@ I⎫ w…»Œz}ĺòDw[T©¸‘u>;ä˜Ô‘ÔÒe³'fâîð£So ãebç3*Y žêÀxã6î/eE}žû!Pˆþßṉ³IUYưŠ,SœE¡³¥V@uö³3ב@÷zB6d4TX¬Þ¶mB–khs‹÷2üÂçv<×13ÿF+sbÒ“£vÆ@*Py‘`6è¬lMª](ŠËÙ9'ÆAìA s‰›ÕÖ¾´{jB¦¨×¿vîþã9L…PDå¾ ÔmG ÎR£·™ëõN … ¶ªÃ€<+ØHny:F£n>úÐh0ê"8D!l1ö’xù ú¾c¸aq$pWÇuØŽë½Íà-8vï‹xlÇEz!ˆ¦¤v¼¨ým ŸÛÏ£ÛdضGÒ[‰”L™7{!„nØqø‹"°èmìYôHðï>à__€8wº2ïÄ¿‹ˆ]ú•ÿB#ÿ ÀÈôR‡4¸Ù¡ë\Ip[Nó‘ÌG§¤>ÛU§A"kª«@ *Ë>;ÔДա’iÕZ9»ÛÏ;_tÅ~ÙvÅrÌ࢜ðåÛ«vìÌ•1Ò÷b‹R öä%¥©ªÒý‹€Ø6ÅÊ šõW—Œ ÍÜùÏ×÷à¼ù®ÁÇãÎsÇèâ'ÑŸâ!_Ã_ïÄa-€QWVÿäµ_íS^W7k‹¢@Y#Ìφw嬧´¤®Àü»á®þKãWº/¡ t6ª6è²é…Ó‹N-+쑚Hm¤vìÐìÒlÕ~Õ[`•ÂÆB7x쌩ð;$.j¢tB² «uQúÝÿßz]Î>h³Û䢰ð0­ë óëZm`: ` ÕùÐ$ïêw¨¼…ôþSw(ä2¤ZEt¶·e“ŠJÊ\Ca!sìø9S-P­ukVýθí\G$¬Õbu‹*‘”%l‚uy¿^õG½Aý,¼–´M•¾©­* ¦sè ïÁÈÛÂG Ñ÷ô>Ô÷÷¾x´N©B)“C•æVy+íG›7샇âx(®ÀïÏÿuA½~@C®®z€©ekRã#™oðQ: 3jÄÞÜP FÐmP uGÞ3™¸Ô7esv‡Ÿ==Ð%y¸¦@7~ŒV©‡M˜Ž_‡'ˆ0J*½Xêª5–» Ì´áw4Fý­…ÅN£Ao0€µ=¾"å.!È!ÔÙj¡F*ß ²Ù8¼pLÈ Ÿo{¸Án7œûˆ68@&ª,«,13>g§’Ùˆÿ$V½ÜõfFˆ§Ò•žäøÔ¤ä$wfUmyUe»§ô>´ÅǻԊN¶ð¹WÐ×ô5ï•“p•º:÷sÜ ¿4|ěӯX4ÌôŒ‰ a45îËy¨zõÔùÁɨSÓ+™Yµô’•õ§Ï´ž¼uýð¶mËg¯™Æ®ÇŸÒ³V9åÆÅ{w®ØøÎ›óÆùÝ‚nzÙÍC[‘à<ðÑgœÖô…`¢ŠsÊã#TÛsµL&Þ¨‘4TWap¹Œ JCÿùT›1oœCM>êÞ‚*[ùÜrä¥wáAç¾rˆ,Ga¡ÉvÊ#q'¦'çnžs1ãs4 MCã‘…ͽ4wÁôX>óôXD}ðqqÓ ‡Я§_nD~¸pã'À=µ*T«bµ h•9‹æ®«­_õ !­(¼ qó.r9|ŽAS蛤­£AÊ.'¡pÁÇÁqdÝz³Þ–Ðqqf²"]ªbvã~‚ð¿zã R ÑÑ`c›Éí8\°&ø`/ûŠF®Q@~hzINq…ÅSäÇ×Á/Ï{cú™þ% "<@¡¨7Z€zó¸Ü tmZUôž=ñ‘ñÞ¤} µû™õøìÿ}؃óNõøš9Y³ÏÍC!Ÿ¡œÏø\î#ú#Emº9R"ËÏ1%´§Õ×XÒºùL¸•1ÕJÀè@’Ô¢d£ÉUgi5ZV›£Á]2g¿ ÓaÙ{ ‘µ KB^·B3èÁ¨Óô»ÑVª2Ý•±Vˆ'œßøµŒQ&ª… ¢„¶Ü’J£»PÇÝz«Á:ÝÿÂWKÏNqPËôªÂÈ8 Ÿ|vô\åÂ5ô^ÅÙ4XËW®™#ñÇnê94äRŸCaçx¨Ïé §]§/œæsûþìI8Àª4Û••‘/–ʙǡÿ|7_rP‡ "·«¨ÈfaÐ?Ð+´/þPÄšu3'ÍmŒi:{ü믘Áát¾¬¤òdý—Û»&v«Àqô¹øƒÛWlœ6u^ÞýgߺŠJËòK+>i8ä´›Äkc·ýÉrÚÃmsó¸j.›¶šV(¡¼B»H‘¯‘ç0ø1Þž•+ÏI(í2“ À‘!Î<ÿjœ*)v¸Kò,r‹mh‘ -3®øPïDËÙÓ÷?ásvޤŸñØÀ¶H¥K­gE{–b2bIÚÑÌOò÷¢N?U} W©ÏömJ~U„·fC¼e3~úÖ]0‘zóxÄéSÇ÷5ìe/<¢tu½þ~UY¦9?]•)Ó°ò¤¬ØDH„ÔjQÅ-ïßnF$…õ 4zÍWXTl&Å*3¢‰0r»( ÔØ<š¶o¯^èŠIß TŒ²±âBuÅÉîX×z«•wKàszô3]Ô‘þ6à'2ÛŸuþŽá+<ŠvùS,Îÿ&s÷@tô~°wðg*£K‹,Eà€’«Ò€O È±5´@egIÓ„¶|‹’EV¼_Ç‹ó’<r§ Ð`*ð#ÿ ÏŸ©nJháso¯¡Á‘o–½ž…:Á%¸Yƒ6 xÔßl,´€ƒ²å»Òwb;~ ¿·Ý4ñìD¦zçÙeÕ@U˜ÝlPÔý>7šëNÃaÅ·+þžt`™/¨Ef¾¤@a“±¿Î,Å`¼™ˆ7à<@¡’ÉABå›2+›Í@‡üjÝõp/¹y¿soø×[m3—Bå–Hdj"—ÁÝ–¡ú¡µç9„y)Êh%#ĽFÏ)T‚BÓE™B‰Yn—³?-ÇÝVH¢\È•™²Ê¬£NÏ žÓ1¥–€”¡"{ž³¨ÌRmbt&Ë ]aáç!?,²ËL`‚Po±»Ä%3ËLì°f?§úþ óñ¸Á¾H£qšÅùþ~Z«ŒÃÔ?…¨³A ª¶M šß¡Ñ °ÔMšÑŠfºyw¸Õ|ô*§Ñ° âAd9¢3éÌ -–”dÄ+ò4L )ÀÂ<‰‘©xˆV©U€&TäzjM5Ö@5Ŭ½€zóÐn4„êutâÒM‘B¡ÍR@&%-Êô¼:ßøõhâ­ÉQ±Q•uzИ ucÿ|…Ö™u&з×ðù:îpóþ&Àã:4³ó;,mPy+ïnŸ‹CåtЬKAÝÛ˜Ú¯`>ºsñ/HùÏ47ﮌÏÿ³'m²-` ÐW–\š'g¯þçB¹Tí/~ú*-°YÍÌÓyñÁ%ôÑE>WÃõ£½ñ†âAx^‰·ãÏÿŒ^FÑj´ÁNü-½`×íßÐâßÐ+ß^nš4ƒ—„³_ ü/’´ð¹\3m,³E¬ž*ªÔÕÕ$Cöˆð”1b6 OSgÈ6à!êPYŠ6.±\ëtü®Ù¬LSç°ŠhÙjPcPwé§®*¨¯JÔ)˜xÝ‹­Uï°ž)8V¨U%ZWð¾ÞѾpëáûÕÍãFùÞ¶H8dÎ ‘¹}@TûGé»ÈÖÊ纡m4¢nŸúþF}ÿÖeÜ™Ž;/Mq‹¼Už² «Â¦21eOìÿ¨ b߆»Nå°¸¯ç*óAÚï{d1”€¹\o57AAà‹eI:lÖ0XJ>ãÅ/ž¡ Å ‡BêîjŸŸ±‰ÕZ3S«} …PƒFŒÇ·uÑ ˆ)N®.KÈ‹P¥kd’I‘Z¢«ÅòŠÝx¸†ÊÍÎÍH¨Wée½÷8{¾ÎÜXø±1!¦š‚£è5e,3ÔT§êÄ9aúcz?_°íb³ÿÛ¿Ïï¢-|Ô‚>¢ïׯÜ2oÖÌa¢‰úRX£Áaƒ2ª2Ó™¾ Öç|´û{ôÊï~þ0ñä²½ÌýŠÿ•ÔÙ5qW(,ùÖìRQéˆÝ)ÒüØô41)‰]Xb5› FÆQt´±Ì`VZ¥¥i%⨂:Wyq­»²JÚ7„ëêæq#Ð ºÃ¼ùyŽhÊ… ‚ÐD2ä ⣉¼¥²Ûy H!& :,dÞ ŠXEVsvZG®À? p Ùƒy¡³0±{W‚ø_4àZùendstream endobj 122 0 obj << /Filter /FlateDecode /Length 4887 >> stream xœí\Ío%7r¿ †Ï9 ¹¤_2añ›Î°Þì›ø²†n3><éi4²%=ÍÈòŒrØ¿=¨"›,²ÙOòØŒ ðaÚýØÅb±Xõ«êý©p*ñ¿üïÅí‰<½:yôö4ÿsq{úõÙÉ? pêDô:œž½=I_À©òA€R§.Db8=»=y=}»QQÄ`ÜtØHa” ÓÕf+…ŒA* Ó%þOàBœ>l¶Ú;¡”žþ ?”`ÂtÀ6gp°¢4vºÃ×*zë§6Rè6¦ß=Xƒ¤€³BMGú „ïÎþÙ÷§QD§²¿…‰æt«´ˆ ÕéÙþäõô‡ÍVzúic­€èü´»IÌJ5=â¬Ñz|NÏJF˜øËDÄ€™ÞÆ›´`#¥saÚýˆ ƒòÊ%zÁŠA  €«Âtx‹:)uÌˈl„ROebÿÛ¼æÜ`ÍAà>¸yð»23ñ¦c4FO7$k§ŒžîÌôE{S§ ¹Û`]ðÓC«ƒ›®‰‚öQó·´d©¢2Ó»²"”ÄV© ¢´+#Š(òlZi7}bLìn7Rx-0ÐádÚ²K*@7ÓuÚ@Ädà~·QNè b§"‰w•wfíø*©…õ/;½€:ãË`.+…oi^?Ðk Q5šz¸«[Å„ø¸öÜU ž¥ (­¬%qÚÕµ^¥ÏŒrn:<2¼Ÿ÷á#¾„褙ÍéT»Áó$RYZ8WTÒê¹æ’°Öá™ÀåK Ñ¢è¥0¥ ´yZ ?lØ(/Ú}®à¯ªÊ¦Q|÷À §Ð~srö¯§ßl­R"4U ¤ŒÎLŸÊÓ®<Ý–§ûòtSžê·o¦òø¡<½¯?o6#5A¦ìÌÓ™ )£ñÉÞ§mÇC ™A¾ÜtÌc„ˆVµJò¾ ’Iù0ŒÓÛ´ñœM:%Aà¡ÚJ% > €‹Žóq>>Œl‹ØÑmDæãÁ6’’Æšr˜¸Õ80¬m¯MR ÚƒEç*DD,œ ó õ0í‡ÔÐÔ“Å’J8piÂl:w‰FpÑLO•?ì((Ö¼QzHãºM³ÛéëºZ<ÉZ"«Ó-\ 24§÷ŽÛudtÒ«âªÊÞªïÛ]à©sR«é&ÇmR=œ=y-MéLÓÄCkõ¶ÊÐ!É8kb†\¼Ÿv_m¶F¤bÀ&/ic#Öµwk tRe­¸²\VËË6úºBÜh¤ë¤FÌ*…‹Á€æ>7[SçÁ7~hiá•3-;TŸƒLy+||½Kk±¡Ó•ÁZ{±‘«ÊÍOï¹þ×C~‡{oPl2¶Šh5H.Ó%aEp:a1ψʤB`Š™H§Æ¢©*«Ÿ¹ .Ú¤WqØ=ÉB©ÙùföŽ”AzoÔ¬‘ä³oÑ>øäè2g­–7JWÕ9éIÔN‘[€ör}0@+[ã‘G6à¦Úý›4A¿oóIʧ`u㸋ЋúE7´r‡²pÍ‘\š'‚ó„Ô½ Õt1Fø+gIl¶6J¼þ'‘"†ÐØôÇjêùñå‡ð±ZȇY ±g¤ú‚€p$™tZ·Óë¬è^DÐ .’Dª–¶P7k7“lY$7”@ㆊä8¦ìYÁG­‚ï 3;:3!FíUZôà6S·²C,VBkÑÆ!Š˜©5GiE(З6å2½Ö½eäìh‹ ©.¤ÅÏŒ´ÓO-fÌ{É@ðS¦fÅ |Y­ÈEuÌJ²(¶°ãûPÃJ£e6™Ùÿ}úÝÉ ¾3¼ætGn!«ïlËç™[ŽÔp÷|$B®PÉ‚¨¨q³Õdh±aú‚©-S•{ôá]‘ÜUÑ¥Þ 4qôÌà mõVk•ÓAÌŽ’MŠ8IX+Ôý é1Æ”JqY…'ø»™Ì_¥¼Nކ×XCÙ‡ô™azË6<饶ђÇÐJøÖ~ªtwÜq2CÇüÄS^?ø´‰ø€¬@^é»Â3<÷MX?:ã„Ю3$¡&¨Ï,¸ÉlëåÞ‚B"é|´íúœBðŠ^„;xR§»ÜË‘-`–ÖìßEÍ à¿8ÚUì2ŒìæÙ;©/lX1˜l Fñ™ÒBšøÒøÌ--üœTå¼Ï_T)ޗİ@ã²(˜iKú*•w]1Q ¤£!àZ¦¨£>¨Æ˜1^e%ö¡u¼eì>ÑrÒ7i—êØ‹B¥ì´Â$䎩;3Y]2q^üm­r”B~›S–˜áÞ?…b& ÝcÔ.ɹ„j\?¯6[ V¸v­#  äýÉYˆ›‚ÕÑ\@aºº¬™æôXLÃ]L+’Fêqv€Ql¶FŠ¢Ú[¥v™¨ ëdßýÆÔrSJ 0ý©¾e)º+îoÒ,Ï_WÒ¬ÿ.“‘juôm2°´^³ðýýZOO·|TaRíœq!ÈìïM#‡nµU,Ã}§róÏ­Îw¦¿ BDüAûæ0ÖßYÞ™â="Á@9 Øã¾]±©+žˆe„öí1Î`(ÉÎjo× AÎQȽkQrV û]Ál+éa>šy¶ÀÆàÏuù1–çÈ왾êCocckÿãßþÙÜžÚ!Ëåm£Ûsèk­Œ‰vå0CÈŽÁRèD|bð"e¥›H¦Ç ÿRlš´ÿvæ3)¼ñÏ´«é.¢„l½ùCúÐHÈ ŒRÜË%šƒj [v†Óƒ(ö»FPáž… ) ÌáäŽ@ž2¤_xå#ÕšL¹‰YJtw7òÅëYŒ,ãõˆ¥OÊý²jLæT¯”&{˜™Š ¸L›|Ìá’*–<@W–!£¥[Mã ò‡1Øœzåà·èFkÅ3­?Ì5¥RþÄ/¹ZÇeyQ-Zv?±¥ÀÍt,“^æÂ0÷c"¬cG.ó4 ¹É£;Îg5$zÏ“¬ÄÑòB›‚íªÌÉ¥tÀ°Q(šq=û;à¨Yj…ÃÔ\óàñIãJ@mªÿ ãóˬÓãÃY§ßWÓËÕ{Ç">FŒ @®§Úg“Ú½«õó¾1OÜjñRèQ™ 8¾=f“¾²0;ÀÓÃ31ý¯b؈Òo“œÍQ|¨’¶Í™}YæÅBuªÃ,^³MÒøE¢B #ÃKâ‘’ï©–lXùì– %ñGæ1‹4×Ö~ºèDœÐÊÎêË“¿=̰f³%w †­òFh» Ã7‹¬)èhÕô-Ð’´¯)¬ßÕ^§‘pÌÁjXöÕ€²Z·%:ÔÅôB+È™{K*j´´=LþÕ”MW®àqW ²7Ë Ñ3±²ÜÕÄ5êûxÖ’¬–äÃ_jL2?Ó EýëptÞÆìÎÂJhúNj 7Ïú.:ä…âwÕšîjQ,YS°ÂØ>‹ÊC~ ¥5(cB5Vû-ëÜÚ²ó‰A¼ÑÂÏ‘vVÛO5•ɸhmJºÈÊz¤82¨»üqÛã§µ¬oÔ cd?èùqðŽõ„ÔF‘»òt5øõ¦ï)qÅ‚‹·eèõ€ ¨ÿµ¼ÜÖ—Ã&•Êo%~<íœb2e–¿ÕÇë.´o´_U2#9?ÖŸÿ­>Šò»znG$?{ûŒ)ªVéûÙ-#ZÕ|ϹaÈÈ©®·9Ðï¡)l²±Z§ZSH†Šèú°mf½×}c€¶™‚× XfK¡n LMÇßÈ+ÌÄ?7u¼Ì‘ä;“î:L¢¤µ®Y&§Ãùfk-5JOßWÄevÁ[¹î2ôZu˜ ýs¶` ƒJŠdɰ ÁU˜’tÓ_È#¤…Üe5ˆq½+¬­¶)+ôÀÏhœt°xcDtZÊS6>‚Jcúu&±vŽFe*ÜЈàÕÏÁüÜöS^³°®M‡HèzÕ”G°€Õ²­ŠX3Óá¾×MJ­4±e¿å3!ñÌ(ï ª9f‚~LÅ´Ö:äê±"…q+œ .ïˆ\å¼»R¥›Þ¼ÉàK99tqÆó`x>UPþ~&kÂÑ`û¬³êH|8§NtÛyɪylA_ŒÑ5áJC¸òXµØP¬ž š‹±Kh·„Sªõ&}ÖRÔ¢íS‰™ŸýPÓ™‘å`¾/ó/¡?A6O,ȜθK3.J5Å>b®é oä-u´mÙ€d¨Ø»Üè ½:–wÔF8ÐEÇ·º,&M‹›¾«rŸZÔÂÙ¸ìSkóphÝœ¾kÂÌŒŸ“ÙìfK“ë«ÕE’öÖxælµ³MÇxG7~´pZ¸O‡#­V@þMú·È- J×Jp¯&L¼¡xŠUz˜}.°¯ôûº¦˜éûº§m×o¡Yw¼`­pƤ½žž6gßcÜÐõþ›Ú´øw}ŒÑÚEt1ž>%jŸ²B)Yh°ã%hác³º·iu ·GÂkJ„3£°ÏCƒ­¹µú ÛŽžJSñOk„ÄÇãºé"­Rº23e6ã9‡|6ždYÁ™óövÎŽjˆ`azÚ-Ðóô½šŒPÞv%®©‚à‹ÓUÎÓ¬Ý"ˆÂ¸4½t÷שñÝÍ"¨*Oÿ½>8×B7K¨kús‚V¹ciqI&%4¼@è¶0-‹Ýd}þ¬¹’cy•(¹bç“CrÙ!UÏò^ë`W9bù‘󵎑&7žé1>v?ðóðÀUúzµ-óµõÉQ¯é®fù"VNú˜ÄÑ4åäQ›Z“ÒNY”`}S¢iZ”Óú¢m¯=ö À¹; ­oåI^¥û:6«gäôø†Y0Ԍ¬uÍ•¯]”äï÷Éfa¯ögƒ«Ý¢˜’vò)ÛçóäíUÚ¥`¨ ¹šÐÌ‹zÞÅ [Òl#ºgºÄ²M/sƒ\˜Až¡Õ¼wž®¯ÝMÍc+•ÎÕ (+òÐмeޝõÈ•±”{ B†’)O­Ï†¤†å¡•6&æ b'Ã5_¡Ìå4]kÖßLUM9pfYbnQi¼ŒT`*Õô7›¹Ås€¿è\,Œ$¯SFÔÚ6tý]ŸaÆg9—Æ'ß®utpÓ«‘ºýtXÜ 6J=Ã5ý×Õã5—éÕ Ï5޶·‘ãqUÚëò঎Ċt+£ÀO÷ÌV¸¹W[ét ŒjZT]·£òÆ‘º‹‡Ö{½qÕýþ(Dõ‹+®¸Ò5ÆøçÄ O‰ÛtEˆN`³K¹'~¤á¶˜þcIï­VJ(ò súÉþŒ´óç`’óƒtëÍàé«QÖû3’Õõ“[–'^Î7NôþHËòûï)^þ€Ã7V_¿<]¤w=øön°–‡‘–¡ÑMÌ0úËQ:u–nê¯÷ƒoÉ·€¡,àçèò1!ȾvØ!\n½)Ouœ<Õqž½Û‚õÏ©”+OrÀIüê2 —Óüuÿôj øËÁÓCÕÔ*Å·£ã}œÎþèf|U Vùi&™Á©­tF'¹—9N[ y|ýË£Q×ò8œy­LUïÌÍ€uukº-Õu!Ðå"ñ•C¯Õt!ûiúö"0ÔÑ`óô6¨&·~“^û°Þ¹Ð^r€öºÎÙ—ýA‡(¬õ¡„êG2h‹žØ]ឣ•õôY¹0‘$,áùfÊ1Wi^Ì™óàdQõê+ k=Œ½Jíë(÷óàM`Ž!EÀ\' âë‚nhCa«å9ºìR{giqiŒ«]íµ Çº AIü3GÇ*Y¹AÊ5Ý_²cÂG'˜gL{¡aµÃ,ºTa’Ú§×®½hÙõxÏ7´mm)EVŽ¢“t¬õjqO]G+l yæ¿ÐV˜iö#WÒ‰9—Aʵ–ò›LTÆÅ=‚eÑÍÑÑ]à•PŒ·\Ž›$_ )Ð9äÁMgJͦ¿‡5O~8O0b8ÝÖSbªa¿lpþ‹*ów­«ÿÍÚnú¼ …Žªy/3IݘâÇ&Í×´Ý€VM‹áË#²ZždãŽÕrRãÞϳ²Eø¯ÊÝÈA Í³¬çsܽxÙ˜Ê#ÑV×Ñó0pÑ·ƒ§Ý¾<ŒÆ±ZÎQØöK:‹þ?XûkqÆãå 4àõ@ž{n±¿»èÐ),ô-;Yþwy*R»Lüq@æCý䜂-Hƒ9i¶c÷ƒ§gé dþtvòד¿žü9áŽ@endstream endobj 123 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 464 >> stream xœ-Î=haÇñçI"÷TB|€]’QP„8‰£ˆJ±‚¢`LŒ´Ä^š^Zñ­¹¼õÒüÒ;ÛôÎJ®ŠX<14ÅJH¨C¨H¤Š‹N.âàþ\8iÎí?ø?”ø<„R*œ¾pùÚñÈî9 Gí‹ýüø½ðû–쩃_ôömïßÙÝôt:3~‡âS‡¹NnPeð„øÈcz„írÀ.;ªi‹ÏítòÌg/o؃Øxñ‰Ó¥GUMÃ"3 G¢§*!'+à&¤äÔäÌÄüýÊ\EQPBnzeGi§Œ˜*c)æÄŒCjO4§wä&˜Qƒ¡—«†Gµ˜õp«¼Œ4´ O$kÖœÑoÕ~> stream xœµ][·‘~×ù ƒ}ê³Ðax¿, $‹,àÝ,‚8z³óКdiæÈ-ù×/ªŠMÙ䙑£ îôô!‹d±®_•~ºB]Hø_þïåí3yqóì§g ß^äÿ\Þ^üñųß§õ…)˜xñâÕ3ú…ºPÚ ô…IÄ/^Ü>û~±‡£NJ¯âß_üϳß§ÿ©1Â+}!/^\=û~ù+|lR’É.)‚V*,+¼Õ)¸°ÜÕÇð¨¤rÚ.oàÛ`|4Ë;B*Ôr}8šàE”jùî „Ô.Øåú … ÊÙå>•)JmÔòG–FÚˆŸäÇ{xTƹå>)ªq¾¨’Jf9áúRôVu&¡“Ë_8ŸÌöÖ(½|w =Ðé"‰äµ‡=8n›pÔF$%5íÅ ,“·Ë·åé®<},O×åéCyºüõýà·?G%mR-±¼UåI”'[žêwzðäGíU).®¼4ƒùO¶§4 ÁŽNk‘¢b/Õ€®:´|§Óy<¥Dr.]¼øó³ÿöýòf°Ùu;Oåé–mñѪ¤Ø´b8Ù9òâáh”5p£aF»êÃQ¹0ã<‰=å‹“*+â¶C/èªÈdÃòúÖ:«ñ¶i'¬Ô˸5Qº/¥°RzOwÉ«|ZèÖ$åÝò.dLI¥å#q.hÃG¹¢±]ŠíŠu€ù 'èšMHlµ÷Ë%{M;Ãò^{) , ÷"&»¬¸—Iˤhj+¼ ÍZÞ¡Ä‹Jªåô.3ù&4„–1š­+s_#3éˉ›˜ÿ†Î,$“øJˆ?´Ç Åq“Ô´>+¢VÊ:Ôt>·$òáÿl¹a­uš+"IG«€ ãFÑ‘n¿"Â.·žh«\ðaù¦ÌuÅØv;¯—;öú²¾Éœ°ÊŸ;]dd~QØžü|pN¨äò¾Ë (Fd>¬0É/¯6ìrú@oAéÌN¨”°;÷ Ûàï¬TœmV$#YéÓ²2V¾Æcr2=…;ï·¡AIWúï赛߸my÷{{œµ ×ç“ò)8Øq¯tÏë4ŸOˆ´EiB œzö³9?„ŠÅŽi9R¸”¯YCŽÑG•_þX÷ösÝ#dÓmÜ–M¯øF®!FˆÀlëN¾&5g·ç‡£±^ÄrqñíëáÀLnƒ°VX3›£;qöÿ†F3\>.ç ¦Vv5xæ-§àe±á ÌÖ\–"óï‰f}féèƒ u¾Ô2Ó-Ø’*JÕÈЇªç&t\ÑxÀ+/ËÿL/CòÓ™©Py! 8‚D}ñ6ÍX† UŽ’ñ`·¢NZ˜Pô yçžÑÝpm^#©.£´ ŒCN‡£»Qêºt·ÉG”¹DOT&,Ç:4‰ßLñµ D¿ë—õ®£i¤Œ~Û'U\^fåCíW‡£N¶STðÖE³üoe ¶¶yœ›ßÂ>k\' :¤[¾g¼ª¥tGß!êDwLZ¢[þ6”Áœïˆ=œ Ž“}ºÛV#*á–=;q8Z£ˆåÅ!j•Ö¸´DŠ®áÒOõwŒ!q‡}ŠV™e½¬Çö‘fOÒOå4ü®bb%½©–E• Lá¤òÒâïpäDj ÷ º$‚•ðRmÞÈk:féÒ~ÇØý’±;‘)ƒM-Shæd£±˜@ÏâšhhÅõéÕáhŒ^YòZcJÆã,8_ä¨#,34˜TžX WÛ¨3{›d`° ¿iŒ$wܵmþ}=u&žÞTE÷~›Î/¿À^„¨M%œi^ðÒ%µüÂ\"2)8 iúœ²2&7bóFÀ ùÏê~`þLyùååqôeõ‹ïËSuý®ª‡\ÝðWƒ?\©̯T›×Äè½|2½#Çóz@Ðo§ò7ùy…Å>SDeÛ™X@ /Ÿ`^ÜU>~‰Õ˘¯„Û|™-Ö^ždYö®2T!)pÙr_ù³WÚùfv^ 2ðæ“ ±ËF{YwcbŸþÄÔÂCµC[;¨Z6HEkˆ¬Ì›e·‹QÁ¬Ð|¿CÔO¹à¢µ2•ÖÂGqON;Z¶ûwŒO4çÒ&mÿ¤-lNJRµüˆsÊÉYÊÄ^RäNÚ@Ž^ö†ÚD¥h“Ï¡4³ ·bJá£ÒèBx3¿¬ðT²[tçxÃ;Uëô®˜Ýƒ{pTÚëÀB "“ƒr8Mò Jˆ™'ö S¯èg^F¦ùØ9Ýð!˜[É™‹8Qª¤ûí·äÐÞÙž]TgÌÍ䄉¦QØ'f.oŸ$Ò[H¶YN/GŽ~4Ë1CLÕ38F’´w1¹ÙŠg¡Ýrôx½í•Í4åÃäVm¥Õ;ûnÇÙ”Âø”¸¥œç¸§í°ät¶gfÛâ‹TY·¾g6ñ}ÙݬD-nQ=}¶ì×ÅÆÿ…8-£×UšmÊXMaïìÀ2ÛŒm¯Y¬c3¶×ÙLz,£»•[vÞÌ8&Á&£÷,FÇõ[ÌÃðºÿXë%­É.*ß’¹êµ5Üc–Äõø˜'`kê"sFRV‰àÜÓ) p™]ÈÁ@Š $H0°]»›Lµñ;qMäƒ'Žwcˆ%.EƒøÎ\Ö¸`o½V{ËØ$¢Ô_|Õ‹ßÂv”»’ëaó±Ðv"$×kú¼’*ùRWú %Ï9þŽÞ’Q=öMÛ\9%¼éC)mô¬ðå-¸n39(%Ø |mð•i ˜Ç+å€ÙˆMMz·Õ2ŠÁㆣV­碙ñÇ娆¹'ú „k@Z£žXñ7¯ÇÆHù¡k$öÕÐo-ˆ¨TZÙWn)J0ËžìÂKæ V÷§‡å`o#Âø>3Âp ¬äpQ%²:Ž0„”]´üM9½íz¿:”37øx ºq¬ ™Œ¥Oükf±>¯Â=»™4uçf‚Ÿ=˜ryÁ>¥–­¯é ÈŠðð]¾­R%póŠhÊ:E*µ…G|RzùDƒ€QÇááif™2+èiáŽj¯fZ-^Axv±—NrÃQŠ$UT¤p`P4:Â~.©f ë¢ýb™‡T¦FããÁ¹¼œòLG'RlGe<¸¶†_™¢ iÓžL¢"Œ¯Ê± ‹¼#>–`0nl̹Ÿ¶,„v*¿ê„Iþa6肞ð9Ïÿ°-fœJlN”µ\>ö!Y¨ã=3P@ˆ®69C¸ÕÁ ©Ô$prY™ýtã$HSÐzù•}§‰ótFç´â) ŸùäɘmËÔ‰y~rL CZF 12eÖøÌ¤“tо±ÂJ´¹W&¸c± B_eRUè,÷Ê__V^ࢀ¥$ïißMTŒÒJ›î²êv…ßÔÐjoȃÙ+öñ‰ÞJð /s<åíÆééƒ$IìÀóî. Ùô––¡Ñ²/Tì#Ü4[kt¿ZÁ'ÇG¾aâ—Ÿ!“¨MØ#j¡•Š(ßLDS®àà¥Lœ z…¬¥€kýªžZ* “²‰?±^Ç“±ÀY7͵«ˆêWà‘Ö”oP7*Yáª)_ƒ€„G}Z`›Ï£@šI"(YÜÈ_óXZ¹L¸Óuêï£\×Î?Î"™]Œ∧2¸¥àœ‚œBïÖÃ.kÛ¹ ×&7Vhï3{ÃÂÝA ·é·A8ºÓoÛóàœŒÖõT7ý§IôRÙ`¶¯W óïï;É7¬Ma |¯ ¶âІõ2u©¾ DHçb/Aü‚õ¶â€¹;Ú[J#æÖA8£¿d×|j2'›î¸ÛΤheŠô:I²(´‡Ã vÀ.gÞÚ°ýfÊì_ÐluÁ»ÛâF-J†B¶#ÙÂF¸3">ŸO¸ƒkÁ³düV¨¤„½äoB,Õ¢€ ¶N#]í¦Yg QÄ’-§®bË·Wô­Wͯ¶·q*háïVVk3Nrh¸#½I…6 49¬2G¡Ç4V쩉wMœMüaë³pce®R§Ñl„¼h«èr<©mÑ]" ± ã·kñŽiƒñ%J. ¢†U$KãÖmµ&ÖÁp°)MŽu-œãøÛ©iv\ûì¥öJèd:ƒ{¸×0‚¨·¸Y ‘®Mºw”yâ 1êI}Ø„éɺ¶Ø;üJ0ÅXèo30J“ÊEø[µ8FiGãŒPÚw ÝÉÆ„£ E:Õd(H€3>XÝ£3ÿ—lãDl ËÑ<¥öhCµ‘uÀû1g…VàIƒÜÈa£Íe%ÃÜ!ZáÈe¥‹…óC.”óØB½çàב×ÉTõC?BF6•ÆÏ­b-­w¡Ú2+s²ÉOôÊMã2œí{ÍU õ^Huü¾…ŒûØ¡Nøó·¤p!ãÊÙ%n½¬ˆaŽj'al/ËÛ¸£ñ3P‰F´5 ó°^cjŽaŒð{/›Câ#¼¯ Oξk/^ ÄŽãYôƒ_Iû™^‚ÈZGe£HiùᆶXþõ ´Ãð$†ª ŠÎ.”;+õ<”f@åL]Q‘¸6ÊRþ~7v Ú¬h‘ñuâ,û¢–G\[gE²ªaJÊ}çJ¡:ØqžãsÉŒ“Þw9NfÇ1õò+»1»¬|4¢ÄN ü( úNº·~½Fzót¿^W¶~—×mÊаžäî!h—´ˆ2529 ÕaTRÿ¬ƒÄs|¤ØüY'ÚD%¨2bùzÜ~çòõ×,º¦‘A®goJ²BØ{²¿yöpŸšÀ‡£‹A„È:ËÂŒ³ˆØŒÆbVÖãò´rŸ|½o/Lc•>•iTë…v=Ä–›.k·oqýt.mx>‹Ï]kÈc–$»j˜;sš¿å2ú¡†•?—ùä’×mfý3Ec‹ßm2ej–Þꃞè~aÔ3S¯ø½èLýˆaÍÞ«!7NàâC”5–²]°m`üçÊ—oq>â˻젡¤©QÏòwvbãmåùg΄DŸÚ¦›åƒÖ¼ô@ÀÀ1΀Y@ŸÀŒå8´Ï‘ç§$yvl-VÓ3ÞéyíbkY{'ò%ðpdKâ&ÒÄ9¤É¦91ÉÛ¬²€Ø°ËŸ¹´¥ØƒRŠÁ3.?Äë>§ÓJ³0ýpb&¯‡™–©z°©u³3¬<‰9±ÿÁ-¼¹&¹QÒÂm¢£MÛ“årݼf‡uÎ_ B;q;§…îC†¿ÝÒ¸'løj=žÞC<¬EŽá×Ò¶_³¸“{ôéÕ6tìbG *çªÆ;AGÔ<¨®bVšdé×1ž³·%Ø]Åðy?0˜j)kP >=R"`±³e6Ù=kÕ9ìÚ™8ø³é$ç/=¡m‡)˜MZñëYÀUtÐÓ ÐÚç7­Ê|A@ÂHÉ7¤ÊäÓGú‚ØŒ¾ÊÏÊê $ª“Î¥Ú yt²ÝLT½«)ö‰–mêopžÍ¼›š°Zc `#Ð=¬ŒW»|/Ðg G(>PÓÊ®2ðSp_M~’ä.±£EÜRÿ˧Ë{ÂjÝÝUÍkÌ«=f]q‚x=%3EØÁ6ùUu$<&jÎa “ƒoêâó!‡%çd1iù¾N¦RЧ•„‹ \`|¼ðø·›Ñ x@£ñ•‘ Q|1,ÀÉ_߬٬£Š!•DŒföÃuÓ“F7ˆÞ}¥P‘ŽD´‰¬tÆ+ÛöŒÀUÆ÷„ê¼vXƽm²µææŽÝoŒIÙW(ë’¶½ÅÐwÅ/ãÉ£KØym·â°>‹DµÛKóH!_è*–ßnåjz‡E§/†eRHk›”/YhEY´¾âv™„i©C¦æ³«tÖ„".»Ê±£[ظîdÿ°/nB«‡—Eñ`C™µÕƒxM1yfC)§OmÐùBô8à ã½TØ^G5©.œÔ3·Š@(êÅÞ‘¬M ½/D³1&ÌûºÃª07@ñ{‡WÚȘ÷àˆ(÷¿ŽÖgi{õ£Ð%ÌÅË^ÇÕX¶pŸŽNYôŒwÝ="¶^àÀЉþÍÉÌ‚öy¶=O¢ã9ãIÊÚXØ»sÉLvæ|·§±úe72a#~¡‘¡ªñ)… Ž´»¦M¡¬/µ)°exVþÊx’Öåþ¾s†Í¶_ ›07éL‘+n}Œ¤º˜gsg£¶…‚Q cŸ,õ’Õ)Ô7ç¶Ö‰Ûê9d“÷¯[ÈìåP·Î7Øi„¬/Ì8d$O£1¦ûL•/àD¬¬ŽéšZZ˜èÎ9¸ûÆ^=Ü)_„7:³ À:ó˜NìÒ¾‰Ô6­¶¤þ <&ÉK·´:Ý{ˆœW¡¢HNÃH\kvßM+ŸöÖ­B=¹ÔÐ:¥Fè3V…Ö¦$Ëåt8*!•u¶u®yØ ¨¸áqßþbRw¨¶0mc–WãÂú†¹Ö›¼§&ú®òŠ–i ß#…1 RÄQŸý‘@` °P¦E¡ô±0)yÓã/æ.¿ö¶Ò¾iïq­ëeõ˜ð‡Óߌ/LÛB…>žv;×7g_Fø’9‘c,Mعšì1$íW­ãà=›8eñZGÊ‚À~CÍ –„yHÕÎïê¶Å<Áˆ»y@gÀk‰iQºW‘Û0ãÎ c)|›áF(_"e Ø»Ì[bKœÈê€ÜÂ\»J^²ÛÖû•<­–Im¡ü-øÂBAf gnƒÅ›¬ÇQqμo*§ïR7[>¶+3ÇêÈÿP¼÷xwfŸXKL uuM0XŽ_4Ü}^kÚõ£-HsÝŒ¼}Ûf™¬´X¶ÄŠVDZþ«÷ð3 ˜÷ÞD–Tá4VÜ3„à~«ö­KP`Ë«ù¢·¾zY,wª€³ªŸvôˆœÖþA31Z&=)¶è0ißJ#?ª±hñ4»F28 ÖüoE‘Ÿé-Û—ÐÖ%Gƒ"€ u‹R` rž,O;%²¥ ±ÍTKaÇM÷0 QÊ*¢§÷QyÑp–Ü -Т޶Më—6[ßbÛ|¶¦»ÞÃ*x ±695Îwwn[l×–¿ÅÚFäl§„­=ô˜}ÓKÓíËsP6ãúÕwUÒµê!×#´öŸNri­‹Ô€*}"E×UxzJƒ±ƒ=¡q˜¢y’àqwõO#¸2CQû9“«¡üÐ{cÎpC&wŠÉÐsß–Óå¡¿cƒ’ÛFh,6&kùûª=TÀØ:šwÆŽcŠ`­ðîS—; 3ºH1H?‚%[Èdm 7týö} s¿Ûae6» Ĩy†)£r–#TŒÔÁ7½-zxÖ04nCÓVwó7¤âEä¸Ã/fVgÇX®áZë¡Jž†`äÊ€Oã=DÿÛb[V6÷©€ù‡â®-Ãä;àóY±ßU´H¹Á]é+¨B&ô¢+‡°9Z]’kJ¦åB4¬n®=³%ÙÄõº`ÎÖQÕFìl§6@×2ˆBFé .Åw]Õ®Q@Ûuñ|Dn¥Ö×ÈãOøb…*ŽÚòZ Þ óéNÈP½†Ÿ¹^Ûl õèœÞˆáp¯zŒ‚Ý­}¾uí1{Ÿªï˜VÚÀEnÚó{V@9ëTÑvÑqÅ“0-[pÍÝS|*úNCÆ]]o¯Ž¦{—¸‡ªnemÛ§Ñ}QŸÆÿ>š*¸ž*‹½E@ Aoÿê ôŽþøL¾eLŒ-¡ï¢êAž¹m%ùº˜jãŦäõ¡kùÚ7d "©ÜQGZÏZ”võÈ×ݵ·×“º¬àû&Ð5ûa —°â¢éÓÏL¦ ¼ñŽëâ‘íÞ´‚I UtM¹5'%.L˜Ã¢!sŠéR/s›û®«;¯\ÎÀå§w)àÑ6">íäíƒWÅ:*'oM]Nº¤ü|9ü‹­Âªäš,ÔáZMçš.mDÔ}‚qÜoè¦ÇîAºg°€€¡ÕXÙá[–ý]õ»&i˜GûrrBJegÀl>ÐÇ•õO½ Û„A¬ Flî…Âß¡¨´í·_8ä-#øXÝÂ14hfùó@á“Îm Öø?:²õ/2©Ú× Ï> ¦±¥6h±Ù?-³ïaÊŠ5›yS O&±3Ä»À µ?ݵ‹†~<àc¼ä—µ)k‹n/Ÿ¯ô˜b¶`e9|J.Û6´ý0WøX—èô&B%pÄx•º§·Õ†˜JGZFömO­&ÑÎ;ôZìÐ۰Ѽá=Ó»¬¦§Ø¯O¿üQ— ûµò,o;0([&ÁÊäÝÕ¶ßq!Êi“Àë©õn¬gVÉòw°²<Ä4Îáaø'y〠࿩.ãqFeäúV[è4Û”Õ <ÖCCd†V±ýçM˜>nÿyŸÍÌ;po¸=Æ ²)ûhèyTžl‚¯ˆˆ¯ßS+zÉZn~…ÒÕ²ûÿÞÚÑzñì¯Ïþúìÿ;îendstream endobj 125 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5526 >> stream xœ­YytUÞí¦I§pi$¡ -|UŠˆ Ë€ *ê@0,a `È–tv²tÒé}«®_õ¾eO:{: I @ØALŒ€ã:€‚Ž£â,ΈΫöåûÎw:‘9:3ýWŸÓýêÔ»ïÞûî»O(=J  #¯Š_>onøë¤#sÁôêÙs‚)‚8ÁC‚Õ‚©‚5‚g ¦ Ö âÓë 6 f 6 ^Ì,Ìl,Ìl,üBð+A¬`ž`™à1ÁrÁã‚‚'O V æ V ^LŒÜ%Ð $‚±‚y£BÁhA@¸NxsÔòQý"…hhtVÄËgÅ+#ï‹4s‰Ö1Ž©¹+åîÑwÝÃÞ;áÞAÉ̱cÝ—?nÎ8_Ô¬¨ãщã'¿DvMX21zâ1=ÒÍÒó÷¿:I<é•I½“~?yÊäyFR@mòËj…¡{E(EI/$™w[4,[,Áp:Õ­¶&B;ÓÇïyÈQ5>=è9ÚÈí²B<¿§êmƒäb^Q´G¤Qƒ\íÕ ûm=°º˜Îð`§ªËô ØÈ¸›,tRHÌX›¤ 0Œ"‹Èz|%ïKøM€Ÿ¢]ƒhÕ • Å¤#à¬sÊNWÕZÞÐ÷Þû@²&®Ú†ïV¦Òª4F…Ķ–]G¿èD3^=T`)5Súœœk€(d+ʽMîºöT/ ýćñÍÏl‰“«(ñ´¶$ØEùŠLyªj5X­epPÕ—jŽh‚,‚‘›ôB|ÊbdMÀH5îÒZ•«ÆEIBë ˆÞ  }Á(þú§¿ýOòC¤§Ë@ »Ä×¼±óù0Ó8FŒd:Išßý> Þ^} )|N¬Ð€\톚`3”0`1+i™ûè³áQ´„wßBtÔ%ä¿$â(H~¹úâø>Lâ)xÚÔ³«>B÷!MAP؉kÉí;ƒooB¢öÓt÷àѶ}@kÙ¶:©`ª,ŽÎŠß”¸Ih[A04;(D~" =OrvÎ vÂʺµhtÔÊEI×T&€§`.Àjüô_§" mDB”~Ô«“Ñz†Þ„ŸÇã^zˆ§?ƒ¦¼Ñˆæ]A£è Ÿ~ø ¾íšùD®I ^Ÿ«²SÞ7ѬáYñqo‰~‡Ç“ú =³%tj&Ý ­¶h‡N&8ÌÀ2¨ñkA¹ œ^§«É^Iw¡i®’Æ”“ EBt7šŽfü5îXÜæ¤]iY´º?ÑŸ÷Xa…!›È'Ýo\~ˆ>ïZYr¾;ë%Z—´tk´×Ý6ÎfuÓ>üÿ…WB£E¡e¡É¤¯Œsƒƒð¡„š(.–5Ê×ãå1¬Å¢–ÐøÁæçìåªõ³ý×Ñc@ ÄCåCÿg2  –ê\PIñSÅàÀY}åÆpV{p„_ F ËîÑS;qdÚü"ø±$d†`H†–}$B ß!õiF},ß“ëu1ZƒÖ¡4T€ZðLÒøü0óòÏ^×ÄÄW/'≫³pÜüGèÍk—$? ÄÔ;¸( -€ z=ˆ::…¡ݢРHMrV›8§Fòù:j ¦v¯À%wŒ½ˆZ">_p)r l©>‹‹Å ¡ö‚Óg³VÛ©WQNW°Jýj0«€)4Rò%ò‚@,"ÖÝ~I)'F‚ÆÌ%9³‡fM¬.üØË9{µ•ªGKmMF(éÐ.q‰ŠU.¨í½Žƒ¹”Æ÷uŒÀ$ýLüq-pœ«‚ðÏhêÐÅË!?ãšùP/ÉÙúù18 j•»5Œ L„Ê#oª–ï;¹Â—þ«]  Jsj{Mú¿i;m®V·•’ð³4×® 9Ž¢Þ¿n8ƒ¢^ÛúÎÄèï ò¶O ë YγS Ö8N(¨8V¢FUV˜Ÿ]’ørÿ®_£G{äð'ÏW§x¨èo³»Üïo¨»p¥¹[»ÝGÉÌúÐgICU“ÿàá”}Ëñ˜”™©èïà—ç•-FB*/"eø– ,C;Hg½Õ{ˆ2T»ÍiŒ ’ Ñ––¡^ETÐnqT±elãfA f°è³ ³h2³“¶Ç«w1ë™7‘´¿=~‰þ• "óˆóHÿ•ópÕiót]à¥A´¸Vˆî~]„Êø©äuq•jü:PÐÏŠ»Ñt{9XÁ!­+qhó´…¥fj;~}EQ¦!Ko¡^Ä}¦b°èTRyvVæ6 u‡:;~×xv×9Ê¡†8žLš³O7ŽPÇZn§ÜÁæ/ûðù˜Ü=Úåv:wiî"ØH<ÑŸuúTg[[U½þ ±º¡®±"XÝãï+1üª,[`¤”ëä+ӀȅæòÛ¯JŽxÆküj?‘G¤»Ýé¹DwØOÍt*$3)I¶”ðÔ#êl…Æ¢bOêÕ§ëôË@Z¨ƒbËâ¢÷Ã[/ôÂAfx+lÎz(Z.N{-á“nA4w°ü šwLÄkù{Ƚê`V~^~¾Êep¨†\› ‰ì­ØŽ#×kŽwô·Òü6å¨tVüDt2æÅÁVbôÜaô¿M”„Îÿ‘W…7¾ñüéjq¹û€¨ðAÇhÓÓé°‹IƒDØjÛ~ùðŽ3L¿¸ |Pm „)]¦´Y‰‰¡1ò…k—ÆC ìnÔ÷ZY+¸€è t66•2«á—±§SÏÝøü½Ï´$4ëÖ¬ç ¢9ƒHvLÄ߇ž# Ùl!( MÆÓ–»e§›Þ ~H¹j?uš x2äB¤¹Óšö´g÷1UÐ{ËÚNTìÜŸ3¯ÃÞ¶_·]؇æÀ)âÇ0†TÙ”’”‚²”W€HPôðp ¾Côôœ3àÝvi˜¶Y†½…‰“j-($¸€^œýúËéÛÜ]¸÷'óîj¼Cu2Cš‰¥¢ûÊe•²IX„ï³ð´ù‡—¾GGЇêö#N#¹¯ÑËV-ˆéVý@Ûñ S}€n<|¼ˆC“-¬Éb¤%!ϧßõˆx†’D+Ñìúš ¯½é”º9/U„Ëì0P…ÇäÃnØaK /´Qr‡uÐå¬ßJ(.)U¨ð7øpÌeô¶»Ýí> Ò:Tû V½R˜í )¶í·Çþ0ßݹ³øÀF÷@¯mì‡^fß°,©ÙEkÀíqºÛÕô^4Ñ(ò&nw–‚©l« K.¬*ª öÙº¡ Ú™ÖðpÛ^á׎ÞÅ©]ê q[Shç!Š| å¼%BgBóÈ‘]”s›Ñ²,CM׫Y r©Æ åG­-耥¦Ñ,£MÒ§ľƒF£1èQôH84íH+”¥QÌ„ÌK¯{ïgo+Ó®°VÔ¶îïéìù±`$ EÞZ~@ÄOào’ž½NïU ¼#î«3[™W ’m©? Äáíya8qΪ÷‘,8»/ˆÔÀ¨YFn d%aÏ g„;r _Œ“+N]9à§ÖjQºž5Xqfbô·(ÔDîÀÏ,Ú–Äeƒã8Gþf¨$ê¾bõv㺽i¯Þüìë?5Rä)Îiu€Mz§‰ˆþ}–!5nõ¤ÿÔÁ©èoC°¡¬ld-QÏ徑XŸ|]ÄÇò÷’ FH ¡ð)ê›=Ç’º_ºò§,ÿ-ÿÑW½OofY­žZ4û1s ëóúúO5Ót”î:|oø ÏR‘BH¾?²@o~÷œè»q°sŽš[*Ë  gB$¾ˆL="¤G ² Þ²­¹ÜçÁEÞ¹ï¥)ø¡ixé¼£ó¿üq‰­Ðüz_·ÏÕL;äAôô×6/ûësÒÄÏ@:-A89Ps…—ÑìßÔ„y×Ð×D¨ŸJ~(®òÞÒÛóâòwmÕ—ÜݾS]à†:K™"Ó¤ÜEDAµ¶²±±vïÁ”ú”yxBš*Ä£"–‡1*Òx¡‚~CüâÐõ*mбPªOSmÜZÛ4mŽò¨%Å^E^^Ñîă…Ý7{Ñήp±>½õ4¡³AahÂoEè-t‘D¿£(4é/h̵ØsXHãSÿ¤»ø{›¬örIù¾ÛÉÇâK'r_**±c½{{‚<%–ðI89àÿàF€—,¨S×r.LŒþ}vŠ,|J`,ÌN“¦nM…RPAäøjÝþ:¨"Êt5¹ÅÊí©ÝÅ×¾yÿÍ÷k($äWØ+À öáx¡Î×g™©è/[•9-I“ðh‰§ãç‰}Žþæìõû‰ó¨œLÄ+ô²—ŸézËû¾£mhLݺñô¡¾}@¼îyJOKB.¼áÆoÑØßÚ(DÓ¯@C×D<ë$Ñ3o£{Q X=ýðpNÆ©X‹KñÌ É{÷º]u”~£% ”D|ÝÎ~Dô¢uV—ÉaÔ[Œ •¿4!{'¤Áž Ëg^ì!—täoùF4ó=9øÅõWßâóøîÇ·a?ù0mi7¾»ˆøäµ[6ƒÕD£i>rZ¦‘¡É„ý]íG†Wrõ fõôßÙËõ3Õƒ?/àéCŸ°V©ÆSZSWVå³QöŠv4ÁÕ2Òßyº8ku{mûÁ³—þýݲݻ33(I(³ At*€N…|1vþ.'†HW›Û겺¬íPĹ?Âl£yÎúõtfVB~,ÓÄ(NI¢)]>wˆË/\Äã(\õ“¹n7÷ýs.ŸG•H >pR±XÉè”ëhÍV³äÄ¢AÙÙkmߺ]§JÅšÔ U².S–D&ÓÜÞdk°5ѶzÇ!¨ƒ3»lª&$h¤ EÒ«Qhü™#¯&81šG×ÐCä(eåÌ\„^É57•u”uÓçÐ ÞV«j¤¯îhÜ9; Ï0}Ÿ/<M_ ç SþM–ANg>­JW§«Ó¥Êf ÛRNÞè@Ú©èOM|>ÙXäVæeçÕêËk[jZ) ?P Ím¢-ж ¢Ð]ßþ™XV££×mk WR< ñX¹1°¡?‡v2c…ù˜2æd©›©*ö)}°‹˜ûü#-\Øu³ÞÑlóQ`å¬`%|:0ª-ánÄ;,–Fjt˜.ÎêuS>S»·¬{ý¹Ò“@ ($B÷£¨VCon;TÛfµÈ“5­¢¤z‰?øôú–ØE¹¬Á\@±Êˆ;ÚÄÐ6ò¸[Òt‹øc<fŽ›s[›¡ ˆ›õÊUjkWÓ XÀB¨ÂPZmÕ6ª Årvp€]î ¨!¯¸0¯Æ±1&ÕðŸÃžÝ6eµrœ·éz°¥‘@tŠëÁl0Xtc¸dêÔíÖi©b¤Uðƒƒ>§l'à$œfN §y?Ôú´PJ—Šae Ûf²C9ØÂ„»µSe5_ºZ6"à#ç®ÿGnsµx¬Ô ´­Ût®ÖHÁfFi.h‰ÅGòº:j|T §|lw„Õ&yì6 r,õµõ®ÎA;ꀃ2¸°´y¥§¾¼®®9xr`ßáãP. Ç&L»A?ÜZª{šŠ;7$%§¦Qk—+»KÂá¡ š¢Ä÷~<> stream xœÍ][\7r~Wü#~ÉéÀÍåý`ˆƒ]Øë³k Ù=3­‘V3Ó²F²%#ÈoªŠ‡,²ÉžÑÅH æáµXõÕWEê§3)Ô™„?ùï‹›GòìêÑO¾=Ë]Üœ}ùøÑï¾SêÌ‹L<{üô}¡ÎtˆBi}æc1ųÇ7ž,ßmt)Z¿6RX”TËÕf+…LQj£–=ü#JåcZ^m¶&x¡µY¾¥²q9@—¢·PX “´n¹…×:–)LT.ÑïA9 Ui¥¼zqP2¤¨büññŸýî;£Î’H^{èþV9%¬;Ûj#’’úìñå£'Ë6[§µHQ-w%¤LÞ.oÊÓÍàiWž^•§wå釥<>-OÏËÓëò¤ÊÓå©va_ûõûúøyùývP÷eyªå~Ølh.tbs¡¼HƇ³ÇyôøŸž,ÿ:ÛõàéŸkOêÐ:=ôÃ`¶n3}Íú0ú¨ÆÃ`èûòô¶<½¬ÕüO}|>˜Ì‹AÝ7ƒº¿¨Õ¼LÞ›ádù]”'7ªòrPåë{æg?ÍÕ çuž³h”í@²0Î@ž $ùÇû[LÇÂwt÷éàéù`¹ž¾½LÞ tÆká­3g[¥DrN‘Vø“â kk«e²"¥åûAc—lÊÄüq°!^ æà±òøóÃ{¦¤ Bªå¯ƒfØVýCyúïÁê»,.ÛñŒ± ¿>¹ûAo.¿¾|ûæNDˆ_•4[žj9=xrµÂZMTÈ?YŸªˆ{öT$ž¬Æ ÞVuY¾ÑF’|2¸de¡hÃ}ˆÞÛï§½qƒy¨åê¼Æ‡J³OFï¶Ê…ûl$r8ûŸd¦e6³*ÌÍìcD2R&–ge’uVÃìZ-…•n¹ƒ&%kÍòzØ)iõ²»ÅâZ&0‚‚JËî)£7ËåfkU^9BZVJïãòj#…ŽV{Ÿ¥KË?ô)Ze MøÐD(\_ÂrÑhãÁ|ê ¼Œ ¾„J|P;¨¤NÚR‹¹ß¥#iyŽ(΄dÅÁ ½Tü»ge,Ï3v‹Ñ—¥¦ìî{'¥IË5¼N^ZÏgoÇ:Ç^_Ô‘nLÆ–—€SU’6‚¹^kÆ•ÔÁ󸬽ßÝ­5G¶|î6Rxœ…m…+¡b²|%h^”±z9¯s;nï9 –QAXµ-›ÍïÛ>äÆhÌQ™f™X»‡[BÛ!™„j}m¡UëFà'Ñ'»höl6[”Ê-O©¢¤¼CÁ²dh]:«lZž±"{*‹ûÖçµ5´¹Äîv£ƒ°J«ã¾£,]3Y)Õ¹™ô^µRÁ–©_2í­áíÀÁ(½Œ¹„“É@ÿЏ P¿°Ý•$¥,HŸö«¨` «.š3ªvTR^ÅåÊxû¦¬êuíÏ ¢t"J×iê¦Òì;><èŽV\²ÛRàª.a³#‹XÔ¹ÕËW;¶å®É“3!†e» ä‚wË÷ìÓg$µF gâ*µ\@w´ÑtОi}³_Šr#Í•µz^µá-“!Z—¨Uœ­Ë%+Í6ý³ÍÖD{‡w Ïk´ÊóáŠ^ò"*µ<ÞD-¢Ò\Z-˜ˆåpÞ+§BXvÏ릺¥Ò^†±ŽÜÓïV¦ƒ-"µY 3)J(HOÔ¦óëºÉ®il!©å”UQ%¾Sh£¨¨üÂD $ 3rM€1þ ÐRµ1Ç6 ×í‡[ê„×Ëáé:^wïx/X#yÄ.,?oœ¡ «êïµëŽi¹å‚d6WL&×6Ð6 m“x"s¡³ ÉxÇë~›'CF>‡wL‚·µB’àÜt+ÁLO2Ý“;#Urkg|Hh•ªÌ¡>P"ÊóZôì[…I¯ÂË¡¥¹`ÕQóÁú´|6±lX±•zº`kÇ—µ?oE! Ùˆ¢°^è²LœYŸ~_ž*Ýñ⤟ñù¤Y/¬özm©Ã,>¢Âž wšÁŒÖèx<‚a—FýVBKWf¨Ù!7 ••s>´R}‹Üœ²)®úw†Øl£"Ê´| ¯óH_ÃøƒHJs¹/B–S.\ðä)j`å‚íääЃ‚ Ë¡µÁCƒu>²„°kVóÝs —)ÅòÝ‚º01D^–aákú,*;×BÔÓàÙüfÀ»=ejŽàå3nª¡@à|·å•SVs¬Êf¡ªþwCm|IõzàDн7­6¦;>,ì?Dص "· ãù@œ«³Yi‘_üMýµ:þÏFÀIa”+÷”ÆÉ`%+IŸ’™·6ˆÍò/ÜJPÙFcT:þ™è…L«˜§Qw )2NZ^j¯…‹0MëR2›Æ A†\R) ŽÞàC·'´7€›;6×±QÁô§QQǾ3çˆGëgEÔf wïh$&òu<ÐK©>ŸÃé8˼®>J%5-½’!jÇ 'ëw1vl™Në6 -°xö€-Rã‹~!•”µ–^ ™g_‘êს[#Èc¨€4D†òÏjë|£Ü­S:Í¿¶Žr¯ „pzý¾ã×*Á÷y­2¤iZm†@Ø´î#,~2^Ó¼D„êç¿£—!Æbfq²%{Š›Þêª*œÎ|( 2ÑO’ü<›ò)‹\DgwªžwóòFõ¾€¨jâQØäõ½Ð(Å aP†´ˆÒ.«=y6tZg¼ÌBGѬ¯Ù–f{—íæšð=@L åîé;Z ('Žï&¬k?¼bÆaÇ\Õâ¶®Ý!ZiŠømȦ'\t'X(a¢;­«’¨ªŒpêÈv/×Õ,M妌[Ù6²IÄœC{BÿÈ.'—ݶ°Í¶ˆJH[Dô-.@JIÚ½ˆŸFÔ¬j¶XŸmgGdÒÖ5óòŠÆâ“yõ–‰17_l¶&%bºwÿJhV§Æåý•í‰}¥þ8®Á6ãûå?7ÑÀb¶ö„iÀµ¬R­WBGK­J bþø/}9'Ê2EÄçOª©”ìô ô­ãŽYìžWÈ–#C;$Ô¡ûH“Ù޼ꔠÿÓY†ß­ôË¿ÁKCÐ$¾¨›ží"ì;àHNõVŠÃí[*ë•]pÁŒ2>˜åª¥ƒ ¸Î3¤HúVÿéc¤/w% :‰Y¾ÚÓ[ ¹ú…§ÒzùêM}~R±–RÿXï ìÔ-…‰™®oê€ÙpFS9ˆ£)Ëâv‡û@K¥0o$‹ö;àæ´RHžX©)|Å {Ýꦭ‰—Ž Ç›:&ÒZJû#â|Jl¶^ÒÚµ δ£³1õ†5ˆÎ8<†F­Š«Žcç«~ "ò”O‹U¨Õ›¨0Ë*síYÛ¯aÀì½£®Á4µ êM1qìÙ£ã£Øoì~iSá=<°÷ž4÷r³yü÷#Ý®Áç Å1|ÓybÓ5oµB÷ ó-ÁåôÄŽH¯J[P_C–ƒÓwþiqkZ™Ðp7H3nPV†O§ AˆFtLvÃ6áç \À$¸B÷ü ~í©^ƒh½vnwäÖYe{gwwcJ_Yu¥×M貯]z¨—ˆBÞ{‰ z­ÊJï8-÷’ˆi`ïUA$Å2“^„ã¤gfŒG:¦¥$*QÅ-ç?`'êyà˜¿ÎˆH"41:æ05Žè •0ÊAvHÞ¬B’&€–{ñ’k¡²ŠÜCË(ã’ã’ð.÷C¶ "2 Òe%Ù†aV“€õ‘—!ßY(4ô9Uf$üÃ7ñr6®“f> Òò5à8f9º0(a—)úkãÝ”àÓ-â 9!/¦l%)㉶*8d~øÍlˆÆ¸5ˆ‹êà¼Ñg5ìwSã…/Yñ#kƒbÍ!ÈÕç™T¦®tœCËÅ Àfÿ°CLú¸Ní@E5N„öaÂæÚÑ£Tiym¸oz/}RnÁEßûhÈÝC8ã–Ýeí(ó¿zŽš®€–hVð­—+qxMƒJ=˼ó<:ÛjÒÒç]k °ºu3€_ŽÄ!w³gYÀ›> =|ÁÑNœÝk*SÊcýáY€Ñp-[}½_Ñ],  Ôå édÇ\Þ‡<É?ÎÂCÚ ’uÕ¦ÓŒ»ÞøfmØ‹Œ~À %D%äÉ%Á•2“Úëê™1í1r«Á½ <ß>Œ6ùJB†:¼J’¤hîÇkp¡Þ§A7\£Hô½ µ 8àzù²°ëB†¤'™>O«ÐM2"¡n¶ì»Ö¥ß.@2!­õσu[£¡"beW^¬„¼ôá1C¶È|?¶P¥%`eèÈ0Îó¸%O:kcÛ#,R¶ h•„mK’1Á§I,†Ì’O)'¦¼k}w˜›‡®¨'¹lûÜi² ¡h”­žqtÜ1dð»Õ.­h˜BýÎm8êgÚùmî)}•„K'PNå$ûlšê¨SÊSxsÇJì+8¾\[NL"w¯Jú†×¶5“î[²EœÄLŠ ôÙ•]Z\n¯ÅGÜÈž‡þš‘Ña¤„‡z“÷Q0ëù›¡âܸ$’²lšžsË^Wåh‹ÙÁU#¦¨È[ZþD¡Æ|>hÃ'ÍsÖØÞgR4õ§˜Rε¹‰Beñè 'Ýã ˆŠ¤6Ûm_%pO+bû7.Ãù÷Ú¡††ªÕ¾© €m)jLÂdÝj–ƒ¸× ƒÆŽ’L0!ÊGÖ)~5çèÖ(sŸ]¢…qÿW[ ÔVba!NûmsÞº-“K¤ D'(ƒüD–¨2tÁíî]f,b2Â¶Ê ‚$±¸g>I¢,¨ ®Í&‚ÌàYnRjž:|—{w‚«[{Ï­IÍŠáœNIˆ õ×ë\~ä\zàsÅ^s¥Ì|·ëŠ÷kÞ³ ±IrdN›inAFN³%¹‘–-9Å­#¤4ïK;òº ÒÕ úÜ÷çlæg&Ì”ãÎ&Í_3š×‘Aõ”¦ªéýÛ¸"ñYK[ˆã©4aî/Ë÷íq}åŒÖÂ5‹‘U;ÉFlñôxi¶]GY%˜À;̵¹/[ÊZáªsººÏ*¦mc„TyKÐQ:&PÄ»¥aã:L~bËÇ ¡ãÌ©ÁµOcÕ|Þ‚§±b ½ô§T=€@+Ñd´Î@> ›/ÛĽ‚šî¨Û{Æ ÑìñÐÆ(´t`›¶ÑôÙÊûù ÖWW‡#àNæ°’ªDdžlºsw—µG=WoOØ“ÜÏÏz‰Æ<©ñ&nHÐ{þ„RíáŠB¤ñèH-Ïö;ÎT¹z¸J­8ñÞàÖhsœ*ªÊÓ1§L”k¡L¯dÇÌÏÓz`÷f¨ÍA’1šŽð:¡ ,©6}ÌÌœ>)~>€uÃlŸ …ë—{òžL Ü·³Âa–+“#è^å•̺ÞSÔÇÙý™E¯:{Õ]è¢æ©ÏÆ ˜ïh9ÛÃÃð\ísú£ØžÍÌ•u–C–ý:Œ£¼hÎÅå» 8H>(…ÇAß0ºãK…õý(óNÒÚR)MVE€¬ «­ÑÍ(°ãŒ¼Aœ­ÈÿÛ\_:VpåÓ‘cÜ3”7T‰Qš§;N\Ò‹êɳØÈù4ñZ‚¿?ƒhQ_޳x LËÐlHßç `Ë‘Cü¬}øw&¾,¿UüŽjJè +¬R ”Tà¢E°T!…Ö[§>Ù&¸Â ÿá|¶÷¶á(„ÑUâ1ç’­Úœ¤¿·vßHƒ+Àeï@[O[)xfÐäÎÃ-q¸áIÊæHã V¨8Éù9YYü¬Ïü€ÖbjfoÂ80ÍñóÆY¡•·§ÈÁ¯‡­úý­‘Z$iú²TšúšÍ}V¢WS…>Lú`ëÐ-a)ôœE&­âü³sòôëmæô¢둬åŠ2:Zª\(#ãGÁf$³Ó!&Ý9}ÕlÖë&nO›Mm„s2~ Ù„ìTHâ`aøb8¡{Š}[Y‹šS­ÞÅÓhn<驤÷~ù–¯ì/›ª! ÊwüÐñ†€ùvˆqÒÿÆö‚ºê:{±&˜³ó–ãmÖ!)YÂ%ý8e"抿É;{‰ q“T o¢‡é‘Y ®SÓmòeh3Õ‚rxŠA• ™h9zÊ3ÃCñ9F¡K(áÚ¨osž‚‘)v¶´sáq¿›6p’c“¨¾ªGƒFÛ°,«A\ XÕXê·U[NîBh´;ù˜ç âMˆVµÁ¡)ZÕ³—N*â{x8–aljjÊè_!"‹Ô´yæ×9M) ëBËd£2Á—míòühy (r­­¤~*Ø p%â ß5ÊÇ 0ãÌ€ÁQÔ±„lÂ#ÔÓ€‚…ŒÍx®Úã!rRñÁ+êzÀO ‡6ÉCµf& ó>æè8EŸ c=f¶2Ù®WŒi`¦ŒÔk¯°X«íR éõ© ô˜Üú§’ª{d±zÆ!ŸíÖI –DÀŽÝSð-#sÍOþÖŽÊÔDίGtXn´ÝÊSM‚{­‰‹ ¸YÆnV‚Ÿ»„_ZÏý×! ˆ¨›{9¸›3ó«&´4v1ª“çö5-L¦±r”¥óª±`€I¦#êº&.Q‰Æ>®Iè™ÀW.žBRyfykok'ß{o«$Hz£QÍúõfíEÑ(év}ð\†4Æe^Êë/cª„ҳ\»œj—;4WʯÙEûޤÌÚuMþnC mB†±Z€›9æÝz„—“ú§1ñ\Ùø'_™—/ÜÑw(Ú•:…¸jLIcê¬Ú>HÉOœÇ‹njs±CÛ’õCOQÉHBmÚ‚cžpj±qEUlÞÕôY´Šp„>´PžGXc ‚£'Rr7Æ ¶,…M] aŒ.S£|B¸AàJ¥½ÊŠÛÃz¹{­G8 8q黤‰sI5ÝÙÑcJ 49\m|9¯é¼\M¼—.YÚ‰jùËîªÁÑ·õÏ3Þ±®Õ@r£‡n¨„ޱ®¹¡Öh¨Ët˜Në—¿—š÷GÛee]ø™Ql¥ÞQ¸›3Õ gõ~Ac®H½1ëä•(ý¡8y¢<—äJ<£ÂÃj<òvGhÙIákªÄexä\ ú½U±ÙU7º1þÔ'Us´yÎâö-—TºBºbéâŒÛõîÕÞ)·^}9RŸâØh¾G£•>x”ï“3ʹÿêMå%ØE“4þ×¼O²'†BÅ3+XòOc¤òˆxÑÆÑ%9í^Q' ©jâ¾òâÍ-iE5 ó„}“¡·xÊBFƒ´L1—ì‘÷žþã4D±ö§KÔïú€j³“>žfò7v×ûš[Ç=Ä;ªò‚wKŸÚëÚ‹’•¾O:ÃV¬JÓ[ûl„]W·ô!€é÷ËÙéâÔ]FM)}–¶)}8Áê@vr§Þ8Žï‚wÔ \)ÄU?·¹§¹6i’w|¾áçC((;ºO®Ó@ŠJ›õ]’±½¦qÃúk©‰6²V;Ø\ÄBd^Äò>·­sÓXZ”TŸ$f[§bx‚3?wg‚H$õÃu¥™ŠŸF.xFωð¶‚ôJ~»ðöË÷gìƒáÐþÖµ{Î2ÃSbÇûª+fÊuPtˆ !†@O{Xô8G™]KÙ\c”u†"œÏs>¥UË&€ÿ8Eb?*4•o2Uì̓ߚD‘Ç}—bcމ‹ØÐÈSËîÍÈçLÓ“±;þÚžþêBéY¹¯¬å(ŸÓõׄuiÑ:A¢‘Kv¢–Z4FMÉîø@u&§ÄèÄï¤ãðN-’Ì8ñá¶G*t²È–<èô54Mæø×ð}¸¶2¿¯ƒ~ÿðãYе8ÇÌ ¿ÍµI é“÷äŠÖÅ.‘‚•ÓÆ1¥0Æý+Öw0ë3e‘×\OdhwïÍÐMŽ5;ªôŦKó—AH×ß–p"Ÿ?á×ÕïXêÐŽËî¾'ïŽî4bÆ 2~Þ=q"[~ ¢&ÈÄ×—4³ 6ušªÆdï÷ªÀ€»xçªKü‚Õ£ ú|qw¦±Â<œIg5¼ ~uTÝ(Wo~njôy¾8^;õ2?c;žƒ^sÀ’›zþsrº°KßÌ_MOgõhlpæ¶HTF½!õ©ÿ:<"Ô™Tx yÍmN–‘€v»1V³[á°xëG\³ÃªÃh^ÈI`žìÈê·ßæúd{ïÖ›ÊZµ9(‘úæ¶Fïö'8ݵ0X Ð*܉EBʃˆSdzՋ_ó¦†÷»íï#úVú-vîèæÈñ­g[<ÍwÙ¹ô‚bnÏœ®ý¤˜ŠgW·Ýƒ·s­­€²ËÛ&wf.>ÈcM ?½ ´’RšçØï©àF޵/úôcmv *ËǬ aÂÒêúËi‘4×™4‡ç)cBÝ@”Ô˜çáQRRK¦©˜øljo~vçB¯}– ¯üH"ŒR~92ð˜:»ËkÕ©UŽã‹Ì{GìsN•ãTftªôß~ÀMæeˆGV>7Ø 0R˜ZÕܪ| ·tss’ã>žär¾ ŒÆ[4Ž’¤ tσ1Â~²ƒ}MÀbZR-_ÖÜC£Ë‹sñ@lc ã3ïòPdìoɤ>ì?9x´Î’\=h–ñ±[[GÏÏE®·ó‘>m…^ïïÂ{Ž Hwî“ó §UvAg3Œï þññ£¿=úÛ£ÿõ;&endstream endobj 127 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2099 >> stream xœ”ipS×ÇŸ,#®W†6Jìiú”´3@ tKØqS @1›ØÛ²ñ¾Hò¢ÅÚ¬åIGOûæK²e¼/Å€0h2™i ¡dfB‡¹Ïy´ÓÁ·tšN›|;_î™sÎÿw<"6†àñxó“wîܶjå³ò‡À•ÎÜ›Iñ|ˆu¿Ç~¿°ðó„Û ˆXOŸð¢¸´²P\*.ËÍËÄÕ¥Ò·û€º|\YTŸf¤óã³Ù".²åfèä _]\CkÕû(áÌKÐ'ºñ‰>>ïˆ þäQ–@c(£,&«,¨ÁevùÀ~ØIžÃev?0`Ob,^ÎjRšÉšu2ù/­\Áno¿Í1I8Q€ÚŠ×ËÀLWR5X€F&»Áë·¹Z2„7Ù;M ¤§jA­jµ^hŒ‚Ü “œâŸÑå[ÖB’B ušØ©.¸eï‚^ø„î…ÓñK¼hõ°Q´Í2¨H˜r;í€ 0àr4!!þ‡6Â&uãäïÊe>Îe_=„|òë@N­ àÅθP‹Æ§ +¬…z2Ÿ[=où³ê4QwÉÜ Yr”:tðìSÏ‚h³ÞJkMdÎ’4i ]°·q;Z(!{ý«ô‰+þ‹|üø¼ÈŸÛ_uú¡­­¹§e x 4›¤Õ\O“õïÔmÏ5ˆ&<ýTö&ߣ)ÉÙæ:\ïU™ª¬E dÝæl.Y“f5ç­Ù hŸn|ð|ôÏG®S£ÎFhEã%ƒéË ¸ëçrfšdǧCƒC€¼ÍÖ©¶Ü¨¢ ~R³2в뒳Óã‘RÈvÌÍ;r“ÏÆ±B‘|°¼3 Ç-à^ã–.?·íNè´ãæEÊ#î/>ùßÖP¼-OÉTI EŒò2>ïÐ^”莎ÙûJUÕÕ4ù6™ä`Q)²÷æ*+¥×Ÿ>݃ÚNPÝÆG]m|Ãh´­&JÈþA ÞÃâ{Á¯ë>¾vŸ?ÅçD®#m÷o€Ú!¬®0ÕJ@Š”þºÎHÏá‘3)E» ÓdR2ê+´d'’<;ŠÇÎxªïÉtG Ö~ýîRÅÖn¥ÜY(Î#È &ØáŒ„!Š:«=ª2IUÉÓµcÓ7\v2P0Ðã),êx¶¸Þb6X¨âE[¤%€ò•=}WÄ?F Y5'ŽŒÞý¬‚](r4îÙ8uJ£JOZL ¥f¹¡ÊPi¬Ìâ¶&šU9omô®vlðDËû}w©æc?„¾)×Î#GûyZ D¢«2ÔQy¯È÷@&úÙå² Ã}-Ñ(©Þ§ÉÈK«*:X~ê!Ë®n† 4|^_ZQw¥C'+Vf¤¼ÿøñgx^”²-³$à‚ÑY‚3D6ð©UËôÙ`5š@4^h:Ét$]»‹Óͱ’ôÝY™û3Û¿_ÆÌñ:“ð]í*1T4”QªÝ`®Õ)éÙÛnWG‡l[…µ"¼jÅ©MܸDn ÷ÊŠ‹¾¸üǶK’Á´ÞÒq@“ÝçšÝF»Ñ@Óš’g  R¸ÓÆ àç 1VV´ÜDÊwoÈLA[7ŠV¯_¯Í´«lüÊ©#˜èù=5ñÁÙÖ~@€{i]ìf”ýHžYâM²z>žÁã¢c‹OrË›eÍÕ>èøl6ØÁnah‡Îol2„¸v:±æ½Ô`& “´ ‹ê5º[r‰\שÑ NR4jš›½~Ÿ‡²Û4a–x‡'Ø8^+@_{ ÔQ\¯ ò!;³øPÅ~0"+èÆáq‘§nOAÐ'‚Ÿr·Ìc ˜“´ne¤×m²“BöçšÈÌ/"¼¿]Å¥íüæG" MÓ`F&WƒËi·G£¤Çjõx|k»6}#ÐßnjôM ƒÙi¯ž¶Zôäöªr@YÊ3w\Ì »“bìÀ„BŒãu€_G-p)å×›¸7d:r?Ç+åâ€{]½&büDZd Çuž ôêƒCJn ·–KÞŸN ÉçbŠ#ˆ·bî‡endstream endobj 128 0 obj << /Filter /FlateDecode /Length 6851 >> stream xœí]K]¹qöº=ð2+/³™sƒ¹¾v&€Œƒ£t€ #¸êV·”‘úJjõh4‹üö ŠfôiU™NH…¤”u|HÆúD€òN§°¼m,z_¹âPXN‚¶J+Ëm:F¦åü»î÷5ö¥uLy7 ³ñ¹$ÒCH@z>’Öw­uf÷2µÂî*Ï©cµÈ9ް;üneÌB]ôgÈ:««T#»bQE¦n‹vq*àA=Jé™°]68à©–¤ŠYÓÈd”VLqâAåS´Ê (åÉI: ‰ÝÞê$B´Ë?ÕÓNmóÚ£ž*´u홇UT¾ãÛöœ™ÁK§1f-ÂY7™`)Åå3ò;£â³½NˆM¸~·6X6§—TIOØÿ@x ÉàY©}ƒäRF¿rºõaåtÂmY˜eVg ŽÒ„ «Eá•ÍöIyÿ²ÉÓíˆôªû7J¼Lƒsõªc`ºøI™”0aã *³>çSäAWн=’-å´öJ-O—&=Ï™_52ßó#¤ôüt—ûˆÉ,ãAnéö!¤‹qùì)°® ì_•z2£)‡àZeî4K€.üý:;ªò™l:©›¬ô½nÏ#êǬ¯NîP6Ȥ¸nŠTLîA£2/h,’‰a„Ku{ŒÇÛ^e¾VRØf4´íqTo{K¸óy›‘Øí1¬Ñ ´Ñ³õõ¢m;³r9³² EAçmLÒ­öf±_a¤d¼Uh¼e¸Ù˜UûÞ¹l•1TÇ“-àœ½™TtlzÏZ¯Š2(º—¬ønןç¨sè!ŽÖ¤WÐÓ”FBr—?³  *ýÞ{9*ªª•ºc28ééü?î¢0cØ:D”~ù—#9¸iƲ…N€—hœ>%LŒÓSkxò1~[¿»ib¦yYßûÌÇZNYù˜[éeŸÖ%Ç%™:!ìUkœÙµ À5ï ßr.l«ÅyÑÆðÖ€êï”÷]cÁr¬H¥V¥¬OËÇüeH~9\¶½$½™Å;8°ùD*¾hÖYgrˆ.™åʘԆNcÎ&÷†*Š©V«!ÝÙðùwiÃÌHFù‚ùÄ8¶hCMIÙ¹gÑ3a¡yăÇ*åÓ†=¾z¢ñîuôÂÆÊˆCÈäíò¬>½ªO/ëÓm}z>Š+‚¬&QÏGT RI½h'på·D­í#Ñs•³7†2œA ‰Hî!sKôÉ¢Ž}A”ÆΔcTl³¢Œý+âf#ØD)#ÒÖC œ †Aî³]°¢ì”c.w¨CeþÌsfÂXW²’ ÄåHNýÛ†ÒÃ0žç×M’ªÝ04"½Ñ\{“ÙnÕ¾ëùní…ÒR›…*Ù7-ÒB&×›QŒEõj\“&*’˜—ÅšpB§êRsƒœdïóh1)Â:a* ÕGàQ z¸4Uy$1bp%¯“~üù\˜²:XÙÖáñ±¦õ“éȬ!]6ò“Fýß1ŒN ®ltF= ¢´¸—ëÆ“£š»ñÔ'Æ“›«Gì9¦™ÑCJp¼‚Æ¢¾Å:ÿfÜ÷Á“âÓ^å¼dl{ÌoSôD¼ˆt‡eÆìÕ#x—û 2±ƒý–Yœ+aIo÷ÅŸKB…Ê©ýWy•S/¹ôºÒ¡-Úùâ«çW¸<.×¶ß])­‚-®s¡ž¢ŒÞ£%d4:Ñ4ÌÎвƒ¦0ñ>ÂFBüA;stÊ9=½" 6 —ó1»œÆ wÓ›;ùmÓæã„†¢Ûêææ‚%Åd™øUÄÙg ꌈýLjÁ§É©;Óp«æ¤›\Â’Éð½lú’šæ×U4?Ó™,ˆqÕ#h£‚ß dázÄŸD¥ 7ƒ__ Øý8hw=€ÓÓúœ0éúôa –Ú·M0_ ÄÑfàc¼Ìþå€/ã¶ÑÌÉÑ<4ß | 8T‚ãsv»Ò׃oß †ûÐæõu{ª·Ñ0š.ûô±3RÕ?(yÌ|ÈÐc­TuQ¦{³)#Þ%A ï&˜4,»Æ•‰]4˜ú /[^‰¦¯j¨IS-@q|cÿœºÿ{PM2jå¨{}$®(ÕX9è\à…MJ#²‚†ž1‡}Ÿùc•ScðÀoGGö£™^nðmïÍàã—nkº°IzÓSßPæ¢>=©Oÿ> ÖÄtP¹µîѦÃ*n£œ!D’d%Ýøà)Š$l²Õí²¿C£à¶Å0óã0ƒJ5È0$Cy<$0ˆöð¼}´"¥y 6:Ì¿ÆWïs1ÚI"êÕ8¶ Š*/€–}\äUI¡½Ô c—lÆyön?æ`+ΡF ™GÞiçmtaÙ, ˆ»<:¤öHè+2Ç“$Єþ-¹<†JP¨Å<ïr„WY!+¸g hMÇûNq—`ä¼Çì\—…ò×I¾™„!YÍÂÕØf@š`®ƒð` âeàAçÑÞŽïAt÷m…”+,üËR‘eDçk§öuù]ÑÄ4É"ò#×”Tê³¼mˆØ øŠ+[¿ëIä·Ø Îô`¨X õ$Á.·»ÁPD!j¹ä¿–±?P>ˆèmõ@7I>çDL¾KRÿ±ÀšU ñnV&äÄÏFÛÃÝLlk’ZSÉÎ&#å ñV3t3e|+#"à?•SÕYÙ8…Û¡"ð1¥çÚé|H^•x»WÝ©Ú ÃuMœSWÂ~»FŽY)SJ"†x^jp~·«ÅDƒ­·Pc¡ ngsÖCk'œÑÉ×BÙZÖÓêCJ4’X“ÿÈSO‘¦ „ær£Yp ð¹IoÌa3V¶Ø •óŸX¥R¿»½¡ `‹Ä$£e•D§•À^+'Œ¶ÝAòòÁœÁõ(Óª¤XzÛ*@ÿÑð›ð$$…”c ›U'Îl¨.K†ö<RLŒ9*¤¹`.~òÔήs/m_Të`jæ–ˆÝ%_\^F·šã[H&ñr¦Ú"g²œLžP=·‡Sã;l!#Ѷ7´…Ðv pÙ`Ðó‘Hç•8·Ý¤ˆ¼B@ŒþLù­¨eÉ ¨Ó1êtÒ§CQ¥G£¯C K‡êsœÂ|žXú‘3£D?~Õj˜hkR1gH 5_nîTê®LIé§¿iÚr …^+½¸Ò)x)Mè݉2ƒ† ½Ñ¡ß6J*­øœ1å‚HA'{ÝËÆÉdˆõ®ò{—ÍGóC"÷æÊ”C4ƱD÷z*9EÅ–:ûz*eo L˜Cý êOí’ÜÑ\áfCÖV¼2uVƨ°U «²}¡3¦ʱÐÿÇs ða—º¨.Ò÷É|¬ÄRRÚP  E‹S3ÍJ‡fÜñv£W9¦æ‚ç,tØ€O¬²¡ãɵïIU#ñ5gå\ĵ‡…žï1D]F°¨Yh¢N”zÁ¬Età ©î}SVb€#(×íÙr4ùÐå´(ÍJ#RšA7È’NÃt´ÚÒ¬A6騽™ydÎs!“ïÌÓõ™±R: Ä6(på„tºãÚ‡1ƒ°6CÛŠó›ÒCb…“ŬŠjÓ8ú±Â_¾o=Ê/›ª?dáÉM$”Aˆ[Ñl’›jyT¯[D›éø:KŸ‘͘Å;Qz€ÑZ­N–ë(öË誥°pËUë“âŽI䉴&}÷ÍÀs6 B}¹a­$\„Ï÷Ú o}q‡ÿfÇÑ0ÌòŽ"âüÝç\œLáÜ oùÏ®w—ˆÃ‡ŸÆNšÅüD!»¥”F‰°Âê¨ôù^ÃÝ.7úEkÔÐ¯Ú  ±$dˆÊäÏ1-bSJªXØåù÷ítC”¼oQõ§KURƒqˆ¡¢ ÈxC\›O&°â?"Âç xÊ…Óg.ö Š·kBâ!NqÉmxK8"§ò†šl÷ƒIjsn¡6`Ê/ú½dÓ÷BkŸ*¡T?¥.B`=lÁž ðð¦YMâË­l{TwH¶o§»6­‰rÝ{b“l@d<Ñ¡¡Â+†ó½¶¨\úÕÕäî‚IåY1v)I„¢ïET}PÊ [±ïÖl‚ßÁk>Q†T“屺€QÑzDDko\B{d¬“i¸ü.7†ƒž™Gë,‰‚?Ôãúc)ªTz‚‚òlA™d_|ƒ!0?“©Í3رú ú&ƒË±æ>´¢¸Í ,£zÏ<ßIýñ­”¨-~$žâËÑ1O-­1Ì 6=ÏrÅ]½]~g/kãyu­¬íáëœd=è#‘`9/š(©¥!¤ê¸ÐËÍ‹žq1€ñq5ŸÂä6…lÝX”?2‘_vóM=;‚i¢J9›2uÀ©u2¾º…Ax %ÏoƒMÎË:Qj0–và5Ý›ÇÆã  6EöÒk«vç¾@­Û=Pû}5çîZ]à[ÂÙdC䯙.Ö]‰’§ÁÝð¿k‹Ý>b8Ò2œÚÛqœYÂÛ^åï \ðŒ*ÆÒWŒ‡û–ª›Ü‚CF!.*A)¼Ç‡°ud›z¯”çOÈf‘^ÙuXdoßç…ľ¸š»-ß mM|ŒvNh ""K*Åö6ÞsM¾z£üÜÙß ±îذ‹ÝÕNíבg¡TênE²TÄÕåo¸÷Zéë²xí…¯"e2„çïé¹É Ôê׫sE‚1P^j°ÓòûÕ"Â4¾¶ˆÿšº“85½½l½·¨²ó«ÒY¤Þ"-F>€¦^ ÑNä#'é:Þ‰Û!àr;™Nh^m1ŠÀT Û_Í¢ˆ‘Wݰ )9×'ÑûºƒËÎGh0ó[!è,²Tã&•}6éòL\šk$-u>y0ξÜM×6!U' vsÛ=ø! ‰’€ç¡H` a^ô¨mÎwª‚ÆÑ#˜›Í·¿!™‚Î$U.æ†ÎNClDêH‰æÏkÇŸV&×d|ÖY$7Kü‰w¾ä¹ÚYΖG”uE„ :À…M€9Þ—Ò7@U¥V3„¿ƒ†ÚÓT5ã‡ùÚ·Ì TÆø]e Ä//È–_X\gÙ_YõPÅ>Ù¯©ãY•ý^…—L>N@ë?ñn'è$–jÉýª^’±i|Lì†ùo:¨„†{¯ôr`†öpsNHOP˜¿ev1ÎúD¬3ÏÎ4íaÒ䃳Çüsêà[SÀÇ(AÌ\½ÚAñn«=T"yEX¾š $73ŽS´Üº¼ ˜0’7.VHžÇ÷Œ BhÔ£%¼†6PW–—M 욈JÖÐÖA¨YÝ4±åIä*7v©x´½Z1Ý­–ö3 0epß'“”ìoÁ»‘ˆ[Ÿßú±M¿+¤ºÓC䮳¦ZéH§.BrL««;(aÍ‘I`V£Ð¾DCœª‰Ú2[ÑÚkà vY ¸ã´Üé´~E2è„ÕØ]–^§È¢õÝ*tBxøÒ—‰T9h~Õ µÖ%÷hž‘×Q"b𡇠fv'ôä%ßÚQÉäB2vö@S×]*÷S3ú‹LGgÏ7ßó]«6|¡…áðé<÷H³“Ï‹6Ÿ#Á\Ñëx¨¾Øeä¸e\Äæ#Pxªu8Ú¾tÁÊ|h“ÉôO™–›»³ïÖQ¶!dXmSíHƒ~Ì]„hhò…ºäÕb¬+šÇì×»ŽîNëí:_ÂÝVhá£ë„W«Õê/÷w—kŠÇËÜëEË•’O®¹³_`à)ÑÐɆ}²¿Á­äÑxL›ðH‰ÒNÜ^Ò³½…êOÂ9þ]ãa„lõ‡ê]™V p*Ý:`ÊJ)á£íÐÀvzÎä1ýÌ.—ã@±;¨¨ï­’Xâ4Mâ,’ìð˜æzh1KçsC‡&W ®{9q,(Ê’]hÿ ƒ»ÖXÛƒá ïµbëÏc%´ ÕSrØÛrµ-½·he0®7™Oà²$ä²Ò)Ë󔦿Ö,Â'¥ÙŸ Ah)Ø[‘½>PÈÝø¯‰Œ›'e…„Ÿ—§1¥ÁŠÝ›­ËU)“T;“jòW¬&[…ÜÆ;9=†H€qD0>;3_á£g ãHþBνG) Càí8`rsEKª°1œl'N3œªšÝÓxÙ¢“¿/áXw_nþTv}ÂöÈ´‹°ëÈÐY·É`+H!ä:Þ|Ì}Çr³=R!ÚõOóYzEÃB©ÏFM™‚hõ)ܺ5žÔ˜p´–‘BëÞðú”ÜÁ? Áœ°µÐÜ¡|ü¦ñ1éãóÝ^ç;ò›y·Vlx´"Pùvã‡9ä~Ÿ>Ü4ðg;XH‰Öò9nÚ7gß}wö¿åšq@endstream endobj 129 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 146 >> stream xœcd`ab`ddä v 1400q$º»¨ÿdbíæaîæa™ô]Rèà~þ= À¨ÎÀÁÀÄÈÈîùŸ‰ç>˜üþ±ìû®rÆï¿~2‰Ftöû¶'´'µ%¶'u5u6t7rTM®^"·ª¯cõ”å˾óHLX8yqï|Ž>öEUóJäøä¸˜§Ùóp20C".ãendstream endobj 130 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 247 >> stream xœìÿCMEX10‹÷RúC‹‹ ‹ ’÷wÓÐÍintegraldisplayZ‡–øˆø¿÷R¡¥êꥡÃìùIìó÷«œ¡‹¤¬r›tsr|hX½aÈ÷,Ä÷~÷¶ÒØ÷ÐÌ÷ÓÁ÷Õ°÷i°÷\­÷—¼­÷²‹ª‹¤x‡j‰zu‹rj¤{¢£¤š®ÁU²T?Sûû`Tˆ€ûüŠûý"qû-nû;jûyB]ûP:‹g‹s¢Š‹ yo Àg¬endstream endobj 131 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 268 >> stream xœþþCMSY7‹ú¹øM‹ ‹ ‹÷“ÍÈÄ infinity1¦‡*·øˆú÷v¼÷ù8ù|÷v›£‹£¤t‹züè{s‹sr¢‹œr±ø ±Ù§ú2§øÖ÷¦VÉ{œe¦N·KœT‹û1!û û áû÷÷ì÷À¯ÀM›z±pÈ_Ëz‹÷åõ÷ ÷ 5÷ûû*ûVg«f³Ìâð÷‹òÒ0++=@/.K×÷+9`cJ4&û‹$DæëëÙÖçèË?ûëfükKendstream endobj 132 0 obj << /Filter /FlateDecode /Length 5426 >> stream xœí=Ûn%ÇqïD>bà¼ÌqrJ]—¾”ˆ‘•,Ç/ZHIÔ’Ë]›KîÕÒ"H¾=¨î¹ôs(ɪ‚ìÃçôÔTwÝ/Ýóf€C°ÓÿÏ^…áúìÍÖ»Ãôß³WÃïÎÏ>yŠ8$ÐÌe8~ÖžÀr$RQ(Z†óWg_O¤ EÒxw ”1àx}8Z1ŽWöG ˜ŠŽoGÎ ˆxüw{0 ”ñÎD-Ilp,$Ž·v›4Ç<þù€ Fm¿gŒb 1E 1ÛȬKùæügŸ¼»zqws9|~ûìîÕÕáüOýÔ¤ÜÀ¹qjkðéDïî.‡'ß¿¾º½|ùþÃÛ«uÂ_Z÷¥È) $%A‘Y¬^O?; ÷üäÜÒ@ Ep›¥ EÒ@j’†,çoÏÆ›SÅë§,b8H()”20 ”¬‘!Ä<0 P#èÏX › &@É3.3, J3&‚JÙC % D=J!8)Pñàš˜ çΊ ,™=†RåivQ„ÑJWdñÐ3"<0pp¡qª²Á²‡žA†Â&Åæˆ¸˜»˜´J1&ö˜2Aä䩸¬r‰uÊ\<0¤T=]sÂ]CT­¢Œ.lƒ¡š%›r‰ Å”¡—îJͧ1ï‹< rUÖ¹:5œˆœYæ\F¦%Ar!2! àÀÌ@â"ʈy`ÀÙÑH±€âdò0ru…{`ˆ©˜:, ÊU!± ¤Ùú&|¼•ƇÁE{Yº#67¤ˆ‹ŸDÀ)W¿!±@Bˆ% l¸¸ø ¥F÷Œ–Är’e›ª‰^ŒMBL–S‚ì¢J 2°*dýÍë·LNñ B3äæü'.œ-GPõ(h~HV@ôàBA(‘]0D‚‚få3»°µ#VÐÅ6§Î è“å*q >»ei”â‰k^É%艫¾æì!(š¡„8H² ¤‹äHJuêQ´¡V¿ÁdÙ‰mJÔ£e]„$iàD’Kv%C4IA‚äA.PLÙª‡/Çæ`Û2D8Äš-äà•^‰ZKK&#m!¹„Ê–¶(SÌã£DHkÐ#è"x‚©€]"€–_‚쓲³åC2°K¨”R·Á´ë”±INþ:‡ÜâFr!²YùX“áèQHK®GuQ5Y!×”ê’ÂHÕ>ù„µd²ÈÙÇ É`5C+Aù¸ ©†%fî’k»@±³…'Á¯êFDU—‚ 3`’*%äâƒÄdyÍdkè$Ææ G—ª  l¨Á (æ*Ïû?~¾uʦ«EÁÅgˆÆƒŒƒSQP-÷cø¹¸H­àÎÅ(⢥šufè’ ·‚ŒU-cªž’ƒ Äê€Ø^§\},-/¬èbß DÊ5Ï\Ì1Z%&×äTíúÙ¨%¥b ‘#yX“L•Všfû)‚ñ5cíqQ…h¹)Ë_°Ç”«GcAJ9˜ëŸ2t3Ki{ ›ùLì’rµ”?6óiípJ2Hñ)îSMù[%4ºhS1–|üôÉd±5. H6/N2D"ž…îÖà%ÑÜCšXeÕL²UQ¢À¨@©9®Â.™¤Üš±¬zâÃ3ת ײ·Ë”"qmMŠªÆL'•<©SŸ¢ JŽ .eÁkê?+É+ ĵ[Ô)¡‰ Ì>‘@òÉ)Dk„±æ —RЩU'ºÔAƒrH-£ä’´=ݵ”L>ÁD¬UsK\ó3VùêR›.€…ª/œ\–Ð"Oó»L]³@a&Äjx.FÞ°„¦©—lœu÷V#ïæ5XñŽj«e§$s’–€ÄäRXEP‹’ Öµtñ®¹åÅ'}[Ï…ˆSÖÚ²R±ÅÝ–r©Ô¦‚µºÃ.eËZgM± \S²”AjrØ)!Gż†\;"]%µzQJ\ ³õ­ÔdH—¶²vW+håA¨åÕ­ ÙÁñPsC$BJ.@€”رÉÜÒ¸–¹.¢¸(¯bçµ ‚ťТ©WÄÚ}çb¢Ðš.Ä:r]J¿|€„J-iirÉ '– È¥z3d (  ׈־YNâÔ=Di-ÃäÄÖ¦¬”\¢‹…*P,”“S‚Š¥iØÁ¥7)À¨©©ë_"<Î-#—¼Ê´jNˆ¥\:îL§’VU¨>ͲE¡¶]Ë'iHP*ÏØ6-P,„жyЫfdiM,5ãìÒSc2+|øô­¨½³¢z¨V+jYO XŽÝ%Y ÙdP—„— Š5Ö› ë²7KÃ0e§:^HÀsqÚEP‚¶î.d§ÅT¡µ\“KŽR¢šÉeíE¥² ‹Çe 'íeýg.ΰ%带ÿ‹KŸ¦uáή«K2 X¨:õ:ÙFbnýÂÅňZK’U¡,1ìRO°c)ëÎàShD`+þrrÊOYV³ö DÈ.ê:¨…É™4ÐxqkC”‚Ú‘¯GÖz¦ÃøEý¾AIj':Î0.nv(EÉ¥õË:”³òx³^^5Xt|Ú-Wçµ!ʘ°âoíÒLœìŒÖeHý².#ÓxwÛÐ…J@æF!TD‰ã2AïžÏ³âëˬ:LŸ,7oÛ·²²Ž×9åÀ¥-c œK®çÑN$ÛGûé¡0 ª‡#YãmØ\^ŽTÄÇ'í=Š)ŽßWü9j_ŽdJÞ¬X¥UQûÅ¥ÝN!°nç½Lp%[eˤE°®¿½šKÿ­ŽÍ…âÄTÓõoêyŠPÆóúa‹Tr[.•(Ôƒx½"q³"aìe#4­‡(åñÅ:øÎøHKÁñ»UªÞÙSÖÏÇ »Œ %o8àY–£ˆa| ¶“§ùká#aîù¨Ÿv/ ‹öx—4šÐI.©Ø…²á’ù꺒I•^Ö–FíxºvÀèå*OíMêŒÛ™{[JOãø¼c‰Bä{¼Äu«ös¯¬T WVÊÂvÀíJŒË•´(o8iÛT‹bª|i/æ"ã_Ö·½›î*ukw×AxWq(È[Î~±rö]¯ª.çµ0ù_ow‚Ð+Ç»WÆNXnð{ÞqÞÛ0iªkì£0[=sñª}Ð¥h®|#ˆ6º1r“€tÕ.Ö'G#q\ÎRFmjš5ÚBm»Y Y !¥2Q#)Ò8éUÒiÙEOðǬ ßê–OÌuVˈ?¯’ØÑ³#øuBÚ,ÞÍJÅ‹{:¸î–+<þ®;¬k`3 ¨´1-×2º¸&’3,œÚ#vÜ´DAã—+ìëàÚ´³“=o5 ©šÏEvî*®¹0DZ—õËuŽwј¡£çF—HÈ«¼@Õé½ IVC/ž)7¦žŸ<¥¥¶þ÷þE %jÆøÜÜÑOžŠv#Ì1¥À³ ò›­"»ç®ä”Ê-Äpõªè îŸGLr)?9jdœ@ã Dm£Ì_9… £‘N"ø×!=…?foÈ¢3Ý4œÍT~.è ë ×lˆ8^·¸8¯óz³*’NÖÍy4ë¾õRN:3›7æÇ‚é¡ïHŠ Ëæþ»ÕEx×Iió£YÑÛÛìTúËõòv+M„ZuüÐ>D zï«3[…k½-±è„l‰¢4^4×'”ñcóÉ>Øc=†“'³§- +eêôï¾+xQ0í%ãß­#Þ·»¦èö‘í<¶òí@_Îuüv×¼xv¨ —K³Fê< rå…Îý¨À¢æ­J[Ìó/iË"‹/³±VóütkÔ߬ôíâ™­g¼Ø¢wíø ,¼µáà%"èMGïR_myÇìBõ˜ ¡l©¾šƒ«6BP6nÃÝíjØ~0èH|×­ùÅMƒ]à©j»íL0µ¯AT_'÷1EìYŽB,åÁ²Ìñæí4Ù •XX Çì÷ÞOî)¹k쪞–óëq{B{\®†}ÅÞWý˜e±6¢±§`«Uv¶]Ð2mU#RS§#¨™œM%S¯Ê ¬gûÁ—Âö>a×bG½[‚ß¶˜O°6|Ô˜5Æ”{¨ùA RlQ-7k‘séu1À&™—éÃ.kl•t…+hê°^†Ç?N°/7®ßt ¡>5-è¿Nhȸ3Ûz¬”Eã—ßFGÛax8’õćiГÝiŒÍmØ ùÏI¾J,&¨_ÀŽÆ˜‰Oeh.› Š‹Ê¯#.(Ó$5chÚ蔂¼xßÀ3…+^,¦ŽMO¯QàïíÌå¤-;ù±=X‚lÍåš)96ò4#i'Î%šŒ¤…À÷¹°Ï’úxçr£ Eå4¥M°¦§î™®énÿÜ-×q™å‡nDãÆY7L57%Èfµï…R÷néøùòýPÒ‘Xøžtî@G·g÷X}Š´ê·j‹)éŽ*'Ä¢* BI~æÃȧÏÀÕbëgÿ Š$‰ endstream endobj 133 0 obj << /Filter /FlateDecode /Length 9357 >> stream xœÝ}Ï7’æ½v0ÁÞaÍZ¸8 dôþ8Ì w0ƒÁ`Û+`vÊ’,»WR¹-yº=‡ýÛ_3“ùê=µT¢ÏÂ?±˜‘A2øEü‚ùÇS tŠø¯ÿÿù››xzuóDzÒSÿßó7§¿}vó7_¦t’ •ÛéÙ·7þ(IšNÒ44m§gon¾ZÚí] %F¡öûgÿxó7_2¡tЧg/n¾Z~‡Ê¬5/?ÝÆPQ]îQš´–º¼Ý¾ÇOŠTR^¾GÝÊÒxym""ÅJËËÛ;®Z¤åË[ 1•š——·1P¥’—W¨µÅÄ´üh’#ÇܬJÿù?‰KYÞ¡BÕF­Ùû))/Ö>m’ Úq­!ié5Š(¯¥Liùò}ðÛg7¿CÒéÕ;ôp 5rÕ2¸4 %H™B:ýøòô/§·7%Ô\…Oº¡Ó?ÞÐé7ñô÷7$L!ó©k(tzs“šÄж‚×7ÿûB¥­$¶˜½Vƒêu¬µ– µ%¤ã ×’±‹†˜ÇZkÉXK(•±ÖZ2Ö:6hoáPçC¦*å¤TÒÁT‹„Zè”5‡Øª›j ñöŽRËêC²pà´Ä×ȃŒÕÚ^Bܘ$¶ÐÒ©PI¡eëu/‘$=æcó¨V)$o%‡ZãFc­^r¨U)†(c­^r¨¥­á±V/k­ºîµFí?ªÏÑßwèxÊ5ÃRjbïôÑé,i)ý*‹ìÿÐ¥Žiñb'ïÖѲO€µDØçÕë½qJÆió» s“ªrHr67?d~5@Öô`ÚBÖ|’BAcò®øzù‡·ï_þxK´ -Ï_þðþëÛ½±¦Ð™¢”jEO”rÝÔ 5—Ó«Kal ˆÐ šÛ”’žJÊ‚QF—´k(Ic(b%šBCåP+Jj,!Y ÅžªTCÖSaÒ`Õ¤¡–SáT{•œBD•,€””u²"+ ‚:-¹áR­-h9•)¨×Q2•sŠ¡Àl©Eu²ÖF%4BA ¥YIjPERˆÖ†–£L–ÄKJ2•skÀ?”H ‘N¥D Å :4*!»à¦AP%EüS#…† ‰‚š.J9$T` jÍÖ$!£N^ÍP¹™¾¥ÄÞ5Zz–R4ˆ×î•RK)­¦y)­ CPÒjPÔQ Œ’c4…%&¨‰Jè¶"DÞ7)¦ªžŠ$öÑL‘k ÔI9°dX$IHÉJ„BE&@7J*E<ì‚›˜Ê’%pµm0ÛC´F$¢šœŠˆøønަ©&‡¸„\NEêöT®®r#Œú5öWu ±1¢2XÑ0ŽÝÒ$òйÝ%Â#+À}G°nÔfD±v/‘º[熣~Ÿ?㸷M1-ݨ×Y¨i³ÎS!†©\µÌ6Û1BeÌ9Ý3¶iÙQEK阷r Zl‚÷u \ák‡ˆŽpš’Ç#U²Ž@©Äî¼w,UEwŒx»؆ɰÆ#nW2B{«›àhêö¸ºˆæ–:¸€²÷Þêj€Û2:#<î=W‡…y%2:µÆþyp|ðœGÏØë¡Ñ{¶XºYoV×Y·zaóa4zêÚ2‚«Á›Ã;æƒÇ¯èm£‚êódˆj˜JCt¸Òû}@jjkÒ£x|—¼F2a½¶hg‹¶€òNcÌÔ¨[ÓWÕÒ›¾Å^¢n”[|†`Ç@v‹á¤dwª[œ'¹Ø«¶PP06u %µ5€ì!%¶–ǰAù…-4•¨@‘!v•ØÁloµ9žì!0¦ç!L.Ù<†Òá1ÜÞCÜ5$/Üác‹ÚKŠ]Ã5²/TÝž¶è¿uÉë ¡ØT{¿.4r©=v^#Ûa]®` ¡:.i0ãc—=ØÅ1´Ý–Fœk_¯¬Ë'N©‡àë+iö—wó·7¶TÄÆM e]œ]]DË ‹Ã–è°r l>OÙŽéôìÇ›åõí³?ø2ñSåIˆÀ¨ÔB%š!° & ±NØBnùc‚< XÎ9Ä2£ «Ù :Ëy)$ø#„3ıA(kÐÄ3äå ͶžBc!ЂÈÓZgÈF æ} <ë9 Èk:e€56pw)OØbhXîÃÏ̘"X"8+ð¬SrôÀu†É4üP0…’§ô vËÜR¨:c–4œr@Ãbœ1±…hÉ¡Ö)MFœ %Tž1ÈXÓb\j )3Rh­! Ánò Ë”)s`¬ÞÊN1-¡`ñ/¤ÍCÅX3•fØ¡¶³kØdJ“± S(4Á°SŒ!#X±L@›)Ôd;š¡é SÐ’í‡'Ì”s ÌDs3%a§‰² Ì3|^ŠØ²%¨3¢®khÕ6ƒC®Sš¬8O6mÆLIØ›côa :ÃI%ìÔ‹íR*ì’UµpœªÏ˜CÄj³&Ót‚Àp´Ul hÆ(“Øvk-!ò”×P±*¯ð÷3¦2ÁZÐ…5ä±WJ1¶j %Ïè„Ýc65ÍèÄ}HhhûpäqhØ‚Á¶;Miq1š6šáQ’Æ>R‹sÖŒ)apÅV™¢a¥»|aÆ"/%]áÔ(Y\üùqý±Æ!ΘBÆ®!ÖSÌä&Ì“†ˆ}ÆlA¢$†:c•Xm×¢´6gs e [Ý ‡‡34ÌØBT˜tІ8¡À‰GÄÕyÙÈSE)”)ðšKÐV\à”@)×È5”)+€ÜBήá”h8kÎh†Ñ`§Fq4VBœ2È%b;I "3À«pàb‡wg¬lSó‰Là”}ÈTp2 ÁTšÊ•¢MìÎ0œŒ×j•fø-ÿ‚“ÅJ<@1r|{—Äz—Êú Víÿˆ´Ä Æg°,0²ë0wÖ’=ÇboÑyÉyÖÇ‚ˆéY¬Õöh‡¬‹åÏÞðÎ^}¦ÒÓò+8gµóî-¿‚³A½P«N{â\Ù³)rç‹rÆ®Iöü cMsFžL\áØ_ßpA³ Ø:êÌu.‰ä”Zëb@D*©:m’A4AŒ±¹' jrŠ©[öعg š¬¤y»pRðÅP‚¥ꀻ…D0Øüf¸ÅJ’å#–NLgÁ6êHqf# ZNÛe±… Ò=Äé]€ØŒSÊE']±h12^¦NÕâ«Ñßr*N*gÐû°™YœdÈ•Ûj%âOeƒÃ’¥óL¹1a.ŠÎ‡8¨S:£AIÄfž2ª$ÃL±íœúú†›sd ¨­–ÆÂ ) jPçÊrãh$C”éÓr2ò$J¼ÇXêé&Üܤ ³€ækíjÆ*A‰8-“ÎÏ­;¹ç„–¤Ò)ê› B‰±MY æ%^;\V¥9ƒ–kyãðeçi²ú¢¥^UV„hV‡»]‚é ¦kY3ErŒ8òEIgæHØ+õt—V¬$UWKK+`5+ Š?†kZ³÷{Ž.J¶:UŒÖ‹ey³¼"ÜÙÏ™b4ª0W,ã)±© ‹5?)±¸Ha§–f⌸¹=äÉ;E„œ½¸ºpÁQ¥5Ê8TÙùŸæ„²ñEPP<—)ãXœÄòWÛñŸ?ãRpÎQ­J'ægÛÐÅ fö)’±qއhÇ‹Œ%:H5’“‰sªÉhÖ‡w¦ P!YŽ 9©µ®TLGk%;{Ôê˜ádp¡qåÒå0ìÃ’fzl˜Ù;²Tf'Ûg.–q3–à4u@ó7 ¹±ë¼õ(ký¾€ªï%kTe} œN;êÃrÆK8ê_ª&‡‡œs1¸o8M6 AÅ¡-J,ˆÈYÔtn˜"ÖvLpEÔYÜÑPò£°æ-#®´ÔSvr¡Œ ÍÁÿÍÆï6· p–h“œ!K)¦o+=Ã-S°ö¯æÄbäÝX>O.š‚åÇTÏÐËXSƒ½Ñß3V=Ù%Û3⿊æØ'B/Ù-ú3‚c+Ù.VbZ粿YbŠ}^tå,—À»¶x~ ¯mñÖY:@b‡•µ$rÃÖ^DnŒÈØÑÚ²ãÌ:Šýó<òÜT×!Ý2 ¶aWœAŽ–¡­3Ž7ë²Å2ZðÐGlµB-µ[Øj©(Im´f-ºÎ“nñÈZ0Fö6+4w–ô6sÀùvk^g—¦Ògò:‘¥à#¹ÎR¥êNj›ÉJ=Cb›íйÝFDPOWPc(éÈ—¢yŸÖŠÄ7|j¢Nœ^! >)V”k½1 ŽXÙRá{‡ÓÆ=óbC\d$èÊH}Ó¶÷‚Žì-jŸ±+úw:úà!²àº¬^¤¶:ºTp›^]Q­ý=«·ªkšÛæÐPâ¡òêô*ÄñèfGçYK9s°ˆ^<²Y𥛣ö$ÆÍ“Wê½9{`£1 @àDcÌ Ú<n‹+Ídù2[ì§RÛŸl®h‹aDzjÂç`YêAè K9×xI`ätˆ©…ÌcÜ…=ÄfÅ(‰cü†:Þô5ÆCIÃ@ò4CŲ5b '-Ô#N?“£RjŽ‘k©ì)+[t Öˆ‡ñk¼¿j’AóÈl¤Kin'[´ gr0w %¶˜ÝV}eŒë-ßâûKs×ÙW^Ãb(éëŒlÓqXŠäL>¶å 6M\ðº¢É€:®zäŠ<®Œ¸P·¸uõ„%ÇÑë k[äÌI¯@~Ž€’ŽŽ8—{6–JÏÊ4c«),M<ŸdÊF%rø-» LØêed4ÂE°eMç¦dÎsÂÞ6#× ^Ž‘15¥ÁÙWÇà(Oi0šÄÎ8\GR#8K×fpüéY–Þ2A Âòd…gt¡Ä@š2™‘u…»LØ.tÉ¡Í8äcAÖ·ç¼ð+×Ñe–)'ÃØý‰ˆ_áF¦R'"#%{Æñ?K5Væ8e[¨–Cl3fÂfˇˆ„aÍ¿‹Œ)³®âš‰f99Ú¦D¸ã¶„<ìRªíóc59c„¾aÕ3H2vQ˜t ãŒYR‘ íòŒä ‹Ò< ©ÍÈBB=K8…€ƒ0‹qOQ--…g a³û&úîÇqXŠÉËS¸fûCØŠ˜‘ÑÄ8—°• p3æ’Õ}ñdºÏ¨14ì‘እ”PÆö¢g™ÕéBHEgìÐa4ƒÏŠ-o»[ÀN¬&,¡ÙÝØX˜a5ZC´ÛÀkŸÒä¦ ÒÓ§ÈÓÕœBiÉ×u¨ œ‘f¥ÙE-¤MΑù]Ag¸Oìd¿M#ÈŒä\Ûb7 J SĉEçG3BL;ÌTã6#ÄÌ8Ͳm6l¨N€®ßÉÃ}©3bGÐîQ 4c9k‡½vL <#u&ã‚Ûñä9‰„;ë¶©Ê¡– /‰lª†X3¹†M§ ŠZÊ7ö3ã J(NVX= ŽglÓäDAì>¿j»!¦Ðl‰$S4ÌF¬²,¸)S/•À䦛™9I(ìÒŒôùœpLéÎAÈjOÔ‹3ðcHɳÌRšáæq_/•pÝãŒäIœJJs yކ8̬ž7#—<30Ør¸òŒ@¶+í aµ ‚ k\Ö„k¹fì…d\Ì…ã °½Ê pÈÑû!0O¯Œ#g×fd™áž½’\Ã2#9=g5{¦žÎHºÊ9ý‰ueŠÙ`ogX@Îçc;+O—‹¸z§ŒˆZ¸€‘)ÈP(Pr iÆÂ6—¸ØåŽ!O‰C û},¸Åmƶ5øƒÍ8yÎ ãš¹ì òŒŒ[af Ž±ã ´‡Ò¯Î 2%P¾ŠÑeZ˜Òbg1¹¼)Kct5kq½,ðBnÅÎB/vëáÀªî%Ê­ØŸ&;ŸŸ¦~b?ðÓC‰Ã÷[JtRô’Œ WóÁfªŸp|µüO|#«*Uÿ0Gaö¯mPŒ¹òò“¤#’ÿð©Ö”üƒ¸b¡.É>¼kÖ%ô¯‚äÌý"uÐǹ·Oˆüö6"½”Ô¿"1².¯ðE¢%7ÅBŒ¾¬ºüó#j®øŽGª!Æ„Ïlï[þ  ("Ëó¡í¢&)ó¡öÛÛ„³£l_'Á[”tù_›F¯í)ÐU–‡÷økKýË"]Âonµ•Åk$MyùnñÒåæÃC¯­¯EZ~g=Ò¼.B.]îßB‚¦¨´¼pE¥7Ãz{ ÚpK:¾×º­qbñam™xy¾[ës¤¦yùaÇÐü‡o÷÷]kÒ*Ã{·ènÆ^„k¯Eü£,B­Êªl¦¬ccÞ öu*Q¥j•ƒ”·w¸”Bh—ClöãæKkËýþX¥¼üq·‚Ÿ¶æÜ÷ž¬mlî wxÛK—•©úwèöWËq= ¿wG$MË÷ý#5­ÉòðÒñ݃ê_Åéåƒí¾=B—·51êò­ÕÈ5/CïãÚ˜ßî]熗KN˜…»±¼våjkË·{íu^RLûH,òÏC›ŽV¿½ä­å¬ ÅHhˆ;· èlæÖÿÚ­¼Ò‹­UÖ£-F¢´ svï1ùZ,Þà>F³-XŒ’t$*TíSF¨£ —ñ Tªã“?\A‹»4R£ÅÍ™)Ùs[o¼pórÿ®‹#_¸åO‡gÄ7oiáZFË5‹²Ï*ø´îB”³Žû‘±¬}þã[V¹„à!nïl[ å埆®úè`~[Sîß»ví@³JØ nï(DÊ%cê3*É ïÝœ¾ÛîáµÛ×V×Ñ®ê}q‡ M¹µ3›:‡–n¦Š/à<Œ¸ôƽê1/ÿz‹ÃL•z0šAÞý7{7˜Ù¨Ä,«Ö:4Ö᥺|Ó§M«8N¡;0œ$–ƒ¸åiõ“<ÇÑ`¡Fúïý%ÍlkÕ`ôï¼BvdOÚ´´¼_Õ¤2öÖ{?í–>ôËßP*Ê—ÍÇ5#Îiy·ŽMò¬cßg¬!ëèß¿ØMæaF*à?Ý<û/_üáög"‘ÈßTYL…L1ûÍìÐ$¶0õ¸CŽ#°Ëu«Éé,Šñ‡Ý€Þ㌎?¸“wýÕ´Š£Frônz\´Œàõ³?Øbï³]ÕãsÂ.ÍTñA¶÷ýÕðÛƒ;áÅEÓáAŸõµä|ÅsÆ×£ Ü}ÎgB¶nº S}YÛ1~ØÍèÞ‡“=ÖÃÌïuwk)”(+nv%D•»_ó?AèÌ t r/ÀLÕÇ¥GHƒ Ÿy|´@ˆzp‡YœÇ©´»î£÷ªrôâ[ü`u%6+Æm›Â˜Øúhpln£JR=æGƒyx$vˆëÏÅžEU›÷¯½'•Þ+h-o°hÀ¢°çÇÚqQ®Ä™Ï÷8óáé|h}1´ƒÉÙ ”xœ¿ß¥d.ؘ?»EJELiý’"d~s‹KËcdE¹PÚ¿˜XýáÒ’‰ë§¬À6ÉÿyþwÞ;ÜÚòO÷€m–?ík´=ÿÉÁ2¢w";½C3ù¢™wOêVâ_-쵲羟‹k­«Kßzaék÷HÆbtâNÁ÷+Ñš&z0Åu>çòQ+‚JÆ^·¦'±›Ç–¬%CKrŽí]KžÜÞj±½_/{{þaûšfRwHÜ N& ±ÖœFrtç«I›gC¯}}»ÉÛÍ g‘¡µ[ÉS[kß”tlíUÃÚcWc5¼]ÝãcS3¯ŒµzÉ¡–}X¯Ž›«xžéS –ñU©íÞ†Ýbc¹}lfûû7ÃÛß¿ÕPk5¼§jÙ2VG-—, ûfçK ¤í¨ó›ãˆœ‰Oª½ò’»ÀÃglïŸEávº“Д@Ïxá6nF™Öäýk¶K~GßóªD•+_¹-!¦£¦þ…Z¯{Ф‰Ûjh|I~§óÏê_ˆ/µåmÉû_?åcÛy?öOnãð–…‡ß>ïýÓÀ'þf;<Ñþì‹Mé0K–xÁúÄÆ&O±>έ9ú©^0¾l:ªi`£ü´;:_€kCžô㌬àŒZÛZùÃmAR%.ûܶèúlL+ ïÆ´óy+ >_ÖF`îÏ=˜NdÛc`N—€yÿT€y¨u„ê§ó®åR„&s­OærÅ„Óÿ?À|í¿0_i×" Ì›ýCõÓy°¿ÉÀœkþ•ó#Kþø!ÿÕs¾Ìù£y7¦3¨9)[Z÷›GPýt`ÆÅ™žÐtæóðþ3¨y¬u„ê§ó®å"<˜[.Of¹bÂüKóh™ ÌrÅšË/Ìù ÓÇónçPýt`ìo20‰¿b`Iõß!0Ë• “>˜c:ƒê0÷û6ÞœAõgsòïÝ?Âåz!`^@ê3\jHý¸¼+¹ˆ–¹°LOÞÈËFëÆüKÀ²\¬Xc>–¯9‚ü‹Á2]ycùhXÞÌïÔŸ˃ùMFeÉ¿¶p¹\Aåáò8Gž´1ØÒ§ÏP;2‚rìé ŒüE¥Ç¨¬—Py{ýL@y¯tDé§cò®ãRåÒ¼ø P®OŽ•ëÌ _ ”ã#ûå61Æ&Öó&þ" ¬—ßòñ››ù£ôÓ1y0¿É \£þÊ@ùZ¤ñnøWÊ£þ×6Í? Ê›-¡ô&ƒc7Öê%Ÿlq”ÀïN§DRì{ËÎÓqPþÚkK¼ô#÷Ø–Ÿgò„œ|àÔ>oL§Sr;Å6n`ç–ü à[_§4ÙR$ƒ ‡ëû]ÙáœüCŒ76…î¸ñý†ŽN´¼mªËýóÛ•€zÎ{t®ÿ¯8O±3´»ºN>*Q¯ñ`®ÐσRpÅß¡ö¸½È“{¾‡Cõ¡qG²žÓŒÐÀmr]á, ÙÙ~U–rxõ ‰Ä•t—RÓκÃ×AŒ†Ÿ‘òÀ‚½7jŒMøw×usŽ2’ âeNøHlr.`l"KçqïbÜ3©²Üÿ0ذsZ¢v…+> ï|ßT“œÓ¦V3Ç5ã“2ºü‹/rF‰ßr L'Ä#Uð§½Íôöøêâw9HGÖªÃ÷û‹ÿj{ñhdÑŽwþ>›»ûÿ‡Ë´Rï^ŒõÁú¼4Ò9• è$3kVé<"çÀ¿ìo( ÆfGòlû‘ªéÚ£êõN¬ûÞ,žñ…0þ|0âûoöç:ÓÀósà齿µ«^¨ _JçTлõUW™Âà4Û‡1x祙ò€¿W2$†Ç=óÍÎù;ËH€äXÇiôà¥q%÷·Œµ7hkMQ¯Àíùd¹`dÞ})Q¤?÷Æë2µ3SZõ¼J¾Lš-%f`¼¼q¹i”åÿÜÚ=T’—ûW[åºÜ8é| fq{Ç1YϹה£«ºm俟û¨Ç#gqÜ×ûô}áV‹¼0Ú‚ÆãTZûu ¶7»?²%GÌ>Û×wÜmf¼j è¨2ØÏw;õóPzÈjCsôð®SɺgŽ˜ÕýèoöëA\{|ňãaØ_Ú½ëåÄNs£f@‡(þíÑšÏ åŽ5Ççû¿müŸ. ún¯/ ’@ÃÂDÁ.Z~d ø€¼¦³Åþ0“¬ÆšdiM–s¯ýÏU?oeJ´zy}y¡Çß<^Ûv©Ÿ^|z1¾¬IÛ±RðX×[œ%Æ™¶ÏVÃæäÿåt¹ûq;òò©O4â½ûe G®­ß֪ÞÈxÃÆ6ì—-ÓÂ|x£éUϸ¾a|ì~Ø·ª¬÷K¤–÷L¿ßÝü?&}8]endstream endobj 134 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 174 >> stream xœcd`ab`dddsöõõ4±$»‡~oþÎÎÚÍÃÜÍÃ2黑ÐaÁ}ü»@€ÉÚŠ—Ÿ™‘‘Å>áGß÷ç¿Ã|wüÎÎø=}9ó÷ôÙ¢Ý!ÞîÞííÝm-“[&Î|pû;÷Éâ]±YÅ…9Ù‹ ×-ž=»»GŽïûón6–ïìÌßˈ®Ï]XUT›¾²tÙš%ËVÊñÉq±˜Ïçád`ÏT>endstream endobj 135 0 obj << /Filter /FlateDecode /Length 6594 >> stream xœí]K“7r¾3þ ¾¸ÚÁÆâýPørX¿CòÜ´{(΋g¦Iö ¥¹ø·;‰G4›kú¶±ÕÖ T"‘ùå— ðãgâ‚ÃÿÒ¯^ñ‹»W_‰øö"ýçêáâŸ._ýág!., Nù‹ËÛWø q!gBÊ ëóÁ_\>¼úeùy' ^Ûå°ãLK'¸Xîv{Îxð\*±ÜÀÿñ\X–O»½r–I©–ƒr¡ýr€&x«¡1g®Íò¯epÆ-ïwœ)/LÀ¿;a4t%…°†É%@K¼ðþO—ÿ Ów+-L/Œ`Ú\ì¥bApyqyýê—e}ÄQƒ°&ý( ÅBpê‚cëŸñ¸r0B`AHrãÛÝÞhf…W˯u”8wãmr¹‚ךskýò´Û+»h^¯ÏðÑÁ8ë–#¼W!h­b/V8£5¼V$c–' —Aêåm– ¬øw-Üò¡¼ü´ãLzá…]wŸ c¼jYp"28ÚÝ;áÂ,bkÎUî%ë–wqÉ” jyÜIË”—¡~”ûâÔ6âÂPZ^(‡bIŸ_:6íÀñ­ º‘ÕáuÈGÔi±ÐÆQ”TvY›_>FéKIJ¾ÁEtA…å Bh³¼`.ä©¥%ÈÀ1Íeœ*g jm¹sZbØôµJ9RÅRBÃt³&Ýa¿Vjµ¼)²£?»Á9Ûü~¯”g’û‹½,°Ÿ(Źä¸öËãF;ƒ²2îR˜ n¹·À5ÕBœAÒYÔ -­m†„¯‚;–GªEÚ×8 ñ~ySTÄk=óBPI¾³6ظ¢60ô×j&tôÒj|…€×ðq<ã¤"{Øí¥c\pY¦Pj"Ì;—5ñŠôp_•r=BoÎ+eð«S³P̋击õ]2ÏÞÛ¸þš[Ø3¯«£ê¦“ê øC¯ö`ƒ—C”ƒNZª‹Í‚çßÝíöŠ+ðQË;ÒÅ_k–Ã-ÑrÒ31``¸fÆËe­ý=ì8sÜKaâ"«‚}w&*/èmÕƒª«uÂQu\©’N>ƒ ŸÖY=l±Â‚ç>nP®™óJú¤kÌrÑÚâ,6?UâÒ–Ø‘|1²ÇôìY]ެ¹Ù¬·⮵îSÙÇòÄÊSò§¯ÊÓMy:’§ÁÉ$×رj›¢Ü‹M ¤¶ú1j©×Â6*›4Hí%ÝC·Å6Ög7Ö -ÅÝn¯•a!˜vÉÉÎÐÊ2ÍU#üQÀõS?ô®²ÏÈÐ ´¹Ç¾]pËǺ˜Ïµ»ñ̼;bÈD‰ûz®ÃU£|Õ‰Qp£œé¦Iít¬‚O¶:¾mQáYPWwyÙ]þºÅêÆ:Q°:øa¾, Œ<.Ø…†uÊ‚Ÿ÷ýÀ,‹Ï;c˜Ö5&É%.õÏGœò10"å)½£-ÅA[ÓWÿ>ùêºåZCšGF'l NtjÅEö¶Ç×»½¶:J¬×ž¤Û8T"t˜Q[Ñÿ €¿ì¼b`Ùnï5g^¨å_JX)IƱm„‡ÄŸ@¨ 0…^™`¨êŠWû-zS΃vt/m¼ÃÙs³oña3 øÒå7ØGžÇO._Op+ ,OI®BM}e•_•Ù±††ÚEʽ â•9…žm%‹ƒGT …5Áe8µ™¸ìÊpǸáÇht¬f. ´&YÙèH±5:)r*7½㸭ß(L• ¡RÂÍ|àÄl‚kÔ€lrÙU냓—®9rÐÑ´PñþN2˜ ðÍÒ¢å 6:ýŠÛêïˆ}Åú78²ÛÐBsætž›/%ÌC}~[z ¶(þ;V.ŒUx}ÂQ!&ó¤M¦qOj+8Áío«”ÇÖ;buǹ·Šnaj†S<dU‰‚fÊØÄã8¥„µÓ4戗jn¬Ýé ¬¸mh9’®ÝW#]°‚¥™¡«ÅZà‰¿D?2à[胖˜hóM´ÑrIJã×»½6ž9oû¨¦gE8aî® ³„NòO(C Üze(»/r:ÚM1P݈س±ÞërÀÕÖs)¶nnÝ•ŽÐa,Ú»·8òŒ}®²Fdšé$¥ Ø¡ú}?ô2;&4¥y`vE?TŸ‘»om-5¥ÂÆà#7-e„>Ë;Û,Ï¡]ù‘6¶¾â,„@l#ƒÏ 5ó2cZh£÷¬=\åÚ© èïDÑb@%b@UýÆj`Ý\±¡Ž` Mó7€+ÎK «ÓÇß3z >®åö;Øn¯µdžÛå’`ž·DòÐÜ÷’ݺ¥¯•l» J2H&8mg) Y«ò#‹3à µÛ ÿól"Â<µVÉ'±y˜P±¬×$ÌúPŸºªÒQŸAN’—.ôòßµL(Ö1—z¿‡ˆŽÀ½›G¨@Ô,é‘V°ÙˆÕA)‡ DH+{1A©›8ñ—:»ÿñO’S®kh¬)š}¬ƒýR»ÁÛ?á_ Ÿž¥Š?°ƒÐ=iJËúKa¬™©ááÑ[¨ ·ƒY¿_ 2Q“A(S;7t±à>Ñ*l%WžËÓZž oµ%\*¹r7¢T´aÀ'çú6XûD¯s®‚²úïËÓ¯£y ì•‚P?Ökæ;ëW JËŠj¡"Áþmˆ èÍ 7£:ß•êûXVtÀçjŽ)cK;!hýF {^)_Ÿ[´5ú4!À§É¶Ä1¼kòïÊ~ê$—þ~“„Qˆµ¸1Hg3(Ç™tAYÓlN’"ª§>€DQ…úËû¦S“dÙGbÄŸ«’C+CŒø—ŠÚŠãˆ- V Ná€o9סëGb[ngLk 3˜±S+Ñ "µkìÛr9#?Z`’Oá 4P!÷< $ OAU“ðdg…àYxÇ͈9‹+PB‹9Ã2ç5ÿŽOâÒÞe©Óz ›Ð>7x.Ø›K9"@¨³ˆÂ·Ñ4©Ox鼞§>»ÐkCÇ '—Ù¥Z0Ò†3I¥oùê{ àï.˜û 4<¡J÷j7ÇúQlKA\”ŠíI¡ÖîG„l#)@“„.‰Ws o]$ ©‡M<˜’e¾3¥©%ÕgBHòÁŸþ‘ŽQz›Nk²î¶­N ׆U]¸m}ãÝˈ»ÿªfÁ_?.}Et±E¾“œ`d€`X :’EHÜ\ŸfÞ€%\9‰tÓã­(Kiö&v}HèM1_‹‚€©ˆùÏXfؘ*2 ó½êÍÃmBÔ7ºÀMY1 £>$·>ÔÄ%»#¿ÌcÉDxÖ¼£¨GI¾{lë YB~7ç¨c'áa²€4 ™ïñË][â0%·‡šEpÉv‚£®)Ï0VK–QÒ6UMP¹nøÔðkìÎ`:x’&Cprx$±Ež«w›O/\$Ñ.TDÉŒÔ#^‡´¥.ç%¯œH;8ºÈÑTÖÔq›þ<¡­ÂEúõ Æ0…Œ¡ò¬}Çõ3DA'ÜÉ3lu]õº%@{œPçí^ýÙ[šÑÕŠÃtˋߢȠȄ&nðµò¶I™¯rn9¼¯JÄÖ°-¨|A’J(ëiAG“•ÜâØøþvƒë=S4αèbY|“’X–ù0ÏåvP>öß*m­+ˆñ€`F£sñ^JnÇåî5TÙB e5cí-0 ÓÂâÇÇÖàçÛzÊRå:t× öÅuKëËbÆe–„›ÄÅ šÛ&¬#®Y݆.Ž×;”GHÂâm€ñÒÑÒ¨f°¹m0ÁÊÙv$^â{v³ìfÔ£"J«ÈŒíûj¯±­‰Kƒ¦×1iŠå}Baú ;V!kÑ^bT7t_ú’úÍz²ŽshƒÒ7Óm]}lIHñŒ•è´&K„M /-ˆiRm˜.¥‰ ’/»fB¹­9‘&d»†Ù}Þ‰(~yŸ»3ß +Í8]Î)ÊÊŸã?†{úÐÆ'ìéuÆYþcÈYa¥ô†™J1SWâ€~rù¯]Íæ@™¬0µö‡n×f>‡`Tá4pkŽÇÚº-ãTÞú¿ ¯ I°¾`S ÍÅÀ/DÏ5(!l“ø' å@šD(db˜ÓÄÇå±ÙÖ±©Ÿç¢GŠwƒóEðYR‘SÓm,v{;ðÛù99¥1%a…•'™kDi óYæ>%×r Xqò±Fl“f.)u¡A[vQƒcÚ˜6`Rý%ÁÛ\{ËOŒlÁéë&xKcL©†3ŽjÄ5FÄͰ‚Ñs‰0-å¼Á“p86åô"’ §`©ilÉóa‚€¼ì f|W3‹»$zÒ |¸É¢›¸Š$†¢c…QwMúÃÀÒ 3 ,³¸ Pÿ¶¾ú„OžÿHSnò¾ç¢ñ‚¬TµŽt“!„°, Ñða“Tµ"JÆJ±jnR;]¤RæÙò±±­rí,|vö×Õ±¼àÏ\hŒ6mÝ$ÄŠnœ¤¦3ãòŸé€‹ÕÈ^¨(mFÄ M*Éi»aaB@7øÇOU9ŸÛäW½†åôÕVm ïïÊÓß—§¿.O¿—§ò×qæØzENT49–ªŽs,#Ú¤«£NR[“tbÈМ&Ê%ÉÏ{u—ßrªwûŠ(j¹@܃<šZÖßk7]Þ"M:RÊ>Âé¾X! Ù±wðÚúÐ"§ì«ó}þ6 R'ŠyO-œômwZ5°ÔÊ“S#“šÂˆ·xŒ¨"Y§â®†o¯½ \áÔÄ1µmÂ:‡(JRAäú+Úå,xùÕhF‰d?ÉŠ&·`M[£2Î{bç˜úƒÊŸ6k‘ESs®]¾1·<Bæy æðåOÌ]Lò¢oz›Ç÷¨†|¬ŠJ˲ øh3üpœëå»DN[f½nk¹H¾¢/ëj\yþ¶SGRÿûl:¿tDއA±þy‡:Á 8mÃòÝn˜øçÜ$ ,‡ ý‰¥ÍçõÇ_†à[};â{åÕ¦F›ËX!8µ_%W›Ó<Œn*t < ™„/œì¢× ò&ú•ÄOšWó¦ôØøî-Î ¢zéÖŒ:JΤ›`vC÷:#L¨Ô¼€º¡(ÔÙ¨búQë¼)%L@-ú?­hE’eÁòRö\÷ˆ€)8Ù>¯H˜Â™³„Óž+Áùig˜-Û¶¾ßµ5U½'–¦‹ëÅ"µ&Ö¦®cc :³4n!ífU}0„ LCDx ‡<7™ŠÙ€³ìãœÎôÐ?Uqbªg»ˆž‚Žƒ7Ä>·J³9’Kç0fÎM‚Ïp¾O(5iÇQÛL8¹qS<“«ÑE—dé(®rÀÖÆš÷®LIw£:Ò=n+õÈÍéÖšK×€6Z›£¬P­’¢iÉXƒ÷6p™›zÂG.䉫½«©Ç¤ÍWÁÇz.¢;~7œÇuù’ gF+[>ac'Ä,}G؉Å=QWgÒž Gþ ÿ˜N§Ûø5´EìAëy¶:½ÂÑÿ¢gE<ÇzܬÏB åI–[Èšä.àãT ‘ÆsITUêD`vT¬)ôz@¯"ƒ9™H4 &´SmM™a 0_лyÞ—œF ¡‹ÒRå$Š0>vCNRbåäÇÅ wf®b»¡=QØ/Ÿ‘¢In~²‡&YÆÌg 5sWtËf×eE˜è%œrW”…µb6RØ],3š2ÐO ¦œÚ¨âDY¡aÈþMÔ5Né,:TëM(<Öô÷X8™Ü夭oOìÀL™ë•X72à9 ;Zù~Ÿf²à§¡NÖ§ZN.”Ø”ר¢íY­- §ˆ…ų%Zh7a-£eŽ]ctœ‡ùâL'É)zT46 ª-V q%àék]>æGšZÃr!Œ6ô 9Rc2|KìæC!YërˆdÌËQìÒ^Óà$S6\@Þ»”Z´]³x½x‚9YþÿGLŸ¨ØSS韼¬ Ds¨›éàôår5tÖˆd®ˆ1*TÁžÂº¼ÈY¤£+õ®49æ{¡8“¼”cAIŸ ÂRYú@5L‡5w1”å&%xÍãŒÅ`³)PÁ…ß\;vF‘iìωÍ\ôÌý¸ÂÙ0¥¿/׿žoñÙòs ã0~ZÉ0Ë·ÃÙ‘VËØshއ¬_)yFÓüŽ´(ŃÓ?¥1fé hJ»XÆ 0(9“Ëo:ê¾-bÕ‚Ù§A'÷}w€H«ª€ûÔšqaOQÔZÅ”È9žéË×­ôá¡ Aþù÷œÐÐ4Õ)ú¿¡wœê,f¥3YÇukÝI‰®ž/ú-ÒšAÇüeaZz>ßT°À²%H7Ëžœæ—d¬IkzrÒ@¹9!BZgéyC=ÔJòO„LïŽ6ç¹µ ÿ–žc,È(ûa™™8¸éT»€ ÉªG\ù™S9·ú,p%ÊL¸è¡Ã zzÔ˜ B¢¾{ü\ć EÅZù áw›“(-®w¶¤úì´Àš'Âm»‰‹q­™sî*BYÈ鑾/jèÎ+N½ôü6!'żªWQ¬SosË¿™±úùïÔü¯“‚Út Ûª0Už{bu:00•ßDÚ…œ\»{#ºø6¢ÉÔW«DL„Bâ9]î|txX¿í!oß3Õ²"§/ð©~‹€·FLpú&=o<ÖÁ¶Ç½èQ¢=ô,‚q—ÿþêòoYþa·7RÆ»nKnþÝàô·¨ ÿ®¼Ü×—£kûþ¸”ÇÛAÑ@}º-¯EõοÿL±U¿ôü0èùõàóê¡ñçA)C½P–'S?s·+• _)YùɶòäcɆ¯–¬ú‹dáÉÍu¶¿¡E+¡ÈeçħìUs  ˜TñðÎwµG‹<¨52€ Üð2ÐÑ|Sªø z¿ñ8=ø„3 Ü}óÊ¢ì%Ç÷ÿQûÿW•„–±qI2QŸKÒâõž©2÷o$š8 $¶°?¹:»tCXÏB%Ž]|^b5šÜÒÔl:iÓ—¯¡SU2cÞ¨³“ý¿(@…5ä(âùNŽoÅ¿·«K.ç$-âÓpXÀŸ¸'!µ/t.•ÔŠò³ƒ‰Ò“ r4ÕÖĽMìý?îöþÅžÍ-|vOÞ~:~K‰Ù+ß’dpæYvèåÔZìxtC¸SL˰½<ìq€Ì?3Â,0=>6Úý9ÿ†:àõéCÖMe!G»ÊBâÇ(uQÁøøk‚‰¿¯?›‘vÒž/§“Õ˜i¨AÏÙ!ôWÿDmC¡F/à{€ÚÓwäÕ‘ê)‰›:¥Ÿ‘]=:1º`ï8xz7øcä‡Á ×Á¼^Nv}¬ÖQnëËLöó Ÿ‘¼®F²¹üäÍPœ°Z?^¾úéÕO¯þŸ;µendstream endobj 136 0 obj << /Filter /FlateDecode /Length 14845 >> stream xœí]¯%ÇužïÏMþ†œûÈ:­úþ0â1,À’&ð…¬‹1‡¤(Oq¨áÐ’$¿=XµÞU]Õ«æÌˆ¤ 80xÁ}žywwuwuuUõÓ»w3‡½úÿÿ¤=˜Ûç¿{°Þð¿OÚío^<üøÎÝÒQ³/·Ÿ=ð7ìͺt¤ìn©Ô£Ôr{Ñ~u·OæˆÆ$[îæüüë?{øñ/¬ãý‘¬»™Û‹W¿ºÿœÂ¾VSÃý›Gsdgm¾¿$êjŽùþåùñ}´ÆFî_P6ûTüýu_„±&Ûû§O>§£{ÿÅ£=Œ‹9Ü?}4‡Í6†ûç5µçíým_²ñ&”Áǯé£õ1Þ¿¦@®Å–Ò×WlµÕßßôí«%K¥ó9®F$bª^¨·îþ‹GÞÞÞêQ“K´žd'<9wÔè+ï‹ÿöø {ÿÞÔîÇøôÕøôfóéíùåÿ:àÓ 7à7ãÓËñéËñéÝøôÅøôz|út|ú§û&x.æ“MÛf1?Úl¨=WòxnÀ_ ú»#΂}}ÂW›R|öì¶œ¹Wçb^î–ýrÚž{ô7Ó"Ç?ÏÛMuÅ;¤Xåù¾ŽÛXß›i«?¶Œ_oV}ͯž_á«Mɾޔû˾ùO²ýOÖ5FûQçÆÛÍ:>™¶éÿ›s£~àÜøÅÇîˆgçFýsãcίv{~[çÿ×€ÿy³æ7›bÿjÓ@ŸUô×½„£\ÿðâ‡KÉ~·YË÷um;+øtæmá®äßæZ;„òñ¿ŒO?Ü°ï²»ÃøôWãSÜ‚©XçѨòÑøn­é÷4>TžOGcwnœÍ÷—›Bü~wz¿Þ?¾]}7-ü\Î÷~= ül³ÀÝõp·À7›o|½Û”7»*¸»Â~µÙ¨·S±é`]ŽÐó_™ªô¹–Ï6ÁíAýëœ:»³Äíê<êÙ{‹¾¯3{²Î—] Ý¿NEûÑóËþn½’ïÖ¼mË¿©pÜ”ðìýõøôƒM þÁ´h9hùøämð‡™û¸çA;kÞ?o+Ϲê?l övSį7Ÿž?ñ¦cönS°o>°ïþø-6ëÜSßw7ýsiG ü¦…þ'Ñ®w®û\àómãGŸ€Æój×ñûõ¦ßÏÚÖmS‰^m¾þüjv—w›Âž§ìO{}p™¦º² 7þûøç¿Ÿ~9>ýdWÖ³z¾Ú|:×÷b|:pÿs³hTÔ')ÙG þ£Â~Ë û-.ÿQaõ¢7õ5d.ßtÁÛõØ^oöÖo6¹·¸n|¾9¤çvž×¤ìvÈÇì_7ç̹ºwß{ÿ„AÅ_œðû_Ì3<úÓù•sï}±Ù®];óêù]ÿåÔ‹þØñÃËi;Ÿüúr³u»Õýq× Û5¨ç—ÛGî¯wúíÁýýæÛçúÎ*ö›Íú¦Õó—öɦmû¿[Ð'ÛmÕŸ>4ªÙ5Ý¿~ ·Óÿ˜ÍdW?Û|úÀEq½‚Œýå†ßÿÚ´ÙÚ÷îÇçG÷ɦ—ÓêŸ?gò_Ƨßî¶ãû0n¦CÿúÏ·’¯¶WoS•?ú*0OWü›ìûí5}§}ÿ-VògÛ÷¦é–S"Ï–ÿ妬çdëÇ^k´YÞÛï°¼mù¿ÛŒ÷»íb’~÷urçIþ}®ý ó=g6ÇŸ>[¦ÕÙ-ßÍíöÜó¬o6Çd7½ò'Ì=»¡û‘GyßCÓåÚŸÁ¯7ËÙÝðœjÕŸ±qü~êýGhvuü[Nþívì·¸_ Ôwرÿ¼ÉÅ:—÷/ïßÅïïuífÊRúA¦Ôe‹æm\ʼσ1OÕF[ï‰ÿȇqå^èïL8B¾[g6»ö¬ÞXw¸4Õ|!ÁP=q·×ã[šÌçËÏ7§%ŸŽvü§åsÕ®„]µst´Š»¹T[,í‚û»Ç¿}n§™Ã–~ é<£/üî›—_¾ûâõ§ô½¾;z‘/›bM­G7k¢;¬ÿ@K’+‰Ó®Ö|˜²4LÖ†dJ•£Økª3o¬¥“™R)¹©•õT¥]~I ãÓ'›#âOþ÷P“Ð#ñe¤Àœ9<¯«˜ñ'GXÚSýßÃQí ˆœ,rqJ=’)aîH©§jÀÚ;áÔ`ç`­•Ö$)0xëœ1á0aÞ@Î,#UhB–Žd{Êú#åA85³,©©‰QÊÙ£–Kje=åw]ÖÄPzé (©“ ¥F†Që+‡qƒ u2^’ØÉy,IP0GuJ\[™ %Ì–SÁ) ©‰¹È©Ä%`‚”0Ôg¢=NÀ¡U^RôãO$Ds‡§PˆD˜Ñk*½¥A Œ¾É»)ÅÃÇA85Xo${ª·BfŽˆT¡#+©“%^c¶Göƒpj0?R‰d!HMŒëz¡'-áÔÊz*Ñ•í’ZXOÕäk ,™#ò¾¯þqN f©3ÔSù°i¤„¹ÃIåFÈô³Æšm„»tKH¥# €Ð@1s&ó>f‚0{^’µG.ƒpjb¹pÊ! ‚ÔÉ¢åTâé¡B¯3ÖêŒ áÐ`½ é)w„<R'ã½n]9¼©‰qÙ}àö„ §óËG:i^¯\µ;@fB¼×C8l„Së×HgC¡²Aêd5qÇÝÔ$Ýû…õT¡ú{I ‹GæTò4©Á*u£zª9‚ÔÂ(•}ZSó¼Ks8\©…Qª8êÑ®)aÙ>HªºAFJ˜ãTÊá@Èଷ5ðcÂ!a©¢e#RO2Rõ’J|}YR`ÔÝë)g,÷7˜ôÔɤìÎ$®‘SáOæÓk—£¾a„S«SR†NfR8•ZAJXï¤RÊáŠÆ„SË^R½­c2RÌâGª×&#% kôövNM Ëòžë²fV9•Aja” †+É”¨5éÙæNZ¥èªš/©ÁòQ¸FÄÀ=*&H «hM]2½édÀ¡å‘é½A&#$,ò‘Nû¥¤NV9•-õk…pJXéíeO*ޤNÆí›+†j9Û·“E´\®D>ï˜ %,Ñ(µ§òQÒ H-ŒR5ðbN †Q…s5q„rE2Å2BÂúˆÉyc¹ÏÄ„'U&Æg5ûùÄ©“õ¹ó¦p{Ç)°jÐzê­çA85˜;ªçTåk)¤„yÔxïý«NMŒÏDOgp©“aYÞö²(Añ°Èî;2AèdXR0Ü’ÕóDëtgªÜó›jÎ̸×,FÆL85XÁ(#ØÊc^&H1³Æ®·8Á…#¦A85±€Tíc¤NÆW—à]Í…pj0K³V=UúL R'ã\?° 83£Ì¡Ø¯I H 3¸š…À½i¤ÖSµ_ç×ÔÉx…45pf wøÄ¡ÔG H K*ýÐ3@F•ý™ú1©ÁÜP  2'âyŒ@¨uN Ñ›9 vÄÑ›ŸYqœ*t½‚”°‚YŸP|Ÿ[á”0šøåw 3#ÊTLÌO™õLêÅ’dézM7? @Azêdg`4¹_¹Af׈½þ»áÙ,4¸a02ŒÆšl¤âuMË\j›i/ Aja”¢«ÿ55XÀX:ÒtúI:·Ñ>âL85˜G“H̓ŒT]÷&Mç•Ë6NÌWIÕ0ÈHM¬§Ê8VgêdÜ;áÜÒ;ŸYî&ÒÌX„S+ûRýœº¤ÖS|e_S'K\údq4¼Ü)Z–E·¹®Ë,Ȳxd(„Sƒ%ÌXE:¿ó H 5‡Æn¤NÆ×ñXx\ ©‰U>}J¡©R!H +R®j±oÊY®•õ”çv|I K¸BÇúì!R'ã«I¤+s©“åžJ4J(ƒôÔÌx“ñG^7qE=ùþâZXOɹ>§F)ú¨dI –Ñ#H´—â H ë÷x(å<·åL851ìùjÌ©“ñ1Q»‘á”0štœŠ|ud‚”0™˜äKï7‚ u2žÝJÁÑlŽNMŒ¯t)d®IL:Ïì§èz?„S+ë©ÜÇ©kJXÒ'×G œ,bÄ™Z&HŒÇ’);®oL851¾W²ïóï H,cY¦JH–Tùª´,éd<¦NÅŽ­‘1õÉ‚,«8lM8—5˜©óOD e¸AæpO%UÓ{á œÌKí«‰úiB:ßáȦÏÙ é©“É>È&q›8탓ɱl ÊpÞ›/Êš>AÏ€3ÉÝÃlÍS Aêd<ï˜méó¶ H ˜QÌÎõ»' œÌÓqì©Èý]&HÌT-ëù53>ŠÙå™ •¯)êU\B'âú’é¶¼[«ÌÌxÆ7ûJ·š… u²Äë£D„S3ã5†4ÎúQû4Zn©ç}:1nArLÇ JÔ¿éRŽá>  –»ârê%dUÌšäÌ£aNM¬ß/w9‡ñ'"¨íÆ¿Gîy1AD˜C_2Ã=c&œš÷.2µv¤„YôìrñÝBAêdÜÎ49BaI4_.KÌáÞa®Ïn&HŒçpsåû> HM¬oa¡‹¤§fÆå*¦ö¤NÆ×ú"×u&œZYOaD½¤„y܃+ÎñHŸ §&Æs…Îï2R ¥)å-ô™pj°:Rf±… u2ž.>ó!«c:xF}à[B?ó„pHX4²OÛ H g DËmt< ë©Âcï%µ0J¥~×}MÍŒkDJ¼g˜ µ°žªíþ½ÇêÓîß3VßÎýÓVßÎý[L¿¦¥þí­>íþ=cõíÜ¿ÕôkÊóCj1ýšòü8µš~My~#5™~My~H-¦_SžßH]­¾û·˜~My~œZM¿¦¥þí­>íþi«O»;«O»{«O»;«O»ÏX};÷o1ýÚÕóCf1ýšòüZL¿¦¤6i}Kjb¥Dh} H1KÆa’C´>¤6i}Kj0¹1¯! Ä–ƒX} F„Qæ½.NƒžYP¾MJRª¼IJR' õXéá”0kdYPú@:ß¶¥/Éïáÿrf2Í-JR'ãVN‡NÄWgQú@:_EéáÔ`·£EéA Ì9´-¢ô %,à¥(} HŒ¯\¢ôpjbÐÊ ô¥i„33Y+}버ù‹¬‚˜—I ¹¤Šh‹Pú@8µ²Ié[SªˆlPú@:Y\”>N 2Ù(J§«¸ZŠÒ‚ÔÉPS¡ô ‡Ü¥)°ePú@85X–Z¥©“…EéAJXÅÍQú@zj°pf‹Ò‚ÔÉì¢ô u2¨WPú@85±Œ+} H “Ûµ¢ôpjb¼¿DéAêdÜߥ„S+Hñͤ„%\ËDêáÔÊ&©oM «µ‹Ô‚ÔÉü"õ V­, Z§3²,h} H ˜>±)a"‘ˆØ©Á2&ìEíAêdü°•¨} œ¬ˆæ µ©“q[(jRÂ*ÜL˜} 8”Á¤¾¨} H-l’û–ÔÊ&½oMŒµDÑû@zêdãÑ÷@³rñB.© Z4?‘b6D9h~yÖéfÆË‚æ‚”0¹¢‰æ©‰¡\Ðü–r s}6fÒü@85˜Œ¼EóËÓÈûd ç†h~ HŒGÞ¢ùŒ³‚³Q4?¤„eÌÕˆæÂ)aÞ£7!§Vö)>gEóAJž2Ë2‚"»¿âø1àÌ‚&ÃoÉJ˜‡Á„S H±à‚”0¹ª‹à‚ÔÂ&ÁoI­lüÖÔÉx ,‚_žæ; †®C“à‚”0~×ðûòx׉"Œr±û #H®‰"÷ôÔÉ úΰûª¢hAîAha“Ü·¦6É}KjbÜg¹©“qÑáö1àŒ 4dB¨} H «<"³ge+‹Ø‚Ôɸàðú 3!AëáÔÄXâ­)aò‚h} œZÙ¤õ­©“ñµI´>NMŒgDëAJ˜—eAëáÔ`b ‰Ö‚”0öÞXêËré’¿K¼&¡!a¢‹ÐÂ)aՉء)aýÈîôáOD:þœ} ˆ0+F¤ú@85˜Ì¬‹Ð‚ÔÉxì!BHOÍŒ¯ "ô %,`t(BR¢, J§F”>¤„UôvDéA ̺‹Ò©Á"Ò‚”0ÛŠÒ2RÌ2DQú@:ß&‡ÓÀ! êÍÜ&£"‚"ÎQú@–0—/B§Ëè‰Ð‚Ôɰß!ôpje§Ñ·†€ îaŠÐ¡‰¡ìPú@6j”>N ó}¹nõáODÂúï¬ô­‘“ñXO”>NÍlQú@æDj„Ò‚Ôɠ˲ӀЌ&¥o MŒÕQú@ r­¥)aòÓ¢ôôÔÉ"j•(} HŒ²(} œ,cÆX”>¤ÀèúÅ:”>N &×xQú@:ße¥„S㻢ô %,‹ÊÆNB±L)J‡“»Ú¢ô µ°Ié[RÂHË·IéAJXÂ5W”>N Ëø‰©¡ô Väñ@Qú@f¡®‹Ò©Á*FA¢ô VfÿDéáÔ`Qô@(} H,-J§Ãl½} 9Q„ÇBHOLÚ?ú@bFÿ‡v¡©“­B§ "ŸAèAêdP!ôŒTg4î¾M>ÎL(-:R`îõXçáÔ`‘îM:R`Þà,ƒÏ€Ð@ ‹ðê†Ð‚X*8óEè©Îè‡]øBèáÔʦó›Rïÿ1¿½É§}¿˜|;ßo±ûšrû^_M>íûi“Oû~™ï"ûi“Oû~{“Oû~ÊäÓ¾ßÖäÓ¾ßÞäÓ¾ßEåSºßÖäÓ¾ßó&ßÎ÷[í¾¦Ü>¤»¯)·©ÅîkÊí©´÷ýv*ŸÒýž7ùv¾ßb÷5åöqjµûšrûZ쾦Ü>N-v_»º}Èx-ûmM>íûíM>íûíL>íûi“Oû~“Oû~;•Oé~;“Oû~;“Oû~;“Oû~;“Oû~“Oû~“Oû~;•Oé~ï1ù´ï§T>¥ûíL>íûíM>íûi“Oû~Úå»Ú~{“Oû~ÊäÓ¾ß{L>íûi“Oû~;“Oû~;“Oû~“Oû~[“Oû~{“Oû~;“Oû~ÊäÓ¾ßÖäӾ߯äÓ¾ßÖäÓ¾ßÎäÓ¾ßÎäÓ¾ŸVù”î·3ù´ï·5ù´ï·7ù´ï§M>íûíM>íûíL>íûi“Oû~“Oû~4ùv¾ßd÷5åöÔd÷µ«ÛÇ!­òmt?¥òmt¿Ùî»ê~ZåSºß{U¾î·Ø}M¹}-v_Sn§»¯]ܾ9í¾¦Ü>„»ïêû)“Oû~Ïš|;ßoµûšrûZ쾦Ü>¤”É·óýV»¯)·©Ùîk·oDN»¯]ݾžYí¾«î§L>íûíM>íû)“Oû~ï1ù´ï§M>íûíM>íûmT>¥ûíL>íûi“Oû~“Oû~[“Oû~{“Oû~;“Oû~;“Oû~ÚäӾ߯äÓ¾ßÖäÓ¾ßó&ßÎ÷[쾦Ü>¤»¯)·S«Ý×”ÛÇ©ÕîkÊíCj±ûšrûZ쾦Ü>¤»¯)·S«Ý×”Û‡Ôb÷5åö!µØ}M¹}=u±ûšrûZ쾦Ü>¤»¯)·S«Ý×”Û‡Ôb÷5åöqjµûšrûZ쾦Ü>N­v_SnR‹Ý×”Ûǩɷóý»¯)·©ÅîkÊíCj±ûšrû8µÚ}M¹}H-v_SnR‹Ý×”ÛÇ©ÕîkÊíCj±ûšrû8µÚ}M¹}H-v_SnR‹Ý×®n‡»¯)·!eòí|¿É·óý»¯)·¯§.v_SnR‹Ý÷A“Oû~;“Oû~ï1ù´ï§L>íûíM>íû)“Oû~[“Oû~;“Oû~{“Oû~ÚäÓ¾ßÎäӾ߯äÓ¾ßw2ùtJ›|Ú÷Û¨|J÷{NåÛè~³Ý×”ÛÇ¡ÕîkÊíCj±ûšrûR&ßÎ÷Û˜|;ßo±ûšrû8µÚ}M¹}H-v_»º}Ív_»º}ÈÌv_Sn_]쾦Ü>¤f»¯]Ý>d´É·óý”É·óýV»¯)·©ÅîkW·C‹Ý×”Û‡Ðb÷µ«ÛÇ¡ÅîkÊíCh±ûÚÕíCh¶û®ºßÆäÓ¾Ÿ6ù´ï÷¼É·óý»¯)·S«Ý×”Û‡Ôb÷5åöqjµûšrûZì¾¶º}ˆ »¯]Ý>»¯)·S«Ý×”Û‡Ôb÷5åö!µ“ý´É§}¿½É§}¿½É§}¿É§}?mòißogòißogòißogòißocòißokòißogòißogòißooòißïªò)Ýo§ò)Ýogòißogòißooòißï9“oçûÍv_»º}œYí¾¦Ü>¤»¯)·S«Ý×”Û‡Tø€ì·Ø}M¹}œZí¾«ï§L>íûíM>íû½_åÛè~«Ý×”Û‡Ôb÷5åö!µØ}M¹}=u±ûšrûZ쾦Ü>N­v_SnR‹Ý×”ÛÇ©ÕîkÊíCj±ûšrû8µÚ}M¹}H-v_SnR³Ý×®ngV»¯)·)eòí|¿ÕîkÊíCj±ûšrû8µÚ}M¹}H-v_SnR‹Ý×”ÛÇ©ÕîkÊíCj±ûšrû8µÚ}M¹}H-v_Sn§V»¯]Ý>„f»¯)·¯‡.v_SnR‹Ý×”Û‡Ôb÷5åöqjµûšrûZ쾦ܾ‘šì¾vuû8´Ø}M¹}-v_Sn§V»¯)·©ÅîkÊíCj¶ûÚÕíãÌj÷5åö!µØ}M¹}œZí¾¦Ü>¤f»¯]Ý>άv_SnR‹Ý×”Û7R“Ý×”ÛÇ©«É·óý~þð»Kc$Ÿo.åÞ2ô³:ø› ôºWw{ûéío_>Ь Mñöû{ûÙƒ½ýöÁÜþîÁGŸè€9RûúTrðµW!´: Ý6â ó9öKî”dJÕÔ'‡§Ô g*Ð/.vEq”k)u)ë\ú3enŸÓn27úÿû¤ÝþæÅÑâ-5›n/>{°¹ùŽšËÍeºâo/ÚïîÁ˜Ç'khBûž¦Ï…>wm,ù»uÆ<þúÅÏ~òâáçÞÓ³‹–x/Œ_ª•[)›”ë^Ÿ€9äm°<·Ž€%ÔãqÊðßK$ËW'É,!ša!€%”~¼TBKÛ{†¦ðq‡Ì!ßPŸ*z¥3°s˜~Hè~w¨ýÏ@FúÙèþgYþ´nw”F- TÊt FnÊ·4™Ï:Aû;_M'(Ÿ˜vü'è·¨¦ÔÁHþæR=ŒÃžøé£§í³þþæÍ«ÛOþðÕ§_¾úâÝ7o?í|îDRAÓÍÓ¬ˆ·ôÕûß~úå×_¼ûãã‹ßò~ée¿l“5µ¿^ØšèèýþÆ?-ÊsÁôò'“Ù õY^MºÕî!G¶¿zÚsëêsMx±µçqC' $ “ûû=~%¾‰DJQŸXJ9ã•Ó¤ðë{i&9 q+¨üÎSš N8Çïõ €d^•Ç»Cá©+_<Þw ôNwËZô,èø ﮈiމýBåIôìo­î]H§wûv’@PºtàM´†×U"ïÁìd÷Ðô¿¢ÓdxÛ§åm(]Ïë„W]åe’‘û½ç,¿º2#øõu/!ë=¯þ:¾\¹ïæ«1xé!^™ì©çf—†nõ—,¾Så©GfñúÉ~Í÷Ôªxµ IüBÜ ƒ¼“ˆWÁa].÷¹œñj3_yÔÛßÂÕ‹LSÎ7uõþIÉxÝ•g‚Ÿnç1['¯÷òÜsñÕ÷Þd±U*ï'¯Íª¼ò€7»àô¾†þÖLOJfXyÒüûocËûS|o…0¬ÔuÒß|åÐÔû#ÿª³³¨¥ÔC2xŸŠÞèád'S]âŸj¯¼ÿÈì?èžäÈd¼Ö*=2ýŠÞúÌ÷}Í•ºÊ%Þšx£/Q‡K\ñ é¡ÊvVËïàUöEí"P'yþ àôÂt'¤oC4,yz@¢¿Ã"Zî vÒé?âÝšCîücã½NÃýþNú–4‘2?I¯‘{ú;€Ex&Á 5#ðï¶ °–_›7 Ô²Ï?ÙÿÒ_‡6L7ø ÿ6{׊ßGìJÿÒxtÜ $þWüö|}/Éø–åwdvRÏ_¬ï„U*:¾Õ )qúþ`ʉܥ-"aþ¶‰h¸ é$!#+Âû®¢á‹V w ö·ú³!Ö¢Îã*ÛIé¶Ðß$‡·$Td¿=lœ–ç¬ûÛ xR+Þß3ßÊé„ßéåNúqˆ»‹õ 5 áÓ]z»ÔŠs»Wxb¨“ RãÇôV)½tŠAâ=èY6$å¼0ÀK SÀ™Ó«HÐM¹\¿sY pxeB‰ƒT.]4ò6>û‘ö+¹ìQV¹–§Ä½‡Ô¼’n£wÀe‹‘Q6D„+ñWóôÆ„@›ïð„8ˆß†ô›ð~õ`SÅ;/Ž=dù@z>*4;?ôy÷`KàÆ>Y´WDz;™,÷k>š!|r”ȯѓ×S[¿Ì%¾c,ÙÇRùx9•Š}°ƒô$8ý¥tÏŒÞÓrnÐH> éiãø„êw\‚3}~­“>¯œ)hää%ï?â%ø=/ƒf¡ßÎY4/™ïÿòí½[ˆ7¸žÏ$j’¯¤^ˆE³p\“ð^å¹msÁ㚟eÓCàîcLhÛ\è]üNJÒßœw’èù,‰QvOôüήq1sx‰X •‚£†½¦zeD*:MXlæëõèE9:²aîõÁR¬}À‹^ÆåcCä =ºUD<^Ã5ñWâÖ/á2?º:.®ì¡àªèø¡—©óã2÷ˆÞÌŒŽJÀ$rpÅñ˜"X9š…Ï´Ñ… €NvÝ(@G®àDó‰§:‰è—ðß…O3Gb"¼•ïI’7TGÒ¿ÏŒ»kžîñg8õ‘]ðr7pc‚—‹¸LFOƒª0½Ò:GoêôjúNâüº÷ài­‘_/Ÿ’Ò_{ï¸ùõt3€¿ã ¿®»T´µäÙG;ž;± ‘fŠ?¬_{®°45ÊÃtÌ„>CT˜ð±õԤќš^.]ìSݾw#™$ÏåZåSàåÐYÈËI]êí³Øé©ô3žž”MXNí"ÜÌûÌó4§Â}—®cGÌõ2‡>=áð„l&ñB\`KC“_òt9=sÞ7ßUö||0Üxг«ÝÛËÝš9àaw Naâj#‚ñ© ÜvÒߪG=Jd<ÞïjøO~Ò†^«ËÓ7Á9®¶4¤-Lw¯2^›íÕ¥Np—Ñ“}Ý uÇí ýUH•Oû…t'ô=™¾ME&fÂsÁãµ—5bBŽH¿îÔ„I»À6¤wt'¥‹Ù""Ôeu/­ódtSÓê­åsćà{…ÎBž {æqÿÙôN"©ÿÄÞçCà BïÊÐRÅhí„õwVvqàî“å®ÐBxÚq&Ve@bï,‡8º’’ÙͳTŸô!£ßÓ'§H*²&º U~D;†G¸$_¢'—ž¾ì ?‘O/‘þ$3=é…ô; ‰[údƒ©Á^˜Ä¥ eɤЙÊÀ×óþ¸ñBhœEV§"¤F~p;à[…Fž´mžó!’ñøµ¤/§â=à>D~"Ô"Õ8ù~_ÃÊÏ2¿CÀ{&nöÂeXNôg?sÎ8.‘:TÝPô83£éw|×Õ#¹‹¢»rHÒ†‘»ô%jèJ’Α®&(Ùý[ݹ18˜ºûAl’^“åG´è¶·|‘éõÕáí‘Lúbêµ|Ö`wö6:q‰MZI™‹CK¶SsqØŠª|6_#—¿ý[¡ç2x¬ÜËŸúIW‘®^Ô™%±ç$]<ŠF–K,ˆ¢Ç]'ºÂ™®åH#Zþi‰š .Ä%÷É¢6É ¡F€î}'¤ôŒtœûº¯ËYµv{Ípó²ÏÐ8‡~8 GÁòùº^9}u×¥“džkì¤/™ïäEî™÷»¯8ßU"Ë.ŒL÷±©Aã]êzªßd6eÍH×…H_‘qR±ß®6ɺl·O««“Ð7Ó££Ò3¦“Š =‘¾»è^ãX²…UvnWêΟ•öÄõgÛºb“îGº '¹ólí&+‡Æñ/—”œ¤Ê9ž}¡»Ó(áX;\ßåÐÈi~nWöW’ν.Õ+ ãðپǼœJƒ8œ‘SÓ8¤¡ïŒxÙN;Õ½Ó½`Ÿ¥*Ó¼b\Çà"3ˆe€k?ÒßGÿ8|÷ƒ² ¡ô#G÷­*Œ“§ì‚“ztR˜ðMò™p‡9²Òç7ÒEvzû|qB;§Ïã[}ÂÆ÷Yf<ðvNl…YŒpÔ‡áÍ¢&½ýØÊÈ:Fö\húÀTž¤&éžWž O±±Ö ß…Ê"¾Dú…„UÓoýW+Wá™ÈrûšÊh@?t?îþtÂo¶.+Òã“ý~ îoù˜y^Îú±×se¡¦` @6võ$U¹ÒTÃ* ‰¬=C½çHþe•«Hâi—þ£Ž|5J$Q…é%Κt3ôs„z.ßhîJ%ô¨!ÞÞ~J¢e·£Ü莙¥£ÄQçk¤é)êæ4È·Ó2é§mêVûkèÒÚWoÞ¼%cfkB ·ÿð⇿º¿}|¢gMÉ÷/>ùÍéúýü½«´öVš\š×H·®¢/7ºg`ã0ìžè†u­6ß¿x¤›©)yÿœ°5&dÿ†>{clTj×kvîþéãMAãïþ‘Ä“C½=]kž úã_Ø<•…4ˆ’©D/^=üêþ“GÓÿ®÷¯Ï¯Ýß=ÒÙXŒsµ—ÉŸ«¿7ЏZj¾¿äHŒÙy*Çøê«Ç'šjL÷O©¹óΧû›/)ŒñõþêqD§%ÓÒ¬qÕ…û”͵”Ò¿H郻¿|ÍK.ÆÞ׿™\ }#ðòËGjJ.ëâÆJ^Ÿ?åe“ékSá:Ž(f_ì¼q½8¥¦`—ÝõEßùÅ{÷H¢¶Üÿ(¥ ÷Ïú·œ+•d¬¹úÊ «ÎT{ÿ¤×cK ({..¢ìÖ'{¢§¿>Ót€Ÿä>ѬSŒ–,¯5äpóöñÉw] ÌôñÉÑ`̸ùã+ŠRºÕ?ô’”TÃý«Ç'º£PJ~ß®yuîоÕÚçcr³^›S-ÁöõѪ}Í÷>—ðòë^ŠõùZϸ ¶W¯þ¹,Gþ7çBÆ¢ï?9áT·>ÿt:¯9œKžjÁËé°¼ü«Ç'š³)¦Þ_ôS˜òý÷Tÿr©‰v(ýO­q)óõÃé}=ÃÈÍVN1: ËýÓólúš¦/ùþò-Õ¼\J÷O×ZÑëBòÒ‚}µîòlLIK !­õ™p²9†pÇ9å* l¨²*“RéÇ!d:eæ*J;œ$T›¯õ0äƒjÑzàǶM§èËw©Æ‹Ì»û¿ÒéE?)»ì××gsðG^E®q®¨s]Ÿ 1Õ7ß™Šñ¦Ñ•Ácó¼oß|v.…f&ÎRÅÇQ B–Jð7Óu¤o˜)5åy§ÞËRŒ±Öõ–Ñõ_£¡£Ø®j]‚F¥{ymÄÆ.»íGtèΛ½6µ¼ìgÎY×÷f¾¿™ªÂoÍlŠumÞbq5\*œ#mËZÚ›ÞWu^ª–·ï’©r´ê\Ýýå:¯ßô‚VÊ¥¤Ñ‰ ùþŽ WjìÅuõðlçßSq AEì•k©ˆ´äQQ'¾8Ë|Ýå¼8ª2TO,ýR í/ã©5®õñÉÓ8®z©B68ÉØê¨É5øó©¾Ó§o&k¹ñ¡åc‘²ÍÏT óóÁuÒzŸ¹CãêÔ¡yêC¦t{¢±9u5ûÕï<ÚØšè:'Ÿ^OŸŽO¯Ç§¿z|¢au-TTýåçó‡ñé«s1ÿ÷üøÅø÷/ǧO6ËnÓ²åhül“Û-ïݹº›"~½ žKüì„?ðwãÓ7ãÓË;ûbZ¶|úãÖòËÍrÞL»ñ¹-˜ŽÕ»MÁ¾Ùïøÿ7=mEž½›ñïÇøäÆ§x~güÀ?ç9(+ü?Ü0Óï%ØÛýj‰5¨³»ÛM¿xvGœ›÷êüÊv9?=?þë³Çò›i…Oެ‘Zïÿ0àÛñéŸîããŸ~zþócßÒ'ÙÔ¥sjÏâŸ<Ù”ÆN;ìÜþLÚiî†þ”Ïv›¯„ͧºÙßO›rM‹þá€ó'9}Ÿ6‹yš‡ÿ¨îÛ#endstream endobj 137 0 obj << /Filter /FlateDecode /Length 5924 >> stream xœí]ÝÇq¿ù ò0ð‹gm©««º»Êˆó`@¶dDÐ% 'ÞñH‰äQ}@8(hŽÙV²Ç„ÀiØÇšH‡‡gÆß퓽_íBÐÌãóùéz~z3?}3ÎÏæ§—óÓã_ÌO—óÓ'óÓ“/–§‹o™Ÿ^mô·5ý«ùéóÓo7ú{·ñ×O6Ú-cœÏOßÝ9Æç³z;?Ýl¬òéÆÏ»}™Oî‹_q F!±dÈ¥ ¡ÑB¿â¹ïw±ä?¿ç`çA>»ód/7–·PÅBƒo6öõõF/Ë¿ÙÕ}Ø6bšÞâ7kïonøoóËýòr9‹Žw`~ óSÚ ¹¥Þù×xÏ^Ê=ÛéÆüîn—Ž÷uÞÍÿ8{øûÕ~nQÐB_[°r¹µ‡Ëéþ¸õç»7Ø}ìƒJßìæÇÿñ™×Ç`n7›å(ï¦í…¯—#Oww¸5›çà˜ÊÀÙÂŒ-zx»±”-&nŸdb'¢{¾±Åÿ º{Ý&¹,[(ñÝrj\éÞĶPo%;AÝs[ÒaÙä ›:šHì¶µu~¯û [>ë—Í_.ò‡um‰Ä«}|Ú}?†¿yÏÁý½n…áù¿îöŒú0ÿ¿ç«óûÒÀ£©~[)€BU=0ÕH‚Û³ùíÆÎ½Þ˜á–v~àÍÃ|Öð Ñÿ®>{xö•Ù}Š" â1ä‡#– .X˜ ÄlJƒBv¡CP„R\89CI£2, ¦ ÙE ) ´a¿tÊï8z@k!ˆh™AÉ¡C h!™þ.$#´éÁè‚Õ #ÐQrƒ¸°q‰ Æu”!¹µP4*T(Áƒë˜¡d8d Û¤€dC1µSH²‹9Vò$á-„é ÅQ0È¢ªü“ÒPŠ ¬C2=Œ“”e`Õ*éøN@X«ê_\$üA:Ab%‡ɰPX<,FƒÑzÆìÃx‚íaˆ\ Á–ÓÀ\€² ü@³%Jâb$“VNNæò€’!êJ¨˜ãbî •Š×ê ™C› ð°9MöNr1 J1›–ŠxJ5LhàÄP<,( Æy9[þ‡‡¢•ZÌèŽÑE(+ä*”({ÌÐ$‘M%&Í Í¿K9Bòèb†¤MB±‹ß"ÙYTå?¢KfÔ–fŒ‰ªžd“=ØÄ´u!®ø_\üà%f£B‚=ˆ¦ 6 *A .By(”ÀÅa(’AWÙÉ¿Wµ³=4¹ê7Í 29@©šf™p*= †¸@1³[-äA†f;¥Rú(­†|Î.KN É–\ ¹8 ë/1pp±3ˆ9]½:¤À¨03pqñNE@60$ %jjÐUЃMÌËl@ø8ÓADB¡ÔHžºx¼‚T´ü.F6g¡‘Lõм̑›Yª2&èB`&Šd@t †êä…,€.[X9¨ØtD!²å÷ÚMZv‰IÕ¸,Æ““‹L¶|E‹ÿ*$ €R¨iDÉ">KæšCÊ!¸¤Ý©@´Øe1íÕc†liá8°š·Ïj,ĘZXË%ÿÇR²ªÉ“<²T%8Q"Ó;crL3fØêÀ’ÀáD59•†„br‰»è@ ºXÞB€Æ&FŒ|÷ÿ¡C˨lùIÁÅýo§Kæ €.JM$©*qÁB4õMÎ Ñ%W3æjðXư‡À«JƒEÉb¨‰O.f²-Ø"˜.‘KÍÉ—í8èqXUtóFú˜ÝþæêB«’Ù#ÝÕ‚6<™NÓb¿.ñÈjpÚ+T[a°Ô ƒÖäÐÒ*‰},d³àch6|t‘'As©¹¸Ñ#Ôa)ZèÍG„²é Øî³xÄŸŒñsQ>8ëõ}r¼:'–<ÛRu’c%A°ËxUewº@Ì­¶|›ÄxUß+f”Õû›¥o”ĵHõüúY-/V®þú¥un ñÔ—o쵬¥JÄ Qu|a;$bÏ»—õ»˜kmÚ˜Ç'µˆ=¯_·ñ²äñ¼5¡ô«½¾Ú·ê÷¢í}Ä”S¿5/—m´á’†$2žw=ÿ´3y%85Š”ÛÞ¥œÚfp@Qž6Æè÷âúI$ c­/y8Õu}ÉvvŒ¬ãÓºÆRÇÜðøY}%¶/[¡Ŝƫ6k޵fm+ýíövYCì/¬¡)ë“ÿe¡®WµqÓ)L«î6ë†PNûÝìȯ£ÏFhй,ËéŽ|=±ÓèÎiܵÿ]J5}o¿¥ÀæÔ°}ýÛFÝÑ«b©Ë_—¯°Uyýîj¯KÁÓ?lU.Kÿ5·üýO¿[> ÝÌnWƒ]žð¾£Ü»ï÷ôxï~ÒV?pß~V³˜××:Þ@Qdç#xX1!åÒ8íßìöõˆW¶ËD1.¯“aîÞêX%‡8„œeâ!UÔñüE' ^Ù¯z –#4¶9VŒ°ÇŒV¤¶>ªÊÄÞ"HåTu(~þ¼}(˜ÆÇ_·sdÏoj¡HêÙÞñðûA|êƒÕ6Ìê¦t}Šãu7vßóÅ2ö˜ÛÛ<~¹àR‡Ǹ”´(éøƒÉÂò|,˜_·Ó*õÜæ¶ÓJÿ´È‰óÑëœ[ë¦éY®„F9Hä¶[Ebê¶¥ž®AþѲBT‰ßV!H¤Å &«]–ñ‹NxcU‡-,'Ì̪ã¹É$• VÝœ1[1Žñ»ÝÞjJˆT˜µ·òzK'Ô p[Aý™¸:¹¿/Ô¶­_ô"²Î–¤ôM¯ÛtB¨2jV}¦Ã ¥Œ×?LËD©*€=kÀ¾“•L<¬®'óCw‰št:n»Vl„,´¡c°Ú€QÖC¼XȤF*9Ý"ª^؉(«Ä¢äs¾!‡ñòÓFÝê û"ç Ç¶ƒåˆP§ãhjPô¨}O— ÏÛ†„RÁb9ˆë™ nFIÛjÌ1Šš ±oÛƒhÃ)Y+ù›õ,åŸm6ººóNuíHùÙ pW¸2dÓ\;j¯s„¥±d6· eÿˆLl)ã×;‰v¬Ïh5Àãy…GAíב¶T£ëóÇ»ÿ>]>Ü^õÛMVîÎ뢵MÂFóÐÝŒŽ F¹¶¤@k |·‘I®Ùøã«ŠVù(o‘Z‡m%HÛ¡µŽ)¶ï×Pù¸£ˆ‰Ò8?í’Ýû·n›—XW²û¼W/Ú±Y>Ù6‚z móÓ0Ùj%É4u—š@ß[Üc2X–“°—t—¡³”|œ7ÜM©Ä[dY-!Ÿ8åÎâZýª}¥z3«_“â"´(UØ<FŠ“úÿô0­ZÂajŸ÷ÒµØaö´ÝmA%òlºÃ EuûyD­‡±¿lBf>W _ËÿJ„håDØëÙV;,˜'A\©UñÛ®ÿ##c?u¼¦Î#]«J\±h×S]Ûå *¶ïÌËvâØ½hd‰ÓÖ†´"à5‚î-~jÎi`I÷R&"0mÒ¾”€«y¼[6®ùB\IÑó_ÚØ&Êlu« º¹ÝÙœÒI¶õ«Ö]À¼Ý`ˆ½èµ°‡]$›äÁ±)¹’žv×ÌŠüäôÅB•ç~w¢[ÊE›\Z¯õz9‰“J‡}fJÇ‘2Ý< =ËݬDsljõDJl4) !Om«¥ÃàN‹[Ìšôt Ø×½† ¯´Ÿ²±T:À7—Û òd··ß Hªã»Æ—†2oÛÛŒ©ªEµýini^´™ï!˜Æ÷ÂÛþ¬êÔL·M™‰ŠÄʵ6pñ‹’{Óú'ÑñçE‡xÖµh;ž¨Ø6&sÑ©NórþiYNõ¡Ž+¦]bMU‡" | éËu§S¹-Ss©þÍeŽ,0Ä’ÛiØŠT˜‚Ò Q?Þ³ïÓQÓãéw•b½°}à·{áÍ2Ì'6%;³dVÐÜâí´oÚ¤õXñéäãJ#±Àºð±JÒ“Üù¢EtÈÛ „W¸Ó~ycZÙ¿,.áMØaÒp¤IÝv Î8ßé:Ɔ¥j‡øëmÍ_=Úú ¿'ƒæèÇtŽh·7ôÄ÷kQÆGjÊo1ccËsy„3O­6nj`¿ ªÙ8ú4׊•õg¶»6þ ¤\*Õò¤o/¤gו^4Só± ¼±ùE.IîMÏc,šµøYÒ?o ăV•œ›i}ÈÍ™>lKá˜óJ®<Ùb”¾ñ 1Õ‰Íc©Vc=¦‰Ãì*žÑÄ6‹3WϾÝ[ÐmN¨ž‚`ÀAmÓD•rmÀ¸ëìµ3ÍúÔóÒ}pee¸N ¸Ú›^ úݦ¤Ã,óiÆ´ÌžÔª;G…âÚ±åÖ»i#Xp gŽºzÅšiêikœdüÍÜïšÑëYÁÝ®ÒY²Ÿq½Ëo©–!<ñxÛžY^tö#ݥʭ±" orÊýÛ²&ñÃοܤðÞÞV[{®3A"›5ÎFÕUÝ3R F‚Æ’Xï46sIÛüxbG.Z¿9¤ Ø€öˆ'ÚNÆ•_½“(ÇLq°ÔN¿)gš h¿›çô¶ëúÈqn5¥Uã]ÑÑ…¸Ÿ-ñ[OE¤#Ø7O¼mïÂâ×oZ[E<,íMóæ/I%—NrôŸ,§ »½åéIˆ§ÂLk ¡wÞµé¸Z4-¯CóÕKAŽÂ6©ÜÏmºˆ¾vú)K©„ÇV’…ܦmG«#bžÈI;ç«Ôêp-Óvãë]׬×J¥Ý‹i}xÚ›Ð~XRú–ì‰u¦–²2ÎonaëDÏmÕ¢+#dú¹HÙø¹È[µFsuÑ±ÃæS6}‡S4q2fsÑ’„‘ýÜ‘Â÷ Y?[›µQh?tòó®Ü;‹Ÿ·áJ _2ò:®sËJ›TÙ: ®’êWÚ›/†y|Ä$u÷ÊIÛþÿÒ¾4_~vÖmŠw(d[ ˜LÝžÿó2έݥ‚œ°É;žÝ3ŸLT›ja¢‰j¯_·©g‘lVJ-B´2‘{̾jëw¬³×F¦$¶ÿ™‘ò¯endstream endobj 138 0 obj << /Filter /FlateDecode /Length 6584 >> stream xœí=ÛnGrïÜ`_’ ’™èŒû~Ùdp€\vKæb È~8"iJ+’‡Ò‘dÓùö ªúRÝÓsHF^$4žÓÓ]]]]÷*¾;³<ð_ú÷üæDœ^¼;‘øö4ýs~sú/g'_¼PêÔÍÑëpzöà }!O¥r³óêÔ…8‡NÏnN^Nr³³ÂÉ0©úüýÙN¾x!%ŸFëÙIu*NÏ.N^NÏa°ŽQD3}܈Ù+)ý´ƒ·*zë§Ûúø¥V™é ŒõÚ=]ãB /§ËÍV{7!§9 e½™.7b–^Z3]ÁPƒPZNïqf¡… 8$=àQjk§ ð1Èp½ £ŒzÚãþbpFtÚûYE›FXu~«¥š^lüiœ£Sp°ÍHØ*=G)áâ=¬„Óî–ÖˆÒÙéíf«2}€#M„ŠÙáìdð.Ž`pˆrÚݱIî6€æ d`Ëìwçåf‚Ÿ^Ó‡N„é¾sBèˆx±QØ:FcôtŽ zk aÑÅ`¤FÈ }ÔÓ«Í6Ï|É>¼È«8>ð$Œžþs^z$¼ŒtðQÈ  '¼7jºÝ(?¡p± 0m.Jß—··¸{cñ«<+‡‹>3ʹéÙf«£šƒˆÓÝV{Ë'cK\6=ýÍÆx5 a76h¥Ýô°+ƒŒÓžbaú„ÛvÊèé¯7VˆiW´ÓWøcpÑ•)? )Tè-Ò“ f–"æKôÀPBêL2D3Ú“T…´|Ô1‡aúº`sGê…N'ŠóAY†¹º›ûtEBp×6¶•rŽÖF‚ïe=j£þž.›Ž~š7[#õ샛¾Ül•޳jú´±v–ÑùiÇa!ЉQ¶Ôÿ A{€¦ROûèÙÉiÏöðzåôq¬—vÚÓEQ"JNvoä bœö·uÄ>ÔÁ$HÓE¸¤÷FÊ¿ðeJ[lï½T~Ø·‘ÒEWas¶DnBNÀŒêo€áJkïèÉÆøD)**3ízÌIá bŽ`žâ_¾fÄy‰¤®•ž…™ÔÀT*D.egrή;yB‘ÔF!ùKâÎ*rLD,iåÈ™nËÓ¾<}*OuÜ\žÞ—§w#y`äì){œ¼ „” K$uºÕrvÁ§;å»Q(fë”R(-â÷›r]nI\ -b³’E¾ÉÈ9‚tÂ4oÇ.He#áX a¼Î"ׇ$3Ç%Á,B¦B”å!ú"¨¥% ØÇ:bËEm¥Ê:¼ýÀV~ƒÏ1˜è¦ë Ü%-íƒ^ÀÒÑD­H ˆRË´EÜÜGgt‹‚C½QI!PÍz{Äœ‘Æi/ìôõ&Ãù~£$àDÒHÚ]BR:jÒºªfв ?íõ«gi°W?G­B>ÜŠF{¼V×u œ]î8ïù@ã4I‰°"êé]•Q™±C‰%(y­ú“˜L/iîCåkcNŠ,E%í€chº§0±ù='…/!ìMu,Ù/#F¢œn*푥ƠÕt1üîºN\öç‰ÒÒwžóß•ÁÄ>…snº«·äº%›âœÁöÇØ$;Ú{ZÏÃ94دÏ+Ó¼¡ÛûM V…0K_8¨:%´|9ãhÇHæGÐ|0ta×­ÀfÚjZˆYj×3ÖW•y_W¦_ß+®÷îém &Ñ‹‘+KŒ`Qà†¨\ü ”,6Ùëf0ŽÐ14tð«J¤ü5 Ië‚çÄ}Hs„€ Ï6Æ1"q=9ëà¸ÄåŠb«5jªˆ;&ÞÚ‹Gˆ“H„Ã6UFÜ]bM­M_YNi ÉœB ©¼jtz¸¼´×ÐâëJ‹oè°µ>ÉuRö ²žm¶Æ€flP)…é¼N…ŠÅ+“í¾%l\ÏŨ§áü‚‘A7Êc8Dš4[K™7LTî?Z*ƒÖâÖ(Rû®ˆÆ‚ÔÉT]’3ë8yÓÝW¤¶Ðh¥ƒ©=X˜cP«§PÈf×h:•íÐ)d›;¦$]Ð26p¶ßœ*§m´|»lôëJ:o*£s4y>î*˜t@ÙóGî­@Ø’Aº5ar‡p"È^/£/im#"×q˜l  ¥±úâ«öº$ ZÕ-Ik…›m˜F絜ƒ4YXãz·éâ ¯]ðÏ4kk]ñ“ì RȆx襁²¢t.©æ˜ïyՀ܌qäf‘%> f©ðlwôZÅÌé‘dt×ÉÕuådl¾Šì֨ɇ˜”#\DÙŠní))ˆó)¦ CA Ñ¡à€71˜t‘ñ’ýªûŠÜüÖ”ïäø@9*4V‡8í¸bò±Ü êàhE |f„ãKì+æéœ|Ð:©–EµfJÒ¨ð³ˆ:Ó(3Ô¸‹à*m)®\Ý]Ús8"ç:%€–mY-Ê•_6jk|‰´×ÎÏh7‡ \•ãÆÈݧï|X¡¢ý5M:Ö“ÙÉÈšH_ÚP¾¢œ¿ðèµ\‘†8¹ˆ@—p³29ÝÓTà˜ÚÑï1ÈÏ2Ú¡ž¾*êËÜ?t›¦ù@Ô;…NÎ}†ˆ¹˜l¢ß®ÂL¿Üî_ê$™9tn™¾À¯ zc„  =1`IÅ´xKÅÜ}ÒØöçÍÖz;û§³M@O⬧µÙÀzÊ…ÜÀñ& ÉûÙת¸#놉Ód.kéŒBÊñÞ%ï“p¥µRà`ˆhÓ{}½›ˆ Pö—áƒ:»r`²;°9<¨JhÂÁϱ£:ÎLWå^Þ13A{bá³»N~…Ø^ŠÛŒvÓùév©ÂLˆšéE¡b# |БÅo÷EF¡aÞrNÍoŠ—¡ZÇW›BÁ°ð*îŒ# ŽÎ¨W8ç§Þ|MHP Av6Bõ.\ÓàHB—®”![˜à•ÞÖ£zúqø!6þu¦~pñ{µg~snpÑMßL²ï˜ôd’ƒé-iª ùTc¹1t†Œ‡r6ÌLRð÷ƒS1†5iƒF~ˆGœÄtÞ±„‘P ^à(“­0¡ŠërǬÈÝŠS¶ÌMÊcf·Å ƒéZ¢¬´ÝÆÅ²5ŠLüˆg#DL:Q>UáãHŠ6”U§åzð%M~‚jG7&úŽœ=Ȥ8oüPÃI+±§Í Úñû[Ób;/Œsh´Ñ=ƒãIN'¾H+„tëD¿ ÍA[ñ‚±¥Wè™Û 43¨½òƒ‚ýаJôjE1{S܈Mµ³­aW)›1Þž&j@TdV÷_9#7%ï7Aƒ''fÏ>x<(\– l ºoZ{!ù Üun„à#"4ÁÍ.ª‰Ç~)íW}mº‹¸NU®Aç ¯êÝ8ÕïÈíÜÍ`\Xw°Š[1š.ég#[÷òO•³ÏÚØT! ØöyiaÉIÏëNŠý)ƒ·G¯¼%W}FnP%oÅ .V´"\OôÎ'Ò&8¤3Ù³ßÙ I S)®~r‘ä–jí60m|© -[uW­×qäŽ8vt µW:KÔ¡(cýƒK“«y³uÖ£æýš‹Ã- é|Ž,+éœ(Ì. Ù’mÊLÚ[Tµú‡¦d£¨VáÞȪêãº"éÀLBðž^BüéFŒÚ˜Š³cL}wQùÈÏãM/+…È$ýQ?#Ï7¸}¿b.`Üg¢‰¤µ“]®ƒkÌ#Æm‰Ó7] ¡uh­Ñ;ý-g§;°*´B¯+K[PB¨ïé“€8æ:pAÖ¡^7.È.*ê²`%$'~PÌDXá´¤*ëÙGîpÝs"!i¡¥$±­5Æ(ЦQ†­ˆ<]ŠÖf­2¶î®á>1äw3á¦3¦µa~\b&Í2Gl_ŠÜ²}5ÊËm‚;¸Þ ƒÑ<‡ «lÂZìþ5ÊÙÔPý0³vÚ%»* Ú3ž^µf@k}ÇôÚ.·‘ñ†ŸWbM¥øc) †ž×Ìð»ê¨ù!ë*Mñdñ‡Æ¦DJ㾫8`¶KŠL8a:%2™Œ÷4/f]±‰9×LŒäh‚îý- ¸7]X|ß[ÓðFžë`èa|Pšæ@—p³±¦hžU~IµzoŽ °=_db |l—+³ÍÐ<Þm P7ZQHÙúŸf©^{¦™³+Ïìa~‡¸¥FDZ!×|ªó¦I·À-¹Þ5ݧW¸0Ûà×¶Ì h]Äöç@‹+‚†Z!—43èåÕ¾gZ—>—Õ-ðÝûzîi^ˆ­Ž úµäÉ[Y%sZ×÷zl˜Ãϲ5´öNŒŠï~û w×u¸8UhÁ×¶ÜZ j=Lл¤ïÌj&êÀüôvަÄV %˜#Wë‹’§¡©élq ¾ØË ’°Í3Èp§2‰ÝÄ._WÊg‡Ô8x˜[<9dül]o¡VÇÇõâÒ¢)ÚF `HŒÚ%Á"£7)2MúèBJwéP­R®£‘î)‚skâ³Ë’¤uBçè·ºu?tf–Ò³‘~a#%9”L$c—L—hÉ”– zÚ= û6´(#W+ï[ñSb`‹ ƒÒﻩ®ô¼ŠÕ/_0Þö݆€ÄD©G¹ÅN(³FÏ”ÄQ¼y)aC£z›|ö(ÝÈifU©•§k¼­Î)&ïójúã\G|÷w­ä5Z^~ÕäHíY’Ccq׃4èÁ¾ëø,X²œ(Ï+­v¹qଫ_ïYFúŠæ5æÊGˆ\êÙ©Þ¯"AÖJ,/FJ—N^Í\‚LÞ&¦šù– 0¤à!;;Ê}OX“Zcþ·  ™Ö>(عL Mì5)¿Þ)Ê“u°«¡–qH¤eÛaAgFiÊy{.ÆMÑ€ þóäì_6R¹°1No«FÐyl¤!{íU£áôÖ{anZ(ga‰aÄ?¢°ý½¯)®¢£ç‚û¡Êˆ#^XÕp¹gñ&-%åô%[àê#æ¿:mï m3 5þÏ`ýD§(=ýùO[z}Uáâ’)Ý ¸{ˆ©*°žÑBÀI”íSL;&(AÕäNæüÑ\.SŒÙ ¯éCP°Zù†ÐÚY›Rµºéçõèò:£X‘†é5(ùàsZ&­ þ>ÌáÓŸ3öö%¤R‡ – LŠD7 5àƒíj~íZ4UÌÒ~0 ¢‰&´ÆðN:Ø• Í&{ùÂû„И´»«Þ…¡ ÆÒþTù—ô!šý]á¼7®y)#ÇRÂõ{t&›°³} aÑ$§`ˆ•·¼]Ú}&9F¯gýqõ¶ŒbÖÃl …×.ƒÙzNŽ˜–žä¬<rhòFW§Éo»¦Éz}ÐûÒf˜ÐmèóBŒ0Ú4Êb“³Õ^Í!ÄN?›нózŽ",ÒÊ/3~µ7³²WسŒþø òŠ}Ø&PLnàŽªÿãDõn®å¥<Ê·ï랎$hL%}žˆßÏJâ'”f4®ã”+)ö«`/©BÜÝ›.Ì_ “Œ…,-_"]=ËÆ^»˜“çä…î¹¼“èœçÑñVÙE«W«æ`:w${~×Ñc¿8ƒïíÔ,Ú‹¸»J¯E›½7VgM˜—F¥úº”ŠÚ&¿+b;Ðrh²µÁø¼«&ÖÞk›Æ,FáÕ”HÚ†“Ž«=^Ó`âÕò8ï%s4ôT["¶KªeP4WŒ fQ µŽ^޵cˆ"ÝÄ¥y+Ìl¡„|\ﶤˆ½‹±æÅeáìóä«Ãb‰ÕFÓÑ9´0ö寣\O–ƒßu skD­‹.OÐe‹ÁkÚ»´vð+÷¦€[ÃïÁÂW¡š}¬[w÷Ù»g‹*dã<î«ôQ F^C„n«>;×òÜkš ‚·ï’‹¢±¦Õ=)¶ÍÃBÅ7‘Rðã,|ÏÁÿÁmнɡãaE)aY}t¼æ’j»)èèÓ"pÙ$ª õŒáIErþm}”<ÆÁÓƒ-OϸXq=xúòôÛòô·ƒqµ¡Æù`£uóoع–-Æ’î{;X$“jºJªõüÔÿÓÐ’†*ü†!jIMu\¥+=øõÿ] hèÍàã]=c˜[Ú¬·ƒqïãÅöM@*g½ÀýS ‹¶nÒR‡Î"냮7ZÌRù’±ð Sú ù®/‡;ÑäM&îŽõ2hcVPõo:N_Œ—^³´øÇ¸tŒÑXr»GáWC,M^€Q¥zæ;–^Gë©_Ie›°@Þ§5³’pJ×—§`ùNŒœ9J*hˆ—OêŸzë¨mN4jÃ>‰i>~Ýrç=EG*ÿ :C—¼\KK7Õµ‰%šÑ¦¢+èɦrÍéZéÌ\¢AÎfY^EʳQ(í[è%W“5±m8Â’¿~ÛåµÕ]S‹MûÖãÂcŒkô6’¹¤ –ÇÝ®,uñ†`Ð"™Ñ©!ߪÆÆ¶Ð=¥sYß¶)í;vµÑ_­ ÍÄm âEX)Ÿþ©"k@ï·sL q–´±ÞP®œ©„!àj’£:j5ÕòÉ]tQ;'®´ßãÅ@¼¼p‘³’Ö8šh‚]æ6µ2.‘r˜œÖ%ƒ$X(ÂᥜÃåaèPß'Øj-Eœ¬×ôØãE3¼{” ;}]B©<¡p€Á<âõUˆàèé¨kP¥Äq–OÛ®¤„øÆùCÄ@"¬.Éèÿ{Ðk^ÎÖÔJ¡&Œµ¯äé®c-°MHy5IÛG@§ä v–‹4ò?WÁ œkÆ©±Ú‘>¿ƒÎ}q, XÚmÒ5?E3km‹R·£˜8ô”ÀºP \ЧQn2ôa+ Zi2ÄœÌãZÏrÒL“¨¶cuRGª5RJÏ&¥0-¨á–£¢k6Ö°¢ÙIå6ôPͳ^BûäžvÑ äAÆA­Ò«€Æ~V£â‡R¶©'`->¯MKií'6=Üê9Æö˜6ì¿DÀ@Û" :v»ð _ÓºÐWÛ-ýnÕ¸} :¶mõ“OnÑ‘!æÖ#LkÈ 3¢ØåæÎ`Ë›úÔÉ¿Í%<»~­bØË)=÷©{­©M5<ë,¾{»é \#Ðh[dÒ\³cEðƒ?É“¡kƒæÕg­n¹C½Í´#þs^þ ÷„3ÿîUî³Ñ×:¦4:·Î%ޏÉ$øÈÕ îþPØv¬2ûVr("¯ú?D¢„qá˜V©ç¨Ö’;ÿ ïú³"mcjhüëÙÉó“ç'ÿ ÓîÕÀendstream endobj 139 0 obj << /Filter /FlateDecode /Length 4370 >> stream xœÍ[[od· ~wóú`ªIvQwMH€6A€$úäaÖ·Ý®íñú²»N‘þö‚¢ŽDÑñ¸Ù¤(öÁgÏèPERäGêõ¡’p¨ð_ù{|y Ï^@~{Xþ_þõèà“o½LÁÄã³úuˆ´>ô1ɘâáÑåÁ÷âÛ•N2EëÅv¥¤ÕˆóÕZI•¢ÒÄ)þ'*ð1‰›ÕÚ/µ6âKüPb‹\ŠÞâ`%!&e¸Â×:Ä«•’&‚Kô{g‘”VŒÔVJjÊ0øQHbüñè︒p˜dòÚãJÖ.Iu<\k#(}xtr𽈲|£/_û ´ Ò¡¢Ñ_# à âÜ+e’¸Z)é(â‚)ˆ—ùQ©dC”ŠÞHh>±Á#hW¤¤VI|ƒ#¬‚˜¬¸ÏVlé«öx‡ ” F¼\UÊŒS’{HF|»R2%›Œ&a&ëØŽéÌGåÇhuJâ¶l¤1Aܶ×y¢MEÀ‚åü6"ié n™ð!‹ö›¼ûÑçEg¥HàØ\­tŒw8BY°)¯¢Á5]´ÇÓÕZ''­ âyŒ*kM–¦ò>ŠszÀ‡î}^IÉZ“WçA{kø,Û+¢íR—M¶ÛÕZ{™¢Ñâ$ëi€2c¡FÜy ¯u²Ò$'Þ2!¿l‘÷2)ˆ ^Ð`œŽx†¾£Ìy¾Îl¸Å×Z%è†L²g™SH»ˆç«¦ÍÇ+¾r1r†^¶MŸMAdmÙ´/*ÝÍ ˆQ‹ ­Ä|«®ê`Nø‚΄XDDB¼bRFÝÒ¨LÎNö¹¹!¹ùÂ1D0V‹²y^¡¨*kYÕ‹Un.ÑvÀ9Ä:‹Má(œbm”•×294WZyˆÚe“qÑhã'ŸÅ¤¥IV³7WôÞƒÏWk¤WH8Ù\ÔR&l¦¥—Ĺ‚äPòhÕÎm8['HÜdY¼Å5Gï!C.¾ƒh;©¡–.ζ·*KeUœµ—÷m—ôjÄý¶ &·¡÷Ä!HÕ<ñÕ ¤RÉ[qQŸnêÓëÕÀñh%cT•‚\­­É:&¾XE#!i±½)m'n2­#.C{é«’$³ö¨¨Áe—€œ*t LNuñÌaÝ…ëÉî/$.ßbðåX˜ ÞøICòë,âÁ”Ó§ØÏm?ŽÙè¬!:hÏe[•2ŠmÙU-Ù¤ Ód ‰Éüò æ¹ñÜ1]w§—Ë.³¨ù}Á‘Nr[æ»/q‚Òy0&Ö RˆRAàêu‹oCv9äãB¥cÞü´½æšïú³Ì]4Ý9€Ì0>Zw–×¥-ÛjîÐi}V{Ϲ>ž¨Ýëýìwë¨ÅøÖã©Ìœ.ÓGvê\qXÇ>‰—lïS™–V½ÛÔ¹S± üÌ*P“ŒöÒ¦8#£À=?mTpÖŠg´©Qƒx^9nÛߎ*òÙ…|ï´™ˆÊ, @Ó“6xžgÝT±SÔ¯¥×ë:Ó^ãM>ÙÛžo¯˜‰!Š7Ãh#.?ë´ìù1‹3Xe²I"7^¥±N0*N°s£ÆHªüv'úå”Äcp|̵˜̈FÆ as•£À¤ldê6pçÖá¹msç·#'IjÌMÔÎŽÞ\h~ê)²`Œ)r~¼zé #wÁGÚ@çcî‘Ñ/x \ç¨_7ƒ¹çnd7ÍÃ'MÓ;ΣNÓBufŒ—-d›u}¯µŠÒZ?3…q0½½bW6ABùsoftŽVQËZ£‰[eª¡×<í(ë4)« 4ÑsJ â,m<YÛ-é’ϳ­(m(ÒCfn²†^L=s˜&„LoÇH,¥>]ݲ锘°;©ø¤Ö,²8]ÍSÞœ–.„Í·…²ŠmœO¼8ç‡-óÀ 7ÝÞµ €©[pó×ü»MÀRdic‚l›e‡NòªYjþ8$CðXÓÄWe'Uè‚)ãR±;R²ªâ¼ºª*óŸ6·I›á°èzúp Vº†¾ÿójmX™2 ä´ÎýOõ\·—º¾Tì©Æ耿:8ú¨£yRGží¡3¥ÅÏOGù]}Ú<‰øí²y;˜§Q—,¾Ýמ·?ˆúh‡R›žLûdµG”ïö¬±ñ¶;w#Þöüܧgƒ5žqÖg«˜±~¿‡õÆÇý`ò—£)G\Ž'³gòõ@³šÏGS£óÄŸ›–¼«O×£×QïSþñFLŸ<ÎãÇÿ[?j_ãá¿Ñ¾6 AFz?ùJF|(‰&¨ûÉõà“ñäCá?]Tɬ÷Á-Së‡=jýúqé¾yºtG)=!*M^ª {¬µx\‹kDÓ)•V îhHzš™HlŸï$+&è–m׸|<Å–ÇN·Myÿ´ )ÍÃÈit ÂiºE\¥Ñ|2>ƒSFS%ñ½«;>$ÂDâaX¼váól:𛈠jû”ˆH§¼œ¾›ÒrëÖÕÃk•ÚRAiR¡ãåÜ`\PʹA&JÌ<)8mFt,aù1:Ä’cò{ÑV^§¼!ºAõ¹Åí<©*²È¥ÌˆøG-e2³çˆ'0óT&èzŠ´8Š6¡oiy&éÎ$à°0ôDϹªÏ {½aŽvÁXzÆÑZ…ŠÞV¡ýÌxP®1ø$fý!I¬Î]&@YDúu»>®WÞK „§LÅ;)ØëKnF}é¿´qðyƒÅ15rÀN‹HÃÙ2KÆMø¨E¤Ñ»hÝ'§Ô}‚‡Éûôˆ tit{øEí!QI0iÞò5òy4@Pz,Wn¸‹dÕ¼\™ìÕ)ˆ([ë¬D·9#fHʼn© w°ÅÚqñE"Æa ftç}#İ¥c¹ Å:'=Ì*›y>ê]ÉÈo.„ÆÝñQÉv%îþ¬ÊCÒÌÃÏÞ¸ð@K‰ÙîyôÑ÷¯-'\ÜyÇÏa޽ñíÚ¦ÐÀÙjÐoI/½²ž;íä¹k?É‹E­FÖ šãÆüiˆd×úÑŠŽ½L ö$@èb=¶;£^˜-×û&©ÍÅDÎ-`O›¥ê7Ö×£6¹ªVUøUS#D)-BM ¾*+T:vgrY¡qÉ-,‘kÚB#wCbAîVö­[¶`—s¬½[šY1QC¦‡$É$Æ>äÜiläÙ2·qWfTX´žÐq&Nã²¢‚–ºr§oSy?§[ækxµ¼T¯](=IžþÁl뼨o™ï·({Ô¹ –8gXbAX¦TóÃA>Û’{^p›ž>'¯ìã6òlž7ðçxï6äh;øbk¨ó=Œ^¾½¼¬/?«OŽ¡}u ûf„ÜèÈEt1ùükr~ÌĶܧB‰§ƒÍcr»ˆz€6òl@g3úäÉt.Œ7~–ׄÿb ò˹ wur’iÓÉ}0#—>Û¼]¤û= 5ŽF00åËF’o^}Ù@®Oùwq¸Ÿ?¬æJ]Ö“ò¸ÆŸöŠˆ¡»CÁMOßøÇÑ”oŸl<'ÉŒ¶âr$™ŸÀá .˜¦Ž‰©ãÄåÍ“ö¡97÷ïGÌy5iœx>`½iDs.ÍâÞ¶æøÊÇÇ1‚Ç®™/êÓ_êÓWõé»úôù~?1m ÷ëÞS7ðƒ“¯©YÛ–³Á|Í´%›y õ'ÿWlë}lO>ðçÑË‹ßM÷” ˜Ñö¸GaZ6<>ÿ>ø|x$|6þ}¦ˆ³Èàç'`øcö¹@@ØK(IéBí–ÛžMrK¼¹eW5®YšÞ¥]#¼ŸÃýSúS¦ìÓ\‡G—ežX¼xüNÒB\ô}ï$™èãŽjz/½r⃦¹Õɤé‚G]àÒÞä+ .šˆz“)Àn+¤íZ!‘¶”>ÅåêèŸ;ö—["kçnÌ¿nàá2à„̇Ø÷l^·äwÃuzÒ°Ïe§Û¸ãß©|åî]¦R‚é¤O*ߺi©$¨[/ø¢F-r·$YõBÛ=øX=-ß# ¶¦¹¼á½éðøÚÑIÛÒÚÌþf©çÍ{ì´z¤å²/˜(ýX°XãœxæH)»³I6ñ6)™ºI¹’±Ø ‰M­XfÜ-ãfq¡…‹W=:¸æeW^:ž¦-Iª`Tm¾n=xÛ…Êðq_Eâ’C@ÍcÑØˆ£ÕøîÉ) aÞ_|Ùª«^gr>ëG­uscd­™lÞ· xº‘ÖáÞȉ‰®¿”7-ìºËÖÆ-ƒíÿ Ld•³¬o;U¯Y¸6ZºàÚuƒ%jÆFÄ^g¤æÍˆóåªEMÇYòéEÑ9ßñðE_Ïc$V][¨w,u7Ô}ëì9Ɔòßfëórc \‚Ls‡´x±¥·Ú¯}>vFáõ ¿ÔTK ´é‹:%Ô\¼¦Ë¢Êvúqc´ûdŠ}|ÑP¾îNCS”ÎúŠŸ<®¡ ¤µÐ]Œ2*+þrÛ›Rö°!ãú^û§†äf¡n×#‘¯LÏoaÍoÀæê¯ ³~Á1?nÕd¦hüšàÃkî”ÄžÚ5Äü=ÕRÐzؾψÓ?î(~WÚoSwºœÂçÈ¿kJ„Êœ³ƒ\þ†.ªèº§©ûñÇÚ2k–/-ÞL}·¼-»fã6$ž±ª ;rjǸæÝÍÏy|ÜwÍÐgoY5˜¡\€;sZB3rÊ ¤Ö¥š'^ LÝaQ£»êË«ýkí•Äíõò«;Ý`’Óâ}¾ä!ÉÓºí½Ê;ۼʲã;ø®íü¸…»Œ—mpßyïsé~ùª6@WËgþ•¡Ü9+!iŸËiº|x¸<ÑG÷7ª¢Æ–‰G6.b"™ªæ7RÏY S@­¬ï×R\· ü:ÞüŠàTBd S½]6®Ž÷‰#‰ùàÄ&ù¾Ÿ'Á[Ÿðlæ¡e¬É+|e±xg¡Üíül^}î."Ôû›™|~tðÍÁ7ÿý¡àNendstream endobj 140 0 obj << /Filter /FlateDecode /Length 11094 >> stream xœí[¯GvßßϧhyØgF§T÷‹‘ÉCœÆØ€dyPæ)ŽlR×Ñxd#ùìÁݪú°yHÚ•Azà>K½«»ë²jýjý«ö÷‡wáðøOþýòÍ?^Ý}ÈzÈ?_¾9þë³»O?ñ¨n´Ôg_Ýñ7ÂbuµÅ£öáúèdz7w_ÜÂýƒwÅûú-ÏÏ¿{ö7wŸ~ÂZLJ®†xøãÙ‹»/nŸáâ4†ùöÓ½w-†ÐnÏa£•vûf~ü>JÌ·¯qmKµ§Ûk*ÂßÂíåýCjÕunŸßçciùöòÞ»ÐBÉ·W¸Ôîc ·¨dŸ|ît‰|üC*åö#.h£‡Þé~=Œ0Òí[z¿ÑkxºÔš‹£È¥Ž¤Öâíó{®ƒŽáFuð •ð£% ®‹ÿrÿ[ÈnŒÛwxx?j¾½¶OßÚ§?اÿy³²OŸØ§Ÿ/l_^8oò+ûôöé.®ûÉ>½¼øÆÕÝ^.OúPðâ=Ü~5?:ûÿÑ>•ù¢÷T‘!¸QJ8žýöîÙ/N56èÇYæ6ãÃ4~yU{Oßý“‹ëžþ¿íÝïðèÁ¿ºh®ñëù _›ñ›i füË‹{¹|E?½ºèQ¿¿ºõZ¹ËÛ\|üW{Å_Þ?ôá+·ÍÓ-rUüË{ë§ß-}`hXîóÇ÷ÜçáÉQõêêÍÃRÎþïµ£ë§ï®¾<¿òââ˯/çù{jÿÓ«AòËû‡ü×ÏýË?ïsÿâ¢èvgóv_½§"~qUäåûzÑÉ—‚.¾r}ËS3||] ›yá:Þß.ðÇ­¿ïŸ®ò?þ›ªüâÁÿוŸûo½áï°gÆÿnŸ~»|²Þ^ÓÅ”p}GýôŸ–ªzú)þôž©çCïóó{îóóUµ}ü{ßü÷æÉÇSÏ×K]ôÑ[Ò…íÏ6]TÞo.^ëùÅSü“}úÛ‹‰áº ž®ä¯.|ÞïË‹·þúâÎß\ÕÄÓžñC{ÉüGý䢶羺øîUÉWÎã“'ŸêÒ_Æÿòžx¯û üÿùÿÃçÿàƒkàé°xà6>~9?~üŸÕû/ïˆ8Ÿ þ ÏugºâÞƒŸG·ùêâÂ÷Uß\TÕ¬ýï¯*c®#üoûôsnýhðÿú¬7—UúÅ7žö<¿Z®CHµ¸“® ½ÇY}BßyÐ/=ØPÅwmjxqñWO5Ÿåé ÷ÃßͺåÓ~rå®®¾òÃÅÿO}…TWå-ïã;ټݺFtí£¹ú/=ôR7þézx_½*òrêºj¶«Ñ}µª7ßú™}úÜ>M~ûõzã§'mloýÝÅkÍr^\Üï*T_îrí€/î|õÜÿ|qçZ«ñâ~W]ôç‹râÕ—?~øÕ“{5ÿÅúSÛ¿|õÓÕü9ûöï>xøÛ‹gX¯íO­’üúÙÝgHÀŒ] 2Η#–”]­G(É»T^ÿãøæŽS0Ÿÿ5’3áxõãwyôPËñÏwáø›»püã;³9(ÍÅýXÓ9Ñ{b9bônJç„ãÙw·×÷ÏþÑžîc LÑ¥‘ŽX² ¡n(°z×r?bm®å-&çK>bË®ï)°»žâKu)å 6ïzAm®—¸£ÀàrMô¤yK£ôÀuX†}G·éÉ•ÔØŠ«XÎû÷˜]ªÜ(­oyåìRïG,#rKy㈹¹·T`u¾#Öâú{ =1êŽNØ‘ G,;©ÀŠWÎÕå¼cÜõîFÏ4þüh; ®§rÄÜ]J; ÞU¸ë2\Ù2LFp¹ÁÕd—ÛŽ~8¢Ë-16WÆ–'ŒóIή•-U˜\õˆ5º¶X'oí]éeOÝGzÂÐv åÑ\™|aM[Ú¤¹Q"Ï+iÇPÝ5¼r)®øCyt©ÃîâŽn“|v­Ö#†îZÚÐ((°£Ày%ì)¥dçdž*yÄ¢‘¦”¶¡‘Q^ààÖõ¼¡&ß\Ãм:MòÝÅÜè…·Ly(0¥DÑÍßJÅ„qÁù-]p¸˜ÓÛpiƒãBy%bB®†‚ëh]Ž;ƈX“KuG“„1ù›¼ÃW§èUé wDÖ(°£Ó´ìrÝR‡ÙÅ^¤À-O˜]B–âbÞÑCqƒž0¹¾ÃÏ„ê ÆI­ñí(°¹\Ø£ë[&§ÐÏ™æãT¶ôÂN0p¬Ä-UØ]ˆùˆ½8?¶´qw±1ˆîˆâR#a:ÞÓ«‡Ëhä ØQ`ô.ôtÄÔ\ÞA')B"ÛÈ)渣Mbpa ZLª[ºa .‡~Äî];fø\£~\ÜAÉ)&WЯ[$ªØR`C+nw¬N¥˜]õÜõˆ» DÇÉõ-¾!f×m·ÌO±¸”™â7X¯ÚxO`›Ë­±uçw,¢@Z ©ƒÄù[ WDúŽå©‡KžCÍÒ¶øšáF¤%R¿%2LÞ¬¬àý–ƒK ÐÞ\Ûâ Spk®}8_wøÿŸÉ»Ök?)%—F&Ы;Ö\Q`=bê®ï©Áìb,c·-5˜@ÑiÊŽœ²ë»ui;|+òIX¤^¸Ã3 @,v¬@îÈ©¸ê+ùÿ=‘ Œ•smK£7G!mGŽ,¥ŠmHGòÞõ-‘\ª.ÔLý°ú-­\]&wœß4$A(¼úŽ TJÍ„5HS¤-þº¹,ÎÐoé×X#•ÄLØÒ&Ý¥i/mŠÔ]EЬc1dK¢ÀNKöqË‚’Ø»ó}ËPînÔFOˆlÙ¿¿Àìy FÞ¦K)´6·¬¡eïîèyO’,åàÜk‹nËŸe~“¯Ãn)°ÅtÄ1\Ø2Ë£ÀÎÎpÏÀËè}œ›Þ’#CqÈ(.¶#9G—J!_³Çyåè*Òx½¸Pv¸†œ]ÄzMknlY¯Éƒpp¸%•rq™íÖ6Fj,¨¤-‹H›{æø=于Uב7­\@Q|Ú3äæJâ”[Ý]çæzÊ´ ¹'þÏÝ…^92Üã­»kÒ«[Üâ]‡K9RâcÏ_¼+5Ó¦-ý°W ¯äú¸c ”èJÎ4ò¶,®”Hh/ðæ L®rªŒ-ˆÎ³ɖ¨«d×ü ¼LØPE¨v—wtêR\¢4OÝ2Ù¡8JN4—êÇYb®^]ÚŒ¥¸^:AwÛ’e,Õy¬ƒ]¾ºTe¼o ilÅA‹SmË„\š‹håÁ³Ê–1!#ºgŰt—KO¸©@ÒâHù¶ôÃî:/„”=<6`vÚ“›.Ã5/³Ó_X‘•h”T[ªúè’é•[ÙѯQ`§7[ˆ¶Êàôþ–eæ]ñíH>Fm(0;_YOä·„q5»Ð2¥l÷,ŸÕâbÂ+Ç=ÚYˆÄê0l(µ¹D±5$O[ºM§„ ø©o™¢êp Ù‰P]Û!ZLÍsºÓü–¥èØ0Eïú>iB`ø×±…iQà(ì½¶ë-\Ë]e‹ö‰xZ¬o.nË  ÃÒë‘·¼2 ì4–ë–ð¿EW[¥ÅÍ=)™–\ðs¢aËf ‘àëžn‚/â`w”W\n‰`tlYumÕ¬ J(°¥ÀN"ZÎÝPâjÿŒ-Ë®Xˆ£7Þµ ׆ó´>5\Ë;‚ÃîyQ3f—·„^Ý»Œq‚e‹óêž$Ü €²eFéÂV€rÙ"¹î!4šQÚ–¥šóå·¸ì$ƒ7ÄŠWÝѱ‘9oðÉ¥-3J/n@w—ê¦P‰r ‰V`ãÁko$5„Ȳ-C¯9˜ 9ÙT‡ƒB$ÀÊž´ÖH.¦L²Í±£´ÀÑðŽ:Īud±IÝ£’ ‚¹-¯Ñ]Í,¿Þá ³Î÷BkØ[V×3”ëDQ™Bº BÇIŒÖv„r9@Çzßà 3ä¤Êe7v¬°äذ6LR¯mŒâxy%îp4*lŸÙ…ëÕ‹Ïl÷ü÷w¡B,ڎБx!±Æp9´ÝwŸÝã]öþøë»|% ºlÚs—=äsÿ뻿¿¸Ê,^1ñU­@ ´^¥–媔0÷å*³,W=~Šå¹–«ž:ù¹–£¹Ñ<ºô¬Ûè±Å•ƒi†êö‹ÛC¾¨‰µÛC¼h1#"¿ùû‡V X¼ÅyÎÁ<åóñÆ,©Ò1 ô`WuìNf9]•ÆÀ«-W‰åtU%QÀz•XNWõž]ëUbY¯J8»/‰át Òé"±œ®’·^®Zêáà ó€ mÐ:` Ðgitÿ.Ô-¡W×xgÀíOâK}xÖD@;ÄÎþöóâ>øÐw ~ï±q*\5lŠÝ!Ö¦`§¯ïbÅ2ô³O(†DScÌð…,pMÈ.Ð5 ] ÁÒ¸džY®éø÷õ]ìAÊIÃÑ—:8vÞe!­Ð¾é!ÃÒÙ@> ö’ÜØáídÁ²  E2`± –â<=L‡hŽ@lHd¿QLÅY"dØ, 4° F² 5È#f,)u¶@½ n²Äá*]ƒÌ&Y áŽ:6[³¥ºŽoõà=ᨙ+[yø[-bƒhÌ£KµM?,‹Ý° Ìǹ%>°a¾U|Ãû‘…÷¢lÄÄ{%Ü0¶®AÒ3Øþ` ÕaòÒ+Xâ,²³t³ úVæFOý ¡À(yZf„%cö ½YºY2Y ý‰< þÄ¢Ý'xï "ö2xšI˜¦HRƒÖ^牰ׇOœPtÐT›ù=G¤Ü›o†‰‹ZS# %@5…à&‚½’´/ƒê“bú³ÈGtCõ9:OÊ©dš2iræ>ŒI+ˆ¥Ò;•1ñǸX ¬É†(³à83%ާS)Æ ,ƒ-ˆ ÈB®“,Xq„æÿ]h(ÐÕШ? (|£Æ 3ð¢ƒ-æ¿ OЩ´NÓèˆUfDÌbØð?¬| j Žˆú¸†èR‘šÁ¼FkÙiÈhª>Œzd¤ÛÉ•%"µ ìj`¡ æ>H–J﵇TìcCÕ” ï „ž”9 ÉRÉ?ZÅ«ÕÂûhÁñ—j¼>°É“oÔxô 0†á)ÞpT5ÍG+cè4Úp4 ê1pboDbõÁ†âBfCWC§õà φÙaÐw2Š'KutI•1Ù"a(Yx$“eœ,‰&‡äkñó"ƒäƒç<¦v¨-¦áîšóbð Éó„K­¨¸äc’žH.wŽöt=a¢J>y‰éÎþ*lá7K;xr °ÀAf<`ÒI„\æ` O…púÄ‘Ãb±Úç(Ã0£äœÄµÃ»Ñ¶ ¦‚}ªš¢þ¡gyÑ’Ð<° Ð µSï ÿBùt O¶´J‹/1&«5Œv²ðh!O@×tñä#5.§UWße)½/y„2ôƒvã"›O^–PQ×Òì}(¸:ùxeÄhäà;7i¦h«ûÁsØ”q„!j#€æ"YHŸ2×hFn9¥ñ€'K:Y&ð5ƒ‡áßOÂÃÁ=®„Wð#X}!¼Â›,£`?¬„WŠg'`„ßÚN„Wèhœ•ð Fx_¯0€-ˆWº—{ â‘¡¯ˆWzà€C¯àø¹´"^éÅÅ•ð ÃÄBxp¦L]Jxp¥®„W°:4VÂ+£3åáÁ™öðª/Üvx †VÀ5ŒàUÄm¼ƒ¼•8BO¯ÂµðÈ×ð&k(àUÅ]<Šöã±,z ^­^ü¼,ì ð*Ž¡¬Çx ‚$ÈÇ€ˈÇxdák„ñjPãÕž%TUÆ«£+çã-a ÖäNÂuˆýåKÂu#y‰x”ë`é'®C árÝŒô•ëá…ëöx ÅñôG©¾—pÝ(^ëT¸nà„>~BáºQº³‚b}vð vˆí™E•íŽÅaʶ8hNHNØ]ˆ¹GÙ®w™(ŒíFÊ1¼C«ó·ïÆà®"tGÀQ¶Ð!"¦»ä;–câ1A$¾£€¿»ya.ýKø.ù…„ï’Y†‘ð]òQ—Ú„ï(Äg)|GÕÂwÉGÁMÁ»äqN‰Z`.ÀqÇÄ»ä“QãYØ_3Þ%Ÿº°°à]òY…ï’/ÚÀ‚wªË·ï’ÇR/ߊø.y®µÉwKÌ-€G6÷¼äq´Ž /ù¡ÓµÞpkÞhaVÄMD/ø(3  ^°uE~a¼Í„ñä𜣌¸•ðB Z¬,(àÄT¬^À¾!Ž.ðB.28ð²bTå xÁ<…^@¦†9Q/` ã/ à…Ò¥òð^ñl¡€Ë8^¼1( àÁÒN€Z˜TœC|5ÞeÀ èZô„ xa!b<^ÄI a¼3·§n+ßÅ8ØÓ3ßá ùz⻘dê7¾›å;œ%Sâ™ïj¦ˆfá;ŒQÆ0á; È~â;ŠõãÊw”ÝL+ßÕ*£ñ]­Ç‡ñ]í‰×ïj—&6¾ÃÈnyá»Å |WG0œ+|I–œ£ò,ü xHÔàÎ€×Ø1.€× ž‰+àÁ«ä°^ƒhÿ”ÂCôða¬€Ë+àÁÏøS¯éRŸ<ÏÈ+àµ8äEð€’?À› ¡€‡ðž}™ü x° ¹¦ˆ¥KfF–*ôF€×,ù¦€wN¼™VPÀƒ…/¾kŠýÊwÈ!äS  ßÁ"$¤|7м¦ñÝœU6¾ë^Ö_Œï€ 2+ßu[ÝS¾<ð‹+ßõPÅ÷+ß8S¾ë±hvPø–q¼ŽØø …ð`§^OAsBx=éÌ£‡€æçò!}(åB8• ”×s‘pI)ƒg¥¼IŠy¬aPGXë~é´à¯˜K—<_—@‰D1¯·¢ùBå<,Üð·õº,OMÔ#Íà±¢Þh2(ê é†zÃæeE=ŒøÊ×êa‘_rR‚zXÓç SÔCD.ð'¨7¢¬çê¥(êÁ-ð%Bz˜…²¡…ß´ãáX`Mµ1íÍ ]iîB{3ŠWÚÃ~¸cÚ›‹úŠ{#‹(Áp«ú‚Æ‚{C×ó ÷°Îî÷FõZË‚{£&!V¡½™ ¸{ÒÀ´7èÇCŽ…öFkŠJ‚{£ %.Á=g*÷àU%½¥¸×› Ã=C ý>,G'¸7‚“K˜öFtBˆ{C³Ê{Cæ¥=Nö’'áà1aVÿ9ØØK>tYùØKN‡¯aØ[â~½ä“&üöh­Ÿ¥Àþ‚‘ {´ÖßVØ£e{ÉD2ì%Ï.tÂ-É (1ìQ /@Ȱ—<·|LØK¾É‚¨Â…þX„„ø0ó + ðaæåyZ~Aòw |ôËJü->:~–¡P€~-㘼‡ó¤N¸‡³çø>B{˜¾¹_)íáÌ®q¥½¨‘¿ÑöœÓyÑÆ³Ò^ÒÝØS¼$æÞ¶í¥¨Zi/E…X¥=(Ã9§¦´GaÀXi3q<¥ó’2«á63#îaŽm+ía“"ÍýF{Ó¢´‡=i™•À_Èfhz³Ø6þ»Ã/H/êñ“j†ƒ9ÓðYp³Ï s•ìñtÖ"ºKtâèÄpt¶"\b‚Î&º€)èU°ÒÒ}À®tJ÷yÕXºç­ÆSº;Ùûšî“uÓ™íS×L÷™`fº/åCM÷a¿åIÐI¿šWOé¾(ƒÃh°ÄÇ4XïuÅALjœlT,©ð”c8X²ä‹ ‘S•riš;åû0͉UE&û)è,ªó0A'Ü«HE§:Rt6MÖš ³+„› “o° :é·°ŽUÐ9¤›š ¡Cœ :‡®¿ZÊë×"ñ”œŸ×0Ûr~ÐÅÍ–8-çTb9¿¨YiËùEÕ»š 3¿Š 3)<› 3‰{ :3o`˜zÎâ%â2=gQõ‰é9«WÕ ê9ë[zNò>«œS—5LÍÙŠ¦ÈTÍÙ4º25gÒ›š¸XDÍÙuÔÔœ=+©š³7Ëꉜ›YÎ9¼&õ$Û<‚TŸ©9eÇ*æñQÞ¯e ẺÕôSÞË.Y°Oò~>J¯µ¼Ÿ×nby?ßÄ-išþ$¼Ã y??ÄYÞÏRSÌ)ºMÉúEÁ-ëæ ±Nã-ǧë4¡¯W5g5TT5§Ê¹LÍ9¤˜šÓ²Ç¦æLª®75gz+“sfeP“sö… YΩä5åœY“…&çÔ…ú)çìúê&çô2X§œ3J>bÊ9³ð­ª9k“ÜÈTsêâŽÉ9MèarΞTÿ¨ŠÎ.ršEÑ©zÍú!+¹/ÉúÁÂA·eý¼Î2–õCwAÖŠED^)ÝD>›…E^—{LÕéµ÷›¬ ÄǪꄟatUU甪ª3dÅdUuNu¨ª:§:TUQ;©:£î 0Ugœµ'ºãv¥;Ú’UWº#Á&; u.ŠMufMA™ªÓvƒšªÓ¶d©ª3Yº0Ug‘èhª:áLŽUÔY•¹LÔÙT8«¢Î&é~ÓtvÝÕg’NuûSÒ©CÜ$M7´IŽ/ЯKKŽ/x=K@s|°píMIgd1I§í¦3Igd™’N³˜¤Óò€$é´œî”tjžuJ:5Ï:%QúÑ”táô)éìš“4U§NASÕ©m;UMæãUÕøTÕ©)=UuÊÁ'U'ÃüTuVñ&¦êÔ:SÕ)ÓËuêfþ)êÔ)ê 2!NQ§îŸ¢NÝû0E"²˜ Nñ7oTÑÙu×®):»ž x†$Œï(2ë'E§¦§¢3H6sJ:oEgèšTEgô‹%,¦èŒA®ŠÎD‘çIÑyef*:E´(:3wâ©èÔm!‹¢3È>µ©èŒ’ 4E'ZžcŽ©èì3š¢³ÇGŒ‡€_,¢èìE¶Ú™¢³1Sщˆ±Ÿ]fãÉxz,Ä„¼yPŠBQN9<(CÛ ò  e½«I:±€}¢¼†Ó@Î’Î áé”tâ¸ûq’t¢SeiØéwÊáµt›¡J:£ú2“t*ÕOIg.zRŠJ:³®ü™¤#Ø,ƒ÷౤SˆSÒYuŠI:k”-&é„…Sªé¬URªé¬ê,LÓÙÅTÓ9-Jy–û0ÊëºÇß(Os•yC•Ay#+Ó©¤ô–tzfLÒ¢¦UÒª¹"!6„ gIgн>&é MšÆ$Q1Ig,ÆNI§W@SIgÒ&6IgÒL%©KµOI§Ôb’Τ»òTÒ‰ ØqRtú%eÇŠNË2š¢3ÈŠ°):mOØTtÚv?StŠVβÕlê9U’2õœ–*2=§×my¦çT9É¢çc?ó(·È>F‹ñöòþÔÓ}¼•{ø<ßò¸9ºzŒœNJýôóЖgÁoߌ'zöâî‹Ûß}ûͽ^}{o¶Ñ{¯ô(¡×˜Ó®è- ÜÐ.~þÃýmUãöW°GïGn·µÀ°WïÓàòF¹Üþ€>Ž˜å.©„ïÙÅÏ_sÙmÜ>£+zùö“=Çóoî#4ä­¿£°×óãKD¿ýÚ øqy”àG÷1޵ˆ7ôN£v{Η”ÒbzüÈ(»†~ûö+©Ÿ×gú=J)£$µ—}è#£a´)È••À-ò›{¤ÖFŠ·ЦÝz_*f„Znÿtÿ€È£û|û«Ù_¾ýnVßOk“ÚÓ>çïÑn‹ |o-Þ¾½@®>ø¸¶ÖË{ÜΗÞ×þg+ãðÑv{6ïüûõkt‹©†¿]ÊXªï_]C¾}‰ûõSåÎÎÅqŒPÛí÷ðû>¤Sü‘KH=£;ââÚB£Ç¨tѹ)–nÌyê>4²êè9¤¥«-×~¹¾÷ò:è=ôâ¯qE÷©õ&%·‹¼sH9ê÷¢z¹^ŽÁÝ`Ï~{÷ì_ܾŸ#ð§¥ùÑ÷!#OIn‘Cïîûô©£ß¾ZŠà·5‡Û2辜m~TÓ'ÈÃç’#ªEgOOdïô‚Íe¼= ¬‹ð#­mþíZ÷§†´KÖþôÝýC¤Ÿª®'¯ñbvû¥:– ^áÞˆÐû£^ýP+Ïü€Ÿ¦ =PÑ÷8Æí :»ï1vÒ¬köÞáÔM–šæ× =ÔÇ™]¬Ѩ9ÇZ×6\»×Rç<=  În´½Õ;}Q*¿Žõ•†/ú8¾ÖNoY|ˆ·`oÇíg6¼kdaÃE^îú|m¹ß_N%v«üîÊ›ýc­½Ëîáf—µ£Â?»û?¡êàendstream endobj 141 0 obj << /Filter /FlateDecode /Length 4941 >> stream xœÍ\Ý]7n¿èq°(°ç¶¹Œø!‰ š»ÀfÑíöa}pòp3žŒg3ö$3v·èÿ^P::ã3¶³Ö…®¬‘(Šä¤>Ž~àüßô{ñ↫Ã,µÃôsñbøý“ç_" ,³O¾;Ô8PV@¢!©šO^žŽ_ÉÀTÒx{ ”1àxu<¦ÇKÿLjãÝñÄ9ÿ·Þ š&ñÆP-H_z5YŽyüþ€£Õ¿gŒâ¤($d sˆ8Fï”MQõ›':|ú%ã``‰’Ïä„Aâp"‹lÓg‡§ã¿OÑ+Ç›#B–d¼^Jß.¥»¥tÞ©{³”¾—â,¥ß-¥¯vJ_Î/"XŒ8<ùóáÉ?m8{¶3ö«ºfìKéb‡ÉµnôåC~0±7ô+íçÿ7Œý°Óçv‡Å†‰µòz‡±uÀû¥ôÉ;gz±Ó÷f§ï/;]é}»Îéóµø›¯wèì™ïý_;Bz¹”žíôýM3“…­75•_/ĵî®Y†uÇ{ÖyýΙ®ÌLfušIž*ßöÏá,•ÿ²TžÖÊu.ÕáŽEÐNïÔÉ{@ðÝÎ\ïö˜¸^û\7RÙc3ä\üïeð>ž$£€Ùø|WÛ{”žî(ç›=’ßí4|õ¡¯ÆòÃŽ ~üÿäVÙ|¾S÷Éëh¯wúÂRŠ{†ÒvÏM¼|çŒqíke.ý㎟ûegRJem÷Ó•›¾ovDsýP ݉ç8ÛÈæÞ‡÷¼ÑÕNÝž;m¤¸b9îÌë´”òR ;ív]ÌêÔö, wÚ}ò}é#úòGô•v?úõö° á³¾­K˜Éž4¦9Ì\í ²›æ¼ÇN¦ø‡'‡¿xnHÀ8²‚¤" ¤4h•áîrøÏáå! <|ú%ápu ¦˜âðó‡?pøë£ù|Jƒ€%åÜ&ôh )â ¬þGOèqxrwoŽOþº0ö«Äà3D–'H D„#˜q‚ ¹ì4e ¤+‡( ˆ= &ˆØ•à œ¨£– !!wä¸/Áš¤ç”g‚Ý84 ®9€¥Ø“ ‚¢d˜{dˆ˜zr Án&°B°—·˜´ã”%%ëI0¢uœr àþ•S?zÝtüw¢G ™:’Cèâ·&rÈ Òe¶œ;š_d°®üUz}‡²=Öb?zYArþrÆM õ$(r—GHôw ÈJ`Ö…`)2DÈ¡ †+A Â]¬:÷•a%ØQ†ÁÀ´ AÌÚÓOW‚ýl¢ R éÀ™Áö!¨ÙN²tq®AÖ^Þp"8õO‰œ eH±'AH±‡ÎK-Ï)uò6IÉ dí"Ù ƒIú*l`Œ°‡Nôº9¯ (vÔ±{AÆŽV8Œzˆ0#dÅLA»$6Y€™zÊ0ª4¹‡7Ì Qy ÃÂi‚Þ¹#’YFƒÈ=”¢ègý•¢‚ƾãàçx~¾ÿÑô,€hêèkе¤Y»¤ 3AÑNKcN°ÛÅ2ç“B貄Ÿ æ1tÑr*‰u?w8´Ø%—³ ¤Úq ` ¦=óa3PÖ)€u¤×mÂ!@R8%H=¼;-’Ømo…ƒ@0žoýtáLPüh)ô$(n…=èEÈ…÷Øíâ À’‰¨\g h¹§N5ib€ y ¸ƒïbdqàdë¡ôL$kùýx‚€Ä†H±‡¯aBÀA$ƒj‡pÂ$1+'ƒÝÈQŸ¼•)ƒù!m7ƒáP@c‚h=@ÇèÕ€B)³@<ˆà>&À-0H¿X2Ñë¶1ì-Ê1B’."4PŸq΂ÓBÐWŽr.ޱßfÒLP’@О!~ÎÝ Ê3ÁÊ5‰# Ê "`ØÊ1‚õ<‰ç¨ýXº[„O¡ž"÷:±ä1’ ´‹÷š RÌ=^RÈè‹<Á@œ`¯Sä…`·)gò“x7ðÔ)¾˜-ç½ ;g Ž78äÜÑ5h‚˜©#ACH—È3="È]hŒûù…r(­5ì’sÓë¦AıŸiÇû ÁnSöCŽ®2³½‹Ã¿,WB<`¢è7*(Fô›¤©¬Õçßé©Àë£~³”ü̧¹„úâ ¡|ÞµÔܾÚiµÔdOD¤¶ÊQ@´m5×4­³yymµÔ´­RðK‘m«¹¦iõ׆û¦Õ»>{KqÈ`9øQd{µNË­Vò£¢Ñ§#†ãIˆ|—a¤¥Ì#7õÒ”cX/ûÎW}Ù·?P†KXÌ­ð¹ÓJ“€ØR³i¥1Aˆm«©¦m%¨5­æšM«‰‹¦UÃׇÉÎåvrº6s”²ÄŽu‡ÿéxÂà²1Î.›S ÇSÌ!¥1O)äQveÖèV$m-s®‰ìn–NoU´Öü+mÁR¹fé÷B*™Îøâúææúþòâöå³{Çd3÷ò1c‰tyžûùââòæòîè†YÇó«ëÛ—ëD‹{ø°»à`8„žÜùuØ…(Ê%DÖáæ@èתËÞ è‚!VNmç!ä·5U!X©ÑbvÂîIJMôÍchè{¥FC½ßdÐ+©ã”£OÄR““çLÊ]”É5ýŒ%T‹¥œ Üh0äjé¤Ü}qPñ_¯I å€ÐW& ²¿1>™Ÿ<{zjÉ}â̓_„(~Þëÿõ æYa-5>¢_‰)Õqý~gßÁ|Úì—È¢L~Èä5îl9B® ¯ñÝß´!ŸÚÍY2 ¢n9…°ç%iƒè‚`ß yuÜWv¾A³xîpsàÈ ê[¦ê7´J›W¬záB'¹½øf‚ï¸Q©Qò)‹sK¯ì»6Ú8ÎYË]¼µFÉ­}ñ[fZj²@¹Ãkâ fŸ¡¯ºËé~áÐ’Õ<'úUPfÀ %Qa©üHHüFSÉÇ]`‚ÈÐwn¥ºÁ„¾ïE5Ý„‚¹¼ÅÏ3UKMÌ@¹1[qßH¾Ó“Â4”_.q­/„¿:<ücHÀ|)þ͆g-vd‹¿œ³Áާ¯¥B [è oÙÔÄ’J65Æ®ˆ‚‚ö=PÆi.+(ý«ƒ´%)ˆ´ D•óPš‹XZT&߀oA)¢¨¥G=L-(ýƒ‚¢û”®l1Éþ‰@‹I‰ocRüSì “l“8H–hÛ@RRª^fdb«.ddÖìöÙ@RÅ/+µ óÀ $1¸{}7$WC}$cÉÌô-eiÉî‰6ˆ”0»Œ‘þ ê»鋱ˆª&±"2Èû‹an*? "Ù´ lFäþ‘³W^iÉeòሠ¥´‡E܂ы€>Ñ·_[4ºÈ=R‹FJ$·hDŪæ„HóãüA£’[MÇfäÏptWL-9åi¨œeÆ Gq¶pŒ A[4æªû˜Ñ8¥ 1êdL3]2yGq3£ŽÑAžZ8&NÛ™²Ve.pÌnw´#‡)²µrª™á¨iªYáÈ| 5¹ý4ptrd8R‹¿6@ºÈnáˆÕ¶V8ržÚÌpt«-®u…£JÍC8²Ì]àHX­m£Ðü8&ªÉÖ GO¶þ&4Α²/:•«¬èTvztÆ 4£U'Ý@“«¹-Ðô‹!1o IÁÅØB“¢«¬¦ ŸmMšóÙš9óÄšÉ?Æ 4-N£ÏØŒ1N€ž±]Ôb3‰T»]À™*p&žâS§«Ý6à¤)XÀIÎKÚ€ó1fp lBe$­¶6c3¦Iž 6“ŸOmBeâêWhb¬‚i"¥VËZ¡É8îw`3ÅêWlò<ñ›ê˜h°é±©xðwaÓԣŦ‹k*Ý®iM 5*¯ÐT.3_‘©~ ²E¦òÇ÷#3néRÃG‘YñÇZ>Âô5Sñ6E»~ÄN¬ÃݥzZÆQüP§l‡0¹>çšw¥Âsg©æÙt–Ù`÷¢öÜÍo£ej»M5æ^f2þyKÈ-™©æoÛÉœPè¾¹lGŽÏ?G_³{º'~7ùÏ^EÇßú×9þ¶Y›ï‡í+Cóh˜Ülµ|§ˆ&uùÿ…?P$f†y¼>Èšs}1 CÌãk/shÑ_9 €f™ÈRâ(þ”Ò˜¦gŽTÓ¥¹™×'07Ìø÷UB4¼þ‡ò’RFóçKænã«ãô\Ya •³ñø¢¾À¤–Çsmc&n›Ü¾<ž Æñö»¹œÇ³ý²(7Mëã‰</šáÏ¥‰q´Ø¶~SÉåòêÂRÛ ^^ˆJ!p}*ZˆªãùnbC±·HÐh|¶ö+Ô Qâxn¦rç/J)*¦ú|ÕÄèU©7L¨›úûB;G‘X¯Ë»Tê/bµrzáj1§Ø äY}+Û<Uä<ÞÔ׳8k.ÔÌú<-OT¸Z¿+j•,ã­Ïž’iQ+AñçYf½_Ö¿ËÄF2o_ù PÑû?ž@òç%œ &N®‹Åà.Zîe,tŸ-C+Y)ŽçÏŽ'÷ÙRËík/Ãqb<YÌ$m€Á6q±Ä+'L`þ"ÑüçóËãBlíçb.!˜äÖ2{)3Â@95"½ß"ðä;!Át8 ƒN:ú¢ð™%mXntT´ fœªå„²ÏiæêxÖÙP Sœ Å8Qõ9M3Fb@:ú¥¥Ð¾ÐR4M'Qi°B¿Ìó²+ÌÁ3.^¹z¹"æYå4šNœ" Íœ ¥ô§³…3õ‹~üГ´’;¯.â‡ÆèêXfÕ™x¦)!?æøþ«2RÒµõÆìok­iÏnQYt]o|Ì2ÆOGÊ~;l"›¼õD–Œdëñæ¿7yÞĆÚÂüÙ¨¹Û#¶Y½_Lê.buŠMxr ‰÷óôýi«ÅR¸B½EWSä£üK¿fþMqßC^›¿É0þÛÑÝ¿PBwBΤ¾5½Ê;ú#€‹¾î§gØ"hȳ…¶¾¹È0§8žƒ¿zîzfÍÚ²YÑZB“ ÿìm³JÞXvƒ™éá¶ÊÄÖš/ëû¥5ÛÅg´n³ªV$a»†€H“j5§bJ~êÎj,XüftHãùÙªÎókùUíháq ?fû¡mOÉ·kãš’µé©ïÀТ®÷½˜¶“SúJaî¾ñ´> ÿ†Ž¶“\½â«©¦m œ„£¯lR£mªUeüQ‰¥ÓÈš¦HSŒr4çÖ!W›3\#hqÎ׫ýXu×ÚûÆ“ïævwµcÚ‘×ÔøKþR|€*QH[ï³ä2°:—öA¶Óò2›Ïëw5ØIò$uN_ž?šù§¦Ébëç®g¦…•cSPP¶S¯ä’!yšRŽƒoj¬ÁmrW™Ôö­¨uŸ¿¬½i_®)H;HãòªkZÔ0÷X^ÜįÖ7ë™7•™\^[l—¥6hëvn›”æ‡ÓuM$!Ùƒ˜º¨ 1î6sk4s± e#Ë ({Ü:½eu4Ùuéx9eN OÕzú&\5nõq¿)û\( ·¸¯n¶‰A\v¾Òp¾Þ['làTòVßÂIi!nñvÕ8¡mÇ%2½cÝé´nP?¬±ö¦±Ó&F?@þÛ+]8ž²§ñšÇ'o¥Ò²ÔÄ™¥ÆºVq|@H[9{OLó/®m‰ißî½¼7>|yïaTó}aZÌe›4UêØ¬”Ÿ‚ÉŠÝên² C¿?FñKÁ2ž[ÐïÌ$„q ¯oGç¾sg–â;Üqy˰QøO['·Â N­ì鈄GÚ5(jö *,|cÓdf_ßíF–&Ikðí£«?öfÅ9I$Ï^2 Z¢ùé‚>HÖ¼S˜³ìiàÛ&Ô|€G}ýèNùGD4þ¾Æòçig§x¿.C¹Y·ÛÝ*t}}Ò®1ï×TâA®î­%l.¿¬Ñc]䜛Q!÷˜d|ù XðÿÅÑOoŒêî“¿\…¹õ±¿4äê¢5àc2hÔºÞÛדO÷ƒÉ¤–ý;RHa»"ZTr^5ßxî6!kÖç“åÖѶ¦Û¦·Õ>R¶œæUKÛ&_oV“m«oÖ4ë²æSB[âÁ”Û±Ë …)KÛÒUÚß·«äiˆýܼÙïjµüÙÌÓ>øÿl#» endstream endobj 142 0 obj << /Filter /FlateDecode /Length 6301 >> stream xœå]_]¹mäC\ zoÚˈ")‰mÓ‡mÑ @±[m‘ôáÚc;NƯÇNÖ(ÚÏ^PÎѹ£ãõ®µhÂsÌÑ¡(Ф~¤t4ßàÁÙ¿úóÙëwxyóÍ fê¡þxöúð«'7¿øÚûC”O^Ü”7ð€>@ˆþ’BÒtxòúæ7G<ˆsÓ1¬Ïÿñä×7¿ø±gCýÁžÜÞüæø•5&U§|üpr=b<^Œê5J<¾YßÛ#:ÏÇWÖ6RHt¼Ë,ºˆÇç§3ÅÉáñë‚óùøüä# _ZS§ÉyÂã»ÌÙ‘ã”›ÔÇ{D9>Xƒ¨ SÊý%TT:Þçñi Œ&Å^¥¶ Ô¨„þøõ©è€ð  ÁÓÁ¹)áì=¨]üíé,FHx¼3áh{zº<½[ž.ÚÇåé·Çåñayz»<:y³<=¼ûÛS"¨žüÓÍ“Ÿoä1¿_žÞ${?âõ'¥øËÁ🠞ž„YßývðÛ•ßÓuL¿\:ðÕ€ÏH³¹ž ”´ÎÀíàÝŸv#YÄúøECùþJ\iï²=x ’šO¯ Gs;i?ªÇï®Ã{;á—.#ÎÕvÏMØóbÅW¾÷v êÈAÞ¦çÿ€]Ú};4X~—'¹ÖוƒÿÛúø7KÓóJ|=PÞí'%‡vFôn ÏoGŠÿ|å-Rÿ÷úøt01_8« ïU/æ‹ãIÆ^ÄÞÕ¿ûôVU}Xùô¶¾Wáþjy¢åéËDÿÏѪñ§3GdPí$Õ ùiC[GöÍÿ##èøŒgñ1ÇO· 6r¿Ë€õëj?h£•£ /%|ÿÀu~¾uáìgËï¾<ýlä]¯Úù³´÷¹_ŒýpØÿÖ2ó]ÚþôìþW&þÝ“›¯,¹ÀÃËK=‚ xðÉ1°ý LËÏwÏÿzxsÃ6 AºÁïoððûwø‡O^ð@N¯oØyM åîæ_­V ˆ–VQ8õ­ÊÚŠ0*îZ­”®Up ©ïq¥¬­®eí¥_[}*C rˆ ÑîS4ïˆÃƒWõRS4w:³÷0ýòLGêèÜ=‹[g }V—H§‡× E<:ˆœ´Ju¡ô­7Mò7¿¢¸oR)}«ÖÿÚª—èóÔf*;›îl"£ð8@¢PôvFgZQЦ­³¸ÓYbˆxt§sp1ëX[ë´2‡­Q6ŠHLàåp·Žè¥7åïiÀ>øä¡ŒçøúÕÝÝ«‡çÏîßÜ>œžü¾¼L6\üåÙ³çwÏßÌ(…ÒñòþÕý›u¤_™Ü²æs&pވݤų2œ¶¢‰~â,Gö4ÑÃ$àh†£é@ž!oJ}9C†dÎÓ¡@0 ‰a ;ù@V]‘‹{Ô\\žçÉ !C.ÈkCe┤ãL† ØCÄÉŽ:P“pZ¬Q„dŠ‚N ad0c‘Wñibn¢Þ§)AdšÇ‚Ÿ‚«5€z +CF4%^k„g"U`c8 “s@¦Ct‚ë5†Ó’r˜ÂÔÏp=r‘â¼Ò 9IñÀÈÀ2EÂÊ áL Ã(€2…aŸ¬Fªàt‚/“K(8FPœmÈ•dl¢†â‚íîO`ˆìЫ` Â!’¹žåS$Œ@|³ž8C@oË1„#Ÿá(Aí ñ Wöœ7BÅ `œ¡ÂÆ#Da×>)M´r ¶µj›ã8#6‡À|;í2cĶxªíº@?…a€¤2Ñ )˜„ÓV”ÆpV]˜HÙ†Œ@q†Ù>GqŽfH¸0tàdBRAì!q˜WUZÚS±Dd¢+W†l‡qâ Š@°­Ëè`|% Ày¿{Ά¼¥cy3yÚ"\ÝLž´uIA Ùf²&S‚Wc(tÆïôÀÁÍHz¬Ú¥ÆpÖ~òÂpÚ#æ ôä ¥ŽCÙ[eÖ1Bĉ;ò”\ÙÅ›’­t4‘¡zû8m^¦¼0ä¬3ŒFC.ðM ¶¸[)rÚ,3:ûÔoÞ¤X}œ§Cö¾ÔCfXN²çR`™&!QMlw%\Ït{ç Žò–lÚÙk‡œ÷>’ìð«wl'T-Ø8p)S$._ÚD^)¹ +EõoabˆO~ •¬uGɇ«´ô®’)â¯)1õŒÈŽÆnåØyfÂ…BцÇÁ'H…"œ7¥ƒ·ÝóL‰X)¶y–)) *¸, ±”•%¢õ5Šå5r`,uŒb€ÎbIší§'‘™BdÇù™E€|¦H²<‰­¶WDþ”3gÁ~3¦DÉo¡·„y‡’ì Ó϶8¦¨e« c9¤ýY”àÐøPb18¹CÑüVŒÞ~cLÀb‹¶¢Ï¦Ø~ŒmËØõø”àÌüÈb†Šr¦PÞiS¢È‰–mK}+új›©™ó€bg$ÏN >¡·óÆ^3Å6’ëšFINòçhV—u˜¬4”)œ{OvVóG å¿ ¶EäbùÞÂ'uÖ#&T(jQˆb~Im×Ðvti¡3JHÕ*[@ý„]£„hŸEÍ"ñ%1d(ˆU5 ê!؆ŠmînÈYÅÎ°Š•QC¦`4J ^Çû°ß–{3LoMØiþÇ(Á¡)”XÂ×çQbÌÛ1ÄÌA> RÁ`•PÕˆâ]~K”K8%d«àp±-”ŒiK~’Ok[z­©„AòäìA'ÆÏ(!² .¤}Š–³8*y^ïnÈJ\¶Ö$²úL¦0fJ”&3Û^(ÁÜg>”(S„í´ŸQع¼B-±rHQÈ€DR…ÒÊmȃ‹;¦ü–yc޹Š æuÍNµdQ¢«(Ûy^*…Ë#Pž‰úu³Å¾Ì7ø²h ’-yF‰’ÍŸøª‹Ç”èòG#,Á¥h‡ã3Å@ÆÅkWJöbжŸ¿`ö`Ûx Fqun’Uyb³Æ™bQBŠÌ9“R09Ø’DbŽ]l‹+…ˆY~ÖEÖ1#f¦®ý7XÚd¦­¤°gù ó\¿C±ÃVÜ¡ &[Ù-¹±´‰ÊGl b†¤ eÕqÙ)嫬Hq =b.SÓ)_ÔµRi¤¼V@¶©XûZT‹ÁßH…b]+bÛðÞ)ö 65 e[|~¤¸Zö ¤Ê"ÓPÔÚsCQC] Š ®övÄBþÈ” £ì§ôxˆ]¨¸áR*f²zd¦JÅL“ß¡TÌdkpYq”‚«Ðôs(3±-]i‡P0”2VL×ðQ ^¥¢!ÜÙ§(¥!&Û¦áJELùäò° ([1¨ÇKdFàw(AÙV‘ãAÙ>p Aт育½ zeÇrŠ fEÑŽ®tŠ4™£tÊ¢qÁ0 A‰¦š•5íë±Ôã¥(ñ€RT’f‘ /ÙoJV1 dÀÄãöA1bŽL+‚b籠—†—Ø jYþ”‚ Ø6’ï!”¸›UxdèÓgS*„ b²BEõ UÀ”¨dwBPÉrDí”8[¾©PÆß÷ø ƒTô¶à§ÈuP -¡…Æ´C)øI0†bÅ ? ²ÖÎ+~4µû?‰3%c‡ŸÄåˆÝ ’8Œ„(<©jß•tF)*iYj†”•–xD)à)h¨ˆ´‚§¤ÎnO¡¬Âx LeY R0ljcJO6“öP)X*Š;” žBöÕ9ûÌ%öÈiùüzANÁâGè‘SPWSŽ”‚Þ¡Tì¬ÐM=v Ka£`§€ÕÔì\ÈøkJ ,Ptb_,íÓЩ}x¾B§à`‹œB‘+rjÊY‘“¤â0+rb,3Õ!§TÃßZ‚ à¯È©ÍÔŠœöÒ>r¢²˜,À‰¤–FàD-®ÀÉÕ¥cN¾Ž`Nlçø¶ØI‹¯ØÉyÜ`'¯–/'¸®DJÃN‰®JPl_þÇ/ T¨Äù¶J…JdaìQ*TòVÄ×JFö ­ûlJÃJ9hÓE 䲓=4bg{òÙ”„ØV÷%” –4a+/=¦T´”‚ç1¥¨(5]àRÄ`~8¦T’k”  $5lÊØ =€b £=~²SºÀ's–âH>qÄZVnðÉìV7ðÉbC` |²O[¸KÖݶ$ÕQ*|Rßúª`‰cã€RÐÆmª'øäIëÒÙà“ínÊM¹„P2ý¥Â'˾sØYàStddãÿÙ”Šž ÷”bNEO÷lÊMâØoQ ~ãG=|²êâ>y©Õ€?yÓõøÉÇXabCKùgÚ¡TüäÛFÁŠŸ â?Ù[Üã'´)ïëOâ”JcÁK![R2‚'\"CÃKbÕx¿C)xIœ]ýÅcJÃKjµ%Ù¡¥ÈÐWŸÔ¬Lz•´ÍCPVÞÌ•à.%û(Ç” ¬¢·­5%Ÿõ8¦T•|«ú5 -'ò=†ŠIë[ C­@±a(»u7ÊJ»Iv(CEæbÜ †Š¬Å †²4J¸ÇP1Ä‚PÈ´3¢T£æÌ`„¡ö7 ±¿µíb°NRþ.‘óžãoŽo׫TÇXnyM!•«[Ñ9Žd—ÕÙ¯UÊ-®¨½·Û_%EˆÉc¾ÅÕEÖ#Ô+f™©ÞG;Q„ Øç^õîÊ_ÕËdÙÏ'AÑ,7ÁÇ·§üM“OZnžšR YTLÁ³]ÿj-"jˆ({\XôìÞŸ–a•Ž¯Ë­·Iãñb-œŠDOùžZIä)!KÉéxÿ¢ôP+?[ Ž¿ɱùýÙApŽôøÎÔ•Cܺ¼g÷‚­äûž”;r,梶9œº”äø“NO™':Û3²6Íg•Ý–CÖäbª÷o:&·«ítZÝÌïjGUÙY(³cžP·³ŒùÍÉî©I1=6—ÜÉÝú˜Gh×ÈÆ&«7«käq¨“”>Gȇª9õ¦‹Æã¾PÖxU'¹óæËÃcÿ*~òte“å×à8?Žêþd£ŽiîúQצ²ñíos‹”›Ñ›ïTÙðÞv¾øÞ˜XQæøª^ù›3ã5ßm‡»ñ§ÙSt.…¼/»øÙÌÅ:Ζ›Mʇ«+{ŸžÎ>˜¬qc‚O>‚wrmu…‹ËWµågÕT]1h^É9ÄV"íõØÒÃ&F:³wáOÅÈe VMüi×÷&%²¡7ØïRq×] (ó¥êÆÁ¹ë¡4ƒÝ˜`k\.Dhx±XDåœeSvA¯ÔQùí¬4—÷Õ‹5{ôbƒ•ÿ{;]+Ì–¬ÒHšávZëàÃê½½þ±˜Rÿ^u?Ž[Ú P ¸ôº]Œºz_3É~º/ÒèËÝöË/Êœ¤tÓ¾8TPôõ{^.ß tåB;ákVÅaç[8ÈîT 3DŒ&ºmí¡ó{¢Üv/~X—ÚÂÃIž[ÛéfäãO– íf±âRšÚ¼íG×S|ÖJïý.¿©ˆ,×Fœ;챫 ?ªêÙ:Š·khºïl¼[É»æ>!ï8¤Í²bë'„äâžÌ[3‘EñˆR•äÒñW]Öp^púèê]±{e†OõnCvñ"…u¹ðý«Ho³9—ðx¿ÁÄÞœ×ÓÕ¼n0›mUÙ½›[#íTl댊ÙUï<¿ëìëyiaˆu§Ea§ŠÚYàíÊøvÃͦ_)ø q˜Ž<‰}¤âqu"obÆb`¿=•ÕÅs³3•GL,š,&ò2/2ù1Kj ™”Pª )YL\ §‹^—ª÷è÷ÀËFöÉE>ökþý¢é†v#ó6¿bíò+oU(·˜Ê·kv7JÆ ¨}êZÿùxÅ…ÓÙjâQyc°ÿ~*÷šÈ¸ —j?¥­=yàæH¬Õ|¯oׯ=*êxt+Mßeçòº¼åã:¥'ˆî:PoÐ\”ÂfIx¶ÜÎü^tÖl˜1÷Iï±j.†màhS}ÿ¾4°¼´ƒ½e³†».bváw ­kÏ”Èfi±ßÛB¶?+3†‹Ä9ZüèvdæÃ™[òŪÑÎüí¥Äç1º[ƒÞ6Dm8D½*V«êý°(Yíʼ,ï•KÞ¿kÐoWem<¼€t.,¾×ãê’Mek°´Æ¶—VÜúºCL‘æúPb¹Á½Fobyë»Ø±Ýæôò”àûh>ÿM!×þz{ù Z f·ü)!X'ÁÂk°)‰ŽÿØŽÞœÎvàEÒÖ6Œš<”¦Œ¸ÝÖöº†“ÿª×õöùÀóÊÏÉ&a«ÄÔIq9ù°]6Z›m€vÿY5¤õÕÛÂ|7qëÖ£çãÁ\×ng{¹øjû»1àê Aãõt™-ªé|®ÏYEÅÈÑÅíðŠs ˆø.(2P©Åå` 6kĦ¸Dòj=SQÝ-ÏÈÐúØÞÝúÿú®öM*n縇Û/w×3”{üXz´º`ŸbªjØÚÚ‚—:™û‚㫵à8.„õV`ãOÎwõÔûeVý'Œ M]æ_ÿ¨X”ü]¼{Œ€ß×á`ì»8ké²±Eå †yµn uF=¶ï>Þ_—øZªp]⫾“^LDb^§ùbqŽ:¨ëJfz¿+ñþt¶{’Ò^hZM¿‹ËÏËk”¶ÛVVM=í:)hÔ;ÄÞ«¾³’žk&Ê®Eu¶:.˜lLªß;²zRÂlÌ¥“x¼¼Xññ6÷èÞZÇëM°ÞجAÙ^zñ¦ ¿.p:Ç”òVÕ?¯Qc³Í—¿ux¼Ü®ºSÌPŸ——‹D˜WKc"wWªÖɯJ†òÖRssgè×`…]ˆºÉû¬àX©}líõÒ%{UÁ˳S+ýμ1ålü:6¦\x‚ñR(¶\3m#N®[Íã~0n›õeAý²ú±rpÛ`~)® !ÅÒ$å(ÚÍEŽ¢vï‚ßLóí:¼Zb×´[*ßu§¾¾ŒªŠuo#b“m.Éôå])ä?È·‘}`¹l).šÙlel±W+>Üo ÇÍüÆé!“µƒ©¸Äôššå/Jß2Hzû. ÝV$7&›?,þêæaOendstream endobj 143 0 obj << /Filter /FlateDecode /Length 7049 >> stream xœµ]I“Çq¾Ã ß|ŸÐ©ŸÍWª} [Ž  ‡,ɶdøDèðfÁ"€`$¡_ïȬ-³ºjf@BÁ=ÝYÕUY¹|¹¼wR¨ ÿ•ÿ_½~&/nŸ½{¦ðîEùßÕë‹_?öË?+uáE &^<ù,¿¡.tˆBi}ác1ŋ篟}½ýù “HÑúí|Âê ¤ÚnG)dŠRµÝÀ?¢T>¦íýáh‚Z›í÷ð¢T6ngxÀ¥è-<,…ŠIZ·½Û:¶ïR˜¨\ÊÊY ¥¥WFèM¤Ð*H§¶/…UŒyþŸð%á"‰äµ‡/9*§„uGmDRR_<¿~öõöÃA{¢6HÝE£òR)£‡ÛGãŒ0Éo§7y²Iy·ïRÈ(#|Ú78Ç Rþ`+¥÷?Øá“ß®:ñ3Œ˜¢ŒÛ÷ç„J>l'ѧh•Ù¾Åeˆ>Ùíƒ(¢v™²IÉZ³} ”£ˆÊlw)¼r2™íÔ(Ì#‡d·¿Í_˃˜ÌvŸN ¦Ù>€J>%³½êO_ç§]2Ûåᨃð2ª¾Ja;]ã·HiÒv}häèô µîê›i;Á¥¾ØÞ¶eKsz}"¨(U`ó29Üöø!ª¨<ýÆ«LÚ*¾¯‘†„‘¶·ùk”ÙÎopÚZ&U÷SÅd·7„•Ao÷`0cœHÆ_ÈÌJÚœïÈKß":<]ÿ~‹¯ëûG¥Dr.e2ù[¬²ÀVß`…VÙí¹}‡_£¥RìöéU>xR)Ï‚Nä,X#TˆªÎüåA )“·Û¹]½oW¯ÛÕ‡võª]“³f’ˆ^êJÿŽlÕGÜe¬®ë©ëþé¤ívú±œâ=0,ŠcÂä+ŽÑi¢¹8ª ¼£ýûáè´)*òaß¶«ûþçk7ýfÿðwíêÅÖ.?ö'/Ûͻٓ?¶«/ÛÕu»êSûU»rÌ¡]þK»úÛ„à=Ùˆý6uÒ¢]™ÉÕ‹ÃlqUÝÅó?<{þÏ_o_åSaÕ ü`cR2eŸUÎ= ?m4 ¿ÓÛ~žÞR™Ñ"e×|l“6˜£6FHå€Z“/o»|!çþ|ºIèb p„àE8Ö„ÉÎ\ãüfJø”)û ÈÔK1&2iiƒYËЪÀŠ3iŒÊS B*©³j)Rÿ›>§¼.JY·_˜”®Ÿ¬ïáJKj¯ÈÁ*·c »p—i™èp›Ê r Ø6²n™ 1l÷@NáyÛAó¼ÎBRaB¨¢àÕ•ö(´R$©¢*<¤€YÈ:\Oªèãf)Z(RTåq~ß•(¡H4‹ŒÞoßµEâ ;iµG9¤]Qéí¿në?ÀhËq ßQ-þO[ü3Õ]dS ÏQ• `÷¾î©R²ÉŽºævFá"ÊQY»Éݶ·)ä%ÛZ  ¶ =d¦°ËyZŠš+‡£5–،ݩÝBnà ÃUŠq!È<¡Ñ‘¼´>ó—Rl•òÙqÁ»ÉQìgÇ¥LªL álÔ¬ôÛˬRÄ+³žQˆÔö¡E† Ëö-Ulýáªë eÎ¥Ýd ¦e¦”’J;±¥ä‰²ÔIf!‚)¥·—HØn,d~5F…léF_oVÝ‹leDeÂö¯‡£•QD:c…3£'0î¿NWQ¥ÁІ{`2Üu¹­ÜöG  cšÎµ™œó10Žc2j‘=NZJ8NÕ¦@ƒ89¥eÓþ±ÙàŇ•ÉOs c¢õ:ª¿ú‘ùä$åCVXå0|CÉ5yÎw¥tÛeáT/t2•SóÚxm g™&Áwž]rr ›f²œM?7™d…—jP9̈—)iÙ^]ªä2³ËäC ~ Þ–XŽ^ÒöÕí ­o)“¥ÆÄ—ÀÂI€âb~FSóìTw¥Y$j`ⳕ ’#wé‹„[(Á‘†7}ÔEšE­×€]pÑ’¾ Šü.“0°8”ýoÊýÈÇÓ]?-t†¯:ÿÏ9]}ÿv”€Jíéf^“'¾¬bÂÂÉ®†€lvÀuùtÅT•Ø7]æàÖ„d¸¨oÚ_ŽÊ¿ì¥³Ig¡˜„É&K;×”ñðpEô;©þ/ke­W¸(>'Ä€úÛmùîêx{qEŠiÇÚ̜ٚŽónøžUŠ>ŒìnU’ óFEö·]{—îy1Ú”¡_7Ø4pÛËÀl]*­ˆu¹Ÿ fè:¼Ž†R!&ð`93§~ÿ㘚mîUjS_Hƒ|èUqç­ˆ¶9Å;9†Â“Jš­ÒBŒ3æïà©â(À§Û$¼â¼HÅÝM~ÄöÓ‡‚7듨Uä‡z‹ÉY]jwÆ Rë>ßNŠ rÄk$ –•5 ~p–í>SÍ—} ÉÜdÊ– às¾ ®ÚÀ„ ¢ë—á–@ä|zï˲§ÀN¿^¼öŠŸð²Sž=µ…ÓƒOæ÷ÉÚQag©.DR ™šUJÍË·}˜…X2çüÌSE®&R•0øÕ(`óØ£ú¢},2 µ–ž7ñU­uBª´ý³‹Þ›ÂrÅõçÆ»µ>“BœT>—s+§ |k :NŒu²Øvá“Ø©Ù"Ç‚ˆ2m_ÕdJ¸H§«q+òÁ\ŸX+ÕõèӬȺzK…ô%wïꀖƒ»íÃ9PÆÐô ß½¥_•m+bLÄ¿j»5ïJù²9Ó;á¢ù3-.a™µˆŠÊ$›Pç Q·µaó8Y†31à°ëÖÛ(Ë]מó]àïËFìÃÀup«Ð9S¢ƒ¿‰w¿'¾ŽùéÒ²¶µ MÁçH-[Òßt ê‹»:öñ[¹<£«+0_ãÓ,dBN)YÍÓ%ŽÄ^¿©ÔwÔ ìIae£ŒˆºÁúæ|7`¤ ITì@z35;€ƒ.ÓÃ)æyÇdAuÉ oáÔˆЭy×i~ > \ÁPÉøÌÄ¢‰IîÆ¸ä’Jc‚Ývwöü2_{é¨dž³‡2ëР߈ B?õm_Ô¹¹CL™ ÄÁZØYÚ´ó™½ lãlLDS“ãvWÁ•qúÅ]ßû1mFu“†¶RÓ%=ÔrÛ®®ÚÕ÷3^[ºm0˜ïe“DhßN"wÓ@6Æ;÷¹g·ïú½¥R€Hâpt Äqؾ*ø˜´"$W8Þ†‘>åìÌTJêàá½”ñMˆ½å‘Ií@… D±å¹°ŠØB¼Ât²~CÖòL&¸¸fÚü}^† ÓR¦Ãß­ŒÌ¨¢¡ÈªHƒn–ÕDspGZ‘¢g¸hµ¶_Á$j-Á20—Ï ª¬¸4p¿üCÙCñ1‚f ~k0¿`‡SG‡J…·Sév“G7w< Å(³ý¦ƒ[„áND&-¢ŠïË7F³€•Œ-¾÷Œ^™¤´/Gç0rûk“¢”òUû,‚[M3‘~+·Ðê*rA w¥ÔGõ¢Ôzú(™w§þ ýÔ‰ÓÇ«=+ãˆfŽz•ILC^¶I„àiX¿ò}f¹òwÎrL„±Óㄉ‘œÎgQ¡—×t¨|*»]”†#)åÏ™‹ƒõi;WÂe‡Ê$ð\ tÕk4Ÿwh î1E9×ÓÝú"ŽçûÓ:ÇþºTø4<ªèƒ•ëø%VŽ䨬ç[U@ ŸëÅû©(åhmžR3hˆnÎX}¾{ôíµHdz²Š…@2nç‰% ú €:ò:ú±çÿÎ=ëÓU P~Â|r“ÉYåØèh\2I€\– z´‰g½ÉÄ!øxz;,cd¸jç¹mp&â™|9Ù†ìÓ [ÝSvç™IWC>¢¼]€44Èé¸ýîXžÕ^mõ+”^…PI2Æ{ÌuñF«{Æ<®û2÷!K+ßM¸nus(‹@a aÓ PøØHáîÎÁ;ž˜Ê "bÝ9MÒ ‘ƒ9HBFÊb-Èî²›$žnj?'Ͼ%¿ìðW™xH</¦¿ä‘BbF/÷‡|ÔÚ€÷¬zÔÉαqP]“tøàè–Ù9•Pfé=°0!Xý`n†AýH¸úœg)=Á ¸©AAOí«L÷‰-ia Þ)rÛÆ;×þÅ`š»–|oµíÈ)±'®±EÙ÷ù"åµU‚ÓµÝRÚ:xaÒöâ9¤ótFŠ |Ûuù*å@ĉ´„·¯iä…‡û™*Ÿ¥æÀW¹èxD n†»f¶ŽÂÌ£:aUrtßJ)Ra[ ‰=Ò4ëE˜t°•© 7âêÆ‹ ŠôÚîÏÿºÜÀÁÑ,Õ38¤ß^¼ –Æ>ÝJk¬]eE“£NEên7w #I¯šGà?u;y Š’Ú:‘tdøÀöÍdeœÐ*¥¶2 rëvŽ)M¨±¢æÉK=å¿'®áïò]ƒqâN,ó¦¶.øk¬$²#ÅlZ0óñÅÖß|3ÎI<‹h3zF_2½˜X~¾­Ã(ª¨ØqÌÖqi_Àe½ˆjeà¶5UŸšˆU»PjYê/úk÷yíR/ÚcãÝp "ºB´–¸„ê©rÍ?5%5*#°ÎýÕá¨S@ôGå™BV†YÀîÍz“Šve&…û3;fÿ3ÓƒU2ðbTÚg‰¢5}Rµô“¼˜ Õ0©/sp!D½K{Ö«K“N fŒ˜]QüË3d‡ ª]4“©ñ,¤2ڨѤPòÄ3[æ3”Ìí!.†/Óº5«z|@ó²ü 4DÐ@Á]õL§éd )±i"zWiþÃäž’i8MÅZ¸xÈÖuZO'0óÌ;‘d\E)®™ÜnÎ^æéÒ»ÉÙ»Èr+@Ä!‡’A’ù V¬p!ÂD7‹PžKë:Hu<äÒÆõ1ªÏþDàì.a¢¦s_:“S‹þÍÔþ¿Îsß¹Û¤Í~=ÈUnõx/‚ýY!$)bTžè~g5!“Œ»(h^ÌU˜b Ɉ«ôÞÀ°Ž€o¬ÏÁ°ÎÒÈë­ò2 *•¦ÊâÌ! t×eVšFCÆc‰ž*=íE»õ±f—â-‹÷{ç/Â+cŽ¸Ñ¨ÝŸÓ(cõ”ê©ðÉêãÇvŒ‰ÒÀ ú(Wó±ŠFwãæj.È™ÊâaL£0¢qjû“ÍNÜWêjÞdQ!1KMªgn¿!a<|¿n´Æb…Óe‡a)ÜØ¶òP¸5±,K¼‡¡DÛ(^|«­Mµú–5_O¢ë³2`RŠüÇÉŸ_O®ú__M$F©n´›Ùl>³™õ”¦oþ ulë ÛòkbÉå’¡ä´ÝÇ"ÑûgGmAL싊÷‰ûŸ-*­mDUöØ^{å0ipR?Í«o-•>®…djsQ‘zÎÑî¤<,ÌëòMÒRÏg±,$iwêÝõ=™;LÔa¿êZk_l‰ÆCþ³Í¨…3¤¨ FóÒ?ÞU*”¥*§¬–޹¼fáCZ´ìbVÓ‰v€TCw|YHóݽ ò?ˆI9özZjBëBY ƒf$®8sgEP™×d°¨ÿ>ÓŠÕÉQ×iÍ'È Â =n¬Â©¶çËå85©»§ÍGºæ€ oË«Ÿ4O¾u>Ú}âÜcÙ·2]yÚœ‹ ¥Fè4"á]¯ñîíã&¨©"½ÉØ]X<²ð–Þu³h^/±xç§1¶MêUæý3&˜t„r½ˆSBlJIÍA+¥||J¢5# 뻩ùñPÓU&Cá½í—b‘Mëº:dÆCÝbRË<ØU¥jy¬?˜';Ï‘³·…X} Fj S“„ "Ùþ¶¥»Í2çÉE,}é…(¾ØRƒçEƒïóû!'+¹µûãý¾èÆÔpnžºYÔ¢m8Oˤ”9„…”­`'ùÌŸ›u/šcš¦R×…ûi)NvaKf„Ã ß |†‚Ý,³÷»{X»E»?5c6œ»›Œø0§±S eêœÿ¹c¬¨a*(*MäÌ3™Ï…ˆK£æ€»)ºõQPýÚUš”ã½ÊOGФ—ƒwÜç,² Õì|H&¬ÖeÖ(w};çãw}Öƒ‰=V4«NEÃvVDÔ)íØ©[|u¢týYB9˜9#Âú¶ƒ}…¾¤Ì9ÁOÈv'1ÉcÉ2ϘˆS…'¹ $}¬ptæ9t÷ùI%Š]0uÈ<¨3ÅT}½I¸ùzðŽö‰Wóf!Ñ@7À±Œ‡{cuM)ŽZM+º³;½¨´ÆÊ‡SDb›6¸”Ò¬“û®²ÀZ^:lÄúX”÷Ë\¬³VþÐw»¬F°ö¬åßú ëÚž·Çºõ* ò# #‡…‘ ¸ƒh實u}¨*ÌÒÃiœjŸÔ„kIµàmh^&ãꈳ|¡OpO暀Ù=0²­ÛöpFÍPƒ¡çSnaÆÔŠe¦Ò|j-ús^†<%Å=\äeõ=R”І–#ïë ßOÀ•·Óžµ²É}§5Ë/‘h¡­öDêµüoê¦ûÁ¨r¾¤âŒ…à5/lÝ9¾­FÔX`~ÙVùc¾’f†Y]Æ܇zk¥…sn¬¶!ýyà3Âjö¡è¾33ŸŒî[ +ýª_þ‚ìáS÷º^ýb¶ë’°FL­«9‰áÃÔœ•Dà1MšNïóàßtHBØ‚#÷S%­Ïcn0ÎÃ1sxîM]ŠyN o²o<³HZžÙ!ñ2¨ Ú÷´“Ó‰ºĦ¾ËŸˆMÜðŒŒBïJ{Ö•¬g¢ý{*L«#nŽ$±Ãë5%‰¸ +.£¥ï3JŒì›Z…»Î/éãç·£ÁÎ5s·`&.¡ÎÉüýÎd§x; ÍNÏ_0iG†.Yì.Êsì‡ÈFml‡mc"z8¹À¯úÍ,óBöª;Q ¿T8ËÑ}J"ð˜iáÆ2â"I¦a¯÷>2æ°­ÛePÏuV¨³†:æË.mÛ °‚„й8ƒ·ç>Mk®:ÖÔâDš–ÍqÑ+¦ÇlÐØ’jÚàzYJÙ¶‚læú¦dj™c™ÝàÛ5íûÐËéà5¹+É#26/¬*±/<娄õ"KçrÊ·Ôÿ˜I¬Ë·èOK ^";Ô©È5¾ ‘„¯3CÄ¡H  :.ÈÖ¯TGw÷i=!3ã!QybOPI3 ™9á½2$¡ÍB/m©·ÿî1'ˆC³{´z»¢Õb²Ò§¡¼·ËP^uHgÕÓÚÐ(/JÓ¨|3 D$VÞ}~4Éݯq(a»EÚÇ*“f½ÿæl6*d5¿*IiẒ:í¬ñ1oŒ—  ¡9̼ÀZž,,(ä`‚–‚’’´ñ¦ßµÓßùa• Öiá‚ü8j0“£ý¤÷!êèÜwFE>½1O¬…žàut6 uXŒ¯ÿ¼Æ!Ñj=1‚YÚqƒnÉá3ÔŽ§Ä52D's`ÞK2}ZîÑ̲’­Þûäéâ! ¯åÐF»%ºÃòƒi>ïH4tO.mPvKß·£Iµ­0Dˆ¬Ãñ®'ü˜Cþ@Ç¢„UÕOÔÐ|ÌîzÔ2»˜t:+¶ÄÄ6˜ýÒŒ$ 73*{>_ÿñ’ x5ùsÿá•ÓÄöœ'þA,G;¢XS ¨YÔ»f’ÃOžÔz&^ûDrèÎDè@Ñbçø2–!,zÄ Àw¦—³"•Ñí$2þ^ʦ~ÚO(ͧ·itøã ¬×C×Pø˜'ãmÈkÙ*Ù¡±ÞZäA¢»úy½’¼ÐÝí`Õ¥y}׿@îÃ#11…„wƒ€¹S~‡J+Ì.º»ªº Î(éw IÊ Þ‹]±"Ö–­JÚ•“»©éôÒÎ,Ü•¼/É–¢™'¤øõ&¿‡ Øc@n·õK„²íQ#0Ãšì ÆiÃê–(°ˆš1L¤Nùñ ¿E +Ý’©CrWQ¹5;|“Wë¶Þe,,GJå§Yz•Á Q¾>Þ³âL&{’à|[ž¯ö&߇üð 9)KÛ§t_5qF™Åb¯ó8.î~¦*%!K;f:§¼4´4”–òß“ß&RÄêçœveåø¿ÄBè1Wõi]ÿ 'ý˜ß‹*n•†nº(Þ’=qj_!gÃ5’_ŒZöòûíógzö§gÿ¥ª”Æendstream endobj 144 0 obj << /Filter /FlateDecode /Length 5048 >> stream xœ½\I%7r¾?øGäÌÁÎgÌ 16’ax xͳ$•¡ƒ4‡êêU®¥ÕÕ-µ.þíF¹¯³z›¡ÍŠ÷e0ŒL&àüßôÿÕÍ! Ï?°P‡é¿«›á‡/¾&"Xâ<\<=Ô'p@Š 1dËÃÅÍá»§BÄ<æµý÷‹?¾ø±eà iÃÅãÃwãWf³`2¾9H„˜ÆK§’%MãíÚ|íM ¨$ã Ç&Ž™ÇëÂ"`H8>9ž8EÈǯ4ÉøäªŒÏ,b_΃䙚÷ÞDVï,cÎ¥¿Œ†Æã]Ÿå(èÒqJ@¦B£ñLe¤ñëcÕã``‘¢ëà4+áD¦lUÿu<©2Žo׿ú8‚EO+ñz!Þ-­gKëûqiþ¼´ž,­<_Z¯W6Ç"<"˜*=\ü{'å/{Iy¿´^nÈ»¶ŸËv&ÐúôVׯ·º~»´~·´~ihÍ”¼Ëûri=ZZ¿_Z¿]Zß~Æ,,¯ÀÛÏPí_¶~>nÈø»v^?¨ß|ôTî6@7)å9¬Ü,?±¡Ü•㛥õêCÚy׊~yïP·”s»A›,ù4à´øÛYLx¹!ÿ‹ Ö«€÷[úZíø»÷ªæå{G÷j£“¿¿×•~ÞÖg¯šÞ þ~mþvCšM_¸ÚvµÍ­I~µ1€Ç¸.¼ÚFxý'NøûîÕFw—£ÿô©ÿ5úý#X9îd6po6†ü€9leÛ­Dö|ƒeë,ïÏÏ‘üf'ï\xÿëÚü͆š÷™þU»ûÍçÌÁ§úÈ^}ìl½ëL¬üþwÓmÞÅ­B¿ÝtDX~OKK?0ËO7æöõ ~UÙÊÛ´‚¦Æý¿µùѿݚ-¥Þl(ÿqƒÛR¶*zWÿ¯7ºyóýÛGûÖGWØÛµ¡–Ë?Þ”÷bùýë¥õ?KëËó1|yqøÊ—³8<»÷Ån$N% i  „—ÿ_=¾nâ]E~>àðç?Â𧃯!çCJ q¸9‘-„ëÃ7 •BI*Š-BlA3¡Á¤HÀÔ‚ÊŠb¤ AÔJiPb I[ÔBiPY $µ¨…²¢ÎÝhażok!êÀRˆÒí-XȨԭ…“O,’i<‘¯¬%@Ãñ$ 847y”ÒDãJÍ« !ãÀ¢ÐŸ) !`‘|•£€ØBiQPƒš)J%º®ÔDiQ³+ª•ëã´éš<¹J1$•…}ÃbÙª‰”°(.R**â™GÙÐÖ:Í",7Ö>ST]ÞázÊ9¡õO³ Ê ”ÜCXÒ:o ÂñÉ‹gÏ_/n‡ë»gßy6¹}£‡˜m`# &|üæå“'×gn¾x~÷æÕ÷ÇãÅuè_¹ˆg‚“²@ŒIŽeUÊWŸjìDŒâfÄ©HõÜû?eP£Á£ûJ°þ"fRŠÃñùñßÙ€‚¤!“oœÙ <ù^TL–†‚Q¦ÕäócJL6>¯‹NÌ’ÒpB†˜)70Q¶!ʼnÁÂÛ82åáôîoÎ]ˆ†SŒâú ä¼È^´\5ñɪ°(ƒD ÅÆûIjÊq8ié}ú4'ªÒþ x8)$Î15?p¡œ(ƒdŒëOš|Štƒœ"5Ïp€Tž åæ§è“”‹²ˆ¬"@’ă(DnÙ „”‘‡Sf`µFðI:óDõ 6ãÀ(Rê´É ™ó ™!smâpñê0^/ý|"Cr«ËƒÄBy†¨ÎP,îÀ0$ ¢A,eýÇr`äAÝ©y 9£›ÖŽ “AP#HÄ=FÞUB…äfcrÚaR$ „„ƒ"IÚAB3@ч<3 ˜wð¯ ÍxÄÀ‰÷`¨Ñuu³ÉØò )Câ=$Ì$ÑŽ:œ=…rÚÅS&†¬p!Ož¢”!†=î¦Ã˜!ºëí&aŒÀÉËáòNn† )î±}]vòÄ²È ¤É$ì5ƒÅ´cNQóÅDÈ@¸ Cœó ˜€Ã:Tò÷¸;zŠˆÈŽ¥ˆ"„l;f=õ¥€'zƒ=ª9–d<¨HJ;2ÜmÄÃÝ*‘•¡AÔ=‚ë.§A…AÂ:dƒ´kÀfb” ‚íáÊÁ$ÿî7äÊp?W&eÝÏó¦UÊ~v=W6»eå$€–ö,D¦º öIʲ눗p½W†ƒHyÏh˜!° * Æ;ì°°— !Ð.C& `;Ö!~@‹Å ¶K†Zy¯b“DÓŽVƒò®u `Þ³ ux¿eY²-¼ŸÕDö×¶!â â/´v×µnÌe”\*î1É2ùήì`… B–A$à*Ô\æb¿+Aò­dq¶;1}u»C !I  üÄ?ÎÅü ↘ * âYevh`É¡qE2a†PäÛË‹1@”M`®ìÄ_øìQ´Rð”¤;*pfè›ö;„i dR,0¤IJ‹K»¹ðdÐt ™ùq‚$;Ä„y¼¬Vö†w\ÀïTÍPˆ úž ºî "`ÄGÃXÎjPò÷òâ«âáú@!à8ˆP‚+%ADX ùß诨<Ïø¤Q¡Há'bèÓèS ä©Ã_‹¡ø)QEÈ…À Ñä¯û‰ <Æ VêuÅ 1«Ÿí¸>'r)zžæœâ;gYÉÄŽuŠ yÎO©N1òš…½º¸>Pd½f¾«P†}›Ë)Á*Æ¥ð¥cBÐ"Næ"^àÅzØrò˜îU„:Æœ}è+`…³E’A)PQ‹zÊR"òá_8 ú ”˜«ê8ø+S§ÈÔ;A(oŸDs¡h„²¡«Óá ÙÊÑŠ ²+ƒ³O“úI‚\8cÀAýø5–¿ýMk”‹j˜BðG•ѪΙ0‚o”pyËY(Œ~"G}Õ€E8ŠV)ꟴ8ÅËa(Ú$¿ÿd:¨¿‘"‰¯ÎÉ|[Œ«‘±G<—VÊKêBAr´Š—ëeÔBT–*þŽ´>ä»õïªM?²" >’R™&'”!‰©›zÕP žýë—%BÔJñÝ&/™‹øJêYC%ˆE ¾/ƒe¿G}¥íÏÈÉ)õ¡Èe†|¤V!I\AÊî`¥Ÿ¤Xƒ¿AÀ‚‰„‹Æœâ‘ÌçHešû(pRx(£v .ûÑ¡ÊGË.вhuŽÉÏùÄ%(ŒS@gì§§R¡h¬úÁ‚2Éÿ$ËnYåOóð¡d¾uí”Ô­_)ë¤Íìv\ͰœᬩL¾›j¶»Ž8ÎKÏÙŠ·+QœLÕ¹a(úþ}éܲT‡K“+‹G3_¸ª¹¦à+EHÈíÚ)Ù?Çò=vÿrÉ)ÞûÛðH~äÈ)n§qó0Rž¢4ù?*pÁ°—À4H–É5¾©qúãŽ×(IwŽ×íÎU*Íç®J|ÆîàÜLéPÙÓ|‡š(=*ƒrª”åÑ]Ûóu ¥C‰ù,´¨‰Ò¡¬?97Z aÉ h¦t¨š/ZÔDiQ¾9‚ÝgJ‡Ò[ÔDiQžoz=Ì”å{Úéa¦t¨Ê[ÔDéPVBE‹š(-*rìÏ©-”¥%‰´¨‰Ò¡b>ÓêLiQžü¬›¡™Ò¡rðÀÚ¢&Jò=—U)-ʳGÍ”UN¶¨‰Ò 8ø–Gwt¦t(¦ö¬ßÍJéP‚åddƒš(JK¾hQ¥Ckb¡´(Oâ­Í„°ÃTB‡ñTßa*¡Å”ÅBš) £5-j¢t(Æ3}Δ3¤5QZ”×Ý!݉ÐaôìòBéPYÎæo¦´(/E¤SèLéPHž«ZÔDéP5¡·¨‰Ò¡¸üÚ¢&J‡Òì´EM”•ä^ú‰Ò¡¼.îô5SZ”Ÿ„‰¾fJJž½;T¥t(ê³ÝLè0<Ͷ ‰Ò£Ä~‡ª”Ï,~"t˜Ä^È´ ‰Ò¢¼LëÏ’Ï”E¡ã5S:ç3 œ)JRŸ/J‡RìãòBéQÖGÉ…Ò¡jyØ¢&J‹òš±—k¦t(稉ҡé~¦ô(ë}"´/B©³ø™Ò¡üèg7™ҡ4žùëLéP^•v Jè0fg^1SZÔTç6¨™Ò¡2ŸyëLiPâåc÷µÆDè0¤}…´P:T.‹È5QZQòò¸û0¢R:TÌ ©CM”•ür‡š(-ÊÄV[ ¥A½ï[ŒDƒ— Ý=d~‚YÕ9S=sÿåÓ§G3Ÿ\½îžÃÛõk‡7i°½ý`ÙEŠÊy M€a:ÔÿG¿\AÌ S½ã!ÇÈ\/nÀ$±Âä÷=4­w8 Y"*w?ø’ÉdÌå‡ÄF˜.˜áé6ŠÔÈ¢)œ?ÿÛÑ9ç”h¼|ë·F¢øÕõ"ˆœãxãBaˆ1Ž—×ÇS9_„~ÛD+`AA™n¯ˆ!°·ÎÛD…ÊÀ0sªWEÌ€g•[iüƱ9¡/'JCÆrG…f&Ž>ÔyPþ…”?q¼{º4/Ž™!I}åjÉB1VÅEË‚Ü2¾oЯÓ]d­Äí¨[}ÝÔ‹:²¥ª£r¬è9pÊ©\­1uôÇ“D‘,Žuc8>/J¢`X—€Ù¤|ª0OUÿ}ü¿,šzö¦ÞËaµŽÔЯ#yâ=ù“¶£¸Þl¾Yg£‘Õ\›­Ú.+=eÒ3zœ¹}ðù"g#OÌØÏh(’ô}4ÒßÝž š‘“åÓqüùèû›S'O3n¯~zP³Œ—×Éjw½öüº‚ µô<Ùñ]i 4>^´òK…&£ñ¦ú·ÓÇK] ) ­ŠÕñò¶Îu26wÇPÜøžþ¦‰ŧ 3lµÙA®'ÊR ³™ž7‹ ŸèÑÎ+ uŽõ²Î‚9r9ùüAÍ:>]Ùݽªä˜G iæ?†÷ÕÊ»µEÜW~lRâHížZ~0’lñy$™bãY )ªÎÎÉÙö/—™}Q#U@¤i.¢!WõñcnÉ?×Ûƒ‚Ijí¾÷Ê +š³m*…³Íy¼|UŸKAkç»jƒæ×5:ÿÉs ,¥»Ð…ëûYˆX¼ÆÛñ#~; ¢šˆÛ«ÉøçCô`Ô›±ÐdS …Þó®úU4ã&@´9¸ö œÎƒâªm1äÇ×pººñå­ësÊ­¼•²Ð4c¥yf@n5O #I2¶Y§ ÀŒ©³š‡c¸×Xñ,Ú–ˆ‡IEÞ•ìCÓÑ…7Mì4ôÙíÑñT µñ‡3#¬©äª3‹™WÖÚJäaÜwúƒú×ésójµ¬’ÔCÙ´Ž0Ç’d(ù©Ö©k ©Ó׃&fþ> ûý®Ñ~± óˆCãOGU¯:Rñ·¥^yñ¾Ü[¬¡•ãîiŸ{Ü4êS‚b½lþrHö2g¦†ã³ bòKÓš|ü@Ÿ+†¬)䇓ú.¾æZgý¡É‘/J$6¿†­Ób9? F]$­ZDJTòƒÓà¥O«‡.µN©vd©^û–ÍSZí9…Ô{û}åËgÄãÓc8«|)>ÆZýs×€¹]‘ ÏŒµ™ä®*/]Û™Ï85 ·Q#P˜›)l„x^Ö-žåãG„hzJ}‘ÐóD ØÄÛÚµWe z0_5y÷Òã§eM眗¼\®åòOWÂrÛߥ~ã]ËTƱñ­j$Ü–~WëDÖª±ZñÔs].D®4ÎùN9=YÞe-`Ë’²›Å„F^ªrV¯4:C¿¯d6}¨¶|ÙÉS!ÚLyÙûš»ì ˆ=T=®]{¹ø¨¦5²VÌ&<°”=m*fº‘nåŸZmºݵuÄÃëÛý‹ýÆgZ7Þ.‡ž]6æÿbÕÛOk¤~wšr+ûCæüPéS"Y2vcxQ̘̞ÚlÆ«W5r_‡'„5B— é}¦É¯mÎi˜\6ù§1ôbѳÕ¢%UYÞSYNýd ¥¥´L¾‚È]¢¹»ñÅi¡¶ÑOðL»wí.c%#â™ÞŠÙdC~µI1¢% ŸmìÎ즻9K¿½?n  9Æ90skvLZòíŠî7NÌTVíµÜ§²×Îþ›ugàØøyYï3m½]?L¯þMendstream endobj 145 0 obj << /Filter /FlateDecode /Length 8108 >> stream xœÕ|]¯eÉmÝû…ÄŸÎ tKEëƒF@vlò‚DšòàHÏtOKvßnI=#ibÀ¿ÝXdUmîsOÏôC è‡Þ·Níú$ÉÚõûKNtÉø7ÿÿúù!_Þ>üþ¬ô2ÿûúùò×_>üô×D—–´—qùò›ƒ.ÜG"æKš†ŽË—Ïÿtýõ#kÒ!íúá1'áN™®oŸrÊ:2º¾Á#SzýÃãSé-1—ë?âÅL2®P¡êh‚Ê9ÑÐ,õúŬ½öë¿<æTUõß;UASœ•ÄWz̉©çJWÅK]ñ?¿üÅÃO]è¢I7Ìä‰*%©—'椵èåË×ÿtýOOƒ®¯)å¬M®¯öÓ·wÊþÇu?þÍ~ú°Ÿ¾ºóÊöÓ½Söæhúñ#'JZ+]¾üå×ÿá4ÆovÕ߆1îŸÿã.|: Ž~¿Ÿ>Þy óúßÇÛÿv<~öë_ßYŒc¼ï÷Óë{/ÿy?ýd?}WèøyìÝ5¾3ˆ¸ÅûåŸiÿž÷ÝëðÞ¾»ÓõÏî4“ï<¦uo´‹'½dÝod2ÿ—„ói ãi‹é"ýn¿òîÎŽa‡M¿/×wþöŸï ñãÝ…ø»ýûÏ÷Ó/÷Óûéoïuøç;“yÖó^‡¹ÿË{M~ÿ¨É¹!7qlÝó½•~wg¥?ÞYóŸÝy㮲ÑúÛ/~õðÓ_3]Þ~„•QâTèR`;¨_¸I­]XFKC.xsùï—÷‚Ñ·zùÓ]~ñ@—~È—¿\F¢z)Cr*õòü ¹rₘ¤Ë»‡/¸ÕœT/RˆS—çnm$*)µ'¢Ë»îÄ©÷‹”N©+á ÌRïÞZmí"epê臶TZ|OóÀÀ¥´‘†4M™Ñ™¤®—w%³&IµXhm%µ¦&áZRó:­%-!•T½ÎÐTÆE¨k*a¡ÂÖ•:[¦’SmÉZÉœE®½”‘Ñöó‹y¡Ö‘€V/’šŒN°XÜÑE/9åšszy:÷¯Ü9)a‰[ÊŽp½\¿üg— îNÝS~>¶€µ$۸ NÃJFâæÓQÊIû^˜çc ›Ó}SÖÞJªofÉB¶us±ž÷¾P-Ili˜PÔÔ½·Bc¤1.’{K‚Þ gÅÖK 1{÷P˜4Ñ®‚®þRË©Íîçkµ³íÐóC!¥4:J»Ý55¾Ô>Fêd-åŠ6ëî;µÛµÍ·¸d,NŤ½ûŠíºTmb†’¦I %šª5\ ˆÙ¥jï©» ©¤¨j¨ýüP ØR%¢ªT\•J…sè¾’-tóziäžLLk)Kœ¨ŒštÄÅX£é¹'ñ:YÓ©JÑœ+èx¦Õ{.„©÷Z“”µ;rjçfo|1¼Ûª“¯ÅyuPéǦm…éEÈÔ¤óèÔ.ñiþZ §1°´-ÉKYËXTÕ5ÆV­êE2õ9¹YGr¯kñ+¥<îÔYíØtG«‰4@k€8Ô$¶JZR]F/‰|•$‚2–¡šJ‰ˆ¬Y!ï¸ÕôR´à×»!b¬mÑ1Rî³%ˆOCKœ[Kç¶?cÁ»ò\ðÖeÐ%'®¬àùûiÿV´¤–ÑaM=ó½ån‚ys+µç405NÅ4¿öY8†XZÉã2¤$5Ti=§zªÒ4ÑëQZ£tÚ¡Ò)³]¡b»‰VǸ þp‚úˆ&£jÆæ³âSyŽf Œ†.åp/MÑ摆 •”Å ] u@mŽdÜc’‡Ù´c¢Sƒ‹êX%½ØC×iÉÒ1 è럈¸®å’Uæò,˜†E\ÈÉi”“µÆ'Â,H}yöÔñS;™jê‹pP€B¢©Ö‹H.³sb1Û&蜢ñ–Öæ$ Þ¤‘¡nm–=;›J`G„#Û¨Ü\·-¯RÒ°·ôÔJŒ'¸ÍX'©½ºÄqïÙZn¹;°oãÛ¸¦èÒ\S‚ ÝuZNb<®årcB•°©Ñ„B(¢Á¬CS•hÅxž\*§Qì©Q] Q’^‘[ºÒª¦"—Z+OjІw.Z&ò·jòS¥ÈŽªÀÿóÍÙV^¨aÁd ÝZlÔquZ[r›h¸,¶À‰a·ØÝ˜ÒÑÿ²ØRtŽq*aŸÖÔ·*çb€ÿiÓr}«ÆWœs3Ù ŽµÈ$¯°^¼`ÄUÎ9'‰;Á ¡°[¬='Ž5« ’5Ìk\t-MÃLjXº–©&¦°¼ â€Ïѳ-ê¶á7B @”Ìú1m¬$²8’V55Ìͦß=W‹íü»©É³8%NF†Y¢ÀÈ[7êy«Ý0ÿ^þˆçpÇgxËÿž¾ø·s·å‰öèÕ\¦I˜tFjV'èÛY©TS ½Heò¸âöL*ÉrL(öíQTí3ŒUk=Hñö(š¨7ƒˆanAô—CÑT=Éðøi}aí’ÚÒ§íptU§u¬Ì­¬b ½U”•+ÀàÐb†ã/Q÷7KÉ|wQÀ`‚,/¦B\LžØú<×É¿44<ýššóŒ¬rolŽ×1œå×h®‰gI7‰ßsèH^ÄY®w•äÍ ÛÒÎeêÅZ˸ހHÏsÖÄ5ìCpËÉçÚÞSÍáÖ:v,8XÓã±(›•TPÈ¡,¬¢¤D—k»W}îî–Uµ`'õѸË$tg, #PÅÑ?Ëìöºù\/$f•&³óÇýk=q_ Á/ìnéUaƒ‡5¥å¬3^µ7Þ|xXjq†ÃŸš(R‡ÒŠ•tƒÆàaÁkô°Zk7xX³™¦ìáèÒ³å‚7éêÑæ¯W¸ªD#¸A¯“o2!·ŠÈTæAf%‚´ë`qªÃr5ö¿~éÕ¬Íaô÷p€ŸUÃ)Ü4`O”söèpi}˜ã¶‰Áfÿ™49ð³"ªÒNq_3VýÅáÒd>Ãr÷ˆrÉÅõèk¹„œûlz9€Ìâð°@–<­Àò1/Þ®QœéôޏÏ(çv XûŒ•@ °{ YÉÄõXf=›³AO—‘å½A*÷&óÐ Ksa¤è‰mê[Â6V">#=«y—‡:¨›ˆh¾<‡ºÐs}<*$tÊ$,X« Vɲ*¼®¡*ÜW_NGÌ?,Ìj™4uö-=ù“*bwÉ–"9 Ëg±þ¾áÇšáÅÖá-Èð:š—è0åPÙ®KTv½ÛÃSEà^î݈SÐØ^{ŠÁ²=b„ðV ÕÑëPá¦Õb‡ ¯Å 7_õ&çp·ÒnTxiÚ`O£qí '%èô”¬:êŽT Ž>¦—„Ö¡Ã)#p Ó²õ¾€†@ƒt6š’;t²"Øà[ÎÒÀ±«Öêt™™ |”£ྠ†=ÍÐã~ ƒ‘Ó0KHƒÏöJ'‚ÂúWÀ$ëÜMDÜO¸Id™ú°U”‡­Ä±›”é‡ÏЖ“˜d5u ¢ÏqÖCQ’aV8§™t/ þ/Tu3,|”1P&©ÎE¸UG³ù¸e úéåDeæÛ9Ÿ¨”+-r†<©”ð€V„ó • Ò¦íä›ôΖ^8<‘®ùÆñ@¢~ÑF2µç…:e@]¢g_ú°þ™=­ê‰,(‘Ü—îÙ°v6»É5O²C–£#QàÝäpg3)jx>¾W3ð#Š+ZØÚŒUæŽÓ4! ¸£…P—võ ߎêíA8I(éba„PÇ5KÃÏ(…pºÆq¨3–p?ÜŒEЉ֡ÍÚ V-xvêªD?c±íEê¸! ƒŒÜ¹ÄàÊ&ö8ÌUÝ3B²ñÄ(Âý‘t®—q _àjG8Um8›8"]ã«&±Ç’r4Ý{戇ûpj6œƒK²`a¾½\„9+ÜÚ I,#'4,jt0÷å5àÀ©‹Åò,vecä-ˆo-?޶‹O¶sŒ9“Ó ©ê§ŠÐè‰ïO3ø¾N#»—~z(Å=´é¡Ði»h:ÁÀ  ÿï~ò─憗ààbii”Zçén—Þ¢.˜çH>+ËMˆzm­ZÅy´KxðŸ'[lï»tq(âE¹¦xF‰‡óÌ1òHqàHªü¸}í³âÆÅ͹gMí£XŽz?øO€êŒÀÀÒA/{#‚¬¶å¯ªíKptFDl‚[3_ªÈ%¹‹2h‚åòsÀ0GtsŒ‚–èæ©PÓÍQÏÍ7G¹Yq»9Ë\â`ü +‘cÁäÛ2+¯|âX¢f Ç*Ô82ª9\œ8êÞW&hbàXk’Hñ’O»!o9Ö\+¸Ìq=c"_s.æãn‚‚ŠøÃ}¦}o/×É»Lhʉ´ D9O¤et'»i9ËôìÌŽ©ÇÎÎÝÎa¸*ñ˾úem–Ô†¾Ô­íËìÈ<ð뇦¿ ‹yʇë‹Á÷á]`íFôyÅZü$›9†Ô¿^’9|vn1„søM€·Œ»g‚O4ý¦ÒyÕiÝqÿð‰š 0j®n»Ž‰­v¨·Á»w©“gGÒ=É'¹6K1„;¯ê<}š¿ˆ®æÅJéŸ ͺBHu÷d%)],„4÷¯ˆ6þ@²³–;Öùœz·ÀñKZ×M󅃋ï´zfW@Šè”9]̰ÁOr:D–'‰ìrÕA:%A[ÝgÑoË0:©vT·Õægì>cÅæ )©µ7;,44cåæ³XTm^çÍÓãO/Ô®øÅ”l¼G“³«€ •åq˜"^š ‘­hs64.Ís8—ºƒmÍ"«^`!«Ù >9y¢°óQ‰£ö'ö2%ºŒsß{ÖúŽvà›]úÁ†Ôs ˆbw¿àJ•¥uQÒÏZ±÷Õní»hk>LO "#ËHïê~ÝËìÙånÏ­û6wiúIÞua.Õ)Àסø•K¤ÙQÅ‚öè&QhìÃ瑩5Oøl¨ý>F½~eu/AÜ € W»2µ ŽÍS çVœÑKîtQ<5í⪸ãêµWn¹Eº0'RFù¤¥Àžä:FTªµ˜D'}ýZ~†6fÄ/nFª–¥GÚ3§]´¼ø9äAì\ˆ™‡^ß¾=#ïñ|B¿Ã¨¦!ÛN}ýÄ÷·H6и~éÜ¢ei¾·^; wxq^Pä}œ‘÷€š&A™2ŸdÐ&¤y´¶(“Ö“ôÚ²-Ý)$¾pgÀ3¢–‰xâªi$¤´4HÏ–Æšëïî[»¦ÊQ÷üëC>‚hF¢sÓ]åû5žõb ƒnxè–7&Ýܤ˜L¤­Ú Q™ÅŸd<¨P”ã8O.&­Ô> ¯'Ñõ=ЋØÍF`šycÂ|Àäš>åÌeçjJÛìÝ!qïüµ‘醪ø†>Tàúêµ]G¢ã¨éθèYà™¡«´bê,ÜFcç&¼ Bøæñ‰q‚(Ÿë{/m¹œ;Rˆ['0’MÁASÄ–3õïðE|͆ï=ò­FeñíýlB¢ ÿ1m.8Ž4™û Ž‚©VÆÇgí;ºÕTyÐÿ M©7Ù=Á ãøÂÀUd÷ßöÆ¡ß7s?ìE¥\¹Ò‹ø¡½º1*ÈKL=Z®W΀5Ëxtg}ñM‹èvþxç²·wÖ÷Í•þöίç Éî.*Äcžoë¶éùLù¯ ø*¸öï~ØÕm‚t[»n “¶}p8hj‰3íQ>Ὸ¥ŽÖÀëÕîK4.†Æ<°åŽëŸ¼ &¹þñ…ó;šÊõmh:¾éEÐ9ÊçSŒ¶Ëh×on¡¾uêÆXf”æÖšÎq„N~óx¨,H;ÉÞIp4¡÷O{Ò7:Ð…µõü¨ÊS«8¢pyÂñÀÇìqYQ£¨Ûê~sÖnÒRµ:ÆM‚ùÆDkàÕ÷¦m¹µvŠÃ¼ KòqÞ­ZÊýð rF´Â+<|hÿKOHtÕë_Âó SˆpQ«ïQ®ú‚wLÉ{u¸¥o¼9Ø[)ÄgߪªœR¸úÅ·céÃ4§ÚèS\(ÈØÇP0JÕÜ«£|xfÔ¯ë~Ç´ÓF걌¯‘œù,KSoã÷Æyßµ rü‰÷~,Š_{}Œ2œïOBË}¼TÎIµŸ½ Ö:gí{xÔï7soG1z•/†‰7ä-ƒŠÝƒN__<×rócN¥K¿è9ÚIEÆìÿr&¨­ÌʸÉxßq,‰*)zMb6ʪ6¶œÝ‹ƒ÷ÔG'ºœ^y߃wËYˆÚ5ÝR%)§4Þ-,++“ÇT§Š<[¨¾.*s£¿{\RóþÆe-¹†‡ˆÔÝ@8#´öíã¹µÊÔQûPå}¨‚mD"Ÿ«|ãÅ=Ÿü͹ .ÉP¾þü‘qÿÚPB»¦þ—ƒ¬ßYnbËQÏ•ùÉŒ¹+õ¿: ´þkáü·%#×+á¨ò&Ÿp?d¹‘±BÀ&l•.šû“‡škrìîĺR¨ˆŸ€6º“!òö*zŸßz§JäjÈH€×p£X-ÊÊÑBú Ã)yr8G z‡ì(8Ÿ#¾âÕ•/ˆÉ‰ Ÿªþ©°â;ï ífdòŒž¿¡FãÇ9@€ËsU†Ñ ½X¯ç„ÆËÕ|Éô>$þþq€ѸÞ$`nÔðI£.éü"èß·áùU²a #\‹þÛS¬oã(jlvÔp-ÖÆ§æÞ½ÀQܳÎ7ôó‹Ç#÷÷õ£_B9'3>Mƒi)ý¬‹‹Öò€ ÜÑM»ö L‡rÆ€3òû3©–¡Àõ_iÈ~©^9çr«³¸5CËÊþâh,>ÒºpP¿Š!}™÷«gôŽ¿Í9ì€e nEúaïøÈ²m_ç¿=†ô+NR’‚O!0ˆÝí¡¦ê¿²öq‚èO¾C;íœ ’‰ƒÌUøSе°Ç7]KÈõúŸÍê4>i¬|éô_=>ÙõC‘±C#<øú÷;ìþÝë>ÕùõEÀ©Ñ|œ;ZQЖ 3fiÔ&m×_bõFævšÁyq0Gψï]zôZ1ª‘º;’ŽC0U$¸øð`d½~±ñèȇ½Œ^Lγ*œ¢¦!ðõ“3Ú<áÓ£Rûønw;‹¡ïøÕÿ@&˃endstream endobj 146 0 obj << /Filter /FlateDecode /Length 6738 >> stream xœÕ]Kw·‘Þëd7ùÜMßs|a ¯ÒÎvœØŽìIJòÎ,®HŠRćLŠÖ‘¹È_ŸS( »IÙñbædáÖ%@õøê«òý‘Vp¤ùå¿ÇôÑÙ£ïAúõ¨üçøâèÓg>~jÌ‘W0={ñ(¿G`¼òÁùH*RâtžºÐ L§»=¯¢†éé”6.Øét§pv:㦚¢6ÓuêY£¶15)7üèÜtà Eˆ1€pºJßGÑ[àÙaÊ+-œ'œE0ÓÓ]YƒpDмñ¼ûyö6y-žæïÓ6`êÍ€–¦ã¯8D˜^ïö¨QEm¦Ïòä5Ù0½Ì"ðn:¼Ùieµsaz³Û¯\Œ—…ÕÞÇéœW#멆ntÙä*}YgMûÜø˜C'z²rÈ«‹$\†œf:•k[{KÂ´Ž§÷»ˆ Èð¦k5†²”ZRj%¸jêW¬Oš¼M²‚Zñâ>ciðä³–ÑNw‘7YYVæ Ú3½G•´Päå1?Ýu5YMôBîT!«Þ™«Ó*FÓO¢é}ýóŠ""(t]:–4*Ä 0>æÅ£hÉOÝq>ý™ÕÏM@‘ÊêbZ½½åÑÎ_¹Ë?îLPV£ëtP…üùºŒ4ýF­Øý³ÃA®âIRv y/5€YÙËÀ{éê^~™„ÏS¶UÕd›¿ùš·ÐPˆóª‚™N„bcmÈjÏŠÛu\‰Æ×<x0–÷]P^»é»nhÖFh²ñ//Ê_µNnÚêô-ÚÒ¤I¥>X½œW‘ 鼋:Ä¢Œž¢…¬uQ{ƒ1é¼ JS¶ÆYÏW$LTѺyAÕno­I~ç»ÑR$¿NÒ |oÛjÛ3Ö[GÎFÊŠRæ¶ç…ш`§?³Þj@è,aîÙï³*s8+Òu˜ŒÖfPö½ÑF5…+âúy2›Ñ‚OZnÍýb4y}RgR¨¯v{ØÔ#~[Ÿ^§ž¼±¸á‡Še5š {ð²N{×± ™nÛ² 3|’'æ!L¯YkÜì-OȘHÓEF(‘Bú Š@»wݯýýÀ#[×$ úN^vvÌ)ëŽx0DJ»7ý{÷ì_ܵßþÑY1'!yioÀºâ—&ì&W·,ˆ-½±qÊjÏeþXž¨ *12S¹Ô¯š°NgY |‹#›óêyfÆBä¬n²¬B$;RkG‡ÖZ¹±™êÔZLê~w¹7>(¨h” ù«þžÑ©â~Ù&E Ò™FÁ˜4£1Ú«Ê.ì¥tw×ÍîŠN^dI!1#*V‡b°ç7yí(ÇwoˆØ¦6¸™ÒÿÄó÷z4 [4ñRôܦtY& Ï¿f!9$Ô&t#u³é&wF:—µº¿¯F„÷"ª…5šXóß­n“å¶ýY:ºËÅR¡Xàýy³Ò§©¹¬çó¯_$äj4"ÉzЫÜá Çñ Ö&̇!(¬²zÂ=ÓÅ¥( `£¼˜ã¹ìE«âÕ%×™ý‡ÈxÔ(ÃO ŒÊ8ZÏÍ:¯àhQSÖ-â¦EM'ü©Y¹2`î¹7¨Fë—•ñ|£UsŽk5(íý ƒrzrºxçcåÐcXd»,§~â@Φ*äìî—âç—‰rÒ6Àtx½sV%JþÀ­Ò 1 ,¦[=ÿN˜Z¡ï—ì =1¯”ÂdG@{ï TÉBËØÃÛdåØÛØŸ”9kê…#œÝ í?;Í/X£é Vت±X_šƒó}Û9>Sî®l·„8²&+k,cæs¥¹|#y¨w’gá 2-(…_ !8ˆ‚Š…ç]T"­Ðªiâ H$~2ñ%X¹:”ÄjBK•ÿóèüò<ÜÖ߇Ð<óïç5µ™MÁÌ÷œÍµ{5÷×A¯j^·¨…½È‹ÿ7œÝ7û+aWÞæIñ¾ˆéÍZíU¦ŽÐ0¢A‘Þcwœr6ÆHüÄ2«¦¿o³Ïæ"ëñst6âEÚÎLtBM™‚€0X”ç•Àc͸¤Z5.÷$ÀS/ðAìuÚÌH„~ ; BãÒ/Àƒ±úθÐ×vÁÂhTˆf0¢À%ÕÄq­MŸ÷Œ@þÙHãÐÜ}ÃÒ¬í:¸§¬‹ÙÑèqþÄeZ%k»©œÁœK3ËžßCòáÜÉ <[à[KZmTnŠÝ—ù³µbYr u‹©UNÌŠÉ– ΞbN,üLä`'1›:„”ݳ[÷IØ;Xô%yùÚ˦x§ù5›óý®%µEE' Q½Ÿ $“œžh”@ÊÙ­02v1ì Z†@!…@_ m—àèE›í•G# 6(³È'w1R¦|| ÐÕ«ÉèpÖvŸHPdRŒˆBÆÄ ¸Óub`Q¤“Ô!»FBo:Öâ,Ï‘d²4õ¯¬œÿGÆKd`HU€•0IÛb«!ÁöIní(LoJ}›ö»ü­ŽMc4I›f?Ûˆ4 M“D ¦[xd¦°<8PÛB¤~UÇY'Ä··_Oó¦ Pb%8Ù¨Rûaç+y˜ëÎR´|“ûµÚK¹æI$hÔm¦èúì:»NDÕ<ç“Pœ¯ñ¶ƒý’)X?D‚¿!Êé³1Di ÅâŒAZpRôî7áÖÉÄév ¿âŸ?”…ôŠ;‘OèÃÐô&ÞWðÿýke ®ø{­mÉH‡¼‚‚驳çkÚq%÷œ”rsö6Ä.ÍäÀhgGf ÁÜ-+¸änuô~L.3Æ÷ËW/ÎàÔ÷²Ëùî^HØN¢£­R?Q…ÏVÄ9.g›ë%¬Û*s)xâç—¹ÌsY‘‡è•Ñ•$.غðÐ%íW¹»“–»>+„#’›þTv‘áЪ}*e‡œc2X°ºú´¨tuØWÉ0A” K„9‡Ki=Ñ^ \‘¤à‹Î‡J˜Üïä¸Î¶T”¥ QùWöŸ&¬èÎå‡&ŽG®…`K…òÍi92Ý^=oµ_·«.þm^ƒµðleñ‡Ô=Ù´— Ì?û@Ò 'º1ŠPëEºø*‘¥úpÓ~^륿%+á+\6Ã.ÒöuäÌúsZµbgÙ_¦Ï†pWOS^8㌷eÝÛh•6cÑôÿoü¹€Äǵm Ô¸·è#u–éró}Îí>¹bÛqmø Ñ¥EhkñÎCåÅ-¶faZ€ÏÞ@}ôQR¿ˆJ½½$Î 0ÞO|ZjBVêÆ·TÛÚ46¬lø9jM !ÍþÕphc,5Œ)!çŽÄ-KY¸¢UC—ßR¹y”5+B’~"#$©«Àâ—m„ÆùÀ£9™ª8ò@Òæ0Í‘Ôi/³Š 뙟:w:.åžK{ÝDÇ¥~ ·õµ/)ÀvÄŒ¾ˆgE 4 9õÚ,˜’Ô‡KK%´¡}YI¶¥x]$ÊãÙ‡â:lŽöð¶0Ê|„¥zÑÏæe3“d¶¯ÆjRdÜàvx%2-†I’ÅñÑ% Èg¹kB^®|.0:;Ë¡ìˆß8KTuŒ!Ö¦Í"TN‡xo0Ý*勵~_£ÝE¤ÊÕ"c¤úð9)‘—¯^åú>û ø<¹NM å9¨îv÷Ý ¹åÊ9/‰n°î< ¢»ÄÅéPTλB ›@Ï–ô¬«¤Tê5Z+…ë‰þ> ÎÍ ¦¿vZx•®æ Ù¼ÍK—ŽŒh2¶÷µöeÒkÕH=CÆÓBÊÅ6yŠaƒ;˜Gúù^\âYc)Åo ¨¼û†Êª«?äÍZüÚ±²ƒ•.öKž”Q€Ú­! ¾g"ô ;[écW†{„ØéçáNÆùŸ#¸.§RŽ+@c\KdЃj4>›Ì ‘7¸ˆwœžÏ`Ê:¾Š¾? <€¾š¶¡ÑÊG³ÄŒ7cµ›sòb©m¶ ¥oÛ´~>@MÃÛé êOäU¢}¶Y̽J² îYTÎ܇ƒVѬT€H÷!]¯§¶†£;{´\ÈN‹"-›©]éJ^¦£>…ZIú¢å2.«}#ïe»ýÊh×VÍOÿªO§õéxeÎjåÝÖßÙÊìOVÞ8^i׿|¹2—wõéF¼»ŸÇ ]Wù'á‘%…vÜç¡VÆ»äþ¾LX5zùk»dL3}IéÈѧê¤TݒÓ'ª•Ð|Uµ%‰Åé/Ùªú¾hS$¡Dg#µïrT"ùÙú´žÿÖq=­n•YEŒ)¯úInLѯt¸‡õ™v¾gó(ȇb5W ­Çù3ô21¬MµªÏw«y½‘ÛäÖ:³ i™¢æ\Ô±4'p%êÓUÉ«MÉì¡åUa“ÑøÛ”žÇò0DËG~†øöCÊÃú+ Ù÷P̬Kñ°·-=$‘éq«êZÏëÉpM¬åýþ‚ÏsÆv/â}w þ‡Y»×µñýY»TT޳€ ÐÂ:ݨÛEâùÂÄñƒï$ÔàP‘ë$›y¸æA¬´Ü‹‚¿sñ0 S·ÐgëÒ)ì1,±v¨‚ÿ.`_¸Þ“ÙúÕ«$JPÌGEDY‚¤¤À—yö^w¹þƒ(¥>Í-,,+Ó‹[Æ¡¾ӓ(Ê?7™îx–:-;Ð!uyäÏ2pÓL£´8œûð!ÑIŸe¹N¼A¹I”Ëv°9ª…aàU0pÃ2}ÚÄHdEÏå½n}HV‚×üs:[]J(•Î:Ð)åÒY Äþ^¬•<¹´A ‰ú½4ïmy®[¤#ùÏë<:Ÿá—X|µRLïV­ô-,SÏWMÙÕùâ[ÄM# мo•6zÓã¸ÎÃûû®á] ›åóló {Bî¦]ªùWººtAñ;!^]¥ŠP’ùüi0®U¢¬ø>éÄŽÛœeÙô-ŸÅ•ʲŽù¡[ýÊüzoø ¯$‘uH÷ñ*u?—ã•¡0lEê%9ÕÊîNëUp—²éÌŠ®!L.·Î ÊÈ£îPŽeqÛ˜wŒ0W(® Ý]ë)tà‡ÕrqÙôÕ›Ýx$*êáΛzNªåB>ÜЗmô9UmŰqc‹„œ¦5¨‚s"²”Éâ̘§ûø‘oõÕŽ‹*Érie…òðžl|–"ÕrUÎÃÆ(HÒÇ… µ’²Á©·À×Ïp#/ñ]¯ø½¦µŽßæ‘M©Ý^AM%©ôæµ ¿Ð…"kÜõy+j ®Ú-€2KôF¼wÛ,½o¤®’` Ê0_)Z¾z|P vxä_Uö ˜‰Çæf ÇùñÇïcÿN|ˆ|V„–ˆMøÀ7­¡Ïû9¾€Ü¹é_»µÔéÆÑw%€»tg£©áJü¸8U5^/ȺM6¹Å|ˆã"ª[7AãU‚òy—àö!+çEj%Ôoê%®§Õ~K…‘w¸.O¹Õ;Ú€‰D3—‚-—¿¦;µŒ¼LP^z±uê¾ Zç!!d›j |DñkÒÁ@ê&xÓN¯l|B»é”O…ðÆÃhDûó`ø6îßÔ[ó¶>üPÚÆ8çÆÈ}Ðíyí†xy`wê=ed†ÿ/¢äzLD Ø/:•A@öƒÎùÐsл\„Wð“(yt<ŸI´é© ï²õaÑü[½L\ÖåsRé"oy‰^óTŸ?{ôí£oý/ X endstream endobj 147 0 obj << /Filter /FlateDecode /Length 964 >> stream xœuUÉnG ½ò}dî Y¬â’£‘\²!–•ä`ä0‘dY°¥‘-;AŸXÕ3]–è0-6—Gò=öû MëïÅí§ëÝû5ë´þ\ÜNÏÏw_ŸM’\Ù¦ó×»ASVK”ó$æÉܦóÛÝ+8›³'·"p˜1•¬„×ó‚ Ý03ÁUücHbæ…URÎ ?D R18„Cu“ΘÈK…»0gתðvÆÄFÕû{¥Z"UF!NòŒ)“b% R72ûãüûèD'O.Y¢“…*¥R§%srÂ<_î^ÁË–]É!ÍKqKêy0~Œ’X¨8Ü4t¬Îpý®·…D¹¡ªNF ‹amÉœ%©+<Ÿ1)V• ‡‡ˆc÷R.â¹ ŠÄ²$·ªðW«"¹ðXð"Þ Á›´góRÙ’Z…1íM›‡Å&nûÍîc?T¨èg·»hZ“ Á¾Í\Ùá²›« ìû£; ö!Õ1ùþnΚ؋ç-ÇCÌÅ8³ôV×’}F%‹Œ Þoq{A³`Á±ÙC_„Z®Á©Ážü _u&©óqmÍ»?fÏe­G\òùúÔßÖéº^VÓ5¨-änZq©‰k°誯‘Ì ì?4"šp¸.Ì5±Ó´%¯Õ{ÈF“«ïZ!-â°ï ë8£Ã]ïÐIjìÈÀÎõÂ× &;B 6AæÎâl¢¤]zèž‹W0edv…«™’x[&r+.0´Ö’0±(ÃÛ“ó¾9#å'ÔW,¡Ø Ò³yaÎI ”¾‰«WªÿJÆö–“a…¨¾öJÌÚ¦ê–Êq¤ÔóýÞr•˜Ìib?§yÉßfã„Äýʬ¼ºÿ3šrËt\EK1nè¡g âí<£Sˆ%ÌÕ “ܘâM‡‡®í#°îdöóK˜©VQø±@D/ ¿öÍÇM—›ý %HÑãZÒ¼°xR—·^°û_mê,õó ¶9_÷oP”ÿL§ËªŸ#Ìqõig”ÆFöáN<Ü_¯Ê5‚׃zŸÞª¢Ãy¾žoº¤ã‹2ðr;û7›‚¿8ÙÃùëÎG¨ó£ñÝùîÅîÅî?#âáöendstream endobj 148 0 obj << /Type /XRef /Length 185 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 149 /ID [<2b5880af05ae610680e9f68bfadbe329>] >> stream xœcb&F~0ù‰ $À8J’Lþgà)9ÃÄÀÀú’ïކ$ù!)ö’R© 0dŸ"…Ü@¤ÈÉøD²]‘  ’©,"%þH© Rº ¬+¬F‹‰Qf ˆ-ö¬æ4ˆäì«ä› 1?¬> DŠÖ€HÕë`q°.iå2M",Â"c@¤ÎB)<DJ>‘2—Án«Qø¶ ì#^qU!I endstream endobj startxref 195615 %%EOF quantreg/inst/FAQ0000644000176200001440000002746014502262070013416 0ustar liggesusers The Quantreg FAQ 1. [Non-uniqueness of Solutions] "The estimation of regression quantiles is a linear programming problem. And the optimal solution may not be unique. However, rq() provides a single solution. My question is what are the additional constraints to get the single solution? Because when we do the research, we can write our own routine in different software like in SAS to estimate quantile regression, does that mean people will get different solutions?" From ?rq.fit.fn: eps: tolerance parameter for convergence. In cases of multiple optimal solutions there may be some discrepancy between solutions produced by method '"fn"' and method '"br"'. This is due to the fact that '"fn"' tends to converge to a point near the centroid of the solution set, while '"br"' stops at a vertex of the set. There is already facility for doing QR in SAS and it is based _very_closely_ on my R package and uses essentially the same algorithms. 2. [Non-uniqueness redux] "And all these solutions is [sic] correct? Or do we need additional constraints to get the same solutions as derived in R?" Yes, they are all correct. Just as any number between the two central order statistics is "a median" when the sample size is even and the order statistics are distinct. The main point here is that the differences between solutions are of order 1/n and the inherent uncertainty about the estimates is of order 1/sqrt(n) so the former variability is essentially irrelevant. 3. [Basic Obervations] "How can we identify the cases (data pairs) that belong to different quantiles in a scatterplot? It seems that they must be identified by the code in the process of analyzing the quantile means, but I've been unable to figure out how to find and extract them." For a given fit: f <- rq(y ~ x +z, tau = .4) h <- which(abs(f$resid) < tol) will recover the indices of the observations that have zero residuals. Of course you need to specify tol which I would recommend to be something like: tol <- .Machine$double.eps^(2/3) If f has p fitted parameters then h should have p elements. If this isn't the case then you might need to experiment with tol a bit. 4. [R^2] "I am currently trying to caculate the coefficient of determination for different quantile regression models. For example, how do you calculate the the sum of the weighted absolute deviations in the models ..." R-squared is evil, that is why there isn't an automated way to compute something similar for quantile regression in the quantreg package. But if you insist use: R1 <- 1 - f1$rho/f0$rho Provided that f0 is nested within f1 and the taus are the same, 0 <= R1 <= 1. If you want to test f1 vs f0 then use anova(f1,f0) For further details see: Koenker R. and Jose A.F. Machado. Goodness of Fit and Related Inference Processes for Quantile Regression J. of Am Stat. Assoc, (1999), 94, 1296-1310. 4a. [R^2 redux] "I am very interested in the coefficient of determination for different quantile regression models. And, I have f1, but don't know what is f0, so that I failed to run R1 in your FAQ 4. Could you please help me solve my question?" f0 could be any nested fit, but usually it would be rq(y ~ 1, ...) a model with only an intercept that returned unconditional quantile estimates. 5. [Singular Designs] "R crashes in some cases when fitting models with rq()." This happened in some earlier versions of the package when the design matrix was singular. This is now checked more carefully, and shouldn't happen in versions 4.17 or later. Eventually, I may try to treat singular designs in a way that is more compatible with lm(). 6. [Confidence Intervals] "Why does summary(rq(...)) sometimes produce a table with upper and lower confidence limits, and sometimes a table with standard errors?" There are several methods for computing standard errors and confidence limits. By default on small problems (n < 1001) summary uses the rank inversion method, which produces (potentially asymmetric) confidence intervals,while for larger problems the default is to estimate the asymptotic covariance matrix and report standard errors of the parameter estimates. 7. [Non-positive fis] "What does the message "Non-positive fis" mean? When method ="nid" is used in summary local density estimates are made at each x_i value, in some cases these estimates can be negative and if so they are set to zero. This is generally harmless, leading to a somewhat conservative (larger) estimate of the standard errors, however if the reported number of non-positive fis is large relative to the sample size then it is an indication of misspecification of the model. 8. [rq vs lm fits] In the Engel example in ?rq both rq fits and the least squares fit are plotted -- what should we expect to see in such a comparison? In the classical linear regression model with iid error we could integrate betahat(tau) over [0,1] and should get something quite similar to the least squares estimate. In the one-sample model this is exact: averaging the order statistics is equivalent to averaging the unordered original observations. In non-iid error situations this is more complicated but generally one sees that least squares coefs look roughly like some sort of average of their corresponding rq coefficients when averaged over tau. 10. [AIC and pseudo likelihoods] In quantreg of R package, rq.object can compute AIC (Akaile's An Information Criterion).but, AIC=-2L/n+2k/n ,where L is log-likelihood, k represents the number of parameters in the model ,n is the number of observation. We know likelihood base on distribution,but quantile regression can not assume specific distribution,this is AIC maybe not compute accurately, or AIC maybe can not calculate.Why do rq.object can compute AIC? This is discussed many places in the literature. Yes, it is not a "real" likelihood, only a pseudo likelihood, but then the Gaussian likelihood is usually not a real likelihood either most of the time.... 11. I would like to know why the equivariance property is so important in the quantile regression model. I have read a lot of article about it; but I don't really get the idea. As a basic philosophical matter it really isn't that important, the nearest star is very far away and we will all die, but in math the idea that functions commute: in the QR case that Q_h(Y) = h(Q_Y) is interesting, and it doesn't hold if you replace Q by E. 12. My recent paper used quantile regression model which is interesting for plant physiologists, the reviewers questioned that my independent (x) and dependent (y) variable should be exchanged as OLS showed. In my research, x=stomatal conductance, y=stomatal density, however, the reviewer suggested to plot as x= stomatal density, y=stomatal conductance. But, the meanings of x and y in quantile regression model should be different with OLS, what are the differences? Could you kindly give me some indications? From a predictive point of view, the question is straightforward: both QR and LS answer the question how would you predict y given information on x, QR by delivering an entire conditional distribution function, LS by producing a mean of that distribution at each x. More difficult is the usual causal question: if we imagine an intervention that changes x and ask: what is the consequence for the distribution of y? If this formulation doesn’t make sense for a particular choice of x,y then one might consider reversing them. 13. "My student has discovered a couple of corner cases that hang inside the Fortran code when trying to find bootstrap CIs on quantile regression fits." This seems to be invariably due to repeated values of the response variable that create degeneracy of the solution to the LP problem. In the dual simplex algorithm (method = "br") this can lead to cycling. There are two work arounds: 1. Use method equal "fn" in rq() since the interior point algorithm isn't bothered by such difficulties (since it only approaches vertices from the inside of the constraint set). 2. Use dither() to perturb the y observations slightly. 14. "I have wrote in R the function qreg to estimate quantiles using the optimizer nlm (see below, please). The results I get are different from those of your package. Please, could you help explain these differences." qreg <- function(y,x,INT,q) { if(INT==TRUE) x<- cbind(1,x) Q <- function(beta) { e <- y-x%*%beta q*sum(e[which(e>=0)]) + (q-1)*sum(e[which(e<0)]) } Beta <- solve(crossprod(x))%*%crossprod(x,y) Reg <- nlm(Q,Beta,hessian=TRUE) Reg } Imagine that you would like to cut an apple into quarters, you have two tools: a knife and a spoon -- you would expect different results, no? At a slightly more technical level, the Hessian that you presume to exist is identically a matrix of zeros, almost everywhere. And no, this is not just a matter of local optima, the problem is convex, so there is a unique global optimum. 15. When using method = "sfn" I sometimes see the warning: 1: In rq.fit.sfn(a, y, tau = tau) : tiny diagonals replaced with Inf when calling blkfct This is generally harmless, but admittedly annoying. I may eventually decide that it is completely harmless and eliminate it, but meanwhile we just have to live with it. Think of it as not nearly as annoying as loud motorcycles in cities. 16. "It seems a lot of applied people like to bin the data (i.e, based on outcome Y) into quantiles and run regressions and claim to get quantile effects. Is there a reference in the quantile regression literature that looks at the consequence of doing this?" Quoting from Koenker and Hallock: QR: An Introduction (Journal of Economic Perspectives, (2001) We have occasionally encountered the faulty notion that something like quantile re- gression could be achieved by segmenting the response variable into subsets according to its unconditional distribution and then doing least squares  tting on these subsets. Clearly, this form of \truncation on the dependent variable" would yield disastrous results in the present example. In general, such strategies are doomed to failure for all the reasons so carefully laid out in Heckman's (1979) work on sample selection. In contrast, segmenting the sample into subsets de ned according to the condi- tioning covariates is always a valid option. Indeed such local  tting underlies all non-parametric quantile regression approaches. In the most extreme cases we have p distinct cells corresponding to di erent settings of the covariate vector, x, and quan- tile regression reduces to simply computing ordinary univariate quantiles for each of these cells. In intermediate cases we may wish to project these cell estimates onto a more parsimonious (linear) model. See e.g. Chamberlain (1994) and Knight, Bassett, and Tam (2000), for examples of this approach. 17. When I try to use predict for a model with n=20 and tau = 0.95 I get an error Is there a practical limitation here to using quantile regression? Or a different way to adjust for small sample sizes? It is difficult to give good rules of thumb. Even the usual textbook — 30 observations are enough to estimate a mean — are pretty much nonsense. But n = 20 to get the 0.95 quantile is hopeless. If pushed, I would say that there should be at least 20 observations PER REGRESSION PARAMETER above and below the the fitted QR hyperplane. So with two parameters this would mean that 0.95 would require 40 observations above, and thus 760 below. So 800 observations in total. quantreg/inst/ChangeLog0000644000176200001440000020406014760371627014646 0ustar liggesusersRecent Revision History (For older revision history diff the code ;-)) 3.04 September 19 2001 1. ci set to F if p==1 to prevent seg fault identified by Marcel Wolbers. 3.05 December 21 2001 1. "iid" case in summary.rq fixed to update call to l1fit 2. documentation and consistency checking updates to conform with R1.4.0 3.06 March 5 2002 1. Added LEGAL directory to clarify the licensing arrangement with Splus/ Insightful Corp. 3.07 March 2002 1. Expanded table.rq to use method="fn", and adapted plot.table.rq to use the polygon strategy of recent papers for the confidence band. 2. Adapted the old version of latex.table and latex.table.rq to use output of table.rq to make latex tables from the output array. This eventually could be updated to fit better into the expected R version of Frank Harrell's Hmisc. (The function latex.table is a slightly hacked version of Frank's old latex.table function for Splus.) 3. Added argument transpose to allow the tables to be flipped so that row dimension is quantiles rather than coefs. 4. Added error checking for tau+/-h outside (0,1) in summary.rq 5. Revised rq.fit.fn and rqfn.[rf] to simplify the calling sequence basically to move the initialization into the R function. (This is in preparation for a new version that will incorporate inequality constraints.) 6. Also relaxed upper bound constraints so that they could be specified in rq.fit.fn rather than assumed to take the value one. 7. Added a (long awaited) anova function for rq to do F test like inference for both nested models for a single quantile and tests of equality of slope coefficients across identical models estimated at several quantiles. These new functions are (for the moment) in the R directory as anova.R. 3.08 May 22 2002 1. Fixed a bug in anova.rqlist ndf = (p-1)*(m-1) not p*(m-1). 3.09 May 27 2002 1. Added new functions rq.fit.fnb and rq.fit.fnc and associated fortran and ratfor code. The former is a slightly revised version of rq.fit.fn the interior point algorithm for computing rq; it should have exactly the same functionality as the prior version, but _might_ work somewhat more efficiently on some problems. The new function rq.fit.fnc is an interior point method for fitting rq problems subject to inequality constraints on the coefficients. The algorithm is a modified version of the interior point method used for unconstrained problems and should be described in detail (eventually) in a paper with Pin Ng. 3.10 July 4 2002 1. Revised slightly the rq.fit.fnb function and the related ratfor/fortran code to enable it to start at a (dual) point that doesn't satisfy the equality constraints. And attempted to fix the many places that used T/F rather than TRUE/FALSE in preparation for R-1.6.0 (at the suggestion of Kurt Hornik.) 3.11 July 10 2002 1. Fixed a few more T/F's at Kurt's behest, and changed some _ to <- in the examples. And added PACKAGE = "quantreg") to the .Fortran calls. 3.12 Nov 1, 2002. 1. fixed two generic inconsistencies Kurt found in table.R. 3.13 December 18 2002 1. Fixed bug in summary.rq when se=iid found by Xuming. 3.14 December 30 2002 1. Added a graphics example to rq.Rd using the Engel data and added the data set 3.15 January 22 2003 1. Fixed a typo in the akj.Rd file and added a reference. 3.16 February 6 2003 1. Fixed a generic method mismatch in the latex family prompted by Kurt's notice that R CMD check quantreg produced a warning in R 1.7.0. Now seems to check cleanly in the devel version of 1.7.0 installed today. 3.17 February 17 2003 1. Removed the last of the _ assignments in the example files. 3.18 March 4 2003 1. Fixed a documentation bug in rq.fit.br the entry for alpha was changed from: alpha: the nominal coverage probability for the confidence intervals to alpha: the nominal noncoverage probability for the confidence intervals 3.19 March 25 2003 1. Added src/Makevars file in accordance with Brian's email request, see R email folder. 3.20 April 27 2003 1. Found a bug in the fn family of fortran/ratfor functions. When the initial least squares start produced a residual which was a hard zero, then the initial value of Q had a NaN value and this caused the function to return with all NaN coef values. This was altered to make z and w = eps when this happens. 2. When interp=FALSE in rq.fit.br the tcrit flag was broken. 3. added names to coef return when CI= FALSE in rq.fit.br 3.30 August 13 2003 1. added several bootstrapping methods to summary.rq including the MCMB approach of He and Hu based on code by Xuming He and Maria Kocherginsky. 2. added n choose m subsampling for the xy pair version of the bootstrap. 3.31 August 25 2003 1. fixed a bug in anova.rqlist that messed up the checking for an intercept found by Juan de la Garza. 3.33 January 09 2004 1. Fixed a bug in ranks() found by Brian Cade involving the tau score function. 3.35 March 09 2004 1. Changed the default behavior of rq to produce only the point estimates and residuals when 0 < tau < 1, instead of automatically producing the rank inversion confidence interval table. The latter is now available from summary.rq by specifying se="rank". (This is actually the default option in summary.rq when the sample size is less than 1001. 2. Altered anova.rq slightly to accomodate its use for two sample rank tests -- this task was simplified somewhat by (1.). 3.36 June 9, 2004 1. Scoping problem in summary.rq made data invisible when formula variables were specified using data=blot in rq(). This entailed a somewhat extensive updating of rq and summary.rq in accordance with the "Notes on model-fitting" white paper on the R developer page. Thanks for that! to the anon author. Now rather than passing x,y a model object is passed indicating how the model should be reconstructed. As a byproduct, the lowest level fitting routines no longer return x,y, thus saving some memory. 2. added a error check to boot.rq to prevent users from calling with tau outside (0,1). Calls with tau = 1 produced a rather nasty memory overwrite as experienced by Alexis Diamond, debugging required some interesting adventures with gc(). 3. Major revision of the code to do inference on the rq process based on the Khmaladze approach. See khmaladze.test for further details. In the process discovered a minor bug the resulted in problem with the Joint test statistic. (Two missing commas!) 3.50 July 17, 2004 1. The function table.rq was made defunct, replaced by the more direct ability to specify multiple taus in rq(). When a vector of taus is specified, rq() returns an object of class rqs, and summary.rqs produces output for each tau. There are plot and latex methods for objects of class summary.rqs. 2. The Solaris f95 compiler choked on the & in column 1 of akj.f, so this has been moved to col 6. 3.60 September 20, 2004 1. The choice of bandwidth was corrected for the "ker" method in summary.rq() to account for the scale of the residual vector. Thanks to Victor Chernozhukov for pointing this out! 2. On a 64bit gentoo linux system the statement data one/1.d0/ set one = equal to zero...so I have systematically changed all data statements to parameter statements. This seems to be a general problem that was created by gcc 3.4. On the updating note that several of the .f files were preprocessed by a new ratfor processor. See the README file in the src/ratfor directory for further details. This bug in g77 was reported to the gnu folks and a patch was forthcoming with about 48 hours. If only American foreign policy could respond so efficiently to their snafus. 3.70 October 1, 2004 1. The nprq and nlrq packages for nonparametric and nonlinear QR were folded into quantreg. The revision file for nlrq is reproduced below: This is a package for estimating nonlinear in parameters quantile regression models. The algorithm is originally based on an Splus implementation of Koenker and Park (1996, J. Econometrics). The interface to model specification a la nls() was very kindly provided by Philippe Grosjean. It was originally submitted to CRAN in May, 2001. Version 0.1-4 (May, 2004) ` o Added method argument to nlrq() to be passed to optim() at the suggestion of James Rogers (Pfizer) See the documentation files for rqss() and friends for further details on the nonparametric functionality. There is a strong dependence of the rqss fitting functions on the SparseM package, and some use of tripack, and akima packages as well. Finally, the demo for the triogram fitting included in the demo directory wants the rgl package. 2. Brian Cade sent an example for forensic exam, which revealed that the call to model.weights failed to work properly in summary.rq This is now fixed using model.weights(object$model). 3.71 November 18, 2004 1. The translation of boot.r and penalty.r were updated using the SEM ratfor compiler so that their continuation characters appeared in col6 not col1 -- to comply with our local switch to Sun compilers on ysidro and with the other code in the package. (Isn't fortran wonderful?) Now that we are back to gcc this isn't needed here, but might save some one else some consternation. 3.72 November 27, 2004 1. Reference to nls package was removed (thanks Kurt) since it has now been merged into stats. Also upped Depends to R >= 1.9.0. 3.73 December 1, 2004 1. Fixed a small bug in summary.rqs which had appended olscoefs for no apparent reason, and this caused a printing error. 2. Fixed large bug in anova.rqlist in which chi-squared statistic was divided by numerator degrees of freedom (ndf) when this had already been done in rq.test.rank, and modified the way that the score function specification was passed. 3. Also fixed a printing glitch in the anova.rq procedure by adding an explicit print method for such objects. 3.74 February 24, 2005 1. Fixed bug reported by Steve Portnoy in summary.rq. The se="iid" option was broken after the switch from a matrix valued coef object to a vector one. 3.75 March 11, 2005 1. Fixed bug reported by Jose Machado in predict.qss2. Further work is needed to integrate these methods for qss2 and qss1 objects into a upper level predict.rqss function, but this will have to wait. 3.76 March 17, 2005 1. Jan deLeeuw reported that the warnings for rqbr.f had turned into errors in g77 4.0 -- some hand editing of the ratfor translation fixed this, but it is depressing to think that there isn't now an automatic way to get from the ratfor. See the README file in the ratfor directory for gory details. 3.77 April 28, 2005 1. Cleaned up a few unescaped % signs in the .Rd files at the request of Kurt. 3.78 May 2, 2005 1. Finally added back in the vignette just in time for the first copies of QR from CUP. 3.79 May 2, 2005 1. Fixed 3 problems identified by Gabor Grothendieck having to do with rq interaction with fitted() and residuals() and na.action. 3.80 May 11, 2005 1. Added predict method for rq and a subset argument. 3.81 May 14, 2005 1. Added a flag to enable anova.rq to allow computation of separate tests on each of the slope parameters for equality across quantiles. 2. Fixed reference to Engel (1857) in the vignette. 3.82 May 15, 2005 1. Added a formula.rq function that seems to be necessary to make formula updating work. 3.82 May 20, 2005 1. Modified initial bandwidth in akj() to insure default starting value, this had produced a rather mysterious bug that was only apparent on a few machines due to (essentially) trying to check whether double(0) <= 0. 2. Modified predict.qss1 to fix a problem with non-unique x observations. This needs further work, ideally a predict.rqss function that would dispatch pieces of the prediction problem to the right lower level prediction function. 3.83 Nov 23 2005 1. Added a "cen" method to rq that fits the Powell censored regression model using the Fitzenberger algorithm. This is very beta for the moment and needs to have some inference methods written, before it is terribly useful. A related project will add Portnoy's CRQ method as well. 2. Fixed a bug in the predict.qss1 function that made it invisible. 3. Fixed several bugs in the rank testing with anova.rqlist in response to a report from Brian Cade. In particular, to enable rank tests with weighted QR. 3.84 Nov 28, 2005 1. One (last?) bug fix for rq.test.rank which for weighted data introduced a faulty intercept. Again, thanks to Brian Cade for the report. 2. Changed tau checking to not allow tau either 0 or 1 in an effort to discourage these values, which seems to have dire consequences on some machines, cf email of Andrew Clausen regarding segfault on Debian. 3. Added summary.fcrq and summary.fcrqs to provide some basic inference on the Powell censored regression estimator. 3.85 Feb 11, 2006 1. Revised predict method for rqss objects motivated by an inquiry by Denis Chabot. 2. Added a note to explain that the default se method in summary.rq was sample size dependent. 3.86 March 16, 2006 1. Revised rq to allow taus to be 0 or 1 when there multiple taus. 3.89 March 31, 2006 1. Changed summary.rq so that call to rq.fit.fn is to rq.fit.fnb based on an example provided by Nantachai Kantanantha. The former called produced NaN's for the coef vector, while the latter agreed with rq.fit.br. This deserves some more attention at a later point. 2. Added function kuantile which implements the O(n) algorithm of Floyd and Rivest for computing univariate quantiles. 3.90 May 17 2006 1. Major revision of the rqProcess and KhmaladzeTest functions. 2006-08-14 Martin Maechler * tests/rq.R (stopifnot): regression tests added. * man/plot.Rd: improve; notably plot.qss2() arguments * man/predict.rqss.Rd: no rm(.) in example; improve 2006-08-12 Martin Maechler * R/quantreg.R (akj): 'iker2' is never used; add a check for length(p) == length(x) [vignette did not fulfill this and gave spuriously wrong results because of initialize memory in .Fortran("arj" ...) ! * inst/doc/rq.Rnw: fix the akj() weights * man/akj.Rd: no 'iker2'; cleanup 2006-08-11 Martin Maechler * tests/run-demos.R: one simple test suite .. * demo/cobar.R: make sure this also works when 'rgl' does not * demo/Frank.R: clean up a bit * demo/engel1.R: nicer; + legend * demo/engel2.R: is incomplete => if(FALSE) { .. } for the moment FIXME: use vignette ! * man/engel.Rd: added somewhat interesting example. * src/chlfct.c (chlfct): eliminate goto; correct timing also when error; more comments (timewd, etc) * R/sfn.R (rq.fit.sfn, rq.fit.sfnc): only keep what's needed from .Fortran(). Save one (sparse) matrix multiplication 2006-08-09 Martin Maechler * src/srqfn.c: new from src/srqfn.f ... * src/srqfnc.c: new from src/srqfnc.f ... 2006-08-05 Martin Maechler * src/cholesky.c: new from src/cholesky.f which must be renamed 3.91 Sept 11, 2006 1. Removed Makevars from src directory which seemed to be causing some difficulties with multiple definitions of symbols for gfortran. 4.00 Sept 11, 2006 1. Implements some suggested fixes by Martin Maechler. See detailed entries of Martin above. 4.02 Oct 21, 2006 1. Fixed problem with olscoef plotting in plot.summary.rqs. 2. Changed variable names in the engel data and examples to avoid long-standing problems of masking x,y names. Thanks to Marc Schwartz for pointing this out. 4.03 Nov 18, 2006 1. Fixed memory problem with rq.fit.fnc when n2 > n1, the vector u was being used as a scratch array but had insufficient space. 2. Fixed rqProcess bug with "location-scale" option noted by Alvaro Novo. 4.04 Dec 19, 2006 1. Removed [.terms from rqss.R at the advice of BDR. 2. Added a summary.nlrq function to bootstrap se's. This is highly experimental at this stage. 4.04 Jan 15, 2007 1. Modified penalty.r so that it checks to ensure that all triogram quadralaterals have the same orientation, this was a longstanding bug that prevented that convexity and concavity constraints from properly working. Still needs further checking.... 2. Some mostly cosmetic changes were made in rq1.f in the course of debugging an apparent problem in boot.rq.xy which eventually turned out to be caused by a rank deficient X matrix. Some attempt was made to improve the reporting of this, but I'm afraid there are some inherent problems in the BR code that makes it difficult to recognize this sort of problem. 3. Added a residual vector to the object returned from rqss.fit to conform with general R practice and also because it was needed to do some exploration of the number of exactly fit points in an example of Xuming He. 4. Added a demo called cpoint.R that illustrates how rqss can be used for a simple broken stick piecewise linear median regression problem. 4.06 Feb 1, 2007 1. Fixed legend ordering problem in rq.fit.fcen.Rd. 2. Fixed a call to as.matrix.csr(diag(n)) in rqss to avoid creating a dense matrix. 3. Added summary.rqss logLik.rqss and AIC.rqss functions 4. Fixed etime bug in Cholesky.c according to a patch kindly provided by Simon Urbanek. 4.07 April 17, 2007 1. Added two new methods for fitting: rq.fit.lasso and rq.fit.scad. 2. Added ... to a call to plot from plot.summary.rqs suggested by Tyler Smith. 3. Added the Peirce dataset and my attempt to reproduce the Wilson and Hilferty analysis of it. 4.08 July 1, 2007 1. Modified predict.rqs and added predict.rq.process to produce stepfun objects. 2. Added a function "rearrange" to do rearrangement of stepfun objects a la Chernozhukov, Fernandez-Val and Galichon. 4.09 August 7, 2007 1. Modified plot.summary.rqs according to a proposal by Achim Zeileis to improve default mfrow choice and tone down the colors to grey scale for better plotting. Also added a plot.rqs function 2. Changed predict.rqs and predict.rq.process so that the stepfun version is an option and the default is still returning a matrix. 4.10 September 12, 2007 1. Modified rearrange according to suggestions by Ivan Fernandez-Val and Victor Chernozhukov to acommodate right and left continuous stepfuns. 2. Cleaned up some Rd files that improperly documented methods. 4.11 Jan 15, 2008 1. Fixed summary.nlrq problem with coef/coefficient duplication 2. Fixed rqss problem with models without any qss terms Thanks to Hiroyuki Kawakatsu for pointing this out. 3. Fixed summary.nlrq to pass ... to boot.rq and updated man file 4. Fixed typo in demo/hinged.R pointed out by Brian Ripley 4.16 Jan 15 2008 1. Revised the formula handling for the Fitzenberger/Powell estimator and replaced the old rq1 fortran routine with an even more stripped down version from the crq package. (This seems to have eliminated a memory leak problem.) This is now called via crq() not rq(). 2. Added the Peng-Huang estimator as a option to crq(). This is preliminary step toward also folding in the crq package. 3. Fixed problem with crq FP method which required a new (bastardized) version of Surv called FSurv to accommodate fixed censoring times. 4. Incorporated crq package into quantreg and rationalized the interface to all crq functionality. Insert of revision history of crq: Version 0.3 Oct 2007 1. Fixed a bug in the boot.crq which led to double weighting in the bootstrap. Version 0.4 Nov 2007 1. Modified summary.crq (at the suggestion of S. Portnoy) to: a.) make .95 coverage the default rather than .90 b.) center intervals at betahat(tau) rather than median of bootstraps 5. Cleaned up the boot.whatever code to call rq1 in a consistent way as a prelude to investigating other bs methosd for crq. 6. Replaced Fitzenberger's qrcens fortran subroutine with a new version that was written from scratch along the lines of the pure R implementation of Barrodale and Roberts. 7. Reworked the naming conventions for the crq methods. Note that FSurv is now Curv. 8. Added an option to the Powell method to compute the full global optimum by pivoting through all the possible h's. This entailed a new function combos() that produces an ordered version of combn() output. 4.17 Feb 22 2008 1. boot.r had a wayward comma, 2. added start options for powell method. 3. Thanks to Robert McGehee for a report that g77 on his fedora system didn't like the ordering of the integer declarations in my fortran. Integers used as variable dimensions should be declared integer BEFORE they are used as dimensions in other arrays. (Picky, picky. Sometimes I wonder whether this is a conspiracy by the C-conspiracy to stamp out fortran altogether.) 4.18 Feb 23 2008 1. Revised the rho, logLik and AIC functionality of rq(), so it is easier to extract these values. 2. Revised predict.rqss and friends to fix a problem with variable names as suggested by Kyle Jennings. Further work is needed: print methods for rqss objects would be nice. 3. Changes to predict.rqs as suggested by Achim Zeileis. 4.19 Mar 31 2008 1. Added extractAIC method for rq objects. 2. Added singularity check for rq.fit.br since Gabor G pointed out that the checking otherwise isn't really reliable and when it fails, R may crash. (Still open question: should I provide some automagic aliasing for such situations?) 4.20 July 17, 2008 1. Added a reference for rq.fit.scad. 2. Added crq.pdf as a pseudo-vignette, pseudo because it isn't sweaved. 3 Fixed a bug in rq.fit.lasso for tau != .5. And for rq.fit.scad. 4. Fixed bug in plot.summary.rqs and plot.rqs when OLS=FALSE. Thanks to Jim Kossin UW-Madison for reporting this. 5. Modified both rq.fit.lasso and rq.fit.scad to allow a vector of lambdas to be passed thereby allowing users to fine tune the style of l1 shrinkage. In particular, to exempt some covariate effects from shrinkage by setting some elements of lambda = 0. In prior versions only the intercept was exempt and all slopes were shrunken equally. 6. Removed the function rq.fit.fn and made all invocations of method "fn" fitting call rqfnb version of the fortran algorithm. This was precepitated by finding that the earlier version of this alg had trouble with problems in which there were observations (x,y) = (0,0). Such observations shouldn't affect the solution, obviously, but on yzzy (my ppc mac desktop) they weren't so innocuous. This eventually was attributed to the fact that the initial setting of the dual variables was perhaps not feasible. The "fnb" version of the algorithm relaxed this requirement and seems to be generally more robust. 7. Modified the class structure for lassorq(s) scadrq(s), etc. objects so that they inherit from rq, rqs objects and therefore can use AIC evaluation for those methods. Note that there is a edfThresh option for AIC to determine how to evaluate the effective degrees of freedom when using the lasso and scad penalty methods. 4.22 Spetember 17 2008 1. Fixed bug in summary.crq which for the Bilias, Chen Ying bootstrap of the Powell estimator produced the wrong sample selection. Thanks to Ajay Shah for pointing out the problem. 2. Fixed bug in rq.test.rank which computed the denominator degrees of freedom incorrectly. (Thanks to Xuming He for pointing this out.) 3. Added a weighted bootstrap option to boot.rq a la Bose and Chatterjee using unit exponential weights. (This is a prelude to implementing another option for anova.rq using the approach of Chen, Ying, Zhang and Zhao (Biometrika, 2008). 4. Made a distinct version of rq1.f called rq0.f for use in the bootstrapping routines. So now rq1.f is used exclusively by crq, while rq0.f is used exclusively by boot.rq.: 5. Implemented the test proposed by Chen, Ying, Zhang and Zhao (2008) based on drop in the value of the objective function. (This uses the same resampling scheme as the Bose and Chatterjee GBS to compute a reference distn for the test the statistic. 4.23 October 13 2008 1. added the line: fstcol = 1; in cholesky.c which seemed to have been lost in MM's conversion to C. Thanks to to Kurt for pointing this out. (rather scary -- what?) 2. A major extension of the function predict.rq was made to provide confidence intervals for the predictions. This is now possible using a variety of methods, including percentile bootstrap and Portnoy and Zhou's "direct method". These methods can be used to construct prediction intervals as well. A more systematic study to compare the efficacy of these methods would be useful. A demo file has also been added to illustrate the useage of these predict methods: try demo(predemo). Thanks to Ivan Mizera for several contributions to this extension. 4.24 October 20 2008 1. Added an argument to nlrq.control called InitialStepSize that allows the user to control the starting value used by optim to compute a step size given a Meketon step. For some work on the AR(1) Clayton copula model, it seems that the only prudent value is 0. Default value remains 1. 2. Changed rq.fit.lasso to fix a bug when p=2, as suggested by Gal Goldshtein, and in rq.fit.scad. 3. Fixed a bug in predict.rq that involved factors. Fix required adding an xlevels object to the fitted rq object as in lm. Thanks to Sandy Weisberg for pointing out the bug. 4.25 January 6, 2009 1. Fixed buglet in latex.table diagnosed by Gert van Valkenhoef. 2. Fixed several .Rd files formatting identified by the new Rdversion 2 parser. 4.26 February 2, 2009 1. fixed rq.fit.pfn buglet for cases in which m > n. 2. Fixed Qhat at 0 and 1 in the sol array as suggested by Steve Portnoy. 3. Fixed logLik.rqs to have the right df attribute when pen = 0. Thanks to Brian Cade for pointing out this omission. 4. Fixed some issues with plot.rqss: added an "add" option so that one can either initiate a new plot, or add to an old plot, added a par(ask =TRUE) when there are multiple qss terms. Added title and better axis labels using names of the qss variables. 4.28 April 12, 2009 1. Fixed (I hope) an environmental issue in rqss: when data was specified in rqss, the eval of the qss formulas failed to find the lambda values. This seems to be resolved by defining pf <- parent.frame(), and then adding enclos = pf to the eval call. But at the suggestion of Duncan Murdoch and Peter Dalgaard I'm using instead pf <- enviroment(formula). Thanks to both for their help with this. 2. Added Boscovich data to the data directory with an example in the documentation file (Bosco.Rd). 4.30 May 10, 2009 1. Motivated by some trouble with rqss, I've reverted to the .f version of cholesky.c originally used before MM provided the .c version. This has somewhat reduced the frequency of occurance of the dreaded ierr=17. 2. rq.test.ranks and friends have been modified to allow trimmed Wilcoxon score functions. 3. In .First.Lib cat was replaced by packageStartMessage() at the suggestion of BDR. 4.34 June 3 2009 1. Added option in rqss to use lasso penalization for the linear covariate effects. See also the file rqsslasso.R in the demo directory. 2. Deleted the component tausplit from the output of crq.fit.por which seemed to do nothing useful, and had a potentially dangerous sideeffect. 3. Added coef names for rqss objects 4. Fixed rqss so that when no qss terms appear the fitting still by rq.fit.sfn and weighting can be handled. 4.35 June 27 2009 1. Some fixups of rqss to handle models without any qss terms. 2. Added a function dither() to facilitate dithering. 3. Portnoy's bug fix to crq.fit.por to handle cases without censoring. 4. Minor changes to plot.rqss to handle ask parameter. 4.36 July 10 2009 1. Fixed bug in rq() that prevented contrasts from being properly propagated forward to summary.rqs when there were multiple taus. Thanks (yet again!) to Brian Cade for the bug report. 2. Added two new functions in tools.R FAQ and ChangeLog to facilitate looking at those two files for packages that have such files in the package inst directory. 3. A very primative print method for rqss objects was added, summary.rqss needs some adaptation to provide better info for lasso fitting, etc and then a better print method could be written. 4.37 July 24 2009 1. Fixed computation of residual and fitted.value components in rq.wfit, thanks to Václav Varva#ovský for point this out. 2. At the suggestion of Steve Portnoy the default grid spacing in crq.fit.por was modified to reduce the number of grid points. 4.38 August 3 2009 1. Removed a comma in an .Rd file, at the prodding of Kurt. 2. Fixed a bug in summary.rqss which led to a miscalculation of the edf in cases when there was a lasso effect. This involved passed the number of rows of the lasso constraint matrix forward as part of the fit object. 4.42 August 24, 2009 1. Added a demo for the Melbourne temperature data. 2. Made some extensive changes in plot.rqss and summary.rqss to implement confidence bands and summary coef tables for rqss. 3. Added a faux vignette about rqss fitting and a function to read such objects. 4. Minor mod of coef.crq to deal with a zero index problem identified by Portnoy. 5. An experimental option to add uniform confidence bands for 1d rqss components based on Hotelling tubes has been added. Further work is needed to evaluate the performance of these bands, which will be eventually added to the rqss vignette. 6. Fixed yet another missing drop = FALSE in summary.crq. 7. Added an iid argument to rq.test.rank, and the option (when iid = FALSE) to do the nid version of the rank test, only when the score function is the special tau specific one. (I don't think that nid makes much sense otherwise.) 8. rq.fit.br modified so that it optionally returns dual vector, and rq.test.rank modified to use this vector when rank test uses tau-score function. This avoids computing the whole rq process in such cases. 9. Added a reference to the Peirce.Rd file. 4.43 October 17 2009 1. Fix bug in predict.rq so rdf were found, thanks to Richard Berk for report. 2. Added set.seed(1989) for Frank demo, after Kurt reported that it choked on a random realization. 4.44 October 17 2009 1. latex.table was producing two captions... why didn't I see this earlier? 2. pwy bootstrap method was badly centered for prediction intervals, this was eventually traced to a mistaken inequality in boot.rq. Thanks to Richard Berk (Wharton) for pointing out the original anomaly. 4.45 January 12 2010 1. Added 3 score functions to "ranks" for the work on the Jana Festschrift paper. 2. Added shading option for plot.rqss confidence bands. Color of these bands is hard coded to grey scale and this probably should be fixed. 3. Modified plot.rqss to (optionally) plot and return both pointwise and uniform bands. 4. Added titles option for plot.rqss bands. 5. In plot.rqss the eigenvalue decomposition once in a while produced negative eigenvalues which then caused havoc. I replaced E$values with pmin(0,E$values). 4.46 March 15 2010 1. Added select argument to plot.rqss to plot subset of qss objects. 2. Commented out a line in latex.table at the suggestion of David Epstein, Warwick. 4.47 April 21 2010 1. Updated mcmb.c to fix a problem with the 64bit version, thanks to Garth Tarr for pointing this out. 2. Updated the references for rearrange manpage and fixed an ambiguity in the summary.rq manpage. 3. Fixed a bug in predict.rqss having to do with name wrangling: when qss terms had a variable name specified for lambda, this got carried along for the ride and caused problems with name matching for newdata. Fix entailed adapting the mcgv interpret.gam to do something similar for rqss. Thanks to Ivan Mizera for pointing out the original problem. 4.48 May 21 2010 1. Added error message to alert users that summary.rq doesn't know how to deal with lasso'd fitting. Thanks to Richard Berk (U. Penn) for pointed this out. 2. Fixed summary.rqss problem that made models without qss terms choke. 3. Changed predict.rqss so that confidence intervals for the prediction can be returned. 4. Modified the fix in 4.47.3 to avoid using interpret.rqss. This avoids calling qss twice for each fit, and returns a fake.formula directly from rqss that can then be used by predict.rqss. Involved some semi-fancy footwork to deal with the formula wrangling, but seems cleaner than the prior approach (which had the unfortunate additional flaw that it didn't work as intended). 5. Fixed a bug in predict.qss1 by adding the argument include.lowest = TRUE in the call to cut. This (seems to) allow newdata values equal to the minimum of those used in the fitting. Prior version produced NAs in such circumstances and generated a god-awful error message when new() was called to construct the design matrix for the predicted observations. Thanks again to Richard Berk for the example that led to this fix. 4.50 May 26 2010 1. Added fitted() and resid() methods for rqss objects. 2. Fixed bug in powell.f -- failure to declare ddot double precision which (curiously) caused example(crq) to produce something insane in 64bit R, even though in 32bit R it was ok. 3. Updated some references in rq.fit.sfn.Rd as suggested by Ott Toomet. 4.51 Sept 25 2010 1. Fixed the vignette fiasco thanks to help from Bob Obenchain. See inst/doc for the dummy Rnw files to enable one to make non-Sweave vignettes. 2. Fixed bug in predict.rq.process pointed out by Stephen Wegland (Mayo). 4.52 Sept 28 2010 1. Revert to my old Makefile processing of rq.tex, after Kurt reported infinite loop in the texi2pdf step in Vienna. 4.53 Sept 28 2010 1. Changed run-tests.R in tests directory to conform to a suggestion of BDR 4.54 1. Added sentence to summary.rq.Rd to make it easier to find how to change coverage probability for rank based confidence intervals. Thanks to Jochem Kail for this suggestion. 2. Modified definition of S in summary.crq to fix a problem with bootstrap inference. Thanks to Xianghua Luo for this suggestion. 3. Fixed vignette call to plot.summary.rqs... thanks to Jan Henckens. 4. Fixed call to latex.table to pass optional ... args. Thanks to Jan Henckens, again. 5. Fixed rqss problem to pass optional space allocation arguments. Thanks to Jungmo Yoon for noticing this problem. 4.55 1. Fixed bug in rq.wfit to allow fitted values to be computed when tau = -1. Thanks to Brian Cade for this report. 2. Fixed bug in rqss that prevented models without qss terms to be estimated. 4.56 1. Cleanup and compression of vignettes for Kurt. 4.57 1. Slight change in summary.rq to clarify default behavior 2. Compactification of rqss0.pdf 4.58 1. bug fix in summary.crq for cases with only one tau. 4.59 1. bug fix in predict.rqss for cases without any qss terms. 4.60 1. bug fix in rqss lasso rhs. Thanks to Stefan Bache for reporting this. This also affects rq.fit.panel as posted on my webpages, which as been modified accordingly. 4.61 1. Moved non-R data files to extdata directory and fixed some problems with the vignettes, as requested by Kurt. 4.64 1. Added an option to predict.rqs and predict.rq.process to allow one to predict conditional dfs rather than just conditional qfs. 4.65 1. rqss fitting now passes a list called control that contains various parameter for rq.fit.sfn(c) functions. 4.66 1. rqss now allows partially linear part of X to be made sparsely thanks to maodel.Matrix from the Matrix package. 2. Typo introduced by the 4.65 change that caused cobs to seg.fault corrected. 4.68 1. Added demo for the Mammal plot. 2. Added warning for specifying a vector of taus in rqss indicating that only the first element will be used. (Thanks to Hadley Wickham for pointing out that this used to generate a rather mysterious error message.) 4.69 1. Added an experimental new function dynrq() modeled after dynlm() by Achim Zeileis, which is intended to make formula specification for dynamic models involving time series data simpler and more natural. 4.70 1. Added NAMESPACE file kindly provided by BDR. Now that there is a namespace it is somewhat more difficult to debug using old fashioned work habits. A trick suggested by Martin Maechler is the following: example(source) # needed to define function sourceDir sourceDir("/quantreg/R") This has the effect of putting all of the R functions in the global workspace where they can be edited and changed at will. 4.71 1. Kurt's new gfortran found an error in the crq.f code: det in the call to dgemi wasn't dimensioned, but it was supposed to be a 2-vector. Now fixed. 2. Added a new wild bootstrap option to boot.rq based on Xuming's forthcoming Biometrika paper. For the moment only the two point weight distribution is implemented, but stay tuned for a smoother variant. 4.72 1. Added a demo to illustrate automatic lambda selection for univariate rqss fitting. This is based on a test problem in a recent paper by Oh and Nychka. 2. Changed the default bootstrap method in boot.crq from xy-pair to Bose, at the urging of Steve Portnoy. 4.73 1. Changed the default score function in anova.rqlist to score = "tau" as suggested by a question from Mo Dang-Arnoux (Grenoble). 4.74 1. Altered taus in rq() so that any tau == 0 or tau == 1 are replaced by values strictly in (0,1). As noted by Christophe Rolphe under some exotic circumstances this produced crashes from rq.fit.br. 2. Clarified the documentation for summary.rq to indicated that when se == "boot" you can't get separate Hinv and J components only the full sandwich cov component. 3. Fixed the license designation to explicitly reflect the ambiguity of the status of the cholesky.f code. 4.75 1. Fixed the documentation for qss where convexity was imposed by "V" not "U". 4.77 1. Removed the LICENSE file that had described some uncertainties with respect to the license status of the code in src/cholesky.f. These uncertainties have now been resolved by the original authors, Esmond Ng and Barry Peyton, declaring their code to be open source, and thus the quantreg package can now be considered fully GPL. 2. Commented out some vestigial write and printf calls in mcmb.c and cholesky.f. 4.78 1. Fixed a bug in summary.crq which failed to check whether censoring in the Powell method was "right" or "left" before calling boot.rq. 4.79 1. Added logLik and AIC functions for the nlrq class. 4.80 1. added optional se argument to anova.rqlist so one can specify "ker" standard errors. 4.81 1. modified crq to allow left censoring for both Portnoy and Peng-Huang methods. 2. added tsp to the object returned by crq.fit.por to facilitate conputing the weights used by the Portnoy method. Eventually, there should be some further documentation of this. 4.83 1. modified rq1.f to fix a dimension problem for the workspace, and added a new argument to control the maximum number of simplex iterations. This was needed to fix problems encountering severe degeneracy, which induced the possibility of an (essentially?) infinite loop. A fixed 100000 limit is currently implemented, with a warning when exceeded that users might want to consider dithering the response variable. 2. added a few lines in summary.crq and print.summary.crq to provide the number of NA replications in the bootstrap simulation for each of the requested taus. 3. Modified the documentation files to mention the above changes and also to mention that the grid for the Portnoy method is equally spaced. 4.84 1. Removed wayward files in ratfor directory 2. replaced call to dqrls in rq.fit.br by call to R qr function. 4.85 1. Changed example for uis data in crq.Rd to Peng from Portnoy. 4.86 1. Changed crq.f so that it stopped the tau iteration whenever IFT = 9 "simplex iteration limit exceeded" occurs. 4.90 1. Reverted to earlier code for rq1.f and crq.f pending resolution of strange disparity between results for R CMD check for osx and windoz. in versions 4.85-8 demo(KMvCRQ) produced errors on windows that were irreproducible on osx. 4.91 1. Tried to clarify documentation for summary.rqs concerning changes in the level of the confidence intervals when the rank method is being used. 2. Increased the default number of iterations in rq.fit.fnc. 4.91 1. Added a drop = FALSE in nas definition of summary.crq to preserve the matrix structure there. 4.93 1. Fixed several bugs in the crq code for left censored data. Thanks to Brian Cade as always for bringing this to my attention. 4.94 1. Moved UIS crq example from man directory to demos to save check time as advised by Uwe Ligges. 4.95 1. Bug in summary.crq when ctype == "left" and some specified taus weren't estimable -- upper quantiles from bootstrap were deleted, but it was the lower ones that should have been. 2. BIG in crq.f was changed from 1.d37 to 1.d17 which "fixes" a segfault condition in an example of Brian Cade's, but I have no frigging idea why. 4.96 For left censoring the idea of reversing the order of the taus in the solution array turned out to cause all sorts of havoc in my interpolation scheme for coef.crq.... so I've reverted to the usual ordering. 4.97 1. Yet another modification of coef.crq. This time I've decided to eliminate the midpoint interpolation scheme that was originally motivated by the pivoting method for the Portnoy crq estimator, and go back to conventional linear interpolation. This is more consistent with the default grid methods that are now being used and was endorsed at coffee by Steve. This change was again stimulated by Brian Cade's careful checking of anomalies in crq output. 2. Added drop = FALSE for the coef object returned from crq.fit.[por,pen], to hangle the case in which there is only one column of the solution, which hopefully is a very rare occurrence. 3. Changed Curv to return a type object, to fix a bug introduced into the Powell methods when I added ctype for left censoring for Portnoy and PengHuang. Thanks to Mike Smithson for reporting this. 4.98 1. Fixed a plethora of places that the new dimension checking for fortran arrays identified issues. 5.00 1. Fixed several places with excessive line lengths in the .Rd files. 2. Purged the econometrica.bst bib style, as requested by Brian R. 5.04 1. Fixed logLik.nlrq bug as noted by Erin Graham. 2. Changed the default bootstrap method for crq objects to the delete-d jackknife method proposed recently by Portnoy. This seems to work better especially when, as is ofter the case the process is "defective." 3. Fixed predict.crq so it would return fitted values when newdata was omitted, bug report by Carles Forné Izquierdo. 5.05 1. BDR suggested a fix to dynrq to avoid a ":::" usage. This led to some adventures in environments that eventually led to inclusion of a model component in the first element of dynrqs objects so that plotting of summary.dynrqs objects could find the appropriate design matrix. 2. And in addition the Description file was augmented with a greatly expanded authors component -- which should have been done years ago but was greatly facilitated by the (relatively) new person() function. 5.07 1. Bug fix in predict.rq: when mofn < n and percentile method the interval needed to be recentered and rescaled, not enough to just rescale B matrix. 5.08 1. Incorporated my qrisk package for portfolio selection into quantreg. This includes the function rq.fit.hogg() that does what Zou and Yuan call composite quantile regression, or more accurately a generalized version of this. 5.13 1. Fixed several namespace problems identified by BR. 2. Fixed bug in qrisk code to convert data.frame X to matrix. 5.16 1. Fixed bug in rq.fit.lasso whose .Fortran call had an extra argument. 2. Fixed bug in rq.fit.pfn to correct behavior when m > n. Pointed out by Ivan Diaz (Google). Cause of this was rather pathological but ((p-1)*n)^/2/3 > n can happen when p is large as it tends to be these days. 5.17 1. Added anova.rqs at the suggestion of Jon Peck (IBM). This just takes rq() output from a multiple tau command and converts it to something that anova.rqlist can understand. Peck is writing something on the SPSS <-> R interface, so I was curious to see what is going on with that. The answer seems to be not too much, but there is a very annoying article here: http://www.ibm.com/developerworks/library/ba-call-r-spss/ -- ugly hacks indeed! It does make me wonder why I've spent part of my weekend making this extension just to accommodate a commercial implementation by IBM that enables SPSS to call quantreg. 2. Fixed a bug in rq.test.rank which produced the wrong p-value for the chi-squared version of the test. 3. Added various importFrom directives in NAMESPACE in accordance with Kurt's July 2015 suggestions. 4. Removed calls to crq.fit.por2 provisionally while we resolve some problems with the code for this new procedure. 5.18 1. Added a couple of further importFrom directives in NAMESPACE at Kurt's suggestion. 2. Added some further cautionary verbiage about the dangers of using rank inversion for large problems at the suggestion of Jon Peck (IBM). 5.19 1. Changed the printing of the number of NAs in the crq bootstrap functions so that it also reported "out of" number of bootstrap replications. 2. Changed the coef matrix for the Powell crq method so that it conformed to the other methods to facilitate plotting as requested by Vladimir Pazitka. 3. Changed the eps in summary.rq from .Machine$double.eps^(2/3) to .Machine$double.eps^(1/2). This will reduce (somewhat) the likelihood of getting one or two influential f_i's that dominate a covariance matrix estimate. 4. Introduced the Portnoy2 method for crq, which still should be considered experimental. It is a pure R rewriting of the original algorithm that iterates on a fixed grid. 5.20 1. Added FAW to the rq.Rd see also list at the suggestion of Terry Therneau. 5.21 1. Allowed ... to be passed in plot.summary.crqs. 2. Fixed namespace bug in dynrq, and added an Edgeworth wacky AR(1) example to dynrq.Rd. 3. Fixed rqss bug about length of residual vector 5.23 1. Added a "cluster" option for summary.rq() when using the bootstrap option this option implements the wild gradient bootstrap method of Hagemann (2016). See boot.rq for further details. [Needs further testing.] 2. Added a sfn method for rq models, and in the process modified somewhat the return object for both rq.fit.sfn and rq.fit.sfnc so that it is compatible with other rq.fit objects. 5.24 1. Reverted to the old fortran versions of srqfn.f and srqfnc.f, ie removed Martin Maechler's C versions, in preparation for some new sparse forms of the bootstrapping functions. Made a couple of slight changes in the return object for these functions. 2. Fixed a sign error in the cluster option pointed out in an email of Andreas on May 9 2016. 3. Added jackknife option to boot.rq for the proposal of Portnoy. 4. Adapted boot.rq and friends so that when there are multiple taus summary.rqs reuses the same randomization for each of the taus to facilitate joint inference with the bootstrap realizations. 5.25 1. When method = "sfn" store model$x in sparse form. Then when bootstrapping use method = "sfn" rather than the usual "br" method. 2. When using the "cluster" option for bootstrap allow "sfn" as above. 3. When na.action = "omit" and length(fit$na.action) > 0, then omit these values from the strata indicator "cluster". This would seem to help bring together the survey package and quantreg as desired by email correspondance with donald706. 5.26 1. Fixed long line per Kurt's suggestion. 2. Added some comments about method "sfn" in the man page for rq. 5.27 1. removed lines that cat'd taus from rqprocess in the khmal.R 2. fixed environment problem in nlrq, according to suggestion of Vaidotas Zemlys-Balevicius email August 9 2016. 5.28 1. Cleaned up the fortran source a bit in accordance with Kurt's mandate of late August 2016. There are still some offensive items mainly in crq.f that should be dealt with, but I wasn't able to dig into this at the moment. 5.29 1. I'd botched the fixup of rq0.f which was only revealed by a test from the package Qtools as discovered by CRAN checking and reported by Duncan Murdoch. 5.30 1. Removed Y argument in crq GRAD subroutine, which seems to be superflous. 5.31 1. Added bag of little bootstraps option to summary.rq. Needs further testing. 5.32 1. Modified the BLB code to use boot.rq.wxy so that the inner loop was all in fortran, would be nicer if this loop were done with "fn" rather than "br". See the note in boot.rq above boot.rq.spwy. 2. modified the crq.pdf file to fix a mento in the description of the Peng Huang algorithm. 5.33 1. Added option to return density estimates from predict.rqs 2. modified rq.fit.fnb to include a rhs input argument. 3. modified boot.crq to properly deal with only one tau requests and also changed the default for printing progress report to n - 100,000. Both suggested by Steve Portnoy. 4. modified boot.rq so it returns cov(B$B) not cov(B) as reported by Marco Geraci 5. Fixed bug in anova.rqlist to correct error when "fn" method was used and no $y component was returned. Reported by Tom LaBone. 6. Fixed bug in summary.rqss -- control parameters weren't getting passed to chol call properly. (Reparted by Geoffrey Shideler (NOAA).) 7. Added init.c to register .Fortran calls and removed the package = "quantreg" argument. 5.35 1. Fix a bug in rqss to allow control parameters to be passed to rqss.fit when the method is "lasso" (pointed out by Heracles Apergis.) 2. changed nrow(R) to NROW(R) in rq.fit.hogg thanks to Paul Newell for bug report. 3. fixed axis label typo in demo engel2. 4. Added Panel.R demo to illustrate fixed effect panel estimation, a la Galvao job market talk. 5. Some changes to crq.fit.por as suggested by SLP: line 1: add an input variable mw (the error messages suggest changing mw if there are problems with resolving degeneracies or trying to pivot too far, and so it should be possible to do this without getting into the deep part of the code) lines 3 and 5: test that x is a matrix and add column names if they are missing line 39: define mw so that the fortran constraint is satisfied 5.36 1. added an iid argument to anova.rq and friends to allow one to specify iid = FALSE when using rank tests, at the suggestion of Brian Cade. 5.37 1. added a R=R argument to the call to summary in anova.rqlist so that changes in the bootstrap replications get passed along as intended, again at the suggestion of Brian Cade. 2. removed init.c and mcmb.c from the src directory: the former was left over from some C-ification of some code done by Martin Maechler long ago, that I have gradually undone, the latter is Xuming's Markov chain marginal bootstrap code that I would hope to reinstate, but at the moment I have problems with an unresolved header file. 5.38 1. changed if (any(b < 0 || b > 1)) to if (any(b < 0) || any(b > 1)) in barycentric() in response to CRAN Debian ERROR. Is this something new? 5.39 1. Reintroduced mcmb.c after a fix of the clang6 setup. 5.40 1. Removed superfluous blas routines from crq.f at the suggestion of Brian Ripley. 2. Similar overlap with some linpack routines exists except that these do not seem to be linkable automatically from R. 5.41 1. Modified summary.rq to half the bandwidth h when it is/was too large, rather than declaring an error. 2. Changed maxit in rqfnb.[rf] from 50 to 500. This produced some scary problems when n was large, in the course of testing the code for the next item. 3. KhmaladzeTest has been thoroughly revised, but needs considerable further testing. This was motivated by an email from Andres Manzanares (ECB) that reported poor coverage when n was large. Remains to see how/whether reasonable defaults can be found for this. Presumably, the taus grid should get finer and the trimming can be less aggressive as n gets larger, but how? 5.42 1. Removed seed argument in mcmb.f -- thanks to Brian Ripley for finding this! 2. Removed rq.Rnw and friends from the vignette directory in response to a still mysterious GCC 9 problem identified in the CRAN check on Debian. Possible indexing overrun?? See email from Brian. 3. Removed two data statements from dynrq.Rd. 5.51 1. Made several (seemingly innocuous) changes in rqbr.f that have apparently fixed the gfortran-9 problem originally reported by Kurt and then in more detail by Brian. With considerable help from Dirk E. I was able to make a Docker container that allowed me to run R as if in a Debian environment with gfortran-9. I'm still rather puzzled that the changes I made fixed the problem: as originally reported by Brian based on his array bounds checking there was a point at which an array subscript took the value -1, which is obviously bad... further debugging with print *, ... revealed that indices that were computed with a*sign(a) instead of producing abs(a) produced 0 instead, and changing these instances to abs(a) worked perfectly in both the old and new environment. I should now reinstate the rq.Rnw version of the vignette, but I think I'll let this go for a while and catch up on other things. 5.52 1. Added Cleve Moler to authors as suggested by Brian to acknowledge use of several linpack routines. 5.53 1. Modified the calls to class(x) in boot.rq so that they conform to the new convention that class(M) has two components c("matrix","array"), so if() wants to look at only the first component. 5.54 1. Modified call to class(x) in crq.fit.pow() as in 5.53 2. changed http to https in crq.Rd 5.55 1. Fixed bug in predict.rq.process for Fhat reported by Vincenzo Coia. 2. Fixed bug in AIC.rqs to use correct edf reported by Brian Cade. 5.57 1. Added link to a new fitting method by He, Pan, Tan and Zhou that uses a smoothed version of the usual piecewise linear QR objective and gradient descent. This approach is MUCH faster than interior point on large problems especially those with large p. See ?rq.fit.conquer for further details. 2. There is also a new multiplier bootstrap for inference. At the moment it is automatically invoked only when the original fitting method is "conquer". 5.58 1. Added new fitting and bootstrap methods employing preprocessing, as implemented by Blaise Melly, see ?rq.fit.ppro for further details. For large applications with moderately fine grids for tau these methods should speed things up considerably. 5.61 1. Fixed inconsistent author entry for Melly. 2. Moved definition of eps up in rq() to resolve problems in packages vdg and qrjoint. 5.65 1. Made two changes in rq.fit.lasso that I hope will improve robustness of the fitting, thanks to report by Yuanzhi Li. Only time will tell, with the help of further testing. o beta default was changed to conform with rq.fit.fnb code o wn initialization was also changed to conform to rq.fit.fnb. 5.66 1. Added rq.fit.ppro and boot.rq.pxy to exported objects in NAMESPACE. They were documented but invisible heretofore. 2. Commented out the warning about too many bad fixups in boot.rq.pxy since it was making too much noise. 5.68 1. Added a subset argument to the rqss function as requested by Brian Cade. This seemed more difficult than expected as a R-help inquiry of 21/9/2020 indicates. 2. Added a Dorder argument to the qss function, which when Dorder = 0 results in penalization of the fitted function itself, rather than its derivative. See the vinaigrette: conformal.Rnw for an example. 3. Noticed that the demo rqsslasso.R had an argument bandcol that generated a warning -- "not a graphical parameter" -- I think that this was intended to be bcol in plot.rqss which when changed now works as originally intended. 5.70 1. Further fiddling with rqss to get the fake.formula trickery to work. Had to ask John Fox (car package) and James Craig (tidyvpc package) to modify their code to provide explicit data arguments when rqss was called inside their functions and added a note to warn others of this necessity. 5.71 1. Added ParetoTest function and friends to do tail exponent estimation and inference based on original code of Chernozhukov and Fernandez-Val. 2. Added new "se" option to summary.rq to implement the extreme CI estimates of Chernozhukov and Fernandez-Val. For the moment I've commented out a warning about tau not being extreme enough to justify the use of this option. 3. Modified plot.summary.rq so that one can pass a matrix of ylim values to assure that two summary.rq plots have the same scale. A suggestion born of Victor's totally legitimate critique of my extremal QR vinaigrette, now modified to fix this. 5.74 1. Fixed bug in rq.fit.sfn so that all the control parameters are passed. 2. Modified summary.rq so that the "nid" option can now use "sfn" fitting if the original fitted object was computed with "sfn". This is the first step in trying to get the "boot" methods to behave similarly. 3. After the upgrade to catalina and then upgrading R and gfortran and xcode Command Line Tools I was getting compilation errors with stdio.h not found. This was eventually resolved by removing my .R/Makevars file which pointed to obsolete clang compilers and libraries. I've now also removed clang6 and clang7 from /usr/local since they are now irrelevant. 4. The code for clustered bootstrap is now adapted so that if method = "sfn" is used for the initial fitting then it will also be used for the bootstrapping. This speeds things up considerably. A potential issue that is still unresolved here is that I am not allowing users to pass control parameters, so one has to hope that default choices work. My naive attempt to pass the control list from the initial fit produced a "memory not mapped" segfault, presumably because the spwy bootstrap method uses one extra observation than the initial fitting. 5.75 1. Implemented weights for rqss fitting when there are qss terms, as suggested by the ConfidenceQuant package of Zhang et al. This is prepatory to exploring their implementation of lambda selection and BLB inference. Note that they don't undo the weighting when computing residuals which may or may not be important. As currently implemented, I do undo the weighting. 2. Added Munge function to mangle formulas for rqss (used in demo(MCV) 3. Added demo MCV to illustrate lambda selection via k-fold CV. 5.79 1. In preparation for some attempt to rationalize the multiple estimation and inference methods, I poked around to see whether I could find a workable version of ratfor to use to write new wrapper code for various extensions. Eventually I found an updated C version maintained by Brian Gaeke that worked for all of my existing ratfor code with the exception of rqbr.r which emits a gfortran warning about goto's jumping across blocks (see email from Gaeke on 23/11/20). This isn't really a problem since I have functional f77 code for this anyway. The point is that going forward, at least for the foreseeable I have a workable ratfor. 2. Added two new estimation methods qfnb and pfnb designed to speed up estimation for large problems with many taus. The former just puts calls to the existing fnb routine inside a fortran loop, the latter translates the ppro preprocessing method into ratfor. This seems to help quite a lot as experiments in my ongoing vinaigrette show, but there is probably still some fine tuning that could be done. I have the feeling that it would be worthwhile being more aggressive about reducing the sample size as n grows. 3. Changed default m0 parameter for rq.fit.pfnb so that it was proportional to n^(2/3) rather than n which seems to speed things up considerably. 5.80 1. Added a new bootstrap method boot.rq.pwxy which calls a fortran preprocessing subroutine. Generation of random exponentials is done inside the loop thanks to grexp() and some C trickery documented in the R Extensions manual. For large problems this promises to be much quicker than other prior methods, presuming that I can get the interface with summary() and boot.rq() working. 2. Added a more elaborate iteration count object to the return from boot.rq.pwxy that provides information on the number of "fixups" as well as FN iterations and final sample size. 3. Removed the standardize argument from rq.fit.conquer which seems to have been removed from the argument list of conquer::conquer. 4. Changed the BLB procedure so that it uses pwxy rather than wxy, pending further investigation... 5. Changed the rq.fit.pfnb procedure so that it knows how to do only one tau. 5.81 1. rq.fit.pfn and rq.fit.pfnb now return nit info as part of my effort to investigate how to set tuning parameters for these functions. 2. changed rq.fit.fnb so that non-zero exit status from an error (stop) to a warning. Experiments with large p examples involving factor variables suggested that these cases were often harmless. As long as 10 or more iterations were done, these exits were generally just stepy being too fussy about the cholesky factorization. 3. Changed plot.rqss so that it returned all the confidence band information not just for the last one. Thanks to Zehra Atik for the bug report on this. 5.82 1. Fixed rq.fit.pfnb to work with vector x. 2. Added q489 function to compute univariate sample quantile via literal translation of the original (Algol 68) code of Floyd and Rivest. 5.83 1. In response to Brian Ripley's email of 11/1/21 several ratfor/fortran changes were made: ddot was declared double in boot.f and rls.f, the routine spwy.[rf] was removed since it was never actually functional, and several nonconforming tab characters were removed from sparskit.f. 2. Added a new plotting function for qss objects with Dorder 0 that imposes the piecewise constant feature of the fit. 3. Added options for increasing and decreasing constraints for the Dorder 0 qss functions. By setting lambda to zero, one can get something equivalent to the solution from the isotone package using their weighted fractile option. 5.84 1. The changes to plot.rqss in the last version messed up plotting for qss objects, this is (hopefully) now restored to prior functionality. 5.85 1. Added doi info for K 2005, and K et al (2017) at Uwe's suggestion. 2. modified qss code to test is.numeric(x) rather than is.vector(x) to avoid the fact that is.vector(x) is false, if x happens to have attributes other than names. Thanks to Wolfgang Viechtbauer and Terry Therneau for help in tracking this down. The Rstudio function haven::read_dta() adds an attribute to the data.frame it constructs to indicate that the data was born in the hell of Stata. 3. Added predict.qts1 function which was somehow neglected when I made the conformal QR vinaigrette. 4. Added a LassoLambdaHat function to compute the Belloni-Chernozhukov lambdahat interval. And modified rq.fit.lasso to use this as the default lambda selection rule if lambda is not specified. 5.87 1. At the suggestion of Adelchi Azzalini conquer package was moved to "suggested" rather than "imported" which lightened the dependency graph considerably. 2. change in anova.rqlist to broaden pattern matching for variable names at the suggestion of Max Gordon. Uses the relatively new \(x) syntax which may cause problems for those on old R installations. 5.89 1. removed the anonymous function syntax in 5.87 #2 since it did provoke complaints from users. 2. Fixed bootstrap methods for sparse X matrices for wild and pwy methods report by Tom Parker. a mcmb is hopeless since it doesnt know about sparse matrices, will add something to man page b pwy problem was annoying in the sense that rbind(X,0) doesnt work in SparseM because 0 isnt sparse! Duh. c wild problem revealed an ecosystem of bugs, even in the non-sparse case there was a bug: hat(X) was called but should have specified hat(X, intercept = FALSE), when X is sparse I needed to cook up a special version of hat. 5.91 1. CRAN is doing more severe checking about installed packages, so several changes were made to make calls to suggested packages conditional on their loading status. This is supposed to be checkable by setting the environment variable _R_CHECK_DEPENDS_ONLY_="true" R CMD check ... but I haven't yet gotten this to work. 5.93 1. The problem referenced in 5.91 above was mainly due to the fact that packages were put in the system library not my personal library. This was fixed by reinstalling so that now: Sys.getenv("R_LIBS_USER") [1] "/Users/roger/Library/R/x86_64/4.2/library" and now adding to .Renviron _R_CHECK_DEPENDS_ONLY_=true I believe will trigger the checking without the dependencies as required. 5.94 1. Albrecht Gebhardt has made a translation of the Renka interp functionality used for bivariate smoothing by rqss. This effectively eliminates the need for tripack in quantreg, and the code as been modified accordingly, thanks to Albrecht for all his efforts on this. This is all due to the unfortunate ACM TOMS licencing policy that is incompatible with R. 2. Brian Ripley noted that the DOI for my CUP book was broken and I have urged them to fix this. 3. Minor bug fix in crq for case that the user specifies a single tau value. 5.95 1. modified rqss to use rgl.triangles3d instead of rgl.triangles as suggested by Duncan Murdock 2. modified predict.rq and friends to adapt to na.action as suggested in email of ggrothendieck@gmail.com on 5 April 2023. 5.96 1. Changed gtimer to return 0.0 at suggestion of BDR to facilitate compatibility with flang. 2. Changed DFLOAT to DBLE crqf.f per BDR's email of 19/07/23 5.97 1. Changed dfloat to dble per BDR's email of 19/08/23 5.98 1. On the advice of BDR the arithmetic ifs in cholsky.f were modified to accord with "modernization" of fortran. And the Do loops in crqf.f were also modified to end with CONTINUE. 2. Some syntax issues identified in the new CRAN checks were also made. 5.99 1. Bug in rq.fit.conquer fixed to allow ci to be passed to conquer::conquer. 2. cp cholesky.f from SparseM to remove computed gotos in the quantreg version 3. changed several calls to model.matrix to use contrasts.arg = rather than contrasts = 5.99.1 1. The new `cholesky.f` (from 5.99) needed amendments to correctly pass 'tiny, Large' to it e.g., such that package `cobs` tests pass. 2. Most naturally, extend the auxiliary R function `sfn.control()` accordingly. 3. This version modified by BDR to fix further fortran anomilies. 6.00 1. This version should be identical to 5.99.1 6.01 1. MM presumably unintentionally changed the order of the arguments in the call to srqfn from rqss. This has now been repaired and rqss again seems to work as intended. This was pointed out by James Craig james.craig@certara.com quantreg/inst/TODO0000644000176200001440000000010513742070343013544 0ustar liggesusers# To Do List 1. Continue forensic investigation of KhmaladzeTest. quantreg/build/0000755000176200001440000000000014760373013013203 5ustar liggesusersquantreg/build/vignette.rds0000644000176200001440000000032014760373013015535 0ustar liggesusers‹uÏ‚0 Æ‹ Jb ø{Ï„‹c9XdEfâam¿ßÚîË®.,À²0šXš>Ïnäà`ÞF²beœ0^§µb›9ÒÛ½êÁóFŠÛaƒ´ã ‘é+µ_I[)½ ¦ àøx³ü‡[3Ôü2çwA–m­0Í5\Òfæ)UiœÉn J‘Çôë£x¶…D­?äÈ¢eô˜78{aèû¾ûue¼&Gݘ7œ%çQuo¿4c¨quantreg/man/0000755000176200001440000000000014746436777012704 5ustar liggesusersquantreg/man/gasprice.Rd0000644000176200001440000000035712505061172014743 0ustar liggesusers\name{gasprice} \alias{gasprice} \docType{data} \title{Time Series of US Gasoline Prices } \description{ Time Series of Weekly US Gasoline Prices: 1990:8 -- 2003:26 } \usage{data("gasprice")} \examples{ data(gasprice) } \keyword{datasets} quantreg/man/rq.fit.pfnb.Rd0000644000176200001440000000520714620433174015301 0ustar liggesusers\name{rq.fit.pfnb} \alias{rq.fit.pfnb} \title{ Quantile Regression Fitting via Interior Point Methods } \description{ This is a lower level routine called by \code{rq()} to compute quantile regression parameters using the Frisch-Newton algorithm. It uses a form of preprocessing to accelerate the computations for situations in which several taus are required for the same model specification. } \usage{ rq.fit.pfnb(x, y, tau, m0 = NULL, eps = 1e-06) } \arguments{ \item{x}{ The design matrix } \item{y}{ The response vector } \item{tau}{ The quantiles of interest, must lie in (0,1), be sorted and preferably equally spaced. } \item{m0}{ An initial reduced sample size by default is set to be \code{round((n * (log(p) + 1) )^(2/3)} this could be explored further to aid performance in extreme cases. } \item{eps}{A tolerance parameter intended to bound the confidence band entries away from zero.} } \value{ returns a list with elements consisting of \item{coefficients}{a matrix of dimension ncol(x) by length(taus) } \item{nit}{a 5 by m matrix of iteration counts: first two coordinates of each column are the number of interior point iterations, the third is the number of observations in the final globbed sample size, and the last two are the number of fixups and bad-fixups respectively. This is intended to aid fine tuning of the initial sample size, m0.} \item{info}{an m-vector of convergence flags} } \details{ The details of the Frisch-Newton algorithm are explained in Koenker and Portnoy (1997), as is the preprocessing idea which is related to partial sorting and the algorithms such as \code{kuantile} for univariate quantiles that operate in time O(n). The preprocessing idea of exploiting nearby quantile solutions to accelerate estimation of adjacent quantiles is proposed in Chernozhukov et al (2020). This version calls a fortran version of the preprocessing algorithm that accepts multiple taus. The preprocessing approach is also implemented for a single tau in \code{rq.fit.pfn} which may be regarded as a prototype for this function since it is written entirely in R and therefore is easier to experiment with. } \references{ Koenker, R. and S. Portnoy (1997). The Gaussian Hare and the Laplacian Tortoise: Computability of squared-error vs. absolute-error estimators, with discussion, \emph{Statistical Science}, \bold{12}, 279-300. Chernozhukov, V., I., Fernandez-Val, and Melly, B. (2020), `Fast algorithms for the quantile regression process', Empirical Economics, forthcoming. } \seealso{ \code{\link{rq}}, \code{\link{rq.fit.br}}, \code{\link{rq.fit.pfn}} } \keyword{regression} quantreg/man/summary.crq.Rd0000644000176200001440000001070114265213041015420 0ustar liggesusers\name{summary.crq} \alias{summary.crqs} \alias{summary.crq} \alias{print.summary.crq} \alias{print.summary.crqs} \alias{plot.summary.crqs} \title{ Summary methods for Censored Quantile Regression } \description{ Returns a summary object for a censored quantile regression fit. A null value will be returned if printing is invoked. } \usage{ \method{summary}{crq}(object, taus = 1:4/5, alpha = .05, se="boot", covariance=TRUE, ...) \method{print}{summary.crq}(x, digits = max(5, .Options$digits - 2), ...) \method{print}{summary.crqs}(x, ...) \method{plot}{summary.crqs}(x, nrow = 3, ncol = 3, CoxPHit = NULL, ...) } \arguments{ \item{object}{ An object of class \code{"crq"} produced by a call to \code{crq()}. } \item{taus}{Quantiles to be summarized. This should be a vector of length greater than one.} \item{x}{ An object of class \code{"crq"} produced by a call to \code{crq()}. } \item{se}{ specifies the method used to compute standard standard errors. but the only available method (so far) is "boot". Further arguments to \code{\link{boot.crq}} and \code{\link{boot.rq}} can be passed with the \dots argument. } \item{covariance}{ logical flag to indicate whether the full covariance matrix of the estimated parameters should be returned. } \item{nrow}{Number of rows of the plot layout.} \item{ncol}{Number of columns of the plot layout.} \item{alpha}{Confidence level for summary intervals.} \item{digits}{Number of digits to be printed in summary display.} \item{CoxPHit}{An object of class coxph produced by \code{coxph}.} \item{...}{ Optional arguments to summary, e.g. to specify bootstrap methods sample sizes, etc. see \code{\link{boot.rq}} and \code{\link{boot.crq}} } } \value{ For method "Powell" an object of class \code{summary.crq} is returned with the following components: \item{coefficients}{ a p by 4 matrix consisting of the coefficients, their estimated standard errors, their t-statistics, and their associated p-values. } \item{cov}{ the estimated covariance matrix for the coefficients in the model, provided that \code{covariance = TRUE} appears in the calling sequence. } \item{rdf}{ the residual degrees of freedom } \item{tau}{ the quantile estimated } For the other methods an object of class \code{summary.crq} is returned with the following components: \item{coefficients}{ a list of p by 6 matrix consisting of the coefficients, upper and lower bounds for a (1-alpha) level confidence interval, their estimated standard errors, their t-statistics, and their associated p-values, one component for each element of the specified \code{taus} vector. } \item{cov}{ the estimated covariance matrix for the coefficients in the model, provided that \code{covariance = TRUE} in the called sequence. } } \details{ For the Powell method the resampling strategy used by the \code{se = "boot"} method is based on the Bilias, Chen and Ying (2000) proposal. For the Portnoy and Peng-Huang methods the bootstrapping is by default actually based on a delete-d jackknife, as described in Portnoy (2013), but resampling xy pairs using either conventional multinomial resampling or using exponential weighting as in Bose and Chatterjee (2003) can be used by specifying the \code{bmethod} argument. Note that the default number of replications is set at \eqn{R = 100} a value that is obviously too small for most applications. This is done merely to speed up the examples in the documentation and facilitate testing. Larger, more appropriate values of \eqn{R} can be passed to the bootstrapping functions via the \code{\ldots} argument of the \code{summary} method. It is important to recognize that when some of the bootstrap replications are NA they are simply ignored in the computation of the confidence bands and standard errors as currently reported. The number of these NAs is returned as part of the \code{summary.crq} object, and when printed is also reported. } \references{ Bose, A. and S. Chatterjee, (2003) Generalized bootstrap for estimators of minimizers of convex functions, \emph{J. Stat. Planning and Inf}, 117, 225-239. Bilias, Y. Chen, S. and Z. Ying, (2000) Simple resampling methods for censored quantile regression, \emph{J. of Econometrics}, 99, 373-386. Portnoy, S. (2013) The Jackknife's Edge: Inference for Censored Quantile Regression, \emph{CSDA}, forthcoming. } \seealso{ \code{\link{crq}}, \code{\link{QTECox}} } \keyword{regression} quantreg/man/uis.Rd0000644000176200001440000000643711555564235013767 0ustar liggesusers\name{uis} \alias{uis} \title{UIS Drug Treatment study data} \description{There are 628 data points in the original data, 575 of which have no missing values. Variable descriptions: \tabular{lll}{ Variable \tab Description \tab Codes/Values \cr ID \tab Identification Code \tab 1 - 628 \cr AGE \tab Age at Enrollment \tab Years \cr BECK \tab Beck DepressionScore \tab 0.000 - 54.000 \cr HC \tab Heroin/Cocaine Use During \tab 1 = Heroin & Cocaine \cr \tab 3 Months Prior to Admission \tab 2 = Heroin Only \cr \tab \tab 3 = Cocaine Only \cr \tab \tab 4 = Neither Heroin nor Cocaine \cr IV \tab History of IV Drug Use \tab 1 = Never \cr \tab \tab 2 = Previous \cr \tab \tab 3 = Recent \cr NDT \tab Number of Prior Drug Treatments \tab 0 - 40 \cr RACE \tab Subject's Race \tab 0 = White \cr \tab \tab 1 = Non-White \cr TREAT \tab Treatment Randomization \tab 0 = Short \cr \tab Assignment \tab 1 = Long \cr SITE \tab Treatment Site \tab 0 = A \cr \tab \tab 1 = B \cr LEN.T \tab Length of Stay in Treatment \tab Days \cr \tab (Admission Date to Exit Date) \tab \cr TIME \tab Time to Drug Relapse \tab Days \cr \tab (Measured from Admission Date) \tab \cr CENSOR \tab Event for Treating Lost to \tab 1 = Returned to Drugs \cr \tab Follow-Up as Returned to Drugs \tab or Lost to Follow-Up \cr \tab \tab 0 = Otherwise \cr Y \tab log of TIME \tab \cr ND1 \tab Component of NDT \tab \cr ND2 \tab Component of NDT \tab \cr LNDT \tab \tab \cr FRAC \tab Compliance fraction \tab LEN.T/90 for short trt \cr \tab \tab LEN.T/180 for long trt \cr IV3 \tab Recent IV use \tab 1 = Yes \cr \tab \tab 0 = No } } \usage{data(uis)} \format{A data frame with dimension 575 by 18.} \source{Table 1.3 of Hosmer,D.W. and Lemeshow, S. (1998) } \references{Hosmer,D.W. and Lemeshow, S. (1998) Applied Survival Analysis: Regression Modeling of Time to Event Data, John Wiley and Sons Inc., New York, NY} \keyword{datasets} quantreg/man/dynrq.Rd0000644000176200001440000001576514223330265014315 0ustar liggesusers\name{dynrq} \alias{dynrq} \alias{print.dynrq} \alias{print.dynrqs} \alias{summary.dynrq} \alias{summary.dynrqs} \alias{print.summary.dynrq} \alias{print.summary.dynrqs} \alias{time.dynrq} \alias{index.dynrq} \alias{start.dynrq} \alias{end.dynrq} \title{Dynamic Linear Quantile Regression} \description{ Interface to \code{\link{rq.fit}} and \code{\link{rq.wfit}} for fitting dynamic linear quantile regression models. The interface is based very closely on Achim Zeileis's dynlm package. In effect, this is mainly ``syntactic sugar'' for formula processing, but one should never underestimate the value of good, natural sweeteners. } \usage{dynrq(formula, tau = 0.5, data, subset, weights, na.action, method = "br", contrasts = NULL, start = NULL, end = NULL, ...)} \arguments{ \item{formula}{a \code{"formula"} describing the linear model to be fit. For details see below and \code{\link{rq}}.} \item{tau}{the quantile(s) to be estimated, may be vector valued, but all all values must be in (0,1).} \item{data}{an optional \code{"data.frame"} or time series object (e.g., \code{"ts"} or \code{"zoo"}), containing the variables in the model. If not found in \code{data}, the variables are taken from \code{environment(formula)}, typically the environment from which \code{rq} is called.} \item{subset}{an optional vector specifying a subset of observations to be used in the fitting process.} \item{weights}{an optional vector of weights to be used in the fitting process. If specified, weighted least squares is used with weights \code{weights} (that is, minimizing \code{sum(w*e^2)}); otherwise ordinary least squares is used.} \item{na.action}{a function which indicates what should happen when the data contain \code{NA}s. The default is set by the \code{na.action} setting of \code{\link{options}}, and is \code{\link{na.fail}} if that is unset. The \dQuote{factory-fresh} default is \code{\link{na.omit}}. Another possible value is \code{NULL}, no action. Note, that for time series regression special methods like \code{\link{na.contiguous}}, \code{\link[zoo]{na.locf}} and \code{\link[zoo]{na.approx}} are available.} \item{method}{the method to be used; for fitting, by default \code{method = "br"} is used; \code{method = "fn"} employs the interior point (Frisch-Newton) algorithm. The latter is advantageous for problems with sample sizes larger than about 5,000.} \item{contrasts}{an optional list. See the \code{contrasts.arg} of \code{model.matrix.default}.} \item{start}{start of the time period which should be used for fitting the model.} \item{end}{end of the time period which should be used for fitting the model.} \item{\dots}{additional arguments to be passed to the low level regression fitting functions.} } \details{ The interface and internals of \code{dynrq} are very similar to \code{\link{rq}}, but currently \code{dynrq} offers two advantages over the direct use of \code{rq} for time series applications of quantile regression: extended formula processing, and preservation of time series attributes. Both features have been shamelessly lifted from Achim Zeileis's package dynlm. For specifying the \code{formula} of the model to be fitted, there are several functions available which allow for convenient specification of dynamics (via \code{d()} and \code{L()}) or linear/cyclical patterns (via \code{trend()}, \code{season()}, and \code{harmon()}). These new formula functions require that their arguments are time series objects (i.e., \code{"ts"} or \code{"zoo"}). Dynamic models: An example would be \code{d(y) ~ L(y, 2)}, where \code{d(x, k)} is \code{diff(x, lag = k)} and \code{L(x, k)} is \code{lag(x, lag = -k)}, note the difference in sign. The default for \code{k} is in both cases \code{1}. For \code{L()}, it can also be vector-valued, e.g., \code{y ~ L(y, 1:4)}. Trends: \code{y ~ trend(y)} specifies a linear time trend where \code{(1:n)/freq} is used by default as the covariate, \code{n} is the number of observations and \code{freq} is the frequency of the series (if any, otherwise \code{freq = 1}). Alternatively, \code{trend(y, scale = FALSE)} would employ \code{1:n} and \code{time(y)} would employ the original time index. Seasonal/cyclical patterns: Seasonal patterns can be specified via \code{season(x, ref = NULL)} and harmonic patterns via \code{harmon(x, order = 1)}. \code{season(x, ref = NULL)} creates a factor with levels for each cycle of the season. Using the \code{ref} argument, the reference level can be changed from the default first level to any other. \code{harmon(x, order = 1)} creates a matrix of regressors corresponding to \code{cos(2 * o * pi * time(x))} and \code{sin(2 * o * pi * time(x))} where \code{o} is chosen from \code{1:order}. See below for examples. Another aim of \code{dynrq} is to preserve time series properties of the data. Explicit support is currently available for \code{"ts"} and \code{"zoo"} series. Internally, the data is kept as a \code{"zoo"} series and coerced back to \code{"ts"} if the original dependent variable was of that class (and no internal \code{NA}s were created by the \code{na.action}). } \seealso{\code{\link[zoo]{zoo}}, \code{\link[zoo]{merge.zoo}}} \examples{ ########################### ## Dynamic Linear Quantile Regression Models ## ########################### if(require(zoo)){ ## multiplicative median SARIMA(1,0,0)(1,0,0)_12 model fitted to UK seatbelt data uk <- log10(UKDriverDeaths) dfm <- dynrq(uk ~ L(uk, 1) + L(uk, 12)) dfm dfm3 <- dynrq(uk ~ L(uk, 1) + L(uk, 12),tau = 1:3/4) summary(dfm3) ## explicitly set start and end dfm1 <- dynrq(uk ~ L(uk, 1) + L(uk, 12), start = c(1975, 1), end = c(1982, 12)) ## remove lag 12 dfm0 <- update(dfm1, . ~ . - L(uk, 12)) tuk1 <- anova(dfm0, dfm1) ## add seasonal term dfm1 <- dynrq(uk ~ 1, start = c(1975, 1), end = c(1982, 12)) dfm2 <- dynrq(uk ~ season(uk), start = c(1975, 1), end = c(1982, 12)) tuk2 <- anova(dfm1, dfm2) ## regression on multiple lags in a single L() call dfm3 <- dynrq(uk ~ L(uk, c(1, 11, 12)), start = c(1975, 1), end = c(1982, 12)) anova(dfm1, dfm3) } ############################### ## Time Series Decomposition ## ############################### ## airline data \dontrun{ ap <- log(AirPassengers) fm <- dynrq(ap ~ trend(ap) + season(ap), tau = 1:4/5) sfm <- summary(fm) plot(sfm) } ## Alternative time trend specifications: ## time(ap) 1949 + (0, 1, ..., 143)/12 ## trend(ap) (1, 2, ..., 144)/12 ## trend(ap, scale = FALSE) (1, 2, ..., 144) ############################### ## An Edgeworth (1886) Problem## ############################### # DGP \dontrun{ fye <- function(n, m = 20){ a <- rep(0,n) s <- sample(0:9, m, replace = TRUE) a[1] <- sum(s) for(i in 2:n){ s[sample(1:20,1)] <- sample(0:9,1) a[i] <- sum(s) } zoo::zoo(a) } x <- fye(1000) f <- dynrq(x ~ L(x,1)) plot(x,cex = .5, col = "red") lines(fitted(f), col = "blue") } } \keyword{regression} quantreg/man/rq.fit.br.Rd0000644000176200001440000000644312712137556014767 0ustar liggesusers\name{rq.fit.br} \alias{rq.fit.br} \title{ Quantile Regression Fitting by Exterior Point Methods } \description{ This function controls the details of QR fitting by the simplex approach embodied in the algorithm of Koenker and d'Orey based on the median regression algorithm of Barrodale and Roberts. Typically, options controlling the construction of the confidence intervals would be passed via the \code{\dots{}} argument of \code{rq()}. } \usage{ rq.fit.br(x, y, tau=0.5, alpha=0.1, ci=FALSE, iid=TRUE, interp=TRUE, tcrit=TRUE) } \arguments{ \item{x}{ the design matrix } \item{y}{ the response variable } \item{tau}{ the quantile desired, if tau lies outside (0,1) the whole process is estimated. } \item{alpha}{ the nominal noncoverage probability for the confidence intervals, i.e. 1-alpha is the nominal coverage probability of the intervals. } \item{ci}{ logical flag if T then compute confidence intervals for the parameters using the rank inversion method of Koenker (1994). See \code{rq()} for more details. If F then return only the estimated coefficients. Note that for large problems the default option ci = TRUE can be rather slow. Note also that rank inversion only works for p>1, an error message is printed in the case that ci=T and p=1. } \item{iid}{ logical flag if T then the rank inversion is based on an assumption of iid error model, if F then it is based on an nid error assumption. See Koenker and Machado (1999) for further details on this distinction. } \item{interp}{ As with typical order statistic type confidence intervals the test statistic is discrete, so it is reasonable to consider intervals that interpolate between values of the parameter just below the specified cutoff and values just above the specified cutoff. If \code{interp = F} then the 2 ``exact'' values above and below on which the interpolation would be based are returned. } \item{tcrit}{ Logical flag if T - Student t critical values are used, if F then normal values are used. } } \value{ Returns an object of class \code{"rq"} for tau in (0,1), or else of class \code{"rq.process"}. Note that \code{rq.fit.br} when called for a single tau value will return the vector of optimal dual variables. See \code{\link{rq.object}} and \code{\link{rq.process.object}} for further details. } \details{ If tau lies in (0,1) then an object of class \code{"rq"} is returned with various related inference apparatus. If tau lies outside [0,1] then an object of class \code{rq.process} is returned. In this case parametric programming methods are used to find all of the solutions to the QR problem for tau in (0,1), the p-variate resulting process is then returned as the array sol containing the primal solution and dsol containing the dual solution. There are roughly \eqn{O(n \log n))}{O(n log n)} distinct solutions, so users should be aware that these arrays may be large and somewhat time consuming to compute for large problems. } \references{ Koenker, R. and J.A.F. Machado, (1999) Goodness of fit and related inference processes for quantile regression, \emph{J. of Am Stat. Assoc.}, 94, 1296-1310. } \seealso{ \code{\link{rq}}, \code{\link{rq.fit.fnb}} } \examples{ data(stackloss) rq.fit.br(stack.x, stack.loss, tau=.73 ,interp=FALSE) } \keyword{regression} quantreg/man/boot.rq.pwxy.Rd0000644000176200001440000000347414620433127015546 0ustar liggesusers\name{boot.rq.pwxy} \alias{boot.rq.pwxy} \title{ Preprocessing weighted bootstrap method } \description{ Bootstrap method exploiting preprocessing strategy to reduce computation time for large problem. In contrast to \code{\link{boot.rq.pxy}} which uses the classical multinomial sampling scheme and is coded in R, this uses the exponentially weighted bootstrap scheme and is coded in fortran and consequently is considerably faster in larger problems. } \usage{ boot.rq.pwxy(x, y, tau, coef, R = 200, m0 = NULL, eps = 1e-06, ...) } \arguments{ \item{x}{ Design matrix } \item{y}{ response vector } \item{tau}{ quantile of interest } \item{coef}{ point estimate of fitted object } \item{R}{ the number of bootstrap replications desired. } \item{m0}{ constant to determine initial sample size, defaults to sqrt(n*p) but could use some further tuning... } \item{eps}{ tolerance for convergence of fitting algorithm } \item{...}{ other parameters not yet envisaged. } } \details{ The fortran implementation is quite similar to the R code for \code{\link{boot.rq.pxy}} except that there is no multinomial sampling. Instead \code{rexp(n)} weights are used. } \value{ returns a list with elements: \item{coefficients}{a matrix of dimension ncol(x) by R} \item{nit}{a 5 by m matrix of iteration counts} \item{info}{an m-vector of convergence flags} } \references{ Chernozhukov, V. I. Fernandez-Val and B. Melly, Fast Algorithms for the Quantile Regression Process, 2019, arXiv, 1909.05782, Portnoy, S. and R. Koenker, The Gaussian Hare and the Laplacian Tortoise, Statistical Science, (1997) 279-300 } \author{ Blaise Melly and Roger Koenker } \seealso{ \code{\link{boot.rq.pxy}} } \keyword{bootstrap} quantreg/man/combos.Rd0000644000176200001440000000173211555564235014442 0ustar liggesusers\name{combos} \alias{combos} \title{Ordered Combinations} \description{ All m combinations of the first n integers taken p at a time are computed and return as an p by m matrix. The columns of the matrix are ordered so that adjacent columns differ by only one element. This is just a reordered version of \code{combn} in base R, but the ordering is useful for some applications. } \usage{ combos(n,p) } \arguments{ \item{n}{The n in n choose p} \item{p}{The p in n choose p} } \value{ a \code{matrix} of dimension p by \code{choose(n,p)} } \note{ Implementation based on a Pascal algorithm of Limin Xiang and Kazuo Ushijima (2001) translated to ratfor for R. If you have \pkg{rgl} installed you might try \code{demo("combos")} for a visual impression of how this works. } \references{ Limin Xiang and Kazuo Ushijima (2001) "On O(1) Time Algorithms for Combinatorial Generation," \emph{Computer Journal}, 44(4), 292-302. } \examples{ H <- combos(20,3) } \keyword{utilities} quantreg/man/sfn.control.Rd0000644000176200001440000000343014713526560015420 0ustar liggesusers\name{sfn.control} \alias{sfn.control} \title{Set Control Parameters for Sparse Fitting} \description{ Auxiliary function for setting storage dimensions and other parameters for \code{\link{rq.fit.sfn}()}, \code{\link{rq.fit.sfnc}()} and \code{\link{rqss}()}. } \usage{ sfn.control(nsubmax = NULL, tmpmax = NULL, nnzlmax = NULL, cachsz = 64, small = 1e-06, maxiter = 100, tiny = 1e-30, Large = 1e128, warn.mesg = TRUE) } \arguments{ \item{nsubmax}{upper bound for dimension of lindx} \item{tmpmax}{upper bound for dimension of tmpvec} \item{nnzlmax}{upper bound for non-zero entries of L stored in lnz, including diagonal} \item{cachsz}{size of cache in kbytes on target machine} \item{small}{convergence tolerance for interior point algorithm} \item{maxiter}{maximal number of interior point iterations} \item{tiny}{a tiny positive number; values below \code{tiny * max(diag)} are replaced by \code{Large}; originally was \eqn{10^{-30}} hardcoded in Fortran code.} \item{Large}{a large number, practically \dQuote{Infinite} to replace \code{tiny} diagonal entries in Cholesky; was \eqn{10^{128}}, hardcoded in compiled code.} \item{warn.mesg}{logical flag controlling printing of warnings.} } \details{ Sparse fitting requires a number of temporary storage arrays whose size depends on problem specific features in somewhat mysterious ways, parameters controlling these sizes and some other fitting aspects can be controlled by specifying elements of this control object. } \value{ A \code{\link{list}} with components named as the arguments given above. } \author{ Roger Koenker } \seealso{ \code{\link{rq.fit.sfn}}, \code{\link{rq.fit.sfnc}}, and \code{\link{rqss}} from which \code{sfn.control()} is called. } \keyword{ utilities } quantreg/man/rq.fit.sfnc.Rd0000644000176200001440000000615214014713315015300 0ustar liggesusers\name{rq.fit.sfnc} \alias{rq.fit.sfnc} \title{Sparse Constrained Regression Quantile Fitting} \description{ Fit constrained regression quantiles using a sparse implementation of the Frisch-Newton Interior-point algorithm. } \usage{ rq.fit.sfnc(x, y, R, r, tau = 0.5, rhs = (1-tau)*c(t(x) \%*\% rep(1,length(y))),control) } \arguments{ \item{x}{structure of the design matrix X stored in csr format} \item{y}{response vector} \item{R}{constraint matrix stored in csr format} \item{r}{right-hand-side of the constraint} \item{tau}{desired quantile} \item{rhs}{the right-hand-side of the dual problem; regular users shouldn't need to specify this.} \item{control}{control paramters for fitting see \code{sfn.control}} } \details{ This is a sparse implementation of the Frisch-Newton algorithm for constrained quantile regression described in Koenker and Portnoy (1996). The sparse matrix linear algebra is implemented through the functions available in the R package \pkg{SparseM}. } \value{ \item{coef}{Regression quantile coefficients} \item{ierr}{Error code for the internal Fortran routine \code{srqfn}: \describe{ \item{1:}{ insufficient work space in call to \code{extract}} \item{3:}{ insufficient storage in iwork when calling ordmmd} \item{4:}{ insufficient storage in iwork when calling sfinit} \item{5:}{ nnzl > nnzlmax when calling sfinit} \item{6:}{ nsub > nsubmax when calling sfinit} \item{7:}{ insufficient work space in iwork when calling symfct} \item{8:}{ inconsistancy in input when calling symfct} \item{9:}{ tmpsiz > tmpmax when calling symfct; increase tmpmax} \item{10:}{ nonpositive diagonal encountered when calling blkfct} \item{11:}{ insufficient work storage in tmpvec when calling blkfct} \item{12:}{ insufficient work storage in iwork when calling blkfct} \item{13:}{ nnzd > nnzdmax in e,je when calling amub} \item{14:}{ nnzd > nnzdmax in g,jg when calling amub} \item{15:}{ nnzd > nnzdmax in h,jh when calling aplb} \item{15:}{ tiny diagonals replaced with Inf when calling blkfct} } } \item{it}{Iteration count} \item{time}{Amount of time used in the computation} } \references{ Koenker, R and Ng, P. (2002). SparseM: A Sparse Matrix Package for \R; \url{https://CRAN.R-project.org/package=SparseM} Koenker, R. and P. Ng(2005). Inequality Constrained Quantile Regression, \emph{Sankya}, 418-440. } \author{Pin Ng} \seealso{ \code{\link{rq.fit.sfn}} for the unconstrained version, \pkg{SparseM} for the underlying sparse matrix \R package. } \examples{ ## An artificial example : n <- 200 p <- 50 set.seed(17) X <- rnorm(n*p) X[abs(X) < 2.0] <- 0 X <- cbind(1,matrix(X,n,p)) y <- 0.5 * apply(X,1,sum) + rnorm(n) ## true beta = (0.5, 0.5, ...) R <- rbind(diag(p+1), -diag(p+1)) r <- c(rep( 0, p+1), rep(-1, p+1)) sX <- as.matrix.csr(X) sR <- as.matrix.csr(R) try(rq.o <- rq.fit.sfnc(sX, y, sR, r)) #-> not enough tmp memory (tmpmax <- floor(1e5 + exp(-12.1)*(sX@ia[p+1]-1)^2.35)) ## now ok: rq.o <- rq.fit.sfnc(sX, y, sR, r, control = list(tmpmax = tmpmax)) } \keyword{regression} quantreg/man/anova.rq.Rd0000644000176200001440000002143713302526345014701 0ustar liggesusers\name{anova.rq} \alias{anova.rq} \alias{anova.rqs} \alias{anova.rqlist} \alias{print.anova.rq} \alias{rq.test.rank} \alias{rq.test.anowar} \title{ Anova function for quantile regression fits } \description{ Compute test statistics for two or more quantile regression fits. } \usage{ \method{anova}{rq}(object, ..., test = "Wald", joint = TRUE, score = "tau", se = "nid", iid = TRUE, R = 200, trim = NULL) \method{anova}{rqs}(object, ..., se = "nid", iid = TRUE, joint = TRUE) \method{anova}{rqlist}(object, ..., test = "Wald", joint = TRUE, score = "tau", se = "nid", iid = TRUE, R = 200, trim = NULL) rq.test.rank(x0, x1, y, v = NULL, score = "wilcoxon", weights = NULL, tau=.5, iid = TRUE, delta0 = rep(0,NCOL(x1)), omega = 1, trim = NULL, pvalue = "F") rq.test.anowar(x0,x1,y,tau,R) \method{print}{anova.rq}(x, ...) } \arguments{ \item{object, ...}{objects of class `rq', originating from a call to `rq'. or a single object of class rqs, originating from a call to 'rq' with multiple taus specified.} \item{test}{ A character string specifying the test statistic to use. Can be either `Wald' or `rank'.} \item{joint}{A logical flag indicating whether tests of equality of slopes should be done as joint tests on all slope parameters, or whether (when joint = FALSE) separate tests on each of the slope parameters should be reported. This option applies only to the tests of equality of slopes in the case that estimated models correspond to distinct taus.} \item{score}{ A character string specifying the score function to use, only needed or applicable for the `rank' form of the test.} \item{trim}{optional trimming proportion parameter(s) -- only applicable for the Wilcoxon score function -- when one value is provided there is symmetric trimming of the score integral to the interval \code{(trim, 1-trim)}, when there are two values provided, then the trimming restricts the integration to \code{(trim[1], trim[2])}.} \item{x}{ objects of class `summary.rq', originating from a call to `summary'. } \item{x0}{design matrix for the null component of the rank and anowar tests. } \item{x1}{design matrix for the alternative component of the rank and anowar tests. } \item{y}{response vector for the alternative component of the rank and anowar tests. } \item{v}{optional rq process fit} \item{se}{method for computing standard errors, either "nid" or "ker", note that "boot" cannot be used for testing homogeneity of slopes.} \item{tau}{quantile of interest for quantile specific forms of testing.} \item{iid}{logical flag for quantile specific forms of testing, if TRUE the test presumes that the conditional densities take identical values, if it is FALSE then local densities are estimated and used, see Koenker(2005) p. 90.} \item{delta0}{vector of hypothetical parameter values under test, typically zeros but can be specified to be nonzero in cases where simulations are being used to evaluate the validity of the non-central chisquare theory of the test.} \item{omega}{value to be used for the score and F dependent constant appearing in the non-centrality parameter, this is only needed/useful when delta0 is specified to be non-zero. In the usual Wilcoxon (untrimmed) case this value is the integral the squared density.} \item{pvalue}{type of p-value to be used, by default a pseudo F-statistic is produced and the corresponding F p-value is computed, otherwise the more conventional chisquared p-values are reported.} \item{weights}{optional weight vector to be used for fitting.} \item{R}{ The number of resampling replications for the anowar form of the test, used to estimate the reference distribution for the test statistic.} } \details{ There are two (as yet) distinct forms of the test. In the first the fitted objects all have the same specified quantile (tau) and the intent is to test the hypothesis that smaller models are adequate relative to the largest specified model. In the second form of the test the linear predictor of the fits are all the same, but the specified quantiles (taus) are different. In the former case there are three options for the argument `test', by default a Wald test is computed as in Bassett and Koenker (1982). If \code{test = 'anowar'} is specified then the test is based on the procedure suggested in Chen, Ying, Zhang and Zhao (2008); the test is based on the difference in the QR objective functions at the restricted and unrestricted models with a reference distribution computed by simulation. The p-value of this form of the test is produced by fitting a density to the simulation values forming the reference distribution using the \code{logspline} function from the \pkg{logspline} package. The acronym anowar stands for analysis of weighted absolute residuals. If \code{test='rank'} is specified, then a rank test statistic is computed as described in Gutenbrunner, Jureckova, Koenker and Portnoy (1993). In the latter case one can also specify a form for the score function of the rank test, by default the Wilcoxon score is used, the other options are score=`sign' for median (sign) scores, or score=`normal' for normal (van der Waerden) scores. A fourth option is score=`tau' which is a generalization of median scores to an arbitrary quantile, in this case the quantile is assumed to be the one associated with the fitting of the specified objects. The computing of the rank form of the test is carried out in the \code{\link{rq.test.rank}} function, see \code{\link{ranks}} for further details on the score function options. The Wald form of the test is local in sense that the null hypothesis asserts only that a subset of the covariates are ``insignificant'' at the specified quantile of interest. The rank form of the test can also be used to test the global hypothesis that a subset is ``insignificant'' over an entire range of quantiles. The use of the score function score = "tau" restricts the rank test to the local hypothesis of the Wald test. In the latter case the hypothesis of interest is that the slope coefficients of the models are identical. The test statistic is a variant of the Wald test described in Koenker and Bassett (1982). By default, both forms of the tests return an F-like statistic in the sense that the an asymptotically Chi-squared statistic is divided by its degrees of freedom and the reported p-value is computed for an F statistic based on the numerator degrees of freedom equal to the rank of the null hypothesis and the denominator degrees of freedom is taken to be the sample size minus the number of parameters of the maintained model. } \value{ An object of class `"anova"' inheriting from class `"data.frame"'. } \references{ [1] Bassett, G. and R. Koenker (1982). Tests of Linear Hypotheses and L1 Estimation, \emph{Econometrica}, \bold{50}, 1577--83. [2] Koenker, R. W. and Bassett, G. W. (1982). Robust Tests for Heteroscedasticity based on Regression Quantiles, \emph{Econometrica}, \bold{50}, 43--61. [3] Gutenbrunner, C., Jureckova, J., Koenker, R, and S. Portnoy (1993). Tests of Linear Hypotheses based on Regression Rank Scores, \emph{J. of Nonparametric Statistics}, \bold{2}, 307--331. [4] Chen, K. Z. Ying, H. Zhang, and L Zhao, (2008) Analysis of least absolute deviations, Biometrika, 95, 107-122. [5] Koenker, R. W. (2005). Quantile Regression, Cambridge U. Press. } \author{ Roger Koenker } \section{WARNING }{ An attempt to verify that the models are nested in the first form of the test is made, but this relies on checking set inclusion of the list of variable names and is subject to obvious ambiguities when variable names are generic. The comparison between two or more models will only be valid if they are fitted to the same dataset. This may be a problem if there are missing values and R's default of `na.action = na.omit' is used. The rank version of the nested model tests involves computing the entire regression quantile process using parametric linear programming and thus can be rather slow and memory intensive on problems with more than several thousand observations.} \seealso{The model fitting function \code{\link{rq}}, and the functions for testing hypothesis on the entire quantile regression process \code{\link{KhmaladzeTest}}. For further details on the rank tests see \code{\link{ranks}}.} \examples{ data(barro) fit0 <- rq(y.net ~ lgdp2 + fse2 + gedy2 , data = barro) fit1 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro) fit2 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.75) fit3 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.25) anova(fit1,fit0) anova(fit1,fit2,fit3) anova(fit1,fit2,fit3,joint=FALSE) # Alternatively fitting can be done in one call: fit <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, method = "fn", tau = 1:4/5, data = barro) } \keyword{ htest } \keyword{ regression} \keyword{ robust} quantreg/man/srisk.Rd0000644000176200001440000000163412453540230014277 0ustar liggesusers\name{srisk} \alias{srisk} \title{ Markowitz (Mean-Variance) Portfolio Optimization} \description{ This function estimates optimal mean-variance portfolio weights from a matrix of historical or simulated asset returns. } \usage{ srisk(x, mu = 0.07, lambda = 1e+08, alpha = 0.1, eps = 1e-04) } \arguments{ \item{x}{ Matrix of asset returns } \item{mu}{Required mean rate of return for the portfolio } \item{lambda}{Lagrange multiplier associated with mean return constraint} \item{alpha}{Choquet risk parameter, unimplemented } \item{eps}{ tolerance parameter for mean return constraint} } \details{ The portfolio weights are estimated by solving a constrained least squares problem. } \value{ \item{pihat}{Optimal portfolio weights} \item{muhat }{Mean return in sample} \item{sighat }{Standard deviation of returns in sample} } \author{ R. Koenker } \seealso{ \code{\link{qrisk}}} \keyword{ regression } quantreg/man/barro.Rd0000644000176200001440000000247414014712473014261 0ustar liggesusers\name{barro} \alias{barro} \title{Barro Data} \description{ Version of the Barro Growth Data used in Koenker and Machado(1999). This is a regression data set consisting of 161 observations on determinants of cross country GDP growth rates. There are 13 covariates with dimnames corresponding to the original Barro and Lee source. See https://www.nber.org/pub/barro.lee/. The first 71 observations are on the period 1965-75, remainder on 1987-85. } \usage{data(barro)} \format{A data frame containing 161 observations on 14 variables: \tabular{rl}{ [,1] \tab "Annual Change Per Capita GDP"\cr [,2] \tab "Initial Per Capita GDP"\cr [,3] \tab "Male Secondary Education"\cr [,4] \tab "Female Secondary Education"\cr [,5] \tab "Female Higher Education"\cr [,6] \tab "Male Higher Education"\cr [,7] \tab "Life Expectancy"\cr [,8] \tab "Human Capital"\cr [,9] \tab "Education/GDP"\cr [,10] \tab "Investment/GDP"\cr [,11] \tab "Public Consumption/GDP"\cr [,12] \tab "Black Market Premium"\cr [,13] \tab "Political Instability"\cr [,14] \tab "Growth Rate Terms Trade"} } \references{ Koenker, R. and J.A.F. Machado (1999) Goodness of Fit and Related Inference Processes for Quantile Regression, JASA, 1296-1310.} \keyword{datasets} quantreg/man/print.rq.Rd0000644000176200001440000000056211555564235014735 0ustar liggesusers\name{print.rq} \alias{print.rq} \alias{print.rqs} \title{ Print an rq object} \description{ Print an object generated by rq } \usage{ \method{print}{rq}(x, ...) \method{print}{rqs}(x, ...) } \arguments{ \item{x}{ Object returned from rq representing the fit of the model. } \item{...}{ Optional arguments. } } \seealso{ \code{\link{rq}}} \keyword{ regression} quantreg/man/boot.rq.Rd0000644000176200001440000001256514222025324014533 0ustar liggesusers\name{boot.rq} \alias{boot.rq} \alias{boot.rq.xy} \alias{boot.rq.wxy} \alias{boot.rq.pwy} \alias{boot.rq.spwy} \alias{boot.rq.mcmb} \title{ Bootstrapping Quantile Regression} \description{ These functions can be used to construct standard errors, confidence intervals and tests of hypotheses regarding quantile regression models. } \usage{ boot.rq(x, y, tau = 0.5, R = 200, bsmethod = "xy", mofn = length(y), coef = NULL, blbn = NULL, cluster = NULL, U = NULL, ...) } \arguments{ \item{x}{ The regression design matrix} \item{y}{ The regression response vector} \item{tau}{ The quantile of interest} \item{R}{ The number of bootstrap replications} \item{bsmethod}{ The method to be employed. There are (as yet) five options: method = "xy" uses the xy-pair method, and method = "pwy" uses the method of Parzen, Wei and Ying (1994) method = "mcmb" uses the Markov chain marginal bootstrap of He and Hu (2002) and Kocherginsky, He and Mu (2003). The "mcmb" method isn't compatible with sparse X matrices. The fourth method = "wxy" uses the generalized bootstrap of Bose and Chatterjee (2003) with unit exponential weights, see also Chamberlain and Imbens (2003). The fifth method "wild" uses the wild bootstrap method proposed by Feng, He and Hu (2011). } \item{mofn}{ optional argument for the bootstrap method "xy" that permits subsampling (m out of n) bootstrap. Obviously mofn should be substantially larger than the column dimension of x, and should be less than the sample size.} \item{coef}{coefficients from initial fitted object} \item{blbn}{orginal sample size for the BLB model} \item{cluster}{If non-NULL this argument should specify cluster id numbers for each observation, in which case the clustered version of the bootstrap based on the proposal of Hagemann (2017). If present \code{bsmethod} is set to set to "cluster". If this option is used and the fitting method for the original call was "sfn" then the bootstrapping will be carried out with the "sfn" as well. This is usually substantially quicker than the older version which employed the "br" variant of the simplex method. Use of "sfn" also applies to the "pwy" method when the original fitting was done with "sfn". Finally, if \code{na.action = "omit"} and \code{length(object$na.action) > 0} then these elements are also removed from the \code{cluster} variable. Consequently, the length of the \code{cluster} variable should always be the same as the length of the original response variable before any \code{na.action} takes place. } \item{U}{If non-NULL this argument should specify an array of indices or gradient evaluations to be used by the corresponding bootstrap method as specified by \code{bsmethod}. This is NOT intended as a user specified input, instead it is specified in \code{summary.rqs} to ensure that bootstrap samples for multiple taus use the same realizations of the random sampling.} \item{...}{ Optional arguments to control bootstrapping} } \details{ Their are several refinements that are still unimplemented. Percentile methods should be incorporated, and extensions of the methods to be used in anova.rq should be made. And more flexibility about what algorithm is used would also be good. } \value{ A list consisting of two elements: A matrix \code{B} of dimension R by p is returned with the R resampled estimates of the vector of quantile regression parameters. When mofn < n for the "xy" method this matrix has been deflated by the factor sqrt(m/n). A matrix \code{U} of sampled indices (for \code{bsmethod in c("xy", "wxy")}) or gradient evaluations (for \code{bsmethod in c("pwy", "cluster")}) used to generate the bootstrapped realization, and potentially reused for other \code{taus} when invoked from \code{summary.rqs}. } \references{ [1] Koenker, R. W. (1994). Confidence Intervals for regression quantiles, in P. Mandl and M. Huskova (eds.), \emph{Asymptotic Statistics}, 349--359, Springer-Verlag, New York. [2] Kocherginsky, M., He, X. and Mu, Y. (2005). Practical Confidence Intervals for Regression Quantiles, Journal of Computational and Graphical Statistics, 14, 41-55. [3] Hagemann, A. (2017) Cluster Robust Bootstrap inference in quantile regression models, Journal of the American Statistical Association , 112, 446--456. [4] He, X. and Hu, F. (2002). Markov Chain Marginal Bootstrap. Journal of the American Statistical Association , Vol. 97, no. 459, 783-795. [5] Parzen, M. I., L. Wei, and Z. Ying (1994): A resampling method based on pivotal estimating functions,'' Biometrika, 81, 341--350. [6] Bose, A. and S. Chatterjee, (2003) Generalized bootstrap for estimators of minimizers of convex functions, \emph{J. Stat. Planning and Inf}, 117, 225-239. [7] Chamberlain G. and Imbens G.W. (2003) Nonparametric Applications of Bayesian Inference, Journal of Business & Economic Statistics, 21, pp. 12-18. [8] Feng, Xingdong, Xuming He, and Jianhua Hu (2011) Wild Bootstrap for Quantile Regression, Biometrika, 98, 995--999. } \author{ Roger Koenker (and Xuming He and M. Kocherginsky for the mcmb code)} \seealso{ \code{\link{summary.rq}}} \examples{ y <- rnorm(50) x <- matrix(rnorm(100),50) fit <- rq(y~x,tau = .4) summary(fit,se = "boot", bsmethod= "xy") summary(fit,se = "boot", bsmethod= "pwy") #summary(fit,se = "boot", bsmethod= "mcmb") } \keyword{ regression} quantreg/man/critval.Rd0000644000176200001440000000310711555564235014622 0ustar liggesusers \name{critval} \alias{critval} \title{ Hotelling Critical Values } \description{ Critical values for uniform confidence bands for rqss fitting } \usage{ critval(kappa, alpha = 0.05, rdf = 0) } \arguments{ \item{kappa}{ length of the tube } \item{alpha}{ desired non-coverage of the band, intended coverage is 1 - alpha } \item{rdf}{ "residual" degrees of freedom of the fitted object. If \code{rdf=0} then the Gaussian version of the critical value is computed, otherwise the value is based on standard Student t theory. } } \value{ A scalar critical value that acts as a multiplier for the uniform confidence band construction. } \details{ The Hotelling tube approach to inference has a long and illustrious history. See Johansen and Johnstone (1989) for an overview. The implementation here is based on Sun and Loader (1994) and Loader's \pkg{locfit} package, although a simpler root finding approach is substituted for the iterative method used there. At this stage, only univariate bands may be constructed. } \references{ Hotelling, H. (1939): ``Tubes and Spheres in $n$-spaces, and a class of statistical problems,'' \emph{Am J. Math}, 61, 440--460. Johansen, S., I.M. Johnstone (1990): ``Hotelling's Theorem on the Volume of Tubes: Some Illustrations in Simultaneous Inference and Data Analysis,'' \emph{The Annals of Statistics}, 18, 652--684. Sun, J. and C.V. Loader: (1994) ``Simultaneous Confidence Bands for Linear Regression and smoothing,'' \emph{The Annals of Statistics}, 22, 1328--1345. } \seealso{ \code{\link{plot.rqss}} } \keyword{regression} quantreg/man/plot.summary.rqs.Rd0000644000176200001440000000633413735337057016443 0ustar liggesusers\name{plot.summary.rqs} \alias{plot.summary.rqs} \alias{plot.summary.rq} \title{Visualizing sequences of quantile regression summaries} \description{A sequence of coefficient estimates for quantile regressions with varying \code{tau} parameters is visualized along with associated confidence bands.} \usage{ \method{plot}{summary.rqs}(x, parm = NULL, level = 0.9, ols = TRUE, mfrow = NULL, mar = NULL, ylim = NULL, main = NULL, col = gray(c(0, 0.75)), border = NULL, lcol = 2, lty = 1:2, cex = 0.5, pch = 20, type = "b", xlab = "", ylab = "", \dots) } \arguments{ \item{x}{an object of class \code{"summary.rqs"} as produce by applying the \code{summary} method to a \code{\link{rq}} object (with a vector of \code{tau} values).} \item{parm}{a specification of which parameters are to be plotted, either a vector of numbers or a vector of names. By default, all parameters are considered.} \item{level}{Confidence level of bands. When using the rank based confidence intervals in summary, which is the default method for sample sizes under 1000, you will need to control the level of the intervals by passing the parameter alpha to \code{\link{summary.rq}}, prior to calling \code{\link{plot.summary.rqs}}. Note also that alpha = 1 - level.} \item{ols}{logical. Should a line for the OLS coefficient and their confidence bands (as estimated by \code{\link[stats]{lm}}) be added?} \item{mfrow, mar, ylim, main}{graphical parameters. Suitable defaults are chosen based on the coefficients to be visualized. It can be useful to use a common vertical scale when plotting as a way of comparing confidence bands constructed by different methods. For this purpose one can specify a \code{ylim} as a 2 by \code{length(parm)} matrix.} \item{col}{vector of color specification for \code{rq} coefficients and the associated confidence polygon.} \item{border}{color specification for the confidence polygon. By default, the second element of \code{col} is used.} \item{lcol, lty}{color and line type specification for OLS coefficients and their confidence bounds.} \item{cex, pch, type, xlab, ylab, \dots}{further graphical parameters passed to \code{\link[graphics]{points}}.} } \details{The \code{plot} method for \code{"summary.rqs"} objects visualizes the coefficients along with their confidence bands. The bands can be omitted by using the \code{plot} method for \code{"rqs"} objects directly.} \seealso{\code{\link{rq}}, \code{\link{plot.rqs}}} \value{A list with components \code{z}, an array with all coefficients visualized (and associated confidence bands), and \code{Ylim}, a 2 by p matrix containing the y plotting limits. The latter component may be useful for establishing a common scale for two or more similar plots. The list is returned invisibly.} \examples{ ## fit Engel models (in levels) for tau = 0.1, ..., 0.9 data("engel") fm <- rq(foodexp ~ income, data = engel, tau = 1:9/10) sfm <- summary(fm) ## visualizations plot(sfm) plot(sfm, parm = 2, mar = c(5.1, 4.1, 2.1, 2.1), main = "", xlab = "tau", ylab = "income coefficient", cex = 1, pch = 19) } \keyword{hplot} quantreg/man/boot.rq.pxy.Rd0000644000176200001440000000215313734321500015344 0ustar liggesusers\name{boot.rq.pxy} \alias{boot.rq.pxy} \title{ Preprocessing bootstrap method } \description{ Bootstrap method exploiting preprocessing strategy to reduce computation time for large problem. } \usage{ boot.rq.pxy(x, y, s, tau = 0.5, coef, method = "fn", Mm.factor = 3) } \arguments{ \item{x}{ Design matrix } \item{y}{ response vector } \item{s}{ matrix of multinomial draws for xy bootstrap } \item{tau}{ quantile of interest } \item{coef}{ point estimate of fitted object } \item{method}{ fitting method for bootstrap } \item{Mm.factor}{ constant to determine initial sample size } } \details{ See references for further details. } \value{ Returns matrix of bootstrap estimates. } \references{ Chernozhukov, V. I. Fernandez-Val and B. Melly, Fast Algorithms for the Quantile Regression Process, 2019, arXiv, 1909.05782, Portnoy, S. and R. Koenker, The Gaussian Hare and the Laplacian Tortoise, Statistical Science, (1997) 279-300 } \author{ Blaise Melly and Roger Koenker } \seealso{ \code{\link{rq.fit.ppro}} } \keyword{bootstrap} quantreg/man/nlrq.control.Rd0000644000176200001440000000175411555564235015617 0ustar liggesusers\name{nlrq.control} \alias{nlrq.control} \title{ Set control parameters for nlrq } \description{ Set algorithmic parameters for nlrq (nonlinear quantile regression function) } \usage{ nlrq.control(maxiter=100, k=2, InitialStepSize = 1, big=1e+20, eps=1e-07, beta=0.97) } \arguments{ \item{maxiter}{maximum number of allowed iterations} \item{k}{the number of iterations of the Meketon algorithm to be calculated in each step, usually 2 is reasonable, occasionally it may be helpful to set k=1 } \item{InitialStepSize}{ Starting value in \code{optim} to determine the step length of iterations. The default value of 1 is sometimes too optimistic. In such cases, the value 0 forces optim to just barely stick its toe in the water.} \item{big}{ a large scalar} \item{eps}{ tolerance for convergence of the algorithm } \item{beta}{ a shrinkage parameter which controls the recentering process in the interior point algorithm. } } \seealso{ \code{\link{nlrq}} } \keyword{ environment} quantreg/man/lm.fit.recursive.Rd0000644000176200001440000000120413505344117016341 0ustar liggesusers\name{lm.fit.recursive} \alias{lm.fit.recursive} \title{ Recursive Least Squares } \description{ This function fits a linear model by recursive least squares. It is a utility routine for the \code{\link{KhmaladzeTest}} function of the quantile regression package. } \usage{ lm.fit.recursive(X, y, int=TRUE) } \arguments{ \item{X}{ Design Matrix } \item{y}{ Response Variable} \item{int}{ if TRUE then append intercept to X} } \value{ return p by n matrix of fitted parameters, where p. The ith column gives the solution up to "time" i. } \references{ A. Harvey, (1993) Time Series Models, MIT } \author{ R. Koenker } \keyword{methods} quantreg/man/summary.rq.Rd0000644000176200001440000002074613757431323015301 0ustar liggesusers\name{summary.rq} \alias{summary.rq} \alias{summary.rqs} \alias{summary.rcrqs} \title{ Summary methods for Quantile Regression } \description{ Returns a summary list for a quantile regression fit. A null value will be returned if printing is invoked. } \usage{ \method{summary}{rq}(object, se = NULL, covariance=FALSE, hs = TRUE, U = NULL, gamma = 0.7, ...) \method{summary}{rqs}(object, ...) } \arguments{ \item{object}{ This is an object of class \code{"rq"} or \code{"rqs"} produced by a call to \code{rq()}, depending on whether one or more taus are specified. } \item{se}{ specifies the method used to compute standard standard errors. There are currently seven available methods: \enumerate{ \item \code{"rank"} which produces confidence intervals for the estimated parameters by inverting a rank test as described in Koenker (1994). This method involves solving a parametric linear programming problem, and for large sample sizes can be extremely slow, so by default it is only used when the sample size is less than 1000, see below. The default option assumes that the errors are iid, while the option iid = FALSE implements a proposal of Koenker Machado (1999). See the documentation for \code{rq.fit.br} for additional arguments. \item \code{"iid"} which presumes that the errors are iid and computes an estimate of the asymptotic covariance matrix as in KB(1978). \item \code{"nid"} which presumes local (in \code{tau}) linearity (in \code{x}) of the the conditional quantile functions and computes a Huber sandwich estimate using a local estimate of the sparsity. If the initial fitting was done with method "sfn" then use of \code{se = "nid"} is recommended. However, if the cluster option is also desired then \code{se = "boot"} can be used and bootstrapping will also employ the "sfn" method. \item \code{"ker"} which uses a kernel estimate of the sandwich as proposed by Powell(1991). \item \code{"boot"} which implements one of several possible bootstrapping alternatives for estimating standard errors including a variate of the wild bootstrap for clustered response. See \code{\link{boot.rq}} for further details. \item \code{"BLB"} which implements the bag of little bootstraps method proposed in Kleiner, et al (2014). The sample size of the little bootstraps is controlled by the parameter \code{gamma}, see below. At present only \code{bsmethod = "xy"} is sanction, and even that is experimental. This option is intended for applications with very large n where other flavors of the bootstrap can be slow. \item \code{"conquer"} which is invoked automatically if the fitted object was created with \code{method = "conquer"}, and returns the multiplier bootstrap percentile confidence intervals described in He et al (2020). \item \code{"extreme"} which uses the subsampling method of Chernozhukov Fernandez-Val, and Kaji (2018) designed for inference on extreme quantiles. } If \code{se = NULL} (the default) and \code{covariance = FALSE}, and the sample size is less than 1001, then the "rank" method is used, otherwise the "nid" method is used. } \item{covariance}{ logical flag to indicate whether the full covariance matrix of the estimated parameters should be returned. } \item{hs}{ Use Hall Sheather bandwidth for sparsity estimation If false revert to Bofinger bandwidth. } \item{U}{Resampling indices or gradient evaluations used for bootstrap, see \code{\link{boot.rq}}.} \item{gamma}{parameter controlling the effective sample size of the'bag of little bootstrap samples that will be \code{b = n^gamma} where \code{n} is the sample size of the original model.} \item{...}{ Optional arguments to summary, e.g. bsmethod to use bootstrapping. see \code{\link{boot.rq}}. When using the "rank" method for confidence intervals, which is the default method for sample sizes less than 1000, the type I error probability of the intervals can be controlled with the alpha parameter passed via "...", thereby controlling the width of the intervals plotted by \code{plot.summary.rqs}. Similarly, the arguments alpha, mofn and kex can be passed when invoking the \code{"extreme"} option for "se" to control the percentile interval reported, given by estimated quantiles [alpha/2, 1 - alpha/2]; \code{kex} is a tuning parameter for the extreme value confidence interval construction. The size of the bootstrap subsamples for the "extreme" option can also be controlled by passing the argument \code{mofm} via "...". Default values for kex, mofn and alpha are 20, \code{floor(n/5)} and 0.1, respectively. } } \value{ a list is returned with the following components, when \code{object} is of class \code{"rqs"} then there is a list of such lists. \item{coefficients}{ a p by 4 matrix consisting of the coefficients, their estimated standard errors, their t-statistics, and their associated p-values, in the case of most "se" methods. For methods "rank" and "extreme" potentially asymetric confidence intervals are return in lieu of standard errors and p-values. } \item{cov}{ the estimated covariance matrix for the coefficients in the model, provided that \code{cov=TRUE} in the called sequence. This option is not available when se = "rank". } \item{Hinv}{ inverse of the estimated Hessian matrix returned if \code{cov=TRUE} and \code{se \%in\% c("nid","ker") }, note that for \code{se = "boot"} there is no way to split the estimated covariance matrix into its sandwich constituent parts. } \item{J}{ Unscaled Outer product of gradient matrix returned if \code{cov=TRUE} and \code{se != "iid"}. The Huber sandwich is \code{cov = tau (1-tau) Hinv \%*\% J \%*\% Hinv}. as for the \code{Hinv} component, there is no \code{J} component when \code{se == "boot"}. (Note that to make the Huber sandwich you need to add the tau (1-tau) mayonnaise yourself.) } \item{B}{Matrix of bootstrap realizations.} \item{U}{Matrix of bootstrap randomization draws.} } \details{ When the default summary method is used, it tries to estimate a sandwich form of the asymptotic covariance matrix and this involves estimating the conditional density at each of the sample observations, negative estimates can occur if there is crossing of the neighboring quantile surfaces used to compute the difference quotient estimate. A warning message is issued when such negative estimates exist indicating the number of occurrences -- if this number constitutes a large proportion of the sample size, then it would be prudent to consider an alternative inference method like the bootstrap. If the number of these is large relative to the sample size it is sometimes an indication that some additional nonlinearity in the covariates would be helpful, for instance quadratic effects. Note that the default \code{se} method is rank, unless the sample size exceeds 1001, in which case the \code{rank} method is used. There are several options for alternative resampling methods. When \code{summary.rqs} is invoked, that is when \code{summary} is called for a \code{rqs} object consisting of several \code{taus}, the \code{B} components of the returned object can be used to construct a joint covariance matrix for the full object.} \references{ Chernozhukov, Victor, Ivan Fernandez-Val, and Tetsuya Kaji, (2018) Extremal Quantile Regression, in Handbook of Quantile Regression, Eds. Roger Koenker, Victor Chernozhukov, Xuming He, Limin Peng, CRC Press. Koenker, R. (2004) \emph{Quantile Regression}. Bilias, Y. Chen, S. and Z. Ying, Simple resampling methods for censored quantile regression, \emph{J. of Econometrics}, 99, 373-386. Kleiner, A., Talwalkar, A., Sarkar, P. and Jordan, M.I. (2014) A Scalable bootstrap for massive data, \emph{JRSS(B)}, 76, 795-816. Powell, J. (1991) Estimation of Monotonic Regression Models under Quantile Restrictions, in Nonparametric and Semiparametric Methods in Econometrics, W. Barnett, J. Powell, and G Tauchen (eds.), Cambridge U. Press. } \seealso{ \code{\link{rq}} \code{\link{bandwidth.rq}} } \examples{ data(stackloss) y <- stack.loss x <- stack.x summary(rq(y ~ x, method="fn")) # Compute se's for fit using "nid" method. summary(rq(y ~ x, ci=FALSE),se="ker") # default "br" alg, and compute kernel method se's } \keyword{regression} quantreg/man/lprq.Rd0000644000176200001440000000323011555564235014131 0ustar liggesusers\name{lprq} \alias{lprq} \title{ locally polynomial quantile regression } \description{ This is a toy function to illustrate how to do locally polynomial quantile regression univariate smoothing. } \usage{ lprq(x, y, h, tau = .5, m = 50) } \arguments{ \item{x}{ The conditioning covariate} \item{y}{ The response variable } \item{h}{ The bandwidth parameter } \item{tau}{ The quantile to be estimated } \item{m}{ The number of points at which the function is to be estimated } } \details{ The function obviously only does locally linear fitting but can be easily adapted to locally polynomial fitting of higher order. The author doesn't really approve of this sort of smoothing, being more of a spline person, so the code is left is its (almost) most trivial form. } \value{ The function compute a locally weighted linear quantile regression fit at each of the m design points, and returns: \item{xx}{The design points at which the evaluation occurs} \item{fv}{The estimated function values at these design points} \item{dev}{The estimated first derivative values at the design points} } \references{ Koenker, R. (2004) Quantile Regression } \author{R. Koenker } \note{One can also consider using B-spline expansions see \code{bs}.} \seealso{ \code{rqss} for a general approach to oonparametric QR fitting. } \examples{ require(MASS) data(mcycle) attach(mcycle) plot(times,accel,xlab = "milliseconds", ylab = "acceleration (in g)") hs <- c(1,2,3,4) for(i in hs){ h = hs[i] fit <- lprq(times,accel,h=h,tau=.5) lines(fit$xx,fit$fv,lty=i) } legend(50,-70,c("h=1","h=2","h=3","h=4"),lty=1:length(hs)) } \keyword{smooth} \keyword{robust} quantreg/man/predict.rq.Rd0000644000176200001440000001074113034721464015224 0ustar liggesusers\name{predict.rq} \alias{predict.rq} \alias{predict.rqs} \alias{predict.rq.process} \title{Quantile Regression Prediction} \description{ Prediction based on fitted quantile regression model } \usage{ \method{predict}{rq}(object, newdata, type = "none", interval = c("none", "confidence"), level = .95, na.action = na.pass, ...) \method{predict}{rqs}(object, newdata, type = "Qhat", stepfun = FALSE, na.action = na.pass, ...) \method{predict}{rq.process}(object, newdata, type = "Qhat", stepfun = FALSE, na.action = na.pass, ...) } \arguments{ \item{object}{ object of class rq or rqs or rq.process produced by \code{rq} } \item{newdata}{An optional data frame in which to look for variables with which to predict. If omitted, the fitted values are used.} \item{interval}{type of interval desired: default is 'none', when set to 'confidence' the function returns a matrix predictions with point predictions for each of the 'newdata' points as well as lower and upper confidence limits.} \item{level}{converage probability for the 'confidence' intervals.} \item{type}{For \code{predict.rq}, the method for 'confidence' intervals, if desired. If 'percentile' then one of the bootstrap methods is used to generate percentile intervals for each prediction, if 'direct' then a version of the Portnoy and Zhou (1998) method is used, and otherwise an estimated covariance matrix for the parameter estimates is used. Further arguments to determine the choice of bootstrap method or covariance matrix estimate can be passed via the \dots argument. For \code{predict.rqs} and \code{predict.rq.process} when \code{stepfun = TRUE}, \code{type} is "Qhat", "Fhat" or "fhat" depending on whether the user would like to have estimates of the conditional quantile, distribution or density functions respectively. As noted below the two former estimates can be monotonized with the function \code{rearrange}. When the "fhat" option is invoked, a list of conditional density functions is returned based on Silverman's adaptive kernel method as implemented in \code{akj} and \code{approxfun}.} \item{stepfun}{If 'TRUE' return stepfunctions otherwise return matrix of predictions. these functions can be estimates of either the conditional quantile or distribution functions depending upon the \code{type} argument. When \code{stepfun = FALSE} a matrix of point estimates of the conditional quantile function at the points specified by the \code{newdata} argument. } \item{na.action}{ function determining what should be done with missing values in 'newdata'. The default is to predict 'NA'.} \item{\dots}{ Further arguments passed to or from other methods.} } \details{ Produces predicted values, obtained by evaluating the quantile regression function in the frame 'newdata' (which defaults to 'model.frame(object)'. These predictions purport to estimate the conditional quantile function of the response variable of the fitted model evaluated at the covariate values specified in "newdata" and the quantile(s) specified by the "tau" argument. Several methods are provided to compute confidence intervals for these predictions. } \value{ A vector or matrix of predictions, depending upon the setting of 'interval'. In the case that there are multiple taus in \code{object} when object is of class 'rqs' setting 'stepfun = TRUE' will produce a \code{stepfun} object or a list of \code{stepfun} objects. The function \code{rearrange} can be used to monotonize these step-functions, if desired. } \references{ Zhou, Kenneth Q. and Portnoy, Stephen L. (1998) Statistical inference on heteroscedastic models based on regression quantiles Journal of Nonparametric Statistics, 9, 239-260 } \author{R. Koenker} \seealso{ \code{\link{rq}} \code{\link{rearrange}}} \examples{ data(airquality) airq <- airquality[143:145,] f <- rq(Ozone ~ ., data=airquality) predict(f,newdata=airq) f <- rq(Ozone ~ ., data=airquality, tau=1:19/20) fp <- predict(f, newdata=airq, stepfun = TRUE) fpr <- rearrange(fp) plot(fp[[2]],main = "Conditional Ozone Quantile Prediction") lines(fpr[[2]], col="red") legend(.2,20,c("raw","cooked"),lty = c(1,1),col=c("black","red")) fp <- predict(f, newdata=airq, type = "Fhat", stepfun = TRUE) fpr <- rearrange(fp) plot(fp[[2]],main = "Conditional Ozone Distribution Prediction") lines(fpr[[2]], col="red") legend(20,.4,c("raw","cooked"),lty = c(1,1),col=c("black","red")) } \keyword{regression} quantreg/man/Munge.Rd0000644000176200001440000000117713745760073014237 0ustar liggesusers\name{Munge} \alias{Munge} \title{ Munge rqss formula } \description{ function to recursively substitute arguments into rqss formula } \usage{ Munge(formula, ...) } \arguments{ \item{formula}{ A rqss formula } \item{\dots}{ Arguments to be substituted into formula } } \details{ Intended (originally) for use with \code{demo(MCV)}. Based on an R-help suggestion of Gabor Grothendieck. } \value{ A new formula after substitution } \seealso{ \code{demo(MCV)} } \examples{ lams <- c(1.3, 3.3) f <- y ~ qss(x, lambda = lams[1]) + qss(z, lambda = lams[2]) + s ff <- Munge(f, lams = lams) } \keyword{~manip} quantreg/man/bandwidth.rq.Rd0000644000176200001440000000137411555564235015547 0ustar liggesusers\name{bandwidth.rq} \alias{bandwidth.rq} \title{ bandwidth selection for rq functions } \description{ function to compute bandwidth for sparsity estimation } \usage{ bandwidth.rq(p, n, hs=TRUE, alpha=0.05) } \arguments{ \item{p}{ quantile(s) of interest } \item{n}{ sample size } \item{hs}{ flag for hall-sheather method } \item{alpha}{ alpha level for intended confidence intervals } } \details{ If hs=TRUE (default) then the Hall-Sheather(1988) rule \eqn{O(n^{-1/3})} is used, if hs=FALSE then the Bofinger \eqn{O(n^{-1/5})} is used. } \value{ returns a vector of bandwidths corresponding to the argument p. } \references{ Hall and Sheather(1988, JRSS(B)),Bofinger (1975, Aus. J. Stat)} \author{ Roger Koenker rkoenker@uiuc.edu} \keyword{ regression } quantreg/man/plot.rqss.Rd0000644000176200001440000001266214620412247015120 0ustar liggesusers\name{plot.rqss} \alias{plot.rqss} \alias{plot.qss1} \alias{plot.qts1} \alias{plot.qss2} \alias{plot.summary.rqss} \title{Plot Method for rqss Objects} \description{ Takes a fitted \code{rqss} object produced by \code{rqss()} and plots the component smooth functions that make up the ANOVA decomposition. Since the components "omit the intercept" the estimated intercept is added back in -- this facilitates the comparison of quantile fits particularly. For models with a partial linear component or several \code{qss} components it may be preferable to plot the output of \code{predict.rqss}. Note that these functions are intended to plot \code{rqss} objects only, attempting to plot \code{summary.rqss} objects just generates a warning message. } \usage{ \method{plot}{rqss}(x, rug = TRUE, jit = TRUE, bands = NULL, coverage = 0.95, add = FALSE, shade = TRUE, select = NULL, pages = 0, titles = NULL, bcol = NULL, \dots) \method{plot}{qss1}(x, rug = TRUE, jit = TRUE, add = FALSE, \dots) \method{plot}{qts1}(x, rug = TRUE, jit = TRUE, add = FALSE, \dots) \method{plot}{qss2}(x, render = "contour", ncol = 100, zcol = NULL, \dots) \method{plot}{summary.rqss}(x, \dots) } \arguments{ \item{x}{a fitted \code{rqss} object produced by \code{\link{rqss}()}.} \item{...}{additional arguments for the plotting algorithm} \item{rug}{if TRUE, a rugplot for the x-coordinate is plotted} \item{jit}{if TRUE, the x-values of the rug plot are jittered} \item{bands}{if TRUE, confidence bands for the smoothed effects are plotted, if "uniform" then uniform bands are plotted, if "both" then both the uniform and the pointwise bands are plotted.} \item{coverage}{desired coverage probability of confidence bands, if requested} \item{select}{vector of indices of qss objects to be plotted, by default all} \item{pages}{number of pages desired for the plots} \item{render}{a character specifying the rendering for bivariate fits; either \code{"contour"} (default) or \code{"rgl"}. The latter requires package \pkg{rgl}.} \item{add}{if TRUE then add qss curve to existing (usually) scatterplot, otherwise initiate a new plot} \item{shade}{if TRUE then shade the confidence band} \item{titles}{title(s) as vector of character strings, by default titles are chosen for each plot as "Effect of CovariateName"} \item{bcol}{vector of two colors for confidence bands} \item{ncol, zcol}{Only for \code{render = "rgl"}: number of colors and z values for color construction.}%% FIXME: be more specific } \value{ The function produces plots for the ANOVA components as a side effect. For \code{"qss1"} the \code{"add = TRUE"} can be used to overplot the fit on a scatterplot. When there are multiple pages required \code{"par(ask = TRUE)"} is turned on so that the plots may be examined sequentially. If \code{bands != NULL} then a list with three components for each qss component is returned (invisibly): \item{x}{The x coordinates of the confidence bands} \item{blo}{The y coordinates of the lower confidence curve, if \code{bands = "both"} then this is a matrix with two columns} \item{bhi}{The y coordinates of the upper confidence curve, if \code{bands = "both"} then this is a matrix with two columns} } \details{ For univariate \code{qss} components with \code{Dorder = 0} the fitted function is piecewise constant, not piecewise linear. In this case the constraints are limited to increasing, decreasing or none. If \code{bands == "uniform"} then the bands are uniform bands based on the Hotelling (1939) tube approach. See also Naiman (1986), Johansen and Johnstone (1990), Sun and Loader (1994), and Krivobokova, Kneib, and Claeskens (2009), in particular the computation of the "tube length" is based on the last of these references. If \code{bands} is non null, and not "uniform" then pointwise bands are returned. Since bands for bivariate components are not (yet) supported, if requested such components will be returned as \code{NULL}. } \author{ Roger Koenker } \seealso{ \code{\link{rqss}}} \references{ [1] Hotelling, H. (1939): ``Tubes and Spheres in $n$-spaces, and a class of statistical problems,'' \emph{Am J. Math}, 61, 440--460. [2] Johansen, S., and I.M. Johnstone (1990): ``Hotelling's Theorem on the Volume of Tubes: Some Illustrations in Simultaneous Inference and Data Analysis,'' \emph{The Annals of Statistics}, 18, 652--684. [3] Naiman, D. (1986) Conservative confidence bands in curvilinear regression, \emph{The Annals of Statistics}, 14, 896--906. [4] Sun, J. and C.R. Loader, (1994) Simultaneous confidence bands for linear regression and smoothing, \emph{The Annals of Statistics}, 22, 1328--1345. [5] Krivobokova, T., T. Kneib, and G. Claeskens (2009) Simultaneous Confidence Bands for Penalized Spline Estimators, preprint. [6] Koenker, R. (2010) Additive Models for Quantile Regression: Model Selection and Confidence Bandaids, preprint. } \examples{ n <- 200 x <- sort(rchisq(n,4)) z <- x + rnorm(n) y <- log(x)+ .1*(log(x))^2 + log(x)*rnorm(n)/4 + z plot(x,y-z) fN <- rqss(y~qss(x,constraint="N")+z) plot(fN) fI <- rqss(y~qss(x,constraint="I")+z) plot(fI, col="blue") fCI <- rqss(y~qss(x,constraint="CI")+z) plot(fCI, col="red") %%keep objects for inspection : do not rm(n,x,y,z,fit) ## A bivariate example if(requireNamespace("interp")){ if(requireNamespace("interp")){ data(CobarOre) fCO <- rqss(z~qss(cbind(x,y),lambda=.08), data = CobarOre) plot(fCO) }} } \keyword{regression} \keyword{smooth} \keyword{iplot} quantreg/man/plot.KhmaladzeTest.Rd0000644000176200001440000000061413505172155016664 0ustar liggesusers \name{plot.KhmaladzeTest} \alias{plot.KhmaladzeTest} \title{ Plot a KhmaladzeTest object} \description{ Plot an object generated by KhmaladzeTest } \usage{ \method{plot}{KhmaladzeTest}(x, ...) } \arguments{ \item{x}{ Object returned from KhmaladzeTest representing the fit of the model. } \item{...}{ Optional arguments. } } \seealso{ \code{\link{KhmaladzeTest}}} \keyword{ regression} quantreg/man/FAQ.Rd0000644000176200001440000000067311555564235013572 0ustar liggesusers\name{FAQ} \alias{FAQ} \alias{ChangeLog} \title{FAQ and ChangeLog of a package} \description{ Show the FAQ or ChangeLog of a specified package } \usage{ FAQ(pkg = "quantreg") ChangeLog(pkg = "quantreg") } \arguments{ \item{pkg}{ Package Name } } \details{ Assumes that the FAQ and/or ChangeLog files exist in the proper "inst" directory. } \value{ Has only the side effect of showing the files on the screen. } \keyword{ documentation } quantreg/man/rq.fit.pfn.Rd0000644000176200001440000000222313652035114015126 0ustar liggesusers\name{rq.fit.pfn} \alias{rq.fit.pfn} \title{ Preprocessing Algorithm for Quantile Regression} \description{ A preprocessing algorithm for the Frisch Newton algorithm for quantile regression. This is one possible method for rq().} \usage{ rq.fit.pfn(x, y, tau=0.5, Mm.factor=0.8, max.bad.fixups=3, eps=1e-06) } \arguments{ \item{x}{design matrix usually supplied via rq() } \item{y}{ response vector usually supplied via rq() } \item{tau}{ quantile of interest } \item{Mm.factor}{ constant to determine sub sample size m} \item{max.bad.fixups}{ number of allowed mispredicted signs of residuals } \item{eps}{ convergence tolerance } } \details{ Preprocessing algorithm to reduce the effective sample size for QR problems with (plausibly) iid samples. The preprocessing relies on subsampling of the original data, so situations in which the observations are not plausibly iid, are likely to cause problems. The tolerance eps may be relaxed somewhat. } \value{ Returns an object of type rq } \references{ Portnoy and Koenker, Statistical Science, (1997) 279-300} \author{ Roger Koenker } \seealso{ \code{\link{rq}}} \keyword{ regression } quantreg/man/QTECox.Rd0000644000176200001440000000466411555564235014272 0ustar liggesusers\name{QTECox} \alias{QTECox} \title{Function to obtain QTE from a Cox model} \description{Computes quantile treatment effects comparable to those of crq model from a coxph object.} \usage{ QTECox(x, smooth = TRUE) } \arguments{ \item{x}{An object of class coxph produced by \code{coxph}.} \item{smooth}{Logical indicator if TRUE (default) then Cox survival function is smoothed.} } \details{ Estimates of the Cox QTE, \eqn{\frac{dQ(t|x)}{dx_{j}}}{(d/dx_j) Q( t | x ) } at \eqn{x=\bar{x}}{x=xbar}, can be expressed as a function of t as follows: \deqn{\frac{dQ(t|x)}{dx_{j}}=\frac{dt}{dx_{j}}\frac{dQ(t|x)}{dt}}{ (d/dx_j) Q( t | x ) = (d/dx_j)t * (d/dt) Q(t | x)} The Cox survival function, \eqn{S(y|x)=\exp \{-H_{0}(y)\exp (b^{\prime }x)\}}{S( y | x ) = exp{ - H_o(y) exp(b'x) }} \deqn{\frac{dS(y|x)}{dx_{j}}=S(y|x)log \{S(y|x)\}b_{j}}{(d/dx_j) S( y | x ) = S( y | x ) log(S( y | x )) b_j} where \eqn{\frac{dQ(t|x)}{dx_{j}}}{ (d/dt) Q(t | x) } can be estimated by \eqn{\frac{\Delta (t)}{\Delta (S)} (1-t)}{- (diff(t)/diff(S) (1-t)} where $S$ and $t$ denote the \code{surv} and \code{time} components of the \code{survfit} object. Note that since \eqn{t=1-S(y|x)}{t = 1 - S( y | x )}, the above is the value corresponding to the argument $(1-t)$; and furthermore \deqn{\frac{dt}{dx_{j}}=-\frac{dS(y|x)}{dx_{j}}=-(1-t) log (1-t)b_{j}}{ (d/dx_j)t = - (d/dx_j) S( y | x ) = - (1-t) log(1-t) b_j} Thus the QTE at the mean of x's is: \deqn{(1-S)= \frac{\Delta (t)}{\Delta (S)}S ~log (S)b_{j}}{(1 - S) = (diff(t)/diff(S) S log(S) b_j} Since \eqn{\Delta S}{diff(S)} is negative and $log (S)$ is also negative this has the same sign as \eqn{b_{j}} The crq model fits the usual AFT form Surv(log(Time),Status), then \deqn{\frac{d log (Q(t|x))}{dx_{j}}=\frac{dQ(t|x)}{dx_{j}}/ Q(t|x)}{(d/dx_j) log(Q( t | x )) = (d/dx_j) Q( t | x ) / Q( t | x )} This is the matrix form returned. } \value{ \item{taus }{points of evaluation of the QTE.} \item{QTE}{matrix of QTEs, the ith column contains the QTE for the ith covariate effect. Note that there is no intercept effect. see \code{plot.summary.crqs} for usage.} } \references{Koenker, R. and Geling, O. (2001). Reappraising Medfly longevity: a quantile regression survival analysis, J. Amer. Statist. Assoc., 96, 458-468} \author{Roger Koenker Stephen Portnoy & Tereza Neocleous} \seealso{\code{\link{crq}}} \keyword{survival} quantreg/man/rqss.object.Rd0000644000176200001440000000713314414306664015413 0ustar liggesusers\name{rqss.object} \alias{rqss.object} \alias{logLik.rqss} \alias{AIC.rqss} \alias{fitted.rqss} \alias{resid.rqss} \alias{print.rqss} \title{RQSS Objects and Summarization Thereof} \description{ Functions to reveal the inner meaning of objects created by \code{rqss} fitting. } \usage{ \method{logLik}{rqss}(object, ...) \method{AIC}{rqss}(object, ..., k=2) \method{print}{rqss}(x, ...) \method{resid}{rqss}(object, ...) \method{fitted}{rqss}(object, ...) } \arguments{ \item{object}{an object returned from \code{rqss} fitting, describing an additive model estimating a conditional quantile function. See \code{\link{qss}} for details on how to specify these terms.} \item{x}{an rqss object, as above.} \item{k}{a constant factor governing the weight attached to the penalty term on effective degrees of freedom of the fit. By default k =2 corresponding to the Akaike version of the penalty, negative values indicate that the k should be set to log(n) as proposed by Schwarz (1978).} \item{...}{additional arguments} } \details{ Total variation regularization for univariate and bivariate nonparametric quantile smoothing is described in Koenker, Ng and Portnoy (1994) and Koenker and Mizera(2003) respectively. The additive model extension of this approach depends crucially on the sparse linear algebra implementation for R described in Koenker and Ng (2003). Eventually, these functions should be expanded to provide an automated lambda selection procedure.} \value{ The function \code{summary.rqss} returns a list consisting of the following components: \item{fidelity}{Value of the quantile regression objective function.} \item{penalty}{A list consisting of the values of the total variation smoothing penalty for each of additive components.} \item{edf}{Effective degrees of freedom of the fitted model, defined as the number of zero residuals of the fitted model, Koenker Mizera (2003) for details.} \item{qssedfs}{A list of effective degrees of freedom for each of the additive components of the fitted model, defined as the number of non-zero elements of each penalty component of the residual vector.} \item{lamdas}{A list of the lambdas specified for each of the additive components of the model.} } \references{ [1] Koenker, R. and S. Portnoy (1997) The Gaussian Hare and the Laplacean Tortoise: Computability of Squared-error vs Absolute Error Estimators, (with discussion). \emph{Statistical Science} \bold{12}, 279--300. [2] Koenker, R., P. Ng and S. Portnoy, (1994) Quantile Smoothing Splines; \emph{Biometrika} \bold{81}, 673--680. [3] Koenker, R. and I. Mizera, (2003) Penalized Triograms: Total Variation Regularization for Bivariate Smoothing; \emph{JRSS(B)} \bold{66}, 145--163. [4] Koenker, R. and P. Ng (2003) SparseM: A Sparse Linear Algebra Package for R, \emph{J. Stat. Software}. } \author{ Roger Koenker } \seealso{ \code{\link{plot.rqss}} } \examples{ require(MatrixModels) n <- 200 x <- sort(rchisq(n,4)) z <- x + rnorm(n) y <- log(x)+ .1*(log(x))^2 + log(x)*rnorm(n)/4 + z plot(x, y-z) f.N <- rqss(y ~ qss(x, constraint= "N") + z) f.I <- rqss(y ~ qss(x, constraint= "I") + z) f.CI <- rqss(y ~ qss(x, constraint= "CI") + z) lines(x[-1], f.N $coef[1] + f.N $coef[-(1:2)]) lines(x[-1], f.I $coef[1] + f.I $coef[-(1:2)], col="blue") lines(x[-1], f.CI$coef[1] + f.CI$coef[-(1:2)], col="red") ## A bivariate example if(requireNamespace("interp")){ if(requireNamespace("interp")){ data(CobarOre) fCO <- rqss(z ~ qss(cbind(x,y), lambda= .08), data=CobarOre) plot(fCO) }}} \keyword{regression} \keyword{smooth} \keyword{robust} quantreg/man/latex.Rd0000644000176200001440000000055711555564235014301 0ustar liggesusers\name{latex} \alias{latex} \title{ Make a latex version of an R object } \description{ Generic function for converting an \R object into a latex file. } \usage{ latex(x, ...) } \arguments{ \item{x}{ \code{x} is an \R object } \item{\dots}{ \code{\dots} optional arguments } } \seealso{ \code{\link{latex.table}}, \code{\link{latex.summary.rqs}} } \keyword{IO} quantreg/man/table.rq.Rd0000644000176200001440000000074011555564235014666 0ustar liggesusers\name{table.rq} \alias{table.rq} \alias{latex.table.rq} \alias{plot.table.rq} \title{ Table of Quantile Regression Results } \description{ Defunct Function to produce a table of quantile regression results for a group of specified quantiles. See \code{rq} which now permits multiple taus. } \usage{ table.rq(x, \dots) } \arguments{ \item{x}{ input } \item{...}{ other optional arguments } } \value{ None. } \seealso{ \code{\link{rq}}, } \keyword{regression} quantreg/man/MelTemp.Rd0000644000176200001440000000103714223047042014504 0ustar liggesusers\name{MelTemp} \alias{MelTemp} \docType{data} \title{Daily maximum temperatures in Melbourne, Australia} \description{ Daily maximum temperatures in Melbourne, Australia, from 1981-1990. Leap days have been omitted. } \usage{data(MelTemp)} \format{Time series of frequency 365} \source{ Hyndman, R.J., Bashtannyk, D.M. and Grunwald, G.K. (1996) "Estimating and visualizing conditional densities". _Journal of Computational and Graphical Statistics_, *5*, 315-336. } \examples{ data(MelTemp) demo(Mel) } \keyword{datasets} quantreg/man/engel.Rd0000644000176200001440000000236111653563530014245 0ustar liggesusers\name{engel} \alias{engel} \title{Engel Data} \description{ Engel food expenditure data used in Koenker and Bassett(1982). This is a regression data set consisting of 235 observations on income and expenditure on food for Belgian working class households. } \usage{data(engel)} \format{A data frame containing 235 observations on 2 variables \describe{ \item{income}{annual household income in Belgian francs} \item{foodexp}{annual household food expenditure in Belgian francs} } } \references{ Koenker, R. and Bassett, G (1982) Robust Tests of Heteroscedasticity based on Regression Quantiles; \emph{Econometrica} \bold{50}, 43--61. } \examples{ ## See also demo("engel1") ## -------------- data(engel) plot(engel, log = "xy", main = "'engel' data (log - log scale)") plot(log10(foodexp) ~ log10(income), data = engel, main = "'engel' data (log10 - transformed)") taus <- c(.15, .25, .50, .75, .95, .99) rqs <- as.list(taus) for(i in seq(along = taus)) { rqs[[i]] <- rq(log10(foodexp) ~ log10(income), tau = taus[i], data = engel) lines(log10(engel$income), fitted(rqs[[i]]), col = i+1) } legend("bottomright", paste("tau = ", taus), inset = .04, col = 2:(length(taus)+1), lty=1) } \keyword{datasets} quantreg/man/Peirce.Rd0000644000176200001440000001121413726077726014371 0ustar liggesusers\name{Peirce} \alias{Peirce} \docType{data} \title{C.S. Peirce's Auditory Response Data} \description{ Data from sequence experiments conducted by C.S. Pierce in 1872 to determine the distribution of response times to an auditory stimulus. } \usage{data(Peirce)} \format{ A \code{link{list}} of 24 objects each representing one day of the experiment. Each element of the list consists of three components: the date the measurements were made, an \code{x} component recording the response time in milliseconds, and an associated \code{y} component recording a count of the number of times that the response was recorded to be equal to be equal to the corresponding \code{x} entry. There are roughly 500 observations (counts) on each of the 24 days. } \details{ A detailed description of the experiment can be found in Peirce (1873). A young man of about 18 with no prior experience was employed to respond to a signal ``consisting of a sharp sound like a rap, the answer being made upon a telegraph-operator's key nicely adjusted.'' The response times, made with the aid of a Hipp cronoscope were recorded to the nearest millisecond. The data was analyzed by Peirce who concluded that after the first day, when the the observer was entirely inexperienced, the curves representing the densities of the response times ``differed very little from that derived from the theory of least squares,'' i.e. from the Gaussian density. The data was subsequently analysed by Samama, in a diploma thesis supervised by Maurice Frechet, who reported briefly the findings in Frechet (1924), and by Wilson and Hilferty (1929). In both instances the reanalysis showed that Laplace's first law of error, the double exponential distribution, was a better representation for the data than was the Gaussian law. Koenker (2009) constains further discussion and an attempt to reproduce the Wilson and Hilferty analysis. The data is available in two formats: The first in a "raw" form as 24 text files as scanned from the reprinted Peirce source, the second as an R dataset \code{Peirce.rda} containing the list. Only the latter is provided here, for the raw data and how to read see the more complete archive at: \url{ http://www.econ.uiuc.edu/~roger/research/frechet/frechet.html} See the examples section below for some details on provisional attempt to reproduce part of the Wilson and Hilferty analysis. An open question regarding the dataset is: How did Wilson and Hilferty compute standard deviations for the median as they appear in their table? The standard textbook suggestion of Yule (1917) yields far too small a bandwidth. The methods employed in the example section below, which rely on relatively recent proposals, are somewhat closer, but still deviate somewhat from the results reported by Wilson and Hilferty. } \source{ Peirce, C.~S. (1873): ``On the Theory of Errors of Observation,'' \emph{Report of the Superintendent of the U.S. Coast Survey}, pp. 200--224, Reprinted in \emph{The New Elements of Mathematics}, (1976) collected papers of C.S. Peirce, ed. by C. Eisele, Humanities Press: Atlantic Highlands, N.J., vol. 3, part 1, 639--676. } \references{ Fr\'echet, M. (1924): ``Sur la loi des erreurs d'observation,'' \emph{Matematichiskii Sbornik}, 32, 5--8. Koenker, R. (2009): ``The Median is the Message: Wilson and Hilferty's Reanalysis of C.S. Peirce's Experiments on the Law of Errors,'' \emph{American Statistician}, 63, 20-25. Wilson, E.~B., and M.~M. Hilferty (1929): ``Note on C.S. Peirces Experimental Discussion of the Law of Errors,'' \emph{Proceedings of the National Academy of Sciences of the U.S.A.}, 15, 120--125. Yule, G.~U. (1917): \emph{An Introduction to the Theory of Statistics}. Charles Griffen: London, 4 edn. } \examples{ # Make table like Wilson and Hilferty data("Peirce") set.seed(10) #Dither the counts tab <- matrix(0,24,11) for(i in 1:24){ y <- rep(Peirce[[i]]$x, Peirce[[i]]$y) + runif(sum(Peirce[[i]]$y), -.5, .5) f1 <- summary(rq(y~1),se="iid")$coef[1:2] n <- length(y) f0 <- 1/(2 * sum(abs(y-f1[1])/n)) #Laplace proposal f0 <- (1/(2 * f0))/ sqrt(n) f2 <- summary(lm(y~1))$coef[1:2] outm <- sum(y < (f1[1] - 3.1 * sqrt(n) * f2[2])) outp <- sum(y > (f1[1] + 3.1 * sqrt(n) * f2[2])) outt <- outm + outp inm <- y > (f1[1] - 0.25 * sqrt(n) * f2[2]) inp <- y < (f1[1] + 0.25 * sqrt(n) * f2[2]) int <- sum(inm * inp) Eint <- round(n * (pnorm(.25) - pnorm(-.25))) excess <- round(100*(int - Eint)/Eint) tab[i,] <- c(f1, f0, f2, outm, outp, outt,int,Eint,excess) cnames <- c("med","sdmed1","sdmed0","mean","sdmean","below","above","outliers", "inliers","Einliers","ExcessIns") dimnames(tab) <- list(paste("Day",1:24),cnames) } } \keyword{datasets} quantreg/man/rq.fit.sfn.Rd0000644000176200001440000000601411555564235015146 0ustar liggesusers\name{rq.fit.sfn} \alias{rq.fit.sfn} \alias{sfnMessage} \title{Sparse Regression Quantile Fitting} \description{ Fit a quantile regression model using a sparse implementation of the Frisch-Newton interior-point algorithm. } \usage{ rq.fit.sfn(a, y, tau = 0.5, rhs = (1-tau)*c(t(a) \%*\% rep(1,length(y))), control) } \arguments{ \item{a}{structure of the design matrix X stored in csr format} \item{y}{response vector} \item{tau}{desired quantile} \item{rhs}{the right-hand-side of the dual problem; regular users shouldn't need to specify this, but in special cases can be quite usefully altered to meet special needs. See e.g. Section 6.8 of Koenker (2005).} \item{control}{control parameters for fitting routines: see \code{sfn.control}} } \details{ This is a sparse implementation of the Frisch-Newton algorithm for quantile regression described in Portnoy and Koenker (1997). The sparse matrix linear algebra is implemented through the functions available in the R package \pkg{SparseM}. } \value{ \item{coef}{Regression quantile coefficients} \item{ierr}{Error code for the internal Fortran routine \code{srqfnc}: \describe{ \item{1:}{ insufficient work space in call to \code{extract}} \item{2:}{ nnzd > nnzdmax} \item{3:}{ insufficient storage in iwork when calling ordmmd} \item{4:}{ insufficient storage in iwork when calling sfinit} \item{5:}{ nnzl > nnzlmax when calling sfinit} \item{6:}{ nsub > nsubmax when calling sfinit} \item{7:}{ insufficient work space in iwork when calling symfct} \item{8:}{ inconsistancy in input when calling symfct} \item{9:}{ tmpsiz > tmpmax when calling bfinit; increase tmpmax} \item{10:}{ nonpositive diagonal encountered, not positive definite} \item{11:}{ insufficient work storage in tmpvec when calling blkfct} \item{12:}{ insufficient work storage in iwork when calling blkfct} \item{17:}{ tiny diagonals replaced with Inf when calling blkfct} } } \item{it}{Iteration count} \item{time}{Amount of time used in the computation} } \references{ Portnoy, S. and R. Koenker (1997) The Gaussian Hare and the Laplacean Tortoise: Computability of Squared-error vs Absolute Error Estimators, (with discussion). \emph{Statistical Science}, 12, 279-300. Koenker, R and Ng, P. (2003). SparseM: A Sparse Matrix Package for \R, \emph{J. of Stat. Software}, 8, 1--9. Koenker, R. (2005) \emph{Quantile Regression}, Cambridge U. Press. } \author{Pin Ng} \seealso{\code{rq.fit.sfnc} for the constrained version, \code{SparseM} for a sparse matrix package for \R } \examples{ ## An artificial example : n <- 200 p <- 50 set.seed(101) X <- rnorm(n*p) X[abs(X) < 2.0] <- 0 X <- cbind(1, matrix(X, n, p)) y <- 0.5 * apply(X,1,sum) + rnorm(n) ## true beta = (0.5, 0.5, ...) sX <- as.matrix.csr(X) try(rq.o <- rq.fit.sfn(sX, y)) #-> not enough tmp memory (tmpmax <- floor(1e5 + exp(-12.1)*(sX@ia[p+1]-1)^2.35)) ## now ok: rq.o <- rq.fit.sfn(sX, y, control = list(tmpmax= tmpmax)) } \keyword{regression} quantreg/man/latex.table.Rd0000644000176200001440000001160612200022472015340 0ustar liggesusers\name{latex.table} \alias{latex.table} \title{ Writes a latex formatted table to a file} \description{ Automatically generates a latex formatted table from the matrix x Controls rounding, alignment, etc, etc } \usage{\method{latex}{table}(x, file=as.character(substitute(x)), rowlabel=file, rowlabel.just="l", cgroup, n.cgroup, rgroup, n.rgroup=NULL, digits, dec, rdec, cdec, append=FALSE, dcolumn=FALSE, cdot=FALSE, longtable=FALSE, table.env=TRUE, lines.page=40, caption, caption.lot, label=file, double.slash=FALSE,\dots) } \arguments{ \item{x}{ A matrix \code{x} with dimnames} \item{file}{ Name of output \code{file} (.tex will be added) } \item{rowlabel}{ If `x' has row dimnames, rowlabel is a character string containing the column heading for the row dimnames. The default is the name of the argument for x. } \item{rowlabel.just}{ If `x' has row dimnames, specifies the justification for printing them. Possible values are ` "l", "r", "c"'. The heading (`rowlabel') itself is left justified if `rowlabel.just="l"', otherwise it is centered. } \item{cgroup}{ a vector of character strings defining major column headings. The default is to have none. } \item{n.cgroup}{ a vector containing the number of columns for which each element in cgroup is a heading. For example, specify `cgroup= c("Major 1","Major 2")', `n.cgroup=c(3,3)' if "Major 1" is to span columns 1-3 and "Major 2" is to span columns 4-6. `rowlabel' does not count in the column numbers. You can omit `n.cgroup' if all groups have the same number of columns. } \item{rgroup}{ a vector of character strings containing headings for row groups. `n.rgroup' must be present when `rgroup' is given. The first `n.rgroup[1]' rows are sectioned off and `rgroup[1]' is used as a bold heading for them. The usual row dimnames (which must be present if `rgroup' is) are indented. The next `n.rgroup[2]' rows are treated likewise, etc. } \item{n.rgroup}{integer vector giving the number of rows in each grouping. If `rgroup' is not specified, `n.rgroup' is just used to divide off blocks of rows by horizontal lines. If `rgroup' is given but `n.rgroup' is omitted, `n.rgroup' will default so that each row group contains the same number of rows. } \item{digits}{ causes all values in the table to be formatted to `digits' significant digits. `dec' is usually preferred. } \item{dec}{ If `dec' is a scalar, all elements of the matrix will be rounded to `dec' decimal places to the right of the decimal. `dec' can also be a matrix whose elements correspond to `x', for customized rounding of each element.} \item{rdec}{ a vector specifying the number of decimal places to the right for each row (`cdec' is more commonly used than `rdec') } \item{cdec}{ a vector specifying the number of decimal places for each column } \item{append}{ defaults to `F'. Set to `T' to append output to an existing file.} \item{dcolumn}{ Set to `T' to use David Carlisles `dcolumn' style for decimal alignment. Default is `F', which aligns columns of numbers by changing leading blanks to "~", the LaTeX space-holder. You will probably want to use `dcolumn' if you use `rdec', as a column may then contain varying number of places to the right of the decimal. `dcolumn' can line up all such numbers on the decimal point, with integer values right- justified at the decimal point location of numbers that actually contain decimal places. } \item{cdot}{ Set to `T' to use centered dots rather than ordinary periods in numbers.} \item{longtable}{ Set to `T' to use David Carlisles LaTeX `longtable' style, allowing long tables to be split over multiple pages with headers repeated on each page.} \item{table.env}{Set `table.env=FALSE' to suppress enclosing the table in a LaTeX `table' environment. `table.env' only applies when `longtable=FALSE'. You may not specify a `caption' if `table.env=FALSE'. } \item{lines.page}{ Applies if `longtable=TRUE'. No more than `lines.page' lines in the body of a table will be placed on a single page. Page breaks will only occur at `rgroup' boundaries. } \item{caption}{ a text string to use as a caption to print at the top of the first page of the table. Default is no caption. } \item{caption.lot}{ a text string representing a short caption to be used in the "List of Tables". By default, LaTeX will use `caption'. } \item{label}{ a text string representing a symbolic label for the table for referencing with the LaTex `\\ref\{label\}' command. The default is `file'. `label' is only used if `caption' is given. } \item{double.slash}{set to `T' to output `\\' as `\\\\' in LaTeX commands. Useful when you are reading the output file back into an S vector for later output. } \item{\dots}{other optional arguments} } \value{ returns invisibly } \references{ Minor modification of Frank Harrell's Splus code } \author{ Roger Koenker } \keyword{ utilities } quantreg/man/rq.fit.scad.Rd0000644000176200001440000000504711555564235015277 0ustar liggesusers\name{rq.fit.scad} \alias{rq.fit.scad} \title{ SCADPenalized Quantile Regression } \description{ The fitting method implements the smoothly clipped absolute deviation penalty of Fan and Li for fitting quantile regression models. When the argument \code{lambda} is a scalar the penalty function is the scad modified l1 norm of the last (p-1) coefficients, under the presumption that the first coefficient is an intercept parameter that should not be subject to the penalty. When \code{lambda} is a vector it should have length equal the column dimension of the matrix \code{x} and then defines a coordinatewise specific vector of scad penalty parameters. In this case \code{lambda} entries of zero indicate covariates that are not penalized. There should be a sparse version of this, but isn't (yet). } \usage{ rq.fit.scad(x, y, tau = 0.5, alpha = 3.2, lambda = 1, start="rq", beta = .9995, eps = 1e-06) } \arguments{ \item{x}{ the design matrix } \item{y}{ the response variable } \item{tau}{ the quantile desired, defaults to 0.5. } \item{alpha}{ tuning parameter of the scad penalty. } \item{lambda}{ the value of the penalty parameter that determines how much shrinkage is done. This should be either a scalar, or a vector of length equal to the column dimension of the \code{x} matrix. } \item{start}{ starting method, default method 'rq' uses the unconstrained rq estimate, while method 'lasso' uses the corresponding lasso estimate with the specified lambda. } \item{beta}{ step length parameter for Frisch-Newton method. } \item{eps}{ tolerance parameter for convergence. } } \value{ Returns a list with a coefficient, residual, tau and lambda components. When called from \code{"rq"} as intended the returned object has class "scadrqs". } \details{The algorithm is an adaptation of the "difference convex algorithm" described in Wu and Liu (2008). It solves a sequence of (convex) QR problems to approximate solutions of the (non-convex) scad problem.} \references{ Wu, Y. and Y. Liu (2008) Variable Selection in Quantile Regression, \emph{Statistica Sinica}, to appear. } \author{R. Koenker} \seealso{ \code{\link{rq}}} \examples{ n <- 60 p <- 7 rho <- .5 beta <- c(3,1.5,0,2,0,0,0) R <- matrix(0,p,p) for(i in 1:p){ for(j in 1:p){ R[i,j] <- rho^abs(i-j) } } set.seed(1234) x <- matrix(rnorm(n*p),n,p) \%*\% t(chol(R)) y <- x \%*\% beta + rnorm(n) f <- rq(y ~ x, method="scad",lambda = 30) g <- rq(y ~ x, method="scad", start = "lasso", lambda = 30) } \keyword{regression} quantreg/man/rq.process.object.Rd0000644000176200001440000000631411555564235016525 0ustar liggesusers\name{rq.process.object} \alias{rq.process.object} \title{ Linear Quantile Regression Process Object } \description{ These are objects of class \code{rq.process.} They represent the fit of a linear conditional quantile function model. } \section{Generation}{ This class of objects is returned from the \code{rq} function to represent a fitted linear quantile regression model. } \section{Methods}{ The \code{"rq.process"} class of objects has methods for the following generic functions: \code{effects}, \code{formula} , \code{labels} , \code{model.frame} , \code{model.matrix} , \code{plot} , \code{predict} , \code{print} , \code{print.summary} , \code{summary} } \section{Structure}{ The following components must be included in a legitimate \code{rq.process} object. \describe{ \item{\code{sol}}{ The primal solution array. This is a (p+3) by J matrix whose first row contains the 'breakpoints' \eqn{tau_1, tau_2, \dots, tau_J}, of the quantile function, i.e. the values in [0,1] at which the solution changes, row two contains the corresponding quantiles evaluated at the mean design point, i.e. the inner product of xbar and \eqn{b(tau_i)}, the third row contains the value of the objective function evaluated at the corresponding \eqn{tau_j}, and the last p rows of the matrix give \eqn{b(tau_i)}. The solution \eqn{b(tau_i)} prevails from \eqn{tau_i} to \eqn{tau_i+1}. Portnoy (1991) shows that \eqn{J=O_p(n \log n)}{J=O_p(n log n)}. } \item{\code{dsol}}{ The dual solution array. This is a n by J matrix containing the dual solution corresponding to sol, the ij-th entry is 1 if \eqn{y_i > x_i b(tau_j)}, is 0 if \eqn{y_i < x_i b(tau_j)}, and is between 0 and 1 otherwise, i.e. if the residual is zero. See Gutenbrunner and Jureckova(1991) for a detailed discussion of the statistical interpretation of dsol. The use of dsol in inference is described in Gutenbrunner, Jureckova, Koenker, and Portnoy (1994). } } } \details{ These arrays are computed by parametric linear programming methods using using the exterior point (simplex-type) methods of the Koenker--d'Orey algorithm based on Barrodale and Roberts median regression algorithm. } \references{ [1] Koenker, R. W. and Bassett, G. W. (1978). Regression quantiles, \emph{Econometrica}, \bold{46}, 33--50. [2] Koenker, R. W. and d'Orey (1987, 1994). Computing Regression Quantiles. \emph{Applied Statistics}, \bold{36}, 383--393, and \bold{43}, 410--414. [3] Gutenbrunner, C. Jureckova, J. (1991). Regression quantile and regression rank score process in the linear model and derived statistics, \emph{Annals of Statistics}, \bold{20}, 305--330. [4] Gutenbrunner, C., Jureckova, J., Koenker, R. and Portnoy, S. (1994) Tests of linear hypotheses based on regression rank scores. \emph{Journal of Nonparametric Statistics}, (2), 307--331. [5] Portnoy, S. (1991). Asymptotic behavior of the number of regression quantile breakpoints, \emph{SIAM Journal of Scientific and Statistical Computing}, \bold{12}, 867--883. } \seealso{ \code{\link{rq}}. } \keyword{regression} quantreg/man/Mammals.Rd0000644000176200001440000000342512504615734014544 0ustar liggesusers\name{Mammals} \alias{Mammals} \docType{data} \title{Garland(1983) Data on Running Speed of Mammals} \description{ Observations on the maximal running speed of mammal species and their body mass. } \usage{data(Mammals)} \format{ A data frame with 107 observations on the following 4 variables. \describe{ \item{weight}{Body mass in Kg for "typical adult sizes"} \item{speed}{Maximal running speed (fastest sprint velocity on record)} \item{hoppers}{logical variable indicating animals that ambulate by hopping, e.g. kangaroos} \item{specials}{logical variable indicating special animals with "lifestyles in which speed does not figure as an important factor": Hippopotamus, raccoon (Procyon), badger (Meles), coati (Nasua), skunk (Mephitis), man (Homo), porcupine (Erithizon), oppossum (didelphis), and sloth (Bradypus) } } } \examples{ data(Mammals) attach(Mammals) x <- log(weight) y <- log(speed) plot(x,y, xlab="Weight in log(Kg)", ylab="Speed in log(Km/hour)",type="n") points(x[hoppers],y[hoppers],pch = "h", col="red") points(x[specials],y[specials],pch = "s", col="blue") others <- (!hoppers & !specials) points(x[others],y[others], col="black",cex = .75) fit <- rqss(y ~ qss(x, lambda = 1),tau = .9) plot(fit) } \details{ Used by Chappell (1989) and Koenker, Ng and Portnoy (1994) to illustrate the fitting of piecewise linear curves. } \source{ Garland, T. (1983) The relation between maximal running speed and body mass in terrestrial mammals, \emph{J. Zoology}, 199, 1557-1570. } \references{ Koenker, R., P. Ng and S. Portnoy, (1994) Quantile Smoothing Splines'' \emph{Biometrika}, 81, 673-680. Chappell, R. (1989) Fitting Bent Lines to Data, with Applications ot Allometry, \emph{J. Theo. Biology}, 138, 235-256. } \seealso{\code{\link{rqss}}} \keyword{datasets} quantreg/man/nlrq.Rd0000644000176200001440000001165411742021462014124 0ustar liggesusers\name{nlrq} \alias{nlrq} \alias{nlrqModel} \alias{print.nlrq} \alias{summary.nlrq} \alias{deviance.nlrq} \alias{formula.nlrq} \alias{coef.nlrq} \alias{fitted.nlrq} \alias{logLik.nlrq} \alias{AIC.nlrq} \alias{extractAIC.nlrq} \alias{predict.nlrq} \alias{print.summary.nlrq} \alias{tau.nlrq} \title{ Function to compute nonlinear quantile regression estimates} \description{ This function implements an R version of an interior point method for computing the solution to quantile regression problems which are nonlinear in the parameters. The algorithm is based on interior point ideas described in Koenker and Park (1994). } \usage{ nlrq(formula, data=parent.frame(), start, tau=0.5, control, trace=FALSE,method="L-BFGS-B") \method{summary}{nlrq}(object, ...) \method{print}{summary.nlrq}(x, digits = max(5, .Options$digits - 2), ...) } \arguments{ \item{formula}{ formula for model in nls format; accept self-starting models } \item{data}{ an optional data frame in which to evaluate the variables in `formula' } \item{start}{a named list or named numeric vector of starting estimates } \item{tau}{ a vector of quantiles to be estimated} \item{control}{ an optional list of control settings. See `nlrq.control' for the names of the settable control values and their effect.} \item{trace}{ logical value indicating if a trace of the iteration progress should be printed. Default is `FALSE'. If `TRUE' intermediary results are printed at the end of each iteration. } \item{method}{ method passed to optim for line search, default is "L-BFGS-B" but for some problems "BFGS" may be preferable. See \code{\link{optim}} for further details. Note that the algorithm wants to pass upper and lower bounds for the line search to optim, which is fine for the L-BFGS-B method. Use of other methods will produce warnings about these arguments -- so users should proceed at their own risk.} \item{object}{an object of class nlrq needing summary.} \item{x}{an object of class summary.nlrq needing printing.} \item{digits}{Significant digits reported in the printed table.} \item{...}{Optional arguments passed to printing function.} } \details{An `nlrq' object is a type of fitted model object. It has methods for the generic functions `coef' (parameters estimation at best solution), `formula' (model used), `deviance' (value of the objective function at best solution), `print', `summary', `fitted' (vector of fitted variable according to the model), `predict' (vector of data points predicted by the model, using a different matrix for the independent variables) and also for the function `tau' (quantile used for fitting the model, as the tau argument of the function). Further help is also available for the method `residuals'. The summary method for nlrq uses a bootstrap approach based on the final linearization of the model evaluated at the estimated parameters. } \value{ A list consisting of: \item{m}{an `nlrqModel' object similar to an `nlsModel' in package nls} \item{data }{the expression that was passed to `nlrq' as the data argument. The actual data values are present in the environment of the `m' component. } } \author{Based on S code by Roger Koenker modified for R and to accept models as specified by nls by Philippe Grosjean.} \references{ Koenker, R. and Park, B.J. (1994). An Interior Point Algorithm for Nonlinear Quantile Regression, Journal of Econometrics, 71(1-2): 265-283. } \seealso{ \code{\link{nlrq.control}} , \code{\link{residuals.nlrq}} } \examples{ # build artificial data with multiplicative error Dat <- NULL; Dat$x <- rep(1:25, 20) set.seed(1) Dat$y <- SSlogis(Dat$x, 10, 12, 2)*rnorm(500, 1, 0.1) plot(Dat) # fit first a nonlinear least-square regression Dat.nls <- nls(y ~ SSlogis(x, Asym, mid, scal), data=Dat); Dat.nls lines(1:25, predict(Dat.nls, newdata=list(x=1:25)), col=1) # then fit the median using nlrq Dat.nlrq <- nlrq(y ~ SSlogis(x, Asym, mid, scal), data=Dat, tau=0.5, trace=TRUE) lines(1:25, predict(Dat.nlrq, newdata=list(x=1:25)), col=2) # the 1st and 3rd quartiles regressions Dat.nlrq <- nlrq(y ~ SSlogis(x, Asym, mid, scal), data=Dat, tau=0.25, trace=TRUE) lines(1:25, predict(Dat.nlrq, newdata=list(x=1:25)), col=3) Dat.nlrq <- nlrq(y ~ SSlogis(x, Asym, mid, scal), data=Dat, tau=0.75, trace=TRUE) lines(1:25, predict(Dat.nlrq, newdata=list(x=1:25)), col=3) # and finally "external envelopes" holding 95 percent of the data Dat.nlrq <- nlrq(y ~ SSlogis(x, Asym, mid, scal), data=Dat, tau=0.025, trace=TRUE) lines(1:25, predict(Dat.nlrq, newdata=list(x=1:25)), col=4) Dat.nlrq <- nlrq(y ~ SSlogis(x, Asym, mid, scal), data=Dat, tau=0.975, trace=TRUE) lines(1:25, predict(Dat.nlrq, newdata=list(x=1:25)), col=4) leg <- c("least squares","median (0.5)","quartiles (0.25/0.75)",".95 band (0.025/0.975)") legend(1, 12.5, legend=leg, lty=1, col=1:4) } \keyword{models} \keyword{regression} \keyword{nonlinear} \keyword{robust} quantreg/man/Bosco.Rd0000644000176200001440000000227611555564235014231 0ustar liggesusers\name{Bosco} \alias{Bosco} \title{Boscovich Data} \description{ Boscovich data used to estimate the ellipticity of the earth. There are five measurements of the arc length of one degree of latitude taken at 5 different latitudes. See Koenker (2005) for further details and references. } \usage{data(Bosco)} \format{A data frame containing 5 observations on 2 variables \describe{ \item{x}{sine squared of latitude measured in degrees} \item{y}{arc length of one degree of latitude measured in toise - 56,700, one toise approximately equals 1.95 meters. } } } \references{ Koenker, R. (2005), "Quantile Regression", Cambridge. } \examples{ data(Bosco) plot(0:10/10,0:10*100,xlab="sin^2(latitude)", ylab="arc-length of 1 degree of latitude",type="n") points(Bosco) text(Bosco, pos = 3, rownames(Bosco)) z <- rq(y ~ x, tau = -1, data = Bosco) title("Boscovitch Ellipticity of the Earth Example") xb <- c(.85,.9,.6,.6) yb <- c(400,600,450,600) for(i in 1:4){ abline(c(z$sol[4:5,i])) interval <- paste("t=(",format(round(z$sol[1,i],2)),",", format(round(z$sol[1,i+1],2)),")",delim="") text(xb[i],yb[i],interval) } } \keyword{datasets} quantreg/man/rq.wfit.Rd0000644000176200001440000000142511555564235014551 0ustar liggesusers\name{rq.wfit} \alias{rq.wfit} \title{Function to choose method for Weighted Quantile Regression } \description{ Weight the data and then call the chosen fitting algorithm. } \usage{ rq.wfit(x, y, tau=0.5, weights, method="br", ...) } \arguments{ \item{x}{ the design matrix } \item{y}{ the response variable } \item{tau}{ the quantile desired, if tau lies outside (0,1) the whole process is estimated. } \item{weights}{ weights used in the fitting } \item{method}{ method of computation: "br" is Barrodale and Roberts exterior point "fn" is the Frisch-Newton interior point method. } \item{...}{ Optional arguments passed to fitting routine. } } \seealso{ \code{\link{rq}} \code{\link{rq.fit.br}} \code{\link{rq.fit.fnb}}} \keyword{ regression } quantreg/man/qss.Rd0000644000176200001440000001046514414306664013766 0ustar liggesusers\name{qss} \alias{qss} \alias{qss1} \alias{qts1} \alias{qss2} \alias{triogram.fidelity} \alias{triogram.penalty} \title{Additive Nonparametric Terms for rqss Fitting} \description{ In the formula specification of \code{rqss} nonparametric terms are specified with \code{qss}. Both univariate and bivariate specifications are possible, and qualitative constraints may also be specified for the qss terms. } \usage{ qss(x, constraint = "N", lambda = 1, ndum = 0, dummies = NULL, Dorder = 1, w = rep(1, length(x))) } \arguments{ \item{x}{The covariate determining the nonparametric component, if x is a matrix with two columns then the qss function will construct a penalized triogram term.} \item{lambda}{The smoothing parameter governing the tradeoff between fidelity and the penalty component for this term. Larger lambdas produce smoother fits. In future versions there should be an automatic mechanism for default choice of the lambdas. For now, this is the responsibility of the user.} \item{constraint}{Optional specification of qualitative constraints on the fitted univariate qss functions, take the values: "N","I","D","V","C" "VI","VD","CI","CD" for none, increasing, decreasing, convex, concave, convex and increasing, etc. And for bivariate qss components can take the values "N","V","C" for none, convex, and concave. Note that confidence bands for constrained fits of this sort, while available from \code{plot.rqss} as of yet lack a formal justification.} \item{ndum}{number of dummy vertices: this is only relevant for qss2 terms. In addition to vertices at the observed (x,y) points ndum dummy vertices are generated -- distributed uniformly over the rectangle given by the Cartesian product of the ranges of x and y -- observations that fall in the convex hull of the observations are retained. So the actual number of dummy vertices used is smaller than ndum. The values of these vertices are returned in the list dummies, so that they can be reused.} \item{Dorder}{Order of the total variation penalty, the default of 1 implies a penalty on the first derivative of the fitted function, a value of 0 implies total variation of the fitted function itself will be penalized. Note that only monotonicity constraints, "I" and "D" are allowed when \code{Dorder = 0}, and result in estimates that are equivalent to a form of isotonic regression when lambda is sufficiently near zero. Results in this case from the package \pkg{isotone} may differ slightly when plotted due to multiple solutions so it is prudent to evaluate the objective function for both solutions.} \item{dummies}{list of dummy vertices as generated, for example by triogram.fidelity when ndum > 0. Should be a list with x and y components. These points should lie inside the convex hull of the real xy points, but no explicit checking of this assertion is currently done.} \item{w}{ weights not yet unimplemented } } \details{ The various pieces returned are stored in sparse matrix.csr form. See \code{\link{rqss}} for details on how they are assembled. To preserve the sparsity of the design matrix the first column of each qss term is dropped. This differs from the usual convention that would have forced qss terms to have mean zero. This convention has implications for prediction that need to be recognized. The penalty components for qss terms are based on total variation penalization of the first derivative (and gradient, for bivariate x) as described in the references appearing in the help for \code{rqss}. When Dorder = 0, fitting is like the taut string methods of Davies (2014), except for the fact that fidelity is quantilesque rather than quadratic, and that no provision is made for automatic selection of the smoothing parameter. For the bivariate case, package \pkg{interp} (and for plotting also \pkg{interp}) are required (automatically, by the \R code). } \value{ \item{F}{Fidelity component of the design matrix} \item{dummies}{List of dummy vertices} \item{A}{Penalty component of the design matrix} \item{R}{Constraint component of the design matrix} \item{r}{Constraint component of the rhs} } \author{Roger Koenker} \references{ Davies, Laurie (2014) \emph{Data Analysis and Approximate Models}, CRC Press. } \seealso{ \code{\link{rqss}}} \keyword{smooth} \keyword{robust} quantreg/man/ParetoTest.Rd0000644000176200001440000000431613733407766015260 0ustar liggesusers\name{ParetoTest} \alias{ParetoTest} \alias{Hill} \alias{Hill.fit} \alias{print.Hill} \alias{summary.Hill} \alias{print.summary.Hill} \alias{Pickands.fit} \alias{Pickands} \alias{print.Pickands} \alias{summary.Pickands} \alias{print.summary.Pickands} \alias{Pickands.fit} \title{Estimation and Inference on the Pareto Tail Exponent for Linear Models} \description{Estimation and inference about the tail behavior of the response in linear models are based on the adaptation of the univariate Hill (1975) and Pickands (1975) estimators for quantile regression by Chernozhukov, Fernandez-Val and Kaji (2018).} \usage{ ParetoTest(formula, tau = 0.1, data = NULL, flavor = "Hill", m = 2, cicov = .9, ...) } \arguments{ \item{formula}{a formula specifying the model to fit by \code{\link{rq}}} \item{tau}{A threshold on which to base the estimation} \item{data}{a data frame within which to interpret the formula} \item{flavor}{Currently limited to either "Hill" or "Pickands"} \item{m}{a tuning parameter for the Pickands method .} \item{cicov}{Desired coverage probability of confidence interval.} \item{...}{other arguments to be passed to \code{\link{summary.rq}}. by default the summary method is the usual xy bootstrap, with \code{B = 200} replications.} } \value{ an object of class ParetoTest is returned containing: \item{z}{ A named vector with components: the estimate, a bias corrected estimate, a lower bound of the confidence interval, an upper bound of the confidence interval, and a Bootstrap Standard Error estimate.} \item{tau}{ The tau threshold used to compute the estimate } } \examples{ n = 500 x = rnorm(n) y = x + rt(n,2) Z = ParetoTest(y ~ x, .9, flavor = "Pickands") } \keyword{htest} \references{ Chernozhukov, Victor, Ivan Fernandez-Val, and Tetsuya Kaji, (2018) Extremal Quantile Regression, in Handbook of Quantile Regression, Eds. Roger Koenker, Victor Chernozhukov, Xuming He, Limin Peng, CRC Press. Hill, B. M. (1975). A simple general approach to inference about the tail of a distribution. The Annals of Statistics 3(5), 1163-1174. Pickands, J. (1975). Statistical inference using extreme order statistics. The Annals of Statistics 3(1), 119-131. } quantreg/man/residuals.nlrq.Rd0000644000176200001440000000152211555564235016123 0ustar liggesusers\name{residuals.nlrq} \alias{residuals.nlrq} \title{ Return residuals of an nlrq object } \description{ Set algorithmic parameters for nlrq (nonlinear quantile regression function) } \usage{ \method{residuals}{nlrq}(object, type = c("response", "rho"), ...) } \arguments{ \item{object}{an `nlrq' object as returned by function `nlrq'} \item{type}{the type of residuals to return: "response" is the distance between observed and predicted values; "rho" is the weighted distance used to calculate the objective function in the minimisation algorithm as tau * pmax(resid, 0) + (1 - tau) * pmin(resid, 0), where resid are the simple residuals as above (with type="response"). } \item{...}{further arguments passed to or from other methods.} } \seealso{ \code{\link{nlrq}} } \keyword{models} \keyword{regression} \keyword{nonlinear} quantreg/man/rqs.fit.Rd0000644000176200001440000000113511612373423014532 0ustar liggesusers\name{rqs.fit} \alias{rqs.fit} \title{Function to fit multiple response quantile regression models} \usage{ rqs.fit(x, y, tau=0.5, tol = 0.0001) } \arguments{ \item{x}{ the design matrix an n by p matrix. } \item{y}{ the response variable as a n by m matrix } \item{tau}{ the quantile desired, if tau lies outside (0,1) } \item{tol}{ tolerance parameter for Barrodale and Roberts exterior point method. } } \description{Function intended for multiple response quantile regression called from \code{boot.rq} for wild bootstrap option.} \seealso{ \code{\link{boot.rq}} } \keyword{ regression } quantreg/man/dither.Rd0000644000176200001440000000375311555564235014444 0ustar liggesusers \name{dither} \alias{dither} \title{ Function to randomly perturb a vector} \description{ With malice aforethought, dither adds a specified random perturbation to each element of the input vector, usually employed as a device to mitigate the effect of ties. } \usage{ dither(x, type = "symmetric", value = NULL) } \arguments{ \item{x}{\code{x} a numeric vector } \item{type}{\code{type} is either 'symmetric' or 'right' } \item{value}{\code{value} scale of dequantization } } \details{ The function \code{dither} operates slightly differently than the function \code{jitter} in base R, permitting strictly positive perturbations with the option \code{type = "right"} and using somewhat different default schemes for the scale of the perturbation. Dithering the response variable is frequently a useful option in quantile regression fitting to avoid deleterious effects of degenerate solutions. See, e.g. Machado and Santos Silva (2005). For a general introduction and some etymology see the Wikipedia article on "dither". For integer data it is usually advisable to use \code{value = 1}. When 'x' is a matrix or array dither treats all elements as a vector but returns an object of the original class. } \value{ A dithered version of the input vector 'x'. } \references{ Machado, J.A.F. and Santos Silva, J.M.C. (2005), Quantiles for Counts, Journal of the American Statistical Association, vol. 100, no. 472, pp. 1226-1237. } \author{ R. Koenker } \note{ Some further generality might be nice, for example something other than uniform noise would be desirable in some circumstances. Note that when dithering you are entering into the "state of sin" that John von Neumann famously attributed to anyone considering "arithmetical methods of producing random digits." If you need to preserve reproducibility, then \code{set.seed} is your friend. } \seealso{ \code{\link{jitter}} } \examples{ x <- rlnorm(40) y <- rpois(40, exp(.5 + log(x))) f <- rq(dither(y, type = "right", value = 1) ~ x) } \keyword{ manip } quantreg/man/rqProcess.Rd0000644000176200001440000000324611555564235015143 0ustar liggesusers\name{rqProcess} \alias{rqProcess} \title{ Compute Standardized Quantile Regression Process } \description{ Computes a standardize quantile regression process for the model specified by the formula, on the partition of [0,1] specified by the taus argument, and standardized according to the argument nullH. Intended for use in \code{\link{KhmaladzeTest}}.} \usage{ rqProcess(formula, data, taus, nullH = "location", ...) } \arguments{ \item{formula}{model formula } \item{data}{data frame to be used to interpret formula } \item{taus}{ quantiles at which the process is to be evaluated, if any of the taus lie outside (0,1) then the full process is computed for all distinct solutions.} \item{nullH}{Null hypothesis to be used for standardization} \item{...}{optional arguments passed to \code{\link{summary.rq}}} } \details{ The process computes standardized estimates based on the hypothesis specified in the \code{nullH} argument. The Vhat component is rescaled by the Cholesky decomposition of the tau specific covariance matrix, the vhat component is rescaled by the marginal standard errors. The nature of the covariance matrix used for the standardization is controlled arguments passed via the \code{...} argument to \code{\link{summary.rq}}. If the full process is estimated then these covariance options aren't available and only a simple iid-error form of the covariance matrix is used. } \value{ \item{taus}{The points of evaluation of the process} \item{qtaus}{Values of xbar'betahat(taus)} \item{Vhat}{Joint parametric QR process} \item{vhat}{Marginal parametric QR processes} } \author{R. Koenker} \seealso{\code{\link{KhmaladzeTest}}} \keyword{regression} quantreg/man/ranks.Rd0000644000176200001440000000427111555564235014277 0ustar liggesusers\name{ranks} \alias{ranks} \title{ Quantile Regression Ranks } \description{ Function to compute ranks from the dual (regression rankscore) process. } \usage{ ranks(v, score="wilcoxon", tau=0.5, trim = NULL) } \arguments{ \item{v}{ object of class \code{"rq.process"} generated by \code{rq()} } \item{score}{ The score function desired. Currently implemented score functions are \code{"wilcoxon"}, \code{"normal"}, and \code{"sign"} which are asymptotically optimal for the logistic, Gaussian and Laplace location shift models respectively. The "normal" score function is also sometimes called van der Waerden scores. Also implemented are the \code{"tau"} which generalizes sign scores to an arbitrary quantile, \code{"interquartile"} which is appropriate for tests of scale shift, \code{normalscale} for Gaussian scale shift, \code{halfnormalscale} for Gaussian scale shift only to the right of the median, and \code{lehmann} for Lehmann local alternatives. See Koenker (2010) for further details on the last three of these scores. } \item{tau}{ the optional value of \code{tau} if the \code{"tau"} score function is used. } \item{trim}{optional trimming proportion parameter(s) -- only applicable for the Wilcoxon score function -- when one value is provided there is symmetric trimming of the score integral to the interval \code{(trim, 1-trim)}, when there are two values provided, then the trimming restricts the integration to \code{(trim[1], trim[2])}.} } \value{ The function returns two components. One is the ranks, the other is a scale factor which is the \eqn{L_2} norm of the score function. All score functions should be normalized to have mean zero. } \details{ See GJKP(1993) for further details. } \references{ Gutenbrunner, C., J. Jureckova, Koenker, R. and Portnoy, S. (1993) Tests of linear hypotheses based on regression rank scores, \emph{Journal of Nonparametric Statistics}, (2), 307--331. Koenker, R. Rank Tests for Heterogeneous Treatment Effects with Covariates, preprint. } \seealso{ \code{\link{rq}}, \code{\link{rq.test.rank}} \code{\link{anova}} } \examples{ data(stackloss) ranks(rq(stack.loss ~ stack.x, tau=-1)) } \keyword{regression} quantreg/man/rq.fit.fnb.Rd0000644000176200001440000000425613034720250015114 0ustar liggesusers\name{rq.fit.fnb} \alias{rq.fit.fnb} \title{ Quantile Regression Fitting via Interior Point Methods } \description{ This is a lower level routine called by \code{rq()} to compute quantile regression methods using the Frisch-Newton algorithm. } \usage{ rq.fit.fnb(x, y, tau=0.5, rhs = (1-tau)*apply(x,2,sum), beta=0.99995, eps=1e-06) } \arguments{ \item{x}{ The design matrix } \item{y}{ The response vector } \item{tau}{ The quantile of interest, must lie in (0,1) } \item{rhs}{ The right hand size of the dual equality constraint, modify at your own risk. } \item{beta}{ technical step length parameter -- alter at your own risk! } \item{eps}{ tolerance parameter for convergence. In cases of multiple optimal solutions there may be some discrepancy between solutions produced by method \code{"fn"} and method \code{"br"}. This is due to the fact that \code{"fn"} tends to converge to a point near the centroid of the solution set, while \code{"br"} stops at a vertex of the set. } } \value{ returns an object of class \code{"rq"}, which can be passed to \code{\link{summary.rq}} to obtain standard errors, etc. } \details{ The details of the algorithm are explained in Koenker and Portnoy (1997). The basic idea can be traced back to the log-barrier methods proposed by Frisch in the 1950's for constrained optimization. But the current implementation is based on proposals by Mehrotra and others in the recent (explosive) literature on interior point methods for solving linear programming problems. This function replaces an earlier one \code{rq.fit.fn}, which required the initial dual values to be feasible. This version allows the user to specify an infeasible starting point for the dual problem, that is one that may not satisfy the dual equality constraints. It still assumes that the starting value satisfies the upper and lower bounds. } \references{ Koenker, R. and S. Portnoy (1997). The Gaussian Hare and the Laplacian Tortoise: Computability of squared-error vs. absolute-error estimators, with discussion, \emph{Statistical Science}, \bold{12}, 279-300. } \seealso{ \code{\link{rq}}, \code{\link{rq.fit.br}}, \code{\link{rq.fit.pfn}} } \keyword{regression} quantreg/man/crq.Rd0000644000176200001440000002571213574656101013746 0ustar liggesusers\name{crq} \alias{crq} \alias{crq.fit.por} \alias{crq.fit.por2} \alias{crq.fit.pow} \alias{crq.fit.pen} \alias{print.crq} \alias{print.crq} \alias{coef.crq} \alias{predict.crq} \alias{predict.crqs} \alias{Curv} \title{Functions to fit censored quantile regression models} \description{Fits a conditional quantile regression model for censored data. There are three distinct methods: the first is the fixed censoring method of Powell (1986) as implemented by Fitzenberger (1996), the second is the random censoring method of Portnoy (2003). The third method is based on Peng and Huang (2008).} \usage{ crq(formula, taus, data, subset, weights, na.action, method = c("Powell", "Portnoy", "Portnoy2", "PengHuang"), contrasts = NULL, ...) crq.fit.pow(x, y, yc, tau=0.5, weights=NULL, start, left=TRUE, maxit = 500) crq.fit.pen(x, y, cen, weights=NULL, grid, ctype = "right") crq.fit.por(x, y, cen, weights=NULL, grid, ctype = "right") crq.fit.por2(x, y, cen, weights=NULL, grid, ctype = "right") Curv(y, yc, ctype=c("left","right")) \method{print}{crq}(x, ...) \method{print}{crq}(x, ...) \method{predict}{crq}(object, newdata, ...) \method{predict}{crqs}(object, newdata, type = NULL, ...) \method{coef}{crq}(object,taus = 1:4/5,...) } \arguments{ \item{formula}{A formula object, with the response on the left of the `~' operator, and the terms on the right. The response must be a \code{Surv} object as returned by either the \code{Curv} or \code{Surv} function. For the Powell method, the Surv object should be created by \code{Curv} and have arguments (event time, censoring time,type), where "type" can take values either "left" or "right". The default (for historical reasons) for type in this case is "left". For the Portnoy and Peng and Huang methods the \code{Surv} should be created with the usual \code{Surv} function and have (event time, censoring indicator).} \item{y}{The event time.} \item{newdata}{An optional data frame in which to look for variables with which to predict. If omitted, the fitted values are used.} \item{grid}{A vector of taus on which the quantile process should be evaluated. This should be monotonic, and take values in (0,1). For the "Portnoy" method, grid = "pivot" computes the full solution for all distinct taus. The "Portnoy" method also enforces an equally spaced grid, see the code for details.} \item{x}{An object of class \code{crq} or \code{crq}.} \item{object}{An object of class \code{crq} or \code{crq}.} \item{yc}{The censoring times for the "Powell" method.} \item{ctype}{Censoring type: for the "Powell" method, used in \code{Curv}, by default "left". If you don't like "left", maybe you will like "right". Note that for fixed censoring assumed in the "Powell" method, censoring times \code{yc} must be provided for all observations and the event times \code{y} must satisfy the (respective) inequality constraints. For the Portnoy and Peng-Huang methods ctype is determined by the specification of the response as specified in \code{Surv}. } \item{type}{specifies either "left" or "right" as the form of censoring in the \code{Surv} function for the "Portnoy" and "PengHuang" methods.} \item{cen}{The censoring indicator for the "Portnoy" and "PengHuang" methods.} \item{maxit}{Maximum number of iterations allowed for the "Powell" methods.} \item{start}{The starting value for the coefs for the "Powell" method. Because the Fitzenberger algorithm stops when it achieves a local minimum of the Powell objective function, the starting value acts as an a priori "preferred point". This is advantageous in some instances since the global Powell solution can be quite extreme. By default the starting value is the "naive rq" solution that treats all the censored observations as uncensored. If \code{start} is equal to "global" then an attempt is made to compute to global optimum of the Powell objective. This entails an exhaustive evaluation of all n choose p distinct basic solution so is rather impractical for moderately large problems. Otherwise, the starting value can specify a set of p indices from 1:n defining an initial basic solution, or it may specify a p-vector of initial regression coefficients. In the latter case the initial basic solution is the one closest to the specified parameter vector.} \item{left}{A logical indicator for left censoring for the "Powell" method.} \item{taus}{The quantile(s) at which the model is to be estimated.} \item{tau}{The quantile at which the model is to be estimated.} \item{data}{A data.frame in which to interpret the variables named in the `formula', in the `subset', and the `weights' argument.} \item{subset}{an optional vector specifying a subset of observations to be used in the fitting process.} \item{weights}{vector of observation weights; if supplied, the algorithm fits to minimize the sum of the weights multiplied into the absolute residuals. The length of weights vector must be the same as the number of observations. The weights must be nonnegative and it is strongly recommended that they be strictly positive, since zero weights are ambiguous.} \item{na.action}{a function to filter missing data. This is applied to the model.frame after any subset argument has been used. The default (with 'na.fail') is to create an error if any missing values are found. A possible alternative is 'na.omit', which deletes observations that contain one or more missing values. } \item{method}{The method used for fitting. There are currently two options: method "Powell" computes the Powell estimator using the algorithm of Fitzenberger (1996), method "Portnoy" computes the Portnoy (2003) estimator. The method is "PengHuang" uses the method of Peng and Huang (2007), in this case the variable "grid" can be passed to specify the vector of quantiles at which the solution is desired.} \item{contrasts}{a list giving contrasts for some or all of the factors default = 'NULL' appearing in the model formula. The elements of the list should have the same name as the variable and should be either a contrast matrix (specifically, any full-rank matrix with as many rows as there are levels in the factor), or else a function to compute such a matrix given the number of levels.} \item{...}{additional arguments for the fitting routine, for method "Powell" it may be useful to pass starting values of the regression parameter via the argument "start", while for methods "Portnoy" or "PengHuang" one may wish to specify an alternative to the default grid for evaluating the fit.} } \details{The Fitzenberger algorithm uses a variant of the Barrodale and Roberts simplex method. Exploiting the fact that the solution must be characterized by an exact fit to p points when there are p parameters to be estimated, at any trial basic solution it computes the directional derivatives in the 2p distinct directions and choses the direction that (locally) gives steepest descent. It then performs a one-dimensional line search to choose the new basic observation and continues until it reaches a local mimumum. By default it starts at the naive \code{rq} solution ignoring the censoring; this has the (slight) advantage that the estimator is consequently equivariant to canonical transformations of the data. Since the objective function is no longer convex there can be no guarantee that this produces a global minimum estimate. In small problems exhaustive search over solutions defined by p-element subsets of the n observations can be used, but this quickly becomes impractical for large p and n. This global version of the Powell estimator can be invoked by specifying \code{start = "global"}. Users interested in this option would be well advised to compute \code{choose(n,p)} for their problems before trying it. The method operates by pivoting through this many distinct solutions and choosing the one that gives the minimal Powell objective. The algorithm used for the Portnoy method is described in considerable detail in Portnoy (2003). There is a somewhat simplified version of the Portnoy method that is written in R and iterates over a discrete grid. This version should be considered somewhat experimental at this stage, but it is known to avoid some difficulties with the more complicated fortran version of the algorithm that can occur in degenerate problems. Both the Portnoy and Peng-Huang estimators may be unable to compute estimates of the conditional quantile parameters in the upper tail of distribution. Like the Kaplan-Meier estimator, when censoring is heavy in the upper tail the estimated distribution is defective and quantiles are only estimable on a sub-interval of (0,1). The Peng and Huang estimator can be viewed as a generalization of the Nelson Aalen estimator of the cumulative hazard function, and can be formulated as a variant of the conventional quantile regression dual problem. See Koenker (2008) for further details. This paper is available from the package with \code{vignette("crq")}.} \value{An object of class \code{crq}.} \references{ Fitzenberger, B. (1996): ``A Guide to Censored Quantile Regressions,'' in \emph{Handbook of Statistics}, ed. by C.~Rao, and G.~Maddala. North-Holland: New York. Fitzenberger, B. and P. Winker (2007): ``Improving the Computation of Censored Quantile Regression Estimators,'' CSDA, 52, 88-108. Koenker, R. (2008): ``Censored Quantile Regression Redux,'' \emph{J. Statistical Software}, 27, \url{https://www.jstatsoft.org/v27/i06}. Peng, L and Y Huang, (2008) Survival Analysis with Quantile Regression Models, \emph{J. Am. Stat. Assoc.}, 103, 637-649. Portnoy, S. (2003) ``Censored Quantile Regression,'' \emph{JASA}, 98,1001-1012. Powell, J. (1986) ``Censored Regression Quantiles,'' \emph{J. Econometrics}, 32, 143--155. } \author{Steve Portnoy and Roger Koenker} \seealso{\code{\link{summary.crq}}} \examples{ # An artificial Powell example set.seed(2345) x <- sqrt(rnorm(100)^2) y <- -0.5 + x +(.25 + .25*x)*rnorm(100) plot(x,y, type="n") s <- (y > 0) points(x[s],y[s],cex=.9,pch=16) points(x[!s],y[!s],cex=.9,pch=1) yLatent <- y y <- pmax(0,y) yc <- rep(0,100) for(tau in (1:4)/5){ f <- crq(Curv(y,yc) ~ x, tau = tau, method = "Pow") xs <- sort(x) lines(xs,pmax(0,cbind(1,xs)\%*\%f$coef),col="red") abline(rq(y ~ x, tau = tau), col="blue") abline(rq(yLatent ~ x, tau = tau), col="green") } legend(.15,2.5,c("Naive QR","Censored QR","Omniscient QR"), lty=rep(1,3),col=c("blue","red","green")) # crq example with left censoring set.seed(1968) n <- 200 x <-rnorm(n) y <- 5 + x + rnorm(n) plot(x,y,cex = .5) c <- 4 + x + rnorm(n) d <- (y > c) points(x[!d],y[!d],cex = .5, col = 2) f <- crq(survival::Surv(pmax(y,c), d, type = "left") ~ x, method = "Portnoy") g <- summary(f) for(i in 1:4) abline(coef(g[[i]])[,1]) } \keyword{survival} \keyword{regression} quantreg/man/rq.object.Rd0000644000176200001440000000721511555564235015051 0ustar liggesusers\name{rq.object} \alias{rq.object} \alias{formula.rq} \alias{logLik.rq} \alias{logLik.rqs} \alias{AIC.rq} \alias{AIC.rqs} \alias{extractAIC.rq} \title{ Linear Quantile Regression Object } \description{ These are objects of class \code{"rq"}. They represent the fit of a linear conditional quantile function model. } \section{Generation}{ This class of objects is returned from the \code{rq} function to represent a fitted linear quantile regression model. } \section{Methods}{ The \code{"rq"} class of objects has methods for the following generic functions: \code{coef}, \code{effects} , \code{formula} , \code{labels} , \code{model.frame} , \code{model.matrix} , \code{plot} , \code{logLik} , \code{AIC} , \code{extractAIC} , \code{predict} , \code{print} , \code{print.summary} , \code{residuals} , \code{summary} } \section{Structure}{ The following components must be included in a legitimate \code{rq} object. \describe{ \item{\code{coefficients}}{ the coefficients of the quantile regression fit. The names of the coefficients are the names of the single-degree-of-freedom effects (the columns of the model matrix). If the model was fitted by method \code{"br"} with \code{ci=TRUE}, then the coefficient component consists of a matrix whose first column consists of the vector of estimated coefficients and the second and third columns are the lower and upper limits of a confidence interval for the respective coefficients. } \item{\code{residuals}}{ the residuals from the fit. } \item{\code{dual}}{ the vector dual variables from the fit. } \item{\code{rho}}{ The value(s) of objective function at the solution. } \item{\code{contrasts}}{ a list containing sufficient information to construct the contrasts used to fit any factors occurring in the model. The list contains entries that are either matrices or character vectors. When a factor is coded by contrasts, the corresponding contrast matrix is stored in this list. Factors that appear only as dummy variables and variables in the model that are matrices correspond to character vectors in the list. The character vector has the level names for a factor or the column labels for a matrix. } \item{\code{model}}{ optionally the model frame, if \code{model=TRUE}. } \item{\code{x}}{ optionally the model matrix, if \code{x=TRUE}. } \item{\code{y}}{ optionally the response, if \code{y=TRUE}. } } } \details{ The coefficients, residuals, and effects may be extracted by the generic functions of the same name, rather than by the \code{$} operator. For pure \code{rq} objects this is less critical than for some of the inheritor classes. In particular, for fitted rq objects using "lasso" and "scad" penalties, \code{logLik} and \code{AIC} functions compute degrees of freedom of the fitted model as the number of estimated parameters whose absolute value exceeds a threshold \code{edfThresh}. By default this threshold is 0.0001, but this can be passed via the \code{AIC} function if this value is deemed unsatisfactory. The function \code{AIC} is a generic function in R, with parameter \code{k} that controls the form of the penalty: the default value of \code{k} is 2 which yields the classical Akaike form of the penalty, while \code{k <= 0} yields the Schwarz (BIC) form of the penalty. Note that the extractor function \code{coef} returns a vector with missing values omitted. } \seealso{ \code{\link{rq}}, \code{\link{coefficients}}. } \keyword{regression} quantreg/man/rq.fit.conquer.Rd0000644000176200001440000000420614620412471016023 0ustar liggesusers\name{rq.fit.conquer} \alias{rq.fit.conquer} \title{Optional Fitting Method for Quantile Regression} \description{ This fitting method provides a link to the gradient descent for convolution smoothed quantile regression problem implemented in the \pkg{conquer} package of He et al (2020).} \usage{ rq.fit.conquer (x, y, tau=0.5, kernel = c("Gaussian", "uniform", "parabolic", "triangular"), h = 0, tol = 1e-04, iteMax = 5000, ci = FALSE, alpha = 0.05, B = 200) } \arguments{ \item{x}{design matrix usually supplied via rq(), expected to have a intercept as the first column } \item{y}{ response vector usually supplied via rq() } \item{tau}{ quantile of interest } \item{kernel}{A character string specifying the choice of kernel function. Default is "Gaussian". Other choices are "uniform", "parabolic" or "triangular".} \item{h}{The bandwidth parameter for kernel smoothing of the QR objective function. Default is \eqn{max{((log(n) + p) / n)^0.4, 0.05}}. The default is used if the input value is less than 0.05.} \item{tol}{Tolerance level of the gradient descent algorithm. The gradient descent algorithm terminates when the maximal entry of the gradient is less than "tol". Default is 1e-05.} \item{iteMax}{Maximum number of iterations. Default is 5000.} \item{ci}{A logical flag. Default is FALSE. If "ci = TRUE", then three types of confidence intervals (percentile, pivotal and normal) will be constructed via multiplier bootstrap. This option is subsumed in normal use by the \code{summary.rq} functionality.} \item{alpha}{Nominal level for confidence intervals, may be passed via the call to \code{summary}} \item{B}{Number of bootstrap replications. May be passed via summary.} } \details{ See documentation in the \pkg{conquer} package. } \value{ Returns an object of class "rq". } \references{ Xuming He and Xiaoou Pan and Kean Ming Tan and Wen-Xin Zhou, (2020) conquer: Convolution-Type Smoothed Quantile Regression, \url{https://CRAN.R-project.org/package=conquer}} \seealso{\code{\link{rq}}} \keyword{regression} quantreg/man/rqss.Rd0000644000176200001440000001716014414307175014145 0ustar liggesusers\name{rqss} \alias{rqss} \alias{rqss.fit} \alias{[.terms} \alias{untangle.specials} \title{Additive Quantile Regression Smoothing} \description{ Fitting function for additive quantile regression models with possible univariate and/or bivariate nonparametric terms estimated by total variation regularization. See \code{summary.rqss} and \code{plot.rqss} for further details on inference and confidence bands. } \usage{ rqss(formula, tau = 0.5, data = parent.frame(), weights, subset, na.action, method = "sfn", lambda = NULL, contrasts = NULL, ztol = 1e-5, control, ...) } \arguments{ \item{formula}{ a formula object, with the response on the left of a `~' operator, and terms, separated by `+' operators, on the right. The terms may include \code{qss} terms that represent additive nonparametric components. These terms can be univariate or bivariate. See \code{\link{qss}} for details on how to specify these terms.} \item{tau}{ the quantile to be estimated, this must be a number between 0 and 1, } \item{data}{ a data.frame in which to interpret the variables named in the formula, or in the subset and the weights argument. } \item{weights}{ vector of observation weights; if supplied, the algorithm fits to minimize the sum of the weights multiplied into the absolute residuals. The length of weights must be the same as the number of observations. The weights must be nonnegative and it is strongly recommended that they be strictly positive, since zero weights are ambiguous. } \item{subset}{an optional vector specifying a subset of observations to be used in the fitting. This can be a vector of indices of observations to be included, or a logical vector.} \item{na.action}{ a function to filter missing data. This is applied to the model.frame after any subset argument has been used. The default (with \code{na.fail}) is to create an error if any missing values are found. A possible alternative is \code{na.omit}, which deletes observations that contain one or more missing values. } \item{method}{ the algorithmic method used to compute the fit. There are currently two options. Both are implementations of the Frisch--Newton interior point method described in detail in Portnoy and Koenker(1997). Both are implemented using sparse Cholesky decomposition as described in Koenker and Ng (2003). Option \code{"sfnc"} is used if the user specifies inequality constraints. Option \code{"sfn"} is used if there are no inequality constraints. Linear inequality constraints on the fitted coefficients are specified by a matrix \code{R} and a vector \code{r}, specified inside the \code{qss} terms, representing the constraints in the form \eqn{Rb \ge r}{Rb >= r}. The option \code{method = "lasso"} allows one to penalize the coefficients of the covariates that have been entered linearly as in \code{\link{rq.fit.lasso}}; when this is specified then there should be an additional \code{lambda} argument specified that determines the amount of shrinkage. } \item{lambda}{ can be either a scalar, in which case all the slope coefficients are assigned this value, or alternatively, the user can specify a vector of length equal to the number of linear covariates plus one (for the intercept) and these values will be used as coordinate dependent shrinkage factors. } \item{contrasts}{ a list giving contrasts for some or all of the factors default = \code{NULL} appearing in the model formula. The elements of the list should have the same name as the variable and should be either a contrast matrix (specifically, any full-rank matrix with as many rows as there are levels in the factor), or else a function to compute such a matrix given the number of levels. } \item{ztol}{A zero tolerance parameter used to determine the number of zero residuals in the fitted object which in turn determines the effective dimensionality of the fit.} \item{control}{ control argument for the fitting routines (see \code{\link{sfn.control}}} \item{...}{Other arguments passed to fitting routines} } \details{ Total variation regularization for univariate and bivariate nonparametric quantile smoothing is described in Koenker, Ng and Portnoy (1994) and Koenker and Mizera(2003) respectively. The additive model extension of this approach depends crucially on the sparse linear algebra implementation for R described in Koenker and Ng (2003). There are extractor methods \code{\link{logLik}} and \code{\link{AIC}} that is relevant to lambda selection. A more detailed description of some recent developments of these methods is available from within the package with \code{vignette("rq")}. Since this function uses sparse versions of the interior point algorithm it may also prove to be useful for fitting linear models without \code{\link{qss}} terms when the design has a sparse structure, as for example when there is a complicated factor structure. If the \pkg{MatrixModels} and \pkg{Matrix} packages are both loadable then the linear-in-parameters portion of the design matrix is made in sparse matrix form; this is helpful in large applications with many factor variables for which dense formation of the design matrix would take too much space. Although modeling with \code{rqss} typically imposes smoothing penalties on the total variation of the first derivative, or gradient, of the fitted functions, for univariate smoothing, it is also possible to penalize total variation of the function itself using the option \code{Dorder = 0} inside \code{qss} terms. In such cases, estimated functions are piecewise constant rather than piecewise linear. See the documentation for \code{qss} for further details. } \value{ The function returns a fitted object representing the estimated model specified in the formula. See \code{\link{rqss.object}} for further details on this object, and references to methods to look at it. } \note{ If you intend to embed calls to \code{rqss} inside another function, then it is advisable to pass a data frame explicitly as the \code{data} argument of the \code{rqss} call, rather than relying on the magic of R scoping rules. } \references{ [1] Koenker, R. and S. Portnoy (1997) The Gaussian Hare and the Laplacean Tortoise: Computability of Squared-error vs Absolute Error Estimators, (with discussion). \emph{Statistical Science} \bold{12}, 279--300. [2] Koenker, R., P. Ng and S. Portnoy, (1994) Quantile Smoothing Splines; \emph{Biometrika} \bold{81}, 673--680. [3] Koenker, R. and I. Mizera, (2003) Penalized Triograms: Total Variation Regularization for Bivariate Smoothing; \emph{JRSS(B)} \bold{66}, 145--163. [4] Koenker, R. and P. Ng (2003) SparseM: A Sparse Linear Algebra Package for R, \emph{J. Stat. Software}. } \author{ Roger Koenker } \seealso{ \code{\link{qss}} } \examples{ n <- 200 x <- sort(rchisq(n,4)) z <- x + rnorm(n) y <- log(x)+ .1*(log(x))^2 + log(x)*rnorm(n)/4 + z plot(x, y-z) f.N <- rqss(y ~ qss(x, constraint= "N") + z) f.I <- rqss(y ~ qss(x, constraint= "I") + z) f.CI <- rqss(y ~ qss(x, constraint= "CI") + z) lines(x[-1], f.N $coef[1] + f.N $coef[-(1:2)]) lines(x[-1], f.I $coef[1] + f.I $coef[-(1:2)], col="blue") lines(x[-1], f.CI$coef[1] + f.CI$coef[-(1:2)], col="red") ## A bivariate example if(requireNamespace("interp")){ if(requireNamespace("interp")){ data(CobarOre) fCO <- rqss(z ~ qss(cbind(x,y), lambda= .08), data=CobarOre) plot(fCO) }}} \keyword{regression} \keyword{smooth} \keyword{robust} quantreg/man/print.KhmaladzeTest.Rd0000644000176200001440000000062013505172007017033 0ustar liggesusers\name{print.KhmaladzeTest} \alias{print.KhmaladzeTest} \title{ Print a KhmaladzeTest object} \description{ Print an object generated by KhmaladzeTest } \usage{ \method{print}{KhmaladzeTest}(x, ...) } \arguments{ \item{x}{ Object returned from KhmaladzeTest representing the fit of the model. } \item{...}{ Optional arguments. } } \seealso{ \code{\link{KhmaladzeTest}}} \keyword{ regression} quantreg/man/q489.Rd0000644000176200001440000000322313776620427013665 0ustar liggesusers\name{q489} \alias{q489} \title{Even Quicker Sample Quantiles } \description{ The function \code{q489} computes a single sample quantile using a fortran implementation of the Floyd and Rivest (1975) algorithm. In contrast to the more elaborate function \code{kuantile} that uses the Kiweil (2005) implementation it does not attempt to replicate the nine varieties of quantiles as documented in the base function. \code{quantile} } \usage{ q489(x, tau = .5) } \arguments{ \item{x}{numeric vector} \item{tau}{the quantile of intereste.} } \details{ This is a direct translation of the Algol 68 implementation of Floyd and Rivest (1975), implemented in Ratfor. For the median, average case behavior requires \eqn{1.5 n + O((n log n)^{1/2})} comparisons. In preliminary experiments it seems to be somewhat faster in large samples than the implementation \code{kuantile} of Kiwiel (2005). See Knuth (1998) for further details. No provision is made for non-uniqueness of the quantile. so, when \eqn{\tau n} is an integer there may be some discrepancy.} \value{ A scalar quantile of the same length as the vector p. } \references{ R.W. Floyd and R.L. Rivest: "Algorithm 489: The Algorithm SELECT---for Finding the $i$th Smallest of $n$ Elements", Comm. ACM 18, 3 (1975) 173, K.C. Kiwiel: On Floyd and Rivest's SELECT Algorithm, Theoretical Computer Sci. 347 (2005) 214-238. D. Knuth, The Art of Computer Programming, Volume 3, Sorting and Searching, 2nd Ed., (1998), Addison-Wesley. } \author{ R.W.Floyd and R.L.Rivest, R implementation: Roger Koenker } \seealso{\code{\link{quantile}}} \examples{ medx <- q489(rnorm(1001)) } \keyword{univar} quantreg/man/rq.fit.hogg.Rd0000644000176200001440000000530612674070036015301 0ustar liggesusers\name{rq.fit.hogg} \alias{rq.fit.hogg} \title{weighted quantile regression fitting} \description{ Function to estimate a regression mmodel by minimizing the weighted sum of several quantile regression functions. See Koenker(1984) for an asymptotic look at these estimators. This is a slightly generalized version of what Zou and Yuan (2008) call composite quantile regression in that it permits weighting of the components of the objective function and also allows further linear inequality constraints on the coefficients. } \usage{ rq.fit.hogg(x, y, taus = c(0.1, 0.3, 0.5), weights = c(0.7, 0.2, 0.1), R = NULL, r = NULL, beta = 0.99995, eps = 1e-06) } \arguments{ \item{x}{design matrix} \item{y}{response vector } \item{taus}{quantiles getting positive weight} \item{weights}{weights assigned to the quantiles } \item{R}{optional matrix describing linear inequality constraints} \item{r}{optional vector describing linear inequality constraints} \item{beta}{step length parameter of the Frisch Newton Algorithm} \item{eps}{tolerance parameter for the Frisch Newton Algorithm} } \details{ Mimimizes a weighted sum of quantile regression objective functions using the specified taus. The model permits distinct intercept parameters at each of the specified taus, but the slope parameters are constrained to be the same for all taus. This estimator was originally suggested to the author by Bob Hogg in one of his famous blue notes of 1979. The algorithm used to solve the resulting linear programming problems is either the Frisch Newton algorithm described in Portnoy and Koenker (1997), or the closely related algorithm described in Koenker and Ng(2002) that handles linear inequality constraints. See \code{\link{qrisk}} for illustration of its use in portfolio allocation. Linear inequality constraints of the form \eqn{Rb \geq r} can be imposed with the convention that \eqn{b} is a \eqn{m+p} where \eqn{m} is the \code{length(taus)} and \eqn{p} is the column dimension of \code{x} without the intercept. } \value{ \item{coefficients}{estimated coefficients of the model} } \references{ Zou, Hui and and Ming Yuan (2008) Composite quantile regression and the Oracle model selection theory, Annals of Statistics, 36, 1108--11120. Koenker, R. (1984) A note on L-estimates for linear models, Stat. and Prob Letters, 2, 323-5. Portnoy, S. and Koenker, R. (1997) The Gaussian Hare and the Laplacean Tortoise: Computability of Squared-error vs Absolute Error Estimators, (with discussion). Statistical Science, (1997) 12, 279-300. Koenker, R. and Ng, P (2003) Inequality Constrained Quantile Regression, preprint. } \author{ Roger Koenker } \seealso{ \code{\link{qrisk}}} \keyword{regression} \keyword{ robust } quantreg/man/qrisk.Rd0000644000176200001440000000653113726077774014324 0ustar liggesusers\name{qrisk} \alias{qrisk} \title{ Function to compute Choquet portfolio weights} \description{ This function solves a weighted quantile regression problem to find the optimal portfolio weights minimizing a Choquet risk criterion described in Bassett, Koenker, and Kordas (2002). } \usage{ qrisk(x, alpha = c(0.1, 0.3), w = c(0.7, 0.3), mu = 0.07, R = NULL, r = NULL, lambda = 10000) } \arguments{ \item{x}{n by q matrix of historical or simulated asset returns } \item{alpha}{vector of alphas receiving positive weights in the Choquet criterion} \item{w}{weights associated with alpha in the Choquet criterion } \item{mu}{targeted rate of return for the portfolio} \item{R}{matrix of constraints on the parameters of the quantile regression, see below} \item{r}{rhs vector of the constraints described by R} \item{lambda}{Lagrange multiplier associated with the constraints} } \details{ The function calls \code{rq.fit.hogg} which in turn calls the constrained Frisch Newton algorithm. The constraints Rb=r are intended to apply only to the slope parameters, not the intercept parameters. The user is completely responsible to specify constraints that are consistent, ie that have at least one feasible point. See examples for imposing non-negative portfolio weights. } \value{ \item{pihat}{the optimal portfolio weights} \item{muhat }{the in-sample mean return of the optimal portfolio} \item{qrisk}{the in-sample Choquet risk of the optimal portfolio} } \references{ \url{http://www.econ.uiuc.edu/~roger/research/risk/risk.html} Bassett, G., R. Koenker, G Kordas, (2004) Pessimistic Portfolio Allocation and Choquet Expected Utility, J. of Financial Econometrics, 2, 477-492. } \author{ R. Koenker } \examples{ #Fig 1: ... of Choquet paper mu1 <- .05; sig1 <- .02; mu2 <- .09; sig2 <- .07 x <- -10:40/100 u <- seq(min(c(x)),max(c(x)),length=100) f1 <- dnorm(u,mu1,sig1) F1 <- pnorm(u,mu1,sig1) f2 <- dchisq(3-sqrt(6)*(u-mu1)/sig1,3)*(sqrt(6)/sig1) F2 <- pchisq(3-sqrt(6)*(u-mu1)/sig1,3) f3 <- dnorm(u,mu2,sig2) F3 <- pnorm(u,mu2,sig2) f4 <- dchisq(3+sqrt(6)*(u-mu2)/sig2,3)*(sqrt(6)/sig2) F4 <- pchisq(3+sqrt(6)*(u-mu2)/sig2,3) plot(rep(u,4),c(f1,f2,f3,f4),type="n",xlab="return",ylab="density") lines(u,f1,lty=1,col="blue") lines(u,f2,lty=2,col="red") lines(u,f3,lty=3,col="green") lines(u,f4,lty=4,col="brown") legend(.25,25,paste("Asset ",1:4),lty=1:4,col=c("blue","red","green","brown")) #Now generate random sample of returns from these four densities. n <- 1000 if(TRUE){ #generate a new returns sample if TRUE x1 <- rnorm(n) x1 <- (x1-mean(x1))/sqrt(var(x1)) x1 <- x1*sig1 + mu1 x2 <- -rchisq(n,3) x2 <- (x2-mean(x2))/sqrt(var(x2)) x2 <- x2*sig1 +mu1 x3 <- rnorm(n) x3 <- (x3-mean(x3))/sqrt(var(x3)) x3 <- x3*sig2 +mu2 x4 <- rchisq(n,3) x4 <- (x4-mean(x4))/sqrt(var(x4)) x4 <- x4*sig2 +mu2 } library(quantreg) x <- cbind(x1,x2,x3,x4) qfit <- qrisk(x) sfit <- srisk(x) # Try new distortion function qfit1 <- qrisk(x,alpha = c(.05,.1), w = c(.9,.1),mu = 0.09) # Constrain portfolio weights to be non-negative qfit2 <- qrisk(x,alpha = c(.05,.1), w = c(.9,.1),mu = 0.09, R = rbind(rep(-1,3), diag(3)), r = c(-1, rep(0,3))) } \keyword{regression} \keyword{robust} \seealso{\code{\link{rq.fit.hogg}}, \code{\link{srisk}}} quantreg/man/rearrange.Rd0000644000176200001440000000327511555564235015132 0ustar liggesusers\name{rearrange} \alias{rearrange} \title{Rearrangement} \description{ Monotonize a step function by rearrangement } \usage{ rearrange(f,xmin,xmax) } \arguments{ \item{f}{ object of class stepfun } \item{xmin}{minimum of the support of the rearranged f} \item{xmax}{maximum of the support of the rearranged f} } \details{ Given a stepfunction \eqn{Q(u)}, not necessarily monotone, let \eqn{F(y) = \int \{ Q(u) \le y \} du} denote the associated cdf obtained by randomly evaluating \eqn{Q} at \eqn{U \sim U[0,1]}. The rearranged version of \eqn{Q} is \eqn{\tilde Q (u) = \inf \{ u: F(y) \ge u \}. The rearranged function inherits the right or left continuity of original stepfunction.} } \value{ Produces transformed stepfunction that is monotonic increasing. } \references{ Chernozhukov, V., I. Fernandez-Val, and A. Galichon, (2006) Quantile and Probability Curves without Crossing, Econometrica, forthcoming. Chernozhukov, V., I. Fernandez-Val, and A. Galichon, (2009) Improving Estimates of Monotone Functions by Rearrangement, Biometrika, 96, 559--575. Hardy, G.H., J.E. Littlewood, and G. Polya (1934) Inequalities, Cambridge U. Press. } \author{R. Koenker} \seealso{ \code{\link{rq}} \code{\link{rearrange}}} \examples{ data(engel) z <- rq(foodexp ~ income, tau = -1,data =engel) zp <- predict(z,newdata=list(income=quantile(engel$income,.03)),stepfun = TRUE) plot(zp,do.points = FALSE, xlab = expression(tau), ylab = expression(Q ( tau )), main="Engel Food Expenditure Quantiles") plot(rearrange(zp),do.points = FALSE, add=TRUE,col.h="red",col.v="red") legend(.6,300,c("Before Rearrangement","After Rearrangement"),lty=1,col=c("black","red")) } \keyword{regression} quantreg/man/KhmaladzeTest.Rd0000644000176200001440000000424713726077750015727 0ustar liggesusers\name{KhmaladzeTest} \alias{KhmaladzeTest} \title{ Tests of Location and Location Scale Shift Hypotheses for Linear Models} \description{Tests of the hypothesis that a linear model specification is of the location shift or location-scale shift form. The tests are based on the Doob-Meyer Martingale transformation approach proposed by Khmaladze(1981) for general goodness of fit problems as adapted to quantile regression by Koenker and Xiao (2002).} \usage{ KhmaladzeTest(formula, data = NULL, taus = 1:99/100, nullH = "location" , trim = c(0.05, 0.95), h = 1, ...) } \arguments{ \item{formula}{a formula specifying the model to fit by \code{\link{rqProcess}}} \item{data}{a data frame within which to interpret the formula} \item{taus}{An equally spaced grid of points on which to evaluate the quantile regression process, if any taus fall outside (0,1) then the full process is computed.} \item{nullH}{a character vector indicating whether the "location" shift hypothesis (default) or the "location-scale" shift hypothesis should be tested. } \item{trim}{ a vector indicating the lower and upper bound of the quantiles to included in the computation of the test statistics (only, not estimates). } \item{h}{an initial bandwidth for the call to \code{\link{akj}}.} \item{...}{other arguments to be passed to \code{\link{summary.rq}.}} } \value{ an object of class KhmaladzeTest is returned containing: \item{nullH}{ The form of the null hypothesis.} \item{Tn}{ Joint test statistic of the hypothesis that all the slope parameters of the model satisfy the hypothesis. } \item{THn}{ Vector of test statistics testing whether individual slope parameters satisfy the null hypothesis. } } \examples{ data(barro) T = KhmaladzeTest( y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro, taus = seq(.05,.95,by = .01)) plot(T) } \keyword{htest} \references{ Khmaladze, E. (1981) ``Martingale Approach in the Theory of Goodness-of-fit Tests,'' \emph{Theory of Prob. and its Apps}, 26, 240--257. Koenker, Roger and Zhijie Xiao (2002), ``Inference on the Quantile Regression Process'', \emph{Econometrica}, 81, 1583--1612. \url{http://www.econ.uiuc.edu/~roger/research/inference/inference.html} } quantreg/man/rq.fit.fnc.Rd0000644000176200001440000000437411555564235015135 0ustar liggesusers\name{rq.fit.fnc} \alias{rq.fit.fnc} \title{ Quantile Regression Fitting via Interior Point Methods } \description{ This is a lower level routine called by \code{rq()} to compute quantile regression methods using the Frisch-Newton algorithm. It allows the call to specify linear inequality constraints to which the fitted coefficients will be subjected. The constraints are assumed to be formulated as Rb >= r. } \usage{ rq.fit.fnc(x, y, R, r, tau=0.5, beta=0.9995, eps=1e-06) } \arguments{ \item{x}{ The design matrix } \item{y}{ The response vector } \item{R}{ The matrix describing the inequality constraints } \item{r}{ The right hand side vector of inequality constraints } \item{tau}{ The quantile of interest, must lie in (0,1) } \item{beta}{ technical step length parameter -- alter at your own risk! } \item{eps}{ tolerance parameter for convergence. In cases of multiple optimal solutions there may be some discrepancy between solutions produced by method \code{"fn"} and method \code{"br"}. This is due to the fact that \code{"fn"} tends to converge to a point near the centroid of the solution set, while \code{"br"} stops at a vertex of the set. } } \value{ returns an object of class \code{"rq"}, which can be passed to \code{\link{summary.rq}} to obtain standard errors, etc. } \details{ The details of the algorithm are explained in Koenker and Ng (2002). The basic idea can be traced back to the log-barrier methods proposed by Frisch in the 1950's for constrained optimization. But the current implementation is based on proposals by Mehrotra and others in the recent (explosive) literature on interior point methods for solving linear programming problems. See \code{"rq"} helpfile for an example. It is an open research problem to provide an inference apparatus for inequality constrained quantile regression. } \references{ Koenker, R. and S. Portnoy (1997). The Gaussian Hare and the Laplacian Tortoise: Computability of squared-error vs. absolute-error estimators, with discussion, \emph{Statistical Science}, \bold{12}, 279-300. Koenker, R. and P. Ng(2005). Inequality Constrained Quantile Regression, \emph{Sankya}, 418-440. } \seealso{ \code{\link{rq}}, \code{\link{rq.fit.br}}, \code{\link{rq.fit.pfn}} } \keyword{regression} quantreg/man/rq.fit.Rd0000644000176200001440000000126111612372446014353 0ustar liggesusers\name{rq.fit} \alias{rq.fit} \title{Function to choose method for Quantile Regression } \usage{ rq.fit(x, y, tau=0.5, method="br", ...) } \arguments{ \item{x}{ the design matrix } \item{y}{ the response variable } \item{tau}{ the quantile desired, if tau lies outside (0,1) the whole process is estimated. } \item{method}{ method of computation: "br" is Barrodale and Roberts exterior point "fn" is the Frisch-Newton interior point method. } \item{...}{ Optional arguments passed to fitting routine. } } \description{Function to choose method for quantile regression} \seealso{ \code{\link{rq}} \code{\link{rq.fit.br}} \code{\link{rq.fit.fnb}}} \keyword{ regression } quantreg/man/LassoLambdaHat.Rd0000644000176200001440000000276714057167442016007 0ustar liggesusers\name{LassoLambdaHat} \alias{LassoLambdaHat} \title{Lambda selection for QR lasso problems} \description{ Default procedure for selection of lambda in lasso constrained quantile regression as proposed by Belloni and Chernozhukov (2011) } \usage{ LassoLambdaHat(X, R = 1000, tau = 0.5, C = 1, alpha = 0.95) } \arguments{ \item{X}{Design matrix} \item{R}{Number of replications} \item{tau}{quantile of interest} \item{C}{Cosmological constant} \item{alpha}{Interval threshold} } \value{ vector of default lambda values of length p, the column dimension of X. } \details{ As proposed by Belloni and Chernozhukov, a reasonable default lambda would be the upper quantile of the simulated values. The procedure is based on idea that a simulated gradient can be used as a pivotal statistic. Elements of the default vector are standardized by the respective standard deviations of the covariates. Note that the sqrt(tau(1-tau)) factor cancels in their (2.4) (2.6). In this formulation even the intercept is penalized. If the lower limit of the simulated interval is desired one can specify \code{alpha = 0.05}. } \references{ Belloni, A. and V. Chernozhukov. (2011) l1-penalized quantile regression in high-dimensional sparse models. \emph{Annals of Statistics}, 39 82 - 130. } \examples{ n <- 200 p <- 10 x <- matrix(rnorm(n*p), n, p) b <- c(1,1, rep(0, p-2)) y <- x \%*\% b + rnorm(n) f <- rq(y ~ x, tau = 0.8, method = "lasso") # See f$lambda to see the default lambda selection } quantreg/man/CobarOre.Rd0000644000176200001440000000130611555564235014651 0ustar liggesusers\name{CobarOre} \alias{CobarOre} \docType{data} \title{ Cobar Ore data } \description{ Cobar Ore data from Green and Silverman (1994). The data consists of measurements on the "true width" of an ore-bearing rock layer from a mine in Cobar, Australia. } \usage{data(CobarOre)} \format{ A data frame with 38 observations on the following 3 variables. \describe{ \item{x}{x-coordinate of location of mine site} \item{y}{y-coordinate of location of mine site} \item{z}{ore thickness} } } \source{ Green, P.J. and B.W. Silverman (1994) Nonparametric Regression Generalized Linear Models: A roughness penalty approach, Chapman Hall. } \examples{ data(CobarOre) plot(CobarOre) } \keyword{datasets} quantreg/man/latex.summary.rqs.Rd0000644000176200001440000000161211555564235016572 0ustar liggesusers\name{latex.summary.rqs} \alias{latex.summary.rqs} \title{ Make a latex table from a table of rq results} \description{ Produces a file with latex commands for a table of rq results. } \usage{\method{latex}{summary.rqs}(x, transpose = FALSE, caption = "caption goes here.", digits = 3, file = as.character(substitute(x)), ...) } \arguments{ \item{x}{\code{x} is an object of class \code{summary.rqs}} \item{transpose}{if \code{TRUE} transpose table so that rows are quantiles and columns are covariates. } \item{caption}{ caption for the table} \item{digits}{ decimal precision of table entries.} \item{file}{ name of file } \item{\dots}{ optional arguments for \code{latex.table} } } \details{ Calls \code{latex.table}. } \value{ Returns invisibly after writing the file. } \author{ R. Koenker} \seealso{ \code{\link{summary.rqs}}, \code{\link{latex.table}}} \keyword{IO} quantreg/man/rq.fit.ppro.Rd0000644000176200001440000000255613757415072015347 0ustar liggesusers\name{rq.fit.ppro} \alias{rq.fit.ppro} \title{ Preprocessing fitting method for QR } \description{ Preprocessing method for fitting quantile regression models that exploits the fact that adjacent tau's should have nearly the same sign vectors for residuals. } \usage{ rq.fit.ppro(x, y, tau, weights = NULL, Mm.factor = 0.8, eps = 1e-06, ...) } \arguments{ \item{x}{ Design matrix } \item{y}{ Response vector } \item{tau}{ quantile vector of interest } \item{weights}{ case weights } \item{Mm.factor}{ constant determining initial sample size } \item{eps}{ Convergence tolerance } \item{\dots}{ Other arguments } } \details{ See references for further details. } \value{ Returns a list with components: \item{coefficients}{Matrix of coefficient estimates} \item{residuals}{Matrix of residual estimates} \item{rho}{vector of objective function values} \item{weights}{vector of case weights} } \references{ Chernozhukov, V. I. Fernandez-Val and B. Melly, Fast Algorithms for the Quantile Regression Process, 2020, Empirical Economics., Portnoy, S. and R. Koenker, The Gaussian Hare and the Laplacian Tortoise, Statistical Science, (1997) 279-300 } \author{ Blaise Melly and Roger Koenker } \seealso{ \code{\link{rq.fit.pfn}}, \code{\link{boot.rq.pxy}} } \keyword{regression} quantreg/man/rq.fit.lasso.Rd0000644000176200001440000000474114052721633015476 0ustar liggesusers\name{rq.fit.lasso} \alias{rq.fit.lasso} \title{ Lasso Penalized Quantile Regression } \description{ The fitting method implements the lasso penalty for fitting quantile regression models. When the argument \code{lambda} is a scalar the penalty function is the l1 norm of the last (p-1) coefficients, under the presumption that the first coefficient is an intercept parameter that should not be subject to the penalty. When \code{lambda} is a vector it should have length equal the column dimension of the matrix \code{x} and then defines a coordinatewise specific vector of lasso penalty parameters. In this case \code{lambda} entries of zero indicate covariates that are not penalized. If \code{lambda} is not specified, a default value is selected according to the proposal of Belloni and Chernozhukov (2011). See \code{LassoLambdaHat} for further details. There should be a sparse version of this, but isn't (yet). There should also be a preprocessing version, but isn't (yet). } \usage{ rq.fit.lasso(x, y, tau = 0.5, lambda = NULL, beta = .99995, eps = 1e-06) } \arguments{ \item{x}{ the design matrix } \item{y}{ the response variable } \item{tau}{ the quantile desired, defaults to 0.5. } \item{lambda}{ the value of the penalty parameter(s) that determine how much shrinkage is done. This should be either a scalar, or a vector of length equal to the column dimension of the \code{x} matrix. If unspecified, a default value is chosen according to the proposal of Belloni and Chernozhukov (2011). } \item{beta}{ step length parameter for Frisch-Newton method. } \item{eps}{ tolerance parameter for convergence. } } \value{ Returns a list with a coefficient, residual, tau and lambda components. When called from \code{"rq"} (as intended) the returned object has class "lassorqs". } \references{ Koenker, R. (2005) \emph{Quantile Regression}, CUP. Belloni, A. and V. Chernozhukov. (2011) l1-penalized quantile regression in high-dimensional sparse models. \emph{Annals of Statistics}, 39 82 - 130. } \author{R. Koenker} \seealso{ \code{\link{rq}}} \examples{ n <- 60 p <- 7 rho <- .5 beta <- c(3,1.5,0,2,0,0,0) R <- matrix(0,p,p) for(i in 1:p){ for(j in 1:p){ R[i,j] <- rho^abs(i-j) } } set.seed(1234) x <- matrix(rnorm(n*p),n,p) \%*\% t(chol(R)) y <- x \%*\% beta + rnorm(n) f <- rq(y ~ x, method="lasso",lambda = 30) g <- rq(y ~ x, method="lasso",lambda = c(rep(0,4),rep(30,4))) } \keyword{regression} quantreg/man/kuantile.Rd0000644000176200001440000000554711555564235015004 0ustar liggesusers\name{kuantile} \alias{kuantile} \alias{kselect} \alias{kunique} \title{Quicker Sample Quantiles } \description{ The function 'kuantile' computes sample quantiles corresponding to the specified probabilities. The intent is to mimic the generic (base) function 'quantile' but using a variant of the Floyd and Rivest (1975) algorithm which is somewhat quicker, especially for large sample sizes. } \usage{ kuantile(x, probs = seq(0, 1, .25), na.rm = FALSE, names = TRUE, type = 7, ...) } \arguments{ \item{x}{numeric vector whose sample quantiles are wanted.} \item{probs}{numeric vector of probabilities with values in [0,1].} \item{type}{ an integer between 1 and 9 selecting one of the nine quantile algorithms detailed below to be used.} \item{na.rm}{logical: if true, any 'NA' and 'NaN''s are removed from 'x' before the quantiles are computed.} \item{names}{logical: if true, the result has a 'names' attribute. } \item{...}{further arguments passed to or from other methods.} } \details{ A vector of length 'length(p)' is returned. See the documentation for 'quantile' for further details on the types. The algorithm was written by K.C. Kiwiel. It is a modified version of the (algol 68) SELECT procedure of Floyd and Rivest (1975), incorporating modifications of Brown(1976). The algorithm has linear growth in the number of comparisons required as sample size grows. For the median, average case behavior requires \eqn{1.5 n + O((n log n)^{1/2})} comparisons. See Kiwiel (2005) and Knuth (1998) for further details. When the number of required elements of p is large, it may be preferable to revert to a full sort.} \value{ A vector of quantiles of the same length as the vector p. } \references{ R.W. Floyd and R.L. Rivest: "Algorithm 489: The Algorithm SELECT---for Finding the $i$th Smallest of $n$ Elements", Comm. ACM 18, 3 (1975) 173, T. Brown: "Remark on Algorithm 489", ACM Trans. Math. Software 3, 2 (1976), 301-304. K.C. Kiwiel: On Floyd and Rivest's SELECT Algorithm, Theoretical Computer Sci. 347 (2005) 214-238. D. Knuth, The Art of Computer Programming, Volume 3, Sorting and Searching, 2nd Ed., (1998), Addison-Wesley. } \author{ K.C. Kiwiel, R interface: Roger Koenker } \seealso{\code{\link{quantile}}} \examples{ kuantile(x <- rnorm(1001))# Extremes & Quartiles by default ### Compare different types p <- c(0.1,0.5,1,2,5,10,50)/100 res <- matrix(as.numeric(NA), 9, 7) for(type in 1:9) res[type, ] <- y <- kuantile(x, p, type=type) dimnames(res) <- list(1:9, names(y)) ktiles <- res ### Compare different types p <- c(0.1,0.5,1,2,5,10,50)/100 res <- matrix(as.numeric(NA), 9, 7) for(type in 1:9) res[type, ] <- y <- quantile(x, p, type=type) dimnames(res) <- list(1:9, names(y)) qtiles <- res max(abs(ktiles - qtiles)) } \keyword{univar} quantreg/man/plot.rq.process.Rd0000644000176200001440000000074411555564235016236 0ustar liggesusers\name{plot.rq} \alias{plot.rq.process} \title{ plot the coordinates of the quantile regression process} \description{ Function to plot quantile regression process. } \usage{ \method{plot}{rq.process}(x, nrow=3, ncol=2, ...) } \arguments{ \item{x}{ an object produced by rq() fitting } \item{nrow}{ rows in mfrow } \item{ncol}{ columns in mfrow} \item{...}{ optional arguments to plot} } \author{ Roger Koenker rkoenker@uiuc.edu} \seealso{ \code{\link{rq}}} \keyword{hplot} quantreg/man/rq.Rd0000644000176200001440000002644214230205024013564 0ustar liggesusers\name{rq} \alias{rq} \title{ Quantile Regression } \description{ Returns an object of class \code{"rq"} \code{"rqs"} or \code{"rq.process"} that represents a quantile regression fit. } \usage{ rq(formula, tau=.5, data, subset, weights, na.action, method="br", model = TRUE, contrasts, \dots) } \arguments{ \item{formula}{ a formula object, with the response on the left of a \code{~} operator, and the terms, separated by \code{+} operators, on the right. } \item{tau}{ the quantile(s) to be estimated, this is generally a number strictly between 0 and 1, but if specified strictly outside this range, it is presumed that the solutions for all values of \code{tau} in (0,1) are desired. In the former case an object of class \code{"rq"} is returned, in the latter, an object of class \code{"rq.process"} is returned. As of version 3.50, tau can also be a vector of values between 0 and 1; in this case an object of class \code{"rqs"} is returned containing among other things a matrix of coefficient estimates at the specified quantiles. } \item{data}{ a data.frame in which to interpret the variables named in the formula, or in the subset and the weights argument. If this is missing, then the variables in the formula should be on the search list. This may also be a single number to handle some special cases -- see below for details. } \item{subset}{ an optional vector specifying a subset of observations to be used in the fitting process.} \item{weights}{ vector of observation weights; if supplied, the algorithm fits to minimize the sum of the weights multiplied into the absolute residuals. The length of weights must be the same as the number of observations. The weights must be nonnegative and it is strongly recommended that they be strictly positive, since zero weights are ambiguous. } \item{na.action}{ a function to filter missing data. This is applied to the model.frame after any subset argument has been used. The default (with \code{na.fail}) is to create an error if any missing values are found. A possible alternative is \code{na.omit}, which deletes observations that contain one or more missing values. } \item{model}{if TRUE then the model frame is returned. This is essential if one wants to call summary subsequently. } \item{method}{ the algorithmic method used to compute the fit. There are several options: \enumerate{ \item \code{"br"} The default method is the modified version of the Barrodale and Roberts algorithm for \eqn{l_1}{l1}-regression, used by \code{l1fit} in S, and is described in detail in Koenker and d'Orey(1987, 1994), default = \code{"br"}. This is quite efficient for problems up to several thousand observations, and may be used to compute the full quantile regression process. It also implements a scheme for computing confidence intervals for the estimated parameters, based on inversion of a rank test described in Koenker(1994). \item \code{"fn"} For larger problems it is advantageous to use the Frisch--Newton interior point method \code{"fn"}. This is described in detail in Portnoy and Koenker(1997). \item \code{"pfn"} For even larger problems one can use the Frisch--Newton approach after preprocessing \code{"pfn"}. Also described in detail in Portnoy and Koenker(1997), this method is primarily well-suited for large n, small p problems, that is when the parametric dimension of the model is modest. \item \code{"sfn"} For large problems with large parametric dimension it is often advantageous to use method \code{"sfn"} which also uses the Frisch-Newton algorithm, but exploits sparse algebra to compute iterates. This is especially helpful when the model includes factor variables that, when expanded, generate design matrices that are very sparse. At present options for inference, i.e. summary methods are somewhat limited when using the \code{"sfn"} method. Only the option \code{se = "nid"} is currently available, but I hope to implement some bootstrap options in the near future. \item \code{"fnc"} Another option enables the user to specify linear inequality constraints on the fitted coefficients; in this case one needs to specify the matrix \code{R} and the vector \code{r} representing the constraints in the form \eqn{Rb \geq r}. See the examples below. \item \code{"conquer"} For very large problems especially those with large parametric dimension, this option provides a link to the \pkg{conquer} of He, Pan, Tan, and Zhou (2020). Calls to \code{summary} when the fitted object is computed with this option invoke the multiplier bootstrap percentile method of the \pkg{conquer} package and can be considerably quicker than other options when the problem size is large. Further options for this fitting method are described in the \pkg{conquer} package. Note that this option employs a smoothing form of the usual QR objective function so solutions may be expected to differ somewhat from those produced with the other options. \item \code{"pfnb"} This option is intended for applications with large sample sizes and/or moderately fine tau grids. It uses a form of preprocessing to accelerate the solution process. The loop over taus occurs inside the Fortran call and there should be more efficient than other methods in large problems. \item \code{"qfnb"} This option is like the preceeding one except that it doesn't use the preprocessing option. \item \code{"ppro"} This option is an R prototype of the \code{pfnb} and is offered for historical/interpretative purposes, but probably should be considered deprecated. \item \code{"lasso"} There are two penalized methods: \code{"lasso"} and \code{"scad"} that implement the lasso penalty and Fan and Li smoothly clipped absolute deviation penalty, respectively. These methods should probably be regarded as experimental. Note: weights are ignored when the method is penalized. } } \item{contrasts}{ a list giving contrasts for some or all of the factors default = \code{NULL} appearing in the model formula. The elements of the list should have the same name as the variable and should be either a contrast matrix (specifically, any full-rank matrix with as many rows as there are levels in the factor), or else a function to compute such a matrix given the number of levels. } \item{...}{ additional arguments for the fitting routines (see \code{\link{rq.fit.br}} and \code{\link{rq.fit.fnb}}, etc. and the functions they call). } } \value{ See \code{\link{rq.object}} and \code{\link{rq.process.object}} for details. Inferential matters are handled with \code{\link{summary}}. There are extractor methods \code{logLik} and \code{AIC} that are potentially relevant for model selection. } \details{For further details see the vignette available from \R with \code{ vignette("rq",package="quantreg")} and/or the Koenker (2005). For estimation of nonlinear (in parameters) quantile regression models there is the function \code{nlrq} and for nonparametric additive quantile regression there is the function \code{rqss}. Fitting of quantile regression models with censored data is handled by the \code{crq} function.} \examples{ data(stackloss) rq(stack.loss ~ stack.x,.5) #median (l1) regression fit for the stackloss data. rq(stack.loss ~ stack.x,.25) #the 1st quartile, #note that 8 of the 21 points lie exactly on this plane in 4-space! rq(stack.loss ~ stack.x, tau=-1) #this returns the full rq process rq(rnorm(50) ~ 1, ci=FALSE) #ordinary sample median --no rank inversion ci rq(rnorm(50) ~ 1, weights=runif(50),ci=FALSE) #weighted sample median #plot of engel data and some rq lines see KB(1982) for references to data data(engel) attach(engel) plot(income,foodexp,xlab="Household Income",ylab="Food Expenditure",type = "n", cex=.5) points(income,foodexp,cex=.5,col="blue") taus <- c(.05,.1,.25,.75,.9,.95) xx <- seq(min(income),max(income),100) f <- coef(rq((foodexp)~(income),tau=taus)) yy <- cbind(1,xx)\%*\%f for(i in 1:length(taus)){ lines(xx,yy[,i],col = "gray") } abline(lm(foodexp ~ income),col="red",lty = 2) abline(rq(foodexp ~ income), col="blue") legend(3000,500,c("mean (LSE) fit", "median (LAE) fit"), col = c("red","blue"),lty = c(2,1)) #Example of plotting of coefficients and their confidence bands plot(summary(rq(foodexp~income,tau = 1:49/50,data=engel))) #Example to illustrate inequality constrained fitting n <- 100 p <- 5 X <- matrix(rnorm(n*p),n,p) y <- .95*apply(X,1,sum)+rnorm(n) #constrain slope coefficients to lie between zero and one R <- cbind(0,rbind(diag(p),-diag(p))) r <- c(rep(0,p),-rep(1,p)) rq(y~X,R=R,r=r,method="fnc") } \section{Method}{ The function computes an estimate on the tau-th conditional quantile function of the response, given the covariates, as specified by the formula argument. Like \code{lm()}, the function presumes a linear specification for the quantile regression model, i.e. that the formula defines a model that is linear in parameters. For non-linear (in parameters) quantile regression see the package \code{nlrq()}. The function minimizes a weighted sum of absolute residuals that can be formulated as a linear programming problem. As noted above, there are several different algorithms that can be chosen depending on problem size and other characteristics. For moderate sized problems (\eqn{n \ll 5,000, p \ll 20}{n << 5,000, p << 20}) it is recommended that the default \code{"br"} method be used. There are several choices of methods for computing confidence intervals and associated test statistics. See the documentation for \code{\link{summary.rq}} for further details and options. } \keyword{regression} \references{ [1] Koenker, R. W. and Bassett, G. W. (1978). Regression quantiles, \emph{Econometrica}, \bold{46}, 33--50. [2] Koenker, R.W. and d'Orey (1987, 1994). Computing regression quantiles. \emph{Applied Statistics}, \bold{36}, 383--393, and \bold{43}, 410--414. [3] Gutenbrunner, C. Jureckova, J. (1991). Regression quantile and regression rank score process in the linear model and derived statistics, \emph{Annals of Statistics}, \bold{20}, 305--330. [4] Xuming He and Xiaoou Pan and Kean Ming Tan and Wen-Xin Zhou, (2020) conquer: Convolution-Type Smoothed Quantile Regression, \url{https://CRAN.R-project.org/package=conquer} [4] Koenker, R. W. (1994). Confidence Intervals for regression quantiles, in P. Mandl and M. Huskova (eds.), \emph{Asymptotic Statistics}, 349--359, Springer-Verlag, New York. [5] Koenker, R. and S. Portnoy (1997) The Gaussian Hare and the Laplacean Tortoise: Computability of Squared-error vs Absolute Error Estimators, (with discussion). \emph{Statistical Science,} \bold{12}, 279-300. [6] Koenker, R. W. (2005). \emph{Quantile Regression}, Cambridge U. Press. There is also recent information available at the URL: \url{http://www.econ.uiuc.edu/~roger/}. } \seealso{ \code{\link{FAQ}}, \code{\link{summary.rq}}, \code{\link{nlrq}}, \code{\link{rq.fit}}, \code{\link{rq.wfit}}, \code{\link{rqss}}, \code{\link{rq.object}}, \code{\link{rq.process.object}} } quantreg/man/akj.Rd0000644000176200001440000000441614714372303013720 0ustar liggesusers\name{akj} \alias{akj} \title{Density Estimation using Adaptive Kernel method} \description{ Univariate \emph{adaptive} kernel density estimation a la Silverman. As used by Portnoy and Koenker (1989). } \usage{ akj(x, z =, p =, h = -1, alpha = 0.5, kappa = 0.9, iker1 = 0) } \arguments{ \item{x}{points used for centers of kernel assumed to be sorted.} \item{z}{points at which density is calculated; defaults to an equispaced sequence covering the range of x.} \item{p}{vector of probabilities associated with \code{x}s; defaults to 1/n for each x.} \item{h}{initial window size (overall); defaults to Silverman's normal reference.} \item{alpha}{a sensitivity parameter that determines the sensitivity of the local bandwidth to variations in the pilot density; defaults to .5.} \item{kappa}{constant multiplier for initial (default) window width} \item{iker1}{integer kernel indicator: 0 for normal kernel (default) while 1 for Cauchy kernel (\code{\link{dcauchy}}).} } \value{ a \code{\link{list}} structure is with components \item{dens}{the vector of estimated density values \eqn{f(z)}} \item{psi}{a vector of \eqn{\psi=-f'/f} function values.} \item{score}{a vector of score \eqn{\psi' = (f'/f)^2 - f''/f} function values.} \item{h}{same as the input argument h} } \note{ if the \code{score} function values are of interest, the Cauchy kernel may be preferable. } \references{ Portnoy, S and R Koenker, (1989) Adaptive L Estimation of Linear Models; \emph{Annals of Statistics} \bold{17}, 362--81. Silverman, B. (1986) \emph{Density Estimation}, pp 100--104. } \examples{ set.seed(1) x <- c(rnorm(600), 2 + 2*rnorm(400)) xx <- seq(-5, 8, length=200) z <- akj(x, xx) plot(xx, z$dens, ylim=range(0,z$dens), type ="l", col=2) abline(h=0, col="gray", lty=3) plot(xx, z$psi, type ="l", col=2, main = expression(hat(psi(x)))) plot(xx, z$score, type ="l", col=2, main = expression("score " * hat(psi) * "'" * (x))) if(require("nor1mix")) { m3 <- norMix(mu= c(-4, 0, 3), sigma = c(1/3, 1, 2), w = c(.1,.5,.4)) plot(m3, p.norm = FALSE) set.seed(11) x <- rnorMix(1000, m3) z2 <- akj(x, xx) lines(xx, z2$dens, col=2) z3 <- akj(x, xx, kappa = 0.5, alpha = 0.88) lines(xx, z3$dens, col=3) } } \keyword{smooth} quantreg/man/boot.crq.Rd0000644000176200001440000000523012653160036014673 0ustar liggesusers\name{boot.crq} \alias{boot.crq} \title{ Bootstrapping Censored Quantile Regression} \description{ Functions used to estimated standard errors, confidence intervals and tests of hypotheses for censored quantile regression models using the Portnoy and Peng-Huang methods. } \usage{ boot.crq(x, y, c, taus, method, ctype = "right", R = 100, mboot, bmethod = "jack", ...) } \arguments{ \item{x}{ The regression design matrix} \item{y}{ The regression response vector} \item{c}{ The censoring indicator} \item{taus}{ The quantiles of interest} \item{method}{ The fitting method: either "P" for Portnoy or "PH" for Peng and Huang.} \item{ctype}{ Either "right" or "left"} \item{R}{ The number of bootstrap replications} \item{bmethod}{ The bootstrap method to be employed. There are (as yet) three options: method = "jack" uses the delete-d jackknife method described by Portnoy (2013), method = "xy-pair" uses the xy-pair method, that is the usual multinomial resampling of xy-pairs, while method = "Bose" uses the Bose and Chatterjee (2003) weighted resampling method with exponential weights. The "jack" method is now the default.} \item{mboot}{ optional argument for the bootstrap method: for bmethod = "jack" it specifies the number, d, of the delete-d jackknife, for method = "xy-pair" it specifies the size of the bootstrap samples, that permits subsampling (m out of n) bootstrap. By default in the former case it is set to 2 [sqrt(n)], for the latter the default is n. Obviously mboot should be substantially larger than the column dimension of x, and should be less than the sample size in both cases.} \item{...}{ Optional further arguments to control bootstrapping} } \details{ There are several refinements that are still unimplemented. Percentile methods should be incorporated, and extensions of the methods to be used in anova.rq should be made. Note that bootstrapping for the Powell method "Powell" is done via \code{\link{boot.rq}}. For problems with \code{n > 3000} a message is printed indicated progress in the resampling. } \value{ A matrix of dimension R by p is returned with the R resampled estimates of the vector of quantile regression parameters. When mofn < n for the "xy" method this matrix has been deflated by the factor sqrt(m/n) } \references{ Bose, A. and S. Chatterjee, (2003) Generalized bootstrap for estimators of minimizers of convex functions, \emph{J. Stat. Planning and Inf}, 117, 225-239. Portnoy, S. (2013) The Jackknife's Edge: Inference for Censored Quantile Regression, \emph{CSDA}, forthcoming. } \author{ Roger Koenker } \seealso{ \code{\link{summary.crq}}} \keyword{ regression} quantreg/man/rq.fit.qfnb.Rd0000644000176200001440000000367314620433246015307 0ustar liggesusers\name{rq.fit.qfnb} \alias{rq.fit.qfnb} \title{ Quantile Regression Fitting via Interior Point Methods } \description{ This is a lower level routine called by \code{rq()} to compute quantile regression parameters using the Frisch-Newton algorithm. In contrast to method "fn" it computes solutions for all the specified taus inside a fortran loop. See \code{\link{rq.fit.pfnb}} for further details on a more efficient preprocessing method. } \usage{ rq.fit.qfnb(x, y, tau) } \arguments{ \item{x}{ The design matrix } \item{y}{ The response vector } \item{tau}{ The quantiles of interest, must lie in (0,1), be sorted and preferably equally spaced. } } \value{ returns a list with elements consisting of \item{coefficients}{a matrix of dimension ncol(x) by length(taus) } \item{nit}{a 3-vector of iteration counts} \item{info}{a convergence flag} } \details{ The details of the Frisch-Newton algorithm are explained in Koenker and Portnoy (1997). The basic idea can be traced back to the log-barrier methods proposed by Frisch in the 1950's for linear programming. But the current implementation is based on proposals by Mehrotra and others in the recent (explosive) literature on interior point methods for solving linear programming problems. This function replaces an earlier one \code{rq.fit.fn}, which required the initial dual values to be feasible. The current version allows the user to specify an infeasible starting point for the dual problem, that is one that may not satisfy the dual equality constraints. It still assumes that the starting value satisfies the upper and lower bounds. } \references{ Koenker, R. and S. Portnoy (1997). The Gaussian Hare and the Laplacian Tortoise: Computability of squared-error vs. absolute-error estimators, with discussion, \emph{Statistical Science}, \bold{12}, 279-300. } \seealso{ \code{\link{rq}}, \code{\link{rq.fit.br}}, \code{\link{rq.fit.pfn}} } \keyword{regression} quantreg/man/summary.rqss.Rd0000644000176200001440000000664513734105743015650 0ustar liggesusers\name{summary.rqss} \alias{summary.rqss} \alias{print.summary.rqss} \title{Summary of rqss fit} \description{ Summary Method for a fitted rqss model. } \usage{\method{summary}{rqss}(object, cov = FALSE, ztol = 1e-5, ...) } \arguments{ \item{object}{an object returned from \code{rqss} fitting, describing an additive model estimating a conditional quantile function. See \code{\link{qss}} for details on how to specify these terms.} \item{cov}{if TRUE return covariance matrix for the parametric components as \code{Vcov} and a list of covariance matrices for the nonparametric components as \code{Vqss}} \item{ztol}{Zero tolerance parameter used to determine the number of zero residuals indicating the estimated parametric dimension of the model, the so-called effective degrees of freedom.} \item{...}{additional arguments} } \details{ This function is intended to explore inferential methods for rqss fitting. The function is modeled after \code{summary.gam} in Simon Wood's (2006) \pkg{mgcv} package. (Of course, Simon should not be blamed for any deficiencies in the current implementation. The basic idea is to condition on the lambda selection and construct quasi-Bayesian credibility intervals based on normal approximation of the "posterior," as computed using the Powell kernel estimate of the usual quantile regression sandwich. See \code{\link{summary.rq}} for further details and references. The function produces a conventional coefficient table with standard errors t-statistics and p-values for the coefficients on the parametric part of the model, and another table for additive nonparametric effects. The latter reports F statistics intended to evaluate the significance of these components individually. In addition the fidelity (value of the QR objective function evaluated at the fitted model), the effective degrees of freedom, and the sample size are reported. } \value{ \item{coef}{Table of estimated coefficients and their standard errors, t-statistics, and p-values for the parametric components of the model} \item{qsstab}{Table of approximate F statistics, effective degrees of freedom and values of the penalty terms for each of the additive nonparametric components of the model, and the lambda values assigned to each.} \item{fidelity}{Value of the quantile regression objective function.} \item{tau}{Quantile of the estimated model} \item{formula}{formula of the estimated model} \item{edf}{Effective degrees of freedom of the fitted model, defined as the number of zero residuals of the fitted model, see Koenker Mizera (2003) for details.} \item{n}{The sample size used to fit the model.} \item{Vcov}{Estimated covariance matrix of the fitted parametric component} \item{Vqss}{List of estimated covariance matrices of the fitted nonparametric component} } \references{ [1] Koenker, R., P. Ng and S. Portnoy, (1994) Quantile Smoothing Splines; \emph{Biometrika} \bold{81}, 673--680. [2] Koenker, R. and I. Mizera, (2003) Penalized Triograms: Total Variation Regularization for Bivariate Smoothing; \emph{JRSS(B)} \bold{66}, 145--163. [3] Wood, S. (2006) \emph{Generalized Additive Models}, Chapman-Hall. } \author{ Roger Koenker } \seealso{ \code{\link{plot.rqss}} } \examples{ n <- 200 x <- sort(rchisq(n,4)) z <- x + rnorm(n) y <- log(x)+ .1*(log(x))^2 + log(x)*rnorm(n)/4 + z f <- rqss(y ~ qss(x) + z) summary(f) } \keyword{regression} \keyword{smooth} \keyword{robust} quantreg/man/predict.rqss.Rd0000644000176200001440000000662414414306664015603 0ustar liggesusers\name{predict.rqss} \alias{predict.rqss} \alias{predict.qss1} \alias{predict.qss2} \title{Predict from fitted nonparametric quantile regression smoothing spline models} \description{ Additive models for nonparametric quantile regression using total variation penalty methods can be fit with the \code{\link{rqss}} function. Univarariate and bivariate components can be predicted using these functions. } \usage{ \method{predict}{rqss}(object, newdata, interval = "none", level = 0.95, ...) \method{predict}{qss1}(object, newdata, ...) \method{predict}{qss2}(object, newdata, ...) } \arguments{ \item{object}{ is a fitted object produced by \code{\link{rqss}} } \item{newdata}{ a data frame describing the observations at which prediction is to be made. For qss components, newdata should lie in strictly within the convex hull of the fitting data. Newdata corresponding to the partially linear component of the model may require caution concerning the treatment of factor levels, if any.} \item{interval}{If set to \code{confidence} then a \code{level} confidence interval for the predictions is returned.} \item{level}{intended coverage probability for the confidence intervals} \item{\dots}{ optional arguments } } \details{ For both univariate and bivariate prediction linear interpolation is done. In the bivariate case, this involves computing barycentric coordinates of the new points relative to their enclosing triangles. It may be of interest to plot individual components of fitted rqss models: this is usually best done by fixing the values of other covariates at reference values typical of the sample data and predicting the response at varying values of one qss term at a time. Direct use of the \code{predict.qss1} and \code{predict.qss2} functions is discouraged since it usually corresponds to predicted values at absurd reference values of the other covariates, i.e. zero. } \value{ A vector of predictions, or in the case that \code{interval = "confidence")} a matrix whose first column is the vector of predictions and whose second and third columns are the lower and upper confidence limits for each prediction. } \author{ R. Koenker } \seealso{ \code{\link{rqss}} } \examples{ n <- 200 lam <- 2 x <- sort(rchisq(n,4)) z <- exp(rnorm(n)) + x y <- log(x)+ .1*(log(x))^2 + z/4 + log(x)*rnorm(n)/4 plot(x,y - z/4 + mean(z)/4) Ifit <- rqss(y ~ qss(x,constraint="I") + z) sfit <- rqss(y ~ qss(x,lambda = lam) + z) xz <- data.frame(z = mean(z), x = seq(min(x)+.01,max(x)-.01,by=.25)) lines(xz[["x"]], predict(Ifit, xz), col=2) lines(xz[["x"]], predict(sfit, xz), col=3) legend(10,2,c("Increasing","Smooth"),lty = 1, col = c(2,3)) title("Predicted Median Response at Mean Value of z") %%keep objects for inspection : do not rm(x,y,z,xz,fit) ## Bivariate example -- loads pkg "interp" if(requireNamespace("interp")){ if(requireNamespace("interp")){ data(CobarOre) fit <- rqss(z ~ qss(cbind(x,y), lambda=.08), data= CobarOre) plot(fit, col="grey", main = "CobarOre data -- rqss(z ~ qss(cbind(x,y)))") T <- with(CobarOre, interp::tri.mesh(x, y)) set.seed(77) ndum <- 100 xd <- with(CobarOre, runif(ndum, min(x), max(x))) yd <- with(CobarOre, runif(ndum, min(y), max(y))) table(s <- interp::in.convex.hull(T, xd, yd)) pred <- predict(fit, data.frame(x = xd[s], y = yd[s])) contour(interp::interp(xd[s],yd[s], pred), col="red", add = TRUE) }}} \keyword{regression} \keyword{smooth} \keyword{robust} quantreg/man/print.summary.rq.Rd0000644000176200001440000000117411555564235016431 0ustar liggesusers\name{print.summary.rq} \alias{print.summary.rq} \alias{print.summary.rqs} \title{ Print Quantile Regression Summary Object } \usage{ \method{print}{summary.rq}(x, digits=max(5, .Options$digits - 2), ...) \method{print}{summary.rqs}(x, ...) } \arguments{ \item{x}{ This is an object of class \code{"summary.rq"} produced by a call to \code{summary.rq()}. } \item{digits}{ Significant digits reported in the printed table. } \item{...}{ Optional arguments passed to printing function } } \description{Print summary of quantile regression object} \seealso{ \code{\link{summary.rq}} } \keyword{ regression } quantreg/man/plot.rqs.Rd0000644000176200001440000000360613676374446014755 0ustar liggesusers\name{plot.rqs} \alias{plot.rqs} \title{Visualizing sequences of quantile regressions} \description{A sequence of coefficient estimates for quantile regressions with varying \code{tau} parameters is visualized.} \usage{ \method{plot}{rqs}(x, parm = NULL, ols = TRUE, mfrow = NULL, mar = NULL, ylim = NULL, main = NULL, col = 1:2, lty = 1:2, cex = 0.5, pch = 20, type = "b", xlab = "", ylab = "", \dots) } \arguments{ \item{x}{an object of class \code{"rqs"} as produce by \code{\link{rq}} (with a vector of \code{tau} values).} \item{parm}{a specification of which parameters are to be plotted, either a vector of numbers or a vector of names. By default, all parameters are considered.} \item{ols}{logical. Should a line for the OLS coefficient (as estimated by \code{\link[stats]{lm}}) be added?} \item{mfrow, mar, ylim, main}{graphical parameters. Suitable defaults are chosen based on the coefficients to be visualized.} \item{col, lty}{graphical parameters. For each parameter, the first element corresponds to the \code{rq} coefficients and the second to the \code{lm} coefficients.} \item{cex, pch, type, xlab, ylab, \dots}{further graphical parameters passed.} } \details{The \code{plot} method for \code{"rqs"} objects visualizes the coefficients only, confidence bands can be added by using the \code{plot} method for the associated \code{"summary.rqs"} object.} \seealso{\code{\link{rq}}, \code{\link{plot.summary.rqs}}} \value{A matrix with all coefficients visualized is returned invisibly.} \examples{ ## fit Engel models (in levels) for tau = 0.1, ..., 0.9 data("engel") fm <- rq(foodexp ~ income, data = engel, tau = 1:9/10) ## visualizations plot(fm) plot(fm, parm = 2, mar = c(5.1, 4.1, 2.1, 2.1), main = "", xlab = "tau", ylab = "income coefficient", cex = 1, pch = 19) } \keyword{hplot} quantreg/DESCRIPTION0000644000176200001440000000703214763523701013620 0ustar liggesusersPackage: quantreg Title: Quantile Regression Description: Estimation and inference methods for models for conditional quantile functions: Linear and nonlinear parametric and non-parametric (total variation penalized) models for conditional quantiles of a univariate response and several methods for handling censored survival data. Portfolio selection methods based on expected shortfall risk are also now included. See Koenker, R. (2005) Quantile Regression, Cambridge U. Press, and Koenker, R. et al. (2017) Handbook of Quantile Regression, CRC Press, . Version: 6.1 Authors@R: c( person("Roger", "Koenker", role = c("cre","aut"), email = "rkoenker@illinois.edu"), person("Stephen", "Portnoy", role = c("ctb"), comment = "Contributions to Censored QR code", email = "sportnoy@illinois.edu"), person(c("Pin", "Tian"), "Ng", role = c("ctb"), comment = "Contributions to Sparse QR code", email = "pin.ng@nau.edu"), person("Blaise", "Melly", role = c("ctb"), comment = "Contributions to preprocessing code", email = "mellyblaise@gmail.com"), person("Achim", "Zeileis", role = c("ctb"), comment = "Contributions to dynrq code essentially identical to his dynlm code", email = "Achim.Zeileis@uibk.ac.at"), person("Philip", "Grosjean", role = c("ctb"), comment = "Contributions to nlrq code", email = "phgrosjean@sciviews.org"), person("Cleve", "Moler", role = c("ctb"), comment = "author of several linpack routines"), person("Yousef", "Saad", role = c("ctb"), comment = "author of sparskit2"), person("Victor", "Chernozhukov", role = c("ctb"), comment = "contributions to extreme value inference code"), person("Ivan", "Fernandez-Val", role = c("ctb"), comment = "contributions to extreme value inference code"), person("Martin", "Maechler", role = "ctb", comment = c("tweaks (src/chlfct.f, 'tiny','Large')", ORCID = "0000-0002-8685-9910")), person(c("Brian", "D"), "Ripley", role = c("trl","ctb"), comment = "Initial (2001) R port from S (to my everlasting shame -- how could I have been so slow to adopt R!) and for numerous other suggestions and useful advice", email = "ripley@stats.ox.ac.uk")) Maintainer: Roger Koenker Repository: CRAN Depends: R (>= 3.5), stats, SparseM Imports: methods, graphics, Matrix, MatrixModels, survival, MASS Suggests: interp, rgl, logspline, nor1mix, Formula, zoo, R.rsp, conquer License: GPL (>= 2) URL: https://www.r-project.org NeedsCompilation: yes VignetteBuilder: R.rsp Packaged: 2025-02-28 17:44:44 UTC; roger Author: Roger Koenker [cre, aut], Stephen Portnoy [ctb] (Contributions to Censored QR code), Pin Tian Ng [ctb] (Contributions to Sparse QR code), Blaise Melly [ctb] (Contributions to preprocessing code), Achim Zeileis [ctb] (Contributions to dynrq code essentially identical to his dynlm code), Philip Grosjean [ctb] (Contributions to nlrq code), Cleve Moler [ctb] (author of several linpack routines), Yousef Saad [ctb] (author of sparskit2), Victor Chernozhukov [ctb] (contributions to extreme value inference code), Ivan Fernandez-Val [ctb] (contributions to extreme value inference code), Martin Maechler [ctb] (tweaks (src/chlfct.f, 'tiny','Large'), ), Brian D Ripley [trl, ctb] (Initial (2001) R port from S (to my everlasting shame -- how could I have been so slow to adopt R!) and for numerous other suggestions and useful advice) Date/Publication: 2025-03-10 08:50:09 UTC