From d0b55c5a91613937715666072ce028549f7944a6 Mon Sep 17 00:00:00 2001 From: Aituar Bektanov <159922336+aituar17@users.noreply.github.com> Date: Tue, 20 Jan 2026 15:59:41 +0200 Subject: [PATCH] Add Joint-RPCA to mia: methods, tests, examples, vignette (#789) Co-authored-by: Tuomas Borman --- .gitignore | 5 + DESCRIPTION | 3 +- NAMESPACE | 2 + R/getJointRPCA.R | 1191 ++++++++++++++++++++++++++++ R/mia.R | 159 ++-- data/ibdmdb_2omic_demo.rda | Bin 0 -> 265604 bytes inst/scripts/prepare_ibdmdb_demo.R | 277 +++++++ man/getJointRPCA.Rd | 68 ++ man/ibdmdb_2omic_demo.Rd | 49 ++ man/mia-datasets.Rd | 2 + man/mia-package.Rd | 1 + pkgdown/_pkgdown.yml | 5 + tests/testthat/test-getJointRPCA.R | 306 +++++++ 13 files changed, 2010 insertions(+), 58 deletions(-) create mode 100644 R/getJointRPCA.R create mode 100644 data/ibdmdb_2omic_demo.rda create mode 100644 inst/scripts/prepare_ibdmdb_demo.R create mode 100644 man/getJointRPCA.Rd create mode 100644 man/ibdmdb_2omic_demo.Rd create mode 100644 tests/testthat/test-getJointRPCA.R diff --git a/.gitignore b/.gitignore index bd1be61b0..8db067bcb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,8 @@ docs/ .DS_Store mia.BiocCheck/ +src/*.dll +inst/extdata/taxonomic_profiles_mgx.tsv +inst/extdata/ecs_relab.tsv +inst/extdata/hmp2_metadata_2018-08-20.csv +tools/cache/ \ No newline at end of file diff --git a/DESCRIPTION b/DESCRIPTION index 36df187b1..f806d90e4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -40,7 +40,8 @@ Authors@R: person(given = "Danielle", family = "Callan", role=c("ctb")), person(given = "Sam", family = "Hillman", role=c("ctb")), person(given = "Jesse", family = "Pasanen", role=c("ctb")), - person(given = "Eetu", family = "Tammi", role=c("ctb"))) + person(given = "Eetu", family = "Tammi", role=c("ctb")), + person(given = "Aituar", family = "Bektanov", role=c("ctb"))) Title: Microbiome analysis Description: mia implements tools for microbiome analysis based on the diff --git a/NAMESPACE b/NAMESPACE index 851cc6637..318c0d894 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -71,6 +71,7 @@ export(getDominant) export(getExperimentCrossAssociation) export(getExperimentCrossCorrelation) export(getHierarchyTree) +export(getJointRPCA) export(getLDA) export(getLowAbundant) export(getMDS) @@ -474,6 +475,7 @@ importFrom(vegan,dbrda) importFrom(vegan,decostand) importFrom(vegan,eigenvals) importFrom(vegan,monoMDS) +importFrom(vegan,optspace) importFrom(vegan,permutest) importFrom(vegan,rrarefy) importFrom(vegan,scores) diff --git a/R/getJointRPCA.R b/R/getJointRPCA.R new file mode 100644 index 000000000..f8d8b6f55 --- /dev/null +++ b/R/getJointRPCA.R @@ -0,0 +1,1191 @@ +## Joint RPCA front-end helpers +## +## Exported: +## - jointRPCAuniversal() +## - getJointRPCA() +## + +#' Run Joint-RPCA and store embedding in reducedDim +#' @name getJointRPCA +#' +#' @details +#' Convenience wrapper that runs Joint Robust PCA on one or more compositional +#' tables and stores the resulting sample embedding in \code{reducedDim(x, name)}, +#' similar to \code{runMDS()} and \code{runPCA()}. +#' +#' @param x A \code{SummarizedExperiment}, \code{TreeSummarizedExperiment}, +#' \code{MultiAssayExperiment}, or a related object supported by +#' \code{jointRPCAuniversal()}. +#' @param experiments Optional character vector of experiment names to use when +#' \code{x} is a \code{MultiAssayExperiment} (i.e. \code{names(experiments(x))}). +#' Ignored for \code{SummarizedExperiment} inputs. +#' @param altexp Optional name of an alternative experiment. If supplied, +#' Joint-RPCA is run on \code{altExp(x, altexp)} instead of \code{x}. +#' @param name Character scalar giving the name of the \code{reducedDim} slot +#' in which to store the joint sample embedding. Defaults to \code{"JointRPCA"}. +#' @param transform Character string specifying preprocessing applied to each +#' input table before ordination. Use \code{"rclr"} to apply the robust CLR +#' transform (via \code{decostand(method = "rclr")}) or \code{"none"} to +#' disable transformation (data are used as-is after masking non-finite values). +#' @param optspace.tol Numeric tolerance passed to \code{optspace()}. +#' @param center Logical; whether to center the reconstructed low-rank matrix +#' (double-centering) prior to SVD/PCA steps. +#' @param scale Logical; whether to scale the reconstructed matrix prior to +#' SVD/PCA steps. Defaults to \code{FALSE}. +#' @param ... Additional arguments passed to \code{jointRPCAuniversal()} and then +#' to the internal \code{.joint_rpca()} engine (e.g. \code{n.components}, +#' \code{min.sample.count}, \code{min.feature.count}, \code{min.feature.frequency}, +#' \code{max.iterations}, \code{sample.metadata}). +#' +#' @return The input object \code{x} with a new entry in +#' \code{reducedDim(x, name)} containing the Joint-RPCA sample embedding. +#' The full Joint-RPCA result (including distances, cross-validation +#' statistics and transformed tables) is stored in +#' \code{metadata(x)$JointRPCA[[name]]}. +#' +#' @export +NULL + +getJointRPCA <- function(x, + experiments = NULL, + altexp = NULL, + name = "JointRPCA", + transform = c("rclr", "none"), + optspace.tol = 1e-5, + center = TRUE, + scale = FALSE, + ...) { + transform <- match.arg(transform) + + # Select the object to operate on + y <- x + if (!is.null(altexp)) { + y <- altExp(x, altexp) + } + + # Use universal front-end to build tables + run .joint_rpca() + res <- jointRPCAuniversal( + y, + experiments = experiments, + transform = transform, + optspace.tol = optspace.tol, + center = center, + scale = scale, + ... + ) + + # Extract sample embedding + emb <- res[["ord_res"]][["samples"]] + + if (is.null(emb)) { + stop( + "Internal error: JointRPCA did not return a sample embedding. ", + "Please report this and include sessionInfo().", + call. = FALSE + ) + } + + emb <- as.matrix(emb) + + # Ensure embedding rownames match colnames of the target object (Bioconductor requirement) + target_cols <- colnames(x) + if (!is.null(altexp)) { + target_cols <- colnames(x) + } + + if (is.null(target_cols)) { + stop("Cannot store reducedDim: 'x' has no colnames().", call. = FALSE) + } + + if (is.null(rownames(emb))) { + stop("Cannot store reducedDim: embedding has no rownames().", call. = FALSE) + } + + # Require the same set of samples/cells + if (!setequal(rownames(emb), target_cols)) { + missing_in_emb <- setdiff(target_cols, rownames(emb)) + extra_in_emb <- setdiff(rownames(emb), target_cols) + stop( + "Cannot store reducedDim: embedding rownames do not match colnames(x).\n", + "Missing in embedding: ", paste(missing_in_emb, collapse = ", "), "\n", + "Extra in embedding: ", paste(extra_in_emb, collapse = ", "), + call. = FALSE + ) + } + + # Reorder embedding to exactly match colnames(x) + emb <- emb[target_cols, , drop = FALSE] + rownames(emb) <- target_cols + + if (nrow(emb) == 0L || ncol(emb) == 0L || is.null(rownames(emb))) { + stop( + "Internal error: JointRPCA returned an invalid sample embedding. ", + "Please report this and include sessionInfo().", + call. = FALSE + ) + } + + # Store embedding in reducedDim only if supported (SCE / TreeSE / mia-specific) + cls <- class(x) + if (any(cls %in% c("SingleCellExperiment", "TreeSummarizedExperiment"))) { + reducedDim(x, name) <- emb + } + + # Store full result in metadata + if (is.null(metadata(x)$JointRPCA)) { + metadata(x)$JointRPCA <- list() + } + metadata(x)$JointRPCA[[name]] <- res + + return(x) +} + +#' Universal Joint RPCA Wrapper +#' @name getJointRPCA +#' @param x Input object: \code{MultiAssayExperiment}, \code{SummarizedExperiment} +#' (including \code{TreeSummarizedExperiment}), list of matrices, or single matrix. +#' @param experiments Character vector of experiment names to extract when \code{x} +#' is a \code{MultiAssayExperiment} (i.e. \code{names(experiments(x))}). +#' If \code{NULL}, all experiments are used. +#' +#' For \code{MultiAssayExperiment} inputs, \strong{one assay per experiment} is +#' used: by default the first assay returned by +#' \code{assayNames()} (or index \code{1L} if unnamed). +#' The actually used assay names are recorded in \code{$assay_names_used} in +#' the result. If you need a different assay (e.g. \code{"relab"} instead of +#' \code{"counts"}), subset or reorder assays in \code{x} before calling +#' \code{jointRPCAuniversal()}. +#' @param transform Character string specifying preprocessing applied to each +#' input table before ordination. Use \code{"rclr"} to apply the robust CLR +#' transform (via \code{decostand(method = "rclr")}) or \code{"none"} to +#' disable transformation (data are used as-is after masking non-finite values). +#' @param optspace.tol Numeric tolerance passed to \code{optspace()}. +#' @param center Logical; whether to center the reconstructed low-rank matrix +#' (double-centering) prior to SVD/PCA steps. +#' @param scale Logical; whether to scale the reconstructed matrix prior to +#' SVD/PCA steps. Defaults to \code{FALSE}. +#' @param ... Additional arguments passed to \code{.joint_rpca()}. +#' +#' @return Output from \code{.joint_rpca()} with extra fields when \code{x} is a +#' \code{MultiAssayExperiment}: +#' \itemize{ +#' \item \code{$experiment_names}: character vector of experiments used. +#' \item \code{$assay_names_used}: named character vector giving, for each +#' experiment, the assay name that was used (typically the first in +#' \code{assayNames()}). +#' } +#' @importFrom SummarizedExperiment assayNames +#' @importFrom SummarizedExperiment assay +#' @importFrom MultiAssayExperiment experiments +#' @importFrom vegan decostand +#' @importFrom vegan optspace +#' @export +NULL + +jointRPCAuniversal <- function(x, experiments = NULL, + transform = c("rclr", "none"), + optspace.tol = 1e-5, + center = TRUE, + scale = FALSE, + ...) { + transform <- match.arg(transform) + + assay_names_used <- NULL + + if (inherits(x, "MultiAssayExperiment")) { + mae <- .extract_mae_tables(x, experiments) + tables <- mae$tables + experiments <- mae$experiments + assay_names_used <- mae$assay_names_used + } else if (inherits(x, "SummarizedExperiment")) { + tables <- list(assay(x)) + anm <- assayNames(x) + nm <- if (length(anm) && !is.na(anm[1])) anm[1] else "assay1" + names(tables) <- nm + } else if (is.list(x) && all(vapply(x, is.matrix, logical(1)))) { + tables <- x + if (is.null(names(tables))) { + names(tables) <- paste0("view", seq_along(tables)) + } + } else if (is.matrix(x)) { + tables <- list(x) + names(tables) <- "assay1" + } else { + stop( + "Unsupported input type for jointRPCAuniversal(): ", + paste(class(x), collapse = ", "), + call. = FALSE + ) + } + + res <- .joint_rpca( + tables = tables, + transform = transform, + optspace.tol = optspace.tol, + center = center, + scale = scale, + ... + ) + + if (inherits(x, "MultiAssayExperiment")) { + res$experiment_names <- experiments + res$assay_names_used <- assay_names_used + } + + return(res) +} + +#' Joint Robust PCA on Multiple Compositional Tables +#' +#' Internal engine for Joint Robust Principal Component Analysis (RPCA) using +#' OptSpace on multiple compositional tables. +#' +#' This function assumes a list of already extracted tables and is typically +#' called via \code{jointRPCAuniversal()} or \code{getJointRPCA()}. +#' +#' @param tables A list of compositional data tables (matrices or data frames). +#' @param n.test.samples Integer specifying the number of samples to hold out for testing +#' (only used if \code{sample.metadata} is \code{NULL}). Default is 10. +#' @param sample.metadata Optional data frame containing sample-level metadata. +#' @param train.test.column The name of the column in \code{sample.metadata} +#' that defines training vs test samples. +#' @param n.components Integer specifying the number of principal components to compute. +#' @param transform Character string specifying preprocessing applied to each +#' input table before ordination: \code{"rclr"} or \code{"none"}. +#' @param optspace.tol Numeric tolerance passed to \code{vegan::optspace()}. +#' @param center,scale Logical; whether to center/scale the reconstructed matrix +#' prior to SVD/PCA steps. +#' @param min.sample.count Minimum total count required for a sample to be retained. +#' @param min.feature.count Minimum total count required for a feature to be retained. +#' @param min.feature.frequency Minimum percentage (0–100) of samples in which a +#' feature must be non-zero to be retained. +#' @param max.iterations Maximum number of optimization iterations. +#' +#' @return A list with \code{ord_res}, \code{dist}, \code{cv_stats}, and +#' \code{rclr_tables}. +#' +#' @keywords internal +#' @noRd + +.joint_rpca <- function(tables, + n.test.samples = 10, + sample.metadata = NULL, + train.test.column = NULL, + n.components = 3, + transform = c("rclr", "none"), + min.sample.count = 0, + min.feature.count = 0, + min.feature.frequency = 0, + max.iterations = 5, + optspace.tol = 1e-5, + center = TRUE, + scale = FALSE) { + transform <- match.arg(transform) + + if (is.null(names(tables))) { + names(tables) <- paste0("view", seq_along(tables)) + } + + if (n.components < 2) { + stop("n.components must be at least 2.", call. = FALSE) + } + if (max.iterations < 1) { + stop("max.iterations must be at least 1.", call. = FALSE) + } + + # Filtering (always done, independent of rclr) + tables <- lapply(tables, function(tbl) { + out <- .rpca_table_processing( + tbl, + min.sample.count = min.sample.count, + min.feature.count = min.feature.count, + min.feature.frequency = min.feature.frequency + ) + if (nrow(out) == 0L || ncol(out) == 0L) { + stop( + "Filtering removed all data in at least one table (0 features or 0 samples). ", + "Try relaxing filtering thresholds (min.sample.count / min.feature.count / ", + "min.feature.frequency) or check your input.", + call. = FALSE + ) + } + out + }) + + # Find shared samples across views + sample.sets <- lapply(tables, colnames) + shared.all.samples <- Reduce(intersect, sample.sets) + if (length(shared.all.samples) == 0L) { + stop( + "No samples overlap between all tables. ", + "Check that colnames are consistent across views, or", + "if you are using pre-transformed tables set transform = 'none'.", + call. = FALSE + ) + } + if (length(shared.all.samples) < (n.components + 1L)) { + stop( + "Too few shared samples across all tables after filtering (", + length(shared.all.samples), "). Need at least n.components + 1 shared samples. ", + "Try lowering n.components or relaxing filtering thresholds.", + call. = FALSE + ) + } + unshared.samples <- setdiff(unique(unlist(sample.sets)), shared.all.samples) + if (length(unshared.samples) > 0) { + warning(sprintf("Removing %d sample(s) that do not overlap in tables.", length(unshared.samples))) + } + + # Restrict each table to the shared sample set + tables <- lapply(tables, function(tbl) { + tbl[, shared.all.samples, drop = FALSE] + }) + shared.all.samples <- Reduce(intersect, lapply(tables, colnames)) + + # Transform tables: rCLR or masking + rclr_tables <- lapply(tables, function(tbl) { + mat <- as.matrix(tbl) + rown <- rownames(mat) + coln <- colnames(mat) + + if (transform == "rclr") { + mat[!is.finite(mat)] <- 0 + mat[mat < 0] <- 0 + out <- vegan::decostand(mat, method = "rclr", MARGIN = 2) + dimnames(out) <- list(rown, coln) + out + } else { + out <- .mask_value_only(mat)$data + dimnames(out) <- list(rown, coln) + out + } + }) + names(rclr_tables) <- names(tables) + + # Determine train/test split + if (!is.null(sample.metadata) && !is.null(train.test.column)) { + md <- as.data.frame(sample.metadata) + md <- md[shared.all.samples, , drop = FALSE] + train.samples <- rownames(md)[md[[train.test.column]] == "train"] + test.samples <- rownames(md)[md[[train.test.column]] == "test"] + } else { + ord.tmp <- .optspace_helper( + rclr.table = t(rclr_tables[[1]]), + feature.ids = rownames(rclr_tables[[1]]), + sample.ids = colnames(rclr_tables[[1]]), + n.components = n.components, + max.iterations = max.iterations, + tol = optspace.tol, + center = center, + scale = scale + )$ord_res + sorted.ids <- rownames(ord.tmp$samples[order(ord.tmp$samples[, 1]), ]) + idx <- round(seq(1, length(sorted.ids), length.out = n.test.samples)) + test.samples <- sorted.ids[idx] + train.samples <- setdiff(shared.all.samples, test.samples) + } + + # Run joint OptSpace + result <- .joint_optspace_helper( + tables = rclr_tables, + n.components = n.components, + max.iterations = max.iterations, + test.samples = test.samples, + train.samples = train.samples, + sample.order = shared.all.samples, + tol = optspace.tol, + center = center, + scale = scale + ) + + return(list( + ord_res = result$ord_res, + dist = result$dist, + cv_stats = result$cv_stats, + rclr_tables = rclr_tables + )) +} + +#' Joint RPCA Ordination Across Multiple Compositional Tables +#' +#' Internal function that performs Robust PCA via joint OptSpace decomposition across multiple compositional tables. +#' It splits each table into train/test sets, applies joint factorization, reconstructs sample and feature embeddings, +#' optionally projects test samples, computes a sample distance matrix, and returns cross-validation error statistics. +#' +#' @param tables A list of compositional matrices or data frames with features as rows and samples as columns. +#' @param n.components Number of principal components to compute. +#' @param max.iterations Maximum number of optimization iterations for OptSpace. +#' @param test.samples Character vector of sample IDs to be projected into the ordination space. +#' @param train.samples Character vector of sample IDs used to fit the ordination. +#' +#' @return A list with: +#' \describe{ +#' \item{ord_res}{An \code{OrdinationResults} object containing embeddings, loadings, and variance explained.} +#' \item{dist}{A \code{DistanceMatrix} object for sample embeddings.} +#' \item{cv_stats}{A data frame summarizing reconstruction error across iterations and tables.} +#' } +#' +#' @keywords internal +#' @noRd + +.joint_optspace_helper <- function(tables, + n.components, + max.iterations, + test.samples, + train.samples, + sample.order = NULL, + tol = 1e-5, + center = TRUE, + scale = FALSE) { + # Coerce to matrices and enforce colnames presence + tables <- lapply(tables, function(tbl) { + mat <- as.matrix(tbl) + if (is.null(colnames(mat))) { + stop("[.joint_optspace_helper] Input table is missing column names (sample IDs).") + } + mat + }) + + # Global set of samples present in all views + all_samples <- Reduce(intersect, lapply(tables, colnames)) + + # Align train/test to actually available samples + test.samples <- intersect(test.samples, all_samples) + train.samples <- intersect(train.samples, all_samples) + + if (!length(test.samples) || !length(train.samples)) { + stop("[.joint_optspace_helper] Empty train/test split after aligning sample IDs.") + } + + # Split and transpose training/test data per table + tables.split <- lapply(tables, function(tbl) { + list( + t(tbl[, test.samples, drop = FALSE]), + t(tbl[, train.samples, drop = FALSE]) + ) + }) + + # Format input for solver + tables.for.solver <- lapply(tables.split, function(pair) { + lapply(pair, as.matrix) + }) + + # Run joint OptSpace solver + opt.result <- .joint_optspace_solve( + train.test.pairs = tables.for.solver, + n.components = n.components, + max.iter = max.iterations, + tol = tol + ) + + U <- opt.result$U + S <- opt.result$S + V_list <- opt.result$V_list + dists <- opt.result$dists + + # Assign row/column names to loadings + pc.names <- paste0("PC", seq_len(n.components)) + + # Combine feature loadings with table-derived row names + vjoint <- do.call(rbind, Map(function(tbl, V) { + rownames(V) <- rownames(tbl) + colnames(V) <- pc.names + V + }, tables, V_list)) + + U <- U[seq_along(train.samples), , drop = FALSE] + rownames(U) <- train.samples + colnames(U) <- pc.names + + # Recenter & re-factor via SVD + X <- U %*% S %*% t(vjoint) + + if (center) { + X <- sweep(X, 2, colMeans(X)) + X <- sweep(X, 1, rowMeans(X)) + } + if (scale) { + X <- scale(X, center = FALSE, scale = TRUE) + } + svd.res <- svd(X) + u <- svd.res$u[, seq_len(n.components), drop = FALSE] + v <- svd.res$v[, seq_len(n.components), drop = FALSE] + s.eig <- svd.res$d[seq_len(n.components)] + + rownames(u) <- train.samples + rownames(v) <- rownames(vjoint) + pc.names <- paste0("PC", seq_len(n.components)) + colnames(u) <- colnames(v) <- pc.names + + # Build a named per-view features list + features_list <- lapply(seq_along(tables), function(i) { + rid <- rownames(tables[[i]]) + v[rid, , drop = FALSE] + }) + names(features_list) <- names(tables) + + prop.exp <- s.eig^2 / sum(s.eig^2) + ord_res <- .ordination_results( + method = "rpca", + eigvals = setNames(s.eig, pc.names), + samples = u, + features = features_list, + proportion.explained = setNames(prop.exp, pc.names) + ) + + # Project test samples + if (length(test.samples) > 0) { + test.matrices <- lapply(tables, function(tbl) tbl[, test.samples, drop = FALSE]) + names(test.matrices) <- names(tables) + ord_res <- .transform(ord_res, test.matrices, apply.rclr = FALSE) + } + + # Compute distance matrix and CV error summary + dist.base <- as.matrix(dist(ord_res$samples)) + + if (!is.null(sample.order)) { + order_use <- intersect(sample.order, rownames(dist.base)) + dist.mat <- dist.base[order_use, order_use, drop = FALSE] + } else { + dist.mat <- dist.base + order_use <- rownames(dist.base) + } + + dist.res <- .distance_matrix(dist.mat, ids = order_use) + + cv.dist <- data.frame(t(dists)) + colnames(cv.dist) <- c("mean_CV", "std_CV") + cv.dist$run <- sprintf( + "tables_%d.n.components_%d.max.iterations_%d.n.test_%d", + length(tables), n.components, max.iterations, length(test.samples) + ) + cv.dist$iteration <- seq_len(nrow(cv.dist)) + rownames(cv.dist) <- seq_len(nrow(cv.dist)) + + return(list(ord_res = ord_res, dist = dist.res, cv_stats = cv.dist)) +} + +#' Apply Projection of New Compositional Tables to Existing Ordination +#' +#' Internal function that transforms and projects new sample tables into an existing Joint RPCA ordination space. +#' It handles feature alignment, optional rCLR preprocessing, padding of missing features, +#' and merges projected samples with existing ones. +#' +#' @param ordination A list containing previous ordination results: `samples`, `features`, and `eigvals`. +#' @param tables A named list of new compositional tables (matrices or data frames) +#' with features as rows and samples as columns. +#' @param apply.rclr Logical; whether to apply rCLR transformation to new input tables before projection. Default is `TRUE`. +#' +#' @return An updated ordination list with the `samples` matrix extended to include new projected samples. +#' @keywords internal +#' @noRd + +.transform <- function(ordination, tables, + apply.rclr = TRUE) { + Udf <- ordination$samples + Vobj <- ordination$features + s.eig <- ordination$eigvals + + # Ensure tables is a list of views + if (!is.list(tables)) { + stop("[.transform] 'tables' must be a list of view matrices (features x samples).") + } + + if (is.list(Vobj) && !is.null(names(Vobj))) { + if (is.null(names(tables))) { + names(tables) <- names(Vobj)[seq_along(tables)] + } + if (is.null(names(tables))) { + stop("[.transform] 'tables' must be a *named* list of view matrices (features x samples).") + } + } + + # rCLR if requested + prep_view <- function(tab) { + mat <- as.matrix(tab) + rown <- rownames(mat) + coln <- colnames(mat) + + if (apply.rclr) { + mat <- vegan::decostand(mat, method = "rclr", MARGIN = 2) + + dimnames(mat) <- list(rown, coln) + } + + storage.mode(mat) <- "double" + mat[!is.finite(mat)] <- 0 + mat + } + tables <- lapply(tables, prep_view) + + if (is.matrix(Vobj)) { + all.features <- rownames(Vobj) + tables <- lapply(tables, function(mat) { + miss <- setdiff(all.features, rownames(mat)) + if (length(miss)) { + pad <- matrix(0, + nrow = length(miss), ncol = ncol(mat), + dimnames = list(miss, colnames(mat)) + ) + mat <- rbind(mat, pad) + } + mat[all.features, , drop = FALSE] + }) + proj.mat <- do.call(cbind, tables) + colnames(proj.mat) <- make.unique(colnames(proj.mat), sep = "_") + ordination$samples <- .transform_helper(Udf, Vobj, s.eig, proj.mat) + return(ordination) + } + + # 3+-omic path: V is a named list per view + if (!is.list(Vobj) || is.null(names(Vobj))) { + stop("[.transform] ordination$features is neither a matrix nor a named list.") + } + + # Intersect views by name, preserve training order + views <- intersect(names(Vobj), names(tables)) + if (!length(views)) stop("[.transform] No overlapping view names between ordination and new tables.") + + test.matrices <- list() + for (vw in views) { + Vvw <- Vobj[[vw]] + stopifnot(is.matrix(Vvw), !is.null(rownames(Vvw))) + mat <- tables[[vw]] + + train_feats <- rownames(Vvw) + miss <- setdiff(train_feats, rownames(mat)) + if (length(miss)) { + pad <- matrix(0, + nrow = length(miss), ncol = ncol(mat), + dimnames = list(miss, colnames(mat)) + ) + mat <- rbind(mat, pad) + } + mat <- mat[train_feats, , drop = FALSE] + + test.matrices[[vw]] <- mat + } + + ordination$samples <- .transform_helper(Udf, Vobj, s.eig, test.matrices) + return(ordination) +} + +#' Project New Data into Existing Ordination Space +#' +#' Internal function to align rCLR-transformed samples to an existing RPCA ordination space. +#' Handles feature alignment, deduplication of sample names, double-centering normalization, +#' and projection into low-rank space using previously learned components. +#' +#' @param Udf Matrix of training sample embeddings (samples × components). +#' @param Vdf Matrix or list of feature loadings (features × components, or per-view list). +#' @param s.eig Singular values from the RPCA decomposition. +#' @param table.rclr.project New rCLR-transformed table(s) for projection (features × samples). +#' If `Vdf` is a matrix, provide a single matrix; if `Vdf` is a list, provide a named list of matrices per view. +#' @param dedup.samples Logical; whether to merge samples with identical names (e.g. suffixes like `_1`, `_2`) +#' by averaging their feature values. Default is `TRUE`. Set to `FALSE` to preserve all duplicate sample IDs. +#' +#' @return A combined matrix of training and projected samples (samples × components). +#' @keywords internal +#' @noRd + +.transform_helper <- function(Udf, Vdf, s.eig, table.rclr.project, + dedup.samples = TRUE) { + # Legacy path (single view) + if (is.matrix(Vdf)) { + stopifnot(is.matrix(table.rclr.project)) + # Align rows by name + common <- intersect(rownames(Vdf), rownames(table.rclr.project)) + if (length(common) < ncol(Udf)) { + stop(sprintf("[.transform_helper] Too few matching features: %d", length(common))) + } + + M <- t(as.matrix(table.rclr.project[common, , drop = FALSE])) + V <- as.matrix(Vdf[common, , drop = FALSE]) + + # Dedup of sample IDs + if (dedup.samples) { + sid <- sub("_\\d+$", "", rownames(M)) + if (any(duplicated(sid))) { + M <- rowsum(M, group = sid, reorder = FALSE) / as.vector(table(sid)) + } else { + rownames(M) <- sid + } + } + + # Projection (match training scaling) + Uproj <- M %*% V + # Scale by singular values + if (length(s.eig)) { + Sinv <- diag(1 / s.eig, nrow = length(s.eig)) + Uproj <- Uproj %*% Sinv + } + + colnames(Uproj) <- colnames(Udf) + U.combined <- rbind(Udf[setdiff(rownames(Udf), rownames(Uproj)), , drop = FALSE], Uproj) + return(U.combined) + } + + # Multi-view path (named lists) + stopifnot(is.list(Vdf), is.list(table.rclr.project)) + views <- intersect(names(Vdf), names(table.rclr.project)) + if (!length(views)) stop("[.transform_helper] No overlapping views.") + + # Project per view, then sum contributions in the shared latent space + Usum <- NULL + ncomp <- ncol(Udf) + for (vw in views) { + Vvw <- Vdf[[vw]] + Tvw <- table.rclr.project[[vw]] + stopifnot(is.matrix(Vvw), is.matrix(Tvw)) + + common <- intersect(rownames(Vvw), rownames(Tvw)) + if (length(common) < ncomp) { + stop(sprintf("[.transform_helper] View '%s': too few matching features (%d).", vw, length(common))) + } + + M <- t(as.matrix(Tvw[common, , drop = FALSE])) + V <- as.matrix(Vvw[common, , drop = FALSE]) + + # Accumulate per-view U + Uvw <- M %*% V + if (is.null(Usum)) { + Usum <- Uvw + } else { + # Align rows (samples) by name before summing + all_s <- union(rownames(Usum), rownames(Uvw)) + Utmp <- matrix(0, + nrow = length(all_s), ncol = ncol(Udf), + dimnames = list(all_s, colnames(Udf)) + ) + Utmp[rownames(Usum), ] <- Usum + Utmp[rownames(Uvw), ] <- Utmp[rownames(Uvw), ] + Uvw + Usum <- Utmp + } + } + + # Sample dedup (after combining views) + if (dedup.samples) { + sid <- sub("_\\d+$", "", rownames(Usum)) + if (any(duplicated(sid))) { + Usum <- rowsum(Usum, group = sid, reorder = FALSE) / as.vector(table(sid)) + } else { + rownames(Usum) <- sid + } + } + + # Scale by S + if (length(s.eig)) { + Sinv <- diag(1 / s.eig, nrow = length(s.eig)) + Usum <- Usum %*% Sinv + } + colnames(Usum) <- colnames(Udf) + + # Merge with training U, avoiding duplicates + keep_train <- setdiff(rownames(Udf), rownames(Usum)) + rbind(Udf[keep_train, , drop = FALSE], Usum) +} + +#' RPCA Table Filtering and Preprocessing +#' +#' Internal function that performs filtering and cleanup on a compositional data table +#' prior to Robust PCA analysis. Removes low-count features/samples, enforces non-zero frequency thresholds, +#' checks for ID duplication, and returns a matrix suitable for transformation and ordination. +#' +#' @param table A matrix or data frame with features as rows and samples as columns. +#' @param min.sample.count Minimum total count required for a sample to be retained. Default is 0. +#' @param min.feature.count Minimum total count required for a feature to be retained. Default is 0. +#' @param min.feature.frequency Minimum percentage (0–100) of samples in which a feature must be non-zero. Default is 0. +#' +#' @return A filtered numeric matrix containing non-empty features and samples. +#' @keywords internal +#' @noRd + +.rpca_table_processing <- function(table, + min.sample.count = 0, + min.feature.count = 0, + min.feature.frequency = 0) { + # Ensure the input is a matrix + if (is.data.frame(table)) { + table <- as.matrix(table) + } + + n.features <- nrow(table) + n.samples <- ncol(table) + + # Filter features by total count + if (!is.null(min.feature.count)) { + feature.totals <- rowSums(table, na.rm = TRUE) + keep.features <- feature.totals > min.feature.count + table <- table[keep.features, , drop = FALSE] + } + + # Filter features by frequency across samples + if (!is.null(min.feature.frequency)) { + freq.threshold <- min.feature.frequency / 100 + feature.freq <- rowMeans(table > 0, na.rm = TRUE) + keep.features <- feature.freq > freq.threshold + table <- table[keep.features, , drop = FALSE] + } + + # Filter samples by total count + if (!is.null(min.sample.count)) { + sample.totals <- colSums(table, na.rm = TRUE) + keep.samples <- sample.totals > min.sample.count + table <- table[, keep.samples, drop = FALSE] + } + + # Check for duplicate IDs + if (any(duplicated(colnames(table)))) { + stop("Data table contains duplicate sample (column) IDs.", call. = FALSE) + } + if (any(duplicated(rownames(table)))) { + stop("Data table contains duplicate feature (row) IDs.", call. = FALSE) + } + + # Remove empty rows and columns if sample filtering applied + if (!is.null(min.sample.count)) { + nonzero.features <- rowSums(table, na.rm = TRUE) > 0 + nonzero.samples <- colSums(table, na.rm = TRUE) > 0 + table <- table[nonzero.features, nonzero.samples, drop = FALSE] + } + + return(table) +} + +#' Generate a MaskedMatrix from Numeric Input +#' +#' Internal helper that ensures input is a 2D numeric matrix and returns a masked version, +#' replacing non-finite values (e.g., NA, NaN, Inf) with `NA` and recording their positions in a logical mask. +#' +#' @param mat A numeric matrix or vector. If a vector, it will be converted to a 1-row matrix. +#' +#' @return A list of class \code{"MaskedMatrix"} with two elements: +#' \describe{ +#' \item{data}{The original matrix with non-finite values replaced by \code{NA}.} +#' \item{mask}{Logical matrix indicating non-finite entries (TRUE if missing).} +#' } +#' +#' @keywords internal +#' @noRd + +.mask_value_only <- function(mat) { + # Ensure matrix is at least 2D + if (is.vector(mat)) { + mat <- matrix(mat, nrow = 1) + } + + # Ensure matrix is not more than 2D + if (length(dim(mat)) > 2) { + stop("Input matrix can only have two dimensions or less") + } + + # Generate logical mask: TRUE where values are missing + mask <- !is.finite(mat) + + # Create masked matrix + masked.mat <- mat + masked.mat[!is.finite(mat)] <- NA + + # Return as a masked matrix + return(structure(list( + data = masked.mat, + mask = mask + ), class = "MaskedMatrix")) +} + +#' Internal constructor for ordination results +#' @keywords internal +#' @noRd +.ordination_results <- function(method, eigvals, samples, features, + proportion.explained, dist = NULL, metadata = list()) { + return(structure(list( + method = method, + eigvals = eigvals, + samples = samples, + features = features, + proportion.explained = proportion.explained, + dist = dist, + metadata = metadata + ), class = "OrdinationResults")) +} + +#' Internal constructor for a distance matrix object +#' @keywords internal +#' @noRd +.distance_matrix <- function(matrix, ids = NULL, method = "euclidean") { + if (!is.matrix(matrix)) stop("Input must be a matrix.") + if (!isSymmetric(matrix)) stop("Distance matrix must be symmetric.") + if (!is.null(ids)) { + if (length(ids) != nrow(matrix)) stop("Length of 'ids' must match matrix dimensions.") + rownames(matrix) <- ids + colnames(matrix) <- ids + } + return(structure(list( + data = matrix, + ids = rownames(matrix), + method = method + ), class = "DistanceMatrix")) +} + +#' Extract per-experiment assay tables from a MultiAssayExperiment +#' +#' @param x A MultiAssayExperiment. +#' @param experiments Character vector of experiment names (or NULL for all). +#' +#' @return A list with `tables`, `experiments`, and `assay_names_used`. +#' +#' @keywords internal +#' @noRd +.extract_mae_tables <- function(x, experiments = NULL) { + exps <- experiments(x) + + if (is.null(experiments)) { + experiments <- names(exps) + } + if (length(experiments) == 0L) { + stop("No experiments found in 'x'.", call. = FALSE) + } + + assay_names_used <- setNames(character(length(experiments)), experiments) + tables <- vector("list", length(experiments)) + names(tables) <- experiments + + for (i in seq_along(experiments)) { + e <- experiments[[i]] + exp_se <- exps[[e]] + if (is.null(exp_se)) { + stop(sprintf("Experiment '%s' not found in 'x'.", e), call. = FALSE) + } + + anm <- assayNames(exp_se) + default_assay <- if (length(anm)) anm[[1]] else 1L + + assay_names_used[[e]] <- if (is.character(default_assay)) default_assay else as.character(default_assay) + tables[[e]] <- assay(exp_se, default_assay) + } + + list( + tables = tables, + experiments = experiments, + assay_names_used = assay_names_used + ) +} + +#' OptSpace back-end (joint & single-view) +#' +#' OptSpace-based solvers built on top of \code{vegan::optspace()}. +#' +#' This file contains: +#' \itemize{ +#' \item \code{.optspace_helper()} — single-view rCLR → OptSpace → biplot +#' \item \code{.joint_optspace_solve()} — multi-view joint factorization +#' } +#' +#' @keywords internal +#' @noRd +NULL + +#' OptSpace-Based Dimensionality Reduction and RPCA Biplot Generation +#' +#' Internal function that fits an OptSpace model to a rCLR-transformed compositional table, +#' reconstructs the low-rank matrix, applies PCA, and constructs an ordination result +#' capturing sample embeddings, feature loadings, and explained variance. A distance matrix +#' is also generated using Aitchison geometry. +#' +#' @param rclr.table A numeric matrix representing rCLR-transformed compositional data. +#' @param feature.ids Character vector of feature names (used for row labeling of loadings). +#' @param sample.ids Character vector of sample names (used for row labeling of embeddings). +#' @param n.components Integer specifying number of principal components to retain. Default is 3. +#' @param max.iterations Maximum number of iterations to run OptSpace optimization. Default is 5. +#' +#' @return A list with: +#' \describe{ +#' \item{ord_res}{An \code{OrdinationResults} object containing PCA scores, loadings, and metadata.} +#' \item{dist}{A sample-by-sample \code{DistanceMatrix} object using Aitchison geometry.} +#' \item{opt_fit}{The raw OptSpace fit result containing matrices \code{X}, \code{Y}, and \code{S}.} +#' } +#' +#' @keywords internal +#' @noRd + +.optspace_helper <- function(rclr.table, + feature.ids, + sample.ids, + n.components = 3, + max.iterations = 5, + tol = 1e-5, + center = TRUE, + scale = FALSE) { + opt.result <- vegan::optspace( + x = rclr.table, + ropt = n.components, + niter = max.iterations, + tol = tol, + verbose = FALSE + ) + + n.components <- ncol(opt.result$S) + + # Reconstruct and re-center matrix + X.hat <- opt.result$X %*% opt.result$S %*% t(opt.result$Y) + X.hat <- scale(X.hat, center = center, scale = scale) + X.hat <- t(scale(t(X.hat), center = center, scale = scale)) + + # PCA + svd.out <- svd(X.hat) + u <- svd.out$u[, 1:n.components, drop = FALSE] + s <- svd.out$d[1:n.components] + v <- svd.out$v[, 1:n.components, drop = FALSE] + + # Label loadings + rename.cols <- paste0("PC", seq_len(n.components)) + sample.scores <- u + feature.scores <- data.frame(v, row.names = feature.ids) + feature.scores <- as.matrix(feature.scores) + rownames(sample.scores) <- sample.ids + colnames(sample.scores) <- rename.cols + colnames(feature.scores) <- rename.cols + + # Proportion explained + prop.var <- s^2 / sum(svd.out$d^2) + names(prop.var) <- rename.cols + names(s) <- rename.cols + + # Add PC3 for 2D case + if (n.components == 2) { + sample.scores <- cbind(sample.scores, PC3 = 0) + feature.scores <- cbind(feature.scores, PC3 = 0) + sample.scores <- as.matrix(sample.scores) + feature.scores <- as.matrix(feature.scores) + + s <- c(s, PC3 = 0) + prop.var <- c(prop.var, PC3 = 0) + rename.cols <- c(rename.cols, "PC3") + } + + # Compute distance in sample PC-space + dist.matrix.raw <- as.matrix(dist(u)) + rownames(dist.matrix.raw) <- sample.ids + colnames(dist.matrix.raw) <- sample.ids + + dist.res <- .distance_matrix(dist.matrix.raw, + ids = sample.ids, + method = "aitchison" + ) + + ord_res <- .ordination_results( + method = "rpca_biplot", + eigvals = s, + samples = sample.scores, + features = feature.scores, + proportion.explained = prop.var, + dist = dist.matrix.raw, + metadata = list( + long.method.name = "(Robust Aitchison) RPCA Biplot", + run.id = sprintf( + "optspace_helper_n.components_%d.max.iterations_%d", + n.components, max.iterations + ) + ) + ) + + return(list( + ord_res = ord_res, + dist = dist.res, + opt_fit = opt.result + )) +} + +#' Joint OptSpace Optimization Across Multiple Train/Test Splits +#' +#' Internal function that performs joint matrix factorization using OptSpace across a set of paired train/test compositional tables. +#' Stacks training matrices horizontally, applies low-rank optimization, splits feature loadings per table, +#' and evaluates projection error on test data via Frobenius norm. +#' +#' @param train.test.pairs A list of paired matrices where each element is a two-item list: \code{[[test, train]]}. +#' @param n.components Integer specifying number of components to retain in the OptSpace model. +#' @param max.iter Maximum number of optimization iterations. Default is 50. +#' @param verbose Logical; whether to print progress messages. Default is \code{TRUE}. +#' +#' @return A list with: +#' \describe{ +#' \item{U}{Shared sample embedding matrix across all input tables.} +#' \item{S}{Singular values matrix from OptSpace decomposition.} +#' \item{V_list}{List of per-table feature loading matrices.} +#' \item{dists}{Matrix of reconstruction errors (rows: error type, columns: tables).} +#' } +#' +#' @keywords internal +#' @noRd + +.joint_optspace_solve <- function(train.test.pairs, n.components, + max.iter = 50, verbose = TRUE, + tol = 1e-5) { + # Prepare lists to hold training matrices and dimensions + train.matrices <- list() + test.matrices <- list() + dims <- list() + + for (pair in train.test.pairs) { + test.mat <- pair[[1]] + train.mat <- pair[[2]] + train.matrices <- append(train.matrices, list(train.mat)) + test.matrices <- append(test.matrices, list(test.mat)) + dims <- append(dims, list(dim(train.mat))) + } + + # Stack training matrices horizontally + train.stacked <- do.call(cbind, train.matrices) + + # Apply OptSpace to stacked matrix via vegan + if (verbose) { + message("Running vegan::optspace() on stacked training data...") + } + + fit <- vegan::optspace( + x = train.stacked, + ropt = n.components, + niter = max.iter, + tol = tol, + verbose = verbose + ) + + # Extract sample loadings + U.shared <- fit$X + S.shared <- fit$S + + # Split V back into per-table pieces + feat.indices <- cumsum(vapply(dims, function(d) d[2], numeric(1))) + feat.starts <- c(1, head(feat.indices, -1) + 1) + V_list <- Map( + function(start, end) fit$Y[start:end, , drop = FALSE], + feat.starts, feat.indices + ) + + # Reconstruction error per view (mean_CV / std_CV placeholder) + n_views <- length(test.matrices) + dists <- matrix(0, nrow = 2, ncol = n_views) + + for (i in seq_along(test.matrices)) { + V.k <- V_list[[i]] + test.mat <- test.matrices[[i]] + + # Project test samples: U.test = test × V + U.test <- as.matrix(test.mat) %*% V.k + U.test <- sweep(U.test, 2, diag(S.shared), "/") + recon.test <- U.test %*% S.shared %*% t(V.k) + + # Center for consistency + recon.test <- scale(recon.test, center = TRUE, scale = FALSE) + recon.test <- t(scale(t(recon.test), center = TRUE, scale = FALSE)) + + error <- test.mat - recon.test + error[is.na(error)] <- 0 + error.val <- norm(error, "F") / sqrt(sum(!is.na(test.mat))) + + dists[1, i] <- error.val + dists[2, i] <- 0 + } + + return(list(U = U.shared, S = S.shared, V_list = V_list, dists = dists)) +} diff --git a/R/mia.R b/R/mia.R index f0f419f19..fc62a795b 100644 --- a/R/mia.R +++ b/R/mia.R @@ -27,7 +27,7 @@ NULL #' The datasets represent instances of the TreeSummarizedExperiment and #' MultiAssayExperiment containers and can serve as tools to practice the #' mia functionality. -#' +#' #' Currently, the following datasets are available: #' \itemize{ #' \item{\code{\link{dmn_se}}: A SummarizedExperiment with 130 features and @@ -38,6 +38,8 @@ NULL #' and 3 samples} #' \item{\code{\link{GlobalPatterns}}: A TreeSummarizedExperiment with 19216 #' features and 26 samples} +#' \item{\code{\link{ibdmdb_2omic_demo}}: A compact +#' \code{MultiAssayExperiment} demo dataset with 2 experiments (MGX + MTX)} #' \item{\code{\link{HintikkaXOData}}: A MultiAssayExperiment with 3 #' experiments (microbiota, metabolites and biomarkers)} #' \item{\code{\link{peerj13075}}: A TreeSummarizedExperiment with 674 @@ -47,19 +49,19 @@ NULL #' \item{\code{\link{Tito2024QMP}}: A TreeSummarizedExperiment with 676 #' features and 589 samples} #' } -#' +#' #' @name mia-datasets #' @docType data #' @keywords datasets -#' +#' #' @examples #' # Load dataset from mia #' library(mia) #' data("GlobalPatterns", package = "mia") -#' +#' #' # In this case, the dataset is a TreeSE, so it is renamed as tse #' tse <- GlobalPatterns -#' +#' #' # Print summary #' tse NULL @@ -70,17 +72,17 @@ NULL #' GlobalPatterns compared the microbial communities from 25 environmental #' samples #' and three known "mock communities" at a an average depth of 3.1 million reads -#' per sample. Authors reproduced diversity patterns seen in many other +#' per sample. Authors reproduced diversity patterns seen in many other #' published studies, while investigating technical bias by applying the same #' techniques to simulated microbial communities of known composition. Special #' thanks are given to J. Gregory Caporaso for providing the OTU-clustered data #' files for inclusion in the \pkg{phyloseq} package, from which this data was #' converted to \code{TreeSummarizedExperiment}. -#' +#' #' @format A TreeSummarizedExperiment with 19216 features and 26 samples. The #' rowData contains taxonomic information at Kingdom, Phylum, Class, Order, #' Family, Genus and Species levels. The colData includes: -#' +#' #' \describe{ #' \item{X.SampleID}{Sample ID taken from the corresponding study} #' \item{Primer}{primer used for sequencing} @@ -102,7 +104,7 @@ NULL #' @seealso \code{\link{mia-datasets}} #' @author Caporaso, J. G., et al. #' @references -#' Caporaso, J. G., et al. (2011). +#' Caporaso, J. G., et al. (2011). #' Global patterns of 16S rRNA diversity at a depth of millions of sequences per #' sample. #' PNAS, 108, 4516-4522. \url{https://doi.org/10.1073/pnas.1000080107} @@ -121,7 +123,7 @@ NULL #' #' @format A TreeSummarizedExperiment with 553 features and 280 samples. The #' rowData contains taxonomic information at Genus level. The colData includes: -#' +#' #' \describe{ #' \item{Enterotype}{enterotype the sample belongs to (1, 2 and 3)} #' \item{Sample_ID}{sample ID of samples from all studies} @@ -136,7 +138,7 @@ NULL #' \item{ClinicalStatus}{participant's clinical status (healthy, obese, CD, #' UC and elderly)} #' } -#' +#' #' @name enterotype #' @docType data #' @keywords datasets @@ -150,18 +152,18 @@ NULL #' Arumugam, M., et al. (2014). Addendum: Enterotypes of the human gut #' microbiome. #' Nature 506, 516 (2014). \url{https://doi.org/10.1038/nature13075} -#' +#' #' @source \url{http://www.bork.embl.de/Docu/Arumugam_et_al_2011/downloads.html} NULL #' Human esophageal community from 3 individuals -#' +#' #' This small dataset from a human esophageal community includes 3 samples from #' 3 human adults based on biopsies analysed with 16S rDNA PCR. The 16S rRNA #' sequence processing is provided in the mothur wiki from the link below. It #' was #' converted into a TreeSummarizedExperiment from the \pkg{phyloseq} package. -#' +#' #' @format A TreeSummarizedExperiment with 58 features and 3 samples. The #' rowData contains no taxonomic information. The colData is empty. #' @@ -171,9 +173,9 @@ NULL #' @usage data(esophagus) #' @seealso \code{\link{mia-datasets}} #' @author Pei et al. \email{zhiheng.pei@@med.nyu.edu}. -#' @references +#' @references #' Pei, Z., Bini, E. J., Yang, L., Zhou, M., Francois, F., & Blaser, M. J. -#' (2004). +#' (2004). #' Bacterial biota in the human distal esophagus. #' Proceedings of the National Academy of Sciences of the United States of #' America, 101(12), 4250-4255. @@ -192,14 +194,14 @@ NULL #' dmn_se is a dataset on twins' microbiome where samples are stratified by #' their community composition through Dirichlet Multinomial Mixtures (DMM). It #' was derived from the \pkg{DirichletMultinomial} package. -#' +#' #' @format A SummarizedExperiment with 130 features and 278 samples. The #' rowData contains no taxonomic information. The colData includes: -#' +#' #' \describe{ #' \item{pheno}{participant's weight condition (Lean, Overwt and Obese)} #' } -#' +#' #' @name dmn_se #' @docType data #' @aliases twins @@ -215,23 +217,23 @@ NULL #' PLoS ONE 7(2): e30126. \url{https://doi.org/10.1371/journal.pone.0030126} #' #' Turnbaugh PJ, Hamady M, Yatsunenko T, Cantarel BL, Duncan A, et al. (2009). -#' A core gut microbiome in obese and lean twins. Nature 457: 480–484. +#' A core gut microbiome in obese and lean twins. Nature 457: 480–484. #' \url{https://doi.org/10.1038/nature07540} NULL #' Skin microbial profiles 58 genetically unrelated individuals -#' +#' #' peerj13075 includes skin microbial profiles of 58 volunteers with multiple #' factors. 16S r-RNA sequencing of V3-V4 regions was done to generate millions #' of read using illumina platform. A standard bioinformatic and statistical #' analysis done to explore skin bacterial diversity and its association with #' age, diet, geographical locations. The authors investigated significant #' association of skin microbiota with individual’s geographical location. -#' +#' #' @format A TreeSummarizedExperiment with 674 features and 58 samples. The #' rowData contains taxonomic information at kingdom, phylum, class, order, #' family and genus level. The colData includes: -#' +#' #' \describe{ #' \item{Sample}{sample ID} #' \item{Geographical_location}{city where participant lives (Ahmednagar, @@ -248,18 +250,18 @@ NULL #' @seealso \code{\link{mia-datasets}} #' @author Potbhare, R., et al. #' @references -#' Potbhare, R., RaviKumar, A., Munukka, E., Lahti, L., & Ashma, R. (2022). +#' Potbhare, R., RaviKumar, A., Munukka, E., Lahti, L., & Ashma, R. (2022). #' Skin microbiota diversity among genetically unrelated individuals of Indian -#' origin. +#' origin. #' PeerJ, 10, e13075. \url{https://doi.org/10.7717/peerj.13075} #' Supplemental information includes OTU table and taxonomy table -#' publicly-accessible from: +#' publicly-accessible from: #' \url{https://www.doi.org/10.7717/peerj.13075/supp-1} #' \url{https://www.doi.org/10.7717/peerj.13075/supp-2} NULL #' Multiomics dataset from 40 rat samples -#' +#' #' HintikkaXO is a multiomics dataset from a rat experiment studying effect of #' fat and prebiotics in diet. It contains high-throughput profiling data from #' 40 rat samples, including 39 biomarkers, 38 metabolites (NMR), and 12706 OTUs @@ -267,7 +269,7 @@ NULL #' High/Low fat diet and xylo-oligosaccaride supplementation. Column metadata is #' common for all experiments (microbiota, metabolites, biomarkers) and is #' described below. -#' +#' #' @format A MultiAssayExperiment with 3 experiments (microbiota, metabolites #' and #' biomarkers). rowData of the microbiota experiment contains taxonomic @@ -276,7 +278,7 @@ NULL #' metabolites #' and biomarkers experiments contain 38 NMR metabolites and 39 biomarkers, #' respectively. The colData includes: -#' +#' #' \describe{ #' \item{Sample}{Sample ID (character)} #' \item{Rat}{Rat ID (factor)} @@ -285,7 +287,7 @@ NULL #' \item{Fat}{Fat in Diet (factor; Low/High)} #' \item{XOS}{XOS Diet Supplement (numeric; 0/1)} #' } -#' +#' #' @name HintikkaXOData #' @docType data #' @keywords datasets @@ -293,16 +295,16 @@ NULL #' @seealso \code{\link{mia-datasets}} #' @author Hintikka L et al. #' @references -#' Hintikka L et al. (2021): Xylo-oligosaccharides in prevention of hepatic -#' steatosis and adipose tissue inflammation: associating taxonomic and -#' metabolomic patterns in fecal microbiota with biclustering. International +#' Hintikka L et al. (2021): Xylo-oligosaccharides in prevention of hepatic +#' steatosis and adipose tissue inflammation: associating taxonomic and +#' metabolomic patterns in fecal microbiota with biclustering. International #' Journal of Environmental Research and Public Health 18(8):4049. #' \url{https://doi.org/10.3390/ijerph18084049} -#' +#' NULL #' Gut microbiota profiles of 27 individuals with ADHD and healthy controls -#' +#' #' Tengeler2020 includes gut microbiota profiles of 27 persons with ADHD. A #' standard bioinformatic and statistical analysis done to demonstrate that #' altered microbial composition could be a driver of altered brain structure @@ -313,7 +315,7 @@ NULL #' @format A TreeSummarizedExperiment with 151 features and 27 samples. The #' rowData contains taxonomic information at Kingdom, Phylum, Class, Order, #' Family and Genus level. The colData includes: -#' +#' #' \describe{ #' \item{patient_status}{clinical status of the patient (ADHD or Control)} #' \item{cohort}{cohort to which the patient belongs (Cohort_1, Cohort_2 and @@ -321,7 +323,7 @@ NULL #' \item{patient_status_vs_cohort}{combination of patient_status and cohort} #' \item{sample_name}{unique sample ID} #' } -#' +#' #' @name Tengeler2020 #' @docType data #' @keywords datasets @@ -329,42 +331,42 @@ NULL #' @seealso \code{\link{mia-datasets}} #' @author A.C. Tengeler, et al. #' @references -#' Tengeler, A.C., Dam, S.A., Wiesmann, M. et al. +#' Tengeler, A.C., Dam, S.A., Wiesmann, M. et al. #' Gut microbiota from persons with attention-deficit/hyperactivity disorder -#' affects the brain in mice. +#' affects the brain in mice. #' Microbiome 8, 44 (2020). \url{https://doi.org/10.1186/s40168-020-00816-x} -#' -#' Supplemental information includes Home-cage activity, methods, results and imaging parameters and publicly-accessible from: +#' +#' Supplemental information includes Home-cage activity, methods, results and imaging parameters and publicly-accessible from: #' \url{https://static-content.springer.com/esm/art%3A10.1186%2Fs40168-020-00816-x/MediaObjects/40168_2020_816_MOESM1_ESM.docx} #' \url{https://static-content.springer.com/esm/art%3A10.1186%2Fs40168-020-00816-x/MediaObjects/40168_2020_816_MOESM2_ESM.docx} #' \url{https://static-content.springer.com/esm/art%3A10.1186%2Fs40168-020-00816-x/MediaObjects/40168_2020_816_MOESM3_ESM.docx} -#' +#' NULL #' Fecal microbiota samples from 589 patients across different colorectal #' cancer stages #' -#' The study combined Quantitative Microbiome Profiling (QMP) with -#' extensive patient phenotyping from a group of 589 colorectal cancer (CRC) -#' patients, advanced adenoma (AA) patients, and healthy controls. +#' The study combined Quantitative Microbiome Profiling (QMP) with +#' extensive patient phenotyping from a group of 589 colorectal cancer (CRC) +#' patients, advanced adenoma (AA) patients, and healthy controls. #' By implementing confounder control and quantitative profiling methods, -#' the study +#' the study #' was able to reveal potential misleading associations between microbial -#' markers +#' markers #' and colorectal cancer development that were driven by other factors like -#' intestinal +#' intestinal #' inflammation, rather than the cancer diagnosis itself. #' -#' @format A TreeSummarizedExperiment with 676 features and 589 samples. +#' @format A TreeSummarizedExperiment with 676 features and 589 samples. #' The rowData contains species. The colData includes: -#' +#' #' \describe{ #' \item{sampleID}{(character) Sample ID from the corresponding study} #' \item{diagnosis}{(factor) Diagnosis type, with possible values: "ADE" -#' (advanced adenoma), +#' (advanced adenoma), #' "CRC" (colorectal cancer), "CTL" (control)} #' \item{colonoscopy}{(factor) Colonoscopy result, with possible values: -#' "FIT_Positive", +#' "FIT_Positive", #' "familial_risk_familial_CRC_FCC", "familial_risk_no", "abdomil_complaints"} #' } #' @@ -373,16 +375,59 @@ NULL #' @keywords datasets #' @usage data(Tito2024QMP) #' @seealso \code{\link{mia-datasets}} -#' @author +#' @author #' Shadman Ishraq #' @references #' Raúl Y. Tito, Sara Verbandt, Marta Aguirre Vazquez, Leo Lahti, Chloe #' Verspecht, Verónica Lloréns-Rico, Sara Vieira-Silva, #' Janine Arts, Gwen Falony, Evelien Dekker, Joke Reumers, Sabine Tejpar & -#' Jeroen Raes (2024). +#' Jeroen Raes (2024). #' Microbiome confounders and quantitative profiling challenge predicted -#' microbial targets in colorectal cancer development. -#' Nature Medicine,30, 1339-1348. +#' microbial targets in colorectal cancer development. +#' Nature Medicine,30, 1339-1348. #' \url{https://doi.org/10.1038/s41591-024-02963-2} -#' +#' +NULL + +#' IBDMDB 2-omic demo dataset (MGX + MTX) +#' +#' A compact example derived from the Integrative Human Microbiome Project (iHMP) +#' Inflammatory Bowel Disease (IBD) cohort. +#' +#' The dataset \code{ibdmdb_2omic_demo} is a named list with: +#' \itemize{ +#' \item \code{se_mgx}: metagenomic taxonomic profiles (MGX) +#' \item \code{se_mtx}: metatranscriptomic taxonomic profiles (MTX) +#' \item \code{mae2}: a \link[MultiAssayExperiment]{MultiAssayExperiment} +#' containing both experiments +#' } +#' +#' These compact objects are intended for quick examples and vignettes. +#' Load with: +#' \code{data("ibdmdb_2omic_demo")}. +#' +#' @name ibdmdb_2omic_demo +#' @docType data +#' @keywords datasets +#' @usage data("ibdmdb_2omic_demo") +#' +#' @format A \code{MultiAssayExperiment} with two experiments: +#' \describe{ +#' \item{se_mgx}{A \code{SummarizedExperiment} with MGX abundance data.} +#' \item{se_mtx}{A \code{SummarizedExperiment} with MTX abundance data.} +#' \item{mae2}{A \code{MultiAssayExperiment} containing both experiments.} +#' } +#' +#' @source Prepared by \code{inst/scripts/prepare_ibdmdb_demo.R}. The script is for +#' developers and downloads publicly available IBDMDB/HMP2 taxonomic profiles +#' and metadata from Zenodo into a local cache (e.g. \code{tools/cache/}), +#' then subsets and filters the raw data to create a small example suitable +#' for vignettes. +#' +#' @references +#' Lloyd-Price J, Arze C, Ananthakrishnan AN, et al. +#' \emph{Multi-omics of the gut microbial ecosystem in inflammatory bowel +#' diseases.} +#' Nature 569, 655–662 (2019). +#' \doi{10.1038/s41586-019-1237-9} NULL \ No newline at end of file diff --git a/data/ibdmdb_2omic_demo.rda b/data/ibdmdb_2omic_demo.rda new file mode 100644 index 0000000000000000000000000000000000000000..84770ee712f68b4801c7c46a0f6b6e2d79cd7442 GIT binary patch literal 265604 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

(h;zSw)Z+FugeLp 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 z zgEt0yRy91mO1A|^Kwd<-eu_3t09781NF|eAyDBbio#S?5>A6oK zkr-Lb748Cr_lzeo_&Z^uB1x|$4~5UC3~#MiPJ2t{|Jk1ugyiOI_QEMcbnmYOu2s#F z3kLhVXkNk_E_`58R;sOs*AjeQo zcxP>qQXM@cs;TuEpefzRYXwY(J60cjv|!5>D)<)ZinpGb!^3Yinq>!^Cztr6H}8Qj z|H6N-_^!8U)=@p0&*8d6gyIl0`jmVTGIm3}a(+!zE?D-Y)ndfr`ol0=j)!Xn!s@`z zzNMSS{8e%4Y(;_^O4bSR8O1&y?R8E@hwMc`2H(98fuB~$19|OR%CM~}F6(Is&NO2i znv)O?VK|i%I8Mfl`xEhWR06Cp1}lR`)lfi_!YLgT{#`Th;($mT6_^0Cf~0(5Opiz` zRGc)1HCBk%Qr}!o2oGbK3Ty3Ova0#^rwQUSl$#OS0AjUivJ_neY2ZJLyUn1Y_keC`@AkU+WQazdGKtz0^Brz>L)pc&O?Al?JiR*0o5N(yMkSX+(E4*~jPIy9f5?dho z7dW)EW_miS$$&aEDup#gbHpV*uXsUZ5_A3kw<$*uI~^L##K~~b#r;gbyVvEugQ9s| zpIjlMhg|)OLtpVa)7wdfWjeP>{@j$A)PsRNdr;HZ3Iu7aq{w z&o`LW0up#AZ*S;xmOrSgj2>8@+$44%l#(0PAqNrhND*g_HZhZ}2?l|op^{Ei;yG_s# z__R)BpygqE+~PgKt%sWTVq$cSTVom49T?p$vtwMzF1=dfWcw$q+Nr;T60J6MjZGUR z5c@9q)3K~cW$SpXuf~b}-)}eM|D@1WQA>*Jk%J6br!`-70c6LNW{=7!!tadsy}X>6eC}90QB6fgR9TJ#5;-`#;1rKHPDA}oYMMU zX`#u*{^UoG(2x;Sv*D^K432>ey()i2@_Vj3aw2hE%Or-jPreK5Tkno`hWy zf{WB7XSGkC@c}W_5?@&Z<~D)kKXV`2p*=f^$T$L;r3u5h8i|89nKpDFeCKq`PrBkyQMsypicF zCAfZyV9N_p+y7dvP6vEi$`*FLaEjPlAs8-`;cs;IrNB3O3ClWI8yOJeN?#|*fP@

MJyrZ1wXKbqs}@Hz$JEtZf;Y^J{Yox)r} z<|Cb%FD>|it%Ur78Q}yBhDF|^IWO!{F7T$>njROS%UYl{wfV*3zcc*88>`pL@!P_|1HGTnE}WT)XeH!374|I=sp8?A!345J?Ij3qYj$-7rFLwyj$$*>dViw z@}0=DP0(5^0HjoCdJNP2-tjWGx5}7H)0y(n z(`G~=wUn-mSc!0hvjT+{#oDR!pR7X(5P-84YR{3pnTpi~TKm1|3U%6()~sIf_H1=z zF+a}>i78aPwodFR8!52tL}D1sdj#fq$ww8B`J2~8&Zj0crHgDIh%3m$wfhcJ*TDyT5!|Y+#g1vTI zbxui7oXpZi`f5Q_(FHaS@#U&6@Qh}ygLd7%L{272DZdk zrbj3}^guC}2W76_m@;jVH=SHXG#@7copiF7N1S+8(k16=G!0!edN+xa_YloFo{O1yJcOb6QA%FQ%Md|3-{p7g^MKO9Ngs@K15-RA&?sy1Ay3Mf9O&vzMw@PPOBj%M~vD zr-Or=kB;o)AI-2pzZ6=~VS~3m{rqBsK~mR*$P)wyoexKmXt2z~X1@knukJ~fY@ zQTq;NP_a4EbwW`1G%V*;nN<8eH?@y}n;oAt%^b->wjPo0&tL7uOg52UUXxhX2^AJ% z6FS9jr+PQ=Lj31GHnDVrIV+#}=dY^hfp@Zu>N8uN?9FLGo7@s|qj<0S8HT{o4RknDx#K z!}-_(sVdx3nSC-!-;G!(!WdIcvap3q+ytGt3|i&*8Mp>38EFIhA|WyO*rQtY56R~G8<}lweqn-){SeH)GobSR z*3={#DiQ<6J3Fz6$2Yn7!#rXhULI>}(X!BPKd#uhk>B6M7Q4BrC zWDL6|HrlFR0sj09RE1JJp6FyEd&^vW{*ubv)~pI{EZ8xEe!HN0TwJk;eKJGETJKc+ z=_xmOuCd2sv|$nv_@I}wKF3I$Z)JErHkI=f;NwNF*;!<-Ku>EA88&3*&~>^q$x<4d z(OA9e@+XrQ_A8We@BF8zg&hdSDdX?ZPm3#mkyCLT9CK|qHk28e09N3ZAXr5B0~Q@O zt}J9Kw^S^q0qwQ0Et$>1H?u`S-((36Ld%H4AM>oP;hTfwIz1)Zg8Q8Y%0#aE<7a;G z8%&bCSBgjhgv>;dxHJf0SUPOu`eIbudno#Iskf@?wI`XJc0mGWpr>^<*uGZsNRC7K`SV@ z6(4?l-rO%Gpe!xj@C5uGUZlyEysSRIe0*v`f43%0eaL<40j>usKk+-tuDt^V5dEFs z;!SaB+|71%=&$R?o}9P_b0k@WoT>R8AV5=mEe^ZjtNq{g+74$xz4*6wBb z?!5qc(>Af*H!Q19&XrE~QD+gv?hJt&$O1>5C?AhQ#`>wMMpcVtENM3Sl*eQFl-0~T z#>cUsa}(R6%GL{#(cyFifh(>M&ns*XJ%~5N{K$`#)D=PR_d>=5+ww#N41X8Cxh8Yz zLd=KFKCw9>U&d_&9SW1WGp8Z9f^a}8@RddDX7`f%Fgo^XCYELK5pCv>M~^x&G?}Qt z*{7zAtCp$F3BAoQM0w{I_WRwdctey_xBUmkzh5#z&fd~!Z{wE({K7)7`HYc|J^udi zP_&HwZ`s6%A*!4i^yp@)jZdl7bRUJswGOsf+F|72Hd4V8x52kMUZsbP_^yYWbzHkHh)#Z0iuG1`lE? zVpc_hn`wq}k+z7WP6a3+0w7foMZ(rS%ec?pSS;5$buFJAUsIf-Z;J^(4 zkpNLZuD??b1lswtPJWBH*Y`nb`GVe}Z<%KAJnuIl`Z0WHMh$>9(7pRcG23-lE?$4N zXqITgi@jnB9Nw@n8lh!_3Z|U*Qcg=nUS8@|G?$lpmWrEu zmC==vh7}=$)Uh+>p9Ni#Iprn@PTMZ7^GJj%ar@(M80MMbgLmqp{OxhU!1-YI_Dxz%o^b zlh$j^U9>^IZuWH=Qg(a(FPdXgRWerF^g>#Ak65|hRJqv155bcNMAD|v?vq+>R>S(I zc#ocL>qt@thM_oX2?TKgm&aNm4;L-c9~v8(~=E7HbvO2g%a7p`zPq<|g@)VhG| zJFU=!;!z4#lhbAXLw*4T)H-acn!GAi(zySW;oCQZP+9*AYH89JJ>=}g`((3m}4E?Q%^Z+dJV90dyNC3 zydG+RPk5;5)l~lKbD8^L&4W)+8C{1Idl{YB-o%p!F86>>$Cy*wT7bP}jlI9B+p>sy z+mHe`%93RcSqs^=z)>db!&m<00IndNGc#|_%xlMfM}z`230?!5s38PY))8UZFJdh! zI%yXeRkg>`=(xS8G8FY@WZu>A5p`sQUAb{$15;ec`f$cju2>o*>rVhl!VTfVL-~_p zXYq78=n5}wm*}TV<^Os3W9R2HTH%&F>rfE3x7xb&(n!H_c@bDsrrxua`GTr50ph-- zybEW<;pJURR|NFtIl4VyEjIqXwXXCg)0*YYz!SEET@ZOG;AsFRP}bI$@$bRjI-f-x zHWaZfy!~eNc3?G<8Tr%(zH=UUQP>wR9RS#=+wAEPd|#~Dq)gdEf+A;M6Ih?2Dg1leaYE?oGe@VQlIurRT2NXs9fBI&&? zdfsB(=tTTVy{75$x!1i-aHbc*arG64Y?{Mj^(ba7t%q}lt3B)^x_ouJ#+NkvUN- zjY>JL6Th~a+SzVj*G-}YQG@52@naU>#;O$of(nYRraLBsoh&LB#auaY%%@}fFU4@; zkb&}!fo%dUa0d0{tLCZ~Hcl5}kcHf4D<%Y#_0!61-`Eujrc~A9QD#22OT3O@FN%;0 zjRfqDPoRkSw@!N0J10G$(8K@?#sY)iE zrD=q3KyZlJ7*Et#q(vF81$+b4s{@Ey0(t2ePAV$-eE~q(7|%$iAgflu=1cc0#Ct^3w*hpA`3KFW`sn~Bu?#hK@gK9J&B=b6oZ$Z^FP zMVDqyj@&8p$LOgXR#ga_b4 zrfVo_;4025_}i~`-wYlL8?KlECGbvvZ50dRecYvwHfq%;l0#sRrO1x!PE^&*!1}eU zEP?_^`qVBQ_{>gbJ&P8y8V@-nkg#gFuW#2Fu+c%O--<>wA{bS-a8g+nA*k^uG0^bC*RKU*f_?EJ7z4J~E>- z-|nLVrVdt?b!|dQ6}%!oq@s*tBYgTJwI<%Oy^b-_z2lF0WZ)LyPRX8cI;d)P3{21n zv){ohx)5dp(L&~1%`S?-QOR3G{1(M2h}p_-ow%Vlb;r#5j{@zCTNJ6{Q}QsDl@!Bk zuk>M{umkuk*vxXJ)D9eu)(Iq01pCjiS|R0`>vYDDB0usZjr93 zpjn~QSa6NYxM1t0NCxHM=#a=+&$}v>jQ#{s2QJZ(Andv|w?QMPkG(t5YW(dgUi1h5 zPFf+GvtKVtjN?zxVU-SJ@I!Whkhm+9l)QRRFZY6(0ZZS?OH~Kh7n~WjvrrEvV+oUQ$v9t*(iG+6ak#!JM+~7u z)b0DM6oIjptjlJkQOo`fp+gJ(-~{}FVETHP1zc@$9X6PN+~9iMYO)qRdPFIJAVqFo zx5_D_Cw{S#RS?)R+4?TQVv1!f<)rDAu!UGCOv}6byz2?=v0Fi*Ro6p2-VNAy?_=F3 z9b?atxIwyL+JWx3RXrLatF?qt;gS+3XM+qx7S;CO;Miz4RpCnzli z!*KQ?^~7cOgs9H`-?C~57k~=WQlGJS)3QMw?(+_tp22v=sA_vZ9FiStYqE~s z_fnb28JFE$ED@hAinV4RJhYR$CR4U+52v;V4duuCot0%265^5?;&pg)?~emQ6Wo43-u8YSoM|?KWEeFzaf&HS$%C1HaspYm<{(635`gS+lN(FPlIx48i7!Lj>JrqZe1r zDA54h+{G2}E_(|BK#F-P$1oPY+{*D+K=>WgurB%mp^b# z(_ggFp5l1C2CTp;tZR4_+Ae@88|hHKl7weY2SVA+_4c(Bxw9~{=p|XaWyYe31 z?G+q9uOM5U+qqR`p|X5&(}_Fn)x9B%5KHBj9|pmtWyzLtJzU3zlp)hAt8FPLeM>-7 z8dnl~Bds?+c4^xxDo+fAh`XYp8UY^|6L^VTVmaV&*+ToUSr64$a``7eH$%)qF6Hh{ z$^Af^qtn+8`#}gzT=D_0e*%9+`8;v!oGBwaFOp&R2*IJjVgO?~8vx929b+k&-jB23Wy4F{5$DlP48WddOLqZDy9C`B7ZD=9k zkGcf;wk^`=p&>`Z+8PTfaEdqgE8$j9I%1-eJpimPA!<`1UAyK5=+YEye*IcIXFA5Bq_H>D{p z!hXRhEQZ}*K&Pdo(b}{7s#s=wgc9w6m3g19BeHq5m)IiHsMaU>o?2lz zuSXk|KJ&sGx*5QqsJ3NrMDO)iwWyFR+MVQ(p_Hj6@s}S$Lp51*b#BkumAqw{;<-G- z<|$#T)w_%jP=L>0T>0aF`VBrxYY}Gn)tH>^gGx$3wlmAa-p2F@gydaskkwfwb`@Sd z&P+rnZP}Jg&zIPzqTQfBz0aP!SGjotKPz53JVBNw;wtB|Hvn2i{CN{?on<&o2rOzn zfcD?A#yRlHkE=+0BN4rnaygjL#HzgguCaDCj~jMyWdzzONacB!cpQifDD9PueaR)W znM z&IwnB%bcm-a>3W>v%Wlu)BHXx=cACq$S#$ z?an0^4;I;IgmRrsDsZ0POeS^8mq%L~-EbsYUA<`aAZ^?|{7J@lmYw;(WqL<1$lky$ zf-Btlo*qIv6jPwZw%CmcnR-k%xIgrKU!UYk98gDphVCDJ8O_mEqD3o2pgWquGX8$b z&&b4^4ZlIVL+H;+G^@_a8(&C!=-LSS^c;D%f~)6p+XwcDOf1yZ;gK@iy~H_iKI%Nd=e1W#c`(d^ z4}S8VlZ8LeQSW=B^5m(au8M+>AMW?%fb8lqizY)Wu8_%_@~m)aCH1)IqVqf1*8)Cv zkcx<$!x&H}b7YnfK7QdFNGX=t;j57VDeAM1h9|xvFVT0%!!%whfSS!2Thc>=pLI+Gvp9kbaqqU18~CVF(Y8vI-jt`^jQERWMeA}54`OFw|n_D4kt zf6`gJMo8y;96R*v?_`tlrUSv!)Mo43EHC?NiFIlM3=e6{3VsJ|%)SWe$1@I*?Lyk4 zooM)QRL82PzIqDdFXSj<725K3f-%f9X)~NnHgnDQ6CUK1hyvHpH1sn3xjHKfGUY!m z7Y9A7w@DZ5w(tL&R)av(H`bWF;K#8ye{j8ZTG^LJK${!Zzs5PF;YM%j29sl9S&$~n zxI;EX7XY6+n)P}Hk%JR^7~JUGorWmZp#X68dA@l7%yBqu@Nr)`3DWT)%5gG8=ELQ6 zutUlSZe6;B{EHp=8!N9z#xPGaFk^xaL*~JX`7No;s+7+BUHCK&RJ4Qyj;Kq&;3=omm z+3(}e8^RZr04+h_z#1hP>n)X8ZDqDXW3w8}vK$3Ud@p6k*-Wvq+qnITmw81gh@Vr| z;k1Bm6^#RztSpSWSOL1+O;OTVvj{kqyB0&-q+?t6>&0R8J{v1;AOPx<#7-GLc>I?# zweNauI{)l6;!5H$WZJ)(nuWg3o2V(r?n=R^umh8xLe4-zy)&cHw9t-=4x}dHK3)ZSGI?pePFd3m)<$f4~ZpQHaE(8BA3>?(0 zxLhHz>bTC7G^g%Jx8&)|1m>xP>92jsOAcBPmo6dQ(O=ee3$H1vkv0fjlTqDlmx05n zqp@p(Hrqb`xa*w)yX4xn!(e|a2CrNhSUyQNuiJxbRbY)bEE?u1v)}*o7rdcipic^) zK4`AnWo0UZrUv)Ctz4IzT%zv;%y;|-^ICH%Hutb+YpCNFvZ|M>!YHclmTzQlu6Zkj z%?=Le!tJG2BB#p}1w%tVGu`w6L^b2g|rPS@Xh8O^?+R_=iPWTXWFL@fP%`HmL8ZD9g^pss;0wf zR!C$m^F3EO#>L4qePC^zG|!oDH-s7;9Hd zTqHp~J|-lxFNEBls;cRt`+Vz|+UubcwLl}rC5Q!#p5lOG_7O*sBC|jjmvx#x{^-C7 zGy)_aKkFNI270Wy0mA8^#lkOVzEPF6jGUB;W4C&KRofTq3yWomPQ~Nm$3_UPg$iTq z_y@BSwqgGxppVZ57n|tst-2usDJh4azbrw)x-2-t4xF9s?6h;BD)&&==vJ0ujULds z(GXSu-@a@s311D%42JW0PDmc8B#zG8eCpKZa%{0U^Rg`$yei9O8h?#MYU5FICW3%v zjM`2u(aq^?;1+NT2*7ud2l|F}itn5;Y#mq2zRCr?Um3UCYkJpoGTHaqMNc-e2Rz~@Ni1M(zFTY5%zaX^dqz0vxb-GTP3o|_vn~g{5GdbgW z#vZza1QwY+UKz{dyb)B&eJ>VmtLI1ynYtLHS#{S_ml9mK0MoR_LO2bsDs%4X1|05c zlik8}=zfyDe}x5VL9)U7NH=(j2GB(y&F}*KWz3pQKHx!dKmLF+z_}>2smNJAltv}E z`fn1|h|lW{=Os=Wv|(r?(4lL5D2E=48zUJz9KuQuW%HPJRP_eBgM#0m#?ksG3ocsa zo62;-7Ia55imVm+2Hfag*PptTk| z=m1W+BZ+|3nZ4A4;c>gZ>|eE^dw)8{TyOwQ?4eT=>nb|}^T7em-JO|D>BgH&L!op; zmLuoWmaqVU(`tQdf?u}Zt489$W>B#-vv9ex%=66F(d~dyCx*iU;IP=0A=R%~A30~H z-WYLv;qJxYFkCH}dm1>c($QK8oQRI@BcBroH^i#7lS~6KsSJ;lT!D4G>?~zM#d$ni zFGYIHw0+RY*4FA`%@oz;jFr3r{)f|P1mL!KOu{;!hxv>Xx5Uk|>^7R3m`S!*kfDl%l z<2W2|dC@AkTre)B_6*cepj8!n>z>*2{zcJi?zc539QKd1;*2fvdMxBS5C|9s z`5;Wah<6jr-HJh#aZSnOo+S+I!%*K-&)lj;$E5L%6>7ba+bTsCVjRj5z0$G+*ycMDo< zb3P<9{Pf~>vDDlN3lin82=~bY&2q-)$3v$#n34@HZWp$BN))cwiJXk%L(g@Dpen7K z3hAkV+9(gS)`HI1%mZ)G!;R9DD0X3QuQ?&jbp7CVGzfkLm;JR{ zILo(V&)ZKMhuuLdqTE>UrNHqI-qXqid(T>DPmqCVI z_2}if)xhn#$k1?8bg59}5JXFT2dB+#+4jA3;wQoLWIoH$*JRHA3^xY9ByDOQd`|)1 zWya=FZXE3rk~@uK!y5dl zS}fJ5WQs{NPiV$bU;r4R@1R{;?@!but zgF4GR^WD}#?R-ymIcxA5um51YBs_u_29(SG_nW#=(?EhVb&H*xdB=jM#`e>_R!t+TM^kV1(QbFk0sssNbYr;1 zboNg8Z~Gfju?|pX4mZnRnZIk5tGATJ3duulWOm?Lz%;-_5wGR9{8qf-%kgsm(?ftg z(JLUy%zoF{jpVWMVwy?rOKAeL-jo>JdSVKwI`P{*e^G_fU?t9hvyZ8-Kgc;e60=Bit~C)N-ZZ;#WR4hgrRDey2x+vU$hmvOp-rwWY5 zxXax&utlojSdZiL7>gmfQ=aK&75|$S%Rr$p6-Vgac#rSw+wil_p0ywl+|WfW+CS%Y zxkE@GydAK(3Fq7GpI+f!rNi!8q~#YL(fgG2RXhRpa11ndS`{V{Ry^W|P{LJ0vl;^= zhy=zX=HmGtyN$+j%KS)MAWo@bxuv-%vB5_p_|7Gi4<*RX_!Yv|{^~2+y${l6e(Nt2 zx)w3V7msriAhU)>5D2yrsSXP?SV-DX>&)7zTOtcIB5*6caj@tze*WA<*>m9&)MV@+ z8;%{^69o}~^I1YCWYwjRoNyLVG9INAz4auk{kv)S{D=(tnuVWO2?j1I-2+r$u^D(+ zQH88?r?p>kXfxz^#ZSuP{)c?~gaqu-hQRxHYRp@94Afng4BXvplOD4k<|U_3^E}ya zf}h~}LD2uZ)r9mCWSN$V^rs}r{7mTv*%dT69rwNiE;UKk`ffyf#4?2&Ji0d%THkm& zKZdP}$p6y`;xWXmNoJ|c-4iI8VuE?aKK^3>BdGkJEZ(U&v3}yVpVtTI`>A50=fmpL zj_}%7JPa0)Q@=|We`R|_*bBVukISk!MRetZKix&gs#gP;)jKcszRJ}f=S3ajtO`q# z1!|0eR#=?zI`NaSKS<2Tz?xEG_ACF519Io_ukd$%Sp#EggG}v5FgZsXn_Ls@ao8D6 z_sw1}M-{3pQmeQAPbGkQsby-?=)+zpTOJ zvQLZ&<^TwrLMy)b!5+^WtfM?@cR3}|{=;t0P)~I@YIjFu@?Dx0lG!_zgULL0;qOPS zrJjsg(0$kncmrXl6L;Fz${-1qa#m=C1U#cHJ_6=4jdgDt&^<(#e&JwHdI!%*W9XC@0{4Qj<# z2?@t+2LS6WR9P*6-p?EF?W5VnK@ULPWdA3K^=rD;&6zjaQ^CdenVV2ZBK`SbChhhd zzB6C~g`GlH)T4M44pgjorfuoEAK88C{X1<^4Bos26VxURrG2#n^`%b~X1BS)@>QfL zrz{<&vH*gNTrGLcrV)`;Zn&9G-@lP}f~u%;qd7759Qr8qKt_ZZ46~F<=Em#IOr*ko zK;KtFK&k@fYA>q&u;PJWi6lCtO%auck>C#1Gsxts%{{%@{$-dT=R)mRhf1lBWMyr~ zc#Hi4I>*vv!p-z^?keNCbGY5?tmsM;Dyuw_F|NC$7}cyUqFvD4*5SqE->?CPJJ`%e7p!g zG?$GBt4OrL>;h;Q!(I?Abze+9g>4H;GtG}CCt1w3K6 z8~KU&O!7-)7bh9l7>!wa-7(Ce3(hn`EeBl{0Q<6hvR$j2DRs@e%$FiNYT+lr-MP5(&UE2TN4r(~d%=mDNpbg% z!`Rdw&NJriy7lg8xw6cd*b>4d7$N*!@j-(^EvNF855Vj^)Ga^=l)&O-kJPvUY_C4)InQ4oZ2JnN|}k<<*vFHtzs zTOo$<6R3^PuPCk@{ERW_02ZKNh{1A9(df?EWh<161ILo5;v2M6oHYD~Gl9otsa8Oi z{vKX+(gL`0=k@n%Kh2u>X+8VtQr$F&y350Q>dSRw*dB1?YJqU@ z(_!mXmT!9j%E&XcUPfRhfJ>^Nd%~J7vrN!FHj-?aC_3dvb1eVJpp&NJ@s-5Q$}aDR zI&T`ILcm({HG!B86}wVF{sz20-fn50wZ-R+mow{LXmKTBv%pklP*dhSgrSZ|V7(X6 z-1!$Zp*SGJfr6(!w91@QCqV&))%u<{M^ug{2I7Bchf*|x!E-ReqO8(<-jeel!OJ#L zDwAr=RaLv2^7X{EEr=3(i(z3rQ;{|#d*C=Ck+@?#62Psc-9 zAbp8vV-q72c`#qE>lEJWz*Lz02=`RWZ|`h$XEe z*N7cEC~TmhsLr;iUPbQxNQ^Dqt5`PDz1hE&zv-;?a-?)iZTI^w^>~dvq2Y3#*Dgx} zPR(4`JT1Ghe5OURGJiB0Q4y63A^FQZ@XBu&?XW7=Kd~OiPjx%$!0-v|(4(EmT_a<( z-SnJM+mi7Gi^qNBrA-(G8?7PAwc@}c3Z_cDe3W{-Oz0A z>5(#liFWvu>`EUNbaC-k)`eLcn#N3L4DWoYcT`eBzDl!Zg%BsDdu zh6gQxv640K4RS@09D%k;?BD-TOa^dfhaJ7$9kpKoO`j!vjf2UF7*lxB&OW>M=%X5V zMbt`vA;mAo^XS4X^2#x=Jj-&Er+U>eFe#)j|NM8a7*$DL`#%MU+4Qgh!8|+r%7mDT z;{0OlnFoqCIgFbeke!A;-*6P2EP(nO+U{$fF^EV006DIkG#M-(wV8O4oCC08sM{@~ zN_JRyT%V`KqsonYQpuV7?ra&`?@QY$df*t_q;X(ffO!$nbbem*$6M9Kb$=$QKYV%A z^e6eIlu5#E)<#9{P2M}n8nazpn_Grz3t$_qas3dX%9`zN>Mz9;TEn&XbFkZJhBK`y z4G{(~&ar`A0_2Bvntu{Z&gsRIa*(Q-kP+pa@Lb{sUh0a+4O9$mZ`KU&a0-7RNa5k{ zWf>2A4^n-V;+Xi#r-W&W)2Fv&H<0D+N=wR^7h{NApA3=trP)7aZzW=?@ZI{?b{Hdj zY%!FG#mj7BRRT%-kG-H}0>Zb_=cb6J@jQu(sRF}y({3rvRM2zE{xW+L8;TNmrUZ{z zGjJG@Ql?pWb6F;k(KMz|#DyphZnu;k+cheRpi?HtruDV3YZADd{?+s`m|xwn3FAjr zWaR@_RMYsr4!w@!hw#e;Z)69|0NxKdYELxKbK)f@TW>!oJj^CJz+Y;Cb6hOof1DDbtY9OQS>OYZa?>0w$7jF2T4qGVvB4;9dvqRcL@hZGZ%;(9?OnE3}9`kVx0l2Are|p;zn6fKy?^Nn#<(=E`cb6#<%@)xbe7ni(m2hXcRe zE9E8nr@`DU9>}8Cw(QEM`bqZs|6cUJOsuAgiT8 zB#$Z|xe;79gijZjvKuME8b0nbcK2wS+R-Z-H6X4Z$K;4)?!}3R5haiC0~RlcTyCxL z{PhdA)xA4R4x4uHAh@%ELU?k~)=uG$IcZd67vguE;zOPQhH7YOZ6x7|8F1FG-`1BT z#vHMLs3%~9xKy>>rR=@^jp>v-rT#jOvW9*Kq;%3ZhISr&B*L7eU@;*+q&nwzh+CdeQO^9 zpNYCe#6goH&Yg=-ogRV`jy$JEa0e`p;&1NhxEA>pSI&uPA zN&@AtUtn8sM?j5;4Pv~jU%w1OLD<*+Mm6XNcP^i46V!SCNhIz%5K44doY!vD1>a;A z6HWWk0^F{)*zrhCljB!Cv(2lyH+JW z`fQv2MV312)!Nk4RlEr{Nmpz?uh!PnLV=DZhIdcyvPaqpO@;RcD4uDsDaZC2ME)Zj z`Ew&8AQLylhKst!j3^rgN*SKXufy0P^k+oSK1w zI)QioLICnWZp0U-eNfL0W{3S{H^ zlwV0qEY|%QgMOTEGxlCvI1+(A{H?6UHq54+5rOG3sU0B!&ZeNd#*Cv@7id4!CO7sj75viA#})`U`;{64+2$Fz^?-bJnASUmL1r6QpaXeKW#9K z@E%jM#2>!Fe?KF+o}5=hP?|sf=AedrT=E(rwONJifaLQ^LDm&?p!)vjHR(D7jDDdo zhmvk~X=?@IX7@|NDxEr)rIC%!{RfKDiaR5t2Ovh7cb7K&-=CITQjY4)zp`-*D$bhr z-rE*~oEBxu)>2AvuM_9$a~gP4NA)08uiRs`%Fn_@i1dY(N64gu5A(Xoa}ibh7OfK; z#u*n~zPnJu{#9YVo3a+BVv{irE0xS@L4kP~)f~QvMxV_UtD!$+b$~NGkkSONlW@RG zzIBB}2>KLd`0KhrUaYwxG&hj5T?%#!W4P=3l2vb)k3X?DxY z;uQR-rF1j@4+^qQcHMaT2nFfpPx36zulZdzs^)sXe5j{wW2h*vcfIcP{zP;qC$PR< zQatF2-i{0yD}5OVJ|~u$Cyx0)%roMpz6F^FP<0jup2&dIlrZB`pTkD*{1c48Zj?#e1XWPL&Y9ehjd=O#h^=`-Mad7(hQwO}UV=D@f;QT`o0ZUT2 z&lEcf2j|B~r1SA4xOM2H2+gEvLp^F9K%Op%#t6S1dz-k|uqIngZX?#{RjQ3_K&bp915EHst!CFx_2WesxRSV4RB;s~IEnh;i=HzuWuc{?cv;(ve|K6?b_H-lllU;7AupBGj z<)a7kP5yxCCyeJOhy8Fek@$9tZjC1lrSa<%=y1u+T%v?H@*5iipy(P@3JrLQo)FZS z9akQu%^>C8U?EUJiQG=vnUw-6GP#EwC{grDj@!M;l#84R;oA7GbXyDgKxq?jQ5QO6 zL(>vw4Zx*$bx*^Vw6rV{8DrEve(}Pz5j#C|X4?a87Z6y#A5tuv;OMD*CT&Ai79?jd zu1fDEDzCl4av|JW_DB6I&Tz~5Ddk_l^Oww5nB%BIQMjr5s*~Cw6sXa}B#4)LBPX-x zf-a6lucGo#$DcIq)nD2szz}I)gu-sVq*1b6pm)VKg~?2tw68Z#ciRChiBsI|@g|MD zd+{y6E)o`b8O6K}#0_`^?b7ZId@DTwW6rLdN{FSRhoCs$=O#d0eCHm5-G{xSSOn#|BGj|z%&tuFiWO|BIe zj4f{{PB(4+?SgeI0qJ2B*fl9C>yrulnYxy#mN8v9jCcQu{kzHKc4{)M1=7k&E<6BX zyp38x26hzDa62}gjQAtW3iA}oz5;Qq{kbAJnQlZ@FuS?zEehl_{p2hGHP3%;)^%KO zLCgfBuif}Y#f1@irt3NlTA}b5J~&kklRJN?2JRy}0^38oeHtLngG$gy?jZdqTIIE| z3O5f1*%L|3+ta$O9}9-0ywL#V&w~x!2%8u8WpK1XF4`$n^LS? zFnrKqx!uW_R#!C`VMs1lE`v&DAVA*;m)}Q7X=eyTNN9A@cLFW!JH>B%8I9j~+=Irh z#AbXcoh%VApuN33dd)^Z7Hr}_G$5{SUMd&`MxNhW=LQbv;|@uyxoTsN$8>Ggf+y+b zu_kdYHL*no!*cB{{NBQF~-K+ zx8;!?9<{;f*^=u37|;h_&%mG*g)a(en=R{DxMP0iOF|eb|353*xDq#ZfZIsrb0kdr zCnnwQ;xHr4KKzchn#F@L#ysAAz(r_0OP<((_Nyqm=N_2KqggydV*%;XpMF;%5G^1^ z)?gPXjUxuYl#C9vQyu|q=4O`hmYNW6wj$Ccr{gP-7d$>PF{?GP#!8r zkxLjeoBQi%E)8GPW{QR8pk`$ZvtmL=oA&>`lhOXcLplkZs}=||(6$I4N3iQDsO&$@ zY9D6yEHiI;KJ$ZFAhkKER9>Z$ldY&pL}>IWKC#@k08*A7$fcA*d`-$$?iM5t!qYFZ zQlj1%nXd@0yF{DrGhRg+wBtLx#EB|VR;{BERX5y#@jbGx3A%EUgzoYw7sNz0`=Lzd z61!i2zUG787yy7mOaA9vriQg!%he(yi-30(F#5HHPi0JrvWw+X1_~QH+`W0Uh+=c# zT(>{Uh`O2K9z;B5=;8vk|JoKnWoBqY4UwK$Y7xu2i%WO}PIX^pP`xe24<-HVJto@O ze8-y?rd6~xV=0=UbdMN%eOs&=e2%XHMk&-DX2u+KjG7bbKLV%sCnICn@4bbC4bSd1 z7^Awn*swnMGIp0oHbn+fSQ_yMkO4yfil$3#R)=dkW1NvjxmP>3t3a)SB32fuPL)pCd*C*N6jLAT zQ|CmaQ<*o*e!sS*COjy*8kQWJ6EwQQ`=HFKzWydXTel+6*H2MrWr9=F9SSIEdZi4b z;KWGG!;qZGEtb(^N;MDH2au-TdpZj%ftx`zKV+#H8b1QydwIv?9gbjA(Aic*N0LnE}MHN)(IH3-xk<*ei^t z^D{~!hdJXO*h(`G2_yl{H!5vn1VB^(M$}K@wS8SIo+F$fl5Trgn0TEh@18eo^YNkK zUYjMz@fi;<+N|~|>93~X%B(@!o{c5Mu`>$JH(0M|mCG@z4ngX6!V&72H9++O+~%$WP<(~7oquXq5sI&I^l3(~yZ3A!p_M+^ zQ&q_q%M5}3qXe<LW!w|MTFX zH_Jq}iL-2!p9;daB<^&v%4c{6;THq9PFZqs!6zZ_g5^lxMi2@W@N@CaUD3f@zIP&W zLlC{pq5h7)t@xHI%Jzph-Qtn(W4hF%_fauk2+vlfFMs3?ZC30()&m{s842eFFc<94gG+n+yt?vq@ruGBu~S+SO3D>PMs&kkYUPX3ld_2>RmU<1e^%M!%h477v+tR}CkW{zot{HihN85A zFNrf{qwy_406D~zmAoI6qovH60w7+Vo3t8}T}$fMXq|acP+PK#nN{oD7lB8PimoL& zz7;snaQnq5kp^EeOXiE``TBb!Q0LJCEkjB5-WN#j1rpw458>z;s#q->cPG>Uoe1$Z zNR_h?H0Z4I;0i!JVy?73hJEfDqE6Lma1h5GKDavEiSg<6_Z|okR_}pE0G1V9Y7a-R z`Oy49M8AkYJ^?80#~JM|pN4D>5|l%b3AO_(u=jrcy~m`CZiK@!_WxQJ%Y!SQzW@h8 zeA$Ug`E`t+nRl*?83jdVcHzH_)m8X`vT@@SX5X$)r$;*sjXb}>m;QL8iD9Ha(OUpu zWVc_g+xMoCj_z*bTaT{`89<6+Z!0y&GNAHMe9tyUd6o10of`QbErpn2>W~}1N)spd zniFg-heUkvq9U$EX(!IvkCf`Q3HgB3PVsF_fA;+{$C0bBI)yYA$?%Hj&?r1Pvd}*6 zO(@2Lg_kLb=@8xmysvL-Aa~!^Ge!=wkqgsguU` zOqoxdrS1B3m5c|>7Wk)ZO(&n=3yIXBdhKOGy(*3#cnk566sNp1(&h<$%yRK@GT+Nl zonG;mIcMX+^|Fk;+R1z3%DUq1vpM1wFHHd)`lepG@r2Y_sk<+~DC&zvhRYW#82247Wqv98U*P#Rx=cT=V8kNy0sVH|0l3t?+wIiE{NIY$pnWhiTwb9 zcw-?6Tig->yrwI$K~qKIiOdPIyAYEj-OcLRHoGhV44IvXF=-nM`n?+TT}QI9T2>_~ zc>pvH_;>iRpJPGXTOPF}hFhd|nhoWTb7KOIe;5`ZXFyOfnn+u%==pO+=KMzIeCT+1 z$8oU!pzM<{e^HWNF?dz}C9dkqmS+)i=^mOWL?#n$XZn?xU$x!dVe%L&!p`^DZVy2N ztwihpc*;uXJ~x4f%IRT?;Oc2xoR{pZdOFY_KV;KBDNL=Yw-rZFIS#wavaFuApob0H54)d!&ev_~c5M2G&nVxE^ zBf&spAC1Q3tV#~wtMmu`)+*l)hI8Y&Gmasvp7S*=92sSd<8e6sdnY1UwqavOatvSh_xaT`D$cC(CqhN<@3ZtjjvAuo>b8WoR)?M=B zcNtG|Va9AK+o@aO94SMT5*3L5x5`sdolUhMaGr^D?1MYq`ebu-XqpDamZ(~MBN|0g zE0+lH#v0Ev-o^aOt%Ee{r)1B7$L{hddovt=@ zkK}}t6>Ib~oqTT$mYzj|WWm{L>Zk^BGP^o$CNr#I7%WODn-nBW|mrQGB#AslP3 zq)ZGg8+98cIstS^myy%6^TwB4@1EJ95$784c0O)uh^a?<$RkQ-M#EwL*N5^3f*s7* zZSov~Qu8o;fa7V7`6?<_d=-5lNd>XK_0}}unX%b#|2yC6{;O!^WEiI%)MQf=p(P zJ=>zzH=6@TA4!Aju-HHXxnjMsY<3Q5nKDF#h%LLsYA`9Dy$FWxB^cRNVH2d6FB;wQ zHV^UZsN&x&>oiKg&#33ot*|*-J6i?7DS2b9VU}_O313tbX8M&GpC9J6 zrJ!k-tC;0OGbfam=NowZk}}E!NrrRzQH`WwY@6dEepmIn$#pNNAu7i9gk5?aS|Y7O z`jIE)d;?^l+4U@yQeOq{=3FhlSDiB8%6bLcjhrK2)f$9z!NXZW^yundVPtgO_c@*4 zx($2DYpJpyLbs-ktsaM*GvD2aKf)k7YrZ|uc!no1$7s!s4T8-?l=cLECsd0;F#zXJj{eFUPy16uUikIRb7q?AaBIhnxCyv!u=q%~je1lQj=RX7FCv zE;9bLpku4N^COT}GYJpNMvYv1KyG%+p++cBX<&0(1Q`FQbe9oz8kTe{@uQv@W1)}& zV+<6>{cwLR2vh&B7IXA?VhX()%6IH>wD|Cdw=)7@V*ccNR?cdyQPw+aAK2_%!$0jOb5w@5I? zVpU7VinSG$mpzltopiJ)X&3HoZC$elgCjl8DcxG(stKBV7|V@>5Yt`kvB`3m*sEN9 zY@3Beua#mNQDOpBPrSye~@^92s7 zLrqb2Nix^8?WHHKH>e)qkad7p#o|@nSZhs1jqH zQyWS%K5@dojmf+jD=&=_alCKZI5ueSdp3)cO?_Y2 zf{0mB;+sGvoE>tBd&gXLfDZ6W&avlo3~JN3U5pEMvF%~)14fxPBHnEJIt|HE<#D37 z=zGG);_HWSZnFX4uF-Rd=z+F#@EJ|UcJeQUU%+OKKvZtfE+9(Z$}?`Ns`sW0 zeLdA>QSYgs00gv8#46b98h0sKu+d2CkEv(o5htrb%lR++iiP5QGO1}x+HYv2a8oS z*1Ihm*YDzgnU}nxKM(gQ3kU27X0_UsJ3Wb@RVVNEfxX@^ zVe6YyZczZyfFu!a_EBeYx3VfTv)X9i5&1-f3Fxro3aL;iK2w!Gx?@le8*-$_?O%&& z*hv%Hei_)*Kb3|#-t|cpcZ&|=btYF8l7Q0-FOREQto|U4-+%hm!_lCNq zo>oT3uc(~1_hTtPmy zoeigNyW#hnS#h{8#6|^|eHnWdjG@Z-?3o`3a(mxOTQ&PQee$0H^GUCDF8*+g4)mr{ zZ3@v@bs)0Wtf*{;MJg}DZP`{jolzj@bMHNNU!U-DuX4GVsJR-1w#(rOVjJLkp|WEBqYE|Gu9;fl0np z`tfxJg;;^?Z|$MAMAF^m={jpnS4VODJX1AaQ=L7j-*2cyE+Iv0%aw znc<=%_>#}88Ef;cFa{HMAYE6u@pZ{Tc%qDhm^i_EDyQ~BrOEeS>6g;mnvu`Ja5Lq8 zm3w9CwUvYxv(}V?cs?7zD&8#X<*L^s(sgnO@qI}k)t9hmgc&4VC8m?qeWPLhc9p)_7GX$uy{+ogABL-q!4<9^1$ZtD5;EN+;gRX%V z9YV54goYr9`dD}}&D^tZ(-GEf_K3)>uqwRq{u%_bJ6bkD|)%&p#e-dQO@-yROF@$Q}J6Hq_ zjHHrmtKU%lUV+(LsE=l;%1Va~Fl_Z}>7**yl!r8MJ}Gd8*Q`rapsfTq@$;Og#6njo zB*_k@zV^?Zjw;*~-;DMHCHIOxvLtO z=N~&T@PG|h6)5+oZL9F`$!j!pzb20&Ajh({D)D5L1|mxq(TPWVjVZdH6o;c0m|~(6 zxBtR$=uus}M+OKG23v4_iy1o}`%TX@xYUUB>aPF=5Z)Jyj3E@&GckMkV6F51EWaI( z1CofKHK>VI$tm8?(~=Nn#I*!1CT`fW!fwP*s3|*x>ex!?hFFET`Ok>?8V_AQMl=cCTAb3-P&!3{f@4mGI~`JusM+9S&3ilHz-ok% ze!tqFQ|bp!dxNLGuZSL}v!W*pp87Ah%A}9D=02LaUCqJ%FEH4+f1HmC+2+!6Dm}1y z9{(X$l9Kn_3mJftunL009yOh$L23MfTm4cPa&x9g7m6WH7aJ7w`d`I?)o&S8xv$v2 zJdBDk8Q8irGk_Lf<?eDZ4zFB3I`Wqa5hv)aXxyz#baR&sXwR!AiXgA9#Gcen!>8 zAm7lo8J346u2)snJ%(p(XHF!P9}f-q0aMDM{RmfB*3csRhrNV);x>=2B9j=wI2tGP@ITob%zuhBie70m2U}#$ zCUN5O-UL0r9xyF%<@AeMdNK+H7%C~0IR0c5h~DpZ?wO`Y}lJP6`@pC9Ig5! z%2L+}>2rX1m>h>i@DN?`61NE<5RvyEs@G2K(sffeb=OmbUOwW2-94;g)Rx)$6nzYo z{*6Gg2?TkEX#~9}@l%sRWOu1Ka(w~aY9aIU*=>b4W|B%lgd<~ix9?~l@-R7WMHf>b zQkO+kEJ;uF{#hZK@iP{9+M<%4Xha>Vuk;k(&DE^&-VtDy)#u(tk_FUw#y?-_*@KzP z!%n3tDb2{!d@(r$b;H1is25qM}t6x+73XB#5CL>JRYlX4a+X z6Inj~_+W}Eu*jD^Wqbj6GpCAQO8@G)z;6>(NH0LdwMtrQak0+Z?7{HE<-ZQojqbVA znaPTqxv{|4MEiR=9A%@#oL~u(RWyV?Mu@s`6*HthdwrV6l9aN>QN5~v3u>~pSLYH} z+}PL;Kt$IPby!I}Z6N8bqMjH=i6@aPU~>vVw6EyRA^fM#s^mc!ZO*3qRvsP}2YbaA zNNqXTpcJqhZ1Y&tq4S$FPPp9+Wbw$_&C}Z@;3Xik{+2F=HI=;-~Y{6zM z{C%19VZY|-13zbwef~jvw=pz$1=0&~84`N{@#zT(#m^>7PIG!cN}++%$VSz#jnHEC zez8vcz5{ADsHpNI`}X}F)3`L)O^>vbSmV0k8^3LboZz?bw6u~vUd28gkV^ejB}c6r zj%-}KoW@hnoyA~N+XOVkWWw+CjQRjXg842Q(++5R=n`+Vl0{cacY z3|K}N#BXJa%JM6=~Vh00jel>LdY$(66&O?TR7P0}~$O zG7D5=KaqS;D;4+S4qVpaN$Q#@Ysj#r{66m7h>9m8`RF$%zf5@djPdSB76Wq-W z#P~POq#I(NjB9RYkE0%^AuC_CAo`rP4ipsRfu5}{rF8jm(G+J+Yi=gFrb$9EWeJgD!3A-~lvZ^)1!Kt>f)K86y=S(T1pYQgkn%;oH8su}*=H@-h+NeqBz0esw z<(j)wIC{(xzO5fYDmj3OSh|RUK`@oU!Xb67MHC?b0uUcH76T`4+g*0#S?B8fK=JD+ zZogA?qxN3BWKY<$hENBGzGT(9p^fTou783XiS>*(GyoaR+$eGO^=;B2_taBKSN`mZ zb$B80l5q%aAQAAjH+6GmWJ(Nczq2#4L%d?8*bg+$EDKpk*&&3|Gvx1&TP~;KRdm{N z(R+mnsGs`@EXv066HB=aqjWwbn7Bk~W;21T8Sx#L?EL$`ksl>gAp?OnP8Mw(8!`ak zZqx5aZQ8iMq5e$vaWV>KoKl9++W~UA;)cX|cYoxqGoOY|hGLWrv~U{|s@ZS@FXFBC z)a3JZ7AAK)X&+`kRPtN5&-8_ArOK%-lR+~OVs7z({!!ZJ?wVykw|DgE7&s38g1k2@ zHC;Yh16Gb5!+GyNje?tl_k2&sYph0Q%r^M=YdFTLfmR^cDy9!^1J7z5`w3>Wn5#mi zZKQrpa%a0nIOJy`R3EgH!hu_w*Fj7itVfEOC-71sfF<7pTFgHE<&m6Tx1-XpGWXsC zRJ4B_vupde%( zSYt)3ueIWA0+!MFB0(|3RlqvW(5Sn%j06G^8m%~nN01C?E;B%=o}wO7Y34=1vpi@q z`jFv(lQMg*BHq30bg@!H^PW!s?t~gR(yyycd2=GwVI!f3tiDcr z-WD_G=^9Usu-A7o!hKoTC2DKK7JA6Qvi_DG89-zBK@PmrD5qM$!Bgjj|bEg8je@QiIcyxSN5>6mfA|8L5$5OL6*XEf+(y-v|IKSj55>-xp)G4-r9 zgxW)DN|NO4d%A!gQbGIu`V^0=*MUy+$g}WiP6?2M3c=6w-Knz-zV@6cUR(EjxqTPS z;^eya8w@ikV%3jy4oQ$|cgYL~YSEDRGZ=fRj|OVn@}~R=Q8Zz5mVby zUSXcOC^!o&QAX@9fcEURU5eE|>xM?Ea3T?2k#^l*ScNfp&E%EUT)laxF|b}w892yY z#Tnp%g_O*1QzI$hI1!XkH&+kJT)vE`R8Mw{$DmHnsO=%l7efga-rAP}?KHA!db-}2 z*Y!LutHxM^~;KquQ-%9Rv0= z-7W zfINq#&=TW7f*o;AR4yL;vy8HHGM0Yscl_tE?h&p8C`nHT{kJooq?6Y=Ha32jS1%Va zmt2_-|NE8qcWYtCK8?B)C0_w~_U3puLVv3(YTZo~WI~a)+7XS%Wz8OM2B$hpK=?XB z5jd!2$qb>GucoX+;@G+Bo)&8cq4_&Ls0A62y-oqdA-M0QJE@jgwq2G~p_4$I%5yO^ zxIMy*m5aiA){;h@U}PNhX+_WFs!%#2Vfz8dJuA+bUo9`m*CnjS%PTYE$2a6M5h@%w zGIZ9J=6l<~F1QX!%$Ls3ZTA(EVSnEn9WnvuR;~HR2w_FH+kk*%Vhwu-yXRx)^m;-( zqvs|aZa(n85F+_6T~Z*oRsqcTUZ|3M@c-N1mqmHW?dp_zMB?I!20~4~2=L-jaot$M zj9hn1aH>+!hi5Ci99bo4N0MgE$)n8?TEz7^4xYMY3zYC(6}r?st0P^fx5^ zxG$VNC#Tx+b?mJ>XV4dRjA-u)CgQjMpDDRF^YXHr1ikBuj;4clxx!lLE^wQ1i(DU> zFIgqvOps$y=Q zLb37w%jDz6)dYy7!A~(^`lt#2Aa3vZN5y74Ulw#YbYQsi-Q@9xdf_oM5?hsc1Kc|< zF3@WLzH+#K&ko+E!6pqZP}|~GP%$^826N;e6z#xEEw80(Nx%{Arnp_BK5YT{2BeOQ z4|Cfy)&tNVLw03{JI>Pkh+f?X*Jqj5y<+XGFLqjEe3T=KgIqL9k1Sgh6xvs3 z(s9Fw@uwbeVqeig2-s_fFcOlXp19okv!Jj{epFv^1`&v7`&q}bXBJsbKEe7N76;1r zDjl|r)N_wh;W*nkz%iIxK04`oongq=ZO7k!= zp^bx|F49uqs3scz|8Gcax5kl5KQth+=Kd;XakH1m4ZOI^$Ca;!0KoUq2aLtGRb$WOB-(Q`Cj13Mk!VP8A%xqXd zt2M+Cn$_q}n8CWpD(Dp8<kFpZ@Uz{&fJ%<508JV2l)LW)d{Lzg3YA}%%?U# zs&&pSlZ>v?5mdo?n9W?+YHB_%9I*n=6rR(puq`oyIoJIy-C)FeEWxg)Fg%!=TnXk3 zl!~W%L$2s4HqiNmw*M&%C*fFkiLU!Ex?L{g3^gr#pH#S9+i7%O0er(~^)$aK@IV$B zb#Pv5fk`EhIJa3vO_NQ5;6Tn^+v_?|V)Fh^da*5moSQeS2dEiSEol0-RhR}^w>MN? zygTI5YG_&I!kN#XVKpvT!_lN&sihfcrX;vkXnC5Kvv@iTwoGk;Cu#%%kF|zFgwl3> zEX{>@5UX_V0JI{9(>qQosqGTSx)?yqQEAHa(~10AdzYeeMV zZxKN{Jq9~;6?h@~O>1rf00+M%et z97fIf6Q&n+8i}=@>jGVr)g3t!Ms$cLM2lAHS zh%l!pA)g7v$NGgTx~3<_{XQ1VTSeYUR+xWKvM^LkbEY+Vc7?4o!;e7jg;kzbX_WFa zO#TkK9D4wj03Y{*;h~@_AX|pV={R$~H}HF{qg4+FClc1$o8oBA0GoC98j=6TuClpT zc&u+c1tQoL|8p!5_v*#)0b@}7hoJH(?uOMmwRfS&MzE{O?)~f(r;zCiPSj{nko^jP z3QDG~L7VmDxUolHEO<1)+{hQ0-FEJP$Ja#u#Pf}>YPgh=ZgHyhY-g|Wtb;Cr5k`VM zNM3v*m;q3%kuM&gUUFmK#ak}|joqwwzgThG^TYn_YV`ZJj`$B12Vf=b7F)7Vej|px z1*Mu$lFFOs`to3-wOaeyS00Q@9mdJ*j81?1ohl{YB%K~bIwgTmC>*jI-hC*q&#KrYRM zdz)smhmph^$ta!D+SUXS4~*$ zdhTxz2Qo9OXmIhS<27~?qu?Rz3If=#GcAWk0p9XozKPmI*~jDGRsoj zX;bA%@<@FCB9sS8?~7f`764PyXnibxt^R~%BxkPP9he(7HDkS><*ckA?#Rokje5sqwWWpY#T*^=udAd|@gf4F@D(rF-ByJ0WO3RI8R ze+0;o`fp{S4;-paC_wJFlqEU>X>pnhp}96B$2tcPY~!$X;W1~UZ7HGIl7R?7F>qj0 z&wik)!6CK?`j%2dcBN3Y4zRh?v02^Hh+_MJu#WHk00Gq1c~x0KwRmzRFUYQV2lW!{ zR&lWNCp2nrb_*uq@>4Q+W6YhDVg;Y zLG|4Jcy%~w$#W*KF#rnFHg!c+7?FaOv#mijIE@a1yeS}yNc^p97Uq(>+c!9_H0}4G zUAl-jKa{r<{5%1d5&zHy#>aGpEDMX>;5{psgCYpr737p_j#K9@wxc*1COf2TIjL1% zaOzb1EzD&EAtAx6{@GgohHKHkU|w#BAV zj|!FuN8&IPYH!F)yO@$}v3N$$eydQCE?$2#X{No=1Wfv-l|w>U+bW{h=~)A<#bd#^ z8|a%L?PKk{EV?YL+VDj9le|mr=yh~U2>EubiL|2}%G=badEz&zs4B_xrN%&o2`}bs z#3HGHj&!I~PkKeF(-u9_*!XQ#*y8SK&($Gn3}!_$0!jlM{!1Rt$h#i09Sgvu?mVxo z?L#Bn#@N3bKy1v$h-V(+g?`pNxE;*wUJwurH$|L5%2 zn(-Q=RP9Ed8iXWG({CjIj*p2>CFvPkT-q{vT5mf367o8X7L^{gt4rW-WxQ%DP9z?f z8lmHP6GLg}R`1Xb$d+|1xS{_u4(If^3=rsz9hpMEm{J~4$WO*%_rbR(}_BH1lQkYQ4=tqw?V=5W*L=7p? zH1mtPYcSZ_x#cpMtEvJ>2@+YzBPpNqypm=*iXwwv9LC(v92-k|=GFK$5i@&x)Ue{0iZZnkB{=dQuq8&}`YIBmyOD=0s@ zPU_V`DXy6o@IHY1VhL-2%#qu~V7*EI!XT1Dk>4EU=Qq~ZgA^5#$VabnnL=yD>v61B zUD-OPrguGzRAfx5>*Pkt*)rs{T#8qk?phb**v7!g(ukCfaLRqQE)1goVeJt=qQjf$Pab1*WJKzCZIva&E*AAJ%x|6YOPDO54MGu5pHLCmsvO zHU=*t`8NAm@g1ru^JC8IMJ@O&PPfL2U#Q{FAc*NUrF$SyiSoNTro)^L4qU9k9JE zj6c}vc~QmJ(w|1? z9&2~W{%EPN^7ud^b$w97{qbuwdk(tVUh``hdh*^0i-KsmD&&?Cm&=)br?6+nZGC&_ zGzu+*rzqW0s3iCZ(wP{Rx8-7yf36#Fw-&RBD&iYSySECMP@{dt=v1c4p=PK4MApth zI3YB$Mk%s!2*Weu>UPo-HmVrMlW9FMAy8S83B_p3Msg}*P$?21nOPYG^PNY-m5N4evP`alx%0*MGxqcEL%;P}oj$EiPA*FUWt^KkywbVhs{wbS}W z*y)F`C{>htibF}_Pd>NS$dG{-bqo&qz3Y?UHDYMR#BiNq1a@nvF|eydY1 z+l)!(ej+9$# z)oivG^b+!duoqLuCaV|H*2lFr3GMY+(+X6II_)emQg?W}g&HU%-3V%O5!V$lmaFmm zKw)|i52!1tc|BtS1+Ty`w7~T6HiR@rs_-t=860}IQYfyvU0MD;JdHZ|rZg&zaROM} zStwqneR~?c^7SZ?=aIdmg?VLECK%z}xn)U$5b!NacnLG9T&Oa`7Iex{LO&4pzG!Ip zUgj~1`7~DkevsA&9|00th|ZGaVcM?-)m~j4y+?ern)Y#`?y3c}yWFCXU#=2s^&6c= zFIfe3ubo>_2{jn80jbtYc4)|(IcEj^H$?R^erJmnyD(jj`%;R;I zyZ!LgC3*>Q3?{PjX*<*JLBznE#FsHpIg~q#^-_p4dWBv&Y(XB%@$>R6O-*0c5v>tO zo%KD@NeTr9JAiQKKte*(Y!1K4sWZ}mTWdoK1s}5@P3VJ~}R^n>jDHYru zpSt`#5fMpAH}Laz%Mh_{xh@e}^2?cim{$Tw7bP_fC)lnE8{I_3(Hvm1pS-S?kzc1W zab>Wv`*Py8{j#$!2qN>~`$~J?C8c#r%SXJV;{BHM+0if$(WPmu*V5pdT`L>7ZR#`f zg#S-=uHLQsL=_ufW`*!=O;osv@+hkfU!IyT-8#Z`Kx_uYhb~i6W;VWcn9@=YFs$N)b(vX77*doWma`9Rs-)=?@7JOzL8+7=fx9Mi%@v=W`1Xy{ zT-12<2fJ-)dJIJ-#wZ1xJ3bbcQBTYMNWTvybK3}vQdn;8i7f`LT_ZuVu|uW*CBt8} zBYqh)HLiSo<8mL!Pj$W61Lmn-+$e{+3N~Pb*K$SX@p9)L4tDi^TJtd2UV&k8!*~|< zo_aQc1x6-5`w&2_J#=pqIwpX?0>V-Er_Q3q-8?4${4G-huRP;Bz z7@=q%<>Rau^nwa+O9ckkG}0i&a>T#taDYw9NL_TWe!PXDRFQ>g$nYX&ToJ^WveL60%=FJ>L556zG=RT*&uYbZ6X*WlA?9HC|) zWl5VBtP5EMc@E}n*XZs>N-3He9?RBl z&X??n(@5*96yo`gjh(|eNfLRUtnD{|g36)*MDpNF_H7u;3_yM`dEAko(++(NsKY5r zVVYnH;Qk>_{MV+q5sW1Sf`LBwiOS~1{W~zxJ5*t(BrG3)kXe{9oo(IxRZA?c97-Iw zq{OQ`pVN21`4l40!c{h{W#=GmwoRpdNNag^lQ0rO1qwc0q=V`$^;?%2h-*W5%DlV+ zp1dwitW@);2=wUi=V0eI_QaYCu!jA2jB%$tW$kXGX9(p&QUtCvBjI92E!adJV9o&+ zbg|Mp4Dy&H=;DY55(rKS_4qKyhk58Ra443v{np0KPZ5Qm`l0_I2#;i&o0dEo*;RK{ zCC!2~Bz#LxjJ0~1W3m?>-J@714{Z1mFfewAdg>Uv{opgKkVUIHllfph3QyZ;ciD-8 zo*F~WaxR_+aM$!g13+a;U_Bx6yh89pnO@31?DaRruncPJ+xv&;{GR{fk&hd3%Hw_% z;>K96jRR*+)OriYW>+8H1roXsGKR|!Z6`ez%Xn7B2x$#VS7ePJoWX3zi#awW3)Yzp zbRc8R%aj_#$$WGW3lhRWkOhJ%d-E)tCW#71-X|U_8c{`@YO*zGHl#c_FGF8<(O)}f z3A}b|QedGuFWI**6m}X95Tm>GzWufnHg&k`$jva6H;#dsQwXBl@%RgbNh`Ga{Cm-f ztCZz!D=YxUT~?bk(RD{C+_4vO@=QxGjX%b~poozs&J->R zU6+wBrrC5D>#_0JeH%M{*I)Hyybzr3G7b7s)=ECA`hQKSkYvdXhc}?=m-2{7lL>mW za6qXw5>$GZ(ATO2D3^Uwfd-60!Z>I&&xLClO4l(GoP86`6fFLhI$M#z5VnLLE(X?? zr@o64l#BjW=xyg1vtzkjWY6Z5AZ+ijO_Cqqr$A-)B4ZGKo zVL$i*xrrLI5)x2bIILoc%l>Lj^~F$nm8N*cF2?^lX9?IrzxA*$uE1s=iY0*|8;UcZ zf&SMb4oFD2)=ET$uEN#CwEX!%?e0Km2h#*6%2q8n(NKXE0bF%+p+jyL^ADS zNB9Lmki_!PO!na9{hrj7L5?U+z+Me2NkcBKRAZZ?-R^7}VbPQ~A~jg_+Hf4@!pr*u z-3fc%7e~LfQGF*ul;(L%)UM}U=9`1DXrQ(m7URx1RbfvQT`DqGY0@VbvR2QWH<-oe zJy&-Ur^G}IfdYpRQxesyThyqk+7ogJ3!+8k|ompWdBF7Sy>Wsu(m%8SydZlLHk@q<6UHiRLwnxp)>( z&ImGQ!(pYOzf+K3qGbt+o!R7=0uDiG8}EX%#9n(5DoPEcZW1x$amJ*0K1!GmvCS zuLo@>*QP^uOlWdK_KXV_<{MBIhrJ9?u%tm(&v}xTwD0+tFnSjZkB2o>0mC0#Jw<^H zdmyh_+dTZPjba9h@67O7DyfCa7dflyIPaisa}LS#gL9-V^vDS@v3$_NJ`DO}WbW7b z;|NwP?LIKS-Sf};(JY6j!@oC><3A8iP_!8L^09h`ud~|!C249V73W|zp52{``gXaG z2sV8$r>W2(WPz^MT;+fg^d|?=uUm>YP(n1=4fWgXwqnDjvUI<i=Q!Jm(>`fh_86ctd>?|IK}<^6X0~vx9-b6L#Kj{b`bp zGy3sCzIjWG$Vrq8x4Vd^q0I@3w6<#~X3U!|i~oS9mCKcI=h|Dwj)79Ag{Y49Tv~&uj`uBPvP~8kfb~L<3g#rOo#+Q_f+v`jRdrB-st~z=xbEHfZ;O+sIt08kw1; z@@{SVw^2wEL@AQ?sfCY~-J=rej=QdtiyO;JrhL$g48oEIopp3Q=_< zjh5oJ{`tdMi;~i78NPKdlT_`wYh`e^(Y+m(uMvnvb2Zi@$(l=+(Ya;xrDE~|!zpU{ zl>1TcQ=YG328E;IYV9Y4qs}n_aMUcHqh)vzcHn84&k<*?Cm<7Jrr*pS+yoG247TW6 zF>Kf`I}}qVBE{$st-{!uJl^8R-$0G6q9si;H(h{wISp`TRT0PHP!^ScU_O=1N>OS! zvoReH#BHAQ7LVI8{bcmCSRw`u53`c}y!51OqQ=|T;9A_Dp%axm*q!WpHgz%ri3e>; zu~}CHlaMjil88z4$)^A{%MY#Zx3KZgfty0Ydugscs$Z+`rm*cBU@^I|$JkuU;q9E) z7a^-wmafV!KGXAqFHHc~Ht+}0HITp`I&+9Enw|`Sa4l04X!eEQ{N590v zEx_9Q2hrMkGV@@KoK0uQF_U$1{1qnyeko=peQ(2YfqM0!)GMPVbO;-Xcqs-O<*l)h zW!BveLkFVcdidtw=F5pwK9)u1mk||W!{p(bf}rhTS%phk|KKvsUW&)&(vfDG>DkBS zj*sXBZRB)8w961cfjHJMe*Y25B5B(-d{B_~vRk3fL;&yM_g|xi(ROD9&9yL)1k>IJ z8DJ^wsKW$9S@HI+rZsvRBwkR#!6{PvIBG2B(?j>dM~aZrgV!1N=t-YQ+~4wF%qa(- z)`cJTU*5ls=|ESb&K7v0ch#E?(L6T_UXmfG_Ra6SrA_izO@D`as5YvrB(l?sthvz}*)I1Jp1RA~o;d;0C4)O4S@BQdCAi zlXo%#Q!n^;t~%X{366w@8!Oy(oTY=c;M20fFxR$bEmug45-@EkJIWt(w9R6sHIAq5|H>|L*{F58JU9Vft(ph#Jp0nN&>GyJt)6k?QIuSw;Kd z;NM@SwAc`#d?cA$mrA!3Pce5Lv9EpT;^;4JI+t5VoBzprMT50zVo@(+Qb9Gk+^)Y0 z>{h)^F^<}M)O5OS`5h7n7!V~qou?>0#}Rq5O3F$6tOa)x{si6 zVG6CrvnVu2@QG3Q|9l>CT2^(uEy;&vrZKcV5EA%a(x%+cenrR#gh^^*^;@nNGs?FZ ze0raeawC2}W0(%yJOhkuPbh)R(Xn`CFd+IHT}QDBd_ z`*x;<0~8;hAqvHG4QLb!E8Y+VVo*u7!R= z7K!?BRv4bw_3kpLFK|UTLJhsg0^wyk2y~xf%VC25K)PF8prq%RDFkJDa5h`3y+9`} zMp_H8sUNp0lY~RgF_-bqkc0BUrK%ILb3TfjeMmPo?~24s-}XUk<>_~gPg1?MmEjZ) z+z{QngQ(cPP5h?>RwN|~9Gp!$8trk@y1VEpU{T4b#Cp;e>%@&7AI$a8pZvBIy{O%O?SL2e>!P68(|EkMm4N_lZ*It-^Rf881 z3**n)#N}oL`S~^B33@J6B9$B@ciSl(x99dms5V$|m#Q?5vtcdu4-7iM+4!2_S6el! zepuh!l<8sZM>Qo=jQ%n#6+ZB%!tn!bZ{5`TP$wp%7$e=LRQ@8|(w_BB z*5ta#tF6ADPf&2%J~NaP9RFVjTF-PSa*q@H$^96)O?1&j&H4;0Tn^iqLf?5uw=8kE ziD(XKG-1Yrc#7knkzWyUdUZ;JEAJzbD*aBh`{vuYh~EjAi7dveQ~hw0 zNs6xyP(<_V+bRqKmgMI45o%eH=CgeZVXn9@V% zkM3+;w6y|UK>xZZw>KZz_>wBHPa&=^M*&Gc)Q{JU`uB}l6m}-y z>&PrM9>UM`PX#Rqd^=sSJRf#xS3{CkYbo@O@SLwF*}?Y(YQn63;?L~OndoR z4Mc~X(qD~8&=%|*jNFh(J;>M__Z;i`eT4d5RJfl|5kW6S`vEKwA8JAk9^S%(}W`-`DO zME~v@B3uwYF)O@h<2_W{Pb;lhOTz;`b-NYS5cL~drfoC@{MCOQbv~Z<)(H;M)9D%a z+P2VP9{@2x&cAJ#;QJW9vYdX!cqasV1JS7~lN9^ehr^oeMDnrc5U{-5cEH%E|0p`a zbnv9_MbSMVWM(pAd$2-Iy0AhbXs`~n9k3uyOz7ha(m3|_{p#%UvV(VMw3p(VR&g(J7$B;h4qACuE*L*Vao!?WZh^D#t}xo6SfCRM3w61VBO&bo+rk_uj_yZpe*Mg1Z}Ail>vgREO{ zYFa|QcJ&l?{UedGXjPb%lbh)?J3uK=5$DH8l~1N98*4QjLa#IDz{m8y*8x|03Hf#^};xbs55(t2eov~AGI%|uCoIztk8 z8`XKtviy)G|1Z)@%_$`ytXkrGqqqpBf-=2CamaR^4HsO}dWY}5EY>*>c<2~c53e^`>edda= z5rbAl+(D@|)e|bT4W6!d5}bY~vFQkRVRU|nm26H2kb!_F-D&{PpzDrIHYe^h2%H|rSi4*I|pK)u_#1L z(0|Yx=x!%BH&$KI16rqvOze_mK$bAW97W7;TFj%4uhxJzvo?h^lo|;pXiGTr&xx#4 zKX)uBvlm6!N!V-8!Kbwvne%w;LHjuI7&*#!J^cwF6Y4D)Lkh9OLmyyi)=lY)T>mj? ziMT322z)ayT^l#o+4c;6J{@O@7O1!Pf`w>CURC7>7jH8-ify?y#bx`QYTz-x?IMp? zLdBeMELp$J2Pw`@FruNred&Lrn%-4No%Ca-1Q+P!n?wGTZDxa*@WA+2jhc&Awn;T$lFQK4Ig95Dfu{kBV!xzMgA>qASQCsB~*-n!8M2bU-$XH&OPzTR5_jFu^)KXI`c_fRl-*OY)R{ zkxY>redY7AP+nkOX1^4HAe+GbAip1FD9V-^eq{JLf(cPd@P!%Lx)d5R+=yUxf$PXI z80rFAxly^`V6DBBQ4=8W-A%>eJ-k;AuI0gTAPP~i$Ekl3Thn6x#NBWbPTSiw_~GcMUoL#u15Sn zMRs=qyfy*#ksmrXwz&x}K>4mFIwpKHDRn5F7|CJFG;o)@L&Ib4Qo0UM(S?0_tkYpg zcsL^)Ajv}@UZNRweyQ#1KF>(+_;W=KG(+u;L+v85(Og2ios3B!97kK*X%rTa+Cv&; z``S2Ovh57$-=}NvI;*QH*c(cPvKb-FG?DZ_;FvQVWTRB?g8@^W?0xi5ShL-8&aeE- z43{gyD*GU()8lpdIpfD+wu#6NliJ!&UuI)5!rt>SBBbzZ%tNN076(w^ef;k?GYOn< zu->Y_tH{ zViSu!6-$Ft(1o54gb0N%lpzm!Ze^VvMX@CH!Ue3Um)5^VhkqbWSp`61Y@(f<{_0Ik zl;U5W>Wc?isR9e@#+P^a%w2vZ>yX&x%yEw&xAfyaAD@L&1jAvzpFFp0^SLPizVNw6 z<{Swv?9NS+HA5Vrnz!Bi=R4xQr0pIKGHr-S^C8I>$Pm;`4*8N5SCl=|>2$pQ0yh3! z%2ei*gMG^`o&z?2pa8IV)S$Ed2|?A3%qb7eqCpe@K%@*2(L2lRWR#%kogKA)ZsGh6 zai4j!thMS-ppqB){EZ@kPVH9P(-dkwDB);%{xt}j?o0-R58NIc1cikvU0ZZQw$Q~m zxAZW4JkBB1HmFfMI)zR*c+K z{Q4HGvrv_OMpRC90;o_1Vy9rJYYFmxoD1lBrfgASY)G~OV{GI&zg>Xn-3vqkP;_#m zaKYGXPs_#LQs~=QB8`DJ-V<{xgJHa=2&1|O#-)7`4~#c8Pug2x+(X6>*#ph= zD#7f53H{uA5)^PtD9u#pP9esQVBsHKYVDExJ zcmoQ<2VZ8iTnJrKuCoq9ayxRF1o2GA%kpEKsDcT~kjv((7Duizkzk zI-eF1eYN?C`P6iLE&wAAvQ?7d$F|^G<~xi*tMSJ@wtotWDj%U@r@e?H_zC_RAu~M+ zvKUhAC7E4Y6Ck8hIJX5e{l%`O{sZ%{KctWyI}nSH6Sj3ao3eWu&>nGh%?8kn z-D)U2RhAZNUZx1IZi+wCU63MS(&eMV=r76IjqWc3K6Y4cE;Rxd;xEVuko6#1X$_PuS1(NXblxGe*?CJwJsf+YtpMNtEd|+Bhr4T)1!sRa}{b+jSA@6KGop9e7*P54r=SqUEoS zY%v5>xoTal$Oi$@Q5%wMYIBu+tkzG%D$M##|3=EelzbEKnegV|Nh@&X3&Zj(iMi# zfs%T$ycmZ+knaINESC@kVeG`~Igk8ay$e+$mOSSS7ZhR;ze-y)Xh~rox*Lsn{^|W4 zq1Lkr-3vBM865H~aM>zKCGp>Er7T}gG5UraODc&$$~DuF-|S{H6AqKejMFa^B0{d) zk6%UizDQ_7tTfrWof^qy)5g9_gu*l3)c&7ps^UlZ?YX=BF!vDPdV)#-qBspgGp(oL zS#>|);>Y7TGQqj8FC1D=P>PDI>)&HvftUPiRA9)$$ICzJ$A=<>E01mnC7rTqE9Az| z_5D_?$x!|yjXdslzq@G=I8w!I*sHDO0>m52<&nUheR-GEFtH#FP z`A4rJTNlZLmWJ496>5gAs9yFw`FV-0ub7faB=#+E?2od3VIs$gthfx`b&j^<5(4TS zF?>28r!Cz0uu7x#CAz%3;Fj3lJjfs-%l7d%2fn@`9g_n{4>zb5PQv94H#bHVhwBQr!(bsHqXjc!X-;b?8|-4gCUKxjIb1jN=d!72 zVfzed+|)Qk14BH|gWg!2)&R-TCG5YPa;CL44)aLR%8>7lgvw+)^ufUr`QsF-wJQNJ^8{v_AEKT0VWBwdp?iiGPuKL;AqaA@|7;ojDUN=v6wrGf=?0iHTxMHt*~sNWfe(wIM0>B@qWWgC;hT+<7`KA2<;zSF~bKw zvkt72oQp9(5#g?mEcQKy7|$w-RuUEP^Y}(b^DZsm5Ju8SJ}0AE^;GvDjq(~D1RJ|` zHqA9Xf#)~t+ebUU2t3wyby;vKw00H+xCBCMKdtYyUhn}_@6}t%!huB?{e9PU#vFSX z7hT(uZQ_p0l0)h!m<&g?=kWF3ZlxF+r504fqHsL?z+BfK<~Z0k#Mw_wrh4%aCsbG` z;!j&5jh-fDzO=1Yoe3nN3=&;zN3H9fryOJRr)RAm+vR-aD{8E6slo*48Gc$#IcV*8 zC&O_dQ0PbBk&|PH$4%wDM8vXqy)J%qT%m;Ni3Crwgbdx$b}uYc*9JG}?uCRh~Jyvpkgct7{3fh^?vRfz!at@$kaJZ%EwOqp1B=lYwUiNhP-N1-55~ zE{~B|(-h^6w7HKY-B6Lc^HNZVO}Oj2+Mhl4@&J}sbPYaMi*I>s;WhavmdaAD-Qa=l zc&47GGOvQ1w{2qH@T^Bef@6JjtIARWFbMFaH%O*x(@1>|4^!tbn%jW6CI$B#82WV9 z-QlV#(AYBiT^X{aa;vhb2zQwjG26%2pC(M-A~K06!=sdNq-0O8rtzgs-t*b=2^_=8 z-8Ot?RZ?wT4_}w)+@ zMoM*sfS^(tFin*C1lM{_`>aPEXK)fZkZP5+G}9=X9~^k}hFMMb?-miX#OU$L@s909 z3kfas5DLf(9uuu^6tG2I`nra9EI-_|97xM{qEf(ESKVxrWBtz5C+>i~Xj^ z%SI9eiyk@;+b$l%;TgG_h+RCPY}CE?z!y} ze+avK)p(h|d){f;?+G~bLJb|DU-He`dsk_9GW4#=F9CLRv`#B=wH?{WLJh=JToL)u zpwdv!v%lb0r`n;=p7!YzZ>*!w6HC#bnCJCf=*KGGUQBnDnm6e^y!f8apF|uH5vTv>#- z_Q@!CLxoNPpw0kOcs;iSyN#6acQF28`)tfI59_#`ABsJt1alYG7c;cK^VNapDo|e)wo?~vt$%|R=l}OPnl(Gq3+Cq7h-4 zNI(5YT$lYBUc^)wB{oK?MviJb6s z-fWtbZYWe=w^0Mhf;c`6Ad53@P>wZao*A){uBMKZ?A^39waju z^hNuR!V7z}pR}&8c>7lEiLX(cJbiv_E_HXJm@q>X;73gMTSdT=HaWdjK?$ZN*VUm6 zZe~oOsNNIGSzZz&#!cSmKbce>rRANcMcMQryV+09$4 z$;ez3rDDw5($bzB^3Wd$rK~=?%bIYe_?=fuE%6xM569PYvI}|0&uS`3BO>8FW z%_1%^Q~Bw!UqwnD78|dUZ4=u(=mtk#Bnc#9)q_ z1P3)+!hdLvM3|VTVm*2sZNpuA=KoVL`@$I3^0pJ~V>auwY>1=m?R4}LL^E_@_+7MIB6!*6tN>U0YEI8N*C?wKte$6B1D&*R#@2k{+@h4T;~izB zC{w6NS7*%#6j@b}HffPSOejA)erP@g8MOCVUDu$*(#1ay5Y=_8Qz6T~Rl-<=j@$!D zO;^Vq<-Cjkm4!^K`cRFF{9Invsl$_?TH8Ncr>1e=R#%VMMP+38OE8GthQXjULnFDt zs;{z=t@od3OA0G6(YcLEw^xvCqZH+I7=0_#je|$ut#R;H*tu*))*&yfk+@L7-*aOD12TE2RtXO z?x<7oSZd<;fqyn+G;?nSA%d;-2R&X86Ou5w)v+qjYyi3mi~Hk7E^8xFj9J#9yFCei z_t=I$*)3A=g>DX2=?xspblSP25F;a7@a8Gi7fDInSE~Vbd}qkVP2DFzQ`<&mIC9Fy zU%Dan&eY|SjLFNdw_%z*%OxtC&9jkesf&_OrJ?@n52KHQp!pnUC2vfU%&0MzE>=n= z{9n%Glh=wWI|ZwNMo8349Qo;63mSfVo{Bn|L}g#YzXc@WajW}tIp>f^>Dmh2)EapE z3>;f9=kuDQwCu$ulr{HSoN>p!;0$&f6f~F4o7m~}|IP=N5C_ z^9e)XH9MppBOR!NsO310TwRInR)vsk3L=abq=NuZJ#9DTQh|G`a)2wJ)dUtG?y*v4 zMdYZb^EhtR(7?3G+2(_^!_cMZe(YoFFh{=^r}r$jeZhYfTx=*szN*e2pJb=6`2V6r z64ks_&!Z+%l&e>cF`ee2MP#+*f3XU89wT94ldJ~ycksaIdlrK}ZDJb$Jt;sE;YD2dAwJb3kUei7F!r=$&u71gXM-_X&g0YS z$uu!&^WHJXsD2wNOk1VP`Uj2ss6KGQuguh`HlZCNsm2-h7Vt@|DO-rxo_L#v?(?`E zJI&?LZ>Tx_xViq3WwT39Q=fc+Vw%_dBLSXKn1dXnS41uy@07}DzXr@wkbHdT&@D={ z4%A@?X098q7JU#1V%0#$FI%fs)y81fXAZ}`6^+n;Hhvw*Evh#wR0^G5PFZpg$-js^ z9$O^q@#&2%t)gb7811DJ@1M0l-6%=+&6yr}(7J<1ZF_GFF^t z(tnk3iIiFLj936B+1Y5E_vo-$7prk<1#WT9;>?`o;&KNFOVV`#69o!Y2&_`0x2)H5 zMjP~4Z7v9SWh2ppjGH!Zxt;vgD~r#+R;tDb!_-n0tk8oM&OPQ*gkOQYD*W>r)gS&i zluNiZ_vuxh*RF&`2{)g0zp7nEt(v{ORw6SbptpC8$f1c3tNgw&D%KN5bUOJS9t0RI zQhQTbg0Y|4$`dgfegDUwT$$L0T-d?O_^I2}S2?~17**&aT7PD01g@(~wWU>Dt#$UC z#_unZB=PnaY1~495fnhD#PR|IEZQge$$qHm1R+12B~^Nlq*k98$xx2l?}XAQXQK8- zPDImXmnCGc5DO<>XhUk6CuGv!QhzY}W&Fn{8>8B76J7c^c5_q(O7-Zs(ZIL={90wY z?8RND@mbAz_kxbQM^4JOB4`eM9frRfQ+@KZC~U1;bh1%Dk4U$B3JFo!=_E-leO^tn z94ibJ2%*}Veo4Y5znTW~iHAb5zB?oI7-&jMRK#OntFMKy^Td?X|qz- zpRTu~2DKNydb(j=5gAzhU*>~_o)2faz7T=_0JZDkb@b1?RYY8Nrfmq-J|;*8i4tw zbM+v{XayP-73~6`%W~a%-M;tMiJ6y{D6YMC{mP(O=pQNf%c=wa$+qQN_}-;cUFUUD zFQuX^#^+W@vapm2SV^J+b}=8pWNA1woKg^|*WxZShSPlk1sHTRg)7{1t1Cp1q0I-dbKq=#Xl_ zo)a)?{+PCU4;KHwSZc{cN=R=8TX{IA2L2tds`!ZZ6*uO0*&>B%rlv+KK2#oTE7IRybB4G#3jnj*kRr;aLRNe4W|kWT<*ePCbz`32q+StXNCRQ1zx9ua zM0N&COjYVHnDzU`whJyp5ewO4&FH>*jb!AQa~catiJfk-}4U%em!{TLy8?T^7>iecdpfe z-klpBblpwOI6;~_EK}2xRtV;=6;`xXt5=myxBL~h(}YGyE1%f*C186qqiDh8JK}>a z`rKtJI5~EIj7|WS4o}SNF@Jm{Fy5jjiq?2I&b)UU$&(hZoCIhas{0(UKDcZsMM7Zrq+U7EV4rrqJg7`4 z9ItB|*pbsc*a>kTxRb_!gCh6OA9oVys;i33sC}^U-!}S+`fjCBATzgfWY1o35p=rZ z9{j(gJM3rgHD668lwITXqbsq}%C%aUILX2cetibWL0OVGEbHBimAhabPssW6tTVIz z7t$YE9}_p~U1|qo#zA9pIFuUN1wj9HGb~-aj_?}Nu?JC`=u1Z$xmav}fktVd$5XW_ z0DYaCxc_?*WjEz6Xxa!B{=sP4Q^)S@XPIt7K6UTeavD3ZJnb;F`hG->AnM$8l|u_X zd09oCvoumSgms`aE#vX!>j*awBjq$HXvU4KO>SxV^~``Z z#)jb$I=@GXqF(q7;d8g-b}6Z5-&4pCKOR~PWFtX-4IdqnfB;1<+mIpqh2{F#4^{zz z1aMn#P}5b+h8OwqKF(3H)9J{=%<;tfrgFaTptU*-hnw~Q8ECefnvL|``qEhE`UR$I z9a=s-X^@pzNiy)HR`OG^3Q7&^P1lk(ba44;Wn5=qDR!I!EIc>lWcW3Y~r zTR(vBTopYj>fj9He`!4SRHeU-+zd!lXUM4dz;L=z_7IW-kw#+L)^$w87F3yVxa-U3 zIo$>DWHOV4Qqx+iH$W;FVlVOPxE4cDrKl)|yaT-+;kn;Q4JfnTfQ?clA9NhjgA?PlM8pi7rtqv4PkBj9z9E4YUHE!DHZGejbCC)vHiL#Yzg!jr5uEGPvH zI&CP5eITHoC{=CLvBhdn^I_JvLWktr`N%oyaQaIm!urb?$A`TKle{-QA|e{MF~cd( zOvkUi@HyQLGH)C>Iy|&&8U8_7es|Od+bX&i+;OHr+zGSjKk|6jDK<2XplnipfXx=f zYf}rZ2&srzeU=8b;;X_dE3E<(`cN_yQwXuP@1&--wi(CHuNs^lE#7lFrfb1d5u**{ ze1lxDWF=eRBWa$CV`pVxYPJ@43nhof3;Vy!7BiHnZK5kK>CHDmi6Ae`x@ zZg!sv!8}BPJu%qejes4c&;FB*8&+X8WX7aI*cP1~!qW$lyi{jNOogM`G9x}tMDZg} z21!!{K`{L&91aR-S=Oy`L9FBlSI-m1u4daDa6uT<8mXB;#$6AJ&NB?%qb&KZC29zd z&nnlP@mVdu>O8f_$|z2c*ZY_AS@2cZL!k(09~cT%s@qXK*kbz}GB`S;?nE0&mx7v5 z!O$a3QZ$TEZHJ*LI(=kC%VQFs7+(T=UfHmh@bXs{$-6E)WH(c1*IM7*J(f#{+-xD} z5b|5Pi-z=Ah@6MinC322&1Jw_OUNR=ER+C46GV3hC2zr9<_1&Mw!XCz?d?ViX1!EN zmfP&wwOFV*83>#6QuNv|jKZ+vqkJ_9OBHe$@|;qk0D#F-c^s-36eH5dbup&x8q(L} z6Lia2VTyOC53g^TO8 z_%VOfUk(~mMhx-M&}mjq07kpU8!8h>vP1@BJGU$z zINaH_+jhT}PEGQ#0(d$T$$`P#zN8TDX5sDMas3;RnmPlqn|M5H8f$FG$0?-&OCu*J z*ll@>qH8X1J+9~37BtZa!vFUZ(63))Pi=SQM42ObQ2(yr-r_TwqkL2R)qcuZVyY|+ zlAz>R1A0~yhJjt1o$G9M(AYJirahxKg>vn_JhLwpx7(%9Q>J#cJw=&E>_-BbDgg%# z`e+unIn8GQV3v1U|N=v*va zpDhSLr<2e00Do|%0xz%KKj;2skq zm!^iSpAP~#Tq__$9R-TPt3{H{;|`h;8z{SM=5ZNN4w@BizR-q0v%ujyPB$t&S9sZ! z?&Q_TK>+g6T!2b8vWZ?RKHoZ2cvw%_JU|nw{mE8t5Rg()VE4qh_WZ5%;mU)@*Fn-3M6izxnbq?C?hjmImnNNE(-*l8!{8))e^#H zUQnfylXskj288q$UhM`zv0>K22+ z*i1&KI~A9k5WzYMAW2F z9oMjuFD|eCPRd}(G54_W>W+W+T5(@#JltEcuNOy z|9<<|xU>lvCMXwI;vxCMcX=w22GI&a*2muqxGQ3_+{I1(WU^iSkzfHkAYQr>UF0$o zHDIm|31N5%6X~~dzKJ7b721C@6zFgMv(PDN*xe?*PEN#h-0HOLDDlIVCT)|b=hi8@KrzbH-gb{5J#v?(J$Tl31yM8Pbsh(GI%WrIBkfioPp(>d`>vBF5{L(1`!0E&L~uVr8HV$WxCl%`VVy8m*)t z(xQ7drk}a}w_|fR5HC60G4G-;0i=CWr%RJQHkT<5$Ztk=NetS?p#t#pNrUx{<{5>MX^t5sfHEA zYL}@JoA6KcXDC>3(MdGq{p(7RNTCAo8YSoqYdy^0=gyMUuF5aRfU65foUu|__vSc@ zU4Sy#yN|D*ZP`!P0^nbOD?7;Xe_<6h;QVI!L2li_ORYDrL>K9;v63nUNc45_P8$>6 zI{`Co6c!kvfEL&tQ5)Sp@3$fF{bSpavWni)1;u#EcF>Pf;Ca|#J}mz~J?Wq4<_ddy z8Gq3n(VPF3hrAcUK>pr5o$Pa}A2cJoS)r?>95X$nL3ypJVfzuB$L=V1-l3CF4%-@A z3B(QZ?7@6MD;_i2tdaXUP>yEHb30a)btXQXIfHCU;ECy1GpqjwKIKJYNR?O6#V55k z^wN(GPdg=2iib~Am4>lZTGZL;c9QIFYqUhblJza2p~U$oil0BdW-tE$c(zTrfhdhS zpa%bAS9s!n2qR_g%D3s|lib5%aCP1RbX4FV$@8K@(VtEcf9Uy20AglkLTvRY6O4{u zKe3!)PfJ{tVe*r0UZp4)EZcXsYNX2*KtTtVXE}y_4siRWnZlf44D#N!I?Ojo$HqUX z`2VT?;zKAQMv)7#0mqW_C z1hNj0ySO+8`xpWQR?49sd9uCbOD3h=ds>x9Z?*EpyM`(kpA7U_9!a+$*pccl*_QKp z(45Wh9V>&0@oofVVQgHtY!U*d29hif&RmgQ3-wc&<>!M+1(?l7F{OXY@xP1GjOl^GRNN{HvE!aFLjeYm!}jCe^hZH5 zk0G^T_ae&QM49W~3cTCzDbUr}R6Sai!SJOLtmzA=k<@AignPpjRxvG0nnWy`MGh~^ z`*Ll{CN!n#)Dt;jc8B(Bd>y!&@i^)=K?BvDN^M%_uWM=bzJSGE-UC~79r(@ENRU_v zl)F^H=i%&F&y(k_{Ftc)UyRriM^-9FalLIpxZERE5H zENd3tg#t5o-_xEKo^&#Z^}9myN-z*hF~nu~T+(^LhA4Tc158_-wGw#YBmj-OtkOnT zr2@@vXAM%XQA-le&a8IzI(`gn2x6xJPg0{$m&FgmSu)cWEyTxPr79ewC0*R%B!CBM zS>)ebnVYzu!bb|P@;gOl;c`dRt3zqe@TbqLfirn9n$S0d^`qZfMUGwi?W>|LBa=BB zUPAsF8}_kQKc65_k;D4NLE>mVyl{ptV!V~_x%}9aDnr;z>kadfJgq|ATGf8K_-wFf zHNh+fRP)6~r(uT&hMG>v+z?7&)8*Qu&*G1_ z?1CLd{dDJ6XSkc-)4J)Mzz$1YV7dZw7?ik+s5w~`vFTUcSpOgYxnw;z065!4+id%3 zb8tLPybCp<+dEyMH#XU~N@uD%2wn2}1*_t4n+%H~!X)sw?@e$)(E<4yyZg;Shyq9Y z-X4~snB~AKXl^WgpnQEmmT!azPs5#vCYkpKWRJwyFmWl>&q%#p(ZYqqR+x!Iic0i4 zMuzTpIe32~VpCsI9-uPi7n+!*8gbI+>?G`ttXF~|V@3&z8u5w@3-hP3JJ_~txO+x1 zKffe~EI-TcW=nl?iDq#W(xlT;V#kLIRJw6am~5P`ZyUqd-qRrPRYf z@~9Q>o-OFK38x_6n;!bJG^X=Fd@yqF;D+r>oOmFgV)KI+jRa`qQ1}h zujw_sAL!)_5if8*s31HsXan@(Pm{4LB9qNy1`s9Q;jA|fDm51Jy<8%kDrdkOOqJ^X z=ZF!rsR~?9pm7VjSxd68R17s289q11r|6K-|S zaWa7aDmW(N*S*-w1vSeJt=7+S2>tD^LedPWe)Ki~#7PXm+)P|qeOlp{A59l%Rw($) z?HyO?iso3>fQ&+14WkS6>|8^fuBWE>n?Ap-Fb^4gBjL^uNCAf3R1 zR_fQ572T&uC#%KfPg)d)Pb-yZ6A#pEg8)E^I*rBQM&9qwqamjc1k$F{+gHNwLm#0u zqoh)LOTlLIz&13EJgzVbcG+(sxo2EG>%Y$sC(kaui0o0Kbmyo|e+Vi(p!KL%BG;ls zZTQm->w*{vPt>KF?HXo{V5O}&gG4~aPxJz5c_I{_Q_sQOL7^(&fuE9;H}BNOcWE3x z8HDHjh{1Fcmh7)3gc3^(;EdBEM4Y zgbuM8dQ$=MY?^KTRdP%-&LuIfMY{sLlUph&@z<+6`mm9Ch5^74W6#YW9CUoq{cy*( z9z>V)b^zd|e!>*yD>Mpb$yb1o2H2N`i$i$&1>4&N=?!9m@~_?{CAw@xD{NV;nc9l- zBYL|;(8ddsd&U#@wx|X8wIF)Eyp}ITv*JHTmLmC^zn)Gl z1{k>hJK&`R7SRbiTI4o2M3JHD{o;ycNJP(Iu%;xRYa{4LuE7Wujt6E;scgN`!$F6c zm=}P({9S=-8av!S)W(#mA0Z7qV)09@b#7AhBaE$yy3V6T$(=$UmknqG?v!^`_rbCW znp<85qJYNHmf+C!*c~8?h#7MFarjNff&7IhI2G8=GaqD6F&2dc7e@vPDfCq9k6ba1IG7~nF3w#4X@((nm2hLe{hOz%q0=#_84R50t^Qvi z=f!^GetcQVeA!%jOG&|zfw5B)+i)&0W{tS$Ul(}y@jBi*BUmX-4SkfXIhd#Q6nvgw zqIX?+s0sk{Uid2CS4~C3Y^W4!O@`O;h+6y(jQ_POOXmYT}O#v*ui8dLFbM+d`T#q zE_&htBG*)*@2WRN!Qduq%Dtr0%V%OFPAV6P%K-sgkEn}Qz#Lo-+LuJniaVz5Qj6Ct zUI6vYmmfVs^m6Ls-tP*%saRrU(96>d1dk{Cy%|1(ucA_pabZPHd8YgGaQx;nfDH_4 z&VZ%qt6|oNL^69!Z4dBjeLMA^F3kEAuAQnt%ln7@NFUj$=$s8f>lrjXz z%z=i1jY)`ZOQp4+#%{FPS(MC26rJdnM%HOpd4Jc;v zr3>i(*k^@>S~LOWE!i&&$bof;jJko?SJDIR877$Iz2y!jpAIU#P8S17RM}H-&00sO z*gPWQT*WtK^(E^=)+zm@2{&A#@5t%;_%^5OVFH(9;>cL}wwN&%H>gvr*3I50`@y9M zqRB19i0eo)KCGu-2bM5w9h0@mai}MhIkk^?A@@nwYB%JD_$j$wx4dyKOoFl*^a4Cv z#c9c=oWq#|F0Fi0#XUG1vNuEFVkbPl@21}&J}cI=GLNJ@PgW@b1NwRQ@r2f7ft(E$ zSSTO-_mKRSb3rAOc!vD(5&Ad>(GIsrBQrUL6sqi#!PISvpA#=w1ge}m^Xx>bVxt8s z9_yp$_P2G$Q8KK2tm_y#TjahKy46Dw(+~M$pEPF8y`oA|LM5J@V>ac4%#2mZXyjDcwO-}uA#_Q9S0t~$0bAXjWQJ&F{>!=}UECM~J4X%8{R$9+}vtY2% zp7L=sBiu-(kCEBY$D5^7$Bw1j?tQc{evr$_dM{|pv!y1MDe4P)1X93ccofA&J5Ji# zW_V+Y&f+0jrbgvFFKb*i8T;lumk@Yfe~28}d9ul`I|Socu@Bxsrld6E#gCsl*0!U* zZU@g$3a>23+34X%u>j~zI1?6F8M>8@ z@%IiMk4-AW^Ex9m6PUAV4 zGfCMFv%;9FoVNFRhL_F=4YM)Gl`R4F{EETM2Eq27o!;#Jre&N`nkt74+4}w*vYYeG z3SAqO=HUBgKlXf7N@?2fGgF95bb$NEqQk}`1w`sRAJ$b7x{?KKG9!=7Io5C(1S0f8 zqMbnt!Q^Zm67E;dH#*glDVZrXiE+IRU8v#`TfC&l&K})HWXft=1d8v1z{gFWj~ zM**J6FFYw%3dEw#US7waC;5TtI_Aq_EuuIp{ip^4x;&Y<4160Q-huUQgGG(<%CxL9(j$6lKmpiIJMZtgLWq47SFpq0m= zyQYjAoyF7L4}aE%bB4$$H?!zAw$S_IK7bB{L$fXc=?!<1JRP10pa$X(vdfL*^^-~; zRgh7W-v7|YdrK|=LqNR00HP*MfcT*`M|qkZHxXv18zl3J=zBf0dKn`8|NSHBD4$Kp zo~JVO(C;y4oLf>_?ZR+st{aMBkpDTq6m^{x^6&JNo@|aT9+XQ7$$NlT5Bg1ef!=0x@R|`tz|-TfsoW4E)WgMiz_zl) zT%pbhB$f92`HB-8=n38qqw8po+bMWQn9HmAwZuL_FC6>3k&ma+B%Lv$BK&Q`pomkd zVIvCXbOXdh7wpOrTho-~nDfJ;64JZD9Z-@Bs;V7Yu3%&L6 zvcU?;x?T?oc2c_6+W`Y8N>-rzvq;UtU|wA>&qMa(`AODbUgMX5RWkS%rY{*K3tf{R zRFa8pBL}*&P*Dby)yZdA(F&A?0&%`%Wpl@&{&j%5Q&N8SM9YdMydHGRyW@!&Eo%y~ z@qPX;66;R-Na^(NHa~qq4eOU8j*@K3gjmYBm32JOsofV04v7-Xb`tNLB)z_s_7h}C zBbhaT4wZRCV9*80{Dh4&2s@zCVI9v2ZRPYCUU@f2xcL5z2)lll#5owe|Da`uTG4@i&U>*shR-)x&ZA0leHoe z4j+)Roi_GDx~IE|LygES5i%Rh=7N?<*3O>28EBkK;Sa@FOXO)^Sbwl>_rwal0Nv8g zp*o}~u3{ObLJZsM+VyF{wRc}CE)5RsNt%VoqTRR|qh*uRi^N~ZFXtZg7ro4YDz2)X zir!KS&Re`FPnc1$fHY#J@uK7Kv_vQC5d<2xT8D^RH31F|$LU6ACmwmRI|Q~`X6h5> z7cVuI{OEn@CWMMYMfdW0?k(sMe>C5noL;f(`K<2Fbn5Q)p^R}T&EST?{mdlL$>;6d zOz9P2CO*$(*M7?zm2B`HdHS_JYFr{@#VtW`BL}s<{}iOsE)bkiZ8@hft6)`WuFUbq z8%+M29-cK@puX*rfvA7?L`OYEtjdA3V}l;4Q`TKxdJ1p!OZh3WHfI-0_Ix;Gh4Ee^ z<;@VTdDCy&d2V8=KMXnj;ST%Q&9iovm<_zL zg7nA0K4^H_)wV@yOP{%4&3yCXT~qQE=q8=r!P0Uy2vRDvq4TFi$$bKmIQMhDsDc;p zJ0%sYjeSo8N<&+RF%TvE4AEzhRrKt?(N1x+A7N!hzN0^C|1Ylfj+FlZ#9yxA54B@s z*iBM9Jua2+ax&OS0j3znay2XGVjgIwg_B*~W(*pH7n}RmR5!Pml7oWK$$VZ+7{sD zE-kH#E>2FD@vc{Z9d$J+`4Qi$>f<%V%wLmS8=7*quJXlU?a@3sZ);e;xh@~*Q+wX! z44kO=oS{H8A))&B#>1A_XXHN`&9(r;I>c}Xqwv3BMh%xC1=@}m368I6>0+(b0cV-& zg`b_(^etW@hn@PBEJ{wk#enVQZfBcBJlNlKDTojE`pb)CmYL$Yw2Nkz54}~w=|m+) zoyo@fqV^is@m9-&VZ!!LlTX(Sm0!rY)_rC&+A!3L2xQ`blBMv#YCVH7SMKse-v$H>YnEZYOoZ#R2z@n- ze{3DcmhvNj!p^q(*{z>LZAP&BuxP?rMvDTB3xa;^qPdLa$)o=z5-||Dk^=nCbfSuXaG7M0RBn=@m6C=J(wpC024;76;_EJU# zbljkJz9*1@f>}Aat4u^j;WR5|0Vi!&~LBCLZQEL{Ft8l#@>3dH$6ggQHDy*vZ#2w zaMHn{i$>NS`DEX08tv&?*#=#k3-z7odtzUB?XZV&od& z6@n#(eaC)i_*Pa?mK=d@K>GQwMJ!Qh3~v_BA+=rwU7ggP|Ap)1Q6)$TldyOnARrOm zq}QExI2=Wq9FngDkn0VXWSfL=f010vHF*L`vqC5lKu;GG_i7VRV)DXh78H`FvrGCp z-`z0CXX4TH$lXPm2;>P49H{o>W@E^F;tE;>xV^9s(j?`1YugR7j^GTenHN%8=}H|?)SG|URw9Z?!zylV+j^LEj8%Y}1Hm|O zbsv?m7f5H!-)2aE*K8txe2c@yYK}77YYG|L?f#aTiG$bf#v?=CmACZ^K$_0flGNy# z@aO{xAb6K^+Bh~&l*PIqQbG7R7dXsBStPrs(>xoUmm zmL)&TOS(4a`U7Kf2+uHmr<49CB$+yNp@`H69R8NkaEDuHe%nFU1TvL|y&$;U@oU~} zj6vUnqy$N?lp2_ZmV-$0eT#lJx3XOgIkhcjbWlO2+j2gT_$F0GlqBqt!2@ zVG-_f{QYA?$DySPHmFSML8R8%R0uo52O=@9<=f|Fl&7hN+bjCWC$bZ9Na-UADn?cR zHZ7%?dD&&K`4o&!Z?u!nr{*90EX~e}Y~@X$&?PPFJ=75=m~6-&(h#^eZ5f;F6Tld9 zNrbId)#SVyVIYex^V1nh%Ftj2yu16<6vFnlD9tbQF~`7x9>^LtJ&#^cc1R2`!iy}zyJXhoA30nxM`ccoJ{>Jj2}fl_2XhYL#N zVoNA|C`(|qP44>L-b8b^l6!_{kzx0Ph~t8Y|4dN2T5cOT2H*cWQn_ZG^%xLO!jDEBXrA^I{&uoBM$UT_z}1IC(?N}crk}|y)-rchzwC6 zt*jkQl@#`khgnhDH7oCfoxqnQ$e2B50JvD+#Ru{`EGGD0Q5 zghKdJSo;xR|5O&}TbChZ@q|kvP6tPqxDhG7dMg)w(HLhifj8Y$t*c~&{bf(7;zG1? z#9*s;w+QWHb>5{z0f^$!LWLM^nLfAHe9yNr6=6JMq~)wrTG9NZfOO_6u!V$_Pkx~P zIGaMW2(t#CrJ}jI=HO`23rby_=uiG7K$=G$)w4zX!)4(l$i@a=+NZ}Pgf!4@)#O4% zb`lx-mGFt@!~DU&!6i#H=F~3ZRPUE`H)5h68~4bm2L~sgvZIc{OQ}%{UI_{2hSXm8 z)E2OZQaos6&I@ztV2x(P9FdKVv@uOZe2d^Bpj>$-h}tIE*Dqu9tq(PnAnVb)9YSY& zu_mNuzIzkoJ+dy*6`c+V`*UvKS9WGna_s_u&+cQBZdhG%y(g_;Sg<$C#~ zo?K>Pp`uptH~OiQ%5oejI4t%8naD&xltxm0(j(fp^b%p5$Y#*+%#l51y0oM41NUF$ z_pol+4+4G9={V1s$ZG>`#S}%z)w-7SosB4XDb+Xc|1 zwoZaCsgJH2T4XEVjf&^DW5+hI+TNRTKz)I9#%GcvVWVopMY*@78!Z`Nz$d)-^=SJW z){f{T(G3{JYbA=WTbB${mp>j`lxo@NX48 z)5E+s{(oSU0YGwRPbWpR(*DDP{l!nBQ=I}&^T%n9K%ojMlh-L&!i`uSzM^xiEX(tW z0XRZbELw`xyyA1d~jtV=pN({4wGecALvSHtMx*()JDnQ8O~u)c^3onAtp z!6$Rb)>E3S*NL9jX)M@JYYgasmmTEJ7gCN|W)zxxB*Vnb75kbTY{ATIT@g-lJ9J}9 zCv;-$3GMAxdK8E=Sywl19IwD;BMp4TL|p}{Gax!GypegGxa3>X)jWaWh@!wKDw=xr zGI9?v;N@0#Kc3+oE;_M`C%Ws6@-in2G(V-hd|o;|>MQ4qhWznB{=H!rDmqwRa*#{t zpfXfOG;iINT4gd^?5yK_Rv7d{paF|wYMHQ zW08>17!~F|i1E3uy>iwT^)@|TF@1Vszl5gs2If9RMEGXTs>HNYvT7Ln#gH|%BPW*a zAH(l4l#6;M_|Ppymi^l6Dc#XR87nxjGAKzC_pkR-bkuq~K6e&vanuk;s|mX$FHP1( zOIRZGoUf~?KFw8Jg(6UuK1?)jGZuAmZaux(*b|X2rQj6M`ON7sR)Rhe1_f%oJnDhN zo1xd?(-5I|KVEib>6UvNPyABilooilaax0q=ioW9UZiJdQGy%YI@48 zV(#MmilT31#(hD(Bo+VN`Q_z$8wm>_+Ynw`4oK&s9TgdLK7>l&#Lpx4qd*oz%%17N zPcjR+Xcn^h%CreS)t>dFIaR8{WSs^@ENwHS4%v>J27&8`k5(hC*sovOQ>)@nC;bAc zFc?6o2Y@lQS_1%4SELCd(_(^kW}*+wTo;AlOGzX6&OmwSHw@N#GgRGT{?Gz*;&ORL z>&aKdq=DC@ejcdP+l{k)*g$4jou?-vR$h0q(Mw{T_Lh-ACL7k9<9I-mBp~FRMm=vx z`aY!?%YS@*i*6q@m7y>Lc`)-GM$S}nul_4f-@3CQNmrMB;jedH8EwXm2}cKVZSe1$ z$_SMH-s}Qp7q4L{i>?*CHa~XzDDXDqrlO_YGSU)2f;d^u+RCBhqRgQ<=gpWv=x-B& z&>c&E3l`%UiV3;x_S>C|qJje|ZVa~C=8>8KH1>^AAo+kt2BFQC*V)WFna_hx;}!Su zr+Ix(>`2CF5e2h^TGY-vjvnsYQSAGGeM~tLm`7@P7@1{pqxV%sTNpI?OTb7c*YhEI zuI`|*1B(uN%!0)q0UGXcGOULVWquHBEr?sVJLlxPcUhqpFm`~A@h3H?-~Lfo!WRV9 znt*Mwixbh#!9{(xMX^Jc8^F8MFm2_*fi#u*|f>mVJ-mn1Yw^6@cK zo57005C`_)Vl)TV>Ift!hJHpV?JoFMGi8Dz?be;sd-g8?QIpX7m%6;ZJ)FvN2pdg@ ze_>WZayWysCSU25*T6#qZNND&cN664MxD!P`8F%Av>M~OmAn@NIF4)zG9QeKQA#96 zi|mQxrZB^6D8!(x@)&v84&7}9?t1PPAc$a>jcOKeFuK8&O?FmfLfB-G7t>n~_m_53 zUJv4m4XakR92v)Sak*|nzRZKBeXaMwi8wxQ2zJq&(la47lg;@Mg6;hNC`iO?>AYA= zSm@ll#XxJtrzm`Qy7<|1vK#xqDCAidnDnI-?sAavLdDV_yXOrXFtiqSyQ2BFg{pQg z1(!F<=&VX2cpXdsmR5vW?2R}iuNv0kfGSuy76olz^+-Xmeli5~IJ|VwcS+((6-LSgs#3c>_O~_qSC>^(oT!s5-uv&Pj3Ri~{+B z_oi=voun2jw(e~B-!X{RVH4NV{ljA?Qfq+yc}!<0XWeWjpx%2ck9o6dzI6@jKaS)f z=}z6EZD88=ELE1EXx+<6TPjlsLy95UdboC88uKvtMW-7AUIVameg{0)1V}f$@Gzmb zswGSaGcpUx%*-)uP445M8=EOi>35q^v1>66Isp+$m^foAFTFXvPK{9pc!*#L8?b4M zb!_`uaxrK2iaXlCIV?k&+1D1*aRLK)^w%mW99T>$~H53GC|=F-SM zBxE5*w^aS*26xo*Ky2s$UcZ?^UH&N=jB2p=?C2ghP7$Fz+&A5P2t~(y6b|PnVLWpN z{OjCn$!B~<2!U}7Hb8LNM6hDnERzQcIf*kp;MhbNaFo8slmsRc)ekFlq)JeXJW{~G zC~H=cP7AXr`SegaWP8?>`)00yb;Y}jcBXGXQ}ks;25lI$kmU3%5^rD;@$XOZN$V z;~+J%YE#ns9TRIN^TSBTZ|w!Tqgni!06;o>3h5TN0fGdUFGC9_DC4A$(%m(?j>+{e zZhFtG!t(E!HAFh$&%WQIaomfrhVR(8_lGg(`^?|$F+&-wdrY8RTME5V_HsX!;e2Xr zwfuKyvZJizhE9Do=JCPYp2`uq5tC{va=Fqu$G*l|CA~!5p3P3nHh~0C7~qnntR#<6_cSoiU9Z z%y9>WpO?%@X((m9TjW2t8p?`8Li3UOtn}cRI>(X})~oT91e>|Cf_h+wKtr>`U~K<{t8mN320(&6a8^~XoJ1~e~>^vC@$P^65igr8^5^^wD>eTF+nhAk~{)KwGST8Mi@ zm{T*adKj4~0RSUvNGgV}Nzy#EG!34%a(}9l-9oMzBlpj!vsPb(FnW$(% zmf#y{s|v$;dcvd;-ZHgNQ5SLInc-53M*0bpdMPPq&C4vq%HkKO5N!UCf&d3aWKP7s=DK66|AmdeKmw{MIx;WXh}My+o{ae)7%^4BW20OKGbC{+hR&tCQO?AxI~dj zDkwO=!QJ{l2zgEHFH4psuAkA&eCjlx3}P{Vt_tHDjZ;mC+atV!p=god#4=`Yjz<;q?Y`Y(?Pud znBBV$<^%U(Z7^A(@-U@0r*ApeFgslKfiegUpB$B4H#jM1|3xhTrI0|pET8@Yu+s^& z;?jh|kyK4G3=`d~&Ij2vOTB~q>>$xVIvWCMummLg%oMUdEy#0Mq~$ZmUPBM7+&|h} z2|@s^E-TBO0w_2;_-C1-p@74LS@ROfSUc+9Ry8s>1AU=7qbdY3gl+Wrra~$vG`2bD2Iwq2kE* znu|{>6AFI%N^ea6H26A>cbpVnB`f9ee+mis@090P;D(ak*K^3Zxm5#A9?NB?3zJ}$ zhOIw%6TwVW|KBMyfvf~D{s^1I!W^*K%}+`*ri~?$JFL~ zEk6r-cw;%~jxnf~%CxOKawkdADVLe~>E?pa)DaAE*v)@HT>7S14$ZQla08H5orGFy zce{Vc&HUzl16c^2c7Odc*GW&fPUM8S64;+m?AJlKk(Qgr!zuy1Yg$j+o3Y02+w*v1 zSbHQbn;2-)z$!+Dfejj)Wx=O5lqDm$Mr&Yha6M&vU$3#{bpnKSF0bs8F*eceQ7(MM z)w;EO#rvLehi`aS(Un+vyZJHa<<(P3$O_BxIS!_hwsf2|Tef1SaZ<;MrkGj~OhAA@k z!akwz0J-fJc83}@{nx#E(`4Q4O^(*9CTR1AJiHH*Nwe2$(QCRBn(!snnD8skm_2g1 zi*W*$8eOJhL1FWzfvA1;7cft2?7Q1aVREYNfoye;uXVct<0_?G;)ogu?7rjeZd#CI zXs8d<52k-l1J^&!<{K4)4oD&a%t?daC{I=n)+7YMM>CJ+FZv0&8`{MV)!(5Q1Dp~A zW)E*z8!V_|)!T2Z1+^WXzx7GHmf+UkGK21po3lED0S1izVzf9D@@j zewKXpi1$8g71TLm{0Az5wWH$cDIolqeO1U;Mv-NOphP{!#k62>Y59j^;IO$2{`bX? z*lfb0Y+dputW&i?l&?03P1G$`7YzX31pj!ZwOZ_RhI8iK3Y+Y;^Ou!jT5w_tpWh!t zq-_dkU_h<+**c@%^l12|Dq(rHaJa-S7X}yz}&~fY7@D6 zi=cu3@AvT}3)y!eYE+j-_KSt zF@Qt(9|S6+I-h;uP9)ngGs|AlUWpMMZESD1q|kkQzAJ|Ph>}12f177v9{PkR0PG`* zjp1OiBJhZrDdPEd63@)T55ljw4*Zjn8r)7|H~50sc)HZ_Yz#x{j+(W;o7P35C-;pa zo^VB^lRWKlR}oVHz3^P(VndInbW@MG_ z+ld#`6UJmyxt@X`SYpf1c~MrIIzGL|-_t zGj>!c|Gua_>{=3Wxl_Ot*pNLB{5_voM^aI*D)03hC3s7=T{6q7050gE7mY%tVw`7; z;;Lpj)e+x*wJS9l(y>1w{6v8%WAxI-HShzx` z;nC}02e7Q(?Kp?h`X}tr2&pOL3Tw#XtObH(@UyfJ^WOEqL+sSGvsr}@APZqhj~#u8OA4YJK}b5(ttWRi6&jGCQb!^vcYf`Na! zV7YW@ukH7BH_p02_r|W9ESlLz=c96wCCHhklxpQ=$9>N=t7|F!Zsx%h$L4kyx~NgU zV}0$iIV-?Yeb|Jc`V|kh6A1?@$j!Nt%WB(|q9}nj>=LD#3!qi?5T|Y9WnJ`+Y~EwQ zz#TShOOro$&8l-Hf2V-sr-ZvtX;fHbmW@R;iV=e68bIX-9U&MI@V9ectF?Dac2?Eao-1gU`2B@?^fEOx zkdBoKbpupXctVMH;$ZJ`r#*%uEXR{q$c1u+P87<}Rix&_MOV)Om8>lcS7%jYd}sc5 zfaLw*N&%gjjD@``9-0k}up>kpn@7CCLyfiET^ih&6>X=;(f-1-i_F4zDrs$sY!tD% z;RR^++&4evuN=S`TN=t4m+MVB`vyMdLmn@I)N)ys zZr@wm`}>uH5`Lr$`)-!3brAKvDz0i+J3%2m!?AauDkN%7ZgK#(Ts336=s&T^YM-YO zc9ata(2q$C--&!Ycr6 zzFiF6`38&Yly~hvf<}spu+&5*b^{+M189X-+h5y7jGs}Wm2Fjd_48r;FLI|84~J{4 zvaQjQDCi$zR+#VdlZ2^f)n-D-EkNv2Iw=^axn}Uy?foCVD<* zTtsG1FH+cFdBKI|Y}Y{xgwiV!GKiD>tTRqw$-SsX=Q{G@B2kddY{l%8Pth^+&qglD zX>S60U-nut@OdJ5vNs?vhNuIZf}6VOLkucDO}qIHiF%_|!$&~!F==pawaa#X0kE2} za?R7P69lEj8~Eo~ijM3(f9YAw;U$mAk~~R(f!u!!i%e9=?Co3oy;VCG`%|Iz;6-3< z3nPS1cP|y7Me@ek4_Askfv4v>qFC(Dj%ZC=g1(H_j5+V=a7?J{GE)}mxgL@$s3$_a zKDG6!$!|zZ4^L0Lo+WhI-I>5lZ?~*9mCQLjr)mJ%X$i(bk-k%mD9WgMRtE%Fns=zC zvCF#R@drSD*FLFnh#;v(-zEDchq75Pl^B_KV9sgsOH{9WnKpb2>3-WlGCkyjK;Z&$ zj~nEB`*Jj4O`bPfXAdzXRsuno_efA@m4d}7eox|UoZjsj z@f5&Tn1Qu=)d`aW9x}#}6e!3u#3+Pv*K6N2LVM(h9@}N!uqPWu$>t4swnyW&K~mF# zBaz~#(;;{hTd7(L4C~n~Cxc?kYcYwKLKc|A8vUgSNGjUkDda!xM*O5(Ik>h(wJ-lQ z-p)+bEADDc;9lg;P6o8L&^0t0EScH28}&MeswHA;QJ*|PgBsR6`Jh{mfW_E5%XL2J zlCaLtvMx`tfoH2RJJ#9<@7mw$lAMB+!?hEknWBRDYs#rVq??oi>}?x`1<5cjX__M_ z)st$#=)i5-jrR|E^Z$Kbv_N{trQO~+Av85_SIM>URli#O+Ktp+BPonUR`fbloHFfT zoaMyN(ega@h7;`^_lbHAxSY4E#WSptr!6|*I~5Isb--6;w`ui9>JYqjlnl@S zC{T=F+_+N3yds2h(Phl<{ruQhm=7|t)1LbRd;1Mez_A3%0^2b8U#Rh2tyn{Ar568y zFx_+6#lmXiKl40u|8}Tm`$b=hy!mXtHO~uY~A|H>L7r!d0{(^y4nd}C#?LUXX zqBgDZoAVb7;PSb3efD6RI&W-4$CdwSX|R^f`@d39_1j!!AfIKBwzKjMUz1s2V+%`Y zTGd+r&iq;E&z$(7UGj3dwBoZ|>Cfb@75h_@dOI?2E=}dBwQ5P@{qXnb<ef-oliwtOA%X!n~YDPweT_Sc} zgJ+PW=zeMIk{%nNvXe%MQBPI3-3$+7f~Ju9DU~Ytyt1ub#2gmAQ{UFyey^_W2#2D_ z{JREJ<-l9^KnB;T<^E64P8igem`(5NOLWO za+rv*xo6Kakzi&?=0VDz+y!lBqXfs2;qi)1Ao7HrBmaRFqz3~s;jTCiXf-LhORyG% zV7Q5$kPBd)NN_*8suNO2*IM*9n^r7x_4WoCMq%6dF}S*Ds0LC9M2+B)LpC1R>U@9?q?$@wD;PbajGSIR-8dIb&RzaKQYmaZ$JBPm^a{sbt{nDV26Jg zt(Fj>zFoONlIFX5$gl&H*zp;PjQGr>J_t=+STeG7=$-f(Tt)GPt6JHVIM3Iud`Xet zVAf?T)`y!}kO}RdyYaY+Pl()IIV7ZFJ`hJ14+dow3|}3e-0^_gL5%Ji)p!rC5VD8K z5`tiO;LmeFo>TLw9t+`tsPg7P{`>YY6vgHEFY<+p%;cCje;NJ~ITYv=21rCiakQ3Y zzdg{n%VGZ-ThI%`gD=Tfr`nLx_WS@Nno;CiSV8zbm*X+&lB=BO)vC`Evl+sb9-KMj9mC~w3c{R5D#qG-k1hoZ^sPZUaMd|4PCDiUw9 zDIZ1&(eV8?@^-eDNy(A0Of|;lRvp*y%kx!=*1AqojN#A8a2*C&P^=*TTr0sNawm*n z5N=*>f!7fnk0y(_vM87x=$`>7svYC%`)vvVBvyGPDbn8gs^@w?+he0jgXjDB4})KB zeqol_^x`5kGtoXpP;G%OQm~n}zM?c^w8B3REN{Zzp1uB|@Suu!l_v~VNcW?*220}k zW6K9RR|I$XqP4OlN4(C(3M$%>IjC5^1o`n2WF(so2F2EQi#dhV;goU}Ex zTa_G9t2(ovi+t6@u*CVAXoQSf4=9*22fPULi(!_nT2^(I02tY|aO6J{Vd-8K;+u2M zTmn1{vVBvAUY=$<6jbL#D2etdw#c@2Xv;!f_BfCws|im0J%q3|43Zf+dw#eGn8-A( zP$64|&^Ts18nV-ob6_5+@0>()MKUCV>ITNAWpTw z_pwo;qf?6&-9Ii5WNvv3CE3;R3WC4cY+ovQTi1y-iK zkm_CAPy9W*H=;)(tqcCIz_Y30A z?C!O;8bk+Yecs>Fw3Fk&LM=fe5TIbk#l(HdWxQo_I;PjlP3w7^2w;O5e#(_tvXJ_+UVE(s~gLVGd zLKoTUnI=9_&5~k$nn)qP9wtl$RaNRgEZWE$(?X5mE_KP9>PUHW*I@&d)9)UfvhDS- zJtM@3?gr^V8mXx4r=TUo@-CSWi{*uMdCKCTYWV79fO>KOi)Jjww<=7e%MQ* z9P2>N0I1V$I)3id)R}7r>1)4>+hS>cXlHRUW;#ncJdkU?5N$(Kn+t*%zICO71lEAc zf){*FjnYgrr<@Ho_2n7l`GZZ7@B@%PCwMvvOsa>`n#t1@(;j~a=vz&$0+B^3iUP@Z zcXIBOjy((^31C;!$#aSQtXY_uw0!L_YYv~9IgJ3ZT&Ab?|9IW^@2O>3Rp~`Lzk5B! z45s7jhT0fxysIY6AC>Z0Fm~NIBx>QGs4izBI`otyhqCfajEK+L3qQ`dYI>{jO#E&w zm~ZEAS_I1T`oGlrQlGmc1}k}rML=r#b}uP4*B-2_1=zw_K6d}sA9VmE#KZ~WplT^ZOh)~_B=Uxz1)zJa$NSN$x?e2 z@2@?mwo9yvm9lLx767qU4z%lBzFFK*;aD`(M}6YOKK zgF6-`GA(WClC*2~7zZIQ*-e+XT!@uwiTGKiXfNIcnHWehIaB*>tGM%-bW0J6w%t`_ z5QFCtSG{J>Q;AqvDY({dxAEl%@Fl zq)t{_47xJ(=_=^V4UMBoc@G3NyDRv~H>X_)H}++ds=J`pP*#@Q^pravDX5pmb4&wo zDP!H}55Jr}5-^VK0kbbWh$d-QBe)ggN z7HkCyveHYv6!?12h(EUgFeeT7L4H1Is*67L+cK!qj|Z0fE^dhynbwpARpL9%iUvJ; zC2GXA?`>G!fc73A_$cHo;@MGrB79F9VGpXkjsMf;mK|H&?aO?T;pRk&rx?WZcMwUSzDt(}915v9rVHf+HEQBnjM%85ZwP-oHt( zPN|ZO45A&y8?wvz9NWx>Cb3Sv>0d*;BD>+bi&a{7ebCx8n<4VcmVzv@yFIRZg6GN; zVl}jv9$%#iN@7cCx5i!y9v&-7L4c*mBO|$|>)qTs#Aw^{;0KO}s+=+Ae zk6-im@ZX+9&d=$z7fPT6R_8VX8I8c}mTR)Z*bF=H>)`fa6BUlSk2YOpz8_>oVdXU& zKdgh~BGjGC{okp!IP&}}R3N%44r}y)yDhg>?pecyk0F!GWkq6PKZ7?{U+wDH?DpOl zGH$ly2qHGZRHvS`$f5op368%P^^xKfAHd%HsVcB($l7Wuemi9A4*bA9{l!A(+#bt) zmD&u!+5Bz;tJNbQXmo4ORtMx}PcFok^t2rxMsM0j>7cxA&tw0lqcjd6~^=B&w%&`z@e?CNsBpt@MN^!Q{_i-ab`$&{;d^Pj;s|!5Zw!=)B5vDfOTx zt>v_tFb`Th3HG>p7syVd`6K0k?DtA`*CkWg zqbMck0&Y}5J_CkU^=WnJo*q;?<-f94F_dg559S_|6yBhKSFe^Ec2UO`GYVdBJwon zV=D4X;L}x9-MF8Nr`B2aePx^R<}8Oka#&A$M2J|f@>`a)xcAG!_f7BaBTvN=#s5w9 z<=oTA^?n2NUU5{eQ5|JoWiY)THJI3~*0YQmR50=#8rIuPMq7-Yy6HgzK*i_hO68JNAlRm2T~PsHX5=pb96i+_-SRL4lE3k+Wy5n%KK#a77q}A_|_b8@%ie8RT-BS zIOg>`r1KVP!K!s6CL;3s;+Wl;2r)pki^;tlw-(^?s+kk<-0;K=y2*7~qtpqppec}j z(YjmrG^c}V#b@`lfKP_ujhQ)K;C+1@$Fe>??dJKjwFZ>mH4zF(Kex=0rsCq* z!!GArh3vmp6P>=-9=f;g@sv|`XVH`gJdl`d16ZKu!-Q@RHiUf<479tuRynctMR-2# zkSMI;|Hw%xst*&ySu)tsjLBmxZlzvOML+sal(G}h zGgr@918tB!L>}?~`n7t^^?xCpo1Q@i$uH%ulcl+3%)|fcWVJ+NNpHqe0b#ODNtiay zt$cKr?-f#oUu~Onp7DPxIfPvm?AiOH*b;rEZ9~+x$e2<`dVs|$K~G*x2(BJk)#clg zY%TPR-R;ajg9beje_m0ucVuEW<@QwbQd(M@!c?*n+U0AwYOlgKvNMPU^*LJ{40&Mo zTo4?nRyXc-MbYb?Ncsb~pj<%OP!<~*!y_crs8u~vN?$+88vW7JH)ghnVb5YJirna= zgty56H@8=S3UawJ@vtGk&fQmCz=UrjVAG6r+hr!5)$H!qh+qf24IoM=ZIcaye3*IZ zXH){WD~pYBFGsW6-vSp>9&GAZHk)^rH2%Ewtvl;;N<%%dWV-(+b9uQ(K)dSNLN|jr zLnwl1s*fcz_*`5^7kI%W%DeyH48HN$cLx_zvi@OVS+^iH!K~+$*E|ADih%UEn#1nLpS->o99r$)*B$^VM>O( z;!rEl?AqLm;rpe>MpS^{`Vj)}P|)I}R7|DF)HxmgdLuMk87MZ#O5y}|NCY={*&c*2HVC9(gTt5-lvLT;?u+a0dR9Lj12S#^zXJ>h zfNiSRdmW^>+Tv=ESH7fo=KS4}Y^OIDAXKv2HuTvo8f-#e6mh^Dv#LmAPkw3T6y;o7 zQqfDD%Efb>^6QPRb;Pm|ZSL65PCAhDPL?GK)s}DT&Us{m-%v@C@uX*vqPjFj`zfLs z-R^x-+^UeeC;}8*lqWZiOXh1X0sNN;>DwiZo)Xz5GgHUIz{>I1q}zfh9HmcETHbq6 z@=jS_89d@RugN^IO3z_~DA(T~Ru{KPVkT#;u5f%8D6Cyz4)_@Mq5+mbym8NQNy^!Z zJfX?n(b(i-(eoI_s6pG}K$gA+?&E4p@v?>}yF?sJ99ZT(w=Ai2Ln<*Go|;Hz%zFuT z`4i%^ZXJu`UnN{A;JZalol))!tv3Cwuk2lQ%lbg8sc{IO*eeie!4Bk>k-cyqK(*NC zXF=j-ZOkxrzY+D>e4RH%>yP;$och2vEqXSfBLq2E$m4JaRNU!Gd8pa}BS;WOi{>hj zc+B3TJMv*Hd*)T608*#dRAjL2olYMP;qoqvj)=%huJnOrm!lCI~ zNQp$Mran2*3nt$jmkQ-mcGDPNj>){{Lfi+i{KM}nXu2@3@^vhJ*M2>l4&A7t zp~_Nm^9mNFc5wqN?hHIEjh31VTiGz_w1pcl#O2|0GVed^%Psp;1_MHs9kX3&(*{=#p*5XmL=g~b`MU#gt;;J`LKiD) z2+93XcBpv3#ntLF@D2GPDO1#AMU4>cGJrxZd|IS(S6M=0&>06hSNCFkAic4=5DcuiCeP#$^ewF%1 z0eq!Z`HyJMX>Ow~$FyE&!*$-|uT0OC{+kv5tDFWWQe5;emOt#Q6eRzrjlfo8zh1{` zb)n2Qz#C?7aHX}JR=&>jhA>$ejMoN1R=$==j()ye*(6ptZuIr~{JlVU6A!M8^DM?f zLb#{8-SA#UZg#=sb1p1u^i7$0y&pPM3oY(;Tj@aHp@Y8+VdpQ$5XxuASy04%m+9ug zb~}MRGn|P=oYA5isxHHTzih6IBvBRlxtuyTjrTZ{vWLdfb5R?QPHimlj zCnO3mp$Rpj{dMBPGTj=|gi)cwen=DM>*5fwP<^{u30_#b+>ZTSsv+$9QsVWiZ7WdB;C z1_j|M4IqK7dVUdJ|XKjwT5uWRrR$NMn z=>r2L)2jzd)H8tLBza(%3BeuR^0?p(J@V%zK$lcH=*|{g`|2f`$|Vy5x!m>xHWV;Z z9a&?D%cD#C&_p*wy$cOO3HR*Qol3E{Z6X^mK)ni< z>(!$ao6woXdrR|HISRMHJ~LTv#0P}JZ$w~UiuYrAY0_=EYB2jts@~T0->#libfc@{ zM2Ta}NBIPf@u|ez(SS6~S1Gkx86aN@(w*q4Br&1}wkVf=Y}G3NJlcc=N$KJ*4*PWU zAl1W=CS+M#oe^yeM@b`Kw^6XEo7z`A!^0f#pC9}r<@0N{2DC^*E&0&vceSFh9 zaU#Ml0THAiRz4Iu{}DtRpIT-IO#QE!5+CCJmK%;$CyOUUeoufn9rbDEsYc(Eo8N|M zvn1ha3Ajqp6!OQDZTiW@ovU5zs+CLM%b+9m5{%7Dq*o{DBB(yDdaQE-#+6{6GISYv zt5ldKebg(y-w!iBFNt^Qh+ql2Ld_d0z!MC3`} z^Vy>~v0V%kXN-@pwl6`tKRPa)rPl66n-xRQz(?{Rmq{JJ>aP;F3Eb~mK_7nasRv0W zyNL^NAU|=3yn!zzpEbj4dmJpV>ou|m#0;iRkt6$nPZ7u&z87^{D@TaAmEY&tN+WYz zZiu!=Iq4dCM_X$ZYYCv>W9abSOYMrsCGW2)q9&R9D|qXC;iwwz1W5l zsw`s9-5=jslUXOB?JnJK>&v`}GvAKIYx%&4mklntL6bK}mK1Kz=rXF`VCkO18FC`x zQ~F-Kz?KYHkT%P@C-uy`o3m;L+t0ZnpKEnAygTe_)kZryBXka(E8{o-5Wgv@;$*NTh1iMPw)xaoJ3nQ(OQ==~mY zcZZ{gU&NNwQ8Woy*&s{-#Pa>g_OLfM?Zw3aVNrIw#2FuIc|l}ALc5zTqL=5u3ta|T zo2-PNJC%3;zLSCoEFc*k-1y%bS2If57h!A;lp`A{a8Cw?UvyRWNN$5`@o|whnhGNI zsG~^NdD99YN1n56!~T9D$hrE=C5-Bg!g1FGR^=^p%<=AGx|vqdjs=rCRv+uhxByle zBIF*c?v)*OoxXzErSEIWUJ7Uk-aF>CTsF|Z9zv)ky1}Id$aVkfZa$+7J}z9(rm|k$ zdjZ;j+6igF87xkH`m=%o6NVPnc?K)j1P#qlxL}yY8VI6*D7p1GEwmRiFah6rSKNz8 zHV>C@w)S*``GG~@W!-H&0W1z7mL9*vb3_&1-j5W-j#v=DaLMFx268~r;*a)gJ&@<# zxo6%9hjbxLd`H~K9AkdNHh7zzD;?-SkoWd1uAF=IRN;CDf&Rmpy$=l^Vk)m(LqIYT z^vkI%$boZVAaTwd(!v(TKSg|XP_EKwfnmD;k`8K--kwML#YUkOKDysC2i*lOgSfd+I!HRtpb+gl6d4AO38Y-_P=lJ{ygxA z_cwBOBX>JZK4gqVq{KPUMFB&hl_C z*NqJBe2eMJNUrBPd|M%#d7JYX#{i>-;pBQJJ>xqO=?Gcg%<9#J6-wd?Dy`4=dD3wVgvb93WkmmB9EN93UHe97Olf zWyG51`i(A7G$+x!5UKM89?u@VXS;>Cm-Uh)D}@=L3^tpTbkNbfFfM6J~QH+?K5 z9~|!`(0iOjZ#qmNFt^b?nA(10Q@C;NRmMk5lIAowa4L$UC028JterahJW>bOCd_N; zHA>{bS*JjwJ9HLxk!hwA&;M%jCZJ$eRS648u8iO$ifxQ=)(12|OMkizx4CGlADc8E zJ&a{jWg^(WQhmw}B}1;oJY+2e%*ZYIRcnLof5s$(`KYM+q3BNcs6P-2dIlP7`1DpE zN4z}cS^jMNmTF%>6e+q#+(rXSgkpdRRV^Fc?j#Lt09P~guO6baX9XA2teNdwLbe9{ z!|e!tA83{1VKPFS;zv>Tp2ePx~qy6A*Tqk~|>Lw$i>!#PnM;$rBhAha}e zY9R!CCZ`~u5Ym5K546J7m|~ZrWr0h+0ank@-Gt`a8Zx&TnPs!;o}8;c?%+WUYSm-);&EBs`&|S7 z>Z@g7vDXk^pz8d)5WP)y?BazrFhHXwS11ur(^@AZy+4ZWnd zd4DwM0_3>5BZn7JY>3xi3WR3-0~KiVzY+badZK{(deP+0V-5jXedu3vJik|| z^%7UM3jPe!$X`HE=3uQ={neTJ=y~_+W=Co9dGaiBSwP~1mYjb zua%|?dDTfswcFZT^f`vLHG0zZb-<*7B^4UUwZ0b0SdLp=C6(tTi31t6&mYVLrFb8z;? zNyki4;NgmQ>5-SRjZU}>5#zt@`1*zdb7vjmb>FXamEq+nb$h7k=G2!NQQx^GD_(ZM zs1!Qh6Q|QZ`wnX^WNKT}!}H6OniRy%@mVJ;K<`E@mgG1m7{5R&h*VzZe>z8JpN=Cx z^y~v$P;x{j|3JUK+R)bAZWfRf1cR3+Gn}gCD^XKSt^?)at$mK8{_oDqIwyhdXo#y9luu1(=^Z6j?WOE?}I zbl9E1gD)?hy*B9^<0i_4@hoh2qEqB=rgC3G1_Lk^1?x>rb-7~s`6Wiv8TfJI(JO(G z;aGf7MHj?K>-T>r-jcpXb?6(5M{NonkS~hfa22lW6AN)UH9DxQQm|i|Bop@Re#u!M9TZ>-U}aEXI%yRBTRoD3af>`SbLElW z?6*u+iNrne$(KOK35%k-xFlqPx-khu&3o?IYvW8+zti6r;K!!*ujx05RBsk$y2cw@ z=VQ5%6PSDD>74^Ab~OXl=-Z%cS0vS^1`xRj-nm#&xRzsU6qTA;ltG%(Q+4}XiMW&g zF1L}3x?s?gmFwgQzoApAzjHF$ogT^!%whRBkIyc_+pFGqukPA$JcclL`I#m8U-RM^ zLHL+zJ(B6olqoVFa9j{I&{$FFMEJA+1-v^oc~A!5x^Dq;g1Gt%7c-_s?>q{q0y2+i z_aV_OrJ|DO@lZPldwWhQjT0a^CtO<;ci3uw0sSE(ZScb7yjOgiPgtjb+ladBq;^1B zqMZ9Z*tvS3&RO3OSPdw!La4viajfIXu}S-}4D2uaKK2t0B$jS&d|ldYDU_v~kocOg z*;@LRBFPp?4@wi#Tqho0I)XXpl&V^lx>AfXm;Y!U+=xvX@nTj95&joYnMww0!aFGek=CsX z;9@i89it#iJmGh2xbZV+`$&im8s436!;2MLE*3kR$WDnjDkktcS`_ocOBnV+@56TKa zhQ>5wj0^;>vlE9Vch-b~!zr5PR`wxulNTn*kobm$=Kd>B>T*HeUE$2+fV!R7*8fU? z-E*vL_fAgh+W+xw?)PPE^PrOlr#MNZigmNYNh zflLM^E^i@l>c-V&QD{4W*+zQb21{^XOO;jHyXj={(e5*%&&Fa((MHSe6%IyI|dkORjdvu>Vored9WUrybu4=3VX z4^)dKZHnC)>bzMDLc4(O6n&UqVRbjYR@m5R=Pp=ZSNxX^n@`{5QOo1J8E9jK%x!CR z8X6Mbn?6_cbR4uEg%=F5UWMF;) z7IQ*4hb8~RQ}{{&99iE=Umn@4d5AabI) zD}o{*?_+edY(1z)ScU?Kre(;xa`C3TP6w26LU4*lKj-Ett}ylM`sF#y>-1346rbDC zCL)N<%`psR`~)t`46q;hA6_r_4NlstHbfa#;T3RY5cBhSI>Sxq4~A6j5p`NyH7(Mn zBtV7CIbt^f8hRO4rAy>!R!^jqUgC}vv$AES-7i$X~zMvxS0>r7~3e`%n=i% zPkxnO%IIC=bC$ip{%?h@1Z=G+w|@~*k=_O(dn=UZ<+iH2p?i@n$fx#F*JTVX=lv8P zC#xb(z-O2W@|H-RY@qQlrUB@OjRXk2tB+{mu)lM9y*SNup!bNFqcse661pL%w2#IG zDm?%3!D_!p34Vj339uZs3%;5O3K>Xx|J|Gik=eS%CDL(U$#l0wi#{C-B1SQJG@oR2 z5i|~57zt%kSpE?izh6%p<_>A{v3~%Z$`{C*AfE?t+IBrzl z-hC6$tGXYNK=NBQAbe?$4MP8B3&_WZd^!p)VeeA+8JaZ0KTPi%-1*+_Q{P&$Yj8P4 zPw00Eg+lpRiTn{{JJ3U2v0gk_-&$kKO4$tNByGkt#PpqAWHp@p5c&Ng`xk$MoCQjJ zOe2>X;nv&Avy(O4c#c4gl&s>qAQ5I zB>v*E$W_tm)(p=8r@n$D>V$-|)~JF7%XNUnS;BeQZOJyI8ytXoYql+fO<36 z&T8|0ek&DW{Lgy)zt9qI4&5@cnfjY2WjFYaK;0$>x=Hvm8yMB$?piI@A(yp9B4v** zZTZnjtu#Qh(=@pB*_jUec)0u5_)#l}5^Z1ucNB}UPUj}a4F|U?=ck=QFcwjX$f!Xa z0=UQV5fukxS&HUO0=;>k(mTDX*?ygUe+h5(XPcaGC*e@aVw#8xypplX!!$YMcT~w3 zgy+c+v)39DG;T*?c_u-*79J*`g<*d0F85M8EP}ec9W-a2dX^Dzr|ZxYCo2;f|Fhw> zN_}DMfr6Umx3xximl(Adg!QcIy^|w`IUw_RrFbmUAJW=a8jid0v+;`xs0XkgfBr`6dj(l=q_!Lt8-(L5 zE`-Qm*c)Fsn7f9)Kn90hhJb=QzFcU#KvP7rj&`7i(7@)??2KGqFZ?zT7PU{4 zd-*_?=LiYpao3t4L@yu=7LED6I;71X*rFz?@**#5}jLmi2B<%yxbg1bJ)1`5|qp~t@u8()o;qF`)g69*MZ z;f=aj&YZsW2tY9?wfYsX30B6J zasTO2L}c`&HxIr}>ALy8^jE3y&!!K-fi%0)D9SBJN4I{UV4$qT7z>-P1yve!W87wY zg0_fb15QU{4l6A@C|v}(br%hSu-{b2h+#aqYoCRGK@9Gn`v-A($C(qofb~7y6>5S= zrw%~p4$$d^NAXOlwV$^j<{r#`33#1$FnHmP&RMiuW~JFg({&ncnd#IU8s2qfTHe~B zl7makwt+$F-VR=G?D%K${bm_iyH||=Tud-@Om$b}yTsnKY1;cmN8}4W5JHAM)%Kj= zzGptN&Ha1Cc|Ls*OQCwYvSIV(BhOVR=$q~A2tbMT0^q!U*)KzP3QXLZCAn1);4=zk zXiJk%QbimZQ&!t)X_x&IQ1J#H{{_YPfarW$f}iUsq=&?HI0CTF*@x(w%BehO+>yt` zQx4MHjZ?zfV2^EqMYq{2!JM@KHF_13K!%-}$U`xr=oH9uKR6tTj#@{RF}G!EKj0~_ zbthJkp!6=zR0>OkFG0MON4&QXGq=9n!Kn%H z7iyIkz0U4#lHjuh%>u^bTdm%MWW=>z%0Ep zF1pLUw^Uv4LSTaQ5(FA)rhc3_RJ0TRG6$QcpYz8IGWvd1urr|m6!$>k~7`GGyL?&z7nZ!5GkO&PJyj~e`h+EilAPFM#{ zgwilCc98pO6!K$W(YXO?;oLjKg@_p2FzxmMCNwgzyZ~N|%8Q@Ag2t*i3q($2i|OJc z0t^+seC z#5p5%Wn`$=$%t!MR2Jd?lrIGh$lUq_620sHY@hNamY7+)|4Vmw3{^lkPbxTP)hkOi z?o?59lT$xzQ>YEyyKr=@@w^T!Hmw@BE=p`GDVt$~GSAPfprZP3hWgwLvld|wXIWKZ z2|Su2^=UG~qD>t1KRV`amg*&NlGH+o3B(;S#&Bz-q2~N5EV)EZ;TAplx>|JlXFsZS z9>8(emszW(+Izc3j|umxa|@t$048Xddv&XV0B2CpCG8pj1mW8Vso(_&v*xNQ8@iJ4vjDw z(zlMvml4 zzHdcf@B(9VLs(@{8R*(teEG9s{P>0&{L#9uRJsx{{5(kjq8kFbBZq{65~*1QG|yRv z3kqLZj?tfM7+P;U(2q^Ho-r``yRL)ml?ZX5jhr%qbZQ18cVcvkaqqyw>b0~t*nU9p zi1N~^BL3;VPp>ScRy<0n6PD=^Tm)rn)_#Sf{3dQzDT8+yXk}pa@&WYf_X5Buaac-_ z=dgQr6VR%kHfHL&YxY&W_Jv#BDy@m_>hhCws>#*=dG1K$21kop-;#AAO7;(*56F+) z;`i7rV(RK(I{TM@P9i?e{+W*NXD?4H{4zS`QC)t98a+@6hikmN!wCUogg$;k@teym z;(YGl0hh!5vwi#xJx09m0};Um{gT%A z0paDv8|Nqhc(o$EUpcRk_|ZGM>N)39sn9*)Bv9aV(K{V!3seMf-^JmISvbVtm{?9) zma3zkvk>hilYp^&2Pp49Vxf$BG$L`=Zixq%q#`E@{zvIs_?_&dPOIbtZ}CLK2LSSk z2J`!+snLD6cQwE=UBhPmSPsSlb>+Puh9dL>bbOjjQbwb zCP}yBF`Yh8zT+px;r(iBAXUd_FrpDm2#d`t6)6aUEuI3v06)kVDH&$}ycrb7c8VR{ z^UMSycrd#Ba%*~^+E}IPG0nwE%voXk)1$wA5WHF1Zt%iwtRp!;rh|o05B}wc@RiYI zTzm`Ib#Ypiour`btL8uT`1$zqs}`T=JOo~`TDY?~EOla`T_^qm2Gq91W(R2d?hygV zu=VDueaqBgM?&yw7@Y7ZQy@GXiV_#2IX!0CfmIAGD8-0JQ#5T*`yd6v{YpnLa(i5{ zw0Q+iMP*&5*mIN7(w8HX8$nXwF_@J^+DQF5k8Ou6aifcrRzf(mz)NR3Rm?_3MqYsvX0HLm;gGv(iRuN!;zsotuwG^ zefw%S&eB5C2gNB%#O;IlDXd+vvUD zVg*-_2KAwql1k4V{mEfpEM(Z(?E-xm=6HZji)i|NFmaV2l23MydUmHI-P_?1V{W6A z`xp;3C5t+TOiR0qwVu3{h2X3*IRL$U+nyoFiFJ}rR8O-Y7tDE8D^XN5IIh6F&X!#m zIJZUwWqmgo*-c%iWMk9s3Z>#&i;yc3VU}AXZMD~ppT*DyZ=EZMwG2V&rA@$ofJ}p_RYi@(}rd5 z9x_#*$r%kHoZ`L?;jAm9>ks3zlNWH}!fHEJ5PEdx&+BCI3A7v)8IOe1ZPAUwT~3L5 z)`X6EUF$&DbR38T?S{#bIdM9JT(pDA^7|RzDD$^hG28;ZWD|j@Iw|y!SOIxKxb~_ZvmXsc~#Fm%Tr+ zsK=*Mlj{iW_=cpvD3MK^d%mKP`VeEkw&Tbcyixe_&B?}AD!o9A;}Yn>QBi27SM9r# zx)M-d_+nkh@=9jBIBoUhlQ<#yw+NlNY`$`Z6aFouZc*F=bT=bAe7fEx1+-yPMNvYKWMs1rT6A@`y|Fs!cDmW2Y+Msx zCusS@z*&Ns3N@DE7LwXo$2Rf4ztI5BFWC*sjbHsjn+uAg&0-?NMrW!U6dlfg4-?ki zoGzXy=2Fa!hLKuP{LBh1!NJcm#srInI}i`Z4!}l&7T3?46Q|SzD|0;qX2;_>xrel}(=uILh807mB@_HvYRqnVt!zi?qv6mX1RovURKr=CPvRQ9R|{)a-&5#}aJiOIz82 z)oG9~@x~Kir%;xhw&R=vtJ9t)+^M}dvJPEgxVM{$tUl!lgKBrB4VCkbtyyFLU{#Ab)x}t-zy@wx}lHVq(F+KTYf~>Vk3%lFtqf zpV?k4i_gCj{!>ZGsx+~&5i{UbqN0MzVg|_?Ag)ceuO=Ij+`g0iI$~G5_!*79ud&97 z2&T~$Wu!NMEcb%@H2bH_fO1gedcB3as^DsZ9Q)AI@CO2K4Zp~2+q|v=BpKvF8y@Db z|820xXEQDDamZpyX6b*8n++^ z%}P+vBQ@x&0V2=gk#^?gIrQ%yRo>)!PIQzBtjEKud& z3I&sj=0t~%0PvZ$pmBN7b?w2!BgZ{`chcsCwDsEvh_O9NrjXAvIzo7{&Ap?7iXIOB zg#}EbOv%YxfHEWa+$gs*9zEB7=_l6Ben%}Cqr2z1F7A?y;u5}C@;CvG-pL&8duW%6 za>53C@m}l@bF2JOe`<5-&m=!u@^)h4d|4k&rV|-_{;Slu?vLw+33}?H5!wMjLPoL& za_bu$nj-)%1cwQ{%H)3YG2rD7lM|c9e7Z^PUw1>0iC=fW3-`10vWb4^iUHZgPj}JF+y#)~CB8`cBiK}@YcucUE)E;=jc_iE>O-~NuUDgT@b=C%eJ7YoW>G48cf>xXV zvB-mU!E~2$E}&T?ZYeqBz}Vu=8yz$rgAr@80}e>NF1w)nl7)wBOp8MP;QT^s8|35m zYHO3*uw{i~psC#Wg=tiXAKL2q97^z|=r=e=!K$1BEJKCJ$e0lycN`!RKcRcP2 zi-{CiIbH$&PHhpt0GaCR||GL@jck0IkZM8yE84b$ht@2}WEhIKUB23nU3 z#lO0!S1uf}E6>lkMfr46(%fZphZ(Cs^hU@%(wBlj7^eI1_0K#20O))Yj!NXR3bMJc zsLjDww!LBO3e4~hgp3@4HS1f9?VVJRad5yea{!1Q?%u&-9~oTNe$?=*z&H_qqXR%% zx;T+7OLZw!u}#;dYw`ZgyksEr{*jJk`2}f<1c_|HbkEu_Cd6eFmvh|bbL7~}zsXIEX})HEkaT_F zb7`A=Xz9FQ45-)U+cyg4Zq}$>AVmj#%+va(6IJV0#L?C`O|fok<<5!<)t@N57}Q5` zi_D6hw#($@CC{Ks(V-}kC4sq*Lh1bZPkk%|Sy_%J`Osp+2F$%rtOvSm!-0Kuu$teR zZC-Ml6!$)@Sxf$I4m|AH3BIT>W#zzQ%OfPopKLRf^=!jhJdBb0&;O{F;!donfYQ&n z)x}Wj+CotlB&G=bnC;cGT{jQzCdCuQ_g6*c&Y|DOfBo#>_logW4hJzP!`cQo+c874 zki}R>*MVJnYwfd!XH?j!DXX=N;MRF!zplQ!hmM(bBA8}>lvThER0C8zyaXMP{JdAK zfux~gQC4>qnh<+WZmOoEOCn*m>c3pfy2C`KI99a*gAB2TnI#0+g2;xTo~QaY!fGS& zZ1z+c5)qB}2^Y8_SNqf|>IEiJ?6!f4$p-xKx4x^go;0xZcj#RAdSkXRUdSpPeXl<(3Kl}vwAmvYt{qPN zSgW>Td*p$li2pePc@`yha)+OgLJ;=+!RnhIdjFz#gBAvsN+FgQ@Y1B|w=)-uLvZ#R zFMiz|)svJ6GJ<^mLRcq-&$P{em+8Ryi(#O1cGIt&5t$wG_pmt3kD9nR*5s97Z*s8c z(1!YXA(3+M2zexBtM@$Cj?&;f`V*qygcw_zUr~meRDL0f>>;gQ7)5G2i9L=r2p|D{ zvtuplnDnv{+UK>^)jO#{M^6Idxtp~`9JUJyXkpz1R85eBv@`cry|KnLIu*S@xA0=x z&bj!#dfccO^%YsF5wbuy((!rf)UA(p2?jbIri5<Dd{&LCkugF|Q6v!tMCQbEQI^!QqiiE9j~0NQ&Wm*ew-xTrF3o@xi*=YXJ9u zybMDXC^N;FgQjVJI}K6gW_QwFeE$Wy6uOaBEpibT!1qGeXXV<3y>FhTvsh_jkj!8~ zCFElrZaY+xc3d8Mlj!QYNBV}%0HLWsyHsJ#J5ISWz}H0~LavQ{zyL;2>3!r^?WSfp ziAK@sryP~zr0|Hrv>NxE{k0woKj&^MQ|M8oti!O>~<+d6uO-cG|5V} z>u8@{j{C$j#TFo79#K3QvPoQ=8{jTFXLAq^EGTq}lS+ha z5xe*ovEv9Tq3j#r4eaVOt+YeqnW4TW(&;~)9-;^!kksJxtUHK|siHYcSk@gfuTVJw z@|&37e&jMC*EG&PWZ95%T&y^+`7%{Vr}D<8CwQIq3Kp+H&MSblc01bBl+XG_v*UY~o3Y?CdZQ#rF#Yw6hfQ`{(DrKuM{l<)8SxiU;Em*J|7xEb)q z8Ql>iMC2q`fKzLMtfC^%#iIJzm?$k8&-zcK>PDz|BS39MgvbkSQ+8;LBFQ?|y~$s0 z=zi+n1-{4f;?60D;7an#nA_71DDL(>I>*V0Uhd?6P7Ca${|%+k+WQI%K_?g)`JGuD ztjoA$&pn$nvgEpXe7#jbuG`#NySB%&rqo6?x-t$I4evz7;&C~s{?z~Of54Z4R<2db z2C>MF@dp+BqCbneR=^2ElF$H~*}a5hk$6Gbk@~l9ME~Vz8{{05G`^BQf%m>6FL=}z z{z)FyG+K*e(%_WPv21oOs~4TOq`;{hT?hD-Hb?pbKlWwsW#fpF>YoIkkR*{TI}SfG zz6;3XLn@m>M!#_Qt*4WYQ!YG=DgGaoG!ALv_`Z3KktiV(cJ>7Jz8_Y`*`TQv*4|`v z5HaECXCCP;DGX|!+wy~k{PRsm5iPK?B5$5^( zwU6etPo~okhPUkY%)!vIOhB8egRDgFZ8=F{Rwi#8xf1(T-<8p!bFJk*ltF1wd<(&5 zi4N~xNmR-HR9h%d{^N<*G|l4Gk06kB5<(qF?gu?@BoyW5{1Ht9gaqMPm&+m+2c2;2u#j zI;?%RDYv0!1g>x{rI+c4G>dMtW0~#^aW)S;S9tX5z!KsJ)DE4pt}2k(D0rVOi>;Fk3vqVD868K0#W;)yHWkL3l$Jo+DSdk{ zbfSs35=k*@U8w1p0D~Z~Ngb|!Wn0ONqkYU9af^XhPCBe}p`gWh+wmpl*G=yKX7a`Q zz9yk-UOymjSi6^PVR)X%+@FzLJ@UBlge zfhm0c9AB#E)79A1{bt!C?zXtUvwrbZ>R`0tMNccNSd{@Q{1KghvnwW6IObcXD!Jhlji#m;foc7t#@8{G}!35CHPugVB{?7v$c_VH#`ZXjkeBers_d zC6Dg%LD9Cjr(NyxonN7lB5}$M3gNTG(p$_$Qe0oaugNIhn*LOTH|L3BSjXaf;tK!< z0GxIwDlP8CF6iI`h?;l69S&~ox-S!S4y|kJYH&`h9Vpk5^zUb9*aNI*M$wiCA@0rd zOy)#VkkO}*_{plSN2SbB24#6909fcA6*rMx@UK({Zc9#3;a!gd$3|F5nrJ~gv14%@ zF@-FPR#Gen{vB6BVL|nMxb((?;+w@LDhr=aoE7Q#>y8j38M{yPKN z^rJ1ZSHo-hLMF0{W4y^e1e}1=!_}A#P5{2TKD#EVB@L=*OE*hS=d)H@!W$&}$mI*0 zHufuSRD|*-XfOfQwSP`VEFjq(qTpkCn5ki#f!O+y&_&YuAaWbqW74Lf+ZB%Bjg5wp z(8;G)L$;s|J_P&@z)KQ0lS{Af>I7#H5BA^%vj8kSzfmybP3b0lZC89`+BfOtH@b4u zstAotu?KU-c2hgm+~#g8M-e-n+M^5}Ha*hv8(vUC_y@om#6Py%TVS`D5DFJ7uw7=- zqDc2N`-YKhzhGyn*Rn77pIu0ulJb?5WzFk}DuuR-Bc*2%C7^7hwyaC!Qs{+zmN|RlInI9>dZH;6Q1~?jSAtr?4ZjAmE1^Q=NfDZjxNcDMkO=Dt+ z)%|iW&YQYnGkgp6CVNM9FccT_S3-HhIB6lN=bIP-YMfu9i@ZNl%tc3bk;FOjf8T&T z-MXK1D;d!{<97Jq!B@S=Y+iX!iw_f;(jr} z|4y{r0Y$K{*CF%WV5Od3x(BKaZeB<1Ktb5t%j&z*q3%=4um{b7cs5i~u}k}^AERUB zrUNu$Rz#R=D1j!Kem%Rq0(C2^MqM7@;mvdz~Pd`Tjg@47&WwF_7_g{HiL5Ko__tA0p^0sj>E;SS>{0`nmSXFKJ0NB>gIBvX0%W7Bns(z8beTreK8GG?1pTfd8P}x)$!RnIRA| zP}S^?5f~#K1$7>3$ZWf!`6=pD{||%Ug=Nk&j@}HFf2wjtpAeupc}CXZb1k{##>g-jB;i7_l+11tOBLP-3<*a(65-f_pXtYzMAhH*KDXgaV!6^%MGrt9Mnly zYq+M&?o)}mUNDCn9GbN+r&t!1$$N`W36tm))Q^WK+TpVQ=kkl$Y%4QdC7GPWwynRo zT6)7-zPc4Z*b&Ml4>z=VY(q)idZDd@L%g0jHhpL`fVuui$i-FOu+v&v2YVeMrY2h) zM^wi5z?aJzdD`rWrN8i-b$T}JgEXQpRSHX`T}nzk;WbEEVMFfi`vJS_nwjUZziDd$ z6PP;C@6J}EQ832QXbAss#><*86h>-gC9Ez3o(l)g;fAD*tad{TbaiW zNsW@;I4zMjLp*jx!6BrDn$l~=c?zRBcsNYZ`8?K1_8lLI5N_-gKEgI)(CJWwL`Jyg zj_XoqP;&04FWvAN22=FAKoa$P_y1NnV+6k)Ozkany9p{LSiJXQvgvTl&s~F zo(Fon&9rTRQH1041xt$9C&S1C*@b=vc^2vYGltF7sud}>tHW`oeY6u-q5RZsn%z3n zzng@H0xPQ4F!tXj_ruEQonagh4Hv>o?NPJu8(6Wom=dKdEKdxd_Y%J83M-MN=1{8h zp>J<3VnXwHQd?L-|A)i4s{Pa5DtH3Oh_oGC(qm2oEIgvfBOCK})2;9ty)RrCCXfn=s*R7ZMPK((%lgCDraQv<^8T5ltnv4fny}_16$anW%OQ zn9m*x>(i)w=PobdZMSCKaH@oR?Rl*B7*c|SbSO;&e%HE?lDCQ$%S*^5ie&Ip?nS%k0UYh^C`axND?2vOgn@#zo7tOmby z+mq>nQ4HJCqXmkJQV(ZgA4AYB^Qo2!B5mz)Hlx{E%}Me5N?j4V9EG)1m5~PxnGREM zmmUcF%NECd@r?P>%!}`d6Hom4sP!6-1B4pCYUhTHq)RHO<`$Hrnb-ZSRl{u>S?_45 z-J7d)8*Uuan!Ak9&N}6(kmID>$EhLOI!4cis?%Icjx)<^HsgI`3yK462-{ zr_pj9v)K(vbo!QF5i4@1OJJw{COyD^2U3$q2xa)6q)CJb7*)25geP)>f&{}dGJsyR ztOCB^5Q9)u^=<(~-Bzkqy@Q;;zn4yHSd7OdP!sv6$0u;#y30%`ne_@v2644lE2*0L zw9cUkciKALNDU}y4q*o9z9dJjy@YC54y4>QcgFgZMZ|{ore|Kq$R@@nK-#N3b$(@x zppl9?9YgF%W)=xVT|$;5Gffq~%f~63r$wpBa9GjypKkSL|=Ff&qs1&hI+pMbt<>l{w_>fP+ zQ)MIYV~L1@1u=KjC@da`(+4no)IY|JpbAUf-HZ|vbICm2GwJ|~Nx9C*rb2)qWH*x8 zCp;zA0e%YciJi-nWbJ@+>gJO{0!h>>R!o*@oj{4r^&!hI%_~DvAty@yG8`!`^OC}i zc2r$EC3*Nhml{QybrDa8cKARd+r}_k5b;B45v%W&*%^_06g_M;DQr?e?+ zL^=gEN%RKV$H*Fz>j7sf(r!MT-BKwKdlF37jec3)+W!D+7<+EU$n6PxL(g}|PA7AI zoU9hR`q=6-G$rc#?Gi9Mz|a8DrP%95Bo`1@yK#+I^JI9+l!k~g?s6?)0Vko@DWmZE zzK{ZoMoNqeg~OBOaIZ|nbX)qUz==kb63ci#Ro6OrBPFJ=iaK-iX*{KHsdv{KenQ@k z7CjI-@6@0=4bM=y>Z{Dv*`@ahhDG)y7(u1ikJ~RcSJ-tLr|YPmDgZq|!oMMOULo>V~4JOxquxVzm3^tpgP^w0@})*wy;uGP=Eh#w)0OWub6by4xJx6 zMdO#D>m7--1rTa@To@d24gCOMXy-*^r|O3(i%vQ_NS%tIny-Dkq0+W#qA30mmc2T{ znlk!=-awdZyrTVZNIzSgW1V^QO<(BWQbDDKjSPZGuVj~SaGT>jsGIGL&xyZs#e|eo z=MFHXEnoNfD5}l=u60j*ux5nD77JZVOH|^#%W2A<(z~z*b$N~fj(34P5EToE^@4@0 zBb&+q(q%EB7^-&;ytR!NpDzD5%OT6b5KT%I4f=H)Q_TiNCWx6{F42za`d{AKk$&9j zZ;(V%{Kfb3JV(~TJUkjC6gHxg!h_a_Vh+hj`W#Dgr; zZBa>^LMJ}KobQ#$)w-jSwAMXsP~Z{-qh86$h$;gSQdvMs9*`B6l>Iawd(>CoD}`I4 zaZcr{uW*~l8r=ioC`#PWxQxS8))7%QXq)>Z3NdDI~Uw8rm}8}Nf76BlkFHee}3_FFPL%tF}Q zA#=Fi*Gy*!#&hMr-^$izCY*k-;2FKI?28k4quFJNX@^iUw(G}{<=w*Q0B}R}Id(T=?7e?)lC&cfd=ilg(Sr^)3kPI2 z_ngP{&L(=nAar%Vo^bhW?rXkY4r8&c^unFEoKQXIx{J)VojxyCfGHFAV3LCSOxUJT z{L_oaH(*>S&6d#%RtcvIE!vv1S;UNe?(rvFt3{vL=h?(5N3dR=I0$u)hNTO34^IhI zuW)A~xs-=h0IObe&^XWD(ut36Fc3qmAo1;5i0V?5M4tn!{NF$rZciYfs02ANzSC7N z)z@S&v5?yON1O%FE@is1ajA|$(JVBvnxYb?NcPDBo`8!Qu-e+imeP9QJsX~0I0tw8 zX`_CIZe%NBfl0zI-1EnfD_&HyghjwJ%vH7YPTm~89 z#kpg>p^Cz3#@ekj!#`|q0{y8b>9e~e(-BPwDaP4w++p$S6r;^IK$os8+0ic>J3HZ( zkh52?fd}!Usy!z~M-f>;YD6$oFt7Ta>%`CGD|)N02VTNhBFn#!H&lb*Kx*-2-QFJW z)sNXXvp@pfXj&~@hj9z9VcC{QWj7}*FVjbiCJEBSomRxJwvI6%CU(}{zeah8m-CDl$ zMswOE!wM3?<4XoF5VjJJmK{Wm?5XmjOo-!;TN2u+Kh zRq(auMz4wC`~#t-rNvXW;70PcW|1{vRW)5{y2&6{u`1Y%#qz}4`YbRnAqF|(T8o+B zffa8N>fd_Z2R|N+kaB@vwVyN@(^nAAc$WFt0qrY#2IiDreQ{oisv_0Y-A#%hkbbw@ zElby!QT;sLwS+A#izzbkDqnSDvEfxYZm3vAoaUGOaer%8hY)xz^i3a<86T>2ast2t zDq5hR4E?PZl>_R)W7|aT{Nk`)JV&Z0O*rY-EtO?-e+1|e=vbZXq(g}BbKc3 zi3Cb}0G?5{X_9 ziw`b4U^&uq&0WLhT&UUIxndEdtRRmF9Za~>l}OIJUGGJOtEdXy3bvUQs*C7^SsdV! z=O^V#DsS>cOQ~9)(OZ>|(MZPmZ1d}Y@!6~&VJ`deqaK7^DbL`SWE1T570&DaDF+|- zUh}Oe&DS603ed>a^m+lYWRBIUgdE>CNFF`RV$0?NaDIv)3moji-*pn1x>q|MA^3*k6P(01ToA{*JYjiY zgAI?nV9AhK3kTc}qiWgV{(5|0W<* z-DXTC+JdDv+?;^ThU|F4SWOSsZ|W}he|q9IBe(ko)V)rBRAY2%^ynRal`3$}H`JC) zgjJ0BiyyQmSPq~b=zrZ3mpD)y zp3tsV34vv#x5x0qDBm>sS4STi)Tcp)@`rxt9II}ILwJIVJRw5w&_`~hC2`FRiDk+; zrKTA&BKF!1l_~EKc`&DT!P%0%3I^e6NDUQ5eQlPI{*64sb z4H)x-i@i&8ozynLKTk-2(y}X?0*OdSJj!c{3ns-UMSaN%*<=k=kz1Ol>D(%k@dm=&}6Pv#99YZf ziU2-oI^96yT^$Su7j^;Y%M}35QbwSr~7^Fs9@Z>0Bh_$D%Icl(j*3!A|` z)x*UAo@eT6q=TZPY0A&WB)q|t<`4Wy0L1H}ltI~;O zGQqZ<|9V5IRfUBZ%7_2ZFsyt*(tnXfErOI`i8^~Q8D35RJkHia#)+q?Hxo_&^Zhgd ztc2K{Yip!!h+4_Z>7qM)&Osj^f7FWlG7gg+<)XGXo7b+rScK8Q1?#rfopNuh<|dm?K20c(q#!6Z&^2jlG7u}| z|3-pm+>6KE!Ba6El14E6sUJ8tafhh~K+8FF21TEmOYm=u(VR~I$8-Cxmw|z+-_8;< z3uJETGRI3}f}hF1`$E<7vD@r{)$thTQcnOpxEu}D>ocnhV7$b;*7XbQ_{F^e_^oZA zyU3*|7YwUR1uX=;^j$S!uU_0uZhBc?32Hm|%np_cKWf*wGJXn*hayQHWc~Ih6n4my927`$3eCjDX@vG^QDBsQN!o*Yq ze!dMIv^OBK>62|9l8y3)NNr4j0X`DI{3CtfKqPw`+!OpY>b4Pq`kT{+3ag*PGJ=VC zAiF+lzT+EzFhW{J+vhg+p>qc^&sV&cgELIWUCxM9FB4EDNzlJ9q62022gu^FhdLAs z>W+;{UAp9g_dN(@8gBl4yY~^cw~ZUjLi51%Jeg7b9!DB{bxoA?wuv8iH6RO^(^T6h zAb@y!YoOS3n`lC&Z6W+|`Rq3p@U%O|MuZmb_N(@+)V0{d6FWYY`0e-Lm4Ea*GbsKO9JxpRJ zPrmhbs{boHaB%`&^SWx>E#Fy>fhc{kBsOd4-W$OD46yBJ>?A*pnI&g?47cuu8|_ib zh(m$|i!!pMMdB8RUaxZqq;8*BOcc5|QQDSSP@=ZwFOngE%mu6;g0o2`&d%?^Yd6Z< zr4nK`YC2Wl>58WoO2*z7&!-2+hmX3>EY8>2DQbC7+8SC7PV<+|hb0WC7dYQ>O*gwD zQ=t}LImF)SOmXy>z4mcKW@bM+EAQu~`b2tGDcSKImx^PfQ`oN$A#}1d9nCF~(X*uf zM@;FgvUcdz@!G-U*@&6zI+om%idOAL5~>J+(?jq60HNhR{`W(K+Nq5ES;b2wsR2!l zG^(kSXgw`V!DF{BK7MIBa+p$>$WD21}1^QgezV&{ov$Hb3xKVICpQaXg2tJiSzYaT(iAbAdi_7 z=|GO%L(9UYq)Bjj`CT>q+gsSIhSxt_2};0|l<(s{Qnh&oImhJL;PHYBOwp3BH44%s zKe@7x;8x03%be7pwpKQLSIzAY9`)a=LIqZYVM45l z^Kb>qGCRoN(NWZh$&Jktq5k70SKHkh^01H6v^!7ZogY32OJO zB91$DgOOA<%9<%X-hua=&^Sy+uv5Qy@tzdB%Jy>2;}oFVj1KSEXfYhDRj1~TK1$&0 z&-2Prw%tAl%4L6pNrtb8nLA1O&GmEe&v}PwX6sgE{G>~y^_mET@34Ei@WtN0%f#w$ zr!Guo&&fW0BMrj-u9S|E<^p7mjp;iDe@d&TFJ;%6?%1QNX4`>5H`?1XrQrMC7_|M4 zCJ02bJIYzpX~Tfa-k#Uy(t^if1c{jMYTxNh7Zs#Eo|$b_BY_Y$86O6p5T!R1x2&S^Hr^Efr!9y_+< zyW~@TGh}|O27_pHC7iDGU=tPJ?6(${C}nNm8fNZMVh~b!w#*g%WW*r43547iAvV$I z0;L(4z1h+@Y5HS7^cHNP&IMWBJpdZ?WF72hm!6SI1tw?|VkqfU3@46Ne*q zq>o`IL{MrU)V18X%V-Y4iTkg0t642{1qKadX^}g8lc7US5QfX3y6IMcTX<-cgVTJE z03WG^Qot_7HJk{?IH0w^umb)+DvTln==6Vfo=&OdBM&Kg!)(f zuVYB=2QLzr<8eY3Srv2n55OpA7?TcVMJCl9B9(5yDM$GC^;$yhVU{;PcL&UqG-1U5}#6TePIzoEu$D(q3T^4G?K!B z-LTNF|A?_YJ!zwPBE{p}5)Su)D(j?*V`D*}8ju7SxoM=yBX0OW5se=Mab97<2qCt#}eC zU!CBkxljXhXSd(-rZc5a;zRxzIVgZQ7FfuvOKG`th=-z>!iB-~4`cb)kf4NT7>^H4 z(PXJfj;>uOGvxE=#4f3u6MMw$V4ZdL56kZmLMA8Qk2!Rx%U}NMyd_R{Li`xXk-WWh zB53O4E!(3y3H3w@3|J(wC|3%miGn9%C0-1)e5O-By;lY@{_AAsQ$ncGqzyipMteai zJDH%4AIDu|+;oYbi~rtA9}W$LH<&Tas>%GV!$lqycrB2sp|W0~56J3FF=D0!v=U+& zcTSqupjq?pY4*x7!;+=**%&}77LXR;D~8)I7C=!4aN%jH}WMpJ-^iB%Wf4AGl)AmbhMgcBqLh}ak@M$4cF}@eoLG8 zTXeG%i$`;#dPz-qu&foeTxp-fAI4Xmt{BXjfU5gH9*ZutAKCs!_rq~nU&LwL^7;;z zE1=`o5TpnM(kpgAyu5(Qq=9kqb4IPXG-O0*2Bg!|mJ8C@QKkTR1 z;J#|#p8rt74~GBfd(w7o@ZBY@Jq-@72b%WuSlul94lciBIML?PV0zFE^1n5wN;)i&9C z7xi=r^c3gRX}Pp*#~glPW@)N-^wNzAfdXRmd<->zBtjj1tU=A+6+#m=m`Utpz)wiD zS$X464K;V3WIESLX&Q0Nfz61D%j?mM1)r~m{1wG_6`e}5Ovp?=r@X&FgwRfEtkzIpXKp}t&QDd4m@1kee?y0VE&5kB`wi~9(&akBN z;^dZHKYA+@CTOP#F^UkBAtV7+QC4?p6L?H893%oYQARO3I3XXGYp!1w4F;ie*F{*o#xsJHCL$(Nw8>6h%xHQB zIXm;A(j}v-;SM4KB96cU9>Y?KGp508 zPb2&}K+zUR;@?@H7?hSKD((~n9lNoDEF zEG(dO37(n@J!z)H#Q1(_%O<7SM2Jg>s!C0`f{OQHRZJ`}?`TyDetMWUmNHRkXnVGPjUigv^(v7Tyn-J&fB;p zz#?%;@hwKZkYl%zBDK|(Chj#YoCCQ1B7X`x2x-mhm;L>I2y}Srq{P*6j=7H9=(R^l zg?Z;^@*-LEP0VNiQcuI>&iby?_P%MNqXKEW0&?B;9J^c-Ha@UT9^m4J{GSj$W@-E~ zq25t%k`?4Xf+bdvZQP{UVJg)Se)46RSXpj-&|_a0TP$!~$Uz~4BjXtX)q+<(>uE0;>T30oMRRzF^K&ypqc9GVm`jrlJD$H8 z5I4Yr_TKh;DwTT+^D>V&0R|=UCdaEiJC6Tp9TTLIyZddUU>QnjlH{3c3qtes!f?yz zNBlrwrmj6~dOU> z_W2VjI&W@Qnmd{yicYV4qeK=3^L_9BX|u8SmaHMViiJ_J=xJCjDt^{w#F2>!>S=0( z8M{j?@AX^cCwDmCE}b3v%p33rAG+|RoQSEU!H4J!VXk`n%*uV|QIpm$gD5E^{KIs; zy%saw$mwQ{8i`HNVOXKblFS0U5s|v-MGHB6D@@gB-12R1S?LGP6OdZ;^z`j+GqinO zYG=dsq3?tPbOhc5{gYvdwqJIJ(9i8kxHCAX~2T5%WX8;;6`$Ja+Ya`q?;LU>= z&{U*^K?0UAF%2S#NA9a0bfog-cjXjJ62j=~{l7Zd*~;lj51xO9Yr!6cvq|G>PIR^6osB+`fTHXTmaLmNTdT@8^ieKzUE#cAm(?D|4_BtZ_J z(qB%0wRVjS|G=FSimFVgwP~I_o!@ZAnXMe1>OwCouY&cr(@vq>RilqG)`$}%C&l-p z8YW-y3pIM^Lbdf<8g5!l2(C?tqWIx8r=K7{3(x9ev~y?e5=ohoeH}f+ncFA~avAk| znoLZl2NqoJNEI9=gTu7aS*_tggE#6Zn)$J(+;|b!zRJW(PoOKA9fP|6N!D1iGc+^J zHAE0O!?Em{uJRcZ_z<4K{=p}W+Sw%{sjIVJjys_OWD-=+-P%qvp=}~*w90qvFQ0dP z7^O;*;&42+wIKWH>A0eg(58JsrcPLB4@$D3Jtbbx4P+Nojd)UON1(m^V+vJNY7+RD zr=?Z35c=W?NDspbd&|m5|3Rp+g*Awq?^UHCq7?9-68a%Q3PKBq?w*_}a@`m(?TqEu5%rfSkN*8Jy?J=w%Q;RRqjhIEGZhKbCSf_rEYN?ii}=9fBXXI zMTvdK_OE)i>o{W;+W5>SBdl*3v zZEkedh1a!(E-5*9w~zfAjyQs85NR!DB=EH&j0+a|p^!cIa6E+1K6Hn3+jx9&Csg6O zeetQ#NyrS(^W6o&T=%viwKKdxpr6hc)cRF%FrF+e?@qkg=upUNe34LUuWRn}iJ^?D zk;bYx+zX>s6f`KrF2q6~g&8YE7k02mCJUQ1*UKOKWbo3_JR#=B?$-~j3@2BN1zjiL z?iyzSQH;>+Dpupf`VcqzPhj+kRJLqNVw1NqnwGmK`zqR3;a=NZTo!ABPxfDJfIlen z;5fvb;p=J3GHP>zM#WjU3LQw(L)DBW`0e)rf#D2VJM5lJv^Yv({JxByv}X%l-Qz?p;1Xjs;2Sa+WaQWSpQ1^EG^ly8e`1iUgi zOnyvY%*af^Fi>b7xYfcX{2pVg^0{88bwe{U8ivG2zFQRwBuH0$KOxK_*KFHDg)|e6Pc(>(bMa z0wSiGdG)oDT(-nkMs;!aG1PtBIrz7M{^!n{gY#XWW-=vwp8r-$V^u&=F0Cn~*#%_G zwAhV{>`Kg1+4nygRE{aCh9zM#?ovc<0(=j24pUfKaIto;GsAN)=JiNqH?#9h+|VBy z1f$r@c%#8Z)+!hgbMQ+H<&WZ{-$DZ>Rp_Sy2n$j~4;$s6W25O7QwD#W-{(pm9>G?W zpZu~ng)wYgy?-j{ACX?z(n-0FFlz2Sr7v%#u!dlqkjglq>V04Na}VB4jE>X9_?+5K zY6&y7?(js1O$1$nUW)H%*rSws)~gH#f_X9q+1UKbQqQwW8&3&l;L1RPkT;ze((Q^@)^B3-}xfL{a8Ie81jpjdrFJ+}YAo zh5FiqbUSpDir5e>3-!J4AeO!0aORjDlwf+SmWs z9j3`oebJbI31Jcz1>GW6zwawB;#w0EsTu>n&RHJ%0=vV{)G>MDU+46 zu-46DTj2~(@!z3`Rh|3w@|h{@qWTu+ZCTZ+32;onJT6x<1eF>^&~3jyTnVQK8GjP{ ztjA-AS-uBoc(ZsTn^?GVP^E@Un+o#gpr09D#HgfHyNLp-`?j`x7>;}e?*jcOp&|3X z{{N2?Kjv~#GyE!S9Um#rmG_4=j7FV7i-najV&)`W@N!GA>(f)GN{V!C%|QjQ?Nn z))W$DqnfiWrhY`?+%5%`fG_=k+tK#T#GQGK<%`aM3)JSGFtveEK5CjRGByrPk1?S? zb4IBkl;K=us?Ls?3A7G+CCZmM2STg|k-=!Q8~KTtbnJ`Urh*bc@e(7LVaw)hJhe}f zQF`wxr=4bCm`@*h1+;CdFoE{zVckARXE!qY?%EOGQ#G#nZe?wY@rrG1-;s35?O@<1 znFLf;=M?L+Nz{%^p@PwQ98~dJ_ebs7>XUdCjZ$K9Qk|3JO7X5jLR4=5SRH73k%1OD zNASh+o#>RE?&-v3U_$kso-KoPx$}#FWhM~OZ(;pp{wn&{Bu53Eg;DLI%NOoVc+mi; zA_`*WZ~6fT(HQdb=PhZ8=oj&buX!$c<#9ntT$!>e%O`Qgp^70SXDD4ALkj9J{oOU2 zn-l0Hh0-O7-?E9Ca?Km;2t=^|BnT8lzL2Hd98o>}R~|zNgtq6dAs_RfxRnq#K~z=y z=-*!R6%#lA(5UuU4_afjmqo_!bL8mdvTI9Z{>%=2?pOB2I4%<8_d$1Zz&&^dAAu@H zw6fh%TS|g!+XWULofRprXH*hneY$YVDvRDxVx)CaAu$~TSSz_k>9`OKr;)Y!s@DG5 z-{%0xZeBrtb>Yk*7_aLoX=ifC*2e+FpbpM5?IF^WE6GL&)wbrT2^s%}JEK^Do-e(C zNpZ|)s?HPgjpF9kV%9fW@`QtBtbKpiTzGa(kNQdefFo8z?_Gp9jnWaovzlZK@N}6t zwBmQ&0_53u3bbaYAt!OxCI=`}{E1OMn5`29L zR9Zu3AMQpc$wyt8VI~DRLlJ-OAlu(5z=_t2V@b=RPZsg|PalCVkFQ{dDs^8x36!7o zdM)0#qmp+&qL4Bp#YmA-6hyxg!@AJx38$j2$NYn&mV4;?NYI4;5F!vsS(L!%z(h^V z(Egy}eggcISO>_q-2>r-U1fgL)LP={x(IMCIb0t))=M(~Qyi8FjxMmY?Yk+;|AXm9 ztId=l?m6u$?mg6D5QPr;3!5Vtte!Pv#I+fLVM`;+V+&x1`$5!!on1gIRUqexO6Mkj z5s=q6g@d4@OYTt##&v4OQd6w`3%qi)-1vUnrQ9u{KZYWGb%g1&n{KGW24sIS$kyN5 zIZ(YzD4TKW6GZa9j9E$UoNR9PyZ^jQu^X4Hr*|Z#tNZ|FY-%j?F4;q0P_A|f&Z;*L z*?S4^qGOfpi4>bx-u1q2U7NE;^OjQhWhn_c=fBx{P&bMoq#xuZ z+37%JF0GPGhn~rFD!S=)R9ec|gH}od6ayNfN1idoQeENLJjKz7=m6gXrS^h&n&G|SZ1UCcp=j@GD?m6;Wfeo9lVwfZhObC9V?fWve<@KS zP_Gt<_rD6vd6?BCGne{aE}H7N_yVe-q{s^y+y6qwW!1=e*bTH;6GXRk3^3YHPiD+q z5!7g>8mgRpjPHPlt-56rls0wwK!d%^dps375}68bLl20XE*`k>y)8^}X-FUxwGb7t ze9l<_|DFH!wRf758z*-T7PhzXTAxUs3I`=FAXkp?I`!dW{f7BBAN!G_IrPUUR#{B^m5w!`!R z06WzI2tGcfL-IJux_S%vmBdtWr2vJ~c|>;>@6g0UHsHq2pn$5LcN9d@d9XX1Y2=@x zMQsHW_j;J(*aqwvT?g1>f8x;t5yWQCpHygu@1&fIPp9%8bpYz<;R~wntgMGHy0VyT zGSKbaxr8<`zx`Za_2iY-?lFJ_br^*RkS#xMewFGwP|u-~g6PEMe}8tR4e zv5IGFxIRf4bbEh)+9uglY*i*NM>q5@<&5%C+U!R0$@t`fmX87=umqMKC^{8RhOKfo zg;^&&uE}2AI0%2e@jc-w;1^PDH=3B?)0^W6ikkv!>scnC05B$P-a(xby&texpW3FeP8L9qr3sS`>r`qPHbp8x4)&lJZ*IoCVB(@?q&nLc&rvHF#5JdkzWnTOy3h}f0usLzC*XT^L&M&UR3aQea|5C8d4Ct zhn-j~pnjy{wFg{Rj_bMT?Nn&pQ&jfEcL2T>T(EuMmG(Iww|`*gV11i!?Ofp8fBqc0 zLQ^O|6RHZ*+NwBDQnm9iaYE~@*xk)!1jK}xYZ>JJb;$r%m{2Ovw!@#enXfk7(IeG; z-~_^)ClHil*_Y(ppaS^7$=voVUvS+&0Sf6zKS@=kXRqL#{++ZcBVd=OFOlA~ zWr<&x>bh*KBX!w#dAVZfBRL0)+vKXqdlR=Z^ckt<+Q(ZqjApVya9?@k$95KlvKH{o zJqv*l6ibP+-#5LF&F{>#IY7csV%xOsl?U(%Zk&UiI(y8$yk%$KGnTp|;MxJ0##G~r ztZD0+uw&#b`@4Ram!N7cy+Mpm+vF1EK}gcYh#d7*G^%O*TuQ7vPwO`6^Fs3j5h1fC?&fJFr5d7MShn(T6BlcLL zDlt74#AhS+xLWE!ND-Ts(4J9ios{P{4n10XhO& zzLhnwwabDuN;7KAm{=M^(YuxMF3Cp^%>im&t`(pWSR znJ=-CplF_(52iB79*&V9!0fE0y8LXqR)BuzU>o)8+TvUebu#}#-UZ*=>z8>9pg$Wp zx|l&zuyW{Gh3pKK{9a=Z8I&WB78}7&#Ne!%tKbppdwNZ^K#OVyMmN9gENQKg4COXZ zJsb$H)HNzFunpWulNtS+%;g5Tjs|tA-GJ)=Mk<&lvTmX3^j5m@Rg^O(I=`L*8C#ds z|JiD2ZY7Xl*5tO1P?_n$(lqTQL+JB?^DhL5VE)YmbrY8n41f_vXVv4owC&!`^g=Qu zdD)6(*=?wg^bC5lV|TZ&MGhiL@W?PH*vXD{D`9q z;wdD)5zmqWs?4Ye(@SSb-YrUv`j4{i|E9yBW`G;qoV1_xdpKC@Npomb>*BsEZc?eO zNt&x*{^tV*i$wq0H4G#oIYb~EX*i!U5~rGG!%`cpLJ14@Ts41#ZLaM}H>GItm z;+cY`7si!k0aqkrlI$V@~QQl)kLmOLdk2++XAeN0?~IeLCEvzCmAmSz$J% z7N(8tHi(|K+R-4;-)y_JRSp>)^&)BYG^+RJ87+5qXZQnaSMIfJl5D_eLryy1))9Sl zT^a?ke5d5?3)^;0rDc-skEQ2--~DBfOBh+*E(i^^A8RA!O9@B(939VZ!_2-K%ORzb zy9Pw(aJT<%O7B%ep7J(1jxvJ5}GX1ncXc;1@&bY`GAi?576yOA0yK zSfhLpGvv6?(a>jFN_Mr&)u~?0Sy4$Uax=Qm^8<^P<_RC&OaKlPmp&9T3NQ6=v&<|` zIlTRe4kuzGm)>8!FePeW(&JV~0HL;qYH-zQJ9d!nfc>h{m4r-EK2_@Lv}E9gtw`lO#^z#QNKY# zMgWO_R*nsvg{AQBgd+Y8KFkfg{e!~BD#q(rwxPzE@n!_s9Fu@oya07$wIy1?7-B%# zpgSceM7`DaB)-=5$JRPSoV1tP58mzy-rr|4FFER!=C}q8ZAnmyJZZF~dC|LEC7%JkJe-0n!pQ{8c4mA|NqQLBAq6{rGRt zu1-`M=IrFy0a7ge;h~EE zvUA~oSUjClXhn^Y-ra(=GEGayoI5?18GCZg#{N*6&ZLMD3B2QZ+s03ym?BMauPu%s z93rezVMCN3A5CgIF7ZF$|6P-QDi3+seBr9Q_W~Qlj;wx3V~>}L&U$eqRP(!=_6E#^ zsrf-!DXSRiOA^(9?|B;JaOCf*n7TCkq!Z`G1fsxdXC;ElEQ3Y{5mj!RfI_p>kcT_$ zgUv8U#)3SOSj2Kd^E^G*#UGlTQKi=Rg7N3GE&I{svLMI$S(FtJnq*K9#GhMIi+|Aa z>WxFfryMXkrnO}pmt?+QvBOsGZEv5S0!Re-kYXZ>s;?)~6a+$;cLLAjB7%kHjrbj3 z8dt(wP?2J7*B!l~pOd~+nC%5J#Z-=Oe|n1VrfP1p}iHV zeclrhd>>&s&;b=}cWiv1P!odZf!j4_tV`f^PjXWihC@s^Lkh`OcAoqPkJ=JU=#=Y< z+V{<#N$>le8F583vsjrBB@Ea2x2IJm^Z=(cqt%EyNheD~QXLx1l0_OMHDx>CcvPY` zI0(7F$)}>f?)FA$S}7ghp$v51JD-JDj;-y)$^cot=|xU&*N>o@-m~0jru77Qu*O@y zhn12f*n!NPmy2PLl(KMs;2Qx9s4Iq)&L{Q?U54*_5L4R-u^G5`wv3hd3?vgnjl(j^ zH$qR(Lr%q@?}tLuM~d${Yz`v~l9mNg`+6jP{M)ifOw_4N8ILv`vi99FZjJJwr?mtW|IaV|2kw{ znIGkB0wUALJZOR3n$D_8k~j zU1lwFd+J9(nNxfx?Y9dI*E%G7{3oR}c$c`b&a!Ed7`e#=uj2igk9yyI26bmS5UPIL z00B5g7;5XYS&syctjlRE)TgRY-_P`bYOBb+nQDWsMvHCv$>I)-B+UcQ%1S}hWX7P%1)L>RCV4oaX z2VVBH{<9+{52vGj(#!!G)ET@8ZqIIRk$;@ zEp`B-mo2>6p|{F5c2#+wxKBRT3LeI+)91)^k6TcK@!Tg;3|q;34_wWN5^E&ijpr>P zk(5J|$@lsHxaAW;h?d|l`5=ZQ$FTkKH7$&V!kWLnQldoo+oZrKFJsjHNC6G0FMV5` zcb7}L={FY)cgpH7-r&#bNI*kZIfWlj)Gqp-v!Pu&h>}ILovP*%kpkWoj zsLt>nJLL0twpsmZ3yM~mc=IYk%*0a<;?XivqBYVQWDWZBTXEhI0?`PgCm2FFg8I4V z;sKp#OQGHAh~&@nL%Fq?Y-V)7fhtyY-_O~6j{_hu3u0v0y5wM04Lz(hhIS391 zE*YA50W~L{!-al5-y zMIh)0b%`X82E29yK=ijWJT`dB%0wruI!;KIL0s~unVM?CFsaVA{YJ+C1yg!f;hUbx zy>=1+SfTD$6NMfz&Q8(u%QBoF;EHBQQ~|~SlE#>z9arnj(_}f_sF+ZfX}NSmExU>J-OW(HJ5~ z%ux^i*M*`mN;@Qc38nX*BPY9cV&a_I>GDGS;5EVOMQKINTtJ@=@rW$j28YCL06-Y8 zRB~kqhT|&D%3hkXsHyVbuF0^|^}vik+&i8j4V?7q>>Lo7krtmWF<5=*K(S*GH@%A7`*t&&w2{g#5qCN< z`yh`zZ#0>b>PR}IBG6b9rWwiDOGQ*$$kW+(tpziSn5gV$CXmKc*Tw zg^uQOM|%L)0@}RggjzpEnpAka&B62Yk?yjAo4oP2p3OT4dHAGz&=%h4L*7ZRb4zTyws)8;YG|Crm z0WU}=WS3E{Q7t;xU@HLZn#Vd0t4SLrq)zf1`RgBKJVVD_C3&i#8pUrEj(0g5b9|OlKuNJWW(5VZ zRw`n68P|!zjR#%O%H4@f`%_b8d2M-v$tkjwmcvcwp`w#jS*7nmfUYH9&=!skghq|} z2A?sSy#N@r%PMEXfni+mn_6QJ_&trrh2vmigN?u{xG1T5#F@D50;nl7^YmRS)f0sU zz5m#f6`2Ka2l*7G+?&<^eStujXs`<=mo`54|R zshu4VOkct@Ed!X~#`1DE-{*sS?Iy!xfF{_VTY%8GDg}R&>vOq>d0E1yUSx@rA@L3S}H{( zr58nH2gT#E5}5G5IlY>`w*V}5O;zwhB5vim@U%T8Q?`gyd>Q`u1D1rpx|40w&U;YU z0M%pNsf_217#XHyGzY#?`a}x~(HRb^Hey1xM19pdH;(tDtE%1vOAp-^=h*4!s>|y~ z`Czt&#DYxj6Zk7?CeJR$C48-hw<6Y3Ml#O}H7-D#CwOtS+-)k7FCi(nQLDj3|0kV@ z4f0`lVjJxAh6M{VYQA)1Mm6T^nVCB;*Kv=M#&21NmX6fTYrlvIKkm{+ptALM9_#|u zPF{`lqv4q)$JGee-yktj6fW6ZfyaQXCMCu^{WVo-GW&NdUIY$lmwX$vI4mfqYpAF! zT`+;j<#b-Zz$!Uc3BTE(`J{qhR-xKF6SY~{RjRUKc4{MXLV=t%;NGH@q}gWq(VoAG z>(;qlL`@Hv4p>gJZ|TIW1_e_No0W}xcBAJ?xW$##k$EKvgE*~<2->MGjD!@M5}a`N z;*(R_UVfJ!Z}ptgcIyqFP2r(H?)fp|(|o$}hkHkli8W^rc(P{C|Hh~^C?zW0WCV!H z^Z}E!yHkLjJ{2V5rCRj?-|=pOL71niy3ZzvAr)QG7-xv|01tzPV7!#*%wx-?sS}RZ zEygVasUe{_5#Q=m&Z0Vc2(o|O6?2v4cJF!!7eE2{=Vh7R!L3uyetS#HLBVh?M+(oL zHFFg5@7aE55bwZs57*im)D%GSxoV}Kc?5^%Z#U!o6UQ6@O!L3HX0^ZLM|Rznbqn1` zw#B4^@BhA2_;*UH>X#53Gahwwg9U*jvigk^t+0^>udswud^=bDQ4t*aAc|170TYVR z<$ApB>~ePiIY7q07xxb?Q>^75Dbh-YJ~X=HxA^*jpsU5Em6+4LmnJ+?*?rwDbg=%vQ@XQ+J(Xh8%<*iST9DH%{jlAm5_?NSr7E!cL0Mpn|25r3i(7-tvnXX>EbwuQlMOsWIuUSC9pB z!^o(Q3BTW%_)^F?#UH6Ym*kB3@aC!I%Y;}Mi#ds>(3skHf7CdVfypI);7rgL5|m5^ z*?gq+3h)TpzIzDz*fP7YO{e6o*O*CWrqgFCO+At_JM5Snb0bno4{yV@rZ!jQx$W1f zst=eHuOS=hUL@E?6H6VKnlkfIUhmGQMHy9Ng~$Y|k{Da(mA$|Xj}rgB`nuA|^*`P{ zL+F5rK?XRA1WCETIC`k!8jku|j6FY9)b<+(TN0+uF&OY=T?tEv#t5l5vSlkAA#o{X12Zk>hZ~i&5@6RybZ6f-=htn|k|0NU0UMAL%J?3G(Wqj_qz64t zK~Dkv=v&mDaCq>SqGr!XejOe|>|79seF?b0;3<9H^0%Tmy!9>HBhsYUqgH@UA&k+s z1mw@M_V`Z$v=DMn(OSw&$TnIXsL%N#!16R%uqwcY>ghLyTEj3=SIbDo|2lyp{1Jo+ zrMTOMcuNSk80!56-fMeSXV@%FUrsQb@4M+X!zAfS^~tKvmODi> zHI%zM z7o(fphQu_61U%>NRKeWz-Z1!ux&Z3KmcZH%-o<6E%lWciT)qhSgt&bG-PIxsR_a^K zsQfHl^VbC8f$SsD%x!lp<>CoVFoG^AM^Tg$%39wRU<)rKhcGU038wIBUS6^)bn@N8 zeM;&wU6mG}Lfgyu`IR8a!PoRML)bW6V!x7741MYIwUQGzOWM!Xgn*= z=!$KkLIo?22>{|_?@ic}MzL`4G=^TCs-Me`hH10H1@4id80)as_YNnR)n9%`29@-s`>GbYdR0tz&O42j#%5Ano$d(ZF_81Qc41M^gjvbWo>jyf;rU0 zpzBwhg6CyBeGll`sHtrH`L)KywtJdWhg>m4@oO=B0U0YvdgaX=5%0RQV^K|Ztwq?~ zcexa^tg>no3e_9s4EiRwXaY!#(7$BboeKS|zZ;acDJj4v>N-T75ZUrNWic{Tdb5My z>H$T$UxM)G`DLEV)+^$8^2+1uw%@WW!~IG(0}cDxlFE^E5n{vJL}}Xz&rqF+&u?`; z4qwGVjnAsS@-~YrV8>|jQ76-+H31k0sOS2Ql8s!|YJc3?t&rxHC8o6}J80%k9a?cq zQTY1RcS@@(J>CS`P9G0V-aAWwk_iIn4~;BSF)jK0vM2av9jJ?%4*nR`yh5Akm$DN&{i$$*&x3P13af!_bi88 zv}6?Rt zr$Cat2URs;R8BdxAP$FOHT;D)coL3MA>p3%Y}H)W0cM-xFF z5FR-5S3e6%+^;-q4ONTZeW~a(0u}(j6@*0`0g0N8ZW`bS5Gj))B32-1G5_bhb0#Xr z@VS7KOq(l!a5_n3ZQWqpak`rWA#+4pT4*kmJ>Fd3${ooN~Y*r#SlPVRJ}ZBlEDQ9 z1=mYOX7+23s+waUc>hIUZ-uXZ3gt>{FCr$3BVe)2UPA=e1-WVXp)eSvs&rNy+HPur z+}-lQOEP)f^05rx6RHjMyPow4R@v%@F%556c*Iwn;R*767%;k#7+AXC`{qf`bnk%WY#uPFDO0MWMaF%f@<# z57@AQ0w0S_{by5cEgL@DnUgR%J^j6~0D8)7m zyx`Br`cqXG!twhN;m=73^)A@PVFaQ6>RiC2FV5HDtN6e+!P*+W^fK!!qbMw!N0-!4 zRh#y%63|ii{wZT%8WeAk!yG+&yA!YlWRd!@@cn5gC)M=rRJlTj`0w*Cmn!5XNYoJt zZl}Z$4dbAY5S{TexSc#*f3Lm3b`1s`OtaQ;T&7mJX0heywKECxA&R`P%T(wo)yb+7 z#q>`>aC|r=v+Tvw8UZwmh~);JES-!DyS@abkYNx=U++_eEScA;>b7g-k%2jjE$=81 z0xE2rQ6#y|2@^1h4@%IGe4WM_*c3t{;zn&)Zdgd^tKEBiLe%R*D;a+=8NM-d#P3Bh zMJ3tj$>ohj5MK6k8!rv87>k7pHUm7J`tS+~R5Q$>FY|P5Ev#IP_)1;I-E_}|;Zf&K ztJoM1tG`ZIJOk=F||`?xbC?+16$;za1etpsCZ4Q^gQ0(Ui;e{BJ_1M1Q-tu z`g!a~vwm0st6uLU5_{6Wv5yBRKRHVZwI|*fG_j9TI9vjxl~HfFj_#II{=9Q_xkPCH z0hoeM*X;Kl{nBGuTy57#Qr)AU)7*UlBgWmI(r}3k%%byT`r~O9j2#H@4Ut* zAN2yDRvA>&CJuJ&rbPlwXd;^74Od80w5uicpAAEpL_9hpdk)*J1I4~StSCL(RuyCq zH6v+@3i8{hQ?lAL^Pu_t6z#BmUKT^6s=eL2p}53@&iM*Tw!^pG0|QH`L&#Sv-{_IM z`ZA19$1>h-MHXqgf*_z^xKOtyZ;2b&hVRgb7~_X#12ezDzmG!VJ}ColwNSG--~h@` zVpE-1$f;8=*ZCW+p#3Np%c=jOUJTfDE$0562|mxLCQU;i(;f|^V1oUGjBE<*?e!6uZq3@>^ z&%wjUb1AW1t2#(x&!n;u|JO1F;NIax4`Vo`qH9{KtM>)sV4^BK;wNVq$PZM2FZ1bhtc0 z@x!SfssH2Y1i$g$AMaziJPyMSl2|N@OqDu?j914W1iZBSgVSf;UIZUr} z1#&suAlC~$e^P%HbC)|%vU&@D7%*~ttYVJBF+}UkEgy0pZ*G(hsM4fB5hQ(zOPDNt zhpxsZb6(!GunIpMv|wKH5b*FVq+{eFST@Hw;*%L0xl*h1dv2AAgN?*DDm|+EZ_9YT zi;#sqq=`Oo0&)=GdqXH}|9r9+#P@1o`>?3c1feYl`i3&XA_lzJJffkR5b`_;!r#nD zMS2{7;z!})f11nQF%#wi%J@@G3nV)kfIAb$qk_0GjswDIHf5Gag0jQ-$VThY zrot4|8Q6})O4QW*ihoW%SADF}>dCbw1BsIN%p|Dy%C}?QfE$_^?U}Vj5m0kEnaU_z zz2VbU6OKN6HvFE?iEHcyfYQ>1fSdrV3YH1))C%?vE88B5xlPB=teS@4z)+C8W=c=- zdmfZL9f1(Q)gd7x$mG935d>YBZc!CTolv1KE&tzX8slP6#1}A27_jdXW9ZLHq>%dh z(9rB-LwTM=7%4zcqZB?0?mP#1N5%q;1Cn%VWS(cIVA#GEOZYqL5)IizTopt}C-k69 z2=6v%40Qf_E#IUMY_?MG0@(Ihwh%udM8d4h%40aVVQ$T5>jE-R zmm=0r!8IedD=QdJ)^i4qHiSJa!hG;eIj^rp%WngVk#Zz!2#LwB)w)10ABQnMCpZ}0 zgBv|vb@-x95+|^@Tny}`X3Oi7XtUZE&3pPHYvK;v>`ug#uK_gkG8tJ?Av?*TXKRZ9-2hM`nE1JMla7(lz^76;xJB7iVDpSz~{@$@i zw8Bmd2Vluu1T;+WwNWYbTNb{67lR$+QExxJ5>_o^=JT zA?k=y01sz=JCf5;y$G&i&kj@D@T)Z?SlZdDa+OET(2&*1mYG zi-8tZ@+dHm9M}oUIVU<#<&uLJ@!RsdhaxTFDdCRkR2Iu#tf zA1|~wEnnmpBo|It3J;oI0$f2~O-H01-u5g*Ks063!dJe* zF7GDV5kI`583vZb!6!{3A@Pjh}y&@{WY?B-aT0@FsFO*Nenf2F$ot5_OV@z-qC zKD4T-+#rzdn@nVc=!7k>R^>i6K0zx+g-*?Fus#9rsVxn-i&pzmre{zD>Xks9t|zFD zc5$6F%ZmlpIz((&3(KGKT4r`+o@0UYjGAsd@dJi`%Opq-6=u3L7n_owbs**uSgYuS5~LS@>~f3V*U# zGFO7fnlPtKWbdsTY)1b7C?7z+H0x!C8E3=Fvz_mI(9W-~kfjBR*&|#hA)p-#M)%;w zSo|`hecq8krIYr+gu5aqp}xQIG_c0^T=@CjwuNOB0zY%#n6g{{OLbd(F+A=M)cEqO zBggbV8s%Z}>e0h?$jroxu3h426T26B(f#8hrtY_l=AG{V6?DLEY2YJMku{={K#_*+ zKfVG4BnheBRzCdfVKofA6E0~F2z|jYa%G)+x3#L!J~QC(i{}GgL-O19WsMd)-&KGS z>Q<_8RKB$1oYWEf?t6Z<5o1=xmJHO$Q0{EBrK`faRO>iC)SFDe6G)HNR%r++r&>?) z#u;iQQMzF}ej#XHyGc@FK04KDg(esXlcGH989u8}sYVtwlMvXX0m#Nux9*dyxLyD! zJdokr$wiQ~z0%|h6U^R6lOyyB@8rjROE6D5u*-*U_;^To$Nh7yz%&a$aKdGy=pGf9 zCz`!7+OMI7YRCX1Fs5u0y*4fGczwU9MIeVR2M-?2pTLfp_x?kMZBiX%eq)h@uryiC zxSGXIkC@`2CeDj#f=vv$o1O{b6*{D168jCOyF59W819j=db8d1<}p*AO;JrPPqsW; z$p)HnlNU;cfmKn%yT79?*)gOmq%GzGRRVV$H7@rofrLfu-#^ zekS|LIE+lV!!)-b)1S`BnRA}@wE82%K-c!Jj@ZLfx3g(-e>F6a6#5~vGTmV72K6G( zb%KC7xPaz$s`<`tyo%z+$B+618cl7=N05q{sMnI}@jZ1d{FM;KA(#-hF1cLhG#zz$ zQ4=REN@p?@s-?6@mId>KHY~u5f)-ez;Wd^36-lP2-kA}(0ojOBU zY)ZLibK^*6A*zjb*OzvG7k>hJS>Mi-!Mhl27-j_dAGh21lN;ToshXvB%oFP9hXf?7 z2Eq{RZCY1H75%ZLBRJJ?kG~b6!)Ptx4$P*3vYQx@T7(a-Y&PAA%aD#leh4T}UgFcLp*+#CM7$)RsdTzzc#ssVSh*jRs zs!BsH+`3E}szRS^KZ9NR00zJ?Yx^CJ!Mt>!{p~D5|53n55v>qApB(HzT6S)c7bUEH zFvD5+R}SPV5dj_&o%{%oq}MtB(pi1=kTH2E8>fJ8DC;RZu_kiiv~xV8T6G)j+cH$C zV@=~cM36;n+|ocy?mgrbHHe7N3egsoegYSgTQ`$S|9cXo2!~`V%y*!mH zZT`seOAywwO#FpzY0ipmX=eE1=em7F+xKcN2YQA?Ek7y21x^!abV7H`YAH#a0p8muzX~S~0`64nc z$wX-Y(Xo!8APGaAP>((eYG>-gEZVz-{{32naq9FP3U&)24XENmXNRn=x|XnCV1IG? z0T{ed2%8DAu_BkMp^rgk=YUGEvFa5s!_$ zaS+6C!iOs@+Rp)hS1OpI9v_ZtEt-9fy{oZXS%^tfO2P)L-+oOtOFllr(|FhGGc}lguUw$lpA#zZ^{Q5sOy8BDcI*c<;eQVgKmc&Y21S7 zvj+e$4zJ3*rtHQQnu9Y<(n@Jz()_SLcN9q0t9~NgwCthJ7=YYa3?-+#;V z!-M9*#ml%tNT7L;LBIh_F35Zz1mMFUh?Dj4ZqpD<*WKAL+~@n@AUqGlR9}c2ER=-f z7vwXQ=R_SCQU?k4l7?n!J|AC%Atw-nW0e@iVRxgAaG7wh1riUxNfs2w20k{nDrM4g zzyjFtJ*ky|%&xp5!)4JC6KkBXSKbNa?-|@AJo}QAPlpIXA@c>KsB(eDbsh8}+P3hA zXr^=eRQO^LVqkSv-{U{HXH7C7KFZeCau(9%!x`;JWZ%(OI#WB6!RjfVB2E+`)e&>C z8IJ00YUFJJg1SnkL0RO@w)=@Hge+;#^N-Hx^4Kx$v{TJ2?=jLsC;sT4u(=6IwLNS}o)fMVsCw*v*=^j1*r43{cdgVXp%iZluyjt|;&JsbftPuSwL$D~ zK+Cr<3tfd$NcQfKE@Qi79jLBX-6iN&VrYz}8L zTa}oV3www2`qVrjdOnI=b-#!8%U_+!X7l9o1KUw{TDq(72Nf&xAVtDBrHp!ug8-o3 z^3+#=C{cMrFy1~SHZFr90zlORtQIhuvI~HDwQn+sDZ7`QOI&Dq6d$la`cXZF3$*IZ z`o6)gybrnsy^~_RyW$%BX8c~Aa)2GGpNc`#m#fc$Jfep{DPiYfAnY-i`{79DqRPW? zCx6g$_}CsuQU2q!{orHC)nR^-5O6o*d%Jj*0j;r3)J$tJP}&zPGaL*kGliTjALOTJ zWA)kG>QhUwOtml#NjC@xd~)4=fHZ$5;vrI`O0sY3*)?BPKm`JywgJuPbqtYdE|4GK zL8d+>JNi&(xQ{8_+fY!00U;me0o;o#Tu`bCmN(3H%wd6O^ZV6D4P8O^Y(B(ly5&-l z9G82M_H%7rY78Ur;(8-C0-wdVC!|xT^D#80guk2Klc5k;b{zvF7Te1xO(0jw9I7bc zh}7QAGUDu;7TdAXFw{8B!qLCVUN_Zwn*FlOeB;UZQdf8CNSAA}iBwxht1KtZejolm z3!NZ^1{N4O0qmw%Q&Bh6!`s4dt=u#aEeWVN1^=KJcMQ2>j8)<9HrgS?fEt|UO%D~9 zekMfdK&DK{S{5-3_y^ra4+uW5p13(SS0c60tyQ77=LgRj&{>fppYane*8mn55<&=K zfyzetCEj}cSq(%GCm`xbn~I2j4J9BgM`kOxb=SrKB-Z?)6tf4Zu)lNh>sZej#rum4 zlU1V}lPNeX(26b*I>Q*4$N1eNXV_4Q(oNk=_F-(kXyI=Px#`cGOKAIfN@)<@*N>ie zA(MTSd87|x?o7^2+dvq8iRz@0jU9+c+!~o4@u1KuwF){sHqrb+dEcwkRaar#n8K>5 zN{@3c6^X&R!U%ODLuOeyMm$)y<7>7pt=)gf^YZ~+dkqZR2LkZL(5=p*UW(9a7@^5~ z&rDRN(v&*mP|Ih_oWZL!ZABW20{>g>U}Y4}VewI1O3(R>LN(~c=x>Ul!ZmWU8}XB5 zv`v1@emligcn!v(X4&UjL80AsqPQxPab@I%!pr_e6q#PFxnbi|h>W_n8-Sb2DX_pq zD&Dwjo%aL}|E83`mUOz)5Y2h+-ETLL&4mdm8RR|T8>W$G2}nlYJ`g+oAR-!YT8?#= z5!Jd8_$VuM_MblPU(}E7jnxayh60>s`>gEn zY>z&{O!>X;deVcZ5B`KCe`~41x9~s*SoY}OXLir$Y5t=j z!0T_IVzdDITc48Gk%MW)n0EI;$2d5a73GmuNvM6jRdCF!p4r{Xi#ncFHHMdx_bRW{ zb;*XSVp!jh;u$IOnSpnFP@sC0nF7tUUs1hAE9d0N7>^#;N7C*IGDMA;dfBm`28XF1 z2*LT#A{JBGfh6KjjFStR$WmDoy3{mI!=0`oXt@P@JV3B%t|8?VzgldKkTrwU5|h_U zGkRu-LF4c|x{}?tlF0vu0;ERXp1KO-MCB_e40^Yqq}YlCybQnx1d1{%aB<2_@~<9Xp@+GuK z?~E&w&~?sD-J=}PgX9x)EZS}~(IN<~$bdgedUPaSi2Js^C6ul@3{apdAQ6G=PAp<{ zlj{u3q5BK8cVJ9cO^`U{rq#PwZ&+1j&QeGB?u!zoAcFQtOfe3o5>kN4CT-KQD`%Ou z&)v>Z$-qV69VnrQ-YWAKPtqa_pSqr1eXRb7lW!Bh@#_YGW{Zy1@XfY4VZ~)2@_C4) zM6f)Tg5rGj5ZTH4`kc85OxnqX*zQo*_cX5v1P9O>Ki@z+ZDnA#L_Ho)R6Cq=qZjq3 z!#_TEk2UuAz$$2KWIBV`Y5<*{)wDc9Y`{>I-D4*|*U0#M){SF_C50eGeks=RTK~Xd z2KFJthV@+xS6r9Uv-2YWf_pw!2N>cXcq=F7=q^W9Ypb!4bN+oDI*r-(Sz+m2Ffs*Z z9=pz@IS$++Z4@KW$_k4nriPr47p3a<&z8RicN<31U$ixvL(zcM3VB0TN8b9)U!63k z{ivqgJlQq^fcOuz$%T-96AR^M?1iTv!X{A}Q^&!yPlny&Uey~^OTJk2LimU|uKy4c zI6k@LUgMxq4-T1S9?fP~A7-)SQjB_))i8D1tGxmX(n-W?t?y7&WGA9N@-ZyXAEa9o zp9Buve|_`?q{&;ztSVMQf!y^_IS)1Odd#B_l*=wi>57cVUK=%J<&1<>2k8A!x#p`X zYun=e$miya1xK{Ku>;FKh)OC~<>BC`@Vvgm2BB>*2JG3~5 zH@Y;Eqc%4f)^C107JQ5QP%O@VML56)2<4&+$8SOy-13j+wdt^&8*!*B^GWCpVfq7S z*cBY!9$53>1(g~0NY0BETY&b-s?jlY=IKB?)Y!f{;9hwf3Vi73K*AysFX&@j z2k`C51@4UjN(L*0?>-dHrs-@grOHaZL{{L`JQjSra;OMa=O-TBCw=C_TyoCXs~Kh1)vd+C_)sux8j}MV5*(aMR77YMxv-Z zu93;yH57AHc*u3XvA0d!x4eR9#b_|j^9X6crK))yQFDE|nO(JSpT&B*fC<5&xbKQz z@`BGJMY01o8(4?eYm=fBji3zZW8_>-*=$jUhtB5u4f zS2&my<4it<`1vJvYKGSogF0DN3c3b&?6vo0bsj%heu>!;VCt3xjyjh8)x;0A)3*T6 z=1v^BM(*oZ`@bv>)$AjQL;#KkFqU6q{8V@HxU0#N{~S7`vQ$=PwoOz2>Tb}UH)MWa z0caZu%WBQ10g(G$w5_?#ZDdKeNRD-evy==fKgvwYU>^2OjXc%BT8rgRZ!t)_1LkbX zD4f5jqmpk{Rtc^!>skvj@+ZDMa0r42<~ajtr)3{fCU2LS+HT)#4h)lmq14l)Gcz1Y z-WcAp4*B{D&Qw<@Knp^Z4(OjDlL?1dJ%ChM5$fz+P@9glVIzO+QMBPT)hFnX|HhYHeE(37s0J3xn~)mzIdNu%0k> z)H|k6PtNgUDZs0Yt9{lb92N3k04<7F;n?@d@KVP_Nc;@Ba_=mQFtyhCg)(1F}ggtRvg zHj)QSoUHE8UJ6l&RCBaq$3nxrSyh}9Qi;8h_#wD$bqBCvNpZ9Bxm+`x)CBs{kP&O? z@w%)3<ufahf?)}CbyWm*K))|}`Fc0yX9L0g%JAmRhq`2x zX*CNB|GLND2p0&s6^H`9wDHJ08tOQX(6}^3CQ-Ik>s)}bz-6V`XC0z7@>b^u)> zo0jXBI`l(mn&=Gq@nD@>$p?a#QTF-_3|=|Ol+6mT=p3ZXGz{||y6P_b=8ZcsKT75jQYGxU%m=Si*sh>T$0bQ3)Zs|nf4L(i}cqf@054~b9TXFtN+ zGzWmz8>FVS^9;d=l?cA0TG*u(-_xPB@YtQVC5T605Ms1GN%)7cok$~iUsN7O@=RzE`sW7x;miPSVLUUzzE*gt;3 zz_n(yAF=ac4`j5U-q5=wr5lFS6*pcw2Gn?Hju$NfuO0sUU!16l*K&|9u!#8FYLu_Q zvEpMp>{hnhRs7o%Yqmu^`*M1#u3B^BuYe3u(b%0Ie#Ozydo?T6d-E6dvac(K^%2cD zIzbx?SwD+5vu^11D4#06Ka@4{FU3wXTk1ng?D(UrWG#vn$kEN|YG<381;uAz7&w)84o5>46j04#Q6Sl~k zS}mLv#?TTdEG$^DE({_8_aVdl_2VKuh~ckK{gcEg{F-Da>PK_szOKd?&pV8yxV|GlRzL#gVe6y>-C4}uo*HZD6Mj}IbLE<9i|F%VV;;TF6c!_?pS3MUS#`V-HMqYuR41D)0 zgaIPq(r|Ufs5L%&$#xS-9|;UQ?U!)}MT8HxXX-`Ub(v>}D0%uZhx4N8&+3Rj-m57V zoA8?&Fkdr&o9QWCg7XKP{#=RE@Msk)^mzDK!*wphTjw`}b%hn0XW$&U7uC-M3nuO< zud6Xw_?}VQO9FS!Qg&>CzD z9~>L+7RF55@je@|j$>!MAWSd&^IQiJ=Eham_{!2=RfgDvFrMU8hb$FeJq_;zPV#|k zIu(kQr;HjwnJ)Vl@3Q*#$qX_@<9={wufE;U7Mf+Kp^EjAM7P*VJqMIUk@2Hb0g`*c)?Nq&p_ z3^08>{Y_xF107K^Pd-p)i8P-SXm48lS}Yl3ziq5a5_bZy4OH3pl#;6?Yz2&ur5 zR%Rky>6hFNrc8@qlSee{My<8`c04~Wzw&oX&&&{$ZvV%or0)IR$Zr{sdJ%#v5*7`Z zb^I({IXDF^V&RsVL+`a zL6jIUUM?zNjo%rVVn(v+o5%SQbrrMc8V)jT8a&?07^$eva>kzfyhvK2lC^K-;KzcX z+o&ZE_SuZ-gJyRO8Qie7$Jy8q-qfFrKRSZ|+=!-41TZQAb|?TS zcE0TQ<4nmDqgg5SI&-Xd+=Hv-5NgZ+^Wa16ehPIZ5!xCXL?c(v4V0ek_Acg4My{12 zISy&+WXU)(aMoMLo$h2fBPmL98{B@%tX3ca!n>Y?)ZzSYSeTwEx_7L3Df(t_gEBSEX9zwn8+C$uN?W zR++F?e_7M*|+@gD&YrOI zx=+|d6uD2yAh+Bkb6>g<-iVh`)+R2RZx>XH6zTei2yW~j@mXiw+c=5w$PFrbA6ky=-OqlPs7oE0&ML>=9mpGWliCD zw<<5nl*bAXpEZ}eo?s8qVJE4r4@~|`LZYBM>MGYl!e#x|k_(kg=N$U%AZxJZI0yFL z5CSDqPbf)EUSb^~rWZ@K0Z-=At?m-I(&_?ENcw4IqePA;sJicU6cUMaqdL#W$=WAg z{j76HhFRH5P?0~ou5C86Ur8g8dbt?>LQxg%x)}*}iJ0cWjk)@?d!1I#jJ&4Tar)OR z8ED8>yXxLlYn=>f1`zg@Y~jI?<4p_=t=joVX#;h;cqy$_DB-lCuY1iLrEuE0tXU`t z?M|MF$ftbz30P*GF}C7mOOFJg6h_#*3#>PiAliV2|BFjWdY82dje$U?$c=C}IyL+L zkYYI%FYZnXGWYS0Dc)TE{ADh|c3R~+olMPo>htgo$cihWB%}57KqT7A;*)Z>{VEIK zEu#7I2I-(_nR@h6E(;@sbYggz4x*+>RT;|i_qC4=5e9@p>2$#3Yj`pQ#{`_1ah>5p zo^l{v9UK`I8M*IcC}er&Hds#45`+>9Vmg4}^cE-*2YtGM50htHKVyminPc)L zvIt~tin{a}Vw$-@Z32c5_6jP>>oCl#!=6xzX1FIT)C^D%4jSsd8*N#K11kr=s}qmt zhgDOV4o)QQ=Vm^+LSeCN{qZcPZe}3vQmeF0JnTRkd*lR;W9IX)rZeHfk%#xETQtmm zQG1NMj%pVt0r1?RGp2!*gA&a1Y1b2)cuNoQF(U*k53?$9Tv4U9iWbgco4MOXP25h) zr{DG#Q_;bR(N|n6GAHl4Jdno44=s8yk&239gxtbjV?n1C;DomUOP!Z9SIv3p}nA{6rw?Q^BV z7#R1eqj5Qu%b8XP)_yCPANX}vD{r31%t*`DetdI|XUh|Oqz_K_drsUDk=((wIQ^Z( z;xc{;4+efr{XB5<=FC>>de}N3$0(!XtcA5}ckT&qZbh1HyMAz&Zh8m=W{&cy&uK++P3o*N=FgEeMo<04@b+C0-^Sb)ZA8b zZ|qt^py{$6PXh!Qb0&m+buCH2DF6<**8(YO3!>>~F-3yHW4FU5K&BwA&l{>AMc)vh z5{BARbaB-gFLf>o|5229eN^+DOgOM-b-?lR`UXWsxNy;_e90+#Z$Ld4B5uiHJI9OFt(fS5tpSO<5r{KRp z8sPX=2;^Mj|GP8xJVHW_g@`risO(Zn+!CK3xF_8$%1_84=vS3f$hb1B+0V@}^-hG5 z!_-{6#C_ZLV~pYD*5xL$T5s8o<3eR_cn&l|J^pD+4Bq|H($B~*0z;nu@VCJi-`?(+ zgx<&1G`|o+K_wXLV4{hg)5dNKNcL1>NQ+47H9H+#Y3AZ?vqOrqwYgFSa&bK0Wfd%6 zgQh3Cama=r;vb~wkYcv?KCt0_lnv3Bwmug1O^#bOJ!0*s4i!@25z)SCq9}U-h`F-X ze;5e4<+iA*>y;Cu{67wfpXBW4pM{Q)8bT!nBDd@Xmpzstaq_MvD3IzhQhJ&F$XW}uu{swF8Yg&a)zP|Eho3}&`$G?tw& zrE9L5OpHw&WXdX78ajsyRS7Tu=LJbpOxrDmTq9GI9ITs#VZ@cA9RqKT`FL!xVqUEEuqR>yRX%) z1kwU>=qwO!HRRpna?O`4>L3+RG#&12u+5XOsIGmkNW`2(_Qb6kr?JE`0WDOH8BmDa zz9lMh6Mq(HYk)08wQ#sbrAE?0*Xl8u&>?MBDw_o(Y(+#HAFB-RbohWGm@=jqWzVN% zy>B&n&C`Db22pD$qJ*X2wai9J4|?dQ@0gMMA)hN7V;MQ{D-fhnAT48j9~+Dgp!hcG z&Lag{`!Bm5Td-?y<-GRYe}F3Isw+ zZIe|kX*je+|*Ld4^&#hz@PpnZnN0JkV z_8OP)saY4{4PP4C-AGoxYZ@OoJq!tG|570xbC-&{DvTbNt0Li44_uk->v*t8f4%K3?Q2xZ=J8isT#>vm>;WBT-?C_+byx*x#|C zi{7j_Da`iEuBZJCa(Q>_{vR|B*4KU|qe1e!#;PG^mY!;3H1Pr0;9s`)hcP|4*DB9F z&4>#A0>{aR{t;qKme5vAn&w(^u?)#~#4*&SEILZv>!$v(2?Yk%QIp^)jF>ADj`kk7 zBif3rmK-Lc-Wx*<)8wT2qglT5r7X3(>7pV82_XrV%r4684ZP(u+=8bV>6a2xJz70o zEsS9jzLvf4{y6VC<#Giw55koghY)Lj-MAcDLCNt|olP?+T@t&Np+J)3p13@*`^qAF zr>;WZpV&(dPrNWd1-5aClC5X^EJkB*1AKFQu!1hfNOp5ro8R$~56ni&iSpY3T${pw zaQViJN}@5;1-qcgQolkN@oFk{U#=fmoBC#pXK0>&nM_8^EO4%=x`WwaCw?joK6+>& z12c84O;ufIR9e2Yibocc!jWstnC%VA-e%I3F`|=tA)O4PH<}y_%8*I(c!`;T_q?oB zM>yot!xh2*FFJO`^Ux-P{cTnj!cgl5*WEqKFO(>}2)*YNV8PgyyzmuB2X1$PMOb80 zwSv6&zodxHb4-gHw=53X8-Ry}Gg~dpdp0MrMmw{g1rrgjHDq|~*pDv{j4LUut2}PV zeJz|E!UEBmX=j8iMb3KI%lL0)CI*9#tddVES}Iea9Nh%`90?2U`ZoD!gVDVFd*=bULsXi?`lJ8-1HaI=v%)rOJ7@ zh?@Gq8#yhRNH=nhc2$!c=&D)Rn>+%TltMioF^Rj0h_2_jeF9`4ojOUW_`SM`_^;4T zbqA%A&}X)uahq-%ue(n)LY)7C<#-82d!f&?aZRe9PQzH3+y#W394VS=`K(bafeYLs z=XL%URsM3$HeS;7hWC%=RuQt>PhGaup@BGsmH@@3Q9*hmK}Sxto04R+g&#@kh{r#| z;gZv^I=ZG2bllPzioEGYj8TWf3`22EDId89=lX~K9|gkSA7%ucfDr{rnPr1VfOMf? zF}f%>>1%rX>0j^dj3o-0`_%R#Q;GAZ8{o%S-n1CrN4N@-i$XAJcj-wTvh6&XM=&S2 z@G^n%(FKK~*K!S8=viP#<_*)n*}1N+kXnfn7c81-g)4ye@29 zni36aIT*9Dw77@ZyFPP5tkvyq25A?(_ZYqiGXSGWd3UcZ1|FP442=P_g1hFJmiDE+?UrBl^1y~)8a6EXq45+(JlOsg01i<|0DdJbvEd%C34cN z6w}xT#3>)uL=>^A4y;E%(S0hH|8TThhjCz54CkQ zFzJ(Q1&pkUYxGq&M9JePw8cagiwvl)sD8MSY)W7CCB+~c(${}GD=>7uv79p)6;D$3 zz^1^rRt3+_w;%D$B0hk0tOhr=$>UT8Nj?@B)5tux6r!||1G8Ty@7plfCm)fAJOZL&Z{*?RIe<(ztjiM6Bq6v1X7iyJ;vwhhXnF3h ztmtxfkF9JlDwNrdvLBc9@f@|N?f^|dvcH*;5zBKclYbBQrF^&RYlQD1TE$c~hqoBw#Q%sO%3D zsmSi@xF{CueM#LHhb*A{${6l^Ez~f6=tB7=VFeW;^qvQ3N9Lcz&2oXH;a0LhGg_WY z_pNw#WrKA>JVk?T2s(>$eUt7byxpQ`M+(25x7u{lUs|SN3pjzn2G9FR%^e;0n~r!rSjP1K!NA@%4+2{ zHQPw^eqb=$FvlDa$Rasj3A>X6t6-@V*-fPH!TB;jvx=1fvWJOc3S$*7cps#aGzq^# zgNsf30QA~r$d8Er<(VN%k4NbN_`QOKK9`bY{GH|9o|Q{Wpka{oMJ55xJ1wkGdkt){ z5)*r0_VG*~$ORm)y7E<#F*;Z@m|ZcSsmJgN)Qock3X`L7I`GmOkI`sH-l?eq1!q|B zD(6?DlP3+wgdd!&|KRNf7{UyplPT`imkQ9h@HmrZH{^-_6EIFE_?OK@p%sqo8skt{ z^fk4gOD4i<<6yfH?=3lr)yu#?@M{)cHG6qh#@Z8Bbf{pv;~pj%9R(BqU~(mC+vw6Y zdLlB=7-wl|#_siY>X03b8rm({iu=uH>YKRwQu=9MrWo_+_1z{yC_#an!*%CNr8e)S zP2t*_Sm9%C#G(RD!CjG|hn!veq)d2#hQ;YUwe+)26&9L5aQQj{D0d2+dvkSH=g#pJ zM5VmoB>1$5q01N#$QB-aV^oPlAS3k+pBko6c5i)g{J9G*#<}T(sZNWNwgzDv@F0M#7Z`Fg1mRf5CbI|Wye@xa^KiX{x6u(= z8p`77z%c5T+atRj=pa$6Q=Olei z{MKT?rK!uIRK4aI%_U*kr69}n8-U>R>2qY7ht&v9yep`_zm%U#f5DJn=?$ZE0$zXU zoG)5)|L)|tsXMD&)2OhEh~B=TVv~`I9L@-#jatH@yOy3f)r6=OV!gW&&516c!egw7 z9)4lAs=p?4eZ&M_>qhv{ zP=;N^;cBi)4Ti@(ot1WMU3V7Pv<~FN6JAxG(_8nMvnKm84esG?&kve0>!BHT^ z5kd>Jnu0L^vdkqi7UeT7^}Y(3}{gAIoNHPB0I za}a-V3Ke|`ZKHC-*p=6P-9kZH^))t-&Y4FD8r|?2tg$V8)`6d9<2L*20VEgf3W50a zxc7Oy9_`x@V+dd@D6de)x>sVMip=I^MX=FX5rdFlUus$0H1UY8zi! z>eo+50b;x05~##EF4!O+a7J7F~yMpauyc<9F1*$5Q(Z-TqI}SjoMtR zO}qEOh+Rze-De9eIO*5X<5vJ6&MaVdyZqyzaCf?)K)2s_xf>U#q+~U6M4y9+FO^FE zzp4OqKtv#-P|)>@+uoNqN^~VF{*Vo;URHS#*w8T?F=7i(2ZcLeX;tsaPepBZ5R3H) zSPPg(a=V4z0ER@Zv>vf&cba{nrbVOrOU&=_3EYyrh>{Qxl3f;M7KIfz;vF7G+w${0 z^$3>nwbP_GN8EMj?{DyeK2$w;8z`1tz|S2884o7}oh)*`IgPz3z719%H7CWRr;QB= zar>wRZDNjOJ)@3U1in>`J4j8-u?j&c3|>Qn^N*)r@h(Lf<%%dVhEJnK<3b1xDs)~i z0iMbL%iZPLEc)yB^QBrJu)QWs`{PSRW_V>aUzpFs8^c(A9be-X-_Td~T)S|5ufMLS}khU{H?dJ9vqqZudz-t_6QaWWMg2)k_u*+xQGj zc?JM4s;>Iz_yT?)9+}y} zuiJpmUj2VOGdW`C@JcbKaJd*bFl^HDp^Mr+nBUi9HwFDHeM9$FyH^z|rtVkFA$ZTa zo*9$d_bPjlN})xSC2ZuK1lF3Cg0uvJLfRa`F92&5EM!wUSbRJ<4q8xd@Ju=e^Na@Y zn#0KxG&!NsvLaktOqviE(~qi&*zJL`I!d9IA$A73O>`K+A^ZHuAyeG0x5BdMft%q0Ab`fz6<4IQ7=qj|!C~bv|vy178hP*p9xtE3e)K z2@$!q168Z;4*CM?B^l6~d6=Fy{SV3fq-+QA%eI4S%Q023c>E`sa4Te#MYMz@g60j%UM?r7%78JtLhByojo;Z zkXgPBSY%#IqcG(zAY&N(bCsl8ps6k+*wt{oV&$ssU{HjS>`eOgCU@lTDeO)uA3gqF zSZLZQPr*WKEc9wb!-XChV=!D-^?wNY&%r8?64%PBMmf^4JTiT|0JwvaUTeIfhK(lT zo_N$ad9Yy6M`n!o(qFP42A!ynoJa6ed~$bZT(_w&Gmdm|PV-m`h4Og|Sm5{XU`*J} zQfnr>65!5$eo*}LNrlB~YNEx-FgJh;zrL{|6~B5eLfMbPJ!H!q(z-VtmH+PNTn(ps z(yuR8^JStOHy+lbq0(S%IApPWf-~t1)mX;}KTiN;UrU1g-gf@~l*9a~GU;RXCNX@YF^(tE6oRHdT!luH+DQH*#|Klo(*tM!@2=kX6R2&(ijc z$X=?v>ubg^L!c`2M3h7==f9KS1Pb!FX*gG<2boY79HizFEe&6XJ(?*~InKGz-6z6# zqN{z9Y4RC@eyP$!MUJC2|?K^d)b6mK#8JQxMhk3sN!_ZnKM6xa523(hm z@Y)zd#K}H><=g+nJ_8lCUg<6X{$Uchig-y^&6Pq+5X7h)f8iR6T*nL#YYQ*<1xLs? z1>Y{dn1|GX=5uH0)_`pO{~!xKOzIRIXj^PnPS(aR>h*6D6a?_n8fG_cGbiw%dXL3b zq`r2C2|o7g9(VKt=mG#+Lb%W;}6scp;up8f)2j56Ju+oA(5N! z`@8xhtAY~dk(NZ$hV|1g`1sboH2&p0Ct+^KnZ0HD`Wxe2UUKoanRi()R*Du6giOq4 zg>gr63X7O9hkZMy&j*tOajbBI%Lv$m6bXyN(zM@mh=xpBbwrYCzUdd1q`3~in^T$+ zU(bZ@^XF!RIcf1_6Q=YBQ8~YSlviKY4_Asl!SV82L)rO|mP_*O@%mGdp73N(SNRadMf!W{B7vwNC&))SFuRW%vnk7u+QKU2!= zqZPB_nQXLim}D`=ooG6fOh?<}jIaESRkJXj&aC>wnS!8_*2z0yzrUU22vJrGOw7hb zn|(}$Q@=E5o)0M47FcSgP<797-}LB2{~(?=khd>X)B(or3DBj+{g+beAAfKd0!EP$1%bd|AtZ&-qfr>rH5vV^9=iGlDj8 zH>YoeBX(klWSV#RBPEiLf*LY`kSn7qPL@;hK*z{0FcB=)X*VK{@e0;Fow@5pn-dMb z`s=dpr5ze^S!i4RV8~LE^q+B2VaUD?f(d>SxmHPL6mTB;+Y4B7_@j5lroDKo9qNo< zL;^2$d}9CU=|WY9fa523ORKDR(`N##nNr|**>9aL6LipsC4&@W=gZCRxOQ>_c8u){ zjM$UF;doSRWkbI#Q5igSN~)K!J_g6m4*}d>!j+o_{L@<(I)hZ!h2?148J`QF9Dze5sYMc_Eje{S{KrVgpF|1?gqZQQmRHy8HtRqC~{#E;`>a z=yN}s*#=mPF|P*Z0-fx*77JaPl$IArJa`EFHXsrB6Tn-d`~eNV`0_Ap5zym6J=@hB zgqCR3=%L>!ewn{BP)l_jsxJtfm<+PZM z;Xc}aX8rYQl7pQ6c?wE`Q5HMTP-j$yPDpYADI6J-v6VW{#|7kcnG*=K8@X^dwT4;0 zYFK(DRo{oFUs#_>9&qC^MR;C#?3*QoPtKI8q*tw&s+W0*Q{1blyrOLAbeZU%XpN>M z`x?y`5F_wa8j6&*sQq7FL-xs6b4ev|`n5d>3~58~=uG;sJ;a6liNGJ&G|rF6zrlNY zPHr$Dv?EufgkP>nFMhUL+$yBuPkMcx(gQQ82ADfC<2$4$x?1+Q9$3-!Tz!e)-WEsw zfWP9i9f6;o_fgP_lF(3!lJjXINF|VNw9itiu*9qGGG;B;rEn4Y|(^ z77~3}rSONZrB{Mlad$+r5P#&&MP#?Of|;}9u488@3-u`!kG$g0a2lh<20$AEhIhQ5 z;GpT7OA)pC1Zm}{GtvJGoM8eLuALW2WMKtkJw9HDH7O1o6`|Qi#=+RUSk7O>z?*S$ z!781v>Et8C=J)p6KIrfz$3#=9VgBaA*lTaH4oAe1I~4{W&L?h-}_b zfgTg1d^O0J`hNV+!Yvd<4|LnmSN4a(>*cZxxR+qAPOfcTj(cJeLBM+p2+IJ&5h(~s zpRkJjlnD_OT7c(mD_!yA!P7?Ild5%_qRCUeCF;kn(gK4CdVL>z>{s#qXLK$hdysAVQn6XdWw`DR`!NJ0}P_04>y9%s9f-G^CPD*g57KWrb3L zG0o-c7ZL_p-DXwSwFi^1QeOiF%#o5mBRVYEF<*w9iWtv1~=II!+W~ zQ)E)@$A54R_V7RFd{qNcXo^0yYi^u*uRDXKlW!2F$COn2V21b2oc|>B<{|92iANuIa2o=S`M89G}Fc5$%HOUvd8P)B_FSQy<+s&QrqGat#eWEv;c9cS4J9#4!d_F=%`wgOZsD9l5G26& zwR_YP-C_Lw$y3B>3E&8)&1FF|0(rRrnEuX{XlmkBzT*dG$mq*|>qt76IAg9aaIlM`FJ z8>wbsqhhxxqQt+OZUXY*I}CjkBQJLICk(M=v3;v1Sn+)<-BEfyaaZu=6XGg+93lK1 zq&>I$Ql=+50F6q=BwgU`OnvX?fVndl;->=;;Ea!4OKotV*PNI>p@{EJ-xVVjP<`89 z(a}d;5o|@zl3#an=2$}+Fg=Wz^gbRKq#Kd(J@B7B;L+%2g$2-vgXVp0_B>KIB!)Oh zRi(LXq9GsN3>UBIvkeEs-`Vv$#qOvg76^5E?~@(U)hYfH88r17c-WV`HL7CLB7HV$ z5PW7^D1AE2s6kaOMN@_x!G&zsRFATeZLe1TO7oko_>vFGgF7d>%xcKBuCAp{dRJxG zac$ngU#(q?pHfHo?73_r^l>Z^@FD+LZ? z&H=yHYrL0PRO<8pFfhcAhA4OS7dw1-5WB2s)ob(Bl2l~f_-X#{lde_z=Qzv&98B2~ zbn!w9)hE4*qRzEavH%|{jKN!3(-6Z4#9)jD^C-*luwSdS4L>lLz2@V_oA@a3zfFG3 zmXHSW(Rk~2QmUDuBy8dq32AAB{qF5F%>hJi$uuC9_3V`$3MdYhL(@^zVvu)2PkdT} zR7kZFrE|GL_neJ%fb5%>w_;UCiWY<$g;~G9G)=r!-CVlEeq@D%VWZQH$Cg&p6GI|! zJPjl4?&f!7zSa)3S3;H$x{7%tkfe1DF)<|Ddt^n5vrp0z0g%vUUaX9Gw7w>kvC+3( z$YRV{#$L0@wYd;+y6uZ{CaA2OV7M%F(HBoMEOR;KPGswTFw$lsFOiNd+Y2J&sAq`> zl&AFgPc%MT*CEKP9%A){Y5i7miobGeGM*nBQ%9N~>so|AezqU6%F(y|0EfYTZu$M-t( z2Ybs1GvF4K!(cC8P|myT=9UMvM}s!03ojT=!13ww55oN$?xxxeGH5x$>BwxnYN(>DqnG2){ellaMIZvsV(&LNgQ2CJx=aJx?2Xtlw z(fPP@wq*V!ZQ%`}e?!;xOe*5l-k zkwuYEG0aU=l=+C7wLLpPDX^q%LA~^B@tDD*m?JDPA_~V*+7|N5Ua{SzysmPaJ(UNo z6F0i!mmI<&SXhBRY=K2)QC-^%_$(#4#4e=;e@+PzeOxY=mbAOyYZV*SAT=rFV=T5Y znM!MdTUhX_l}NX-gXuGsZ~=-B$%c}5Otq9|-MgW51-9tm9|3dK^=HfXmAo>z;NbBX zixyi<|8eGXUHIvuvxc?eqO7=@U6!hU`WZit6=T%Q2?aOwWx2Has9&glIH$CjbZlbv zrY+}X$Syf0X5+|l1|{+2nnbpQ+lGwpG^Rokt=UHF#7f2r{@I2H5}%GbO)9BQ50B9M z|Fx~BB`NQtFB|Mj`^ro@o-t0k>Zd`nVEJnQQuTby-D%#l4|+yU2MNYw{V$y~IE!yxAWW&?GM`>OW8RSK4Pz3*iF} zOLMU;I|AWadFb{wy%x>f^X_jGB$6hFL0qz`(Mi%EuPRGq#s*TK2E}1I^S+g9>xU4| zzi$cMJQVK1`qmJqP)Dp9nI#N+_|AD&Bc7I^IBBU=gb^vqDqJfC^wsUJN@~W<1Sym* znv~>3I|Ux9tQ3HH!nnFC8mKc_g3`5TbgRuG#gKwXPA`uPO!9rfWXO%P*SMv)&O~8h z*0S@ZZ4KZx_sn4+uzHT&2CO+8$cF8BloR*sBMW+{)2>G7S9#}~UXK^RswD{lhZ{e0 zOahjKwpf*S-^l(4je%SX+79-Jg~3H9#Ru5SSV-`TzZ4^LMK-^=NLrp9o3uj)7Q|{! zRNoCJdK0gad4m!w!CRA_!V2A?8mGNdz@Z!|v)R2S{OC`0y}{wpI;UFEH#r?83xBQc zHCk%LukB$GV7R%D}>jw-gZ8 zF6sGVg4?EoGc)b<;!=CuSr!7mA7402$^uU>VrSVS+4#2>&p(wOrSB0lf4~nh_sa@x zPbu51)bpqhfLPQd^I&cCdTbV0#}h$bda&CigZTWSjMLX}a+6H!Lq44zgKp?!QopeF zV#j))FMc*gxHmqbzH4 z;^VT$zG;@^W?GQ|0|m4gB_4E0KBjG$^w27zf&Kj4D&#{H-cv8lNFpolt&QqzRh%fd zIq-p04PMHocLTsd#N`4wQL}=ne^RtGgk};V{bmkQgg^+*(ai64xC{;v-iHAM48{WI8_d9w7EzIz@>dEQ5_Yqcz-MkY9-2 znCQ>t<>7H2V-L>@FXqMF>2x?tb+$aI>@YdK9)MKz0=LL9oHkid)LUP#Y$igVPuN+B zJb;_Jat^&ufAEy+eE~T11r9(bQuwsd)Rrr5lb9~Qp(6Sjys4bbwyb8?sN_z1)2)!s za!f)bgcA9EW!R&s1+UQ1mWCwS@=?{x_fW`SIBFFOg3{Z4==rr1L;{wY3iBm;wE6O+ zxBXE>b>=S|aezI0)84!@(n#mC2M3Xu)R=@{ zO^5-IKRGx(0hRiT7F*5+gebVr^j2PKYt|UvT(wX9k}=)&!72KR>AMGO>~mT|MsE+L zy3&T67?_cYKGD8pOCg=Cs5f$r>-IG+BcA%R${t`XfkX@ZYvk-Ioq6>>e(J{DuC2P% zM7Xmmm(cK65=GoYoSYcI%lj`vpnjyuA?qC|pr~lfja!;LC;`#U?j�b#tAQKUwP` z6A@G1ScSUYSO6hDsiVZ(vS(H_cPo|n4~ilW$UO)jgc91;N)^Lo&< zVYKaCm(92EkK+SkY6pPMfwj0TyIvByR*wGS(S3&btzHyc{HWgS;Y1gdF4d+s=vKoQ1^f;e5;*q{qIFQ)JffM zTWROMc)_ckomC~BYMTF|J1F>CzSgqU-mKI9wOCe1r6|zWosu1Z8S)52s~UL7AYfs* z5u-xnp!O$??xtOsRZ;+ja$NDtGj`A{B~@NwW15&Z_G|2kYkQdB zNKm1EpH5mAI=Rb(80OjU_BHz3>*kOgdz#qxt&eMY69QAW!K0+@{3nagMbWld4@@AQ zY6iycTIyG%BdKl&2(q9wHne?hxX>vgDz{#pf2F4r=KrGsIkO;TPgx>*rXQv)m>lYE ziw|&{(qbKY?DAV03DR@4;2`;JEOmLSyrT(%m7NLoxzX!+e25#051n431!$L{g|runmSFox^E1gOAn&fan#~ine$D#4 z`mgtFg*Jz^lSS?V2!f-!2=_>RSyuq_qQJHufrY z>z#TWgs&)2Gb~GIw6~;|j<&tJ{J8iLhu)j%bBo5$uEgeQMOShhrh$1qYc^=bKXSYu z_uNwXgXg$pWB@ueT*jgCf>N&6267ETNSnOz9#Pof8R)P8&N5AelS`k1X>+#K{vYfA z@Ab63t7HR#fXK_hkMwUvqDt2;+dcc%v|+Q((p;4Q;a+qu;v2w0Cds1zC9XgV zEL^Na`%=8w>SWhH;KZ8PJZ1t2H4b(F2Ruj^Ne}7?KmGfr(59zkueU;c(S7@GyZMwR zZk$XE-p~WF%CSctVA>%lZ(63-Gmp_;MzZaX%btYQ7mP-1w&ewCXs2^(7C z(SKnb^@cZ2!=;;N%3E|LzIu|{zi)~FjmOY>;BNECQ0g6O`!uGA#3*bQuzXdpxenZ@ zWEsxpg{d-P0oR6VI&{tS9bz57+$~W8UT*s01d*}9%gm6<9uB9lRTE9^))GiCbjJew z$!eev?o@PBF&1+}*|ki8NlFFA4;@IIQ+Ez_JAc;cUvpN{C5CxG?Mx(1HTZxDIDE^- zw=KaXJkX1fSp;|IH5-c6YHPJ

c>z)8 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 data columns (%d) in %s", + length(header_vec), ncol(dt), path + )) + } + if (ncol(dt) > length(header_vec)) { + dt <- dt[, seq_len(length(header_vec)), with = FALSE] + } + data.table::setnames(dt, header_vec) + dt +} + +to_matrix <- function(dt) { + rn <- dt[[1]] + mat <- as.matrix(dt[, -1, with = FALSE]) + rownames(mat) <- rn + storage.mode(mat) <- "numeric" + mat[is.na(mat)] <- 0 + mat +} + +dedup_rownames <- function(mat) { + stopifnot(!is.null(rownames(mat))) + rn <- rownames(mat) + empty_or_na <- rn == "" | is.na(rn) + if (any(empty_or_na)) { + rn[empty_or_na] <- paste0("feat_", seq_len(sum(empty_or_na))) + } + rownames(mat) <- make.unique(as.character(rn), sep = "_") + mat +} + +sanitize_matrix <- function(mat) { + mat <- as.matrix(mat) + storage.mode(mat) <- "numeric" + mat[!is.finite(mat)] <- 0 + mat +} + +cap_by_var <- function(M, cap) { + if (nrow(M) <= cap) return(M) + ord <- order(matrixStats::rowVars(M), decreasing = TRUE) + M[ord[seq_len(cap)], , drop = FALSE] +} + +read_metadata <- function(path) { + stopifnot(file.exists(path)) + read.csv(path, stringsAsFactors = FALSE, check.names = FALSE) +} + +make_SE <- function(mat, meta_df = NULL, assay_name = "counts") { + if (is.null(meta_df)) { + return(SummarizedExperiment::SummarizedExperiment( + assays = setNames(list(mat), assay_name), + colData = S4Vectors::DataFrame(row.names = colnames(mat)) + )) + } + + md <- as.data.frame(meta_df, stringsAsFactors = FALSE, check.names = FALSE) + + overlaps <- vapply( + md, + function(col) sum(as.character(col) %in% colnames(mat)), + numeric(1) + ) + best <- names(overlaps)[which.max(overlaps)] + + if (length(best) == 0 || overlaps[[best]] == 0) { + return(SummarizedExperiment::SummarizedExperiment( + assays = setNames(list(mat), assay_name), + colData = S4Vectors::DataFrame(row.names = colnames(mat)) + )) + } + + md_sub <- md[md[[best]] %in% colnames(mat), , drop = FALSE] + md_sub <- md_sub[!duplicated(md_sub[[best]]), , drop = FALSE] + + rownames(md_sub) <- as.character(md_sub[[best]]) + md_sub <- md_sub[colnames(mat), , drop = FALSE] + + if (anyDuplicated(rownames(md_sub))) { + rownames(md_sub) <- make.unique(rownames(md_sub), sep = "_dup") + } + stopifnot(identical(rownames(md_sub), colnames(mat))) + + SummarizedExperiment::SummarizedExperiment( + assays = setNames(list(mat), assay_name), + colData = S4Vectors::DataFrame(md_sub) + ) +} + +# ------------------------------------------------------------------------------ +# I/O guards + download raw inputs +# ------------------------------------------------------------------------------ + +if (!dir.exists("data")) dir.create("data", recursive = TRUE) + +download_if_missing(url_mgx, f_mgx) +download_if_missing(url_mtx, f_mtx) +download_if_missing(url_meta, f_meta) + +missing_files <- c(f_mgx, f_mtx, f_meta)[!file.exists(c(f_mgx, f_mtx, f_meta))] +if (length(missing_files)) { + stop( + "Missing cached file(s):\n- ", + paste(missing_files, collapse = "\n- "), + "\n\nDownload failed or paths are wrong." + ) +} + +# ------------------------------------------------------------------------------ +# Metadata +# ------------------------------------------------------------------------------ + +meta_full <- read_metadata(f_meta) + +# ------------------------------------------------------------------------------ +# Prepare 2-omic (MGX + MTX) +# ------------------------------------------------------------------------------ + +message("Preparing 2-omic MGX + MTX demo ...") + +dt_mgx <- read_ibdmdb_tsv(f_mgx) +dt_mtx <- read_ibdmdb_tsv(f_mtx) + +M_mgx <- sanitize_matrix(dedup_rownames(to_matrix(dt_mgx))) +M_mtx <- sanitize_matrix(dedup_rownames(to_matrix(dt_mtx))) + +shared <- intersect(colnames(M_mgx), colnames(M_mtx)) +shared <- sort(unique(shared[nchar(shared) > 0])) +if (length(shared) < 20) { + warning("Few shared samples for 2-omic: ", length(shared), " (keeping anyway).") +} +M_mgx <- M_mgx[, shared, drop = FALSE] +M_mtx <- M_mtx[, shared, drop = FALSE] + +n_samp <- ncol(M_mgx) +keep_mgx <- rowSums(M_mgx > 0) >= ceiling(prev_mgx_frac * n_samp) +keep_mtx <- rowSums(M_mtx > 0) >= ceiling(prev_mtx_frac * n_samp) +M_mgx <- M_mgx[keep_mgx, , drop = FALSE] +M_mtx <- M_mtx[keep_mtx, , drop = FALSE] + +M_mgx <- M_mgx[, colSums(M_mgx) > 0, drop = FALSE] +M_mtx <- M_mtx[, colSums(M_mtx) > 0, drop = FALSE] + +shared2 <- intersect(colnames(M_mgx), colnames(M_mtx)) +shared2 <- sort(unique(shared2)) +set.seed(1) +if (length(shared2) > max_samples) { + shared2 <- sort(sample(shared2, max_samples)) +} +M_mgx <- M_mgx[, shared2, drop = FALSE] +M_mtx <- M_mtx[, shared2, drop = FALSE] + +M_mgx <- cap_by_var(M_mgx, cap_mgx) +M_mtx <- cap_by_var(M_mtx, cap_mtx) + +meta_df <- meta_full +se_mgx <- make_SE(M_mgx, meta_df, assay_name = "mgx") +se_mtx <- make_SE(M_mtx, meta_df, assay_name = "mtx") + +mae2 <- MultiAssayExperiment::MultiAssayExperiment( + experiments = list(MGX = se_mgx, MTX = se_mtx) +) + +if (!is.null(SummarizedExperiment::colData(se_mgx))) { + MultiAssayExperiment::colData(mae2) <- SummarizedExperiment::colData(se_mgx) +} + +# Save only one dataset object +ibdmdb_2omic_demo <- mae2 + +save( + ibdmdb_2omic_demo, + file = file.path("data", "ibdmdb_2omic_demo.rda"), + compress = "xz" +) + +message("Saved: data/ibdmdb_2omic_demo.rda") +message("== Done. Re-run devtools::document(); devtools::check(); BiocCheck::BiocCheck(). ==") \ No newline at end of file diff --git a/man/getJointRPCA.Rd b/man/getJointRPCA.Rd new file mode 100644 index 000000000..ca1b1cd79 --- /dev/null +++ b/man/getJointRPCA.Rd @@ -0,0 +1,68 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/getJointRPCA.R +\name{getJointRPCA} +\alias{getJointRPCA} +\title{Run Joint-RPCA and store embedding in reducedDim} +\arguments{ +\item{altexp}{Optional name of an alternative experiment. If supplied, +Joint-RPCA is run on \code{altExp(x, altexp)} instead of \code{x}.} + +\item{name}{Character scalar giving the name of the \code{reducedDim} slot +in which to store the joint sample embedding. Defaults to \code{"JointRPCA"}.} + +\item{x}{Input object: \code{MultiAssayExperiment}, \code{SummarizedExperiment} +(including \code{TreeSummarizedExperiment}), list of matrices, or single matrix.} + +\item{experiments}{Character vector of experiment names to extract when \code{x} +is a \code{MultiAssayExperiment} (i.e. \code{names(experiments(x))}). +If \code{NULL}, all experiments are used. + +For \code{MultiAssayExperiment} inputs, \strong{one assay per experiment} is +used: by default the first assay returned by +\code{assayNames()} (or index \code{1L} if unnamed). +The actually used assay names are recorded in \code{$assay_names_used} in +the result. If you need a different assay (e.g. \code{"relab"} instead of +\code{"counts"}), subset or reorder assays in \code{x} before calling +\code{jointRPCAuniversal()}.} + +\item{transform}{Character string specifying preprocessing applied to each +input table before ordination. Use \code{"rclr"} to apply the robust CLR +transform (via \code{decostand(method = "rclr")}) or \code{"none"} to +disable transformation (data are used as-is after masking non-finite values).} + +\item{optspace.tol}{Numeric tolerance passed to \code{optspace()}.} + +\item{center}{Logical; whether to center the reconstructed low-rank matrix +(double-centering) prior to SVD/PCA steps.} + +\item{scale}{Logical; whether to scale the reconstructed matrix prior to +SVD/PCA steps. Defaults to \code{FALSE}.} + +\item{...}{Additional arguments passed to \code{.joint_rpca()}.} +} +\value{ +The input object \code{x} with a new entry in +\code{reducedDim(x, name)} containing the Joint-RPCA sample embedding. +The full Joint-RPCA result (including distances, cross-validation +statistics and transformed tables) is stored in +\code{metadata(x)$JointRPCA[[name]]}. + +Output from \code{.joint_rpca()} with extra fields when \code{x} is a +\code{MultiAssayExperiment}: +\itemize{ +\item \code{$experiment_names}: character vector of experiments used. +\item \code{$assay_names_used}: named character vector giving, for each +experiment, the assay name that was used (typically the first in +\code{assayNames()}). +} +} +\description{ +Run Joint-RPCA and store embedding in reducedDim + +Universal Joint RPCA Wrapper +} +\details{ +Convenience wrapper that runs Joint Robust PCA on one or more compositional +tables and stores the resulting sample embedding in \code{reducedDim(x, name)}, +similar to \code{runMDS()} and \code{runPCA()}. +} diff --git a/man/ibdmdb_2omic_demo.Rd b/man/ibdmdb_2omic_demo.Rd new file mode 100644 index 000000000..6d490683b --- /dev/null +++ b/man/ibdmdb_2omic_demo.Rd @@ -0,0 +1,49 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/mia.R +\docType{data} +\name{ibdmdb_2omic_demo} +\alias{ibdmdb_2omic_demo} +\title{IBDMDB 2-omic demo dataset (MGX + MTX)} +\format{ +A \code{MultiAssayExperiment} with two experiments: +\describe{ +\item{se_mgx}{A \code{SummarizedExperiment} with MGX abundance data.} +\item{se_mtx}{A \code{SummarizedExperiment} with MTX abundance data.} +\item{mae2}{A \code{MultiAssayExperiment} containing both experiments.} +} +} +\source{ +Prepared by \code{inst/scripts/prepare_ibdmdb_demo.R}. The script is for +developers and downloads publicly available IBDMDB/HMP2 taxonomic profiles +and metadata from Zenodo into a local cache (e.g. \code{tools/cache/}), +then subsets and filters the raw data to create a small example suitable +for vignettes. +} +\usage{ +data("ibdmdb_2omic_demo") +} +\description{ +A compact example derived from the Integrative Human Microbiome Project (iHMP) +Inflammatory Bowel Disease (IBD) cohort. +} +\details{ +The dataset \code{ibdmdb_2omic_demo} is a named list with: +\itemize{ +\item \code{se_mgx}: metagenomic taxonomic profiles (MGX) +\item \code{se_mtx}: metatranscriptomic taxonomic profiles (MTX) +\item \code{mae2}: a \link[MultiAssayExperiment]{MultiAssayExperiment} +containing both experiments +} + +These compact objects are intended for quick examples and vignettes. +Load with: +\code{data("ibdmdb_2omic_demo")}. +} +\references{ +Lloyd-Price J, Arze C, Ananthakrishnan AN, et al. +\emph{Multi-omics of the gut microbial ecosystem in inflammatory bowel +diseases.} +Nature 569, 655–662 (2019). +\doi{10.1038/s41586-019-1237-9} +} +\keyword{datasets} diff --git a/man/mia-datasets.Rd b/man/mia-datasets.Rd index 00b590f18..48dd28a1a 100644 --- a/man/mia-datasets.Rd +++ b/man/mia-datasets.Rd @@ -21,6 +21,8 @@ features and 280 samples} and 3 samples} \item{\code{\link{GlobalPatterns}}: A TreeSummarizedExperiment with 19216 features and 26 samples} +\item{\code{\link{ibdmdb_2omic_demo}}: A compact +\code{MultiAssayExperiment} demo dataset with 2 experiments (MGX + MTX)} \item{\code{\link{HintikkaXOData}}: A MultiAssayExperiment with 3 experiments (microbiota, metabolites and biomarkers)} \item{\code{\link{peerj13075}}: A TreeSummarizedExperiment with 674 diff --git a/man/mia-package.Rd b/man/mia-package.Rd index 80908b87a..b42682002 100644 --- a/man/mia-package.Rd +++ b/man/mia-package.Rd @@ -55,6 +55,7 @@ Other contributors: \item Sam Hillman [contributor] \item Jesse Pasanen [contributor] \item Eetu Tammi [contributor] + \item Aituar Bektanov [contributor] } } diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index 875ec9258..f1f2887a6 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -8,6 +8,10 @@ reference: - getMediation - getPERMANOVA +- title: Joint-RPCA + contents: + - getJointRPCA + - title: Clustering - contents: - calculateDMN @@ -39,6 +43,7 @@ reference: - peerj13075 - Tengeler2020 - Tito2024QMP + - ibdmdb_2omic_demo - title: Dataset description - contents: - getPrevalence diff --git a/tests/testthat/test-getJointRPCA.R b/tests/testthat/test-getJointRPCA.R new file mode 100644 index 000000000..07eea3a63 --- /dev/null +++ b/tests/testthat/test-getJointRPCA.R @@ -0,0 +1,306 @@ +test_that("getJointRPCA stores embedding in reducedDim and metadata", { + skip_if_not(requireNamespace("SingleCellExperiment", quietly = TRUE)) + + set.seed(123) + X <- abs(matrix(rnorm(20 * 10), nrow = 20, ncol = 10)) + rownames(X) <- paste0("f", 1:20) + colnames(X) <- paste0("s", 1:10) + + sce <- SingleCellExperiment::SingleCellExperiment( + assays = list(counts = X) + ) + + sce2 <- mia:::getJointRPCA( + sce, + name = "JointRPCA_test", + n.components = 2, + max.iterations = 2, + transform = "none", + n.test.samples = 3 + ) + + emb <- reducedDim(sce2, "JointRPCA_test") + expect_true(is.matrix(emb)) + expect_equal(nrow(emb), ncol(X)) + expect_equal(rownames(emb), colnames(X)) + + jr <- metadata(sce2)$JointRPCA[["JointRPCA_test"]] + expect_type(jr, "list") + expect_true(all(c("ord_res", "dist", "cv_stats", "rclr_tables") %in% names(jr))) +}) + +test_that("single-view .joint_rpca returns the expected structure", { + set.seed(123) + # Features x samples + X <- abs(matrix(rnorm(20 * 12), nrow = 20, ncol = 12)) + rownames(X) <- paste0("f", 1:20) + colnames(X) <- paste0("s", 1:12) + + fit <- mia:::.joint_rpca( + tables = list(assay1 = X), + n.components = 3, + max.iterations = 2, + transform = "none", + n.test.samples = 4 + ) + + # Top-level structure + expect_type(fit, "list") + expect_true(all(c("ord_res", "dist", "cv_stats", "rclr_tables") %in% names(fit))) + + # Ordination structure + OR <- fit$ord_res + expect_true(all(c("eigvals", "samples", "features", "proportion.explained") %in% names(OR))) + + # Samples: should include both train + projected test = all original samples + expect_equal(nrow(OR$samples), ncol(X)) + expect_equal(colnames(OR$samples), paste0("PC", 1:3)) + expect_true(all(colnames(OR$samples) %in% names(OR$proportion.explained))) + + # Features: now per-view list, even for single-view + expect_true(is.list(OR$features)) + expect_true("assay1" %in% names(OR$features)) + + F1 <- OR$features$assay1 + if (is.data.frame(F1)) F1 <- as.matrix(F1) + expect_equal(nrow(F1), nrow(X)) + expect_equal(colnames(F1), paste0("PC", 1:3)) + + # CV stats & dist + expect_true(is.data.frame(fit$cv_stats)) + expect_true(all(c("mean_CV", "std_CV", "run", "iteration") %in% names(fit$cv_stats))) + + expect_s3_class(fit$dist, "DistanceMatrix") + expect_true(is.matrix(fit$dist$data)) + expect_equal(nrow(fit$dist$data), ncol(X)) + expect_equal(colnames(fit$dist$data), colnames(X)) +}) + +test_that("multi-view .joint_rpca preserves per-view feature loadings", { + set.seed(42) + # Two views, same samples + S <- paste0("s", 1:10) + A <- abs(matrix(rnorm(25 * 10), 25, 10, + dimnames = list(paste0("a", 1:25), S))) + B <- abs(matrix(rnorm(30 * 10), 30, 10, + dimnames = list(paste0("b", 1:30), S))) + + fit <- mia:::.joint_rpca( + tables = list(MGX = A, MTX = B), + n.components = 2, + max.iterations = 2, + transform = "none", + n.test.samples = 3 + ) + + OR <- fit$ord_res + expect_true(is.list(OR$features)) + expect_true(all(c("MGX", "MTX") %in% names(OR$features))) + + # Check each view's loading matrix dimensions & rownames + MGXv <- OR$features$MGX; MTXv <- OR$features$MTX + if (is.data.frame(MGXv)) MGXv <- as.matrix(MGXv) + if (is.data.frame(MTXv)) MTXv <- as.matrix(MTXv) + + expect_equal(nrow(MGXv), nrow(A)) + expect_equal(nrow(MTXv), nrow(B)) + expect_equal(colnames(MGXv), paste0("PC", 1:2)) + expect_equal(colnames(MTXv), paste0("PC", 1:2)) + expect_true(all(rownames(MGXv) %in% rownames(A))) + expect_true(all(rownames(MTXv) %in% rownames(B))) + + # Samples include all training + projected test + expect_equal(nrow(OR$samples), length(S)) + expect_equal(colnames(OR$samples), paste0("PC", 1:2)) +}) + +test_that("unshared samples are dropped with a warning and alignment is correct", { + set.seed(7) + S1 <- paste0("s", 1:8) + S2 <- c(paste0("s", 3:10)) + A <- abs(matrix(rnorm(20 * length(S1)), 20, length(S1), + dimnames = list(paste0("a", 1:20), S1))) + B <- abs(matrix(rnorm(15 * length(S2)), 15, length(S2), + dimnames = list(paste0("b", 1:15), S2))) + + expect_warning( + fit <- mia:::.joint_rpca( + tables = list(MGX = A, MTX = B), + n.components = 2, + max.iterations = 2, + transform = "none", + n.test.samples = 2 + ), + regexp = "Removing.*sample\\(s\\).*overlap", + all = FALSE + ) + + OR <- fit$ord_res + expect_equal(nrow(OR$samples), 6) +}) + +test_that("projection of new samples via .transform appends rows and keeps component names", { + set.seed(99) + S_train <- paste0("s", 1:8) + featsA <- paste0("a", 1:18) + featsB <- paste0("b", 1:22) + + A <- abs(matrix(rnorm(length(featsA) * length(S_train)), length(featsA), length(S_train), + dimnames = list(featsA, S_train))) + B <- abs(matrix(rnorm(length(featsB) * length(S_train)), length(featsB), length(S_train), + dimnames = list(featsB, S_train))) + + fit <- mia:::.joint_rpca( + tables = list(MGX = A, MTX = B), + n.components = 3, + max.iterations = 2, + transform = "none", + n.test.samples = 3 + ) + + OR <- fit$ord_res + n_before <- nrow(OR$samples) + + # Create new samples (same features, new sample IDs) + S_new <- c("s9", "s10") + A_new <- abs(matrix(rnorm(length(featsA) * length(S_new)), length(featsA), length(S_new), + dimnames = list(featsA, S_new))) + B_new <- abs(matrix(rnorm(length(featsB) * length(S_new)), length(featsB), length(S_new), + dimnames = list(featsB, S_new))) + + # Project new samples + OR2 <- mia:::.transform( + ordination = OR, + tables = list(MGX = A_new, MTX = B_new), + apply.rclr = FALSE + ) + + expect_true(is.list(OR2)) + expect_true(all(c("samples", "features", "eigvals", "proportion.explained") %in% names(OR2))) + expect_equal(colnames(OR2$samples), colnames(OR$samples)) + expect_true(all(S_new %in% rownames(OR2$samples))) + expect_equal(nrow(OR2$samples), n_before + length(S_new)) +}) + +test_that("errors surface for duplicated sample IDs during preprocessing", { + set.seed(101) + X <- abs(matrix(rpois(24, lambda = 5), 6, 4)) + rownames(X) <- paste0("f", 1:6) + colnames(X) <- c("s1", "s1", "s2", "s3") + + expect_error( + mia:::.joint_rpca( + tables = list(assay1 = X), + n.components = 2, + max.iterations = 2, + transform = "none", + n.test.samples = 2 + ), + regexp = "duplicate sample \\(column\\) IDs", + ignore.case = TRUE + ) +}) + +test_that("jointRPCAuniversal works on MultiAssayExperiment", { + set.seed(2025) + + # Two views, same samples + S <- paste0("s", 1:8) + MGX_mat <- abs(matrix( + rnorm(15 * length(S)), + nrow = 15, ncol = length(S), + dimnames = list(paste0("mgx", 1:15), S) + )) + MTX_mat <- abs(matrix( + rnorm(10 * length(S)), + nrow = 10, ncol = length(S), + dimnames = list(paste0("mtx", 1:10), S) + )) + + se_mgx <- SummarizedExperiment::SummarizedExperiment( + assays = list(counts = MGX_mat) + ) + se_mtx <- SummarizedExperiment::SummarizedExperiment( + assays = list(counts = MTX_mat) + ) + + mae2 <- MultiAssayExperiment::MultiAssayExperiment( + experiments = list(MGX = se_mgx, MTX = se_mtx) + ) + + fit <- mia:::jointRPCAuniversal( + x = mae2, + experiments = c("MGX", "MTX"), + n.components = 2, + max.iterations = 2, + transform = "none", + n.test.samples = 3 + ) + + # Basic structure + expect_type(fit, "list") + expect_true(all(c("ord_res", "dist", "cv_stats", "rclr_tables") %in% names(fit))) + + # rclr_tables should be named by experiment + expect_true(is.list(fit$rclr_tables)) + expect_equal(names(fit$rclr_tables), c("MGX", "MTX")) + + # Per-view feature loadings should also carry MGX/MTX names + OR <- fit$ord_res + expect_true(is.list(OR$features)) + expect_true(all(c("MGX", "MTX") %in% names(OR$features))) + + MGXv <- OR$features$MGX + MTXv <- OR$features$MTX + if (is.data.frame(MGXv)) MGXv <- as.matrix(MGXv) + if (is.data.frame(MTXv)) MTXv <- as.matrix(MTXv) + + expect_equal(nrow(MGXv), nrow(MGX_mat)) + expect_equal(nrow(MTXv), nrow(MTX_mat)) + expect_equal(colnames(MGXv), paste0("PC", 1:2)) + expect_equal(colnames(MTXv), paste0("PC", 1:2)) +}) + +test_that("jointRPCAuniversal uses default assays per experiment in a MAE and records them", { + skip_if_not_installed("MultiAssayExperiment") + skip_if_not_installed("SummarizedExperiment") + + S <- paste0("s", 1:6) + A1_counts <- matrix(abs(rnorm(10 * 6)), nrow = 10, + dimnames = list(paste0("a", 1:10), S)) + A1_alt <- A1_counts * 2 + + A2_counts <- matrix(abs(rnorm(8 * 6)), nrow = 8, + dimnames = list(paste0("b", 1:8), S)) + A2_alt <- A2_counts * 3 + + se1 <- SummarizedExperiment::SummarizedExperiment( + assays = list(counts = A1_counts, alt = A1_alt) + ) + se2 <- SummarizedExperiment::SummarizedExperiment( + assays = list(counts = A2_counts, alt = A2_alt) + ) + + mae <- MultiAssayExperiment::MultiAssayExperiment( + experiments = list(MGX = se1, MTX = se2) + ) + + fit <- mia:::jointRPCAuniversal( + x = mae, + experiments = c("MGX", "MTX"), + n.components = 2, + max.iterations = 2, + transform = "none", + n.test.samples = 2 + ) + + # Basic structure + expect_true(is.list(fit)) + expect_true(all(c("MGX", "MTX") %in% names(fit$rclr_tables))) + + expect_true(all(c("experiment_names", "assay_names_used") %in% names(fit))) + expect_equal(fit$experiment_names, c("MGX", "MTX")) + expect_named(fit$assay_names_used, c("MGX", "MTX")) + expect_equal(fit$assay_names_used[["MGX"]], "counts") + expect_equal(fit$assay_names_used[["MTX"]], "counts") +}) \ No newline at end of file