From dfec6804e2e76ec7e59cab09255a06b2b8b49de7 Mon Sep 17 00:00:00 2001 From: Dave Meko Date: Sun, 27 Oct 2024 16:42:15 -0700 Subject: [PATCH] Initial set of files --- AbbreviationsTRISH.odt | Bin 0 -> 27474 bytes AbbreviationsTRISH.pdf | Bin 0 -> 26063 bytes CrossValid1.R | 126 ++ CrossValid2.R | 85 ++ EffectSS.R | 113 ++ ForwStep.R | 172 +++ ForwStep1.R | 228 ++++ ForwStep2.R | 171 +++ ForwStep3.R | 229 ++++ Fpvalue.R | 21 + KnnAnalog.R | 136 +++ LagModel2Char.R | 43 + LagModel2Sign.R | 60 + LagReOrder.R | 37 + LagYear.R | 162 +++ LagkAcc.R | 60 + LeaveOut.R | 49 + ListFilesTRISH01.txt | 68 ++ NashSutt.R | 127 ++ PackagesNeeded.txt | 20 + PeriodCommon.R | 66 + PrewhitenChrons.R | 106 ++ RecMLR1.R | 1678 ++++++++++++++++++++++++++ RecPCR1.R | 793 ++++++++++++ RecSLR1.R | 843 +++++++++++++ Recon.init | 30 + ReconAnalog.R | 1462 ++++++++++++++++++++++ Recon_Katun.init | 30 + Recon_init_explanation.odt | Bin 0 -> 66057 bytes Recon_init_explanation.pdf | Bin 0 -> 56152 bytes Running_Instructions_ReconAnalog.odt | Bin 0 -> 46725 bytes Running_Instructions_ReconAnalog.pdf | Bin 0 -> 36346 bytes SeasClim.R | 115 ++ SignalDrop1.R | 35 + TabSepTsm1.R | 86 ++ TabSepTsm2.R | 56 + TabSepTsm3.R | 52 + Table1Column.R | 105 ++ TablePCA1.R | 116 ++ TableWrite1.R | 67 + TranFlow.R | 82 ++ TrimTsm1.R | 95 ++ TrishOutputDescribeAnalog.docx | Bin 0 -> 25327 bytes TrishOutputDescribeAnalog.pdf | Bin 0 -> 115039 bytes TrishOutputDescribeMLR1-PCA.docx | Bin 0 -> 26669 bytes TrishOutputDescribeMLR1-PCA.pdf | Bin 0 -> 118827 bytes TrishOutputDescribeMLR1-noPCA.docx | Bin 0 -> 24513 bytes TrishOutputDescribeMLR1-noPCA.pdf | Bin 0 -> 113279 bytes TrishOutputDescribeSLR1.docx | Bin 0 -> 22334 bytes TrishOutputDescribeSLR1.pdf | Bin 0 -> 102812 bytes Tsm2Scores1.R | 98 ++ c13toc3.R | 40 + emssgUNH.R | 14 + hydroData_Katun.txt | 56 + mannken1.R | 447 +++++++ readme.odt | Bin 0 -> 59252 bytes readme.pdf | Bin 0 -> 46815 bytes reconsw4.R | 658 ++++++++++ siteData_Katun.txt | 229 ++++ siteMeta_Katun.txt | 39 + ssValid.R | 104 ++ stem1.R | 81 ++ stemACF.R | 110 ++ ties1.R | 70 ++ trimRowNA.R | 34 + trimnan.R | 35 + tsmExtend.R | 204 ++++ xyCI.R | 52 + 68 files changed, 9995 insertions(+) create mode 100644 AbbreviationsTRISH.odt create mode 100755 AbbreviationsTRISH.pdf create mode 100644 CrossValid1.R create mode 100755 CrossValid2.R create mode 100755 EffectSS.R create mode 100755 ForwStep.R create mode 100644 ForwStep1.R create mode 100755 ForwStep2.R create mode 100755 ForwStep3.R create mode 100755 Fpvalue.R create mode 100755 KnnAnalog.R create mode 100755 LagModel2Char.R create mode 100755 LagModel2Sign.R create mode 100755 LagReOrder.R create mode 100755 LagYear.R create mode 100755 LagkAcc.R create mode 100755 LeaveOut.R create mode 100755 ListFilesTRISH01.txt create mode 100644 NashSutt.R create mode 100755 PackagesNeeded.txt create mode 100755 PeriodCommon.R create mode 100755 PrewhitenChrons.R create mode 100755 RecMLR1.R create mode 100755 RecPCR1.R create mode 100755 RecSLR1.R create mode 100644 Recon.init create mode 100644 ReconAnalog.R create mode 100644 Recon_Katun.init create mode 100644 Recon_init_explanation.odt create mode 100644 Recon_init_explanation.pdf create mode 100644 Running_Instructions_ReconAnalog.odt create mode 100644 Running_Instructions_ReconAnalog.pdf create mode 100755 SeasClim.R create mode 100755 SignalDrop1.R create mode 100755 TabSepTsm1.R create mode 100755 TabSepTsm2.R create mode 100755 TabSepTsm3.R create mode 100755 Table1Column.R create mode 100755 TablePCA1.R create mode 100755 TableWrite1.R create mode 100755 TranFlow.R create mode 100755 TrimTsm1.R create mode 100755 TrishOutputDescribeAnalog.docx create mode 100755 TrishOutputDescribeAnalog.pdf create mode 100755 TrishOutputDescribeMLR1-PCA.docx create mode 100755 TrishOutputDescribeMLR1-PCA.pdf create mode 100755 TrishOutputDescribeMLR1-noPCA.docx create mode 100755 TrishOutputDescribeMLR1-noPCA.pdf create mode 100755 TrishOutputDescribeSLR1.docx create mode 100755 TrishOutputDescribeSLR1.pdf create mode 100755 Tsm2Scores1.R create mode 100755 c13toc3.R create mode 100755 emssgUNH.R create mode 100644 hydroData_Katun.txt create mode 100755 mannken1.R create mode 100644 readme.odt create mode 100644 readme.pdf create mode 100755 reconsw4.R create mode 100644 siteData_Katun.txt create mode 100644 siteMeta_Katun.txt create mode 100755 ssValid.R create mode 100755 stem1.R create mode 100755 stemACF.R create mode 100755 ties1.R create mode 100755 trimRowNA.R create mode 100755 trimnan.R create mode 100755 tsmExtend.R create mode 100755 xyCI.R diff --git a/AbbreviationsTRISH.odt b/AbbreviationsTRISH.odt new file mode 100644 index 0000000000000000000000000000000000000000..98d6dc5ef1de1703f9b80466d20d1d90e204d80b GIT binary patch literal 27474 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 J8MEi3{{?^$sp0?t literal 0 HcmV?d00001 diff --git a/AbbreviationsTRISH.pdf b/AbbreviationsTRISH.pdf new file mode 100755 index 0000000000000000000000000000000000000000..76843c7c93db1f33dca06d1e2c9eaf67cf75a5f6 GIT binary patch literal 26063 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 z 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 literal 0 HcmV?d00001 diff --git a/CrossValid1.R b/CrossValid1.R new file mode 100644 index 0000000..f03d37c --- /dev/null +++ b/CrossValid1.R @@ -0,0 +1,126 @@ +CrossValid1<- function(X, y, nNeg, nPos, i2) { + # Leave-m-out cross-validation of a previously estimated stepwise regression model. + # D Meko + # last revised 2024-03-08 + # + # IN + # X is matrix of potential predictors + # y is vector of predictand + # nNeg and nPos are the maximum negative and positive lags that were allowed in + # the stepwise regression model of predictand on chronologies. These settings + # are used by function LeaveOut to compute m=1+4*max(nNeg,nPos), the nunber + # of observations to be omitted in each iteration of leave-m-out cross- + # validation + # i2 is order that columns of matrix of potential predictors entered model + # in calling script or function, which is assumed to have applied stepwise + # regression; that order is repeated here in the stepwise cross-validation + # + # OUT + # CV [named list] statistics for maximim-RE model from forward stepwise + # Names self-describing. Includes step of maximum RE; columns of the original + # matrix of potential predictors in the maximum-RE model; reduction of error + # statistic, validation root-mean-square errot, cross-validation predictions, + # cross-validation residuals of the final model; and number of observations + # left out in leave-m-out cross-validation. Also in CV is the numerical + # vector REcvAll of RE at each step of the modeling, and corresponding vector + # RMSEVall or RMSE at each step + # + # NOTES + # + # Absolutely important that input column pointer i1 indicates columns of X + # in order (left to right) as they entered stepwise in the regression assumed + # to have been done before calling this function. + # + # revised 2024-03-08: cosmetic; expansion and clarification of comments + + library("pracma") # needed for emulation of Matlab "backslash" operator through + # QR decomposition + + source(paste(code_dir,"LeaveOut.R",sep="")) # form pointer matrix for leave-m-out cross-validation + + + #--- Build pointer matrix for predictor sets + + X<-as.matrix(X) + mX <-dim(X)[1] + y <- as.matrix(y) + H<-LeaveOut(nNeg,nPos,mX) + Lin <- H$Lin + mOut <- H$NumberLeftOut + + + #### Cross-validation modeling + + #... Storage for models for all steps + E1 <- matrix(NA,mX,length(i2)) # to store cross-valid residuals for all models + P1 <- E1 # to hold cross-validation predictions ... + RMSEvAll <- rep(NA,length(i2)) # to store RMSEv for all models + REall <- RMSEvAll # ... RE ... + + for (k in 1:length(i2)){ + + #--- Storage for various 1-col matrices specific to k-step model + w1 <- matrix(NA,mX,1) # cv predictions + w2 <- w1 # null predictions (equal to calibration means) + ithis <- i2[1:k] + + #--- long-term predictor matrix + Xthis <- as.matrix(X[,ithis]) + a1this <- matrix(1,mX,1) + Xthis <- cbind(a1this,Xthis) + + + for (n in 1:mX){ + + #--- Build predictor matrix + Lthis <- Lin[,n] + Lthis <- as.logical(as.matrix(Lthis)) + nthis <- sum(Lthis) + u <- as.matrix(X[Lthis,ithis]) + a1 <- matrix(1,nthis,1) + U <- cbind(a1,u) # predictor matrix + + # Build predictand as 1-col matrix + v <- as.matrix(y[Lthis]) + + #--- Matrix left division to estimate regression parameters + b <- mldivide(U,v) # [matrix, 1 col, with coefficients, constant term first] + + #--- Estimated predictand for central "left-out" observation + vhat1 <- Xthis[n,] %*% b + w1[n] <- vhat1; + w2[n] <- mean(v) + + } + + #--- Residuals time series + e1<-y-w1 # cross-validation + e2 <- y-w2 # null-model (using calib means as predictions) + + #--- Validaton statistics + SSE1 <- sum(e1*e1) # sum of squares of cross-validation errors + MSE1 <- SSE1/mX # mean square error of cross-validation + RMSEv <- sqrt(MSE1) # root-mean-square error of cross-validation + SSE2 <- sum(e2*e2) # sum of square of null-model residuals + RE <- 1 - SSE1/SSE2 # reduction of error statistic + + #--- Store statistics for model step + E1[,k] <- e1 + P1[,k] <- w1 + RMSEvAll[k]<- RMSEv + REall[k] <-RE + } + #--- Find maximum-RE model and its statistics + kmax <- which.max(REall) # at this step + i2cv <- i2[1:kmax] + REwinner <- REall[kmax] + Pcv <- as.matrix(P1[,kmax]) # cv predictions + Ecv <- as.matrix(E1[,kmax]) # cv errors + RMSEcv <- RMSEvAll[kmax] + + + CV <- list("REmaxStep"=kmax,"ColumnsIn"=i2cv,"REcvAll"=REall,"REcv"=REwinner, + "CVpredictions"=Pcv,"CVresiduals"=Ecv,"RMSEvall"=RMSEvAll,"RMSEcv"=RMSEcv, + "LeftOut"=mOut) + return(CV) +} \ No newline at end of file diff --git a/CrossValid2.R b/CrossValid2.R new file mode 100755 index 0000000..9f22cdc --- /dev/null +++ b/CrossValid2.R @@ -0,0 +1,85 @@ +CrossValid2<- function(X, y, nNeg,nPos) { + # Leave-m-out cross-validation of a regression model. + # D Meko + # last revised 20220104 + # + # IN + # X is matrix of predictors + # y is vector of predictand + # nNeg and nPos are the maximum negative and positive lags that were considered when + # the model was fit. + # + # OUT + # Output [named list] cross-validation statistics: + # REcv (1x1)r cross-validation reduction of error + # CVpredictions [m 1 col]r cross-validation predictions + # CVresidual [m, 1 col]r cross-validation residuals + # RMSEcv (1x1)r root-mean-square error of cross-validation + # LeftOut (1x1)i how many obs left out in each cross-validation model + # + # This is simplified from CrossValid1(), which handles various steps of a model + # previously fit by forward stepwise regression. + + library("pracma") # needed for emulation of Matlab "backslash" operator through + # QR decomposition + + source(paste(code_dir,"LeaveOut.R",sep="")) # form pointer matrix for leave-m-out cross-validation + + #--- Build pointer matrix for cross-validation predictor sets + + X<-as.matrix(X) + mX <-dim(X)[1] + y <- as.matrix(y) + H<-LeaveOut(nNeg,nPos,mX) + Lin <- H$Lin # logical pointer matrix; each col marks obs to use as 1 + mOut <- H$NumberLeftOut + + + #### Cross-validation modeling + + #--- Storage + w1 <- matrix(NA,mX,1) # to hold cv predictions + w2 <- w1 # to hold null predictions (equal to calibration means) + + #--- long-term predictor matrix, with 1's in first col + a1this <- matrix(1,mX,1) + Xthis <- cbind(a1this,X) + + + for (n in 1:mX){ # Loop over observations + + #--- Build predictor matrix + Lthis <- Lin[,n] + Lthis <- as.logical(as.matrix(Lthis)) + nthis <- sum(Lthis) + u <- as.matrix(X[Lthis,]) + a1 <- matrix(1,nthis,1) + U <- cbind(a1,u) # predictor matrix, this cv model + + # Build predictand as 1-col matrix + v <- as.matrix(y[Lthis]) + + #--- Matrix left division to estimate regression parameters + b <- mldivide(U,v) # [matrix, 1 col, with coefficients, constant term first] + + #--- Estimated predictand for central "left-out" observation + vhat1 <- Xthis[n,] %*% b + w1[n] <- vhat1; + w2[n] <- mean(v) + } + + #--- Time series of residuals + e1<-y-w1 # cross-validation + e2 <- y-w2 # null-model (using calib means as predictions) + + #--- Validaton statistics + SSE1 <- sum(e1*e1) # sum of squares of cross-validation errors + MSE1 <- SSE1/mX # mean square error of cross-validation + RMSEcv <- sqrt(MSE1) # root-mean-square error of cross-validation + SSE2 <- sum(e2*e2) # sum of square of null-model residuals + REcv <- 1 - SSE1/SSE2 # reduction of error statistic + + Output <- list("REcv"=REcv,"CVpredictions"=w1,"CVresiduals"=e1,"RMSEcv"=RMSEcv, + "LeftOut"=mOut) + return(Output) +} \ No newline at end of file diff --git a/EffectSS.R b/EffectSS.R new file mode 100755 index 0000000..8d214bf --- /dev/null +++ b/EffectSS.R @@ -0,0 +1,113 @@ +EffectSS <- function(x,y) { + # D. Meko + # Last revised 2022-09-09 + # Effective sample size -- effective number of "independent" observations. + # + # Effective sample size, Nprime, is computed from the lag-1 autocorrelation of a time series + # or pair of series. In univariate mode, Nprime can be applied for adjustment of significance + # of univariate statistics (e.g., uncertainty of the sample mean or variance). In bivariate + # mode, the effecitive sample size can be applied to adjust signficance of the correlation + # coefficient for the two series. + # + #---IN + # + # x: time series matrix or vector without any NA; number of observations mx, number of series nx + # y: ditto; but if passing vector and matrix, make sure y is the vector and x the matrix + # + #---OUT + # + # Output: list with fields + # Nprime: scalar or vector of effective sample size + # Lflag: flag (logical, length 2) + # (1) x or y have at least one NA + # (2) y is not vector and not same col-size as x + # ErrorMessage [vector]c : error message associated with Lflag + # + #---NOTES + # + # If input argument y is NA, Nprime is computed in univariate mode: + # If x is vector, Nprime is the scalar effective sample size + # If x is a matrix, Nprime is the vector of the effective sample sizes of the individual series + # If input argument y is not NA, Nprime is computed in bivariate mode: + # If y is a vector, Nprime is the effective sample size for correlation of y with all + # series in x (Nprime can be scalar or vector, depending on whether x is scalar or vector) + # If y is a matrix with ny>1 columns, ny must equal nx, and Nprime is the effective sample size + # for correlation of each column of x with same column of y (Nprime is a vector) + # Method. In univariate mode, if original sample size is N, effective sample size is + # Nprime = N(1-r1)/(1+r1), where r1 is the lag-1 autocorrelation + # Method. In bivariate mode, for pair of series, x and y, effective sample size is + # Nprime = N(1-r1r2)/(1+r1r2), where r1 is lag-1 autocorrelation of x and r2 is lag-1 + # autocorrelation of y + + source(paste(code_dir,"LagkAcc.R",sep="")) # optional transformation of flows + Lflag <-c(FALSE,FALSE) # initialize as no error flags + ErrorMessage <- "No problems" + Nprime <- NA + + klag <-1 # will only need lag-1 autocorrelation + + if (!all(complete.cases(x)) | (!all(is.na(y)) & !all(complete.cases(y)))){ + # ERROR MESSAGE + Lflag[1]<-TRUE + ErrorMessage <- 'x or y contain a NA' + Output <- list(Lflag=Lflag,ErrorMessage=ErrorMessage,Nprime=Nprime) + return(Output) + } + if (is.vector(x)){ + N <- length(x) + nx <-1 + } else { + N <- dim(x)[1] + nx <- dim(x)[2] + } + if (all(is.na(y))){ + # Univariate mode for effective sample size + ResTemp <- LagkAcc(x,klag) + a <- 1-ResTemp$rk + b <- 1+ResTemp$rk + f <- a/b + Nprime <- floor(f*N) + L <- ResTemp$rk <= 0 + Nprime[L] <- N # if lag-1 r of either series lag-1 autocorr non-positive, Nprime equals N + } else { + # bivariate mode (e.g., for significane adjustment for correlation) + if (is.vector(y)){ + if (nx ==1){ + # both x and y are vectors + ResTemp<- rkGet(x,y,klag) + r1x <- ResTemp$r1x; r1y <- ResTemp$r1y + } else { + # y vector, x matrix + y = matrix(replicate(nx,y),nrow=N) # replicate y to same col-size as x + ResTemp<- rkGet(x,y,klag) + r1x <- ResTemp$r1x; r1y <- ResTemp$r1y + } + } else { + # y and x both matrix + ny <- dim(y)[2] + if (ny != nx){ + # ERROR MESSAGE + Lflag[2]<-TRUE + ErrorMessage <- 'y is matrix and not same col-size as x' + Output <- list(Lflag=Lflag,ErrorMessage=ErrorMessage,Nprime=Nprime) + return(Output) + } + ResTemp<- rkGet(x,y,klag) + r1x <- ResTemp$r1x; r1y <- ResTemp$r1y + } + rr <- r1x * r1y # products of lag-1 autocorrelation + f <- (1-rr)/(1+rr) + Nprime <- floor(f*N) + L <- r1x <=0 | r1y <=0 + Nprime[L] <- N + } + + Output <- list(Nprime=Nprime,Lflag=Lflag,ErrorMessage=ErrorMessage) +} +rkGet <- function(x,y,klag){ + ResTempx <- LagkAcc(x,klag) + ResTempy <- LagkAcc(y,klag) + r1x <- ResTempx$rk + r1y <- ResTempy$rk + Out1 <- list(r1x=r1x,r1y=r1y) +} \ No newline at end of file diff --git a/ForwStep.R b/ForwStep.R new file mode 100755 index 0000000..537575d --- /dev/null +++ b/ForwStep.R @@ -0,0 +1,172 @@ +ForwStep <- function(X,namesX, y) { + # Forward stepwise regression for maximum-adjusted-Rsquared model + # D. Meko + # Last revised 2024-03-04 + # + # The forward stepwise entry is done until all variables are in. The final model + # is selected as the model for step at which adjusted R-square is maximum + # + # INPUT ARGUMENTS + # y [matrix] 1-col of predictand + # X [matrix] one-or-more cols of pool of potential predictors + # namesX [character] vector of ids of potential predictors (what's in cols of X) + # + # OUTPUT + # H: named list, + # names(H)<-c('Model','StepMaxR2adj','ColsInModel','Coefficients', + # 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + # 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + # 'Fpvalue') + # Model [lm object] is a special type of R object, and holds many of the + # regression statistics and data, such as the residuals and predicted data. + # R has functions that operate on lm objects. For example, + # summary(H#Model) shows a summary table of the regression + # The Coefficients, combined with ColsInModel would allow a reconstruction to + # be generated from the long time series of potenial predictors X. + # ColsInModel gives the columns of that matrix that the coefficients apply + # to. By plotting RsquaredAllSteps or RsquaredAdjAllSteps agains step, you + # can disply how R-square and adjusted R-square changes with step in the + # stepwise modelin. + # Most of the other list items are obvious from their names. StepMaxR2adj is + # the step at which adjusted R-square reaches a maximum. + # + # revised 2024-03-04: fixed error in "r<-cor(e,X[,ibullpen])" + + #--- ALLOCATE AND INITIALIZE + Np<-dim(X)[2] # size predictor pool + i1<-1:Np # index to predictors in pool + i2<-rep(NA,Np) # index in order of entry + Lin=rep(FALSE,Np) # initial for in model + R2<-rep(NA,Np) + R2a<-rep(NA,Np) + + + #--- FOREWARD STEPWISE REGRESSION + + for (j in 1:Np){ + if (j==1){ + # First, pass pick X correlated highest (absolute R) with y + colnames(X)<-namesX # re-initialize these + r<-cor(y,X) + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] + i2[j]<-iwinner + Lin[iwinner]<-TRUE # Logical to cols of X in model to be estimated + U<-X[,Lin] # culll matrix of those predictors + G<-lm(y~U) # estimate model (G is a "lm" object ) + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this # store R-squared for this model + R2a[j]<-R2adjthis # store adjusted R-squared ... + e<-as.matrix(G$residuals) # model residuals; + } else { + # iteration after the first. e are the residuals of the previous step. + # At each step, e is correlated with the cols of X not yet in model. + # "Chosen one" is the the col of X with highest correlations + colnames(X)<-namesX # re-initialize these + ibullpen <-i1[!Lin] # cols of X NOT yet in models + r<-cor(e,X[,ibullpen]) + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] # pointer to highes correlated member of sub-matrix + i2[j]<-ibullpen[iwinner] # corresponding column of that member in X + ithis<-ibullpen[iwinner] #... renamed for simplicity + Lin[ithis]<-TRUE # logical of cols of X in current model to be estimated + # Next statements exactly same as those described for first iteration + U<-X[,Lin] + G<-lm(y~U) # estimation + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this + R2a[j]<-R2adjthis + e<-as.matrix(G$residuals) + } + } + + #--- FIND "BEST" MODEL AND RE-FIT IT + rm(H) + Lin<-rep(FALSE,Np) # re-initialize as no variables in model + + # MAXIMUM ADJUSTED R-SQUARED VERSION + # Commented out code for using maximum adjusted R2 as criterion for best + # model. For large number of variables in pool of potential predictos, and + # with those possibly chosen by correlation screening from larger number + # of possible predictors, this criterion tends to over-fit model. Decided + # to stop entry instead FIRST maximimum of adjusted R2 + # + # s<-sort(R2a,decreasing=TRUE,index.return=TRUE) # sorted adjusted R-squared, dec. + # iwinner<-s$ix[1] # step at which adjusted R-squared highest + # i2a<-i2[1:iwinner] # cols of X in model to be fit + # Lin[i2a]<-TRUE # turn on logical for cols of X in model to be fit + + # FIRST LOCAL MAXIMUM OF ADJUSTED R-SQUARED + + if (length(Lin)==1){ + # only one predictor in pool; only one step + iwinner<-1 + } else { + d<-diff(R2a) # first difference of adjusted R-squared with step in model + if (all(d>=0)){ + # Adjusted R-squared always increasing with step + iwinner<-length(Lin) + } else { + # adjusted R-squared starts dropping at some step (step ithis+1) + ithis<-which(d < 0) # find step of first decline in adjuste R-squared + iwinner<-ithis[1] + } + } + i2a<-i2[1:iwinner] # cols of X in final model + Lin[i2a]<-TRUE # turn on logical for cols of X in model to be fit + + #---- PULL SUBMATRIX OF PREDICTORS AND ESTIMATE MODEL + # if adjR2 begins dropping from 1st step, only 1 series enters matrix... + if(length(i2a)==1){ + U <- matrix(X[,Lin]) + } + else{ + U <- X[,Lin] + } + colnames(X)<-namesX # re-initialize these + colnames(U)<-colnames(X)[Lin] + G<-lm(y~U) # estimation + + + #--- STATISTICS OF FINAL FITTED MODEL + + kstep<-sum(Lin) # final step (max adj R-square) + + H = list() + H[[1]]<-G + H[[2]]<-kstep + H[[3]]<-i1[Lin] + H[[4]]<-G$coefficients + H[[5]]<-i2[1:kstep] + H[[6]]<-summary(G)$r.squared + H[[7]]<-summary(G)$adj.r.squared + jstep<-(1:Np) + H[[8]]<-jstep + H[[9]]<-R2 + H[[10]]<-R2a + H[[11]]<-summary(G)$fstatistic[1] + + # function for p-value of F; from + # https://stackoverflow.com/questions/5587676/pull-out-p-values-and-r-squared-from-a-linear-regression + lmp <- function (modelobject) { + if (class(modelobject) != "lm") stop("Not an object of class 'lm' ") + f <- summary(modelobject)$fstatistic + p <- pf(f[1],f[2],f[3],lower.tail=F) + attributes(p) <- NULL + return(p) + } + p<-lmp(G) + H[[12]]<-1-p # pvalue of overall F + + names(H)<-c('Model','StepMaxR2adj','ColsInModel','Coefficients', + 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + 'Fpvalue') + return(H) +} + + + + diff --git a/ForwStep1.R b/ForwStep1.R new file mode 100644 index 0000000..c0f8b59 --- /dev/null +++ b/ForwStep1.R @@ -0,0 +1,228 @@ +ForwStep1 <- function(X,namesX, y,kstop,nNeg,nPos) { + # Forward stepwise regression + # D. Meko + # Last revised 2023-08-16 + # + # The forward stepwise entry is done until all variables are in. The final model + # is selected optionally as the model for step at which adjusted R-square is maximum + # or the cross-validation RE is a maximum + # + # INPUT ARGUMENTS + # y [matrix] 1-col of predictand + # X [matrix] one-or-more cols of pool of potential predictors + # namesX [character] vector of ids of potential predictors (what's in cols of X) + # kstop [numeric] stopping criterion: 1=maximimum adjusted R-squared, + # 2=maximum cross-validation RE + # nNeg [numberic] maximum negative lag on chronologies allowed in modeling + # nPos [numeric] maximum positive...CrossValidStorage + # + # OUTPUT + # H: named list, with elements: + # c('Model','StopCriterion','StoppingStep','ColsInModel','Coefficients', + # 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + # 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + # 'Fpvalue', + # 'CrossValidStorage','NleftOutinCV','REcv','RMSEcv', + # 'ModelTable') + # Model [lm object] special type of R object that holds many of the + # regression statistics and data, such as the residuals and predicted data. + # R has functions that operate on lm objects. For example, + # summary(H$Model) shows a summary table of the regression + # StopCriterion: criterion for picking best model (1=max adjusted R-squares; + # 2=maximum cross-validation RE) + # StoppingStep: the step at which stepwise regression stopped according to StopCriterion + # ColsInModel: which columns of input X are in the final model; the order is important, + # and matches the order of coefficients in H$coefficients (after the intercept) + # Coefficients: the regression coefficients, starting with intercept term and then + # in order as in H$ColsInModel.The Coefficients, combined with ColsInModel allow + # a reconstruction to with matrix X. + # ColsInOrderEntry: order in which the columns of X entered the stepwise model. In general, + # this differs from order in H$ColsInModel + # Rsquared,RsquaredAdj: R-squared and adjusted R-squared of the final model + # Step, RsquaredAllSteps,RsquaredAdjAllSteps: step is a numeric vector (1,2, ...) of + # the step in the stepwise process; the other two variables are the R-squared and + # adjusted R-squared at each step + # Foverall,Fpvalue: overall-F of the final regression model and p-value of that F + # CrossValidStorage: a list of detailed cross-validation statistics returned by + # CrossValid1(). No need to dig into this unless curious. See the comments for + # Crossvalid1() for definition of list. + # NleftOutinCV,REcv,RMSEcv: cross-validation statistics. NleftOutCV is the number of + # observations left out at each iteration of cross-validation. With lags, this is + # greater than 1, and set to assure no tree-ring data providing a cross-validation + # predicition was also used to calibrate the prediction model. REcv is the + # reduction-of-error statistic. RMSEcv is the root-mean-square error of cross-validation. + # ModelTable: a table object listing the same coefficients as in H$coefficients, but also + # including the corresponding id of the predictor, cross-referenced to columns of + # input matrix X and indicating if lagged positively or negatively and by how much. + # For example, X7 is the seventh column of X, no lags; and X2P2 is the second column of + # of X lagged +2 years forward from the predictand. + # + # Rev 2023-08-16: cosmetic, to make sure that summary(G) retains + # correct col name when just on predictor, on call to lm() + + source("CrossValid1.R") + + #--- ALLOCATE AND INITIALIZE + Np<-dim(X)[2] # size predictor pool + i1<-1:Np # index to predictors in pool + i2<-rep(NA,Np) # index in order of entry + Lin=rep(FALSE,Np) # initial for in model + R2<-rep(NA,Np) + R2a<-rep(NA,Np) + + + #--- FORWARD STEPWISE REGRESSION + + for (j in 1:Np){ + if (j==1){ + + # First, pass pick X correlated highest (absolute R) with y + colnames(X)<-namesX # re-initialize these + r<-cor(y,X) + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] + i2[j]<-iwinner + Lin[iwinner]<-TRUE # Logical to cols of X in model to be estimated + + U<-X[,Lin,drop="FALSE"] # cull matrix of those predictors + # If only 1 predictor, need next to make sure lm receive col name + if (dim(U)[2]==1){ + colnames(U) <- colnames(X)[Lin] + } + G<-lm(y~U) # estimate model (G is a "lm" object ) + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this # store R-squared for this model + R2a[j]<-R2adjthis # store adjusted R-squared ... + e<-as.matrix(G$residuals) # model residuals; + } else { + # iteration after the first. e are the residuals of the previous step. + # At each step, e is correlated with the cols of X not yet in model. + # "Chosen one" is the the col of X with highest correlations + colnames(X)<-namesX # re-initialize these + ibullpen <-i1[!Lin] # cols of X NOT yet in models + r<-cor(e,X[,ibullpen]) + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] # pointer to highes correlated member of sub-matrix + i2[j]<-ibullpen[iwinner] # corresponding column of that member in X + ithis<-ibullpen[iwinner] #... renamed for simplicity + Lin[ithis]<-TRUE # logical of cols of X in current model to be estimated + # Next statements exactly same as those described for first iteration + U<-X[,Lin,drop="FALSE"] + G<-lm(y~U) # estimation + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this + R2a[j]<-R2adjthis + e<-as.matrix(G$residuals) + } + } + + #--- LEAVE-M-OUT CROSS-VALIDATION, STEPWISE + # + # Do regardless of stopping rule + CV <-CrossValid1(X, y, nNeg, nPos, i2) + + #--- FIND "BEST" MODEL AND RE-FIT IT + rm(H) + Lin<-rep(FALSE,Np) # re-initialize as no variables in model + + if (kstop==1){ + # MAXIMUM ADJUSTED R-SQUARED VERSION + # Commented out code for using maximum adjusted R2 as criterion for best + # model. For large number of variables in pool of potential predictors, and + # with those possibly chosen by correlation screening from larger number + # of possible predictors, this criterion tends to over-fit model. Decided + # to stop entry instead FIRST maximimum of adjusted R2 + # + s<-sort(R2a,decreasing=TRUE,index.return=TRUE) # sorted adjusted R-squared, + # from highest to lowest. + iwinner<-s$ix[1] # step at which adjusted R-squared highest + }else{ + # MAXIMUM RE VERSION + iwinner <- CV$REmaxStep # step at which RE highest + } + i2a<-i2[1:iwinner] # cols of X in model to be fit + Lin[i2a]<-TRUE # turn on logical for cols of X in model to be fit + + + #---- PULL SUBMATRIX OF PREDICTORS AND RE-ESTIMATE MODEL + U<-X[,Lin,drop="FALSE"] + colnames(X)<-namesX # re-initialize these + colnames(U)<-colnames(X)[Lin] + G<-lm(y~U) # estimation + + # Do not want variables to be listed U1, U2, etc. Want real IDs + bbnms <- names(G$coefficients) + bbnms1 <- bbnms[-1] # names of terms, without "(Intercept)" + bbnms2 <- colnames(X)[Lin] + names(G$coefficients) <- c(bbnms[1],bbnms2) + rm(bb,bbnms,bbnms1,bbnms2) + + #--- STATISTICS OF FINAL FITTED MODEL + + kstep<-sum(Lin) # final step (max adj R-square) + + if (kstop==1){ + stopHow<-'Max R-squared adjusted' + }else{ + stopHow<-'Max RE' + } + + H = list() + H[[1]]<-G + H[[2]]<-stopHow + H[[3]]<-kstep + H[[4]]<-i1[Lin] + H[[5]]<-G$coefficients + H[[6]]<-i2[1:kstep] + H[[7]]<-summary(G)$r.squared + H[[8]]<-summary(G)$adj.r.squared + jstep<-(1:Np) + H[[9]]<-jstep + H[[10]]<-R2 + H[[11]]<-R2a + H[[12]]<-summary(G)$fstatistic[1] + + # function for p-value of F; from + # https://stackoverflow.com/questions/5587676/pull-out-p-values-and-r-squared-from-a-linear-regression + lmp <- function (modelobject) { + if (class(modelobject) != "lm") stop("Not an object of class 'lm' ") + f <- summary(modelobject)$fstatistic + p <- pf(f[1],f[2],f[3],lower.tail=F) + attributes(p) <- NULL + return(p) + } + p<-lmp(G) + H[[13]]<-p # pvalue of overall F + H[[14]] <- CV + H[[15]] <- CV$LeftOut + if (kstop==2){ + H[[16]] <- CV$REcv + H[[17]] <- CV$RMSEcv + }else{ + # CrossValid1 returns CVREv and RMSEcv as the "best" according to maximum RE, but + # if using maximum adjusted R-squared, want instead to use index iwinner to grab those + # applicable statistics. + H[[16]] <- CV$REcvAll[iwinner] + H[[17]] <- CV$RMSEvall[iwinner] + } + # Build table with regression coeffients opposite variable names + tab<-matrix(t(G$coefficients)) + colnames(tab)<-c('Model') + rownames(tab)<-c('Intercept',namesX[H[[4]]]) + tab<- as.table(tab) + H[[18]]<-tab + + names(H)<-c('Model','StopCriterion','StoppingStep','ColsInModel','Coefficients', + 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + 'Fpvalue', + 'CrossValidStorage','NleftOutinCV','REcv','RMSEcv', + 'ModelTable') + return(H) +} + + + + diff --git a/ForwStep2.R b/ForwStep2.R new file mode 100755 index 0000000..696456b --- /dev/null +++ b/ForwStep2.R @@ -0,0 +1,171 @@ +ForwStep2 <- function(X,namesX, y, c1) { + # Forward stepwise regression + # D. Meko + # Last revised 2024-03-04 + # + # The forward stepwise entry is done until all variables are in. The final model + # is selected as the model for step at which adjusted R-square is maximum + # + # INPUT ARGUMENTS + # y [matrix] 1-col of predictand + # X [matrix] one-or-more cols of pool of potential predictors + # namesX [character] vector of ids of potential predictors (what's in cols of X) + # c1 [1x1]r required incremental increase in adjusted R-square to warrant additional + # step in forward stepwise + # + # OUTPUT + # H: named list, + # names(H)<-c('Model','StepMaxR2adj','ColsInModel','Coefficients', + # 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + # 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + # 'Fpvalue') + # Model [lm object] is a special type of R object, and holds many of the + # regression statistics and data, such as the residuals and predicted data. + # R has functions that operate on lm objects. For example, + # summary(H#Model) shows a summary table of the regression + # The Coefficients, combined with ColsInModel would allow a reconstruction to + # be generated from the long time series of potenial predictors X. + # ColsInModel gives the columns of that matrix that the coefficients apply + # to. By plotting RsquaredAllSteps or RsquaredAdjAllSteps agains step, you + # can disply how R-square and adjusted R-square changes with step in the + # stepwise modelin. + # Most of the other list items are obvious from their names. StepMaxR2adj is + # the step at which adjusted R-square reaches a maximum. + # + # revised 2024-03-04: corrected error in call to ForwStep2 for stepwise variables entering + # after the first to to enter. At "r<-cor(e,X[,ibullpen])". Error could have resulted in + # MLR regression models picking next variable (not in model) most highlly correlated + # with predictand, y, rather than with residuals, e, from previous step. Change could + # result in model with stronger statistics (e.g., R-squared) + + + + source(paste(code_dir,"Fpvalue.R",sep="")) # p-value of overall-F from lm() [not written by Meko] + + #--- ALLOCATE AND INITIALIZE + Np<-dim(X)[2] # size predictor pool + i1<-1:Np # index to predictors in pool + i2<-rep(NA,Np) # index in order of entry + Lin=rep(FALSE,Np) # initial for in model + R2<-rep(NA,Np) + R2a<-rep(NA,Np) + + + #--- FOREWARD STEPWISE REGRESSION + + for (j in 1:Np){ + if (j==1){ + # First, pass pick X correlated highest (absolute R) with y + colnames(X)<-namesX # re-initialize these + r<-cor(y,X) + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] + i2[j]<-iwinner + Lin[iwinner]<-TRUE # Logical to cols of X in model to be estimated + U<-X[,Lin] # culll matrix of those predictors + G<-lm(y~U) # estimate model (G is a "lm" object ) + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this # store R-squared for this model + R2a[j]<-R2adjthis # store adjusted R-squared ... + e<-as.matrix(G$residuals) # model residuals; + } else { + # iteration after the first. e are the residuals of the previous step. + # At each step, e is correlated with the cols of X not yet in model. + # "Chosen one" is the the col of X with highest correlations + colnames(X)<-namesX # re-initialize these + ibullpen <-i1[!Lin] # cols of X NOT yet in models + r<-cor(e,X[,ibullpen]) # rev 2024-03-04 + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] # pointer to highes correlated member of sub-matrix + i2[j]<-ibullpen[iwinner] # corresponding column of that member in X + ithis<-ibullpen[iwinner] #... renamed for simplicity + Lin[ithis]<-TRUE # logical of cols of X in current model to be estimated + # Next statements exactly same as those described for first iteration + U<-X[,Lin] + G<-lm(y~U) # estimation + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this + R2a[j]<-R2adjthis + e<-as.matrix(G$residuals) + } + } + + #--- FIND "BEST" MODEL AND RE-FIT IT + rm(H) + Lin<-rep(FALSE,Np) # re-initialize as no variables in model + + # MAXIMUM ADJUSTED R-SQUARED VERSION + # Commented out code for using maximum adjusted R2 as criterion for best + # model. For large number of variables in pool of potential predictos, and + # with those possibly chosen by correlation screening from larger number + # of possible predictors, this criterion tends to over-fit model. Decided + # to stop entry instead FIRST maximimum of adjusted R2 + # + # s<-sort(R2a,decreasing=TRUE,index.return=TRUE) # sorted adjusted R-squared, dec. + # iwinner<-s$ix[1] # step at which adjusted R-squared highest + # i2a<-i2[1:iwinner] # cols of X in model to be fit + # Lin[i2a]<-TRUE # turn on logical for cols of X in model to be fit + + # FIRST LOCAL MAXIMUM OF ADJUSTED R-SQUARED + + if (length(Lin)==1){ + # only one predictor in pool; only one step + iwinner<-1 + } else { + d<-diff(R2a) # first difference of adjusted R-squared with step in model + if (all(d>=c1)){ + # Adjusted R-squared always increasing by at least c1 with step + iwinner<-length(Lin) + } else { + # adjusted R-squared increases by less than c1 at some step (step ithis+1) + ithis<-which(d < c1) # find step of first "insufficient" increase in adjusted R-squared + iwinner<-ithis[1] + } + } + i2a<-i2[1:iwinner] # cols of X in final model + Lin[i2a]<-TRUE # turn on logical for cols of X in model to be fit + + #---- PULL SUBMATRIX OF PREDICTORS AND ESTIMATE MODEL + # if adjR2 begins dropping from 1st step, only 1 series enters matrix... + if(length(i2a)==1){ + U <- matrix(X[,Lin]) + } + else{ + U <- X[,Lin] + } + colnames(X)<-namesX # re-initialize these + colnames(U)<-colnames(X)[Lin] + G<-lm(y~U) # estimation + + + #--- STATISTICS OF FINAL FITTED MODEL + + kstep<-sum(Lin) # final step (max adj R-square) + + H = list() + H[[1]]<-G + H[[2]]<-kstep + H[[3]]<-i1[Lin] + H[[4]]<-G$coefficients + H[[5]]<-i2[1:kstep] + H[[6]]<-summary(G)$r.squared + H[[7]]<-summary(G)$adj.r.squared + jstep<-(1:Np) + H[[8]]<-jstep + H[[9]]<-R2 + H[[10]]<-R2a + H[[11]]<-summary(G)$fstatistic[1] + p<-Fpvalue(G) + H[[12]]<-p # pvalue of overall F + names(H)<-c('Model','StepMaxR2adj','ColsInModel','Coefficients', + 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + 'Fpvalue') + return(H) +} + + + + diff --git a/ForwStep3.R b/ForwStep3.R new file mode 100755 index 0000000..dc720d5 --- /dev/null +++ b/ForwStep3.R @@ -0,0 +1,229 @@ +ForwStep3 <- function(X,namesX, y,kstop,nNeg,nPos,ic) { + # Forward stepwise regression with validation/calibration stopping rules + # D. Meko + # Last revised 2024-03-09 + # + # Initial forward stepwise entry is done until all variables are in. The final model + # is selected optionally as the model for step at which adjusted R-square is "approximately" + # maximum, or at that or a lower step at which cross-validation RE is maximum. + # + # INPUT ARGUMENTS + # y [matrix] 1-col of predictand + # X [matrix] one-or-more cols of pool of potential predictors + # namesX [character] vector of ids of potential predictors (cols of X) + # kstop [numeric] stopping criterion: 1= approximate maximimum adjusted R-squared, + # 2=maximum cross-validation RE + # nNeg [numberic] maximum negative lag on chronologies allowed in modeling + # nPos [numeric] maximum positive...CrossValidStorage + # ic [numeric] critical increment in adjusted R-squared. If kstop=1, entry stops when next step would + # yield increase of adjusted R-squared less than ic. If kstop=2, model could stop at an even earlier + # step if cross-validation RE reaches a maximum before the step of approximate maximum + # adjusted R-squared. + # + # OUTPUT + # H: named list, with elements: + c('Model','StopCriterion','StoppingStep','ColsInModel','Coefficients', + 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + 'Fpvalue', + 'CrossValidStorage','NleftOutinCV','REcv','RMSEcv', + 'ModelTable') + # Model [lm object] special type of R object that holds many of the + # regression statistics and data, such as the residuals and predicted data. + # R has functions that operate on lm objects. For example, + # summary(H$Model) shows a summary table of the regression + # StopCriterion: criterion for picking best model (1=max adjusted R-squares; + # 2=maximum cross-validation RE) + # StoppingStep: the step at which stepwise regression stopped according to StopCriterion + # ColsInModel: which columns of input X are in the final model; the order is important, + # and matches the order of coefficients in H$coefficients (after the intercept) + # Coefficients: the regression coefficients, starting with intercept term and then + # in order as in H$ColsInModel.The Coefficients, combined with ColsInModel allow + # a reconstruction when applied to matrix X. + # ColsInOrderEntry: order in which the columns of X entered the stepwise model. In general, + # this differs from order in H$ColsInModel + # Rsquared,RsquaredAdj: R-squared and adjusted R-squared of the final model + # Step, RsquaredAllSteps,RsquaredAdjAllSteps: step is a numeric vector (1,2, ...) of + # the step in the stepwise process; the other two variables are the R-squared and + # adjusted R-squared at each step + # Foverall,Fpvalue: overall-F of the final regression model and p-value of that F + # CrossValidStorage: a list of detailed cross-validation statistics returned by + # CrossValid1(). No need to dig into this unless curious. See the comments for + # Crossvalid1() for definition of list. + # NleftOutinCV,REcv,RMSEcv: cross-validation statistics. NleftOutCV is the number of + # observations left out at each iteration of cross-validation. With lags, this is + # greater than 1, and set to assure no tree-ring data providing a cross-validation + # prediction are also used to calibrate the prediction model. REcv is the + # reduction-of-error statistic. RMSEcv is the root-mean-square error of cross-validation. + # ModelTable: a table object listing the same coefficients as in H$coefficients, but also + # including the corresponding id of the predictor, cross-referenced to columns of + # input matrix X and indicating if lagged positively or negatively and by how much. + # For example, X7 is the seventh column of X, no lags; and X2P2 is the second column of + # of X lagged +2 years forward from the predictand. + # + # revised 2024-03-09: 1) fixed code error that under some circumstances could + # result too few stepwise steps being allow based on maximum REcv. Fix may + # give a stronger (higher R-squared) model, with more predictors; + # 2)cosmetic. Comments cleaned up for typos and clarity. + + source(paste(code_dir,"CrossValid1.R",sep="")) # leave-m-out cross-validation + + #--- ALLOCATE AND INITIALIZE + Np<-dim(X)[2] # size predictor pool + i1<-1:Np # index to predictors in pool + i2<-rep(NA,Np) # index in order of entry + Lin=rep(FALSE,Np) # initial for in model + R2<-rep(NA,Np) + R2a<-rep(NA,Np) + + + #--- FOREWARD STEPWISE REGRESSION + + for (j in 1:Np){ + if (j==1){ + # First pass pick X correlated highest (absolute R) with y + colnames(X)<-namesX # re-initialize these + r<-cor(y,X) + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] + i2[j]<-iwinner + Lin[iwinner]<-TRUE # Logical to cols of X in model to be estimated + U<-X[,Lin,drop="FALSE"] # cull matrix of those predictors + G<-lm(y~U) # estimate model (G is a "lm" object ) + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this # store R-squared for this model + R2a[j]<-R2adjthis # store adjusted R-squared ... + e<-as.matrix(G$residuals) # model residuals; + } else { + # iterations after the first. e are the residuals of the previous step. + # At each step, e is correlated with the cols of X not yet in model. + # "Chosen one" is the the col of X with highest correlation + colnames(X)<-namesX # re-initialize these + ibullpen <-i1[!Lin] # cols of X NOT yet in models + r<-cor(e,X[,ibullpen]) + H<-sort(abs(r),decreasing=TRUE,index.return=TRUE) + iwinner<-H$ix[1] # pointer to highest correlated member of sub-matrix + i2[j]<-ibullpen[iwinner] # corresponding column of that member in X + ithis<-ibullpen[iwinner] #... renamed for simplicity + Lin[ithis]<-TRUE # logical of cols of X in current model to be estimated + # Next statements exactly same as those described for first iteration + U<-X[,Lin,drop="FALSE"] + G<-lm(y~U) # estimation + R2this<-summary(G)$r.squared + R2adjthis<-summary(G)$adj.r.squared + R2[j]<-R2this + R2a[j]<-R2adjthis + e<-as.matrix(G$residuals) + } + } + + #--- FIND "BEST" MODEL AND RE-FIT IT + rm(H) + Lin<-rep(FALSE,Np) # re-initialize as no variables in model + + if (kstop==1){ + # MAXIMUM ADJUSTED R-SQUARED VERSION + # Commented out code for using maximum adjusted R2 as criterion for best + # model. For large number of variables in pool of potential predictos, and + # with those possibly chosen by correlation screening from larger number + # of possible predictors, this criterion tends to over-fit model. Decided + # to stop entry instead FIRST maximimum of adjusted R2 + # + s<-sort(R2a,decreasing=TRUE,index.return=TRUE) # sorted adjusted R-squared, + # from highest to lowest. + iwinner<-s$ix[1] # step at which adjusted R-squared highest + }else{ + # MAXIMUM RE VERSION + CV <-CrossValid1(X, y, nNeg, nPos, i2) + iwinner <- CV$REmaxStep # revised 2024-03-09 + } + + i2a<-i2[1:iwinner] # cols of X in model to be fit + Lin[i2a]<-TRUE # turn on logical for cols of X in model to be fit + + #---- PULL SUBMATRIX OF PREDICTORS AND ESTIMATE MODEL + U<-X[,Lin,drop="FALSE"] + colnames(X)<-namesX # re-initialize these + colnames(U)<-colnames(X)[Lin] + G<-lm(y~U) # estimation + + # Fix names of coefficients so not prefixed with "U" + # Cosmetic, so that when user types "G$coefficients" at terminal he + # is not bothered by that "U" + bb <- G$coefficients # Regression coefficients + bbnms <- names(bb) + bbnms1 <- bbnms[-1] # names of terms, without "(Intercept)" + bbnms2 <- substring(bbnms1,2) + names(G$coefficients) <- c(bbnms[1],bbnms2) + rm(bb,bbnms,bbnms1,bbnms2) + + + #--- STATISTICS OF FINAL FITTED MODEL + + kstep<-sum(Lin) # final step (max adj R-square) + + if (kstop==1){ + stopHow<-'Approximate maximum of adsjusted R-squared' + }else{ + stopHow<-'Maximum cross-validation RE' + } + + H = list() + H[[1]]<-G + H[[2]]<-stopHow + + H[[3]]<-kstep + H[[4]]<-i1[Lin] + H[[5]]<-G$coefficients + H[[6]]<-i2[1:kstep] + H[[7]]<-summary(G)$r.squared + H[[8]]<-summary(G)$adj.r.squared + jstep<-(1:Np) + H[[9]]<-jstep + H[[10]]<-R2 + H[[11]]<-R2a + H[[12]]<-summary(G)$fstatistic[1] + + # function for p-value of F; from + # https://stackoverflow.com/questions/5587676/pull-out-p-values-and-r-squared-from-a-linear-regression + lmp <- function (modelobject) { + if (class(modelobject) != "lm") stop("Not an object of class 'lm' ") + f <- summary(modelobject)$fstatistic + p <- pf(f[1],f[2],f[3],lower.tail=F) + attributes(p) <- NULL + return(p) + } + p<-lmp(G) + H[[13]]<-p # pvalue of overall F + + if (kstop==2){ + H[[14]] <- CV + H[[15]] <- CV$LeftOut + H[[16]] <- CV$REcv + H[[17]] <- CV$RMSEcv + }else{ + H[[14]] <- NA + H[[15]] <- NA + H[[16]] <- NA + H[[17]] <- NA + } + # Build table with regression coeffients opposite variable names + tab<-matrix(t(G$coefficients)) + colnames(tab)<-c('Model') + rownames(tab)<-c('Intercept',namesX[H[[4]]]) + tab<- as.table(tab) + H[[18]]<-tab + + names(H)<-c('Model','StopCriterion','StoppingStep','ColsInModel','Coefficients', + 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + 'Fpvalue', + 'CrossValidStorage','NleftOutinCV','REcv','RMSEcv', + 'ModelTable') + return(H) +} + + + + diff --git a/Fpvalue.R b/Fpvalue.R new file mode 100755 index 0000000..cd20620 --- /dev/null +++ b/Fpvalue.R @@ -0,0 +1,21 @@ +Fpvalue <- function(modelobject) { + # p-value of overall-F of regression + # Adoped, 2022-01-04 + # + # modelobject [special]: must have been generated by R function lm, and computed by + # statement such as ModelObkect= yrv[1] & yrU <= yrv[length(v)] + X <- H[L1,] # Distance matrix for overlap of U and v + yrX <- yrU[L1] + + #--- SORT THE DISTANCE SUB-MATRIX FROM NEAREST TO FARTHEST + Sort1 <- function(x){ + y <- sort(x,method='quick',index.return=TRUE) + } + A <- apply(X,2,Sort1) + # A is a list, with A[[1]]$x a vector of the sorted neighbor values of v for yrU[1] + # and A[[1]]$ix a vector of the corresponding year + # yrv[A[[1]]$ix] is a vector of the corresponding analog year s for yrU[1] + + #-- ALLOCATE SOME MATRICES FOR RESULTS + Y1 <- matrix(data=NA,nrow=mU,ncol=kNN+1) # for analog data + Y2 <- Y1 # for analog years + Y3 <- Y1 # for analog distances + Y4 <- matrix(data=NA,nrow=mU,ncol=4) # for year, blended analog recon, analog year, and whether + # from nearest or second-nearest neighbor + nY1 <- kNN+1; nY2 <- nY1; nY3 <- nY1 # number of columns in Y1, Y2, Y3 + Y1[,1]=yrU; Y2[,1] <- yrU; Y3[,1] <- yrU; Y4[,1] <- yrU; # first col of these tsm's is year + + + #--- FILL MATRICES Y1, Y2 AND Y3 + + for (n in 1:mU){ + y1 <- v[A[[n]]$ix[1:kNN]] # vector of analog values from v + y2 <- yrv[A[[n]]$ix[1:kNN]] # vector of analog years + y3 <- A[[n]]$x[1:kNN] # vector of kNN distances + Y1[n,2:nY1] <- y1 + Y2[n,2:nY2] <- y2 + Y3[n,2:nY3] <- y3 + } + + #--- FILL MATRIX Y4 + + # Initialize with all years using nearest neighbor + Y4[,2] <- Y1[,2]; + Y4[,3] <- Y2[,2] + Y4[,4] <- 1 + + # But second nearest for overlap of U and v + Y4[L1,2] <- Y1[L1,3] + Y4[L1,3] <- Y2[L1,3] + Y4[L1,4] <- 2 + + + #=== NEAREST-OBSERVED ANALYSIS + # + # Fill a vector w with the values of v closest to those in each yrv. + V <- matrix(replicate(length(v),v),nrow=length(v)) #replicate cols of v + W <- t(V) + D <- abs(V-W) + A <- apply(D,1,Sort1) # sort rows + # A is a list, with A[[1]]$x a vector of the sorted neighbor values of v for yrv[1] + # and A[[1]]$ix a vector of pointer to the corresponding year in yrv + # yrv[A[[1]]$ix] is a vector of the corresponding nearest-observed years for yrv[1] + + W <- matrix(data=NA,nrow=mv,ncol=4) # for year, v, nearest-observed v, + # and year of nearest observd v + W[,1]=yrv; W[,2]=v + for (n in 1:mv){ + X <- A[[n]] + irow <- X$ix[2] + W[n,3] <- v[irow]; W[n,4] <- yrv[irow] + } + + #=== OUTPUT LIST + + Output <- list(YearsAnalog=Y2,DataAnalog=Y1,Distance=Y3,Recon=Y4, + NearestObserved=W) + return(Output) +} diff --git a/LagModel2Char.R b/LagModel2Char.R new file mode 100755 index 0000000..562af8c --- /dev/null +++ b/LagModel2Char.R @@ -0,0 +1,43 @@ +LagModel2Char<- function(i1,k) { + # Build string represntation of a lagged stepwise regression model. + # D Meko + # last revised 20220105 + # + # IN + # i1 [v]jk) || any(i1<0) + L3 <- (k %% 2)==0 + if (L1 || L2 || L3) { + stop("i1 and k must be integers>0; i1 must be odd length with all elements <=k") + } + + #---Fill a numeric vector version of desired string + ni1 <- length(i1) + ModelCoded<-vector(mode<-"numeric",length=k) # initialize as vector of zeros + for (n in (1:ni1)){ + islot<-i1[n] + ModelCoded[islot]<-n # ModelCoded, still numeric vector + } + s1<-as.character(ModelCoded) # convert numweric vector to character + s1<-paste(s1, sep = '', collapse = '') # concatenate + return(s1) +} \ No newline at end of file diff --git a/LagModel2Sign.R b/LagModel2Sign.R new file mode 100755 index 0000000..150942d --- /dev/null +++ b/LagModel2Sign.R @@ -0,0 +1,60 @@ +LagModel2Sign<- function(i1,k,b) { + # Build string representation of signs of regression coefficient in lagged stepwise regression model. + # D Meko + # last revised 2024-03-04 + # IN + # i1 [v]jk) || any(i1<0) + L3 <- (k %% 2)==0 + if (L1 || L2 || L3) { + stop("i1 and k must be integers>0; i1 must be odd length with all elements <=k") + } + + #--- Initialize length-k vector with zeros, meaning lag not in model + # Fill string with "0" + si <- rep('0',k); + + # Change some elements of si to "P" or "N" depending on sign of coefficient + # Coefficients in b are in col-order of s1 according to pointer i1 + b <- b[-1] # strip constant term off model, leaving coefficients + + # Positive + L <- b>0 + iP <- i1[L] + si[iP] <- 'P' + + # Negative + L <- b<0 + iN <- i1[L] + si[iN] <- 'N' + + si<-paste(si, sep = '', collapse = '') # concatenate + return(si) +} \ No newline at end of file diff --git a/LagReOrder.R b/LagReOrder.R new file mode 100755 index 0000000..cfef147 --- /dev/null +++ b/LagReOrder.R @@ -0,0 +1,37 @@ +LagReOrder<- function(X){ + # Reorder columnms of lagged tree-ring index + # D. Meko; last revised 2021-12-31 + # + # X, [m]r lagged matrix of time series, assumed L to R to have unlagged, followed by + # negative lags 1,2,3, ... followed by positive lags 1,2, 3, For example; + # [t t-1 t-2 t+1 t+2] + # + # Returns a matrix X: + # X [m]r reordered version of input X. From L to R have highest negative to highest + # positive lag. For example, [t-2 t-1 t t+1 t+2]. + # + # Why? Utility function to organize matrix of lagged tree-ring chronology to form needed by reconsw4(). + # This utility function intended for input X representing lagged values of a single time series, not + # of, say, multiple chronologies. The context is single-site reconstruction (SSR). + + #--- CHECK INPUT + + if (!is.matrix(X)) {stop('X should be matrix')} + ncols <- dim(X)[2] + if ((ncols %% 2)==0 ) {stop('X must have odd number of columns')} + + #--- REORDER + + jc <- 1 # col number in original of of central col in target + jLeft <- rev(1 + (1:nNeg)) # negative lags ordered L to R highest to lowest + jRight <- (2+nNeg):ncols # positive lags ordered L to R lowest to highest + j <- c(jLeft,jc,jRight) + + + Output <- X[,j] + + return(Output) +} + + + \ No newline at end of file diff --git a/LagYear.R b/LagYear.R new file mode 100755 index 0000000..9790730 --- /dev/null +++ b/LagYear.R @@ -0,0 +1,162 @@ +LagYear<- function(X,tGo,tSp,nNeg=0,nPos=0,ktrim){ + # Create a lagged verson of a time series matrix + # D. Meko; last revised 2021-12-31 + # + # X, [matrix] the time series; no time column; could be a single series, or many + # tGo,tSp:[numeric] first and last times (e.g., years) + # nNeg [numeric] : maximum negative lag, >=0 + # nPos[numeric] : maximum positive lag,>=0 + # ktrim (1x1)i: option for trimming of leading and trailing rows of lagged tsm + # ==1 lagged tsm trimmed to exclude any leading or trailing years with a NA + # (all-NA are trimmed off regardless of ktrim) + # ==2 lagged tsm not so trimmed + # + # Returns a named list, with parts: + # X [matrix] lagged version of input X; first the unlagged variables, + # then negative lags, then positive lags + # tGo, tSp [numeric] start and end times of lagged matrix + # ids [character] variable names, coded by column in input X and by lag + # Exampple: "X1" "X1N1" "X1N2" "X1P1" "X1P2" + # + # Why? Utility function to prepare matrix of chronologies, or a single + # chronology as predictors for reconstruction modeling. Climate can influence + # growth in multiple years, and so the information on the current + # year's climate from the current ring may be conditional on past rings. + # Likewise, climate can directly influence growth in multiple years, and so + # we expect that positive lags of the tree-ring index might improve the + # signal on current year's climate beyond what is available from just the + # current ring. + # + # Accepts X with one or more time series + # Allows posive and/or negative lags, and accepts no lags + # + # revised 2021-12-30: include new input arg ktrim, which will affect year coverage of output tsm + # revised 2021-12-31: tgo and tsp to "tGo" & "tSp": tsp is a built in R function + + #--- Code specific to whether one or more time series in input matrix + if (dim(X)[2]==1) { + mX<-nrow(X) + nX<-ncol(X) + X0<-X + mX0<-mX + nX0<-nX + + a<-NA + # Negative lags + if (nNeg>0){ + jset<-1:nNeg + for (j in jset){ + X1<-matrix(a,j,byrow=TRUE) + X2<-X0[1:(mX-j),] + X2<-as.matrix(X2) + X3<-rbind(X1,X2) + X<-cbind(X,X3) + } + } + # Positive lags + if (nPos>0){ + jset<-1:nPos + for (j in jset){ + X2<-matrix(a,j,byrow=TRUE) + X1<-X0[(j+1):(mX),] + X1<-as.matrix(X1) + X3<-rbind(X1,X2) + X<-cbind(X,X3) + } + } + } else { + # Mulitple serie in input matrix + mX=dim(X)[1] + nX=dim(X)[2] + X0<-X + mX0=mX + nX0=nX + + # Negative lags + if (nNeg>0){ + jset<-1:nNeg + for (j in jset){ + X1<-matrix(NA,j,nX) + X2<-X0[(1):(mX-j),] + X3<-rbind(X1,X2) + X<-cbind(X,X3) + } + } + # Positive lags + if (nPos>0){ + jset<-1:nPos + for (j in jset){ + X2<-matrix(NA,j,nX) + X1<-X0[(j+1):(mX),] + X3<-rbind(X1,X2) + X<-cbind(X,X3) + } + } + } + + #--- Trim leading and trailing rows, and refresh start and end year + + if (ktrim==1){ + if (nNeg>0){ + X<-X[-(1:nNeg),]; + } + if (nPos>0){ + n1<-nrow(X) + X<-X[1:(n1-nPos),] + } + tGo<-tGo+nNeg + tSp <- tSp-nPos + + } else { + # no action needed + } + mX=nrow(X) + nX=ncol(X) + + + #--- Build series ids (column headings + + # lag 0 + c1<-c('a') + jset <- 1:nX0 + for (j in jset){ + c1[j]<- sprintf("X%s", j) + } + + # negative lags + if (nNeg>0){ + for (k in 1:nNeg){ + for (j in jset){ + kslot<-nX0+(k-1)*nX0+j + c1[kslot]<- sprintf("X%sN%s", j,k) + } + } + } + + # positive lags + if (nPos>0){ + for (k in 1:nPos){ + for (j in jset){ + kslot<-nX0+nNeg*nX0+(k-1)*nX0+j + c1[kslot]<- sprintf("X%sP%s", j,k) + } + } + } + + #--- TRIM OFF ANY ALL-NA ROWS + + + L <- (rowSums(is.na(X))) == nX + X <- X[!L,] + yrX <- tGo:tSp + yrX <- yrX[!L] + tGo=yrX[1]; tSp <- yrX[length(yrX)] + + + + Output<-list(X=X,tGo=tGo,tSp=tSp,ids=c1) + return(Output) +} + + + \ No newline at end of file diff --git a/LagkAcc.R b/LagkAcc.R new file mode 100755 index 0000000..9af0d2f --- /dev/null +++ b/LagkAcc.R @@ -0,0 +1,60 @@ +LagkAcc <- function(X,k) { + # D. Meko + # Last revised 2022-09-5 + # Lag-k autocorrelation coefficient(s) of a time series matrix or vector. + # + # Converts matrix or vector to z-scores, shifts one version k slots relative to the other, + # and computes the average product of the first and last mX-k observations of each series, + # where mX is number of rows, or observations, in X + # + #---IN + # + # X: matrix or vector without any NA; number of observations mX + # k: the lag of the desired autocorrelation; require k< mX/4 + # + #---OUT + # + # Output: list with fields + # rk: lag-k autocorrelation coefficient(s) [scalar or vector] + # k: lag + # Lflag: flag (logical, length 2) + # (1) X has at least one NA + # (2) k >= 1/4 the number of observations in X + # ErrorMessage [vector]c : error message associated with Lflag + + Lflag <-c(FALSE,FALSE) # initialize as no error flags + ErrorMessage <- "No problems" + + # Error message; No NA allowed + if (!all(complete.cases(X))){ + Lflag[1]<-TRUE + ErrorMessage <- 'X contains a NA' + Output <- list(Lflag=Lflag,ErrorMessage=ErrorMessage) + return(Output) + } + + if (is.vector(X)){ + X <- matrix(X) + } else { + # no action needed; X is matrix + } + Z <- scale(X,center=TRUE,scale<-TRUE) # time series matrix to zscores + mZ<- dim(Z)[1] + + # Error message; lag k must be less than 1/4 mZ + if (k>=mZ/4){ + Lflag[2]<-TRUE + ErrorMessage <- 'Lag k must be less than 1/4 the number of obs in X' + Output <- list(Lflag=Lflag,ErrorMessage=ErrorMessage) + return(Output) + } + nZ<- dim(Z)[2] + Zhead <- head(Z,mZ-k) + Ztail <- tail(Z,mZ-k) + Z1 <- Zhead * Ztail # products of standardized departures; + # These standardized departures were computed using the means and standard + # deviations for the full mZ observation in X + rk <- colMeans(Z1) + txt1 <- paste('Lag-',as.character(k),'autocorrelations',sep='') + Output <- list(rk=rk,lag=k,Lflag=Lflag,ErrorMessage=ErrorMessage) +} \ No newline at end of file diff --git a/LeaveOut.R b/LeaveOut.R new file mode 100755 index 0000000..f9e626d --- /dev/null +++ b/LeaveOut.R @@ -0,0 +1,49 @@ +LeaveOut<-function(nNeg, nPos, mA) { + # Build pointer matrix for use in leave-m-out cross-validation + # D Meko + # Last revised 2021 May 25 + # + # Returns logical pointer matrix whose jth column points to the predictor cols + # for calibration of a model to supply the jth observation + # + # nNeg [numberic]: maximum negative lag to be considered on tree rings + # nPos [numeric]: maximum positive lag ... + # mA [numeric] # number of of observations in calibration period + # + # Note that nNeg should be a positive number (e.g., 2 indicates + # lage upt to -2) + # + # Leave-m-out cross-validation ensures that if lags are in the regression model + # no tree-ring observations used to predict the "left-out" observation are also + # used in calibration of the model that supplied the prediction (Meko 1997) + + m <- 1+ 4*max(nNeg,nPos) # leave this many out + mhalf <- (m-1)/2 + i1 <- mhalf+1 + i2 <- mA-mhalf + + A<-matrix(1,mA,mA) + + for (j in 1:mA){ + a <- rep(1,mA) + if (ji2) { + igo<-j-mhalf + isp<-mA + a[igo:isp]<-0 + A[,j]<-a + } else { + igo<-(j-mhalf) + isp<-(j+mhalf) + a[igo:isp]<-0 + A[,j]<-a + } + } + Lin<-A + Leave <- list("Lin"=Lin,"NumberLeftOut"=m) + return(Leave) +} \ No newline at end of file diff --git a/ListFilesTRISH01.txt b/ListFilesTRISH01.txt new file mode 100755 index 0000000..9ff64db --- /dev/null +++ b/ListFilesTRISH01.txt @@ -0,0 +1,68 @@ +/home/dave/AAAtrish2/ReconAnalog.R +/home/dave/Data/RlibraryMeko/c13toc3.R +/home/dave/Data/RlibraryMeko/CrossValid1.R +/home/dave/Data/RlibraryMeko/CrossValid2.R +/home/dave/Data/RlibraryMeko/EffectSS.R +/home/dave/Data/RlibraryMeko/emssgUNH.R +/home/dave/Data/RlibraryMeko/ForwStep1.R +/home/dave/Data/RlibraryMeko/ForwStep2.R +/home/dave/Data/RlibraryMeko/ForwStep3.R +/home/dave/Data/RlibraryMeko/ForwStep.R +/home/dave/Data/RlibraryMeko/Fpvalue.R +/home/dave/Data/RlibraryMeko/KnnAnalog.R +/home/dave/Data/RlibraryMeko/LagkAcc.R +/home/dave/Data/RlibraryMeko/LagModel2Char.R +/home/dave/Data/RlibraryMeko/LagModel2Sign.R +/home/dave/Data/RlibraryMeko/LagReOrder.R +/home/dave/Data/RlibraryMeko/LagYear.R +/home/dave/Data/RlibraryMeko/LeaveOut.R +/home/dave/Data/RlibraryMeko/mannken1.R +/home/dave/Data/RlibraryMeko/NashSutt.R +/home/dave/Data/RlibraryMeko/PeriodCommon.R +/home/dave/Data/RlibraryMeko/PrewhitenChrons.R +/home/dave/Data/RlibraryMeko/RecMLR1.R +/home/dave/Data/RlibraryMeko/reconsw4.R +/home/dave/Data/RlibraryMeko/RecPCR1.R +/home/dave/Data/RlibraryMeko/RecSLR1.R +/home/dave/Data/RlibraryMeko/SeasClim.R +/home/dave/Data/RlibraryMeko/SignalDrop1.R +/home/dave/Data/RlibraryMeko/ssValid.R +/home/dave/Data/RlibraryMeko/stem1.R +/home/dave/Data/RlibraryMeko/stemACF.R +/home/dave/Data/RlibraryMeko/Table1Column.R +/home/dave/Data/RlibraryMeko/TablePCA1.R +/home/dave/Data/RlibraryMeko/TableWrite1.R +/home/dave/Data/RlibraryMeko/TabSepTsm1.R +/home/dave/Data/RlibraryMeko/TabSepTsm2.R +/home/dave/Data/RlibraryMeko/TabSepTsm3.R +/home/dave/Data/RlibraryMeko/ties1.R +/home/dave/Data/RlibraryMeko/TranFlow.R +/home/dave/Data/RlibraryMeko/trimnan.R +/home/dave/Data/RlibraryMeko/trimRowNA.R +/home/dave/Data/RlibraryMeko/TrimTsm1.R +/home/dave/Data/RlibraryMeko/Tsm2Scores1.R +/home/dave/Data/RlibraryMeko/tsmExtend.R +/home/dave/Data/RlibraryMeko/xyCI.R +/home/dave/Projects/ba2/TRISHvisual/AbbreviationsTRISH.pdf +/home/dave/Projects/ba2/TRISHvisual/siteData_Katun.txt +/home/dave/Projects/ba2/TRISHvisual/siteMeta_Katun.txt +/home/dave/Projects/ba2/TRISHvisual/hydroData_Katun.txt +/home/dave/Projects/ba2/TRISHvisual/Recon.init +/home/dave/Projects/ba2/TRISHvisual/Recon_Katun.init +/home/dave/Projects/ba2/TRISHvisual/PackagesNeeded.txt +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeAnalog.pdf +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeMLR1-noPCA.pdf +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeMLR1-PCA.pdf +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeSLR1.pdf +/home/dave/Projects/ba2/TRISHvisual/Running_Instructions_ReconAnalog.pdf +/home/dave/Projects/ba2/TRISHvisual/Recon_init_explanation.pdf +/home/dave/Projects/ba2/TRISHvisual/readme.pdf +/home/dave/Projects/ba2/TRISHvisual/ListFilesTRISH01.txt +/home/dave/Projects/ba2/TRISHvisual/AbbreviationsTRISH.odt +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeAnalog.docx +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeMLR1-noPCA.docx +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeMLR1-PCA.docx +/home/dave/Projects/ba2/TRISHvisual/TrishOutputDescribeSLR1.docx +/home/dave/Projects/ba2/TRISHvisual/Running_Instructions_ReconAnalog.odt +/home/dave/Projects/ba2/TRISHvisual/Recon_init_explanation.odt +/home/dave/Projects/ba2/TRISHvisual/readme.odt diff --git a/NashSutt.R b/NashSutt.R new file mode 100644 index 0000000..ba8b558 --- /dev/null +++ b/NashSutt.R @@ -0,0 +1,127 @@ +NashSutt<- function(y, yh, yry, ycMean, kplot, outputDir,gFileType) { + # Nash-Suttcliffe efficiency + # D Meko + # last revised 20230726 + # + # IN + # y: vector of observed + # yry: year vector for y and yh + # yh: vector or reconstructed (or predicted) for same observations + # ycMean: (1x1): calibration-period mean of y + # kplot (1x1): plot option + # 1= plot on current device + # 2= plot a graphics file of with suffix "gFileType" to folder "outputDir" + # 3= skip plot + # outputDir: folder to write plot file to (ignored unless kplot=2) + # gFileType: type of graphics file (e.g., "png") -- ignored unless kplot=2 + # + # OUT + # Output [named list] + # NSE (1x1)r Nash-Suttcliffe efficiency + # RE (1x1)r reduction of error statistic + # rTest: list with result of correlation (#Pearson) test for IV period: + # $estimate = correlation + # $parameter = df + # $p,vaue = pvalue for test + # e: vector of errors (observed minus predicted) + # yMean: mean y (for Nash-Suttcliffe period) + # ycMean: mean y for calibration period on which prediction based (echo of input) + # SSE: sum of squares of e + # SSEnull1: sum of squares of departures (y-yMean) + # SSEnull2: sum of squares of departures (y-ycMean) + # + # Notes + # + # The NSE and RE are similarly computed from ratios of sum-of-squares terms. NSE uses the validation period + # mean as the null prediction, giving SSEnull1. RE uses the calibration period means as the null prediction, + # giving SSEnull2. Equations are + # + # SSE = 1 - (SSE/SSEnull1) + # RE = 1 - (SSE/SSEnull2) + library("pracma") # needed for emulation of Matlab "backslash" operator through + # QR decomposition + + source(paste(code_dir,"LeaveOut.R",sep="")) # form pointer matrix for leave-m-out cross-validation + + #--- CHECK INPUT + # y and yh should be same-length numeric vectors + + if (!is.vector(y) || (!is.vector(yh))){ + stop('y and yh must be vectors') + } else { + } + + if (!is.numeric(y) || (!is.numeric(yh))){ + stop('y and yh must be numeric') + } else { + } + + L <- length(y) == length(yh) + if (!L){ + stop('y and yh must be same length') + } + + #--- COMPUTE STATISTICS + + yMean <- mean(y) # verification-period observed mean (null prediction for NSE) + e <- y-yh # validation period errors + e1 <- y-yMean # errors for null prediction of validation mean + e2 <- y-ycMean # errors for null prediction of calibration mean + + SSE <- sum(e*e) # sum of squares, recon errors + SSEnull1 <- sum(e1*e1) # sum of squares, reconstruction consisting of validation mean each year + SSEnull2 <- sum(e2*e2) # sum of squares, reconstruction consisting of calibration mean each year + + NSE <- 1 - (SSE/SSEnull1) # Nash-Suttcliffe efficiency + RE <- 1 - (SSE/SSEnull2) # Reduction of error statistic + + rTest <- cor.test(y,yh) + r <- rTest$estimate # Pearson r + df <- rTest$parameter + p <- rTest$p.value + + + #--- PLOT + + # Expand right side of clipping rect to make room for the legend + par(xpd=T, mar=par()$mar+c(0,0,0,6)) + + # ylim + yhi <- max(c(max(yh),max(y))) + ylo <- min(c(min(yh),min(y))) + ylims <- c(ylo,yhi) + yhi <- yhi+0.1*diff(ylims) + ylims <- c(ylo,yhi) + xlims <- c(yry[1]-1,yry[length(yry)]+1) + + str_r <- paste('NSE=',sprintf('%5.2f',NSE),'; RE=',sprintf('%5.2f',RE),'; r=',sprintf('%5.2f',r), ' (N=',as.character(df), + ', p=',sprintf('%6g',p),')',sep='') + str_tit <- paste('Independent verification, ',as.character(yry[1]),'-', + as.character(yry[length(yry)]),'\n',str_r) + plot(yry,y,type='b',ylim=ylims,xlim=xlims, + xlab='Year',ylab='Data value',main=str_tit) # main plot of obs + lines(yry,yh,col='red') # Line for reconstruction + points(yry,yh,col='red',pch=2) + # Null prediction -- the observed mean for indep period + lines(xlims,c(yMean,yMean),col='black') + # Null prediction by calib mean + lines(xlims,c(ycMean,ycMean),col='black',lty='dashed',lwd=2) + #abline(h=ycMean,col='black',lty='dashed') + # The reconstructed mean for independent period + lines(xlims,c(mean(yh),mean(yh)),col='red') + #abline(h=mean(yh),col='red') + + # In legend below, "26" ignored as a plot character. This is not an error. + legend(xlims[2]+1,ylims[2], legend=c("Observed","Recon","ObsMeanV","ObsMeanC","RecMeanV"), + col=c("black","red", "black","black","red"), + lty=c(1,1,1,2,1),pch=c(1,2,26,26,26),lwd=c(1,1,1,2,1), cex=0.9) + + # Restore default clipping rect + par(mar=c(5, 4, 4, 2) + 0.1) + + + #--- OUTPUT + + Output <- list("NSE"=NSE,"RE"=RE,"rTest"=rTest,"Errors"=e) + return(Output) +} \ No newline at end of file diff --git a/PackagesNeeded.txt b/PackagesNeeded.txt new file mode 100755 index 0000000..6ddc3ef --- /dev/null +++ b/PackagesNeeded.txt @@ -0,0 +1,20 @@ +ReconAnalog assumes that several R packages have been installed. Here is a list of the required packages, and the version number under which ReconAnalog runs successfully on Meko's laptop. + +car (v3.1.2) +gplots (v3.1.3.1) +nortest (v1.0.4) +pracma (v2.4.4) +rjson (v0.2.21) +ggplot1 (v3.5.1) +resample (v0.6) + +versions of Rstudio and R on Meko's laptop: + +R version 4.1.2 (2021-11-01) +RStudio 2023.06.0 Build 421 + +Operating system on Meko's laptop: +Ubuntu 22.04.4 LTS + + + diff --git a/PeriodCommon.R b/PeriodCommon.R new file mode 100755 index 0000000..bb6b72a --- /dev/null +++ b/PeriodCommon.R @@ -0,0 +1,66 @@ +PeriodCommon <- function(X, Y) { + # Common period of a time series with time series matrix + # D Meko, Last revised 2021-05-17 + # + # X [matrix] multiple time series; time vector as column 1 + # Y [matrix] single time series; time vector as column 1 + # + # Returns list with parts + # X, Y [matrix] like input X, Y, but for years in which no data are + # missing in Y or in any of the series in X + # Beware that time (e.g., year) is first column of these matrices + # tgo, tsp [numeric]: start and ending times (e.g., years) of X and Y + # + # Why? Written to facilitate organization of predictors and predicand for + # calls to regression functions. + X<-as.matrix(X) + Y<-as.matrix(Y) + + # Y ; Separate time column; + y1 <- Y[,-1] + yry1 <-Y[,1] + yrX1<-X[,1] + X1<-X[,-1] + + # In case of X having just one series + X1<-as.matrix(X1) + yrX1<-as.matrix(yrX1) + + #--- BUILD NA MTX TO HOLD ALL OF AND X AND Y + nA<-ncol(X1)+1 + ton<-min(yry1[1],yrX1[1]) + toff<-max(yry1[length(yry1)],yrX1[dim(X1)[1]]) + mA<-toff-ton+1 + + A<-matrix(NA,mA,nA) + yrA<-(ton:toff) + + + #--- FILL COLS OF A, PREDICTAND IN COL 1 if applicable + + irow<-yry1-ton+1 # row indices of tarter slots in A for y + A[irow,1]=y1; + irow<-yrX1-ton+1 # row indices of tarter slots in A for X1 + A[irow,2:nA]=X1 + + + #-- FIND ROWS WITH NO NA'S AND PULL SEGMENT + + L=complete.cases(A) + A<-A[L,] + yrA<-yrA[L] + mA<-nrow(A) + nA<-ncol(A) + + # error message if time vector does not increment by 1 + L<-all(diff(yrA)==1) + if(!L) stop('year column of A does not increment by 1') + + Ynew <- cbind(yrA,A[,1]) + Xnew <- cbind(yrA,A[,2:nA]) + tgo<-yrA[1] + tsp<-yrA[mA] + Output<-list(X=Xnew,Y=Ynew,tgo=tgo,tsp=tsp) +} + + diff --git a/PrewhitenChrons.R b/PrewhitenChrons.R new file mode 100755 index 0000000..047a97e --- /dev/null +++ b/PrewhitenChrons.R @@ -0,0 +1,106 @@ +PrewhitenChrons <- function(X,p,outputDir){ + # Convert tsm of chronologies to prewhitened matrix using AR model order p + # D. Meko; last revised 2023-01-21 + # + #--- INPUT + # + # X: [data frame] tsm of chronologies, year as column 1. All series need not + # cover all years of X + # p: scalar: prewhiten using AR model of order p (allowable are p=1, 2, or 3) + # outputDir: any error message generated will go to this system folder + # + # + #--- OUTPUT + # + # Output: named list with revised data frame. Will start p years later than X + # and data columns with AR(p)-whitened versions of original columns. + # Xwhitened -- data frame of AR-whitened versions of input X + # + # + #---NOTES + # + # For each series, mean is subtracted first, AR modeling is done, and residuals are + # shifted to have same mean as original data over the years covered by residuals + # + # Output data frame inherits column names of input data frame, and has row names + # as a character vector of years. This even though first data column is also the year. + + source(paste(code_dir,"emssgUNH.R",sep="")) # write error file to system, specified output folder + + L <- !is.data.frame(X) | !any(p==c(1,2,3)) + if (L){ + emssg <- 'PrewhitenChrons: X must be data frame, and AR order p must be one of {1,2,3}' + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } + + # ALLOCATING + # Allocate Y same row-size as X, but without year column + nY = dim(X)[2]-1 # number of time series in X + mY = dim(X)[1] # number of years in matrix X + Y <- matrix(NA,nrow=mY,ncol=nY) + + k <- 1:mY # nominal year of X and Y, equivalent to row number + + # Loop over time series in X, fitting AR model, getting residuals, + # restoring mean; place in column of Y + for (n in 1:(nY)){ + j1 <- n+1 + x <- X[,j1] + L <- complete.cases(x) + ix <- k[L] # in X, these would be rows with data + ilast<- ix[length(ix)] # last value of whitened series + # should be in this row of X and Y + x <- x[L] # the time series, w/o flanking NA + + # SET UP REGRESSION + # + # Put predictand in v, predictor(s) on W + mx <-length(x) + j=(p+1):mx + v <- x[j] # predictand for AR modeling + mv <- length(v) + J = matrix(rep(j,p), ncol = p) + mJ <- dim(J)[1] + + # Build matrix to subtract + j1 = 1:p + J1 <- matrix(j1, nrow=mJ, ncol=length(j1), byrow=TRUE) # row-dupe to mJ rows + + # Subtract indices + J2 <- J-J1 + # each col of J2 is a vector index into x + + W = matrix(NA,nrow =mv,ncol=p) + for (kk in 1:p){ + jthis <- J2[,kk] + w = x[jthis] + W[,kk]=w + } + + # Regress + M <- lm(v ~ W) + y <- M$residuals+mean(v) # the prewhitened chronology + + # Re-insert + i2 <- ilast; i1 <- ilast - length(y)+1 # start and end row + Y[i1:i2,n]=y + } + yrY <- X[,1] + + # Trim off all-NA rows + N1 <-rowSums(!is.na(Y)) # vector with number of non-NA in each row of Y + L <- N1>0 + Y <- Y[L,]; yrY <- yrY[L] + + # Add year col, give col names, make as data frame + Y <- cbind(yrY,Y) + rownames(Y) <- as.character(yrY) + colnames(Y) <- names(X) + Y <- as.data.frame(Y) + + # STORE OUTPUT + Output <- list("Xwhitened"=Y) + return(Output) +} + diff --git a/RecMLR1.R b/RecMLR1.R new file mode 100755 index 0000000..2fe94ad --- /dev/null +++ b/RecMLR1.R @@ -0,0 +1,1678 @@ +RecMLR1 <- function(D) { + # Multi-site reconstruction (MSR) by multiple linear regression on SSRs or their PCs + # D. Meko + # Last revised 2024-03-06 + # + # Called from a script or function (e.g., ReconAnalog1) that has generated the SSRs. + # Consider the predictand, y, and predictor matrix, X. Here, y is regressed on + # either the matrix of screened SSRs or PCs of that matrix. The method uses + # stepwise forward multiple linear regression. + # + # D is list with members: + # Text (1x4)s: symbol for y label; units of y, in parens; longer name of y; name of y season; Example: + # "RO","(mm)","Runoff", "12-month season ending in month 9" + # U, yrU: matrix of screened SSRs (matrix); matrix of years (1-col matrix) + # nmsU: names of screened SSRs (vector) + # jScreened: pointer from columns of screened SSRs to site number in original user network + # v, yrv: numeric and integer; predictand and years + # yrsC (1x2)d first and last year of desired calibration period; if NaN, default to first or last + # available year of overlap of u and v + # yrEnd (1x1)d desired last year of provided time series output of reconstruction and of plot of + # reconstruction with 50% error bar + # nNeg, nPos: integer (both positive) of max negative and possitive lag allowed by calling function in + # SSR modeling. This affects m in leave-m-out cross-validation + # incR2a: the stwp of "approximate" maximum adjusted R-squared is the before which the increase + # in adjusted R-squared is less than incR2a. I have used 0.01, figuring that, say, an + # increase in adjusted R-squared from 0.50 to 0.5099 is not worth a more complicated model + # kstop: stopping rule for forward stepwise. + # =1 at approximate maximum adjusted R-squared + # =2 at maximum cross-validation RE, but at no higher step than that of approximate maximum adjusted R-squared + # NcMin: minimum acceptable number of years for calibration of MSR model + # PCoption: option for building pool of potential predictors from scores of PCs of SSRs + # 1: specify k most important PCs, for example from viewing scree plot + # 2: the m + # + # Notation below uses "<>" to indicate "default" values of input specifications. For example, + # means the default for variable f is 0.10. Or, with options 1 and 2, <2> indicates that + # the default option is "2." + # + # Revision + # Rev 2023-02-09. Minor, to avoid fatal error in in a listing annotated on a figure. + # Rev 2023-03-29. format '-3d' to '3.0f' in response to error with analog method call for calb table + # Rev 2023-04-03. To handle special case in which specified start and end years of calibration for + # SSR models are incompatible with data available for MSR model + # Rev 2023-04-15. Typo "nPCskeep" corrected + # Rev 2023-05-08. Cosmetic, to figure summarizing calibration statistics. Switched to using layout() + # for screen splitting to allow sub-windows to be of different width. Formerly used split.screen. + # Rev 2023-05-16. yrEnd newly provided input argument, for truncation of final reconstruction + # Rev 2023-06-02. remove error message and automatic bail when user specifies a calibration period impossible + # for the time coverage of tree-ring and hydro data. Now the calibration period is simply truncated + # to be as long as possible, and program allowed to proceed. + # Rev 2023-11-26. (1) To used input arg yrEnd as last year of desired reconstruction output rather + # than compute yrEnd internally. (2) To fix a fatal error when running in "analog" mode + # revised 2024-03-06. Cosmetic change for labeling of figure showing ACFs of reconstruction for calibration + # and earlier years + + # (methMSR=3) + library(car) + library(nortest) + library(gplots) + library(pracma) + source(paste(code_dir,"CrossValid2.R",sep="")) # leave-m-out cross-validation + source(paste(code_dir,"ssValid.R",sep="")) # split-sample validation + source(paste(code_dir,"mannken1.R",sep="")) # time plot and trend test of reg. resids + source(paste(code_dir,"stemACF.R",sep="")) # stem plot of acf, with CI & annotaton + source(paste(code_dir,"xyCI.R",sep="")) # compute polygon (for shaded CI) from lower and upper CI + source(paste(code_dir,"Table1Column.R",sep="")) # write a table file with just 1 data column + source(paste(code_dir,"TabSepTsm1.R",sep="")) # write a tab-sep file with obs, recon, 50% CI + source(paste(code_dir,"TabSepTsm2.R",sep="")) # write a tab-sep file with model input data, 50% CI + source(paste(code_dir,"Tsm2Scores1.R",sep="")) # time series matrix to scores of PCsI + source(paste(code_dir,"ForwStep3.R",sep="")) # stepwise regression to get stopping step + source(paste(code_dir,"LagkAcc.R",sep="")) # lag-k autocorrelation(s) of vector or matrix + source(paste(code_dir,"TablePCA1.R",sep="")) # write tailored tab-sep table of PCA loadings + source(paste(code_dir,"TableWrite1.R",sep="")) # write multi-column table + source(paste(code_dir,"EffectSS.R",sep="")) # effective sample size (adjusted for autocorrelation) + source(paste(code_dir,"TabSepTsm3.R",sep="")) # for time series output of PC scores + source(paste(code_dir,"KnnAnalog.R",sep="")) # nearest neighbor analogs + source(paste(code_dir,"emssgUNH.R",sep="")) # write error file to system, specified output folder + + #====== HARD CODE + + cBlue1 <- "#3399FF"; cMagenta1 <- '#FF00FF'; cGreen <- '#00FF00' + + flagBail<-0 # flag for bailing out of function + # 0 = no problems + # 1 = fatal error; message returned and program aborts + # 2 = no abortion, but calibration period had to be modified to suit coverage of climate + # series and SSR matrix; message is returned to calling program + flagMsg<-'No problems' + minLength1 <-130 # if length of series > minLength1 in reconstruction time series plot, line + # without plot characters is plotted; otherwise line with symbols + + # 1 specified calibration period too short or inconsistent with data coverage + # + #======================= UNLOAD LIST, AND RENAME SOME VARIABLES + + U <-D$U ; yrU<-D$yrU # full tsm of screened pf SSRs + + nmsU <- D$nmsU # ids of screened SSRs + jScreened <- D$jScreened # pointer from screened SSRs to user-database site number + v <-D$v ; yrv<-D$yrv # full length predictand + yrgo1<-D$yrsC[1]; yrsp1<-D$yrsC[2] # desired start and end year of calib period of MSR model + yrEnd = D$yrEnd; # final reconstruction to be truncated at this year + nNeg<-D$nNeg; nPos<-D$nPos # max neg and pos lags allowed in SSR modeling + incR2<-D$incR2a # stepwise in MSR will not choose a model whose increase in adjusted + # R-squared from the previous step is less than incR2 + kstop <-D$kstop # stopping rule for stepwise + N1 <- D$NcMin # mimimum acceptable number of years for calibration of MSR model + PCoption <- D$PCoption # how pool of potential predictors to be filled: + # 1 Use will specify to use most important K PCs after viewing scree plot + # <2> The m + alphaR <- D$alphaR # for analog method, PCs retained only if correlated with y at this alpha level + ScreenAnalogPCs <- D$ScreenAnalogPCs # whether or not to screen the analog PCs with correlation + PCApredictors <- D$PCApredictors # TorF for using PCs of SSRs as the predictors + methMSR <- D$methMSR # method of MSR: 1=SLR1, 2=MLR1-PCA or MLR1-noPCA, 3= Analog + PdfDescribe <- D$PdfDescribe # string referring to pdf file that describes recon. method + nPCsKeep <- D$nPCsKeep # user-specified number of PCs to include in pool of potential predictors + kHowPCA <- D$kHowPCA # 1= on correlation mtx, 2=on covariance mtx + NextFigNumber <-D$NextFigNumber # start naming figures as Figure0?.png, where ? is NextFigNumber + outputDir <-D$outputDir # outut to be written to this system folder + # Note that outputDir is also defined in the global environment. So, I think that I would + # not actually need to pass outputDir as argument to functions + HydroName <- D$Text[3] # name of hydrologic variable (e.g., "Runoff") + HydroLabel <- D$Text[1] # label of hydro variable, for plots (e.g., "RO) + HydroUnits <- D$Text[2] # units of hydro varialbe with parens, (e.g., "(mm + HydroUnits2 <- substr(HydroUnits,2,(nchar(HydroUnits)-1)) # units w/o pare s + HydroSeason <- D$Text[4] # season of hydro variable (e.g., ""12-month season ending in month 9" ) + strTailPart1 <- PdfDescribe + if (methMSR==3){ + RecMethod<- paste('Method: Analog years of observed',HydroLabel,'from PC scores of SSRs') + } else { + if (PCApredictors) { + RecMethod<- paste('Method: stepwise regression of observed',HydroLabel,'on PC scores of SSRs') + } else{ + RecMethod<- paste('Method: stepwise regression of observed',HydroLabel,'on SSRs') + } + } + rm(D) + # all of the above are numeric or integer, except that yru is 1-col matrix + + #============= GET CALIBRATION DATA AND CHECK THAT CALIBRATION PERIOD LONG ENOUGH + + # Compute longest possible calibration period given the overlap of U and v + yrgo2 <- max(yrU[1],yrv[1]) # earliest overlap year of U and v + yrsp2 <- min(yrU[dim(U)[1]],yrv[length(v)]) # earliest overlap year of U and v + + # Return error message and fail if overlap of screened SSRs (U) and available hydro series v yrsp2 + if (L2){ + yrsp1 <- yrsp2 + } + L <- L1 || L2 + + # Following commented out because decided to just truncate the calibration period to years supported + # by the data. User will have to live with it. + # if (L){ + # flagBail<-2 + # flagMsg<-paste('RecMLR1 message: MSR calibration period forced to ',as.character(yrgo1),'-', + # as.character(yrsp1), ' in response to available time covrage of vector of ', + # ' hydro data and matrix of screened SSRs',sep='') + # } + + U0 <- U # save the original SSRs for debugging + + #========================= OPTIONAL CONVERSION OF SSRs to PCs + + if (methMSR==3 | isTRUE(PCApredictors)){ + D <- rep(NA,4) # make empty list; "D" otherwise ia some kind R function + DinPCA <- list("X"=U,"yrX"=yrU,"nmsX"=nmsU,"khow"=kHowPCA) + ResPCA <- Tsm2Scores1(DinPCA) + + # Loadings + LoadPC <- ResPCA$Loadings + row.names(LoadPC)<-nmsU # assign chronology ids as row names + namesX <- colnames(LoadPC) + + # Replace SSRs of U with the PC scores + U <- ResPCA$Scores + + #====================== FIGURE 1x1 SCREE PLOT + # + # Figure files are numbered within this function with first figure as figure01.png. where + # In general, figure files are named Figure?? is a number built from NextFigNumber+jFigAdd. jFigAdd + # will start at 0 but increment for later figures + jFigAdd <- 0 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-PCA1','.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-PCA1','.png',sep="") + } + + # Blocks for plot + nPC <- length(namesX) + j <- 1:nPC # for x axis, PC# + + # Pct variance annotation for up to first 7 PCs + if (nPC<=7){ + nListPct <- nPC + str1 <- paste('Pctg variance of the ',as.character(nPC),' SSRs explained by PCs') + } else { + nListPct <-7 # will list variance explained for only first 7 Pcs + str1 <- paste('Pctg variance of the ',as.character(nPC),' SSRs explained by first 7 PCs') + } + str1 <-paste(str1,'\nPC %Var Cum%\n') + B <- matrix(nrow=nListPct,ncol=2) + B[,1] <- ResPCA$PctVar[1:nListPct]; B[,2] <- ResPCA$CumPctVar[1:nListPct] # rev 2023-02-09 + + for (n in 1:nListPct){ + str1a <- paste(as.character(n),' ',sprintf('%5.0f %5.0f\n',B[n,1],B[n,2])) + str1 <- paste(str1,str1a) + } + rm(str1a,B,nListPct) + + # Plot figure + png(filename=fileOut, width = 960, height = 480) + par(mar=c(5,5,5,1),cex.main=1.4,cex.axis=1.5, cex.lab=1.5, cex.main=1.5) + plot(j,ResPCA$EigValues,type="b",pch=1,col="blue", + xlab="PC Number",ylab="Eigenvalue", + main=paste('Scree Plot of Eigenvalues', + '\n(dashed red line at mean)')) + abline(h=mean(ResPCA$EigValues),col='red',lty=2) + text(nPC/2,max(ResPCA$EigValues),str1,adj=c(0,1),cex=1.3) + dev.off() + + + + #====================== FIGURE 1x1 HEAT MAP OF LOADING OF PCS ON SSRS + # + jFigAdd=jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-PCA2','.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-PCA2','.png',sep="") + } + png(filename=fileOut, width = 960, height = 480) + par(mar=c(5,6,5,2),cex.main=1.4,cex.axis=1.5, cex.lab=1.3, cex.main=1.5) + + heatmap.2(LoadPC,Rowv = NA, Colv = NA,trace='none',key=TRUE, + dendrogram='none', + margins=c(5,8), + lhei=c(1.5,5),lwid=c(1,5), + keysize=1.0,key.title=NA,key.ylab=NA,key.xlab='Loading', + key.ytickfun = NULL,density.info="none", + main='PC Loadings on SSRs') + + dev.off() + rm(str1) + } else { + # mode np-PCA + namesX <- nmsU + } + + #========================= PULL CALIBRATION DATA + L <- yrU>=yrgo1 & yrU<=yrsp1 + U1 <- U[L,]; yrU1<- yrU[L] + L <- yrv>=yrgo1 & yrv<=yrsp1 + v1 <- v[L]; yrv1<- yrv[L] + ncalib <- length(v1) # length of MSR calibration period + # Status. U1 is matrix; yrU1, v1 and yrv are vector. + + + #========================= CORRELATION OF HYDRO SERIES WITH SSRs OR THEIR PCS; LAG-1 + # AUTOCORRELATIONS OF SAME + + #--- Check on desired threshold correlation + alphaRR <- c(0.10, 0.05, 0.01) # acceptable alpha levels (2 tailed) + Siggys <- c('90%','95%','99%') + alphaTemp <- 1-alphaRR/2 + ThreshsR <- qnorm(alphaTemp) + L <- alphaR == alphaRR + if (!any(L)){ + emssg <- 'Invalid setting for critical alpha for correlation screening; must be one of {0.10,0.05 ,0.01}' + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } + ThreshSiggy <- ThreshsR[L] # this over sqrt(N-2) gives 2=tailed confidence interval + Siggy <- Siggys[L] + rm(L,alphaRR,Siggys,alphaTemp,ThreshsR) + rThresh <- ThreshSiggy/sqrt(length(v1)-2) # threshold level of correlation + + #--- Correlations + rv1U1 <- cor(v1,U1) + rCI = rThresh # rename for convenience; threshold correlation for confidence interval + + #--- Lag-1 autocorrelations + ResLag1 <- LagkAcc(v1,1) + r1v1 <- ResLag1$rk + ResLag1 <- LagkAcc(U1,1) + r1U1 <- ResLag1$rk + rm(ResLag1) + + + + #====================== FIGURE 1x1 BAR CHART OF R OF HYDRO SERIES WITH SSRs or THEIR PCS + + tit1 <- c(paste('Correlation with ',Siggy,' CI (blue) and autocorrelation (magenta),', + as.character(yrgo1),'-',as.character(yrsp1)), + paste('\n(magenta horizontal line is r(1) of ',HydroLabel,')',sep="")) + if (methMSR==3 | PCApredictors){ + xlab1 <- 'PC #' + legText <- c(paste('r of',HydroLabel,'with PCs'), + 'r(1) of PCs') + jFigAdd <- jFigAdd+1 + } else { + xlab1 <- 'SSR # (in order as in matrix of screened SSRs)' + legText <- c(paste('r of',HydroLabel,'with SSRs'), + 'r(1) of SSR') + jFigAdd <- 0 + } + + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-MSRcalibration1','.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-MSRcalibration1','.png',sep="") + } + png(filename=fileOut, width = 960, height = 480) + par(mar=c(5,6,5,2),cex.main=1.0,cex.axis=1.5, cex.lab=1.3, cex.main=1.5) + h <- t(cbind(t(rv1U1),r1U1)) + + barplot(h,ylim=c(-1,1),beside=TRUE,main=tit1,xlab=xlab1,ylab='r', + width=c(1.0,0.5),names.arg=as.character(1:dim(U1)[2]), + col=c(cBlue1,cMagenta1)) + legend(x=dim(U1)[2],y=1,xjust=1,yjust=1,legend=legText,fill=c(cBlue1,cMagenta1), + cex=1.3) + abline(h=0,col='black') + abline(h=c(rCI, -rCI), col=cBlue1, lty=2, lwd=4) + abline(h=r1v1,col=cMagenta1,lty=1,lwd=2) + + dev.off() + # axis(1, at =(1:length(rv1U1)),labels = nmsU) + + #========== POSSIBLE REDUCTION OF POOL OF POTENTIAL PREDICTORS OR ANALOG SET OF PC'S + # + # Input arg f gives a fraction, which if multiplied times the number of observations in + # the calibration period of the MSR model, puts an upper limit on the allowable number + # of variables in the pool of potential predictors. + # + # The pool must be less than fN, where N is the length of the calibration period. How this + # constraint is applied depends on if the MSR is done using the SSRs or their PCs as + # predictors. If using the SSRs, the pool is reduced so that it includes only the + # m nmax) { + emssg <- paste('You instructed to retain more than',sprintf('%g',nmax),'PCs; too many!') + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } else { + # Assign as pool the first nPCsKeep PCs of the SSRs + jU2toU1 <- 1:nPCsKeep # pointer to cols of U1 + U2 <- U1[,(1:nPCsKeep)] # pool of potential predictors + yrU2 <- yrU1; + namesU2 <- namesX[jU2toU1] + } + } else { + # Predictors could be SSRs or their PCs, and correlation with y to be used, if needed, + # to keep pool small. + # Correlate columns of U1 with y and compute absolute correlation for retaining predictors + # Threshold is two-tailed test, no adjustment for autcorrelation; input alphaR must be one of + # [0.10 0.05 0.01] + rThese <- cor(v1,U1) # vector of correlations of SSRs or PCs with predictand + if (methMSR==3){ + if (ScreenAnalogPCs){ + # Analog method; retain only the PCs with correlation significance greater than threshold + Lkeep <- abs(rThese)>rThresh + if (!any(Lkeep)){ + # ERROR MESSAGE + emssg <- paste('No PCs passed screening for correlation with',HydroLabel, + 'at alpha=',sprintf('%g',alphaR)) + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } else { + U2 <- U1[,Lkeep]; yrU2 <- yrU1 + jU2toU1 <- which(Lkeep) # pointer of U2 back to U1, cols + namesU2 <- namesX[Lkeep] + } + } else { + # no screening of analog PCs + U2 <- U1; yrU2 <- yrU1; namesU2 <- namesX; jU2toU1 <- 1:dim(U1)[2] + } + } else { + # Not analog method; will screen to avoid too large a pool + if (dim(U1)[2]>nmax) { #if pool too large + # --- Correlation screening + rSort <- sort(abs(rThese),decreasing=TRUE,index.return=TRUE) + rCut <- rSort$x[nmax] # PCs or SSRs with smaller absolute r will be dropped + Lkeep <- abs(rThese)>=rCut + U2 <- U1[,Lkeep]; yrU2 <- yrU1 + jU2toU1 <- which(Lkeep) + namesU2 <- namesX[Lkeep] + } else { + # No problem with size of pool; use them all + U2 <- U1; yrU2 <- yrU1 # pool of potential predictors + jU2toU1 <- 1:dim(U1)[2] # pointer of U2 back to U1, cols + namesU2 <- namesX + } + } + } + + # In case U2 has just 1 column, make sure U2 is a matrix + U2 <- as.matrix(U2) + + + #================ EUCLIDEAN DISTANCE + # + # If methMSR==3, find instrumental-period first-k nearest neighbors in yrv1 for + # every year of to every year in U. Compute Euclidean distances for vectors of + # PC scores. Build 2-dim time series matrices of the years and of the "analog y" + # + # Also build time series of "nearest-observed" y and compute statistics of + # accuracy if such a series were used as the reconstruction + + + if (methMSR == 3){ + kNN <- 2 # Want kNN nearest neighbors from yrv1, v1 for every year of U + ResKNN <- KnnAnalog(U[,jU2toU1],yrU,v1,yrv1,kNN) + # Among outputs is ResKNN$Recon, with "reconstruction" in col 2 and the corresponding + # analog years in col 3. Col 4 tells if recon is nearest or 2nd nearest neighbor + # Also has "NearestObserved," which is a null reconstruction using as the + # reconstruction in any year of yrv1 the nearest v to the value of v in yrv1 + # + + #--- ASSESSMENT OF ACCURACY OF ANALOG AND "NEAREST-OBSERVED" RECONS + L <- ResKNN$Recon[,4] == 2 + # Analog predictions + Fits <- ResKNN$Recon[L,2] + yrFits <- yrv1 + # Nearest-observed predictions + FitsNO <- ResKNN$NearestObserved[,3] + yrFitsNO <- yrv1 + + #--- SOS terms-- Analog + Efits <- v1-Fits; # error, or obs minus recon + SSE <- sum(Efits*Efits) # sum of squares of errors + SSv1 <- sum((v1-mean(v1)) * (v1-mean(v1))) # sos of departures of v1 from its mean + REtemp <- 1-SSE/SSv1 + rtemp <- cor(v1,Fits) + + #--- SOS terms-- Nearest-observed + EfitsNO <- v1-FitsNO; # error, or obs minus nearest-observed + SSENO <- sum(EfitsNO*EfitsNO) # sum of squares of errors + REtempNO <- 1-SSENO/SSv1 + rtempNO <- cor(v1,FitsNO) + + #--- STORE + Analog <- list(Fits=Fits,yrFits=yrFits,Resids=Efits,Correl=rtemp,RE=REtemp, + DataKnn=ResKNN$DataAnalog,YearsKnn=ResKNN$YearsAnalog, + DistanceKnn=ResKNN$Distance,ReconNN12=ResKNN$Recon, + RMSE=sqrt(mean(SSE)), + FitsNO=FitsNO,yrFitsNO=yrFitsNO,ResidsNO=EfitsNO,CorrelNO=rtempNO,RENO=REtempNO, + RMSENO = sqrt(mean(SSENO))) + rm(rtemp,REtemp,SSv1,SSE,Efits,Fits,yrFits,L,ResKNN, + rtempNO,REtempNO,SSENO,EfitsNO,FitsNO) + } + + + if (methMSR != 3){ + #========================= STEPWISE REGRESSION + # + # To select forward stepwise from pool of potential predctors and do an initial + # fit of model + # + # Status. + # U2, yrU2: pool of potential predictors + # iU1: pointer (cols) of U2 back to U1 and to long matrix U + # v1, yrv1: predictand vector + ResMLR1a <- ForwStep3(U2,namesU2, v1,kstop,nNeg,nPos, incR2a) + inmodelU3 <- ResMLR1a$ColsInModel + npred <- length(inmodelU3) # number of predictors in MSR model + U3 <- U2[,inmodelU3]; yrU3 <-yrU2 + namesU3 <- namesU2[inmodelU3] # names of predictors in model + jU3toU1 <- jU2toU1[inmodelU3] # pointer (col) back to full U and to original calibration U1 + Fits <- ResMLR1a$Model$fitted.values # calib period predictions + ModelSummary <- summary(ResMLR1a$Model) + RMSEc <- ModelSummary$sigma + + #========================= RE-FIT REGRESSION WITH LM FUNCTION (for debugging only) + # + # Function lm gives comprehensive statistics. Can uncomment the three lines, and check that the + # statistics returned exactly match those in ResMLR1a + # M <- lm(v1~U3) # model object + # M1<-summary(M) + + + #========================= STORE CALIBRATION STATISTICS + + # Significance of overall F + # M1$fstatistic has F, dfnum, dfdenom in 1-3 + pF <-ResMLR1a$Fpvalue + + + OutputCal<-list('flag'=flagBail,'Msg'=flagMsg,'lmModel'=ResMLR1a$Model,'yearGoCal'=yrgo1,'yearSpCal'=yrsp1, + 'coefficients'=ResMLR1a$Coefficients,'Rsquared'=ResMLR1a$Rsquared,'F'=ResMLR1a$Foverall,'pF'=pF, + 'RsquaredAdj'=ResMLR1a$RsquaredAdj,'RMSEc'=RMSEc) + + } else { + # Analog method + } + + #====================== FIGURE CALIBRATION2 + # + + #--- Build some strings for use in plots + strCalPd <- paste(' Calibration period: ',sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1), + ' (N=', sprintf('%d',length(yrv1)),' yr)',sep='') + + #--- Build Tit1 figure png filename + + if (methMSR==3){ + Fits <- Analog$Fits + strPart1 <- '\nNumber of: screened SSRs / PCs for analogs' + strPart2 <- paste('\nPCA on years ',as.character(yrU[1]),'-',as.character(yrU[length(yrU)]), + paste('\nAnalogs from years ',as.character(yrv1[1]),'-',as.character(yrv1[length(v1)]),sep=''),sep='') + txtCommon <- c('Common','common') + } else { + txtCommon <- c('Calibration','calbration') + if (PCApredictors){ + strPart1 <- '\n # screened PCs in pool / # PCs in final model' + strPart2 <- ' (see Table 8 for model coefficients)' + } else { + strPart1 <- '\n # screened SSRs in pool / # in final model' + strPart2 <- ' (see Table 6 for model coefficients)' + } + } + jFigAdd<-jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-MSRcalibration2.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-MSRcalibration2.png',sep="") + } + # Build figure + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2,3,3),nrow=2,byrow=TRUE) + layout(layout.matrix,heights=c(2,2),widths=c(1,2)) + + # Scatter + par(mar=c(4,5,2,3)) + r<-cor(Fits,v1) + strTit <- paste('Recon vs Obs ',HydroName,', r=',as.character(round(r,digits=2))) + plot(v1,Fits,ylab=paste('Recon',HydroLabel,HydroUnits), + xlab=paste('Obs',HydroLabel,HydroUnits),main=strTit) + abline(lm(Fits~v1),col="red") + + + # Stats table + par(mar=c(0,0,0,0)) + plot(1,1,xaxt="n",yaxt="n",bty="n",pch="",ylab="",xlab="", main="", sub="", + xlim=c(0,1),ylim=c(0,1)) + if (methMSR==3){ + strText <-paste(RecMethod,strPart1, + '\n ',sprintf('%g',dim(U1)[2]), + ' / ',sprintf('%g',dim(U2)[2]),strPart2,sep='') + text(x=0.05,y=0.95,'Model Statistics',adj=c(0,1),cex=1.5,font=2) + text(x=0.05,y=0.8,strText,adj=c(0,1),cex=1.2) + } else { + if (npred==1){ + U3 <- as.matrix(U3) # if happen to be only 1 predictor in final model, still want U3 as matrix + } + strText <-paste(RecMethod,strPart1, + '\n ',sprintf('%g',dim(U2)[2]), + ' / ',sprintf('%g',dim(U3)[2]),strPart2, + '\n',strCalPd, + '\n R-squared =',sprintf('%5.2f',ResMLR1a$Rsquared), + '\n F=',sprintf('%.5g',ResMLR1a$Foverall),'(p=',sprintf('%.4g',pF),')', + '\n RMSE=',sprintf('%g',RMSEc),HydroUnits2,' (equivalent to std error of the estimate)') + if (methMSR==3){ + text(x=0.05,y=0.95,'Analog Model Statistics',adj=c(0,1),cex=1.5,font=2) + } else { + text(x=0.05,y=0.95,'Calibration Statistics',adj=c(0,1),cex=1.5,font=2) + } + text(x=0.05,y=0.8,strText,adj=c(0,1),cex=1.4) + } + + # Time plots, obs and rec + zx <- c(yrgo1,yrsp1) + zy <- c(mean(v1),mean(v1)) + + ylims <- c(min(v1,Fits),max(v1,Fits)) + ylimsInc <- 0.05 * diff(ylims) + ylims <- c(ylims[1]-ylimsInc,ylims[2]+ylimsInc) + rm (ylimsInc) + + par(mar=c(4,5,3,2),cex.axis=1.5, cex.lab=1.5, cex.main=1.5) + plot(yrv1,v1,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1),ylim=ylims, + ylab=paste(HydroLabel,HydroUnits),xlab="Year", + main=paste(txtCommon[1],'Period Observed (blue) and Reconstructed (red)',HydroName)) + lines(yrv1,Fits,type="b",pch=2,col="red") + lines(zx,zy) + h<-par("usr"); yoffset<- (h[4]-h[3])/100; ytop <- h[4]-yoffset + # legend(yrgo1+1,ytop,legend=c("Obs", "Recon"), + # col=c("blue", "red"), lty=1, cex=1.2) + + dev.off() + rm (strPart1,strPart2,strText,strTit,r,h) + + + #====================== FIGURE: CALIBRATION3 + # + # CW from LL: histogram of yhat; hist of obs y; acf of obs y, acf of yhat + + #--- same xlims for all histograms + xlo = min(c(min(v1),min(Fits))) + xhi = max(c(max(v1),max(Fits))) + xinc <- 0.05*(xhi-xlo) + xlims <- c(xlo-xinc,xhi+xinc) + rm(xlo,xhi,xinc) + #xlims <-c((c(min(v1),min(Fits))), (c(max(v1),max(Fits)))) + + + #--- Build figure png filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-MSRcalibration3.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-MSRcalibration3.png',sep="") + } + # Build figure + png(filename=fileOut, width = 960, height = 480) + # Create the layout + nf <- layout( matrix(c(1,2,3,4), ncol=2) ) + + nbin <- floor(5*log10(length(v1))) # Panofsky rule of thumb for number of bins + xtweak1 <- 0.00001* (max(v1)-min(v1)); + xtweak2 <- 0.00001* (max(Fits)-min(Fits)); + brks1 = seq(min(v1)-xtweak1,max(v1)+xtweak1,length.out=(nbin+1)) + brks2 = seq(min(Fits)-xtweak2,max(Fits)+xtweak2,length.out=(nbin+1)) + xlab1 <- paste(HydroLabel,HydroUnits) + MaxLag <- floor(length(v1)/4) + + par(mar=c(5,6,2,2),cex.axis=1.5, cex.lab=1.5, cex.main=1.5) + Tit1 <- paste('Histogram, Observed',HydroLabel,'(N=',sprintf('%d',length(v1)),'yr)') + hist(v1,main=Tit1,breaks=brks1,xlim=xlims,xlab=xlab1) + + par(mar=c(5,6,2,2)) + Tit1 <- paste('Histogram, Reconstructed',HydroLabel,'(N=',as.character(length(v1)),'yr)') + hist(Fits,main=Tit1,breaks=brks2,xlim=xlims,xlab=xlab1) + + par(mar=c(5,5,4,2)) + Tit1 <- paste('ACF, Observed',HydroLabel,',with 95% CI') + acf(v1,lag.max=MaxLag,type='correlation',main=Tit1) + + par(mar=c(5,5,4,2)) + Tit1 <- paste('ACF, Reconstructed',HydroLabel,', with 95% CI') + acf(Fits,lag.max=MaxLag,type='correlation',main=Tit1) + dev.off() + + + #========================= ANALYSIS OF RESIDUALS (local 3,4,5) + # + # Will need the regression residuasl. First figure (1x2) will be histogram and + # scatter of residuals on predicted values. Second figure (1x1) will be time plot of + # the residuals with a fitted (non-parametric fit) trend line and annotated result + # of Mann-Kendall trend test. The significance will be adjusted as needed for autocorrelation + # of the residuals over and above that in a linear trend. The third figure (1x1) will be + # the acf of residuals, with annotated DW test results + + + #============= FIGURE: ANALYSI OF RESIDUALS: HISTORGRAM & CONSTANCY OF VARIANCE + # + # 1st of 3 analysis of residuals plots + + if (methMSR==3){ + Resids <- Analog$Resids + } else { + Resids <- ResMLR1a$Model$residuals + } + + # Lilliefors test of normality of residuals + hLillie <- lillie.test(Resids); + if (methMSR==3){ + Tit1 <- paste('Residuals, E, of analog reconstruction of',HydroName, + '\n (p=',sprintf('%.2g',hLillie$p.value),'for H0 that E normal, from Lilliefors Test)') + } else { + Tit1 <- paste('Residuals, E, of regression of',HydroName,'on tree rings', + '\n (p=',sprintf('%.2g',hLillie$p.value),'for H0 that E normal, from Lilliefors Test)') + } + + + # Breusch-Pagan test for heterogeneity of regression residuals + if (methMSR==3){ + BP <-NA + Tit2 <- paste('Scatter of Residuals on Fitted Values','\n') + } else { + BP <- ncvTest(ResMLR1a$Model) + Tit2 <- paste('Scatter of Residuals on Fitted Values', + '\n (p=',sprintf('%.2g',BP$p),' for H0 that E homoscedastic)', + '\n(from Breusch-Pagan Test)') + } + + # Buld filename for plot + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-AnalysisResiduals1.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-AnalysisResiduals1.png',sep="") + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) + layout(layout.matrix,heights=2,widths=c(1,1)) + + # Left plot + + par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + hist(Resids,xlab=paste('Residual',HydroUnits),ylab='Frequency',main=Tit1) + + # # right plot + par(mar = c(5.1, 4.1, 6.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + plot(Fits,Resids,xlab=paste('Predicted',HydroUnits), + ylab=paste('Residual',HydroUnits), + main=Tit2) + abline(h=0,lty=2,col='#808080') # dash gray + dev.off() + + + #--- TIME PLOT OF REGRESSION RESIDUALS, WITH MANN-KENDAL TREND TEST (1X1) + + if (methMSR==3){ + RegWord <- 'Model' + } else { + RegWord <- 'Regression' + } + + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber +jFigAdd + + # Prepare input for mannken1 + X <- cbind(yrv1,Resids) # matrix with year and regression or analog residuals + + kopt<- c(2,1) # want plot; want adjustment of significance of Mann-Kendall statistic + # for autocorrelation if warranted + kplot <-2 # for TRISH, the time plot of residuals, with annotated MK test results + # and non-parametric-fit straight line fit to trend + ylabTemp1 <- paste('Residual',HydroUnits) + ylabTemp2 <- paste('Detrended Residual',HydroUnits) + textPlot <- c('Regression Residuals with Nonparametric-Fit Trend Line,','Year',ylabTemp1, + ylabTemp2) + Din <- list(X=X,kopt=kopt,kplot=kplot,NextFigNumber=FigNumber,textPlot=textPlot,outputDir=outputDir) + + # mannken1 to get statistics and plot + ResMK <- mannken1(Din) + rm(Din) + + + #--- ACF OF REGRESSION RESIDUALS, INCLUDING 95% Ci + + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber +jFigAdd + + # acf and its 95% CI + lagsPlot <- floor(min(ncalib/4,20)) + acfMy <- acf(Resids, lag.max=lagsPlot, type = "correlation", + plot = FALSE) + k <- acfMy$lag # lags + w <- acfMy$acf # acf + + # DW statistic of the regression residuals + if (methMSR==3){ + strDW <- 'Durbin-Watson not computed (inappropriate for analog method)' + } else { + DW <- durbinWatsonTest(ResMLR1a$Model) + strDW <- paste('p=',sprintf('%g',DW$p), + ': Durbin-Watson test (2-sided) of H0 that population lag-1 autocorrelation is zero', + sep='') + } + # Text for plot + Tit1 <- paste('ACF of Residuals with 95% CI (N=',sprintf('%g',ncalib),' yr)') + textPlot <- c(Tit1,'Lag(yr)','r',strDW,'-AnalysisResiduals3') + + # Store inputs required by stemACF in a list (see opening comments there) + Din <- list(x=k,y=w,nsize=ncalib,kAlpha=1,FigNumber=FigNumber, + outputDir=outputDir,linecol1='#0022CC',linecol2='#696969', + linecol3='#E60000',textPlot=textPlot) + ResNull <- stemACF(Din) + + #========================= VALIDATE AND STORE STATISTICS + + #ResCV <- CrossValid2(u1, v1, nNeg,nPos) # cross-validation + + # Split-sample validation -- not if analog method + if (methMSR==3){ + # Analog method: no split-sample validation. + # For analog method, the model residuals can be considered validation residuals, because + # no model has been fit and no tuning to improve estimates for the overlap period + # wit climate. The stored Analog$RMSE can therefore be used in place of RMSEcv. + # For analog method there is also no "RE" statistic. But a pseudo-RE is computed as + # 1-SSE1/SSE2, where SSE is the sum-of-squares of residuals for the overlap period + # with y, and SSE2 is the sum-of-squares of departures of observed y from its mean. + # This RE is therefore a skill statistic comparing errors for the reconstruction with errors + # of a null reconstruction consisting of the observed mean for each year. + OutputVal<-list('RE'=Analog$RE,'RMSE'=Analog$RMSE,'Correlation'=Analog$Correl) + } else { + + iAstop <- ceiling(length(v1)/2) # end row index in v1 of first half of data, assumed longer than + # longer of the two halves if length of v1 odd + iBgo <- iAstop+1 # start row of second half + iA <- 1:iAstop # row indices of first half of full calib period + iB <- iBgo:length(v1) # ... of second half + + #--- Calibrate on early, validate on late, then reverse + ical<-iA; ival<-iB + i1 <- 1:dim(U3)[2]; # all columns of U3 are the predictors in the final model + ResSS1=ssValid(v1,U3,ical,ival,i1); + REa1<-ResSS1$RE # RE for calib on early, valid on late + ical<-iB; ival<-iA + ResSS2=ssValid(v1,U3,ical,ival,i1); + REb1<-ResSS1$RE # RE for calib on late, valid on early + OutputVal<-list('mLeaveOutCV'=ResMLR1a$CrossValidStorage$LeftOut, + 'REcv'=ResMLR1a$CrossValidStorage$REcv,'RMSEcv'=ResMLR1a$CrossValidStorage$RMSEcv, + 'REcalEarlyValLate'=REa1,'REcalLateValEarly'=REb1) + } + + + #====================== FIGURE Validation: time plots of obs y, recon, y, cv predictions of y; with observed mean line + # + # Completely different figures is made for analog vs other methods (methMSR) + # + #--- Build figure png filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Validation1.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Validation1.png',sep="") + } + + ylims <- c(min(v,Fits),max(v1,Fits)) + ylims <- c(ylims[1]-0.05*diff(ylims),ylims[2]+0.05*diff(ylims)) + if (methMSR==3){ + # Recall: v1, yrv1 is observed predictand; Fits, yrFits are analog-reconstructed + # predictand, which is 2nd nearest neighbor; + # Build figure, time plot at left, window at right + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) + layout(layout.matrix,heights=2,widths=c(4,1)) + + par(mar=c(4,4,5,1),cex.main=1.4) + plot(yrv1,v1,ylim=ylims,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1), + ylab=paste(HydroLabel,HydroUnits),xlab="Year", + main=paste('Observed (blue) and Analog-Predicted (red)',HydroName, + '\n(Years=',sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1), + '; black line at observed mean; green * at nearest observed)')) + lines(yrv1,Fits,type="b",pch=2,col="red") + lines(yrv1,Analog$FitsNO,type="p",pch=8,col=cGreen) + abline(h=mean(v1)) + + #--- Stats window + par(mar = c(0,0,0,0)) + xlims <- c(0,1); ylims <- c(0,1) + plot(0,type='n',axes=FALSE,ann=FALSE,xlim=xlims,ylim=ylims) + + # Analog + strText <-paste('\n Analog', + '\n \n RMSE=',sprintf('%g',Analog$RMSE),HydroUnits2, + '\n RE=',sprintf('%.2g',Analog$RE), + '\n r=',sprintf('%.2g',Analog$Correl)) + text(x=0.01,y=0.95,'Validation statistics',adj=c(0,1),cex=1.3,font=2) + text(x=0.01,y=0.9,strText,adj=c(0,1),cex=1.2) + + # Nearest Observed + strText <-paste('\n Best Possible','\n (Nearest Observed)', + '\n\n RMSE=',sprintf('%g',Analog$RMSENO),HydroUnits2, + '\n RE=',sprintf('%.4g',Analog$RENO), + '\n r=',sprintf('%.4g',Analog$CorrelNO)) + text(x=0.01,y=0.65,strText,adj=c(0,1),cex=1.2) + dev.off() + } else { + # Build figure + png(filename=fileOut, width = 960, height = 480) + par(mar=c(4,4,5,1),cex.main=1.4) + plot(yrv1,v1,ylim=ylims,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1), + ylab=paste(HydroLabel,HydroUnits),xlab="Year", + main=paste('Time Plots of Observed, Reconstructed, and Cross-Validation-Predicted',HydroName,'(',sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1),')', + '\n(black line at observed mean)')) + lines(yrv1,Fits,type="b",pch=2,col="red") + lines(yrv1,ResMLR1a$CrossValidStorage$CVpredictions,type="b",pch=17,col="#990099") + lines(zx,zy) + h<-par("usr"); yoffset<- (h[4]-h[3])/100; ytop <- h[4]-yoffset + legend(yrgo1+1,ytop,legend=c("Obs", "Recon","CVpred"), + col=c("blue", "red","#990099"),pch=c(1,2,17),lty=1, cex=1.2) + dev.off() + } + + #====================== FIGURE VALIDATION2 + # + # Does not apply to analog method + # Text strings for cross-validation + strAnPd <- strCalPd # built for earlier plot: gives calib period and length + if (methMSR!=3){ + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Validation2.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Validation2.png',sep="") + } + # Lilliefors test of normality of CV residuals + hLillie <- lillie.test(ResMLR1a$CrossValidStorage$CVresiduals); + Tit1 <- paste('Cross-Validation Residuals', + '\n(p=',sprintf('%.2g',hLillie$p.value),', H0: normally distributed', + ' [Lilliefors Test])',sep='') + + # Text strings for split-sample validation + yrtemp <- yrv1[iA] # year vector, early split + yrgoA <- yrtemp[1]; yrspA <- yrtemp[length(yrtemp)] + yrtemp <- yrv1[iB] # year vector, late split + yrgoB <- yrtemp[1]; yrspB <- yrtemp[length(yrtemp)] + rm(yrtemp) + strSplitA <- paste(' A: ',sprintf('%d',yrgoA),'-',sprintf('%d',yrspA), + ' (N=', sprintf('%d',length(iA)),' yr)',sep='') + strSplitB <- paste(' B: ',sprintf('%d',yrgoB),'-',sprintf('%d',yrspB), + ' (N=', sprintf('%d',length(iB)),' yr)',sep='') + + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) + layout(layout.matrix,heights=2,widths=c(1,1)) + strText <-paste('\nCross-validation (cv) method: leave-',as.character(ResMLR1a$CrossValidStorage$LeftOut),'out', + '\n',strAnPd, + '\n RMSEcv=',sprintf('%g',ResMLR1a$CrossValidStorage$RMSEcv),HydroUnits2, + '\n REcv=',sprintf('%.2g',ResMLR1a$CrossValidStorage$REcv), + '\n\nSplit-sample validation', + '\n',strSplitA, + '\n',strSplitB, + '\n RE{A}=',sprintf('%.2g',ResSS1$RE),' (calibrated on A, validated on B)', + '\n RE{B}=',sprintf('%.2g',ResSS2$RE),' (calibrated on B, validated on A)') + + # Left plot histogram + par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + hist(ResMLR1a$CrossValidStorage$CVresiduals,xlab=paste('Residual',HydroUnits),ylab='Frequency', + main=Tit1) + + # right plot, stats + par(mar = c(0,0,0,0)) + xlims <- c(0,1); ylims <- c(0,1) + plot(0,type='n',axes=FALSE,ann=FALSE,xlim=xlims,ylim=ylims) + text(x=0.05,y=0.95,'Validation statistics',adj=c(0,1),cex=1.5,font=2) + text(x=0.05,y=0.8,strText,adj=c(0,1),cex=1.2) + #plot(1,1,pch=1,xlim=xlims,ylim=ylims) + dev.off() + } + + #========================= RECONSTRUCTION WITH 50% CI + if (methMSR ==3){ + Xr <- as.matrix(U[,jU2toU1]) # matrix,long-term scores of PCs used to find analogs + L<-complete.cases(Xr) + Xr <- as.matrix(Xr[L,]) ; yrXr <- as.matrix(yrU[L,]) + mXr <- dim(Xr)[1] + yrgo3 <- yrXr[1,1]; yrsp3 <- yrXr[mXr,1] # start and end year of recon + yh <- Analog$ReconNN12[,1:2] # year and reconstructed y, full recon + + # Delta y for 50% CI + xStdNorm75 <-qnorm(0.75, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) + deltaRec50 <- xStdNorm75 * Analog$RMSE + yhLo <- yh[,2]-deltaRec50; yhHi <-yh[,2]+deltaRec50 + yh <- cbind(yh,yhLo,yhHi) # matrix with year, recon, lower 50 upper 50 + } else { + #Xr <- as.matrix(U[,inmodelU3]) # matrix, long-term predictors; INCORRECT + Xr <- as.matrix(U[,jU3toU1]) # matrix, long-term predictors + L<-complete.cases(Xr) + yrXr <- as.matrix(yrU[L,]) + # Add ones column and reconstruct + mXr <- dim(Xr)[1] + Xones<-matrix(1,nrow=mXr,ncol=1) + Xr <- cbind(Xones,Xr) + yrgo3 <- yrXr[1,1]; yrsp3 <- yrXr[mXr,1] # start and end year of recon + yh <- Xr %*% ResMLR1a$Coefficients # reconstruction as 1-col matrix + yh <- cbind(yrXr,yh) # year and recon y, as generated from the reg coefficients + + # Delta y for 50% CI + xStdNorm75 <-qnorm(0.75, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) + deltaRec50 <- xStdNorm75 * ResMLR1a$CrossValidStorage$RMSEcv + yhLo <- yh[,2]-deltaRec50; yhHi <-yh[,2]+deltaRec50 + yh <- cbind(yh,yhLo,yhHi) # matrix with year, recon, lower 50 upper 50 + } + + # Truncate reconstruction matrix yh to end with yrEnd, which is the last year of the + # quantile-extended matrix of SSRs. Beware that some of the most recent years of + # the reconstruction may be based on extended SSRs + Ltemp <- yh[,1] <= yrEnd # marks rows of yh to be retained + yh <- yh [Ltemp,] # truncate tsm yh + rm(Ltemp) + + + # Quality control check that "fitted values" from calibration period match + # the reconstruction for that period arrived at by applying regression coefficients to + # selected columns of predictor matrix. This check not applicable for analog method. + if (methMSR!=3){ + yfit1<-ResMLR1a$Model$fitted.values # from the regression model + L<- yh[,1]>=yrgo1 & yh[,1]<=yrsp1 + yfit2 <- yh[L,2] + dtemp = abs(yfit2 - yfit1) + bigTemp <- max(c(max(abs(yfit1)),max(abs(yfit1)))); # largest absolute value of recon + # during calib period, by either way of generating (regression output of manual application + # of coefficients to columns (correct, presumabley) of predictor matrix) + L= dtemp>1E-9 *bigTemp # maximum difference in the two versions of calib-period recon + # different by more than 1 billionth the largest value? + + if (any(L)){ + emmsg <- paste('ResMLR1a$Model$fitted.values for at least one year of calibration', + 'period differ from reconstruction stored in yh by more than 1E-8 times largest absolute', + 'reconstructed value in either of those series -- error from RecMLR1.R') + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } +} else { + # no check for analog method +} + + #====================== FIGURE (local 8): 1x1 TSP OF FULL RECON WITH 50% CI + + # time series for plot and CI + y <- yh[,2]; yry <- yh[,1] # for time series + + # Compute shaded polygon x and y + Xtemp <- yh[,-2] # matrix with year as col 1, lower CI as col 2, upper CI as col 2 + ResTemp <- xyCI(Xtemp) + xP <- ResTemp$x; yP <- ResTemp$y + + # Limits for plot + yLo <- min(yh[,2:4]) + yHi <- max(yh[,2:4]) + ynudge <- 0.02 * (yHi-yLo) + ylims = c(yLo-ynudge, yHi+ynudge) + xlims = c(yrXr[1]-1,yrEnd+1) + + # Strings for plot + strRecYrs <- paste(sprintf('%d',yrXr[1]),'-',sprintf('%d',yrEnd),sep='') + Tit1 <- paste('Reconstructed ',HydroName,', ',strRecYrs, + '\n(50% CI shaded; dashed line at reconstructed mean)',sep='') + ylab1 <- paste(HydroLabel,HydroUnits) + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Reconstruction1.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Reconstruction1.png',sep="") + } + + # Build figure + png(filename=fileOut, width = 960, height = 480) + par(mar=c(5,5,5,1),cex.main=1.4,cex.axis=1.2,cex.lab=1.2) + if (length(y)>minLength1){ + plot(yry,y,type="l",col="blue",xlim=xlims,ylim=ylims, + ylab=ylab1,xlab='Year',main=Tit1) + } else { + plot(yry,y,type="b",pch=1,col="blue",xlim=xlims,ylim=ylims, + ylab=ylab1,xlab='Year',main=Tit1) + } + abline(h=mean(y),lty=2,col='#808080') # dash gray + adjustcolor("red",alpha.f=0.5) + #polygon(yryP,yP,col='#FFEE99') # flavescent + polygon(xP,yP, col=rgb(1.00,0,0,0.1),border=NA) # mustard + dev.off() + + + + #====================== FIGURE: Reconstruction analysis : 2x2. + # + # At left, top and bottom are ACFs of recon for calib years and earlier + # At right is single frame with box plots or recon for same + + + #--- Pull recon for calib perod and for earlier + # w1, w2 will the reconsturction for those period + # Already have y, yry as full length recon + L <- yry >= yrgo1; # calib pd + w1 <-y[L]; yrw1<- yry[L] + L <- yry < yrgo1 + w2 <- y[L]; yrw2 <-yry[L] + + #---Make some strings for use in plots + strPd1<- paste(sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1), + ' (N=', sprintf('%d',length(w1)),' yr)',sep='') + strPd2<- paste(sprintf('%d',yrgo3),'-',sprintf('%d',yrgo1-1), + ' (N=', sprintf('%d',length(w2)),' yr)',sep='') + strAnnote1 <- paste('A: ',strPd1) + strAnnote2 <- paste('B: ',strPd2) + + Tit1 <-'ACF of Reconstruction with 95% CI, Calibration Period' + Tit2 <- 'ACF of Reconstruction with 95% CI, Earlier Years' + Tit3 <- paste('Distribution of Reconstructed',HydroLabel) + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Reconstruction2.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Reconstruction2.png',sep="") + } + + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2,3,3), nrow = 2,byrow=FALSE) + #layout(layout.matrix,heights=2,widths=c(1,1)) + layout(layout.matrix)#,heights=2,widths=c(1,1)) + par(mar=c(5,5,5,1),cex.main=1.4,cex.axis=1.2,cex.lab=1.2) + + #--- Upper left, acf of recon for calib pd + + MaxLag <- floor(length(w1)/4) + MaxLag <- min(c(MaxLag),20) + + par(mar=c(5,5,4,2)) + acf(w1,lag.max=MaxLag,ylim=c(-1,1),type='correlation',main=Tit1) + text(MaxLag,1,strAnnote1,adj=c(1,1),cex=1.5) + + #---Lower left, acf of recon for years before start of calib pd + + MaxLag <- floor(length(w2)/4) + MaxLag <- min(c(MaxLag),20) + + par(mar=c(5,5,4,2)) + acf(w2,lag.max=MaxLag,ylim=c(-1,1),type='correlation',main=Tit2) + text(MaxLag,1,strAnnote2,adj=c(1,1),cex=1.5) + + + #---Right -- side by side box plots of recon for calib period and prior + + par(mar=c(5,8,4,1),cex.lab=1.3) + namesBP<-c('Period A','Period B') + boxplot(w1,w2,notch=FALSE,ylab=xlab1, + main=Tit3,names=namesBP) + dev.off() + + + #=== TABLE: CALIBRATION1 + + #--- Header + if (PCApredictors | methMSR==3){ + TableTitle <- "Table5-Calibration1" + } else { + TableTitle <- "Table3-Calibration1" + } + if (methMSR==3){ + TitleAdd <- 'Statistics of analog MSR model' + } else { + TitleAdd <- 'Calibration statistics of MSR model' + } + SSRdef <- ' (SSR: "single-site reconstruction")' + textH<- c(TableTitle,TitleAdd, + paste("Predictand:",HydroName,"for",HydroSeason), + RecMethod,SSRdef) + # --- Body (this includes the variable labels that go in first column) + if (methMSR==3){ + PCsUsed <- namesU2[1] + if (length(PCsUsed)>1){ + for (n in 2:length(namesU2)){ + PCsUsed <- paste(PCsUsed,namesU2[n]) + } + } else { + } + textB <-c("YearGo","YearStop","Npool","alphaR","Npredictors","RSME","RE","r") + TfmtB <- '%-11s\t' # format for name of variable; size for longest + # debug DfmtsB <- c('%-4d\n','%-4d\n','%-3d\n','%-6.2f\n','%-3d\n','%-8.3g\n','%-6.2f\n','%-6.2f\n') + DfmtsB <- c('%-4.0f\n','%-4.0f\n','%-3.0f\n','%-6.2f\n','%-3.0f\n','%-8.3g\n','%-6.2f\n','%-6.2f\n') + dataB <- c(yrgo1,yrsp1,dim(U1)[2],alphaR,dim(U2)[2],Analog$RMSE, + Analog$RE,Analog$Correl) + textT <- c(paste('Units of RMSE: ',HydroUnits2), + paste('PCs used for analogs: ',PCsUsed), + strTailPart1) + } else { + textB <-c("YearGo","YearStop","Npool","Npredictors","R2","F","pF","R2adj","RMSEc") + TfmtB <- '%-10s\t' # format for name of variable; size for longest + DfmtsB <- c('%-4.0f\n','%-4.0f\n','%-3.0f\n','%-3.0f\n','%-6.2f\n','%-8.3g\n','%-8.3g\n','%-6.2f\n','%-10g\n') + dataB <- c(yrgo1,yrsp1,dim(U2)[2],npred,OutputCal$Rsquared,OutputCal$F,OutputCal$pF, + OutputCal$RsquaredAdj,OutputCal$RMSEc) + #---Tail + textT <- c(paste('Units of RMSEc: ',HydroUnits2),strTailPart1) + } + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,textH,TableTitle) + + + + #=== TABLE AnalysisOfResiduals + + #--- Header + if (PCApredictors | methMSR==3){ + TableTitle <- "Table6-AnalysisResiduals1" + } else { + TableTitle <- "Table4-AnalysisResiduals1" + } + + if (methMSR==3){ + TitleAdd <- 'Normality and trend' + } else { + TitleAdd <- 'Normality, autocorrelation, trend, heteroskedasticity' + } + textH<- c(TableTitle,TitleAdd) + + if (methMSR==3){ + # --- Body + textB <-c("YearGo","YearStop","pNormal","TrendSlope","pTrend") + TfmtB <- '%-10s\t' # format for name of variable; size for longest + DfmtsB <- c('%-4.0f\n','%-4.0f\n','%-8.3g\n','%-8.5g\n','%-8.3g\n') + dataB <- c(yrgo1,yrsp1,hLillie$p.value,ResMK$b,ResMK$pvalue) + #---Tail + textT <- c('Tests applied include: Lilliefors for trend and Mann-Kendall, for trend', + paste('Units of TrendSlope: ',HydroUnits2,' per year',sep=""), + strTailPart1) + } else { + #I SCREWED UP HERE AND DELETED CODE + # --- Body + textB <-c("YearGo","YearStop","pNormal","DW","pDW","TrendSlope","pTrend","BP","dfBP","pBP") + TfmtB <- '%-10s\t' # format for name of variable; size for longest + DfmtsB <- c('%-4.0f\n','%-4.0f\n','%-8.3g\n','%-8.4g\n','%-8.5g\n','%-8.5g\n','%-8.3g\n', + '%-8.3g\n','%-8.5g\n','%-8.3g\n') + dataB <- c(yrgo1,yrsp1,hLillie$p.value,DW$dw,DW$p,ResMK$b,ResMK$pvalue,BP$ChiSquare,BP$Df,BP$p) + #---Tail + textT <- c('Tests applied include: Lilliefors for trend; Durbin-Watson for autocorrelation, Mann-Kendall for trend', + '\n and Breusch-Pagan for constancy of variance\n', + paste('Units of TrendSlope: ',HydroUnits2,' per year',sep=""), + strTailPart1) + + } + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH) + + + + #=== TABLE Validation1 + + if (methMSR==3){ + # Table not applicable + } else { + + #--- Header + if (PCApredictors){ + TableTitle <- "Table7-Validation1" + } else { + TableTitle <- "Table5-Validation1" + } + + TitleAdd <- 'Cross-validation and split-sample validation' + textH<- c(TableTitle,TitleAdd) + + # --- Body + textB <-c("NleaveOut","RMSEcv","REcv","YearGoA","YearStopA","YearGoB","YearStopB", + "REsplitA","REsplitB") + TfmtB <- '%-9s\t' # format for name of variable; size for longest + DfmtsB <- c('%-3.0f\n','%-8.5g\n','%-5.2f\n','%-4.0f\n','%-4.0f\n', + '%-4.0f\n','%-4.0f\n','%-5.2f\n','%-5.2f\n') + dataB <- c(ResMLR1a$CrossValidStorage$LeftOut,ResMLR1a$CrossValidStorage$RMSEcv, + ResMLR1a$CrossValidStorage$REcv,yrgoA,yrspA,yrgoB,yrspB,ResSS1$RE,ResSS2$RE) + + #---Tail + + textT <- c('"NleaveOut" is number of observatations left out in cross-validation (cv).', + 'RMSE and RE refer to root-mean-square error and reduction-of-error.', + 'Start and end years are listed for split-sample early (A) and late (B) parts.', + paste('Units of RMSEcv: ',HydroUnits2,sep=""), + strTailPart1) + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH,ResTemp) + } + + + + #=== TABLE MSR coefficients + + if (methMSR==3){ + # table not applicable for analog method + } else { + #--- Title + if (PCApredictors){ + TableTitle <- "Table8-CoefficientsMSR" + } else { + TableTitle <- "Table6-CoefficientsMSR" + } + + TitleAdd <- 'Coefficients of MSR regression model' + textH<- c(TableTitle,TitleAdd) + + # --- Body + + textB <- names(ResMLR1a$Coefficients) # vector of strings with names of predictors + # if only one predictors names(ResMLR1a$Coefficients) from lm does not list the name + # of the predictor; first entry is "(Intercept)" and second is "" + if (npred==1){ + textB[2] <- namesU3[1] + } + TfmtB <- '%-12s\t' # format for name of variable; size for longest + DfmtsB <- rep('%-12.8g\n',npred+1) + dataB <- ResMLR1a$Coefficients + + #dataB <- c(M$coefficients[1],M$coefficients[2]) + + #---Tail + textT <- c(strTailPart1) + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir=outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH,ResTemp) + } + + + + #=== TABLE PCA loadings + + if (PCApredictors | methMSR==3){ + + #--- Title + TableTitle <- "Table3-PCA1" + + TableSubTitle <- "Loadings of principal components of single-site reconstructions" + + #--- Heading + c1=vector() + for (n in 1:nPC){ + c1[n] <- paste('PC',as.character(n),sep='') + } + c1 <- c('N','Site#','SiteID',c1) + textH<- list(Title=TableTitle,SubTitle=TableSubTitle,Heading=c1) + + # longest id & fmt to accommodate + nbig1 <- 8 + nbig <- max(c(nchar(nmsU),nbig1)) + fmtID <- paste('%',as.character(nbig),'s\t',sep='') + rm(c1,nbig,nbig1) + + # --- Body + nwide1=12; + nwide2 =5; + nwide3=3; + + fmtPCa <- paste('%',as.character(nwide1),'s\t',sep='') # for headers of PC cols, except last + fmtPCb <- paste('%',as.character(nwide1),'s\n\n',sep='') # ... last + fmtPC1 <- paste('%',as.character(nwide1),'.5g\t',sep='') # for loadings, except last + fmtPC2 <- paste('%',as.character(nwide1),'.5g\n',sep='') # for loadings, last + fmtPct1 <- paste('%',as.character(nwide1),'.3g\t',sep='') # for loadings, except last + fmtPct2 <- paste('%',as.character(nwide1),'.3g\n',sep='') # for loadings, last + + textB <- list(SiteID=rownames(LoadPC),Lower=c('EV','%','Cum%')) # text for body + TfmtB1 <- c('%4s\t','%5s\t',fmtID) # for first 3 cols + #TfmtB2 <- c(rep('%8s\t',nPC-1),'%8s\n\n') # for the rest -- vectors of loadngs + TfmtB2 <- c(rep(fmtPCa,nPC-1),fmtPCb) # for the rest -- vectors of loadngs + TfmtB <- list(Left=TfmtB1,Right=TfmtB2) + DfmtB1 <- c('%4d\t','%5d\t',fmtID) + #DfmtB2 <- c(rep('%8.5g\t',nPC-1),'%8.5g\n') # for the rest -- vectors of loadngs + DfmtB2 <- c(rep(fmtPC1,nPC-1),fmtPC2) # for the rest -- vectors of loadngs + #DfmtB3 <- c(rep('%8.3g\t',nPC-1),'%8.3g\n') # for pctg amd cum pctg + DfmtB3 <- c(rep(fmtPct1,nPC-1),fmtPct2) # for pctg amd cum pctg + + + DfmtB <- list(Left=DfmtB1,Right=DfmtB2,Pctg=DfmtB3) + dataB <- list(ResPCA=ResPCA,jScreened=jScreened,SiteID=rownames(LoadPC)) + + #---Tail + textT <- paste('Loadings are graphically shown by heat map in Figure 06\n', + strTailPart1,sep='') + + # Line to go above and below table (cosmetic only). No need to change this, but you + # can if you want the width of line to perfectly match width of table as viewed in + # some text editor. Would first need to view tabel in the text editor, draw the + # track to desired width, and replace the line in the following statement. + BunnyTrack <- strrep('=',(nPC+3)*(nwide1+4)) # 4 for the tabs; 3 for the cols before loading + + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtB=DfmtB, + textT=textT,BunnyTrack=BunnyTrack,outDir=outputDir) + + #---Function call for table + + ResTemp <- TablePCA1(D1) + rm(D1,textT,dataB,DfmtB,TfmtB,textB,TableTitle,textH,ResTemp,BunnyTrack) + + + + #=== TABLE PCA CORRELATION WITH HYDRO + # + # Recall: rv1U1, r1U1, r1V1 are: vector of correlations of hydro with PCs, + # vector of lag-1 autocorrelations of U1, and scalar of lag-1 autocorrelation + # of v1. Refer bar plots in Figure 7 + # + # This table will, for each PC, list the following + # 1) PC#, 2) r with y, 3) r(1) of PC, 4) r(1) of y, threshold1, threshold2 + # Threshold1 is alpha=alphaR (e.g., 0.05) two-tailed, significance threshold, neglecting autocorrelation + # Threshold2 is similar threshold, but using an adjustment to effective sample size: + # Nprime = N(1-r1r2)/(1+r1r2), where N is samples size, Nprime is effective + # sample size, r1, r2 are lag-1 autocorrelations of the pair of variables. If + # either r1 or r2 are non-positve, no adjustment is made (Nprime=N) + #--- Title to Headings + + # Compute autocorrelation-adjusted critical levels for correlations of v1 with U1 + ResEff <- EffectSS(U1,v1) # if matrix and vector, matrix must be the first arg + Nprime <- ResEff$Nprime # vector of effective sample sizes for correlaitons + rCI1 = ThreshSiggy/sqrt(Nprime-2) # adjusted Siggy (e.g. 95%) CI + rm(ResEff,Nprime) + textH <- c('Table4-PCA2', + paste('Correlation of PC scores with ',HydroName,' (',as.character(yrgo1), + '-',as.character(yrsp1),')',sep=''), + 'PC#','Corr','Thresh1','Thresh2','r(1)') + # Formats + fmt1<-c('%4s\t','%6s\t','%7s\t','%7s\t','%7s\n') + fmt2<-c('%4s\t','%6.2f\t','%7.2f\t','%7.2f\t','%7.2f\n') + fmtHB <- list(Head=fmt1,Body=fmt2) + + # Body and tail + dataB <- list(PC=colnames(U),r=rv1U1,Thresh1=rep(rCI,nPC),Thresh2=rCI1, + r1PC=r1U1) + textT <- paste('Listed are the correlations (Corr) of ',HydroName,' with PC scores,', + paste('\nthresholds for',Siggy,'significance of correlation neglecting (Thresh1)'), + '\nand accounting for (Thresh2) lag-1 autcorrelation in the two series,', + '\nand the lag-1 autocorrelations (r(1)) of the PCs. The two thresholds', + '\ndiffer only if both series have positive autocorrelation. For ',HydroName,',', + '\nlag-1 autocorrelation is r(1)=',sprintf('%5.2f',r1v1),'. A correlation of ',HydroName, + '\nwith a PC is judged "significant" only if the absolute value of', + '\ncorrelation is greater than the threshold.', + '\n\nSee Wilks (2019) for autocorrelation adjustment.',sep='', + '\n',PdfDescribe) + + #--- Function call to write table + BunnyTrack <- '=============================================================' + D = list(outputDir=outputDir,textH=textH,dataB=dataB,fmtHB=fmtHB,textT=textT, + BunnyTrack=BunnyTrack) + ResTemp <- TableWrite1(D) + } + + + + #=== TIME SERIES DATA: FULL-LENGTH SCREENED SSRS OR THEIR PCS + # + # Recall that ResPCA$Scores and ResPCA$yrScores are the data needed if PCApredictors + # Recall than for noPCA mode, long-terms screened SSRs are in U, yrU, and ids in nmsU2 + + # Title and data + if (PCApredictors | methMSR==3){ + TableTitle <- "PCscoresTimeSeries" + dataB <- cbind(ResPCA$yrScores,ResPCA$Scores) # Data + fmtsB <- c('%6g\t',rep('%8.5g\t',(nPC-1)),'%8.5g\n') + # Headings + textH <- c('Year',colnames(LoadPC)) # text + germFmt <- '%8s\t' + c1 <- rep(germFmt,(nPC-1)); c1 <-c (c1,'%8s\n') + fmtsH <- c('%6s\t',c1) # format for text of headings + # Tail + if (methMSR==3){ + textT <- paste('Scores of principal components of single-site reconstructions (SSRs).', + '\nNot all of these these PCs may have been used in selecting analog', + '\nyears (see table note for Table 5).',sep='') + } else { + textT <- paste('Scores of principal components of single-site reconstructions (SSRs).', + '\nNot all of these these PCs may have been selected as predictors for the ', + '\nMSR model (see Table 8)',sep='') + } + } else { + TableTitle <- "ScreenedSSRtimeSeries" + dataB <- cbind(yrU,U) # Data + fmtsB <- c('%6g\t',rep('%8.5g\t',(dim(U)[2]-1)),'%8.5g\n') + textH <- c('Year',namesX) # text + germFmt <- '%8s\t' + c1 <- rep(germFmt,(dim(U)[2]-1)); c1 <-c (c1,'%8s\n') + fmtsH <- c('%6s\t',c1) # format for text of headings + # Tail + textT <- paste('Screened single-site reconstructions (SSRs).', + '\nNot all of these these SSRs may have been selected as predictors for the ', + '\nMSR model (see Table 6)',sep='') + } + D1 <- list(outDir=outputDir,filename=TableTitle,textH=textH,dataB=dataB, + textT=textT,fmtsH=fmtsH,fmtsB=fmtsB) + ResTemp <- TabSepTsm3(D1) + + + + #=== TIME SERIES DATA" REGRESSION MODEL INPUT (DOES NOT APPLY TO ANALOG MODEL) + if (methMSR != 3){ + + # ResMLR1a$Model$model -- model inputs, y first, then predictors in order of how coefficients listed + # yrv1 -- years (a vector) + + #--- Title + TableTitle <- "RegressionInputTimeSeries" + textTitle<- c(TableTitle) + + #--- Head + textH <- c('Year', + paste(HydroLabel,HydroUnits), + namesU3) + nmaxH <- max(nchar(textH)) # length of longest header string + if (nmaxH<12){ + nmaxH <-12 + } + nH <- length(textH) # number of headers + fmtH1 <- paste('%-',as.character(nmaxH),'s\t',sep='') + fmtH2 <- paste('%-',as.character(nmaxH),'s\n',sep='') + fmtsH <- rep(fmtH1,(nH-1)) + fmtsH <- c(fmtsH,fmtH2) + + # --- Body + fmtsB <- c('%-12.0f\t','%-12.8g\t',rep('%-12.8g\t',(npred-1)),'%-12.8g\n') + dataB <- cbind(as.matrix(yrv1),ResMLR1a$Model$model) + + #---Tail + textT <- c("In the MSR model, second column is regressed on remaining columns.", + strTailPart1) + D1 <- list(filename=TableTitle,textH=textH,fmtsH=fmtsH,dataB=dataB, + fmtsB=fmtsB,textT=textT,outDir=outputDir) + + #---Function call for write + ResTemp <- TabSepTsm2(D1) + rm(D1,textTitle,TableTitle,textH,fmtH1,fmtH2,fmtsH,dataB,fmtsB,textT,ResTemp) + } + + + + #=== TIME SERIES DATA: AnalogYearsTimeSeries (applies only to analog method) + + if (methMSR==3){ + W <- Analog$ReconNN12 # year, reon y, analog year, indicator if nearest neighbor or second-nearest + + #--- Title + TableTitle <- "AnalogYearsTimeSeries" + textTitle<- c(TableTitle) + + #--- Head + textH <- c('Year', + paste(HydroLabel,HydroUnits), + 'Analog Year','Neighbor') + nmaxH <- max(nchar(textH)) # length of longest header string + if (nmaxH<12){ + nmaxH <-12 + } + nH <- length(textH) # number of headers + fmtH1 <- paste('%-',as.character(nmaxH),'s\t',sep='') + fmtH2 <- paste('%-',as.character(nmaxH),'s\n',sep='') + fmtsH <- rep(fmtH1,(nH-1)) + fmtsH <- c(fmtsH,fmtH2) + + # --- Body + fmtsB <- c('%-12.0f\t','%-12.8g\t','%-12.5g\t','%-12.0g\n') + dataB <- W + + #---Tail + textT <- c(paste(' Analog year (col 3) observed ',HydroName,' supplies reconstruction for year in col 1.',sep=''), + 'Col 4 indicates if analog year is nearest (1) or second-nearest (2) neighbor to year of reconstruction', + strTailPart1) + D1 <- list(filename=TableTitle,textH=textH,fmtsH=fmtsH,dataB=dataB, + fmtsB=fmtsB,textT=textT,outDir=outputDir) + + #---Function call for write + ResTemp <- TabSepTsm2(D1) + rm(D1,textTitle,TableTitle,textH,fmtH1,fmtH2,fmtsH,dataB,fmtsB,textT,ResTemp) + } + + + + #=== TIME SERIES DATA: Reconstruction with 50% confidence interval + # + # Status. + # yh: 4 column tsm with year, recon, lower50%, upper 50% (matrix) + # v, yrv: observed predictand and years (vectors) + # v might have more recent data than yh because SSRs by lagged regression cannot extend + # beyond m years before the end of the tree-ring data, where m is maximum lag allowed + # in reconstruction model. + # In formats, make sure that field lengths for header and data match and that the length of + # non-year columns is at least as long as the longest header element + fmtsH <- c('%6s\t','%10s\t','%10s\t','%10s\t','%10s\n') # for header lin + fmtsD <- c('%6g\t','%10g\t','%10g\t','%10g\t','%10g\n') # for data matrix + + D1 <- list(header=c("Year",paste("Obs",HydroLabel,HydroUnits), + "Reconstructed","Lower 50% CI","Upper 50% CI"), + observed=cbind(yrv,v), recon=yh,outDir=outputDir, + fmtsH=fmtsH, fmtsD=fmtsD, + filename="ReconstructionWithConfidenceIntervalTimeSeries") + ResTemp <- TabSepTsm1(D1) + + + #=== ORGANIZE DATA FOR RETURN TO CALLING FUNCTION + + if (methMSR==3){ + ResCV <- NA + CalData <- list('Year'=yrv1,'y'=v1,'yhat'=Fits,'PCscores' <- U2, 'Residuals'=Analog$Resids) + CalMtx <- cbind(Analog$ReconNN12) # year, recon, analog year, whether analog year + OutputCal <- list('flag'=flagBail,'Msg'=flagMsg) + } else { + + # calib period: year, obs, rec, CVpredictions, e_cal, e_cv + + ResCV <- ResMLR1a$CrossValidStorage # Renaming list for convenience so that can + # use code copied from RecSLR1 + + CalData <- list('Year'=yrv1,'y'=v1,'yhat'=Fits,'yhatCV'=ResCV$CVpredictions, + 'Residuals'=ResMLR1a$residuals,'ResidualsCV'=ResCV$CVresiduals, + 'PredictorMtx'=Xr) + CalMtx <- cbind(yrv1,v1,Fits,ResCV$CVpredictions,ResMLR1a$residuals,ResCV$CVresiduals) + } + OutputRec <- list('yearGoRec'=yrgo3,'yearSpRec'=yrsp3,'xStdNorm75'=xStdNorm75, + 'deltaRec50'=deltaRec50,'yhat'=yh,'CalibrationData'=CalData,'CalibrationMtx'=CalMtx) + + + #=== OUTPUT BACK TO CALLING FUNCTIONS + + Output <- c(OutputCal,OutputVal,OutputRec) + + return(Output) +} \ No newline at end of file diff --git a/RecPCR1.R b/RecPCR1.R new file mode 100755 index 0000000..420f233 --- /dev/null +++ b/RecPCR1.R @@ -0,0 +1,793 @@ +RecPCR1 <- function(D) { + # Multi-site reconstruction (MSR) by regression on PCs of single-site reconstructions (SSRs) + # D. Meko + # Last revised 2022-08-28 + # + # Called from a script or function (e.g., ReconAnalog1) that has generated the SSRs. + # Consider the predictand, y, and predictor matrix, X. Here, y is regressed on the mean of the + # SSRs in X. The method therefore is simple linear regression. + # + # D is list with members: + # Text (1x4)s: symbol for y label; units of y, in parens; longer name of y; name of y season; Example: + # "RO","(mm)","Runoff", "12-month season ending in month 9" + # U, yrU: matrix of screened SSRs (matrix); matrix of years (1-col matrix) + # nmsU: names of screened SSRs (vector) + # v, yrv: numeric and integer; predictand and years + # yrsC (1x2)d first and last year of desired calibraiton period; if NaN, default to first or last + # available year of overlap of u and v + # nNeg, nPos: integer (both positive) of max negative and possitive lag allowed by calling function in + # SSR modeling. This affects m in leave-m-out cross-validation + # NcMin: minimum acceptable number of years for calibration of MSR model + # PCoption: option for building pool of potential predictors from scores of PCs of SSRs + # 1: specify k most important PCs, for example from viewing scree plot + # 2: the m + # + # Notation below uses "<>" to indicate "default" values of input specifications. For example, + # means the default for variable f is 0.10. Or, with options 1 and 2, <2> indicates that + # the default option is "2." + + library(car) + library(nortest) + source(paste(code_dir,"CrossValid2.R",sep="")) # leave-m-out cross-validation + source(paste(code_dir,"ssValid.R",sep="")) # split-sample validation + source(paste(code_dir,"mannken1.R",sep="")) # time plot and trend test of reg. resids + source(paste(code_dir,"stemACF.R",sep="")) # stem plot of acf, with CI & annotaton + source(paste(code_dir,"xyCI.R",sep="")) # compute polygon (for shaded CI) from lower and upper CI + source(paste(code_dir,"Table1Column.R",sep="")) # write a table file with just 1 data column + source(paste(code_dir,"TabSepTsm1.R",sep="")) # write a tab-sep file with obs, recon, 50% CI + source(paste(code_dir,"TabSepTsm2.R",sep="")) # write a tab-sep file with model input data, 50% CI + + flagBail<-0 # flag for bailing out of function + flagMsg<-'No problems' + minLength1 <-130 # if length of series > minLength1 in reconstruction time series plot, line + # without plot characters is plotted; otherwise line with symbols + + # 1 specified calibration period too short or inconsistent with data coverage + # + #======================= UNLOAD LIST, AND RENAME SOME VARIABLES + + U <-D$U ; yrU<-D$yrU # full tsm of screened pf SSRs + v <-D$v ; yrv<-D$yrv # full length predictand + yrgo1<-D$yrsC[1]; yrsp1<-D$yrsC[2] # desired start and end year of calib period of MSR model + nNeg<-D$nNeg; nPos<-D$nPos # max neg and pos lags allowed in SSR modeling + N1 <- D$NcMin # mimimum acceptable number of years for calibration of MSR model + PCoption <- D$PCoption # how pool of potential predictors to be filled: + # 1 Use will specify to use most important K PCs after viewing scree plot + # <2> The m + NextFigNumber <-D$NextFigNumber # start naming figures as Figure0?.png, where ? is NextFigNumber + outputDir <-D$outputDir # outut to be written to this system folder + # Note that outputDir is also defined in the global environment. So, I think that I would + # not actually need to pass outputDir as argument to functions + HydroName <- D$Text[3] # name of hydrologic variable (e.g., "Runoff") + HydroLabel <- D$Text[1] # label of hydro variable, for plots (e.g., "RO) + HydroUnits <- D$Text[2] # units of hydro varialbe with parens, (e.g., "(mm + HydroUnits2 <- substr(HydroUnits,2,(nchar(HydroUnits)-1)) # units w/o pare s + HydroSeason <- D$Text[4] # season of hydro variable (e.g., ""12-month season ending in month 9" ) + RecMethod<- paste('Method: stepwise regression of observed',HydroLabel,'on PC scores of SSRs') + rm(D) + # all of the above are numeric or integer, except that yru is 1-col matrix + + + #============= GET CALIBRATION DATA AND CHECK THAT CALIBRATION PERIOD LONG ENOUGH + + # Compute longest possible calibration period given the overlap of U and v + yrgo2 <- max(yrU[1],yrv[1]) # earliest overlap year of U and v + yrsp2 <- min(yrU[dim(U)[1]],yrv[length(v)]) # earliest overlap year of U and v + + # If specified calibration start or end is NA, replace with earliest possible start, + # latest possible end. + if (is.na(yrgo1)){ + yrgo1<-yrgo2 # start calibration as early as possible if yrgo1 is NA + } + if (is.na(yrsp1)){ + yrsp1<-yrsp2 # end calibration as late as possible if yrgo1 is NA + } + + #---- Bail with error if calibration period too short or if specified calibration period not + # possible with time coverage of U and v + L <- (yrgo1yrsp2) || ((yrsp1-yrgo1+1)=yrgo1 & yru<=yrsp1 + u1 <- u[L]; yru1<- yru[L] + + L <- yrv>=yrgo1 & yrv<=yrsp1 + v1 <- v[L]; yrv1<- yrv[L] + + M <- lm(v1~u1) # model object + M1<-summary(M) + ncalib <- length(v1) + + #========================= STORE CALIBRATION STATISTICS + + # Significance of overall F + # M1$fstatistic has F, dfnum, dfdenom in 1-3 + pF <-pf(M1$fstatistic[1],M1$fstatistic[2],M1$fstatistic[3],lower.tail=FALSE) + + OutputCal<-list('flag'=flagBail,'Msg'=flagMsg,'lmModel'=M,'yearGoCal'=yrgo1,'yearSpCal'=yrsp1, + 'coefficients'=M$coefficients,'Rsquared'=M1$r.squared,'F'=M1$fstatistic[1],'pF'=pF, + 'RsquaredAdj'=M1$adj.r.squared,'RMSEc'=M1$sigma) + + #====================== FIGURE (local 1): 1x2 CALIBRATION PERIOD TIME PLOTS AND STATISTICS + # + # Figure files are numbered within this function with first figure as figure01.png. where + # In general, figure files are named Figure?? is a number built from NextFigNumber+jFigAdd. jFigAdd + # will start at 0 but increment for later figures + + #--- Build some strings for use in plots + strCalPd <- paste(' Calibration period: ',sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1), + ' (N=', sprintf('%d',length(yrv1)),' yr)',sep='') + + #--- BuildTit1 figure png filename + jFigAdd <- 0 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } + + # Build figure + png(filename=fileOut, width = 960, height = 480) + split.screen(c(2,1)) # Makes Screen 1 and 2 + split.screen(c(1,2), screen=1) # Makes Screen 3 and 4 + + # time plots, obs and rec + screen(2) + zx <- c(yrgo1,yrsp1) + zy <- c(mean(v1),mean(v1)) + par(mar=c(4,4,3,1)) + plot(yrv1,v1,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1), + ylab=paste(HydroLabel,HydroUnits),xlab="Year", + main=paste('Calibration Period Observed and Reconstructed',HydroName)) + lines(yrv1,M$fitted.values,type="b",pch=2,col="red") + lines(zx,zy) + h<-par("usr"); yoffset<- (h[4]-h[3])/100; ytop <- h[4]-yoffset + legend(yrgo1+1,ytop,legend=c("Obs", "Recon"), + col=c("blue", "red"), lty=1, cex=1.2) + + screen(3) + par(mar=c(4,4,2,8)) + r<-cor(M$fitted.values,v1) + strTit <- paste('Recon vs Obs ',HydroName,', r=',as.character(round(r,digits=2))) + plot(v1,M$fitted.values,ylab=paste('Recon',HydroLabel,HydroUnits), + xlab=paste('Obs',HydroLabel,HydroUnits),main=strTit) + abline(lm(M$fitted.values~v1),col="red") + + + screen(4) + par(mar=c(0,0,0,0)) + strText <-paste(RecMethod,'\n',strCalPd, + '\n R-squared =',sprintf('%.2g',M1$r.squared), + '\n F=',sprintf('%.5g',M1$fstatistic[1]),'(p=',sprintf('%.4g',pF),')', + '\n RMSE=',sprintf('%g',M1$sigma),HydroUnits2,' (equivalent to std error of the estimate)') + text(x=0.05,y=0.95,'Calibration Statistics',adj=c(0,1),cex=1.5,font=2) + text(x=0.05,y=0.8,strText,adj=c(0,1),cex=1.2) + + dev.off() + + #====================== FIGURE (local 2): 2x2 DISTRIBUTIONS AND ACFS + # + # CW from LL: histogram of yhat; hist of obs y; acf of obs y, acf of yhat + #--- Uniform xlims for histograms + xlo = min(c(min(v1),min(M$fitted.values))) + xhi = max(c(max(v1),max(M$fitted.values))) + xinc <- 0.05*(xhi-xlo) + xlims <- c(xlo-xinc,xhi+xinc) + rm(xlo,xhi,xinc) + xlims <-c((c(min(v1),min(M$fitted.values))), (c(max(v1),max(M$fitted.values)))) + + #--- Build figure png filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } + # Build figure + png(filename=fileOut, width = 960, height = 480) + # Create the layout + nf <- layout( matrix(c(1,2,3,4), ncol=2) ) + + nbin <- floor(5*log10(length(v1))) # Panofsky rule of thumb for number of bins + brks1 = seq(min(v1)*.99999,max(v1)*1.00001,length.out=(nbin+1)) + brks2 = seq(min(M$fitted.values)*.99999,max(M$fitted.values)*1.00001,length.out=(nbin+1)) + xlab1 <- paste(HydroLabel,HydroUnits) + MaxLag <- floor(length(v1)/4) + + par(mar=c(5,6,2,2),cex.axis=1.5, cex.lab=1.5, cex.main=1.5) + Tit1 <- paste('Histogram, Observed',HydroLabel,'(N=',sprintf('%d',length(v1)),'yr)') + hist(v1,main=Tit1,breaks=brks1,xlim=c(150,450),xlab=xlab1) + + par(mar=c(5,6,2,2)) + Tit1 <- paste('Histogram, Reconstructed',HydroLabel,'(N=',as.character(length(v1)),'yr)') + hist(M$fitted.values,main=Tit1,breaks=brks2,xlim=c(150,450),xlab=xlab1) + + par(mar=c(5,5,4,2)) + Tit1 <- paste('ACF, Observed',HydroLabel,',with 95% CI') + acf(v1,lag.max=MaxLag,type='correlation',main=Tit1) + + par(mar=c(5,5,4,2)) + Tit1 <- paste('ACF, Reconstructed',HydroLabel,', with 95% CI') + acf(M$fitted.values,lag.max=MaxLag,type='correlation',main=Tit1) + + dev.off() + + #========================= ANALYSIS OF RESIDUALS (local 3,4,5) + # + # Will need the regression residuasl. First figure (1x2) will be histogram and + # scatter of residuals on predicted values. Second figure (1x1) will be time plot of + # the residuals with a fitted (non-parametric fit) trend line and annotated result + # of Mann-Kendall trend test. The significance will be adjusted as needed for autocorrelation + # of the residuals over and above that in a linear trend. The third figure (1x1) will be + # the acf of residuals, with annotated DW test results + + + #--- HISTOGRAM AND SCATTER OF RESIDS ON PREDICTED (1X) + # + # 1st of 3 analysis of residuals plots + + # Lilliefors test of normality of residuals + hLillie <- lillie.test(M$residuals); + Tit1 <- paste('Residuals, E, of regression of',HydroName,'on tree rings', + '\n (p=',sprintf('%.2g',hLillie$p.value),' for H0 that E normal, from Lilliefors Test)') + + # Breusch-Pagan test for heterogeneity of regresson residuals + BP <- ncvTest(M) + Tit2 <- paste('Scatter of Residuals on Fitted Values', + '\n (p=',sprintf('%.2g',BP$p),' for H0 that E homoscedastic)', + '\n(from Breusch-Pagan Test)') + + # Buld filename for plot + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) + layout(layout.matrix,heights=2,widths=c(1,1)) + + # Left plot + + par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + hist(M$residuals,xlab=paste('Residual',HydroUnits),ylab='Frequency',main=Tit1) + + # # right plot + par(mar = c(5.1, 4.1, 6.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + plot(M$fitted.values,M$residuals,xlab=paste('Fitted Values',HydroUnits), + ylab=paste('Residual',HydroUnits), + main=Tit2) + abline(h=0,lty=2,col='#808080') # dash gray + dev.off() + + + #--- TIME PLOT OF REGRESSION RESIDUALS, WITH MANN-KENDAL TREND TEST (1X1) + + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber +jFigAdd + + # Prepare input for mannken1 + X <- cbind(yrv1,M$residuals) # matrix with year and regression residuals + + kopt<- c(2,1) # want plot; want adjustment of significance of Mann-Kendall statistic + # for autocorrelation if warranted + kplot <-2 # for TRISH, the time plot of residuals, with annotated MK test results + # and non-parametric-fit straight line fit to trend + ylabTemp1 <- paste('Residual',HydroUnits) + ylabTemp2 <- paste('Detrended Residual',HydroUnits) + textPlot <- c('Regression Residuals with Nonparametric-Fit Trend Line,','Year',ylabTemp1, + ylabTemp2) + Din <- list(X=X,kopt=kopt,kplot=kplot,NextFigNumber=FigNumber,textPlot=textPlot,outputDir=outputDir) + + # mannken1 to get statistics and plot + ResMK <- mannken1(Din) + rm(Din) + + + #--- ACF OF REGRESSION RESIDUALS, INCLUDING 95% Ci + + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber +jFigAdd + + # acf and its 95% CI + lagsPlot <- floor(min(ncalib/4,20)) + acfMy <- acf(M$residuals, lag.max=lagsPlot, type = "correlation", + plot = FALSE) + k <- acfMy$lag # lags + w <- acfMy$acf # acf + + # DW statistic of the regression residuals + DW <- durbinWatsonTest(M) + strDW <- paste('p=',sprintf('%g',DW$p), + ': Durbin-Watson test (2-sided) of H0 that population lag-1 autocorrelation is zero', + sep='') + + # Text for plot + Tit1 <- paste('ACF of Residuals with 95% CI (N=',sprintf('%g',ncalib),' yr)') + textPlot <- c(Tit1,'Lag(yr)','r',strDW) + + # Store inputs required by stemACF in a list (see opening comments there) + Din <- list(x=k,y=w,nsize=ncalib,kAlpha=1,FigNumber=FigNumber, + outputDir=outputDir,linecol1='#0022CC',linecol2='#696969', + linecol3='#E60000',textPlot=textPlot) + ResNull <- stemACF(Din) + + + #========================= VALIDATE AND STORE STATISTICS + + ResCV <- CrossValid2(u1, v1, nNeg,nPos) # cross-validation + + # Split-sample validation + + iAstop <- ceiling(length(v1)/2) # end row index in v1 of first half of data, assumed longer than + # longer of the two halves if length of v1 odd + iBgo <- iAstop+1 # start row of second half + iA <- 1:iAstop # row indices of first half of full calib period + iB <- iBgo:length(v1) # ... of second half + + #--- Calibrate on early, validate on late, then reverse + ical<-iA; ival<-iB + i1 <- 1; # col 1 of u1 is predictor; moot because here u1 is vector + ResSS1=ssValid(v1,u1,ical,ival,i1); + REa1<-ResSS1$RE # RE for calib on early, valid on late + ical<-iB; ival<-iA + ResSS2=ssValid(v1,u1,ical,ival,i1); + REb1<-ResSS1$RE # RE for calib on late, valid on early + + OutputVal<-list('mLeaveOutCV'=ResCV$LeftOut,'REcv'=ResCV$REcv,'RMSEcv'=ResCV$RMSEcv, + 'REcalEarlyValLate'=REa1,'REcalLateValEarly'=REb1) + + #====================== FIGURE (local 6): time plots of obs y, recon, y, cv predictions of y; with observed mean line + # + #--- Build figure png filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } + + # Recall + # v1,yrv1 is observed; M$fittedvalues is recon; ResCV$CVpredictions is cv-prdicted + # zx,zy are 1x2s that allow for line at observd mean; yrgo1,yrsp1 are 1st & last of calib years + + # Build figure + png(filename=fileOut, width = 960, height = 480) + par(mar=c(4,4,5,1),cex.main=1.4) + plot(yrv1,v1,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1), + ylab=paste(HydroLabel,HydroUnits),xlab="Year", + main=paste('Time Plots of Observed, Reconstructed, and Cross-Validation-Predicted',HydroName,'(',sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1),')', + '\n(black line at observed mean)')) + lines(yrv1,M$fitted.values,type="b",pch=2,col="red") + lines(yrv1,ResCV$CVpredictions,type="b",pch=17,col="#990099") + lines(zx,zy) + h<-par("usr"); yoffset<- (h[4]-h[3])/100; ytop <- h[4]-yoffset + legend(yrgo1+1,ytop,legend=c("Obs", "Recon","CVpred"), + col=c("blue", "red","#990099"),pch=c(1,2,17),lty=1, cex=1.2) + dev.off() + + + #====================== FIGURE (local 7): 1x2 VALIDATION PLOTS AND STATISTICS + + # Lilliefors test of normality of CV residuals + hLillie <- lillie.test(ResCV$CVresiduals); + Tit1 <- paste('Cross-Validation Residuals', + '\n(p=',sprintf('%.2g',hLillie$p.value),', H0: normally distributed', + ' [Lilliefors Test])',sep='') + + # Text strings for cross-validation + strAnPd <- strCalPd # built for earlier plot: gives calib period and length + + # Text strings for split-sample validation + yrtemp <- yrv1[iA] # year vector, early split + yrgoA <- yrtemp[1]; yrspA <- yrtemp[length(yrtemp)] + yrtemp <- yrv1[iB] # year vector, late split + yrgoB <- yrtemp[1]; yrspB <- yrtemp[length(yrtemp)] + rm(yrtemp) + strSplitA <- paste(' A: ',sprintf('%d',yrgoA),'-',sprintf('%d',yrspA), + ' (N=', sprintf('%d',length(iA)),' yr)',sep='') + strSplitB <- paste(' B: ',sprintf('%d',yrgoB),'-',sprintf('%d',yrspB), + ' (N=', sprintf('%d',length(iB)),' yr)',sep='') + + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) + layout(layout.matrix,heights=2,widths=c(1,1)) + + # Left plot histogram + + par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + hist(ResCV$CVresiduals,xlab=paste('Residual',HydroUnits),ylab='Frequency',main=Tit1) + + # right plot, stats + + par(mar = c(0,0,0,0)) + xlims <- c(0,1); ylims <- c(0,1) + plot(0,type='n',axes=FALSE,ann=FALSE,xlim=xlims,ylim=ylims) + #plot(1,1,pch=1,xlim=xlims,ylim=ylims) + strText <-paste('\nCross-validation (cv) method: leave-',as.character(ResCV$LeftOut),'out', + '\n',strAnPd, + '\n RMSEcv=',sprintf('%g',ResCV$RMSEcv),HydroUnits2, + '\n REcv=',sprintf('%.2g',ResCV$REcv), + '\n\nSplit-sample validation', + '\n',strSplitA, + '\n',strSplitB, + '\n RE{A}=',sprintf('%.2g',ResSS1$RE),' (calibrated on A, validated on B)', + '\n RE{B}=',sprintf('%.2g',ResSS2$RE),' (calibrated on B, validated on A)') + text(x=0.05,y=0.95,'Validation statistics',adj=c(0,1),cex=1.5,font=2) + text(x=0.05,y=0.8,strText,adj=c(0,1),cex=1.2) + + + dev.off() + + + #========================= RECONSTRUCTION AND 50% CI + + Xr <- as.matrix(u) # matrix, 1 col, of long-term mean of SSRs + L<-complete.cases(Xr) + Xr <- as.matrix(Xr[L,]) ; yrXr <- as.matrix(yru[L,]) + mXr <- dim(Xr)[1] + yrgo3 <- yrXr[1,1]; yrsp3 <- yrXr[mXr,1] # start and end year if recon + + # Add ones column and reconstruct + Xones<-matrix(1,nrow=mXr,ncol=1) + Xr <- cbind(Xones,Xr) + yh <- Xr %*% M$coefficients # reconstruction as 1-col matrix + yh <- cbind(yrXr,yh) + + # Delta y for 50% CI + xStdNorm75 <-qnorm(0.75, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) + deltaRec50 <- xStdNorm75 * ResCV$RMSEcv + yhLo <- yh[,2]-deltaRec50; yhHi <-yh[,2]+deltaRec50 + yh <- cbind(yh,yhLo,yhHi) # matrix with year, recon, lower 50 upper 50 + + + #====================== FIGURE (local 8): 1x1 TSP OF FULL RECON WITN 50% CI + + # time series for plot and CI + y <- yh[,2]; yry <- yh[,1] # for time series + + # Compute shaded polygon x and y + Xtemp <- yh[,-2] # matrix with year as col 1, lower CI as col 2, upper CI as col 2 + ResTemp <- xyCI(Xtemp) + xP <- ResTemp$x; yP <- ResTemp$y + + # Limits for plot + yLo <- min(yh[,2:4]) + yHi <- max(yh[,2:4]) + ynudge <- 0.02 * (yHi-yLo) + ylims = c(yLo-ynudge, yHi+ynudge) + xlims = c(yrXr[1]-1,yrXr[length(yrXr)]+1) + + # Strings for plot + strRecYrs <- paste(sprintf('%d',yrXr[1]),'-',sprintf('%d',yrXr[length(yrXr)]),sep='') + Tit1 <- paste('Reconstructed ',HydroName,', ',strRecYrs, + '\n(50% CI shaded; dashed line at reconstructed mean)',sep='') + ylab1 <- paste(HydroLabel,HydroUnits) + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } + + # Build figure + png(filename=fileOut, width = 960, height = 480) + par(mar=c(5,5,5,1),cex.main=1.4,cex.axis=1.2,cex.lab=1.2) + if (length(y)>minLength1){ + plot(yry,y,type="l",col="blue",xlim=xlims,ylim=ylims, + ylab=ylab1,xlab='Year',main=Tit1) + } else { + plot(yry,y,type="b",pch=1,col="blue",xlim=xlims,ylim=ylims, + ylab=ylab1,xlab='Year',main=Tit1) + } + abline(h=mean(y),lty=2,col='#808080') # dash gray + adjustcolor("red",alpha.f=0.5) + #polygon(yryP,yP,col='#FFEE99') # flavescent + polygon(xP,yP, col=rgb(1.00,0,0,0.1),border=NA) # mustard + dev.off() + + + #====================== FIGURE (local 9): 2x2. + # + # At left, top and bottom are ACFs of recon for calib years and earlier + # At right is single frame with box plots or recon for same + + + #--- Pull recon for calib perod and for earlier + # w1, w2 will the reconsturction for those period + # Already have y, yry as full length recon + L <- yry >= yrgo1; # calib pd + w1 <-y[L]; yrw1<- yry[L] + L <- yry < yrgo1 + w2 <- y[L]; yrw2 <-yry[L] + + #---Make some strings for use in plots + strPd1<- paste(sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1), + ' (N=', sprintf('%d',length(w1)),' yr)',sep='') + strPd2<- paste(sprintf('%d',yrgo3),'-',sprintf('%d',yrgo1-1), + ' (N=', sprintf('%d',length(w2)),' yr)',sep='') + strAnnote1 <- paste('A: ',strPd1) + strAnnote2 <- paste('B: ',strPd2) + + Tit1 <-'ACF of Reconstruction with 95% CI, Calibration Period' + Tit2 <- 'ACF of Reconstruction with 95% CI, Earlier Years' + Tit3 <- paste('Distribution of Reconstructed',HydroLabel) + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2,3,3), nrow = 2,byrow=FALSE) + #layout(layout.matrix,heights=2,widths=c(1,1)) + layout(layout.matrix)#,heights=2,widths=c(1,1)) + par(mar=c(5,5,5,1),cex.main=1.4,cex.axis=1.2,cex.lab=1.2) + + #--- Upper left, acf of recon for calib pd + + MaxLag <- floor(length(w1)/4) + MaxLag <- min(c(MaxLag),20) + + par(mar=c(5,5,4,2)) + acf(w1,lag.max=MaxLag,ylim=c(-1,1),type='correlation',main=Tit1) + text(MaxLag,1,strAnnote1,adj=c(1,1),cex=1.5) + + #---Lower left, acf of recon for years before start of calib pd + + MaxLag <- floor(length(w2)/4) + MaxLag <- min(c(MaxLag),20) + + par(mar=c(5,5,4,2)) + acf(w2,lag.max=MaxLag,ylim=c(-1,1),type='correlation',main=Tit2) + text(MaxLag,1,strAnnote2,adj=c(1,1),cex=1.5) + + #---Right -- side by side box plots of recon for calib period and prior + + par(mar=c(5,8,4,1),cex.lab=1.3) + namesBP<-c('Period A','Period B') + boxplot(w1,w2,notch=FALSE,ylab=xlab1, + main=Tit3,names=namesBP) + dev.off() + + + #=== TABLE Table3-MSR-LR1, summarizing calibration of model + + #--- Header + TableTitle <- "Table3-MSR-LR1-Calibration" + SSRdef <- ' (SSR: "single-site reconstruction")' + textH<- c(TableTitle, + paste("Predictand:",HydroName,"for",HydroSeason), + RecMethod,SSRdef) + + # --- Body + textB <-c("YearGo","YearStop","R2","F","pF","R2adj","RMSEc") + TfmtB <- '%-10s\t' # format for name of variable; size for longest + DfmtsB <- c('%-4d\n','%-4d\n','%-6.2f\n','%-8.3g\n','%-8.3g\n','%-6.2f\n','%-10g\n') + dataB <- c(yrgo1,yrsp1,OutputCal$Rsquared,OutputCal$F,OutputCal$pF,OutputCal$RsquaredAdj, + OutputCal$RMSEc) + + #---Tail + textT <- c(paste('Units of RMSEc: ',HydroUnits2), + "See TrishOutputDescribeLR1.pdf for definitions of variables in column 1") + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,textH,TableTitle) + + + + #=== TABLE Table4-MSR-LR1-AnalysisOfResiduals + + #--- Header + TableTitle <- "Table4-MSR-LR1-AnalysisOfResiduals" + textH<- c(TableTitle) + + # --- Body + textB <-c("YearGo","YearStop","pNormal","DW"," pDW","TrendSlope"," pTrend", + "BP Test ChiSq"," dfBP"," pBP") + TfmtB <- '%-13s\t' # format for name of variable; size for longest + DfmtsB <- c('%-4d\n','%-4d\n','%-8.3g\n','%-5.2g\n','%-8.3g\n','%-8.5g\n','%-8.3g\n', + '%-8.5g\n','%-4d\n','%-8.3g\n') + dataB <- c(yrgo1,yrsp1,hLillie$p.value,DW$dw,DW$p,ResMK$b,ResMK$pvalue, + BP$ChiSquare,BP$Df,BP$p) + + #---Tail + + textT <- c(paste('Units of TrendSlope: ',HydroUnits2,' per year',sep=""), + "See TrishOutputDescribeLR1.pdf for definitions of variables in column 1") + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH) + + + + #=== TABLE Table5-MSR-LR1-Validation + + #--- Header + TableTitle <- "Table5-MSR-LR1-Validation" + textH<- c(TableTitle) + + # --- Body + textB <-c("NleaveOut","RMSEcv","REcv","YearGoA","YearStopA","YearGoB","YearStopB", + "REsplitA","REsplitB") + TfmtB <- '%-9s\t' # format for name of variable; size for longest + DfmtsB <- c('%-3d\n','%-8.5g\n','%-5.2f\n','%-4d\n','%-4d\n', + '%-4d\n','%-4d\n','%-5.2f\n','%-5.2f\n') + dataB <- c(ResCV$LeftOut,ResCV$RMSEcv,ResCV$REcv, + yrgoA,yrspA,yrgoB,yrspB,ResSS1$RE,ResSS2$RE) + + #---Tail + + textT <- c(paste('Units of RMSEcv: ',HydroUnits2,sep=""), + "See TrishOutputDescribeLR1.pdf for definitions of variables in column 1") + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH,ResTemp) + + + #=== TABLE Table6-MSR-LR1-Coefficients + + #--- Title + TableTitle <- "Table6-MSR-LR1-Coefficients" + textH<- c(TableTitle) + + # --- Body + textB <- c("Intercept","meanSSR") # headings of cols + TfmtB <- '%-12s\t' # format for name of variable; size for longest + DfmtsB <- c('%-12.8g\n','%-12.8g\n') + dataB <- c(M$coefficients[1],M$coefficients[2]) + + #---Tail + textT <- c("See TrishOutputDescribeLR1.pdf for definitions of variables in column 1") + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir=outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH,ResTemp) + + + #=== TIME SERIES DATA" RegressionInput + + #--- Title + TableTitle <- "RegressionInputTimeSeries" + textTitle<- c(TableTitle) + + #--- Head + textH <- c('Year', + paste(HydroLabel,HydroUnits),'meanSSD') + nmaxH <- max(nchar(textH)) # length of longest header string + if (nmaxH<12){ + nmaxH <-12 + } + nH <- length(textH) # number of headers + fmtH1 <- paste('%-',as.character(nmaxH),'s\t',sep='') + fmtH2 <- paste('%-',as.character(nmaxH),'s\n',sep='') + fmtsH <- rep(fmtH1,(nH-1)) + fmtsH <- c(fmtsH,fmtH2) + + # --- Body + fmtsB <- c('%-12.0f\t','%-12.8g\t','%-12.8g\n') + dataB <- cbind(as.matrix(yrv1),M$model) + + #---Tail + textT <- c("For the LR1 regression model, second column is regressed on third", + "See TrishOutputDescribeLR1.pdf for definitions of columns") + D1 <- list(filename=TableTitle,textH=textH,fmtsH=fmtsH,dataB=dataB, + fmtsB=fmtsB,textT=textT,outDir=outputDir) + + #---Function call for write + ResTemp <- TabSepTsm2(D1) + rm(D1,textTitle,TableTitle,textH,fmtH1,fmtH2,fmtsH,dataB,fmtsB,textT,ResTemp) + + + #=== TIME SERIES DATA: Reconstruction with 50% confidence interval + + # Status. + # yh: 4 column tsm with year, recon, lower50%, upper 50% (matrix) + # v, yrv: observed predictand and years (vectors) + # v might have more recent data than yh because SSRs by lagged regression cannot extend + # beyond m years before the end of the tree-ring data, where m is maximum lag allowed + # in reconstruction model. + # In formats, make sure that field lengths for header and data match and that the length of + # non-year columns is at least as long as the longest header element + fmtsH <- c('%6s\t','%10s\t','%10s\t','%10s\t','%10s\n') # for header lin + fmtsD <- c('%6g\t','%10g\t','%10g\t','%10g\t','%10g\n') # for data matrix + + D1 <- list(header=c("Year",paste("Obs",HydroLabel,HydroUnits), + "Reconstructed","Lower 50% CI","Upper 50% CI"), + observed=cbind(yrv,v), recon=yh,outDir=outputDir, + fmtsH=fmtsH, fmtsD=fmtsD, + filename="ObservedAndReconstructedTimeSeries") + + ResTemp <- TabSepTsm1(D1) + + + + + + #=== ORGANIZE DATA FOR RETURN TO CALLING FUNCTION + # + # calib period: year, obs, rec, CVpredictions, e_cal, e_cv + + CalData <- list('Year'=yrv1,'y'=v1,'yhat'=M$fitted.values,'yhatCV'=ResCV$CVpredictions, + 'Residuals'=M$residuals,'ResidualsCV'=ResCV$CVresiduals, + 'PredictorMtx'=Xr) + CalMtx <- cbind(yrv1,v1,M$fitted.values,ResCV$CVpredictions,M$residuals,ResCV$CVresiduals) + + OutputRec <- list('yearGoRec'=yrgo3,'yearSpRec'=yrsp3,'xStdNorm75'=xStdNorm75, + 'deltaRec50'=deltaRec50,'yhat'=yh,'CalibrationData'=CalData,'CalibrationMtx'=CalMtx) + + + + + + + + #=== OUTPUT BACK TO CALLING FUNCTIONS + + Output <- c(OutputCal,OutputVal,OutputRec) + + return(Output) +} \ No newline at end of file diff --git a/RecSLR1.R b/RecSLR1.R new file mode 100755 index 0000000..7131d43 --- /dev/null +++ b/RecSLR1.R @@ -0,0 +1,843 @@ +RecSLR1 <- function(D) { + # Multi-site reconstruction (MSR) by simple linear regression on mean of single-site reconstructions (SSRs) + # D. Meko + # Last revised 2023-11-22 + # + # Called from a script or function (e.g., ReconAnalog1) that has generated the SSRs. + # Consider the predictand, y, and predictor matrix, X. Here, y is regressed on the mean of the + # SSRs in X. The method therefore is simple linear regression. + # + # D is list with members: + # PdfDescribe: string referring to a pdf file describing reconstruction method + # This string is used in table notes + # Text (1x4)s: symbol for y label; units of y, in parens; longer name of y; name of y season; Example: + # "RO","(mm)","Runoff", "12-month season ending in month 9" + # u, yru: numeric time series of mean of SSRs; corresponding years (as 1-col matrix) + # v, yrv: numeric and integer; predictand and years + # yrsC (1x2)d first and last year of desired calibraiton period; if NaN, default to first or last + # available year of overlap of u and v + # yrEnd (1x1)d last year of provided time series output of reconstruction and of plot of + # reconstruction with 50% error bar + # nNeg, nPos: integer (both positive) of max negative and possitive lag allowed by calling function in + # SSR modeling. This affects m in leave-m-out cross-validation + # NcMin: minimum acceptable number of years for calibration of MSR model + # NextFigNumber [i] # start naming figures as Figure0?.png, where ? is NextFigNumber + # + # Notation below uses "<>" to indicate "default" values of input specifications. For example, + # means the default for variable f is 0.10. Or, with options 1 and 2, <2> indicates that + # the default option is "2." + # + # revised 2023-05-08: cosmetic. Switched from using split.screen() to layout() for multi-plots. This + # was applied the figure showing a window with calibration statistics. Before change some text was + # was truncate at right because split.screen does not allow subfigure widths to vary. + # revised 2023-05-16. yrEnd newly provided input argument, for truncation of final reconstruction + # revised 2023-06-02. remove error message and automatic bail when user specifies a calibration period impossible + # for the time coverage of tree-ring and hydro data. Now the calibration period is simpley truncated + # to be as long as possible, and program allowed to proceed. + # revised 2023-11-22. To use the input argument yrEnd instead of computing yrEnd internally to mark + # last year of generated and plotted final reconstruction time series + + + library(car) + library(nortest) + source(paste(code_dir,"CrossValid2.R",sep="")) # leave-m-out cross-validation + source(paste(code_dir,"ssValid.R",sep="")) # split-sample validation + source(paste(code_dir,"mannken1.R",sep="")) # time plot and trend test of reg. resids + source(paste(code_dir,"stemACF.R",sep="")) # stem plot of acf, with CI & annotaton + source(paste(code_dir,"xyCI.R",sep="")) # compute polygon (for shaded CI) from lower and upper CI + source(paste(code_dir,"Table1Column.R",sep="")) # write a table file with just 1 data column + source(paste(code_dir,"TabSepTsm1.R",sep="")) # write a tab-sep file with obs, recon, 50% CI + source(paste(code_dir,"TabSepTsm2.R",sep="")) # write a tab-sep file with model input data, 50% CI + + flagBail<-0 # flag for bailing out of function + # 0 = no problems + # 1 = fatal error; message returned and program aborts + # 2 = no abortion, but calibration period had to be modified to suit coverage of climate + # series and SSR matrix; message is returned to calling program + flagMsg<-'No problems' + minLength1 <-130 # if length of series > minLength1 in reconstruction time series plot, line + # without plot characters is plotted; otherwise line with symbols + + # 1 specified calibration period too short or inconsistent with data coverage + # + #======================= UNLOAD LIST, AND RENAME SOME VARIABLES + + PdfDescribe <- D$PdfDescribe # string to be used to reference methods description file + u <-D$u ; yru<-D$yru # full length mean of SSRs + v <-D$v ; yrv<-D$yrv # full length predictand + yrgo1<-D$yrsC[1]; yrsp1<-D$yrsC[2] # desired start and end year of calib period of MSR model + yrEnd = D$yrEnd; # final reconstruction to be truncated at this year + nNeg<-D$nNeg; nPos<-D$nPos # max neg and pos lags allowed in SSR modeling + N1 <- D$NcMin # mimimum acceptable number of years for calibration of MSR model + NextFigNumber <-D$NextFigNumber # start naming figures as Figure0?.png, where ? is NextFigNumber + outputDir <-D$outputDir # outut to be written to this system folder + # Note that outputDir is also defined in the global environment. So, I think that I would + # not actually need to pass outputDir as argument to functions + HydroName <- D$Text[3] # name of hydrologic variable (e.g., "Runoff") + HydroLabel <- D$Text[1] # label of hydro variable, for plots (e.g., "RO) + HydroUnits <- D$Text[2] # units of hydro varialbe with parens, (e.g., "(mm + HydroUnits2 <- substr(HydroUnits,2,(nchar(HydroUnits)-1)) # units w/o pare s + HydroSeason <- D$Text[4] # season of hydro variable (e.g., ""12-month season ending in month 9" ) + RecMethod<- paste('Method: simple linear regression of observed',HydroLabel,'on mean SSR') + rm(D) + # all of the above are numeric or integer, except that yru is 1-col matrix + + + #============= GET CALIBRATION DATA AND CHECK THAT CALIBRATION PERIOD LONG ENOUGH + + # Compute longest possible calibration period given the overlap of u and v + yrgo2 <- max(yru[1],yrv[1]) # earliest overlap year of u and v + yrsp2 <- min(yru[length(u)],yrv[length(v)]) # earliest overlap year of u and v + + # Return error message and fail if overlap of screened SSRs (U) and available hydro series v yrsp2 + if (L2){ + yrsp1 <- yrsp2 + } + L <- L1 || L2 +# Following message commented out. User will have to live with fact we truncated calibration period to +# where compatible with data coverage + # if (L){ + # flagBail<-2 + # flagMsg<-paste('RecMLR1 message: MSR calibration period forced to ',as.character(yrgo1),'-', + # as.character(yrsp1), ' in response to available time covrage of vector of ', + # ' hydro data and matrix of screened SSRs',sep='') + # } + + #========================= PULL CALIBRATION DATA AND REGRESS + + L <- yru>=yrgo1 & yru<=yrsp1 + u1 <- u[L]; yru1<- yru[L] + + L <- yrv>=yrgo1 & yrv<=yrsp1 + v1 <- v[L]; yrv1<- yrv[L] + + M <- lm(v1~u1) # model object + M1<-summary(M) + ncalib <- length(v1) + Fits <- M$fitted.values + + #========================= STORE CALIBRATION STATISTICS + + # Significance of overall F + # M1$fstatistic has F, dfnum, dfdenom in 1-3 + pF <-pf(M1$fstatistic[1],M1$fstatistic[2],M1$fstatistic[3],lower.tail=FALSE) + + OutputCal<-list('flag'=flagBail,'Msg'=flagMsg,'lmModel'=M,'yearGoCal'=yrgo1,'yearSpCal'=yrsp1, + 'coefficients'=M$coefficients,'Rsquared'=M1$r.squared,'F'=M1$fstatistic[1],'pF'=pF, + 'RsquaredAdj'=M1$adj.r.squared,'RMSEc'=M1$sigma) + + #====================== FIGURE (local 1): 1x2 CALIBRATION PERIOD TIME PLOTS AND STATISTICS + # + # Figure files are numbered within this function with first figure as figure01.png. where + # In general, figure files are named Figure?? is a number built from NextFigNumber+jFigAdd. jFigAdd + # will start at 0 but increment for later figures + + #--- Build some strings for use in plots + strCalPd <- paste(' Calibration period: ',sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1), + ' (N=', sprintf('%d',length(yrv1)),' yr)',sep='') + + #--- Build Tit1 figure png filename + + jFigAdd <- 0 # This will be the first plot added from this function + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0',as.character(FigNumber),'-Calibration1','.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure',,as.haracter(FigNumber),'-Calibration1','.png',sep="") + } + + # Build figure + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2,3,3),nrow=2,byrow=TRUE) + layout(layout.matrix,heights=c(2,2),widths=c(1,2)) + + # Scatter + par(mar=c(4,4,2,8)) + r<-cor(M$fitted.values,v1) + strTit <- paste('Recon vs Obs ',HydroName,', r=',as.character(round(r,digits=2))) + plot(v1,M$fitted.values,ylab=paste('Recon',HydroLabel,HydroUnits), + xlab=paste('Obs',HydroLabel,HydroUnits),main=strTit) + abline(lm(M$fitted.values~v1),col="red") + + + # Statistics window + par(mar=c(0,0,0,0)) + plot(1,1,xaxt="n",yaxt="n",bty="n",pch="",ylab="",xlab="", main="", sub="", + xlim=c(0,1),ylim=c(0,1)) + strText <-paste(RecMethod,'\n',strCalPd, + '\n R-squared =',sprintf('%.2g',M1$r.squared), + '\n F=',sprintf('%.5g',M1$fstatistic[1]),'(p=',sprintf('%.4g',pF),')', + '\n RMSE=',sprintf('%g',M1$sigma),HydroUnits2,' (equivalent to std error of the estimate)') + text(x=0.05,y=0.95,'Calibration Statistics',adj=c(0,1),cex=1.5,font=2) + text(x=0.05,y=0.8,strText,adj=c(0,1),cex=1.4) + + + # time plots, obs and rec + ylims <- c(min(v1,Fits),max(v1,Fits)) + ylimsInc <- 0.05 * diff(ylims) + ylims <- c(ylims[1]-ylimsInc,ylims[2]+ylimsInc) + rm (ylimsInc) + + zx <- c(yrgo1,yrsp1) + zy <- c(mean(v1),mean(v1)) + par(mar=c(4,4,3,1)) + plot(yrv1,v1,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1),ylim=ylims, + ylab=paste(HydroLabel,HydroUnits),xlab="Year", + main=paste('Calibration Period Observed (blue) and Reconstructed (red)',HydroName)) + lines(yrv1,M$fitted.values,type="b",pch=2,col="red") + lines(zx,zy) + h<-par("usr"); yoffset<- (h[4]-h[3])/100; ytop <- h[4]-yoffset + #legend(yrgo1+1,ytop,legend=c("Obs", "Recon"), col=c("blue", "red"), lty=1, cex=1.2) + + dev.off() + + + + #====================== FIGURE (local 2): 2x2 DISTRIBUTIONS AND ACFS + # + # CW from LL: histogram of yhat; hist of obs y; acf of obs y, acf of yhat + #--- Uniform xlims for histograms + xlo = min(c(min(v1),min(Fits))) + xhi = max(c(max(v1),max(Fits))) + xinc <- 0.05*(xhi-xlo) + xlims <- c(xlo-xinc,xhi+xinc) + rm(xlo,xhi,xinc) + #xlims <-c((c(min(v1),min(M$fitted.values))), (c(max(v1),max(M$fitted.values)))) + + #--- Build figure png filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Calibration2.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Calibration2.png',sep="") + } + # Build figure + png(filename=fileOut, width = 960, height = 480) + # Create the layout + nf <- layout( matrix(c(1,2,3,4), ncol=2) ) + nbin <- floor(5*log10(length(v1))) # Panofsky rule of thumb for number of bins + # brks1 = seq(min(v1)*.99999,max(v1)*1.00001,length.out=(nbin+1)) + # brks2 = seq(min(M$fitted.values)*.99999,max(M$fitted.values)*1.00001,length.out=(nbin+1)) + xtweak1 <- 0.00001* (max(v1)-min(v1)); + xtweak2 <- 0.00001* (max(Fits)-min(Fits)); + brks1 = seq(min(v1)-xtweak1,max(v1)+xtweak1,length.out=(nbin+1)) + brks2 = seq(min(Fits)-xtweak2,max(Fits)+xtweak2,length.out=(nbin+1)) + xlab1 <- paste(HydroLabel,HydroUnits) + MaxLag <- floor(length(v1)/4) + + par(mar=c(5,6,2,2),cex.axis=1.5, cex.lab=1.5, cex.main=1.5) + Tit1 <- paste('Histogram, Observed',HydroLabel,'(N=',sprintf('%d',length(v1)),'yr)') + hist(v1,main=Tit1,breaks=brks1,xlim=xlims,xlab=xlab1) + + par(mar=c(5,6,2,2)) + Tit1 <- paste('Histogram, Reconstructed',HydroLabel,'(N=',as.character(length(v1)),'yr)') + hist(M$fitted.values,main=Tit1,breaks=brks2,xlim=xlims,xlab=xlab1) + + par(mar=c(5,5,4,2)) + Tit1 <- paste('ACF, Observed',HydroLabel,',with 95% CI') + acf(v1,lag.max=MaxLag,type='correlation',main=Tit1) + + par(mar=c(5,5,4,2)) + Tit1 <- paste('ACF, Reconstructed',HydroLabel,', with 95% CI') + acf(M$fitted.values,lag.max=MaxLag,type='correlation',main=Tit1) + + dev.off() + + #========================= ANALYSIS OF RESIDUALS (local 3,4,5) + # + # Will need the regression residuasl. First figure (1x2) will be histogram and + # scatter of residuals on predicted values. Second figure (1x1) will be time plot of + # the residuals with a fitted (non-parametric fit) trend line and annotated result + # of Mann-Kendall trend test. The significance will be adjusted as needed for autocorrelation + # of the residuals over and above that in a linear trend. The third figure (1x1) will be + # the acf of residuals, with annotated DW test results + + + #--- HISTOGRAM AND SCATTER OF RESIDS ON PREDICTED (1X) + # + # 1st of 3 analysis of residuals plots + + # Lilliefors test of normality of residuals + hLillie <- lillie.test(M$residuals); + Tit1 <- paste('Residuals, E, of regression of',HydroName,'on tree rings', + '\n (p=',sprintf('%.2g',hLillie$p.value),' for H0 that E normal, from Lilliefors Test)') + + # Breusch-Pagan test for heterogeneity of regresson residuals + BP <- ncvTest(M) + Tit2 <- paste('Scatter of Residuals on Fitted Values', + '\n (p=',sprintf('%.2g',BP$p),' for H0 that E homoscedastic)', + '\n(from Breusch-Pagan Test)') + + # Buld filename for plot + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-AnalysisResiduals1.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-AnalysisResiduals1.png',sep="") + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) + layout(layout.matrix,heights=2,widths=c(1,1)) + + # Left plot + + par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + hist(M$residuals,xlab=paste('Residual',HydroUnits),ylab='Frequency',main=Tit1) + + # # right plot + par(mar = c(5.1, 4.1, 6.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + plot(M$fitted.values,M$residuals,xlab=paste('Fitted Values',HydroUnits), + ylab=paste('Residual',HydroUnits), + main=Tit2) + abline(h=0,lty=2,col='#808080') # dash gray + dev.off() + + + #--- TIME PLOT OF REGRESSION RESIDUALS, WITH MANN-KENDAL TREND TEST (1X1) + + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber +jFigAdd + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.-AnalysisResiduals3.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-AnalysisResiduals3.png',sep="") + } + + + # Prepare input for mannken1 + X <- cbind(yrv1,M$residuals) # matrix with year and regression residuals + + kopt<- c(2,1) # want plot; want adjustment of significance of Mann-Kendall statistic + # for autocorrelation if warranted + kplot <-2 # for TRISH, the time plot of residuals, with annotated MK test results + # and non-parametric-fit straight line fit to trend + ylabTemp1 <- paste('Residual',HydroUnits) + ylabTemp2 <- paste('Detrended Residual',HydroUnits) + textPlot <- c('Regression Residuals with Nonparametric-Fit Trend Line,','Year',ylabTemp1, + ylabTemp2) + Din <- list(X=X,kopt=kopt,kplot=kplot,NextFigNumber=FigNumber,textPlot=textPlot,outputDir=outputDir) + + # mannken1 to get statistics and plot + ResMK <- mannken1(Din) + rm(Din) + + + #--- ACF OF REGRESSION RESIDUALS, INCLUDING 95% Ci + + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber +jFigAdd + + # acf and its 95% CI + lagsPlot <- floor(min(ncalib/4,20)) + acfMy <- acf(M$residuals, lag.max=lagsPlot, type = "correlation", + plot = FALSE) + k <- acfMy$lag # lags + w <- acfMy$acf # acf + + # DW statistic of the regression residuals + DW <- durbinWatsonTest(M) + strDW <- paste('p=',sprintf('%g',DW$p), + ': Durbin-Watson test (2-sided) of H0 that population lag-1 autocorrelation is zero', + sep='') + + # Text for plot + Tit1 <- paste('ACF of Residuals with 95% CI (N=',sprintf('%g',ncalib),' yr)') + textPlot <- c(Tit1,'Lag(yr)','r',strDW,'-AnalysisResiduals3') + + # Store inputs required by stemACF in a list (see opening comments there) + Din <- list(x=k,y=w,nsize=ncalib,kAlpha=1,FigNumber=FigNumber, + outputDir=outputDir,linecol1='#0022CC',linecol2='#696969', + linecol3='#E60000',textPlot=textPlot) + ResNull <- stemACF(Din) + + + #========================= VALIDATE AND STORE STATISTICS + + ResCV <- CrossValid2(u1, v1, nNeg,nPos) # cross-validation + + # Split-sample validation + + iAstop <- ceiling(length(v1)/2) # end row index in v1 of first half of data, assumed longer than + # longer of the two halves if length of v1 odd + iBgo <- iAstop+1 # start row of second half + iA <- 1:iAstop # row indices of first half of full calib period + iB <- iBgo:length(v1) # ... of second half + + #--- Calibrate on early, validate on late, then reverse + ical<-iA; ival<-iB + i1 <- 1; # col 1 of u1 is predictor; moot because here u1 is vector + ResSS1=ssValid(v1,u1,ical,ival,i1); + REa1<-ResSS1$RE # RE for calib on early, valid on late + ical<-iB; ival<-iA + ResSS2=ssValid(v1,u1,ical,ival,i1); + REb1<-ResSS1$RE # RE for calib on late, valid on early + + OutputVal<-list('mLeaveOutCV'=ResCV$LeftOut,'REcv'=ResCV$REcv,'RMSEcv'=ResCV$RMSEcv, + 'REcalEarlyValLate'=REa1,'REcalLateValEarly'=REb1) + + #====================== FIGURE (local 6): time plots of obs y, recon, y, cv predictions of y; with observed mean line + # + #--- Build figure png filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Validation1.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Validation1.png',sep="") + } + + # Recall + # v1,yrv1 is observed; M$fittedvalues is recon; ResCV$CVpredictions is cv-prdicted + # zx,zy are 1x2s that allow for line at observd mean; yrgo1,yrsp1 are 1st & last of calib years + + # Build figure + png(filename=fileOut, width = 960, height = 480) + par(mar=c(4,4,5,1),cex.main=1.4) + plot(yrv1,v1,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1), + ylab=paste(HydroLabel,HydroUnits),xlab="Year", + main=paste('Time Plots of Observed, Reconstructed, and Cross-Validation-Predicted',HydroName,'(',sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1),')', + '\n(black line at observed mean)')) + lines(yrv1,M$fitted.values,type="b",pch=2,col="red") + lines(yrv1,ResCV$CVpredictions,type="b",pch=17,col="#990099") + lines(zx,zy) + h<-par("usr"); yoffset<- (h[4]-h[3])/100; ytop <- h[4]-yoffset + legend(yrgo1+1,ytop,legend=c("Obs", "Recon","CVpred"), + col=c("blue", "red","#990099"),pch=c(1,2,17),lty=1, cex=1.2) + dev.off() + + + #====================== FIGURE (local 7): 1x2 VALIDATION PLOTS AND STATISTICS + + # Lilliefors test of normality of CV residuals + hLillie <- lillie.test(ResCV$CVresiduals); + Tit1 <- paste('Cross-Validation Residuals', + '\n(p=',sprintf('%.2g',hLillie$p.value),', H0: normally distributed', + ' [Lilliefors Test])',sep='') + + # Text strings for cross-validation + strAnPd <- strCalPd # built for earlier plot: gives calib period and length + + # Text strings for split-sample validation + yrtemp <- yrv1[iA] # year vector, early split + yrgoA <- yrtemp[1]; yrspA <- yrtemp[length(yrtemp)] + yrtemp <- yrv1[iB] # year vector, late split + yrgoB <- yrtemp[1]; yrspB <- yrtemp[length(yrtemp)] + rm(yrtemp) + strSplitA <- paste(' A: ',sprintf('%d',yrgoA),'-',sprintf('%d',yrspA), + ' (N=', sprintf('%d',length(iA)),' yr)',sep='') + strSplitB <- paste(' B: ',sprintf('%d',yrgoB),'-',sprintf('%d',yrspB), + ' (N=', sprintf('%d',length(iB)),' yr)',sep='') + + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Valdation2.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Validation2.png',sep="") + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) + layout(layout.matrix,heights=2,widths=c(1,1)) + + # Left plot histogram + + par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + hist(ResCV$CVresiduals,xlab=paste('Residual',HydroUnits),ylab='Frequency',main=Tit1) + + # right plot, stats + + par(mar = c(0,0,0,0)) + xlims <- c(0,1); ylims <- c(0,1) + plot(0,type='n',axes=FALSE,ann=FALSE,xlim=xlims,ylim=ylims) + #plot(1,1,pch=1,xlim=xlims,ylim=ylims) + strText <-paste('\nCross-validation (cv) method: leave-',as.character(ResCV$LeftOut),'out', + '\n',strAnPd, + '\n RMSEcv=',sprintf('%g',ResCV$RMSEcv),HydroUnits2, + '\n REcv=',sprintf('%.4g',ResCV$REcv), + '\n\nSplit-sample validation', + '\n',strSplitA, + '\n',strSplitB, + '\n RE{A}=',sprintf('%.2g',ResSS1$RE),' (calibrated on A, validated on B)', + '\n RE{B}=',sprintf('%.2g',ResSS2$RE),' (calibrated on B, validated on A)') + text(x=0.05,y=0.95,'Validation statistics',adj=c(0,1),cex=1.5,font=2) + text(x=0.05,y=0.8,strText,adj=c(0,1),cex=1.2) + + + dev.off() + + + #========================= RECONSTRUCTION AND 50% CI + + Xr <- as.matrix(u) # matrix, 1 col, of long-term mean of SSRs + L<-complete.cases(Xr) + Xr <- as.matrix(Xr[L,]) ; yrXr <- as.matrix(yru[L,]) + mXr <- dim(Xr)[1] + yrgo3 <- yrXr[1,1]; yrsp3 <- yrXr[mXr,1] # start and end year if recon + + # Add ones column and reconstruct + Xones<-matrix(1,nrow=mXr,ncol=1) + Xr <- cbind(Xones,Xr) + yh <- Xr %*% M$coefficients # reconstruction as 1-col matrix + yh <- cbind(yrXr,yh) + + # Delta y for 50% CI + xStdNorm75 <-qnorm(0.75, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) + deltaRec50 <- xStdNorm75 * ResCV$RMSEcv + yhLo <- yh[,2]-deltaRec50; yhHi <-yh[,2]+deltaRec50 + yh <- cbind(yh,yhLo,yhHi) # matrix with year, recon, lower 50 upper 50 + + # Truncate reconstruction matrix yh to end with yrEnd + Ltemp <- yh[,1] <= yrEnd # marks rows of yh to be retained + yh <- yh [Ltemp,] # truncate tsm yh + rm(Ltemp) + + + #====================== FIGURE (local 8): 1x1 TSP OF FULL RECON WITN 50% CI + + # time series for plot and CI + y <- yh[,2]; yry <- yh[,1] # for time series + + # Compute shaded polygon x and y + Xtemp <- yh[,-2] # matrix with year as col 1, lower CI as col 2, upper CI as col 2 + ResTemp <- xyCI(Xtemp) + xP <- ResTemp$x; yP <- ResTemp$y + + # Limits for plot + yLo <- min(yh[,2:4]) + yHi <- max(yh[,2:4]) + ynudge <- 0.02 * (yHi-yLo) + ylims = c(yLo-ynudge, yHi+ynudge) + xlims = c(yrXr[1]-1,yrEnd+1) + + # Strings for plot + strRecYrs <- paste(sprintf('%d',yrXr[1]),'-',sprintf('%d',yrEnd),sep='') + Tit1 <- paste('Reconstructed ',HydroName,', ',strRecYrs, + '\n(50% CI shaded; dashed line at reconstructed mean)',sep='') + ylab1 <- paste(HydroLabel,HydroUnits) + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Reconstruction1.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Reconstruction1.png',sep="") + } + + # Build figure + png(filename=fileOut, width = 960, height = 480) + par(mar=c(5,5,5,1),cex.main=1.4,cex.axis=1.2,cex.lab=1.2) + if (length(y)>minLength1){ + plot(yry,y,type="l",col="blue",xlim=xlims,ylim=ylims, + ylab=ylab1,xlab='Year',main=Tit1) + } else { + plot(yry,y,type="b",pch=1,col="blue",xlim=xlims,ylim=ylims, + ylab=ylab1,xlab='Year',main=Tit1) + } + abline(h=mean(y),lty=2,col='#808080') # dash gray + adjustcolor("red",alpha.f=0.5) + #polygon(yryP,yP,col='#FFEE99') # flavescent + polygon(xP,yP, col=rgb(1.00,0,0,0.1),border=NA) # mustard + dev.off() + + + + #====================== FIGURE (local 9): 2x2. + # + # At left, top and bottom are ACFs of recon for calib years and earlier + # At right is single frame with box plots or recon for same + + + #--- Pull recon for calib perod and for earlier + # w1, w2 will the reconsturction for those period + # Already have y, yry as full length recon + L <- yry >= yrgo1; # calib pd + w1 <-y[L]; yrw1<- yry[L] + L <- yry < yrgo1 + w2 <- y[L]; yrw2 <-yry[L] + + #---Make some strings for use in plots + strPd1<- paste(sprintf('%d',yrgo1),'-',sprintf('%d',yrsp1), + ' (N=', sprintf('%d',length(w1)),' yr)',sep='') + strPd2<- paste(sprintf('%d',yrgo3),'-',sprintf('%d',yrgo1-1), + ' (N=', sprintf('%d',length(w2)),' yr)',sep='') + strAnnote1 <- paste('A: ',strPd1) + strAnnote2 <- paste('B: ',strPd2) + + Tit1 <-'ACF of Reconstruction with 95% CI, Calibration Period' + Tit2 <- 'ACF of Reconstruction with 95% CI, Earlier Years' + Tit3 <- paste('Distribution of Reconstructed',HydroLabel) + + #--- Build figure filename + jFigAdd <- jFigAdd+1 + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-Reconstruction2.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-Reconstruction2.png',sep="") + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2,3,3), nrow = 2,byrow=FALSE) + #layout(layout.matrix,heights=2,widths=c(1,1)) + layout(layout.matrix)#,heights=2,widths=c(1,1)) + par(mar=c(5,5,5,1),cex.main=1.4,cex.axis=1.2,cex.lab=1.2) + + #--- Upper left, acf of recon for calib pd + + MaxLag <- floor(length(w1)/4) + MaxLag <- min(c(MaxLag),20) + + par(mar=c(5,5,4,2)) + acf(w1,lag.max=MaxLag,ylim=c(-1,1),type='correlation',main=Tit1) + text(MaxLag,1,strAnnote1,adj=c(1,1),cex=1.5) + + #---Lower left, acf of recon for years before start of calib pd + + MaxLag <- floor(length(w2)/4) + MaxLag <- min(c(MaxLag),20) + + par(mar=c(5,5,4,2)) + acf(w2,lag.max=MaxLag,ylim=c(-1,1),type='correlation',main=Tit2) + text(MaxLag,1,strAnnote2,adj=c(1,1),cex=1.5) + + #---Right -- side by side box plots of recon for calib period and prior + + par(mar=c(5,8,4,1),cex.lab=1.3) + namesBP<-c('Period A','Period B') + boxplot(w1,w2,notch=FALSE,ylab=xlab1, + main=Tit3,names=namesBP) + dev.off() + + + #=== TABLE: Calibration1: summary statistics of MSR model + + #--- Header + TableTitle <- "Table3-Calibration1" + TitleAdd <- 'Calibration statistics of MSR model' + SSRdef <- ' (SSR: "single-site reconstruction")' + textH<- c(TableTitle,TitleAdd, + paste("Predictand:",HydroName,"for",HydroSeason), + RecMethod,SSRdef) + + # --- Body + textB <-c("YearGo","YearStop","R2","F","pF","R2adj","RMSEc") + TfmtB <- '%-10s\t' # format for name of variable; size for longest + DfmtsB <- c('%-4d\n','%-4d\n','%-6.2f\n','%-8.3g\n','%-8.3g\n','%-6.2f\n','%-10g\n') + dataB <- c(yrgo1,yrsp1,OutputCal$Rsquared,OutputCal$F,OutputCal$pF,OutputCal$RsquaredAdj, + OutputCal$RMSEc) + + #---Tail + textT <- c(paste('Units of RMSEc: ',HydroUnits2),PdfDescribe) + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,textH,TableTitle) + + + #=== TABLE Table4- AnalysisResiduals1 + + #--- Header + + TableTitle <- "Table4-AnalysisResiduals1" + TitleAdd <- 'Normality, autocorrelation, trend, heteroskedasticity' + textH<- c(TableTitle,TitleAdd) + + # --- Body + textB <-c("YearGo","YearStop","pNormal","DW"," pDW","TrendSlope"," pTrend", + "BP Test ChiSq"," dfBP"," pBP") + TfmtB <- '%-13s\t' # format for name of variable; size for longest + DfmtsB <- c('%-4d\n','%-4d\n','%-8.3g\n','%-5.2g\n','%-8.3g\n','%-8.5g\n','%-8.3g\n', + '%-8.5g\n','%-4d\n','%-8.3g\n') + dataB <- c(yrgo1,yrsp1,hLillie$p.value,DW$dw,DW$p,ResMK$b,ResMK$pvalue, + BP$ChiSquare,BP$Df,BP$p) + + #---Tail + + textT <- c('Tests applied include: Lilliefors, for trend; Durbin-Watson,', + 'for autocorrelation; Mann-Kendall, for trend; and Breusch-Pagan, for', + 'constancy of variance', + paste('Units of TrendSlope: ',HydroUnits2,' per year',sep=""), + PdfDescribe) + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH) + + + #=== TABLE Table5-Validation1 + + #--- Header + TableTitle <- "Table5-Validation1" + TitleAdd <- 'Cross-validation and split-sample validation' + textH<- c(TableTitle,TitleAdd) + + # --- Body + textB <-c("NleaveOut","RMSEcv","REcv","YearGoA","YearStopA","YearGoB","YearStopB", + "REsplitA","REsplitB") + TfmtB <- '%-9s\t' # format for name of variable; size for longest + DfmtsB <- c('%-3d\n','%-8.5g\n','%-5.2f\n','%-4d\n','%-4d\n', + '%-4d\n','%-4d\n','%-5.2f\n','%-5.2f\n') + dataB <- c(ResCV$LeftOut,ResCV$RMSEcv,ResCV$REcv, + yrgoA,yrspA,yrgoB,yrspB,ResSS1$RE,ResSS2$RE) + + #---Tail + + textT <- c('"NleaveOut" is number of observatations left out in cross-validation (cv).', + 'RMSE and RE refer to root-mean-square error and reduction-of-error.', + 'Start and end years are listed for split-sample early (A) and late (B) parts.', + paste('Units of RMSEcv: ',HydroUnits2,sep=""), + PdfDescribe) + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir =outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH,ResTemp) + + + #=== TABLE Table6-MSR-SLR1-Coefficients + + #--- Heading + TableTitle <- "Table6-CoefficientsMSR" + TitleAdd <- 'Coefficients of MSR regression model' + textH<- c(TableTitle,TitleAdd) + + # --- Body + textB <- c("Intercept","meanSSR") # headings of cols + TfmtB <- '%-12s\t' # format for name of variable; size for longest + DfmtsB <- c('%-12.8g\n','%-12.8g\n') + dataB <- c(M$coefficients[1],M$coefficients[2]) + + #---Tail + textT <- c(PdfDescribe) + + D1 <- list(textH=textH,textB=textB,TfmtB=TfmtB,dataB=dataB,DfmtsB=DfmtsB, + textT=textT,outDir=outputDir) + + #---Function call for table + ResTemp <- Table1Column(D1) + rm(D1,textT,dataB,DfmtsB,TfmtB,textB,TableTitle,textH,ResTemp) + + + #=== TIME SERIES DATA" RegressionInput + + #--- Title + TableTitle <- "RegressionInputTimeSeries" + textTitle<- c(TableTitle) + + #--- Head + textH <- c('Year', + paste(HydroLabel,HydroUnits),'meanSSD') + nmaxH <- max(nchar(textH)) # length of longest header string + if (nmaxH<12){ + nmaxH <-12 + } + nH <- length(textH) # number of headers + fmtH1 <- paste('%-',as.character(nmaxH),'s\t',sep='') + fmtH2 <- paste('%-',as.character(nmaxH),'s\n',sep='') + fmtsH <- rep(fmtH1,(nH-1)) + fmtsH <- c(fmtsH,fmtH2) + + # --- Body + fmtsB <- c('%-12.0f\t','%-12.8g\t','%-12.8g\n') + dataB <- cbind(as.matrix(yrv1),M$model) + + #---Tail + textT <- c("For the SLR1 regression model, second column is regressed on third", + PdfDescribe) + D1 <- list(filename=TableTitle,textH=textH,fmtsH=fmtsH,dataB=dataB, + fmtsB=fmtsB,textT=textT,outDir=outputDir) + + #---Function call for write + ResTemp <- TabSepTsm2(D1) + rm(D1,textTitle,TableTitle,textH,fmtH1,fmtH2,fmtsH,dataB,fmtsB,textT,ResTemp) + + + #=== TIME SERIES DATA: Reconstruction with 50% confidence interval + # Status. + # yh: 4 column tsm with year, recon, lower50%, upper 50% (matrix) + # v, yrv: observed predictand and years (vectors) + # v might have more recent data than yh because SSRs by lagged regression cannot extend + # beyond m years before the end of the tree-ring data, where m is maximum lag allowed + # in reconstruction model. + # In formats, make sure that field lengths for header and data match and that the length of + # non-year columns is at least as long as the longest header element + fmtsH <- c('%6s\t','%10s\t','%10s\t','%10s\t','%10s\n') # for header lin + fmtsD <- c('%6g\t','%10g\t','%10g\t','%10g\t','%10g\n') # for data matrix + + D1 <- list(header=c("Year",paste("Obs",HydroLabel,HydroUnits), + "Reconstructed","Lower 50% CI","Upper 50% CI"), + observed=cbind(yrv,v), recon=yh,outDir=outputDir, + fmtsH=fmtsH, fmtsD=fmtsD, + filename="ReconstructionWithConfidenceIntervalTimeSeries") + + ResTemp <- TabSepTsm1(D1) + + + #=== ORGANIZE DATA FOR RETURN TO CALLING FUNCTION + # + # calib period: year, obs, rec, CVpredictions, e_cal, e_cv + + CalData <- list('Year'=yrv1,'y'=v1,'yhat'=M$fitted.values,'yhatCV'=ResCV$CVpredictions, + 'Residuals'=M$residuals,'ResidualsCV'=ResCV$CVresiduals, + 'PredictorMtx'=Xr) + CalMtx <- cbind(yrv1,v1,M$fitted.values,ResCV$CVpredictions,M$residuals,ResCV$CVresiduals) + + OutputRec <- list('yearGoRec'=yrgo3,'yearSpRec'=yrsp3,'xStdNorm75'=xStdNorm75, + 'deltaRec50'=deltaRec50,'yhat'=yh,'CalibrationData'=CalData,'CalibrationMtx'=CalMtx) + + + + + + + + #=== OUTPUT BACK TO CALLING FUNCTIONS + + Output <- c(OutputCal,OutputVal,OutputRec) + + return(Output) +} \ No newline at end of file diff --git a/Recon.init b/Recon.init new file mode 100644 index 0000000..da49474 --- /dev/null +++ b/Recon.init @@ -0,0 +1,30 @@ +{ + "code_dir" : "/home/dave/Data/RlibraryMeko/", + "pdf_dir" : "/home/dave/Projects/ba2/TRISHvisual/", + "tr_file" : "siteData_Katun.txt", + "trM_file" : "siteMeta_Katun.txt", + "cl_file" : "hydroData_Katun.txt", + "outputDir" : "/home/dave/AAAtrish2/test_out/", + "NameNetwork": "ems1", + "PrewhitenOrder" : 0, + "LallowLags" : true, + "NsitesUserNetwork" : 38, + "YearScreen" : [1786,1994], + "NafterYearScreen" : 38, + "NafterPolygon" : 38, + "HydroVariable" : "RO", + "ClimDatSet" : "CRU", + "HydroSeason" : [9,12], + "yrgoc" : 1940, + "yrspc": 1990, + "ktran" : 1, + "methMSR" : 2, + "PCApredictors" : true, + "kHowPCA" : 2, + "PCoption" : 1, + "nPCsKeep" : 1, + "f" : 0.10, + "alphaR" : 0.05, + "Lcausal" : true, + "RequireStable": true +} diff --git a/ReconAnalog.R b/ReconAnalog.R new file mode 100644 index 0000000..a6052d4 --- /dev/null +++ b/ReconAnalog.R @@ -0,0 +1,1462 @@ +################################################################################ +# +# ReconAnalog.R +# Runoff reconstruction by analog and non-analog methods, all two-stage +# D Meko +# Last revised 2024-04-19 +# +# This script and functions it calls are the reconstruction framework for TRISH +# (Tree-Ring Integrated System for Hydrology), a web-based tool developed by a +# team of researchers from the University of New Hampshire (UNH) and University +# of Arizona (UA). TRISH interactively builds the reconstruction predictand from +# a global water balance model using climatic inputs from various alternative climate +# products. ReconAnalog can also be run standalone from the R prompt or in Rstudio +# with a predictand time series (e.g., a gaged flow record) supplied by the user. +# +# ReconAnalog run standalone requires a javascript object notation (json) initialization file, +# recon.init, that specifies inputs, directories, and program settings. TRISH builds this json +# file from user input at web screens. The typical user will not need to change any code in +# ReconAnalog. +# +# ReconAnalog can optionally do reconstructions by four different statistical methods, each of which +# by a pdf file written by ReconAnalog to a system output folder. +# +#================ TREE RING INPUT +# +# ReconAnalog requires input time series of tree-ring chronologies and a predictand +# seasonal hyrdrologic or climatological variable. ReconAnalog also requires metadata +# for the chronologies and specifications for the reconstruction. How ReconAnalog gets +# all this data depends on whether ReconAnalog is run within TRISH or standalone from +# your laptop in Rstudio. TRISH culls the tree-ring data from its internally stored time +# series and metadata, and prepares the predictand seasonal hydroclimatic predictand from +# monthly data via the UNM water balance model. In standalone mode, you supply the +# data files of tree-ring chronologies and metadata, and the time series of predictand +# hydroclimate data in tab-separated files with format described below. For example, +# the tree-ring time series matrix and metadata read by statements: +# +# U <- read.table(tr_file,sep="\t",header=TRUE) # input chronologies +# Tmeta <- read.table(trM_file,sep="\t",header=TRUE) # input chronologies +# +# The tree-ring time series data provided by TRISH will already have been screened for +# time coverage and geographic domain before ReconAnalog is called. Outside of TRISH, all +# chronologies in the provided file of chronologies are available for use. The time series +# and metadata used outside of TRISH should have the following form. +# +# 1) Time series. Tab-separared matrix of chronologies. The year is column 1 and the time +# series are in remaining columns. All chronologies should have data in the first year,# +# but chronologies are allowed to end in different years (e.g., NaN-filled on recent end). +# Row 1 must contain tab-separated headers, beginning with "Year" for column 1. Remaining +# headers are site ids with maximum allowed length of 12 characters, Avoid spaces or +# hyphens ("-") in site codes. +# 2) Metadata. Tab-separated metadata for the sites in the data matrix. Rows, after header row, +# should correspond to the columns of the data matrix, in the same order. +# 1 sequential number (1 to however many are in the time series matrix) +# 2 site number corresponding to the column of the chronology in the network the +# the user uploaded to UNH +# 3 site code (1-12 characters, no spaces, and maybe some other rules we should specify) +# 4 longitude east (decimal degrees; negative if west) +# 5 latitude north (decimal degrees; negatve if southern hemispher) +# 6 elevation (m above msl) +# 7 species code (4-letter code, following ITRDB convention) +# 8 data-type (1 letter code): R=total ring width, E=earlywood width, L=latewood width, +# X=maximum density. +# 9 First and last year that chronology had valid data. +# Here is and example line: +# 7 45 BUT 93.367000 64.283000 113 LAGM R 1723 1999 +# +# +# +############# JSON INITIALIZATION FILE +# +# ReconAnalog was revised in Nov 2022 so that user-settable inputs are no longer modified +# by revising lines of code, but instead by changing settings of an input JSON file (e.g., +# Recon.init). The JSON file has 28 inputs, described in some detail here. Default +# settings from Meko's trial run outside of TRISH on a Linux laptop are included. Below, for +# brevity "flow" refers to the predictand hydroclimate time series. Actually, this could be +# some other type of variable (e.g., precipitation). "SSR" and "MSR" refer to "single-site" +# reconstruction (reconstruction of flow separately from each chronology) and "multi-site" +# reconstruction (combination of the SSRs into a single final reconstruction). TRISH users do +# not need to be concerned about preparing a json init file because the json file is generated +# by TRISH by user inputs at the TRISH screens. +# +# "code_dir" : "/home/dave/Data/RlibraryMeko/", +# Directory with user-written R functions that ReconAnalog must be able to access +# "pdf_dir" : /home/dave/Projects/ba2/TRISHvisual/", +# Directory with four pdfs describing in detail the alternative reconstruction methods. +# Pdf files are copied from this directory to the output directory on the system running TRISH +# "tr_file" : "treeData.txt", +# Name of the tab-separated file with time series of tree-ring chronologies. +# "trM_file" : "treeMeta.txt", +# Name of file with tree-ring metadata. Likewise, this file is generated by TRISH from user-uploaded +# data. +# "cl_file" : "hydroData.txt", +# Name of tab-separated file with time series (year and value) of predictand climatic or +# hydroclimatic predictand. +# "outputDir" : "/home/dave/AAAtrish2/test_out/", +# The system folder to which the output will be written +# "NameNetwork": "Kyzyl", +# The name of the tree-ring network. Standalone users can set this to whatever name +# desireable; it has now effect on the computations or labeling. +# "PrewhitenOrder" : 0, +# Whether or not to prewhiten chronologies with AR model before use in regression modeling. +# If "0", do not prewhiten. If "1", "2", or "3," prewhiten with that order of AR model. Note +# that this is prewhitening at the site-chronology level, which is different from "residual" +# chronologies, which apply AR modeling to index time series from individual cores and then +# combine those. +# "LallowLags" : true +# Whether to allow lags in the models. If "false," only lag-0 models are allowed. +# If "true," lags t-2 to t+2 from the predictand are allowed in pool of potential predictors +# "NsitesUserNetwork" : 274, +# The number of sites in the network provided to TRISH by the user. Standalone, set this equal +# to the number of chronologies in the input matrix "trm_file" (see above). The column "N2" in +# file "trm_file" is a convenience allowing the user to cross-reference the time series in +# "tr_file" to an outside database of user chronologies. +# "YearScreen" : [1700,1997], +# Start and end year of mandatory common period of coverage by all chronologies +# to be used in the reconstruction. Others will be ignored by TRISH in culling the +# user's supplied tree-ring data. All culled chronologies are required to have +# complete (no missing) data for the inclusive period bracketed by "YearScreen". +# TRISH lets user input these two years and does the screening. Standalone, "YearScreen" +# has no effect, and can be set to the first and last year of the matrix in "tr_file". +# "NafterYearScreen" : 36, +# Number of chronologies remaining after screening for "YearScreen." Standalone, +# this should be set to the number of time series in the tab-separated time series +# matrix "tr_file" +# "NafterPolygon" : 36, +# Number of chronologies remaining after screening for sites being in the specified +# geographic domain (e.g., polygon drawn interactively to mark tree-ring site domain +# in TRISH ). Outside of TRISH, "NafterPolygon" is ignored, and can be set identical +# to "NafterYearScreen" and "NafterPolygon" +# "HydroVariable" : "RO", +# Code for the hydrclimatic variable represented by the predictand. Must be a member of +# a recognized set of codes. TRISH uses this code for determining how to compute seasonalized +# data (e.g., precip as a sum, temperature as a mean). The code is also used for building +# labels for figures and assigning units. From time to time, new hydrological variables +# are supported. Search for line starting "Dtypes <-" to see the currently accepted codes. +# "ClimDatSet" : "CRU", +# The source of the climate data used by UNH water balance model and TRISH to compute the +# seasonalized predictand. Must be a member of a recognized set of codes. TRISH lets the +# user select this from a dropdown menu. Outside of TRISH, "ClimDatSet" has no effect, +# and is ignored; you can set it to "CRU", for example. +# "HydroSeason" : [9,12], +# Ending month (1=jan, 12=dec) and number of months in season of predictand. "HydroSeason" +# tells TRISH how to seasonalize the target predictand from monthly data. Outside of +# of TRISH, "HydroSeason" defines the season of the input hydrologic time series predictand, +# and, should match whatever the season is of your input data in "cl_file" +# "yrgoc" : -99999, +# Desired start of y data to be used for calibrating SSR models and final (MSR) +# model. If -99999, use earliest possible year. Here, -99999 is used instead of +# NA because JSON does not handle NA. "yrgoc" should be in the range of years +# covered by the input data in "cl_file". If outside the range, "yrgoc" is forced +# to the first year of that data. +# "yrspc": -99999 +# Desired stop of y data to be used for calibrating SSR models and MSR model; If -99999, +# use latest possible year. Analogous conditions regarding NA, etc., apply as for yrgoc +# Setting both "yrgoc" and "yrspc" to -99999 lets the SSR models adapt to the +# variable overlap of chronologies with flow. Programs gives an error message if +# your setting for yrspc is inconsistent with the ending year of available predictand, the +# ending year of the most-recent-ending tree-ring chronology SSR-modeled, and the setting for +# LallowLags. Of course, yrspc cannot be set later than the ending year of the predictand. +# But it also cannot be set later than the ending year of the most-recent ending +# chronology if lags are not allowed, and no later than two years before that if lags +# are allowed. Note that the chronology constraint on yrspc is base only on the most-recent- +# ending chronology. The SSR modeling automatically truncates the calibration period to +# end earlier if some chronology has ends before the most-recent-ending chronology. +# "ktran" : 1, +# Optional transformation of the predictand, y, before reconstruction. +# None (1), square root(2) or log10 (3). The resulting reconstruction will be in units +# of transformed flow. TRISH issues error messages if the selected transformation +# is inconsistent with the data (e.g., log10 transformaton when there are flows +# of zero) +# "methMSR" : 2, +# Method for MSR reconstruction. This and PCApredictors effectively specifies the +# method to be used. (1) Simple Linear regression (SLR), (2) MLR (multiple linear regression) +# on SSRs or their PCs, (3)) Analog nearest-neighbor PCA +# "PCApredictors" : true, +# Whether PCs of the SSRs (true) or the SSRs themselves (false) comprise the pool of +# potential predictors for the MSR. +# kHowPCA <-2 # if PCA, is it done on the correlation (1) or covariance (2) matrix +# of the SSRs. Covariance matrix makes more sense if differences in the variances +# of individual time series on which the PCA is run are important. Because ReconAnalog +# runs PCA on SSRs, and because the variance of an SSR reflects its calibration accuracy, +# the best selection here is kHowPCA=2. However, the option is available to do the PCA +# on the correlation matrix. +# "PCoption" : 2, +# If reconstruction method is MLR of y on PCs of the SSRs (methMSR=2, +# PCApredictors=TRUE), PCoption specifies how many and which PCs should be in the +# pool of potential predictors. If a different reconstruction method, "PCoption" +# has no effect. Options are 1) directly specify the number of PCs, and 2) use the +# m 0) { ### AlexP addition to use input from command line argument list + json_file = as.character(inputArgs[1]) ### AlexP addition to use input from command line argument list + myData <- fromJSON(file=json_file) ### AlexP addition to use input from command line argument list +} else { + myData <- fromJSON(file="Recon.init") ### DaveM so that assumes this json name if no args in command line +} + +naJSON <- -99999 # regard -99999 as NA +X<- myData +for (j in 1:length(X)){ + a <- names(X)[j] + b <- paste(a,'<-X$',a,sep='') + s <- paste(a,'<-',b) + eval(parse(text=s)) +} +rm(a,b,s) +if (yrgoc == naJSON){ + yrgoc <- NA +} +if (yrspc == naJSON){ + yrspc <- NA +} + +### PROGRESS BAR -- FUNCTION AND FIRST CALL +# +# TRISH online tool writes a progress bar, which requires a one-line output message at various +# stages of the analysis reporting the percentage of run completed. For now, these messages are +# all writting in this main calling script ReconAnalog. We estimate that 15% of the time is taken up +# by TRISH before calling ReconAnalog -- so, the starting 15% complete. +#{ "message": "Starting the analysis...", "percent": 15 } + +# For UNH server, must use a different target path/filename for the progress update file than in Rstudio +# on laptop +if (length(inputArgs) > 0){ + pfProg <- paste(outputDir,'../status.js',sep='') # this if on UNH server +} else { + pfProg <- paste(outputDir,'ProgressTRISH.txt',sep='') # this if not on UNH server +} +pctDone <- 15; pctInc <- 0 # starting pctg done and increment of pctg to be apply next +mssgProg <- "Starting the analysis..." +ProgTrack <- function(pfProg,mssgProg,pctDone,pctInc) { + pctDone <- pctDone + pctInc + mssgThis <- paste('{ \"message\": \"',mssgProg,'\", \"percent\": ',as.character(pctDone),' }',sep='') + fprintf('%s',mssgThis,file=pfProg,append="FALSE") + return (pctDone) +} +pctDone <- ProgTrack(pfProg,mssgProg,pctDone,pctInc) + + +######## SOURCE THE FUNCTIONS ReconAnalog DEPENDS ON + +source(paste(code_dir,"TranFlow.R",sep="")) # optional transformation of flows +source(paste(code_dir,"trimnan.R",sep="")) # get indices to allow trimming of leading and trailing NA +source(paste(code_dir,"emssgUNH.R",sep="")) # write error file to system, specified output folder +source(paste(code_dir,"reconsw4.R",sep="")) # single-site reconstruction (SSR) by distributed-lag stepwise regres +source(paste(code_dir,"TrimTsm1.R",sep="")) # trim tree-ring time series matrix in preparation for SSR +source(paste(code_dir,"trimRowNA.R",sep="")) # row indices of a matrix after trimming off leading and trailing all-NA rows +source(paste(code_dir,"tsmExtend.R",sep="")) # extend time series matrix on recent end +source(paste(code_dir,"RecSLR1.R",sep="")) # Reconstruction by simple linear regression of y on mean of SSRs +source(paste(code_dir,"RecMLR1.R",sep="")) # Reconstruction by multiple linear regression or analog method +source(paste(code_dir,"SignalDrop1.R",sep="")) # drop in maximum accuracy as tree-ring network thins in recent years +source(paste(code_dir,"PrewhitenChrons.R",sep="")) # convert tsm of chronologies to prewhitened chronologies + +MinCalibLength <- 30 # hard-coded minimum allowable length of calibration period for SSR models + +########## READ FILES OF PREDICTAND, TREE-RING TIME SERIES, TREE-RING METADATA + +V <- read.table(cl_file,sep="\t",header=TRUE) # input flow; UNH will not read this in because +# user picks the hydroData variable interactively in TRISH +U <- read.table(tr_file,sep="\t",header=TRUE,check.names=FALSE) # input chronologies +Tmeta <- read.table(trM_file,sep="\t",header=TRUE) # input chronologies +# Status. U is tsm of chronologies and Tmeta is table of corresponding metadata. So far +# the chronologies in the tsm and metadata table are those satisfying (1) in polygon, and (2) complete + +# Update progress bar +mssgProg <- "Data read in..." + + +########## OPTIONAL PREWHITENING OF CHRONOLOGIES +# +# Option to prewhiten (remove autocorrelation from) chronologies using autoregressive model +# of order 1, 2, or 3 (AR(1),AR(2), AR(3)). Order 0 instructs to not prewhiten. +# Prewhitening essentially allows user to check whether "residual" chronologies might have +# stronger signal than standard chronologies for y. If so, user may want to develop +# residual chronologies as separate network and submit those to TRISH for testing. +# Prewhitened chronologies are not exactly the same as residual chronologies because with +# prehitening the autoregressive modeling is done on the site chronology, but with +# residual chronologies (as defined in dendro literature) the modeling is done on the +# standard core indices before averaging those into a site chronology. But experience +# has shown the two versions (prewhitened and residual) are very similar. + +if (PrewhitenOrder==0){ + # No action needed + PWtext <- 'Not prewhitened' + } else { + if (any(PrewhitenOrder==c(1,2,3))){ + # Call function to covert U to prewhitened chronologies + # If order p, will end up converting first p values of chronology to NA (lose p leading years) + PWtext <- paste('Prewhitened with AR(',as.character(PrewhitenOrder),') model',sep='') + ResTemp <- PrewhitenChrons(U,PrewhitenOrder,outputDir) + U <- ResTemp$Xwhitened + mssgProg <- "Data read in and chronologies whitened..." + } else { + # Invalid order (must be 1,2,or 4); stop with error message + # Write error file + emssg <- 'Allowable AR(p) prewhitening models are p=0,1,2 or 3' + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } + } + +# Update progress bar +pctInc <- 5 +pctDone <- ProgTrack(pfProg,mssgProg,pctDone,pctInc) +# pctDone is 20% to her + + +# Get first and last year of the tree-ring TSM. It is assumed that this matrix has +# no all-NA rows +yrTree <- U[,1] +yrgoTree <- yrTree[1]; yrspTree <- yrTree[length(yrTree)] + + +### Check that ending year of most-recent-ending tree-ring chronology consistent with input specified +# end year of calibration period. If lags allowed, tree-ring series must extend at least 2 years +# beyond end of specified calibration period. If most-recent-ending chronology has too early an end year, +# all of the chronologies will similarly have too early an end year. Best in that case to abort here. Later, +# checks are done in function reconsw4 on individual tree ring chronologies. + +nExtra <- 0 # initialize how many years tree ring series must extend beyond yrspc +# If lags enabled, it is assumed that maximum negative and positive lag is 2 years. +# Will therefore need 2 years of tree-ring chronology after specified yrspc ending +# year of the calibration period to satisfy the +2 lag on predictors +if (LallowLags){ + nExtra <- 2 +} + +if (!is.na(yrspc)){ + L1 = yrspc > (yrspTree-nExtra) + if (L1){ + emssg <- paste('For tree matrix ending in ', as.character(yrspTree), + ', the specified last year of calibration cannot be later than ', as.character(yrspTree-nExtra), + '\n (two additional years needed for lagged model)',sep='') + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } + rm(L1) +} + + +# Check that input yrgoc and yrspc -- when both are specified rather than NA -- +# are consistent with hard-coded minimum allowable length of calibration period of SSR models. +# If one or both of yrgoc and yrspc are input as NA (-99999 in Recon.init), the +# check is done series by series within function reconsw4. +L1 <- (!is.na(yrgoc) & !is.na(yrspc)) +if (L1){ + ntemp <- yrspc-yrgoc+1 + if (ntemp < MinCalibLength) { + emssg <- paste('Specified calibration years ',as.character(yrgoc), ' and ', as.character(yrspc), + ' mark a calibration period fewer than the minimum allowable ',as.character(MinCalibLength), + ' years.', sep='') + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } +} + + +########## CHECK NUMBER OF SERIES IN TREE-RING MATRIX + +nms1<-colnames(U[-1]) # chronology ids; if using TRISH, for all chronologies from polygon screening +nchron<-length(nms1) # number of chrons from polygon screening +if (NafterYearScreen != nchron){ + # Write error file + emssg <- 'Number of data columns of input tree-ring matrix inconsistent with nAfterPolygon' + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) +} + +######### BUILD SOME STRINGS TO BE USED LATER IN LABELS + +ClimDataSet <- c('CRU','Delaware','Reanalyis') # input climate data used by UNH WBM in TRISH +# This variable is included here for information only. When ReconAnalog is used +# within TRISH, the user has a dropdown window that allows selection of the input +# data. But ReconAnalog does not care about the input data set and works only with +# whatever processed WBM output or seasonalized climate series is provided. Also, +# seasonalizing monthly data is done ahead of calling ReconAnalog (either in TRISH or +# outside of TRISH), there is no need to specify that a particular variable is summed (e.g., P) +# vs averaged (T) to generate seasonal data from monthly data. +# +# Note that TRISH so far deals with only the first four Dtypes below. Other types are +# included for use of ReconAnalog outside of TRISH. For example, F1 is volume flow of a +# river in thousand acre feet (kaf). These extra types are needed so that graphics +# have properly labeled axes. Axes labels use DtypesLabel rather than Dtypes +# (e.g., "Flow (kaf)" rather than "Flow1 (kaf)". + +# Discharge, Runoff, Soil Moisture, Temperature, Precip +Dtypes <- c('Q','RO','SM','T','P','Flow1') +DtypesLabel <- c('Seasonal Q','Seasonal RO','Seasonal SM','Seasonal T','Seasonal P','Seasonal Flow') +LabsUnits <- c('(cms)','(mm)','(mm)','(Deg C)','(mm)','(kaf)') +HydNames <- c('Discharge','Runoff','Soil Moisture','Temperature','Precipitation','Flow') +ithis = which(Dtypes==HydroVariable) +if (isempty(ithis)){ + emssg<-paste(HydroVariable, ' is not one of: ', paste(Dtypes,collapse=' '),sep='') + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) +} +Dtype<-DtypesLabel[ithis]; LabUnits<-LabsUnits[ithis]; HydName<-HydNames[ithis] + +# Text to be used in reminding user of the selected season; annotated on one of the SSR figures +MonthsOfYear <- c('Jan','Feb','Mar','Apr','May','June','July','Aug','Sept','Oct','Nov','Dec') +LabelSeason1 <- paste('Ending Month of Season = ',MonthsOfYear[HydroSeason[1]],sep='') +LabelSeason2 <- paste('Season length = ',as.character(HydroSeason[2]),' Months',sep='') + + + +########## RENAME A VARIABLE; SET UP MENU OF METHODS + +n1<- NsitesUserNetwork # number of sites in the full user-supplied network; +# system must provide this; renamed here for convenience +msrMethods <- c('SLR1','MLR1-PCA','MLR1-noPCA','Analog') + + +########## BUILD FILENAME FOR PDF DESCRIBING MSR METHOD TO BE USED +# +# This pdf will we written to system output folder. User and refer to the pdf for +# details on the method used, including definitions of downloaded output files + +if (methMSR==1){ + jMethod <- 1 +} else if (methMSR==3) { + jMethod <-4 +} else { + if (isTRUE(PCApredictors)) { + jMethod <-2 + } else { + jMethod <- 3 + } +} +PdfFile <- paste('TrishOutputDescribe',msrMethods[jMethod],'.pdf',sep='') +PdfDescribe <- paste('See',PdfFile,'for more',sep=' ') +rm(jMethod) + + +########## CLEAR OUTPUT DIRECTORY AND COPY PDF DESCRIBING MSR METHOD THERE + +PathClean <- paste(outputDir,'*',sep='') +unlink(PathClean,recursive=F,force=F) +file.copy(from=paste(pdf_dir,PdfFile,sep=''),to=paste(outputDir)) +rm(PathClean) + +############# HARD CODED SETTINGS +# +# These setting not to be changed by casual user. Can be used by developer to explore +# possibilities for extending or modifying ReconAnalog. TRISH users cannot change +# these setting from TRISH menus. Standalone users could change setttings, but run the +# risk of unintended consequences. + +nNeg<-2 #$ maximum negative lag allowed on chronologies for SSR models +nPos<-2 # maximum positive lag allowed on chronologies for SSR models +# ReconAnalog() was written to specifically apply lagged regression with maximum of +# 2 negative and positive lags on the chronology. Accordingly, leaving 9 out in +# cross-validation guarantees that cross-validation estimated do not depend on +# any of the tree-ring data that are used also in calibrating the cross-validation +# model. +# yrgo1 and yrsp1 best both set to NA. This lets the time coverage of the tree-ring data itself +# determine the time comverage of the reconstruction. In some early trialsl I played with varying +# yrgo1 and yrsp1, but decided makes more sense to go with NA +yrgo1<-yrgoTree+nNeg # desired start year of reconstruction; actual reconstruction coverage will depend on +# coverage of tree-ring chronologies in final model +yrsp1<-yrspTree-nPos # desired end year of reconstruction (including through calibration period) +# yrgo1 and yrsp1 are the desired start and end years of reconstructed flow. +# The tree-ring matrix supplied by TRISH will be trimmed in ReconAnalog() to include only +# those chronologies with data in year yrgo1-2 (allows for two negative lags in +# single-site regression). +# This will eliminate from consideration any chronologies that start at a later year. +# The tree-ring matrix will be trimmed to end in the earlier of (yrsp1+2) and (the last year +# of data for any site passing the screening for yrgo1). If yrgo1=NA, the matrix is trimmed to +# start with the first year for which all sites in the basin domain have data. If yrsp1=NA, +# the matrix is trimmed to end with the last year of data at any one of the sites. +N1 <- 50 # in forward extension of SSR matrix, common period of all SSRs must be +# at least N1 year (e.g., 50 +N2 <- 100 # in forward extension of SSR matrix, series needing an extension in year +# i must overlap by N>=N2 years with some other series that does have a value in +# year i. +N3 <- 30 # minimum acceptable number of years for calibration on MSR. Allows 15/15, which is +# ridiculously low, for split-sample validation. +incR2a<-0.01 # Critical increment in adjusted R-squared of MSR model. Stepwise model is assumed to reach +# "approximate maximum" when next step would yield increase in adjusted R-squared less than inR2a. +# Stepwise models in SSRs and MSR are not allowed to proceed beyond the approximate maximum of +# adjusted R-squared. Further, depending on "kstop" (see nex), the model may stop an an even +# earlier step to satisfy constraints on cross-validation. +kstop <-2 # Stepwise forced to stop at either the maximum adjusted R-squared (kstop=1) or at some earlier +# step if cross-validation RE reaches a maximum at an earlier step (kstop=2) +ScreenAnalogPCs <- TRUE # Screen the PCs used in analog reconstruction (methMSr=3) +# by correlation with predictand. If TRUE, only those PCs whose correlations with y +# are significant at alpha-level alphaR (see earlier) are used to identify analogs + +######### MAKE FLOWS MATRIX; TRIM OFF ANY LEADING OR TRAILING NA; STOP IF INTERNAL NA + +V<-as.matrix(V) +v<-as.matrix(V[,2]) +v <- as.numeric(v) # in case any NA in v +v <- as.matrix(v) +yrv <- V[,1,drop=FALSE] +yrv <- as.matrix(as.numeric(yrv)) + +i1<-trimnan(v) # row indices of v with leading and trailing NAs stripped +vTemp <- v[i1] +yrvTemp <- yrv[i1] + +# Check that no internal NA in the nan-trimmed time series of seasonalized climate +L<- any(is.na(vTemp)) +if (L) { + emssg<-'Internal NA (missing value) in the vector of seasonalized climate time series' + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) +} + +# Check that the year increments by 1 in the seasonalized climate series +# (i.e., in case there is a row missing, but no internal NA) +d = diff(yrvTemp) +L<-!all(d==1) +if (L) { + emssg<-'Year for seasonal climate input does not increment by 1' + ResTemp<-emssgUNH(emssg,outputDir) + rm(ResTemp) + stop(emssg) +} + +# Row index i1 OK; re-grab vectors of the climate series and its year +V<-V[i1,,drop=FALSE] # trim the matrix of leading and trailing NAs +v <- v[i1,,drop=FALSE]; yrv<-yrv[i1,,drop=FALSE] +rm(L,d,i1,vTemp,yrvTemp) + +# Check that specified desired start and end year of calibration period consistent with time coverage of +# predictand, v. +if (!is.na(yrgoc)){ + L <- yrgoc < yrv[1] + if (L){ + emssg<-paste('Specified yrgoc=',as.character(yrgoc),' is earlier than start (',as.character(yrv[1]), + ') of seasonalized hydro series v',sep='') + ResTemp<-emssgUNH(emssg,outputDir) + rm(ResTemp) + stop(emssg) + } + rm(L) +} +if (!is.na(yrspc)){ + L <- yrspc > yrv[length(yrv)] + if (L){ + emssg<-paste('Specified yrspc=',as.character(yrspc),' is later than end (',as.character(yrv[length(yrv)]), + ') of seasonalized hydro series v',sep='') + ResTemp<-emssgUNH(emssg,outputDir) + rm(ResTemp) + stop(emssg) + } + rm(L) +} + + +############### TRANSFORM FLOWS (OPTIONAL) +# Allowed are square root or log10. Call a function to do the transform. If transform +# not reasonable physically, function called returns a flag that prompts this script +# to abort and also prints a message to outputDir + +kBogus<-FALSE +Transformed<-FALSE +if (ktran==1){ + # If not call TranFlow, set ResTf to empty list + ResTf<-vector(mode = "list", length = 0) +} else if (ktran==2 || ktran==3) { + ResTf <- TranFlow(v,ktran) +} else { + kbogus<-TRUE +} + +#--- UNH HANDLING OF TRANSFORM MESSAGE +emssg<-'None' # initialize error message +if (kBogus){ + emssg<-'Invalid specified ktran: option must be 1, 2 or 3' +} +if (length(ResTf)==0){ + sTran<-'' +} else { + if (ResTf$flag==0){ + sTran<-ResTf$sTran + V[,2]<-ResTf$x + + } else if (ResTf$flag==1) { + sTran<-'' + emssg<-'Sqrt transform invalid;
series has negative values' + } else if (ResTf$flag==2) { + emssg<- 'Log10 transform invalid;
series not all-positive' + } +} + +# Conditional error message to OutputDir +if (emssg=='None'){ +} else { + # Write error file + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) +} + +# Depending on transform, modify y units, and store with other information applicable to +# all four MSR methods. First might have to modify label for units of y +if (ktran==1){ + # no transform, units OK +} else if (ktran==2) { + LabUnits<-paste('[sqrt',LabUnits,']') +} else if (ktran==3){ + LabUnits<-paste('[log10',LabUnits,']') +} +txtSeas <- paste0(as.character(HydroSeason[2]),'-month season ending in month ',as.character(HydroSeason[1])) +RecListx<-c(Dtype,LabUnits,HydName,txtSeas) # general list for calls to MSR recon + + +###### CHECK FOR INTERNAL NA IN TREE-RING SERIES, ABORT WITH MESSAGE IF FOUND + +emssg<-'None' +for (n in 1:nchron){ + j<-n+1 + u <- as.matrix(U[,j]) + ResTemp<-trimnan(u) # index to rows of nan-trimmed u + u1<-u[ResTemp] + L<-any(is.na(u1)) + if (L){ + emssg<-paste('Internal NA in tree-rng series ',as.character(n),': ',nms1[n]) + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } +} + +################################################################################ +# +# TRIM TREE-RING MATRIX TO COVER JUST THE PERIOD NEEDED FOR SSR'S; COL-TRIM AS +# NEEDED SO THAT TSM INCLUDES ONLY THE CHRONS THAT COULD PROVIDE THE RECONSTRUCTION +# TIME COVERAGE; ALSO ROW-TRIM THE TREE-RING METADATA TABLE ACCORDINGLY +# +# See earlier comments for inputs yrgo1 and yrsp1 +# +# The reconstruction method allows lags t-2 to t+2 on tree ring. Therefore, if you +# specify you want the reconstruction to start in year t0, all series must have +# data in year t0-2. This next section may therefore reduce the number of colunns in +# the tree ring matrix by removing those without data in year to-2. The matrix will +# be row-truncated to begin in year yrgo1-2 and to stop in the earlier of +# [year yrsp1+2 and the last year with data for any chronology] + +mlead<-2; # this many leading tree-ring values are needed to produce first reconstructed value +ResTrim1 <- TrimTsm1(U,yrgo1,yrsp1,nNeg,nPos) +X<-ResTrim1$X # tsm of tree-ring chronologies to be converted by SSR +ix2 <- ResTrim1$ix # index of series in X to the columns of tsm of map-screened chronologies +# provided by system +nms2 <- nms1[ix2] # column names of the (possibly) column-reduced tree-ring matrix +# These ids are identically equal to the colnames (after Year) of X, as returned +# by TrimTsm1() + +# Metadata trimming,and check for exact match of column headers of chronology tsm with +# Ids in the metadata +Tmeta <- Tmeta[ix2,] # row-trim +IdMeta=Tmeta$Id +IdMeta <- gsub(" ", "", IdMeta, fixed = TRUE) +L<-identical(IdMeta,nms2) +#--- Bomb message if not exact match +emsg1 <- c('Ids in header row of time series matrix of chronologies do not exactly match Ids in metadata') +if (!L){ + eBomb<-emssgUNH(emsg1,outputDir) + stop(eBomb) +} + +#--- Compute last allowable end year for SSR calibration. Could be limited by last +# yeqr of available tree rings or last year of available predictand. And must consider if +# lags allowed on tree rings. +yrT <- X[,1] # year vector for tree-ring matrix of those chronologies to be SSR modeled +yrTend <- yrT[length(yrT)]# last year of the SSR-capable tree-ring matrix +if (LallowLags){ + yrspcLimitT <- yrTend-2 # limit on end year of SSR calibration imposed by tree-ring coverage +} else { + yrspcLimitT <- yrTend +} +yrspcLimitv <- yrv[length(yrv)] # limit on end year of SSR calibration imposed by predictand coverage +end +yrspcLimit <- min(c(yrspcLimitT,yrspcLimitv)) # SSR calib period cannot end later than this year + +################################################################################ +# +# CONVERT TREE-RING SERIES TO SINGLE-SITE RECONSTRUCTIONS (SSR's) OF FLOW +# +# All series in X will be converted. The regression statistics and the SSRs will be +# stored. Only a subset of those SSRs, depending on the calibration and validation +# statistics, will ultimately be used in the PCA analysis and final reconstruction. +# The SSR statistics will include a "reject" flag, which will be used to screen out +# bad tree-ring sites. A site will be rejected if any of the following are true: +# 1) p-value of overall F of regression model >=0.05 +# 2) REcv (Reduction of error statistic from leave-9-out cross-validation) <=0 +# 3) RE from either half of split-sample cross-validation <=0 +# 4) Model uses just past tree-ring index to reconstruct current y (optional, see Lcausal input) +# +# SSR modeling is done by reconsw4(), and comments there have more details on the method. +# Essentially, y(t) (flow in year t) is regressed stepwise forward on tree-ring +# {x(t-2), x(t-1), x(t), x(t+1),x(t+2)}. Entry of variables is stopped if no increase +# in validation skill, or very small in increase in adjusted R-squared (see input ktop) + +# SSR time series will be in matrix Y1; these will be the full set of estimated SSRs +nchron2 <- dim(X)[2]-1 # number of chronologies after screening for time coverage +nY1<-nchron2; +mY1 <- dim(X)[1] # Y1 will store the SSRs, and will initially be same size as X +Y1 <- matrix(data=NA,nrow=mY1,ncol=nchron2) # to hold the SSRs +yrY1 <- matrix(X[,1]) +yrgoY1<-yrY1[1,1] +yrspY1<-yrY1[mY1,1] + + +#--- Table of statistics of all models passing the spatial-temporal screening. +# The data frame SSRdf1 is the summary table, described below. A second table, +# SSRdf2, has a similar structure, but includes only those site passing statistical +# screening for a strong, validated, temporally stable signal for flow. + +SSRdf1 <- data.frame(matrix(nrow = nchron2, ncol = 16)) +names(SSRdf1) <- c("N1", "N2","Site","StartC","EndC","Model","Sign","R2adj","Fp", +"REcv","REa","REb","Refit","StartR","EndR","Reject") +# N1, N2, are sequential number in this table, and in the user's full network. +# Site is a site id; StartC & EndC are first and last years of calibration period; +# Model is a coded string indicated which of lags t-2 to t+2 are in final model +# and the order of entry; Sign is a similar string indicating sign of regression +# coefficients +# R2adj is regression adjusted R-square; Fp is the p-value of overall F of the +# regression (pF<0.05 means significant model); +# REcv is th reduction-of-error statistic from leave-9-out cross-validation; REa +# and REb are reduction-of-error for split-sample calibration/validation (e.g., +# REa is for validation on first half when model is fit to second half; +# Refit is a logical (0 0r 1) indicating whether the final selectio of lags +# allowed refitting of the model to a slightly longer calibration period than +# possible if all lags t-2 to t+2 are in model; +# StartR and EndR are the start and end years of the reconstruction (SSR for this site) +# Reject is a logical (0 or 1) indicating if site was rejected for further use in +# in reconstruction. Note that only sites not rejected are used in the later +# PCA step. Numbering n3 therefore goes with sites having a 0 in this column. + + +#--- Generate SSRs +# +# Function reconsw4() is called in a loop over all chronologies in the drawn polygon +# that covers the minimum acceptable reconstruction interval input at the TRISH window. +# Each chronology is converted to an individual estimate of flow by lagged stepwise +# forward regression. Five lagged values, lagged t-2 to t+2 from the year of flow, are +# considered as potential predictors. The forward stepwise process is stopped when an +# an additional step would result in less than c1 increase in adjusted R squared. +# Leave-9-out cross-validation and split-sample calibration/validation are then applied +# to test the skill of prediction and to possibly simplify the model. Input option +# "LallowLags" lets you forgo the lags, and in that case also uses leave-1-out +# cross-validation, +# +# Status: V and X are data frames with prepared flows and tree-ring chronologies + +timeGo<-proc.time() # start timer to check cpu time and clock time for running +yrsCalWindow <- c(yrgoc,yrspc) # calibration of model will consider flows only within this +# window + +SSRprelim<-vector(mode="list",nchron2) # to hold lists from preliminary SSR modeling for each chronology +SSRlags1 <- vector(); SSRlags2<-vector() # initialize empty vectors to hold concatenated lags +# in models (all SSRs for1 ; those passing final screening for 2) +# Fill list SSRdf1 members with network site numbers and site IDs as supplied in list treeMeta +SSRdf1[,2]<-Tmeta$N2 +SSRdf1[,3]<-IdMeta + +# Progress bar strategy. Know have 20 % done and will allocate additional 65% to SSR modeling, which +# can be time consuming, especially when there are many chronologies Will update +# progress every 20 chronologies. If 20 or few chronologies only one updated needed +nslabs <- ceil(nchron2/20) # will divide the available 45% into nslabs increments such than +# percentage work required for SSR modeling will not exceed 45% +pctInc <- floor(65/nslabs) +rm(nslabs) + +iprogress <- 0 # for updating progress bar every 20 SSRs + + +for (n in 1:nchron2){ # loop over tree-ring chronologies + x <- as.matrix(X[,c(1,(n+1))]) # 2-col data frame with year and chronology + + # #debug on test reconsw4 + # # Uncomment block after debugging + # if (n==26){ + # save(x,V,nNeg,nPos,yrsCalWindow,incR2a,Lcausal,LallowLags,MinCalibLength,RequireStable, + # file = "a1.RData") + # } + # #debug off + + ResSSR <- reconsw4(x,V,nNeg,nPos,yrsCalWindow,incR2a,Lcausal,LallowLags, + MinCalibLength,RequireStable) + SSRprelim[[n]]<-ResSSR + SSRdf1[n,1]<-n + SSRdf1[n,4]<-ResSSR$yearsCal[1] + SSRdf1[n,5]<-ResSSR$yearsCal[2] + SSRdf1[n,6]<-ResSSR$ModelCoded + SSRdf1[n,7]<-ResSSR$ModelSign + SSRdf1[n,8]<-ResSSR$RsquaredAdj + SSRdf1[n,9]<-ResSSR$Fp + SSRdf1[n,10]<-ResSSR$REcv + SSRdf1[n,11]<-ResSSR$REa + SSRdf1[n,12]<-ResSSR$REb + SSRdf1[n,13]<-ResSSR$Lrefit + SSRdf1[n,14]<-ResSSR$yearsRec[1] + SSRdf1[n,15]<-ResSSR$yearsRec[2] + SSRdf1[n,16]<-ResSSR$Lreject + + # Build vector of lags in models (1=t-2... 5=t+2) + # Make two versions: one for all SSRs, the other for those passing screeing. + # Result (SSRlags1, SSRlags2) are vectors with the concatenated lags in models. + # Values 1,2,3,4,5 correspond to lags t-2,t-2,t,t+1,t+2 + + SSRlags1 <- c(SSRlags1,ResSSR$Model) + if (!ResSSR$Lreject){ + SSRlags2 <- c(SSRlags2,ResSSR$Model) + } + + #---Store this SSR in matrix of SSRs + irow <- ResSSR$yhat[,1]-yrgoY1[1]+1 # target rows in Y1 + Y1[irow,n]=ResSSR$yhat[,2,drop=FALSE] + + # Update progress if have run through 20 + iprogress <- iprogress + 1 + if (iprogress >= 20){ + # Update progress bar + mssgProg <- paste(as.character(n),'/',as.character(nchron2),' SSR models completed...',sep='') + pctDone <- ProgTrack(pfProg,mssgProg,pctDone,pctInc) + iprogress <- 0 # re-initialize counter + } else { + } +} + +# Progress bar message about SSR modeling complete +if (pctDone>85){ + error('Programming error: pctDone should be less than 85% after SSR modeling') +} +mssgProg <- "SSR modeling completed..." +pctDone <- 85; pctInc <-0 # Move progress to 85% when all SSR modeling done +pctDone <- ProgTrack(pfProg,mssgProg,pctDone,pctInc) + +#---Trim off any all-NA rows of SSR matrix Y1 +i1<- trimRowNA(Y1) +if (is.vector(i1)){ + Y1<-Y1[i1,,drop=FALSE] + yrY1<- yrY1[i1,,drop=FALSE] +} +rm(i1) + +mSSRdf1<-nrow(SSRdf1) # number of rows in the table + + + +#--- Write SSR results for all chronologies models to a file using fprintf +pf1<-file.path(outputDir,paste("Table1-SSR1",".txt",sep="")) +if (file.exists(pf1)){file.remove(pf1)} # must remove old versio of file +fmt1<-"%4s%4s%8s%7s%5s%8s%8s%6s%9s%8s%6s%6s%7s%6s%6s%7s\n" +fmt2<-"%4d%4d%8s%7d%5d%8s%8s%6.2f%9.2G%8.2f%6.2f%6.2f%7s%6d%6d%7s\n" +TitleLine <- 'Table1-SSR1 - Statistics of single site reconstruction (SSR) models' +fprintf('%s\n\n',TitleLine,file=pf1,append=FALSE) +fprintf(fmt1,"N1","N2","Site","Goc","Endc", "Model","Sign", "R2a", "pF", "REcv", "REa", + "REb", "Refit", "Gor", "Endr", "Reject",file=pf1,append=TRUE) +for (n in 1:mSSRdf1){ + fprintf(fmt2,SSRdf1[n,1],SSRdf1[n,2],SSRdf1[n,3],SSRdf1[n,4],SSRdf1[n,5], + SSRdf1[n,6],SSRdf1[n,7],SSRdf1[n,8],SSRdf1[n,9],SSRdf1[n,10], + SSRdf1[n,11],SSRdf1[n,12],SSRdf1[n,13],SSRdf1[n,14],SSRdf1[n,15], + SSRdf1[n,16],file=pf1,append=TRUE) +} +fprintf('%s\n\n','',file=pf1,append=TRUE) +fprintf('%s\n','This table applies to chronologies before screening for hydrologic signal', + file=pf1,append=TRUE) +fprintf('%s\n',paste('Chronologies:',PWtext),file=pf1,append=TRUE) +fprintf('%s\n',PdfDescribe,file=pf1,append=TRUE) + + +#--- Make second table, SSRdf2, a data frame that is a subset of SSRdf1 with just those +# chronologies not rejected according to the Lreject criterion. +Lreject<-SSRdf1[,16] + +# If no chronologies have stable signal for flow, bail, with suggestions to user +if (all(Lreject)){ + emssgThis<- paste('ReconAnalog aborted:', + '\nNo chronology has a stable signal for ', HydName,'.', + '\nSome things you can try: ', + '\n1) turn off \"Reject non-stable\" in "Reconstruction Model Specifications" section;', ### AlexP change + '\n2) use a different climate variable or season;', + '\n3) try a different climate polygon or screening of the tree-ring network.', + sep='') + eBomb<-emssgUNH(emssgThis,outputDir) + stop(eBomb) +} + +# If only one chronology has as stable signal and you have called for PCA, punt +nGood <- sum(!Lreject,na.rm=TRUE) +if ((nGood == 1) && (methMSR==2 | methMSR==3) ){ + emssgThis<- paste('ReconAnalog aborted:', + '\nOnly one chronology has a stable signal for ', HydName,'.', + '\nThe selected multivariabe reconstruction method does not apply. You can try this: ', + '\n1) to get a reconstruction from this one site, select \"SLR\" as reconstruction \"Method\"', + '\n2) try a different climate variable or season;', + '\n3) try a different climate polygon or screening of the tree-ring network.', + sep='') + eBomb<-emssgUNH(emssgThis,outputDir) + rm(nGood) + stop(eBomb) +} + + +ix3 <- ix2[!Lreject] # col-pointer of "accepted" series to original tree-ring matrix +nms3 <- nms2[!Lreject] # ids of series passing screening +SSRdf2<-SSRdf1[!Lreject,] +mSSRdf2<-nrow(SSRdf2) # number of rows in the table +j1<- 1:mSSRdf2 +SSRdf2[,1]=j1 + +pf2<-file.path(outputDir,paste("Table2-SSR2",".txt",sep="")) +if (file.exists(pf2)){file.remove(pf2)} # must remove old version of file +fmt1<-"%4s%4s%8s%7s%5s%8s%8s%6s%9s%8s%6s%6s%7s%6s%6s%7s\n" +fmt2<-"%4d%4d%8s%7d%5d%8s%8s%6.2f%9.2G%8.2f%6.2f%6.2f%7s%6d%6d%7s\n" + +TitleLine <- 'Table2-SSR2 - Statistics of screened single site reconstruction (SSR) models' +fprintf('%s\n\n',TitleLine,file=pf2,append=FALSE) + +fprintf(fmt1,"N1","N2","Site","Goc","Endc", "Model","Sign", "R2a", "pF", "REcv", "REa", + "REb", "Refit", "Gor", "Endr", "Reject",file=pf2,append=TRUE) +for (n in 1:mSSRdf2){ + fprintf(fmt2,SSRdf2[n,1],SSRdf2[n,2],SSRdf2[n,3],SSRdf2[n,4],SSRdf2[n,5], + SSRdf2[n,6],SSRdf2[n,7],SSRdf2[n,8],SSRdf2[n,9],SSRdf2[n,10], + SSRdf2[n,11],SSRdf2[n,12],SSRdf2[n,13],SSRdf2[n,14],SSRdf2[n,15], + SSRdf2[n,16],file=pf2,append=TRUE) +} +fprintf('%s\n\n','',file=pf2,append=TRUE) +fprintf('%s\n','This table applies to chronologies passing screening for hydrologic signal', + file=pf2,append=TRUE) +fprintf('%s\n',paste('Chronologies:',PWtext),file=pf2,append=TRUE) +fprintf('%s\n',PdfDescribe,file=pf2,append=TRUE) + +#--- Make time series matrix of SSRs passing signal for screening (n0n-rejects) +Y2 <- Y1[,!Lreject,drop=FALSE] +yrY2 <-yrY1 + +#---Trim off any all-NA rows of SSR matrix Y2 +i1<- trimRowNA(Y2) +if (is.vector(i1)){ + Y2<-Y2[i1,,drop=FALSE] + yrY2<- yrY2[i1,,drop=FALSE] +} +mY2<-dim(Y2)[1] # number of rows in Y2 +jScreened=SSRdf2$N2 # pointer from cols of screened SSRs +# to columns in original users tree-ring network + +Tcpu<- (proc.time()-timeGo)[1] #...... processing time +Tclock<- (proc.time()-timeGo)[3] #...... clock time + + +################################################################################ +# +# ANALOG EXTENSION OF SCREENED SSR'S ON RECENT END +# +# This extension is included to allow use of as long a calibration period as possible +# for the MSR model when tree-ring chronologies have variable ending year. For an +# example of why this extension might be useful, consider a matrix of 10 tree-ring +# chronologies, 9 of which end in year 2022 and the other in 1998. Say you are using +# a PCA-based reconstruction method, which dictates that the ending year of the +# reconstruction is no later than the earliest-ending chronology. The method described +# here works with the SSRs, or the single-site reconstructions generated from individual +# chronologies, and extends the SSR of the earliest-ending SSR so that it ends in 2022 instead +# of 1995. This extension gives 28 additional years to the calibration period of the +# MSR model. +# +# Have, say, N SSRs. Have a target end year that you want all series to cover. +# The first step is to find the common period for all N SSRs and compute the +# correlation matrix (Spearman) for that common period. +# Loop over all N SSRs, each time defining the current series as "key" and the +# rest as "others." Loop over key series: (1) Spearman r of key with others, and +# sorting of others from most correlated to least. (2) Proceed for next steps going +# from most to least correlated. (3) Pull full overlap of the two series -- this could +# generally be longer than the common period used for the Spearman correlation matrix. +# (4) Loop over the years of key series needing filled in. (5) Fill in all that are possible +# from this member of others. (6) If still values to fill, proceed over more +# of the others, in sequence from the member of others most correlated with key to the +# member least correlated. The analog values is computed as folows. +# +# Analog method used, assuming have a key series and a predictor and the data +# for the full overlap of the two series. Sort the two series from smallest to largest for +# that overlap. Have the value, x, of the predictor series for the year with data missing +# at key series. Compute the non-exceedance probability of that value in the predictor +# series for the overlap. Assign the estimate as the interpolated value of the +# kwy series with the same non-exceedance probability in the overlap. + +# Truncate matrix Y2, yrY2 on early end so that first row has no NA. After that truncation, +# Y2 should have no NAs on early end, but generally will have NAs in some cols on recent end +i1 <- which(complete.cases(Y2)) +Y2 <- Y2[i1[1]:mY2,,drop=FALSE] +yrY2 <- yrY2[i1[1]:mY2,,drop=FALSE] + +#--- Call function to extend tree-ring matrix on recent end +ResME <- tsmExtend(Y2,yrY2,yrsp1,N1,N2) # returns named list with Y, yrY + +#--- Bomb out messages from tsmExtend() +emsgs2 <- c('No need to extend','OK, but yrsp later than last year of data in X', + 'No problem','tsmExtend aborted: common period of all series too short', + 'tsmExtend aborted: insufficient common period of predictor and predictand', + 'tsmExtend aborted: yrX not continuous','tsmExtend aborted: first year of X has some NA') +khow<-ResME$khow +if (khow>3){ + emsg2<-emsgs2[[khow]] + eBomb<-emssgUNH(emsg2,outputDir) + stop(eBomb) +} + +Y3 <- ResME$Y; yrY3 <- ResME$yrY # forward-extend tree-ring matrix +if (any(is.na(Y3))){ + eBomb<-emssgUNH('ReconAnalog() aborted: matrix Y3 has a NA',outputDir) + stop(eBomb) +} + +# Revision 2023-05-16, th en re-revised 2023-11-22, to set the end year for the reconstructed y as the last year +# of the quantile-extended matrix of SSRs. The user should be aware that the recent end of the +# reconstruction could be be based on statistically extended tree-ring data for some chronologies. +# This could be very bad if, for example, the most recent chronology has a weak SSR signal. One of the +# SSR plots shows the drop in strongest SSR signal as chronologies drop out. This plot can be used +# as a guide for the last you should trust the reconstruction. +yrEnd <- yrY3[length(yrY3)] + + +################################################################################ +# +# FIGURES FOR SINGLE-SITE RECONSTRUCTIONS +# +# Idea is that in TRISH user can use radio button choose from 1) bar chart of site-screening, +# 2) boxplot summaries of model statistics, 3) line plot of time coverage of SSRs, and +# 4) z-score time-series plot (annual and smoothed on one set of axes; mean of the SSRs +# after converting to z-scores) +n2 <-nchron # number of sites returned by polygon screening +n3 <- length(ix2) # number of chronologies after screening for reconstruction window +n4 <- dim(Y3)[2] # number of chronologies passing final screening for hydrologic signal + + +#----FIGURE 01. 1x2 OF 1)BAR PLOT SUMMARIZING NUMBER OF CHRONOLOGIES, ORIGINAL AND SCREENED, +# AND 2) ADJUSTED R-SQUARED OF ALL FITTED SSR MODELS AND OF THOSE PASSING FINAL +# SCREENING FOR HYDROLOGIC SIGNAL + + +#--- Numbers of chronologies (bar chart) + +# Preliminaries +xtemp <- c(n1,n2,n3,n4) +DeltaTemp<- 0.1*(max(xtemp)-min(xtemp)) + +#yhi <- 0.1*(max(xtemp)-min(xtemp)) + max(xtemp) +yhi <- DeltaTemp + max(xtemp) +ylo <- 0 +ylims <- c(ylo,yhi) +ylims2 <- ylims +ylims2[2]<-ylims2[2]+0.4*ylims2[2] +DeltaTemp2 <- ylims2[2]/30 + +barnames <- c('N1','N2','N3','N4') + +strAnnote1<-paste('\nN1: source network','\nN2: polygon-selected', + '\nN3: SSR-modeled','\nN4: Passed screening') + +png(filename=paste(outputDir,"Figure01-SSR1.png",sep=""), width = 960, height = 480) +layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) +layout(layout.matrix,heights=2,widths=c(2,1)) +par(mar=c(5,4,4,4),cex.main=1.3) + +bp <- barplot(xtemp,ylim=ylims2,xlab='Screening Stage',col='Pink',border=TRUE, + names.arg=barnames,main='Number of Chronologies',cex.lab=1.3) +text(bp,xtemp+DeltaTemp2,labels=xtemp) +abline(h=0) + +# Annotate meaning of N1, N2, N3, N4 +xtemp <- 3.65; ytemp <- ylims2[2] +text(xtemp,ytemp,strAnnote1,adj=c(0,1),cex=1.2) + +rm(xtemp,barnames,ylims,ylims2,bp,DeltaTemp2) + +#--- Adjusted R squared + +#screen(2) +par(mar=c(5,4,4,1),cex.main=1.3) + +namesBP<-c('N3','N4') +boxplot(SSRdf1[,8],SSRdf2[,8],notch=FALSE, + ylab = "Adj R-squared of SSR Models", + main="Adjusted R-squared",names=namesBP, + cex.lab=1.2) +dev.off() + +#----FIGURE 02. 1x2 OF HISTOGRAMS OF WHICH LAGS ARE IN THE SSR MODELS. 1) ALL SSRS, AND +# 2) THOSE SSRS PASSING SCREENING FOR HYDROLOGIC SIGNAL. EACH SSR MODEL MAY HAVE +# FROM 1-5 LAGS, RANGING FROM t-2 to t+2 YEARS FROM THE YEAR OF FLOW. THE HISTOGRAMS +# SUM OVER MODELS, SO THA THE GRAND TOTAL NUMBER OF LAGS IN THE HISTOGRAM IS +# GREATER THAN THE NUMBER OF MODELS. + + +#--- Left: Histogram of lags, all N3 SSRs + +png(filename=paste(outputDir,"Figure02-SSR2.png",sep=""), width = 960, height = 480) +layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2) +layout(layout.matrix,heights=2,widths=c(1,1)) + +# Left histpgram +par(mar=c(5,4,4,1),cex.main=1.4) +hBreaks<-c(0.5,1.5,2.5,3.5,4.5,5.5) +# Changing x axis +xTicks<-seq(1, 5, by=1) +xTickLabs <- c('-2','-1','0','+1','+2') +n3a<-length(SSRlags1) +title1<-paste('Histogram of Lags (',n3,'N3 Models,',n3a,'Total Lags)') +hist(SSRlags1,breaks=hBreaks,xlim=c(0.5,5.5),xaxt='n', + main=title1,xlab='',cex.lab=1.2) +vtemp<-par('usr') +mtext('Lag (yr)',side=1,line=1.5,cex=1.2) +for (k in 1:5){ + mtext(xTickLabs[k], side = 1, line = 0, outer = FALSE, + at = k, adj = NA, padj = NA, cex = NA, col = NA, + font = NA) +} + + +#--- Right: Histogram of lags, SSRs passing screening for hydro signal + +ylims<-c(vtemp[3],vtemp[4]) # same y limits as previuous +par(mar=c(5,4,4,1)) +hBreaks<-c(0.5,1.5,2.5,3.5,4.5,5.5) +# Changing x axis +xTicks<-seq(1, 5, by=1) +xTickLabs <- c('-2','-1','0','+1','+2') +n4a<-length(SSRlags2) +title2<-paste('Histogram of Lags (',n4,'N4 Models,',n4a,'Total Lags)') +hist(SSRlags2,breaks=hBreaks,xlim=c(0.5,5.5),ylim=ylims,xaxt='n', + main=title2,xlab='',yaxs='i',cex.lab=1.2) +mtext('Lag (yr)',side=1,line=1.5,cex=1.2) +for (k in 1:5){ + mtext(xTickLabs[k], side = 1, line = 0, outer = FALSE, + at = k, adj = NA, padj = NA, cex = NA, col = NA, + font = NA) +} +dev.off() + +#----FIGURE 03. 1x1. TWO-Y-AXIS TIME PLOT TO HELP GUIDE USER IN CHOICE OF +# CALIRATION PERIOD FOR MULTI-SITE-RECONSTRUCTION (MSR) MODEL. +# +# Before extension by tsmEndtend, the signal-screened SSRs generally end in +# different years. These time plots cover the tail years of the SSRs: from +# the last year with data for all SSRs through the last year of the SSR with +# most recent data. One plot is the maximum adjusted R-squared of available +# SSRs. The other plot is the number of available SSRs. Annotated on the plot +# is also the ending year of the observed hydro variable. The user will eventually +# need to select the end year of calibration of the MSR model. This year +# cannot be later than the last year of the observed hydro series. The year could +# be as late as the last year SSR at any site, but this may not be a good +# idea if the adjusted R-squared of the most recent SSR is small. +# +# It is also possible that the last available hydro data for calibration ends +# before the ending year of the earliest-ending SSR. In that case this plot of drop +# in R-squared as chronologies drop out toward the present be just a curiosity because +# the end year of the calibration period cannot be later than the end year of the +# hydro series + +#--- Prepare data needed for the plots +# +# Status. Have full-length observed hydro in 1-col matrices, yrv, v. +# Have the adjusted R-squared of signal-screened models in SSRdf2[,8]. +# Have the corresponding end years of the SSRs in SSRdf2$EndR. +# Have time series of SSRs in matrices Y3,yrY3 +ResSD <- SignalDrop1(SSRdf2$EndR,SSRdf2[,8]) +x1 <- ResSD$x1; x2 <- ResSD$x2; yrx1 <- ResSD$yrx1; yrx2 <- ResSD$yrx1; + +# Want x axis to start year before and end year after the relevant period +yrsEnd <- unique(SSRdf2$EndR) # unique ending years of screened SSRs +xHead <- max(yrv) # head of arrow here; also is last year of available hydro series +#yrLo <- min(yrsEnd) +yrLo <- min(min(yrsEnd),xHead-5) # xHead-5 in case hydro series ends before end of any SSR +yrHi <- (xHead - yrLo) + xHead +yrHi <- max(yrHi,max(yrsEnd)+2) +xlims <- c(yrLo-0.05,yrHi+0.05) # limits for x axis +ylims <- c(min(x1)-0.2,max(x1)+0.2) # limits for y axis + +# Arrow +yHead <- ylims[1]+ diff(ylims)/2 +yTail <- yHead + diff(ylims)/10 +xTail <- xHead+ (xlims[2]-xHead)/2 # x position of tail + +#--- yyplot +png(filename=paste(outputDir,"Figure03-SSR3.png",sep=""), width = 960, height = 480) +par(mar=c(5,5,4,5),cex.main=1.4) +plot(yrx1,x1,xaxt='n',yaxt='n',type="b",pch=1,col='red3',xlim=xlims,ylim=ylims,cex=1, + main='Drop in Signal Strength with Loss of SSRs (Chronologies) on Recent End',xlab='Year', + ylab='Number of SSRs',cex.lab=1.2) +# vertical line at last year of hydro series +axis(1,at=seq(yrLo,yrHi,1)) +axis(2,at=seq(min(x1),max(x1),1)) +abline(v=max(yrv),col='Magenta',lty=2) + +# arrow to the vertical line +arrows(xTail,yTail,xHead,yHead) +txtTemp<- paste('Last year of',Dtype) + +# annotate seasons and end year of specified calibration of recon models +# Calibration period of SSR could end sooner if chronology ends sooner, but +# period not allow to extend more recent than specified year. + +# String for calibration period end year. NA indicates let the data +# determindx the end year, which will depend on then end year of chronology, end year +# of y, and whether lags allowed. +strEnd <- paste(as.integer(yrspc),'=','specified calib. end year',sep=' ') + +# String for latest feasible end year of calibration period. Depends on on end years of +# y and of chronologies, and also on whether lags allowed. The key chronology for this determination +# is the one ending most recently, because ReconAnalog automatically extends SSRs by a quantile +# extension algorithm to the year of the most-recent ending SSR. The actual calibration periods for +# individual SSRs can end earlier than this last feasible end year, because the function reconsw4 +# will trim back the calibration period end year if is not possible given the end year of the +# chronology and the optional lagging. +if (LallowLags){ + yrspF <- yrspcLimit # last feasible end year for SSR calibration period; + strF1 <- ' (assuming lags allowed)' +}else{ + yrspF <- yrspcLimitv # last feasible end year for SSR calibration period; + strF1 <- ' (assuming lags allowed)' +} +strEndF <- paste(as.integer(yrspF),'=','latest feasible calib. end year',sep=' ') + + +txtTemp2 <- paste('\n ',HydroVariable,'=',HydName, + '\n ',LabelSeason1, + '\n ',LabelSeason2, + '\n ',strEnd, + '\n ',strEndF, + '\n ',strF1) +text(xTail,yTail,txtTemp,adj=c(0,0.5),cex=1.4) +text(xHead,yHead,txtTemp2,adj=c(0,1),cex=1.3) + +par(new = T) +plot(yrx2,x2, pch=16, type='b',lty=0,axes=F, xlab=NA, ylab=NA, xlim=xlims, + cex.lab=1.3,cex.axis=1.2) +axis(side = 4) +mtext(side = 4, line = 3, 'Maximum adjusted R-squared') +legend("topright", + legend=c("N of SSRs","Max Adj R-squared"), + lty=c(1,0), pch=c(1, 16), col=c("red3", "black"),cex=1.3) +dev.off() +rm(strEnd,strEndF,strF1) +#rm(txtTemp,txtTemp2,xTail,xHead,yTail,yHead,yrsEnd,yrLo,yrHi,xlims,ylims,x1,x2,yrx1,yrx2) + + + +#----FIGURE 04. 1x1. SCATTERPLOT OF OBSERVED HYDRO (SEASONALIZED HYDROLOGIC SERIES) ON THE +# MEAN OF THE SIGNAL-SCREENED SSRS. THIS PLOT WILL HELP USER DECIDE WHAT TO CHOOSE AS METHOD +# FOR THE MULTI-SITE RECONSTRUCTION (MSR) +# +# Status. +# Y3, yrY3 are matrices with the screened SSRs +# V is matrix of hydro series, with year as col 1 and data as col 2 + +# Prepare the two series for the scatterplot +w <-rowMeans(Y3, na.rm=TRUE) # average of the SSRs (vector) +yrw = yrY3 # +W<- as.matrix(cbind(yrw,w)) # bind yrw and w into a time series matrix +ResPC<- PeriodCommon(W,V)# get common period of W and V +yrgo1 <- ResPC$tgo; yrsp1 <- ResPC$tsp # start and end years of common period +w1 <- ResPC$X[,2]; yrw1 <- ResPC$X[,1]; # mean-SSR and its year, as vectors, for common period +# with observed hydro +v1 <- ResPC$Y[,2]; yrv1 <- ResPC$Y[,1]; # observed hydro and its year, as vectors, for common period + +# Pearson correlation of observed hydro with mean of SSRs +r = cor(v1,w1) +rStr<- paste('r=',toString(round(r,digits=2))) +strMain=paste('Scatter of Mean of',as.character(n4), + 'Single-Site Reconstructions (SSRs) of',Dtype,'on Observed',Dtype, + '\n(Fits are straight-line (red) and loess (blue))') # plot title +rm(r) + +# Strings for plots +ylabTemp <- paste('Mean SSR',LabUnits) + + +#--- scatterplot +png(filename=paste(outputDir,"Figure04-SSR4.png",sep=""), width = 760, height = 480) +par(mar=c(5,5,6,4)) +# Call function from package car for the scatterplot. This function as called will regress w1 on +# v1 and plot the lease-squared-fit straight line. Also plotted is a loess (local regression) curve +# and loess curves to represent variance of the loess estimate. The loess curves use a a span of 2/3 and +# are estimated by R function loess.R. For the error bars, the negative and positive departures from +# the loess estimate of the mean are squared and themselves fit wit a loess curve. The plotted lines are +# at the square root of those squared-departure fits. Because the two bordering smoothed line represent the +# typical positive and negative departure, the confidence interval can be heuristically considered +# a 50% confidence interval. +scatterplot(v1,w1,boxplots=FALSE, + regLine=list(method=lm, lty=1, lwd=2, col="red"), + ylab=ylabTemp, + xlab=paste('Observed',Dtype,LabUnits), + main=strMain,cex.lab=1.2) +text(min(v1),max(w1),rStr,adj=c(0,1),cex=2) +dev.off() +rm (ylabTemp) + + +################################################################################ +# +# COMBINE SSR'S INTO A FINAL MULTI-SITE RECONSTRUCTION (MSR +# Method depends on settings for methMSR and PCApredictors. If PCA is involved in +# reconstruction, method might also depend on settings of nkHowPCA, PCoption +# and nPCsKeep +# +# methMSR has three possible values: (1) simple linear regression, +# (2) stepwise multiple linear regression on SSRs (PCApredictors=false) or their +# PCs (PCApredictors=true), and (3) PCA analog +# +# Simple linear regression is done by calling function RecSLR1 +# The other methods ared done by calling function RecMLR1 + +ReconMethods <- c("Simple linear regression of y on mean of SSRs", + "Multiple linear regression of y on SSRs or their PCs", + "Principal component analog nearest neighbor") +ReconMethod <- ReconMethods[methMSR] +NextFigNumber<-5 # because SSR has already produced figure files Figure01.png to Figure04.png + +# Set calibraton period of MSR to start with latest of [yrgoc;d first available year of hydro series; first available year of mean SSR[ +# Set period to end with earliest of [yrgoc; last available year of hydro series' last available year of mean SSR] +if (methMSR==1){ + # Recon by simple linear regression, using RecSLR1(). + SpecListSLR1 <- list("PdfDescribe"=PdfDescribe,"Text"=RecListx,"u"=w,"yru"=yrw, + "v"=V[,2],"yrv"=V[,1],"yrsC"=yrsCalWindow,"yrEnd"=yrEnd,"nNeg"=nNeg,"nPos"=nPos, + "NcMin"=N3,"NextFigNumber"=NextFigNumber,"outputDir"=outputDir) + # Until RecSLR1() finished, will not code the call with the above inputs; will just have that + # function read MyData from wd. + #save(SpecListLR,file="MyData") + #---- stop + + # Progress bar update + mssgProg <- "SSRs prepared for multi-site reconstruction modeling..." + pctInc <- 10; + pctDone <- ProgTrack(pfProg,mssgProg,pctDone,pctInc) + + + # Call to function for method RecSLR1 + save(SpecListSLR1,file=paste(outputDir,"MyDataSLR1.dat",sep="")) + Z <- RecSLR1(SpecListSLR1) + if (Z$flag>0){ + emssg<-Z$Msg + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } +} else if (methMSR==2 | methMSR==3){ + # Recon by regression on sreened SSRs or their PCs, with call to RecMLR1 + #save(SpecListMLR1,file="MyData"). Note that lags have been dealt with at the SSR step. No + # lags are included in the MSR model. But, nPos and nNeg are used in the MSR model to set + # m in leave-m-out cross-validation, on grounds that the SSRs did use lagging. + SpecListMLR1 <- list("Text"=RecListx,"U"=Y3,"yrU"=yrY3,"nmsU"=nms3,"jScreened"=jScreened,"v"=V[,2],"yrv"=V[,1], + "yrsC"=yrsCalWindow,"yrEnd"=yrEnd,"nNeg"=nNeg,"nPos"=nPos,"incR2a"=incR2a,"kstop"=kstop, + "NcMin"=N3, "PCoption"=PCoption,"f"=f,"PCApredictors"=PCApredictors, + "methMSR"=methMSR,"PdfDescribe"=PdfDescribe, "nPCsKeep"=nPCsKeep,"alphaR"=alphaR, + "ScreenAnalogPCs"=ScreenAnalogPCs, "kHowPCA"=kHowPCA,"NextFigNumber"=NextFigNumber, + "outputDir"=outputDir) + save(SpecListMLR1,file=paste(outputDir,"MyDataMLR1.dat",sep="")) + Z <- RecMLR1(SpecListMLR1) + if (Z$flag == 1){ + emssg<-Z$Msg + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } +} +# Progress bar update +mssgProg <- "Reconstruction modeling completed!" +pctInc <- 0; +pctDone <- 100 +pctDone <- ProgTrack(pfProg,mssgProg,pctDone,pctInc) + +print("Done!") ### AlexP addition to print status to the STDOUT diff --git a/Recon_Katun.init b/Recon_Katun.init new file mode 100644 index 0000000..a8840d5 --- /dev/null +++ b/Recon_Katun.init @@ -0,0 +1,30 @@ +{ + "code_dir" : "/home/dave/GitWork/TRISH-R", + "pdf_dir" : "/home/dave/GitWork/TRISH-R", + "tr_file" : "siteData_Katun.txt", + "trM_file" : "siteMeta_Katun.txt", + "cl_file" : "hydroData_Katun.txt", + "outputDir" : "/home/dave/AAAtrish2/test_out/", + "NameNetwork": "ems1", + "PrewhitenOrder" : 0, + "LallowLags" : true, + "NsitesUserNetwork" : 38, + "YearScreen" : [1786,1994], + "NafterYearScreen" : 38, + "NafterPolygon" : 38, + "HydroVariable" : "RO", + "ClimDatSet" : "CRU", + "HydroSeason" : [9,12], + "yrgoc" : 1940, + "yrspc": 1990, + "ktran" : 1, + "methMSR" : 2, + "PCApredictors" : true, + "kHowPCA" : 2, + "PCoption" : 1, + "nPCsKeep" : 1, + "f" : 0.10, + "alphaR" : 0.05, + "Lcausal" : true, + "RequireStable": true +} diff --git a/Recon_init_explanation.odt b/Recon_init_explanation.odt new file mode 100644 index 0000000000000000000000000000000000000000..e5a1ec6fa7ad8707c5796aee05bbdb43f37b4a7b GIT binary patch literal 66057 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
Vh6{(p-0 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 literal 0 HcmV?d00001 diff --git a/Recon_init_explanation.pdf b/Recon_init_explanation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..024f4900e728956fce4ad7b5f5dbf763b80acf52 GIT binary patch literal 56152 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 literal 0 HcmV?d00001 diff --git a/Running_Instructions_ReconAnalog.odt b/Running_Instructions_ReconAnalog.odt new file mode 100644 index 0000000000000000000000000000000000000000..5e2444c6b1a163eedb0df6b93246ca06c9ba3f58 GIT binary patch literal 46725 zcmb5U1F$H;&o6jv+qUgSH z%#6GgFbE0&00aO)Y@n8g?kE!sIRF5_f7(A0fQ^NXiL-~jiGjVnwS|#^vxS{4y{oM; zot=S`g%h2fy@{={oso-;iLEo8vx&R2{Qsk~fB654F#d5ucDAM#W-gBZ)r}Jqy|bO2 zwV{C{{r?`y)Y{I#+2ns0_0L3?|Mgf{|BZ$AcJ?mz|AGE5Y{dC*a0W(3Ce|kZ9JTvj z+4Y(%wnMgamu}P{5#g!L%ONX_h%)7D8S=R^6YGjZ=NgG%zKI^ArkIQ3FPXxU+`XPXKs+%q3}cEVvwk9GHY>Tk4zcD+-~J#UOWT^2{~cZrkrvzcz> zF1olqeouesW`8jc>Y81Jt@&q)%s%2zn;-C1#Omawz#*Dn%@;rc0RV!40RaBb9Qg01 z@4wQ}#Myw(-NrgbNy;vp0ipL*jUbbHji<354S}-KGja(}v7#+yHMicjUvxD1y04Bg z&bra-Ean|A_kFa~oue)06|56oGSwHwa2I$S1-+5(TW@wZXv?p>7vZ2p#an( z5Dn(JTIHp9C7Zp(kExUxBIXbyR-)WF#xNRLnOGJUb_XO{?|XzXL&|S1kzyk%SA0WI z4u-fAxTBTeR`Xyq(`u$wbvqw>HJlj)R=N~V#2{Gpx&!gydBu3%w@)lqr$n+shC_z& zRL7{;yq3MC>W6)>ksICcy;t4+K<(1CtXgFsi5YfDT|~bPTqXLDCEOmtY}Q@QQ2KyJ zdV!~F*94Jn4tC5N%HH5g1k8Ibw#xUwF6t}t<4oUA1K0=EN0I)nx<(+7m0E{4q9_!f z4rF4GWNPs3M&j?j_gl^_T-Q<;0uEQr4*)a8fLmOUxjO>A%+74q>@J>`-BoxG;*?W+ z!5A1&DVT-i?#)s_VaYRUd8|^|thrl3G@JCI=Hg8=;`(5;mIFLB_d7)-@d-VgKZHMmy)F#K$By%U?AuW#`P0(kBsE)Wc$A@YH&^LRVfcUpU*kBZ{GOZs61LHYsw$vA=ke7JhB z=Gzad$b2Rgqz@WR9*0b41tl&4VbJJo;R^Y7ZZ_7b$_R*!)X#ciL^d_MA7hk??TFTg zn=h?-(3$E9x~WC)(&$F5fn8Rg9$z_{F8i!IQeFM@c2(WhyJ}Uh&{nQI{fuPwCfU1d zI2itbuqAKrW0j-;i&`(NtyXd9EucPCOZg7|m8ZfhEO!aZqOyS&P|TuLw#1e!ZqSaq z6q2Z;es-+y-)WXg3Q;}(YEY~6itRN4BOqu-U}e?4V|cOykjT@h<@pO|9R3()4&k&p zg2RgjrC>5RID$9fNY^ViVbhkjm-P!!`msGO;7Yh`O!H1oQxIlv?WLIkqP7r}k@NKj z0W$De+n(VaIJ?@vZ~3p#h6@x#kJprxrrSdpjKO@`U8o?v@?e^Kqf|}^J#vj=hf4%B zRmYDvHZIzodzd^GW{~Qp76>T?RN|^s_x0g9=fgOF7>ZOR`9` zxg$aXJ~QWgGNe(do_BeB9CBAXb_XTT9fWk8g{ym7=V9nU2RELQ^;7bG^Np|`r^@sdZ)L$6qp1NTC+IvbfN|Lc439{ z)RjDM={-aR8?yC$|FfOaVr>nqbBPjikXiVJ`p zGXjqU!NvVt>Bi(;mLQ`QWE(!}Ngm{G`7>O>u|zDza84#_;QQPo0E|XIQrRVc3oP?X zk+WKHG7`mZ148j0ESV5O7(7aJTy1zZ+8l0uX4oH?FzM{df!Id?z6Tk6kb?2EYB+p*nHmWvsN1 zSi)h3pbWm)jA+LX6^{L$PYLls-NtcidZw4FT2KYyvj**p0!LIU;NZB%g_fkirAka2 z5FRJ)Yl50*5Z!m^q}>*}+p~sz%6bbo2vRfHURs+w$~@^f#sWgbVyprHsnPgV7Dzc% z$E0a|_AKwNO_S-VCr$nY{7Scbn9$Y3@ZrSHTeA)_B*-?!r1%t+@)V|bNAlZt^5~71{(dde*;)xN@{7@~2hqoWh zAse{td@SaE&Y!7fyRC3PB$$K6Zj;|kD(n_7Vt+#BK5QO4TRtRZ=HMrGfHGj$F|T*3 z)B6cb4XF<)R>B2Ie#bdFkz&G9AM-1XavL~G%<(OY<(9w@r{o9<(m-va7^qL@sdqG2 zN=Y}j-Zs@sl(2Hy$kK8U`~WvI#YwL0y1+B;H5be@wQ}b*ZCMSPeS>1IfB1?8+%6Q> z`;?5{-31mIYIRMROa|51f75tBf9kKLLN@6>=enTG?OiW}09R9Bs+Yll!O`qI3C`g6R3TWXm?R&K39^t5w2jl0Xrk3?pNJFTaVdm}kPeUuXJQ#%TLIrB^ zpUhHrdE?Y=Br$c?zn=}Ulm+k9IcFk99+Ge-MzhC9emuKyuH0`+yY#@gFOQy zy+h-D!xIDCZ2aBqgFKxAeLcc`ox}ay!~ETX{e2?+U894%62g3ff`S4=B0|EWBSHeB z!$YE?qWr@Wf})awW78vJ5<=rMW8#yelCt8%{F9>s6JsOOV}mmjBa@Pn5>qqM($iAX zvoli?GE&pCGg7j$vSZQ;;?wezvWk*&%d>I|((}qw^DA@mi?fQVv&$OtQ=^O0V~evA z3vx5dbCZhmb1L&wtBW!l%Cd|8QE5dKbb5 z{oC0y*flubJvKkkRx{kyIN00yx3_tuzk8y;b#ka{eynF`XlQVBVt9ONVs!BD*x#w~ zk;%!)p~=PJnYD?T`N@T~#mS-h>4~+O;gz}3rMan%xzWwV$=$Wt#l^*imGz~yt@V|K zt@WkN&CRKmy_vOx#m&RzowJRd{oTEtmA#Xdz4NWTqpib>-Lvbh)BF9^>4VM1{hf`o zou%Ww)uX+w^Szae!>#+%?Zd;vgOl^qv!kQ)tMikCtMjAF%gdvyhm+g4i<|q~yPMOy zr|bKttH<}-_wR?xqx+kSx0|Eq`|HPl^z!!d_WJzx@%Hlg_WJhu{`~Xv^Dhg2e}7N1 zwt4{oB6%f*1(e-4uD`vMwKQDmp-#zOW1Yr4N_w4lZQWKau3p@Z_hW#3lvzlZxJ(dG zCD+muwecKD>H6W}TK6HK!SRpanPFN(8W5t*^`x-_`B_BuC;b~}?gY}sK&d17sZ5Hc zifcA&R3p$ff@5)(Hj+`M`FdMg`$ywEIj$W$Dqlc`SA45mUOsBZzG}v@{Q#=FSsuWx z(dzZ<2LlHJ2cV$ApuwnVFlaEU|B3!@;eR9gf9w5!LH~!I94eQf--gPE)2OJDT!+(8 z#f}MD^la*?)Wjs4@9UDySLuxUto&yol;lP`S!zGzu1OJZ^? z+2LeKu-Y1Yw`)L~5kdO(n<|A+XJcQ0WIImEl14DkaY+JxDP7>2))3G`rK7Hqz!0a= zTC@Zyw!DxZs6XOvx2@v-W7?>ksMj&q9;<>OGmkFH1K^caoB<;ufW;w7`T8vHhsjR)e>8})Q)tU! z*KbMu<(vpi%HQ=+oIjM*xG;Np2TOnaF1D`B&zF9wwCpVIzIFv^!?m zm}Ns0@@3wcjz%;XccAFC_*w}-5NTPc_;o6TUqmob#@FDmnq)E&cWgAyyl5%PywZ6W z@gRpozR&0G=aA&cNd~|NZ$Yf^DQM$!lp=>;+V&c8dAe)6+HdkT>hn~s9iV^0N|r42 z2+&6Ixz3JVrq$+S17DUM$aOHczVO+Wy<3C-Oc^e)_#sMEs>wF~*RuL=m&-&N444dI zM_}20VFa=o4NFawZF|w`Zr9zB)BepY@<;r4LS6FDfPr*VX825utdjDRl47~ucKU`G z8Oo3xZp*qmbjWSG1@Om9XfcO9$ipw)4`~%+ig^%T#jv4;9EDw)%l+ZT#-1stb9us2v zxBaN=iB^xsOw8(AmD~+nnQxNtN^3Il3kC?%nct~e^74z;8Mzt}} zFnmGLUXVARop*Zh!*lqT)$wRU`{ny8%o{yFdhTDH3&)G*B7jqnR^)i(ISWsDLlQU> z(3(!q`$}1EK>3?&rdSKvIaFuV2`*V73GE8TOw0aTn;?ubzxEEG9$AZOLzSwASGEGA zb4~^O6(yy8I;b~+!}9VvkUuQ(HT#(dXQfET{!w zj;oEezQf90vz*dw0yBxR)iG+U;tH{d1bxAV3aRvJ=T2%Z#z+%bHmIF7;J<8n{suB7 zePo3+x+%CBO1b`?j?h#TyO_94J3PEvN)l=+g=(?^>|^&?ud%%vKCiIq`-N(iZ?I*B zn9^ea!Y+#xuoNn+g|1(XBd{g$P4W$u#97^$P+T?B#TB6KBROOfT0IkyXHM75x}b0P zGmmQAnvK!r()mEb{%Zpb`GQ+(KekaY0uK9Bb|^ZEtLGFzSXzx~yWa=|unSxl{^7+_ z_GR)0sPiD@8wv^`>}lZ=o>d{h@x3heY~Meh3q7^huCP#O-|D3O(C;F2C}TWkTp8$t ztVWiPwv>M_p-R99X0>p6RQ41xzLgROm~Z=pJUZg95&YHZA)yd3{1j>W?QZGYbCD_9 z$pHR*oZwR=w1l{}DY>gg0r+LZ!(}|airc_FWQoX^x8dS&sTful<0QPl!O^5aX63 z?{|lNt3=!5cg-k|wxH*j3&$e;^KB*-+vCD__c?!A4VO(?nA=u^se&nrVhvT?O%J*= zZkmwe-*(dG{=Hcg0}=hY`(mr%Q@6e80%I0XQQYs_E4CKZU!Q7RB$!}?+`lt!4eNPL zAn;27z@SdnMW;(OXLev}$=G%Xu}lC_1wsKzo8_?Mw$vNZzqkI~cE^HlTWOoy>)_e7 zEf?o-0;m$&Bbv`%AgX-Qc#s*OD|&2Hl!2B_l0;gr{j3ltrenaYP&0m_$0w5mdBQ$6|qs0m7(Su?<}BW zpwofI{?o`Uznk1A?x~(`P9G2)pZ*Euu_#j7G~a5J(4k3G7D@?8gFCGLVQv z7P&?b^{Hi1vk|$(qZKD1%5$J*z6(}9U50a*x9s=Z}0Sy z&^pG=#?{uS1h?epF!FuOtk2h;l=rpvmwzLYz9Wi35E0&k@*Q|hawl$Op7&SYg4Qm0M(es z^0tdEmb>Ar5)NieViJ zXEvqYNT958)9akY?Pcy?m#aq0NkHdtAUcvC;N9KqKJq`won13~T=V1q*y;##$h+O< z3|{sngSer^))kZW>t}}IfE&d1VlbHNJiN30cx$qJ=Dl|41_e4uzsaxP8#280<{%na zhcgGk3GB>5m-tVJ^RHqC7W5KKp>tr&PG>n;q2 zJ4>-Y-Jw4S1ii|B1U}=#{sEHy=0B{Vd#K`R9bl8g<9BD=%-&G6j;n&l9Ph;X?bZDJ=+;(QayoQTK+F{9Yh*yM0)3o-OyFgdm5 zKmO*)_GO$SML0vXyOE=AYMS=4a5w41I6O8J_D%_DR)k;2B^Ea0 zoL(qT7aMBDU0*QO$ClYsE_0kd%h!@eYOK|znC77x2#l((Dg#PfTT&CN+?LbY_Zi6I zeAuD-dqk-5?x;l3Icv`Kquuve=U=ezAf0w@6R7b~Pki zsPU6kyWr}x59krVv{Vj1riEjuSP=3-ErOpO5GU=+#8&!GdCcb+A({^n|NSat#dl4w z-W9U&@YHv#*wDMvyeqZUUKd<~O^z+q;@L6~L<1Dn@T7%w$2LyR;`-ag!oV7HSvS>| zn_L1xuugX>C0(@HI|;5zyUUP!?V(in-p(8QOTTYW)wOups(GaN(*vt_LI}S$FWCp~ zfag75^x%ko1f6c0Ry!!N|J(x|3%DS4;)dU&B7ze|MvHp49QB71zaFMTm^3N7hnO9r7Na zm)B1B)sPTZ#jQV5%8Sf4Xi3X^C$Me+kw`@3;!<3?rgmZcTi@-gZD4i?Uz-yP5SW8u zhrD1=#gwMzr-(md$Dk7eYaeNH6^PJ*@T-YRU?>tC1p)?H#R@e*Mw0&%1&!&bl2NF2 z(OSim&HQzL6TP@gSS;84Zja&R4{M>xJ&JVOcPI%pQN(NFcn;3L6IuF=AP!aUCs%h^ zcyuBD?6Yt%qJcp~H*Wsin-Fotlke~W23Bj&i&lYtqAY<^AU*I-Pb+aM)B{-|=r&Ow z^J*5(DSInG00tr0q1d^5v5CU0#xbBB8*&o>qYWJMf>@)JFI1hpYh21vkQh+_KE5=79TwJ5_> zm<%9&$Q0?1-V zPoVw=T;>&++K!#(YLS(9fE&z5P6Ak@8 zpo*to(bD3wGLx(Bp(sGDGEVc0%mvmNYHK+7Q&v$FA|<`VMhukm;aCgEk7Oj>-YE*i zV1adxn(=U`U(hY?Dx;yEkg4;On^E7Rw#yIk1HN5t&duA)SL%pacY<~bYhCY7WGTp0 z4v$;H6mXug4*4ZrPwc&nFnvnkSc6KyuSI@{Dg`x~VO9zs?x|v$B#rQis0CaMjq6Q2 z%fDhPdoIfzO3EQ!eoL7uy^FoI)hu6Ds4SAPx-O_#%)5LUiOtW60;cp)m*>4`$k3`y{` z%y)?ncHf9C*4L*(EsAcE>Yf{o_ZLrpdFWPp|4@?Gow0t*hndPXtMkR+>jtX(o*e@K zw+MSY!du{fLx2{q_JJs^KDzttP;=ki{W;kslhkQU5INw)&-Ee06o%F{q7fjpcs}M- zJ9yD})s$8O{L{qsgf%INIBlt zu*p8#XT$3}AH!EyGN{u>!eU->Q6j}n0Zqf!>a>iCrz`E%md`S!?_J3A^%UOlHDAdQ@IBy5njjb@hwL={CGmZ(zJ#6bSSezqhl{SyRY&OZAV+(b4^JPlxu&bpSES8O zCcM^sapKWSEk>`LF|0&5$<$td6bPUQRzoqRN978ulH>^#Q1ev6ThQ+-`evgO7K&8* zDt|){zcpa6)D!q{zg_9nDzi;_ClPKweAvSzij?~8Uq5uCd$~>fFtHW8MML-%w3Z_Z zarXpY9-&CB=6PV6c4bg+t7Y9LufxPwl&YBp62_j3JE53(>-_F24%u`DgwEre&tFKtD^r!Ix*ox#|RX} zXAcu6ETGy_4(48kYleuiHTZ`>)peA)w3tt1E{gBzYD(7^UZIVn40N`K&gg~Qpnq?X z=aSpOu=2{#E4$r`M0R*PA~T?WkKr0Imw^T&Z9QpU#yaoh1PkNne6%+Zeg+$S=0Oml zxbZ{}1EVzP82Pwp;^Uo~gbekQmE3b&^@-a%-}~vPy;E&S)@g;Sy6_c3 z1A#K)#I?$aw+wAG=782xG}qns%$o00=h+saTZfLC=NeqX_qV;fV3h)x>H}`a2J)iF z#7k{w2NtQNnzPI^G48kK0*AVWiV_Y5K5gDrIff3+LNV#EPs1%|!l+jp35W5m<5`}4r z>4U9h(4rEo(YtN2&{?O;2yrpXgejE`~yxSm&fB7D>M2qk1z%kl39uK|Ac{%Vy+!t-60}YX?I0UhCz5g<^i{`dKJ*@&p+xIh$)LX58ExCJc-$bG%@ab{OnMah5v!04!I(UcC z>iw&+jZWIq^>*^U)4uh$6?B=F$%-Lh#ge3NS8@lbi)3AiQ@&i=2*j^8^-|5Q$}h#Q zk#Lq=zTJ}Q!|SVV0pdH67Hfr;aZ^4K#pK&iun{!7wm}cWo<~DVw-`h3G)OOAYAtP; zEBHy47O7xPtk3~iU|nKJ4TT?N6S;eEq_(BA;%8P6BzGtZP`#(%kM~KuaYsvS8JMRO z&LFOH>FvK&t{NGY$D!r@%M#5I<}Lc;Og(n{lXjKH z8j(X-VIeyEIY~v93a5x+=kJ%iyeJx)@bse1y7dkwrS&e%$G8nbINn~hD=*Iod|18m z5Sc+N#mpwRjXr_r95BPk8X0YfuM^<1dsITp0viQ2QcybmWi)*48~8xo343qJ@00(9 zFJZcB&&jKTEWQK!4?x4FUoU7tLw)O*=ib#GCBXruPT2t_@EFqMl1~>Akb-}lyMv}O z%h*zN1ydh7tBD372w0&uMs$VIYw?*xuM7Ne;s)b!jPVxrJA^~u=p=`BpNhZ6sYj8Y zDYzXZVy|97H2f__`DYgK55c?xq>7r_3{XisOm7YbOm}M#|8;`w(G;BVwpjC`M?)O^ zc>s;w#m3A{-48;iSW%t&9}8CjJChW~PzwE^OaH#L`jr9Ke@PXY!>pW1F3w%Z;Wprv$Ye~+>r*Fgc@b0CQR4{l)cjRu zg)$#DS({K7!5d`fmW30`@$;xEnJimIGlpyih-66nCt?W>V!#@wo%At7C8KQCuuQte zi@Fy)yWoIw{sb@_?Ib{3Q z1azr#4c>unr2Sv}D9~V3)fxU>1_Sy7`XQh}ph2i;F#m+Tg!;i5lyVmVYN^GhF5Voq-=rNL(#y#xXqce&wo1hS5X6le<`?nWrs~9GZ5!}KHUOCP zg}C~UYahLAcEfF4-Bhy)3mo$D&&CGsN~1DEBbzq?Us3cDfjdce(Vh_)YPrlcotzPg z(7IECvmKwZ(tFVs>C@`86r`o&`9x$<&I2=mrC-BuihFnsv}^c&YqwP1(r4?ZxT=_8 zFK7*qRzu!H7$C>EtutbjCUP2N^N~J(n^y{N4=&0DMrOEkgJ5MIl078_i+N&mFoW#1 zXq-T&L2DVSz5lGH5s*E#L+-tIumNpTI#GRKZ@S6tnfPkN8rz`w`YRpT1cqV;q?qR> zpmEUVkX9}_Oegn0?Q&lP>tYW~^_=FLc{H2j0Ya^xxo6R0s+8S|OomOEGRutdWQ8CT@lfySwUB*b>FOU9Fh*iy8a*5j zndwSQ!-BCf{8orQ4Wvt!iR7xhf4ct}ZF)e1!p<)-zvs!-o7DZlKh&^Y+nMz@pn@(N zRswr@Qv@$rvP84|7!n4!D0*JG60=5%*$vSFBF z%IKu8Q4r{m@c67(OnCQJ@R|)`6l8K7Cls_SFtFWrYnnU63lBJ+3)9hbUtLjrSgodh zrref(O;3s8^kG#cWEC}F2=>h?i64Fmo4mq^LCHIV*Qw?Q3scUU$9A@zj0cLl^!eN#6Pwf~Hr3i70dH}4NQ+#h z`W^38PKz+VN$g1s69+P0AQ6f4d|^Q*2#o@@A&|MvycXWNBY5stG!`Wp4`(1cU{1?>qG0{K$!C5=OT)|`4Fhv|J}5~% zMdSUfqVx!g@=vL^W&^!D1246g19FQV1qP%cLP(m{L0-1=3B^YW zm=WzR7p$UQh2COyy7yUZgVty*JP zsNPEZZYSYJ11l7}iUp0WdDo0%fDf3!2hNQr??TlEX%Ee0G4Crl%drH6*Hc|-u=T_bF)V9Al zM8d5!QJ8JT_}}IB+DGCA_1oi!hK~7~JGC6pce>D()ZTla%m7@M(uuLWxTLsdrSX-0 zuy$~fYWy+ayv5ivEGk;6?MfB-?_lgo^3V1LZ}9fh{hxo$i9qV!T>%@Q&_5aXCn{As z4d{^HR-_TS+)2V2_iwa^un5z(6|%4Z2$vzh^;<^3=U!^_=*C4`2Tb5w6do z9^SUZDQNH3GE}m}m~kWQ3qH|9?H>^cKpI*!OL{5*UG!p`9mxu}-XQ4S_%Ee>*!nSu zgJ4XSChw0@j<|zYVn$w4ly%fk$7EInbiT%YeOzOYEzv@#VkFltu-<peufE#;Uei&;7JD?7M&NJo0`P83mKJmuf&C7Tk%x-k|KIr?r_X8Wz;*P@(l1G=j z_deTSR$30d%`Xv4tuKofoO?~U1m#c%l5dRO)_FSNgEgl*@>u6#VCJ7~1-|d+rlG=M zUDjC*YR$dkmAGV@D12ggz)}hfnm{;R1-HV5vXq0vIqtuiEKw$*PU<$Ie&4QtM(y<5 zIFhU>+rn6ij~dIQ^PI0X52ma{o=a5CZwe*+F4kEH=^LxI+qH>20o)qZ*(27Famlof zHfM%VhaRZRP0$Y!Y52i5vo?3`Zc2-WNl?b*SWhR6)|YZ704;W#hCpkjJz=$}EjAND zybQCn%Bwkd0Fq>Hn615UW1h z*M_taIHA6ny`5)+@)?OMpbVBog+HJv-NBLWwoTkO$9CFD3f4UI0M%b#cYvL(405A? z{7g|YeSu*2NW7SGik$p{4J&8JAshvgdWCRzL!;0}rlQnSMn?q# zm3?_uJBC6V2ylRYp?@sky?bHpA5uIM1uGF-Q}s;Ugnq_vuMfA%YKAg+aB z=%MdVX>7bU9dY0{B4Vr!o37w6Mmo=-+A=_@6h(di2`F@7KJcq|6T>`uc9dBVlKNdX zFKxlGK7eSAOSiiUNY*mJ?}>r^8d{lePyrF;!CYvVkL=1&CDN2PbFjZZQw@${PuZ?z z?B>Ep8)e?%Be+z0b<)36$J2nS7w501P+GFhAQVLgn^j9BMwn7bv7g(24L4a-n9s3p zT*x$Rcz2UpekI^QkTDFzsmYc3e7umfMpU@4cQ+!&G3`tDYh>U8=%V*5^o zrtBDnRvgln3VN)`>KY9^awc@1cXI9fnhLjQp7Tqb z0fiD?M_9RJON5?jc64>hVNtz{pRkC(h$F<;vw?=F56(CLn}Xu%mf$9isiA;H6o@0k z;UtBi5zBz5Q&M*Y?rWFeg8XcYp~Az^m-Y*#$*I!})7|o|0?e&BbQW(xA#s)^pSAge z6(}eL9X#|}fUu1>eXXdDM`Oy4Z+fpVtwHrZ;slqL&H4VFGL;$o6t#jptmR}YkGs5~ z0-I*Gh*c7}npJtwv8#8m144M{+y9Xv2Rfe}oyB|O3gYv7COx=hRf=C=3s5YUm(=f_-`-A^`> zSDOH-Tp&_a)32!6eV@$&#_`Jkr?n`Upf{`sc`4u4+F4#7DVaD1aLk5ulS0PFMu;|Y zo>x?M?^#gfqc8-s(JR*eQo=~U!~ueFYn-o+QykuktbTFO3Q6jUbi0a3GypAZ;+UzZWXt3 zNFS$fac#%rWp;G;0+B$a?9iI0AvzjBSNRD#79Sh*h+324`B;2n8_AmZXob-_ZBFFv zo@?sgzf4lMQqqY}q_;N0kYIA8G-cac-HaPIPRLs0K!^!%43jvCrL&O zv#>Dq4WE3mw$+$KZ7oM?NHC&CyZ!53q=mLp5M7c@y@yHt(PuQJdtQ9%`(*v{uduoM zm}BPKt$9XcFgRpdivIZ9pHcYg^7oNt!xJ6iw?|vF_a;oTy2gC}UfN zImn6|7>aa+zUAU_S1IYtoFDH{b&-$!VBMrt8{;k5MHrkO)n$O7g$a3sY_4^!@ws>M z=XEz40gTA|%Pbd>|8BYT+C+galV8O1Z?Sbo`^=h%yc4(@teytDnF-&4zF->A9g%1n zUT{y_fOol8Fv(!%B$}KhQpCcFcQSP;q>VDeL6s_t)Mi*`=59F#A$KuM9NOLLj{H|KV_M5fo}dAkW$5sT$S zM`syIS+j8ywTydb|Ex{8tzc@?QnoOW0*LUcO{!UzM?EbAy8WLAU#Ck z?z)qxrPMRAPuwQb*L*9A&@=s=v{M*Mukdaef-7=y&5v#|WMT5sZLvXRs=3_dw$u4Q zFgsQVLCbA2+^A8cW+X6(e}Fj+iLLvNS(!-xsbVpH8pSEskb*o!?toN7T6qlzGetd9 zWMA3)OUwDf$Q#nB2O?>ML)Lx64oPm0UohT1H&QI4-d@?6;C|zcJvb5kS8_i}L45d; z5v0M0iwY{7xKMw7k{J)eVanm-QSPzZn&SfWrI-{)Ne%nZ zK@b=gwb((H^=Jru#nw!gSH&oD({WYF#W}3irPUFHI$$gdT4T!e2B%qQOj{d@TXbES zOXp34Pe~=(n)y`ACDdH}jFJ{pWDE&aRl%8}%Pcw@}_WO567yG<+glUP%P0=}v5z69Q zM0)`$zp|#zZhQs0*SOm&b_ie%UVz34yrll5?B!th6~jbI33c|AfSjM=XOj2TzxrZi zDW*p;_=0H@NU!jxPO%xS-I z^D4|KyX09z=FM5a6>f1f_~C7y)wQZ7%b{2_0(;D0mw(ffOA%{jCD=}e^sEkzgz4aB z7AcWOUSDV;GIM_%B3`ZcUfdmJnRFd|3chn$%N@jH|MDHJ1v^&|KIq?>gSwjA1zbz1 z0%k8Qc}8K2MzXr-T6kc-DBe<1(LwH9e@`^O><#Xb zaXqBzj7#6)Gq^=K`$c*IjMepVk4jO``rXlem!wE6CWpG=Kc(Dz4~}MTTvcT9^9<>)9u{T5CV*0kh34K!jfvgqS?gtTnFs!5NV z$7ohmHopb8kl1tg6mJ|-Xn(qs3-A7Y8cIYtiI<-%+NZccgs^?9NDBJI9>HlKu$y_{ zFYbJfd(oeLPhU4GbZg!Aq7e#=yM85s_kIFA+{#|;zkpJVJ?S|;lAPspSKOf)*?ci` z8y{Ya?wwD)D0?&DMY}!PUILtHzojjw`K>_EBdV^GZp2| zsS0r)UdxGin6*V+k?Xv5qG+|8tlfJ=i|79a+Euk#AE+vGT*qB%DPR~fb_vfs_Pr;{QLr@R5F)2f!R zd(fyFC)&idd{p)Jll)M9xv}Gf=tNHc*ol3pyj!NDumAl@GSoMfMvBNDb#swFUx`%X z$gXgHl_avun}n1`3oabT+at?E%0u(zRV}cXU%umHX6$fm< zJKL*4-Tho?`M7Db4NSy5(Xb|GKl%jn>y1dkeO1qiDkO0JswXqOIbEL#q2qUCrOVhOB_e+h#kRmp`*R>+>AtvaR zpv3UinTnDZ1;+N}g1VJd!24eZ5?~y&8bNUeo5h*iIdi~TBAWN@uu7XyLEMJ!*AW4g z(erltKZ55Cyxfx>Mh}}#sf?YM6ytZLg?H5bI5$GQ0s`b$Ip~(Fn2HxVA?=nFua!mI z4#f5pL~jzro1qs7hBFuYnZ3#>asFaPV!W%CR}1H_3q#m990sGnAelPS*mv`^N1FbN zwe-L4YLw!6#`EnMf^+?d#i7=QkAg-N0tLL*@*qk>^P;y()%zBG^|p)ZE2Qgbk0>DXtKw*-a${gswO%3Mll**D%m7CUx%chInyJGRT4OM^AH z7(Lce<`vEesl(VU9jKk^aVT$7)aKjd*HIqX3;KmsW$LqCWu_7wKhw&K{u;6;8j6jP zT%|)x9-xGNA;qVJ)9Al zR-2BRHuEJq5^)z#MaAUIE(#(-i_o9z$gNp;Q8nXpj`N047I zpJ}nZPnkfs1^vSY^Ha-Mf`oaWywG8PYSa%aW-)k_3t*$%-vlsbL$e`o|0C3AaP7rA z_c&gC5{)jVQ_}^WBzUS=!s@d-M0}Y1ZdQ{d@p+(tsa-xXjBktOH47P@*%JS)QvPP>ZTHZ$zs6NPD z`8pyhwSS$H)%Se+j|Og0TEiyXN+X4_ggKbEWGukLre z%5*L#H8oSaOxF%8g$wGwUJ|L6{+xg~;E@j0O&vSm-&L1}*YBu|c?+0pb#i%UK~yVh&BUy#u?5c-Au#Z4 z+b;_5BvhvD%~8a=6w<>9lSbz=f7lNMnWmEhO+??9@|k%*04{bv{!e-H322fKv)f&U zILJVmx<6=0UdfGR#4Y0f918E|3kt;lm|z!;2Qq;l&0d19g8Y7q*t|SUWyOJk1!K`U3C|(<}6*fDt7q< zc?*S38giB!4+&^+rUM;yH_8S$LP=G_HOyJ}*)d;L z9So_fXLgaRrdE^p6s@1H!}U*5_?#kahETwQEj$<-uAZ{=lB-eSsc zjUGB-8B-R!bKSdf`x4Ccqa*vi@r23v^3u`4@s4U)Z84>4*+9~f-)hOD% z6(=Y6Ps*>$oucOA(0=7E|88Sf%hw%@C#lauIQN+zP=BtKJ|3k~`EV$B7JXaq#buwa zA!UEHRvJEEFrEwbc^1)sx*;gN{TmDhD=!!fY%6f>kg7Bo5XgB5&-NvsqJ<5;^|7cC3MGm4P%Z!j1MF-+jzHO4kUo;yAoYf7NhRfhO3 zwYD08>O94m0s{?X1*imB$F?XOSVbyuC9YwyFiZZ!ehUl6=d2h%ARkUM^ASKe_&gv>gh3P0$o!Wmb#|^}`+4Cy5BM z=BLW$q*(zx?*x#(Y&yk(&NIMR_k2&EtUHS5UJ#E+51_z4;K0R8qOn)T#_{|h5T=sB zQ!E&tQ~0ZeuNo*PyXQ!}c%@;a-mSHFRib`=rZzN8j!;U6 zc6=5E2yN(xsc8C4@bLi~*9A{rVb zL(*WfRVu$KGgfp8C|Km)5}d@dAk4&Q4on$;FtW9NgyWHtG)I^6HFEy;g@SR#Vt81n z0lHdzN%|5i$)Qs`TXaaR%~>jNeOE92l|UuH10|x>#yU~xd>=Lxc}`m2gUbHYG0a`= zNq_effOBi>@083;5~QpUM``Rdpq2&WbIAjKrl;`e5-~)n+ zLwZX(9vaEIfBbsZ{jM`{0@6Cm@WN@hbp*Fr_x7y(1n-88f*uSXYZ&9IKm+ zlm+7%WvER%YU+le%E_rp&AfJWsM3ZSe}~RCS78Lxk_k6sS(q@|K}Wh#cGqhHjtV_p z;RmmBti{vB5K3J$D7|jD(x!1!H8V}5zt&%402YidK!^tmPqhbFP4-I$!@vA_wJjD5 zR=zG^=-RZ8PXE&^2J;tGk@SX+Fh4XMO!|Izdq;?z=LU8BeiF2c=d?BO)ZfSKEqsOJLmzZ_X3IkE&`5-hhk!19eyQDe+Y7 zC*ZDR5HSwV<|+x>Og%T!*8+=#S3(mvrHri)METxw{_Pgn9srpUf&xgpkNrw00bZdo z7zCXX=Xch{xW3%xLngZBR$ zOqzyS0{A79zPO*w`!5a*wXk7BYeS1mE1I6Tr{kfu0D6O4w!sul{wfQ_?+wO~d7Wnr zz5_h>SYX;cJl4z*zW63sBq!lEX`dzS5%U!zKz&jarY)M#qTYzqtr^k|2E2sl*Qp@8 z%0lrRN#7t*u`}A(XR6L~zV!jX-h=zAAuGT$mB5eycp-w~z|?p_AE?h>JnLQM0kI;$ zs|W8PcJa$^R|#kqir*WIG4tqyn$abJ#&%P+7@PV4@%Y|8*wph=)g`!>32*&9Ub%Ua ztm1;Yf3Qy5x*7OW5_o+=sOUprq*}Qw63?^G=#)g$`@5v7vK)5-VsEcsjci&F^*F2< zHm|_X$KD4Qk0Qe7R$cC@&KgOg2}bCjMR8sR9 zZFuiz+U}!L;1P~UKdy4ooln>~qaQiiXH+>09*zYUttUX`ny%27&%+QiHL1Y!C=3VH z!|D^^B)-MT1M;Pp9Sp8{bb zYm1vk474GN^2I6{bJ=0A3y^~(coX}!uV5sM;FaW_*$#I9jbb`?{oM7!ahV|#Z{o~C`gCFx<{neYA}xi+3#V;` zPF`ezN2MKS%FEdWiC~}Gq%CAB*HTJ+tZ={GMjF2~fv0v1rU%)0^ z=Y%B}`v=c(095S&uNw5!K0z>FfM=fQgcZlE=-rZ)Opo+;%*cD3qX8o7$$Sl7zYm}# zM){C(^9b<#7!3ZvDQvRVn=6r3>nD;7J&4(~+&F!2kGMwfhR!-5Fc?0GPXgQ3*eWCj zg9qoYE5_4X^b046dAtFR2Wd?C4&uF0w2o5Txo{No7I8Ik6%R-d7E!aypWZSN>MSz@CJ)c9WU3p=Ifs&m?HR>7oS)MFoZXB!;C zFefVN;mynNI_Qumbx>fHeDos^Ui?{b2INLndzx|kKLL<~)dWohg63hHdL6Nl{EeuHjW5qdLXoZHD^qQmvo z0>kD9?<8e&d~EsHW4L0|zX77P{)R#-5;(O}SCx0f-qfeUIp%>Hy zXm9t1I~@zqYkWM|*weP*#YuWSxZWqm@E6-YEt%R4;h|JeYd2FG^lh>JzTw)x<=vm| z8!1yck)|QG8z+8*x5tC6BMzs_`n{ro825F>Nn?vHQSsuxf1Uy%kM z57uOST4cND?J&q}(CfJT#Kljwu&~kRaWUAinRQ0e(6_vRPx`2drQj#HAl*3Y9Cyc$ zK5>HsysJ9<3k4&-J$1vkbaz~npk+2#zUk~FTmXmbEBdW19Zk9OS~6#T(5NMI7p7}-#vxv; z-J!`16vv9AGJDc!*SM-SpXzA8U0aDBR+i7J$lT>&vIe-b2kCl;vL;q>(q5%xva>zu2E--=;i>pC&ic2g9$nbtXHi>PNK7)~fnZZF8<$djI#e3j+yq|x*i z?c`wXZs%Z=$febefAL@h|KNYyu+uQz1%`W4kJKZ%*gsX$Ro2Uo2+sFStvlMYmULY1 zIAblbuGuych5qJPoPX<7XG?CJ@o@Q;^WGlxkLNEh^Syn}c)stPQPnqiMlr7F{|i^) zINk}y3yEELo8Rtv0yp(7}u? z^H&7Z%UPjh&}T30bzu*6heHj(r?Ja34&I!LY6c(Dq8@2Hk#}}QsA7bKkLh!I`+P_eBL~8_LkH@fM}I~w$2tHf;;2fun_ygJ{&Ns`{j3D199MD zf7jW8vh1bo`CJ%z0nJo+V>M2nUl9&Vd=igT{PUI6fwMmDZz$0`{YnsHCcG#FFIK6?Ay^^QyE?=l9Xv2UdOY^%07i&BD!`FNLBCjKrJ}`##35 z$-QYBq96ECY*L1gk|sf*V8fR8r1u0Ar7~It)bhFOoh{g>ykdMRlcES3E_jrH^(>{$K8_P!lMw@0ZO3 zo!(;lZ>ZDZxqO6HAa7UI6{0_N$)Rplor>VMK%D0m-PvuFRc1LwtS1IZw7wpaR9$q&Nr%F?n+bB~;qwEg(XlOzcsRx5Py?j=^2cGY9J12BlM(I$e=fP%nku zmFe?`N_(bu*a$}vS>es_q^yEge{gCCNehj~tL1f#rv~0B;PU&+wJk3c3|gsC)+?3h zuSUs8z4C!HDA7gyS);74d2mXptgWe8yX~{=;uS@MJD)sT@CkeQso9Z@347X}?N8aq z9cMmQKjrq%u?al>;AkIMOJ2A($HEP5K3()kZv9RWt_C61Xr!LNTNQdT<3;y3 z;Q25iYbRzm(^py^hsnCxoMw+yJ~d&ARIr|iKE^tW5imdOS4qLNfi!48L1#TlXD?s4 z`UDevQDFEoVOWFS&3mF?O?9|n^fVRI74;HtWi7z)30gU;LR^YAlY#I@jcuUI{4pkW|$`=lkJ0nS`mndH-CU?tj9I6SG)~o&hKn%=3ZTcjy7L2rlUhxy zskAbZiWNmlEm6oJ@5@`D9lRwN zC`ly5iXB@gz<5Q3$WCyUiwLPSoQV>Ec#ZE{htOp%N>-D)W0aLrKliTX6)?ULpN3Y^)Y7YN2SKWbFw@|A0fkIGnJ(sg>k7aSgKU1P0@Gf{x2K zPve?FCj}63+gr4Bp^l=lTM6JOfzmPvZUXC1C|Ys76M;cBWNx3Q7%Nn~dHERxhBbqv zITVG6AAApwcO8w&oRO5>^9lsU3eiOLATScmRFKdT-N7A02#i9fka}Uw)DBP|=m`o3 zH)oU%R(F-5EIq3z%`(5r-#OHbI|Outi9`pgx{k83igMKO%G%{8__sF+@_R`sDp3f& z*8C99g$kxXE12WXa{UE$UZIBKxjp!EUgQ$@LoCOb<`%gKJ!V~5^Vz5YLjT)@hw2p7 zRR@K3++N~@>^8(RXu9yUhK9g zZ%G`WMI)k#@;dY_XE|pn%&(HzhNw&){&n+k{ltK8ywHZ zjA*6%vl2q1Mi}S)IUvanbA;w^6~n&$fU^oXu2qrtgyCK z|Fr)03Q1Gs+J(rv&-1y3#2=zGYiYJ=^!n8=5e$8T&#q*m7mh?Xu&zkK9cHq1@RV;7 zXc}TPcA^+AT)PqZ*2V^eTn5kLOhuoKbNXBXWWt9f61n5Mp z+X91`%q_9d`Yj9(=RyN^J_qrhhk;-i(6ja!_8GfAIm{R@Ni(YJk z#Esz*<{~yV#uzU{N7i{CgV4$rT6JXY8R{_(`U1e1+A_0Ce-Nv7CndA3LPt{QqyO*;*eH*qDvxs`%sCvHrwfwm`ZmuJ?Xaj&ONZ3 zESW0Nj_)(%&IlFKgn}zWTu;|48RU|sR*9-K8>yaM)rvBav8%c(H2{&C>;OsyEgaf{ zZvU}!N&rQANmpf+JJ*muC`nAZfLc-!RoCU}B>U=SB%Xt{;hm~W=lcLLq}>|At+=X? z;5-j+GK!7CeDwa2e2pU`!l#HsniIK!7X-%Q&aTryL?M_NPg&G+Lb7pXXJ$h+CJ%+( zTXeg!{_$3swFK#eU{D-6cRjr+U-vffS09XwWJSflD0HqVN!E9eTL0b$n{-I&Hx*qw zT#TodQ0RB1a+IMrQ?(^4ue!mk%`~0zNP|26;^#L@e3HGDhZxoAhnh|I7nAfm|I7^@ zA?!8oj4;$8_)1jU?UJJfxHXYdTYx__W<Of$;hNtm9So1M+Zx7OUWv*>Z<@VElKcmd1-M@KEj^5{e3F-mL zOTt3mPSdGhOTs&3?#?s5T?Gh=MReo#`>K*K(*NJR4&e;=GfQRyj1?}(a0(gfx3U9q z&odM?bqpI7ohp031eI-LfipcSHva^0>-ppP!Jj}9p1*{965!oB^3fU?ue*R3fLjQR z@D7R=krKQr!cTWxE^sLj7@e2GsP_mbLuAt+e*YMyXvdR?eAs*Eg*8*LBAZ5wvcp^I zExuBUNJj<4%WF_BnvRx_H&jk~4m30kS9^;z{{5QTnWM8sWVA|IoT#^o`6^?vTj8u4 zQ8PV} z3+@|_AGUW?OoR_<7Os%w+zD?nqa8^7@glpTwlr8|+een_dInoe{lhi7p5C^h8mh<* z)&nQUQ7Y^wYY&GYQq&LSlfC6e?_o_yOZJS_S`(A`i--HcTHJcOX{LIn)LL6hpH#X# zTD6lMt;$KYv7_B{V5k+PX@n~y4IjGy~ z>eo!=r$#yKADz*VPg$!uy}bTu@J<2@uI*ztReZAD|Ja7%j@ugY$%*$E`S4gZ{!)OU zU#B&?_S)Aj^hae#HSP2G24nUQ<t&`~K-VJm8vGwVNGUiz~kTc!)ro z*C-@v4DbGg=GmEB!>bPh9op)8kVWhZ;|U8fWWYS3X7$C~+(3x4xrPD%$4iV;9jm)_p z58Qcae|U2^&ludL=+8HtFqJ9#FO-N8H!B#=B00TLI`ZC%xJ zqx@h^ZU?Hy@`FbOLB1(dUS`TXROZRNx${u9RjNSh)Lj9^o1Zzj-(J*Hp>8Ugl-2TF zpc#~cm#@r>EB86oeX5py_PlFbzSNqrPWn(m_X$AeBtY!s&9&p94WA?;Q14Qm0Z%6I z=eFo1=Y{sEvc|r9$vO!ybmI&&{J}?Hd`B-tA*J9+rglt0!g}6^*tdwH|4PAG`5nX; zWOl?v2I}rfS2BZof^k4_vl{Rs!`C4FKE$r%^~)rQg%B&7PNqUfW`h)kDVkqN?Yv|< zg~-J9?9h8I#rXMz(mZtxIK1ZFuB?CI-S@q5@v0Ri2>@N>0T)H`6KlywnemLf=yR~_ zCSJY0MfMI9l$N)0F`K=$r_g!+YB0Cql_>TlL0^%zH}(;5qlDP#l=DjgBSHF1QcShp za`RCRbR{EA(1Vz2JYxWB>AqA*_of2)7r9d!R^8{HN_cihyer)} zcnnrhqGT>lW@n43+OdkjSi52}=tU1Te4`)M0Q4l-=;3Zh+faV;va4T$EcD<`jz*Gx6Kc4+uZo42T; z4duxRf3c%#WT+UE=wknEQuA@K8}-r$|8f#HQ<|`}p-pXs0!zi@aB(-4udSV_7%Hxq zJdAEK)q%FM*j?-{Ux39T<+b%C-!nz-#bT;lxuC1K7ObgX=h~tEPs|&Lxb$r#X-3s!egCV9`DoYgEKb;a;?{ zZ{~A59f<65l#l9P9@Unf_$>sV3l?$9%V9CbVf*~|25r=r+Gnux5|O^?vQNC!t05YW~m20P0c1wq2ma?fJg>DofTa>xi+l_`GZ%FUk-k6?IEN$ zMb`)#W@l0KNkV?doo_T4$qh)k-R(vc%hSd;OFfxWr5Zn;>w+$+pFtKv*S+aBwkGx+jJ2 z>V;t)4-pFSyhw_-GQr;*p)vDARAOmuaf4jCeH?z+mZv?1gEW=!APe1@vxNTN&sj?O zruP{>Nt`G!LIh=~cs>V#AqrMtNREzk2orSRSEGwiT)CSkw)`Z z`M#e3kIu!;D-r!mV%VN*3yA;Gj~_{csUw&ZI(aC!*T6X5=h+TiP>RTH!dPEuCplTvcjBm{*sUXbfVXR#3y;Pk>SsMzHQ7~BZdW3F=wka=4Gfb_bh*3SUY}3} zPBw$KXSP@m^(Q7gni{IuU*RqfoU|0XE9@2as%zhHFn(|GN$2ue8ALjeh6a_{9qsjTVS`c}5Fg7f}c0jtzYq>^y?MNXS zGlRo#Uo?c^w(1zbta$>wh6S(0y2B8FVWtoErGR(UZwSzinJBs#nsYn6J$?i2uo&US z>EI;T43v5GLc7f!#9Vvkph;?21`GDAYNqWo6EJ6>@*NJp#ZNiV^X_uvG)0>yVb)=U zMFT3!euMwQ|IYw$dxV||EV?5GKlW_hLq`mDYG!qAc?LVo_8J25lsFe#tQehh$N4Zl zf)fK^n;k_5t1x6o|B_+ONQVss0z=k9n=Rn?+aQ+j;8{>IjB$XV!5wy({czh1>UNvo z?_M+nrYS#8#x!N0GrtHh!hiU`Z?qjU50DbWi(Le(V`0z>2!k6VHn zw|35Dm;{}d7+1BvZ}+xE1Qd_n))WPP&^>tSe6_sf!YO(Cxw;#tBYe|Q$}Drq`p?x_ zaarpuF-f|lU3Cgn*u`$*?+8lhb#o|LtzH<(@MeY$qVbD;d3Htr?rS2aXu*ziA>+c? z4ymed@JPDz#(1`yABD~`)fq=1jY^8196Hi*767Fx&c|jZVubz1sW{hEcCnqmh*WIC zzTGddO8(p_a-@cdl^u5_d_SIcl(oy8s&vn;EA_YWD#CfI?Bdmdv(|SMj{maV=p4(CU&e^oLVL3oEHp zk_OnMulyJq+fAniNzSUgz3GAkZ**zUbK@zDQKYP>=~SGrkZMO2T zWycXnF{QLM5%3lQLw;v_^sa=lPLqP@s7Nc&^#G9iEqHcmu~OF8*yj~!Kus7g_N%!l zh6`8on7w{4xC2jj`2;2g3|0S>bf7NAS)k;X1~3>)h2w;m>)Gj%L^7sBLT@v(+Y}-h zF_dGM;UzBgn@Y}KylmhW7STUhZ#*kGKJf<4@8f87^+j@7n2W8T*es%iV?TN7wn^94A z4aSUf-Sq8NzrpEii+0W9cZ!o1qt^h2D^Z9UEU0sF8w{%!%kU%&nGG;Qy1gi-2W=rh^b#V z^r=fg9t7ln;b5%PoD5CZ>MC$56Ekk*_%I8v*&G5W?r;GuHll<%itF9j*xXY?8T*_= zd?y2<`E!?_el3>f=P&)6-y=q>SIzJfD@cb&9#Xr(@s$Hc1^Fra3`OfZlG8#j8jMKw zNq=%29JF@_jvwZd)$!N{y0g`fW;8C(RlD`8X-C7H?NB4I}sQ$gC229%Inb6V7Acq z*#*M{Hc#NTgk~wAEHuO?XtSBNjZMszB=c(*rzFjokl%AN@){TIRJ9) zJj)1#4GVaz%DFzI=5%@j=!FoPXKlOAK1vr}RaEg{w;9u>K)qic26 z$F&Me)XVbgguAg?g*aDMfJ+nlNkzM=y1*%#->U7c9<082iQ`CK$)F90ap4kf&4^WY zotfSFp6eW9d<91BxHcr7m(61mgK1qX-bgdoQ83&MPK!7_MCU1HcqS||dxIXH1{gfNw=-;ZiFbk)h*Whf1Z_w{wObV(_~pXU-S6MCLYC__A%@=Oiv zp5MKIm#-`8a%@RIt-V=oeMelWvGc&x#97K&&R%Y;Zo-38&4kA2t9Ztt9Vvx z;H-RH-4C!0)cu_;rc)?@AGRq&JorJI(u+yoPP~l{2uJ1K{+xhpUU8kFpV=V~yfkc1@;$LiYqt+$PM_^=59YgT97xv>Fg9wZ}h}3~-RMD3JBbsBxCSF9N0mQ&l zf~aN$GsFDOQ-%Fvrwr3iFDg{RK;a1eo%t6F2E>N-MwoNBQ4@?>euLw-o*H%!Tih_c z)`f)^z0}^Cr0?|8KXBjp4djq#8 zk%BPk#bgt%SVkjdt}By_1Gi&QQF|Ab)$T$BI;i;Bd<|-ziN&6_$7k@&NJ}7y%cbOGFEg)-!^Q!{JOD)ez zLZ6fAnCAutGrLDqpGK&tC(BR#sb$mu3`z+7X}l{&e;!)*354-c-WFN@;%4}sI~X@h z=33&?UVPZGaVS6hU~0^IV&w3K3p!0J-n|hieIlr->PeX6YYsnY2{hp)pewOTG*(eB z)HFRY^H#9dhIMG{M}zCDsp7m(p@eUK&{6%g5$Q)B@$PugOopDA^_v!IiXSb9<@AdN zgL3rR5lJ&6QZ!su;wye%*8 z_ojk_XC4Lrm1WEYEr8=y^;`U2H_HAVY81FIjrsk)(QNZIl!^t=$3=E#u^`Q%5%-D+uzA9Bb#xlNja2v9OnA&+qHM;hWQ=?7znR`fw6C2{p>*?? z#jXORNyT5$WjlSDRtcXnbk)sD3j1W&0U9qA^zXgi*se~LY| zc_X3^R9D}-A8atB5Oxcud>^ zbnz9v5UCxV)xFYANpA+7wUq5f@2qO~I63qS0t4&Wke1^Pr--dZIJWiJ(cP^BlZjdINXwgB8Mv6if4&MMPCDEPos9ZSZ~oWI`Dg2-QC ziFPy@p_?Z_-HGtV5%}>x!HN)gx*y>wzP$M~#;7hc>z9Z-vc<}Y;^Z;2op^g=&KO76 zoQ0UnYcFhUN*K=oLj3b^Y61+zMy-M#P+i4f6#fC8$9@g{@U09@N7M=1Hi76LPoXRs zIE_dx;QYELjR=_a6^c^;$#A|8gAxBe{P4qD?=bCh!JRmPGWjZg+e3EM)y{P=aLvFO z!YuG0VDMDl{P8=gtMTLn80ZwYk=gVuq_dX`Kj6nxFc==`R2c{0Zx}GnUoZIJJ=e`@ z*ovPyXY6R~-eM2ol4FFANO7!Ha%E!>G@=GCE>2&l)I9bj%jB+iWZ97NhJNGvnDXZ<`+< zQicgbU{P-eeE=_&UdAgmY=&vG_ZlX6!?;0SL09oWskg@gLxEX6MIrVy))O_`Ew;J9 z*vM_fz{W;s{XbwXc-ydm*cYO4I@G|?z2jhZ+_sx7pv66kVZx6Br=~Hjn==^PW`||O zOyih)Eu#_r2AvyG7h z`ts#3g(Sp^d!GHFist7Kv-;EnRq?<}HPgq+iv}aeZ122{tNs^J3#d<72}bv#9y6~0 z+{>nE^V33``TWZU!gw+U#!!SqpB|~-{N;d==f*R8xNB8hUq81$u`u;`N`1zYqY4T8 zgNpeCLy`&V1y9`4mHhB{1EaIPq7go_OAz;=s?m*9i-Mv@^vGBdY{)h~&3{tMG@be! zb2e-5%6Ne2xRiL`buuY^lC;N|K0WxN!3b{Z_cUo%FZR!A(#K~tdNbJyaZS{KJz#Vl zf$afGqX7fiW^LAh23wY-HRwze=-dP|)q1fGUX3oI6IaNdspe*A&=&(}UU!0(ES|KY zz*0a*8bPN;EikH~tUK@MUHLu8wm)IioMf3;WZLj9Vic8+X{Xc~}CdP`6|8Q0)Bpdq}zZHyfCYMLlz zRZj$+)HFzyQ`O^FR*X0d-nJPo>dduT zuCG}`aVB*d`wOiZJV;yZID7FbFQmB6vlAVsQPB`C^W3P-8sP3O0hv+UBLD}1E$1(b zKg1>?c&NA+-r;}Dba;ZCYIxn5ZvJoh9{F`%RJ0VV>wFum@BH#@JZC`MlK|lp(1>)! zUa3mKP2oc0MKF+)Ebx0uFApnsjGm_eM3|AR0V?YrlfQs_* zW+|HRl%5uK$;=?w2S@t0>Lb z?B{@De5+-$6D#$i&}?=ct{Gz)klsHtvjg+7jx*VzcQF|MiVZ2s*DQ8kJTs69+ea;U zp*m)JJa}_SV=%k|*ow+N{TATgJOaFsP>U#IY;!CrfIYgs*IwW{-iwmn%Y{b`suDbUW-HfKqCP`Fzg69t zsi*n1W_eqVo3N)}=TloJll)1Ps6DF<+oOF~LZ{cMC3>1@9^G#cQb}%Je{Lwgy=?G} z_y07jF3ItINA8uKkynL9zZFo2KDlM~LmWQWTObqpV$VQ14B) z5fixv;S|@qrB|OD0$&ovK}-Q9V0R_QzRj}DRjx(Fq@c7rN15cn34y6hZP`68Hs`#R zL?Bfeq!%RmXi{&kO3E`Pxz9^~d|gqhz>etXSM3*?_m3+|ii15J5C18y##+$VVqmZiQRH=_RTG zcNDReO;UYPvDd}`2whrAjv;)n znzE%BeU^#d2#r!mP^X6<+!l{i3^HOuXB2V2`)#KtAvDBkdKw8mr&$q_wZ5b$@Es!N z_h1j?`KcNzC%-RhmKrm+cpkfMtTQCzq~NY#gygynq~gr7!K&=8|JiOBflIO8C={Iw z{s@;=J>f!j95VLm;=w*LSB04w42ZHTlM2|e3bXwvs!a32Tzp{C8ZZu#M+5E^Fe8fD z(%F~Z4es<-O%Ca!GdZI3PR$HCRm%A(6=zuA0*Y#)*##f@#`qpXp(#2HIjjd$=-zSO z>ylRqk`Gm&ajv8TpK2QiYuV>60p6+1!XIZRR~6!%=u*-(Z=fU4S`bVz0$mdP61rMw zzOyY@U%s!2v@iRLcbfBH;%TEDj!wH%0`=g7bgOh|36@=y)rcmk$s$#wpCm+(tBO57 zN>4PVEltG|Fa3ohQM(Qz)ZyOiR|>(I*Q^=zv(?qA|oelobTjW&=`O6_B0 z?9f_o>>yS2#rj*4%yLI(1&gp%IY$et1FZ^4Qr@SI_m624bnBe5nQT762*{WBON6r1 zA+!}0;PhmmL+S&1TPM60af%0xc{PrmuZ zM|#KWxNBa*r$@WzxLvA_{?4C>&+rMK*XISXyrTJp>LdhSE3~$82_D#Ya4Ooa^|4i# zJiRXUKc0sn)dRtbVee(aX9DD7Ap8!~SolS>BN zlzNM00tFQs?mSgH9~nS3Ym9DK2+n=tTO+N;a-Lk{_8R2pX9>k2sf9F}%|G?+Q!8%u zi6sc&5Sl|vyDrFNepbf{I{GGSqgLNDkHFO}D$h)JZ64yA<{V*qD)oZu73GG7C6wLF z>-KB+yf*Gcqn}I4ty%0>`CHpHt0Eu2W%PZ1B16;im??7iEaxbiq>*8#@V;eoBe#Fg z8T=38-wIwd>_*+*Mhh6hOQt;(+OGh zrto~eG1_)XUj!)VBdNz4|5QcL|*!ARqmvXG-!bB*AAlxb@A$aW7_ntFnpF z+hbF}?>q*KN$ZVB18w;|kgSZ_(qqn1_+{LRl{T<403VAw(E6$HI8xH4qgH!yJ(st8 zpQ3#EpWLfDfr-Sei%sVmx z)(Xgh#YiH})|Ff$H|f42ZxE|XTf3cCwd(9zc7sW+dHG14ulwn?sKE-M5jo68M^5Cg zNO-6_qcb_ipy=(-eUIG%Y||!n1Vvf~)J)3ozQ-t?6m?L8kJci$2Z-VyhdWQDa-hdt zflWUTEI0a2lD~XG8U>CtFA7ufFSm9-DLgilWu?8`-*i5KRQS}JOznBzbm4s#kE|@p z=?u5G+TrQ%n0TgZE|ABLh{J2Qrb|2Ib%S3i+wp#ErJk>HsnlS-H$FCP^Ylbh>B7E@ z_KM-|G^uomJI|%<9V&Ea*CPHBZ@KT9zFzs9wqeH8wj0!q>3V7e<+gu zz8EKib(C>O<0dPvC6O>Mn;)lf(l6Tb0)7qvMQ5KqeW@|X>)^^s6YyDsq}wp*TD*b! zV)c^J*N!#roya@en1EWw(yskodxb@XLw$ygA~vhtwxPS~EM=jn1xgC);@)IGtjF83 z2WG;~55a$U54t3)N!|&^507SAbz+|oGxNc9)|98KSPy9TSusHIz=nC z(106eYRXl|_~ZHodUD7mDf)&N$fR3Z4N5q~|0Oa)rnJ)f*$vDuhs74o%rTnToNmEN zM)uYziNAzwq+50`va3#vYB56q5rVv;uk-Z|`2md*Z&@$vZ2db2O(81!3KoJ?EEG-b z*?g+}i{>&(%?9n2vF_p$oDRKx@p0Kk7r@@M(nK7pxPHOKWKA?!Qh ziqTZ%lD>Nrfj@?GP9GIYYlRZ2`+9Q&`&cbma-7+NsAa=Ms|e-kPmgu|&2OPy_bmpQ zxFh5WW359u&|o}~8wdO@1WC>6^rLn-KcJ)&4^_gK@(Ln-nwB1+8qdEqVHhK5n-!z6 z8w&aZZyNMg@z)+1!#o%>`<;Dj^Dx0|?6ixNI};Uj$7gF});kpBL|exVau7VZgK9Br z)51z>h_*@E^hUq{pkM(=&swPKU>B`rI865!n&WMUua;eRaDw%Y+V8}7!%vuoQ&r_3 zg1(LTqNHtxzzk%X;4m~g{vrb2GiqG=*b)p%^N9Y)#{NN9BDgHU$ z&bRXQpc;*>;%De(?Ob@83NdOEd$QlQKu|U-wu3Nq->e5N`HEM(8N_F&`o?ankBTxgxsfh^>dAP& z{2-gk%k?;hHjC5P_wBh_@Ft|uy-$g^guJT)uDL6I)01J`v8B@1PvNs6UM=Wx>5oc} z5B`@p`QG6tOIj}3&Ibq!Gvm(V0;RZ~@x1%6pLDN29JO6`@0h+GnDQw-Bs%2mdo$iL z@lEifys-TG(23KL_Dd{4NT7F#Q6qb7dw4MCh3%!^H;?R!z2Qka$FV_urqMfBw&FEY zOZjXYiT+B@O%kv7S)Z==O@0>3@n+g%oW7^yT+>26Kcbx6qSAm$%#*`8p5 z50JOPHTIxDPjcY?u;RI&!r~TUdru&JItu?Gv5T!2)PRTB|Ey1yo9abS`K$)q#Ein2 z#o+5jeUxvN%wZ$Oog9tqt1EvS4!68qd%)~FLtpQ@oz-K1utEJKU^#{`r@!#b)x#5w z6O0WG7JpHwd7CAAV;ND`F=7lqpT^w=l-BI=T*2Apov-tU0?d#1m7_k*P{p763czV> z=xaiiWAYVqf-@E+2q0fOQ6{g!7OC$eI%CEeL{^592~Wtpv7?M&FrM`b5Ce>ooErm!F2 zeu~Obhbc-%Bt`J1n}3mmCSKtXQpiVofSPhm_x4bJBv`t!Ci|vb#*r5QlnG7>q>Q!) z^IqK`@f$e4aIrt_vSdNtiN%uZYgSQKQDtJNhhfH^6Tz|Vps40LiEhhL>|Ewic!o2V zXc$d1-kH=YA0_jAqs*ABultG{!2A^M*!?|-;kaxDsrZA8N{Smbfw^QgHFXO;`+2&w zkXI#lof<=-ZeBz%h0oPjt?Y>~9MKR)O{Z~{A_&Z|ZWSA4b*1;7)^#FCUbRVN&U zJC6hs&V#M>3Eh8~sF9%A7K+Ey%xdDnjg!K|n*w7YvVT<1pvj2$-oPUG%0NH}jg7|M zX`ZIa-FcnUs|h0G2YzCYYKjZ0Uu{VC2nZjyGFW40l2PlO_Ye}nCzCgaZfGoIYz>)% zs&t3py6EGd(ZVyya}W^%y;%1xQEP6AW1M+*kKVsob3Y$3Jy)aUP$DkXJ$u~%)i zdFU~hGz@DMuPZLx6M18o5ZuIeBKe#^O~_2HH26*Qll#*q3XTaVZO#ds^dybV2$MK(&TYDp&*sr2_iL6Hm>2kpMEinJd3_dsjVafqDe~Qk%#gh?6qV=G^()4a zuOx-*@N4RH+GALP|IckekP%CDl~2>i(f&u4#}bx^E}B z=-kJ)vx~yXgQs>v3QKj8@#<1X6cRluk8!%wrz*IDG8{9927(g728TeXxsn!2i*)=b zGt6wCv3qhH???9oz)rCMrs^x99U)5@krSTaK?ah*ntDv$u|xf$;mv2e)httn>MzUP z&!i0()w{b&7j}jGuTsjWwG&AxpWDNhHxst-z@T1aGcPs-Njjwm=yLF|)1!dx&3a$m zHoX96wUj?1_?|12Ih=loKouI|djdiXV-Ovq<;E?JaYz$hazQ!x3VhgZIdiA5cQg@f z%7cgB6NnzKQhT`au2tk2`V@xglGMf*fFiskL4c!>kJ>zQaGPjFhv5I%v=x<~L>H?x zAT>hD$t^~C6WSfjshMkWVz>F4Vl6nuY%xWU2c8PPOWT4`%Gl)Ff;Y+tfksQ*ZUIF6?VRo>hse4jR#P%52 zE-vS1DRYHt=QaW^H0>|X+0n;d2^t(=NVtRdIuzIQ)cWTgLG(|N%iXgp@wKw$o8gg@3FmeveyJ`mKAcshF+$Fwt6Y4Wv0 zg{H;Qe$Y@tzh%+4twDmGg+TRj0D;j}4vJ8`t8|L(*hTTRAy2kkG?KWvqk|RK$V7X* z@4>-khuD?^M4lt;X#|!Cx~OjOCL0%{AdK9a_KATKUeNF!WYo)^@My{w3u=S8pkM<) z3&u#9NL@qE7}Z`m$$=>?HpyX`Sx%XI*l;kHyumkxV#e~ivyLAcb;zpx_(K;Xj!`W( zfZ4RzDSB8FpBjmosz{j_&Kq5_Rq7|VjJOFV*mUaLz*R-dik(5nw1js@$yzkT(dJ!9 zSMMIt5VmYfqm*!3$ICRWf2dt!M^+n+rJe=j>=|XwLYYWiksevw$MRhUOPvafnjgZ> zADcT`o`d200N9?~>{UfsQr%E{Z{}6%r zr`&&R;-8UG8p0eLS{V)CL@!utLSGT;#CATTg6 zAkqF>8o$r{QQ+Qp930)Oj2#$Ut*uV+bbu?Izh1n9^7_{^p3^?-CG_heMV#oa@Ug8O z_$QlXV1=Vg(l$Pw0E5vfq?7R}jxg1&e#HuAZjIV@aEh=1y_ZcruLYA#lvYLSF4=Gu zh%wsd!+Ueb7$n`Sq8zh zG1-bD!M}u8W9PD2?Kbwb>P}8h!h+mq8}LVrs@>X>`6zi$pG@gDT=Yb6Qt}pTQ^mMf z0hs2!T0<7iDD?K6TIfsRW!-IIB!k{HgdMi2pQ^zycx!JR8%ph`G%>+AgZq$|e{GWq&= z(SazHgy4kIXT7^4TI*@c;kXzzTFb6c+@QTLXvRj1fohc=aX5b-YYE%BlTOYiZ{Blr ziiZU`<6U6p zLFPqk&SubmjquMS!pTy4q3A`oqAtNFOtaItYH)fiQ!GT0J|t7b4bpe+;D4i42^PwW zinsW>%NGO}D6{DAqn@dgnNVjI*ot7JGfp?O_w1e}*jKe@4_#o8hL=$i71^3*K-0p&vcUNglOCdZ+Ts&+@+ZZotI2JV0P`IUZ44 zayHTD;&lP6Aky@KlIdxpcN)-XxkhHK_0APtxH2{BP9H<1rE4h#RQmywBj$n^p zQ!bCDL@3uT%Y~E)HY79uDqy=eJOKX>tLqb;DKAA4`XPE_nNyTO&oOF zi|Z(!jJN#V+LLgEN6?Am)F6iI2pui(Q1tpJ(=unCMu%Jf#z z?k=LT>Qj;pC4d~hLwu1wF?>mW~M+!7wjZ%YyYZd zQUe)Q0|~puV?P;FSd~p~^dylJ@Opn+n{_sRtZ+W89u>S7>J;`kI?(_5+!Bem4YQNc z*tyD3|CY|UtR`oPY#zcrMHz6-STf$zT)_REDD1dO(l6@M!7g&&G&Mvgxl#^6VEd(u z7Z(w(PvicgQsa{F#hA%~0HWHAM~PT=-78vHDA_P*-iGbML&ECK!#cM*Gce4Wqcaca zONs7g5PYj~FNU+Mo7{{BTuD5l>~oJ1K+d@}Jku#P=`&iXI#4la7=|s_$2)FXx66sbD})zp zR1xj;3F3an%E3`{n(%^DdTe!g(ZJK0xwE9spKF&GD12!`#^khd9l>1x_3G9!2v0^o zMldtM^wVeN4TsT-&@H{nUts0Wb(@o;UzOIFznvjcg>YDGeTmXmN8nqA2sE8Pee}6- zbJjar7s=JA&)MIueRNX^J7sGcoaF6LnyDS~}*lX|&jOk}Ko}XHZj*%8Mg*8ue za^?>Lxt+OgmDJ5MKW=VgaI=kX(6mOcWwAxVnALFRw7Wl5NaTVtJ826_VabIg5fVtx`mCjibrVpKvT}+QIZQj;^vjy-0srHV?hi0 zSz+go{RgFLhCaGh5+^c#x)CX}-Ct!tV)SCw7M{x(qXQ_p`I9@^zQ418C-VpA-8qUR zCR9Oj0pvSa?1gYmjr1zVb@Q9cFXAtXxvH*_*<6 z9>`H9$rOE^@);fVX2RdLh32lYtuXAEHMT+5#!@BW%m?uOMLp?U{3$Xsc1%21Rpfctdfp33}J1K z0nK8s2{am+pJjBrLnrl`SlM1SyQZFn-@gau$QPg0Tj~RWysHjutuwlyeDOlal>tzr zI>24XFUqDpOV<?C}X|j(F9Z#@PX~%V~iBi!lGbM}= z__m_R-1vPdq^A=o*HLHo%i+MyhSQgu(+ocW6J|(!=^3Lcl(b{|N1jV^nV?xn$IX;3 zb4oIB%zMHJY?ku2#ubK!gP79U7T+&+Nk59b$bf)ZZ^&lasPxF=Y)A#$D9*xkBr;Vo zR7vj22uMKpTiM_g&M~3H;<3hsj8BAtNA_p3PIT1?QdKQ&2whV4HE9c4E>3w+LRPtx zY2igkq6pVtfI6R@v(?TM)E4D9v~UExgEWZ0g%AF-bZn^ zuDKa0Or*35IXsq$GNQm6$PkAt7KLuKgKP!~;~oUDWDp9;>62fmgeQ#p>Qe(=!%HA4 z0Zu1=&Oby_!T3>$x*ctP!39HJMYtNm^^=cMrtV229ejj4Hn!dBv*7aDIqH8VSk3AD zL0shCMuIre-c)1m-R7lS$>G#)*iu8S_p9ESw0;uapG3Gps4?2K36Fe1uaN$bqbi)R z%Roi91zDJJGjP^azUx_1$IH4mPn+@QV?ER92ED;%z5cPzDU@s z0m2ju&j^&ghlecL*NvpRoJP$8lyq+ydPcTncc8WXu>y3Y1``OQ9>7Iokp8nj6Wc*f z_ZzI-A*^VN})}^PKEuLKuDrdbdADAg((iYLycKgIIbvF$kytDr6E-RDtBp2VwI#r5aDdWP?0dY!g zfA8|i&zYgQhp&6wJ{81|=%ad`sQVEH?8csK!QAi^9O_!-#}QvD#W1ZED?a|3JN>4L z=PqzpE@`*EYZMr2Mug${Eph(K6RMDrRe7!F=8J}kl3gMvNTIGVhT6<6 z#tZ1bkqiq>L8*se*#kvvxZrOB?ZJwRO+oNb>zm*is+m>-CIOCAn+`c*$d(6WHgSm> zpYFcbJW%xW0_hPAYmltR*qmFISz=mfvpWZ!H9hYTci3%A2~?-|p|Wa4l_;({I0> z#F%_bc#(Dfb**IJF^D_AULJgERWtMQ!TCKG*>)9s#mf-;Pb-0hEWY;o#ie20tUH!AbyU-TI)x={%ZjSgUI7c<-0m5$7y7 z$pcO#u5pp*tJodh-8$waJ3@QO0q$`T#0jH8w;?~ApYNxc5(o}RLX0ZjB`##0Geht* zhY<}3r`I@9OrT;izMW{;!cPfpH#kvDC z(L-zteV(A|E4A`+#|NmORrn?AOO}|Iny$h2xVHLg{S~|kI{uM@xZ#zGXGiwY^&4EZ zCc`SpAu^~H#eyMOBcqQ+qVVxF;$X~jq(b1Bv3UCtfs|~hWOu=WvB+hK7hH2SVc6(y zx8Muabz2U+1V-k4UW?@JqoMitD)c>c$>h8w;Sc+U6V@mw@h+%l^34L2u@q*z@uswR z1KQw02M}GpTvDXz!p)mU8Ghqn4BGaUu#%uZjhHVCL~|1$_h}w@K38TcR}HGB0-NB_ zq*2i56r@O$43Z-Ga#%%1;h{;g!Roj%eu1aDhPmBgegO+3(T`7ck%?pUnFxG67TcJK zFRwKvDklzZ!?#z+&cvCm0a=C{0_G~}!_C9AvRXJxoxvPouDD1y_4*E~soh+z#NSVv zXJuvQWV&dc;N}*dkJ*iF(|`FMRgM*(hgHKlS0|jWq(BCX?dGP#TDTD~!$?;}n%0yY zmM;5}o-2@Rs+w8gh?4CKp3=sPJZyP_9ejx3_xQ^%y6YFJf0B%Na9x?Q{{gG`uliVj zb2Wu^XI!;;x$qL`nsOJejH!p2qYeg)b5L?7L&_Q zkVWjv90r|lVaFfs+`vqUhptnX>u7?^8koT#VORo&DP>K~k8tnVCuIZfc;O+W0x2g! z$;pxvqEoqE6oe6&wrM71O{s_B&g(;s>kQ|A>0_c%UXCTEBF3^iL!(~;5RVv|K{}Kt z7U0@Y`pDo2T|;r$C$j3}$7O@ni%#|f^*N$8iky4^qjhpqJAc}7x*!>cr^V%?ta@4LlQQyTj%^L=PApQVBx^HR;S4W)EfJ< zN>sjAZHt+U7FGMYM(cvsUHMR3k%VzA9}c^t%+l}iQ(Bi zzUe3UH8rEoFHFMqDWl|4W^D-b1nt&cf(nFzXOY13att(w!*~Bb$!UU$x{Xi(l#&4Jo5pR*E#o;6}cP~Ug}*&dW|a| zd;!RvZ*0ENNbqJ{ntSR=_eG3uyH=(g!4{t$fb6&`wme%SaUF#VRv{PQFqh>UEw=m#)mcAx+%yIfJJ64^~~ z?ZfLv@)7|<7X3JKzMXolT8A;D{wZ#Nb$>^U-X1j1&rhxLc~i(z@*$+1y{_q{8c1lp7~W_u9R41llHYI;GN+a#$Zg%ysP z8MwRtOthz;`d9rqFh{frAD4XP=aY4(N)5KFs@-5Fu~n4L^9)8jERUyRISqRUaW0Hc zGQS~E&b!__mdIuFghm0kg-%mr59Zxi+H_Ip!#=z4vOR)sY2U<)sab%Ob{`YGGBMZU z;`&jaTYGZfyGpMi(HefuJsRR`bP<&;)!K8{0Vj zPkq7t%N3pf8x&iht&{CqE2l-tjMHPSyrC0COt`M#n#P8EkD#|3LYp*MAPw{GKZNSBX#m^TgTT_5SR1 we}{4YRTv8X64d#-;-9_8Z=d|Hl3w%QcxVL~NT}apDDOYxcc%mQ?f23D0nLP*`v3p{ literal 0 HcmV?d00001 diff --git a/Running_Instructions_ReconAnalog.pdf b/Running_Instructions_ReconAnalog.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d241f675e7064c59645c9bbcc2f776b7308f035 GIT binary patch literal 36346 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 z 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 NWSR#@N7>sv_ya2M^~wMM literal 0 HcmV?d00001 diff --git a/SeasClim.R b/SeasClim.R new file mode 100755 index 0000000..503d1bb --- /dev/null +++ b/SeasClim.R @@ -0,0 +1,115 @@ +SeasClim<-function(X,begmo,endmo,kopt) { + # Seasonalize monthly climate data in a 3-column (year-month-value) input format + # D Meko + # Last revised 2022 MaY 02 + # + # Seasonalize monthly climate data in a 3-column (year-month-value) input format + # + #--- INPUT + # + # X [matrix]: monthly data in 3 columns: year-month-value + # begmo [numeric]: start month of season (1=Jan, 12=Dec) + # endmo [numeric]: end month of season (1=Jan, 12=Dec). + # kopt [numeric]: indicator of how data should be seasonalized + # =1: sum over months + # =2: average over months + # + #---OUTPUT + # + # Output: list with fields + # F [matrix, 2-col] year and seasonalized climate variable + # eflag: error flag + # = 0 no problem + # = 1 input data not consistent in having 12 months per year, with year incrementing by 1 + # + #---NOTES + # + # Seasons may cross year boundary, but may not exceed 12 months in length + + #--- NUMBER OF MONTHS IN SEASON + + if (endmo>=begmo){ + nmos <- endmo-begmo+1 + } else { + nmos <- endmo + (12-begmo)+1 + } + + + #--- GET INDEX TO ROWS OF ALL END MONTH, START MONTH + L <- X[,2]==endmo + i2 <-which(L) + L <- X[,2]==begmo + i1 <-which(L) + + #---ADJUST LAST INDICES SO THAT START MONTH PRECEDES END MONTH + if (i1[length(i1)]>i2[length(i2)]){ + i1 <- i1[-length(i1)] + } + + #---ADJUST FIRST INDICES SO THAT START MONTH PRECEDES END MONTH + if (i1[1]>i2[1]){ + i2 <- i2[-1] + } + + #--- CHECK INDICES + # + # Nummber of start months must equal number of end months; intervals must all be equal to expected number + # of months in season; year of end month must increment by 1 + L1 <- length(i1)==length(i2) + n1 <- i2-i1+1 + L2 <- all(n1==nmos) + yr <- X[i2,1] # years of end month + d <-diff(yr) + L3<-FALSE + if (all(d==1)){ + L3<-TRUE + } + L <- L1 && L2 && L3 + if (!L){ + eFlag<-1 + Output <- list('tsm'=NA,'eFlag'=eFlag,'begmo'=begmo,'endmo'=endmo) + return(Output) + } + rm(L1,L2,L3,L,n1,d) + + + #---BUILD INDEX MATRIX TO PULL SUBSET OF MONTHLY DATA + # + # Index to rows of input matrix X. Goal is to use index matrix to make subset matrix of values in X and + # then sum or average over the submatrix to get the seasonalized data + + I2 <- t(t(rep(1, nmos))) %*% t(i2) # row-dupe end-month indices into matrix with nmos rows + + # Build increment matrix + a = (nmos-1):0 + a=-1.0*a + A <- t(t(rep(1, length(i2)))) %*% t(a) + A <- t(A) + + I3 <-I2+A # Combine into final extraction index matris + nrow <- dim(I3)[1] + ncol <-dim(I3)[2] + + + #---PULL SUBMATRX MONTHLY DATA, SUM OR AVERAGE OVER ROWS, BIND WITH YEAR + + x <- X[,3] # vector of data values + Y <- x[I3] # vector of subsets of monthly data + dim(Y)=c(nrow,ncol) # mxn m is # months in season and n years + + # Treat as P or T + if (kopt==1){ + y <- colSums(Y) + }else{ + y <-colMeans(Y) + } + y <- colMeans(Y) # vector of seasonalized data + + F <-cbind(yr,y) # 2-col matrix, year and value + eFlag<-0 + + #--- ORGANIZE OUTPUT + + Output <- list('tsm'=F,'eFlag'=eFlag,'begmo'=begmo,'endmo'=endmo) + return(Output) +} \ No newline at end of file diff --git a/SignalDrop1.R b/SignalDrop1.R new file mode 100755 index 0000000..65d7271 --- /dev/null +++ b/SignalDrop1.R @@ -0,0 +1,35 @@ +SignalDrop1 <- function(N,r){ + # Drop in maximum climate signal in recent years as chronologies drop out + # D. Meko; last revised 2022-09-20 + # + # Have set of single-site reconstructions, each with a statistic (e.g., R-squared) and + # and ending year that may differ. Want to know how that signal strength drops year by + # year over the interval the chronologies end. + # + #--- IN + # N: vector of ending years + # r: vector of the statistics + # + #---OUT + # + # Output: named list: + # yrx1, x1: vectors of years and number of available series (from N) + # yrx2, x1: vectors of years and maximum statistic for those years + + yr1 <- min(N); yr2 <- max(N); yrx <- yr1:yr2 # yrx is vector of years covering ending years in N + yrx1 <- yrx; yrx2 <- yrx # year vectors for the output + mx <- length(yrx) # length of output vectors yrx1, yrx2, x1, x2 + + A <- t(replicate(mx,N)) # replicate N into matrix with identical rows like N + B <- replicate(length(N),yrx) # replicate year vector covering x1, x2 to identical columns + + L <- A >= B # logical matrix true of ending year in A at least as high as corresp. year in B + x1 <- rowSums(L) # vector of the total number of series in each year + + R <- t(replicate(mx,r)) # row-replicate the vector of statistics to mx rows + R[!L] <- NA # convert to NA the elements representing series not present + x2 <- apply(R,1,max,na.rm=TRUE) # maximum statistic in each year (represents maximum for the + # available series) + Output <- list(yrx1=yrx1,x1=x1,yrx2=yrx2,x2=x2) + return(Output) +} \ No newline at end of file diff --git a/TabSepTsm1.R b/TabSepTsm1.R new file mode 100755 index 0000000..19b17fa --- /dev/null +++ b/TabSepTsm1.R @@ -0,0 +1,86 @@ +TabSepTsm1 <- function(D) { + # Write tab-separated file of reconstruction with CI, plus observed predictand + # D. Meko + # Last revised 2022-06-27 + # + # Called from a script or function. For example, was called by function RecLR1 + # + # D is list with members: + # outDir: string tells where to write file (e.g., "/home/dave/AAAtrish2/test_out/") + # filename: name of output file (without txt; for example, ObservedAndReconstructedTimeSeries) + # header: vector of 5 strings to be headers for columns. For example, + # "Year","Obs RO (mm)","Reconstruction","Lower 50% CI","Upper 50% CI" + # observed: matrix with two columns (year and observed predictand) + # recon: 5-col matrix with year, recon, lower 50% CI and upper 50% CI + # fmtsH: vector of string formats for the column headers (e.g., c[1]="Year") + # fmtsD: vector of string formats for a row of the data matrix + # + # + # Notes + # + # In general, observed could have data extending closer to present then recon. + # Not a problem! + + + #=== UNLOAD + textH <- D$header + Y <- D$observed + V <- D$recon + fnm <- D$filename + fmtsD <- D$fmtsD; fmtsH<-D$fmtsH + outDir <- D$outDir + + #---Trim to complete cases + L <- complete.cases(Y) + Y <- Y[L,] + L <- complete.cases(V) + V <- V[L,] + rm(D) + + #--- Allocate storage + + yrgo <- min(V[1,1],Y[1,1]) + yrmax1 <- max(V[,1]) ; yrmax2 <- max(Y[,1]) + yrsp <- max(yrmax1,yrmax2) + + yrX <- yrgo:yrsp + mX <- length(yrX) + X = matrix(NA,nrow=mX,ncol=5) + + + #--- Fill X + + X[,1]=yrX + + # obs + yr <- Y[,1]; y <- Y[,2] + irow = yr - yrgo + 1 + X[irow,2] <- y + + # recon + yr <- V[,1]; V <- V[,-1] + irow = yr - yrgo + 1 + X[irow,3:5] <- V + + + #--- OUTPUT FILE + + pf = paste(outDir,fnm,'.txt',sep="") + + #--- Title + fprintf('%s\n\n',fnm,file=pf,append="FALSE") + + # Header line + for (n in 1:length(textH)){ + xthis <- textH[n] + fmt <- fmtsH[n] + fprintf(fmt,xthis,file=pf,append="TRUE") + } + + # Data lines + X1 = t(X) + fprintf(fmtsD,X1,file=pf,append=TRUE) + + Output <- NA + return(Output) +} \ No newline at end of file diff --git a/TabSepTsm2.R b/TabSepTsm2.R new file mode 100755 index 0000000..bec335c --- /dev/null +++ b/TabSepTsm2.R @@ -0,0 +1,56 @@ +TabSepTsm2 <- function(D) { + # Write tab-separated file of a time series matrix, with heading line + # D. Meko + # Last revised 2022-08-25 + # + # Called from a script or function. For example, was called by function RecLR1 + # + # D is list with members: + # outDir: string tells where to write file (e.g., "/home/dave/AAAtrish2/test_out/") + # filename: name of output file (without txt; for example, ObservedAndReconstructedTimeSeries) + # header: vector of strings to be headers for columns. For example, + # "Year","RO (mm)","meanSSD" + # observed: matrix with two columns (year and observed predictand) + # recon: 5-col matrix with year, recon, lower 50% CI and upper 50% CI + # fmtsH: vector of string formats for the column headers (e.g., c[1]="Year") + # fmtsD: vector of string formats for a row of the data matrix + # + # + # Notes + # + # In general, observed could have data extending closer to present then recon. + # Not a problem! + + #=== UNLOAD + textH <- D$textH + Y <- D$dataB # year, predictand, predictor + fnm <- D$filename + fmtsB <- D$fmtsB; fmtsH<-D$fmtsH + outDir <- D$outDir + textT <-D$textT # Tail + + rm(D) + + #--- Output file + pf = paste(outDir,fnm,'.txt',sep="") + + #--- Title and header line + fprintf('%s\n\n',fnm,file=pf,append="FALSE") + for (n in 1:length(textH)){ + xthis <- textH[n] + fmt <- fmtsH[n] + fprintf(fmt,xthis,file=pf,append="TRUE") + } + fprintf('%s\n','',file=pf,append="TRUE") + + #--- BODY + X1 = t(Y) + fprintf(fmtsB,X1,file=pf,append=TRUE) + + #--- TAIL + fprintf('%s\n','',file=pf,append=TRUE) + fprintf('%s\n',textT,file=pf,append=TRUE) + + Output <- NA + return(Output) +} \ No newline at end of file diff --git a/TabSepTsm3.R b/TabSepTsm3.R new file mode 100755 index 0000000..b09ed54 --- /dev/null +++ b/TabSepTsm3.R @@ -0,0 +1,52 @@ +TabSepTsm3 <- function(D) { + # Write general tab-separated file of a time series matrix, with heading line + # D. Meko + # Last revised 2022-09-09 + # + # Called from a script or function. For example, was called by function RecMLR1, first + # write PC scores to tab-sep file + # + # D is list with members: + # outDir: string tells where to write file (e.g., "/home/dave/AAAtrish2/test_out/") + # filename: name of output file (without txt; for example, PCscoresTimeSeries) + # textH: vector of strings to be headers for columns. For example, + # "Year","PC1","PC2", etc + # dataB: matrix of data (all numeric) for the body. Time (year) in column 1 and other variables in remaining columns + # textT: text to be written below the time series listing. The "T" stands for "tail." This text + # can be prepared using "paste," with \n to change lines + # fmtsH: vector of string formats for the column headers (e.g., c[1]='%5d') + # fmtsB: vector of string formats for a row of the data matrix + # + # + #=== NOTES + + #=== UNLOAD + textH <- D$textH + Y <- D$dataB # year, predictand, predictor + fnm <- D$filename + fmtsB <- D$fmtsB; fmtsH<-D$fmtsH + outDir <- D$outDir + textT <-D$textT # Tail + rm(D) + + #--- Output file + pf = paste(outDir,fnm,'.txt',sep="") + + #--- Title and header line + fprintf('%s\n\n',fnm,file=pf,append="FALSE") + for (n in 1:length(textH)){ + xthis <- textH[n] + fmt <- fmtsH[n] + fprintf(fmt,xthis,file=pf,append="TRUE") + } + fprintf('%s\n','',file=pf,append="TRUE") + + #--- BODY + fprintf(fmtsB,t(Y),file=pf,append=TRUE) + + #--- TAIL + fprintf('%s\n','',file=pf,append=TRUE) + fprintf('%s\n',textT,file=pf,append=TRUE) + Output <- NA + return(Output) +} \ No newline at end of file diff --git a/Table1Column.R b/Table1Column.R new file mode 100755 index 0000000..5197601 --- /dev/null +++ b/Table1Column.R @@ -0,0 +1,105 @@ +Table1Column <- function(D) { + # Write table with just 1 column of data after column of variable names + # D. Meko + # Last revised 2022-06-26 + # + # Called from a script or function. For example, was called by function RecLR1 to gene + # tables of statistics for calibration, validation and analysis of residuals of + # reconstruction model. Table has (H)ead, (B)ody, and (T)ail. + # + # D is list with members: + # outputDir: string tells where to write file (e.g., "/home/dave/AAAtrish2/test_out/") + # textH: header text; vector of strings whose elements are lines of text to go above the + # the table. textH[1] is special, will be the first line, and is also (without ".txt"), the + # file name of the output table. For example, "Table3-MSR-LR1-Calibration". textH[2] is + # text that, after " - ", will be printed after the filename at the top of the table. + # Remaining textH[?] are the column headings. + # textB: variable names; vector of strings to be printed in first column + # TfmtB: string with the format for column 1 (e.g., '%10s\t). Be sure that + # 1) the number before "s" is at least as long as any string in textB + # 2) you use "\t" to make tab separation of cols 1 and 2 + # dataB: corresponding variables as named in calling program; a vector of data variables + # DfmtsB: data formats for body; vector of strings that are fprint formats. For example, + # "c('%-8g','%-6.2f). Keep in mind: + # 1) formats in DfmtsB go 1-1 with data in dataB; consider formats accordingly + # 2) the "-" in the format strings left justify column 1 + # textT: tail text; vector of strings, each of which is a line in the tail under the table + # If do not want a tail, make textT and empty vector (textT <-c()) in calling function + # + # Notes + # Title line is followed by a blank line. Vector textH might have only one element. If more, those + # lines of head text are followed by another blank line. + # Table body has a line of "===================" above and below + # Body is followed by optional "tail," which, if it exists, is separated by a blank line from + # the "=================" below the body. + + + #=== UNLOAD + + textH <- D$textH + textB <- D$textB + TfmtB <- D$TfmtB + dataB <- D$dataB + DfmtsB <- D$DfmtsB; + textT <- D$textT + outDir <-D$outDir + rm (D) + + #--- BUILD OUTPUT FILENAME + + # Build path/filename for output file + TableTitle <- textH[1] # will be (with suffix txt) the outfile name, such as + fnm <- paste(TableTitle,'.txt',sep="") + pf1 <- paste(outDir,fnm,sep="") + + if (file.exists(pf1)){file.remove(pf1)} # must remove old version of file + + # Line to go above and below table + baseLine <- "=========================================" + + #=== HEADER + + for (n in 1:length(textH)){ + if (n==1 | n==length(textH)){ + fmtthis <- '%s\n\n' + } else { + fmtthis <- '%s\n' + } + vThis = textH[n] + if (n==1){ + vThis <- paste(vThis,' - ',textH[2]) + fprintf(fmtthis,vThis,file=pf1,append=FALSE) + } else if (n==2){ + # nothing + } else { + fprintf(fmtthis,vThis,file=pf1,append=TRUE) + } + } + fprintf('%s\n',baseLine,file=pf1,append=TRUE) + rm(vThis, fmtthis, textH, n) + + + #=== BODY + + nT <- length(dataB) + for (n in 1:length(dataB)){ + DfmtB <- DfmtsB[n] + Tdata <- dataB[n] + vName <- textB[n] + fprintf(TfmtB,vName,file=pf1,append=TRUE) + fprintf(DfmtB,Tdata,file=pf1,append=TRUE) + } + + #=== TAIL + + fprintf('%s\n\n',baseLine,file=pf1,append=TRUE) + nTail <- length(textT) + fmtT <- {'%s\n'} # for lines of tail + for (n in 1:nTail){ + vthis <- textT[n] + fprintf(fmtT,vthis,file=pf1,append=TRUE) + } + + Output <- NA + return(Output) +} \ No newline at end of file diff --git a/TablePCA1.R b/TablePCA1.R new file mode 100755 index 0000000..c88d8b0 --- /dev/null +++ b/TablePCA1.R @@ -0,0 +1,116 @@ +TablePCA1 <- function(D) { + # Write PCA summary table, including list of loadings + # D. Meko + # Last revised 2022-09-07 + # + # Called from a script or function. For example, was called by function RecLR1 + # + # D is list with members: + # outDir: string tells where to write file (e.g., "/home/dave/AAAtrish2/test_out/") + # filename: name of output file (without txt; for example, Table3-PCA1.txt + # header: vector of strings to be headers for columns. For example, + # "N","Site#","SiteID","PC1", "PC2", etc + # P: list with loadings and other data needed + # fmtsH: vector of string formats for the column headers (e.g., c[1]="Year") + # fmtsB: vector of string formats for a row of the body of table + # 1 applies to cols 1 and 2) "N" and "Site#" + # 2 applies to col 3 (site ID) + # 3 applies (after replicating) to remaing columns (e.g., '%-12.8g\t) + # + # + # Notes + # + # Column header and numeric format widths should be compatible; moreover, + # Col 1 should have width no smaller than 4 (to accomdate "Cum%') + # Col 2 should have width no smaller than 5 (to accomodate "Site#") + # Col 3 should be sized as large as length of longest site ID + + #=== UNLOAD + textH <- D$textH$Heading + DfmtsB <- D$DfmtB + DfmtsH <- D$DfmtH + fnm <- D$textH$Title + tit1 <- D$textH$SubTitle + fmtsB <- D$fmtB; fmtsH<-D$fmtH + TfmtB <-D$TfmtB + outDir <- D$outDir + textT <-D$textT # Tail + Y <- D$dataB$ResPCA$Loadings + EV <- D$dataB$ResPCA$EigValues + PctVar <- D$dataB$ResPCA$PctVar + CumPctVar <- D$dataB$ResPCA$CumPctVar + jScreened <- D$dataB$jScreened + SiteID <- D$dataB$SiteID + textT <- D$textT + BunnyTrack=D$BunnyTrack + rm(D) + + + nPC <- dim(Y)[2] # how many PCs + nSites <- nPC; # same number of variables + jPC <- 1:nSites + + #--- Output file + pf = paste(outDir,fnm,'.txt',sep="") + + #--- Title and header line + fprintf('%s\n\n',paste(fnm,' - ',tit1,sep=""),file=pf,append="FALSE") + fprintf('%s\n',BunnyTrack,file=pf,append="TRUE") + + # first three col headers + for (n in 1:3){ + xthis <- textH[n] + fmt <- TfmtB$Left[n] + fprintf(fmt,xthis,file=pf,append="TRUE") + } + # headers for PCs + for (n in 4:length(textH)){ + xthis <- textH[n] + fmt <- TfmtB$Right[[n-3]] + fprintf(fmt,xthis,file=pf,append="TRUE") + } + +#--- BODY, PART 1: LOADNGS + +for (n in 1:nSites){ + # First 3 columns + xthis <-c(jPC[n],jScreened[n]) + # The sequential number and the database site numer + for (m in 1:2) { + fmt <- DfmtsB$Left[m] + fprintf(fmt,xthis[m],file=pf,append="TRUE") + } + # Site id + fmt <-DfmtsB$Left[3] + fprintf(fmt,SiteID[n],file=pf,append="TRUE") + # Loadings on this site + xthis <- Y[n,] + fmt <- DfmtsB$Right + fprintf(fmt,xthis,file=pf,append="TRUE") +} + +fprintf('%s\n','',file=pf,append="TRUE") # blank line + +# Eigenvalue line +fprintf('%s\t\t','Eigenvalue ',file=pf,append="TRUE") +fmt <- DfmtsB$Right +fprintf(fmt,EV,file=pf,append="TRUE") + +# Lines for % Var. and Cum % Var.Eigenvalue line +fmt <- DfmtsB$Pctg +fprintf('%s\t\t','Pctg Variance ',file=pf,append="TRUE") +fprintf(fmt,PctVar,file=pf,append="TRUE") + +fprintf('%s\t\t','Cum. Pctg Variance',file=pf,append="TRUE") +fmt <- DfmtsB$Pctg +fprintf(fmt,CumPctVar,file=pf,append="TRUE") + +fprintf('%s\n',BunnyTrack,file=pf,append="TRUE") + + #--- TAIL + + fprintf('%s\n','',file=pf,append=TRUE) + fprintf('%s\n',textT,file=pf,append=TRUE) + Output <- NA + return(Output) +} \ No newline at end of file diff --git a/TableWrite1.R b/TableWrite1.R new file mode 100755 index 0000000..371d32e --- /dev/null +++ b/TableWrite1.R @@ -0,0 +1,67 @@ +TableWrite1 <- function(D) { + # Write table with any number of columns and rows + # D. Meko + # Last revised 2022-09-08 + # + # Called from a script or function. For example, was called by function RecMLR1 + # to write table of correlations of PC scores with some variable y. + # Table has (H)ead, (B)ody, and (T)ail. + # + # D is list with members: + # outputDir: string tells where to write file (e.g., "/home/dave/AAAtrish2/test_out/") + # textH: header text; vector of strings whose elements are lines of text to go above the + # the table. + # textH[1] is special, will be the first line, and is also (without ".txt"), the + # file name of the output table. For example, "Table4-PCA2" + # textH[2] is a short descriptive caption, for example ("Correlation of PCs with RO") + # textH[3-?] are column headings + # dataB: named list with the table data. Columns must be compatible with textH[3]. Number + # of rows in table is computed from contents of DataB. + # fmtHB: named list with formats for header row (Head) and table row (Body) + # textT: text to go below table (T="tail"). Multi-row easily written by using + # "paste" in combination with \n. + # + + #=== UNLOAD + + outputDir <- D$outputDir + textT <- D$textT + textH <- D$textH + dataB<- D$dataB + fmtH <- D$fmtHB[1]; fmtB <- D$fmtHB[2] + BunnyTrack <- D$BunnyTrack + + ncol <- length(textH)-2 # number of columns in table (first two elements title a) + H <- textH[3:length(textH)] + + + #=== BUILD FILE NAME AND WRITE TITLE AND HEADER + + fnm <- textH[1] + pf = paste(outputDir,fnm,'.txt',sep="") + xthis <- paste(fnm,': ', textH[2],sep='') + fprintf('%s\n\n',xthis,file=pf,append="FALSE") + fprintf('%s\n',BunnyTrack,file=pf,append="TRUE") + fprintf(fmtH$Head,H,file=pf,append="TRUE") + fprintf('%s\n',' ',file=pf,append="TRUE") + + #=== BUILD BODY + + fmtBody <- fmtB$Body + var1<-dataB[[1]] + for (n in 1:length(dataB[[1]])){ + # PC number + fmt <- fmtBody[1] + xthis <- var1[n] + fprintf(fmt,xthis,file=pf,append="TRUE") + # data vector + fmt <- fmtBody[2:length(fmtBody)] + xthis <- c(dataB$r[n],dataB$Thresh1[n],dataB$Thresh2[n],dataB$r1PC[n]) + fprintf(fmt,xthis,file=pf,append="TRUE") + } + fprintf('%s\n\n',BunnyTrack,file=pf,append="TRUE") + fprintf('%s\n',textT,file=pf,append="TRUE") + + Output <- NA + return(Output) +} \ No newline at end of file diff --git a/TranFlow.R b/TranFlow.R new file mode 100755 index 0000000..4b7597a --- /dev/null +++ b/TranFlow.R @@ -0,0 +1,82 @@ +TranFlow<- function(x,ktran){ + # Transformation of flows or some other single time series. + # D. Meko; last revised 2021-12-26 + # + # x, [matrix]r the time series (e.g., flows); assumed single column + # ktran [scalar]i type of transform requested + # =1: no tranform requested + # =2: square root (valid iff x non-negative) + # =3: log10 (valid iff x all-positive) + # + # Returns Output, a named list, with parts: + # x [matrix] the (possibly) transformed verstion of input x. If not possible + # to apply the requested transform, returns original x + # flag [scalar]i flag indicating if transform applied, and why not if not + # =0 No problem; transform applied + # =1 Square root transform rejected because some x non-negative + # =2 Log10 transform rejected becase x not all-positive + # Transformed [logical]1x1 whether flow transformed or not (T=yes,F=No) + # + # Why? For flow reconstruction, a transformation sometimes gives a stronger reconstruction + # as measured by calibration statistics, or avoids the problem of highly skewed residuals, or + # residuals whose variance strongly depends on the size of the predicted value (non-constant variance). + # + # Bombs if input x is all-NA or is not a 1-col matrix. Checks whether desired + # transform mathematically sensible (e.g., log10(0) is minus infinity) and if not, + # returns original x, and flag indicating why could not transform. + # + # Missing values: input x may conatin some NAs. If so, corresponding elements of + # transformed x are NA. + # + # Only two types of transformatons are supported: square root and log10 transform + + # Check input series + L1 <- is.matrix(x) + if (!L1){ + stop('x not a matrix') + } + nx<- dim(x)[2] + if (!nx==1){ + stop('x is a matrix, but not 1-column') + } + + if (ktran==1){ + sTran<-'' + } else if (ktran==2) { + sTran<- "(sqrt-transformed)" + } else if (ktran==3) { + sTran <- '(log10-transformed)' + } else { + sTran<- '(Invalid ktran choice)' + } + + + #--- TRANSFORM + v<-x + Transformed<-FALSE + flagTr<-0 + if (ktran==1){ + v<-v + } else if (ktran==2) { + if (!any(v<0)){ + v<-sqrt(v) + Transformed<-TRUE + } else { + flagTr<-1 + sTran<-'' + } + } else { + if(!any(v<=0)){ + v=log10(v) + Transformed<-TRUE + } else { + # Write error file + flagTr<-2 + sTran<-'' + } + } + + Output<-list(x=v,flag=flagTr,Transformed=Transformed,sTran=sTran) + return(Output) +} + diff --git a/TrimTsm1.R b/TrimTsm1.R new file mode 100755 index 0000000..fd1d6c7 --- /dev/null +++ b/TrimTsm1.R @@ -0,0 +1,95 @@ +TrimTsm1<- function(X,yrgo,yrsp,nNeg,nPos){ + # Trim a time series matrix with constraints for single-site reconstruction (SSR) + # D. Meko; last revised 2021-12-28 + # + # X [matrix]r time series matrix, year as col 1 + # yrgo [1x1]r nNeg + desired start year of output matrix. For example if yrgo=1750 and + # nNeg=2, desired start year is 1748. Output tsm includes only those columns with data in + # year yrgo-mlead. If yrgo=NA, output tsm is trimmed to begin with first year with data for + # all series in input X (first year of common period) + # yrsp [1x1]r desired end year - nPos of output tsm. For example, if yrsp=1990 and nPos=2, + # desired end year is 1992. Output tsm is truncated to end in yrsp+nPos or in the most recent + # year with data for any of the series in input X. If yrsp=NA, output X ends in the year of + # most recent data in X after column-screening for yrgo. + # + # Returns list Output, with fields: + # X: [matrix] trimmed time series matrix of input X; numbers of rows and columns generally + # reduced from input, X, but otherwise the same form. + # ix: [matrix] one-column matrix indicating which columns of the input X are columns of + # the output X (disregarding the year column) + # + # Input matrix X assumed to have year in column 1, values for time series (e.g., tree-ring indices) in + # remaining columns. + + nX <- dim(U)[2]-1 # number of time series in U + mX <- dim(U)[1] # number of years in U + + yrX = as.matrix(U[,1]) + X<-as.matrix(U[,2:(nX+1)]) + + L <- is.na(X) + n1<-rowSums(L) # numberic vector, number of NA in each row of X + ifull<-which(n1==0) # rows of X with no NA at any site + iFirstFull=min(ifull) # first row in X with no data missing + + iany <- which(n1T$*Libnfkj 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ÅQ_=!d$s zGq9HB7JE4$?H#8{^VZ}DrPz=CEF_MbP}s*)n)viLc)j<7^)znA z%jCd%u}}e4R&TYDwHm0=*54SPRt_=GdeCcDR8+<%j3mwRd+ZeTRB<2pST^E6CLZtv zI9tc^L7c1(F5#kMh}QM~T+-U!ql_aV)kvUWBgsrP1josj5jjO_M2GF-`TMa>nCE97q##X+sMCnN4yH90>EPaXnPw)=4F?lV>F6cw z3*JHx63Ume1m4Ehj?q(fRU;YCiOW^b+V0xM^Ysn-ES7F|)6K3w{=chHbMH$Ad`66G z&GPt)3k>;47YvC=QDBR*K22B=RhU-X3duE~qlZ6!$z0;z#ZRDtwqWcOL|B$|R=G+E zd)scYTTt*VsHrXeac=J%s9Jq|X@SNhBCQK3LW51h8Hv9A!VRC*QOE(D!INw2^!}U% z9Jb5Gf_iFRBT=nG-``nK(-XB{t{pkDU6|c;N5uJxCTziN8X?#EU-odgi;YLI(Y|^e z2m{sLGLxw)K<4nm+V_Bmek76C%iyJ0T~gs+{Gy~GsS<2NA|VF1K;0T4h^Sd`dmybe zUr~DSE{p1c=9HJOY17zfzNp45{-@eKkZIzAZ{iBD!}GHm&@-qUka9chm$;EhM@BxQ z7Bs=_q`pE6Vn7HoFx#`h_}z2 z5NG;Hw-*rNFs2Ky!J#z*5dRdUw8EUx74l)_?TwCL z5X&Ud3Bopx`-x$IL7QUr)c{75C=J7aQZkN*zK=kD}wOeYcL_?0l9?9Rdp+a-1U}K?ewHr)o-I zO^AkcBG(-%_!{#tYy+@YAUE*XUp01@>>+Ux28?k7HncQHt;*YGJgk>EUI>$GHhC z&N$AfW(WufVC~O~lSoaogMRZNNJE~_zK!W2Om!pq^b}fT#=?OX^^W@;AexR85`c__ zv(v#xK!f)a9VZow)CY`N{2=KDF*4MTjcq5&FLB21w;c&nQ(dX~pUJGx$qXy_cA8ME z_HDI!oQ{#t48g9*=;3$f7XI(r?1FDn7&9}=cq03rtp!X zeZjwbz8jc(m6kSEVK3x^-~?d!H{m|zr8`b{Oh16J_z9WAp9$?IT4L4Uje?(|JSOKG zDuYD{-}Rt_J%5S(GmYanWPs-GS+@Quh9{Kxo$^CdlTzSBlosdEoLnG^!3TtdrN6}| zmo9lM5Ag?#0Av;D_!q$1_d5d6Q;>2o1Gg9dC2>wpWstM(_&dFsR$rzyu~B4QECpDP z6ag(4op7~1bedr;nzLt32mwCvH`F||x+;ao=z=ppIEAzKR&>to8>O63|D6(Ef+R^} zS1@tteT#x`;TyzGO@#Zac3Ie32EPQ$t9_CGfF#K*5`RYo<)QJ=$4$>YK?EnqX76rd z7=M-V)#1%SjA5QBMKxVvY0P9)C>+Qr6KAy`_ zM_`!rl5%6Wqh5WOLYQTwI3FKr|KlFN@PZ+W{fncWa`%(ECJ(##*1b6BE6<@`j@Gr))FwbUEf;AjALHjsXt@xfA!fFl`H_^NvLW?9Jsq@-Nm)9dPe!S`j5T zbT2hfA674FP+xFmdD@PMTou7Ja2YU}Z3?Jp;zx||H?Tu)gCM|W<#cx7FCo-Y6#>$% z#%Wu^k3VQj-vBI#IJo=~CvwNM&I@GP&|Ws%j&NRfq3WVfYc+V2ucEiSfuvplKK9U@ zjQ%!Gyl0#nyg%-G5|Z+lNH3}l=w=1Cq7 zKIX~OQn}{P0F!%t?=nEqp<*hU)tR)52KPQ)lhUsM-rlIDgkohoquG&nCiTjFW!p4> z3b`R*AO~?rE;L#&0i+<>SHSY;4Ol0VrftPW)rQ5EX2V@?C9_r$@5a-8*SX_HWYgN_ zL~2dm+#!>bBoQnLLrOBOVa2kp3lew#sC;OZQF&mN#ZX={FRg1+jgsZn>a&QaQRmp^ z>hxNV`N`Sct%~x8{+o0s3&I+g60TJiMoR0AEU(R+Q6;|I5u+EkGo3YgAQ7r|=?zQM z^$1%^=XcyCCQa*Vmzd;*e5wIyjT*E}Cvz8JaUY*Kpu3m1lJe#v>Y!)A3Se)d*;U-c zv!JxTy~Gk@H!zzU5l?^>C^It~U1hG9UP5^c?nmB(2GZ7`0atz%)F0<{9rO(uY}<|m z9)OniCG;kk@AeBx4Jd+=jmXxMI$@rjaRAEAh#ObfFenc?zaXRxA(JsNUN0e|^pKo> zAGr4+O6>45&L$3-Ef=?-zd5KM@?P(BQ1)^VCgjgAZ+du4{Qm!eG51d%|8J2j2gAP! zAG7?cXy=nLr|fQLLN8`(<0N9@XygF2bFy{#XI0j~+JyeQ;NKUuG|`}DtW5qk!O{yl8kyKQ5q?I0cl^IYVFSDGCO|WDr@x(G>6M&JtW^pBMt^^x7|_au ziSQq?f+FlE^T5Q$`0tUyviwUI?cex+EFAQon>(3&9*dQMlZl9lk*%@Gzq1u|;wNkZ z8Q}dcctoQ&@`xq0>LkCE6^ZWD5Ja7Unj3NzBIgSrb-eAgtQ7(@z3r`TNM$t_OIGh4 zpO3{iddAx}aggTRZg7?%t2$+ZjEk3UywN}IrrSsm8Yh@080MRBZ+IlO`Zif!f-4bC zJ9>oUyWGILn$?<~DKctoY$m;XL0n9EC}B-=;k>goAJ!3Lf0a91_qp)XpU7XQTy}Bj zGgU#B9nSRZX(Dtrs(p8ugiBUaiSuLqxG&6)mnz}cB2X0lzOQ{2(Zh5tOJqxI7Bj51 z1GtWUjLZ~G#?w&9fq#l~Fr4BYG@1e*{6;|8B}zw07b`b_@+7TItd`gfL&GshZG1gt znE8sn2z#w|NPqtRNGte`;`zDaMkn~b0+aTNo-GyY8}bKbubY!Np_^w&s%wi(m%S@A zhmpzqhA)zVFP(!sQ`7eMgHG#=fy%2lxVdDx=YK-szm7ochw zp(+Te<=Z$5+hpD-h8;__s473xWI=81ou^pS$mc_l+xSj(uvb+-CCvo7`qBN+zUA7@ zZFg|mdB18|{m)0^L-y^1jny}xv0sgd_S(X1z2n9Y2chAJAV2T3VxQmbja%vdN6bMC z)y)q-PufmulX6h|07N3LZW|%AXJ?Qnx`ZUw;6%*9(M`#VO=dyTLKZecI7(b!Ym_$g z`(N$H&0L)Bd`}Ffw8;;)#M93aY8z=iyXvyYjrlMVwAwVg797824C?!^9|WH#S2YdC zZLJ4CaS#>bdKh}YO~pQhz_fa$D{juMEzbF@c+(qoWq)mgGVuFIl*1uwl*~5Zj8ZLO z$C3e>MkF<_0Ay3vcJH3Rd#77!VzZG)#z!Yd0Q^L@hCYG~c8UsDd-0S?B}uw$-oM5* zOm7ye2SSksR(c7t$nXUeNEt=7jkNzEhBKTs|7qz3vY4DU~zo=T1W`PlBK zBR9pGGDYq$l1v*Jp!)v^y9=O5nl(|_z~Jt#gS)#s3_iHKyE_c-?(R(rkJC-R*UB_y0@YNW zEMZ(&#O0eWe|%m#lB0%IW)TfTD}<}7seWtFs*i`y*F9>7hO1F1XTCYqN@BJ7kUb z5<4ST^seAL%IuQ%U9I2f5|Fj4HMsaM)aKL(OzX-6qtOGmKId&YvO$(8MjB2{sLBe+64FYD66(_^LzA~n zq~dll~l1GWtD> zbHUGvQu}>R&ZtIBf+dpmE?mAMLDa0cMj+;evn1UgRow%v2;+p<8i{g_Xkc*FqsTVg ztuzs(FPBL!Qh6g)E4)TtnglN*0ZTOXy1YZ6+-}#=+=oQdThLynPHj0aWapvh`pkifn>NzB+raZI$K3OM8WV39sOsFLJRNh^4L z4>UFb{X554iti{<*b4O611v)mpz!`6T!FE=`L6mvHxk&XM0SXlv_)IQ40bbw;7XCe z1BlA-wrYH>t@melWFjUV}bC#2!QwC+nc&J*V-gQm=`b+?7k!WT> z<-tXJb~_+x@Lf)tOs8VjtY_i|J7vw==qXi=$J~L{zJUMqU?b>4!?nJB7|%7wKF1NK zvU0vj!a+l(BS@D-T}vzVV=qbl!pPH$}s2D6iN61vl+U0 zSe1Nz)(Dctq(n>nYtLtXc^ieT&Jnt#%fh}&g$FV@N;-%3%vA|7He4O@wY7|Gjpw8x zCWZ1GS~eCE&cKtE`*^iQ3MA2?`e1$oKBFAc)4Bd~H2dwjttftC2V zpQ5CwP>M(~X5jKRj#h)&_VQXRMMe%TvcQQHc-Jl8QzMPcv}M`RnF#otjd~4dZ_Xqx z@5WQ;H|$T7$!&EX?OG8}B2`qYT0UMi_4{HjC7Zvk;D=3hTUog4e8hM_T)=v-;*F*2 zX#I@K`22Q8Jw&L57cCWfhQ=K_f6RP(-(|lY>l=qE1Ti`K!qX)hKm2uvW+g=`)^8e| z#|S&cV5d*v%?Uf)U&9Ogu3rlGjW{@u0rs%Zjtusifkn}b19sTVMHkbf4-u|^1hw^M z?9ZQKo&9<)QJ%3Uk3`^N5bUG~o0CL?UWk(;*{NuwLaH5o>wQ{PkYI}^;y^9i1$F|_*5`Jku^&a?;<=GHuz!7h}K@LNwpH=o_sk{o_40&|Qo zFUvT8Jj8y;UVEzdjpB_uEVpT|G{czg$TUO1P3H~pv*0tn8sJFB?TOb0T&x%0p}A$M zlt`sQarf?pN7fk84ZwtQ#t}CuMcUWK>^*bztptICAUX&k`cRBFb~0v zAoI2ti(tTeMjED%k3+2f)oW%qpw#xvPRoEN9Oc$}!p`Wp0SOltwR7^AjxIkS7Z&1H zX;6muhP^@`2M>I?~=8;S59Wp~M^9kdRz7iVrhRDaar36Wg{dmiAf9$n=!R0R#E= z>RLWIUww6NH5nb}(vpc6UZUYVqc9)aR+BNc3ll;&0WP)3M$4P9&rX@1vedcD;x6CA zn}LddEA^6~^K`X~ZN*{g@%Sit$*#BRerv%^@g*bJvXflfs}}Sr59T*HT`{#|g^WYL zX37!Uy(+PXx6xXjrcHkH>AM{wMZP4v7)0Kl4&E+ez=iAgW3Yk|rh%2wr@(0>9WyoZ zi2rHJVynbY@hVC&?UbTeTN-YW>n9pHHKgJF&Cz~=bVj<-#-sK`3_GY*gtI;3Xg8C#4~?2tp_rlBUQL% z(TQ{rUAEZu)TlwXoYP@wQn$LnR4Jkh^$`a8Ary=Xq7?^oE&MQ4VLiYozbZC zqE()!ELWbP)c(1^8Ns=^9Jhgp{52I2e>K=;CDl{>KBD{OZZc=2J4lXzpkXDL>{`xV zf7`8fev)YksRGTN*>ENOW(YKN(wmsX}^VVS05Va&cG+L>ztJ)=my zZq2I4l0!Q^Y5$jHe576sw|+AUc&7X*=q!{!iW_;ReIFG0S-}-PIVx9zRQ(Il@2@D> za$1sHpl}%_-s2nOKRmv+}LDV63=c$M67l&`BSY4|x!eu&{92U`yHl z{j98|x0jg+;8$=_H=UWjN54*n?VXi;AHq+iH4K_P8?xnRF11OX0WJxPyEnPd_E=h# z%8d73CXm>|Td=?wLW%_byF|5s4p3W zdEi_=D6!?eO6cxv{v>K6 zk}e)$UXE!28YN2@k*-sxVNSQtmZ4{qGsSddquzV^jzT7#N%0g|r|x1f=ZKw6uR$X^ z6!UoXB!>bmYFQ*N&um>=xE;jQ!eksKh!##2Nrfe69?rHBex4miaxRgNl3j+Mg&n?k zG^9^Kx|}&0WJbmH#K0M!ee_+vTKAl>Cy!lc7&LiJEe@u2Ze6)?ax+( zsRdUFy&?V@8NZ_M!i%OaO-{NhpQn%U3XNIj=THoO4Yr{>zxq{HCqgkTB-*&H%X^ED zp{LJ=w480)+bNlS7)6zd&FRujhaPW3_uQ%f0^ZC z7Z3?!DMvIuqL(OylNly0UzL2>c1f;Q4XvYDbqR)}8BV6}Hg`qqbQx%-tc<}JQs!dW zw*};bt&*UDkX#(U!j8$m%j5VNB87_U>4JKgsYD9s?`^vOG(;t@EoPG3xHg&&3^au< z&nbsY=47=V^7luf?{d$lE*?y)k?qp%@^SV)4;O8O1CXZSkFU`4r+hos@o+M|S-h*EeM4N?5^!hR$0> zG=%FVW0`Ij@)U*;sx18_8!{D)iM%5WiyoLbvOxr>j4s23)`G0vha^A@U^Z2SAu5^^ zFmpXplb|**ARwCxWce{D{=-yh{;`nqjy9S=S3YVnC$Og{{hV*{SZqA(A}RRWpYxpt zGBzM!7B)Q@?F*hF7RmnOj*bpx)dR{fWv5~)Myl^5LJJBTE{TQhPT6IgW8=AWNSs_R zOaho)M;+G~6@pr1zECLGMuvwU>?-5KCwlpBSnWO!XFWN(*OS@j@i{3aEhf_suyDKV z2$OaQNsQ@|7aDh}oeYXz3-Gzl9y}K;2~bNQIh$cq0`+_5b;D=UU3h8+hv$)khRrw} z0RZ*7V!tFADP~M3nRq`i+7jz{j#oZ@*eCs3f_$Hv7yV@f(|5ZbgtfPsGl*G)0ffUh zyCH<(x0-PTMt&BBH>PmkG>vUi4O4c2;%SHw|5f6mIX`ZZsLUv|DJA0dE-C@#!wl7O zya0|S>r1Nx$;%0zA;xfW+YWn8pD$&||{wGteU+ryj4-o2Mx_3-O}jJN52qdnYNnzVCpP&G^mAbpC4T$~5+r6@Dc+ zfII|Dp6ExJ7f`XE%*RhYs?VPvuv#Y_nxQ;z$cFb?bwZh`hOVZ;Ls9jnbsEfHlcJ2? z0&&|XZPqAO&aEhj`=}Jyq4b!IOT@`kne0e5k z^wK7^m2%+_bU>5JaBX*D_s3R>_?(JtSBLpHoVMnxXW_neMX^%wEuC#Q06Tldo0lf2 zYB+m3Xl#k>e5G|?qthlrr~O%z_uFxFiGKVh8NWyW`_%Pv$#YGDxxo+nMu#x)J_l^V z?!;dtAehd;&GJ5=m;Cj%lXPyi!S7fKow6q zN-`8dHZly9xhu{L$eN2WG2p#iWL3RC0(01fS}b?B@bK#SygxrMiryY@s#gDWUSA@x zjRbeqQ|nDzCXDf?FJ)_TH9rq62E-hW%HgFgwRp%XF1{^)q;~L#%fE>>fTbsx!DM1C zRicz|0aUujt%lqWw*)Kphl8?IcEkg=9(Ug!S*1=o4i~~Mx6a6s{UR;SOGCJKU=7%e zuT^+@1KByaY(b|6Em3z(dN3gl5l+Ajv2j=HTw`0&9f(lS8s1ghk%qe4DlR*Z7u&n~ zr4z`>OlJ$^Mop8)ymEunz}Yvt?2j6Ol~VxAwdAb)g3JusJm#)xk!-}lrarz5TQ{EX z5hV0&?QG<2+H4h5KdIB4YWN_F2{RG;G6a`V0-ps(V1!aZxcL$KPz2p#(a&J}lm*QS zG3Nsii=6oi7j$yXsHR>>WYrNdEfIqQ?ARbn08R=W5pat+l1es=W4$z6(Ks_HbnC)R~!r`AME zjQ)-TC@6I!Qs4+U?fH0((+(48a*M;dJ8Hz>zi-c^xisZ7m7FhM;+eK}^s~FbwxV68 zLdz@w)b14(N-SvY$@SHOC>6U!rDK`Z;p}AdQb@5ltKY|L8fG&8^4d9JK4V z;S9C+9)c&}Oto(dvu8T>!`Qg3!y&Zj$KbfM=||vTCycn;K(_R51yd`XDIV<*y`b2* z#qQ|r2j5GsQw-t}y%lr&wUUD|C)q8-Ek?u=NcYBkJ)g0kf=ltf2xhi%TY(GNn7IV6 zEnk2OvKevuX5Y_k!*LP(ZqqUe_sym!pNn0oMW0D@ixQXevBl5aMVMBlB&n7RudjF( z>`a$Z@Z`H|E!_;o{oHclgkt8Ej@5}pDpP{}2ly`!Qba~U5gG7bojZF48w_O{d|msE zs?8%YO1%W0*}ehVEO)>t0@ijuj@*WLFNxN}4ZcUbLj^;}tC#v(i3l;_{n*v)sMxlR z*pem(Zo5xry#r7Yg<*>mu}c=XIn4ONu8z@ChiX*jPCOa1yALu7YA8W%6iTA{KTz!? z8AZ2mDLPPsR12=OP%k3-5DM(PQC|vX(g*HD{UU^hO)1@)6$&3H5`R*y8qMneFz`fW zn|-0qXW)cRQ?L`?-k{*g5@}(C*36%gM53agUJfRLo{t^N$p;#y*!iG1ixgruF7S`X z+I|p09XPtC7$~^XL-jB-L`$4ZDfnRx4g+o`XpK6S-xBD@$LJtaMx4pjQ1KartYrmD zw^}Ia@p-bXaV`3ae#b)5>aDQXYdV1r4o>{(AWZD?*|51uL+y!OKYj>cC=a{Yr_8|7 zY%aF3l}=@FW=UXHN~&A((~ozMLt3IkF-MhRoRVYCXzc3`DCC*2=ISmNmACOXd0fRV6x?XN$u+Q{2P|ue)Wsp{? zBqGL&Ja4rJY`EkEY19T!)7b6>{5@Ffm6Q6G@eS~c(i$Z7hPpr=Ao4gsj6gxa&RSv~ zMXC7;Fo{8Qg<}P98$XB~Np?*tY&Lx{eLPFvo>g!7_nI$_n&3X1PT%>BwLj9aKiNOs zKF4nf>ao*5p0ayIXzmzq&K#f?#z*gB!Uim_9aZUTLk=J^1Q8)7diNHK@Y{(XYkroONb~ke zfua9^7$-zhHi`j7J8m+_gAHG~8`&akE>k#ie+Fft^b7KuMr3F#ii*A+J=*C_Kwojs zSob)basQBV7yo`RkLW?}RFyiO+Q5|%-7J_+3XrU;0Y`xk=imj_dLJ$c8_au0bcUIEoWiV+t7;r-7;ysrulAFafOk zA76x~KXd2WwSD6shP^l4dN{JJ;qQ>%C5VY(w#Rqqcx;vIhSK?9%z#{qTN^Sb}TfNa^NCQ2nIIWz-3t#ATuw)tcqi@$05} zmx*rSe>CL1)Me(R6yDK|VW>+2gY)Y#p8~vuIXgBSPgZOws$y-?GuWqef3g$PC+2vo z+Y5$9Da7nc4M}vSF3b7K?>?Pj%b5&nltWO04OVZ#5fwfiCrtFzDzn9Kz+`v1Kz`AbdFgHf0uiIea?pv!)3p( zNlPsgW>yRG(4Q4!>Yz`m)s6+D#))1ubYDo3E^)uljxMvf$kQBv)S_XZ{xue@CkZ(P z?m*HuN(`!+N6F7tcL^BNp?%YqPj-0t@zaG$OopDv~Z>`#WC)EoaBisDU6o-574WH9)!!>xy z%=THR(Xai%`*i!)?jOx;cb$k@_BO~foOI|0B9-6SumSiDD$I7U0S{wCmUrljV;byv zCF4vQ^|Ir+ABkw>(^EW95JkTaBysK5=B$rNe_>%rXG0%bWxd7Zsir2`YSX)7?Ne`a zF^qhI1?SYc`rN*6GQ;r#ggq5}9qqI+3tbxy!qZ#=fUP6JmHUt95GyvqyHE{H;gVS* z9DZe)R6F}2A7hm0bme=M;_D+N<+Y)T|IGK=>hi>tg|m4(Sm|e~(zyb0q<##pgUp#e zDE3l}jXdmrPP5P){d$OXV+jVsN#=ubUKUiV<{mNC!-QKe!DO$(3;g&M$!#YuE(98% z$$iVsEhJ=@=j>3Q8v#Ihb$lsL;h%|mY#i>&0aaO0nlqozo^UUUk70)oiVukpW_Ai< zt;wr0jasX9R%-U$kOo1qR`gFLW`>*`)zHw_B&|QDZ{hX|FI`Sg#19x8_(XL|6EGe; zK8t4ZRpU`G?RW#T^&5-EWWLc-yp3R~3yo-X017xb@?&G7HOGES zw#U(3b|&=(8`zZB&7bGbLT+2mPOwWG+*EGf^|3dLqc}k2<&)!djuPAYI&f--ZOZ1v zfZX^i$jJxNBTyr)&P~wMuOYJri?j@R)+2m#Qf`v$E;}73vb)GsI zo;Ja^?p98(Ubs-0$Y7JRE)}kJo7?kn$U^Gi43 zg*yb^3OZ#&i0M39QXob}9B3Ox0lmA%oxQP(>m&dMe}(alLqBdF`C~y-rPg)RMK?%$ z7D*0I@##DiS7H>LC>`Tn`?DapD38&?k=@)^uJUnyQG41(T%06?ktJdB2Cu8eCZd-2 zp4aMZ_xmvj=pZrc0Iwmaa|V=?JnQJUy?MABbEo^wgw0gO4_bEyrmzpxK&8A7{9!&f z1?J>Xcl3I7sZ1=v_`HSq2^v?o0wd>;jnZBlc1xDk7m^5t;g=VZMRvAd3a(qj!I@zJ zQbWOf+apyJ1&Yy=@xvZm7}NN^yRMfXx2unrPqToOLuESa_ogz-cf;0%3!eSe&g5My_D>19_c?(ANoh@8?KvPCF0C?B7Lfh9%j-rI8*Bm7!^^4i zGh5clmEa7u;NNDi$apLC74ldsrvZNqosm76d2xQ)f`5gbCp<1jC9MV`$+yUON8T9V zLnjZAX*fL5T%g*|q!luhBXf*>jtRlX*5K#3ThwEMPIBic>6pG$+Myd_zVq|Ne=sJl zV)V_utyjCVXwaCk2mQs2*{Bme%k1GKg-I(J-bpiPAP=F=2#4r*he2;zl=sOso(P*| zoD*mrF}>Eh@VmLR=lUbbgwoz{PgCGz01AB(ooLsZEgvq8MePT(XST=GHbR+$BNE^&57AbQ7Abe25hJA<}?+}ZaglX8;9g3ec2YWhOCysQjyYNW2jwRoXAQy*!)29UD?Bu zQ(1qZqBjA0UJ=9VTjUAt8n<%OtaDCnAKMfDE&(pC1^0w=)@OBG&?kBmMwTBQi*2rp z5%$SKftk1$u}h$t_U@4RI|n;+Jx^~G^7R#d12KL~9P26?_l_a+O!UzQxywMFS?oqI zFacfg=vt3rk`$7nbVA`Q*=k6zBqffKmj9P@ z{B(B;X)d9H)p-^+q1P1bA`USpa*Kta3k4xZffdQ%0Zv!hFtRS|qtnx1SyyI9*FJQ! zk8Be%4OZUAqI|r~^|2uk))PE}CM<6eh;<71wKEm62?m#;!ug7J7IP0mvKo+77BUt* zGGarKrLVurKqQIHQ|k)Qno(4Hzz(&q@?doAdi62RTm>s&PPF8=L8ibqaukpFFxC(J z&nb;%G4y7~CEbX@z$ua-v}+QC4hnE&eVexm8;U!Hsd43+9M_hMr&_lnVPt1=_y!Un z*Nzbgl~@XsBz^Jy;JSr1SI_(W6d6QtXj}xbtfk+f1|{5nJB`-7Y;tj9ByRPwI$&p~ zDpR_iMl5VHQ1IK!tI$b+R<)RsXoYKqR_82k!>Tgdjx;u>=j5a1$*IHN~Ql{X^qL(WwmYI~^mTsqRndj+zeYQrym4^!hz=r76? zq8b*<0#-x%6%Hf~1>{kB3BI)egp1IV2Xuzea}KZX}xk zNP)0--ZegRvW($_G~HZ~6fRigndUaO*Y*D3fIVw6C3S<}luoAgNtR3&^?u1WM9ZKD zI8!~@EFQy?>KB#K-6E3~^lZP4>>Gziap4?F%@=va*M%c`2-Mf^WcQeN))zFF_@cAQ z7BHf%uUspls_f+4h+#+W$=%(v{k7{cr0nCQ(K!ol4Np7F_oHKE-wSYa$$e_$oso>r z39{)E!u!EsiqiLaubeERJAJ1|DXH<8(ZzW5FQ1H=E!$4$Kq+|WMY12s-Li>`sa4Y^ zfJ6FeQ^CfVbBt0hCx!XJY_M=YF|ez;f)Yz%R;xrEpbsF2u1%@QEYzC%rmV!*3o`z4dm`OjqSUdL0g zNz{*H-_i3B(W2aTbWs{V_S&{gE0^BgcXq!Nyr1g~J8Q0JW1XxZRMn(=-~H*^-B}PR zacrGbA+KPk;!AdT@CxJ8^?X2 z2agy0ePjcnyEABepUY$TneQO5&YI~CqFBPcU}}T^jr|G2Gx85DE$Ta6K<`)`Up23_ zTtSvf2)dwe#yk3h2qR*ccanBr#69bmk2q6%6UQ*QGrJ(b>Ki1}DMI^44?_nZGo~2Usxw&B1E3^h>n0 zJaY)K-r;nn(h(a_{%Y2ItmYqGAllFQ+w)tFqVjo33RJOTD3tTFv4^HUKUma+-~C;c zU&2Wz7u3?8qR~@majPA6|fwl>Bo1W zZHja|tVNZaDL2@Pm&FuI2y`vJH5Lo0)~x-d<7%+*_boTSm2ZfiF;qvH))eHE2|m67MlC>cMU|E}m2MNxprB8H$glG04Fv?#;*Es0{N zQ!4V$IBd$iYtbz_kZXq|)TVnAB%YK)wz=;tMDW%Nl403$b$;%L3hALkggW|2 zfe}3#iFV3j+Hpph_O;Uv+eFj8G0Z1TsG_$=e7?0e_?`_Gax2NSDs=KDDObm$Hrits ze$Yk9glH46>tA7F4JlN8?y|iZTrWGT<+AtyrEVw2^DX3i!xycG9^S1rFP9zfUH4er4-;bWUhW}(T{xl)JqllvcdM-$WnIf5t9;r_%?gaS z?rn>ug=l6*reoRuqTLRIzzLt4%lRVq&0t0!WLI3*s0 zv>kL!edd%LZq~iUi4WsY9!nVEzUECLF2p_E-|-}#52WvJ$bQ8MBiVw9oAL^D z)$fEX20%xoE?W4?78_(h697`_#dN-p1#rMUB^qwLKXF{E`(43$K_JmXY=Y(#{lH1J z9dtsQlV4p6l?%EsNzV>8#^2*qJw`cLD(`^JQGN-yyF7G>bBTua4SoY<*zk*oi{mFP zRFs1cKmy0?Q(_)g>wBp0-tpJsb`@e4zLh$MJ$E@LZ#!>$z4LjG2wsD&#uhc~yp}7* zGMC0SJfICqmQk5%`~8AzyJvc}@y4fFecs~T{4N)ryGu80I>nu(+pf}YF(3JMQ41vU&;0?H102~CUF%+2VaY=pi_v~W5|`r}zjWCAS`fj0gp z7kr!ekn7-xnju3pr^N3aJ5rT-8mL%mWb^2j5$CW5aKM^&SOdCuaSrJmS6vcMoW!a9 zB&B2_+yDq`SOZeq_KnD@i2p=Av9EK*FL&-ZwglwGbP3JS9DsaF2{&iJ*@*~tXb%>O zIrzPq(D%uBN-c%&lW|a5;@<&8J{PZFO%Ho8#4W~6x2B+&^NudOvBk0F!e>bpMonn0 zHhi^Re7q@FI6v|uAXXw{6fL*{#T+Kh%B?xyQQOq_aIr}xud%3GR1N2JWp1stsz7%{ zn_Gv1DpQGKB5H8a+6?7jz{As^llDEU_5x)0>j_DCV39R5U$H7|V~`770i`v=O{e1AzW(gI9WB3(g=vV|4$2FUkL zT7b1SZRcr_+N+vN;GZVvEbn*gPRO$}^kfVgYD5dom$kOnpyUgcJe$Iuorj01Mr+iT zCO~sHSe)TI-pDN)jwko42KN#b;2tf~iByzg{AG=;5ei20<#p}FU}K-wdl}t9WoZTP zG=swG;z(bopoVxdU>w3R;S;Oj@w#=U)cyAV&Q1&3&FO&ut-j0u|`7^<=p7>*&$#I zW;`G5kH*#R;bE9T5%cVA>AAMrR$H6An9Q1m!}S`cAueS*u91it4sf(4NP>hGIx;_= zs$O5lIW-rSrO#>CLq)<;Dq6usX=DzAVSxyzANEfjEHP{ zaNR4h`-6XaFtGR6wFdCt|iBYTV@>R8dIKhllg z#fAagyaCbIrAkVj=5l700;dmpTw6NfSX0Z#)6<| zYfXd7S965;8w;5`rR}y5p&Lok1sLOpW>O;$PK_wAl)};<49e`UN0lpyM~?9>?E6j5 zg)!v~Xq9kb$-nV!a~I9uN1hrKy%kAUf0XTi!lX4TuH2DpL@7jTT<37@l-mr}T!?Yu zpLqRjZ2kN`+9>}#gnaK&BVsPKUlcJF17GgPyT^3LRxpxvQ~m2i|D;kqBb6BpD!brw z_#U;(qZCx}Q2Y{-UVCKMf8gvAKg}6O@xa!BBsmXGL*QIgPRO?$IUa>BH+Lc(25?AX z!8`mQv@j$)@u=wYQc443MzE;=Y+$7i>=9 z#;gu1W5hW@#w<9{ECDoj%?oim)(&J64?K_&cBP)0<9BszCJ1=K8!Um%v3{}}__awT zOSB_$jVH5r%gB#(irZtG8v{ZsTzZoo@@(NXEz?nfs1tTMCej6d`$YErD6uC5yz9voh&VR*q;#1RBoK7rnDH9S_GzH9Fjey@3lJ{0W)PuxM=FqcN27lGV12*CxP z3J(O*Td#Jf&VcQ2%{?*^{rV2tx6Tt6r-WX3XCHK45JY$xzcwkXj9xNA`n_fPxACnw zg5@69w`;1G+qG0D=$7jG^@DnI0JIcUTutCp4FZnydv*yzcC4Wla0lhq)UJT__IPWn z5g2itUo0%_4DC2mtPI=WcBpG9mNkdCKkMrBnz#G8J=bfwOBT%ww5$LrZ5KYH1squn!k?4*_fw zSJnP(@)JLufL=p|z!qNeb{CL}m^1)H_B12NPMPxZ@^X6w@p5zXatq1lUh!(yRqacB z@FJeImh)o_XRD|&IGJ9|*jDM_{?K5GkL`A)aSks1}s3!O< z)3IuVPb#IUSU)B=^nqdGoB;RV8OncBB{Q-xaWeiFe*M3aU;HPn{4a#~UzAtqf2O?u zAYPXL!SH@TMn(n(_J2pbU+nUKA-sR<{11lrU%3GP%|ZSXnEbySBr6l+|7Li9PudhP zpn`4j%JtUOm-Z}yV^a$KNDvz{@L@UT0Rko$wE#k@8(E8)=FP@3M+d+kyqw%x%QW$x z!3%dA@gLOkzL4@h3bVhix#ei)WWN;=AQPJ}HA{KTZJsx##nYVe^4Uam;|Jfi=#Z~W zUtKg!#N3(BN0EP$j&@CF<-Bgk^S!U)_upRg$>e;Tgpf`qw8?V&!h3hI%{L#MFmK#@ z9rd01xbuY2enS5tNRSiFfulTMeqQ_C;A0aUA-CwRQ*!#=CHpq>{#d1DKYqOK!{SK6 zn#VE?qZ&e!PA%A!K8{wm+a^la^5L&#;o`X$&I)z|Q~#jFcsPQyc=|&9YWAM2{(70Z za5dx+&~f+`QH#uUs4cI1{rkLbpJ9HtP_eF)?Ong#QMDbqa5r__aWezX3$0bK&kE7J z?h)5J*aX>2Bf@*W_fhp$+>tmz-lqPPQ1?9c3(SQ0k!$*~D@XMV{T0mD4*3MPaU8zd zC7XSecifYAniC>NuBk~gy4y5D-9f!`x?5UoFN_dU-J+dEo4qE-%^WF3nCY7^}=LwHHUt%cro9eV0cVUk5ONkNyDh z5%+y!-f|e!473cs?8!OJXnJ&qS5@Ul_b|2BeC_>w&z9Z|)PA|e87P4L@8aBldEEcZ z4gH^2#s32w|GzJe|CSoFasC@M{!5Afa^b&}_+MoBA13@&{w2cyV#7>deEn;mzso=C zU**53@xKw||HF*`5@R;T|6s}gaN~dK{lkvgnV6tC{xak*ru>&Bf35$EHUI6;KRo$w z-G7#U$n)R*{?B*Ne~5fA{roEbZu_Ut|FrYB?Z4lDmC&qg|3RexGU&gb zzb<@+|9JavQ1svN>fcfHzjF2b--7|`|34oA>;IaMfQf^d^WX9jEOfZ*DJ`sUcx8KD zTBV&&bs3x3FiENjG5JaU8i|*Z5Hi9e)B{hHCWHzD`BKs4%K82jW?|u>o)%?A5~sOw z`Hk4rF7+y25sl~o^TAagXGvNOT~hY$!)$KmG*GL}$4Bo^uWzmgnTI^4o>Pw5=b0H7 zQ-H|<0S`#20k{ktZlCMH9A81mXI3J;jT(SvYW)Nw%zQu~!{@?Wt^Msgf7=@_krqEu z`bShom3iyMZRRu-V*@hsyQrn3;rv_~KmGT;aAYe(4{8wnxT;w_{BcR0(}N3Jn)^>P ztOMI&whXpLTeGi3+TsW(bvBUWuk7qT1qGSy2}Fh4hzCKmQ5hNCZcjyI6FDRzn+vml z7B)m|@QC)x(;VEzO&y1KUYEKfpFM<@bpnAu68OQT%lCQu9sXt`7@zw}N5E`byLtv+ zGJbyjQupqc8=HVLHcp?)U_ZClM=3hE9bY#8y~udpbb_YaXz`5Gk$S*A>9(TW68*PM zo89aVsZ@$+O0}ALv&Fsf{oW@%!2;fZpoOwyXqwZ^B_qKD#dYi}B-XS1RFscYgm~B6 zrvs|S{vn}z@Xh|+9dwfdmf*exQo`DP_*_%b)Xfo^( z)(ud73XRc}!2w@uAQUqXrzC!$^Rff`)NS-#q^a)Ak&OedPc;d^2&ed1ob~XHAk=0r zhojEE0RK|*KjjG_fJ15e@?m` z2yb;XnQkleI*2?rR+Q=+6jdaXr5Krp**^f?aDlO9!@5`J0*C>2)WAnjiGZ(9Kr`so zEU<+a@`hIPDTNx_8_UgpIG2)TBVq@Ee%OKKt!h9+vyuh2#8UL+48hv*5Pdfp=a5$D zMV(LWfvF$0YK@4Eb!(&|$^6ASe#+=Au1rBj!k2$c$})*I6N$vk$*C3){R1B$pH;fD z*jB<7Z5U|yQu&k1RE8AqCekbdka}f*D|A^+P0O zNmcdP!NEXOkxnL6NVy?&qC|%5_bm$cYT*nSLe?2tv<%j=<118lWef&(x{yp%$`bjq zSY>+%;7`4&Yv0e*RMhex(rpiwIHrFxQ<2NdWl_ffbQ*CNrn6=#vGV)3MEcXFpd~0T zNBy<2LnI7i^L16F zV`(IC3+-g1rGq=kMe6XG!?O49f9MdNddnd*YGFz-*tZ%HD(|R~rrZ_&m|NH-(pnRx zK7AxRSsz;w;(d~U#tDf_B~fBmCB5EzOBGXQ;-0LQX)I2z zU!Ho?(3PbTe@2zj{{qu4k*p0&3YLnZ6klLE;*GOA+22T`&A1rjM0he!tyEbebk@V& zhRK~GDPbU&MXu^Emjq(4_n418&qHZM1!)12t8v%6x;x+piYeUdXZZ4u+`>hi_^sKd^w4z=N2W zl)%TZ1gA!50X>n)JFnSDP{(;ixL`AH!6*V0(i#51D|Y@0dL45Lz~>Squ*r5m!czMV z5Q~-dcu~dpheM^A7^O%pM6=BFA|o#`M{>!LZfI6(xd`R3dLX+D)hxlla(-nSa?O_L z-4O6to@AIMc(Vwj+Ic96!1@B z5FtnVw6BHGLijuNZ>_YM5GrH0AlPd8EeotFL3A*3y?cDES2GYJcs0$O0L`CQA9Kwi zpAtG>03(U_?NwBQ@eXTQyIkY1hKtn-Q}r{V8&@^j{ZWjiLQ zX=gd1roOdjjWYI4?DY4#Q`ZrBU4pM4bghico~?r~@iP+~wrJ#ni6+FKuT=?VfMYZO z*!izO1<1PfLcM0z^h3eP3gilGtHN<^vy$I^RUxNw6pBTsxC%tU&l5dwNIwch4j0J0 zqN6>}yF!LeV- zQ^=XzH`!o)1|dpQOzxsWa6vP}=F@MBT~&~$_SP!+IwjXhvm6Jk*?aAZ`3%kBq|g>PcaE7coON^b z%iY3^dI`g3pq61Ywq>(~E|6DK?pO5Gfd>tsg$L#aCj>u8J%QmDf#2l|1?7Y07lRMP z12&^Wc_9FS0ePVDXYuD*8Is9{xsER)Wf-%{v0{T#NX!GA2@J3FR2f?8@$Jhl!m@phtVNmLbFc>(_ zskb#{y(d9BsCC&j;a&LVLGqzMHDhi0a3>(Cx3zdRX$A2^)5F-3MGSv3%90nRDq>+he%irTOcOipE7N$qRZ^fMhl+Ew#nEY{27O2{*y?$P$Nuh z?WEhmC}=AW=mx_qTk#ScAdF^lAmx7ALCRE0$8(6VDP*&G%|?o)5bI$7q%2a-H0#0Y z7K(HGc`h1=p6nmn{r-6BQH1To+EJ?YL96H_p(EOp{k=vT<|KY(vDlsS39>!9;xwss zf54Fa%k|*}S4Nk+dYX-TfQ>uMB3UT2*}|s&_r0Kyrga4w#@uZrS2*I&b>4N_oED4iR5)SdAXz@NwTCeQ1oX{GwI??@146A zL@Mc792_I8KkzlK*~mH<5{X~%=&jh_3KczGpSpbBTzrnZc9Juith?+?;4PR@Ar8O|GU4sggu{S|3UVA7dp# z;JrhzFm3}26HT?=8%G#MGi?Fi%8yD~#HA@$Pa7GgNOQFcr{6R+IX_L1YOYXay-n`9 zSdmX<0DnEd*~-4&)>O~Czn);Zm2+dAah%IxopI>{)nKqmn=G`flV{8Ymmf1anAVnu zqPvywh3vW9%bCL!hU##q*5CwE>$-3JEIlEG?}14(oI)xfB;!xuLFZT8ETC5*c60nO z$-G41K$-aDcN<7*x| zp@U%XVuhfJ?RSDO9O29G;}qNz$FB~7727XIXj>K-R#4Xq7!Skm4|t+1rw4E|cs*

)@qx+i6ro3PH)nhQxrOQ>Q(@IxRvr{VDJkYpRm>*-9 zEnIkQo}NO69Ke>^U;R;fVA;a2*zCl%v~0hQpS|rBKe-YU((qBtFxoGkk}y&keDBMy z=g+^T3il`ieHrGf9l_qkfb(4`b4tbj^bN_qe+1@=^m}lHRxV?}sJjJSxJ~V0gZC8# zc>OVr>6;DU2#km0YYHF=aJUVbHsodi-Lj8du zU;x+u^iHNI8Top9M?hwSbChJ$u>Gx}zu8&f?wAvc9!;f_a>EV@5T3 zPA{nmoW>?j0FV{aHvzD_#}<%uX#5kv5iFMszzOg-B(K@`9-r-k0a0Y)1Y*%J1whdR z3Ye+=?BFj73d?dB=4g#S$?w-c2S7DC&0#R~RJ6UA(3YPQZ|fnHyK3>x0*I^-IaY~< z)}u%nP(u-GC5fY=jI^vLb49Q#=Z+^#+tibXLhlgBfhpGEi)*VGsCwq~C)K&F(m4f@ z$+0AUm;d+`9ZFC*Y^y1*ieb}y`3+)X*~(P19~qsN_Bawgyv&ENX_sSZH_#^HnZho- zwfaea#HUHYp+=3O#)v_Sh9%t)r0NP~Ag`u6IC(c{8p&b-t;X6Cqi+4r%yZb-6(n%SZ<%)Kh6VGcx-kQ1Z8~2;^ZDUH4;rRDFa>2do6*&l z=7aB*3n$39Fb;viNI7D~EDOq7_7dk9EdmR-kgT{1Ug6UgBju(h>$7Yd*sBhh-qYd$ zpsLT4sD&!3pghD6*uLtBFD{jH>iC~?9x0y}eR?NdP)M&T-zhAA;}CJDQh#oqI@WUM zj3p1e)MatU&|uuLhHeBe!dWm_Oe4)&bRU6DexK>QHsCqG7ihvwf0sR$>8)Zv3z_p~ zJqhvVIWIv|Z6__5+(YV2UaV1grXXW&R5}XzgY+KXH5Ux~lE+d|CeO1k2fYhsJPa4$ z&3X{R&2#^p*9Vu63(RxvEjmppb2AwF5Md?K?gwG#UOkTVX`T*T$bGdA9LK|SMF=t1{z*?Im~;&H&w=BG zf{enDW}JL?_y^kDkU*SQ)8r+fnLhZ5U)sd0Xuk-x3hCJG=T(H01;?xufg8rMWpU@{ z4WHfEX7!odN_N!d`O4Lx z`DDOF!AB+dY0>-v(_=z-$3+XK=ua1;t<#5p6QY@fjBLhJwY(&}8Trpu{Wg##B)=>T zQ1MGn^BgMrpy_%UU7$J@h;Pm^YxN#lEUKZHsxyt87|yso___y zJ%ZMtyv4Z{WjaSS4KeQXsEsmqz+4A}GXNnlS$NxEj_3)z?a|{$g{Uxzj}k8;0w|LU z0^U~m<17ufZ34)O23vgMiM&q~t zpS;lSeFjIimx+ytnoDhJ%!seXSHDZU>_}cH@W2H+ZgY7>y)Mk zFsu7oA{?>1ZkpT!{>~C^8!)H)(~{ebh#NNK$&Fod*Dt5X((hOfGN0LsZ+ukV4p0Jo z49|-cFRqaWeEFRlJqf=f{;QmE6Qn>~ev`mFs-4HNnG3S#7e!`Y6?E6lu$=MdOJ19G zVA*A&cC53&A{USM`?A6leFRZ-Fdpt>GPc`gatdVd*C~YoO5elN2J8DQwVTiOed+@% z4cGBN&hJRj4)ut=h1yz2i_n@yZGwBWygqO#;ol7WNeI9M*TUP8w1$Cv1ewgeVg&ak z;u2A@CV_S6*8;-JIp&1f{1kbn&a0E8$9oPiD~!@}u?wNoyx>3i^Dw+!O6^ql!h<4vSu2nCtl_OHmSju_f=% zN`u3X0ZTNq<~GP=NA?GdFt=6VA2vD&=%GRPmC`~7>V|aavqV+~jo1#R?n|-Mwn> zL*Tmcug4!asypJq8R)&Qu)A;?FDe};pQv(`%^@IHE!C1Y;u|a0;FJV`R$la{GXoh4 z><~6U&jtfwV3?RG^YKIZ$w>k;g6D@bO~)d9uPc}~n~`C1Hr!MgY$PS(qli(Z6Op`> zQ5K#bO!YF|V;MD$QIJ&~Ut5VNl(D_T4N`u2H)w0?6!4r0JRB!Y$Sxpc@AGQD z+elZKg!Ls&f-Vp*I=WJgaUmJBsNoMo`EddJ!1biTx1;zAg2M*s z`hYtJ>so>T;opYx;|5moM)t46XT|=8h&YDik^$G5qNDmd;JXq5$IO|7(-cK{Cz;<9 zR`?641m#i}3`j`N)jFy~m`0rJwDXtks8){sE-kqr-*e6Ub8{~XDF6@c#|A9f*R{cg zdb8A3897`lo$RKkSz&8`qlxfNvo?KfG&}uULGSGS20-{@n=6dB=lzd79k~{Fx-rl4 zhvdv`8a8Yf7o*MVcmtC`UHH53mY5U2lEipFB+PCJN&-3+EN$`MmW` zz>jwI0d&Sp^l_LP%IfU8J~fWa#y&BQ`?Z}|?8h~|671HCX~Ph94#kzcd002+>NUT* zzAu!n_btWY{zKA9U+mOC?AP;Yix3%(P0|R<&8ZNF1WS!-R5o1IZ;uYS$bU1Ici#JkYI3S}KmwJNWM^EV20Y}hMU?94V z)tipTZ|FdHB~^F*bSKYi`OlJP^*+vf?SFGqvsiI0Qeh4qIQAex~{7ivPG#BF}FzAM*h;JDbl3{ zKX;R4`QwIaP5PG5Vo+e$oB4w#(KYm%azZ2DM(UGh#6_OA z88$n!?Roau zcUb<|yD4qs@G}jQdwa0-aD61HWvLUbeGL*@Hk%l56ShOxsC_k9#!lE<|Vcyo}^z z*+2oL<^4c*cVg}6-zH|ljz0>p3h(L*hal`o1Qmwv!FhyaKHlU-&R~#OgVPk^dyFF_k3a>EaJMZeVcK4^zir2mkNFCGJ@@9wiIDBU!RPfUR$%LFN-7bfe zF3Z&c2~n(80NEh_E#KpfeE-|`M3zqzL=HKWyxZI#G8A$&M3FYvpAR`RKP(XPmDC+< zU@dQy)3+`3ERFu;;3OX~N7l|-vcDRzOJ$Kc1C3dg}s@dp;ct@>-dV_EB2_#J)L1+H2 zl>3|Oq00PUaO-s%uZ-Bg_%U`;PUXzMaDTFtVy$>*jO50BsO79$@2hGLxnqa>92-}_ zc!R(0Ao6hTgkXEC9)>{jq<+xuhPWuiamNY28iz5eFAEg-iksTv8NCk8)$j(T4QV5u zoR8OY&H{^9R_~S;!kfKX1k#)`JO8Q{9bV8IM=aAb-IiE{|XX=><>=R|(XH0s!X$LSs#=wVk5iH+D7`?17dy+0nR z3kloB@xDtSvJyiP6g_96Yhyc^iC1U*e3w{4)p4C{_WZzIdLs9d6&?r2_F@HySRX-v zA#9>AX}noDM~j6Rb;4FB3?)njXu<*~#W{Z?J0L&?=f=7Gec+UJs80s2U15U60%WYk15%a7P z&8e2*ejs&Y0EsHGGN$jwqZ{(nWBZoru`qaf^1Nsja2UgkZZ6z@k-t_5XeNyn+oSqE(P6IAky6cHuWkhyhfa{FHNN$!*2Q}Px2Rrpo^RjxzQcLz@z@QUEN=rft4 zG>I=MycQ$tgfox~rRc3@^Xy=Lpkr6Nq7)&YfdBcEr@(;AxopNVa!?VpDr$~x!Z;^= z?(BXBt-wK3k^jd=R8Ua(C+WB%-iQazZRNZ`G4MlCa{33ay4Q!sY}70qi$EIVJgi8i z&+B|twSK}qNFs9H4?m(=IuSVpIItaQx0fOrzmyam_Fu>(d!p+PiZPZ57SP9+?(@dm zwI86EkemW-eq{8y-3-^DNUoqj@$)z_F8~XXNpnL6SOLFcu*bn+!^B|lLlB0SBr;2h zkZt{PM{4%Lk>T|mjIpI8GAIJ_(Gp>OQBqCaiZ05Q7z`)b)DEG$`h4)YBwu{dUlI

Gy={8jxrR5zf%wB405}B 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 literal 0 HcmV?d00001 diff --git a/TrishOutputDescribeMLR1-PCA.docx b/TrishOutputDescribeMLR1-PCA.docx new file mode 100755 index 0000000000000000000000000000000000000000..26dc0e4dae82788f1686f2e758316e869a2a3829 GIT binary patch literal 26669 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

;%7GvU}hv?4>@Hu`TNqNbad3&gls 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 P_Hx|6EHV;{KhFLS+x~Db literal 0 HcmV?d00001 diff --git a/TrishOutputDescribeMLR1-PCA.pdf b/TrishOutputDescribeMLR1-PCA.pdf new file mode 100755 index 0000000000000000000000000000000000000000..c386edd0cb57e8d4792a5a98004a31e8a90f8c74 GIT binary patch literal 118827 zcma&sQ*dZoqb1oUpnd(~_xpcd z=JWl;s=wv)|GZ!Sd~Y%6oy1SR{G8nS|Gqs=`(S+Df8(#sZTJ0NZoPbO*>Aua>-Qdv zw>GmoUvJOqb^pAa|Kix?{{-K^wBPzy(zZOIYwKGCVV`dKT%)~Ne-&sO?s$8^@f{-m zWaWK^T;9}@XEpk1{7%r;+%xHFtY8?+YW#U>Kd=g0by}rMFC^n;W-~F*t=+vpvf7U@ z3q#H6n3kUL6fCOx$~R^|;6L3uMKHl%UaNgeC!G8V zROkImf4A$fh2vN5*BodPY@j$I{B~zq(+ioBo7hB0g>VBUt{trBJmp%n;V=syr#j5aMptKY=7asro{r$d<>&O>!!sXTG&6+ zN!ugmksrZOd35!ofI5v|tuZ%9ahXj-&#nsZMjm?xu~l9!nFnViRF94aX9!ya79XML z&r+sSFKK-5w7%;iYTtg7B|gFjAj8{wx@{ThzTd?jiUU7wdLNYmgxj!B=>)wzr?>>N zvo=dDaq~s@bP|6Fa5OlnT?b5;+7mN6-(`~5#Mc!Jdcpd7r9l7Sbl#*l=VLFB2hvT; zSjH^+mrMjKB#9UxzC4$Xe>5d3a%e6kg%Qg`8oMjKZ8@?i(z!0>>CogbvUno(SjvP= zy!^I$uzMxW`}%0zKn$KPI&)n)S06^dkt!XA)S2U5M1nyCg=NzXk>41e685dp@b zIM`4z1x+PjJQR2OX716bh6B_q!tG>CWZdOkV4*Qofe86DryySj2@z*zDJUXP2ZSMH zOTsUttBmX-PtW=1Cw>Fo?sD8TQt1^zK5mNM9zu|xMLx(<{x_a{N)uBzt0tLSKQf(L zBKAm#;^%T57DpZkOwKN*jd?6$F(@bM5GdhLiAbdxT&7Q9qG&d$10%A%-M*ib!kOXU z_#O?dx|wJ~(y@^V#%~UGE%dumjv+(4r^W`?vojb)#Sef+q>?VUqu}(hoEZkJiSCKp zg5x3pt#F@m1RaRqoR|AGV%I5LnfVC?7J89@B}Yc1of7!LF{A7;B#(&A#$jg&!b#-v4iuieI*m>=MA3YO#Ylm> zXD8A_@NUM6;;S7Mx6>Z?9^#5Z?JA=wpp!mVSm()Ilt5O`G^oiG4PunY(!vIz3Ophz z1}+y%6+aY5nYOi~2w+g9XBQMlx$&4})NIdZr7xO+}h~*vL#8T2CE5Y_+x_0`YD*iLwq(PNB+~Lt`C8g^xMhInEJr@@A5?z-!b! z4o3WPfo@!LGU*B&E~9=vEugnjKA0$sMRUE$i&Ibu0l$5;9d#j1_9}un4HO>082*JO zUiJ;X2?8*(_c9Hqj0+hJx^oO}Jw_)x? zMf5jiG)|0%^GDHp(cZ73x4i`74tAZeI0v>C$q0*aVKJZ}Dr|G}a6+m58;mP^4yiN) z=Xk%$m8I64BO;pyvHkhVqyt_NykW9heejaa`wfUV5;-Gup^?OdqAvBEMWCNg5r)XN z5cds@4>W8)tv7I=RcAJk(63ZdrGGmxi38{~2-El~t;mby?+P3I(QbEtI!7`flnoJp zj?%QFNVTI*qB^M_ST-O*%QKY({uo?lHg-_O@p_Oawd;V?=`be&GaOIVEcq>hJwH7v z9gm`fUI~wsLX;tk>0YL4OV&Cs_`%pw3q?`yLf(Lp1NTf_#WdPBl)F2OJ)0y2?N#+88prkWiB(&kN+3~@CN$zz2JaEQNTP+qI6XMU6p3{4mi&lC^Uyjmp(ozhT>jY`aw3bt1Hi)$!E zXep9!itIP!y=9T2as+5jJ~L%=iwZg(6$f8~F)pQuG#N#XsrpXQ9BbR|YT6_Sn039b z(FD4GQ_iz58j2vGm(elskn=EwtMFYWDR*GJO6YH7GWr56VqJaa`8Hw!TVp4f8oh_9I#jc}=*zHJVdG26k{ ztg&Dwak6On(|g&oL^j5AS%%KJQSt~&d5t2m9hHaoS{6n72Uy_nJP-ybPO7%RV@0wi>*rtU4LIGFWTSp?pQ0DyDhbma<{DnT0MVoi<@ZFTu8)p*nRL z((C4=V}p}NeX3o2C}mWgax;?*+&Ck^&A?iz)}k8qpJ4TA`#eftNDt(}A;#X$`U*Qr z!?|qd@y0>5X0cpjy$({wLd9$Xr7_LO%&hXdnRQf8=I0CBblD6h4H?R%@eM;VgI%w1 zG6Lsr7*b6DK{Or&nxZZgkn6fKcfN$h14vrh^D~xrLYudymNXa z!8e0Y4hgT4%M?k&{Qe^12{H#mdJHnYywviqee3l6GzhHGX)@j?t zCCv*6%&6+yTVv*!YU7(?l-CgDzd0_{yK2MMs&N>-2N z%BK%WAmlh(gLCo+2Hqb?)=IA8RUSTIq(^EMzK-a)eu-`=)Fy!Q;m|$lsw5;DTkt&n znUl&!X4HvjC=<#&nWS6y5w_NqT*~IGvN{ z0B;nXwYEyI-+XQqHC+g(%WO1_1UWW{7gg;5ufoB2blz0%PX!_02o#AbWP>ZNHA5ZB3mXeFeYl~zGHqo6~p(?ox zYl-Rv&;X3#3-i50TxNhC3)vwyPkGa2;qTz<^UE`P=2XV$91omC;gzk)aQeEUQ6D9K zl#j{*P>|@hlSGw6!Tw;BBSjk&mF6zCfe6=Mo&1iHhLBkY3?wuK zHKq#3*C5Q-)P&(ayzt5qNqH)_pmy%U3QqVPMYduD*ha-CEKM@>d!og;5$WlCgtVvJ zi2kvGHQWdmty6oWloc8czsf4+=|F{hHo_7n$xKM^sveoBm#+j-`?4`#*5~)Nk}m|! zz^?1eC!*G>==z@cQPR9ax7d)Xs2jql`Vw!b?FoqB27Ehu-#tizU z2?;0rPhK3kK$XFS)OzK+9-Y1~C!5&=;JB`z_p!2$Da!UXbSuN@GM|7LbjYi6C`Z)HP*I)p*D-IjeAeoPM$H^5pG|;apN)$YS-+}Nhmw|Tu9;dS z$2U`>Ytq}4i^1-WGmk{>H=A2qOuEx^oms6|*eHvAb6i_q8{JBsmsAq5JF%2Kl{gi4 ziK=wHjX@-hDdN>9o+L(~Q&BZ!)4=%Nolb_Th2Hsz$7z|F9KgxGYZ*9QCQYZ+ zHM^1RzRKnM)H-t4x;S4>j1~A7A#phiiW0<$T$*k?Z(a#Z(U0sXf{3s;rP*7mDk4R) zHVA%|@k01j8@-uHdL!VC9UW_uZ2ss1w6`ab)rK^RUs5izc$ljhRdh4pWZn~brNWPc za#p}^lGOdaU+_QHk-1Q&b|(KTeE8?|Z(afQZ%py;frW{Y;or~yxn%t>X$IT>N1Czo zPnvPmf%reujGH@BDIgf&HX3{85m^MK`KDDcrwd_{%TN-v;!5 zAHL;#L)BhQKcHvt_MLR;tU~qAfn9@LZyoWsjiUQceDNLjd|QfNzK6qTUpvN>t2?Sz zH_tlq+}6&E$`_o*YV?)k-8bPq%xlj1?vIKNBD?~T&s|$eRoQr`&=^`uHNmxme7-NL z!Tka}GBUOIoBIafd5><{|FS|P_-Xa*b=-M=RlgH<`9tSdQUGI{o&;|@p6}3z9l+A* zgzX&}nr~v^y?6~;9|-D%-t6v+)#G{S`v9qXBfUR)v^x8+;T(rW)7;6w?J?Jd{TcsG zNpJC$lgS}~VZXP6AFpwTjJZd3ABu{4hkT7Wj!@E^Nv|ydiV5h=#Ndfu2m~s~mk>8{ zJC-k#VTL_GG$7xugIxfRAyCSt#fM>kr&%UtB5~%m8e6^!k!~D8;1gToCE+s2UFXxu zFNGQU%Ufg)@xI~5IZ5qpR(RFpGpl=(axpm2D8xzi9JSmk*uUUfbj;3@%;PeJUCuS%N%tCzfgNa4USfW|?G{ z7D>y4m}6N;D&t1;&gYgUgk8Ky57Gm-`7)A&?vs<5JyGm!G9=-2Wy4CulyHds_9(Fx zX!aEU26H(toQSLx?KGc2NY$g&N)*uv39bY(Tw_?+xP7bn<`UV{WG=Ctlz%$_+r&@v7!^JU0k;33|G z8s3z%)*4$)rOXO-W?2*?R-nx-gRio5o7kM5J?0Il|0bm-w8W-x-Vu6iY6KS8&-d#- zG6~+DKg=66{ha%>GX!M{mIpE8%Q90-TqWZRZXF>6$cs7@aZ!5(s(-)`3-u(`wudFGZjIBmAfY|~IQ15hp3yPHu{ zCFA%B0R3kcnKYzYruRW!PKV3z6RmOEfo}*lJ{n2Mw8}9Cz|tZbo=6Q-^ElNuS4lT; z2T`S1`Z`)w@WnzT+Tix!@SFuegJ}h^wUbO2q-B$e5dz}N+KFLmC#KVs!7>9}H>1g6 zm=Il16%dj^5apI!)rF)GB~20~X*XbCw#yJQC&wC>X91|Mc zLj?q)O_V0OUyr6~cnh{ltb148|A!j5lP*uu(i3PjhahjxQ6kF!@t?B)R z=n>q*nzIX?U!XFc^gvagwVh#)Q`dHNIV9*Rr}kh-Fp9LG?s70a8lrQhJ`EGGu56)7 z6N0-Ia8UQv?z~E4>ZoQJi%p@!R%wz66|(Kyd9QK7)J_x8QdVc(przRPH_82nN_vYu z5e#nZFtXyqgdr2s%A{mWsYTj6IaM~L0|c}!uQiSBr+h(Lm9iO=nW%V9QNoK#FDaPt}M(Xhe!CiMam>6nEyT zW3T+5#uqvZE_hiqT;b$7$|6cNMrN2rM84{5Wn9bM`J^TmlfX8X5*-#=no5xgUhZx4 z%z1;eDNR+=-4O$`H?y(SlkADX4fU5?N8% z5Y|bks3!^Z=NDc^xiVXT_=uschRtYj&h>6|{#`5SB@HXIIhfYF&_cx!n$U@v;!7u} zFx=?LS=*A0@See;^@A)0eCO4?7Llo4FT|XaedS9>)V_xR91R;3@R#aaU+7)?o_z99 z$6^_S4I&Fx-h;xc+91O-4s*Cr%FpOPhlcPo3EveJ&NOMwm@;AQ-z6jK*C8%?ur2_fqbIYfd96;2gw9C@rkdyeQnxm{Bja z)Pu^3G>}_R1|?m4wD)Ki^4LNyc=@TIjSU(YDBv+|xLzSu@QF&z@~0OgyfSt5o7{lj z7%<=zC`RY_O}6VPw&W-lZnKjiWaqQhyQ|raniLy{>^XCk=Mw~{#sP*tP68u6vutOU zL;$iqxh~fC%Ag4(5;7QTSe|*clj{WaJDi{h|B3d$OdA?w%_MiAkmC_W-X%I4Rzjf| z^Ps`Tu@+TuT?(Ew2J*UGF*m!2P?CHi@kRipGjE(S&aYhos;pQfei2cez@yZsX;`P4yo*CI&T1G|3@#a$FrT0bCS#UZm z`Vs_{3nPhArqk}O8Zp*H4`g%9}oOAOn6fgwYACb?_+TH?;MFtmo9ADZf)vT zUdH{+81^QJG#fSPX_47v?3ok>J0Nm&55O1t{Va|Q7fl~sxs+Q7;-PJ-P8Tg&=Qcjn z1=Cw*4}w4~nP%KmnDC7#Pwh)hKlW=$#}ev!hg$;Q87m)pA1uqye%B&U>|Q#$fAVY; z__1d-tnr)DZYCpVT_MT5@E&`(sLd~8Q1aj7Xcw85w;d9CpjFOcLOt@i}cLX*iF_c6|TU71ZMu(S-iuZt1z`dEG$pQ>Zy!MuwvIWX3iL$u_Umw6cF}0()rdD zG^lBfL2DQ?1ow)pxC=Fn8{<-)Z(UZ&~C zCvDndE514D^hje64WHQI%+~Ns3*8K1yNgX*fl{A z?4^35Y7c@nE-4Cn#hg4a2ZAylUn`Ut0Wzn3F)_(GXf)98Y*9W((kf%yqj0j>zXtIH z|8N#V+e4S=w;fgciDQXS-ux(~dtmlryFY3LpLXJ@jn2jtVHFO z@Q@u{8BJs69UUQ?os5?2Hk-X;PRn&K;fHS=9%<@9Xsjwt7X+IBg{ccS6XCwQ3IH#I z9(%w;iDUJaC01k7rgG$v2wLd0aGx0si2{7)-2xaY=XT;Kj>-pebC1V%WteVu=-;8CtJ|ri~3%wT)(1i5R`*d9@rA}>*bu3~r_nzY8AD1r4 z1{Jk9ez*Fwvs&yyGPtE7M&Cqy=JIxVcZmZNKr-AU&`Cluj=k+6Y>9{S){=1+R5lqNmn9EZ~5 zm&lJCn(RfcK4}RL3wOm6DqP8hj+}5G?GrA`B9DMg0tTo)Ju=;BeFEUHL-`0O{*WyX zx7fSM&thgzKc0VNXjDBjn@yyu?Q1}~m+A^0^{&!cFR}@9NuJRSl(>}$lA166xU@ag zMY+Y&^6jW|M(3mtlIxLy17-=2eDR`JdDo&RdE?t^05LTs^(B#q+~CEvImY)Ki!p>0 z_)?52p(+~)IIGoyD2;LrI{9O>gx~ucy#4LW*nb1+f2I5{qM13EIR6i*IsOZ%IsZRE zU8^%0cie&4yQaRpF_0oDRYXFNC{U)v^~NRu$j9RIxE=rx#)JObH>okPPgPpJFyP`^ zIzpO;PM?PJkEee>@AKuKEBjJ3`D$17FKhTuQGb8F+vEFx&L8*QLOvfq`T6tq@RPr_ z_{^ER())jZ-cN=7tsdXMUvBmbDM{@r$SYjNB2bQi6A|5#zF zzN)oti@tpP>v>uE>VG^f>$dsNGyqK5_h?*p81)&5ebL%_S`hX|wK1TOHheX$+EKl& zdRFgFNv(S`#ns&{2|K5xw`qG-52%2Px5J|mX&5yqiLms^~9>X!GD_CVYe+!n7`*@%ZW5{I?n z@bQjtde6Vcyayh7qxOU!WToXBmBx}$UwAmluju%R$9r;gR*tkhef56k>^MY&q*f8U zT3FLgPze709GO3uUH@R4M3lw(1+j~dK0tkR)Y91Bb$WVV+pKGA;ZsEzsX1KR8l5~2 z#CT>~1XD%jehQwxXX855%2A44ZRmNdi+RkO^UHi0T#zbYNk+*fzPp{Z=Nj*6jYz>x zuryxuK_=2I2ls5_$OD835C}*t=zL&&mlQ{DBb)6A_)mz@X+FXjSWA}U6g`>Q#j?VLqPc#5J6Jb7&{-(d0ETF!pX_nyCI$(uPE zv^}8_tk>p&aLq#X1nZql2a5A{qa^S_mv>N>S5IOJGQ>+JHKO^3Z#;ZAqow?pw8(dS)FM*uw{oN+A zXwnf7(`qy_MQ;kCXcx5}MkDOVpq0V|;VgAerVk7P=q=WLqj6b4w$u%Ph+QG?-3DkS z6%?La%l^Y#1`u~AJ&jjkK%1vba9tFBqU-jgeOCc9tui2&M`WO$JV4wx9oQnL2cHMc z#Hiv$s1Ypq=FE34JU#~ZBs04~0P|AjU~r?mi<>6w50BcBJIBG01S8QIPN0q$7f?J$ zMtb%99As3DL=HdgHb&E9rvfZkHBAVnj>k8 z4fSyjG?v}#elV}_cGnKtjZQWF!0RQ+_7QZXwVgtmMP@c%}ajq z7E;#5Rq<K#^tNc8iozYv(A6IvMBOk+|{YytVOk!)+E66jn=vk(yI1PuGY zjdp@QxX+duPZe2HO()YTAnS^0(-Rj&;k97e7|b{=bia=SWwx2y7GtdmR*fnY$eghg ziYJyc!{ZLQ2GBwyIehOalw^!ZUeI&<1NtRJgA+VF$^uy1f8gnBpe#L$0!OsFT0Bm^ zjSOX7zZAP;Mh4@UK!q*F(slAIJyspB5-}1RLR8wEC0j2(^*_S-V3wdeGUQ$cC0Nk~CYa*66XWoGE$`{V8&|`MpurbOODL-ZyQ}*vh0+yxbzW|<=E6eb2*oK2}6 zNe``{+e4^GiDlp!(cX^88Cq=^BZ9iJ-Q5N1ThLitglc4{TPt%-8BAUXYdnN75^M72 z6ajQ&>1GHkTWN~Gi|b7o_xKo6VOhN`7|>&Qbi^cS^)|wFyfPHJtnrMjRVZ18ygvS; z(#Ya3vJpj1dT)I-siHp36k;71YnEW^ zVIm(%xd$_!v5Kd>X-<*@1NqD77O&mylJVb{ z^~gfYOn{i#m&g%;Isb4X>2NaE!C|5rp5cbR1^KRs*6TbOR*o`DtIek~W%3^WCDTqg zv}oU4hHGs2IUMjeUSiPNc?-|*_H3x;yi7>SocPoA=V_I{YL~_$By|N5A_*=vf-igs zLc;TPBg@UwMP=cgHRa_k#Z|jOjwoU|E^SjEpx6xtC5*HQ2!1OQk`t(9ij}EOFg-cH z&z3ICX=J!Lcs|7AxHAf1{+wS^vbhrx9Pm~3fVDqf$g$l^25 z#*H}~1b-D6@1Vq*R=#=jd!|k#M?g^JYyR4i0hHbXTG_UC)VrWs4Q3$$(^bT<0;C&L zg^#c1u#im^`e`X~Sj~g*pmP6Wt_E>DLa9Ziu|CfuAUt3=BHvf|VNJw#4Y6OUq*WV> z6 z@{~VX&7SvsEY~>k1XSa(R_DfpH6FdiY9)%0#!NXg_8uk_z=FuCmT4zxW}9Q27A8{m z&@A?dLLKfOr(_f!e&C9v-$~;@7STq0^s-8WOyOhD0(sd)QH7NI0LoCNRoA!G@uPo4<-V_y?3}06oQremIkA%7#l5 zboOQakhFT{iJ@qgiy2G}+cV!vQAl(L{P4sRnqf_M_#!wFhB3=}mcw9e!dug*cno6L zP}x1und}jLj%UeWS&A|X?w8fs4wcdvyp@gZc3@;Hw|!v9h&*YG+J|gNha#Dem?nNo zg!deJHbuD$0~3lP#x^T`3~Of2!uZV>x(%evh&r=rn?zxhR!aG+!Es_u7P0x6AgZB7 zF&EC(7P_I3b`#=0QAZUqcpL`i?V(jc6LuGJ>rP$wEOrXE5s3vGE6a-=MJ&d+S8|Vz zQFrFef)kkX?Xf!b%7`Y&N#m}JyyJ3?>J9Ev$Ua6lJ?wNj`<{(@c6e5sJ%QITpX~J? zyomdVszEY6F1JrTY3YkL(+Qg~644rI!vF-z={wMpQQzUE`;FB9I9YgL|ZXZY$eWZNOxBygawxDrV- z2inh7DgBvb4%;*_FSAcP3Z5o8vLH%5a9w=ohLG^&rglAu3*x=JxHOvSZ~Z(XV;fh# z4r~GNBz7#%q4g1_KHpp=?1Aw0r6eOI*VK{i+rnI`3ppkMW+GRXM`UGcQ+_g_4^nVy zCUF1}d~Q8@I3o&1^T{Y+!OvedY+_WSSc)w8fR)xv4ap!39`0HdWz_OgL!2q*3Cmq^ zOIt=TU3e)G!p%Ayf?9m>#SocR47+E*jjfuk1+A6FLbL*Kt^w@$t4A0}$UV7Ddbt=r zaF93yUt@x(JAKhH|3hXF&yz+-A{{|3DY6HUO3Azv!_?A8jeOoX@gmY>Jy#7YNm#Ih zB{g4#^mdRquPf27iN}QQrho;@6uVv_B+F44H`(sh{Tm##aM03O&m2ecJlaoVx`oDt z#SQN<#%V+sf_)I|3>3Pi>Z}$%0pv{YF@2(X#6rr-3d$@xpM-VppFAGgXJB?k{!d?p zc9=x4qdv=%YJ2f`Qu?;(A03_2l2;9UZ#@BnnZ)H%W~sD@G@fXiWmtaCs6;#lziUf$zVf z{SSQESs4Ehd>I-4i+maX-OB&JmhrVZlJQ4f|GP_eNTh&dfLU*Howx>s{dXA;ogf_0 z^KX}IgsMprox%$VmT}%FTBUKR4z2Bb9{>CG_8R`7pg&cEFLzmQyMRB9_WS*9&;Oq) zd6fJsfA9DH=;zzmP5*M-h^+tZvmW1{=P8^Gf6u?4!uR{*GJ=b%6$E3p6aTqm5uAFy!_HGzwX}n56qVay_h~fI{oxp=CcuG z(z6SgTVPJ>^KW=;-UV8}etmwkKb2jZg|S%zX5FqMvQKaezaMG|lfFZ$W~AA=j^!f* zeD%|g&B@8HJA3k;nUZufW<~7tt?$JsGNvV~-s=5|1a1!!dJ`_+jzn_cc=dY|YrNr~ z4(Oh>GYQzw?aD7B`B^0#dHkR2du%QU{i@o&ariP#Tu0J}=M#26AoL;+1&OhIsg1Ye zT22C*=WWP6j5qk}b0lxriBV;77Lsd77BIaBdV^labI|*mx2!MxqT@+F4Ck%d-6SkK zZu=g`VeTG;l+EhhOLEwY+kQB#rrSB*99>S#DFSz9~SbEOlrD0-DP;g-OBWp}L+r4+b zE59RV7pzy+8)(S0SH*$l5tO{uz;3ZUnh@&pE$PstC~b|L3|f4O-%#J%xZE%)KMQ<1 zLRW1B1IhFUWloI7q#F@u6lrE~JYqP=#NFYo<-EfjBY_1h7=N+^ZvCUvZVut0rk0kZ zJ~D%_%sz>qXED%YD{CVRdgv&YqH+9ZWoE_#6Z4gXjsa=x@--#|6C%Tu2`PzA5PmH% z{G7G~un1UwH8jiWWoE3PHI;3dvG4Ri8(gK)X_0a_hO~9g)*)spt{!xYim~MwvFi_0 zsMI*n?#n(6w|0ylvR61H6WKS6zjyadSAsjQ=~^hsX(N)TMXV}Gtt%GLN5*xu9kAK< zculBxjE3+XacvVs*>nIheMaefci5WzM;8hITnd(X8=W)saGynbV zFZ$%}%EIH5dEOctJC7uecif%U>)=%VvBl1nPgW1QsY&jKE3<8Ga6=B#bMms9IbL5K zLO;c%pqpB64ve3eH#-R4;n&Yt5oFpsE$qm;03`RJmriw z6zzz@l0yT~B7Kk|5!k@>x2{~!f>ODkG4wo1(@asodF8sVxb~$w z$S)Kwm-A-eg{XdU#fRGsXA)A)jJ%Vx>&bcP04F=twpGQ1Qb`MDQK=UoMR8pGE3-CD zRUf)GCWAK3w?T7EG?9wYBEUG#WFImcou`Usn3v*RlvZoW=?z&4u{G^ zvq-!p3Nh3NIVeAx&Rr01=33G?Hqczgvd`k zbUo1TG%u%MAK5XT~o4v6w`?DcP@~W$q z{zid`Xwy>DSE<6HV`(8;wInL+G8|Aa=CGt>$-1j>PiffFhA8SN>Z`T0gA0nP z>yoH19!nucDvh?cAMYS?q1Z>EE6%#G9qYu3QMy`Mq zVh2p+k0Xp;IMzEam?|eRo{bYbmet8Ea67HnKx1*QWaNe(wJiDY$>MiJl8%VL$81&l z=byn3L2D=3V{IGdU8^3)p;OPO)>|xg2ZCWOqvOiJi@3fVyG`Hb@#5`49K#mn>*;io zErH*Lcq0Ud9kIElRj>R4%CacJ^Bbm74Cg6zSp%;iSNA{~qLMIO(Bl@m6ODAN z?vW4;uV5LyV>v-<;9?i%o_+pl&K!viC~UL#$jQQXr{M|fJFh2ETHF^aiq=4lp=usa zKD)tcZZILufGKDxf^od0lx{&Y?P=8jP2bzZND=FE%IHMBJ_eG+t?`Vo>!3g$KmXU% zv7;mx3d|tHXxUXZS8!8E(L$tjVXX>FM|5HiFc_L{oWM&~OOvaJG43yGB^#`N{iHy= zab1P(#q|7a&%2Vy_`-1y0}^9Kj=Ue)#xX_Jn(^bvU0{1n%xrFBGdDRF9dMI+KD=1fd_8L9wOVdg<=)`(sq|gr zUQ2YE&Ndy5UITP`wT{}e5^%Mgf=Y#xnJbNwZ7F1qcwUHLM{gfUTq`Uvug#LOp=E|Q z>ZHftxFc*Q>f|Y(fvSoTAu}dMpiP^3K3!^}X)jk?2&GiFhbvas_r7qc*45lo5t5 zgs|tNBo2{K^B`w{Citts@cW$i5ANC$WwgwQc5x~5DiN_%_ft;C4CxXQ!O?Nt-tI{% zq-WW_imu76tKmpQjU8#aF|pP&H#7>=uIxqKI;Z0f{YDrw;a#Bm-V!D+@CW?fyTN&*$(CP8hB+#D1x*7HkMhtxpnH+^DRAma#afPuftco4 zB_Fu)ZWnbjI?ClC+E^WabJ30#WW6nnN53k6?2$iA-6AlZ55TyJY|2#q8`HTGl_-{EbfwBmO8i?X@fx-`^QOkxwGZyAviK)4Cy#-OK@5VPd4d=lu zC3`Z2u%ZU4*c-sQ@=EzBMvp+IZBr(vm9Wli;`5lvRepwnF1%w6dtrCS4|W))cX0w# zNbYpAu(d@Fh0i{^nkA+Xb!PLCkQQrWNPw4RR(3sC9i*tZT9Q&-EV`B@7y*X`I2nGK z!qliHHZPos*zARdZbu0!J=9z|X4Xy5W+V)T#>mU3^T^hfD*fh0GcKkj)Ae6@fh@5C zw&0v23mBed+?BkuOkOM|;Rw#Umuxk<;}FdC9+(DNmrgKaP{$cLz*mPAMG4^k>^k^k1?IvAeoW>DT(m*Z!4nF4(Wvw zi$*(ZFiD;#I85-jS4jl&OMh-5OZ9yK)RG!E&*_C1hH*4c8)paS0YTG4s;P*wCV@Mb zAn2!G+gSg?vg>(5G!|DNwCj$0G?N}VX|F04^NKJCvx`+wY%D;#wckq?k_0v>ajS$9 z_QkI(-D`G4N5{|kAR{|fnkXX5`a$hYcD#~pXU?!2lma|yW9Ou}PQ zU{o~eMqkm*3!nvGJpeR8By>;SiX%xzE)ToSlDq;judKAmB%*kFNXWmI+Wo%2z1DWS z>gTq#D^}KfDz#gN_51&BjpzS5e4^_d{QQ37+1Gzj<-)mH@TWmy_f0oucr+@UG!sr|B-wZEz7HZSKmB}T}yPY zyYpLwzDs<=%@RL2UgJmnd8c;A&4yPI)@8P9{Ps5%{mQ#)s*=|Gvr0dVJ8MhYlGhKG zRhP1{u>0oO1up*$m5t&?12Jnmo+a0johh`1Pl;uw^{U}{?BkVG?h{vBN){vDFX3z}NvJ0H9bAI3jFG0E6Rjt#a5v9{=}`I<0!H}y&sNLPR< z$TJl^g{79k@7uaJT4fc8eU5(sygQ;hvsy@%pY%|c!D_&VLd`*D&vi}*^g4)? z0Nq{!y|p^p&g~`z_ZUYlc07HyP;M4(_)qO$@LDfPjz74UyY^tKblWdrKg>>pS0NnV%R86d6#i!Y55nGo zM-!;q)-Bt%ZQET&m)^2%+jf_2ciFaW+qSLS`y^lX&OImDzhPx%W{mlaF&$lKd1faG zg_RUymD886LR4;on6%ci$eGw5;Wa*;9AW(xv|eC%lJkuprs)=1Gt)?Gcg||;@?CGU%5TnU& z5+Q|i2#Iq&i-TGw)K^s9wQ;U1@QI+@zq`?U;1KFyWAz%q-47G;xhN3TDLtLuyW+O6 z&Hkpv%XN{Ca_rX(yFC6il>E)x?;ex>|FS5 z?>B;>_;>Vbr2q)*Px2Y0(Mu3E3)n;s3T3TWsZ97(q-6 zlI+5waD+Cu`B`Oa1t+_Ogt&%aLDuz?`pJ?q^l#K+N8?J+12kD*5!t+^v4`S~?Ix== z&~71Sia;a_)nvlb;CLcKuR97ihXLzMWpMVJPYYWf3fJ{oNx@I~<$ff&d6*{1cGaf0 zyiE%C7rIvMINabf%v@=vzeb@e)FFTIovO%r=4ED~vET7;S|NckJWr~;Jxy$3kS*ia zk_d~N@P-K{Fa5si#aG|`W$rXhwQA0aih%f|FVhO}EXO!vnh}UbDXr8$wN>rI^J?b^ zLXC!Y$C1oB_C77MruLUh@ljj_Ij!D4*ZMQ8@*Px6v`MOp3IH{E(xWq5yi|oGE58pG zu{ax?)*0ktpcCYE!C3$3mfWb_k75a_Wgn{GSuQL8RZ7RW{%8v5sh7OM5bB3>2}Q=_ zXpv%5nfp?iK?8^W+RZ{~OJ*pfFx->QLNM)23hk4mtiyJ;ZBG!qThg$@)}>K z$Npq+hmpAwzosIYkP{3n0A926d=OOO%fU2{%J6pqOiQ0ulcp(VW+fSS>wy<`>W^}< zfgoUifigvfK-PEPMo8OptM=f?unn9wjcNuSfdjAno(?erZ_CJ+fmcd;m@Q65bYk`N%DJF4VtV78F6qZS z&yHLT55>uUhqt$0M{Ly8%2CaQRr^?@nVV+rM}9tYi3b-IRH8l)^&GQk))~hR#T2ht zc|rKWA#TTXK9t! zIGM-Sz=&>-2Qc%ZDk0r{rU~zD>OseUl}hXPvr7-vE|v;q^^q?zl1HN4?haF!g8r4Y z^z)=E%At!Am4JWThAm8?efKP<8|7kE!3!lz4Pz9M+6NgDW2Pv~7J{XLnK*0(Lj3S8 zfAMzM5rYmL`V{E=E@!Smb$w(H(=L9F`9_# z%au-d@V4)$n{-$cmCS;;n?Wu*!^MB+Qw!fGKPrFD6ERkG=Z;2iiR@!C2+6BPvp&78 zax4Ou*>|>e>*wT&W)<4~OGLEJwo5e!)a2kl`4dxVV5&pWa5(l9k$#CRivb-|ziiwT zk3A%C7+G4Eb-PBzl&wlYcPI!U_7_hb!GyuWD!?X#^|VENkq@ zB0hZx6^Cp9c;u+7qPbBf$StUI1M>*Ts*lg239x0Y{L`tH+?0?eRZ%WFGJ&M$kCcS~ z&RTdhT^Nu3!LsntaTVuvSM6fvC=` zP2A+(I^{SQKZ0Ipn9}iD0ZrX5Y)KJqTyBEEpGwcc+bg#v#pRkRoP3bnF>~pKlx)hU zGpo>m+7QArMTVJ}&EpCK^;73VT9QA-9Lj!;Etd0T0jHI+55|Jjr@!TZS0?DmI^8>i49Z1jVQIofqT6I^fhuVgm0Peoc+g$0ba zfK{R~@3F@cWJh*C!e(W7)}+_@R|2Y9L6oS9cc{R8wUf>iUfXgEiG%hkKkuToMz_3V zG#|=q7g9?{+oj_{7V#U#sovvL4W|H&_ny?DYWLLeAq(C5ABNc{8>+ugv#W`YWgG+^ z(6k2gf%1$|%y?&7*xcmREBC-dWKMGlU}}|s*9e2ssqU^`mu9!i%9H$Q2~^Of5&p!t zp@X)dLq7x)Qyjr~`|QKp39{oF#QDtD+wmiquzP0N=Aw1Ee$a z+PyVs%h99N=yPljp^FgF4KOH(e_c9$vj+`TE%D-qNMZwIy5>9*aI1aGuysVOEF_3O z?bUh-G(fNmE623N>o78o;Rnc2tyG_c*Z}V#mTI=@GdZ1r^OcsLu-G2~PUU(>;P4vt z@Uz0xG>irW43~}=7s8vdIx`%r3x9I*+uoME;Y&R+jdeLlp+oSRp(@)MI#sh=EF~9P z1;)(0jzr1h2#RrQoFG&`;!?3>cW>-L8b``@dE_(E_j$s>wFJ^x3l!$I>KT3h^%!QG z7>!)~%tlQ4`8zxAos!MB-GdAT|L~CkaZLr^ZdU9pg@02OT5W|CPXn$Ex52Rggqb1F zx7^Eb zZimrDi;Fd`BEH1Bf#{)Sy4|E^pT46JH9+C(o#S-F5s4yWO9B?pQI;Z?czh^IGQ_+b7hq$3U@4z;PSulD z{dPQa)U+S8>Efq_V|!F_%3z5t8N5fn?*CY!RDxddzqF{|K{ap2 z0al4fooSDOm~{}ipO4ndVr6xcko`5NhC5MXpz#~zirQ#CNxV4t5OabFn2qleJlWTn zU5|w6LIN}CQ@(|%vXj(edNY8)Qd8QHKhY*h4IK$-$N$PPyF0L(iFw<%+xB|H%W5jS&oZ5QRE#qs*m(&O{-K)C%4EuxZqWQm>#JYwv7^NU8Pi&#H_;aRxoP8E0PkaX5I@s6 zGLg|((X_nQn48V;5SA^m!QIj|!@s@8w441<-Lb!dm?_n0^>@^^khJU0p=|XZh2e{j z*GA?LLca*RIUpBAp1B}1PF@o+md?tVBz5=&gHq?#qwe(oA`xQze;zb_41yG&9dg%6?$_+*^OK}gJWku;ME31$a6r^sY=28C1^o%P84Ad z-V`MWH=8>qcPKS4t7+@OeF>{sk@KfzpDR}D_)|@8R-R`!-Y>CD+Pk&<-2OC8uLlFB++XzN5#o~X0Ypb<;m61|& zD#{WB&vc9$IfU6tEr{Hs8;ZdpKPL)Ki&sZdk)<;)aQ52jbZ>i?TB+jnj7RbH?z}9j zsM9UcUGtd@eMcG<3zpck8s|allSL>MJV|&vxUgqPw3p8L=X=aw2&M1n_4O%^A;Gt?>3JTkigfseo2bc*#uE#`|yjE7I;+qnS60FMm*zS&*S- zP{#&tWygcmSXa>rD7NsnFx@()`{HpihWqyASgJH$O1Z|43N^u)-CwAiVBI|N)+SYX zCI3$JD_#?sV4d8AIVm{;#UUw;&Fiu}qInqi?0~I%wKt+L#HfL0Z&p9Z3hVHnKN>`D zA0X+naKDp<5Nt>$D6+*qu}Sd~8$0kE%@H{!3$0XS`4>Sk2z*nw(q=0wp=s+d;KMay zRD-YMb!2vG234+63bua}DQ3FhsDtBtNev|@1#Sm-9%K9Uuf3U83R99@rNA`S7QLXa zw^fg5Gtt$S16ABkH*K39X!<8ez$~LF++)&HoA@}Wxoy&Cj>4l0+FCm7HI1gIL$HXY z$N2{wdmSFa#QGw-#}=dBWx$#Qu9g74gRkAl64o+Lp+aO4;EkU1NeB3Mp$%hC8^jUN z6a~zF^CB=Ld;`LXjh}>unT&x5WGt90xo$oLPiK4ns$KidYs9|$zc5?98Aaff@5$0}lq ztBmjJ>-Ar3?&g5B)Kl)y;x{Z8$l?RVZ4naNzP^X7il_aq@8w;0YLH=u-$yh+g3vUl{t5jO*Cu++IQzAuxqQ z-lwyJCSXTa3_<6ju*2KB?evv>W~oVtnp~|xXLyH+2~993;CGruWO3=$(k`@U&9R4_f5C0k2CE8PXx6UoGaPfQ+Z&)`LHDmHO)@!^9_@8$ z+)AEkw6z%&(f3cK8Da&F%M2cP0$q74D5irz&!m~hRGfA-(IVQ!FVK==T4Z>mtCyvQ zZ<48@V^K;el#J(xTHdZpWh=qJLwm@-y&+ijqVmBr-x%x8 z3!CKBw+i%xKy7|WfSEqtJYIB)&qi{A;-p%lZjTS3M=(!q&GW>n@DhStn||Rq4Mz?Es#*iGPu=J*bh&RT)VsU^osI`2cy*$u$eM9!CvAiV4Y``IrvNVq z?)$4Y3ceU^)Oc9O13Y=MGC^>j2XMx*vO%NgP=NW)?Tgvcwm^Inc;f4$3`|~f&Hx|M z@qWy?ay*QmqJRaASm2~I<~)Tc)P|2+Dif~u7p!I`Mkz_xK5TqKQdhLafN(89(hEFO zet8ok`QeTfL5?Gu1RBGE;2bg>X|iPm;ANFSA$e8${PP4;8`r zz&T8%SWZExtgTybO?IL=0-nFXL^rT$47w!lgi&*RHpT>IEw4gmLf5oxurr$M&a3y7 z)h_pg&L67Sxx^0xPagx~l%U1I`M|w|9eU#!r3m+k^5Ydg%c?%g0+vZlx(A=HjNU2* zIBzeXWb9UYUS|=Ol8HHsI#Mu}G&qh+iwdSGHTwc3>Yh)emY~2v) ztH+;2=4NQ~h=icVGRpU$C8g!!Nn9ztKbJ=+HNNh!`F6CAYQ3gXzQ~-j2lQ>c5Y;$C zU1>j7=F1EcH!2GsI#o-haN;y-{Yk$V6LH}lvfW+mG7^*;XO3`N(dOfgJ3P<072qEq zf=YsxsLJeP*ug?QOZ^)mtjUkK46FO#N4cw|vTs#gkykl(D8+rVT?S z@6_!2s~qN%k?T7$U)CbdqF{Pu<~}fnD|AH*!|y{UOeb|-pwEol&Pu}D zT192w1GkjtV%DXb)|1(Lx`T9*IDRx$v0Vr`xO5(w{5vq4m#g4~7>(ik~D2{c^LUe-+Dn}%gR@f)fNCjgo zjVPy5Q;)k~Uk-b6=S?s8Dk$UG-A&Sc1(p)_X=LltKxt~$k_rd?Vl!p=^L*)DhrSlA7#u|TW!U!mH*6Eb_vCg3NcmHRw(Y@n_zB5 zrcszmAxL%Q;^PYUd4`6co?32~UCwJX*Fh7jexO^=QTyf#EPV|8m)=IU;v&^zQX2ei z)uivyl$tm9HkBBMwDtf@=%vhEoLi_|&_A40v}foCVb@(Y5V|rNj1`K$Efry!jiB#G zS3T|vD7ycz#q@tt)T~_W|4o>)F#TUjo8`Zt^Z!k0H)%^nk#+nZ!u+4oE+a3NrGl{> z<9U6~>kI4S6vXvrde!-S!B+|{n$6JAF@iAt+rd(-K&Mw(enuwn{c#{jxG>_Jad>YK z%vGi8y^8+xb?`#y_q8z6a|iwUFe2!;+3h=d+~}=dws%z1p2s15DTz^5q*}>MSJUKMiR9sY_0q$M zv<&D4GYPuZ2KD~FjVlNEAm`ettT=e&D2OcO5j1_O_-v&K^A|{o+SyqclVkhjLfz02 z83y&?;OGQrgk|y-2_>}<)HnHS4?+eeSVLZYh?w9MHuP*>mhT=o^h2Yoap_5lQ0Eud zz0gtiQtwCLX>&|*VtVsf|Bjot{&U#eb@IjIU`c9JOMA{gx02z$Xgr#|`ve1Qw%3FM z331$9;2=hgi00~C5W*5azZc^5B|o?uG$7|#PCYMW)Tw4*<~s;IcbJ{7dOx*i;^^LD z=8_CTb(Ny!aKH36R}vZODg$aY?f3*Be2^N`Ol!iMH3tEZ>+g%7oB^eu_?o4LLBipe8qpGF-c;vAUV@|S@cw`eWqozAaxXA&T!Pp zY88X30Wacuja5r5NsJ_l2FAs{=+OWQc+dfcsxh{&y>0RX5MxqSH;VF=U*V}xCHBMv zCP4Z;J+pTV72mj@Bm9B#eC~;R=Ah;9g&V^yULOQ%qo2%|DYYC~c?TC3qAN_y#2ll$=Z#*@kY{fx zaxtw)Lhj_k{z7nl4yNu>Gijl#=WrA&tK8om8%2^V=y(FRg=P6ISmXEq0 z#fEO-S~haetmP8EiUrkyDVpCwQcHq9LYPR^@$GSjJ_||(=qwS=Qjyt_f2-kmU1^LI z>scn%Q}$;kFSr84ryq?^Y1Spv5*Ww;Zwnry(N)n;2IBl|04+8~XT@a8Rb+{IdLU$h z<30}SsvLWM;>6Cn6TPC{fl&YCjHqSn3MMmOUtx;AR2c*>R27>+@*kF>#;+!iC= zX`tN^WNjO9rd{~hUm2<@5{i*Vf-2k8`;b>$plVG3URW>FQvy0+78R$%zlj`(o=gkr zF1Jk++!OwWjk6jW2C4!R0b9m%ugwkaj1WDqt}lk{Bwp3-P|-VdDb{-aE5RUIH0=^$ zmXzz(m*`O^ym;k>7Kj*d4K=tDeC$zXB{KfUO60P*ke&FhHzQ7yu_AgY1rSnZMOmO_ zp9v;p6=d(X`g_c#{*5=nwi41qGlY@Da=#RDm567%MCCUi-eEHgE>lxK6X31$={4oS-YAMzvaYuAuyJZ(tu87EuIc5M<%7 zOq}}w$&g5hrV!T@1Hn>^*56o2no#7B0Lz21k9FcGp`-P0Tnm?*T4vSCvFKwpUJ-k? zQTazmJ&X#|x^iouh59Nk@&mCkc8A>uJTdYXMjb7xm?U#hI9bly36Amkc_puRM`}&o7AKZ*X-0j{?e%mt*4Q1kCnF#O<8DB^%AYv ziLq`DiB9~Ha1(~xMdP>YQ9Kig)!NX8mVJA>@r#VfBd~%%=2Q$$sQ@ASZ@Q%`5Dj9dR(^(0ZNg}(h=MqkNWwVP=O0JWC2(Fd3r*M{h>@Z5^zrv4svHYI=Km~iZ;INC6_Ci%&cJ_q4bkP+njPBv^(cDf=?9R1jNA) z5~Nm0#_e&#XJLUN%Q!Ce#}ykDDs73QmR$bp$%XT{%D!xZ?@7b!hvAnGh<+iTcx4?k z5B9*6>X<>*_1HY(Ioq3TiP^A*ivYbpFduOA!7K!8373L$4yG6$gC0 zW*|PeD^hDRVP+?nQ7%et5#1{CIG=h^j}F<5Vw|L-%(mL_OBS9py@XdMM~9#b1fR|k zH;R2O21E10CW}X;PZ8(i<`^y-=d#Kap}p5n!Jdg_0C@{ID~!<5hc9o=I|18OIA%IS(^+w zNZ;pL0IHW>KzHkyVPLZD^i*a{%~;M-8ft5yVAb1<8HP3-`H8$E`Mse#`UmLyDDke_yza_#~Y@$N#n(Gl{L1Rfusdphh zlcL7rmOYr@VsYcIbd;mN-Bh(g#eg(Gk>MjrlBeb!O*ACdGU3TdV6~aS za{;0Eh%F{l+4}HAotpD&hE&nWXT7mUYuAAqb7&zg)n;Q!{bMBX#4)UFHBM=;B&u=@ zA!VULRdEv6&qq%y>y&3ctsu_LS{csm3RriSAwE?ccR)Oy=Z)VknH1qqVZP(Kk;GfL zz5KP5bfLY%h7cO+qBoCAI0d&!V>SY!#Sb|kt(!R>?j~|uqQK_JYm{&Zns(~FV@-ZI z2HsFP9{WN^Qo%nMe~E9)Snpa5O7;8hHsxA8nE0XdcoR{^?U>t(XVG9cNhM^Z2ocO1?K+ zk;{Axln#*18uV4#?f&F$pRF)E|KII9m8-~BS&Y>WqjPNUlh`FB2ZKYhqt)9Tp8R7J z3)rk(HkpIz|Ds%HInIJ_pmOCW0^9iY7Ok<_uY)eD<#>Q*FjpHyh4?VgBGi^pK^cL| zVkB~Q=6l&4OHYCx2+ssOl)iYh%@0xS5DamYceJ|J?w9 z58P2$13~rRzQ2-vM~3~i?`38HQp>Ke8710D7U$tc&}&V{F^4l@ zR}{7BMjMXSq~5DmI^I{ZGzLClc<~7nN`mDmNmAU_g|yN9A~wTw(~mmIm=p42%p~sC z)@7jC3r=1eH{2{7(uA<|{$I~`iy#(nO0|=7$k&g?niux`Z!NYChz6I99B=10e0sr| zqpm@Pbb$loniR|?aUJP+Oy$RElRj@K>LEU{x9CawUugQHg^LQGdUGSE5FEutzw8%9 z2plSI-r>FQjKcDw1+b^jzbfclEu;RnvO9F59Yau-GoAAG+5hQBIoyrrFjNQ?J7_N> z)JEz@`#m~!9DcV8;&pbq8<_A|EVw|f%{X#19+8?|J9g8<4XHQcr6^(NBlUt#5xwxo z)`vR1M;Q--675s%MY28|{3j|*B*9kbKsE^e(kr;zfrmQ;Frww8oy>SNzLLtM)i>Jv zG&_D9LFt2^QZj6FS^Rz`1II6;p%N6bWo0rsaP2xbM0P>Pr`Zq`O;_@oV*_UZ#03dy z9ttKLid$x(hhGccISm2V!*91hZOQg3AIm&JP913dwq_t8p)-yN2yD*C2Mfde*M zQ*@Ax! zy+MYD?##VDvol{}-5eJD1SN1To(8=&6PCfmB>wEbO3QypJ0$-fPQd>W`2U5dvoSIM z4=3P1UFQFNgpK9DsP+HN38+#ZE2rf|+WMgFM9`KXZ(6i8$Kh+lT;pdlz8hr#HAWuY zIDAnq7yc#RO&kl`-KBPb}yPFOn*!H1!Wo{K({D6Wt!}h&b zUeIS(B+b|3tC8INl)+U?K_2n|O@eh+O@m1-!As`l7X9V1Y4an`r=<&**cvxVZCYv= zRW<~v>qz7i#FTAy%9zKNZQP`8f-)F z-3hCIAM6d5*a^zv9;M$#!fM`4o`?udpz5WuZ@vIp|Bce76IX+s)fU!W6wEic(cNtB zup0ZFj`MAb&qBxcY+iF6<&Z!#{Ik!Jt9@QvG1XUi9hk}Iu|7TKDFWB`Fj|f8U9_(V ztZMV^cQX;be~vSVjAI}S^s!=}Vo`iXM^>|BEz;ExeILVc!#Tx;)_@#r3mg-!ysBnr zMjYnX8DzQRR0i-+rgu9U-+64I7r_7wi=u%ff94{b!^x?EM-cd1U4N=E$XJZ}8v{@MxzY8kJo4 zG{%l9lb*NLIiGZvguMN3X>k~H@#!`XM=B(ejrP{ZEQo1V(3HOOb=|0s8GD+tG!Sd_ z;R309yZpG4v0Atn+&O?wNzD=*DK__;Lf!6)qjQY5s@AK&4x3s?R0vyh=@YfikQ#>y z3iAf0?xwKTL4VCGoyIz-1+!NK%(m`czq|oirKO3iLqd- zi`CXj5e>wIsxDp&=lR!h8fISn376Ky#Y-Br+Z+Wt+cR|y{_pfVMr9U8xPNi?(wRg( zj^wRlnvCiGwM-QLkgG>Rj0*v)sfBRtLvpOI%1HcQB}Aa5^2{}Fhf-RdVkc@ia(<_} zMOO!>VfE*6Z9qo(B8KjwHPsXYOcw#B6y*2((r~*QD9bZ0@9n6)uoD7lwQWBSD5sQZ z+hUL_nTE+Qq;xthhUG<9@P<80{_2U=3ULK$gst}x;5Veec-zte5 zSJ~I;XBTFQm>mS4Vat+t^oEBX7uDESC@#!7$P zCiP1yp>=#~=G+4uqk1D=w_s62y2?E0qg+5MWRGolqOK)2j`btN#>b8M@`N64woN)5Sb@3TVd`*Ir%3R^b)DJUzNpkQ+|{Jz_krwX7Akg~j#foiw{E zhVqk)s~Arf$fO+&SKTSgnWE_h$6Dj+^5EVROpg{K#!lrenJLwt&{?TCx4*KjTf4l^ zt&8DTf6wbB?Ew`R3Y%ov->mu|Ez5^t)MNx?HQc33qg?0aovEvJO4m1c*j>+YG(GyF@MKZRNjC zyy@9vI9L9^=F@+|Qp_Ao|6@M=ryBHs%%}gt#QwMWbo7r2qig#Q6Gly~oDMA}yzF{w z^UtXs=8T0Gz%pfcc)`ysnoZI0VZxd`a8WZ!Ze}FuUR@km%ldwOy<*D>eb7%$g#-$ zo3B8$9*`K%RB6&oA&Pf`Wm>6s9#4^UZX#dUS&bqm=W9Rw&UP4NsnF+qRP(VgehS;d zzprp)boOwk$v}~~kkp#Ghl0^tgAG~Z06$|l@@NAZr%NfnpXOi^JK|An!bb(=8=V@s z(}_EaxgIY|6{Oa6hbwdMln+|mHHIY+Y0ak<_nQZZ4g(!WEgRJ_Pyy@pkkGreR!p

YHxdf^Vjn%7TTQd@U9e_Re%q2h==D04$o6&0Vh**G0Q#>40DsF|ya)waiF-`N5Up z3gM8$mCml|4avrXwzNYXBpo6h_zqzWK|`C2v<~LrYSyHAsGsHOyIZO-eEqiZ5!93z zh%O4o;jkn(M-M~G6;UBXAo^06er6&b4 z;e+XFFqQ1Z)1W|>%PICMEB$Itw9zzTLe$SF+;-C2j)nHD5hg>5utlfi;r8Lb-Hg}2 zkznuLM;&lad?50Du7%ZYXoN@0q0~2%Sq8clcsT<`a7?fB0cR?$Jzyzke1S3# z2e{0*e<+Tl>e&fp{pk}A-4mHDJkl)Thl!WLQ8#?SBtX)MJ14>SKjVeYnT1HZkXd2K zq9ysHnRn_@Z`y!GCOzxOvQpEbLFa4-#TC)4m*;qqfh^moniWXkcR95T@KgGij|$xB z!sS|-#s;0m=8YumJvv0vQ|6VU2jUgx)1c~fYVb@Ri8-jUE!)7DLE#`30GEAly8%P! z&~%r|(w1_+MG~h*m+j5&4y~u#tyvWNfoo@ zYRTpC?Tuol{H+2o_-~la@75Br-owHJ{~3sn!Xk=i}0c z90!G8J75rVBM>GF(B*5Vq)9nB0FN>4ps3lbVElj>WGI>m9tD_i-BSJdkA|*BV{7nH(~nBLELghk^_pmc;1zK~Op7T| zllq%FTG&G~uYnC2+3Sg;{Rqik@WG7U#0HcIVoH)aruO%+p%G4+X z>B)JU*J~AsRz)}bSv;T6H;?1%mafH-DW2tO>EAA2)XWcF+s1ZA1)`9U!NnYTUcLek zH%v1ap_DDw2%y+4>*FC(;*bv|2@qn|91xz`;ipTfSbM+ICYSO_6qOtd9M|BH@y*LK zQ_II+xMl(D6y&Lk8Z29~7)qbVmWqnez_A^r(wcOr$$b%ga5;OrYVGONCc9c06z1J< z&8u8n_J}M`Qy@`13--qGyot@=$mn+}8ikQZfrAQO8a05uh2Mbg1}ee5XY#9&dNe49 zNmsH9wsL)P34DOr`(h)TnjDIo@R}YCF<_YSK5_9dMx1D?Db?XwN`gU)RwG&((>cLU z#A?u=3D9|;^&5$uQ+r&%-#2IRUs1+4KM!?|pqdtgqN-d@;c-}|?A9HRwMMC8vGcPx z1O@w3pcE6{L#A`ysRXJIh9V^74qft~+kTpdy9R{i%6#z6J2Xo(Ci-@R>1-!$F;>n& z6j^C0vX(|cA__XKK5M3}oxWbXEyDqD+?67ySaiAd&0H$O_H!xbr(V*v*6p)N1&F`V zTlv)3Io*B>yR}~L^3vDv!1W)TVsJcLE1*A{?q?J0g_RXeiItpEuH-?~7mK|`fB~@L zd@FL{UNT+#AXt}C!MD)JMUY^3>?HqIwxQOJwE4?U{l?^u(#hYEL<}w?h88rN6S z{bU;Ylg3lwIWD6n>5ls&yjBYZIb|!wGaVqmG?#^ za2j>m6dzxlaINAUY8(gZe4o4Kz^T3&0LeyVTyy2Y*l8<&+$+ zPYGppnI=k|f&@Er&%C~%5j`KnPKx;1O2MxRE$SQr*YtGaWKZDjf2#bx>EYsu?N-SBu`y7iG)Si#mDNE_xd~qcb3g!VBOyh^x;rvz_7{nY8kCDK#+?^F#y`BSFR_6Ss~ylHSm4;=-sH z>#a${Wdf!NKjmS5xYl0RqGLcWqbsy>tAJ)sQzYPp)Sx}_*9I!kVBX*e5G3zmGGEXB zl)CbdX*KWkxQKOM6HSx3Pqi<%F+5d@S~*WLZk2Z>iQXZ)^-vy;(@{!EZtj5d4-@?w z0R$4~5fh-O%0=c?Zgi}SoWp*(fB^1*qfzJ@-!U|>uCctw>2^kjX5)(1D#|G%`%f08V$%v}FN%lxP9 z@xQeU>wkeb|C^R+`gbGnuoeDazU9=(zf2u*fb?0gEMPqw)tDrInFBo>W-LCoj-taPw?jzkSp!?{rTad)RO!2$>r<&sRYHff#$A5>7%?d zw)yB%-$Ho%;{5?k*t((T`(5^wH>Ku=ka19ZO^LT5KfFSt&zsSoSf!OZ(w#diw~)G1?{=pW~HwMNizh#yPaz0^In<7X~pxF8X#o9dMx4< zfNTceDItF~>KPQkkL0X&dp#ihrRQkb$7m^rn< zKSJhG^KK~Za*?T3y)J@PHq^mW4k3?%ks#RX08b|=c<13XFi6k8)L$Mi&8sj6^UK1Z zYu~MNGzbt%GbuaKtR&4xQz{?D?)sjr(n79*GueHQ`l)vg+dWL7)(Tysw#O^~PD7~v zxi2IWFMQep!FMRt(^*K2xV;#GzX_w5u|b@bjp+?Gwd?q}2)f+0fJ^~kr=|UtWd`Q` z{}}tHAkm_3TN6#&wr$(CZQHgpSK78#+O}=mw#{1qxp&t-5w$B$z0HXEHX~;A-o|LH zeH)thR^`b@dEiitBh;39Nh!UFkcymFP8rNaSuU|H9&2um-87sKXVuU^Su>(YS{0jN zm4rK1xZhU*dprnZvDkJ~f4&O{1eU=3yB@qU!FSbTzPovTegtgvhU>fO3((2csRxz4 z45LA&B$30&hl+#Ex%C7x;3`0X16~8xv)hx9&G=@*T}|c%ps}KT=y4E`eK*7aA`_?w z89?jef&}42k=M@~QhvBfRobKWv?AxAMupbeKD(t%;N=~RgtbgHbcB*Pl3>z#<4_k@ z6bG`~dX^N|s^Io>+$_#GMz-dX^&)9f5TMoBQdd&)El)O$x+cA%ya*p4e7A^tKAyUw z+h8^X=~X*Gn%kZ?fMCbg^jy8rDvI>?0@vWKUZh>Nise!)mG|&WYazA;$vCt&H5u{N z;)8MH_C+&@0(E1!1Jg*Hpy)3WJl5fP3Cyf=0mUxFz0Jt$%LaYbvZTo=I+CpABIFG` zMv~*w8;G-cBITW1Z$-(yG>=H1s>#m`Qy5VfC4mRW0Kq%~n)&RtbN0Oeaexx#aOb6S zea?~v2@wpKk!bE6fKUMPB!y^mrRTsf_wQIvo25aht5Tj$G*GMJvm^?VvomzhSXW&Q zEQpSV4FfMV3lV3dkC}oKu0YqPe(2n0FLg}2^bRNh5s9MC<`I*Kq|u}(?rP*%#LLQo zJRtn0tiz*+PF%A=yYhl0lLNH0>=2_n%PS(!p5Q~qLgR+i|UECtK%4W>j=hx z9Br~hmpz+7XP90Qv?aX;lC-?Zg9SeXO`8mQmmDDSLRTSCTzWN64w;xy0g@1%^LB3~ zse|^U)yMMBAr;Ecl3P?viaQx^sf%d1vj&4N29Af4KpZEk2F+|rd)XUqd1_T(uCs>x zAdQoshC$7D);&Qr;Z61Gu#8kG6xshzjCwO(n z*=#W1L|DuuNmCWLss|GzT zz@e!*Qc#j*tm3Ul)MQhT|B`pmd;_xS##5puY<_?#mq|GX;S4m-BVlF@$f#P`o9uBy z`{rT8+qs}*sHUoBD9?>h$x45^=>VLM^DrKgrPPn!CaNh`3K97~*-vmvR;ZG~;AEaF zJG-k63k9;NbvU`A^-k)BPEcA4L*$`2_LLfj@)lo1azID{j(Vv%=69V)m`idzIh<+y zyC2wJO0s0dV#vQ)8y`dVNILn@GM-&Y=on3L`tC&yGY*#NklX%7LPuQyaExA`o8Y{z zS#$jqi$Z;+6q)Iyme&07De63s&h+x9$CvJ(SGh4S_!r*o3#bNPF*Mqt^d=d#bRoUS zB&YWnBIdR{s5+^i)HyAqxpdw^n~v#9*|2JR31p@|70vpGyAMh-v zpV8HM4A~Ci;I5-~V4W?{(^OuKCVn~3(9;Mrazk=N13m5~_Lr_hWFe?8=Tw@PmCiql8+P-uw6VEn zJxoEm?}`wsyBQX#2&_^-f8=tEL1SlMuc}*f7bP(%rcu}$tymh5Ea~HUu)`3?7WFk|qgEI(27m!t7SR^~15r3!MIJj5wxP`M2#0DhG>-Lc=*M@F047rL~P@)Cnf||Hd%1rCb%sQyD+G- z{R!!L+0clvAz^x#uL~Bsp)`qXlA3qsLzD zS4b)(&8!VjHPTK!T>m;W#NDh@%6evEvrUj_No0zH<4R4jrQQ0mX)>fm&}=)9q@7{w zCe&HcXzY%rF)mmXQkep?1#{vl2Sv4o*cV+TOnHr#CdDugrP>@jb98@tSG)GY?~7J; zVKBK>fd}H4yGbz1(X*)^g1Lqq0OY_yoUCfTE9|s++KWuedKN;6R}T`))KA?46R&(; z@A&HPRUJFtCQ9V8l2nas-Vh$aFad_%?>hVggsD|68}C5i^%741B)r#D8Zo7~xlX6B z&$ReB79t+Nc_O_Q3<9ZAKf*qd-bxdlf>IT;cL4qUx6!M7r=Lv|_`y@k6ilXt!TddY zGg2&bIM-rLt>1oF{+Rq3xv!JBWC1qInGA_oxyG zqjjxdnYS6M}rIi#7#OS zXlQ0LPqR)0#u(B`#Vx?Od(j&OjIKa+roAcUDW}fFpr=01p{5a7mk+;1wg+#3ihGdL zQCCr*&k7*`qxTi_EeL^0R=xYi#qj(hl>S(8arEI-{*@;#y4cvxr7B^>wlC5nI%Avz zaO9ONzkO6v4&RBQ$L?db+pPk;S%sbo=QM?+SgIr)Wl<#v$gtHoh7}8r9>t-*ipUg^ z;YSbZOr&sR>0%zAgx@W|h2=2T_B_-}Ckni^8(nYXK9)>vFgop;-^B7bDY5vWWzq`I zR;T;;ZBTgs>Kt$m7xamwdihCJH=zm1pq|Z2dC_NfsQwX56Sqs5`0eUvk6L%_*}0Eg zZkt-ciN#hxp{#Pja+fW9#u)sP(9jSd@=LD<9@$znx}fwJ?SW`T=2_}%IPqr;O>>QD zbnBo;yh4d6?umDw)3 zg$-}=w}JOwrK1Lm+QfRkm#lyon)XSB8}DS2B#D-cvHJR!nNUJ#l%{4>kWup2DpMWX zGrfG);ZT0%EY&h!x1eoTD7-zOVk3|c2=|sDUDzj-9B*4WA~wae+NFJ`(=%kr3U8>c z&nt(Apr&AtHtz%_$JVV1n019H@=oqvrLrpZa}}yul!wN7tMGCvB?K^Zq~2P|W|K8T{wze-pz0 z@uB>mgz&be?BpRELQiim(dj@5mSn0aMA%S0d^atK7eu$K_F2JP_tULA-;=3!WTVY_ z0nHUztT=O~=SfDKsyWB^_x-A5&XT63zZ1Y|!5?M*v0nXNpRcdMb9qnTU!U*q!RjpS=-% zJpN@ktSik`_zTUsxSv9>9}K)Q>O5~^-a@0oIL+If-Ogr~ph|r-)ftx&ph!7T09Y5i zwfathRW7;9{jFsm@S1&YTNl*>Prx1`j~+xA+7z+!Mq2neN}cHdSS0`o592Fb)qXPx~RZcoH_Q8z{iaVJ80E9$@=v7`#m7gA@}AY)bZ zc;p*od}}(7joMzLge?krJ!050JOQfUnv9Xl1r2}OlD_tm6`AjXHSsLTgVa6Q^&;Vp zmFGv7{E-UHr4cAuNISK?4qO8V=1hr>-7g5?q}G{L_7 z$35QJoo-7QDPLC1sjW zoS;$N!8w7gB?<($jho?qNSuZGFNev< zQ^CxONX+&7-9s3|NuJCj%|e^&o9mB)?pm+& zcUqnBe0v-riU1%`9FD+10;o=%Spu|~-M#DSR7Ok4I~jTrc3QWU6IMB|wP%{^T>d?h z$*!m*H!q=8W2>9#w>ZazGi3D}S$c^)q8;5B$lbZXo4x+k2$?`w!9KA`d!Bk%o~!D{ zF5N$*dzwccM#5phu@nn5-f+FrBIKG}!;B(fY}xxZHoA~obWIHcd{!$8-YqFn21GNR z<$quZb1JI=b&zDGfy3BJcmuR)fgjR`ujg^Jz7X%4d$ONwd9Z|jd+{1gp5qnVSX{eh z1gzbYJ`8E6nJB|Hk`NhTTI(>LV5;hbAU8#Rjed_PU|-328z&K3Hh-GpF4KsJl0c~F zeW6MPc~#0~eQUw5qc?1+V@s-qz?613lFt%WUbS)^mBxdO+lYmw`Ku%7AJT;A~GV#Vr!)0$xuRe$w&5hy}wh}Eer)7JPxFS*#pb3VGhjb zQ%TPSj~=_zQz$`Iu5uT6UcD4o0yov=^>O%38stuPGl6N1Cu5-l??Z z3;JL}IE84`H&DoAg7+(UsfQgW8;I=8lVyt+bt=3=FFsqr|8qOIVvwq420ed-s~m7r z$~e59;1y&;Ypix`+ePULG-6R-9nSG#r4D*3gjK+KyZPwZ3=Plcw2FMpEv~?K2BG_O z7%A?LuB|P5Lqed_wgQ6!_eBCc;BmLZ(_cN^-CAz-(b zqrjkW+(UL!m;fCelRh!BF1j7!7S{W&u2qg+UNPn%DJs}UlB(SZMu8FyQPQ%J)W2cA z&-MWvlbS-znv7q~mihyDp;8t7Ps8rNyp)V=>>U3+?Eb6k=zkk_|1q`vpN8GC)@1A@ z8_f2sx{0oVl42q$HUyAIw#WQ7DA<|NoG!iqI;a=>_qS4U*&kER_PFU`1EvULUI{!r zy!oOThmYIi-6XE^#)ZRiz-)4Oa{l|>S^uuDkHvHR9$O9$U!=$nttPkL`;*_WzU z@&^`&u2^)|`ArYOX_i}UjX!A`1DjnpF*n|q)ev^O8afYn|9aO#H30>L)8VgN+xq6R zXMrS|$$^41;imO3UYnQV!TTRnG_Dtq^lEt<_FH zqta8f>ErqtnBTp=o#U~Up^hN)I}rqQk>GoIzW_4K#8|w$O|~>1ORfqxWGQJt0pzbD z0962i>GU&FG!2L*r%@yXrX1*yZGlCWIf zJw$T5*X0NAtL=u}jKGr-?1V-Mk9cLXb_JZiGQ;Jk99BY(3kf$3Bfv(&tXOV$yDo?w zCT7_RVu)se1`IFvR^n_N6%uYGlF=6RiV2ZyQ;WtDhqNYs1d4UbnmHVr#N!vB#$NsYy*>_!!=Cbe^1 zd{eS})rnpIgS3qp1Crr>V!FGq z!ZF2HtPO)2bGST)X}Ef9hv%X53G3{y6WyNZJP60Kq_C%c53lhBN~O$Imu`qPgvA;e znh=|a41Dn5v(cam{aZi6WC9yk=$aa$)g$TD3uoOfJp! zlDvYNA4)ieS8uSpj4IU!qDC00~6G`wj9FujNdG;H#8 zExLX@L8(7n#<^K)vXw-W8?8gAjURPfgP_t2?NxDMqX&ayh3-=-OC}ODzs+9`kSMrz z514LVC>SZc$_1z3P(fo8?E!n?>kt>*pe33A)WDI&`nYv;Ra=jLCE>MONV#@m)k~Bz zj7I&)$bX$Kf}I|}Cz)16jN7eJG0WNWEdA*XX1|de3>x?b$VLWEy33e^)C(2|`q?DI z_~L-}PgQ$>t-lrjurlKGN z!aM7a)LQs@`}tdq{HzVy!qe3`fpN=cm2TQNq0g>2R33pT7Yx+Dt;5K6afOMaJlH8b z2j^vPd)N^`V&HLL5`!LwH|{WoP_V^r{wRs+$alLHD}!?VH5QT60b70?2j!))Z&{c` z@)Y}-H2Y|n=+O3U;gitQb_g%TT%8}ub@NHMP@rapnoI>Ueepsdcof`D1q3}GAQ zTf4wvH8VqrmF8+nb#j{WRRP|xB1%wFQ@Z1}RkuW1T4>n3cdKy` zzacM7e+M#b_m=P}`)v!~TCVO;>;QiLIS?Po4gQgDO zI=_?+gc*KpS){HVyI9*@VgE}9QfoJeb}udTnUT3#T47m+ z&K`$XUQlZ$4TU1(BV(Gz=$bqXc=t?w57T6x{2MXtVk=^a-In8Tf+^CiLpoCur7Dr^zb! z4<8p^lX1_!hl0!tZXCFT{3g}Uoktye3B8CeFOl@1DBQ$0lZvv&a;SVfXVZ*K2j?Ph z;`%j4)dag5I!4_*jd%i-c$-n!%ws8dc3SSQ4S>Hz1%9hJTV;oQVNtoKjGq_Y8PvQ+ znX?xZE(Ch2gHqAyQdJh5FJma1XlHd?&}NZ}zN2Dogtv!oey%6o%8;e%?a}y!nG}~B z#f4cGmhgi@J{oMcV0}W*ypB)EoNJopE#zSR7yFD`o_y-Cc#Wz#F|n1gU8upcO9NHt zxy8fqF@o9@M&&f)8`xSRapAFGE~_!$z^@L>!z`on-?~w(fOCG1SVW6E1f8nKL*lvO zKUlj#{D;_VKY@3z=TH0*^Q1ce(^~Rh7Fs4ohW|~2|5q`@|F)L==YIPCw3ak$N!lO% zFUa5>X8>-!gcQ*n!k$|vd^>NS0GybeW&jS*k?zB*GBtWc@-{OhnDOK`QRP3zplY_> z)}p`P*QcddrXHC_p4qA1!a;5-$$!8Eas0pg=lTy|KcCB8>)r=~&Ex@5imrcj&AKhc}aehl{h?{CWXMJRgt zz4HUmtG3-T5%|x+=P9q-do!uom{7V^L}(T_Xh_S z+yPHW-VM%=0&aT+od=HxZ{c>w$n7jd=cSNoYS;p5Y50hyu(OtY3)y!bd)w4_sQ&ls z{oVvXTmB(eB>&S zQ)NlhvO|`I;tQ~sxVz4Eyxw|OJijn>9qY7j{>QzBhqebNXo+RLdxC?*y7N_A*z0In zGEVG14nuegef&sxo?^|r=co#Lsnf$zU1__gz#W|k0hW&)q#P$Iufh`y3FsUv)O?-T z5SQa}M?iENx#L@o>i(Ae`XT5?dT8Tn?gvB#VK1B1X?9ufET?0*b=LX({yYV4CbT!!ROF%VA#~@tUpXEQugxybHuMWr7P1A*hMkdnvhF zFpq1^#~gN^nlGd6NaJDD5N;C6#pY2#?A-BdNF;3$v<0*!(uy%_j@88H2av^X%c*4n~Fxkhe-q{5U=d0 z(LiFgnbf&jb1Jpcbz~yxn7y4)rMN|Fvp4Up>54YUp_l-qgqtw5L$cuT(Rg={LpsWo zEM)r;`e+o(iV*6COWX+DxyL(d{2(q>tItI;r0*orOGPcoOnbsVjYT7pdQxFwbi4+P zqRl>Og48Rup%5h7-olRE;v zuOtjo|2Xk%@61CsG28h_EfLnMA^QfoJ*C7M)G<}Lv0Af(jl)yv56xuMEd%=sC{;@* zkSn0suu+2-#=~ z(hySE>9wrl8dw4qg^yh6=;koC*&etun(yjw>;EAW%(<5KJ9b+OEAQzDol*Ns;O6Vlm96@0C0yJ7;2lBT5%-B!ST1OaSC862lsNCETY2} z0wuz$5`ZZp^fW1{;aH)6Fijtrzf}vpodG~Cee1l=I-*H0J#SXQ&M+jtOkTRq3&Ohy z$^eSwNeGruP}D97@P^3&PpPtfQq)wb5eFEMOZZkM$k_zII6}2lm*KmGdc_rse_1Jj zJ`7TOK2bJta)MiN85&D(8%$`sb^Jy;`>a)nlZT6n)dl_br-zZ_8~{2qP(OHzp1Dm~ zt>T0#^FJjc)Ovzq|7x{THv{h)@lD*yvc#tM7PhMb=_Orn+=_&ai&nvAd}28py6RwX z;)p?CNJ3)W{R`>>lJay97yi+{I9?GbWXYN<;%-%~(~G^$TP!?^uF6TBy4uzQ-DM=V zO11DSBTF8*PV8eLCJrE1wKtYIG|Gy|K_ z&Y30&&3l#B z=hBCz#@E_`q90IW4GZT(gYl$aVsdll`}sB-;1Wt}Y9fr<1H+{gXqBq4n(%0lkr>GJ z$fNMfTpbpX2|xJeGnUjkV^iWp=Mou5id))Jr&z@oCq*tb!I6r>TZe=rjwCijE)s;@ zUEN2o%r7!cw-F#LS$JsRmvF)mw+bWWLPejJo(f4zSiT~=?1M$DtlXRp$P3Nu)kJJ|hw8TsfzM zayW#I`e?&LBUisoj*vw2hHxd;G8=|GPTr_ZdZHbuj%L%gzEp2^7A`?FS*qlSvH+q+1m+5A z%n>PfW@JzcS9q$~%j&kZG#R-2&W-%Tt(nsTu1)UhRidqu%2ys!0w+T zets1Wm#-c`PG|P*ih8B)XXp*P(vqB0KUhc&JaXE5tc-1U-qGa!;BhS@8RoIl)Nqt} zZV2KYEe?>?HpQ^0S+6Xi=xk_VI7KBXNqmE8j%$ccjF2~)!4kjU2IE*N{xWBrzM?#@ ziB`Gy_IZyue($7;Jd0}bi${ES9!bx|C4E6W#t^JK3RHA(l`@Q@ri)sq#{vCz4xa1k z!J}B%Uht^SKP8X+yjzQ*C+!Qoi)*_mRqYX58L(Ecomrly*m~T;eMqVd7Miz2W7F{! zHnF&YgT{j_ zv^SebwvlRoymyAj31l=Saa%bdDMz2wPD#F;m&tt}1iV-} zFKSQVjQ@-{lW?0PzezCL9%Px`cpuGatRjvjM7CdqTli1UNaWKx-r8I9UvQwV{Sj)w z?rC@lP7>DcqA3c^+`kpVQO?frqj=N#B&pc6J3<1-mqhVKLy9ggc~hJ-H-|%T@aCcx zSG5ELTw0AZaY~w{Kapg_y8=v3UsS}(uls4tOw^%DOk$!vzgpA;Z2h%UIt5#Yu78;r z8g1?GPE=*p)2R*UP)stFcd5#6VJ2C*oq%ye1Y_Tylk1|P{pp<9g@3aj2Nv3?2#{(7 z2HS~ce$ta&2NJB|v$|F5w$$hQ?}V81&bCL^PmemraKXziZmzWHmZa1b#H&gfD;t77 z*n(tb{MR_TLMj(LoFb{5AI%jVWKhQNgU`+x{#o39X^ zgvCElB5*}fUxsdRN*TiLpqiOFgyAMOC>lMCxMBhh7}QP$a{T8(Zj?*Qk)lsBk~@3S z%jGMd_VT}=Xg!yQ|C4n1FUKk~1M`1l%~<}Qd~%lmFMRUh|76C+VYYW`@3;&~i!%!> z9lSM6Ui;!j|L??jQ9(uLRn5&O4$yv3t+ztC6xXRl184vKZCo$hiGdv0A|XJwQ;6`? z$M0qBKPlk;ro5Zq`>!cZCJr87?i^u0;r=jf@YS6I01vMh7VJM)cdetNY3RXw9bo*h zVB#3jxQ+~VJPW1xaW2Hs{QQ1rw8`6$pU|R=GR9akskO&poRb~MpNi<{KOJw~6W)ud z;t=11iIdp1j^KlpKmb6s;C4^IZ`H>LkK?aK;D*F*7WLNmivUg{5>7;8+H}>7CL1&X z&K=q74pf+Mobl$2_sgZSSICYc5%>}mw8t?-IsKXACf@Vmi_O6BfIxbdNiH$S-B9Sx zr)}O7tRg$?STh{-!|-RGEA$LO*a#!UrzkVTbKTs!qbtna!#hmoD3ibp*UOFMZO9@O zh&z+h)`8I8U>&(b1_$c&^xQ|ItEbHtSw|*VaS7^eF&Ix2R>HRnmh+9EbB?WvXr-yXs(tb>}z9}+!5g3 z1t$2mE~G?W5-%zk}}OWoz@XK z)tKE4*C~W$fy4k|h9jG7&GSPuWSabJ=@2EaeuAD&sfs4s}Tu2VRShBefY(4L{z`w+Sa4v=00@X3`@!D@g^I%1*@I&)J|OnIiB z2O5N6)w0r98^bd5Ur=@vMYSLV=^C21XMbi9Za5@o1%XYR2|c$vV^l-YjtS!&MP>us z2Z@ASXVV^FG;SjE$97O%XB`vItbjab6T@@_C)X*~4-wvQ!-;Z*PGz|J1b3SW&h|7+ zG$CXK98-+x?24CGzAW_66g5^1Jyp4&<=HD0?n=K_ByA*oqo$QCi@aCGqjjMNq6Z~> zPAX3BBh|V0HG4?Ikyzthpp}_Ghk^zS@Ut-}Iq7396qyr3#_%g0_UgE?tu9qN*pu))YKxh;~ARRL$~G`QA4&>8jdj zo;K)RVir>2y>naNX!U<^R2~ZPl>l1i1-jQap5f4ZuIy0THYvVcxb3HsJ9rY*^1bovQ_s5F z#bX;8KkIT!xs2wShPO`~X+fkGxWQZEJJFJJv@MZuLoAs;Lc^LQEAYgrlcF6&^3IC2 zOIx7h*07RGPHjd|tRYJTM^Fss$eklc)kRmK)O{^@moVMwEa>A2|EQNwmh&V>ZcIgG zCj1?z`&YEy#kD)LmD=D~oA_i2nf{%fMs#HUTvj`?pvj)!;+Lz8>TZh&WTEXMK8Q{y zTEiAR{ib6`GUbVDJd1;ZOP^*thIvVo-=~tJjQHhJ{MWY{@TA%Bl!69%d=WB@ZiTSb zW0z;C!$hq&vTUm_hgnUD+&D38%zfnJuW#-|#Gu=&%E(5saW$K+IHsaWY@u>OU^x!D z)#t|LW=<-#BXBd{tQ>T*(yq`wJR zNFQwSrBBuEHjNfNky78Q12H425j_X$wz7t`MwhMh!J0ssR)cd)`38c*R zNi(W8mYf|pWNxRel`Z5co26mw#j28YOYV5NNN+rJ+ppa)c} zb3D#s_ZdleRcK_j_>lVhRb+~p-EK?jdvbo+v(?H7+Un?(eIU10ps|t~xa#8LDnx2P z=@8WUW8?8n`}WyPk4qr+#(C!?ZIGXAR2}qx7*+pk0{zER!pO$>-$)Ub{|c4=_bC_4 z{~LjmUdGhU+{J>CfRTxvnTd}N>i-Wd@yI^*^43vVT|V16oeDPGkp}}y2OgBh%nc?2 zI}U(>7sMl)2!H}+?xUC@U^ZZZx6Eup!>{+;_{i{BJo(AA7|542URYaW8K<{>yqlz# z++;avWVhTXKA9|HeJx4I=zQS=7cu_)_S?PvagV!kUeU9@ZeG=^?QS(T@fnCyv4E-% z$H#b%1?6siCJxaPgun(PBi;(VF+B#*7YKjf-dmeHgU{Reat|RXMNH&pWNEOzQ{O3mW!9buNxk(cKH9a$jjT5u05*!um`6hZA6%zv9!B<05 zBO0;|`V7WHcru6 zMR@v!CA8$)WB4MBgA%|zXRZ>VN+PE~N}*~Nt6cn-7H%XR&&)Ow{?+GM03M6p_*)r| z7Ft|cJgu(0j!c2c8>o=|X1tH<&A)>4JNhe4i!?+pCvuzbZ;-ZjEym}<+yU-u4oK`k z+kY(339550Ea(CtT|osEEO)bX&ZV{|Tf*4P{dSBM`^T-rn0u3*C( z`dKxq`U)<28S%N|C|vBhW`T$l-)5Kn1Ydn7s3OHL`T8s)KFb7^P+Jc4 zt{=t^VEx_2>+_4Px%!^&>Sj}2=f#bYun#Wx>ȹ@ey32ZgBDhmCcs^Ye?y1tCG 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 Nd-?7?V=+hc#KFbcL1I>rs=$4!N7je<77 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 literal 0 HcmV?d00001 diff --git a/TrishOutputDescribeMLR1-noPCA.docx b/TrishOutputDescribeMLR1-noPCA.docx new file mode 100755 index 0000000000000000000000000000000000000000..f1e4e0e6113d787e4d5e0bab8ce518899eae868b GIT binary patch literal 24513 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 YT1gh+`H8%Ef%g2nd+ub_I=_$p55waiU;qFB literal 0 HcmV?d00001 diff --git a/TrishOutputDescribeMLR1-noPCA.pdf b/TrishOutputDescribeMLR1-noPCA.pdf new file mode 100755 index 0000000000000000000000000000000000000000..e3ec3e759af48768fe60af54820f616705ab5311 GIT binary patch literal 113279 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

Z3iqq!Bq#MleXmHI%nK5kWVT;JIA*#FJ7s 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 literal 0 HcmV?d00001 diff --git a/Tsm2Scores1.R b/Tsm2Scores1.R new file mode 100755 index 0000000..8a3ddbd --- /dev/null +++ b/Tsm2Scores1.R @@ -0,0 +1,98 @@ +Tsm2Scores1 <- function(D) { + # Time series matrix to PC scores + # D. Meko + # Last revised 2022-08-28 + # + # Time series matrix to PC scores + # + #---IN + # + # D is list with members: + # X: time series matrix (data frame); no NA + # yrX: years for X (vector) + # nmsX: names of variables in X (vector) + # khow: how PCA done (1=correl mtx, 2=covariance mtx) + # + #--- OUT -- named list "Output" with elements: + # + # Scores: PC scores (data frame) + # yrScores: year for Scores (vector) + # Loadings: loading matrix from PCA (data frame) + # EigValues: eigenvalues (vector) + # PctVar: percentage of variance of X accounted for by each PC (vector) + # CumPctVar: cumulative of PctVar (vector) + # Eig1Cutoff: last most important PC, by equivalent eigenvalue-of-1 threshold (scalar) + # + #--- NOTES + # + # Written for TRISH as function to be called by ReconAnalog-RecPCR1. Assumes X + # has at least two columns. + # + # Uses singular value decomposition of the time series matrix, and R function prcomp. + # Eig1Cutoff is strictly applicable to PCA on the correlation matrix, or singular + # value decomposition (SVD) of a data matrix that is centered and scaled such that + # each column has unit variance. If the number of variables in X is p, and khow=1, + # the eigenvalues sum to p, and the "average" eigenvalue is 1. Any eigenvalue greater + # than 1 represents "greater than average" variance. + # + # If PCA is done on the covariance matrix, the matrix X is centered, but not scaled, + # prior to PCA. The centered variables (columns of X) retain their original variance. + # The sum of the variances of the columns of X is identically equal to the sum of + # the variance of the PC scores derived by PCA on the covariance matrix of X. With + # khow=2, Output$Eig1Cutoff is set to however many PCs have greater variance than + # the average variance of the PC scores. + + + library(resample) # function colVars + + #=== UNLOAD + + X <- D$X; yrX <- D$yrX + nmsX <- D$nmsX; khow <-D$khow + rm(D) + + #=== PRINCIPAL COMPONENTS ANALYSIS + + # User function for centering a matrix + center_colmeans <- function(x) { + xcenter = colMeans(x) + x - rep(xcenter, rep.int(nrow(x), ncol(x))) + } + + # PCA and compute scores, which are not an element returned by prcomp + if (khow==2){ + # PCA and compute scores + # PCA on covariance matrix + P <- prcomp("x"=X,"retx"=TRUE,center=TRUE,scale=FALSE) + Xc <- center_colmeans(X) + # To compute scores, need to multiply centered data times loadings + F <- Xc %*% P$rotation; yrF <-yrX # scores + } else { + # PCA on correlation matrix + P <- prcomp("x"=X,"retx"=TRUE,center=TRUE,scale=TRUE) + # Scores are z-scored data time loading + df <- data.frame(X) + Xz <-sapply(df, function(df) (df-mean(df))/sd(df)) + F <- Xz %*% P$rotation; yrF <-yrX # scores + } + + + # P$rotation: loadings are returned by prcomp + + # Compute eigenvalues. These should be the columnn variances of the scores, F. + # Checked with my Matlab eigen: results match to 5 digits; some differences + # after that. Conclude OK. + EV <- colVars(F) # eigenvalues + Pct1 <- 100*EV/sum(EV) # pctg variance in each PC + CumPct1 <- cumsum(Pct1) # cumulative pctage variance + + # "Eigenvalue of 1" cutoff + # For PCA on covariance matrix, I use mean of EVs as the threshold + EigThresh <- mean(EV) + L <- EV>EigThresh + EigCut <- max(which(L)) + + Output <- list('Scores'=F,'yrScores'=yrF,'Loadings'=P$rotation,'EigValues'=EV, + 'PctVar'=Pct1,'CumPctVar'=CumPct1,'Eig1Cutoff'=EigCut) + return(Output) +} \ No newline at end of file diff --git a/c13toc3.R b/c13toc3.R new file mode 100755 index 0000000..a7a4d14 --- /dev/null +++ b/c13toc3.R @@ -0,0 +1,40 @@ +c13toc3 <- function(V) { + # 13-column monthly climate matrix to three-column matrix (year, month value) + # D. Meko + # Last revised 2021-05-30 + # + #--- IN + # + # V [matrix] 13 columns, year and Jan-Dec data + # + #--- OUT + # + # X [matrix] 3 columns, year, month day + + mV <- nrow(V) # number of rows (years) in the 13-col matrix + + yrV<-V[,1] + V<-V[,-1] + + # Reshaped data + v <- as.vector(t(V)) + x<-as.matrix(v) # data as 1-col matrix + + # Build year 1-col matrix + yr<-yrV[1]:yrV[mV] + yr <- t(replicate(12,yr)) + yr <- as.vector(yr) + yr <- as.matrix(yr) # year as 1col matrix + + # Build month matrix + u <- 1:12 + U <- replicate(mV,u) + u <- as.vector(U) + month <- as.matrix(u) + #u <- as.matrix(u) # 1 col matrix + #u <- replicate(u,mV) + + X <-cbind(yr,month,x) + + return(X) +} diff --git a/emssgUNH.R b/emssgUNH.R new file mode 100755 index 0000000..973e864 --- /dev/null +++ b/emssgUNH.R @@ -0,0 +1,14 @@ +emssgUNH<- function(emssg,outDir){ +# Write an error message to a specified output directory +# D. Meko; last revised 2021-12-27 +# +# emmsg (xx?)s message, written to file "error.txt" +# outDir (1x?)s output directory to which message file is written +# +# Returns emssg, which is just a string of the input message, regurgitated +# Write error file +fileErr<-file(paste(outDir,"error.txt",sep="")) +writeLines(c(emssg), fileErr) +close(fileErr) +return(emssg) +} \ No newline at end of file diff --git a/hydroData_Katun.txt b/hydroData_Katun.txt new file mode 100644 index 0000000..b9115fb --- /dev/null +++ b/hydroData_Katun.txt @@ -0,0 +1,56 @@ +Year Value +1938 6.7813 +1939 4.8670 +1940 3.9139 +1941 4.9717 +1942 4.3328 +1943 3.0415 +1944 2.8320 +1945 1.9107 +1946 5.4235 +1947 5.6505 +1948 3.8399 +1949 3.1530 +1950 5.0362 +1951 2.9349 +1952 4.3734 +1953 3.6932 +1954 6.3032 +1955 3.7041 +1956 4.5448 +1957 4.2174 +1958 7.5932 +1959 4.2881 +1960 5.5209 +1961 6.5746 +1962 2.8528 +1963 2.8722 +1964 3.4105 +1965 3.4717 +1966 7.5052 +1967 4.0874 +1968 2.8858 +1969 7.2908 +1970 4.8931 +1971 4.3062 +1972 3.3492 +1973 5.1289 +1974 2.3607 +1975 4.3467 +1976 3.1762 +1977 4.1717 +1978 3.3827 +1979 3.5185 +1980 3.5541 +1981 3.8394 +1982 2.7001 +1983 4.4319 +1984 6.1600 +1985 3.4409 +1986 2.8081 +1987 4.6616 +1988 5.2907 +1989 2.8905 +1990 3.2971 +1991 2.6240 +1992 3.8642 diff --git a/mannken1.R b/mannken1.R new file mode 100755 index 0000000..518e619 --- /dev/null +++ b/mannken1.R @@ -0,0 +1,447 @@ +mannken1 <- function(Din){ + # X,kopt,outputDir,kplot,NextFigNumber + # Mann-Kendall trend test for a time series + # D. Meko + # Last revised 2023-11-24 + # + #---IN + # + # Input is a list with following fields: + # + # X [matrix]: year as col 1, time series as col 2 (see Notes) + # kopt [vector]1x2; options + # [1] Plot of time series, trend line, and detrended series + # 1 skip plotting + # 2 plot + # [2] Adjust signficance of Mann-Kendall statistic for lag-1 autocorrelations + # 1 Yes + # 2 No + # kplot [scalar] which version of plots to produce + # 1 Plot time series with fitted trend line & horiz line at mean; figure file + # named "mannken1_F1.png" + # 2 Likewise plot time series with fitted trend line;n but this is TRISH-specific, + # intended for looking at trend in regression residuals in context of other + # calls; horiz line at 0, and file named like "Figure??-AnalysisResduals2.png", with name + # part ?? controlled by input arg NextFigNumber + # 3 The GEOS485A version: 2x1 plot of trend-fit to time series (top) and detrended series (bottom) + # outputDir [char] folder to which any plots go (e.g., '/home/dave/test_out/') + # If "Null", this plotting of pngs to an output folder is ignored + # textPlot [vector, char]3 title, xlabel, ylabel for time series plot + # NextFigNumber [integer]: if called for TRISH plot (kplot=2), the figure file + # will be named Figure0?.png, where ? is NextFigNumber. Ignored otherwise. + # + #---OUT + # + # Output is list with elements: + # What: list with three elements telling (1) which function created Output, + # (1) user to refer to comment section of that function to get details on the list items, and + # (2) the date on which the Output list was created. + # statistic: Mann-Kendal statistic (see Notes and References) + # AnalysisPeriod: string first and last times of analysis period (e.g., '1950-2020') + # Lacf(L) request possible adjustment of signficance for positive significant lag-1 autocorrelation + # (only enacted if the residuals to a least-squares straight line fit to the series have + # significant positive lag-1 autocorrelation (0.05, one-tailed test) + # Ladjusted (L): whether autcorrelation adjustment ended up being applied + # vif [scalar] variance inflation factor (set to 1 if have not requested autcorrelation adjustment + # or if that adjustment not warranted by the data); see references on Mann Kendall test + # pvalue: p-value for significance of MK test; two-tailed null hypothesis of no trend + # ngrp: number of groups of ties + # nties: total number of ties + # Lflag (1x2)L flag + # (1) inadequate sample size (need 10 or more obs) + # T: sample size too small (fewer than 10 obs) + # F: sample size not too small + # (2) identically 0 slope (summation needed for test statistic dentically 0; this would + # result in an infinite test statistic; See Haan,2002) + # T: identically 0 slope, returns original as detrended without going through non-parametric fit + # F: slope either positive or negative (not necessarily significant); non-parametric fit proceeds + # b (1x1)r slope (nonparametric estimate) + # a (1x1)r intercept ... + # equation: equation for trend line (nonparametric fit) + # X (mx x 2)r: time series matrix (time as col 1) of original series for specified analysis period + # xhat (mx x 1)r trend line + # xdetrended (mx x 1)r detrended x (by non-parametric trend line) + # ErrorMessage [vector]c : error message associated with Lflag + # + #--=NOTES + # + # X: assumed 2-col matrix, year as col 1, data as col2. Assumed that x has not missing values + # and that yrx increments by 1 + # Lflag[1]: If time series has fewer than 10 observations, Lflag(1)=T, and Lflag and ErrorMessage are the only + # output list element returned; here Lflag[2] is set to FALSE + # Lflag[2]: set to T if essentially no slope in trend line. If so, the test statistic cannot + # be computed because a denominator in the equation for the test statistic is zero. In this case + # Lflag and ErrorMessage are the only list elements returned. + # pvalue: this is for a two-tailed test. H0 is no trend. A small p-value indicates reject H0. + # For example, if p-value==0.09, we reject H0 at alpha=0.10 level. If p-value==0.0499, we + # reject H0 at alpha=0.05. + # nties, ngrp: handling of ties follows Salas(1993) + # b, a, equation: Nonparametric trend line fit following equations in Haan (2002). The detrended series + # Result.xdetrended is shifted such that has same median as input series x. + # Autocorrelation adjustmentment. If requested, applied only if residuals rom an least squared fit + # straight line fit to the original time series have significant (0.05 alpha) lag-1 positive + # autocorrelation by a 1-tailed test. + # vif, or variance inflation factor: annotation of variance inflation factor (vif) at upper left + # of time series with fitted line. If kopt[2]==2 (you do not enable autocorrelation djustment), vif + # is not annotated. Otherwise, vif is annotated, but will be "vif=1.0" if the autocorrelation is + # not justified (no significant lag-1 autocorrelation in residuals from least-squares-fit line) + # Horizontal gray dashed gray line on plots: This is at the median of x if kplot= 1 or 3, and at 0 if kplot=2. + # The rationale for 0 is that with kplot=2 we are chacking for trend in regression residuals, which should + # should have a mean of zero for the calibraton period of the regression model. The median residual can differ + # from zero. + # + # Test data from Haan (2002) used to originally check results + # x<- c(25.56, 33.28, 34.03, 35.72, 39.33, 32.21, 30.76, 44.45, , 42.69) + # t <- 1978:1987; + # Cbind t and x into X and call mannken1.R; compare results to those in Haan(2002) + # + #---REFERENCES + # Haan, C. T. (2002). Statistical methods in hydrology (Second ed.). Iowa State University Press. (496 pp) + # Helsel, D. R., & Hirsch, R. M. (1992). Statistical methods in water research. Amsterdan, The Netherlands: Elsevier. + # Salas, J. D. (1992). Analysis and modeling of hydrologic time series. In D. R. Maidment (Ed.), Handbook of hydrology (p. 1-72). New York: McGraw-Hill, Inc. + # Wilks, D. S. (2019). Statistical methods in the atmospheric sciences (Fourth ed.). Cambridge, MA: Elsevier. (818 pp) + # + # Algorithms for Mann-Kendall statistic and adjustment of its signficance for autocorrelation from + # Wilks (2019). Handling of ties in time series as recommended by Salas (1992). Test data from Haan (2002). Detreding + # is done following Haan (2002, p. 345), who gives equations for non-parametric estimation of slope and intercept of a linear + # trend line. Haan (2002) got the equations for the estimation from Helse and Hirsch (1992). + # + # revised 2023-11-24. minor correction to labeling of plots + + source(paste(code_dir,"ties1.R",sep="")) # optional transformation of flows + + + #--- UNLOAD + + X <- Din$X; kopt <- Din$kopt; kplot <- Din$kplot + outputDir <- Din$outputDir; NextFigNumber <- Din$NextFigNumber + textPlot <- Din$textPlot + + # Hard code, needed if kplot==2 (special case of TRISH plot) + jFigAdd <- 0 # increment this for any plot after first + ErrorMessage <- "No problems" + Lflag <- c(FALSE,FALSE) # initialize error flags + + # Check input + L1 <- is.matrix(X) + L2 <- dim(X)[2]==2 + x <- X[,2]; yrx<- X[,1] # vectgrs + L3 <- !any(is.na(x)) && all(diff(yrx)==1) + L = L1 & L2 & L3 + if (!L){ + stop('Something amiss with in put X; should be 2-col matrux with year as col 1; no missing values') + } + + # Need at least 10 observations + mx <-length(x) + if (mx<10){ + Lflag[1]<-TRUE + Lflag[2]<-FALSE + ErrorMessage <- 'Few than 10 observations in series; cannot run function mannken1' + Output <- list(Lflag=Lflag,ErrorMessage=ErrorMessage) + return(Output) + } + + + # Build string label of time coverage (e.g., '1890-1989') + strFL <- paste(as.character(yrx[1]),'-',as.character(yrx[length(yrx)]),sep='') + + #---Optional check for lag-1 autocorrelation of residuals from least-squares straight-line trend fit to x + Ladjusted <-FALSE + Lacf <- FALSE + vif <-1 # initialize to effectively make no autocorrelaton adjustment to variance of the statistic + + + if (kopt[2]==1){ + + # adjustment to be explored + Lacf<-TRUE + M <- lm(x~yrx) # regress x on yrx + e <- M$residuals # residuals from straight line fit to x vs yrx (trend line) + r <- acf(e,plot=FALSE) # autocorrelation function of those residuals; acf object + r1 <- r$acf[2] # lag-1 autocorrelation + #rm(M,e,r,acf) + + # threhsold for statistically significant positive lag-1 autocorrelation (alpha=0.05) + r95 <- (-1+1.645*sqrt(mx-2))/(mx-1) + if (r1>r95){ + Ladjusted=TRUE + f <- (1+r1)/(1-r1) + Nprime <- floor(mx/f) # effective sample size + }else{ + f <-1 + Nprime <- mx + } + vif <-f; rm(f) + } else { + # do not consider adjustment + } + + #---BUILD SUMS FOR COMPUTATION OF STATISTIC + + # Col-dupe, then col-dupe x + A <- matrix(x,nrow=mx,ncol=mx,byrow=FALSE) + B <- matrix(x,ncol=mx,nrow=mx,byrow=TRUE) + + # Difference matrix, C + C <- A-B + # Consider elements below the diagonal of C: + # col 1 is difference of all succeeding values and x(1) + # col 2 is difference of all succeeding values and x(2) + #... col (mx-1) is difference of x(mx ) and x(mx-1) + + # Because interested only in elements below the diagonal, convert + # elements above diagonal to 0; then lop off first row and last col + L<-upper.tri(C,diag=FALSE) + C[L]=0; + D <- C[-1,]; D <- D[,-mx] + + # Logicals for positive and negative differences + Lp <- D>0; + Ln <- D<0; + Lz <- D==0; + + # Quantities for the test statistic + E <- D + E[Lp] <- (-1) + E[Ln] <- 1 + E[Lz] <- 0 + + # Test statistic is based on difference of number of positive and negative differences + s1 <- sum(E) + s <- sum(s1) + + + # There is and adjustent for ties in values of x; deal with that + T <- ties1(x) + if (length(T$ngroups)==0){ + vties <- 0 + nties <-0 + ngrp <-0 + } else { + ngrp <- T$ngroups + nties <- sum(T$nties) # total number of x involved in ties + w<-0 + for (k in 1:ngrp){ + e <- T$nties[k] + h = e*(e-1)*(2*e+5) + w <- w+h + } + vties <-w + } + + #======== COMPUTE TEST STATISTIC, u + + N <- mx + if (s>0){ + m <- (-1) + } else if (s<0){ + m <- 1 + } else { + # special case of exactly as many positive as negative differences. This indicates no trend, and + # also causes problem n computation of u because s occurs in a denominator + m <-0 + Lflag <- c(FALSE,TRUE) + ErrorMessage <- 'In mannken1, sums of neg and pos s are equal. For sure no trend' + Output <- list(Lflag=Lflag,ErrorMessage=ErrorMessage) + return(Output) + } + + if (m==0){ + # For case of no slope, do not try to compute Mann-Kendall statistic + } else { + v <- ((N*(N-1)*(2*N+5))-vties)/18 # "variance of the sampling distribution of S" Wilks, 2019, p 173 + if (kopt[2]==1){ + v <- vif*v # adjust variance with variance inflation factor, if enabled and warranted + } else { + } + u <- (s+m)/sqrt(v); # test statistic for Mann Kendall trend test + Tstatistic=u; # eq 14.10 in Haan (2002) + + w <- pnorm(abs(u), mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) + pvalue <- 2*(1-w) + pstring <- as.character(round(pvalue,digits=6)) + strP <- paste('p = ',pstring,', Mann-Kendall test (H0: no trend)',sep='') + + #================== NON-PARAMETRIC TREND LINE + #Haan 2002, p. 345 + + # matrix with (mx-1) rows, each of which is duped vector (mx-1):1 + N1 <- N-1 + k <- N1:1 + K <- matrix(k,ncol=N1,nrow=N1,byrow=TRUE) + rm(k) + + # matrix with (mx-1) cols, each of which is duped vector (mx-2):0 + N2 <- N-2 + j <- N2:0 + J <- matrix(j,ncol=N1,nrow=N1,byrow=FALSE) + rm(j) + + # More matrices + H <- K-J + L<-upper.tri(H,diag=TRUE) + Q1 <- D/(lower.tri(H,diag=TRUE)*H) + + b <- median(Q1,na.rm=TRUE) # slope + tmed <-median(yrx) + + a <- median(x)-b*tmed + + # Build a string for trend line + if (b<0){ + bb <- ' - ' + } else { + bb <- ' + ' + } + eqn1 = paste('y = ', sprintf('%g',a), bb, sprintf('%g',b), 't, ','trend line\n',sep='') + + # Generate the prediction of x from the non-parametric trend model + xhat <- a + b*yrx # prediction by trend model + + # Generate a detrended version of x; shift that to have the same median as x + xdetrended <- x-xhat # before shift + xmed1 <- median(xdetrended) + xmed2 <- median(x) + d1 <- xmed1-xmed2 + xdetrended <- xdetrended-d1 + + #============= OPTIONAL PLOT, TO BE RETURNED AS A PNG + # see these inputs: + # kopt ....whether want plot + # kplot... which plots + + if (kopt[1]==2){ + # You want plots + + # Next setting apply to plot with trend line in it, regardless of kplot setting + Tit1 <- textPlot[1]; xlab <- textPlot[2]; ylab <- textPlot[3] + Tit1 <- paste(Tit1,strFL) + Tit2 <- textPlot[4] + yhi <- max(c(max(x),max(xhat),max(xdetrended))); ylo = min(c(min(x),min(xhat),min(xdetrended))) + yexpand = 0.10*(yhi-ylo) + ylims <- c(ylo,yhi+yexpand) + + yrgo1 <- yrx[1]; yrsp1 <- yrx[length(yrx)] + if (kplot==3){ + # 1x2 with seris and trend line at top, detrended and original series at bottom + + #--- Build figure png filename + fileOut <- paste(outputDir,'mannken1_F1a','.png',sep="") + zm <- c(xmed2,xmed2) # horizontal line will be at median x, which should also be the + # median of xdetrended + + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + layout.matrix <- matrix(c(1,2), nrow = 2, ncol = 1) + layout(layout.matrix,heights=1,widths=1) + + # Top plot + par(mar=c(4.0,8,2,8),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + plot(yrx,x,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1),xlab=xlab, + ylab=ylab, main=Tit1,ylim=ylims) + lines(yrx,xhat,type="l",col="red") # non-parametic-fit trend line + abline(h=zm,lty=2,col='#808080') # dash gray + + # annote test info + f1 <- 1.1 + ySep <- yexpand # y-separate from above line of text + text(yrx[1],ylims[2],eqn1,adj=c(0,1),cex=1.0) # line eqn + text(yrx[1],ylims[2]-f1*ySep,strP,adj=c(0,1),cex=1.0) # pvalue for MK test + # conditional annotated text on variance inflation factor + if (Lacf){ + # You asked to look at the acf of residuals of a least-squares-fit straight line fit to + # the time series. If the residuals from this line have positive lag-1 autocorrelation signficant + # at p<0.05 by a one-tailed test, vif will be computed and vif>1.0. If no significant + # lag-1 autocorrelation, vif is set to 1.0. + strVIF <- paste('VIF=',sprintf('%g',vif)) + text(yrx[1],ylims[2]-2*f1*ySep,strVIF,adj=c(0,1),cex=1.0) # variance inflation factor + } + + # Bottom plot + par(mar=c(4.0,8,2,8),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + plot(yrx,xdetrended,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1),xlab=xlab, + ylab=ylab, main=Tit2,ylim=ylims) + abline(h=zm,lty=2,col='#808080') # dash gray + dev.off() + } else if ((kplot==2) |(kplot==1)){ + # 1x1 with the series and fitted trend line, with special naming of figure file for TRISH + + #--- Build figure png filename + if (kplot==2){ + # TRISH-special + zm <- c(0,0) + FigNumber <- NextFigNumber+jFigAdd # for naming this png + if (FigNumber<10){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'-AnalysisResiduals2.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'-AnalysisResiduals2.png',sep="") + } + } else { + zm <- c(xmed2,xmed2) + # Most general + if (outputDir=="Null"){ + } else { + fileOut <- paste(outputDir,'mannken1_F1a','.png',sep="") + } + } + #--- Build time plot of time series with trend line and annotation + if (outputDir=="Null"){ + } else { + #fileOut <- paste(outputDir,'mannken1_F1a','.png',sep="") + png(filename=fileOut, width = 960, height = 480) + par(mar=c(5,6,2,2),cex.axis=1.5, cex.lab=1.5, cex.main=1.5) + } + plot(yrx,x,type="b",pch=1,col="blue",xlim=c(yrgo1,yrsp1),xlab=xlab, + ylab=ylab, main=Tit1,ylim=ylims) + lines(yrx,xhat,type="l",col="red") # non-parametic-fit trend line + abline(h=zm,lty=2,col='#808080') # dash gray + + # annote test info + ySep <- yexpand/2 # y-separate from above line of text + + # Simplify annotation if outputDir="Null" + if (outputDir=="Null"){ + } else { + text(yrx[1],ylims[2],eqn1,adj=c(0,1),cex=1.2) # line eqn + text(yrx[1],ylims[2]-ySep,strP,adj=c(0,1),cex=1.2) # pvalue for MK test + } + # conditional annotated text on variance inflation factor + if (Lacf){ + # You asked to look at the acf of residuals of a least-squares-fit straight line fit to + # the time series. If the residuals from this line have positive lag-1 autocorrelation signficant + # at p<0.05 by a one-tailed test, vif will be computed and vif>1.0. If no significant + # lag-1 autocorrelation, vif is set to 1.0. + strVIF <- paste('VIF=',sprintf('%g',vif)) + + if (outputDir=="Null"){ + nullTxt <- paste(strP,'VIF=',sprintf('%g',vif)) + text(yrx[1],ylims[2],nullTxt,adj=c(0,1),cex=1.0) + } else { + text(yrx[1],ylims[2]-2*ySep,strVIF,adj=c(0,1),cex=1.2) # variance inflation factor + } + } + if (outputDir=="Null"){ + } else { + dev.off() + } + } else { + stop ('kplot must be 1 or 2') + } + } + } + + #--- BUILD OUTPUT LEST + + creation <- 'List created by function mannkenn' + definitions <- 'See opening comment section of the creation function' + dateCreated <- Sys.Date() + What <- list("creation"=creation,"definitions"=definitions,"dateCreated"=dateCreated) + + Output <- list("What"=What,"statistic"=Tstatistic,"AnalysisPeriod"=strFL,"Lacf"=Lacf,"Ladjusted"=Ladjusted, + "vif"=vif,"pvalue"=pvalue,"ngrp"=ngrp,"nties"=nties,"Lflag"=Lflag,"b"=b,"a"=a, + "equation"=eqn1,"X"=X,"xhat"=xhat,"xdetrended"=xdetrended) + return(Output) +} + diff --git a/readme.odt b/readme.odt new file mode 100644 index 0000000000000000000000000000000000000000..66b94caad77f7a39e0e0ef750931b4763e3164ea GIT binary patch literal 59252 zcmb4p1B|Fawr1P5ZQHhO+qQk%wr$(CZQI6e-R|ByvpX+~$!y+9{^U!gzN&-&q;wRd zfk99J03ZMWG+VVb^+uUs$N>NV{_*{70TW@B&YV*1}@{Z-NRKhK5rZ!~nUcW`z12lYSbi1TlFhQ`LGHl}|Kwf|3g{<|6f z;S&c#J5!tg=8O(b_U2Be&d&dR8=YMYU0nY^Jp6xSqou8(xv4X~kfn>Qp@Z}PQWpXO z;-CM~-~Rt4Fn^J)p`E3fsj~~6lZn|((u`d&1476h&o9&2bpd)%P$!DX4y(L=)=&*l z`o~P9-QL(FHO1n}%e>{IS~2Fm*ygMoL!9xb#_|Cb7Gp}%NePRV3u>+|x{i`9uFdsU zYWz&x2dm(cJgQE2J1S27)L*phFg9~dg%lo{PdxJ7L<1`vjuJ4V&9M-WcrikjFULMu zoU@0JX6lMASNZXtuLQhNJ6sj{jZlWINCEBDHdM0#$K*VBM*DT$p+a>xAK==+@3#Y z-*j_7n1^-EZXz}Uvqk0~@n_AC_^RS{3ew;Z&94@Vpnw1X!N33j|1$^vo%{ZohNdot zbRM=gG0IbRTMP)@uhbx{>JeV+UI>XmD5CO!o5E1fX7k5lX4DBllA^bJX{C6MIQU*m zv$NN?*Gel#9e3U83YpT1pN<&sco0;W=(aaMKHq34-^NcBiS+c@KxT=tyb#FG2I1x< zLPu(ht1I6V>43y6vdSDK1uC>sg%qN+M#J&@DMQa2`Y7m*H*r!1k}PW)@pvq3C{uvL zn?QYz4cOMPm^)gqMVC6nVu&sdh?Xc}j9MLMu~Gc5WKmO%B6M9!CCS(iOe5FsEe*oX z-3_|WeQ2pWoXAtJD}%~?nr+?>n<}%6sshobAa36CB#MpDhZGWzXC85{h`VEksmT{~ zQ%}u8?kLWv2HWexU^XgrYk$If>7L;$UZFnH-14*DLVNm|+du);XjGquKSr50(%iGw|17CeilC~Di^rBi@$z1oZ|l@)(Uax7Oj6{UGN`c{f|^}Hg$2av@>`9 zN4$HqwcR&45d8M^6NbE{B-V8}B)tMcLeYT0C7fIB2k`{3H6Ig>0e<|vXoAiBrhOL@`dQi*h|V3uihG;-+$Lxvu4}_SQS7e zLKO3|8PM(;#ojwwS_LK|$HJ3nt)eh*FOx*|FWV?6Gmftqx4gQqWj8)g3OT$xDQ9Y8 zuT7r3`+Qsa{g%A2>~L~*RdwsDwNsVq*^y{mVs~cG%gt7qx_E8t+G+FEr_nC)Zn%Ep zUdm3fQ+Ly#{rSzME&Xwpt{pzkCca^+J+v23xL1!wgo~6xHN2 z7{<(sFA%N>HiMa@%wP>QDg|lK=wj^(^zPDZDqPhOSPNyC_6&(^X8$mT7!}t6V+eRq zTGJYq?hQ7iOaI#B!L8%1YRpQmt;~{l`g%M&UzM$wbL>Jiv6DiBo_410S%Srf=J2ND zXyi-MhRm~`L7E)g!Fy)Hp4>vUdD}a=XU_TSM}Z2fp!_8ui_#WaP$`U7)hJ7fBtd8H zN?6jK;>D?cc(++P3RLal=1#BT)aSDmGbo^6XnoORV5rI;I2?T1=|s>?7p&b6LcG47 zw|W7&0712sM&neW_2kgIc>Bc}tar=4U#X9uQ-Yo(Gn(`#g!CCP)>fYyxrm%MePaS2 zAb~)m4ir3ze|QAyt#TA^vQ}B(e8*gGvNMU_2qLOCgdJ6^0I7F4Nf(R8Bf~0XJco|1 z{8+B3Bg%sR5E}@6UWoffMS(@+N{Q;K(HVN$Tp~MZqZBcOVRcNkUnT-!wcwj!N&$_r za6~Y~Z~FLHnKU}x@1fw3FY@Nm?mG3pUzowSbmKtyG8TLCY}Z7nV?jMMX)oe8o}c89 zi4CjTYpO=3s$^A{y`K(>d;J*ZC{6zfj5&rUed$O`gUkDUYV}xyMq*NF=13D=sHpTs z_(p=4Od+EMKigNL26U$#`@{=jaa=v*43*j>CAP;wi5*VtqBwmZf2cz{%UdvgvNKgC zRU{})Xy9qXmxA(lxGrSk`fr(cu{w7MT6rfK%G>2?gz2zcaD#CmrffTa7q;p3 zxJlgvHK}}`F`@V%_6!&S96m(`elH>yEdlodE4()b945z0ur4~FKjZAc2;tOq3`({( z04KApRpkvntK+RA)P$N#{6o{|uD4AXF49#N5Nr>M33-R{ngp=K{U5*b;O`R53Rycp zVhM*Cf>Zb-(_z}Cs~iS8&LkxU^%h62?UToYEkfa-2yH~3oU?l2qjDH|-^AxO)BdvT5LG4p0)8}bPei}4Boq(_t2njz$I zouX***u#82w@hcIpWVxma8csJlk@E|nZ<747hkI1Jy$)dM#08K6XK8-*!BdZ#{@nj zM1&4Ez3_W*hp-rh5z?YRE6SH;14}msnAtQM@Daq%+x7G1Nsw`iN%1Kt=P63>j}GtpI zco}?f6LoW{b=0cN(K)3vtu=%o)YDZU_O@jv%FetZN^VZzx`W=vX7+s+yHb@>u|`^D z%u$F%k0QMBpLRO;l_L~cnyK_=CVB4bRCDqXLD6)$5*_b%25GvWK#>B!(F;apwoS#Q z!&f}Bq=SFU*QvXn?wrrdXAtsul?~HN`)aG%|Dgw2y-Qzvzl4Srr+p$jL8i#)tq+ZwIi#|LxFY#`|>nf~q+ zrTga>-d+wp^v7xt%Rsd@ zN=pZ4E|Q~D=iP^S(0iWq_1zEtkSDr74UV7xTy1%$EInDk0RWyD|FyIF*8%5MmTRx0 z1pwe5-#^YIDi*G`Ms|jlHqP`e|AKT5cIFWZa^kR1SWthvz)DJpC;~V4x7;5V4VA(a_M)afoq!b}%z=wl;CH zwe+wv^|ZHeuy=HIwDEE<^LDmzc6N4j^LFv@^>%gibocP_aPju`wsjA5bPsU$4tDVi z_wo($@DKM6iu4Uj2z0j%aB~Rub`J9O3iopj@C%3x@{SMnNecH14h{|qjSLBoi3kmf z4iAZniVBHN4vo)>iBFD9%8m~UNRA3hh>c8-4arQ5OiD^hOvy+|&(2IqOixYEPEX0o z%8E%VNXahFEUd^bt8vm9 zYO3mOuWM>*YHaOjYj167@9t=A>~3%F>guX)8>nv^XzUtl?j7&!9cb+zYaN*C=^ySI zn(7;$?HOAbXsa3SY8>e89Pe!!>u(z#=$`Cvof_(z9q(Nj>lqpv8XTP%8y_2)n4TCN z93LB>o*15*ni`r~8lGLBoLQKipPO1-Uz#3SogZ6XnBJTp-CCO3U7uZAT3TG)SX*CP zS>N7RUEJPS-rCxlSvy$WKHS^iTiZWb-M`%4Ki)pN+&jP7IeR!*n>pNCI@sMj-(B9{ z+dti3JwDjE++V#s+P*&DeK^}WIyyQ$y*R$OzBoO+zBsMz z>dXKDjV_WRf+`-H*I&>o+Ul8PFzT*9DJo@jlB!%Q%J1>E8_6eoBXuH*!>mU6UOEAo zM+rNF#NH;x^znxEqy`9yuuBSe)-S6D}!CQya$$ZSY zp<4&m;kFEHf*WxEA~0j_zX*2J?JvTPzNv>DWy9Dq{NIr+L+jArHUpcmzv%y^{-;6y zMfFjGK(30*BWht-YR*a17n|7+#p7>E#F{N`eR>29JV-&8VMqC(6%mx!s`r=i)$w<6 zEvQ8?=pgAMEvKWi+PT}9ok9l%i<-@qVK)VoF495K=}h0tX&81U0bU1zcZ)i$;b zn4Lri9fbvD7%f*L9pT?!rhuO*d-t?kg}CIl(%SyB6VFJWyY-JwVk;owQeHORkD#iW z5jz+02!@K)9~G6>Qw`X=DLAI(V-)&wFRTb%DDPtgJcT79^?YBp_> zd;il%|1$5Np7}2y^=cZ-qd;-tb7`^DT!>vbe12G{rf)l)y$vJ7)4TM;90-8l;^p&) zSxi}F1BePfQ$92iHC3M$t z`e;8655XT2I!i9a#2)4Yy-O82)pHlJvPl7rmJ^z>v!PDvQkIF zq!P~j&{kn00J}I!mdYF3k&6LRDPNPuH!PRliexwkrsgii z>7WH|3_9-^YGP;kG{I|l*rcT{ICW$h*4Yb;Y$<3MNF3%i!wuDl2*~VGFO*4 zCFe(46dGwMh!NjYQn)jT&9w>0jtJpav?r#7N&Wg|Xhn{q5!$KyioLu84E53m3L{`3 z(EGmFvO2Ym=)b%^90V*^Y6;&Tan)bI8l*;Oi4Zy6HfKc#gWdr$ro~h{R0xn>GwHx1 zW|W4%29rx|hvgf^TC_O~qU4I1u8ObY`E!hW3*jCMTMaQcB9=1b2EtK=lYBkvNf5)g zz=Iyybjd^&^oQYY@+5^rB`q=dfq==JV?F+Oo42=5|Kd|E&~dT)(ypgF8XFo!498^s zHC`H^5OTkNMQ3qf4Pxn(7D@KVVWE(~HW?=HiegwzS8QgPo8szg{W785YSY>*_$nSL z7%*iABf2W4%&v!5+;3Wt;lUvK0z{h5;ntXe>4N|RxX=?V`z{CzbOe6vZ+J|ALEfot z5caqX;=)+Q@DeZ8{k)qiGSVdxd=<7SYT^;kTU3SEmnL$?=~w}mSr(^BBg$;OW|-7 z7;wa+V6B+-qgLG-Pc^RA27MCBbE%T9_q4F^IrjXpY_R2Rg39v|w`d~w{&=xxp0ntA zkyJ;EwZn@P-eNJzdiF&gsL#wRyj#4A5v}*UiB9v#)Y`uFe4Ho)x4+pW7cInpjzVEb z1j-BnkX$11q7tH0gx4nPdD4a&bwHd1HaD5N^5*W&d3)Nf1m?IpJIsA7*5X3+fq`53 zLtfnY+lQkyOqqzauXgUd)cp%xwnFd1FZg$FEKz}Rv(mD1)!JrvX01In2IV22Y9)&* z`4qGE$_%vV{H^s*?DdA~`_#dH9GonGOh8uAepfWC` z-;1Ogk^#VYXqA`|eryi>vBCN?f_*>|Xv;d&zr*izE>~$K$*DfAv?$PIHzX%<&ye2a zGb*AZGN;9>9lB+mLOVET6F@3}axpKF!C zj0nvdI`~zI%P%5v4?MEZx;n(T++6Iv(cWtSkB9?L2UkV`P2*+R^G{6*yc@W)EAV~+ z^NCawPRs=jBNzoa&ts9gsH1G;Dut<^MjI_as2c_utyFmJ< zCE6N!oy4R_J(eOcJM4odp!r;*on~~M25_GR?EC338wF6jUO(bm2U;P_!Qv45vg&qa z7YizFi=s)paZTJ4EWO?U2opCKYrSFl`KoDx7x3~D+Z1j6p=Rt3Rw>NbLX>toTT1rk zowyksSxzzerK_6Nl*~eS$)~@Ggs8g;5s8Wd?T)j}l^Q4?rRBDo;|Q%fd9d7djROkp zI#~-6bX=jy7n`}V4;Wb`!sG0f$~tqQwo-{@3*$s+hDA_c#XiomGEi^}Ab-PCSB_*w z>!VmyEvV^Qx}@Nq{OuOdfLJ&Lci^f!xd^fm_j~4m+++Q+sd0QJjPIKz^SxPc+Mad} z!)iP8Mdaz6jeDKU_unj_|FsIgkp&qpSGMFV!Y0M5LXO5zA7z1GsdXNXrJZf9g(2|mo$+qdTDr(?X{fV$68n&c{yiq{yz{bY!GgBYQ&UEq z$J5^AgJMv694%wdHeE=FV;sItr$$Ww!L}LVmOXL#nnc>^K+jOH^h68 zJJZZwBmiz0q8$KRKj=?mgk`lGXBHk1E7kC@57p_p0E3v!em+O`UYJ#Z0pLjKE~lD> z88qVGl(k zDs&^X2pT(ifm5U7RT?7RuAWeFrclBHF$^`&fr)U?a#w(Q z7*TcCMm2K!p*4%*a3=_obAVJm{}8+WiJ%rn3J1yL=<&Ih}0Y0#y!_Jin15DIAp^zl<}}7eF48f-kBxePaDtdD)oC?D`2P2L&Eg zyaV?9s?$%wrr+7x#QBbw+k$DnwbPId>T${lj)Y5z;0UR$4TCB}(TiFn`+LY~6_~Bw zLU%L7g=ohes71GiGF!}o9>aKb6AoDC5)98lVYIO@p$p@X*uk5h&_JlX9X`E{w2v1i zEIco3f!FdCY$Qe<+gLbt+t|5~J3e%ODT1yKSn>w}zT8aYd8~8Q3M^4TaU@Sl8E>sL zsJ1`b@Ta2#SdzLY_qwiowuaZltcKg-!_ybWZVyR#F=7=B&*YC8`1}wm;_eM`Kkk&S z(x>W53I-IQ~H(Fn&`s=7GaA9UZ?2B1C>rLqhXDo8qmnNwh(&Z=C9 zQP!7EXo=^zs!=XNUc5X0hr-FqsMIi-P9DDG;cW;QYYMIPfx^ZN82d)T(MvCSF0ezL?b3Oh=63XilPV&E5K?48_qA;VC&t6xib`(c=z;hkp z!(AZ#4aeVXD@UeASEu~A1>IdGv<8R*%^5-K@oxlve6k6p5VxbwL}qXyxpIu&nosh^<1j7hekl@Y6USC-3*+R*5aqsvYoZzv(q-`04V^~-AO zoO9En!gr%FXb+DHb@d{lUFGkuBbZnNw2JJ3m&t%Bg_zr zf<|AkL!?`Uw8-+XC@e}(sG39#sYP;%SeF6|*-yr^BDlJ=ZmXmuQuiBse44u>t?mWrA3NKh=MbOIy<|1XT3&q)um5pPYw=`XW7D> zB_Ph^XK`xmX5DkMm{3@1a9DFoS72w*Mr;lc0-pl~$P|O%fIO`#1yaI31Ts3obr$@l z84S|{z&6gKb#8~7C{=uKyBlvmLL(Z2;JEa41H2-a;5vN#Fm>6JeP~s-^sD{pQu&U6 z!?Ht(bm!72AKO1TH#hoZ7=T7$S6JVollU!{{KM$iesYgIX9YIMeD&oQ*;Ur;z``<% zU9^4_mM%F0Ctd5^r4V#+`0jK^>T5?UjG>GbwsDi}y*Gn;fRUye zc_3ieooNgv9AOOUfBPJAP{uG>Ka3;y7IF66Okg6iCipe$Oyc4E9MkZEQ6~&5N*?cI zZYdYw>TgReeqzFe%AZY;qVe`lxj1C^?G(*tMx{?}L5tc4Z~0W;pFX>0_Cc6kVZ5}l z5@SSat|gPbYJ$qPOkG@IBIgMmqItIbD=hmk7D?LBQ~E078m+qGbPoXaw?vA(i-V5P;d1-V2mM{2R;D+~Owugg$@xY&Eh|x^}ZBW#dh;F9%bY$HK_B9AQywCybX$3$SKO`RaXk32a zU!wlIJ?keV>;cgo zm)!4mW_v0mKKF(adHZ!y=Wf83Hnln+;2U^Xbq}Bl1t!j4Zp*llf_7;xTvcgn`{3Pz zPY;a-VMm;VNMeIIQm@V{BKlFF&ovKLMh}SOAWB-+UU{rW4Y|P9q6L@xF+kGGLb3aA*&3Z~`VwgUM7N)Ty_KSZWX$GD>m)p^=!6*Xo%eT4;LnH2KQ^+waD7#La8+4EYqAmQ zZcXTjT>KauNPk~T%BQ~9l(ONRwGz5rLRl0x|Kkym-!l&meXbp7BecW7sW%TfprkQd zR9sRNp6ZFfMrwxLsj94GK<{w80E5*H#px@T!LLlkz7?rsjwUykTRMV#2&rpWM=QUJ zgxi214|g~ce6TKan%KOo$-B9^q{m^U5c0G_3hgPaG~6=iSh#-Zq(cNfMa+Iz%uqL%#W zG70*upFCkngN;jLA=cA3pKCtrew_4XiqK+B5FP&1IXAy5#H4?dpiW=#*t(fVL;7$oZUe zmT~dS%n%xv=X0rC^v9;*d`=?Q@0seQc>I~U7xfDUi4Pns_w_o~S{pSBtZuL@o@}eA zCg1>)7AMPbHP~kA!kNkS#;E93(S8*8k$lH*DFQo~<_lGOWV2p*@u~~QC%N%A?@a=$ zt-3gTUsEolha|DX%?4s%CNU^OkJA3>GD^6$g>n^brp8QaLVUN(`66 zgVQHv5&5+X3HLG#>Kc|UNV@iM4kAv z+D2bHEY*TsriiNuG?$1XK2;SwxF)w$(75t#lurj_gRF+Mo zYAGNcGUlX3TBR+`*FNm82VNp1OYD4MqEZkl-s;<+NrJ-if+zjtFrZX&eWg~7JUT5W zy{Nq((02cIevZ`oVBy?wV~_ErABoK!E`it8(~yFT%S^APb%vN{_*#ZA^RmtNr(Vzr zr$q@Z6-jzX(8{be?3ai{8}p{(Ex8wssIaWeM~;LirxkPwGAk`Glv#2v0iKf2&49L2 z!Dc&f>=&5boqb)+b=PBWZAM`FZY=o2h&jSe05;N#ETltfVnfv{V9B`5-GJ$S(ccRR z8;XmA?aW$HKsL<@)u7DOXr*_SQ#A@@vmziKdIp7&lK`j`V4FWenm~mSBJwEF4JiCM zjJT1EciF{9#FDQX4oyNRCmv^?T6<%7)H>jXciD3U;lI6U>QRUo=yXuOQLQYEa+0lK zVbml{PJj9Fj=&ScwWed4E%3aMa2Y8#L#o0*51whqS0+WSI{M)YSS(>M2ZX2^jTLfI9LK{lr@dxb*m*?>nE z;5%5{xMYoSbq0h%wuoT}hB>Z+OYs+Z1${EP^njQDo!y@J}-Xx{AdTsttO<$q2NE^-M8U0O)qfUR0Fq5$$ zM~mPkp47Bc;d*P82W6GR+yd8KEoGlg>XiycwiR7&cR@BLUPG*+D=#1o=Xyz5(+lh( z%i@J1YF9%XlSG!(BPnmy;up4BXFb}X8Cz?SlYg~P10<^ujJr-RpdFV>7R^g!N)Pig zV_~U_?4`~ts-Sg4MI_n7p$V|$J1M7!`-!A_IAny2@*y#S`Ezi%f@{i`R>iM8l1 z%UGwdFMzvOgY?H)Ow9ieX^y_(Aj(TNIF_G(uA()n$A*0Fnk^>u z{c0?Ju?}fm-=jyVmKeX#9v=LPRh+^rjS`HV*7~LbH@>G-_JR1UZ99b~1&(J(m9HB^ zJ~)*&-a&U1sghyKcf67nSVf}R%8D1fELhyDAEtqfp(t5BibIg=a@Lt6je?jrNm%p8 zV7M12+WnN-o7!&>>96nxTH0JU1r$sIM)uDeKMqgKXgKh7z=qKZQ+S19Uo2l|0=#yc zVxk7+A<13E`O?2|(9qc|tWw#UEYyp>-BH ztQ4$g8;d}-FMYtH#c3pr5e+LIC%fX*3=)sK7Btc9uG2- zP64e;(0r2;N_f|(?Yl$raJYBjs191f*hmg$Y+ek0YJebE90co4r#h!H=H=mG#T|M;>=}sy=TB) zXZn%kiP;ayY!N*B(Jf;iiRd`o*$p#FC$Zoj zyL;i4qC5jn7SyOL)?)4P_2X>$A;GTXxA{a&VdG^%p$973e-ti*Arn05fr6P+%-A}V zX)2B=N02R_qAw9pUMsNV)2ljTU2zF!)Kd=mR!)#lN%%bwZ-`$F=Ic}l@YZ#zMGR=h z?x*XeH)0RaGD_CIZQZe~h~0Ln_2tNtWWd#t&|d%EDMq9EHJjZJJp>j9n~)J<9Jw}x zD=)hcUb?D1AG|}}--e}NPzMKr-PongyR!7_qwolLK5qH0^JTSnuC2RE&dtHnBQz{(sYBj%LT0^=h_V!@Yw2h z#tRI*RGhx7Em5s?&hguDvQ4s+oz;FHDbyLb&r&wRY~g^w&79=T2bU41Mnuw_Zcr}cvud}Oj=%?*k0WT8j_uaxFy1*W;&HG6bjoCDwg;i+3VW^m zJaF+4{&m3%_wW3)_dn0Kmc|&*=Ee6UM_!X0IA0Y&i_7NF^8SJlKi>)8dImf(KfEk+ zyf(C!juqDloJStr9hcGFXh2Sdo=3;xlmp~u1@vR~p7^U}7+ZLouXqh9!osP=zKhL9epJ;GipR%J`iTWoz;%1=y=#+*Vl!?C8__`hU>ex4aG731g9#Tkwm&3{ATTA1k`T)2p#d*x%$vZdR%t+vXN;}i1uGa;R21cb4efW%+ zHO41mP>L`~_hlaN6lQR6V_YH7l!0utN2}Qwt;S2Ge(fVVoNm5_O!q&L(G%dZsm`+I z;h;g3CFRsy<*+gB^DTZU6r{M6>mtpRdj=-*J$2DA)+m*pd zxIX^1?-s-zc(}j~$)9bbk|ITq7KhhwOvuERU~ zRQ$;qe)JIfh7rw2S6O<{$OPGX%>d|pnAtP}6|h1WdU9<$VXqwZ>G!G@61Mgrs%UQ( zvb5k$pf=uG!8z;P&56^%685D&!<}_v0#xdW>0C=($UVTpxOi)vIdvy2R$)cAqds>L zWl8-qs@`-(xTWkvUD~sp0(I^Wfd+bhzJ`DJ7?`8JtKe{XtU(wBN%(D^P+g2xH26$s zJ=|E9AuzE$bRByEvJh578p#lO@Oy)m`j4k*mRnei`teL>g+Mf-+_NC-M104_R5aU& zXDX6|UA{%ulzDvNX{!0NWS<9v7PdM3;Ov4fa(F=rA%jLHlx5U7<;^Tx*_^tY`J6O= zzgt(&GD=}!c=^LQ3F$43A8*6>eK2*4zS5GDFyhs)ub8YTiCL{5WxT`Z_>GG7rRv0w zhye^mD)Oje@DNc3^i$cihdX#`JG-SF%3PwUU}l2s!iBF21E97*Rq~Ly3T-*eoFw^f zj)1On$s)4UD<*oJ(+rBqvKckukw40wkUkn{f5zbS4TD#rH$Rlv6e&n(yXj1Fm^r|n zY)=lCLrCFLYWnR?^3OUe)uznX7azix@$pOqL{f1mBgROKiWu}%&z8s&0tRaO-%=(; zR4Hr6v0oV^zE(k9$-N{!U;#>QC5sA0DEf8XyS>G)z74*k2!*C<48I0(i~S%|TSyrB zD3xOSg~-i(H>`M+EN*a!T)irXYDs@Wr-}W1VJ&p&@%({r$`@EHaY-S0%1r8wT?^K# zRz8SB%4Ukeb?bHuN@BFU1R`eK#FVz8I%v+>1FS6fptJ#9;Nx6gwX{zVPflNBU2o~N1$ZbQ;U}#jkteT`ZVCL>gJNjX zm!U4YK+S>8Qwy&^Eof2(yuBPa=C-rx6nlSQ;ambiPk3~P%gEvB;97d9w9kLlI1gYV z(={opGOIL6yKNfo1q!~PmeDe5!tKH3_Yv53*|m2PZ;a+wDNP%7;u@S^8c>E?FUCc8 zrkwaJ8X`fW`WJJ{AI8THr{{UCxo8%iODpJAyehHKdqp4l}%Sn)|=I8vSi2@Re@AGUYO{FS+2E?&?}t+Dc|Ereu)QY&)Tz zN>MN2_71@4VYGK1*z5H_Q@m>R~SrR%#c-uhsP!7Hkk{&W+M*2E`!Qi7^erLLa6F0v=&d(isWuN!%^yWD1T^wiPoU@i1_yfoejVd ztoG@tMv50fHwHV#vrqu03Ia8$!_``&c>AvCku0K)cnm60B*=sgdwUC4{{lhshL5X{ zA73v_IG=lCNHwuj8P=_gDmSY}_oLiZkHf(gt$As2-K-X<{c}*Z5H>+K{fi-E5YF6+uy;jfLNQWZ-D#p zK%uAF3I_(Bh{G*Y-aR@S9EI5FLc4=rgXsYbuq-n|H0p|AdRxbLtO?TJ^tEU*R;8#0 zCq)f|3SazLvXg#;iQ*xI-^t!t9PO(NbO%$GUK+|_9Sqq}uqB?pjy?A0W9>laVS5xq zO{)jUNbw~Ez*x7XLutLeeaocxk<{;;6@bG6Lys^v` zUMWZa#6=Vxy$-N3P#qogSh~!>VT&V&3iG^dACZ!5YzD9>xA>ZvefI;wtfJU@)YVm* z=u^1wur8;OlUC9iTVE4OvF;hbT~sw@C2ts39aS9nQj#;7r3x1QHRf27q$`ZRM;ZBQ z1niapw}q8FV8f#VZW$s|WcPII7n|RwB?)}iBn#Q6J7>C9=qvinlG1Z|6fN(fmx#4Y zDGWn%o`i-~ zcM%TRE}4p8AbM$Qt}~PU`v_S;kG++OzW5Z^$~!ffqbMZvMup9w(F;ovwy_d42!gWp(4+c4PDT`Hx*@)6R{H9^r)6pnM~n#>fLqerVOJ*~Z-20N(g z0IoReYap1eSwcqa`Y!2E^9av%yhuGcqg!NvsD%~hiZ0_gx}s+b&duar($CbpGVC8X zvY-z+C@rSr+flQ1eMxIS4kJ(3tqM#kGE#3BxV(WAgKmbtE?3~R+D8>0xer5a>5?0BT@&R?K>hMTdQ+_rf>m$Dm5|E3%JTy$nbip zx6elUe4xQhxF}KsI3ejG+gmX5!G0Za@5i~fGwMbH=vs*w8Xpki|t@4u=@`6 zw|hAz(Ao}m!H&_Ef*l4!3hur~h<*$F;Cr)VH_obGMDt-w{ zxry|uR%o$6!9>P1OXapDI)Yn$-V1csp)^rxGata?@WkcMHIr&6dDf@M?T4eck&Qmt z#PEvqZj;UzP?^pOu)6ppp9xPU%=!KU0>3zIlYCJu?O@GJ{llwg*lkVzpknRt~I^aq08n+}0J|DH+ql;6F!OC&l7FoLQe;<<5UeN4Zl z_@&Xh&(dn9-%WYof^mUn|2g(^Ep1hBtM;9hAzfi5NZ!msS*+|cWyB2o@Uyko{rx)! zWyqv&%3y(f+QV)z<@Mi7B?y+B3*kn4QU!OS{S4{1etmWeF3;I8kT923DS~y; z)N8e0Q$I$3t(kJO-#wE~^z-1xP82s7$;#xa&i?Y|R#PP$wuARh=bSJzPZt8CRuGHI zG`gl~MT#gQ8sjf_1pX3>nHoe3#2+QdmW99}U0Il^znPNbVNfN$oaF~^aK>Z)jP8F@ zK1tgfaHguGxJfcqCr@5U4qL$*)W95W6Wn}0_cCMVKO6t{_;3oOSj0zVV(bndW-IsU15(pHsSW^j$gCaL%TDDC~fik^K$2Rtkqh-1W-ltV?@y!ih< zZv(a)uw)X~pBVbgqVWFdCKAbIqrvktf(pf%GwuhPwb2v>3+*kCe;wrxKg+gt6lQu` z$7vQHvCZ-m$+RN(SZhnfyz{&@&@g7}`CjBlsr363!n*PpOq&Jc$ky$=i10@*;dzC& zsl%^Q#6RsJ;kro~*8X8cP@cAx=Op!)+#mk>5x%Uz{e^?ODD5>2?a0t5KGqr&EcuAN z>~Bm@6Y+M?y~847XI5S7s##fU{f4TL7t*-7-lvs2eda~HPJ{0Pr-v@*nm-_16#|sA zlCak)U)}H~m3Lu54W#^iyHw^LyQ$@k8sCS({5^2@J-1tXJ4TSan7}pQouiP34CL|3 zF^y4^vzRn9&^g3buqB{!s=5bGf}U*!3d@B=UMdx~=8v(9W5O%0q$!%lB?m!XCjyFW zzrX89(4Z>CogROrJX`MPEgAsSe^rhGaQ=M}-+wPQ%Q?)Zrqd6+6gSLJrn?z3SeHs( zPo_pYm5vAC@U&;5eHxg|xJ=zhSIjpS<8bAPuaaIcX5{63b~KmEAW;%nc1meQayQh> zYmRMGk$pB|sD>g5HhonY=zxsDp6zC%CL?`E^MkU;(SnC^XWudZm5?B3Opgx~t>=`Vae{~Gu}#2={KE1p_X*O~J5 zl+u?JH1`Fu(GM~}j~z1`=C&`0`RtXgAYOr-K0GtcSwEMzfS_CT!o%qx5qRvNOfmb_ z7^3y6D7uqGC|)9FJtS`L=gAXOH`(Q7KlOYh1eegW=(n)%z{b!V~6v!j)a$EG3C zR3g~Dz#X&wo2wuRfNY+zBC!NtfN9qyV)kT4{GuJ$bxA(>9v7bwUYfuFi`^`$UR0B) zGU_^Vs*Ceb6QBwQOU3y-CE94%gUo@TXuVK2yWcLOe~hG5(c84Y{#cFLv%!MYQAX*% z{4}2&QP%~%l0KGn;QQSF-Ux-vY~qI+h41vAe{DSu!|&FlMxr7f9`j#xy*7scsq(W# zu=k;C`#P3$R7YxQ)duFy1kUz$_++r!M!=8>c=BZdGFB9@RQjZcQQvAo8g>{Lu#_kZJMfQe#q(zzZ=;?%V+HN+_9E|`* z47!dD1k+>(sB*Yb+Fed@Cot;cLT1N-CwwFwdw+ilf)SmB3=z$F;aaJRU|R~ec;t=N z^bvI*GTUNCWsK4jNBcU*uOsuow3W^~*OcL8!=}7?H{Ih2NJAesNI%zo{BHQVWj^<^Yct!dy^fy=ezdQQyX|^^T0$O*9}wFsj={CCLTqMzMB)g_l-o( zs4xJa;0k&a7R85@PUNG)%z&YTl{3mZL>8jIt+21Q0WzVag1rm4mO!1R8`P2sct^E} z65pWWQ}*aZ0~-bYz!yqhTV#eK%&21$bglY!4w0)n6`?lmZg5ia>47B!V!wnyi(U}@ zGZ6k86C;|13hz*d5+WL2{Vm0J*W^LRG>X9 z4+7(~*z6L(YjdyN`3kAFkr+>9?h8ogN_1+j<@a*oL9X@x-vXXtRlkro9s2{e@N;Y7 zTLQ**c!6L%g|(U1J!!aM)`;lca>)kc+RpRm42J6d%wsb!T%G+(|sA9oz1bcsS!4I)EQmQC7oL!CRO)2A#&=#1g;tH z76_zB$>;iAsnWi;`_$W+|Am6luTZs6q85Myz61Amt%5fb>*TbX=>t$Zfz+EaGk?

hRO1voG9=E9B(KMX39O9LTib14sswf)Y`J0{oAVTHW=Gs8;ox_7>>tw+H%lf zH*Q_9HDRt+N+1=A6`OInj?v6*l8?bRfw+{xUrCZixJk{EU^z7<~ z-xfDF>WeN&bbB_$jRu;S+2WbyNw?a;oG-VTiruh#hZ74F@XB=v*St!;_MRn<+o$2> z_^GtRC^x_3se1L{BRTZ(rJbGUrY%JSjs0U|sPIrrl`<%sDHJ<1&&iZ^){=#SvcA7A#MVBI zGS72975m6W`AHSy+8`xLZH3Yao1|(&^MAD#r4?ng)F_fB09us=kvKYw$}EqU$3uDk z#IK7CB{)aL#18!RS4BgF5MY5}&nK{>ReC%NLtP@BEGX|@N!4^4lmn8CGh)R+H0hc~ z8=sbW^Q05H28run-U|l9uvzdlufkH~2iGBx&+z}W<=2Oc_rG?H0&5Z~KC|D+d3J0nVl8XY7ImjMR;<6tL{T2Oq@f7wiG+W&`P8d^w zPM=>+xh=VLZ9vi5a#JxYtZBI!b?8AOYKj-Jaey1LODl?RahkYyz$QSati_6xcLI6_ zw(nVlQCGJC-O**D2T38GpjqD3ev}~IAdlkTtcd!IybgQGy8aZoa9O{5g%4W7{{q1< zbZ@#@>qliDff2BWUzzyn<&49{zx?TCu=*@7n?_L0_&?r5HyTYO_7j`5iojSse+wIS zZcE@ie-+lOX=(T031t}3oyF!zd}Vid_ubszVlX7Pj{wJq2edeTupnRtD*ovRqzM7< zx6K2eZ8w=EHV5Jn7`Yg*entOlljO@YeE{i`vIcbfVxbyWx$&IZg~IYtYmOsXB^f9hK4Z_(DGY_!X%f(x z5I!V#ij|qxgY=8;GydS<7?}I!=%aaN%fy%1f&an5I{Hmw2LoT2Tbpgt_f2Kssz(^s zz{X~?0qu4^zX&kAtJJ!SFA`=)G|Ej@93VINme&uO_qQ|pxr5=_UA?1z&p?q%p*nh8 zc}mzS5M%x0bzlA*p;Fj#Pj+8IicI?agZ>gvCU{wMc| z`;-x)D%U1aAr+siES`(RY-jWf0;71sg?OpuY)#A6ix%88Exu`X32eDGp{k`{DZ+a; z?Ay-h=MIKju^=bqB%$_?by}MiW!g?_l;;t6XsBttZn=Qy4#?_OZ%ei_`m3Va24$<; z8NJOjw!zpAFAj`0;^Fk-V7W~G=%Sp494DyolDS<)niK%d>#NInk(lP7O!kOnZoJU* z2g@$)8*@I~e2sW)=8vl6sZ)VmTZdvqkB^Z(Iho5F|MXn=jF#8k`$E7_!$UMPfD;Vt*p_WPoM`)g-gvT#NX>95RidUv!lLITRtjUeh9NDQ*$<4VvODdz>6k zvMJdbr%FY|^5D?HdgkVJg3QlL&A5Q-G;Gn%ui+On1t*DD*-$IT~i?KG<< zqJms$Y`&60?m!|ikO&RZu6LCNiMWUNce_z-5)!ivE5EfOLz&SM<5AIhey$@^?@Tx1 z#WJb#^r3_Kog8P9Or2HTm^nU?Jw9O&Y7|w<#HQH!=iFzcZB%aScW_&CYCqKc>Ft;E zUp{^QWeE)YQQi_!_{s;IGpe7xEBJ3Ohi^DFFZ=l6O8aEWSG|*#PHA0!fajf zJ}|sG@T$@Fdav#E5d4%4KltDW|2HRB^)vA=hjGnVwWV6V*c^qP#tR&;DyO}C$091~V2DBAYFbnXj=dgfA1e~) z&VqC&cC5;OfWR;mMb_eBeH@2}FD=5>%PV_O@@W#VNJMj%+{*4N?@!;(J!yuWcwWQK zRd4{yaCTh))^L$VDK@K=VB=#$?y~>HXo3y3y5hN3<>Jrnuit|Vr}JuQbY{j41&uzd z3VT81G#mk#b_r%(0+&#H%O%M8A7b-!tr_)%p5Ex^0&=;WY$)|ZgKSEt?A77fGCDJ~ z$;yo7gihv>$_xJ=)tOGWV&IH1Sg^HE8<%NS^LClhEmNB@No<#+isQu;63=P}qG4&F zkQlKl&`DXHL+xKCh>(t$(h|{$F-?fO5WPCRu5(saKcT5rQ)On=^f=M$R+G4-w-eKp z9Chw(wdz%<5jOY-J7GX>hFLR=6BO|uY416rx1qsFjDiejC=$eqUQ240+oK}5r9`() zLCe+t2DOrgWpxvjo7?2h6AC11GiV{Ko~$SQV`Y;7V;x{9os^zFBqYpGuOQnAC;GM2 z1_`yVVY+SVIX6>Zvru{QQ~0R7`SV02`b4YPaii)FpE~?40E7B8Zy29%kqG(8w|l+- zf34f3@0-ZL@sf0))BW37`elJZlQijvWxTsszXVs}Z7{wxFc$XI?;!SQ6!i*CQERS7 zkv*5Z4aS!RMt~pT0r$XMfSopPlcXu6=IxsC<$;lmEq&*&yRyW6!;<3e5G4Dyv-C>> z!>x8J7t~7x;R}`%&2%|IsU6!{x~N(23wr%9>Cs1G7{`<*| z{{^Y93mD!_dj^ar%JLo^mXy9R4Pxx9WtZgYet?@V&kB<|093CRBzJDT&%piyEPY+A z69C0g;}Q+|j~SxGy`Q@1-|`7VN$>s!cZTs_7cj~;*SG~<>V|+_Z`Sz+mE^Lz*Q@Rg ze6I`g>}moyLemH|L_Ogj z@{f5=Dp59T3360NX**$-aH3yS7xb$`lvcZ1(>3M^5NX$E2(v5MsSnK(=4B(^;0eZv zB`RhVU0q*ldtEr{kZ=PZle+X!mk;YMl1Eob?%v}pGo%_UJk*#MHmcajBsl# zQA;0(W`&)iIR^ZPm6VU(0|@US8OuA+h1SO96!BcuHSByaV{VpY8q?=%E++Zhi9Q5| zcR$F%aS0ojx{{VEuR9`f3#pJ!#zUe#VFBf%MMA$rvrsNOkm?PslA(BSytGf%Qd2Y- zzx-Clk^}u(icZ|QarRQ!m2Xu2O!acxk9PA1-Wd4KoyzZTor+=G=NR~aGvbgc({8Q&WHrdNFQJ;jqW47b zuJVQ=i%_Z%cb!BHyIAR1W`lS_+O2gRMZf4_*Uv)z!jtb`LO*HUC$8-^?OtS4iOwW4 z>A$Doy~tcgXZaz#CYNd2ji9*@W=<}(rv3-Bsxinkle%TTj?BC%kzP|ZR(4%MEg|}^ z7|u;{X3WQ$IP-f)9V>BP8*R$@a7nwvXa~EA2DgzWjg;Gnw2%b~+@@Kl)$aJakkxE; z*iBRPl*8l%>sCVOu$umkrj2CSNRl|ZWxTFGFzGdUteC{lnt&c7odFYey*f#u6vn5q zI{?Q>RChuTj5{4OQ!`WHF^AJ_o>?`KR+2JOl--M6e3K(IZ9?d}?K7+3umif%&^yka zb%59CBaJ?{(YIg+>l8Sg3n;Exhhy43g%X6I(XoW2BJHbR7cjn-K~q=X^HrB|oAiCN zz=)Xq?q}w9%g%`D*}A6BGGi_*g`Z(}#3v}>EcF@8(D9V9PA~Zt1w)*?siV%m$(Lop zyQ%Fz+VF2e(}Q{Wjp5_6%vJDm_T+D|Z;(uNb$29ZRI1;YjJIm|6dQich0VjGPu1!q zru?DJmc8}XCq%PG3Ab=Pg&AfQ$DwR}a@jAQOnB1)1Z`@MNXMi{;QhR=%fiIWOH*s_{0259o;e*4Z&n&?4vY(%QC zPV1(;y>uI%!=q~g9pN7zkz3`yF>M|6UkDI*&aSpOpbzM^&b4prVTkZwO0~y~P{b&V z6O)IUhn!mH!laj&#Hv8U)VRm$v>N}?R6SoQQPZ?mAL!MsLPXn4pFHh@-?qp>N9o7v zz)CRC^B#R$C!%{(3nMBgO^6zUgwZjsb{euQ-PrY|iEsp&e>sH(&}wP@kajfK6CgTi zo>{jVAoR3e--!gGzZ5VUh=R>=hS&C|&(S|ssD4cTK>dbvpKJ6r<^TE8Pde$HFR>9A zZ!^yQWKEro?qTw#x)AOjUQP6f%o&sMU^>}nsHnQ=?#P%+n}@qc9N^GgsBDocS}Tet zYAX6KWXvVqgWD1Zu-wkQOKJ0o(e?wUZTkz0u)hdm{b}>uaRHdpovLopgu$HX;oe83 z*p;H{x}nf0T5}D;%5KAvlM|vlOyequ&BKza%Q%vcq4-wf5_g&n9B;~E3Wv_P#iE&a z1-8Q(b64I+0_g=7LI2vU+{G+ldE;qj@pXr)N!raZwH~3>fqQ8l7Mg4z87C$l)(nzd{TG+}UtRdFOvy#f*H60~LFpUIKI`k@#Ua?Yo{pw{)QL))3=)bVDv&|3T{5T&Q zE-7JWrQ$jL|o@D)6Qys%}?`9DPO2<#N`8_?j+*LUYklP1}>`3VRZFX~YQ0AgU+4JK z%uM?ZFLRP)dD7-Ny^h<0#S~GaRGF`|TaJ8`GA4+22`l^sUXVQ-uP2i=0u+%SRH-0t z;>^c7lIFw{#eKh6Ec?%@TS1zh@PkI zPP?6qe%n+AOtb^VzXYQW)JGtyhayD^PZ-}rp(JP&)jv4g(>Xtjf$SY0MKcW?^kfHBZR@$_2N{Or`iBuW~| z-}=_F(P8RXAn>hr-sA$&3)(SlPf-8003#4XWNwV!Sbi){O=FAx?9!`TrSV;*@z~*C zAHMV|_J5vle@U)@AH>Uk`W^rzcDIArD^ZRPe6ONt{Q&6((or^tB9=UDtV8S|n$i0%1dk#7-VcbySuaTe47T(s% z#G>}}E5O8}IUqvGj4{r5pB|RV-6pL+YiHoO_4@u7WoeHFkUNgR3wDMPJRD=7Fel zhrS09dPwtUdu$TbQN5js*R;A);a4BBu$xGi5STXMN-B1tasJwalnDE-5PsgHJ%0@^ zY-J)cf^;ix?b6qynG&0`?WflcT|d%JbKg7lGtKv9rX8|LhV+f(x`iJ}${NGzOOR3I z{a!_I=YGu_1K%;LzQ1K$murR?Uxc|D{Kf4Ql4(K&VV7}_MSv}_hE%IB)^9li$&Lf_ zh+o05(3Rq4pHSLqZL1RfvUDlMM`eyE1@y*Q4$krcG(z!Z2q50YB9kcAsIygQr+7<= z)8hhL{3MmwnKl98WJmHU)5u(94ji^-{S$lOEnA8Yr8d4l$g-pYw`batVqfCelbr{g zv3?kM>+7OTnaE8`-?GW?a4aBhMVctD$tNwTe-#3VdC_*%5l~*c0};P~!+|K9eaj#; z74?!GWrTJ_6H%5soU_Z*6pqy~8JVI;6oZKZyd%xBgLHVOB6bI6Z0L8!>5!QXscRI_ zPAx}OCM!u|W(Q345QY9`5jP_pPPYRVCPQHpiG&H7eBgFCXon%igdRjGU`jXZnDyAn zDZpkyw~1b!4x2nUSy$iJ1&mJ)t*7&wpTEfUgzD*}Fqr%djmy~4&%TFHZu5+7()X2- zgnYjI>r-ZX(i=lEnRUOY4jPzvI#t{1K&r@WN*7^Zqe%+Q8 zq?VXD)R@1XnR)u*Er#91@%vAS_qQoeWnQ1vsQpx9EKuvE0c1hB}VyjB2xOJ3eCFJm&bHD;Ok{ZysYyA6>5q>PFjY5lxyM z-Bm}MXJ2b^%X~F_PFv5DAsA>u&7{Zfx^g(@lkA+Waqs|mecv2^x)``*` zB#EX-$DnZpbZR=bz7vkk+X=)xjaWj&N~6gmuKCaF$$EkNkCa9zUkbN(pb8daoH1LC za>`3|Lel-`+f2o z{7GukzK^4BYH*2N{8>ZofP%(ciwV0y366dx$1YXiS$vh<5R!e;kY0H ztlPN@u2h=QK2^(J9|x;dLEbX^-%cGfCof$+ zYv)iZbSiE!m0X1Y8@K}%blgX&uJ`&Yt|;(80uN$+zcA#kZ-4E05WfaSm;v&j=h!^Q z?uZA+m5Z#8)6Jqe7R5T>hjg}}?|_G8&2Kr6m`%nKi{h+hHrI(5F}M_hr$Kj=~IG{)YRHs2>RB;(gxldLjr6 z8vaE2CU!)BJkybR2H>M#!gOU9FcJF_mnO=bD|zP>@4%_+ze6>HI+S8ioGQ{gSs?8e z$$9d5h>M(KwWsJO0sg&t0DWdO2@ziuDfG^I7GiH+$`nH zy@P1`;u-NpHWp=?q1P`TN(ImmOej_|xU@ zmD*l(s9}PC4MQ}S6T>D%Mu%%Rv??|?!YWOBUi%h?Fd%tZz&`itd zanl|=Jy6`Y%rY${=9f^hevQE7)vD^Ws;`~`*wxGQGg0h_c2Z0_$~(P#ytw!9z8;b)x#n2E zH_nhMRj?dso^&&($Dwm31DvemOfzxv=#fNp#Jwj*aL}<6aJ9lBXcZ#f6K47>Sv86q zx!E1eCC<`w1ta)SyFh#nGbcMZrdMH^_WFQA)C+x!Se?>8o21uh7B%ZY2M_GG}a;?sS)Fk zPr+3AKG8fhG&S_ZHfzhBPpdd;+?wcc$sg-@mSO+qjid%2))rSww8h;LBC7ikAxY}< znzQJy92jd}ow0|6b6X9854UDp?=?<*`0%0w^0!8DLpkvHppb)p>KdXntT5JeAw4u} zYu3?^Hg4`swGYplif+PJ)3tf^K|-YPG1)SH1N6=&x!{xE@@YHyxf;I`V7LpN?uUq6?pLe2Z4$an=By{`ZpJxevZVnf2XS&0Q5(pUmo76* z1yD`Y1`Dc-9+VcW4k!l{^4*224A%yp)p3d=M$9&s1lwwh^V!K=Tcs3=>S%8M+`;Pt?{3vr+oG zhQ{!@*0;!#@y?k#m!htp{SPvkN2lKP8*GRC9rkQFqa*^dh9X0srDa7?Ko^u7OOOzO zLXfNGu`F3wmg+uBp|#J}ctf5e7k6pQgS~_DLyF_rb|WvFE>rcrNHBu@Fb`NK%*!bv zvrQsu6n%g>PP${y6u`1B%@~IRPR4{3*Nac zSxId@y<{o6bXKZhLdHGBKV*z4a9E{cRBUS<>8_MrA4xM5RgcV?`6#UUnCfTWJFot$(UPVADFu>$v_Mh zw;$=0or}tZHIZO1QMVyHDLsxj@u0R?KN zn7F0Np4<)Nu^%F>DvS~kw~&ay^Fjyi9iL>w$<8=PYZH<*1|z^Qh26wScR6sj4g zl%SJO>vo*H{@c`>75^lxYD)W%18YLCU^X4qH@v0YadWcaFx0a{i-H@9S)n)UO5<<^ zUK_ZGnz;<8HzE6fywGOK74KlVSwn@gZbMd?(7-1=JTuU|p^|gcuv~J^d_Zp22o@96 z+l#;lY+ea+X1n=Ya@I z7w2YKlIu|G$8mDa86)S2oYibOcQQ%okfLn0v6l+kk5Vi|ts1mvZf5B+>u9D{h)sr~ z%VKQEK0hJt3$jS=G;bP7Ayu~F9rbGCX5$;!p?AD2Rf<-7)D=ILpr*tniDn4y>WnbW z0Bzc%wq(_N?l@Iyy)dnh<@|drgqP)zm5oA}%c!fe7vc#ME~QO9(q(4iL8_Q`p{>`7W&k)+)vbQB9DGu_pBZH z#CsQ0pE>d0_qMMD&+y8gu0huS!81E4*|YjysQ;|>Rqe1_=mY zvbS#0*is?9&IKBRPPdc(G#B*rHW<$q94q|KzA5p3!yNWpjn%KE2SpDrSQy5=|46-V z96*Y>;S+W8fr)J}o+Vg!n^;n%yF`X`$ksaLK#8)RP(;e)6lQ%;)lI2qY6~HeRv`+( zxuY&KpOBEHv`p1!E6Hz(S~iYdhZu06&Tg<*hxg^M5G8oW`Z8g;5UQoq=O)#D&4^0P zS7%O@dsK5OH6nh~+h9B`EM^7x0rsV9C(T#`*J_G%Y~VU1vsTFr>O?CWBMOT@kxrnc z*SY=^bNb<;%IguHrRV|Mbp-ou`G^fW?;|h>6xB^dCKv(qQ9}|{HE1rL zn~-*2QHtlJ*Ne@?eX7Q7FrF5cv+(9{$NH#MSVn4M|Aj?995c@(_SqA=QJ(EBf#V~r z)x?l=Vh4zOvNUI<6A*W)1zY*Bk#+Hx!5BYY1dF(~p@PCYUmURSLH!4|y|JvqOBcLJ zjVRXhW>xnM#qqhy>&3TJ*9Mf^U_7;N=4#{JabtYE?p9pbqbh=YB9AONXDm5~wZ3c%)&o(=R-zrpWV^iWr6j!>RDlBL1| zCy5SFIW1?`j(KqMks_eNIcGp>#M2!`8a9Ss!?J-GV=ZUn{A~p(+l=C|MfvBWo@L_D zGbPUx3=WmJX*Btva+!2zW}2miiJ65Vr={iX6tmazl2Vf+tU7pH0<`O;`*?ci-+y;Y zNyM%y68|HAwY(a!?hGM`NT8)KFUPY0a-ZtloJ!s#Blh7PVM}M3Q)TjrYUQEn9LgDy zy9=OPJzuYG0vJ=u+y!L{E7MqzS1@7i#v_ak4G4xIIrr9(TDFw0Myyed3VH!8y?3sS zPwnlfp2J|+>I#7uI&}x=9CEBrB{R3m>&oV}4UIQb^1CDP0ogf^ynYUq`uY}2p^T`n zLpWa_FBPwi5P0_k>{TE9xU3wZS(#!l#8P0ZA_k+ZE?Irx9}Vh4{~(e=rS8CU;=D3< zsrtErk)!5sg7F$V-XnVN{QgrvGpXLt#56cvu`eB2{3G9Md4F_#pX-l&a186Af0FPM z>=ns6LXVj@z*s$I+&_fW+e>|yx`2822rV-2GONK+rIcPD7GUakmpx4<+-B?eC#P>p zGUj$p*FhZ3GzE4U_uwgK90xzlLqsQqzFMTYhl?h+8`a2IR5MtiE6R6(>)t)IA6w-` zAEx_G%q6W#CoHIH1*e%I9-O*`C&ksTI#d-^*Ze2%EYGlSRsb`?tCC0+vDo(>X^Fp` zOEHX0%%89ql1(r;kfuv%KaBSw16F_^jt9r7E)0gqDZSqMJ}Y!pxfjlN?i-4WZnzlN zFK|9DFaoHKZ~Ab0O-Y81rADWBhJVEWNh);0?Kc)*^8B!oEZ&DcrAj(5f@;RQ4Ae|D zs7W=RrZF4^L!?ik5U7=X((dR~PZwLo?z{UJH5iOsyg6RP8atIRETCxdo#9*yPtG$V zh#VQpJrru#b}dm9$_C6jAsxiY zUO(su3yafzY>yvKw47JMaaq2S{&{KH9>w|B4+)lk`jej!4C_xMf!DV*_f;uANSw=< zNLQdPp;+O~Q#Tp}A=Hp_LyPg}ii+P4C#u+v_(N!KS$1TXpCd7rP z32zl@XA|6PFHaj!!%5txpI4UEH=@YT9O`bUJ?>}gZT$wudA-ak;vBl1w0-Mo= zdjR|!bee+T=6108w`iDgqC0L@(CaDVbo3iybVMHt6eE?jUq~}N>x7-6H*VPYKki%S z#8Fw+4#U0cUmsrh`hj69R2WJQ&8xc03BET=ua0dhBQnWM9RkDFoa{ZS_JcRZysLp7 z$;8u@sw8Qr4=K-SGd=muoDcK02QevfzuA}HdBDRe9|et)sCkRbR4G_(@1PE+pcOju;w?OStB$u2w}^d+KqdxGdBqlbQNG0k-YvLaMD$Y1r*N)FvsbO`E`Acw-Tu z!5lS}t=}^wu?Ze1GMtI!YGH97cCm9@hm@YMg@`w5PDbmCJ3X9N? zDo&9KzJ_4T{-QafG`~;Py|XD@g<6{f_hPikRTuF-38a=u?kx>Lbcb#3%)YjR05vTG zioX{!q2?lX#{Z@k?`4K>V8W#qJjO76R_SaiB-(^QKCMl= zp6;&_lq>N#MfzzUHq47Ytn4%C_G6EO5a&Ab;4NTTihg_euJCv7h1g$1FeoZ5xexO# zR1yuji0yjNfd*$19PlJjRB`v(7T-K~^zCZ8ZYpMlc)8wA5Pi5a6dk)k9O@TvzV98p zm?*$BRNQ?J0B;HaVO}r=PmG0(qKqQc8K}ChHgfJEriHsC(OgD@B!WGm^1}&KAjxzP zJN9R;p2syK7d2BfiIP{cfj1-g|D~w9q!a1>tBSQjBXR(V`Y)qkuuv5BiOvZ7pM<|l zL10J_7`f<(^L4BlwQ4fImR5C)7j!^bsac~OE9j*2)de9KC@ioms!J*?WJZBy(>~R&Kb}WxH5{gKH6YmF8=M|D=^69-=OdayoGIt(o{4Eof zQBX~^_Ov(7=GW@#tfc^m^qQs00-7BW*A-Z6mBGB}2HB*cP=>nVc9|d7sDQlMS1o7K z$BDw3ys|!-IZ~h`0jhhd)ze6<>GDZc-#K-GWn{e6kv~*2D_JO@avF*(rLz)8LFjAP zfj_6P_v2^0ag6_&QGK1Z)ch)f5ivdM1kIVx%IdI*-UeekycjTMwVSiZ9CEo@`zY~f zQ*WJP){ei;$mO+LMl7s~cJv>0xTK)uYg}r5;OyOQw*rp) zqa2Td2TINNLlF617gEcf#OWZ0P=hc}zShti9<(4ZfIflenqPcV=QDKb9kc z2uBX#ly+A&9Y^=GLf~ckv~-?3-mu%sDnq<&AcfBJDl+Dz6DKB$o49w{b%OplXB?fW z&$94~C7=#x>g8=ZA+Ulhh*8H=u{nBuLNKN`wKo^QhRS;_Euy!O!K%<@ea9PrY|@ z=aARf$)1c<>AsWuf`%Vgy(;(7Rj*^C(ho9!BHp+7-FtzySAE#h_X=({&gD7skXE`F z(?L{XgVGU5w7+ie2HiOY2a5X;>x$C8it}frmoe?*+F!T!0c(+2XJFS$@VL{B_=Z9j z%?fcqRFvP%DWo`sA?!P3pojz5sxBIRbF>39xaHI^wq`TkO|&lUdgXQL1QWz_5g~CpN2HD8DTA3%`oKMOcx>2Lp zR#Hf*n#x9p>eNu+l+MATQXQ)97$Vg4uK(CeGaLH61=hlaf@M}V^BxSYnbV$FH1sfE5eK>ke z^(%7xYu^{1#`D{P+VltPJNPNI&ujm3wui#u7$}XTK#z*%qg;F=J_=S+H>`(i zG%z6j05%z9J5DH?0jv07mvHvq!&W5JMYElS><_bIxhrnKB9X7vj=r4v%*$| zxRiTKRhx{@FUJoY6f3Iu#^@|Vkc%f;FXL(;l?3u;o02K!IYQ`aN}_iXar6Ptp>|1C zGty~n9XyJeuPVy+K$yFPSlF7pyZlfi%;?V7W<@QG$IKipgC=xBY~&hF$&Z(%x`eGo zu7d+9w$oy>=tF?CxoqtmM6$Kh$F)aSQUjUQjp9z3m0?8(Rmx)sj2wL?#UyxSjFIQT z$0)I&LS%Lc?+UAO7Ykot&ENoHTxUg2Z;C2~2qBJx3J(*oAv)uzC(R$D<=c)xtShxV zwI2T4*($!7TX*~pR0_)*6GIvEc-k85n(f95#|$j=QQY^tl;S>MN+)Vsb~R_uM;*CX z&VF=wKpEg;Fd|yf<+Yj-*khSk*2doBfLpMvW%}44x^)1NuY(NJ6FfLE!GZ(!1iZaFBvRUp4^Yhz23dON3k8F- z+NwP61g@*G_zer*2|*QB z7b86E;{_^Pe)nEgSCB2eUem?>4Q{r0z_S#6bfjNN@o_WNuWY@%Rx>~(Ksj~569@lO zknO~u8O{R^bPMT4xpiPE+5ZlRqD^`-;&MEQ&KF_&0k00+6@}&e&u@rdtWgde;UadfpwpJkVys5VjLl_-U{NW=2v3>+bFdmN0u_5ChRay6+d9JR@4#6AZLJ0kh^GP%=QP~HbHP}c;z+MA$UE1S|0O*Eo> zro8IjamA1VhP%F6s_jhbXV~hh?|uDMQs&e7txg{LYJsu*8M_HCFMa*7pg)0!F1%3Z zUt0xwYEEzJmq325Na#lfCZ8a~Up)DxzY=kLL0|+~Pdghmd_=uE`U%OZ9{2j+8s(7%mM3;-EqHb;5`AAT7-L4T z>k;wGak9qEu&npvHHdmr@57!|X?>cR){|HZ3hbN<>Zia?qDEHHqpBZuJ*HgESz)gkSNjVB^ z-FN{gdI6f!JA)?5P8(^5(P5mTNXik69!1~VWQ2t!)Bw-u{e~ih!w?qbfX}N(=|_!# z_NXi`6pV;T+LGz;A$5<6or?7*xcLBAB~^k}VO94)QQF*zJLygyjr2yENv1D}Cla-0 zsA)0LOm~VamE(MO8oib`r5}M|NnI|w+bwMrcl9eyP8bGL2LuR0bNUjGdiNey-nqsi z^c=}sj&D`oMqn8B6Uj(H3T8S;9+l{00f#mfU(cvh2?vlWD!rEMosM$qut{uYlCgfK zn`ztMl(uxj+$vFk_*UX5r~6m8Oy0L{2nLE&EjJZa3Req_mxxG};-V^ronk?fwi9;K zOhoZ^1QNn*L~R&WCVuZL7c747Uw6i+3Y*um4wbv9vt#Q|dS zg@UnMn%$DmTfzj214*-tb|rx3qUG$OAknkJX2L0R%zu`DjE6Ds9L`oHb|<;W69UV& zTieJ3Y)h5v;)b!;qrDAGB2?LTweg0Mi3f-9(1TUYK`RpY`*e(wKmRDBo)?=8Y;rO>(^ci3t>6iu4TaD>mgua_n`>sZ7k9W)9rjXVNN8N#J!qSqBnc~#WqtKMRB7YOS2c{Mv{k#ohA1x zZ%f>Q%4-J6-sxkvIA$vHP85tppLhbh)3mN8t}+*QF9moJ+@&xV;w(a>0iHiA&4tSA zSKc2`h`K0Cbkn|*-Dz`7l6y~lXRniEUJ}o-mQfN_3T*H*2!MmKJ7~V5WG->5jWC&axfSqZ#C&&>w8yH zz=EX6_PkgyXu@RDp*{ok9UY|3vw-*Zw2oMNXY~=i9=wEcIzX7+9X_D6&VUw?ziB)p z+6+TeGsF_N8CT<>5k1}R!Cu)`oM5z@OeW*1uEW~9phs>H$7xG8uhf+GpJo1?*YwvNggwgk6Mj09Y*^krFCoV9Si#ZN9P$b>fN1g zE%`Um^^8NEbhK~MjSl(R{IJ|K?nGUrgVZ`8I8CE|WlT%yr@kz0>h}n&XC1fE<$Z>k zD$Je#bWM)}iuGCLw5;wK2S=adqO~s%jPMs1Rphe?z{l`42+s|Shm*=ypXEmCTjUq= z#e=~`?LsT&Ue?c82GpuBTm#r}c31Uqs48$kd2S+dt`PeMdn)y01rb$I+~Oz&}6X++EddS?KS^LtGpJ7v;`ZYpM+ zFeq-M^wWXNB_kcsPlMfx6;saA$_|iTh8fiEk6?m{=+vOYxJK_B4v%$d#-VqhzI4@2 z+h=YFT{_hAS%^u zo7+j`_h}TFOZEepz0wSjMNC(fhKd^%;)&KqtDhCvO^fDuzKprO)3Nsf-d5%-L7J71 zD+|j~G>Q9S6T{8~Q)QPSOHHdJtSc9iT)TFkiBI10~T;9i>@VXD;HGbzWP&5mQCk85v zk$5BE!NbL$+`BDk#b8uqe4x6>aWErH`otWM&X|kNtc17cXLp3oE2(;P%yJ>p2M-eP zu56uCkm$hHw#VLMduESq+qP}nwryjNZQHhO+txqlRGo{j>QCRKRwubgDxH^yc z8SS?DhxzzD#<&aoky~$tX02(Co(aisnTccDkYWBxWWnkr&DKuBwxm(g}N zbrJFD!gyWg^9Hn3;B9&8{Q#LM+Iapaqqxd44^VZh`x%Zy^7XvFdb3K*7&4Kru zYTS+vyQ>_}9cUJ_W4=Ct%1*otC6$mQzhLBB8GBm(YlSY-0r_&H0PH1YhgN{nJQfY z&on1O_uLzWTh{E-GEl9ny<9>55CumsHAs8qu`V=6hU?jQaLf`Y4+lFB+vsiOfW0-( z&v|KcQaP|Uo1n21oeC{nN~%Xu_%4ZP^`m!vl4`w zR1Kd;XimG{i-Yf6DLNao6>U+0=TIcF$S*PYyqEt&!*|Khk9kTDnV}hGcB@Rt$RGbD z8z-+Yp(*_$$0@7Fivfqmc%tuJuHSyW_rSfLk+w*$3)xraGVD|HWS*6u)|gQu%M2Ws zm^r8N(}kY360&7S^aUeGjKg#vx|QV$8X+69!@r+|vD_r>#4Y9D5pAD-*%i7Vb#vH0 zS59BUKD*bc4?ViI=gyI}1EY9GM`15tsH)+r5k3*5XkiH@^TEFml;TsJT_AXb$se=f z!dUQ<_uCx6YoR?mVSAeaA}opy26)>nVASmRe}+HG;5q^u*D$rrXm@l_c4xqal@w@&ZF-#EM_+qTE4oTgPr9XN3}hz3%3~tw zkC(J6;7QF|XF?Z81TqKY57j1ZBxtMEMq}E|d(>*X*{HIgEXrJ}&Q(qBqHMS>EEAfM zwZLM?sraKK&D~M#D+o>*I=PX3*`eRiEaFlPpF;uq@qCvejG#R-$=66Xp`(QsTIJTL zk0jp+HUTb`gh?ZiGi~!_mt2#=3Pn${!Z7z%Kiuq#_NXY^!{nKA{d-SGs#xF>1i&kS zuz(DCSBa|7Vf2^4A)-(PL7M^EgHrNWXED*k$k(5<84CK1)h)fWZTl+J(C-E%%3r68 zEN=jy{r#(7(DvBdR^v^Pqu4+~;4=qX7GaPLFQKm(O`e9AK(8!7ocCXOG0N) zqD=cBVW};mLp=i5;~#9zQu%l*Ei7zrblx>9%+gax0B zR5KB)v)<@##KE%BIcjJGJA))Z(HDBE+&mrsQp`i*ezg2`S^8Z~pD-oz$Sd8-aTRk}GEfZL`yN+VpS2J=Hram?Go z8W3lrpjvfh4upbtYC@j%>^=lpjvR->I%lS;TCgjBdBcbpYEt#Jc-qXT;;6f6h#@0K zZ=qfTLuulvYof_wmAod{sYiyJJ&?4Hdb!NpIbATiK2$~V{N0QNR6jLWC3{-4et!#i zlU~FCQXEk5kGGm+M%7de=L(K|MfTo#NK%-Fj3M1(w@VXv$LTFhnW)MuU+M8kSbI7* ztW)hjsf&TdjmvW3cd_K%2z*FbrqY)e8(U+fAJw*m7cbmg z6`6qWb4(3{G`0axx300tRGXrux39iVLO*D^QL6D(5!J49ThN+}=?8;`|Oqm;)Uk z2i@S}GE#hsgbA;C=D;b-_*s4tQ-qb@`E(t+^EAJxg^sDgovAu|#x^XRJ#rTp!{AYCuk{X7Ibq?wu~x z&%XDJZh1%ae#l=(!v;J^mgUE_n1~%+U6J9059RUS7Oo;%xll zHlw>yrZbGkJh`c^IJT|3c!mSg(()ZqmC+}$+VCLbPF58D;cy=%c>jX(CR^b%+teCk zjSZX=@u-om(uMX%qqR=l5qH1VeFAbZ9Z+k1gAhvKPiPBFqG?hEl)qz9giuNI_}g$dFB9Z+JJ- z%C1GZmT%*eo+E^bI!M#PSX=UHrz56SYi|eolLrsQ_1&KjtNwRF`A8*sVxe(j zo|Tt9`K@^PBrDW{M9fr_7h+0jm7Xat@G-ze-2BDy!fX%Fj5Gp%Wd;>brB06}5{}>s z&YvcjR-UNnM20LC+NTkgTmIWAT+6RO79vK5t8C|Q?Da0#PaRM8i~gzrT0kBHq4(#< z9Ji%-Rbr1m>&$hia~UmFu`AbMd=O@vjg?iqBD%A>ZjNyt&fc9FI;@4SEFX)}!rP~N zqs0ZL*mzw_m-TxRFv7@v=GD0);Cp6`c($FAMq3T&IL?wd>tX;+THVn}0=Kh@t0D<( z`AsXD+GsbFeT-ER&J-5;2(il=3taqRiWZrT6%3KUb zwV${BSUFv8y83KQ@tcB>nNS{rJM2;lD~C6+T4jU@_sh15($tCF30`A9vLA94ft3Xp zuh9|nib*W11;RJ0F1kkHgx*Z3r@wQUPzc6rUR_?!BuO*gOTE2?vQ>px=c4$f)lI|f z7e|tREG~how3$g!LV6XzzlUO+oOMdAeMG99hOz}S+9FGXT?|C!uB!?x_>1t<7p%+M zjN4AVJFS@qgKll;q0G!EoGeo>{_$U%+n(CU<;_<;!|gSxTMOaZdyNS(XXiez>nm$D+ zFrE1OKpOC}27R@GbGgAX8jp1aA#dVuH0`j&``irToPki*?;`Hb0Ya(S6wV)aK!W35u#m;)S_#G6MzcYM?u6mVCkkpC&LPLT~1_rRocrVGY06KIyDE(ri7*Fc=|KB$!w^)of(&65ZRe-rbVcydwLX~ z_I74w_uZu90oe*ULGRbQ{hh%Dex=DJi$ntd@2VOkjzR!EE#I7h=TP z7WPW?g!6a!DR{ZhM0fLrfc-Unz4C^y0l4P+r7U*L#=%>GEZ1X~ z-RZK^1<)@XHObF|3kn@mo3r4GyxkY zXYH9R54pMJX*);tD2HW5*%y11pVJBnpJo8Cl^U!igk{ z)M%LBj%7BKZ4}q$MCdWXk3kn~qPX{*N8ubfILC$|1=lu7i*Y6Tz<)J?K6m(C(+B~k zAyewOzX)3*Riq#Dl1*b)d0bMo#G(Wr}`D3lG@Hic0M&^q|^Y< zu)S2Oj6BaMM0UCNycE*CJeHVsxg$rcKX{^cbuv@4e`+;Pu9JB0sDbe;-bE3+KHgc} zBWs8}>3wYdbqirkSjz|56CCxcVos~Oqt%Sw)NfTnYo%_9sEvF=c zznkeh;Q>b20fd=1@w(&A@ILvTS2$_!NRT(1&s}_uDW_@*c$z!noY(SVz$)5XvpzvX z(f=jUu%1gd!)}9$^0%Ya$8hb-h7!n*wce+Rv9lVrjnKq)&@sQqZ_+ z6>VN+-7!-O)D+vy0!eHtKmlfg^9KQJhebTarC6DMf6>IMk9#*<8iJGiN@4bKpZ#w} zEGp!cVX`Zqhb0`AuTMAV3ichHZADE15q|O>yPCSWCJenMTyE28A87Xd*#Z-_mQB4^ zmlh6y*ZU+9fk*SD)(ID)3m1;TxmKd1?5+D)Z%W$pAZ@(rc3vxmS?l3y}MHnqMl zB%Upg46h6rUVY~+Y2C!BzK(_!2-{woP7nE{ z8)~P+bQ**=^9k@8c$SLy8_3@OBVv5P(+daVmg}Cs^*jqC@Icx$R>ZQ${2>y-fq^D z-6b>nfe{hLI|1`t$>Rh~Lkoq@Drf&S=8)6Wk2-uV&0jCiA3}0bOs7-kaIVnx&&DEw z*MazRxXfDddaD){eZfa|m}ko;p37+k=7$a#zV8PTiW9 z;b}y65;F#mjLjc7z8O>NVxk{e4#3sW>z4ab`g*(+ebhMjc(aTq__Tofy!KTSa^7|E z#QXwdKk-U*>wBDd+u5~1mm|XGSb&(3#{Tf$iHc`GW$l}Qk{)t&vRVWk_qyk)wP6Kh z#a)Ft@ruN`>3KStbR4^Q1;(YFt>7e;*DSda8`3IfBcCzon$s0!j|0o}X%|r+7U~^QydE z#S-1ci(V}^BrZBzm(ixF76iZsi)?>#!Ke-YQIkD_p2v0>9*RCbe-WO zI#3|SV5)uf+IPR4zMS3l2FQGSDR`QkG1@f4;0=`k3>fn$Z%loxOw8bcad$pk*JmOU z|Mt2;EtcE#$+ny?C>ZdJ6y9iXauM5ZLh1T<*DSG=D=gaA8+L1hjid&xp=~CoJfpH# zq=L9xo>2sr0bt9yH-Lx||Bb-ezI|}Z382ATZgz$+8Wkd!6Fg>$kZLUPUpk2c0nfP# zUE>4tOAG-vdcZFzs|BQWv-Nsjx`M<_ICV4Ss1cmVt}jQXY3w+_1zUR7{m&A z$~B?BPBr^cMV(bfClfw{vG~+!Y@*H|2_2<{QbD~%w6KrDErzAA#=3GcXi2`~QJnGs zoz6Xe=bif=LIO8{WT+acigR2u3jWs|d!u*id!X37S;8!oUFJ4rYG48C+4Q*_aX{!F z4eO}{o#~qo2aDkoNZ+2^eV)j)bb0946;d`TH^UAi_KeSS(#hI-lkCj` zxK_%<$@;}ISBTXUmVvM)~HOJxC#=?L(|Lrx;l#-3Rh>}vOc7pa5t*c_E zN4KQv@Rgxc-`s7Zul5q#tbC7gcB<*|lF2kWpI|XO?%HE>Y)>(Ovo;*qW5AH}KQHp@ zTdxa*Y5K>qVKIb2I&T!6-fk0t5K-X7=`ZCF#c+ZCsai1z;9a6+*sf9Bv1E_O%ucCD z>`oqSmu7iN+F{5a^_}9?KxHgpt|%)8Gt?OAo0KY8CNCZ@L+Ha7-IGc_{qdM_oZm%U}7&e z8ryObj<|BAaZ2e6T*4Td!POsS^{w>uLwl!X@8V8FJ~asBl?9H3P%_gq_P+x;D{}2| z?vE7!U`4#|@GypJcxB&84<%JKgioEVb|+Z3*YUMa#CXBc-dde6PJC6&l=&4TIyPk7g_e!Uzy7yh?hqH0V3o68!!s`FJCTdVzVs#Hs`c8 z;|fsHEOw#u^GxQ>D4zzcXM_d1V}Uze=0xo9|?_ zkX3bY{vDfim)ab4F^FGv+-hHmfRyyqz z-i|x^yu<1u%^KcLJV}E!?N;cxcgc3|aBRyOy>LiES`N&2=8Im5-?z@rU%k@n66MAg zt}xwE&9J$KGe;jgdOA3eSDXT=U!4h=32`sfN#jl5Q2X*Y`aWLji#ZgWQxgTdW0?KK zIs6r8wUh%cZOsHFI=5&PHmRCq2S?+d1plw)z&P2gX51;-e#$?K60TCT3N^KG-Fp%A zgwS@4q3h2b5BJA~&K=kOFO5{_jD%H`*zgfp!rl!@7VoVkQK#mrhkAhqd+g3*ljd~- zf0IxaQ_Yf`F^Tob>ro^=s!?%IefspMnEu%6?*auiSzA)fm_=ebebG|J4)bE`nz_3^xyU>4wHg8Oqie6L*Ug-TUjF1uDorZ#I zm0&LUzv@HUT_4aR$aLJ>RHwpKV#()5mrIqfBFRT(qyPp>Co~gf3}7EfNHh@*6v$&| z*dC=yB1)dY#J8%x8P;DYk_#oX1!_W$~S?NioQmBF)>)n!`v zoJ@naeES@pK?CXI5?>kNnt~st>7j}@n^bk%U!L`8fdroqMqegtoC{3Gr?BiTbe{dE zXX3Nok2czDbEn+kFh{ck{8Qy&X)?1&D%H9$fYeVHv&qn{lD0y&9MNHf#$T!p2(dp_ zBFNA$u@El-LNkm#6oJQ9$s^}eHZ&qe;)L)F)>E&{yW+0q{z(;AS+%p+?ns4cXD4Qmr@dpWcc&dmf*f-xE)J&&VWy$I@oaEH69rMbYWa)m|GL7FfM zWMb|++G#Rt`LoJ8pTK`-MgUkam!)qlPUifOv*|wQQ7~v!z zvB94$bbbDgZ_t6`M}<^7ZCQ*?3VYi;(w+0YO7!SlayUsRa~LS|1LcR40`YpxRqSW~ zbhDmn5pcOEuKWPS0}Y=4J>e&FL&`H^9{aEUmL#>0O{iu!L2ZStmpPivB8=M=Uz1f? zERw?zpSW=;@ji%}*9A<##*=NTru= zWQq&mE5;}RONV36O>2+!*yZ<>VG}D8BW3FI(-h1!l|p@lC>|o=KP9^pz9CWM5BPOW zz$Ar~LyP{IJXFdC8iyi{V>?}O@W?CNtdz%;=ysZS^&mKo%-lPvee{XxfSWtWMBSR) zu@$`d@%7XNUQ}wXDtor9Tklb+*)I7*jc;6OL$Q#KzBsG@ucY%|jK--DB}d&HP!O8* zqNx<}ZLr$D_(PIFNgSjg0(e;nVr?9Q4mo1F-CyU{xX~(D!-2;sIcI!!bD9>hB9D^9 z%JMZ%J;9deAG|AWN^FOOhM6_e56+L14a=)0k^A`1SU1n@(%tQq>U^r^I(5e+(?(3+ z{?_fB;a|81Q-MI)#fLt-ONQ3m75mxGx+Z@W36p5wu91xYoPZdP!gn_1JUhT}QUmfG zh-zUEBKm+jX>%#jGmx?OjJ&arYhO+s4Bme`zDrkP0)e-aCjE0hCl@+08Co;$C<6$9 zwh5$M7_7O$!(Mz~qjYQ1$L+86pC5C1HaHt~RZq7a)43NXP{>&uk9v0xTL6bEi)wgp zH*?izUw8?)!28Gq_1~sTo3ag8%F=g~TDG9}wnmDXy(PmP%DmGxlUG8g%g6PvCf`A0 zwK7Dfy7ll?YjWmoN(mg{3C|j$5PMRO0zN3)gW@~OXdh=txgVO)y1)15-ohnalF7@f zKI_{a9-FumPNqv~KHvIIci663L5h*TYZBo_sip!#S^iK*2aXq+`^!JTY=-o{K)yKk9W0T4s^98T^?I7|G@aSQ~ zg$u+AGvPP8dcc_izz7nKB@{BPT6W4f;0nkuQEylLI$Rpv8mo)`C4|f#1WO$<4+Ez| zB^U+;T#t$a&!S=n{#gs;`|vxAXc$!ARgC+4ibmj$G|j>H5i-)d7wCsX;0)i7diy64 zJPv$-ZNn!r(&}`E0KNJXwAb&^-Z#g`0|Vo&sr@2SBb8F6!x2sGWw1n8r7ZQOhOXNH zNg{R4kc98sW+GrP^jp<3_1r)M^;9gV-c9_ZpH_Va3fi$K9>mR*3la(Nk%mFQ|MXO+f}$a_rQm^ydcZ(k;>bXDYr zb>E7>8-E~W`-8+D8yS8fsa{9EXDi`6tYD$ZWvno$IO0!RG~r1|IkM+I83PM9Fuok zQ0U*`w6lW5&rCc3m^+!iWyl=HV7DZvTN&UxJ+`9r4NL_INelM@&D)Y!%QhMRB$P`y z?ntp1#Z6wmNpa74gP$)oH)t}eM024)=Y#Wi%eL!9F$pFO{`%Za0QZ%fcH)NO*s)3s zR4>;Jkq%!3x}2ED5cjZGF`az=WM*h;XwH?<%#g;diCNB@cf(71<;c#O^<@ihZfH)G zibhiOMwVBNFOIV&Tp*G6fhW&URG%_u-;;vcUXnEUZ*Gj0D7K_;WDze1tXQgcBK+IYwa8a`hkZMYzd@#VjZVm9lgYP<@XWW{zjNd-dvUjJq0B}ajWaxiC z@e5;>E%!PyZdD2Wt3uEl`X!^b;EU*5Gi%a^Wd-KE96JgMOyQ@4Y7FSZFr3p$eUc6QcPwV zhayz5IgjL?Qq&jU!&RQB%CA@ClR!C|RINNnjW3p!+Wm^6>pVJg=2~v#x*+v> zz+9YFB{7dKs{L)6rewHbQj<7o=u-ofquVW+ahuWwR>&9U%xd~jmc^tS_h0nKnetq1 zR3T}S;dCA1Y8mB3>8a=kmpSt;88Y)EEan@0n&OMbzfz;Z&il*MvM8^W*B7;Y%DIeG zHMcy9%jfJNn=DRM5=E^I$g=(wqH%eA5R2gT-%R^5^C+Q?!jVD4;+!hIfGrMZ=>9Y5 zPypPm)1Wpzip)VX~)1`>uY~GAlf5t5rd7+ zra)}CHer!JG`+~ zKPV^ojPW%VG+?KY9UdP80%-hAVH;#PZdd4){j9hn?BLKITY!^iS=S5crH7M5b> z8aPiJ>hrp#oXM3L8=Y4zgw#cS{`y9^*0S++c^2~n69j`M^;&`O?%+EYe4_{gxdclP zqdTRb)%iSrzb7#kgnuZz%9oc-Of2>Cudy|S754GpZ3w(y^Bi0PVc8a=nwDCm^{lyRZ9I$fZ25ayT-JOO7E-^5*e#8dkugb{+t^ulsd z&Z%YLs9hCRA;1SCk|9?Y=Cf-eyN9VDfnOfbIM0sNaVHRGf;$)yH&gF~d3eqkj|zSW z%YSPx3NGriHcTzw2i@HjtCni-lRVaoZr^E#MU@Sdr>Sg>+XE74IiEH@A1U9wpn)Gx zmI7Fh+G;X&nVgjwpjn?D&puOuU`l=;RywQ(nlg<$Rl#m^8ukO2^9119$Y-SOKwk?& zpl*uuiJuDr$t2%QC*;w2dPS1OC?ZA%0XD*Kt>oSU9k+kjk7Df$e-CsjkFqHw26Fjz1P1p-{ug80@Y^H!w zGTsGtuwQT}24xf>>Q{4S+2dWuXTm)O-J>%-wa^0VOja9Y5c@>=$7|q^GlD!)(r*2j(-Dz1B3;trN>JGrpQqRTZY(nMQJ( ziKesQ&_DGPXDS%miP~G=rqH-3Tyjij_38jRh0kA{_au3ehf=RvR%`NQWz*oRtECgg z%}zJ77%uuuG}k?oneZ%DMz1kKTB`0=0qlT#k6WV2ElI)UJ3Q!bwf6fM=%;em{q0Bh zEukmmXk0-<>SN9iBYP%MuHU<}0pU*>t}ND!Q+Uw&bV@=i=LmS#Cs=lh4g!PD58(+Zk z0c07AxShndn>=Lij^kol$rRqV^k9DnR;*qvv+fps=X2;Ii;7hBvBqz4aCe`Op2+4f z!*Oqb;}yzn{hV1|qXX|2X~QABf{>`#M^u)nm}r?sB%}o&zz!#PwM+EpB!CgGv%QSz zZZn>u1u$~6vsjm>ZgN;t+Dwk=7tQ4^Py0AaHL!N!#0jQzznT1n@e)y{Ub!7>H5R;d z?(*)R#rGjkumJ-A=JWHyF+|?o$_SvqZi<^vm)C%h#^=?6A(8mqy*U8~oEPB5gigh{ z$8NyD{-*6E@{Y|WtZL=s!-3?qz}Il#@t2SvwfqtBRR><3@En`B2-Waa=av^Klde;j zd@7kja4rya{_~mC4HmMba;kJ;882h0>grC@lI`=F?qSkqkArev2D$6xyr|~O{%BUy z@y?v$V*tohX>*(UORH>(T7R5fTzdc4&}U>BeeKMY@y%)Du2v4lQ5{To=Cn^Fp?uxV zUDC3&@l%C%7TqL7ys94{fAns> z5``ufDU^C&!Q9>Ur~RJWx@||L+@Je6iyc>eH+A9h%d0=68`JUKa{enYvHON((s2m6 z&TFC){SR%PmoMEW#(_?b8?bpYwq=7UX306q8{k~!Z8E}|1+ne2UXh~n)nIQVhF#M! zXhD!|XE?X6UvP*H*HXpB2j+721B1W+{K!Cetx1S!V>utra~!`MonY`EaH z&pMxZOPfm~Z|kKzHD^%j##+K}9{Xm98!N)tt?N~|iQ7S;WzNXBHXG!sq(=^{3dQuS zPw)t=aW;zL1=ZvN@@ATbp=(ajMd*sB#^%MNf*iqkmtHwFFJ3GhiZo zC#pux#LT9MqBr&D>ce=YMv1m?HPaLe&I7uj_YXI8Plfed?luG0$-LHHRBcecloA!A znP(au?a#c;VN2Fi`{|12k;}EmwWi5#wgwyXW{73*CtB&;cpg}N6fWR_o2V&GGxg+f z=;Lfx{W_&B)XcWyZ9<6Ph*af~UDFoEiGLI40b^_m70uGfcy#QJ=i44$TIse91`J=k ziIC{lB|%;J7r}llAD>{3i-Snl5>HoU#WcZxsvnR?_~|Hyll~Yr+c7`}qkh{OueF+J z;f&>IOsS+xd#N-Q{~p9!Ch!B}l{YbwD?(w}498>gUt9S$rA;2BJ9e zuK|F>?Atiq=`7GZSe}Cp8w;3+c^fX2WVWP9q)zy#wwZm3o$m=7X0A-akf5Y$FFghH zjc8I?31}L~T5O?4!r^z@179=3BAW*-2Wd&O@rZJ!zxwSl!?y^-Z~X4Y#qWqH6^YE# zK9e-C*+&+)&t^yU&Q$crF-dX~4-oq93k3xJh-R%N#}r^;X$xxZenm_=Xm(Ir0);4a zVaWy1@IDM!!$r^txkar{i_$`)%a}UFy+ZD4_=9HAm_EQBjQjg7gpVTQPO)K-PV74& z>7P{EBMNdBguF1dYTNva&x{H~Pvs2y5jLwS=yk6}uw_XR8O437AC7wh3)3IX%1MPK zBz4#y_GyLN0VZtzZrv8Pv$1-7Y72!;km{9f7{zd6B*@@r61+~p7HM>ia%O;uu<1)J zO7}pZ+$rFAGOY1eQqJ%@-}#BRMr>vF#zt2Q%hMcr!83UFJ!k}fFeK$#EzKX^dD0~K z70|JX;#o^$SGe%(AdMH15-C1^`~0pGR48?(>xKjco0edolY<+}0({d&u3x#wKu;fA zEG;-j{e7c7+@49>F+6iMgX=llCF1q?J6Ad#FDJQx4Gx^x{gcUp6X+4nB2i`S@@1~_ zW7k?IXxvc;0T*AdiFLKI`ZN!Z`~@3yGo97x4qy;ZZveCO7PA^s_R0_NR~Z&3iCWJ{ zS{0LvOBK%ef>n25XT|(tQO+4s`GzUel0(ZHj?=zqwum9^o1O&fpH2T@Mkyp`Ui6pt za|om1UVY+Pf)#<}Qhb40^)bx@G6yt4`JL5JdaLt+O+-1VX&81}zYJn!T zCa|4dw1MITL*pT^U%qfTicvBml<+80TN}P8Q2s35aO~=~Zvt|XJ{^ddieP@ko!`lh zU&26VUC@Z<-2p8+60FgBnuK7(@i)(Vu|8WcReYD`>fh+w&oNZLtw2&NMXnqpFh&$t zmxd4_bMyoX%tO~r-|?F17ab&6C=z%h7^7`@udp~?l%VYSu|^v$ca3R(=~c~2{;~Fo z$)O6EYU-hr&~x6mD7?NTBO!qlNtIk)D@&eSdX*}9Ci06DDsPvOR~Jj zruXZ#tUOhwBjE}A_#W^3subf}5AJ~cBl+W#wd9&#_41!Qf(rOP&x4HCj47rf9+FgCG_;b+IG6TV)(5WxDr#N~_5 z5Vi)4-I|Zgrq}|#LM$m6^E#%4!rU-xW@jVqX>8tmA=TVW<2AsuV&KGIS{f11)^glE z3(@P*r(f1iiZX)CY%hT!a@4bz7;Zc+J1w5sGD$Gcvj(iXBB_5lhZ>6Z3kd2{qm}^&D6tzNybpUYbJtaxh9F`!27_{jz(RM60#v)>QggI->rI@8%j)m+ z$R`yU(~YuRI}{)!@gj8@m#ZtDk1S=fM#yWsmE5slvHzor<_GMyJfBiO+)I?9t%HUV998Lsc7}AV`Ye|_bMKkAQ& zJcK<*pvMz^fk_C;!Ij%Ygha+&1B~WeoM0cR54(5#bn_PxMp0h^|K1;|Fyd(>IJ8yS zH2EyVP8tFDY&WSOFZeUkq=o1j#O#7tjo974Oc4%avTC=F@th)!wjQnijQZL>X!jiH zae>DDX?Ov^CsQ7)ZR=8BjfiVJsmQt5X9tI-K!M+orwN?pX!&ywQT^Y_ncIGEcvw;T zbu+n&3g674&K0JTk~9Vm2qAXEq1IOA#V=xHkF~37*m^KO3?SA{*$qGsXxRq zI!e5e4e{B6DYL2&+1EoUa_qFE=xLA27Wnk<5Es!Dia9kh+A&VWhEmE`;h{yAY80!* z_1dgQ&cf#gbn55ntks%4jvmHYf2IcwWSE!dN;Bv(m4m9FwJkP36p$4iivUaKT@joy zjPMXp9n>r>Jb%ZKWeXM1uJ_3e_+4lBQZT2kO#%l%tc_8*mEP3|gny&!(@_!2@*U#F zDo+FvXTKWd!K^X1GKsbn z+EtbrQRF(*QkQx3es|W&F#B zK@fsKBSo<~o!V7pJhR!}g=e)WB1BQCH!{_WY%L64tiGyv5BL6nJ|zB^?r01(+#0SP z$rgR+;o#lu9b_^sr%#%K4^PYjWeiXvY^#hjh>HIH8`(QK!J!|?2X!O(%N?Tb*ZWt; z53Q###OhuBfN%C}>SiwY{P-<0#Z6hLUQEi2hrd6wFA7sE28w9_Xtqdn%dBZ}4uOuM zNf;!(T?Y(Y_!na%OJL2hx|O!wv)*1roL!qioN4t$iurH)N6M=vJ9^D9ra0bXy?Tkb zFse!xpC5qO58_jC-7X&dHwFV(YXM3_m`4s$E!l;^Q?L@)1*y5y-Sl()p@(23hr8&r8XJ1|4zh1E6+_z7 zWkWdj)=9w`!1~5E;qtR{AXOIy7=S@KH{{LEw+NdRmjYK$nB_?4Zud% zjc3fx@6A~*e%YEI^1sU>TEYn}BzxHEqPVhA%+6qS5z&6| zaOrGvlfE+R7$nC;8r0SegTBpXQsc6GRjJ z7OfyJ7rx-R3iFQ3xuF>~6c@UYtw{NkyvT;yljsI2EHt* znBiAovJk(X?XPkTnToWn;#zMhOMX>XnYvdwOTvYz~@Iq%U29 z*Hs2|Dz-K>l=FkkTtg)fp8}Vnxs_x~`eR7FKBLG7B2iHzmo#-Gm4{UtfCzTJfI^3luE=;#&Mv?U1MJ5GFHU`m^<6O46mUc+V{$PwssxN z1N|Yh9xYtZ%1d4mE@G-WFd7jt4_z-BrIiQ+q@sHe^veJ-`rLoI9J1oa5{E>hlToS7 z6=d@_F4;7ZICKTD!AuZQ-!F>?0mj=`wVP66)1ktcTEYrzs}SUZ60PjVsY`_|lc{2c zC@h+9P`HWcOkR$()mXOJZ@Tkh$^IFVvgG3dV7<_ExwhfRV}uY9e&s7FzC?te4Ug+3 zti4p=T|DAccz=u1;-p%ZjcZMU3lWam)Z5vQJJlY_kSLq$8lui`cnqv{4gfZc5$p9# zzvw-QaBB(!4oqYR4M|P2lbr)daq*(>v~s6=lF91(DZ0r-ehn+`nS4|mam`%I={9>| z{9AkhXHt#vSOGZfQS_$^nGYASV#arDc&E)%A8p;wbgPCBoanM}o;0v;5I!VY$T=A46In;ryPG|C1tMA9#l&tFIbPdSw zIUtK9mLhhH-BJ2NKD)`|K7tkwu}n|A$eUjzoL}K znS<3$MRm@h4eVd*_Dr)zBslEJMWK2Ze0WWdre@jLtO?87k~`75Az-OQhLgpV{3KHo zw*^e6%&+%{?;<}6+x}@5qe!%CtRnA8Z>=Rh15VAivrhtv&pvj+sOu++er&G#3ZRa(EhS@e=HTlub2kZGyhr}k?$=J zVB53YjR?XxW@6&mUr!)t4ZP9vlS?@7vmBp^(0vDU7q9LcC6K`PP}ZCPiTtY#eR+~z z+dJ}E_U$^Gq3TlbmeeWQs$8<$9njj5DC5;ZA+Wt@2)r7EKD|@XBhsxMzVFMi{oTZR z22j817BY%xoyVtwrl=GW62F<6pLFO_%$&Mw-6y69sowxThzqe)%J>BHHwEaEngVd6 zUAoX_1ITPpHK0?$j9^h7mh$tye0pc4Lx+MH9@^Q74WMV=K}K>j{x{IV)8T~ht?pAE zLZ$Xah1#-H4MJ8vLZ?U9obcm84&g-zkLW3r(oGA}h|4ah^j;2Auq z;0P6!1DuncuA-nb{W$R{J0}es_Mu2JTcSMJf-F1J0YZw0vNiWrLr%92U7&Xet(A5Y zlpRp+ia^mGcoz#T^{<%~5(9_;U*>b zynAes1v|xZrlkEu4Ht!1kBrSZ80Q;EU`i))s7dFe5j$NK`O2zk-a>@B{?NHiX6`bx z=_iby(#G6_kY-1b_6c@6w!Pln-rXSJKqOcgSQr^Ly5IJ{(0_taH~0u!_OMaxf4SGN z(H+5I$iauR;$vUz^(NDK3KDpS{pnQ)L*c=}{`;xRveWx*{r-LaeUSg((EkYv_x|^= z{}cP)x&ICR-^=}mctyT>P4vzU!575?0e&}eVHu%n0lfe@Nnj9U00;;O0QF`~_5bwz zZ-e^XaddLGGIpeKv$nd@luX=ULF~S%k)u!U;zulU7r&E&-IlO+v9`6i%2I@flu!!< zfd&x$`}1zyDHcb_j6Fr9Ts8{c5oF`U+U@fXu>Z!#Ykci69zxvR9&c#DoryrWUs1#A zra-snGw3=W5AXXq#uP((l;cP|IZ=S13^r;MQi|qq9g+RyWlpBdfjjdq0olcAe8{Ca zZAO*xgVVtgkvz5hc<1J2;cNcZ=j}#nA&yYi;U9d$KBmENN~3Vch}$^2=49@ zBsh=Us`KtS=iPVTyR)@bJ6+q~cK6P9O?CIqkQ>#3%g*hIO}6k}7w2=%6QSaWf7js5 zH0-ACM^j>;KGUzs2+YZLYL*d@Ksa*wUAQ@SL6fj~2~3Nyf!L^=%i1b4#bbL10>^jqG=y z#Sw(A0DBRH>7_q=xtU|-kYvrTEtWm(Lj_y23S@fq!*BsO5GK-8U7BK_V`Sg??w>Do zTYSeXznecW=Klex^M$Hfg8Yv-AXU0mYq_#!EN@c+>Fbv%yQ2mye)@Udjbpoq}W!*CpgQ zXRR$qVib7UrPAjO{g7RsuHq3juWTb^3U8WN*4&c>H8vjwb})%nrNZ0pPD~3_{Lqz) z)}0??>>Uv_9+Z9ogIe;{9z((YDFQ~#0P8Oh~>M+iW#B&cL1H z(na#6F|*G@WZz{NtAsm(Tgfebf*AVhG2sQ%Fu@;y46gGGEH2j2-II6$wHA4N;*FV$ zO&P^3nFs|O<>z_gGFP*?iu@ZN+u~Ox_A$u<+~}PjQPTBlty*I>RHY$Vuos&pnvsa8 z-&zPAH;mVN6nZ~qUHwU-H;x;HLg@xYFohqG5fpnwr z6;$owfHO1b5{}xHHYTrYGsKq+BhIkHlL3^vHYWCBV%-x}=qQ3UShMxZap&aC8mGTP zm!#KqYTsdLmm)ek!BBE=x8|1nO2jaHj`Cg=?)uea&f|(NWUwY zj|#dlk8LG-=cIDr7o3Th7whkkiCU>11-<5)*egZ*s}oa&qOVcxyLtap}voq)G=zjvuqRCKKDv{rw7q@qSUpnZz#WJ*Ou-I zT;9&Y(1A=2Vuy`A&KG%h{DRt&P?sd>y}LyHuw>-tNDOtAJ(XW3 zcX>nFqc}oY7m7abU%39b-1x#jiMI&khe|W!TIjj+txIA07_-QB_bVd6zFgnXNZwT< z1~or>gYoeyL|81k?UV48#Od?2$(Pf{u*p7n^y!z!Z_Rfcvzk{-m(X0aHVuL_-3Ghq z`AZ3>ew^{LA8q@Sr@yB6$*bbbwA-^8y-WSRZe&v+sQ z@`#|f>t1BaJ&{ph2G>pltT*~6daDk(&_!=~I_NvwTiXd+=mm=o z2G5G&t@K1|`ZK(4O^}d>FI3xkF7*a{GF<~2lYEFk^kex#oa&gq-RnZHKQmn}0mxs> zpl#p*rZo6PJBJma2ps4psFoMnI^W6_IjOU7m8QA zyNc-IPrwblHnxM6XNt3aR;=xnN^*cM(szMh_rq{?C<-0mV4ug8wxI6dI&K_3;LMqC z#JRIrHfTJrk!9A`&KF8{N#jla>dfhu(Fr_va(&n$J6K7U=Z=rU$xcze3eX%~ezl~p zI&#%VFet@S{j^_1$}) z?Mz}D4PAm%pq$_)KD@lVc-#sq$-=?UskyVrAOHY@900)oJ_AE~oq-wKf}KpkPXCyK z@mo1AaWt%*Rd(%M^Bq>IXZA8n2uAHFKoIUQmW9>-(*=2m=*Dk;|z_Z9`06CN^k(XnUeiC6ywX$OV7w=s9Fo{H^F*tGtG)yU;QXa$xm^%hnNl?k+o2BH30Nr~c zc+crw|BN;;|EcGkV2N#gr@ zBykw&4CxkP99UPn@AzhrlK-7SN- zZz3(q5yUA+vnGdeFvmaOtJSXeM9$>h^{-yu@Xmufk*JG2+9c4J34fhWJ=(vN9@~78 z8OSqM?%0+#6}8ZrAP<51!roL*bmJIpa>Wn~ley?j0yVF!p6><>(&{2o$##dh6m@?3 zq#nA-UOfSSu(U{v+G1)FaAkq)=sz-;F2R@4QT`-^mFuHxVQw%xxI8((N>q(Mj|8hP z-=yNmgjwNjIEIz9EajTdW5Kdrg=sxs1!<=u_TC4>&S;d~eIUz1PIA(m-wp|dZJjvO zwmGIVo=vsz!xiSSAQDp)aom!D4|V%e{Uj5|GNlt8!jCS7dN1}{!lOi>r=ltfMM?8n zsy!kTyYD#Ya`Nr&u%Ti}0j2aO`)3G!Lrg;wzNI4tcx3CJARz1|CQG&4$8l_W)*uEJ zdPCjr1bvQDUkwIt`l1WmMKTX+3r@e)RhTQZC|DvPQbgGqM%L|hi6#Rbf8|g0@5UPq z6C3G)(*cnE8U3|WDILaAxHWru;?8MKF1gZZte^ab$!swl*w@xot%`6MX!!56KY{V8 zaEzckPG-cT6guhm6~`Zub^%WdoG?!Zcd4XYLcY)P!oIT|1u3YL23|Uo)48AS+PpBX ze%N#d7M7uUeQmZ~+{*&>+*%+j-wC~Lk$uoW>af&t>Ihnthk^@ob(qmvs3-i2gPKvp z=F-vUZ*FrV`6-jaZw@;EUxkhkEadJT2zgKz4zwS>?C^s*1tFW$LHm#7$WL>%aWN+p{};sYstvHs8%5@Ma3v z?yzjAlx*{CNY_r=E6)_}_q&TUDm8Rs$2BRqEq-jskegCL-{8yFX6!AWcCRjXW;DIl zVdiK^+1sO)Pa!a{w$X#?yooF?UlV9PW}L7{_A^(0^eQDXzWWdu$6w8Y7CAOdT1|TK zv_z<7-pT>9#y1TyCq*Z9bcN@s=+k4Z3%}$eYC9HQ+(jvm}q7Q9RD?( zJMMw%+<}BzpD{nZNNcMwd%3&)us#-rgtK70b`~vKe8lZ^pJ_LkB<#5}vEcEX;Z6H! ze6Fq;kUwMR%(=m`MLqR)3-K%lPl%+a?8}3 zHnrS&1Nunw)|O<0#dyeygg6EM_`|q?(UF3J)c8paA%PIkm%5eiFg3R+!zVAe#Sw|_ zmI+xnck>C9Hn$930hvO*A}z(oZ#RQt6l;R^E2NI%A$%s=@bma$Wm(X@oX~}0@y9dB z8a0E0P0w+tLL9w*L)LjFm-7S~(N@bHUn>ZsG3K_MlzxfNz}F{|Bs~gJ6pc!CE9yNIJg(agoPT5 z;~W;7v<`ja&>zKkXeuyBL2;QBs|cdt9;kdkCgK;sIhp?XDPN6^BAzwpv@{h-JT~Ft zeH^4zpLd@7H+aK9j%T`f#&rQOlACCVirD0PGY^Vw%A4r~pkhD>hA*SIH7uZeG0d#h zMb993z$0ea|0h0*vO-y|)*`JNVXsY#oC;KrQJo2DCg^*q)Jl*x5~n-TcdBiH8s)%` z7YQ3QlAS7<0S*_m@CYUmp(MC&Pp~uST2^;HMqFG)X;j#J#1Kd&To!a~^_Va=fH$`+ z;nGrA=hbA%gU1!|_h7|h2v-2|n#j^b;&j{&K83F-IEQ5EY6>*@(w;&9_&v6q7g1Ns_jl{tSTT6I}S0 z1$#j6?6FC34IgO1Vx9ijAPPzu7NHMUxSli|EgwyYN}?K2$Zk^%)>5)8Kzx40DnPX9 z{~U|}EZD0i60r<`^A^&|5Mue<1azsmZj)t;+2cm6w6lRHAblW7KYw9fMA0T)jf=bSBh91L~lcf zDP%N~fS`$g6Gf#O;_^A=9kgntP&gKzOkL+&YFvAM!1NkgD7wX!$En+5*7{?34KQQ# z1$66=Lt4`UxBgL&%JTs=Sg4l2Cg5u~@ND2lMhwZ=Qve+u z>lf|xO{tV#8R7CSE>I2X2y5M^tGmOByckaCLSaxEEzt@tv%f;EVrGmdXhmBAfohC~ zPtJHu^b=?&bSW`h)y-P8g&gjzNhCM7GeB%k5{nEI8w%ez0*suQVH1msBTR-4rQ<3E z73GzKWK!Z=Xhw1sGr=d5UmliJJR!0`eRA9}fME&T_4%-4ZsZi2!00+QKk4@5(v1_cp$y}m{5#@xg<&xxscG5+HXhNG0@5G*DtW9 zs}doUeUv0BhOCHq!5dv{xHl(bMb1#t2nj7-SU}XiLC(*8@e+joka)8I@UN#%rg=__3 zpmGwEmb5PR`D?60YtSl>`sm@v4DA*$}>el(?g#JkDVDXS_D)$6WC4UO7v=o1uUT8G%D4bZ_5@98TsE1CD90tPZ3 zB}>QOlv-aBF%vFTryx`4jBV=Z!l<{R14ddrOmkQ=bacck)3>KVhPFBj&fHPr4$MCj z2iEX)341e$h2FJ{cD~FwPc1}I{IV=*F24Qga6RQ+`2d^JPiY;nBfQ)Qfgn8OyUDNH zUO~}-*h>wY2G_MJBEW4g)=6weX0UN2BXY$mf{h`TwFnAhx+CkuMt__IT_T|Shb~o8 zL0&QrSoZ|!A4wG1hxVx-XgeH$L@q4ux_dD^YTOVp_Kv>xskKg?LdV1t5ScEPLnF!&S!lhIVU zRsIKKCo8~Q^5A{-P$#8SZL|Cgd^!x)r~AluoNBmrS3^6~$6u7CW~5d}v-p^B*6)(P zQ0+#T8=X$qSC=j5O%Jo0Vrv^W?1M4AT@I<)K5 z)o&jviFp-)ZD$By@62LrwU!+$;zKz_N!F7sjfPPSYh#7yRFlf5MSm?QOpAW+F%5PK zEUF|M`QkBEU5I*0TEtMZAe?5Q9E#)AlEO?b=U+)z9AV~A|P~v6E06oQ%+#5ZBQ$TuFHC(v8zD{&7SET zRrKsK`aOEzGc9&F{rWur{9_QnLS4YgR3r<(_&X@cv07*(kD%kO;YGyD~9P z97JX0!H9~{$fsy4*pjcs3hATau7Je{X*9EPoc;l$YQq59T_DR0iS}z66-7o2s)|_~ z0kYk%%9V4=@yc~>Ud>^zVO9)n5|pw`?z7_FQvMVelC@DKcc9))MUF2UOayPpv=oq{<&PUP_?}FXF#tX8TDFjT*gToI#^0=59o@Q zYOs$*&F{z&?M3j2(DZ47VoA~Ys<@~2t2=*p#kz?(`Qx%AlH)Er$DXQehJ(=!PeTi+ zHaTCRYP5PyJm+oXu!b0Ft-{;Q(VxdulFKt@UW^h5te+&8+eUG~?{de+8KR=KW}Pyv;ipAhz$amcx$d&rMh?Jhdv7cG1rSo+H$g? zEt;ap#n}f@AM%>EApNDPL*#l(jS$fuw{AX)oxPKQ?@~&0#64lhTay z9|?$E2xC$-s8mJ!{pe#_M>K`BgyP3ylay5@yD3-ZQ}_eBuvN8rye_}r2|Y=oV_q+C z1!w9SXMvog6Hv@*DmEV*x#LJTAThFb`bmROMEPPd(urt}D+5a(xddt~x|ue9AcxLF zuchclcYap2Jj2fdl2lm}HOmqvtCo6%YMk7^fsW&Q?_hz(iRWn-{iZ0HgF{k~#%++C z_s|-x*`&jGNZYsX@yLtTV^iTRGcH;qC;0ssDrqI2SF3s#(j=nBV%Kn<3L-3)vN|`7VUG&PtaHUEMOo5mGFW?;ziiWRpWE+h@-NIf?+;q#pyk?2VsxG@#g6+cbt&OHJ+q0yS_t79y{g z>3ke*deuGE7uPFa{14Mj#wwj!4Zha8w<(k++sT0s&tHstXN-SVD4cF=`1en%MU%SA z#SRVdxcj-b1AUP%2Fm+B9b93odgm!ai$GY?nPi+l#>TgeTbZY z@6KrsKAKH7h!>dkYNh)~>OVxOqkEi6D#}r@E~;^oP9nP6VrRcvlV0}e*9BI}ZHlKS zPYZ2`2PF4}GIMr%9rF;L0n&1vdWYk2uv%vR#somND|YD3W4mH;Zd`~p>1>>9mcoEZ zs;Kj&V)(c1!7hDTJx|(<6)lStfV*yo!&qzKuA9!?E_>}v?2ZdX^biLgNdiLO2?i8l zT7KKY#m`@Aht;5%f({9po^(6JhOXNn#sPks;_VddEEF~LF$Dq}}4P`|^b23Qh>&)5LKNXWkno8r8NP36Va zgqfrjB$#bLU`sPo$A1J+%RhC4d&!VP&b%YSj#2W0t@g8%wD&$U~ODlv@ zboRO-F(gCE6z7Fws>3O(FlEA7>t^x@CHNlglsHA=!mcjh*u2rD0bA@qe}4zcr_(eD zUf(4DOkP;#q@7N<9l-MTgtKosfCG0}m*jrIPhmD$f2!1Iv!c=+eiC0@6H_t4d%{qCT14hfI8HUaQcA4d=j9 zg~x}(2ZP`CPLvHrVuAnwsG)z`8v+s=@M?T`z&}a_^!r(nXO}k(9NO16@OPa+#>S@Brmu#w{r7tP zRU**8K>BTCI}q5^`ah5;^7`9<&792%nf|k*NH1z(?QG&mFKTVz zY$9x8WM^!`%M0V=>}XqLH0h%hMNemKflj7fP;C&FNxESTg(ZyfsEo;i70}a=KLh;*s%ep?SZj z=lAn|l_&c%1>9m4jvXa03 zvNXS?AoCOS@8hkm&zrlC*Vj^pgN{VbVmR3V#$<>Obo%Ve_};bCw=*hFDQphiWhm|K z-b^L#`9#U)CrE+%cO4a?bfOvk>5{Obb+a$$JPV+U_)lrI?vDAEb{cH&@=s~jGw$)z zT)!YSjQy3J7ps|;?G{zg)8HbGL|3q!t%2E3ou7vs$otvQps2hX*3*3Kc70 zWRbbizh`L&9A;haZ=1oUjmCnP4J*$jTL}41xR%36eMl$$9Ti`y&y*3PKi}c|$t##-meI zjH#%n$Se|v!M#SqVse_HVBf+0c!(;h5A^M@hk~KAPCH|zI+N15Z?#3WvV2m|#!n+h zugz)HPM8v;)6&*6+oqnE{=G`Vb+dx0tO*py+dGo0pV~Iq` zQ4Exo zpAaVVuWJf0^vqJc!OS%jX&uT&23lPopqDuTD6lAx1P!Z5o`a<}9_A-#iu!V>4~Fqj z|26#k^Rcc_T3d^sZJ^N7hfT+Au3#^-A~Fh~7x`n~AVh#=C@wgP!rZIFvYg|j&e|SD zT$X`xN>qnIGYBNXb01ygmZsSYhF@onk#iDzLb8gFR3X4aZ4!zJ6mJZu5sA)MD>`is z)}MI?Pb}w*EWuo>WhM7O@mEJhOGH;%aFg4gokV&7c=wK=D!ukb8otaD$y>|4OJf)h z9a}z%#XBGf!$0r%J{2o|Ob{&YVl4!Xu{GXn)qc5V^)T+PpJMfX4@s+>qRysa(ij zMF&1GECY2aC7PJfUu$x!OyHKH#r6a*kiu1T5yE6G|UO$x1?nq3<(jhPwOa;sIO za^3@!PuYGWF>V^$oNu21r{O^oY$ggU+=&9xXt7vX;8}eS$_qwMLWoH7T*R-Z8yPn(JM-7Fx z`dCGE`ZUmR^eEqjhxvDsYI&-EwOB46e-Op)dgf>5wU(&VsXh4^Y|*;fDMIe-O2sH$ zGpo{l?oc8zAMp!TqK7XmV-><5LBtF#TuZ2M@Nc3cfobsN;1~=x3?jV~iK@%g76kU# zgBDKK#Sq-eI?8oLGKhlmS+T0R(37jOF7o(Wox9ZCdM0HAnbXPe?>WY$E5~=F%zUhT z5eiMR3Lm0Ot$TmJ5jbRo&%HQgS`XAvuu%|c+Tv}1@=|(6*cmLLW%WKPgv=AhUI%K# zm)SqVbqpPf_WA!=RtSB;dK6qeUoebdKfzHS#R#*Egha+``K;~hqpPLNj&gq<2*7zV zapQtPvbh(p5q}p95P8bh8jI4f39SlYK(`IJ;u`NbY`L&qA91&0bQvE>6e`#@; zteGBlqonFl3vL-dsp4_=W(AIli6Osx1)UqdY}h< zyLS?e?mVfz*HkqNsGPKNa8jTJ6)wV^qET+M;g7`?6lqG4R@$)XZMw-<8U1^kJvu?- zKey^9%VSg@LrG+}otc}+SU-PGg>|;h2#ehw;ax0{&_w6KMWjDywe(fpWXZ?68uxY1 zrh*^?#kMOQDXUy?wO=)eL%I_zQIjH?Wz$}s+A;DoG|U2ny`Ol9amc1iV#$(wc6TjI zNMDGA9cIrKhqWD^G%B;}iP6N3-!p95sdS&1Kr^H1x7Sg!)Ka-WJ;zjl`zyoYKkR%9 z7nxziJhFsuKXcQ$-Wzc?|65stLhg$m)_v$msb>`qiQ)O0O`)kGBAQk^FPbN-=J(JM zF#WnYaY(xFHWzq^L$%<>Zn-+;xc&F;KxnS^&prYI^GLqhgFsmp1RkWpVn~=33}oNl ze(((Q5qMleeljY6yR_JmBR+Ov1di%+6B_IbF&oh1 zmV`2MP!GOD23%4!^J2sMX7?-Nb>4%jE4%IITEa76x!KP-{4Yd`EsstMzIaAm{U-q2 zMO6^W)o)xcWkqa5Czh739IX#?p`jRgrr?@Uh#Kr@z!WQp>gUzPM#TsG<=k5WF0oS- z{1b+#8;C|J;r{$g>ed?DG5l0)CgmWIQSk4tLaw#CFmH6^_y_jCxuQlRJhd;~o0CsI z7cXj4+s~VtUZ3Z6C=Qvh^sYZec72gGNr|fREkVOJ?_*qTU`mDE2tEtQNPh9Y*14FpdjN!!1Y!fjzy1J> zVA#hNK%g_LYQ5ol=vMAJX8xi;nSb_Vv-5z&*XvQfC=lYUp7R68z2fCfc}M&x>8`(E zItU(xMt0D_P2T{;IMa{qd&+PXvNSRqMvJ!%t39*;c`8jjJgy>Rnn;nq_C}W#UVYEp zt+M_J^v|CzFJHK|+9|lLCNbuDxw2o7i9xm|7!zCL|D8Mjv-)pTf%$Jj`R{^>ft}&M z$Ny`S<$nYj*8isos=$HDt{edvUE)TXUrnJs{jujE^h44tCVfL{%g zK-wLQq47RRJzflw-begFRG;ZnfT=-0B_;ZH;yCE1odSAHL?Z1!S^3AYV-gD+EJ5CJ zm_>qDNM`1;>V*~>(@9At35C<~D07?=7^@J)hTCuuMrTb@IVRUE0zWkSS>F7#ajj5M z2K@JlaHgB2Bj`0UH?Z~MVRIziK}LdcblDZyh<%$9o2=aT$aQ=)SSN`t$PY;Ro{N#f zT-)TzG8pl_NnIcBj)wSsRL66CMpDd&D;Qhom4sVD)xm;Sa0xpa31A(1DnfK`he`yK z2pqO5q754EU=Txyw?F4DMz;dX8u;%8{_Jkh82PLOMt2QZ`Y|6a3AYVI8W0;QZfr!V z^`ZaZt2}iyfPB#SG;2<(0UWwnNL8;?LFQC zTNWj2qg5_5ae>t8la|&g%Q2KAg@5o!5$u}PDn}xMA!@3DeKGQ4Fbsh=2-SFRHGcZE z4NBNi|*eV!Fd!`V}2%mtt8Tg$+qyXugM_r5C<_r5uF|#9% zmHZoY@KuJ-uW0f&U7^|3uatxJ$9lvpm^!E$gZ&%Ku+S&|iCsH0AB1uh9IE6cwlPW8 zcJg>9-(ca9nEs#mMm51ybjH;^fudQ%9G!5f1qK3-@G7wIV?Lg6{jz5Hq$4oSCANOz z6wSWvj}0H|MhTJD=p-rKs8?ucJkpD(tNsh}vY7hsc4JShK!PAjK%mDZHsIU^E7{=P}#fgCQ#wat19BS34Lw%d)Q%5q^Gu+?AbA>V4LpC4$r&@G%**mtEr zmWvjU&>6~{GRK$h6gFrF%itZjqM(QQon)63A@4H{;0!Hjk!3#i9BC^#dMZXb{Bgn} zMa!MYFbJsiDBd{;US7#TwJvTF@ds-#-=Y zrh=|5x9c}BBP38Qeor-`I(1te9H$qshRVqw=Lq#m)lH%#5hYvZUAT~_3J`qCCkffi zJ_SmMx((VX4<+<#_w0(yIyKQ-078cRW@Dv%+gqJFEO{&xKL!)WP&I@`IR#lBkcKvt zKbi(vtq?J`Y4tLdz-GhujkIQw_g}v)bbQooQqA_CKVOGc&2w}$Xdd<+6wd^1&p_bG z4{v0k{!_M^8chW&yEnJ5OO0 z6ncK((%@4|*ZRTD0`}=TJsi2xRVL7?zaW`l7w@y^y+9C!TT0V_{+CXc6>Q2&!eVBkml8fQqx+m~wK0=jh}u)onLSo$b%B2%E|? ztED%WCc$)bMmf?lXF=c!WfZ^F^b|v5kZ~}P3GVW#&J&ZgYAUxH9AQ2p{aUy-S_;;I z2YUv72S@ew$0xgf9&trd8EYP;bel$M3biw0jEe!a{!}Vhm%w`P)=CIyD_?E|!Ux8h za0SykMZb@lOuSsW(zHI=NSS#0Pbzg*j-}jcsQWE$J!jBUJZH2@q)NdUmPo9uUMX1SZMs(I5nw$CD+PRvF{LN%lgCTn#zVyl0jILc$|yF4KTU5SgSMLo^3Nz?!8Va zLnG%zS1c#M8VS_tw56ijrJ?)AWt2v^Ml%|(hXv|lx#F6v329c*d_SA9g&O5g{05q! z5;ASM%ErO1Fs^PZxlysuyL$5OyykQ zx%!J&h2}+NnkU{%>Uus&`983Y{Vtn_37KshrK3y)uY_N&V04>YecQCQkl`m?cwD^QRpPwzJlzlt_y91Ulkog*>n_=?ZkuZ%*;l+0UWuO>sDQ7@e z?1z=LJT*9yKd*98$dqsk0P=y4AhLLcrPEBg)F=enw1+_ma)MbW!|*LHuTW(+cU7pljIj4p$cVC!0xazgT;Z}4 zp0Pd8M5^M@0>P(KzHW0wPLaV?9c!y1SMFX*~c(+hDPRLeYkDV?z+Y} z>QrO zGIA0A-i?Zs)5~1xI;O^=j{Y5NgVR-hym$SXi>Ne~hZ~?DTfsPKc`=f6?nGuKO7cuh zq%E>@Y;-N@;8g~$S{VngX4;=|yykB<A|XqP5{&dZ^5Nh+Gh**Yd$9Kyc$QdI#g=E=njidH z7g=4R7sY{O7aR~s9V4k4r_XYFsu8p-lvW8k zGTqJ$y&mLdN@ru*1v@+vr8yko!flK~j>d@NO=lIgj_(3%3GkO3U(N-qPifk_Zh2Nz zeN!h-8s4_zOI?@50?)RmLjz?^1b)|V!7vnbpbGYfXWov%q?9sm9=H7gD9Shp)7@$e zXC|Hs3Hi=BY`aAkx@>Iovy+-^({G0^%g5JxE&~>p$J+upS@4t6 z-0sTyN6MHBIrDbnJ(A~5HsK#brMeB}T4$MY(i<8;IK@+WBAHYA>p9P&Y#TYxv0TOV zf>)CBZ(sq1gXW~B8|?vGu2<3&q8=NsJfBj1t@kC-+iXG2Dz@L+Fa&1D?w8-%?DK<6 zT1{qVKY?;^;Cy*Mh?dQlk^dKu{}+XEBpWPIQ#$bILH5k$4|7R;*Q$?^uE>I zbMSK=N+kmc`O|KNZKInLhKbm2fQ=LJzb5wO8S;!HSA=z$xsmr90(M$S6^&Qa^m^8J zHnM*{U-OjQE@yM_WP2FS7&4V`Fa9$c=>C3@EAv}IxxZWU>)qkq74*ZGUGT*GdU#vP z%R4o`zBnS_)8l07cv#$+(B@qGM<;!k+V`px3_JAP7T4F!!@KKSSsIOBdOfCF+RS`1 z!tr^Izckjj3K8SVF<#+vjM4QBng-HWH!5on+BZM;xf&UbXx7z8n$DBHF|Bj|oQl)k z5An4EzV)ztVRCQV{>yx??eDcKdteA*wzy*8d3V7Pv=`)6x)EJe$JQM~utaK))jA); zy!w>1>ulc;MzQ#nP%2XeK&XYlzAyk*NaYvmqTn@C=Y1u1norTvRrY0pW75Ii8(LO- z_X*+P+0Iu>#|d{9iY+c4$kibeeWI)qr*EK?O-CWax>z9$OJ_B{r|x!V{gX=YbZL#8 ztjRdZBB771ua$K1$FtoF9Wn|kul11|7DCTQtR{l{;?<=?RTX$PL3qG(+K$L&0oDQ% zP}nz4O5NF_rjYdlw=y1u4W-|$lVmTWgaFPXVy;i??xsiZZI8fGJx0p7sm=@T<1X-#LftT6Hgzkpl#kH}GLE~*-MNNw?JIauh-=k{JiaM$) zU=DA!3K>Kn#Z)yh+$=U+I5kRJcS;XlO@8%J*$|K48jvz{PDlcIyh|a<8pL-;N{Lyd zb0oy(8#C>8q5`G5LHwuclkjQBgB$R1t3a9r6)wCasgNMVC~goY2f(KO8`Dgu#k`X# zGXMIo@q_06B_8$sW~9p^`r-i!#mqr#EVKTQMBR^xK4BxGM7mN!Xt>l&^&EW(%|y-D zK#!KSm9D0Y42^&oU_6Kc>4t_me29XnnGwL>9nyYYbi=exe57hmgH(5X+k?kMh9X!L zD5W6TY2pQ8!USy*YEormIWE4DiEO*im$})f5znojkoOWe>XU>qz5C`GU1WWjwW)yw z*VF3-V@f@m!9r=j?;^ptxKm3HFJ$gh(R25y$U^z4$Q3{4EG-NDXD7UO#koDi%AvK{ z*jwBO%nk(jU#k=zsJ&Fz{-L5yI{La%Er}b*p``B>IdRjUk@B6yd*mU{-B+cSCuMii z#8edb)QNk;6+WJRAtOc+mk@8g?A92d$lts$yeX815kKj>r>@}*@-;#DLxTBox z?iiqKo%WD|nZay6e=RKKeb=nQFc~@Ah(Dt=p{Dxv_X!|vT^{>nKM)G#wCu$Ks2?X8 z*Vzux*Kc$W`1x3WZh@E8GL!YKK5Fo`0JYZYC+<3{RUm>h8cre!Q(txM&&antJ1cH8hL8EkQ;{%-6mxGs}&U$d^y>yA9r zS?j3%aW|Z}0=AyYzk}97f;9F3tU7u+1ucgYUPlxYLfc67~m_ zY%7qVfQBARPdZ$5S1EfF^p)E2$WfuYqdnzE3;EMNUKkl7teU zp~PqlDK|Ve*L5=5UGbWYG@wS;GX8#4!*=UEhJYvNS0`Z&Pq)jsY?ZV5?b8y8 zuna^}IZVv5;0@ow>>wIl9W%nDASU?Z^U|ZAmM~L&Hb_vVD+J@B@{zs1{zdaUC5*Mt zXo7e2$bjfgYzIQHN&tPi{Rd4TbaJTZe)ResjQw2n9sC~VmW2l<{jV?%b8zzKR~~=x zt<)u+Z&t`!Jv#Djb-JViEh3?^+;K$hOV-y=$YCSk=4xnc)rjJ3(QK~}Zwm1NMGrH z-@T7y-2)K#D|^)KJDstjs{C7n2DRog!Hz9}dIT6ErkBszksH1$aaUHWa!jEV^K}Vx zDM|mVs0<9si{>;e z|NdKi^&M%}eZv%l{VWLDaf2EZW3=&4pmfWjM_bxU0+!y3?+p0+##cG3BbJW}TZ(~x zTX$ERnIKoBQISOZ%|E53)hB(XhX^YX_d`*n@8Jhu#?dJ_)SIMoTD4@{ChVE4 z&R-=0`sT}S*-Sbe(yB7|t6V23o9IjJNzl0XeRc@<*DHPf!^-8wdxbqYub(7T!%x;m zc`~E52AkrG7f=3X1E$ky@|I|hl5&F~PcS=C$Eq)X*ePVx5f;Q5TRDgML_?#_|2*V~ zNkQ49Yx!ZlL|kncZnh!`Npj1aawUYTP2@wk{^KBC&qX9)>4E4hz2-WMqs{CeSP3@D z@fQ@8?Tnw50p`{WWt@C6DdGW5U<^_s*}Q(akJBtj4hU&SHzs`TRA&j&feYj`aoTse zcR!wd1g7B8klHM7q$sg1v8r~o2zi9Wxi7dS!q>r=4BvPZcf<9yi7Yg!+Z9;dlVmhr zi#W$#L-)%XFRCI<7t@)+0;n^we|>fS=GeEs2{A}48Z*wqC~|!r-aplxq~e9Rj?5%= zNbv>&d|}(9ZHitf7Q{jIChO`-5nWR_DvU#4g|oK6?#U)++q&GXm*pmniAH-egGI=3 z;8DuaE<1G}37mq~I0ZqKko6>mNqM-Q+hx`_9U_FNL=-_O0P4UIq28%JZhgsll>N<< zVj38i7T!*eXPBO%q`vrm;|NGpFomdueE@M4XV%Z^&;}~IKr;`gSuK^Y*rQiwh9EE# zD3!DaM zs%}*1%~z@fWq({=vnN2!?|%30etUmEeV>VZ zV&5cr9#(?m^-w@&Tk$Lop5XH|!cU%p0e;u#JKNtY6l;F`;iq6kA4gejx0jgLzZ3LO z4c27E!q?Vu6q|Xla>T|5gs}{5D8OAOI-b>i0WT6cI~Q}@X=gqu@gfk_zgw%uTHcR` zXJz_$2F6xyUrar2^|GPyBP{9|o`*X(2`ImhD%EbthP^#(8IpWryV&H#uZ4@dTWh;p z4m)moq{bX#P+C!de!df0c1oPx9Ipim!!?JmM+8B#jng? zxM!SfB=Wf=xqMViN0j3P^h81lM-(jo#fJ5IAXWXXnPU~}J0iD$T<;^zB05@k z0(Z6~jPX7_rw^NB3rB}9T&S)*T=F0o+)9V)&wUPcU}#(+EDvzsn!Z)}>6mvHMBTiB zJ6j0lbMS2jKhmp=vJAFy;Ky>wyqIp#6!$tIm^@|3a*`M|cu$ZDK*EeMMhCptQk?6; ziCVbB`yKnL<0Bl1H1O6rNkNk`1sH)vsD`Kg;wA}8gGBo*drM664SEHe-qtelA7@^+lzAy;B zmNJva<~BQ>Xzs8OT>-8{E*B{c7xt)wFl*bCDI*%BTeeb9*@qN!&rE5BGF@@k%O*FMFRJao?)K|1sE)c^? z3b9(Sw2Bj16H1)Nqiroj<-$-qQ5PqC57wiVK;3fp$4k`<$o@zSud$h}v%li$S3yAZ z#yg;zmWupkT5|16h@-Zfn+{i2HGxS{xKfRqR$}8MGj2}m2nXB~4V(z?`j~N()(Sc& zbs$D4P6MQv>N`2Ay}wq*uL1%t!{vF9aKiI2Z}(9Dw2${QM49Bb!EDH2XF7zV4DoH= z%_;9unY61@Xj4>3)#>V_O=z{$atuk=qH`WW4g5ZeyZ7>4V-8rni_L&-1WpSegbl&q zyyhWIkXIXjsIiz`fovT6MTaj4QVk6!rz&-zzhRe@@U1Z}@}LWBtg^5o8Z#$Zp(Ol0 ze*bYV^+T~-i;2`H)*gLL;KRkT=L~Kv7j^(Iu4G;K&wZ5QCDyI1A(wGVrhvq#TjLtr z+`icdP{WicqxJ!l>?#SB=^uSXOazcf@e3>=8Y1SFv*9V~NJo{!m9Z(p4PxA(AXk;e zgVVw!Jy>eRhQggN8Y((5GtE((v`3nmL=CJhYUG+CZz=LDNLAB``O#<^D_^Koc)Whr zt^0o6$I%yVkc6Rea&7UXI=4AR9Ld3X?L0Hbtkq)aS6Y9it=paN{zgvgNhoCP`7 z{Sl%eDrJT3$PhuMcL@ZXiE(L^%1vq&?h;;G`IDG3vduw z;4X&O2J-2eNmhbPA@C5(b0sXO#rKSQ3Z4ZVi}(q|IfA0r=Blfu^#JYM{NdsS(I6`Rk|OedC&jB84D;WA z%7g_!EUH35%zJLYkYJdO_4zkt0UDTTIp#1q;-qk`=8d$52wFh^A@o%_gJ-8`N*WXy z%>_bi5m+OWuQ7gLp3ry#17`!U$9C}QeZJ5hRi%6Ab3RklZ;fc*VWcM1-Ck4YOBULh zIIVf1&kHtLfwA;NU_^Hi;Zi28j*pV6laLK4Zd0%n?+L=-_i2ET!Te zVxw4P%6ms}-Q18X)OLIoRQLYdZ_3Y5I7;mLT8?Nf#ry9;zW$ynaY?}<#{TaTsE8UtPu~ouAQ@1O%8%%hx{c66hS(!hlKRwCoC3GJ88yCEi#fQ8*H7bh2g#xKem&TM(rQ%aSeY?BQuQ)qVX+xu*f*gy^gfuqxA ze-)DHTt%qZMGYscr~UcbprC1502=wkozPg1V-GjbM^>-XS&!Z~E|XsFL0!#@mFv4@ zp1UY-pXTXT%d~g<)6b2N-+5U9LIu8WnvH4R5IdLn;h~Fe4eOlQ!m$N;uyz7-dEdqz8&@h)U$%G9eTe8 zEN>@ss$g}97`<%I3!gW6pR+bQ%uB$Mez2e14@o13!n$Tnn%|t$vC^|Ci7UhZG*-JL z4gbLkyxSnfLJ&z2ICAMF3{Vc4rAn(-Xhau#;3fnbR&Vy-9408XmYnM^mB_VzZ~buf zDKYsNj%l|BF2C`4oNvE|e-Z3Gbh6@a{EHeOd~Ei8$9rWco{;7?&Re%8 zlEqu_c#3&VNlY->p-#w`&~+bzg{D{bG-$=BzkCcFg*Bn~Ja|t3fYfEb13!(%ko6!s z1z&(2hJ~~+7z(wSEOXgv)cC1lIHIId0;b;f&i-qVL!dWwX+w{gax78tfuq4=#W*ECPPujPwdlgclr22rxvF z476u}Itz-27K|1Y5?~jp3JaXa2{s2*DLTir53VMN*ebmu*2YgJ+!i_n275S3fzune z#WbpapQ8tk{k^*epAqdSx6l}gM6)_6e7P#fvWZw8w?p*d>nkMAi(s|MW^WEg=bNp| z_ZklQ{0VM_c#@;&5VCIOq(z78$77wfT{CCrxteU+#BEJKc4qfqvV2D8ssfg&G6pdl z1&7q0zYB!G2&Y5R?(f*|hMjHSM+$lC%pWeX&AnD^GnokzQ&2F|NX~@O&KJ|jZ>qLl zrRh#fDH!}4HAs_47YpCiA8H_fE8WkL4rRs_8q2-R$J`8Q%Ke51&BQAiI$1j;%>^ zwmqyAQ{soouPp$Y#o+e?9)X04wa zPYdhK)l*<91A4UE?h+r`efZwk`n_%#$5(A?u#yoXty)u3=KZo3`(V`!+QP1eu4@keY_ZW6fqApoVN4g*q|`&lr(PytL4p*_6jB zaxqm#i?L13#$s+S7MlNOTD;7fI-P>icxV1)43i;&o{(eMF%juyGk|*q651eZ5CURn z{PB#%1Xd^CyDl*e5tDjkT9Zt?RO-S0wFD8g06~R0KdVP&!BK$Q8pAL)ep^0hUJ`i8 zJn7-gnwvnJ5@1Qg{lx9LTcaKa@(rdA6gZT^wD}ZifG`~!tfBkB66-!V-Adq|@d)(?|6 zMxnXclSos7Nez0TmpR@9NzwM|=`=na2$U(%iaYoPn=bpPf#CY5gI(4*H$%P{czwEy zDCmNd=jiz5i)c~KHv2+WBKf6; zlH_8O?#etB3YU|XsjzkBc(zHT&su))x?&tLG^!Bl>9iJ{hR6P>L%y8Q#KklAtJq_i z-{%7K)W-%}^KEC3ms_Wr=2EYLtxEZQXzZuueg|mVfaSUGW13RIB_b2SX5SThkZ+nm z+Y?jI_d&OrLFpV3pTp-+twnq3{XN$-8%rBfZgK>0(oCt@2De=AsAXee63PoX7q-mU zU+66-@28%8O-2^{ahS0`8A=Exw~B7V0&gr3;P=BAz0GI4H*de!W=>|)9lnD-wL4U% zQ;C6Tx|g^gyNNKiFRpTH)L;NiT=ou`F0Ix!$aNNXr^pB`xHD3+BC-eo*}K zM<6L~GW^lX7o^0szXhJrA89rkm-2-*?N$ln@M>T*ngQ(W$hjvIQK*D$SdeGJ=p-Z6 zvO}ULMUOV~;17L1l~&N#Tpw$DdB5MS|7nH0bfRO~ctg?znwsnV<@>gd`pWbc^_B89 zIcQcp85p1blQ%iKp;zc95sAx?#gU_01x`I>vBT|W_@1oJ>EsH35J1E|mUa*C9esDg z^yTqGY}edGC)RV^n8kskM!&I5UP!PSq&rkFYt8@YWD1$wVneOW4VfzX`ewL2jd?7+ z9ODv8Z_U$aeftG|5{AwLc+T4CGT?h^n{%Fs^LE`mE;tjzBaR=T{A^=DPnT3QY!Rq) zgZ%R4ifF&Njpw>Fh313|s8_{vkjq1FC{hphq>7(wKxeL|vCBgcD;wIqh|fl-Su!|r z4wnr}m@jc&7Bg1Ct0*;&+a$-HMrD`ekwmR1=Nh$iPV(B`sF!IFSRe2Ho{m716QwQ{ z{y^WZH+|{v>B{Z(dn!T`tf$sgYI$v?zYV?6`!!vMHr6B6bld5U94xGRdEvwKuA^Z0 z5V**mtPs%~Z1D`$TQdcmwh8ca&sa{I)`T!vV9}bHNu#S)t+h&)f0CI(Weu1>tirLb zPFp^bJM16sgCgi26Ald+AiO%npArrTkU=(a%-he$*pzX!#|44o>WAq$*k=cYv8#^> z5Z%Oy+sS7Sp~8Q%DM$y?3(os;BENF<124@9fI<>Of5fRRm0mY>>Vy7$qrCC$j|ZuL^<5M{IkN>^5ig2<7c^K5HU2S@T^7 zu46PuS$?O%WyYmI9Y6M1FX}}-i2eD{<$LL|UHnUTEKT0r*DWUBT6KQ$hI?N>gwMXu zam;aIaFZKPaUrmKs)19&U1ToIX48DO{T!Y}*6V%CrhJuf%NxdIW;NQrlg-CZ8+cR+ zo2sX&MkhHVHJqB7T`Dw_XevRYN3noe@9>T{<5`?SVc?kL-Xms562PC!YiAfdSC!`8 zHWZtH%n+g~iH=hCz#=X@lmrF!XP?+V1l){x9w|WS&$#fuJea42N;JO&DMjMLf{g{8 zK6Z@l3U|oF$YU;56ly9p7iRf`GbKbG2bRp=M*7|mRYi|J= zgIVI3>%kGCv7h^!->I7S2MFEMbzC03v20h~+-7l$c@n;87iR#?A8;-)_R)Q4Mto5y ztU%Yasq92;Pl!OIZ7SfG2uaj3&vFJyft)+$bSAf5L(^;mMRq&T9$5lYg5Iz5%}t>< zm7Vo&cMi_{(7NVquda`PwKei|`X6VX8#dqfYnh$4f8OV=*}D|@x15hP6jdcOF_@he zyCXao6mF3*|8#q1Pwnl|(_sCVJXi+&Y3C9#l5j=PnZMCz2QgjHqeidZx(pKuG|Bpu zjAA7`V?r%bn6G`9sV!hY$jRVL$pQ~CG})p_BbC885T)@(+QYr2=ams6JquJ+5})q7 z6=_27N&*jQ1``GZW@23g@1o2AMybW|Uo%Ad*psU#I*LzD|Hh|SH(c_v-R;kj-x|2{ ztCwOU-8-98_EUKDvl4-qg*lMuRgR|zv->dAmkfwW=z zH-NZN{X2nBAqa&7bO^xq$AH-dab6+y<$zWdqQQZ~7kTZLZ2Jn$HL__rvLAr}uRw5+ z`+`8au>E$R_RK(Dpz(10)H%RfQ}s8}K(Y|~{6N?sgb?|pK!QL}HxWJv3%nSh^926t zwOeSwPiUq8f#`YJ-QQ>%BW_XF$yrfM=eqI%1zqFW?mut-nV4W?>-neqS8jVg9}}%5 zhJZdohsR^J&{?B+@))_(zuEpt}BH+GEt<~ZM8SMIO;swE9xo{ zmOn(?!k(W+?L#}LXXO#V$u@1t7%vuElv*qtVl7>jV7*EVcz0Q74m5jCn9$HZqUAg&;0&IeFd3A%5rXtN)rpD!43#ft^o96r%)P6;Bz}kkV;9A^a;?LxlH5`j$ToV+adZ8^%8W0_-}?Qw{}C#Q`je z2b)&j2zU|r{N#W3QU2XMULi7iLH6~09@sV6>eD6wMe~r93{Pn+4${+f-^|rQE^jXvoeLPR}MH zV>ubZX3i0WIR$Oe^Z99uA_Dap-mY{PA~{$@n%-uuqJ-Ujw#psD1yjKY&PFLA(s?Koxm4`1G7mOZ#(NbUn3CV)P2E+90GvTJ6fvgIE zJ*nWRNhEMrt0Un2^zkStyyKis^BY7!#`qG%HGP(?+PyrL32tXk+c%7j=k-Pfe2T zMB(|*o8j%bLhRck?bu0I2>fY zx^tK|(KE9f&!VXdfR{uKBQ~UchVNY=ru#|lQl7+syQz{pjrTw{N@fA37dG=!zf993 z4Sf`mZ-3UDnU}HWY^nk(PgXQLygJ+?RI}lOG~FAh7LvzOwo=Em?j{i3JDLJuWN z=GPAu@8JO}R@`uQj2k!DsI7ZvuK=2}EaIME>>-H3I?L?Iu*d zBS;9NydUjrlJ~ksN;UAHqWy)i@kt4LS-x6({7H*wM@|6wq)=Zi?)=wtz4plR9u0lk z%!OHK=0e}z8)&IboU1~O+%C)U{TgE%*>PkxeZ>p>cSOc{6<&l=b8v55hjjL2x{GI1 zu9N?WsYQx)^+I$(&cgUGY0*unyn-@B2~$UpbS{bOMCW17E)Dd!fKX z#ARFzBUOD7RQxaYKqRcy{e2+gN%o_MRDpB!sU}x zkJs`tL6|WJXKQX)iOl1m2cLvZe3=A8J9zH@N7y?CX%;kX!fl(=?w+=7+qP}n=Cp0w zwr%&cZQI_S=iPUAzxXy{?>KcT@2V{P$gGHyC$H-S0%wOqeP!i6qu#?c!RADAu}z#7 z`7lSZlZMRzc+dyV^w)!BjO;V9b@3P+R>G9jr8~nFtgcYdqiJ>zPu9!8Th3x=5Chq$ z98*2`Z-blQY2Ed$^RS%<>b~xbFfnn774Q{jhU8*L!O9-xdX9i(5@7Ns!^WH%&FJId z1a`%PrJ0)brjG$)In-S+3y#{C)b9(G3__h58pdEs%p-r-@plVySHZ?eD@4*^o;P^k z8-Y(L|Khv|rlsrd>&tuEPrs7}(|2ajg{GHFv~*feO?CQhJ+4x|dfMDRdMz=jjxO&}JUOAz!G+)eCA4{|IR z3(5ZzLnQbYLll_heCrmsd0h5k?{$3a0Hpck_2k@XtvoVjmZ+(IWQlBzB zX(&x;qzuC#EJd0VrQ!%3+8uM%k3Sl3$SYoDI($W#3Zr{6oE$CTu~ zMT9Vl?fq6F8uRsVT5xB7L~a(6`oZij_vQbgd=&c;=>?cs`wPuq{7cLy8Y8iX5HBfa zbUP?2oQovSn@4C{(LooR-`EeS{Myl^!?=vf~qyj@LB@gBnLSrTpE57Z5Xm zm96?uTo4V?ciW*l21`9285`E|EqzsbiQmwX+a`FOA4BM=$y-dkSX%HyKqM-A>ahpi+ehwO2bXMLY5S;P3Wbj4aQv706dgo%WhGZE;? zBWJwNd`(;c+W2F#qcLNLw)u!3U{WCOMYdQTw6*51X@uqdDiNX@ueky$OfoJlA&Y2R2e9zU%vXWX{#EZ9nXeB*l#8A0aOiuU`h;PbI%J zhGbspz7c0-GUgPX!xuAk@Q7afJ|GEt?28VLvus$`@!QxligfA`k$?z5v>+70rLId6 zaV`DpD9URXqh+tFvsUD#BgtYiPA7gdwJ%r11kT<`o6uC9XU-#`ur>~bJmpU@OMB-Y zE%UlxU$h+L40y`Ia$pNGwwW>!%pkpbVj1k_-{W=DewW9K8)EMZf!&`M-apx2RTwQGzHH+zJ?7mYRJAeH z=!QeyY0uE_>xk(!To=3un3%ET$r~xEY1lY?Ud3lF8?^;q^M|L8c}UQ&TQgrwqt?*P z9=^WAyyL3@O<2C3cEoR(Qcq>D!sZr=-YT4nPlpfpp*p!wMMB zfODUJOE*Fj^oQne2HO2J(3^|LBq(({gU5x)hB_0X!tU>X%~d&laa--j^vGdP*%~rm z2)7h?ph6+OeyFFxW!&J(5v~A?cC~aeK})Fh7z22!t643BMDe!LQd4Wy*UVE`iS^{T z;sbeP4w^flkloEQ%^p{>(1w0^FbP8N`s+Lb&l<2o<_oi+X{5NktI9H7lCBr>!P8+p zhV*@{b4R1Tm+VVE<4mi*hk-e43uka6jVar9VDW@=V2?09r1}V!f$I-O`SaY|3q_FM zQiq(m1@^}k%n6JVno5tyu%B;9M+UfP7ok%`cb;2JcitMdZ+t_teZ>O44{flOFHS_~ z2#5buRM2QQoO)Emq)sc$#UxUj4I#kC0>^+Im|&KN&@7ZpAd)2xK`U>uVB9;nqJv|1 zl)_ua=Yi))9Rt=e$<%kvzJw^3i-R^*P&Ywive))tJ&7>EafVWq!JAq=oG_pK#J28KgKEc@_?QZQ?F)CPOF-+y1 zgh0h0$BgD~BC1CfzDC|46i}5(<*aS+61Lq1=14Z2?q_|j=FH?T?6czI8_2^#ZqK*s zSq3lpuZ9pT8N}pPVZsVxOng~!J~|YD@-ixyW2S(QV_)nTyZo<3vrUV2>vbOMf_TzjG+`;WiJaXKE+L=hWe}Kj&Kslh69=;?AxW-RFii=D6AV=egU;pfsev;}U71`!kLF1plI6~q z5#H{%y^6clv-ZP7gUdVP$=y6mF+OB1c>CA&JNZ<2xL3p1!Vkh%Z#&a_#lnI2q`>c{ z3$qIE-B6;$Pwi82-w%T;)9$D%Gej0fo<`n-kOKY8b*eUjoD@ z8igt?Oo20Iat3&P8Y`{GLPpf!#}{z4@;%lKs@cGuv< z0pcHNG)*GFp2|&7y^UZk)`zr?RavM@RvuJXU_2wdW@{`ZY#xkQtoqeWVmDb4v6L!L zkevAcKnT-7QjbM_sC6bgtCOpY;4D=qSoRDlQP0eic}8uNCVsV8NLi%uf61y&P^DF* z6(utpwHGT=TgngXDot?wE#PmeB*in+QJMf_P=0r8vJztdX(u^S&ictU8S@&@U91nT zWQDR=m9SyjDonOEYQCKsub$FAt=_zZBtVoM32rvJuI{d$$}-otSZC5#8Jk4XS7&H* zx9q58T3yb#h$!iZ=N>99Qq7-2QrSmfzI}knYc8pB6J9QUqN<)<*;-zdkK0IBi?^`6 z7H@op6z)%&Qe6TC^|kiYmGGaW$X4evMG5?kLJnc*;an8d8haH%y4JDptr=uA;^q+4 z{WPUr=H!V7)Zr1tJQOt~Ajq}3m4LR#4VhSF9(DSJbJ_oR>(tJjbWs*oVnWW?=KO3>BTZJGrF|-s+1kNP{I}&AMTN9upL?5jIzFKDly4YHd$Y@X3@33oUrAHf z(-U3>O?Hsg+4@pq-z@94+YQSBW_4*XIUk!}1fuIUJHPzWdu+?4@FB#QQUo!smx@(! ztcugl1hk{1i#u;J%;?%|J3Py7uWIZ7&6pc!jE9IR?urUi&|S2iG)g-`fGe&yn6M?@ zdc6acogia@eQ(d&Tioh=6H|7dY_n`{+Nu4y-OTBDI%~*YnaP?g%>bMIZDwu0!((09 z{eir|$yVEc?^<4{C2L$&UC8hfO5d3Ft_1TBvQiL+fDE@O+Kf^OAB)RlvEoo!b=A;V z_tad{BBdDd>Fo5}vV?svsl@vFtp-^8>L;_GlG8AEBVnN#zNDi7-f{)$4W@PATj zO(<@7l&dVZoNPrhz3Bb2R;p&7WZ`Je$6Jj{P`grk^&(uASxy&_D$=#FCeQrgd(qNV z#3Xm-Jjq;EY*mn*Ylf;U`Ri=#z9dv8_FHLpNTyIIttBCOKQRY#O>?dlx9OPVFaK`N zG-0Xtez}&%2{xw^MG_CAl8@``HA+?s_%Q;RH+vKYXA9peN{QBtL_3z|0!j<)uI8<6 zO8aqp9OY^oOIe2n>1ILJS$M~3E0BoD!eyA^YI8-s%mV7cOOl*wx!k5Cfp99Gb&2EC zynPae4PQmwUOJ%(JDUotqSNw)+;S#XN2o%^FLlG@b*Lp3=i-a-7KQUhV<8?KrR{ob z>DjsPFTfd2GTZsHN^uE!pznI5nKKoncbk&C(W{b5mXex1t;{>tvZwPQG~;S2>P;tK zCk5DxpKwJZhVWTpk3o5;p{sO8yJ@&`dcpU;50rLSVxZx(=r#oPrr17|^Ye4$Mf;`U zldTL=lv$vPoabD{nQYTI`))X5qPAnvW2Si3@r$xiQyuiVxrA)^U43e`K4WvuAcjim zEjxx!AeU(Mt@^yUz^u&Eo-+z98izjPEdiCtSzc15Kd}*Fm>W7IALv$!fp#1E!0-7O zw+MvpU+2(>-2l|3I6Vb!N&8Lcw6OGhu4pA7_W5ox<&VEBXL@-=Z?R5__$Cm`H&P6{ zz^*6$dNTJ{+~^c7S=L3n{tnP_*9`Q*1Bp@tE(zH=L5L-w6Q%`h16lIr$p=x9H zrSNu!We;u4ret5XtNzwH%6!7EwbU_wmAiADed~bkF;w}28_x-zZK&a%APY6r9X<&%k(=*_zBb8AIy>JdMadm5Uj+6Ml+7>BY1cn?hnK?#K5TpUBF*^ zr?S7%J@CLB!UI3&-sp`5T3rX;^nUuwJxmK63R@G^y0k;U8 zsIc9*zhDb+xB|3juS^#j4&*7F+m)h|%IqyRSg{>YPw5uW8ZV!$?8XZ0Jg

)ch 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

jFh?D6in9kG|vpJPmxL^(vL%8b}pSY)oKy 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.05: no significant calibration skill, as judged by p-value of overall F + # 4 Illogical lagged model: final model implies that y(t) can be predicted from + # just the past values of x(t). Logic, by example, is that this years runoff logically + # should not be predictable from a model with only past years' tree rings as predictors. + # + # Model input parameters Lcauasal and LallowStable allow overriding of the rejection by + # criteria 4 and 2 above (see comments on those input parameters) + # + # When LallowLags=false, the predictor pool for y(t) includes just x(t), and the above + # stepwise description can be ignored. In this case, the model is simple linear regression, + # and of course "Lcausal" has no effect. But the screening is still guided by skill + # requirements for cross-validation and split-sample validation. + # + # The broadest possible lagging of t-2 to t+2 is critical in this function because code builds + # variables such as a 5-character pointer output coding which lags are in the final model. So, + # the function will bomb if inputs nNeg and nPos inputs are not both set to 2. + # + #=== INPUT + # + # X [matrix]r tree-ring index as col 2, year as col 1; may have leading and trailing NA + # Y [matrix]r flow (or some other predicand) time series in col 2, year in col 1 + # Time series in Y and X will need to overlap by at least 30 years + # nNeg [1x1]i maximum number of negative lags allowed. The only acceptable setting + # is nNeg=2, which means consider lags t-2 and t-1 relative to flow as possible predictors. + # nPos [1x1]i maximum number of positive lags allowed. The only acceptable setting + # is nPos=2, which means consider lags t+2 and t+1 relative to flow as possible predictors. + # Note that you can over-ride the input settings for nNeg and nPos with the input + # argument LallowLags, such that effectively no lags are allowed in the model. + # yrsCalWindow (1x2)i calibration will make use of flow data only within this period + # designated by first and last year + # c1 (1x1)r critical necessary increment of adjusted R-square and cross-validation reduction of error (REcv) + # required to include an anddition step in stepwise regression. Models are first fit up to the step + # at which R2adj has increased by at least c1 from prveious step. After leave-9-out cross-validation, + # model is possibly further simplified such that last step must yield an increase of at least + # c1 (e.g., 0.01) in REcv. This threshold is in interest of parsimony, to avoid a more complicated model + # if practical gain in accuracy and skill is negligible. + # Lcausal (1x1)L TRUE if reject any model that has negative lags only on the tree-ring series. Makes most + # sense to do this if using standard chronologies, but not for residual chronologies, as a negative lag might + # be compensating for over-whitening or under-whitening. + # LallowLags (1x1)L TRUE if allow lagged model; FALSE if force model to be lag-0 only + # MinCalibLength (1x1)i minimum allowable length of calibration period; if overlap of X and Y is too short + # for this, the function bombs with an error message. The error message is also written to the output + # directory "/outputDir/", which must be in the global space (e.g., from calling script) + # RequireStable (1x1)L TRUE if model tagged for "rejection" when the the RE statistic is negative for + # either half of the split-sample validation. FALSE if the the split-sample RE is to be ignored in + # the decision to reject + # MinCalibLength (1x1)i minimum allowable length of calibration period; if overlap of X and Y is too short + # for this, the function bombs with an error message. The error message is also written to the output + # directory "/outputDir/", which must be in the global space (e.g., from calling script) + # + # + #=== OUTPUT + # + # Returns named list Output with following elements: + # Model [vector]i columns of [t-2 t-1 t t+1 t+2] lagged tree-ring matrix in final model, L-to-R + # in order as the variables entered stepwise. For example [5 2] means model has t+2 and t-1 + # as predictors, and that t+2 (element 5) entered first. + # ModedCoded [string] 1x5 string showing which of the five potential predictors are in the + # final model, and order that they entered. This could be used in a supplemental table. For + # example, "02001" indicates lags t-1 and t+2 are in the model, and that t+2 entered before + # t-1 + # ModelSign [string] 1x5 string with "0" if lag not in model, and "P" or "N" indicating lag + # in model with coefficient of positive or negative sign + # yearsCal(1x2)i first and last year of calibration + # yearsRec(1x2)i first and last year of reconstruction + # MaxLagNegPos (1x2)i maximum negative and positive lags considered in modeling + # LeftOutCV (1x1)i number of observations left out in cross-validation + # IncrementR2adj (1x1)r critical threshold for meaningful "increase" in adjusted R square + # RegCoefs (vector)r regression coefficients, constant term first + # Rsquared (1x1)r R-squared of calibration + # RsquaredAdj (1x1)r adjusted .... + # F (1x1)r overall F of regression + # pF (1x1)r p-value of overall F + # Lsig (1x1)L final model overall-F significant AT 0.05 + # REcv (1x1)r reduction of error statistic for leave-9-out cross-validati0on + # REa (1x1)r RE for model calibrated on first half, validated on second + # REb (1x1)r RE for model calibrated on second half, validated on first + # RMSE (1x2)r root mean square error of calibration (1) and cross-validation (2) + # LREcut (1x1)L final model was truncated, or cut off, at a lower lag than indicated + # by maximum adjusted R-squared because cross-validation RE was higher at a lower lag. + # Lrefit (1x1)L final model was re-fit to a longer calibration period + # because the calibration/validation procedure resulted in a model + # with fewer than two positive lags. + # LNegOnly(1x1)L TRUE is negative lags only in final model; FALSE otherwise + # Lreject (1x1)L if true, tree-ring chronology rejected because at least one + # screening criterion not satisfies. If false, chronology not rejected. Screening + # criteria always include a significant calibration signal (p-value of overall F) + # a positive skill of cross-validation. Additional criteria apply if Lcausal=true + # or RequireStable=true (see above) + # Yh [matrix] reconstruction; 2-col matrix, with year in first column + # + # revised 20221213: adding option LallowLags + # revised 20230325: added input arg MinCalibLength and code that gives error message if calibration + # interval for model (in terms of y years) is fewer than MinCalibLength observations + # revised 2023-04-09: to allow the requirement for temporal stability of models to be optional. + # See RequireStable + # revised 2023-05-26: call to new function, LagModel2Sign, to get new list item, + # revised 2024-03-04: (1) fixed error in call to LagModel2Sign for coding the lags in model to + # sign of regression coefficients, (2) added commented-out debug code that can be uncommented + # for future debugging lagged regression [search "#edebug"], (3) fixed error in getting + # lagged tree-ring matrix ready for regression refit (see Z<- Xorig[,ColsInModel,drop=FALSE] ) + # revised 2024-04-17: comments clarified and corrected for typos + + source(paste(code_dir,"LagYear.R",sep="")) # build lagged matrix of chrons + source(paste(code_dir,"LagReOrder.R",sep="")) # build lagged matrix of chrons + source(paste(code_dir,"CrossValid1.R",sep="")) # leave-m-out cross-validation of stepwise models + source(paste(code_dir,"CrossValid2.R",sep="")) # leave-m-out cross-validation of stepwise models + source(paste(code_dir,"PeriodCommon.R",sep="")) # common period of overlap of chrons and predictand + source(paste(code_dir,"ForwStep2.R",sep="")) # forward stepwise regression + source(paste(code_dir,"ssValid.R",sep="")) # split-sample cross-validation + source(paste(code_dir,"LagModel2Char.R",sep="")) # Build string representation of lagged model estimate forward stepwise + source(paste(code_dir,"LagModel2Sign.R",sep="")) # Build string representation of signs of coefs in model + source(paste(code_dir,"emssgUNH.R",sep="")) # write error file to system, specified output folder + + + #--- CHECK INPUT + + # X and Y must be matrix and 2-column + L<-is.matrix(X) && is.matrix(Y) + if (!L) {stop('X or Y not matrix')} + L<- dim(X)[2]==2 && dim(Y)[2]==2 + if (!L) {stop('X or Y must be 2-column')} + + # Maximum lag of 2: both nNeg and nPos must be 2 + # Be aware that LallowLags can override these settings and allow no-lag + # models, but nNeg and nPos must still be input as 2. + L <- (nNeg==2 && nPos==2) + if (!L){ + emssg <- 'reconsw4 requires that input nNeg=2 and nPos=2}' + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) + } + + + # yrsCalWindow should be length 2 vector + if (!length(yrsCalWindow)==2) {stop('yrsCalWindow should be length 2 vector')} + + # c1 should be greater than or equal to zero but no greater than 0.05 + L <- (c1>=0) && (c1<=0.05) + if (!L) {stop('c1 should be non-negative and not greater than 0.05')} + + + ############################################################################## + # + # BUILD MATRIX OF LAGGED TREE-RING INDEX, AFTER TRIMMING TO COMPLETED CASES5 + + a5<-c(1,2,3,4,5) # vector needed later; refers to cols 1-5 of lagged tree-ring matrix + + # LagYear() requires X as single-column matrix + mX <- dim(X)[1] + tGo <- X[1,1] + tSp <- X[mX,1] + yrX <- tGo:tSp + + ktrim <-2 # do not trim lagged matrix to exclude any leading or trailing years containing one or more NA; + # But all-NA rows are trimmed off + x <- matrix(X[,2]) + L <- complete.cases(x) + x <- as.matrix(x[L]) # trim x to non-NA + mlength <- dim(x)[1] + yrX <- yrX[L] + tGo <- yrX[1] + tSp <- yrX[mlength] + yrX <- tGo:tSp + + ResLag<-LagYear(x,tGo,tSp,nNeg,nPos,ktrim) # to build lagged matrix + + X <- ResLag$X # lagged tree-ring matrix: col order is first unlagged, then + # increasing negative lags, then increasing positive lags. So, if nNeg=2 and nPos=2, + # cols would be: t t-1 t-2 t+1 t+2 + tGo <- ResLag$tGo + tSp <- ResLag$tSp; # start and end year of returned lagged matrix X + yrX <- tGo:tSp + + + #--- Call function to re-order columns of lagged matrix. LagYear returned matrix columns + # ordered no-lag, followed by negative lags and then positive lags with increasing lag + # left to right. For consistency with other functions, want cols of X arranged L to R + # from highest negative to highest positive lag. This to be consistent with what is expected + # in functions yet to be called. + # After call to LagReOrder, if nNeg and NPos are 2, for example, X has cols ordered + # t-2 t-1 0 t+1 t+2 + X <- LagReOrder(X) + + + ############################################################################## + # + # STORE VERSIONS OF LAGGED TREE-RING MATRIX: ORIGINAL, AND INCLUDING ONLY + # THOSE ROWS WITHOUT ANY NAN + # + # Because will use the latter in first pass of stepwise regression, where need + # data for all five potential predictors, and depending on the final selected lags + # may be able to use additional rows of X for final calibration. + nX <- dim(X)[2] # cols in lagged matrix + Xorig <- X # full lagged matrix + yrXorig <- as.matrix(tGo:tSp) # year col-vector for Xorig + + L <- complete.cases(Xorig) + X <- Xorig[L,] # Lagged tree-ring matrix, any row with a NA deleted + yrX <- as.matrix(yrXorig[L]) + + +################################################################################ +# +# PREPARE MATRICES OF FLOWS AND LAGGED TREE-RINGS FOR STEPWISE + +#--- PeriodCommon() to trim lagged tree-ring matrix and flow time series to same +# time coverage. Flow data are already in matrix of desired form in V. +U<- cbind(yrX,X) # matrix of lagged chronology, with year as col 1 +namesU<-c('XN2','XN1','X0','XP1','XP2') +ResPC <- PeriodCommon(U,V) +U1<-ResPC$X +V1<-ResPC$Y + +#--- Optional truncation of calibration years; user not allowed to specify a start +# year of calibration earlier than first year of overlap of lagged predictor matrix with y +# +if (is.na(yrsCalWindow[1])){ + tGo <- ResPC$tgo + } else if (yrsCalWindow[1]ResPC$tsp){ + tSp <- ResPC$tsp +} else { + tSp <- yrsCalWindow[2] +} + +#--- Truncation of flows and tree-ring matrix for calibration +yrU1<-as.matrix(U1[,1]) +U1<-as.matrix(U1[,-1]) +yrV1<-as.matrix(V1[,1]) +V1<-as.matrix(V1[,-1]) + +# V1 and U1 Ok as-is if the desired calibration period matches the overlap of y and lagged X +# Otherwise, must truncate. +L<- tGo==ResPC$tgo && tSp==ResPC$tsp +if (!L){ + tGo<-max(tGo,ResPC$tgo) + tSp<-min(tSp,ResPC$tsp) + L1<-yrV1>=tGo & yrV1<=tSp + U1 <- as.matrix(U1[L1,]) ; yrU1<-as.matrix(yrU1[L1]) + V1 <- as.matrix(V1[L1,]) ; yrV1<-as.matrix(yrV1[L1]) +}else{ + # no need for action +} + +# Minimum allowable length of calibration period is MinCalibLength. Return error message +# and bomb out if this minimum length of calibration period violated +nCalib <- tSp-tGo+1 +Lbad <- nCalib < MinCalibLength +if (Lbad){ + emssg <- paste('Function reconsw4 requires calibration period of at least ', as.character(MinCalibLength),' years.', + '\nOverlap for at least one tree-ring chronology allows only ', as.character(nCalib),' years.', sep='') + ResTemp<-emssgUNH(emssg,outputDir) + stop(emssg) +} +rm(Lbad) + + +################################################################################ +# +# PRELIMINARY REGRESSION TO SET ORDER OF ENTRY OF VARIABLES OR MODEL FOR WHICH +# ADJUSTED R-SQUARE IS APPROXIMATELY MAXIMUM; DEPENDING ON INPUT LallowLags, MAY SIMPLIFY +# BECAUSE ONLY LAG-0 IS POSSIBLE. +# +# Status. Flow and lagged tree-ring matrix of calibration length are in matrices U1,V1, with +# 1-col year matrices yrU1 and yrV1. tGo and tSp are the corresponting start and end years +# for calibration. To go back to longer data, have available longer calib data in ResPC fields. +# Have full--length lagged tree-ring matrix in Xorig, yrXorig for later use in reconstruction. + +#--- Forward stepwise of flow on lagged tree rings + +namesU<-c('XN2','XN1','X0','XP1','XP2') # matrices have been organized L to R from lag-2 to lag+2 + +# #debug on +# write.csv(U1,file='U1.csv') +# write.csv(V1,file='V1.csv') +# # In MATLAB, can troubleshoot with simple script (see text_reconsw4.m), such as +# # y = csvread('V1.csv',1,1) +# # X = csvread('U1.csv',1,1) +# # stepwise(X,y) +# #debug off + + +if (LallowLags){ + ResFS1<- ForwStep2(U1,namesU,V1,c1) +} else { + ResFS1<- ForwMoot(U1,namesU,V1) +} + +# $StepMaxR2adj -- the indicated final step +# $ColsInOrderEntry -- where {1 2 3 4 5} are lags t-2 t-2 t t+1 t+2 +i1<-ResFS1$ColsInOrderEntry # Cols entered into max-R2a model, in order as entered +ni1<-length(i1) + +# Store a few statistics, which could change later in response to re-fit with one or two more years on +# recent end if data allow (fewer than 2 positive lags in SSE model and y not limiting) +ModelPicked<-i1 +ColsInModel <- ResFS1$ColsInModel # cols in model in order of RegCoefs (after constant term) +RegCoefs<-ResFS1$Coefficients +R2<-ResFS1$Rsquared +R2a<-ResFS1$RsquaredAdj +Foverall<-ResFS1$Foverall +Fp<-ResFS1$Fpvalue +yearsCal1<-c(yrV1[1],yrV1[length(yrV1)]) +if (Fp<=0.05){ + Lsig<-TRUE +} else { + Lsig<-FALSE +} +H<-summary(ResFS1$Model) +rmseCal<-H$sigma + +################################################################################ +# +# LEAVE-9-OUT CROSS-VALIDATION OF MODELS AT EACH STEP UP TO THE LAST STEP OF THE +# APPROXIMATE MAX-ADJR2 MODEL. +# At each step compute REcv (reduction of error from cross-validation). +# Select as last step in model the step with maximum REcv. Argument i1 +# indicates cols of the lagged tree-ring index (1=lag-2, 3=no lag, 5=lag+2), in order +# of entry in the preliminary stepwise regression. +# +ResCV1<-CrossValid1(U1, V1, nNeg, nPos, i1) +if (ResCV1$REmaxStep=yrgo2 & yrY2<=yrsp2 +Y2<-Y2[L,,drop=FALSE] +yrY2<-yrY2[L,,drop=FALSE] + +# Get tree-ring matrix with complete cases for columns i1 + +# revised 2024-03-04 +Z<- Xorig[,ColsInModel,drop=FALSE] # changed from Z<- Xorig[,i1,drop=FALSE] +L <- complete.cases(Z) + +Z <- Z[L,,drop=FALSE] +yrZ <- yrXorig[L,1,drop=FALSE] + +#--- Find common period of Y1 and Z, which will define the "revised" calibration period +Zm <- as.matrix(cbind(yrZ,Z)) +Y2m <- as.matrix(cbind(yrY2,Y2)) +ResPC2 <- PeriodCommon(Zm,Y2m) +yearsCal2<-c(ResPC2$tgo, ResPC2$tsp) # revised calibration period + +#--- Model will be refit if LREcut or if yearsCal2[2]>yrsCal[2]. One condition is that +# cross-validation resulted in a simpler model that was initially fit (results stored in +# ResFS1$). The other condition is that fewer than two positive lags in the model may allow +# a later year for the calibration period than used in generating ResFS1$ + +if (LREcut || (yearsCal2[2]>yearsCal1[2])){ + Lrefit<-TRUE +} else { + Lrefit<-FALSE +} + + +################################################################################ +# +# IF INDICATED, RE-FIT AND RE-VALIDATE REGRESSION MODEL + +if (!Lrefit){ + yearsCal<-yearsCal1 # if no refitting of model, final calib period is same as + # for preliminary stepwise regression +} else { + # Store the predictor(s) and predictand for revised model + U1<-ResPC2$X + yrU1<-U1[,1,drop=FALSE] + U1 <- U1[,-1,drop=FALSE] # drop year column + colnames(U1)<-namesU[ColsInModel]; # U1, like X, organized L to R as lag-2 to Lag+2, as 1-5 + V1<-ResPC2$Y + yrV1<-V1[,1,drop=FALSE] + V1 <- V1[,-1,drop=FALSE] + + # Regression and storage of revised calibration statistics + G <- lm(V1 ~ U1) + H<-summary(G) + R2<-H$r.squared + R2a<-H$adj.r.squared + Foverall<-H$fstatistic[1] + Fp<-Fpvalue(G) + if (Fp<=0.05){ + Lsig<-TRUE + } else { + Lsig<-FALSE + } + yearsCal<-yearsCal2 + RegCoefs<-G$coefficients + rmseCal<-H$sigma + + # #debug on: These csv files for Matlab stepwise check on entry and coefficients after refit + # # Commment out this block after debug check + # write.csv(U1,file='U1r.csv') + # write.csv(V1,file='V1r.csv') + # #debug off + + #--- Cross-validation of the re-fit model + ResCVrefit<- CrossValid2(U1,V1,nNeg,nPos) + REcv<-ResCVrefit$REcv + rmseCV<-ResCVrefit$RMSEcv + LeftOutCV<-ResCVrefit$LeftOut + + #--- Split-sample validation of the re-fit model + InModel<- 1:length(ModelPicked) # because for this refit the predictor matrix has + # already been culled; all columns are in the model + + # Need pointer to rows of V1, first and second "halves" + iAstop <- ceiling(dim(V1)[1]/2) # end row index in V1 of first half of data, assumed + # longer of the two halves if row-size of V1 odd + iBgo <- iAstop+1 # start row of second half + iA <- 1:iAstop # row indices of first half of full calib period + iB <- iBgo:(dim(V1)[1]) # ... of second half + + #--- Calibrate on early, validate on late, then reverse + ical<-iA; ival<-iB + ResSS2=ssValid(V1,U1,ical,ival,InModel); + REa2<-ResSS2$RE # RE for calib on early, valid on late + ical<-iB; ival<-iA + ResSS2=ssValid(V1,U1,ical,ival,InModel); + REb2<-ResSS2$RE # RE for calib on late, valid on early +} + +# Set the correct REa and REb +if (Lrefit){ + REa<-REa2 + REb<-REb2 +} else { + REa<-REa1 + REb<-REb1 +} + + +################################################################################ +# +# DECIDE IF CHRONOLOGY SHOULD BE REJECTED FOR RECONSTRUCTION +# +# Reject if any one of these is true: 1) overall F of regression not significant +# at p<0.05, 2) Cross-validation reduction of error (REcv) not greater than zero, +# 3) reduction of error computed from split-sample validation on either half +# (REa,REb) not greater than zero. Depending on input Lcausal, could also reject +# if only lags in model are negative on tree rings. Depending on RequireStable, +# could dispense with requirement for temporal stability, such that OK if REa<0 +# or REb<0 or if both are <0. +Lreject<-FALSE +if (RequireStable){ + L<- !Lsig || REcv <=0 || REa <= 0 || REb<=0 +} else { + L<- !Lsig || REcv <=0 +} +if (L) {Lreject=TRUE} + +# Optional rejection of model with negative lags only on tree rings +LNegOnly=FALSE +if (!any(i1>=3)){ + LNegOnly <-TRUE +} +if (Lcausal && LNegOnly) Lreject<-TRUE + + +################################################################################ +# +# APPLY FITTED REGRESSION MODEL TO RECONSTRUCT. + +# Get sub-matrix of full-length lagged chronologies with complete cases for the +# lags in model +# Xr <- as.matrix(Xorig[,ModelPicked]) # code error corrected by next line on 2 Mar 2024 +Xr <- as.matrix(Xorig[,ColsInModel]) +L<-complete.cases(Xr) +Xr <- as.matrix(Xr[L,]) +yrXr<-matrix(yrXorig[L,1]) +mXr <- dim(Xr)[1] + +# Add ones column and reconstruct +Xones<-matrix(1,nrow=mXr,ncol=1) +Xr <- cbind(Xones,Xr) +yh <- Xr %*% RegCoefs # reconstruction as 1-col matrix +yh <- cbind(yrXr,yh) +yearsRec<-c(yh[1,1],yh[mXr,1]) + + +###### BUILD 5-CHARACTER CODE OF SIGN OF REGRESSION COEFFICIENT ON LAGS -2 TO +2 +# +# Code like [00P0P], meaning positive coefficients on lags 0 and t+1, and other lags not in model +#ModelSign <- LagModel2Sign(i1,5,RegCoefs) ---- +ModelSign <- LagModel2Sign(ColsInModel,5,RegCoefs) # revised 2024-03-04 + + +################################################################################ +# +# MAKE NAMED LIST FOR RETURN + +Output<-list("ColsInModel"=ColsInModel,"Model"=ModelPicked,"ModelCoded"=ModelCoded, + "ModelSign"=ModelSign,"yearsCal"=yearsCal,"yearsRec"=yearsRec,"MaxLagNegPos"=c(nNeg,nPos), + "LeftOutCV"=LeftOutCV,"IncrementR2adj"=c1,"RegCoefs"=RegCoefs,"Rsquared"=R2, + "RsquaredAdj"=R2a,"F"=Foverall,"Fp"=Fp, "Lsig"=Lsig,"REcv"=REcv,"REa"=REa,"REb"=REb, + "RMSE"=c(rmseCal,rmseCV),"LREcut"=LREcut,"Lrefit"=Lrefit,"LNegOnly"=LNegOnly, + "Lreject"=Lreject,"yhat"=yh) +return(Output) +} + +ForwMoot <- function(X,namesX,y) { + # Moot-point forward stepwise regression for special case of one potential predictor. + # D. Meko + # Last revised 2022-12-13 + # + # Tailored for reconsw4, such that works with middle column (lag 0) of a matrix + # of predictors assumed to be lagged t-1:t+2 from predictand + # + # INPUT ARGUMENTS + # y [matrix] 1-col of predictand + # X [matrix] one-col matrix of the single potential predictor + # namesX [character] vector of id of potential predictor + # + # OUTPUT + # H: named list, + # names(H)<-c('Model','StepMaxR2adj','ColsInModel','Coefficients', + # 'ColsInOrderEntry','Rsquared','RsquaredAdj','Step', + # 'RsquaredAllSteps','RsquaredAdjAllSteps','Foverall', + # 'Fpvalue') + # Model [lm object] is a special type of R object, and holds many of the + # regression statistics and data, such as the residuals and predicted data. + # R has functions that operate on lm objects. For example, + # summary(H#Model) shows a summary table of the regression + # The Coefficients, combined with ColsInModel would allow a reconstruction to + # be generated from the long time series of potenial predictors X. + # ColsInModel gives the columns of that matrix that the coefficients apply + # to. By plotting RsquaredAllSteps or RsquaredAdjAllSteps agains step, you + # can disply how R-square and adjusted R-square changes with step in the + # stepwise modelin. + # Most of the other list items are obvious from their names. StepMaxR2adj is + # the step at which adjusted R-square reaches a maximum. + + source(paste(code_dir,"Fpvalue.R",sep="")) # p-value of overall-F from lm() [not written by Meko] + + # Regression + G <- lm(y ~ X[,3]) # regression on col 3 of X, which is no-lag from y + kstep <- 1 # only one possible step in simple linear regression + + Foverall<-summary(G)$fstatistic[1] + p<-Fpvalue(G) + + H <- list('Model'=G,'StepMaxR2adj'=kstep,'ColsInModel'=3,'Coefficients'=G$coefficients, + 'ColsInOrderEntry'=3,'Rsquared'=summary(G)$r.squared,'RsquaredAdj'=summary(G)$adj.r.squared, + 'Step'=kstep,'RsquaredAllSteps'=summary(G)$r.squared, + 'RsquaredAdjAllSteps'=summary(G)$adj.r.squared,'Foverall'=Foverall,'Fpvalue'=p) + + return(H) + +} + diff --git a/siteData_Katun.txt b/siteData_Katun.txt new file mode 100644 index 0000000..14603b9 --- /dev/null +++ b/siteData_Katun.txt @@ -0,0 +1,229 @@ +Year russ135 russ137 russ133 russ232 russ233 russ255 russ127 russ129 russ234 russ259 russ222 russ140 russ136 russ228 russ130 russ254 russ230 russ229 russ235 russ226 mong018 mong017 russ252 mong029 mong007 mong009 mong024 mong016 mong025 mong020 russ247 russ251 russ257 russ250 russ246 russ227 russ248 russ231 +1786 1.2025 1.0994 1.0881 1.394 1.4459 1.3051 1.2306 1.1679 1.0305 1.3058 1.1319 0.9893 0.7743 1.0676 1.0391 1.1255 1.6345 1.1964 1.4398 1.4222 0.8869 1.0656 1.0436 1.1102 1.0304 1.2093 0.9762 1.0619 1.0286 1.0413 1.2013 1.2434 1.3941 1.3746 1.2143 1.2301 1.2443 1.1716 +1787 1.1641 0.6202 0.9215 1.1561 0.8305 1.1549 1.3006 1.3233 0.7702 0.9178 0.9843 1.3825 1.2804 1.0939 1.0801 0.9111 0.671 0.9157 1.182 1.1689 0.9854 0.925 0.9765 1.187 0.8948 1.0395 0.8532 1.0345 0.8623 0.9974 1.0069 0.9874 1.2121 1.1436 1.0234 1.1051 1.0718 1.2904 +1788 0.5927 0.473 0.5195 0.4642 1.2558 0.5658 0.7932 0.5881 0.5723 0.7186 0.712 0.8935 0.7718 0.7348 0.7525 0.6146 1.1972 0.6058 0.9758 0.5431 0.9254 0.7952 0.7461 0.7892 0.901 0.6105 0.5228 0.7167 0.6843 0.7041 0.616 0.6537 0.6726 0.5677 0.7046 0.6493 0.4819 0.8707 +1789 1.0575 1.0194 1.0083 0.7651 1.0167 1.0921 1.2563 1.0394 0.9553 0.62 1.059 1.0174 1.0743 1.0029 0.9943 0.8796 1.3212 0.8696 1.2068 0.8645 0.9236 1.2806 0.9039 1.3942 1.409 1.0343 1.1983 1.225 1.4879 1.2792 0.9935 0.9688 1.0803 1.0275 0.9902 1.1387 0.8661 1.5064 +1790 1.1284 0.9122 0.9608 0.9594 1.0703 1.0966 1.0905 1.1924 0.9505 0.9406 0.8803 1.109 1.0403 1.158 1.1542 0.9659 1.0641 0.9764 0.9007 1.0063 1.0197 1.0883 1.0576 1.1759 1.2414 1.0885 1.1111 1.0561 1.0558 1.1836 1.0837 0.9726 1.0925 1.0526 1.0325 1.1345 0.9542 0.9791 +1791 0.8953 1.0592 1.1145 1.0406 1.0232 1.1372 1.1197 1.1689 1.1261 1.0613 0.8994 0.9673 0.8764 0.9242 0.9379 1.0286 1.0606 0.9924 0.7262 1.011 0.871 0.8028 0.9472 0.8793 0.7925 1.0641 1.2068 1.1017 1.1006 1.1523 1.1333 1.23 1.0848 1.0629 1.0905 0.9955 1.0799 1.022 +1792 1.0655 1.0348 1.0513 0.9588 0.8836 0.9739 0.9181 1.0631 1.0482 0.967 0.9444 1.0078 0.9139 1.0004 1.0212 0.7838 0.7149 0.9487 0.7552 0.9599 1.2022 0.6859 0.8672 0.5925 0.5747 0.7525 1.118 0.985 0.9871 1.121 0.8588 0.9168 0.6122 0.7917 0.8431 0.8117 0.9465 0.8529 +1793 0.9945 1.0469 1.0211 1.0172 0.878 0.9295 0.7807 1.0726 1.0096 0.991 0.9723 0.8993 0.9056 1.022 1.0274 1.0781 0.8298 1.1205 0.8685 0.9908 0.9092 0.9911 1.0661 0.937 0.707 1.0247 0.9492 0.873 0.8208 0.8593 1.1554 1.2441 1.0574 0.9916 1.094 1.1109 1.0434 0.9613 +1794 0.9356 0.996 1.0684 0.9502 0.9723 0.9854 1.1956 0.9555 0.9502 0.9372 0.9738 0.581 0.609 0.6261 0.6 1.0482 1.0786 0.9276 0.6518 0.9766 1.0736 1.0513 1.1061 0.9186 0.9706 1.0509 0.9032 0.9211 0.8203 0.9561 1.0013 0.9102 1.1098 1.0309 1.0237 1.0483 0.9047 0.742 +1795 0.9783 0.7619 0.9574 0.8112 0.9766 0.8709 0.9345 0.6829 0.8819 0.8551 0.9899 0.8217 0.7582 0.6472 0.6314 0.9681 1.1665 1.1033 0.774 0.8288 0.9852 0.9655 0.9674 1.0656 1.0984 0.9372 0.9205 0.9388 1.1463 1.1649 1.0378 1.0522 0.942 0.9339 1.0028 1.0208 0.9414 0.8227 +1796 0.9303 0.8346 0.7189 0.917 1.182 1.0135 0.5109 0.9386 0.8864 0.8778 0.9081 0.9092 1.0429 0.9332 0.9131 1.0127 1.1275 1.0391 1.2432 1.0168 0.989 1.0012 1.0766 1.0096 1.0967 1.0364 0.8053 0.8581 0.9313 0.9741 0.7931 0.7958 0.7889 0.9196 0.8979 0.7979 0.7582 0.8604 +1797 0.8615 0.7439 0.4929 0.92 1.0089 0.9263 1.0816 0.9919 0.7432 0.8186 0.9247 0.9405 0.9183 1.0034 1.0281 0.7761 0.9938 0.7884 0.77 0.9647 1.1123 0.9956 0.848 0.9726 0.8558 0.7467 1.0067 1.0112 1.138 1.0482 0.8161 0.777 0.8618 0.9423 0.8689 0.8461 0.7143 0.8942 +1798 1.0619 1.1193 0.951 1.0762 1.2831 1.1127 1.0989 1.1291 1.1239 0.9506 1.1087 1.1687 1.1842 1.1394 1.1564 1.2509 1.2666 1.1232 0.9215 1.1377 1.0752 1.2116 1.1164 1.1873 1.1611 1.2001 0.7887 0.9175 0.6849 0.841 1.1788 1.023 1.1815 1.0888 1.1283 1.2507 0.976 1.0296 +1799 0.9118 0.9608 0.8122 0.8542 1.1773 0.9419 0.8368 0.8844 0.9271 0.9157 0.9342 0.9611 0.8864 0.9413 0.8903 0.9222 1.1374 0.9514 1.1818 0.845 1.0617 0.9785 0.946 1.0562 1.0588 1.0309 0.6683 0.795 0.5678 0.6793 0.8724 0.901 0.916 0.899 0.9265 0.925 0.9042 0.9047 +1800 0.9735 0.9014 1.0309 0.9617 1.4224 1.0695 1.0628 1.1622 0.9493 0.8921 0.938 1.0056 0.9138 1.0117 1.0188 0.9223 1.5546 0.9516 1.3373 0.9853 0.9879 1.0397 0.9648 0.9206 0.9909 1.0296 1.2337 1.0447 1.4249 1.0911 0.9348 0.945 0.8293 0.9585 0.9453 0.8798 0.982 1.2122 +1801 1.0955 1.2082 1.0004 1.0205 1.2265 0.9846 0.9573 0.836 1.1631 0.9533 1.0143 0.8282 0.9497 0.7285 0.7735 1.0327 1.2559 1.0348 1.6318 1.0912 0.9295 0.9924 1.029 1.0622 1.2196 0.934 0.9622 1.0345 1.226 1.3027 1.0145 0.7391 1.0019 0.9864 0.9563 1.002 0.8755 1.3151 +1802 0.9956 1.1021 1.0197 1.0831 1.3038 1.149 1.0723 0.9306 1.0866 1.0691 0.8555 0.619 0.6269 0.8495 0.7902 1.0682 1.259 1.1488 0.9402 1.094 0.9757 1.2456 1.1195 1.1107 1.15 1.0064 1.1963 1.1083 1.339 1.0468 0.9714 1.0368 1.1317 1.0634 1.0499 1.0778 1.0596 1.1615 +1803 1.197 1.3227 1.0968 1.1752 0.8914 1.1434 1.2278 1.1688 1.2824 1.0853 1.0158 1.0707 1.1733 1.1352 1.1672 1.1365 0.909 1.1469 1.2688 1.0977 0.9626 1.3776 1.2073 1.306 1.417 1.298 1.2767 1.1825 1.1831 1.2937 1.3733 1.3096 1.2715 1.3049 1.2045 1.2014 1.2702 1.2394 +1804 0.8982 1.0615 0.9625 1.0628 1.1073 1.0887 1.0805 1.0412 1.0091 1.0744 0.9462 0.7965 0.9045 0.8961 0.8596 0.9736 1.0101 1.006 0.8046 1.0072 1.0821 1.1134 1.0467 1.0087 0.9298 1.0205 0.8814 0.9348 0.8841 1.0916 1.0188 1.1122 1.0329 1.0042 1.0102 1.0423 1.0138 0.8215 +1805 1.209 1.1166 1.2978 1.0027 0.9666 1.0847 1.0633 1.0421 1.1268 1.0237 0.9606 1.1194 1.2043 1.1251 1.1371 1.0311 0.6992 1.0519 1.0007 0.9864 1.2468 0.6644 0.9454 0.7038 0.7274 0.9733 1.0966 1.0795 1.0497 0.9961 1.018 0.9261 0.961 1.0926 1.0227 1.0411 0.9293 1.2489 +1806 1.3806 1.1826 1.2949 1.1338 1.1334 1.1382 1.0455 1.1355 1.1883 1.1628 0.9707 1.1524 1.1682 1.0867 1.0997 1.0026 1.1521 1.1567 1.3666 1.0785 0.6637 0.8025 0.8686 0.999 1.2385 1.0647 0.8949 1.0573 1.2005 0.8839 1.0837 0.9099 1.0156 0.9955 1.0065 1.1585 0.9838 1.0535 +1807 0.9888 0.9198 0.9549 1.0311 0.9515 1.0325 1.1093 1.0826 0.8851 1.051 0.8747 1.0892 1.1737 1.0336 1.0147 0.8814 1.2161 1.0509 1.6227 1.022 0.8448 1.1886 0.959 1.2388 1.1516 1.1134 1.0959 1.115 1.2687 1.0251 1.018 1.086 0.9947 0.8528 0.9752 0.988 1.121 1.0214 +1808 1.1212 0.9476 0.97 0.9731 1.3012 0.9008 0.8255 1.034 1.0262 0.8481 0.9158 1.0932 1.1229 1.0063 1.0157 1.075 1.2884 1.1645 1.0476 1.002 0.9211 0.9943 1.0893 1.2509 0.9668 1.1358 1.1945 0.9114 1.0878 1.1497 0.6837 0.8208 0.7679 1.0384 0.9264 0.8679 0.7967 0.9002 +1809 0.9968 0.9882 1.0798 0.9926 0.9425 0.906 1.131 1.1499 0.9785 1.07 1.0032 1.1054 1.1684 1.095 1.0699 0.9333 0.7877 1.0684 0.9274 1.081 0.8101 0.8692 0.8757 1.2479 0.8034 1.2154 1.0117 1.0357 1.0027 1.1157 1.0453 0.9688 0.9675 0.9214 0.9824 1.0402 0.8918 1.0624 +1810 1.2806 1.1606 1.1061 1.2824 0.9727 1.0343 1.2049 0.9787 1.1887 1.2243 1.1027 1.0848 1.0155 1.1884 1.1537 1.156 0.9279 1.1065 1.2732 1.2226 0.7815 1.1289 0.9766 1.02 1.2287 1.0388 1.0329 1.0581 1.1738 1.0159 1.275 1.1032 1.2471 1.2455 1.1438 1.2416 1.175 1.0475 +1811 1.2804 1.2231 1.1801 1.2652 1.026 1.147 1.1145 1.0766 1.1652 1.3158 1.1616 1.1754 1.0716 1.0994 1.1042 1.1628 1.0864 1.2561 1.049 1.1556 0.8114 1.0455 1.1615 1.0844 0.7494 1.0418 1.058 1.0835 0.9101 1.2155 1.3688 1.2938 1.3134 1.2179 1.193 1.1678 1.2721 0.9928 +1812 0.9019 0.9911 0.878 0.7992 0.7676 0.9332 0.9705 0.8185 0.969 0.9192 0.9432 0.8969 0.7372 0.9415 0.9937 0.631 0.8807 0.8176 0.7045 0.8112 0.8438 0.5642 0.7857 0.516 0.66 0.7134 1.0416 0.8988 0.9469 0.7931 1.0163 1.061 0.8839 0.7129 0.8826 0.8412 1.0708 1.0086 +1813 0.6931 0.4885 0.6843 0.3167 0.7846 0.5811 0.9284 0.9818 0.5382 0.3857 0.6476 0.9868 0.8489 0.9278 0.9151 0.6377 1.0075 0.4448 1.2307 0.5259 0.8353 0.8297 0.9408 0.6377 1.0849 0.6191 0.8952 0.9073 0.8921 0.804 0.5394 0.6274 0.522 0.5273 0.6652 0.5884 0.6909 1.0862 +1814 0.8059 0.7429 0.8381 0.7975 1.0007 0.769 0.8676 0.7869 0.7368 0.778 0.7312 0.9712 1.0716 1.0496 1.1013 0.8908 1.1754 0.7349 1.0709 0.8753 0.786 1.0084 0.9791 0.98 1.0786 0.9123 0.7433 0.922 0.6074 0.7642 0.6096 0.53 0.6996 0.7687 0.7918 0.7549 0.6056 0.9423 +1815 1.1763 1.2329 1.1963 1.0769 1.1136 1.0953 1.2077 0.9494 1.2116 1.1451 1.3013 1.3325 1.205 1.3549 1.4062 1.0981 1.4002 0.9513 1.3524 1.0745 0.9094 1.0942 1.0437 1.0246 1.0934 1.0468 1.1191 0.9407 0.979 0.9948 1.0557 1.1323 1.1656 1.0654 1.0856 1.0641 1.2061 0.9549 +1816 1.0122 0.8917 0.8973 1.027 1.1191 1.0201 0.9826 0.9911 0.9114 1.0712 0.9844 0.993 0.9229 0.8477 0.8329 1.0504 1.2455 0.9293 0.8643 1.0501 0.8305 0.9434 0.856 0.807 0.8266 0.9598 1.1497 1.0788 0.8069 1.0686 1.1846 1.1103 1.0429 0.9586 1.0425 1.0352 1.1229 1.0824 +1817 1.0113 1.0177 0.9185 1.0372 1.0121 1.0575 0.9246 1.0329 0.9912 0.9724 0.9713 0.9262 0.93 0.9828 0.9748 1.0423 1.4878 0.877 1.3689 1.0685 0.8376 0.7499 0.9197 0.6486 0.6652 0.8931 0.8512 1.0481 0.8326 0.7731 1.0868 1.0384 0.9401 0.9712 1.0104 0.9017 1.0792 1.0864 +1818 1.0676 1.0345 1.0947 0.9342 1.0079 0.9604 1.1217 0.9466 1.0551 1.0324 0.9429 1.0973 1.0931 0.9729 1.0004 0.9238 0.9727 0.9208 0.9245 0.9791 0.8777 0.6977 0.9285 1.0389 1.0584 1.0013 0.8542 0.9748 0.7792 0.8286 0.9182 1.0494 0.8749 0.9736 0.9662 0.8902 1.0842 0.9955 +1819 0.8105 0.8387 0.8566 0.6536 0.6707 0.6861 0.7796 0.8498 0.8038 0.7146 1.0055 0.6338 1.1006 0.9513 0.9602 0.7999 0.6688 0.7083 0.7024 0.7958 0.7754 0.7573 0.9139 0.901 0.9809 0.892 1.0143 0.9802 0.9767 0.938 0.7986 0.8302 0.767 0.8351 0.8498 0.7422 0.7532 0.9341 +1820 1.0201 0.8312 1.0006 0.8843 0.9989 0.9227 0.8283 0.8648 0.8802 0.9413 0.8512 0.8367 0.9303 0.9576 0.9369 0.9222 0.991 0.9133 0.7151 0.9204 0.9282 1.0208 0.9904 1.0822 1.045 1.0029 1.011 0.9878 0.9757 0.9648 0.8124 0.7767 0.8194 0.9218 0.9001 0.8827 0.8722 1.0123 +1821 1.2283 1.0357 1.0978 1.1127 0.9054 1.045 1.0774 1.0342 1.1037 1.0811 0.9863 1.0303 1.1258 1.0988 1.1428 1.0993 1.0841 1.0159 1.0284 1.1018 1.0311 1.0252 1.0763 1.119 0.5596 0.9818 0.9905 1.1738 1.0316 1.0899 1.1725 1.0891 1.1247 1.0607 1.0866 1.0293 1.1401 1.2741 +1822 0.9737 0.8875 1.0048 0.7938 1.0302 0.9777 1.1685 1.0388 0.904 0.918 1.0384 0.9794 0.9622 0.9841 0.9532 0.8813 0.9794 0.9002 1.0822 0.7551 0.8225 0.8146 0.9884 0.811 0.9313 0.8421 0.8241 0.7901 0.8239 0.7334 0.9284 1.0772 0.9769 0.8383 0.9486 0.9533 1.131 0.8106 +1823 0.9641 1.0207 0.9418 1.034 0.972 1.0439 0.8762 0.9038 1.0706 1.0861 1.1033 0.693 0.6765 0.6959 0.7184 1.2021 0.9194 1.0238 1.0239 0.9861 1.1131 1.1002 1.1425 1.1491 1.0839 1.1563 1.0162 1.0359 0.9685 1.0278 1.0804 1.0143 0.952 0.9845 1.0439 0.8999 1.0324 0.9082 +1824 1.0936 1.2301 1.0204 1.1143 0.9786 1.0354 1.0133 0.9576 1.1657 0.9978 1.1932 1.1278 0.8989 1.078 1.1179 0.9982 0.8928 1.017 0.6675 1.071 0.8381 0.7342 0.7768 0.8673 0.5617 0.827 1.0754 1.0612 0.9404 1.1837 1.1154 1.0908 0.9074 0.9251 1.0107 1.0627 1.0859 0.9194 +1825 1.0191 0.8875 1.0597 0.9008 0.7475 0.9651 0.8737 1.1586 0.9249 0.9234 0.8567 1.0903 1.1824 1.1778 1.1406 0.891 0.7988 0.8755 0.8755 0.8725 0.8315 0.8437 0.835 0.8674 1.0177 0.8795 0.6315 0.8159 0.7802 0.9357 0.9771 0.9999 0.8562 0.9206 0.9402 0.8619 0.9243 0.8069 +1826 1.0149 0.8039 0.7634 0.698 0.7733 0.779 0.7883 0.7932 0.8093 0.7755 0.8292 0.8208 1.1961 0.7879 0.7914 0.9267 0.676 0.8086 0.6324 0.8396 0.9833 1.1006 0.9465 1.0751 0.91 0.8563 0.8899 0.8455 1.0824 1.0265 0.9168 0.7461 0.851 0.9007 0.9106 0.7579 0.7838 0.7428 +1827 1.0681 1.0147 0.9804 1.0847 0.9272 1.1238 0.9387 0.8936 1.061 1.0504 1.0537 0.805 0.9574 0.8382 0.8214 1.0544 1.0842 1.0016 1.1543 1.0743 1.0524 1.0577 1.0684 1.1067 0.9455 1.0976 1.1705 0.9529 0.9284 1.0865 1.0024 0.9368 0.9244 1.0554 1.0007 1.0689 0.9458 1.1649 +1828 1.0694 1.0834 0.9948 1.0884 0.9969 1.1339 1.1633 0.9147 1.0997 1.085 1.0791 1.0523 0.8973 0.9405 0.9796 1.2512 1.0697 1.1426 0.9345 0.9894 1.2526 1.1897 1.1503 1.1297 1.0773 1.1027 1.108 1.0732 1.2053 1.1803 1.1079 1.137 1.0644 1.1377 1.1313 1.0978 1.1182 1.0207 +1829 1.1476 1.1029 1.0933 0.9789 0.9041 1.0076 1.0189 1.1307 1.0488 1.1554 1.1859 1.0214 1.0282 1.0818 1.1064 1.1073 0.6813 1.1129 0.8418 0.9442 0.9779 1.0865 1.1959 1.0762 0.9361 1.1114 1.1106 1.0345 1.2163 1.2097 1.0094 1.1332 1.0201 1.0219 1.0459 1.0739 1.2117 1.0227 +1830 1.3243 1.3093 1.3947 1.0245 1.0668 1.0871 1.2176 1.3117 1.2394 1.0915 1.0616 1.0464 1.0078 0.8823 0.8947 1.1492 1.1389 1.3324 0.9867 0.9932 1.1052 1.0244 1.1191 0.9774 0.7971 1.0802 1.1574 1.0833 1.3171 1.2615 1.2997 1.3033 1.2971 1.1755 1.1925 1.1656 1.2912 1.3152 +1831 0.8643 0.9403 0.9434 0.9351 1.1165 0.9892 1.2715 1.1458 0.9345 0.9653 1.2038 1.1939 0.8818 0.8115 0.792 1.0739 0.9173 0.9829 1.1996 0.9245 1.0268 1.1901 0.9576 1.0218 1.1074 0.9582 0.8795 0.9434 0.9616 1.0403 0.9 0.9727 1.0278 0.9884 0.9995 0.9483 0.8594 1.1015 +1832 0.9384 0.9677 0.9601 1.0119 1.035 0.9602 1.0329 1.0601 0.9562 1.0937 1.2349 1.0086 0.9514 0.891 0.9007 1.1783 1.0372 1.1337 0.9097 1.049 1.026 1.0029 1.1815 0.8297 0.8535 0.8826 1.1042 0.9605 0.9971 0.9739 1.1146 1.1314 1.0466 1.0737 1.0951 1.0752 1.0786 1.0276 +1833 0.6481 0.6973 0.8034 0.8557 0.7887 0.7852 1.0789 0.9907 0.8027 0.8366 0.9724 1.0266 1.063 0.9538 0.9395 0.9225 0.9722 0.8802 0.6564 0.9054 0.7014 0.9629 0.9296 0.7972 0.9494 0.8334 1.0002 0.9282 0.979 0.9212 0.8304 0.7143 0.7862 0.9703 0.8825 0.9572 0.9543 1.0526 +1834 1.0512 0.8228 0.9801 1.0072 0.9492 1.0043 0.9312 0.979 0.7558 0.8824 0.8915 0.959 0.8676 1.0039 0.9843 1.0317 1.0026 0.9957 1.116 1.0335 0.8137 0.9657 0.8799 1.0668 1.2674 0.8556 1.1937 1.0817 1.1892 0.7996 0.9351 0.9147 0.9657 0.9797 0.973 0.937 0.876 0.8527 +1835 0.9206 0.7737 0.9017 0.8367 1.068 0.8645 0.8739 0.5921 0.7984 0.9306 1.1737 0.7428 0.9114 0.8468 0.8633 0.6669 0.8491 0.8216 0.9704 0.787 0.7357 0.9201 0.7571 1.0253 1.044 0.8652 0.8689 0.9405 0.6412 0.7175 0.6039 0.7086 0.6741 0.6966 0.7474 0.6118 0.7662 0.7412 +1836 1.0329 1.0816 1.1053 1.0991 0.9342 1.0162 0.8078 0.9876 1.0076 1.1177 1.1896 0.8329 0.6575 0.7167 0.7251 1.078 0.8876 1.0389 0.6726 1.1411 0.9287 0.9709 1.067 1.0716 1.0053 0.9593 0.9797 0.9004 0.9138 0.8443 0.9385 1.0877 0.7274 0.9512 0.9874 0.7351 0.9381 1.0974 +1837 1.0859 1.1031 0.9712 1.1312 0.8836 1.0926 1.2198 1.0014 0.9934 1.1643 1.1582 1.0582 0.6567 0.8464 0.8093 1.1992 0.851 1.061 0.7449 1.1356 1.1359 1.1001 1.1512 0.9854 0.8809 1.0009 1.0077 0.9807 0.9081 1.1141 1.087 1.1448 0.9964 1.0278 1.0863 1.0977 1.1576 0.9699 +1838 1.0374 1.1425 1.1123 1.1011 1.1323 1.0009 1.0746 1.1596 1.0028 1.1234 0.7087 1.0951 1.0952 1.2201 1.1889 1.0702 0.9207 1.166 1.104 1.0156 1.0071 1.0169 1.0515 1.184 1.2219 1.0087 0.7702 0.9514 0.6571 0.9124 0.9634 0.9664 1.0531 1.0035 1.0254 1.0266 0.9721 0.7798 +1839 0.9912 1.1082 1.0744 0.9075 1.009 0.9952 1.0735 0.8728 1.0687 1.0621 1.0166 1.0212 0.905 1.0136 1.0046 1.1904 1.0984 1.3283 0.9374 0.9765 1.0533 1.0994 1.0291 0.872 0.9069 1.0073 0.9296 0.9473 0.963 0.893 1.0994 1.0948 1.0341 1.1088 1.0851 1.0077 1.0775 0.9605 +1840 0.7634 0.674 0.6658 0.5458 1.077 0.7613 0.8656 0.9081 0.6846 0.6824 0.6897 0.9841 0.987 0.9513 0.9538 0.695 1.0078 0.6293 1.0569 0.6379 0.7625 0.8132 0.8741 0.7297 0.8771 0.8414 0.9877 0.988 1.0116 0.9206 0.6486 0.4958 0.6594 0.7822 0.7403 0.6478 0.5808 1.1154 +1841 1.0728 1.2413 0.9871 1.1164 1.3048 1.1048 1.0951 1.1529 1.1262 1.2056 1.2562 0.8336 1.1434 1.0158 1.0145 1.3588 1.2434 1.1877 1.2178 1.1712 0.9903 1.0657 1.1818 1.2479 1.1292 1.0475 0.9059 1.0074 1.1503 1.0782 1.1565 1.2114 1.023 1.2594 1.1617 1.0671 1.0755 1.1888 +1842 0.7991 0.6431 0.7786 0.6911 0.9072 0.8522 0.8164 0.7844 0.7745 0.8063 0.9755 0.6937 0.6528 0.7672 0.8029 0.6602 0.9672 0.8091 0.7417 0.7433 0.6871 0.7386 0.7355 0.6789 0.8741 0.7854 0.6557 0.7545 0.6661 0.7973 0.7205 0.8044 0.6977 0.7732 0.7836 0.6856 0.8052 0.804 +1843 1.072 1.0101 1.0305 0.8967 0.9274 0.8441 0.6255 0.8492 0.9448 0.8764 0.8597 0.876 0.7806 0.8615 0.9026 0.879 0.8583 0.8927 0.8613 1.0378 0.8266 0.8949 0.7265 0.725 0.9396 0.9129 1.0614 0.9163 0.743 0.9466 1.0341 0.7142 0.9197 1.0183 0.9322 0.8914 0.9458 1.159 +1844 1.1083 1.1493 1.1531 1.1144 1.1881 1.3001 1.1451 0.8685 1.0526 1.2253 1.082 0.8786 0.7855 0.9009 0.9027 1.1504 1.3206 1.1184 0.9581 1.0831 1.0355 0.8957 1.147 0.9961 1.3358 1.0651 1.1224 0.9829 1.0033 0.9705 1.2125 1.1268 1.0641 1.1154 1.1045 1.0848 1.161 0.7355 +1845 1.0888 1.0915 0.9255 1.0068 0.983 1.0837 1.2072 0.9226 1.0548 1.0802 0.8554 0.7486 0.7463 0.8433 0.8593 1.2179 1.1262 1.0311 1.1765 0.9882 0.9605 1.0642 1.0178 1.0015 1.1938 1.0685 1.02 1.0344 1.2223 0.9983 1.0059 0.9375 0.965 1.0723 1.0451 0.9074 0.935 1.0323 +1846 1.1691 1.2927 1.172 1.1664 1.3237 1.1417 1.2459 1.3468 1.2282 1.1869 1.1069 1.2162 1.2581 1.396 1.3834 1.1889 1.3275 1.2077 1.2075 1.0711 1.2171 1.4139 1.2417 1.3687 1.2818 1.2291 1.3315 1.0996 1.3569 1.3441 1.1534 1.0379 1.1601 1.212 1.1335 1.1819 1.0844 1.251 +1847 0.7741 0.7592 0.6958 0.6552 0.5567 0.7363 0.8981 0.9549 0.8027 0.7262 0.8996 0.8887 1.0131 0.9963 1.0553 0.4744 0.747 0.7177 0.8481 0.7734 0.8607 0.9205 0.9735 0.7038 0.6668 0.8706 0.5811 0.7583 0.8071 0.7797 0.569 0.5778 0.5878 0.6078 0.6534 0.6469 0.613 0.6615 +1848 1.1624 1.3827 1.0323 1.0648 1.1165 0.9815 1.1471 1.1431 1.2846 1.0736 1.4467 0.9828 1.1163 1.1194 1.0611 1.0855 1.0543 1.1589 1.2248 1.0239 1.1713 1.1492 1.1865 0.8534 0.9583 0.9295 1.0837 0.9413 1.1972 1.0733 1.0365 1.1284 1.0392 1.1578 1.0751 1.0528 1.0633 1.2225 +1849 0.8823 1.0109 0.7628 0.9723 0.9216 1.0565 0.8083 0.6792 0.981 1.041 0.7687 0.7265 0.7538 0.7638 0.7947 1.1011 0.9046 1.1349 0.8032 0.9577 1.0496 1.2356 1.0258 1.0697 1.1705 1.0205 1.2738 1.0563 1.144 1.1191 0.986 0.9815 1.0454 0.8152 1.004 1.0813 1.058 0.6688 +1850 0.6194 0.43 0.7054 0.7649 1.1741 0.9411 0.6052 0.5586 0.5543 0.7952 0.6021 0.581 0.7806 0.5743 0.6099 0.8078 1.0173 0.7819 1.1251 0.8703 0.8043 0.9272 0.8879 0.9694 1.048 0.9576 0.9594 0.9446 0.9086 0.8591 0.479 0.6736 0.6954 0.8168 0.7744 0.6613 0.6454 0.7293 +1851 1.0927 1.1589 1.0765 1.0743 1.3026 1.0407 1.1493 1.1213 1.1152 1.1457 1.1517 0.9224 1.2016 1.058 1.0325 1.0126 1.2341 1.1979 1.2445 1.0155 1.0805 1.2371 1.0939 1.1105 1.0009 1.2049 1.2857 1.0746 1.1642 1.2381 0.8232 0.9896 0.8746 1.0562 0.9765 1.0497 0.7787 1.2214 +1852 0.9584 0.8877 1.0116 0.9056 0.9043 0.9735 0.8745 0.8036 0.8868 0.889 0.7761 0.7744 0.9968 0.9316 0.907 0.9032 0.9523 0.9308 0.9452 0.9612 0.886 0.9679 0.9495 0.9395 0.9619 0.9228 0.9622 0.9812 0.9148 0.7785 0.7882 0.7663 0.7932 0.9913 0.8943 0.8306 0.817 0.9018 +1853 1.1407 1.1002 1.1592 1.0741 1.2669 1.0561 1.0455 1.1766 1.0559 0.9261 1.124 0.9884 1.1822 1.0678 1.0542 1.0969 1.0822 1.1009 0.9396 1.0166 1.038 1.1817 1.0292 1.1842 1.2669 1.0435 1.0848 1.262 1.088 1.1442 1.0276 1.1021 1.0542 1.0503 1.0587 1.1278 1.0606 0.9948 +1854 0.704 0.5633 0.5889 0.5343 0.6745 0.654 0.6024 0.5705 0.5861 0.6372 1.0093 0.6939 0.4962 0.5928 0.6655 0.7625 0.6517 0.6062 0.9637 0.6251 0.7647 0.5227 0.7471 0.5672 0.615 0.6575 0.4766 0.9726 0.7157 0.8667 0.748 0.7345 0.7793 0.7741 0.8152 0.6647 0.7031 0.7791 +1855 1.1503 1.1491 1.2539 1.0607 0.9385 1.1079 1.1925 0.8788 1.1687 1.1262 1.0334 1.0891 1.2008 1.2878 1.2885 0.9449 0.9014 1.095 1.209 1.0291 0.9269 1.0594 0.9395 1.0859 1.1176 1.0665 0.9 0.8723 0.5567 0.7463 1.0248 1.0813 1.0692 0.9215 1.0032 1.04 1.0204 0.7856 +1856 1.1777 1.0521 1.0456 0.9635 1.2007 1.0825 1.0553 1.2191 0.9787 1.0257 1.1904 1.1473 1.2597 1.2102 1.147 1.0779 1.171 1.123 1.155 1.0448 1.025 1.0591 1.0845 0.8791 0.9012 0.9826 0.9033 0.8577 0.9646 0.829 0.9903 0.9985 1.0061 1.0225 1.0185 1.0193 0.9518 0.7849 +1857 1.3181 1.2521 1.2632 1.1588 1.1721 1.219 1.0837 1.0921 1.195 1.2145 1.0944 1.338 1.3079 1.2724 1.2295 1.1431 1.0695 1.1381 0.928 1.1484 0.9386 0.98 1.0774 0.9851 0.6993 1.0104 1.1498 1.1193 1.1803 1.1618 0.9392 0.9593 1.1791 1.1038 1.069 1.2235 1.0004 1.3578 +1858 0.8785 0.6831 0.6572 0.9898 0.5275 1.0409 0.8735 0.8398 0.7998 1.078 0.8988 0.655 0.9098 0.9729 1.0069 0.9746 0.6227 0.8708 0.8984 1.0334 0.8394 0.7894 1.0068 0.8945 0.8547 0.9408 1.3798 1.1863 1.0909 1.3098 1.0443 0.9445 1.0223 0.9822 0.994 0.9919 1.0544 0.9364 +1859 0.9865 0.8226 0.9135 0.8743 0.9546 0.8397 0.6809 0.9914 0.8407 0.8972 1.0014 0.7233 1.2657 1.0657 1.1156 0.8234 0.9511 0.9058 0.9221 0.9641 0.8024 0.7217 0.9211 0.8491 0.8943 0.8439 1.1208 1.0075 0.9694 0.7622 0.975 0.9229 0.8121 0.8621 0.8953 0.7661 0.8915 0.8926 +1860 1.0953 1.1443 1.1493 1.2155 1.1388 1.1182 1.153 1.0865 1.1773 1.3114 1.113 1.1673 1.2028 1.2023 1.1447 1.1693 0.9462 1.3495 0.8404 1.119 1.3119 1.3073 1.1495 1.1858 1.2476 1.2979 1.155 1.2124 1.2409 1.1325 1.2317 1.1658 1.2701 1.1926 1.1702 1.2125 1.1907 1.0957 +1861 0.9119 0.9753 0.9194 0.9251 1.1259 1.1674 1.1252 1.0435 0.9727 0.9331 0.8783 0.961 1.111 1.1338 1.1108 1.0321 1.0352 0.9618 0.9383 1.0409 1.1443 1.0067 1.056 0.8346 0.604 0.9064 1.0689 1.1051 1.0461 1.2448 0.9292 0.9531 1.2306 0.9713 1.0176 1.0105 0.9452 1.0675 +1862 1.0747 1.0582 1.0201 0.9151 1.1626 1.1011 0.8969 1.2372 1.0319 1.0136 1.1457 0.9891 1.2062 1.2089 1.1327 1.0841 1.1544 1.0163 1.1702 0.9601 1.0168 1.0475 1.0188 0.9128 0.9084 1.0099 1.09 1.0992 0.8761 1.1652 0.9131 1.0099 1.164 0.9919 1.032 1.1679 1.0253 1.1977 +1863 0.9968 1.0378 0.9712 0.9503 0.8936 0.9448 0.7271 1.0028 1.0207 0.9961 0.8978 0.8444 0.8663 0.9379 0.9686 0.864 0.8143 0.8191 0.407 0.9398 0.7898 0.7074 1.0358 0.7664 0.6888 0.8819 0.801 0.9324 0.4403 0.9308 0.8942 0.88 0.8588 0.9015 0.9026 0.9309 0.969 0.7427 +1864 1.1295 1.2449 1.0074 1.1395 0.9327 1.1002 0.9932 0.8837 1.1858 1.1094 1.144 0.9932 0.7351 0.7023 0.7108 1.2057 0.9915 1.069 0.9196 1.1607 1.0939 1.126 0.9949 1.2024 1.2063 1.1281 0.827 0.8501 0.9272 0.8308 1.1098 1.1535 1.2401 1.1731 1.1452 1.1272 1.1255 0.9397 +1865 0.9241 0.9375 0.9871 1.0065 0.8145 1.0072 0.9932 0.8249 0.9351 0.8956 1.0478 0.8227 0.6639 0.637 0.6386 1.055 0.8414 0.9759 0.8263 0.9712 1.0652 1.0676 1.1116 0.9593 0.969 0.967 1.23 1.0166 1.1706 1.113 0.9982 1.0702 1.0171 1.055 1.0283 0.9831 1.0083 0.8187 +1866 0.9337 1.0423 1.0807 0.932 1.1022 0.9586 1.0347 0.9152 0.9385 1.0126 0.9887 1.3471 1.217 1.196 1.1612 1.0351 1.0466 0.9858 1.0603 0.9254 0.9184 0.8162 0.986 0.9265 1.1463 1.0314 0.9623 1.134 1.1364 1.1037 0.9599 0.9691 0.881 0.9425 0.9692 0.8414 0.9498 0.8438 +1867 0.9531 0.8216 1.0608 0.9084 0.9224 1.0863 0.9239 1.0973 0.9213 0.7991 0.8097 1.0652 1.0247 0.8895 0.9002 0.9854 0.9957 1.1558 0.8228 0.9997 0.8965 0.8687 0.9623 0.9313 0.8715 0.8998 0.6775 1.2389 1.0237 1.0747 1.0271 1.1678 1.0539 1.2075 1.0753 0.965 1.1064 1.0721 +1868 1.1374 1.0442 1.1942 0.9795 0.9864 1.079 1.0805 1.0114 1.0245 0.9644 0.9213 1.1325 1.0186 0.973 0.9853 0.9061 0.8769 1.006 0.5848 1.0008 0.8516 1.177 1.0435 1.1494 1.223 1.0326 1.0656 1.0369 1.1357 1.2235 0.9309 0.9857 1.0434 1.0006 0.9641 1.1025 1.1071 1.0074 +1869 0.7602 0.8445 0.5281 0.8661 1.1152 0.8449 0.9097 0.7888 0.8922 0.8411 0.8786 0.8159 0.621 0.6927 0.7428 0.9705 1.0208 1.0081 1.1803 0.9363 0.9042 1.0861 0.9749 1.0193 1.0827 0.9378 0.9687 1.0125 1.0231 1.0333 0.8059 0.8164 0.8607 1.0031 0.9289 0.8982 0.766 0.7971 +1870 0.9943 1.1412 1.2394 1.0247 1.2692 1.1713 1.0554 0.8943 1.0924 0.8998 0.9372 1.1836 1.1195 1.1564 1.1421 0.8101 1.3725 1.0144 0.9381 1.0612 0.7517 1.1027 0.8499 1.0928 1.1927 0.9567 1.2572 1.1468 1.2207 0.9741 0.9523 1.1401 0.9902 0.9453 0.9673 0.9675 0.9844 1.2555 +1871 0.6789 0.7517 0.6682 0.7204 1.1358 0.8171 0.7437 0.7953 0.8539 0.8128 0.8167 0.8067 0.7588 0.8132 0.8358 0.956 1.2638 0.8681 1.6727 0.7272 0.9979 1.1313 0.9817 1.0623 1.0573 1.0843 0.9585 0.8709 0.7629 0.8914 0.5868 0.754 0.8229 0.9172 0.8792 0.7059 0.7931 0.8772 +1872 0.8429 0.8177 1.0401 0.8467 0.9419 0.8704 0.9913 0.9842 0.8841 0.9449 1.205 1.2775 1.1274 1.1882 1.1691 0.7324 0.8182 1.02 1.1287 0.8114 0.741 0.679 0.7619 0.5789 0.6404 0.6223 1.1615 1.0758 1.0261 0.8723 0.9092 1.0994 0.9277 1.0096 0.9409 0.8233 1.0409 0.8565 +1873 0.9602 1.0445 1.1145 1.094 0.7335 0.8991 0.7003 0.7777 1.0038 0.9934 0.9956 1.028 0.8024 0.9641 0.9821 0.8911 0.6725 0.9245 0.5131 1.07 0.8846 0.7471 0.9715 0.9982 0.9868 0.9205 1.0796 1.0095 1.0754 1.1065 1.0648 0.9773 1.0043 1.0484 1.003 1.0237 1.0052 0.933 +1874 0.6799 0.8069 0.974 0.6576 0.8944 1.0315 1.0085 0.8461 0.7697 0.7907 1.1373 0.7399 0.8221 0.8943 0.866 1.0288 1.0771 0.8458 0.7649 0.7106 0.96 1.1143 1.088 1.1924 1.1983 1.0844 0.7266 0.9784 0.7929 1.1812 1.1376 1.1917 1.1652 0.7362 1.0325 1.2303 1.0822 0.8285 +1875 0.6609 0.553 0.8112 0.7978 0.8079 1.1713 0.8649 0.9078 0.5071 0.9625 1.001 0.7885 0.8292 0.7151 0.7708 1.0939 0.9799 1.2101 0.7251 0.7927 1.0341 0.9901 1.0725 1.0459 0.9806 1.0816 0.6739 0.6893 0.7385 0.6581 1.0117 1.0834 0.9169 0.7179 0.981 0.8139 1.0843 0.2869 +1876 0.9641 0.9498 1.3474 1.0081 1.2369 0.9917 0.9749 1.1171 0.9132 1.0416 1.1787 1.0174 1.0299 1.207 1.1578 1.1826 1.1193 1.2177 1.1128 1.0101 1.05 1.2065 1.0648 1.1701 1.2516 1.0228 1.349 1.1344 1.2768 0.8471 1.0145 0.9958 1.0372 1.0756 1.0618 1.0023 1.0152 1.0976 +1877 1.0993 1.1239 1.3307 1.2503 1.2173 1.2002 1.1656 0.9633 1.1094 1.2602 1.0693 0.9656 0.8839 0.9847 0.9726 1.3193 1.0743 1.306 1.275 1.1344 1.2358 1.4219 1.4177 1.3831 1.2238 1.3045 1.6236 1.2887 1.3407 1.4229 1.3135 1.2654 1.3678 1.1336 1.2158 1.2216 1.2871 0.9988 +1878 0.9153 1.0026 0.8307 0.9302 0.5642 0.9577 0.6579 1.038 0.9643 0.9667 1.1005 1.019 1.0303 1.0482 1.0882 0.9121 0.5686 0.8568 0.7076 0.9181 1.0999 0.7749 1.1919 0.9342 1.0397 0.8787 0.9014 0.9029 0.867 1.1392 0.9669 0.997 1.0637 0.8243 0.9459 1.0347 1.1458 0.6205 +1879 1.0717 1.252 1.1555 1.2318 1.1034 1.1658 1.0303 1.0233 1.1978 1.0245 1.1028 1.2428 1.193 1.1856 1.1866 1.2463 1.1597 1.2574 1.068 1.1408 0.9649 0.6835 1.1689 0.9747 0.638 0.9966 0.898 0.8979 0.6205 1.0259 1.1188 1.1789 1.1524 1.0412 1.109 1.1706 1.0733 0.8907 +1880 1.0921 1.0395 1.198 1.079 1.0094 0.986 1.1441 1.0352 0.9493 1.1152 1.3246 1.317 0.9796 1.1399 1.1241 1.0509 0.7979 1.0319 1.2063 1.0508 0.8943 1.0448 0.554 1.1672 1.088 1.1522 0.8492 0.8824 0.9304 0.9114 1.0003 0.9427 1.0781 1.0913 1.0405 1.069 0.9226 0.93 +1881 1.0738 1.1896 1.2235 1.0302 0.9105 0.9277 0.7357 0.8163 1.1002 0.8955 0.9138 0.9905 0.8498 1.0308 1.0189 1.0795 0.887 0.8521 1.0787 1.1167 1.0694 1.1069 0.9749 0.804 1.0654 0.9494 0.804 0.8562 0.9385 0.7874 0.946 0.9002 1.0008 0.935 0.9973 0.8922 0.9533 0.7874 +1882 1.044 0.9874 0.9793 0.7144 0.8179 0.7313 1.1114 1.0756 0.9726 0.7127 1.1137 1.1567 1.099 1.2431 1.24 0.5666 0.8 0.7768 0.7398 0.8416 1.0672 0.9833 0.8488 0.9649 0.8083 0.8438 1.0888 1.0336 1.1505 0.9989 0.8799 0.9527 1.0073 0.9002 0.8584 0.9963 0.8282 1.0669 +1883 1.0482 1.0514 1.0006 0.7051 1.0352 0.9962 0.9978 1.017 1.0003 0.7195 0.9413 0.9117 1.1176 1.1477 1.1565 0.7041 0.9537 0.844 1.104 0.8359 0.7655 1.0014 0.9038 0.9923 0.8161 0.967 0.8868 0.9518 0.7843 1.1384 0.8885 0.9215 0.9742 0.9016 0.8847 0.9302 0.8246 1.0118 +1884 0.7958 0.5633 0.6854 0.7879 0.8664 0.8739 0.8632 0.8781 0.6862 0.7489 0.8882 0.583 0.8678 0.6952 0.7719 0.6335 0.8116 0.7276 1.0556 0.7844 0.6977 0.7592 0.7383 0.7818 0.8832 0.8487 0.7043 0.875 0.6681 0.8834 0.4509 0.6557 0.5917 0.648 0.691 0.5838 0.7938 0.9013 +1885 1.1634 1.092 1.1566 1.294 0.877 1.1028 1.1566 1.0497 1.1316 0.9936 1.2285 1.2699 0.9823 0.8208 0.8422 1.0705 0.9261 1.0841 0.5226 1.3897 1.1061 1.3221 1.0881 1.0209 1.0134 1.1602 0.8718 0.8559 0.9606 0.8255 1.1586 1.3418 1.1596 0.9875 1.1039 1.1203 1.238 0.6741 +1886 1.0603 0.7687 0.975 1.0431 0.9002 0.9613 1.0087 1.2081 0.8818 0.9093 0.9288 1.3005 1.3998 1.394 1.3686 0.8523 0.8902 0.9417 1.1653 1.0811 1.0021 0.7817 0.9907 0.6789 0.6638 0.9086 0.6846 0.6752 0.6299 0.7167 0.8604 1.0281 0.969 0.9339 0.9417 0.9254 0.9347 0.9605 +1887 0.8442 0.8477 0.7871 0.8247 0.9054 0.899 0.9594 0.9808 0.8414 0.838 0.8165 0.8653 0.8979 0.9142 0.9462 0.8707 0.8661 0.9098 1.0297 0.8696 0.6936 0.8024 0.8964 0.8571 0.8857 0.7891 0.7772 0.8832 0.872 0.7659 0.9385 0.9196 0.826 0.9994 0.9294 0.7582 0.9549 0.9826 +1888 1.1606 1.1098 1.1558 1.2012 1.4495 1.1984 0.9609 1.0953 1.1153 1.0356 1.0211 1.0991 0.9948 0.9362 0.9185 0.8481 1.3763 1.2356 0.9045 1.1396 0.7918 1.2244 0.815 0.9998 1.0568 0.8455 1.1487 0.9669 1.352 0.9238 1.0741 0.9693 0.9142 1.1522 0.992 1.0638 1.0392 1.2288 +1889 1.2941 1.2847 1.1638 1.1693 1.3385 1.0856 0.8677 1.0191 1.2091 1.0758 1.0932 0.8356 0.5113 0.8865 0.8731 1.1307 1.3311 1.1235 1.4984 1.0718 1.1831 1.4491 1.0977 1.2683 1.2281 1.2717 1.2463 1.1265 1.2476 1.1146 1.1118 1.1096 1.1694 1.0967 1.1013 1.1397 1.1946 1.1681 +1890 0.8483 0.8387 0.7219 0.8781 0.8897 0.8395 0.8428 0.7786 0.8817 0.9032 1.1342 0.5006 0.7807 0.6566 0.6745 1.0555 1.1174 0.9392 1.2577 0.8951 1.0529 0.994 1.0516 1.0007 1.0747 0.9496 0.9821 1.0137 0.9825 0.8962 0.8616 1.023 0.9739 1.008 1.0048 0.9418 0.9243 0.8867 +1891 1.0426 1.0739 1.0326 1.1408 1.1687 1.0304 1.0616 0.895 1.099 1.035 1.0715 0.9199 0.9226 0.9676 0.9561 1.084 1.29 1.1493 0.8539 1.0698 1.0516 1.1323 1.0986 1.2341 0.9095 1.0759 1.4481 1.1563 1.1947 1.1008 0.8999 1.0717 1.1548 1.1834 1.0751 1.1882 1.0532 1.0049 +1892 0.9562 1.1378 1.1409 1.0201 0.7691 0.918 1.0796 0.9883 1.1222 1.0335 1.1949 0.9191 0.8565 0.9378 0.91 0.8403 0.7253 0.7906 0.9513 1.042 0.6997 0.9277 0.9708 0.9851 0.9004 0.9692 1.0034 0.9584 0.8786 0.9964 0.9511 1.0331 0.9806 0.8361 0.9384 0.9775 0.9783 1.0286 +1893 0.9635 0.8784 1.0662 1.0403 0.7512 0.9557 0.8035 1.0261 0.9607 0.961 0.8377 0.7921 0.8357 0.8578 0.8726 0.8935 0.7964 0.8254 1.1391 1.0713 1.0465 1.0064 0.9284 0.8851 0.7287 0.9119 1.1038 1.041 0.843 0.8505 1.1429 1.0193 1.0776 1.023 1.0095 0.9175 1.0216 0.9592 +1894 0.9909 1.1398 1.153 1.0987 1.0677 0.941 0.9636 1.0015 1.0945 1.0913 1.0065 1.0461 1.1308 1.146 1.0782 0.9306 1 0.9344 0.9886 1.0425 0.972 0.887 0.9349 1.1319 1.0392 1.0548 0.9734 1.0005 1.0048 0.7738 0.9941 0.9712 0.8956 0.9795 0.9674 1.037 1.0282 1.0017 +1895 1.027 1.0339 1.0234 1.0073 0.7347 0.9523 1.0363 0.9798 1.0142 0.9035 0.9299 0.9166 1.0014 1.0901 1.0816 0.9049 0.8722 0.8737 1.3406 0.9063 0.9118 0.7981 0.9482 0.8657 0.8072 0.941 0.7935 0.9152 0.6946 0.9376 0.8968 0.8809 0.8488 0.944 0.9342 0.891 0.9045 0.9126 +1896 0.9585 1.0822 1.1537 1.2497 0.8028 1.1026 1.068 1.1187 1.1114 1.1561 0.9606 1.0526 1.1927 1.2757 1.2303 1.1297 0.8686 0.9409 0.6718 1.1572 1.0958 1.0863 1.2621 0.9346 0.925 1.0422 1.1941 1.1337 1.165 0.8993 1.1327 1.2104 1.153 1.0352 1.1171 1.1188 1.0835 0.8924 +1897 1.1006 1.1617 1.3634 1.1527 1.0608 1.15 1.1215 1.1 1.1524 1.1732 1.0118 1.1383 1.1477 1.1165 1.0943 1.0462 0.9716 1.0236 1.0288 1.1077 1.2848 1.3243 1.0468 1.2766 1.2571 1.158 0.8864 0.8612 0.8642 1.0072 1.0091 1.0671 1.009 1.0785 1.0459 1.0595 1.0861 0.8684 +1898 1.1148 0.9905 0.9157 0.9454 1.1185 1.2543 1.123 0.8045 0.9925 0.9772 1.0732 0.8749 0.5911 0.7758 0.8296 1.0428 1.0365 0.9504 1.0923 1.0332 0.9555 1.095 1.0847 0.8877 0.9636 1.0239 0.9081 0.8694 0.8966 0.968 1.014 1.0952 1.0304 1.0651 1.0411 1.0688 1.0805 1.1484 +1899 0.8202 0.8703 0.5949 0.967 0.7894 1.0182 1.109 1.1301 0.8919 0.8515 0.8962 0.9336 0.8824 0.8666 0.8647 0.9467 0.9838 0.9723 1.1242 0.8709 0.8671 0.852 0.7802 0.639 0.7761 0.6415 0.9961 1.0173 1.0247 0.9992 0.9358 0.9027 0.9911 1.038 0.9662 1.0033 1.0164 1.1605 +1900 0.9495 1.0097 0.8926 1.2828 0.6406 0.9616 1.2214 0.9974 1.1205 1.2405 0.9554 0.932 0.9069 0.9557 0.9621 1.0379 0.5794 1.0446 0.5032 1.1336 0.9937 0.655 0.8155 1.052 0.8735 0.8586 0.5765 0.9003 1.0525 0.7003 1.2426 1.2459 1.269 0.8138 1.0726 1.2517 1.2427 0.6868 +1901 0.9019 1.0378 1.0418 1.0868 0.7118 1.1178 1.2481 1.212 1.0578 1.1057 0.8042 1.2632 1.2665 1.3477 1.3437 1.157 0.7517 1.0919 0.5237 1.0003 1.2187 1.1611 1.2344 0.9557 0.8069 1.0667 0.6631 0.8073 0.7168 0.6202 1.2447 1.0753 1.2023 0.7542 1.0737 1.013 1.2776 1.0764 +1902 0.8095 1.0332 0.9421 1.0509 1.115 1.0556 1.0555 1.043 1.0262 1.1519 1.1239 1.2409 1.2297 1.1495 1.1906 1.1141 1.1619 1.0003 1.0862 1.0852 1.147 1.0268 1.1443 0.8207 0.9044 1.0375 1.2008 0.9752 1.0695 0.9205 0.9305 0.8807 1.0469 0.9809 1.0043 1.0703 0.915 1.1424 +1903 0.9073 0.8613 0.968 0.8664 1.0032 1.0038 0.8043 0.9199 0.8846 0.8616 0.9731 0.8999 0.9008 0.951 0.9756 0.8919 0.8976 0.9645 0.7525 0.9625 0.6712 1.0085 0.9505 1.0087 0.9326 0.8535 1.0357 1.0023 1.1895 1.1268 0.7349 0.8231 0.9438 0.9175 0.8979 0.8972 0.7158 1.164 +1904 1.1147 1.3166 1.0611 1.5311 0.9296 1.138 1.1293 0.9817 1.3042 1.2159 0.8736 1.0263 0.9932 0.9587 0.9532 1.2508 0.9087 1.2843 0.7475 1.4117 1.1829 1.1531 1.1598 1.1036 1.0332 1.1147 1.298 1.2173 1.1872 1.3275 1.4273 1.2898 1.2676 1.3249 1.2446 1.3061 1.2877 0.9204 +1905 0.9374 1.1354 0.8502 1.1037 0.7801 1.0285 0.8135 1.2752 1.1079 1.1041 1.1969 1.1871 1.3682 1.3647 1.3053 0.9661 0.799 1.0448 0.7174 1.0428 1.035 1.1167 1.0756 1.079 1.0447 0.9958 1.0078 0.9436 0.7786 1.1268 1.2585 1.2042 1.1458 0.9094 1.0568 1.1119 1.2397 0.8588 +1906 0.9217 0.7248 0.8804 0.834 1.0472 0.935 0.9048 0.9807 0.8074 0.883 0.9185 1.2278 1.1118 1.1267 1.1252 0.7893 1.0623 0.904 1.0333 0.8205 0.8747 1.0293 0.9564 0.9713 0.9055 0.9509 0.9551 0.9628 0.896 0.9686 0.7667 0.7755 0.9334 0.7667 0.8412 0.8387 0.7559 1.0207 +1907 0.9311 0.754 0.8771 0.8563 0.9008 1.0398 0.7293 1.0643 0.7363 0.936 0.9295 1.1272 1.2924 1.2309 1.2362 0.8867 1.0893 0.8565 0.9473 1.0068 1.0958 1.2631 1.0712 1.1772 1.2448 1.112 1.0724 1.0668 1.1251 1.1765 0.8511 0.8558 0.9304 0.954 0.9186 0.9545 0.761 1.1639 +1908 1.3182 1.3474 1.1223 1.3607 1.0649 1.1346 1.0193 1.452 1.3194 1.3777 1.1164 1.1046 1.4527 1.3095 1.2624 1.3119 1.1647 1.279 1.1334 1.45 1.3375 1.1851 1.3054 1.1238 1.0318 1.0979 0.9596 1.2208 1.1097 1.1011 1.183 1.1782 1.27 1.2529 1.1925 1.3418 1.1877 1.229 +1909 1.1346 1.3909 0.9872 1.4436 0.9275 1.1497 0.9712 1.2322 1.3828 1.3733 0.9798 0.6782 1.104 1.3513 1.2942 1.3076 1.0344 1.2342 1.1824 1.3965 1.5042 1.0058 1.0047 1.1038 1.0694 1.183 0.8225 0.9646 0.9514 0.886 1.254 1.4014 1.3071 1.2026 1.2279 1.3683 1.2406 0.6816 +1910 0.7634 0.896 0.7948 0.9124 0.8554 0.8174 0.9132 0.8015 0.8575 0.6244 1.0771 0.8212 0.8095 0.6351 0.6392 0.5032 0.8163 0.6292 0.584 0.9449 0.5152 0.6101 0.6403 0.6506 0.4717 0.6809 0.4763 0.7812 0.6955 0.5368 0.9434 0.6924 0.8027 0.7543 0.7821 0.724 0.9495 0.5424 +1911 0.5178 0.412 0.6711 0.5727 0.8399 0.6736 1.0117 0.9631 0.4822 0.5555 1.0406 0.9195 0.8606 0.8244 0.7979 0.6167 0.9135 0.5881 0.8431 0.6467 0.5119 0.5587 0.5937 0.6121 0.8841 0.7003 0.9458 0.7896 0.9617 0.7587 0.7031 0.7452 0.7665 0.6838 0.7501 0.6462 0.6812 0.9123 +1912 1.0726 0.867 0.9748 0.9061 1.1361 0.9998 1.0655 1.0612 0.8958 1.0312 0.9821 0.8571 0.7442 1.0877 1.0489 0.8964 1.2756 0.9536 0.8707 0.9287 0.9815 1.2833 0.967 1.3513 1.3344 1.0425 1.0966 1.0567 1.3364 1.1379 0.9248 0.8624 0.9608 0.8675 0.9121 0.9843 0.931 1.1858 +1913 1.1182 0.9007 1.0256 0.9756 1.1509 1.0765 0.9246 1.0276 0.9274 0.7688 1.0351 0.8017 0.9695 0.8629 0.8832 0.9303 0.9566 0.9259 1.1629 1.0099 0.9305 1.1877 0.906 0.9759 1.0599 0.9459 1.0334 1.0452 1.1667 1.1658 0.9566 0.8232 1.0272 0.9952 0.9577 1.0619 0.9097 1.0363 +1914 0.8439 0.7853 1.0192 0.9045 1.1555 1.122 1.075 1.0441 0.8317 0.9086 0.8205 0.9244 0.8808 0.9504 0.9282 0.9086 1.2444 0.9041 1.3876 0.9852 0.9711 1.0364 0.8632 1.1065 1.1366 1.0592 1.027 1.0741 1.1645 0.9947 0.814 0.8257 1.0798 1.0264 0.9576 1.0105 1.0577 1.0919 +1915 1.2032 1.1231 1.2261 1.1565 0.9634 1.1896 1.0707 0.9613 1.2087 1.1102 1.0459 0.8884 0.9395 1.0144 1.0193 1.0784 0.94 1.1342 1.0724 1.1142 1.0341 1.1038 0.9666 1.2156 1.3585 1.1562 1.4822 1.1821 1.1333 1.3883 0.9 0.8184 1.1517 1.0257 1.0131 1.2033 1.0761 0.897 +1916 1.1388 1.0037 0.9985 1.2908 1.31 1.2659 1.0932 1.1624 1.0845 1.1369 0.941 0.9307 0.6951 0.7996 0.8348 1.0676 1.0959 1.0822 1.2927 1.1769 1.246 1.2324 1.0429 1.3245 1.1265 1.1781 1.1942 1.0234 1.2098 1.3064 1.0318 0.9579 1.0955 1.105 1.0548 1.0354 1.1434 1.2063 +1917 0.7703 0.7952 0.8494 0.6871 0.5807 0.8856 0.8361 0.7222 0.8252 0.8615 0.9851 0.6976 0.6735 0.5022 0.4805 0.7624 1.0445 0.8115 0.9331 0.7405 0.8072 1.0643 0.9291 0.9288 1.197 0.8478 0.8147 0.9101 0.7834 0.7244 0.6765 0.6728 0.6233 0.8556 0.7876 0.634 0.7132 1.3053 +1918 1.1267 1.0769 1.0832 1.048 0.7918 0.9306 0.9955 1.0857 1.0674 0.9418 1.0803 1.0961 0.8501 0.8708 0.975 0.9589 0.7708 0.954 1.1649 1.0028 1.0594 0.8703 1.0454 1.1656 1.2154 0.931 0.667 1.0469 1.0474 0.8786 1.0614 0.9739 1.0797 1.0225 1.0139 1.1346 0.8719 1.0604 +1919 0.8021 0.9739 0.9642 0.9768 1.2478 0.9398 0.8569 0.9778 0.9877 0.9374 1.0042 1.0363 0.8022 0.9353 0.8914 1.0541 1.1278 1.033 1.22 0.9328 1.0398 1.0052 1.011 0.9376 1.11 0.9295 0.9427 0.8585 0.8474 0.9692 0.9005 0.7881 0.8754 1.0201 0.9602 0.8985 0.8959 0.8793 +1920 1.148 1.2918 1.1086 1.2817 1.033 1.1206 0.9843 1.0505 1.3042 1.3024 1.0367 1.1347 0.8752 0.923 0.9154 1.2919 1.1277 1.2186 1.1476 1.2004 1.2357 1.1714 1.1576 1.0971 1.2783 1.1733 0.9587 0.9606 0.9243 1.0561 1.2619 1.1193 1.3041 1.3518 1.2279 1.3186 1.2212 0.9097 +1921 0.998 1.0702 1.2308 0.8436 1.2006 1.1057 1.0802 1.2036 1.101 0.9708 1.0989 1.3073 1.0494 1.1115 1.0754 1.0251 1.2909 1.016 1.2721 0.904 1.079 1.1417 1.1089 1.3088 1.3093 1.0626 0.7263 0.9288 1.1832 0.8141 0.8186 0.9775 0.9958 1.0206 0.9837 1.0278 0.9342 1.0988 +1922 0.6887 0.8637 0.7274 1.0166 0.9797 0.9514 1.0711 1.1475 0.8871 1.0596 1.0827 1.0627 0.9665 1.0027 1.0008 1.0939 0.9893 1.0367 1.0358 0.9425 1.0719 1.1721 1.1372 1.2166 1.272 1.1251 1.3101 1.0928 1.1619 1.2795 1.0892 1.0067 0.7987 1.1216 1.0186 0.9283 1.0187 1.0474 +1923 0.8467 0.9372 1.001 1.0286 1.0561 1.1039 1.0504 1.2146 0.9562 1.024 1.0909 1.041 0.8643 0.9947 0.9944 0.9449 1.0564 1.0217 0.6149 0.9477 0.828 0.8185 0.8964 0.8193 0.6355 0.8008 0.9377 0.9652 1.0688 1.1171 1.1533 1.094 1.0419 1.0675 1.0317 0.9652 1.1859 1.0512 +1924 1.0476 1.2869 1.2564 1.1826 0.9528 1.0438 1.0036 1.1737 1.2954 1.1042 1.3684 0.9742 1.022 0.9908 0.9745 1.2982 1.062 1.0225 1.1943 1.0831 1.1911 1.1981 1.047 1.0013 1.0548 1.0116 1.158 1.014 1.1245 1.286 1.2146 1.0967 1.0969 1.178 1.1502 1.2003 1.0961 0.9679 +1925 0.9736 1.0057 1.1817 0.8727 1.11 0.943 1.0211 1.1026 0.975 0.9404 0.936 0.9912 0.8539 0.8247 0.8405 0.7708 0.8744 0.9652 0.7794 0.9291 0.9907 0.914 0.8271 1.0252 0.9361 0.959 1.0191 0.8844 0.881 0.8424 0.9019 0.8289 0.9934 0.9469 0.9096 0.9907 0.9414 1.1471 +1926 1.0873 1.2298 1.1737 1.1165 1.1199 0.9932 0.97 0.8725 1.2827 1.0674 0.9257 0.9413 0.8328 0.9249 0.9152 1.0623 0.9644 1.1961 0.9848 1.0365 1.1099 1.1325 1.1401 1.2079 1.3022 1.0827 1.2193 1.0617 1.0443 1.0612 1.098 0.9622 1.1146 1.0888 1.0603 1.1853 1.0584 1.0232 +1927 0.7743 0.5289 0.8236 0.5519 0.9758 0.5985 0.6002 0.9877 0.5692 0.6332 0.843 1.0226 0.9771 0.9048 0.9381 0.813 0.9818 0.6063 1.0088 0.6293 0.7181 0.9339 0.8161 0.9287 0.9702 0.8601 0.6973 0.9756 0.6736 1.0392 0.6388 0.6135 0.7289 0.7831 0.782 0.6927 0.6138 1.0438 +1928 1.463 1.5106 1.5528 1.4197 1.3926 1.2099 1.1087 1.2904 1.4671 1.2022 1.2704 1.4279 1.1983 1.347 1.2697 1.1558 1.485 1.1068 1.4558 1.365 1.2007 1.1156 1.0569 1.325 1.2549 1.1811 1.1377 0.9954 1.2453 1.0286 1.0302 1.0552 1.3412 1.3347 1.1494 1.3326 1.0594 1.3491 +1929 1.1111 1.2035 1.2054 1.059 1.1347 1.1063 0.9999 1.0409 1.2166 1.0548 1.0768 1.0114 1.0643 1.0019 1.0034 1.2299 1.1282 1.1278 1.5102 1.0642 1.0859 1.1441 1.1085 1.0149 1.1725 1.0221 1.0894 1.0036 1.1681 0.8959 1.0547 1.1159 0.9281 1.0905 1.0795 1.1431 1.1339 0.9538 +1930 1.085 1.2386 1.0629 1.3569 0.6513 1.2011 1.0996 0.8728 1.2224 1.4105 1.0356 1.0821 1.2108 1.1709 1.1806 1.2814 0.826 1.2436 0.529 1.2957 1.4445 1.242 1.1033 0.7412 0.3324 1.0665 1.2627 1.1894 1.1957 1.4255 1.1924 1.1029 1.2513 1.1906 1.169 1.3495 1.2038 0.9995 +1931 1.0409 0.9335 0.8321 1.0311 0.7686 1.0405 0.9418 0.8481 0.8773 1.0433 0.9963 1.1004 0.9785 0.9996 1.0082 1.0939 0.9844 1.1626 0.9215 1.075 0.9008 0.7587 0.909 0.8267 0.9635 0.8831 0.9238 0.927 0.9809 1.0978 1.2919 1.1202 1.2162 1.1884 1.1548 1.1571 1.0903 0.7105 +1932 1.1504 0.8566 0.9776 0.8467 1.262 0.9967 0.7659 1.1633 0.9037 0.9898 1.0264 1.0715 1.1362 1.1519 1.1488 0.8296 1.093 0.9809 0.9715 0.8264 0.5552 0.9065 0.8435 0.8737 0.9398 0.8099 0.8445 0.9238 1.044 1.0241 0.9171 0.8802 1.0016 0.7958 0.9068 0.9544 0.9329 0.7519 +1933 1.1044 1.0495 1.0886 0.9319 1.0298 0.8431 0.7227 1.022 1.0961 0.912 0.9927 0.9058 0.9598 1.0825 1.0713 0.8558 0.8778 1.0345 0.7708 0.9638 0.7168 1.0255 1.1068 1.1468 1.1905 1.0327 0.8826 0.8833 0.8615 0.8065 0.8433 0.8408 0.8397 0.8314 0.8815 0.9763 0.9516 1.2263 +1934 0.9997 0.8384 0.8549 1.2713 1.0662 1.1913 1.1353 0.8884 0.8726 1.1869 1.0234 1.3277 1.1367 1.0676 1.0872 1.155 0.9704 1.1817 0.8989 1.2819 1.1555 0.9008 1.1665 1.0288 0.9574 1.127 1.187 1.0914 1.3701 1.1123 1.2868 1.2545 1.2861 1.2369 1.1809 1.3347 1.24 0.9597 +1935 1.1587 0.9803 1.0923 1.0749 1.0372 1.1197 1.0611 1.0202 0.9606 1.1881 1.1102 1.0746 1.1633 1.0196 0.993 1.237 1.1466 1.0736 0.9206 1.0871 1.3654 1.1382 1.1572 1.1506 1.2136 1.0289 0.9655 0.991 1.0502 1.116 1.1355 1.0851 1.1518 1.1547 1.1277 1.036 1.1373 0.9636 +1936 0.9996 0.9471 0.9059 0.9803 1.0283 0.8884 0.8917 1.1447 0.8917 1.1017 1.0402 1.0231 1.0763 1.0747 1.0933 0.9904 1.0072 1.0819 0.9196 1.0339 1.1013 1.0344 1.134 1.1261 1.1584 1.0425 1.2312 0.9935 0.9873 1.2254 0.9521 1.0535 0.9331 0.9678 0.9865 0.8439 0.8888 0.9435 +1937 1.0448 0.8135 1.0525 0.8972 1.1773 0.9485 1.0338 1.126 0.8373 0.8816 0.689 1.154 0.9057 1.0114 1.0419 0.8962 1.3066 1.0259 1.0671 0.8781 0.7998 0.9523 1.0445 1.1535 1.1203 1.028 1.1563 1.0172 1.0636 0.9725 0.8682 0.8014 0.8113 1.0141 0.9078 0.9521 0.7838 1.2286 +1938 0.8268 0.8081 0.8247 0.7331 1.2156 0.8561 0.8987 0.8431 0.8276 0.8256 0.7139 0.6365 0.7663 0.8052 0.8548 0.8359 1.058 0.8458 1.2181 0.7897 0.8259 0.7595 0.8146 0.9448 0.9209 0.9041 1.0531 1.0494 0.9876 1.0258 0.7447 0.7411 0.7218 0.8771 0.8361 0.8178 0.7696 1.2295 +1939 1.0543 1.1954 1.2162 1.324 1.2272 1.0827 1.0892 1.1695 1.1998 1.2051 1.1795 1.0107 1.1355 1.1039 1.0958 1.0358 1.5489 1.1216 1.3827 1.276 1.1456 1.0607 1.0102 0.8083 0.9166 1.1006 1.2516 1.1718 1.2114 1.3396 1.1609 1.0862 1.2048 1.1879 1.0967 1.2424 1.0311 1.352 +1940 0.9102 1.0895 0.9623 1.026 1.004 1.1015 1.0291 0.7378 1.0465 1.1186 1.2288 1.0453 1.0848 1.0083 1.0001 0.8559 1.0828 1.1262 1.0913 0.9686 0.9246 0.896 0.7988 0.617 1.0053 1.0351 1.0312 1.165 0.9891 0.9483 1.1089 1.1131 1.1742 1.1012 1.0454 1.1432 1.1551 1.0241 +1941 1.1852 1.1928 1.1759 1.0308 0.661 0.9579 1.0735 1.149 1.0935 1.0303 0.9345 1.1716 1.1562 1.122 1.1252 0.7371 0.585 1.0754 1.0321 1.005 1.0217 1.2212 1.0728 1.1309 1.0317 1.1454 0.823 1.0925 0.8635 1.0527 1.1469 1.0224 1.184 0.9741 0.9958 0.9729 1.0801 1.1508 +1942 1.019 1.1142 1.2028 0.6492 0.9064 1.0074 1.0784 1.1026 1.0875 0.8547 1.0271 1.0927 0.8467 0.8819 0.9124 1.0727 0.8192 0.7847 1.2835 0.642 1.2616 0.9453 1.1082 0.8387 1.087 1.0193 0.8343 0.8386 1.2788 1.1968 1.1611 1.0678 0.9589 0.5511 0.9633 0.9005 1.0735 0.8424 +1943 0.8704 0.9464 1.2317 0.9725 1.1119 1.0565 0.9143 0.6705 0.9735 1.039 1.022 0.5543 0.4294 0.3151 0.32 1.0903 0.9853 1.05 1.6014 1.1 1.119 0.7921 0.8701 0.768 0.867 0.9254 0.9442 0.6902 1.1938 0.782 1.0231 1.0539 0.7189 0.9344 0.9825 0.9533 0.8751 1.0424 +1944 1.0721 1.2507 1.1644 1.2661 1.0875 1.1744 1.1714 1.169 1.2518 1.2353 1.1656 1.1913 1.1037 1.1067 1.0709 1.1481 1.0293 1.312 1.0305 1.1866 1.3919 1.1921 1.0685 1.1331 1.1577 1.2401 1.3548 1.3647 1.1936 1.1442 1.1961 1.2519 1.1277 1.1382 1.1386 1.1287 1.0958 1.0572 +1945 1.247 1.2449 1.1473 1.2049 0.8245 1.0147 1.3187 0.9667 1.2436 1.1449 1.124 1.1223 1.0856 1.001 1.0019 1.1458 0.9449 1.3044 0.8892 1.1583 1.4474 1.0315 1.1641 1.2181 0.7504 1.2308 1.3158 1.3099 1.0171 1.2093 1.3232 1.2836 1.3636 1.1502 1.2008 1.1809 1.2828 0.9545 +1946 1.1488 1.3381 1.1682 1.1781 0.9103 0.928 1.0592 1.0565 1.2621 1.3304 0.9818 1.096 1.225 1.0822 1.0385 1.2013 0.7482 0.9314 1.0269 1.0043 1.6502 1.0931 1.32 1.0217 0.9651 1.1704 0.8385 0.8747 0.9301 1.2294 0.9086 0.983 0.8869 0.9079 1.0136 0.8356 1.0643 0.8075 +1947 0.9313 0.73 0.9937 0.7552 1.0823 0.8143 0.7226 0.8191 0.7439 0.7718 0.5332 0.6537 1.0812 1.033 1.0069 0.8451 0.9397 0.7965 1.4525 0.8331 0.6342 0.8057 0.7935 0.8785 0.9515 0.8956 1.0951 0.917 0.796 0.788 0.6407 0.5834 0.6505 0.8999 0.7932 0.6508 0.6228 1.0049 +1948 1.0855 1.427 1.3214 1.3725 0.9663 1.0854 1.0447 1.2112 1.3593 1.2392 1.1559 1.0399 1.2432 1.1415 1.1073 1.1281 0.934 1.2266 1.3267 1.3382 1.2874 1.1085 1.1117 1.2164 1.1033 1.236 1.4372 1.1018 1.1508 1.1839 1.3809 1.2258 1.2365 1.2013 1.1825 1.2275 1.2553 1.085 +1949 1.0166 1.0056 0.9377 0.8722 0.8397 0.9173 1.0922 0.9816 1.0315 1.0303 1.0895 1.0983 0.8966 0.9542 0.9886 0.8481 0.8434 0.9134 0.6258 0.8849 0.8897 0.8319 1.0054 0.8435 0.7286 0.9223 0.7807 0.7262 0.6107 0.9441 0.8266 0.9227 0.8817 0.9038 0.8995 0.7827 1.0198 0.7668 +1950 1.2593 1.3504 1.4313 1.2203 1.1733 1.1512 1.1866 1.0727 1.3838 1.0862 1.0767 0.8558 0.8247 0.8048 0.7934 0.9577 1.1114 1.0781 0.7856 1.1507 0.9222 0.7222 1.1271 0.7294 0.6582 0.9438 1.2874 0.9774 1.0517 1.0082 1.0928 1.136 1.1309 1.0924 1.0655 1.0861 1.1377 1.2353 +1951 1.0926 1.0803 1.1501 1.2279 0.8925 1.1361 1.1444 0.9866 0.9737 1.2382 1.0959 0.8105 0.8753 0.9761 0.9475 1.1345 1.0131 1.2505 0.8395 1.1554 1.1281 1.0754 0.9986 0.7865 0.8328 1.0277 0.6806 0.9302 0.997 0.896 1.2164 1.1076 1.2767 1.3105 1.1632 1.1617 1.099 0.9375 +1952 0.5383 0.6998 0.7035 0.7299 0.7733 0.9501 1.0398 1.2252 0.7602 0.7935 0.9132 1.0404 0.9318 0.9614 0.9141 0.9663 0.9569 0.856 1.1307 0.7782 0.8065 1.0063 0.838 1.0836 1.1223 0.7639 0.8864 1.0043 1.1917 0.9975 0.8538 0.8723 0.9545 0.8553 0.927 0.8357 0.8483 1.0835 +1953 1.2661 1.0786 0.9483 0.8811 0.8458 0.8847 1.0918 1.1714 1.0668 0.8351 0.8983 0.9529 1.07 0.8206 0.848 1.3436 0.9666 0.9919 1.2768 0.8682 1.1575 1.1762 1.1901 1.3167 1.3141 1.1777 1.031 1.1106 0.968 1.0295 1.2166 1.0997 1.0166 1.1122 1.1503 1.0457 1.1697 1.0736 +1954 0.9884 0.9802 0.948 0.9707 1.0583 0.9953 1.1493 1.1838 1.052 1.0596 0.9596 1.1504 1.2259 1.0187 1.0128 0.825 1.0361 0.9173 0.8053 0.9826 0.9272 1.0314 0.9366 0.9012 0.9101 1.0084 1.0704 0.9637 0.9561 0.7992 0.983 1.0542 0.9092 0.8534 0.9253 0.9323 0.9683 1.1449 +1955 1.2624 1.1319 1.0822 1.3618 0.8591 1.2082 1.0781 0.9825 1.1754 1.2392 0.9341 1.1689 1.34 1.2231 1.1349 1.2603 0.9195 1.2165 0.8988 1.2569 0.9279 1.0693 0.9888 1.22 1.1522 1.0985 1.1737 1.1133 1.2429 1.1761 1.2789 1.2672 1.184 1.2043 1.1895 1.1887 1.1827 1.2977 +1956 0.8968 0.8377 0.851 0.7104 0.9861 0.8674 0.9072 0.8822 0.8003 0.842 1.0667 1.3103 1.1735 1.096 1.1085 0.872 0.7979 0.7249 1.105 0.7427 0.9082 0.9293 0.8453 1.0331 1.0955 0.8458 0.7255 0.9161 0.8189 1.0747 0.8582 0.8886 0.9854 0.8279 0.9168 0.9591 0.9956 1.0713 +1957 1.457 1.2297 1.1452 1.0787 0.8809 1.094 0.952 1.1492 1.2232 1.0948 1.0945 1.2564 1.1722 1.2093 1.211 1.0589 1.1409 1.2133 1.1565 1.0575 0.8998 0.8981 1.0757 0.925 0.6267 1.1482 1.327 1.1713 1.2641 1.2544 1.2656 1.197 1.2568 1.1437 1.1441 1.3313 1.1742 1.4853 +1958 0.563 0.4 0.4293 0.4823 1.0574 0.5707 0.7245 0.7545 0.4046 0.6115 0.7962 0.6102 0.4926 0.6551 0.701 0.6158 1.1935 0.6159 1.0717 0.5597 0.6929 0.734 0.8023 0.8454 0.7878 0.6536 0.657 0.9135 0.9931 0.6615 0.5036 0.6865 0.5096 0.6186 0.6773 0.5873 0.5088 1.122 +1959 1.1407 1.2402 1.2278 1.1767 1.0907 1.2243 1.2682 1.0204 1.2502 1.1498 1.0166 1.2023 1.1889 1.3422 1.2702 1.3387 0.9406 1.1577 1.2691 1.1722 1.0954 1.2759 1.0993 1.2637 1.2977 1.2235 1.4394 1.5181 1.4944 1.2902 1.1731 1.1622 1.2717 1.3518 1.2167 1.3574 1.0755 1.2621 +1960 0.7464 0.856 0.8471 0.8678 1.1009 0.9825 0.9519 0.9711 0.9196 0.9695 1.0128 0.8242 1.1597 0.9254 0.9448 0.9446 0.6812 0.8894 1.0239 0.8727 1.0559 1.0323 1.0158 1.0323 1.0859 1.0508 0.8533 0.903 0.7273 1.1007 0.8781 0.9908 0.977 0.9952 0.9758 0.8936 0.8821 0.6693 +1961 0.4901 0.4685 0.6273 0.6547 1.3287 0.6561 0.8563 0.8146 0.5364 0.6585 0.8098 0.7665 0.8582 0.8714 0.9002 0.6961 1.271 0.6831 1.0933 0.7708 0.6382 0.723 0.7592 0.8183 1.035 0.8192 0.6148 0.9017 0.706 0.8237 0.4964 0.6798 0.5042 0.7419 0.7141 0.56 0.6654 0.9814 +1962 1.0742 1.2518 1.1989 1.1909 1.033 1.1154 1.3325 1.2343 1.1927 1.0495 1.2011 1.2166 1.3084 1.3975 1.3512 1.0643 1.2805 1.1358 0.9493 1.1936 1.0159 1.1065 0.867 1.2985 1.3718 1.0886 1.465 1.4043 1.0508 1.2696 1.2644 1.3704 1.2486 1.2252 1.1811 1.2139 1.1107 1.1695 +1963 1.0834 1.2887 1.1907 1.2547 1.0549 1.0708 1.0839 1.2216 1.2981 1.1263 0.9323 1.1383 1.3266 1.2679 1.2297 1.1688 0.9644 1.1318 0.3076 1.1837 1.2563 1.3435 1.1557 1.2812 1.2777 1.3123 0.689 0.7534 0.787 0.9138 1.3085 1.3211 1.0448 1.0489 1.1479 1.091 1.203 0.7032 +1964 1.0141 1.082 1.0515 0.9916 1.0701 0.8958 0.8184 1.079 1.0183 0.9387 1.0117 1.1036 1.3788 1.2808 1.3089 0.9881 0.6593 0.8801 0.8574 1.0343 1.1382 0.9447 1.1956 0.9044 0.6107 1.0764 0.9975 0.926 0.8149 0.6375 0.84 0.9775 0.9108 0.9451 0.96 0.9738 0.9223 0.8162 +1965 1.0896 0.9741 1.0687 1.1422 1.0116 0.9256 1.0143 1.0361 0.9592 1.0994 1.0463 0.9742 0.958 1.0598 1.0863 0.9835 0.9428 0.9933 0.9079 1.1266 1.2463 1.0577 0.9465 1.0157 1.1021 1.3715 1.0171 0.7622 0.8217 0.8151 0.9845 1.0367 1.0776 1.1235 1.0414 1.0279 0.8579 0.9273 +1966 1.1066 1.1474 0.9618 1.084 1.1821 1.1015 1.1042 0.9681 1.0584 1.0885 0.9442 0.9532 0.8368 1.0777 1.0445 1.1029 1.1707 1.086 1.2562 1.0252 0.9746 1.0645 1.0035 0.9167 1.1055 1.0429 0.9358 1.0086 0.9534 0.967 1.1095 1.0546 1.2068 1.1525 1.1025 1.0876 1.0117 1.0125 +1967 0.9484 0.7533 0.9348 0.8893 1.0399 0.837 0.9686 0.9383 0.8631 0.8027 0.9814 0.8921 0.8266 0.7189 0.7303 0.6809 1.0382 0.7393 0.9329 0.8658 0.7337 1.0093 0.8287 0.9567 1.231 0.8659 1.2121 1.0656 1.0123 1.1686 0.9277 0.9663 0.8023 0.8183 0.8522 0.8699 0.977 1.0141 +1968 1.2202 1.1839 1.0429 1.2391 1.6484 1.2008 1.1193 0.8304 1.2253 1.1213 1.109 1.1388 1.0054 1.001 1.0045 1.2348 1.562 1.1977 1.6071 1.2827 1.2728 1.2393 1.132 1.261 1.2845 1.0693 1.0425 1.0021 1.1479 1.2444 1.1713 1.1819 1.2445 1.2457 1.1742 1.2713 1.184 1.4541 +1969 1.0424 1.0694 0.8692 0.963 0.7625 0.9549 0.9683 1.0143 1.0034 1.098 1.0541 1.0309 1.0381 1.0247 1.0137 1.1734 0.6591 1.043 0.6535 1.0547 1.1089 0.8491 1.1163 1.0523 0.8495 1.1092 0.9349 0.9861 0.8799 0.8071 1.0409 1.1086 1.1516 1.1116 1.1019 0.8443 1.0311 0.8196 +1970 0.811 0.6807 0.7704 0.8911 0.8993 0.9865 0.9075 0.9982 0.7856 0.8569 0.7764 0.8891 1.0568 0.9036 0.9108 0.947 0.9127 0.8473 0.9368 0.7823 0.9774 1.0004 0.981 0.9394 0.9217 0.9035 1.3778 1.0832 1.1599 1.0644 0.7666 0.6225 0.7815 0.9686 0.8652 0.6935 0.7515 0.9901 +1971 0.7251 0.8866 0.7917 0.9749 0.6702 0.9132 0.9574 1.0105 0.864 0.9448 0.9153 0.8849 0.8233 0.8856 0.9132 0.9498 0.5569 0.9671 1.1551 0.9282 0.9386 0.7723 0.9129 0.8964 0.8832 0.8815 0.9716 1.0324 1.0158 1.1505 1.0016 0.91 0.8958 1.1732 0.9965 0.8491 1.1338 1.0332 +1972 0.9308 0.9418 0.9799 0.9333 0.8804 0.9128 0.8842 0.9086 0.9593 0.9525 0.8627 0.9614 1.0176 1.0069 0.9932 0.9233 1.031 0.8077 1.0389 0.9673 0.9426 1.0166 0.969 0.9613 0.9712 0.9184 0.9155 1.0284 1.0031 1.0287 0.8483 0.9137 0.9605 0.8988 0.9348 0.9358 0.9778 1.21 +1973 1.0141 0.9535 1.1344 0.9604 1.347 1.1274 0.9309 0.7985 0.9686 1.0327 0.8719 0.983 0.9519 1.0384 1.0194 0.9984 1.1559 0.9595 1.4034 1.0227 1.1036 0.9473 1.0227 0.8619 0.9218 1.0515 1.1587 1.0235 1.0036 0.7279 0.8456 0.9274 0.9607 0.8244 0.9336 1.007 1.0736 1.2159 +1974 1.24 1.2357 1.1363 1.3025 0.8176 1.1185 1.1421 1.0434 1.1928 1.1482 0.9407 1.262 1.3892 1.323 1.3172 1.1944 1.0601 1.0861 1.4989 1.2848 1.1784 1.1009 1.1299 1.1589 1.0536 1.1505 0.8828 0.9436 0.8308 0.9726 1.1243 1.1749 1.1385 0.9271 1.0896 1.0663 1.3028 0.8781 +1975 0.9169 0.967 0.9686 0.8147 0.8555 0.9255 1.0367 0.9888 0.92 1.0736 0.9035 0.9821 1.0017 0.7908 0.8511 0.8561 0.8126 0.8573 0.519 0.9441 1.1284 0.7018 0.9983 1.0051 0.8637 1.0506 0.9033 1.0783 0.8842 0.9584 1.0348 1.1135 1.009 0.9034 0.9765 1.0439 1.2371 0.8858 +1976 1.1233 0.8929 0.9612 0.9504 0.9629 0.9743 1.2062 1.268 0.904 1.0432 0.9508 1.4705 1.3481 1.2402 1.2453 0.9574 1.1353 1.0256 1.3677 0.9921 0.8174 0.8523 0.8568 1.0507 1.027 0.9569 0.832 0.9824 1.0384 0.8811 0.8837 0.9306 0.9399 1.0139 0.9705 1.0089 1.0457 1.0311 +1977 1.1835 1.1335 1.0413 1.1627 0.9999 1.0206 1.1006 1.0045 1.0894 1.0371 0.888 1.1008 1.0428 0.9674 0.9846 1.1134 1.2129 1.0491 1.0337 1.1871 0.9809 0.8574 1.0459 0.8921 0.894 1.0337 0.775 0.8868 1.0237 1.0164 1.0487 1.0367 1.1057 1.1514 1.0806 0.9862 1.1542 0.7436 +1978 0.9642 1.0554 0.913 1.0139 1.168 1.052 1.0586 1.0633 0.9779 1.029 1.0004 1.0996 0.787 0.846 0.9041 1.0487 0.9406 0.9982 1.0354 0.935 0.8533 0.7725 1.1889 0.8513 0.6718 0.8984 0.928 0.886 0.6689 0.8281 0.9856 1.0944 0.5635 0.9794 0.9544 0.8059 0.9671 0.8774 +1979 1.1892 1.1444 1.0226 1.0758 1.2294 1.0973 1.3194 1.0441 1.0741 1.0513 0.9085 1.5985 1.384 1.3981 1.3981 1.1776 1.241 1.0634 0.9934 1.0775 0.9185 0.8682 1.13 0.9941 1.0889 1.1302 1.1973 1.0947 1.2581 0.9729 1.2056 1.1334 1.0453 1.003 1.0858 1.1898 1.3103 1.3097 +1980 1.1223 0.8674 0.9723 0.8766 1.2073 0.9595 1.0033 0.9703 0.8895 0.9653 0.9184 0.5728 0.8332 1.0615 1.0804 1.0462 1.0815 1.0109 1.4309 0.8835 1.063 1.0545 1.1753 0.8581 1.1527 1.0773 1.0726 1.0351 1.0134 1.1385 0.9776 0.902 0.8976 0.8647 0.951 0.9511 0.9717 1.0604 +1981 1.1624 1.1513 1.0169 1.1527 0.697 1.0772 1.1527 0.8123 1.133 1.1637 1.1731 0.8243 0.9971 1.073 1.0471 1.0892 0.9792 1.0394 1.0062 1.0054 1.2118 1.0116 1.1079 0.9135 0.9401 0.9993 0.7566 1.0018 0.9855 0.8665 1.154 1.2166 1.2047 1.1193 1.1295 1.2454 1.2007 1.0212 +1982 0.982 0.9716 1.0409 0.9834 0.8025 1.01 0.8676 0.8988 1.0098 0.9932 1.2106 1.2546 1.2012 1.0773 1.0803 1.0876 1.2024 0.8831 0.8809 0.9367 1.1721 1.0279 1.058 1.0226 0.8305 0.8313 0.7805 0.7055 0.8132 0.5147 1.0689 1.0594 1.0987 1.0259 1.0548 0.9288 1.1301 0.6917 +1983 0.8125 0.6667 0.8781 0.853 0.932 0.8002 1.0727 0.9996 0.7838 0.7985 1.0833 1.1264 1.0972 1.1959 1.1858 0.7995 0.9542 0.9601 0.7976 0.8722 0.8036 0.9142 0.9261 1.0071 1.0612 0.8445 0.7363 0.8391 0.9135 0.5984 0.7506 0.8313 0.7976 0.8107 0.8489 0.8333 0.9713 1.0231 +1984 1.0242 1.0063 0.9209 0.9836 1.156 1.1159 0.9629 0.9156 1.0274 1.0866 0.8582 0.9192 0.9094 1.0932 1.0744 0.9694 1.1614 1.0094 0.9479 1.0026 1.0588 1.1085 1.1821 1.0659 1.2064 1.1137 1.2096 1.1162 1.1891 1.1178 1.0433 0.9594 0.9001 1.0389 0.9858 0.9367 1.03 1.1633 +1985 0.5991 0.586 0.7775 0.7104 1.0428 0.8806 0.8116 0.534 0.6435 0.7393 0.8599 0.7231 0.6128 0.6193 0.6017 0.9277 1.0971 0.7299 1.0172 0.7946 0.8493 1.0449 0.852 1.0289 0.9803 0.8606 0.8229 1.02 0.9046 1.0589 0.7767 0.7672 0.6771 0.9532 0.8711 0.6332 0.7467 0.7222 +1986 0.8316 0.8257 0.8431 1.1491 0.9733 1.0028 1.0047 0.809 0.8338 1.0158 0.9475 0.8396 0.9601 0.8882 0.9354 1.0937 1.0704 1.0203 0.9836 1.1133 1.1713 1.0666 1.0232 1.2573 1.146 0.9372 0.9664 0.95 1.2256 1.0205 0.9293 1.0282 0.937 1.0893 1.0211 0.9489 0.8725 1.0043 +1987 0.996 0.8573 0.8028 0.938 1.2729 1.0179 1.2237 1.0389 0.889 0.9317 1.1311 1.0995 1.0934 1.1402 1.1332 0.958 1.2475 1.0413 1.197 0.9566 1.0178 1.0323 0.9033 0.8382 1.2483 0.9793 1.242 1.0567 1.2633 0.9716 1.0245 1.0726 0.9763 1.0735 1.0077 0.9932 0.921 1.2576 +1988 0.8854 0.9062 0.9882 0.9691 1.0387 0.9927 1.085 0.8353 0.8729 0.9037 0.7161 0.9311 0.9795 0.9425 0.9694 0.637 0.9027 1.0091 0.6895 0.9019 0.7913 0.9216 0.8253 0.4912 1.1489 0.9087 1.0432 1.1154 1.0149 0.9862 0.9704 0.8593 0.9761 0.8674 0.8662 1.0237 0.987 0.9381 +1989 1.0133 1.037 1.0765 1.0917 1.2826 0.9949 1.2065 1.212 1.0491 0.998 1.1062 0.9849 1.1238 1.2336 1.1872 0.8568 1.1904 1.0648 1.2247 0.9785 0.7296 1.1015 0.7578 1.2199 1.1908 1.147 0.8174 0.9872 1.1072 1.1551 0.9246 0.943 0.9815 1.0482 0.9648 1.1274 1.0109 0.9279 +1990 0.9533 1.0948 1.0566 0.9549 0.917 0.9768 0.9126 1.012 1.0701 0.9162 1.0745 0.9331 0.9467 0.8031 0.8383 1.131 0.9154 1.0683 0.8489 0.8767 1.1097 0.9925 1.1086 1.142 0.6113 1.1153 1.105 0.9066 0.7874 1.0327 1.1085 1.1065 0.988 0.9154 1.0407 0.8747 1.1233 0.6917 +1991 1.0925 1.2092 1.1274 1.2967 1.0837 1.1194 0.9665 0.9814 1.1666 1.1515 1.0758 1.2064 1.1549 1.0057 0.9874 1.2099 0.6022 1.1734 1.1365 1.1902 1.3122 1.2105 1.1238 1.4608 1.2911 1.2471 1.1429 1.0879 1.2739 1.0338 1.0564 1.1577 0.9754 0.9523 1.0658 0.9922 0.9523 1.0084 +1992 1.0103 1.1826 0.9489 1.0088 0.8188 1.0483 1.2064 0.7552 1.122 0.9801 1.0895 1.3374 1.1014 1.2597 1.1769 0.9577 0.9484 1.0418 0.6966 0.9572 1.0127 0.8834 0.8839 0.8122 0.9642 0.939 0.7689 0.9632 0.8798 1.0061 1.0875 1.0728 1.0927 1.0682 1.043 1.1984 1.1254 0.9438 +1993 0.7853 0.7441 0.9465 0.6896 1.0716 0.844 0.8483 0.669 0.7604 0.7956 0.701 0.6587 0.6674 0.7824 0.7601 0.7614 0.8479 0.7736 1.2009 0.8429 0.7248 1.0053 0.8157 1.1342 1.1104 0.9357 0.932 1.0022 1.1026 0.8225 0.8569 0.8695 0.8794 0.9213 0.8828 0.8124 0.8942 1.017 +1994 1.0785 1.4044 1.0572 1.3769 1.1351 1.2252 1.0777 0.9712 1.342 1.081 1.1057 1.0115 1.1486 0.9729 0.9715 1.1482 0.9244 1.1575 1.4059 1.2626 1.0798 1.3149 1.1696 1.2329 1.462 1.0796 1.4931 1.2582 1.4738 1.3781 1.2726 1.2735 1.3085 1.2632 1.1875 1.1233 1.1572 1.235 +1995 NaN NaN NaN 0.6787 0.978 0.8971 NaN NaN 0.8391 0.8265 1.0331 NaN NaN 1.0833 NaN 0.9441 0.9482 1.0586 0.7587 0.7051 0.9206 0.6473 0.6937 0.6734 NaN 1.0206 0.7956 0.7885 0.6715 0.84 0.895 0.7734 0.8933 0.8623 0.9056 0.8929 0.831 0.9918 +1996 NaN NaN NaN 1.2108 1.0977 1.1651 NaN NaN NaN 1.0977 1.1416 NaN NaN NaN NaN 1.0688 1.1149 1.2799 0.9013 1.111 1.3204 1.34 0.986 1.2209 NaN 1.1601 1.058 1.1657 0.7218 1.1085 1.2592 1.1371 1.2672 1.0186 1.1179 1.2979 1.202 1.2038 +1997 NaN NaN NaN 0.6974 0.9611 0.7599 NaN NaN NaN 0.7665 1.1445 NaN NaN NaN NaN 0.764 0.7925 0.8361 0.725 0.7521 0.8427 1.0247 0.897 0.6848 NaN 0.8916 1.1792 0.9597 1.3266 0.9893 0.8749 0.8661 0.7247 0.8937 0.859 0.6891 0.9197 1.0017 +1998 NaN NaN NaN 1.2906 0.8672 1.3067 NaN NaN NaN 1.076 1.1567 NaN NaN NaN NaN 1.2856 0.944 0.8429 0.6395 1.2184 1.3014 1.2443 1.0135 1.0494 NaN 1.2629 1.0135 0.8758 1.3652 1.0455 1.2548 1.3404 1.3024 1.2106 1.2098 1.2961 1.3352 1.26 +1999 NaN NaN NaN 0.8572 0.9455 0.7792 NaN NaN NaN 0.8264 0.973 NaN NaN NaN NaN 0.948 0.9295 0.7802 1.1441 NaN 0.5365 0.409 0.7727 NaN NaN NaN 0.938 0.9315 0.6057 0.906 0.9121 0.9076 0.8174 0.7456 0.8923 0.8475 1.0346 0.9302 +2000 NaN NaN NaN NaN 1.1264 1.0726 NaN NaN NaN 1.0038 0.9242 NaN NaN NaN NaN 1.0565 1.0227 1.1102 1.3415 NaN 0.9656 1.0704 1.0306 NaN NaN NaN 0.9549 0.981 1.1078 0.8763 1.0477 0.85 1.0315 0.9627 0.9935 1.0682 0.9836 1.1477 +2001 NaN NaN NaN NaN NaN 1.1449 NaN NaN NaN 1.0582 0.8428 NaN NaN NaN NaN 1.1014 NaN NaN NaN NaN 1.3772 1.0092 1.2048 NaN NaN NaN 1.0399 1.1795 1.4489 1.1793 1.1607 1.1081 0.9335 1.1656 1.0954 NaN 1.1719 NaN +2002 NaN NaN NaN NaN NaN 1.0409 NaN NaN NaN 0.9579 1.0725 NaN NaN NaN NaN 0.8191 NaN NaN NaN NaN 1.0133 1.1388 0.8574 NaN NaN NaN 0.9676 1.0166 0.7989 0.9244 1.0337 0.9831 1.1008 0.9046 0.9728 NaN 1.0216 NaN +2003 NaN NaN NaN NaN NaN 1.0857 NaN NaN NaN 1.0797 1.1856 NaN NaN NaN NaN 1.1116 NaN NaN NaN NaN 1.2099 0.9041 0.8878 NaN NaN NaN 1.2491 1.1126 0.9569 1.0001 1.2045 1.2211 0.9655 0.8671 1.0619 NaN 1.0537 NaN +2004 NaN NaN NaN NaN NaN 1.0805 NaN NaN NaN 1.0507 0.8939 NaN NaN NaN NaN 1.2629 NaN NaN NaN NaN 1.0921 1.2578 1.1902 NaN NaN NaN 0.959 0.925 1.1518 1.2883 1.1537 1.1634 0.95 1.1039 1.1106 NaN 1.0243 NaN +2005 NaN NaN NaN NaN NaN 1.0228 NaN NaN NaN 1.0665 1.2534 NaN NaN NaN NaN 1.2823 NaN NaN NaN NaN 1.1611 1.2619 1.0825 NaN NaN NaN NaN NaN NaN 1.0879 1.1738 1.0709 1.037 1.1411 1.1184 NaN 1 NaN +2006 NaN NaN NaN NaN NaN 1.0467 NaN NaN NaN 1.0619 1.0866 NaN NaN NaN NaN 0.9232 NaN NaN NaN NaN NaN NaN 1.094 NaN NaN NaN NaN NaN NaN NaN 1.1148 1.1549 1.1146 1.0439 1.0496 NaN 1.0999 NaN +2007 NaN NaN NaN NaN NaN 0.6384 NaN NaN NaN 0.9325 1.2221 NaN NaN NaN NaN 0.7875 NaN NaN NaN NaN NaN NaN 0.8041 NaN NaN NaN NaN NaN NaN NaN 0.8582 0.9104 0.6936 0.9342 0.8601 NaN 0.8735 NaN +2008 NaN NaN NaN NaN NaN 1.1539 NaN NaN NaN 0.9654 1.15 NaN NaN NaN NaN 1.0452 NaN NaN NaN NaN NaN NaN 1.0337 NaN NaN NaN NaN NaN NaN NaN 1.2407 1.1835 1.1986 1.1479 1.1504 NaN 1.224 NaN +2009 NaN NaN NaN NaN NaN 0.8553 NaN NaN NaN 0.8656 0.6773 NaN NaN NaN NaN 0.8423 NaN NaN NaN NaN NaN NaN 0.6616 NaN NaN NaN NaN NaN NaN NaN 0.5968 0.533 0.6148 0.5862 0.6643 NaN 0.8409 NaN +2010 NaN NaN NaN NaN NaN 1.3728 NaN NaN NaN 1.2721 1.0814 NaN NaN NaN NaN 1.3459 NaN NaN NaN NaN NaN NaN 1.3318 NaN NaN NaN NaN NaN NaN NaN 1.1343 1.2943 1.289 1.3976 1.2089 NaN 0.8706 NaN +2011 NaN NaN NaN NaN NaN 1.0832 NaN NaN NaN 1.0659 0.7184 NaN NaN NaN NaN 1.0472 NaN NaN NaN NaN NaN NaN 0.9099 NaN NaN NaN NaN NaN NaN NaN 1.2098 1.2097 0.9744 1.1333 1.1262 NaN NaN NaN +2012 NaN NaN NaN NaN NaN 1.0115 NaN NaN NaN 1.3312 NaN NaN NaN NaN NaN 0.8771 NaN NaN NaN NaN NaN NaN 1.2727 NaN NaN NaN NaN NaN NaN NaN 1.2402 NaN NaN NaN NaN NaN NaN NaN +2013 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN diff --git a/siteMeta_Katun.txt b/siteMeta_Katun.txt new file mode 100644 index 0000000..051dede --- /dev/null +++ b/siteMeta_Katun.txt @@ -0,0 +1,39 @@ +N1 N2 Id Long Lat ElevM Species T FirstYear LastYear +1 94 russ135 87.58 50.42 2000 LASI R 1700 1994 +2 96 russ137 87.65 50.48 2150 LASI R 1786 1994 +3 93 russ133 87.68 50.5 1950 LASI R 1713 1994 +4 47 russ232 87.83 50.17 1644 LASI R 1700 1999 +5 48 russ233 87.92 50.12 1731 LASI R 1700 2000 +6 64 russ255 88.17 50.07 2100 LASI R 1700 2012 +7 89 russ127 85.37 50.15 1750 LASI R 1700 1994 +8 90 russ129 85.63 51 1450 LASI R 1700 1994 +9 49 russ234 87.48 50.48 1887 LASI R 1700 1995 +10 68 russ259 87.54 50.04 2250 LASI R 1700 2012 +11 40 russ222 84.62 50.42 1898 PISI R 1777 2011 +12 97 russ140 84.98 50.65 1500 LASI R 1744 1994 +13 95 russ136 85.23 50.87 1400 LASI R 1764 1994 +14 43 russ228 85.23 50.87 1560 LASI R 1700 1995 +15 91 russ130 85.23 50.87 1450 LASI R 1700 1994 +16 63 russ254 89.59 50.24 2280 LASI R 1700 2012 +17 45 russ230 87.83 50.27 1703 LASI R 1700 2000 +18 44 russ229 87.83 50.3 2235 LASI R 1700 2000 +19 50 russ235 87.97 50.68 1449 LASI R 1753 2000 +20 41 russ226 87.93 50.8 1943 LASI R 1700 1998 +21 13 mong018 90.98 49.48 1925 LASI R 1700 2005 +22 12 mong017 91 49.97 2124 LASI R 1700 2005 +23 61 russ252 91.28 50.36 2170 LASI R 1722 2012 +24 23 mong029 91.43 49.87 1939 LASI R 1700 1998 +25 69 mong007 91.55 49.7 2000 LAGM R 1733 1994 +26 6 mong009 91.57 49.92 2500 LASI R 1700 1998 +27 18 mong024 88.5 48.5 2172 LASI R 1700 2004 +28 11 mong016 88.37 48.6 2096 LASI R 1700 2004 +29 19 mong025 88.8 48.7 2046 LASI R 1738 2004 +30 14 mong020 88.87 48.27 2238 LASI R 1700 2005 +31 56 russ247 87.23 49.23 2200 LASI R 1700 2012 +32 60 russ251 86.57 49.36 2200 LASI R 1700 2011 +33 66 russ257 88.14 49.39 2250 LASI R 1700 2011 +34 59 russ250 87.5 49.51 2250 LASI R 1700 2011 +35 55 russ246 87.9208 49.611 2200 LASI R 1700 2011 +36 42 russ227 88.1 49.62 2076 LASI R 1700 2000 +37 57 russ248 87.02 49.2 2250 LASI R 1700 2010 +38 46 russ231 87.28 49.17 2410 LASI R 1700 2000 diff --git a/ssValid.R b/ssValid.R new file mode 100755 index 0000000..3303e67 --- /dev/null +++ b/ssValid.R @@ -0,0 +1,104 @@ +ssValid<- function(y,X,ical,ival,i1) { + # Split-sample calibration-validation of regression model + # D Meko + # last revised 2024-03-08 + # + # Does one half of the split sample validation/calibration. Generally would be called + # twice, first time with ical and ival pointing to first and second halves of data, and then + # to second and first halves of data. Written because needed by function resonsw4. + # + # y [matrix] single-col matrix of predictand + # X [matrix] predictors, not all of which may be in model model + # ical [vector]i vector of rows for calibration part of y,X + # ival [vector]i vector of rows of validation... + # i1 [vector]i columns of X that are to be used as predictors in regression + # + # Returns named list Output with fields: + # RE reduction of error statistic + # PearsonRcalib: correlation of predicted values with observed for cal period + # PearsonRvalid: correlation of predicted values with observed for val period + # MeanObsCalibPd: mean obs predictand for calib period + # MeanObsValidPd: mean obs predictand for validation period + # MeanRecCalibPd: mean recon predctand for calibration period + # MeanRecValidPd: mean recon predctand for validation period + # RsquaredCalib: Calibration R squared of regression + # RsquaredValid: Prediction R squared; as computed here this is equivalent to + # the reduction of error statistic + # MeanAbsErrorCalibPd: mean absolute error of reconstruction for calib period + # MeanAbsErrorValidPd: mean absolute error of reconstruction for validation period + # SampleSizeCalib:number of observations in calib period + # SampleSizeValid:number of observations in validation period + # SummaryStatisticsMatrix (includes all of the above, with value for calib + # period in first col and for validation period in second col + # ssPred: vector of predictions for validation period + # + # Output.A adds nothing new to the other fields of Outlook, but may be useful for a quick look + # at statistics of calibration and validation (cols 1 and 2 of A). + # + # revised 2024-03-08: cosmetic. Correction of typos in comments + + #--- ALLOCATE + + A<-matrix(NA,nrow=6,ncol=2) # to hold for calib (col1) and validation (col2): + # Pearson r observed with predicted + # Observed mean + # Reconstructed mean + # R squared + # Mean absolute error + # Nunber of observaions + + #--- CALIBRATION + + y <- as.matrix(y) # in case y happened to be passes as vector + yc<-as.matrix((y[ical,1])) + X<-as.matrix(X) + Xc<-as.matrix(X[ical,i1]); + + G<-lm(yc~Xc) + + A[1,1]<-cor(G$fitted.values,as.vector(y[ical])) # Pearson r obs with recon + A[2,1]<-mean(y[ical]) # mean observed y + A[3,1]<-mean(G$fitted.values) # mean recon y + A[4,1]<-summary(G)$r.squared # R squared of calibration + A[5,1]<-mean(abs(G$residuals)) # mean absolute error + A[6,1]<-length(ical) + + PredNull<-rep(A[2,1],length(ival))# The "null" prediction, defined as the observed + # calib-period mean, expanded to a vector the length of the calibration period + + #--- VALIDATION + + mValid<-length(ival)# number of obs in validation period + eNull <- y[ival]-PredNull # null-prediction errors, computed as observed y minus + # prediction (vector) + + # Use calib-pd model to generate prediction for validation period. + X1 <- cbind((matrix(1,nrow=mValid,ncol=1)),X[ival,i1]) # predictor matrix, with leading col of ones + b<-as.matrix(G$coefficients) # matrix, 1 col + yhat<-X1 %*% b # predictions for validation period (1-col matrix) + ev <- y[ival]-yhat # reconstruction errors, computed as observed y minus predicted + + # Store some results + A[1,2]<- cor(as.matrix(y[ival]),yhat) # Pearson r calibration-period prediction with observed + A[2,2]<- mean(y[ival]) # mean observed + A[3,2]<- mean(yhat) # mean reconstructed + + # Compute RE and the prediction R squared, which as I am computing them are identical + SSEv<-sum(ev*ev) # sum of squares of validation errors + SSEnull <- sum(eNull*eNull) # sum of squares of null-prediction residuals + RE<-1-(SSEv/SSEnull) # reduction of error statistic + A[4,2]<- RE # prediction R squared + A[5,2]<-mean(abs(ev)) + A[6,2]<-length(ival) + + + #--- RETURN OUTPUT AS LIST + + Output <- list("RE"=RE,"PearsonRcalib"=A[1,1],"PearsonRvalid"=A[1,2],"MeanObsCalibPd"=A[2,1], + "MeanObsValidPd"=A[2,2],"MeanRecCalibPd"=A[3,1],"MeanRecValidPd"=A[3,2], + "RsquaredCalib"=A[4,1],"RsquaredValid"=A[4,2],"MeanAbsErrorCalibPd"=A[5,1], + "MeanAbsErrorValidPd"=A[5,2],"SampleSizeCalib"=A[6,1],"SampleSizeValid"=A[6,2], + "SummaryStatisticsMatrix"=A,"ssPreds"=yhat) + + return(Output) +} \ No newline at end of file diff --git a/stem1.R b/stem1.R new file mode 100755 index 0000000..99a5f5f --- /dev/null +++ b/stem1.R @@ -0,0 +1,81 @@ +stem1 <- function(Din){ +# Stem plot for ACF, ala Matlab +# D. Meko +# Revised 2022-05-17 +# +# Stem plot, useful for plotting ACF with CI +# +#---IN +# +# Din: list with elemets as follows: +# x [vector] lags for plot (assume start at lag 0, where r(0)==1) +# nsize [integer] numbe observations in time series on which acf was computed +# y [vector] acf at those lags, x +# kAlpha [integer] alpha level for CI (two-sided test of H0 that acf(k)=0) +# =1 0.05 level (95% CI) +# =2 0.01 level (99% CI) +# nextFigNumber [integer]; png with name graph-??.png will be written to outputDir, +# where ?? (e.g., 1) is the number of the figure +# outputDir [char] output directory (e.g., ) +# linecol1, 2, 3: line colors for stems, zero line, and CI +# textPlot [list] text for xlabel, ylabel, title, and upper left annotation +# +#---NOTES +# +# I got the idea for this plot function from this page: +# https://www.r-bloggers.com/2009/11/matlab-style-stem-plot-with-r/ + + + +#---UNLOAD INPUT + +x <- Din$x; y <- Din$y; Kalpha <- Din$kAlpha; nextFigNumber <- Din$NextFigNumber +outputDir <- Din$outputDr; nsize <- Din$nsize +linecol1 <- Din$linecol1; linecol2 <- Din$linecol2; linecol3 <- Din$linecol3 + +xlab1 <- Din$xtextPlot[1] +ylab1 <- Din$xtextPlot[2] +Tit1 <- Din$xtextPlot[3] +txtAnn <- Din$textPLot[4] + +#---COMPUTE CRITICAL R FOR CONFIDENCE INTERVAL + +if (kAlpha==1){ + rcrit <- 1.96/sqrt(nsize) +} else if (kAlpha==2){ + rcrit <- 2.5758/sqrt(nsize) +} else { + stop('stem1 accepts kAlpha of either 1 or 2') +} + + +#---SET UP FIGURE + +#--- Build graphics png filename +FigNumber <- NextFigNumber # for naming this png +if (FigNumber<10){ + fileOut <- paste(outputDir,'graph-0', as.character(FigNumber),'.png',sep="") +} else { + fileOut <- paste(outputDir,'graph-', as.character(FigNumber),'.png',sep="") +} + +# Figure size and margins +png(filename=fileOut, width = 960, height = 480) +par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3) + + +#---MAKE PLOT + +ylims <- c(-1.05,1.05) + +plot(x,y,pch=16,type='p',col=linecol1,xlab=xlab1,ylab=ylab1, + main=Tit1) +for (i in 1:length(x)){ + lines(c(x[i],x[i]), c(0,y[i]),col=linecol) +} +abline(h=0,lty=1,col=linecol2) +abline(h=rcrit,lty=1,col=linecol3) +abline(h=-rcrit,lty=1,col=linecol3) + +dev.off() +} \ No newline at end of file diff --git a/stemACF.R b/stemACF.R new file mode 100755 index 0000000..675fcc3 --- /dev/null +++ b/stemACF.R @@ -0,0 +1,110 @@ +stemACF <- function(Din){ + # Stem plot for ACF, ala Matlab + # D. Meko + # Revised 2022-05-17 + # + # Stem plot for ACF, ala Matlab. + # + #---IN + # + # Din: list with elemets as follows: + # x [vector] lags for plot (assume start at lag 0, where r(0)==1) + # nsize [integer] numbe observations in time series on which acf was computed + # y [vector] acf at those lags, x + # kAlpha [integer] alpha level for CI (two-sided test of H0 that acf(k)=0) + # =1 0.05 level (95% CI) + # =2 0.01 level (99% CI) + # FigNumber [integer]; png with name Figure??.png will be written to outputDir, + # where ?? (e.g., 1) is the number of the figure. + # outputDir [char] output directory (e.g., ) + # linecol1, 2, 3: line colors for stems, zero line, and CI + # textPlot [list] text for xlabel, ylabel, title, and optional upper left annotation + # If textPlot[4]=='null', nothing is annotated; also, textPlot[5] is either 'null' or some + # string, such as '-AnalysisResiduals3', which is to be built into the filename. Thus, might + # have output "Figure12-AnalysisResiduals3.png" + # + # + #---OUT + # + #---NOTES + # + # Little checking of inputs for proper class, etc. + # Motivation:I got the idea for this plot function from this page: + # https://www.r-bloggers.com/2009/11/matlab-style-stem-plot-with-r/ + # textPlot: typically something like c('Lag k (yr)', 'r(k))','ACF of ...',xxx) + # where xxx might be some string giving additional information, such as DW statistic + # txtPlot[5]: set this to 'Null' for general use (outside of TRISH) + + #---HARD CODE + + ylims <- c(-1.05,1.05) # acf can range from -1 to +1 + + #---UNLOAD INPUT + + x <- Din$x; y <- Din$y; kAlpha <- Din$kAlpha; FigNumber <- Din$FigNumber + outputDir <- Din$outputDir; nsize <- Din$nsize + linecol1 <- Din$linecol1; linecol2 <- Din$linecol2; linecol3 <- Din$linecol3 + + xlab1 <- Din$textPlot[2] + ylab1 <- Din$textPlot[3] + Tit1 <- Din$textPlot[1] + txtAnn <- Din$textPlot[4] + txtFnm <- Din$textPlot[5] + + + #---COMPUTE CRITICAL R FOR CONFIDENCE INTERVAL + + if (kAlpha==1){ + rcrit <- 1.96/sqrt(nsize) + } else if (kAlpha==2){ + rcrit <- 2.5758/sqrt(nsize) + } else { + stop('stem1 accepts kAlpha of either 1 or 2') + } + + + #---SET UP FIGURE + + #--- Build figure png filename + if (FigNumber<10){ + if (txtFnm=='Null'){ + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure0', as.character(FigNumber),txtFnm,'.png',sep="") + } + } else { + if (txtFnm=='Null'){ + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),'.png',sep="") + } else { + fileOut <- paste(outputDir,'Figure', as.character(FigNumber),txtFnm,'.png',sep="") + } + } + + # Figure size and margins + png(filename=fileOut, width = 960, height = 480) + par(mar = c(5.1, 4.5, 5.1, 2.1),cex.axis=1.1, cex.lab=1.5, cex.main=1.3,cex=1.2) + + + #---MAKE PLOT + + plot(x,y,pch=16,type='p',col=linecol1,xlab=xlab1,ylab=ylab1, + main=Tit1,ylim=ylims) + for (i in 1:length(x)){ + lines(c(x[i],x[i]), c(0,y[i]),col=linecol1) + } + # horiz lines at 0 and upper and lower CI + abline(h=0,lty=1,col=linecol2) + abline(h=rcrit,lty=5,col=linecol3) + abline(h=-rcrit,lty=5,col=linecol3) + + # optional annotation + if (txtAnn=='null'){ + # no action needed + } else { + text(1.1,ylims[2],txtAnn,adj=c(0,1),cex=1.2) + } + dev.off() + + Output <-NA + return(Output) +} \ No newline at end of file diff --git a/ties1.R b/ties1.R new file mode 100755 index 0000000..3395a14 --- /dev/null +++ b/ties1.R @@ -0,0 +1,70 @@ +ties1 <- function(x){ +# Identify ties in a time series +# D Meko +# Last revised 2022-05-10 +# +#--- Input +# x [numeric] time series +#--- Output is a list N with fields +# ngroups = number of groups of ties +# nties number of members each group +#--- Notes +# Modeled after my matlab ties1.m function +# Needed in context of Mann-Kendall trend analysis (mannken1.R) +# Make sure that input x is a vector, and has no NAs +# $nties: if a signle tie in a series, would make the nties(j)=2, since two +# data values are involved in a single tie + +#--- Check input +L1 <- is.vector(x) +L2 <- !any(is.na(x)) +L <- L1 & L2 +if (!L){ + stop('Input x must be a vector with no NAs') +} + + +mx <- length(x) + +j1<-1:mx # numbering vector same length as x + +#--- Check that not all values in x are unique; if all are unique, no need for further +# work, and can return empty elements in list Output +c <- unique(x) # unique value in x; a 1-col matrix, even if x a vector +if (length(c)==mx) { + Output <- list(ngroups=vector(),nties=vector()) + return(Output) +} + +#--- find the dupicates +L <- duplicated(x) +d <- x[L] # the duplicates, a vector +ndupe=length(d) + +#--- find the unique duplicates, which will represent "groups" of ties +g <- unique(d) +ngrp <- length(g) # number of groups + +#--- Number of members for each group. Will dupe vectors to matrics. + +# Convert vector of unique non-uniques in x into a row vector and row-dupe it to row +# size equal to the number of duplicates, ndupe rows +V <- matrix(g, nrow=ndupe, ncol=length(g), byrow=TRUE) + +# col-dupe the vector of values, d, involved in any ties +F <- matrix(d, nrow=length(d), ncol=ngrp, byrow=FALSE) + +# associate each tie-value with a group; number of trues in each col are number +# of tie-values in each group; +L <- V==F + +# sum over rows and add 1 to get number of obs in x associated with ties in the ngrp groups +nties <- colSums(L)+1 # a vector + +#---- BUILD LIST +Output <-list(ngroups=ngrp,nties=nties) +} + + + + diff --git a/trimRowNA.R b/trimRowNA.R new file mode 100755 index 0000000..b221fca --- /dev/null +++ b/trimRowNA.R @@ -0,0 +1,34 @@ +trimRowNA<- function(X){ + # Row index for trimming trailing and leading all-NA rows from a matrix + # D. Meko; last revised 2022-01-07 + # + # X, [matrix]r the time series; assumed nX columns, no "time" column + # Returns vector:indices of X marking the row rows remaining + # after any trimming off leading and trailing NAs. But if any of the + # columns after trimming has and internal NA, returns a string with + # message instead of the vector of row indices. + # + # Why? Utility function for manipulating time series matrices of tree-ring + # prdictors for a reconstruction model + + # Return an error string if X is not matrix + if (!is.matrix(X)){return("X is not a matrix in trimRowNA()")} + nX<- dim(X)[2] # number of colunns in X + + # Identify first and last rows that are not all-NA + i1<- which(apply(X, 1, function(x) !all(is.na(x)))) # identify rows all-NA + igo1 <- i1[1]; isp1 <- i1[length(i1)] + + # Check that no internal NA in any columns after trimming X + X1<-X[igo1:isp1,,drop=FALSE] + for (n in 1:nX){ + x<- X[,n,drop=FALSE] + i2 <- which(complete.cases(x)) + L<-all(diff(i2)==1) + if (!L){return("Internal NA in one or more cols of X n call to trimRowNA()")} + } + + Output<-igo1:isp1 + return(Output) +} + diff --git a/trimnan.R b/trimnan.R new file mode 100755 index 0000000..7f2b46e --- /dev/null +++ b/trimnan.R @@ -0,0 +1,35 @@ +trimnan<- function(X){ + # Get row indices of 1-col matrix after trimming of leading and trailing NA + # D. Meko; last revised 2021-12-24 + # + # X, [matrix]r the time series; assumed single column + # + # Returns vector: + # Output: a vector of row indices of X marking the row after any trimming + # off of leading and trailing NAs. Internal NAs still allowed. + # + # Why? Utility function for eliminating leading and trailing missing values + # of a time series + # + # Checks that X is a 1-col matrix and not all NA. Internal NAs may still exist in + # the values of X pointed to by Output. This function does not deal with the + # actual time variable (e.g., year). That is handled at an upper level. + + L1 <- is.matrix(X) + if (!L1){ + stop('X not a matrix') + } + nx<- dim(X)[2] + if (!nx==1){ + stop('X is a matrix, but not 1-column') + } + L3<- complete.cases(X) + if (!any(L3)){ + stop('X cannot be all-NA') + } + i3<-which(L3) + igo<-min(i3) + isp<-max(i3) + Output<-igo:isp +} + diff --git a/tsmExtend.R b/tsmExtend.R new file mode 100755 index 0000000..bc3a3f6 --- /dev/null +++ b/tsmExtend.R @@ -0,0 +1,204 @@ +tsmExtend<- function(X,yrX,yrsp,N1,N2){ + # Extend time series matrix on recent end by quantile method + # D. Meko; last revised 2022-01-26 + # + # X, [matrix]r the time series; assumed nX columns, no "time" column + # yrX [matrix]i 1-col year matrix for X + # yrsp: desired stop year of extended time series matrix (tsm) + # If yrsp=NA, extend X so that all series have data up to year of most recent series in X + # If yrsp=nnnn, where nnnn is any year, extend all series to be full through year nnnn, as long as + # nnn is not later than yrX(length(yrX)). If n>yrX(length(yrX)), treat as if yrsp=NA + # If yrsp=-1, truncate X to end with the last year with data at all series in X. + # N1: common period to all series in X should be at least this many years (e.g., 50) + # N2: each series in X must overlap somewhere with each other series by at least N2 years (e.g., 100) + # + # Returns list Output, with fields: + # Y: the extended version of input X + # yrY: the extended version of input yrX + # khow: how the extension was made + # =1 no NA in any column of X; no action needed; return Y as X + # =2 successful extension, but note that input yrsp later than last year with + # data for any series + # =3 successful extension as requested + # =4 aborted because common period of all X =N2 years + # =6 aborted because yrX not continuous + # =7 aborted because first year of X has a NA in some column + # + # N1: the common period of N>=N1 years is used for the spearman correlation (r) matrix to set + # order of series examined for a quantile prediction + # N2: a period N>=N2 of overlap of series A and B is examined to find the quantile from that + # period of N years from which to pull an extension value + # Method. Overall common period is used to get spearman r matrix. That matrix allows + # for each column of X and ordering of the other series from most-correlated to least-correlated. + # For given year i of series A needing "filling" all other series are examined to find which of + # the other series has data in year i. Then, in order of decreasing r, the two-series overlap + # of N>=N2 years is used to pull the overlap. The most highly correlated series that also has data + # in year i provides the estimate. The value of B in year i is compared with the values of + # B in the N>=N2 overlap to get a quantile, or non-exceedance probability. The "prediction" is linearly + # interpolated from the sorted values of A in the N>=N2 overlap such that the estimate has the same + # non-exceedance probability in the overlap. + + # Debugging stressors + #X <- X[216:316,,drop=FALSE]; yrX <- yrX[216:316,,drop=FALSE] + # X <- X[-250,,drop=FALSE]; yrX <- yrX[-250,,drop=FALSE] + # X [1,4]<- NA + + mX <- dim(X)[1] # number of rows in X + nX <- dim(X)[2] # number of cols in X + Ifill<-matrix(0,mX,nX) # to hold either 0 or the column of X used as predictor + + # Input X should be a tsm that increments by 1 + L1 <- !all(diff(yrX)==1) + if (L1) { + khow=6; + Output <- list("Y"=NA,"yrY"=NA,"khow"=khow) + return(Output) # abort year vector, yrX, not continuous + } + + #--- All columns of input tsm X should have valid data in first years + xtemp<-X[1,] + if (any(is.na(xtemp))){ + khow<-7 + warning('First row of input tsm X must not have any NA') + Output <- list("Y"=NA,"yrY"=NA,"khow"=khow) + return(Output) # abort; a NA in first year of X, some column + } + + + + # Check that matrix already not without NA and that yrsp not later than last + # tree-ring data in any series. + khow<-3 # initialize as successful extension, no unusual circumstances + if (!any(is.na(X))){ + khow<-1 + Y<-X; yrY<-yrX + } else if (yrsp> yrX[length(yrX),1]) { + yrsp<-NA + khow=2 + } + yrab <- yrX + if (khow==1){ + # no action needed; Y, yrY, khow already set + } else { + + #--- FIND COMMON PERIOD OF X AND COMPUTE SPEARMAN r MATRIX + L <- complete.cases(X) + U <- X[L,,drop="FALSE"] + yrU <- yrX[L,,drop="FALSE"] + mU <- dim(U)[1]; nU <- dim(U)[2] + L1 <- dim(U)[1]= max(bsort)){ + apred <- max(asort) + + } else if (xhave<=min(bsort)){ + apred<-min(asort) + + } else { + # interpolate by non-exceedance probability + #phave<- interp1(bsort,p,xhave,method="linear") + #apred <- interp1(bsort,asort,xhave,method="linear") + + apredList <- approx(bsort,asort,xhave,method="linear",ties="ordered") + apred <- apredList$y + } # end if (xhave >= max(bsort)) + + Y[j,n] <- apred # filled in value + + Ifill[j,n] <- ifind # corresponding column of predictor + j<-j-1 # will check next year back + # if (j==305){ + # print(j) + # browser() + # } + + if (is.na(X[j,n])){ + # proceed with the estimation + } else { + kwh <- FALSE # will exit the while loop + } + } # end while + } # if (!is.nan(uthis[length(uthis)])) + + } # for (n in 1:nX) + } # if khow==1 + Output <- list("Y"=Y,"yrY"=yrY,"khow"=khow) + + +} \ No newline at end of file diff --git a/xyCI.R b/xyCI.R new file mode 100755 index 0000000..874baac --- /dev/null +++ b/xyCI.R @@ -0,0 +1,52 @@ +xyCI <- function(X){ + # Upper and lower CI into x,y for CI polygon + # D. Meko + # Revised 2022-09-23 + # + # Upper and lower CI into x,y for CI polygon. Utility function to get x,y polygon + # coordinates for, say, plotting a shaded confidence interval + # + #---IN + # + # X: [matrix] 3-column time series matrix with year, lower CI and upper CI + # + #---OUT + # + # Output: a list with elements: + # x [vector] x coordinates for CI polygon + # y [vector] y coordinates for CI polygon + + #---CHECK THAT INPPUT X IS 3-COL MATRIX WITH VALUES IN COL 1 INCREMENTING BY 1 + L1 <- is.matrix(X) + L2 <- dim(X)[2]==3 + + if (!L1 && L2){ + stop('X must be 3-col matrix as input to xyCR') + } + + + #---UNLOAD INPUT + + x1 <- X[,1] # time vector + # check that time increments by 1 + d <- diff(x1) + if (!all(d==1)){ + stop('Time column in input X to xyCI must increment by 1') + } + u1 <- X[,2] # lower CI (e.g., lower 50% CI) + u2 <- X[,3] # upper CI (e.g., upper 50% CI) + + #--- MAKE POLYGON COORDINATES + + # reorganize the data values for the lower and upper Ci into a vector whose end value equals the first value + yP <- cbind(u1,rev(u2)) # matrix with lower CI as col 1, reversed upper CI as col 2 + yP <- c(yP) # convert matrix to vector: col 2 appended to end of col 1 + yP <- append(yP,yP[1]) # append first year's value of lower CI as the last value in the vector + + # Similarly reorganize the time (e.g., year) vector + xP <- cbind(x1,rev(x1)) + xP <- c(xP) + xP <- append(xP,xP[1]) + Output <- list('x'=xP,'y'=yP) + return(Output) +} \ No newline at end of file

!b}B42+dY$0BKW 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 Kj34-O?|%U4Q|S)? literal 0 HcmV?d00001 diff --git a/TrishOutputDescribeSLR1.pdf b/TrishOutputDescribeSLR1.pdf new file mode 100755 index 0000000000000000000000000000000000000000..af62ae0fabd2bfab915b59477124dbf060acba1a GIT binary patch literal 102812 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