From 8bf7566fa8953441300bc50152a980f7d928883b Mon Sep 17 00:00:00 2001 From: foersterst Date: Tue, 27 Jan 2026 17:08:00 +0200 Subject: [PATCH 01/25] added function to read fasta and nexus for tree inference --- R/getter.R | 60 ++++++++++++++++++--------- R/utils.R | 69 +++++++++++++++++++++++++++++++ inst/extdata/tree_inference.fasta | 8 ++++ inst/extdata/tree_inference.nexus | 31 ++++++++++++++ man/tp_data.Rd | 19 ++++++++- 5 files changed, 165 insertions(+), 22 deletions(-) create mode 100644 inst/extdata/tree_inference.fasta create mode 100644 inst/extdata/tree_inference.nexus diff --git a/R/getter.R b/R/getter.R index daa1961..f02593e 100644 --- a/R/getter.R +++ b/R/getter.R @@ -52,35 +52,55 @@ tp_model <- function(model_input) { #' `tp_data` takes data and prepares it to be used by #' [treepplr::tp_treeppl()]. #' -#' @param data_input One of tree options: +#' @param data_input One of the following options: #' * The full path of the JSON file that contains the data, OR #' * A string with the name of a model supported by treepplr #' (see [treepplr::tp_model_names()]), OR -#' * A list (or structured list) containing TreePPL data. +#' * A list (or structured list) containing TreePPL data, OR +#' * The full path of a multiple sequence alignment in fasta (.fasta, .fas) or nexus (.nexus, .nex) format; +#' currently supported for `tree_inference` only, (see [treepplr::tp_model_names()]). #' #' @return a list, see [treepplr::tp_check_input()] for further details. #' @export +#' @examples +#' \donttest{ +#' # Example using a model name supported by TreePPL +#' input <- tp_data("tree_inference") +#' input +#' +#' # Example using an internal FASTA file (same input data as before, but in fasta format) +#' fasta_file <- system.file("extdata", "tree_inference.fasta", package = "treepplr") +#' input <- tp_data(fasta_file) +#' input +#'} #' tp_data <- function(data_input) { - res <- try(file.exists(data_input), silent = TRUE) - # If path exists, import data from file - if (!is(res, "try-error") && res) { - data <- tp_list(jsonlite::fromJSON(data_input)) - # If path doesn't exist - } else if (assertthat::is.string(data_input)) { - res <- try(get(data_input, treepplr::tp_model_names()), silent = TRUE) - # data_input has the name of a known model - if (!is(res, "try-error")) { - data <- tp_list(find_file(res, "json")) - } - # OR data_input is a list (or a structured list) - } else if (is.list(data_input)) { - data <- tp_list(data_input) - } - - if (is(data, "list")) { + # IF data_input is an alignment in fasta or nexus format + if (grepl("\\.(fasta|fas|nexus|nex)$", data_input, ignore.case = TRUE)) { + data <- read_aln(data_input) data } else { - stop("Unknow R type (not a valid path, known data model, or list)") + res <- try(file.exists(data_input), silent = TRUE) + # If path exists, import data from file + if (!is(res, "try-error") && res) { + data <- tp_list(jsonlite::fromJSON(data_input)) + # If path doesn't exist + } else if (assertthat::is.string(data_input)) { + res <- try(get(data_input, treepplr::tp_model_names()), silent = TRUE) + # data_input has the name of a known model + if (!is(res, "try-error")) { + data <- tp_list(find_file(res, "json")) + } + # OR data_input is a list (or a structured list) + } else if (is.list(data_input)) { + data <- tp_list(data_input) + } + + if (is(data, "list")) { + data + } else { + stop("Unknow R type (not a valid path, known data model, or list)") + } } } + diff --git a/R/utils.R b/R/utils.R index 37f4dab..c0c2a80 100644 --- a/R/utils.R +++ b/R/utils.R @@ -238,5 +238,74 @@ tp_list <- function(...) { dotlist } +# Read alignment in FASTA or NEXUS (for tree inference) +read_aln <- function(file) { + # define the encoding + # NB: everything that is not ACTG will be replace with gap ("-") within the function + base_code <- c( + "A" = 0, + "C" = 1, + "G" = 2, + "T" = 3, + "-" = 4 + ) + + # Print an error message if the input is not in fasta or nexus + if (!grepl("\\.(fasta|fas|nexus|nex)$", file, ignore.case = TRUE)) { + stop("Please, provide an input file in fasta or nexus format") + } + + # If the input is a FASTA file + else if (grepl("\\.(fasta|fas)$", file, ignore.case = TRUE)) { + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + #nm <- gsub(">", "", raw[grepl(">", raw)]) # sequence names + sq <- raw[!grepl(">", raw)] # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + + # If the input is a NEXUS file + } else if (grepl("\\.(nexus|nex)$", file, ignore.case = TRUE)) { + # nexus matrix block + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + start <- grep("^[[:space:]]*matrix[[:space:]]*$", tolower(raw)) + end <- grep(";", raw) + end <- end[end > start][1] + mat <- raw[(start + 1):(end - 1)] # extract contents + mat <- trimws(mat) + mat <- mat[nzchar(mat)] # remove empty entries + #nm <- sub("\\s+.*$", "", mat) # sequence names (split on the 1st white space) + sq <- sub("^\\S+\\s+", "", mat) # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + } +} diff --git a/inst/extdata/tree_inference.fasta b/inst/extdata/tree_inference.fasta new file mode 100644 index 0000000..b458523 --- /dev/null +++ b/inst/extdata/tree_inference.fasta @@ -0,0 +1,8 @@ +>seq1 +ccagtaaaatccttg +>seq2 +ccagacaaatcacca +>seq3 +aaccagcaaagatta +>seq4 +aaccatacaaggtca \ No newline at end of file diff --git a/inst/extdata/tree_inference.nexus b/inst/extdata/tree_inference.nexus new file mode 100644 index 0000000..cc230e1 --- /dev/null +++ b/inst/extdata/tree_inference.nexus @@ -0,0 +1,31 @@ +#NEXUS + +BEGIN DATA; +DIMENSIONS NTAX=4 NCHAR=15; +FORMAT DATATYPE=DNA GAP=- MISSING=?; +MATRIX + +seq1 ccagtaaaatccttg +seq2 ccagacaaatcacca +seq3 aaccagcaaagatta +seq4 aaccatacaaggtca +; + +END; + +BEGIN ASSUMPTIONS; +EXSET * UNTITLED = ; +END; + +BEGIN CODONS; +CODONPOSSET * CodonPositions = + N:, + 1: 1-13\3, + 2: 2-14\3, + 3: 3-15\3; +CODESET * UNTITLED = Universal: all ; +END; + +BEGIN SETS; +END; + diff --git a/man/tp_data.Rd b/man/tp_data.Rd index cdec0cc..7776fa4 100644 --- a/man/tp_data.Rd +++ b/man/tp_data.Rd @@ -7,12 +7,14 @@ tp_data(data_input) } \arguments{ -\item{data_input}{One of tree options: +\item{data_input}{One of the following options: \itemize{ \item The full path of the JSON file that contains the data, OR \item A string with the name of a model supported by treepplr (see \code{\link[=tp_model_names]{tp_model_names()}}), OR -\item A list (or structured list) containing TreePPL data. +\item A list (or structured list) containing TreePPL data, OR +\item The full path of a multiple sequence alignment in fasta (.fasta, .fas) or nexus (.nexus, .nex) format; +currently supported for \code{tree_inference} only, (see \code{\link[=tp_model_names]{tp_model_names()}}). }} } \value{ @@ -22,3 +24,16 @@ a list, see \code{\link[=tp_check_input]{tp_check_input()}} for further details. \code{tp_data} takes data and prepares it to be used by \code{\link[=tp_treeppl]{tp_treeppl()}}. } +\examples{ +\donttest{ +# Example using a model name supported by TreePPL +input <- tp_data("tree_inference") +input + +# Example using an internal FASTA file (same input data as before, but in fasta format) +fasta_file <- system.file("extdata", "tree_inference.fasta", package = "treepplr") +input <- tp_data(fasta_file) +input +} + +} From 796aa4953566acf47585539b295a01f5ef8eabaf Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Tue, 27 Jan 2026 17:17:40 +0100 Subject: [PATCH 02/25] New simplified structure --- NAMESPACE | 10 +- R/checker.R | 14 -- R/compile.R | 165 +++++++++++++ R/{tree_convertion.R => data.R} | 124 +++++++++- R/getter.R | 86 ------- R/post_treatment.R | 6 +- R/run.R | 108 +++++++++ R/runner.R | 406 -------------------------------- R/utils.R | 127 ++++------ man/tp_check_input.Rd | 20 -- man/tp_compile.Rd | 117 +++------ man/tp_compile_options.Rd | 14 ++ man/tp_data.Rd | 16 +- man/tp_expected_input.Rd | 17 ++ man/tp_fp_fetch.Rd | 11 - man/tp_json_to_phylo.Rd | 2 +- man/tp_list.Rd | 2 +- man/tp_model.Rd | 10 +- man/tp_model_library.Rd | 14 ++ man/tp_model_names.Rd | 16 -- man/tp_parse.Rd | 2 +- man/tp_parse_host_rep.Rd | 2 +- man/tp_phylo_to_tpjson.Rd | 2 +- man/tp_phylo_to_tppl_tree.Rd | 2 +- man/tp_run.Rd | 59 +++-- man/tp_run_options.Rd | 14 ++ man/tp_smc_convergence.Rd | 2 +- man/tp_treeppl.Rd | 153 ------------ man/tp_treeppl_json.Rd | 2 +- man/tp_write.Rd | 45 ---- man/tree_age_cumul.Rd | 2 +- 31 files changed, 600 insertions(+), 970 deletions(-) delete mode 100644 R/checker.R create mode 100644 R/compile.R rename R/{tree_convertion.R => data.R} (77%) delete mode 100644 R/getter.R create mode 100644 R/run.R delete mode 100644 R/runner.R delete mode 100644 man/tp_check_input.Rd create mode 100644 man/tp_compile_options.Rd create mode 100644 man/tp_expected_input.Rd delete mode 100644 man/tp_fp_fetch.Rd create mode 100644 man/tp_model_library.Rd delete mode 100644 man/tp_model_names.Rd create mode 100644 man/tp_run_options.Rd delete mode 100644 man/tp_treeppl.Rd delete mode 100644 man/tp_write.Rd diff --git a/NAMESPACE b/NAMESPACE index 1ee4684..05ab462 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,25 +2,23 @@ export("%>%") export(tp_compile) +export(tp_compile_options) export(tp_data) -export(tp_fp_fetch) +export(tp_expected_input) export(tp_json_to_phylo) -export(tp_list) export(tp_map_tree) -export(tp_model) -export(tp_model_names) +export(tp_model_library) export(tp_parse) export(tp_parse_host_rep) export(tp_phylo_to_tpjson) export(tp_run) +export(tp_run_options) export(tp_smc_convergence) export(tp_stored_compiled) export(tp_stored_data) export(tp_stored_model) export(tp_tempdir) -export(tp_treeppl) export(tp_treeppl_json) -export(tp_write) importFrom(bnpsd,tree_reorder) importFrom(magrittr,"%>%") importFrom(methods,is) diff --git a/R/checker.R b/R/checker.R deleted file mode 100644 index 91eb2d9..0000000 --- a/R/checker.R +++ /dev/null @@ -1,14 +0,0 @@ -#' Check input for inference with TreePPL -#' -#' This function checks the input for `tp_go()`. -#' -#' @param model A TreePPL model (S3) -#' @param data A list with each item name accordingly to the data structure in the -#' model. -#' -#' @return ... -#' -tp_check_input <- function(model, data ) { - - -} diff --git a/R/compile.R b/R/compile.R new file mode 100644 index 0000000..a8d90cb --- /dev/null +++ b/R/compile.R @@ -0,0 +1,165 @@ +#' Options that can be passed to TreePPL compiler +#' +#' @returns A string with the output from the compiler's help +#' @export +#' +tp_compile_options <- function(...) { + + # text from tpplc --help + return() + +} + + + +#' Compile a TreePPL model and create inference machinery +#' +#' @description +#' `tp_compile` compile a TreePPL model and create inference machinery to be +#' used by [treepplr::tp_run]. +#' +#' @param model One of tree options: +#' * The full path of the model file that contains the TreePPL code, OR +#' * A string with the name of a model supported by treepplr +#' (see [treepplr::tp_model_library()]), OR +#' * A string containing the entire TreePPL code. +#' @param method Inference method to be used. See tp_compile_options() +#' for all supported methods. +#' @param iterations The number of MCMC iterations to be run. +#' @param particles The number of SMC particles to be run. +#' @param dir The directory where you want to save the executable. Default is +#' [base::tempdir()] +#' @param output Complete path to the compiled TreePPL program that will be +#' created. Default is dir/.exe +#' @param ... See tp_compile_options() for all supported arguments. +#' +#' @return The path for the compiled TreePPL program. +#' @export + +tp_compile <- function(model, + method, + iterations = NULL, + particles = NULL, + dir = NULL, + output = NULL, + ...) { + + options(scipen=999) + + if(is.null(dir)){ + dir_path <- tp_tempdir() + } else { + dir_path <- dir + } + + # check path, find or write model + model_file_name <- tp_model(model) + + musts <- paste("-m", method) + + if(is.null(iterations) & is.null(particles)){ + stop("If using MCMC, please choose number of iterations. + If using SMC, please choose number of particles.") + } + + if(!is.null(iterations)){ + musts <- paste(musts, "--particles", iterations) + } + + if(!is.null(particles)){ + musts <- paste(musts, "--particles", particles) + } + + # create string with other options to tpplc + args_list <- list(...) + args_vec <- unlist(args_list) + + vec <- c() + for(i in seq_along(args_vec)) { + str <- paste0("--", names(args_vec[i]), " ", args_vec[[i]]) + vec <- c(vec, str) + } + + args_str <- paste(vec, collapse = " ") + + # output + if(is.null(output)){ + output_path <- paste0(dir_path, names(model_file_name), ".exe") + } else { + output_path <- output + } + + options <- paste("--output", output_path, args_str) + + # Preparing the command line program + tpplc_path <- installing_treeppl() #### move this? #### + command <- paste(tpplc_path, model_file_name, musts, options) + + # Compile program + # Empty LD_LIBRARY_PATH from R_env for this command specifically + # due to conflict with internal env from treeppl self-contained + system(paste0("LD_LIBRARY_PATH= MCORE_LIBS= ", command)) + + return(output_path) +} + + + +#' Import a TreePPL model +#' +#' @description +#' `tp_model` takes TreePPL code and prepares it to be used by +#' [treepplr::tp_compile()]. +#' +#' @param model_input One of tree options: +#' * The full path of the model file that contains the TreePPL code, OR +#' * A string with the name of a model supported by treepplr +#' (see [treepplr::tp_model_library()]), OR +#' * A string containing the entire TreePPL code. +#' +#' @return The path to the TreePPL model file +#' +tp_model <- function(model_input) { + + if (!assertthat::is.string(model_input)){ + stop("Input has to be a sring.") + } + + res <- try(file.exists(model_input), silent = TRUE) + + # If path exists, it's all good + if (!is(res, "try-error") && res) { + model_path <- model_input + names(model_path) <- "custom_model" + + # If path doesn't exist + } else { + res_lib <- tp_find_model(model_input) + + # model_input has the name of a known model + if (length(res_lib) != 0) { + model_path <- res_lib + names(model_path) <- model_input + + # OR model_input contains the model + #### (needs to be verified as an appropriate model later) #### + } else { + model_path <- tp_write_model(model_input) + names(model_path) <- "custom_model" + } + } + return(model_path) +} + + + +# Write out a custom model to tp_tempdir() +tp_write_model <- function(model, model_file_name = "tmp_model_file") { + + path <- paste0(tp_tempdir(), model_file_name, ".tppl") + cat(model, file = path) + + return(path) + +} + diff --git a/R/tree_convertion.R b/R/data.R similarity index 77% rename from R/tree_convertion.R rename to R/data.R index f77ecfd..7e45d77 100644 --- a/R/tree_convertion.R +++ b/R/data.R @@ -1,3 +1,119 @@ + +#' List expected input variables for a model +#' +#' @param model +#' +#' @returns The expected input data for a given TreePPL model. +#' @export +#' +tp_expected_input <- function(model) { + + #### under development here and in treeppl #### + +} + + + +#' Import data for TreePPL program +#' +#' @description +#' Prepare data input for [treepplr::tp_run()]. +#' +#' @param data_input One of tree options: +#' * A list (or structured list) containing TreePPL data, OR +#' * A string with the name of a model supported by treepplr +#' (see [treepplr::tp_model_library()]), OR +#' * The full path to the file in TreePPL JSON format containing the data. +#' @param dir The directory where you want to save the data file in JSON format. +#' Default is [base::tempdir()]. +#' +#' @return The path for the data file that will be used by [treepplr::tp_run]. +#' @export +#' +tp_data <- function(data_input) { + + if (assertthat::is.string(data_input)) { + + res <- try(file.exists(data_input), silent = TRUE) + + # If path exists, import data from file + if (!is(res, "try-error") && res) { + data_path <- data_input + names(data_path) <- "data" + + # If path doesn't exist + } else { + res_lib <- tp_find_data(data_input) + + # model_input has the name of a known model + if (length(res_lib) != 0) { + data_path <- res_lib + names(data_path) <- paste0("testdata_",data_input) + + } else { + stop("Invalid input string.") + } + } + + # OR data_input is a list (or a structured list) + } else if (is.list(data_input)) { + # flatten the list + data_list <- tp_list(data_input) + # write json with input data + if (!is.null(data)) { + data_path <- tp_write_data(data_list) + names(data_path) <- "data" + } + + } else { + stop("Unknow R type (not a valid path, known data model, or list") + } + + return(data_path) + +} + + +tp_write_data <- function(data_list, data_file_name = "tmp_data_file") { + + input_json <- jsonlite::toJSON(data_list, auto_unbox=TRUE) + path <- paste0(tp_tempdir(), data_file_name, ".json") + cat(data, file = path) + + return(path) + +} + + +#' Create a flat list +#' +#' @description +#' `tp_list` takes a variable number of arguments and returns a list. +#' +#' @param ... Variadic arguments (see details). +#' +#' @details +#' This function takes a variable number of arguments, so that users can pass as +#' arguments either independent lists, or a single structured +#' list of list (name_arg = value_arg). +#' +#' @return A list. +tp_list <- function(...) { + dotlist <- list(...) + + if (length(dotlist) == 1L && is.list(dotlist[[1]])) { + dotlist <- dotlist[[1]] + } + + dotlist +} + + + +# UTILS: Data conversion + +## Phylogenetic trees + #' Convert phylo obj to TreePPL tree #' #' @description @@ -15,7 +131,6 @@ #' @return A TreePPL json str #' #' @export - tp_phylo_to_tpjson <- function(phylo_tree, age = "") { name <- "tree" @@ -41,8 +156,6 @@ tp_phylo_to_tpjson <- function(phylo_tree, age = "") { #' @param phylo_tree an object of class [ape::phylo]. #' #' @return A pair (root index, tppl_tree) -#' - tp_phylo_to_tppl_tree <- function(phylo_tree) { name <- deparse(substitute(phylo_tree)) @@ -304,7 +417,6 @@ build_newick_node <- function(node, parent_age) { } - # Function to ladderize tree and correct tip label sequence ladderize_tree <- function(tree, temp_file = "temp", orientation = "left"){ if(file.exists(paste0("./", temp_file))){ @@ -322,3 +434,7 @@ ladderize_tree <- function(tree, temp_file = "temp", orientation = "left"){ return(tree_lad) } + +## Sequence data + + diff --git a/R/getter.R b/R/getter.R deleted file mode 100644 index daa1961..0000000 --- a/R/getter.R +++ /dev/null @@ -1,86 +0,0 @@ -#' Import a TreePPL model -#' -#' @description -#' `tp_model` takes TreePPL code and prepares it to be used by -#' [treepplr::tp_treeppl()]. -#' -#' @param model_input One of tree options: -#' * The full path of the model file that contains the TreePPL code, OR -#' * A string with the name of a model supported by treepplr -#' (see [treepplr::tp_model_names()]), OR -#' * A string containing the entire TreePPL code. -#' -#' @return A TreePPL model (S3). A structured list with the -#' string containing the TreePPL model and a class -#' ([treepplr::tp_model_names()] or "custom") -#' @export -#' -tp_model <- function(model_input) { - class_model <- NULL - res <- try(file.exists(model_input), silent = TRUE) - # If path exists, import model from file - if (!is(res, "try-error") && res) { - model <- readr::read_file(model_input) - class_model <- "custom" - # If path doesn't exist - } else if (assertthat::is.string(model_input)) { - res <- - try(get(model_input, treepplr::tp_model_names()), silent = TRUE) - # model_input has the name of a known model - if (!is(res, "try-error")) { - model <- find_file(res, "tppl") - class_model <- res - # OR model_input is a string - # (needs to be verified as an appropriate model later) - } else { - model <- model_input - class_model <- "custom" - } - } - - if (!is.null(class_model)) { - class(model) <- class_model - model - } else { - stop("Unknow R type (not a valid path, a known data model, or a model)") - } -} - -#' Import data for TreePPL program -#' -#' @description -#' `tp_data` takes data and prepares it to be used by -#' [treepplr::tp_treeppl()]. -#' -#' @param data_input One of tree options: -#' * The full path of the JSON file that contains the data, OR -#' * A string with the name of a model supported by treepplr -#' (see [treepplr::tp_model_names()]), OR -#' * A list (or structured list) containing TreePPL data. -#' -#' @return a list, see [treepplr::tp_check_input()] for further details. -#' @export -#' -tp_data <- function(data_input) { - res <- try(file.exists(data_input), silent = TRUE) - # If path exists, import data from file - if (!is(res, "try-error") && res) { - data <- tp_list(jsonlite::fromJSON(data_input)) - # If path doesn't exist - } else if (assertthat::is.string(data_input)) { - res <- try(get(data_input, treepplr::tp_model_names()), silent = TRUE) - # data_input has the name of a known model - if (!is(res, "try-error")) { - data <- tp_list(find_file(res, "json")) - } - # OR data_input is a list (or a structured list) - } else if (is.list(data_input)) { - data <- tp_list(data_input) - } - - if (is(data, "list")) { - data - } else { - stop("Unknow R type (not a valid path, known data model, or list)") - } -} diff --git a/R/post_treatment.R b/R/post_treatment.R index 3637fde..2baca7e 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -4,7 +4,7 @@ #' `tp_parse` takes TreePPL json output and returns a data.frame #' #' @param treeppl_out a character vector giving the TreePPL json output -#' produced by [tp_treeppl]. +#' produced by [tp_run]. #' #' @return A data frame with the output from inference in TreePPL. #' @export @@ -46,7 +46,7 @@ tp_parse <- function(treeppl_out) { #' model of host repertoire evolution and returns a data.frame #' #' @param treeppl_out a character vector giving the TreePPL json output -#' produced by [tp_treeppl]. +#' produced by [tp_run]. #' #' @return A list (n = n_runs) of data frames with the output from inference #' in TreePPL under the host repertoire evolution model. @@ -232,7 +232,7 @@ peel_tree <- function(subtree, #' Check for convergence across multiple SMC sweeps/runs #' #' @param treeppl_out a character vector giving the TreePPL json output -#' produced by [tp_treeppl]. +#' produced by [tp_run]. #' #' @returns Variance in the normalizing constants across SMC sweeps. #' @export diff --git a/R/run.R b/R/run.R new file mode 100644 index 0000000..eb6ce38 --- /dev/null +++ b/R/run.R @@ -0,0 +1,108 @@ +#' Options that can be passed to a TreePPL program +#' +#' @returns A string with the output from the executable's help +#' @export +#' +tp_run_options <- function(...) { + + #### under development here and in treeppl #### + + # text from treeppl executable --help + return() + +} + + +#' Run a TreePPL program +#' +#' @description +#' Run TreePPL and return output. +#' +#' @param compiled_model a [base::character] with the full path to the compiled model +#' outputted by [treepplr::tp_compile]. +#' @param data a [base::character] with the full path to the data file in JSON format +#' outputted by [treepplr::tp_data]. +#' @param n_runs When using MCMC, a [base::integer] giving the number of runs to be done. +#' @param n_sweeps When using SMC, a [base::integer] giving the number of SMC sweeps to be done. +#' @param dir a [base::character] with the full path to the directory where you +#' want to save the output. Default is [base::tempdir()]. +#' @param out_file_name a [base::character] with the name of the output file in +#' JSON format. Default is "out". +#' @param ... See [treepplr::tp_run_options] for all supported arguments. +#' +#' +#' @return A list of TreePPL output in parsed JSON format. +#' @export +#' +#' @examples +#' # When using SMC +#' # compile model and create SMC inference machinery +#' exe_path <- tp_compile(model = "coin", method = "smc-bpf", particles = 2000) +#' +#' # prepare data +#' data_path <- tp_data(data_input = "coin") +#' +#' # run TreePPL +#' result <- tp_run(exe_path, data_path, n_sweeps = 2) +#' +#' +#' # When using MCMC +#' # compile model and create MCMC inference machinery +#' exe_path <- tp_compile(model = "coin", method = "mcmc-naive", iterations = 2000) +#' +#' # prepare data +#' data_path <- tp_data(data_input = "coin") +#' +#' # run TreePPL +#' result <- tp_run(exe_path, data_path, n_runs = 2) + +tp_run <- function(compiled_model, + data, + n_runs = NULL, + n_sweeps = NULL, + dir = NULL, + out_file_name = "out", + ...) { + + if(is.null(n_runs) & is.null(n_sweeps)){ + stop("At least one of n_runs and n_sweeps needs to be passed") + } + + n_string <- "" + if(!is.null(n_runs)){ + #### change to --iterations when it's fixed in treeppl #### + n_string <- paste0(n_string, "--sweeps ", n_runs, " ") + } + + if(!is.null(n_sweeps)){ + n_string <- paste0(n_string, "--sweeps ", n_sweeps, " ") + } + + if(is.null(dir)){ + dir_path <- tp_tempdir() + } else { + dir_path <- dir + } + + output_path <- paste0(dir_path, out_file_name, ".json") + + # Empty LD_LIBRARY_PATH from R_env for this command specifically + # due to conflict with internal env from treeppl self container + command <- paste("LD_LIBRARY_PATH= MCORE_LIBS=", + compiled_model, + data, + n_string, + paste(">", output_path) + ) + system(command) + + # simple parsing + #### change this? #### + json_out <- readLines(output_path) %>% + lapply(jsonlite::fromJSON, simplifyVector = FALSE) + + return(json_out) +} + + + diff --git a/R/runner.R b/R/runner.R deleted file mode 100644 index a83da11..0000000 --- a/R/runner.R +++ /dev/null @@ -1,406 +0,0 @@ -#' Compile and run a TreePPL program -#' -#' @description -#' `tp_treeppl` execute TreePPL and return TreePPL output (string JSON format). -#' -#' @param model a TreePPL model (S3). -#' @param model_file_name a character vector giving a model name. -#' @param data a phyjson object (S3). -#' @param data_file_name a character vector giving a data name. -#' @param compile_model a [base::logical] to tell if the model need to be -#' compile -#' @param samples a [base::integer] giving the number of samples (mcmc) or -#' particules (smc). -#' @param seed a [base::numeric] to use as a random seed. -#' @param n_runs a [base::integer] giving the number of run (mcmc)/sweap (smc). -#' @param method a character vector giving the inference method name. -#' @param align a [base::logical] to tell if need to align the model. -#' @param cps a character vector giving the configuration of CPS transformation. -#' @param delay a character vector giving the configuration of delayed sampling. -#' @param kernel a [base::numeric] value giving the driftScale for driftKernel -#' in MCMC. -#' @param mcmc_lw_gprob a [base::numeric] probability of performing a global -#' MCMC step. -#' @param pmcmc_particles a [base::integer] number of particles for the smc -#' proposal computation -#' @param prune a [base::logical] to tell if the model will try to be pruned. -#' @param subsample a [base::integer] number of draw to subsample from the -#' posterior distribution. -#' @param resample a character vector giving the selected resample placement -#' method -#' -#' @details -#' This function takes TreePPL object (S3) and phyjson object (S3), -#' compile TreePPL model, run it with data and returning TreePPL output. -#' -#' TreePPL need to be install on your computer and the PATH set for R/RSTUDIO -#' (see [install](https://treeppl.org/docs/Howtos) manual). -#' The executable and the output files will be written in R's [base::tempdir()]. -#' -#' `model` : A TreePPL model (S3), see [treepplr::tp_model] for further details. -#' Use 'NULL' if you have previously provide an model. Check already provide -#' model with [treepplr::tp_stored_model]. -#' -#' `model_file_name` : a character vector giving to [treepplr::tp_treeppl] as -#' a model name. Use a [treepplr::tp_stored_data] name if you have already -#' write your model with [treepplr::tp_treeppl]. -#' -#' `data` : A list, see [treepplr::tp_check_input()] for further -#' details. Use 'NULL' if you have previously provide data. Check already -#' provide data with [treepplr::tp_stored_data]. -#' -#' `data_file_name` : a character vector giving to [treepplr::tp_treeppl] -#' a data name. Use a [treepplr::tp_stored_data] name if you have already write -#' your data with [treepplr::tp_treeppl]. -#' -#' `compile_model` : a [base::logical] telling if the model need to be compiled. -#' Can be use to avoid to compile a model again in R's [base::tempdir()] -#' if you have already compile a `model` in a previous call of -#' [treepplr::tp_treeppl]. Check already compile model -#' with [treepplr::tp_stored_compiled]. -#' -#' `samples` : The number of samples (mcmc) / particules (smc) during inference. -#' -#' `seed` : The random seed to use. Using 'NULL' initialized randomly. -#' -#' `n_runs` : The number of run (mcmc) / sweap (smc) used for the inference. -#' -#' `method` : Inference method to be used. The selected inference method. -#' The supported methods are: is-lw, smc-bpf, smc-apf, mcmc-lightweight, -#' mcmc-trace, mcmc-naive, pmcmc-pimh. -#' -#' The following options are highly dependable of the method used. -#' Check \[not implemented yet\] for more information. -#' -#' `align` : Whether or not to align the model for certain inference algorithms. -#' -#' `cps` : Configuration of CPS transformation (only applicable to certain -#' inference algorithms). The supported options are: none, partial, and full. -#' -#' `delay` : The model is transformed to an efficient representation if -#' possible. The supported options are: static or dynamic. Use 'NULL' to ignore. -#' -#' `kernel` : The value of the driftScale for driftKernel in MCMC. Use 'NULL' -#' to ignore. Use in conjuction with `method` mcmc-lightweight". -#' Use 'NULL' to ignore -#' -#' `mcmc_lw_gprob` : The probability of performing a global MH step -#' (non-global means only modify a single sample in the previous trace). -#' Use in conjuction with `method` mcmc-lightweight". Use 'NULL' to ignore -#' -#' `pmcmc_particles` : The number of particles for the smc proposal computation. -#' This option is used if one of the following methods are used: pmcmc-*. -#' Use 'NULL' to ignore -#' -#' `prune` : The model is pruned if possible. -#' -#' `subsample` : The number of draw to subsample from the posterior -#' distribution. Use in conjuction with `method` smc-apf or smc-bpf. -#' Use 'NULL' to ignore. -#' -#' `resample`: The selected resample placement method, for inference algorithms -#' where applicable. The supported methods are: -#' likelihood (resample immediately after all likelihood updates), -#' align (resample after aligned likelihood updates, forces --align), -#' and manual (sample only at manually defined resampling locations). -#' Use 'NULL' to ignore. -#' -#' @return A list of TreePPL output in parsed JSON format. -#' @export - -tp_treeppl <- - function(model = NULL, - model_file_name = "tmp_model_file", - data = NULL, - data_file_name = "tmp_data_file", - compile_model = TRUE, - samples = 1000, - seed = NULL, - n_runs = 1, - method = "smc-bpf", - align = FALSE, - cps = "none", - delay = NULL, - kernel = NULL, - mcmc_lw_gprob = NULL, - pmcmc_particles = NULL, - prune = FALSE, - subsample = NULL, - resample = NULL) { - - tp_write(model, model_file_name, data, data_file_name) - - if (compile_model) { - - tp_compile( - model_file_name, - samples, - seed, - method, - align, - cps, - delay, - kernel, - mcmc_lw_gprob, - pmcmc_particles, - prune, - subsample, - resample - ) - } - - return(tp_run(model_file_name, data_file_name, n_runs)) - } - -#' Prepare input for [tp_compile()] -#' -#' @description -#' `tp_write` writes an JSON file to be used by [tp_compile()]. -#' -#' @param model a TreePPL model (S3). -#' @param model_file_name a character vector giving a model name. -#' @param data a phyjson object (S3). -#' @param data_file_name a character vector giving a data name. -#' -#' @details -#' This function takes TreePPL object (S3) and phyjson object (S3) and write -#' them in [base::tempdir()]. -#' -#' `model` : A TreePPL model (S3), see [treepplr::tp_model] for further details. -#' Use 'NULL' if you have previously provide an model. Check already provide -#' model with [treepplr::tp_stored_model]. -#' -#' `model_file_name` : a character vector giving to [treepplr::tp_treeppl] as -#' a model name. Use a [treepplr::tp_stored_data] name if you have already -#' write your model with [treepplr::tp_write]. -#' -#' `data` : A list, see [treepplr::tp_check_input()] for further -#' details. Use 'NULL' if you have previously provide data. Check already -#' provide data with [treepplr::tp_stored_data]. -#' -#' `data_file_name` : a character vector giving to [treepplr::tp_treeppl] -#' a data name. Use a [treepplr::tp_stored_data] name if you have already write -#' your data with [treepplr::tp_write]. -#' -#' @export -tp_write <- function(model = NULL, - model_file_name = "tmp_model_file", - data = NULL, - data_file_name = "tmp_data_file") { - dir <- tp_tempdir() - - if (!is.null(model)) { - cat(model, file = paste0(dir, model_file_name, ".tppl")) - } - - # write json with input data - if (!is.null(data)) { - input_json <- jsonlite::toJSON(data, auto_unbox=TRUE) - write(input_json, file = paste0(dir, data_file_name, ".json")) - } -} - -#' Compile for [tp_run()] -#' -#' @description -#' `tp_compile` compile a TreePPL model to use by [treepplr::tp_run]. -#' -#' @param model_file_name a character vector giving a model name. -#' @param samples a [base::integer] giving the number of samples (mcmc) or -#' particules (smc). -#' @param seed a [base::numeric] to use as a random seed. -#' @param method a character vector giving the inference method name. -#' @param align a [base::logical] to tell if need to align the model. -#' @param cps a character vector giving the configuration of CPS transformation. -#' @param delay a character vector giving the configuration of delayed sampling. -#' @param kernel a [base::numeric] value giving the driftScale for driftKernel -#' in MCMC. -#' @param mcmc_lw_gprob a [base::numeric] probability of performing a global -#' MCMC step. -#' @param pmcmc_particles a [base::integer] number of particles for the smc -#' proposal computation -#' @param prune a [base::logical] to tell if the model will try to be pruned. -#' @param subsample a [base::integer] number of draw to subsample from the -#' posterior distribution. -#' @param resample a character vector giving the selected resample placement -#' method. -#' -#' @details -#' -#' `model_file_name` : a character vector giving to [treepplr::tp_treeppl] as -#' a model name. Use a [treepplr::tp_stored_data] name if you have already -#' write your model with [treepplr::tp_treeppl]. -#' -#' `seed` : The random seed to use. Using 'NULL' initialized randomly. -#' -#' `method` : Inference method to be used. The selected inference method. -#' The supported methods are: is-lw, smc-bpf, smc-apf, mcmc-lightweight, -#' mcmc-trace, mcmc-naive, pmcmc-pimh. -#' -#' The following options are highly dependable of the method used. -#' Check \[not implemented yet\] for more information. -#' -#' `align` : Whether or not to align the model for certain inference algorithms. -#' -#' `cps` : Configuration of CPS transformation (only applicable to certain -#' inference algorithms). The supported options are: none, partial, and full. -#' -#' `delay` : The model is transformed to an efficient representation if -#' possible. The supported options are: static or dynamic. Use 'NULL' to ignore. -#' -#' `kernel` : The value of the driftScale for driftKernel in MCMC. Use 'NULL' -#' to ignore. Use in conjuction with `method` mcmc-lightweight". -#' Use 'NULL' to ignore -#' -#' `mcmc_lw_gprob` : The probability of performing a global MH step -#' (non-global means only modify a single sample in the previous trace). -#' Use in conjuction with `method` mcmc-lightweight". Use 'NULL' to ignore -#' -#' `pmcmc_particles` : The number of particles for the smc proposal computation. -#' This option is used if one of the following methods are used: pmcmc-*. -#' Use 'NULL' to ignore -#' -#' `prune` : The model is pruned if possible. -#' -#' `subsample` : The number of draw to subsample from the posterior -#' distribution. Use in conjuction with `method` smc-apf or smc-bpf. -#' Use 'NULL' to ignore. -#' -#' `resample`: The selected resample placement method, for inference algorithms -#' where applicable. The supported methods are: -#' likelihood (resample immediately after all likelihood updates), -#' align (resample after aligned likelihood updates, forces --align), -#' and manual (sample only at manually defined resampling locations). -#' Use 'NULL' to ignore. -#' -#' @return The R's [base::tempdir()] whreŕe the compile file is stored. -#' @export - -tp_compile <- function(model_file_name = "tmp_model_file", - samples = 1000, - seed = NULL, - method = "smc-bpf", - align = FALSE, - cps = "none", - delay = NULL, - kernel = NULL, - mcmc_lw_gprob = NULL, - pmcmc_particles = NULL, - prune = FALSE, - subsample = NULL, - resample = NULL) { - # if dir = NULL return temp_dir, if not return dir - dir_path <- tp_tempdir() - options(scipen=999) - argum <- paste( - paste0(dir_path, model_file_name, ".tppl"), - paste("-m", method), - paste("--particles", samples), - paste0("--output ", dir_path, model_file_name, ".exe") - ) - - if (cps != "none") { - argum <- paste(argum, paste0("--cps ", cps)) - } - - if (!is.null(seed)) { - argum <- paste(argum, paste0("--seed ", seed)) - } - - if (align) { - argum <- paste(argum, "--align ") - } - - if (!is.null(delay)) { - if (delay == "static") { - argum <- paste(argum, "--static-delay ") - } - if (delay == "dynamic") { - argum <- paste(argum, "--dynamic-delay ") - } - } - - if (!is.null(kernel)) { - argum <- paste(argum, paste0("--kernel --drift ", kernel)) - } - - if (!is.null(mcmc_lw_gprob)) { - argum <- paste(argum, paste0("--mcmc_lw_gprob ", mcmc_lw_gprob)) - } - - if (!is.null(pmcmc_particles)) { - argum <- paste(argum, paste0("--pmcmcParticles ", pmcmc_particles)) - } - - if (prune) { - argum <- paste(argum, "--prune ") - } - - if (!is.null(subsample)) { - argum <- paste(argum, paste0("--subsample -n ", subsample)) - } - - if (!is.null(resample)) { - argum <- paste(argum, paste0("--resample ", resample)) - } - - # Preparing the command line program - tpplc_path <- installing_treeppl() - command <- paste(tpplc_path, argum) - - # Compile program - # Empty LD_LIBRARY_PATH from R_env for this command specifically - # due to conflict with internal env from treeppl self container - system(paste0("LD_LIBRARY_PATH= MCORE_LIBS= ", command)) - - return(dir_path) -} - -#' Run a TreePPL program -#' -#' #' -#' @description -#' `tp_treeppl` execute TreePPL and return TreePPL output (string JSON format). -#' -#' @param model_file_name a character vector giving a model name. -#' @param data_file_name a character vector giving a data name. -#' @param n_runs a [base::integer] giving the number of runs (mcmc)/sweaps (smc). -#' -#' @details -#' -#' `model_file_name` : a character vector giving to [treepplr::tp_treeppl] as -#' a model name. Use a [treepplr::tp_stored_data] name if you have already -#' write your model with [treepplr::tp_treeppl]. -#' -#' `data_file_name` : a character vector giving to [treepplr::tp_treeppl] -#' a data name. Use a [treepplr::tp_stored_data] name if you have already write -#' your data with [treepplr::tp_treeppl]. -#' -#' `n_runs` : The number of run (mcmc) / sweap (smc) used for the inference. -#' -#' @return A list of TreePPL output in parsed JSON format. -#' @export - -tp_run <- function(model_file_name = "tmp_model_file", - data_file_name = "tmp_data_file", - n_runs = 1) { - - n_runs_string <- paste0("--sweeps ", n_runs, " ") - - # if dir_path = NULL return temp_dir, if not return dir - dir_path <- tp_tempdir() - - # n_runs - # Empty LD_LIBRARY_PATH from R_env for this command specifically - # due to conflict with internal env from treeppl self container - command <- paste0("LD_LIBRARY_PATH= MCORE_LIBS= ", dir_path, model_file_name, ".exe ", - dir_path, data_file_name, ".json ", n_runs_string, - paste(">", paste0(dir_path, model_file_name, "_out.json") - )) - system(command) - - json_out <- readLines(paste0(dir_path, model_file_name, "_out.json")) %>% - lapply(jsonlite::fromJSON, simplifyVector = FALSE) - - return(json_out) -} diff --git a/R/utils.R b/R/utils.R index 37f4dab..7d0bc7a 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,6 +1,27 @@ -#' Fetch the latest version of treeppl -#' @export +# Platform-dependent treeppl self-contained installation +installing_treeppl <- function() { + tag <- tp_fp_fetch() + if (Sys.info()['sysname'] == "Windows") { + # No self container for Windows, need to install it manually + "tpplc" + } else if(Sys.info()['sysname'] == "Linux") { + path <- system.file("treeppl-linux", package = "treepplr") + file_name <- paste0("treeppl-",substring(tag, 2)) + } else {#Mac OS have a lot of different name + path <- system.file("treeppl-mac", package = "treepplr") + file_name <- paste0("treeppl-",substring(tag, 2)) + } + # Test if tpplc is already here + tpplc_path <- paste0("/tmp/",file_name,"/tpplc") + if(!file.exists(tpplc_path)) { + utils::untar(list.files(path=path, full.names=TRUE), + exdir="/tmp") + } + tpplc_path +} + +# Fetch the latest version of treeppl tp_fp_fetch <- function() { if (Sys.info()["sysname"] == "Windows") { # no self container for Windows, need to install it manually @@ -53,28 +74,6 @@ tp_fp_fetch <- function() { repo_info[[1]]$tag_name } -# Platform-dependent treeppl self contain installation -installing_treeppl <- function() { - tag <- tp_fp_fetch() - if (Sys.info()['sysname'] == "Windows") { - # No self container for Windows, need to install it manually - "tpplc" - } else if(Sys.info()['sysname'] == "Linux") { - path <- system.file("treeppl-linux", package = "treepplr") - file_name <- paste0("treeppl-",substring(tag, 2)) - } else {#Mac OS have a lot of different name - path <- system.file("treeppl-mac", package = "treepplr") - file_name <- paste0("treeppl-",substring(tag, 2)) - } - # Test if tpplc is already here - tpplc_path <- paste0("/tmp/",file_name,"/tpplc") - if(!file.exists(tpplc_path)) { - utils::untar(list.files(path=path, full.names=TRUE), - exdir="/tmp") - } - tpplc_path -} - #' Temporary directory for running treeppl @@ -118,48 +117,42 @@ sep <- function() { } + +#### Code below needs updating - Stenio is on it #### + + #' Model names supported by treepplr #' -#' @description Provides a list of all model names supported by treepplr. -#' The names can also be used to find data for these models -#' (see [treepplr::tp_data]). +#' @description Provides a list of all models in the TreePPL model library. #' #' @return A list of model names. #' @export -tp_model_names <- function() { - list( - custom = "custom", - coin = "coin", - hostrep3states = "hostrep3states", - hostrep2states = "hostrep2states", - tree_inference = "tree_inference", - crbd = "crbd", - clads = "clads" - ) +tp_model_library <- function() { + + } -# Find model and data files for model_name -find_file <- function(model_name, exten) { - if (exten == "tppl") { - readr::read_file(paste0( - system.file("extdata", package = "treepplr"), - sep(), - model_name, - ".", - exten - )) - } else if (exten == "json") { - jsonlite::fromJSON(paste0( - system.file("extdata", package = "treepplr"), - sep(), - model_name, - ".", - exten - )) - } +# Find model for model_name +tp_find_model <- function(model_name) { + + #### get treeppl version instead of hard coding it #### + res = system(paste0("find /tmp/treeppl-0.2 -name ", model_name, ".tppl"), + intern = T) +} + +# Find data for model_name +tp_find_data <- function(model_name) { + + #### get treeppl version instead of hard coding it #### + system(paste0("find /tmp/treeppl-0.2 -name testdata_", model_name, ".json"), + intern = T) } + + +#### Do we need these? #### + #' Model file names stored by user in [base::tempdir] using #' [treepplr::tp_write] #' @@ -213,30 +206,8 @@ stored_files <- function(exten) { } -#' Create a flat list -#' -#' @description -#' `tp_list` takes a variable number of arguments and returns a list. -#' -#' @param ... Variadic arguments (see details). -#' -#' @details -#' This function takes a variable number of arguments, so that users can pass as -#' arguments either independent lists, or a single structured -#' list of list (name_arg = value_arg). -#' -#' @return A list. -#' @export -#' -tp_list <- function(...) { - dotlist <- list(...) - if (length(dotlist) == 1L && is.list(dotlist[[1]])) { - dotlist <- dotlist[[1]] - } - dotlist -} diff --git a/man/tp_check_input.Rd b/man/tp_check_input.Rd deleted file mode 100644 index d13d516..0000000 --- a/man/tp_check_input.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/checker.R -\name{tp_check_input} -\alias{tp_check_input} -\title{Check input for inference with TreePPL} -\usage{ -tp_check_input(model, data) -} -\arguments{ -\item{model}{A TreePPL model (S3)} - -\item{data}{A list with each item name accordingly to the data structure in the -model.} -} -\value{ -... -} -\description{ -This function checks the input for \code{tp_go()}. -} diff --git a/man/tp_compile.Rd b/man/tp_compile.Rd index f5adb6e..922289a 100644 --- a/man/tp_compile.Rd +++ b/man/tp_compile.Rd @@ -1,108 +1,47 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/runner.R +% Please edit documentation in R/compile.R \name{tp_compile} \alias{tp_compile} -\title{Compile for \code{\link[=tp_run]{tp_run()}}} +\title{Compile a TreePPL model and create inference machinery} \usage{ tp_compile( - model_file_name = "tmp_model_file", - samples = 1000, - seed = NULL, - method = "smc-bpf", - align = FALSE, - cps = "none", - delay = NULL, - kernel = NULL, - mcmc_lw_gprob = NULL, - pmcmc_particles = NULL, - prune = FALSE, - subsample = NULL, - resample = NULL + model, + method, + iterations = NULL, + particles = NULL, + dir = NULL, + output = NULL, + ... ) } \arguments{ -\item{model_file_name}{a character vector giving a model name.} +\item{model}{One of tree options: +\itemize{ +\item The full path of the model file that contains the TreePPL code, OR +\item A string with the name of a model supported by treepplr +(see \code{\link[=tp_model_library]{tp_model_library()}}), OR +\item A string containing the entire TreePPL code. +}} -\item{samples}{a \link[base:integer]{base::integer} giving the number of samples (mcmc) or -particules (smc).} +\item{method}{Inference method to be used. See tp_compile_options() +for all supported methods.} -\item{seed}{a \link[base:numeric]{base::numeric} to use as a random seed.} +\item{iterations}{The number of MCMC iterations to be run.} -\item{method}{a character vector giving the inference method name.} +\item{particles}{The number of SMC particles to be run.} -\item{align}{a \link[base:logical]{base::logical} to tell if need to align the model.} +\item{dir}{The directory where you want to save the executable. Default is +\code{\link[base:tempfile]{base::tempdir()}}} -\item{cps}{a character vector giving the configuration of CPS transformation.} +\item{output}{Complete path to the compiled TreePPL program that will be +created. Default is dir/\if{html}{\out{}}.exe} -\item{delay}{a character vector giving the configuration of delayed sampling.} - -\item{kernel}{a \link[base:numeric]{base::numeric} value giving the driftScale for driftKernel -in MCMC.} - -\item{mcmc_lw_gprob}{a \link[base:numeric]{base::numeric} probability of performing a global -MCMC step.} - -\item{pmcmc_particles}{a \link[base:integer]{base::integer} number of particles for the smc -proposal computation} - -\item{prune}{a \link[base:logical]{base::logical} to tell if the model will try to be pruned.} - -\item{subsample}{a \link[base:integer]{base::integer} number of draw to subsample from the -posterior distribution.} - -\item{resample}{a character vector giving the selected resample placement -method.} +\item{...}{See tp_compile_options() for all supported arguments.} } \value{ -The R's \code{\link[base:tempfile]{base::tempdir()}} whreŕe the compile file is stored. +The path for the compiled TreePPL program. } \description{ -\code{tp_compile} compile a TreePPL model to use by \link{tp_run}. -} -\details{ -\code{model_file_name} : a character vector giving to \link{tp_treeppl} as -a model name. Use a \link{tp_stored_data} name if you have already -write your model with \link{tp_treeppl}. - -\code{seed} : The random seed to use. Using 'NULL' initialized randomly. - -\code{method} : Inference method to be used. The selected inference method. -The supported methods are: is-lw, smc-bpf, smc-apf, mcmc-lightweight, -mcmc-trace, mcmc-naive, pmcmc-pimh. - -The following options are highly dependable of the method used. -Check [not implemented yet] for more information. - -\code{align} : Whether or not to align the model for certain inference algorithms. - -\code{cps} : Configuration of CPS transformation (only applicable to certain -inference algorithms). The supported options are: none, partial, and full. - -\code{delay} : The model is transformed to an efficient representation if -possible. The supported options are: static or dynamic. Use 'NULL' to ignore. - -\code{kernel} : The value of the driftScale for driftKernel in MCMC. Use 'NULL' -to ignore. Use in conjuction with \code{method} mcmc-lightweight". -Use 'NULL' to ignore - -\code{mcmc_lw_gprob} : The probability of performing a global MH step -(non-global means only modify a single sample in the previous trace). -Use in conjuction with \code{method} mcmc-lightweight". Use 'NULL' to ignore - -\code{pmcmc_particles} : The number of particles for the smc proposal computation. -This option is used if one of the following methods are used: pmcmc-*. -Use 'NULL' to ignore - -\code{prune} : The model is pruned if possible. - -\code{subsample} : The number of draw to subsample from the posterior -distribution. Use in conjuction with \code{method} smc-apf or smc-bpf. -Use 'NULL' to ignore. - -\code{resample}: The selected resample placement method, for inference algorithms -where applicable. The supported methods are: -likelihood (resample immediately after all likelihood updates), -align (resample after aligned likelihood updates, forces --align), -and manual (sample only at manually defined resampling locations). -Use 'NULL' to ignore. +\code{tp_compile} compile a TreePPL model and create inference machinery to be +used by \link{tp_run}. } diff --git a/man/tp_compile_options.Rd b/man/tp_compile_options.Rd new file mode 100644 index 0000000..da673c0 --- /dev/null +++ b/man/tp_compile_options.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/compile.R +\name{tp_compile_options} +\alias{tp_compile_options} +\title{Options that can be passed to TreePPL compiler} +\usage{ +tp_compile_options(...) +} +\value{ +A string with the output from the compiler's help +} +\description{ +Options that can be passed to TreePPL compiler +} diff --git a/man/tp_data.Rd b/man/tp_data.Rd index cdec0cc..10f342c 100644 --- a/man/tp_data.Rd +++ b/man/tp_data.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/getter.R +% Please edit documentation in R/data.R \name{tp_data} \alias{tp_data} \title{Import data for TreePPL program} @@ -9,16 +9,18 @@ tp_data(data_input) \arguments{ \item{data_input}{One of tree options: \itemize{ -\item The full path of the JSON file that contains the data, OR +\item A list (or structured list) containing TreePPL data, OR \item A string with the name of a model supported by treepplr -(see \code{\link[=tp_model_names]{tp_model_names()}}), OR -\item A list (or structured list) containing TreePPL data. +(see \code{\link[=tp_model_library]{tp_model_library()}}), OR +\item The full path to the file in TreePPL JSON format containing the data. }} + +\item{dir}{The directory where you want to save the data file in JSON format. +Default is \code{\link[base:tempfile]{base::tempdir()}}.} } \value{ -a list, see \code{\link[=tp_check_input]{tp_check_input()}} for further details. +The path for the data file that will be used by \link{tp_run}. } \description{ -\code{tp_data} takes data and prepares it to be used by -\code{\link[=tp_treeppl]{tp_treeppl()}}. +Prepare data input for \code{\link[=tp_run]{tp_run()}}. } diff --git a/man/tp_expected_input.Rd b/man/tp_expected_input.Rd new file mode 100644 index 0000000..c1c30db --- /dev/null +++ b/man/tp_expected_input.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\name{tp_expected_input} +\alias{tp_expected_input} +\title{List expected input variables for a model} +\usage{ +tp_expected_input(model) +} +\arguments{ +\item{model}{} +} +\value{ +The expected input data for a given TreePPL model. +} +\description{ +List expected input variables for a model +} diff --git a/man/tp_fp_fetch.Rd b/man/tp_fp_fetch.Rd deleted file mode 100644 index 482ca9b..0000000 --- a/man/tp_fp_fetch.Rd +++ /dev/null @@ -1,11 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R -\name{tp_fp_fetch} -\alias{tp_fp_fetch} -\title{Fetch the latest version of treeppl} -\usage{ -tp_fp_fetch() -} -\description{ -Fetch the latest version of treeppl -} diff --git a/man/tp_json_to_phylo.Rd b/man/tp_json_to_phylo.Rd index 63f4c61..e109b44 100644 --- a/man/tp_json_to_phylo.Rd +++ b/man/tp_json_to_phylo.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tree_convertion.R +% Please edit documentation in R/data.R \name{tp_json_to_phylo} \alias{tp_json_to_phylo} \title{Convert TreePPL multi-line JSON to R phylo/multiPhylo object with associated diff --git a/man/tp_list.Rd b/man/tp_list.Rd index 398c14d..f6d953e 100644 --- a/man/tp_list.Rd +++ b/man/tp_list.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R +% Please edit documentation in R/data.R \name{tp_list} \alias{tp_list} \title{Create a flat list} diff --git a/man/tp_model.Rd b/man/tp_model.Rd index 31e4ced..7d9183e 100644 --- a/man/tp_model.Rd +++ b/man/tp_model.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/getter.R +% Please edit documentation in R/compile.R \name{tp_model} \alias{tp_model} \title{Import a TreePPL model} @@ -11,16 +11,14 @@ tp_model(model_input) \itemize{ \item The full path of the model file that contains the TreePPL code, OR \item A string with the name of a model supported by treepplr -(see \code{\link[=tp_model_names]{tp_model_names()}}), OR +(see \code{\link[=tp_model_library]{tp_model_library()}}), OR \item A string containing the entire TreePPL code. }} } \value{ -A TreePPL model (S3). A structured list with the -string containing the TreePPL model and a class -(\code{\link[=tp_model_names]{tp_model_names()}} or "custom") +The path to the TreePPL model file } \description{ \code{tp_model} takes TreePPL code and prepares it to be used by -\code{\link[=tp_treeppl]{tp_treeppl()}}. +\code{\link[=tp_compile]{tp_compile()}}. } diff --git a/man/tp_model_library.Rd b/man/tp_model_library.Rd new file mode 100644 index 0000000..5b327e9 --- /dev/null +++ b/man/tp_model_library.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils.R +\name{tp_model_library} +\alias{tp_model_library} +\title{Model names supported by treepplr} +\usage{ +tp_model_library() +} +\value{ +A list of model names. +} +\description{ +Provides a list of all models in the TreePPL model library. +} diff --git a/man/tp_model_names.Rd b/man/tp_model_names.Rd deleted file mode 100644 index c9ab0bc..0000000 --- a/man/tp_model_names.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R -\name{tp_model_names} -\alias{tp_model_names} -\title{Model names supported by treepplr} -\usage{ -tp_model_names() -} -\value{ -A list of model names. -} -\description{ -Provides a list of all model names supported by treepplr. -The names can also be used to find data for these models -(see \link{tp_data}). -} diff --git a/man/tp_parse.Rd b/man/tp_parse.Rd index da161f8..4f57bf1 100644 --- a/man/tp_parse.Rd +++ b/man/tp_parse.Rd @@ -8,7 +8,7 @@ tp_parse(treeppl_out) } \arguments{ \item{treeppl_out}{a character vector giving the TreePPL json output -produced by \link{tp_treeppl}.} +produced by \link{tp_run}.} } \value{ A data frame with the output from inference in TreePPL. diff --git a/man/tp_parse_host_rep.Rd b/man/tp_parse_host_rep.Rd index fb84097..66f7df7 100644 --- a/man/tp_parse_host_rep.Rd +++ b/man/tp_parse_host_rep.Rd @@ -8,7 +8,7 @@ tp_parse_host_rep(treeppl_out) } \arguments{ \item{treeppl_out}{a character vector giving the TreePPL json output -produced by \link{tp_treeppl}.} +produced by \link{tp_run}.} } \value{ A list (n = n_runs) of data frames with the output from inference diff --git a/man/tp_phylo_to_tpjson.Rd b/man/tp_phylo_to_tpjson.Rd index 1677cef..bad16bb 100644 --- a/man/tp_phylo_to_tpjson.Rd +++ b/man/tp_phylo_to_tpjson.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tree_convertion.R +% Please edit documentation in R/data.R \name{tp_phylo_to_tpjson} \alias{tp_phylo_to_tpjson} \title{Convert phylo obj to TreePPL tree} diff --git a/man/tp_phylo_to_tppl_tree.Rd b/man/tp_phylo_to_tppl_tree.Rd index 57e25ef..08427d6 100644 --- a/man/tp_phylo_to_tppl_tree.Rd +++ b/man/tp_phylo_to_tppl_tree.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tree_convertion.R +% Please edit documentation in R/data.R \name{tp_phylo_to_tppl_tree} \alias{tp_phylo_to_tppl_tree} \title{Convert phylo to a tppl_tree} diff --git a/man/tp_run.Rd b/man/tp_run.Rd index cfc0852..0cdfb20 100644 --- a/man/tp_run.Rd +++ b/man/tp_run.Rd @@ -1,38 +1,63 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/runner.R +% Please edit documentation in R/run.R \name{tp_run} \alias{tp_run} \title{Run a TreePPL program} \usage{ tp_run( - model_file_name = "tmp_model_file", - data_file_name = "tmp_data_file", - n_runs = 1 + compiled_model, + data, + n_runs = NULL, + n_sweeps = NULL, + dir = NULL, + out_file_name = "out", + ... ) } \arguments{ -\item{model_file_name}{a character vector giving a model name.} +\item{compiled_model}{a \link[base:character]{base::character} with the full path to the compiled model +outputted by \link{tp_compile}.} -\item{data_file_name}{a character vector giving a data name.} +\item{data}{a \link[base:character]{base::character} with the full path to the data file in JSON format +outputted by \link{tp_data}.} -\item{n_runs}{a \link[base:integer]{base::integer} giving the number of runs (mcmc)/sweaps (smc).} +\item{n_runs}{When using MCMC, a \link[base:integer]{base::integer} giving the number of runs to be done.} + +\item{n_sweeps}{When using SMC, a \link[base:integer]{base::integer} giving the number of SMC sweeps to be done.} + +\item{dir}{a \link[base:character]{base::character} with the full path to the directory where you +want to save the output. Default is \code{\link[base:tempfile]{base::tempdir()}}.} + +\item{out_file_name}{a \link[base:character]{base::character} with the name of the output file in +JSON format. Default is "out".} + +\item{...}{See \link{tp_run_options} for all supported arguments.} } \value{ A list of TreePPL output in parsed JSON format. } \description{ -\code{tp_treeppl} execute TreePPL and return TreePPL output (string JSON format). +Run TreePPL and return output. } -\details{ -#' +\examples{ +# When using SMC +# compile model and create SMC inference machinery +exe_path <- tp_compile(model = "coin", method = "smc-bpf", particles = 2000) + +# prepare data +data_path <- tp_data(data_input = "coin") + +# run TreePPL +result <- tp_run(exe_path, data_path, n_sweeps = 2) + -\code{model_file_name} : a character vector giving to \link{tp_treeppl} as -a model name. Use a \link{tp_stored_data} name if you have already -write your model with \link{tp_treeppl}. +# When using MCMC +# compile model and create MCMC inference machinery +exe_path <- tp_compile(model = "coin", method = "mcmc-naive", iterations = 2000) -\code{data_file_name} : a character vector giving to \link{tp_treeppl} -a data name. Use a \link{tp_stored_data} name if you have already write -your data with \link{tp_treeppl}. +# prepare data +data_path <- tp_data(data_input = "coin") -\code{n_runs} : The number of run (mcmc) / sweap (smc) used for the inference. +# run TreePPL +result <- tp_run(exe_path, data_path, n_runs = 2) } diff --git a/man/tp_run_options.Rd b/man/tp_run_options.Rd new file mode 100644 index 0000000..e972ddb --- /dev/null +++ b/man/tp_run_options.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/run.R +\name{tp_run_options} +\alias{tp_run_options} +\title{Options that can be passed to a TreePPL program} +\usage{ +tp_run_options(...) +} +\value{ +A string with the output from the executable's help +} +\description{ +Options that can be passed to a TreePPL program +} diff --git a/man/tp_smc_convergence.Rd b/man/tp_smc_convergence.Rd index 732c60c..6a5a12f 100644 --- a/man/tp_smc_convergence.Rd +++ b/man/tp_smc_convergence.Rd @@ -8,7 +8,7 @@ tp_smc_convergence(treeppl_out) } \arguments{ \item{treeppl_out}{a character vector giving the TreePPL json output -produced by \link{tp_treeppl}.} +produced by \link{tp_run}.} } \value{ Variance in the normalizing constants across SMC sweeps. diff --git a/man/tp_treeppl.Rd b/man/tp_treeppl.Rd deleted file mode 100644 index f43a9c7..0000000 --- a/man/tp_treeppl.Rd +++ /dev/null @@ -1,153 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/runner.R -\name{tp_treeppl} -\alias{tp_treeppl} -\title{Compile and run a TreePPL program} -\usage{ -tp_treeppl( - model = NULL, - model_file_name = "tmp_model_file", - data = NULL, - data_file_name = "tmp_data_file", - compile_model = TRUE, - samples = 1000, - seed = NULL, - n_runs = 1, - method = "smc-bpf", - align = FALSE, - cps = "none", - delay = NULL, - kernel = NULL, - mcmc_lw_gprob = NULL, - pmcmc_particles = NULL, - prune = FALSE, - subsample = NULL, - resample = NULL -) -} -\arguments{ -\item{model}{a TreePPL model (S3).} - -\item{model_file_name}{a character vector giving a model name.} - -\item{data}{a phyjson object (S3).} - -\item{data_file_name}{a character vector giving a data name.} - -\item{compile_model}{a \link[base:logical]{base::logical} to tell if the model need to be -compile} - -\item{samples}{a \link[base:integer]{base::integer} giving the number of samples (mcmc) or -particules (smc).} - -\item{seed}{a \link[base:numeric]{base::numeric} to use as a random seed.} - -\item{n_runs}{a \link[base:integer]{base::integer} giving the number of run (mcmc)/sweap (smc).} - -\item{method}{a character vector giving the inference method name.} - -\item{align}{a \link[base:logical]{base::logical} to tell if need to align the model.} - -\item{cps}{a character vector giving the configuration of CPS transformation.} - -\item{delay}{a character vector giving the configuration of delayed sampling.} - -\item{kernel}{a \link[base:numeric]{base::numeric} value giving the driftScale for driftKernel -in MCMC.} - -\item{mcmc_lw_gprob}{a \link[base:numeric]{base::numeric} probability of performing a global -MCMC step.} - -\item{pmcmc_particles}{a \link[base:integer]{base::integer} number of particles for the smc -proposal computation} - -\item{prune}{a \link[base:logical]{base::logical} to tell if the model will try to be pruned.} - -\item{subsample}{a \link[base:integer]{base::integer} number of draw to subsample from the -posterior distribution.} - -\item{resample}{a character vector giving the selected resample placement -method} -} -\value{ -A list of TreePPL output in parsed JSON format. -} -\description{ -\code{tp_treeppl} execute TreePPL and return TreePPL output (string JSON format). -} -\details{ -This function takes TreePPL object (S3) and phyjson object (S3), -compile TreePPL model, run it with data and returning TreePPL output. - -TreePPL need to be install on your computer and the PATH set for R/RSTUDIO -(see \href{https://treeppl.org/docs/Howtos}{install} manual). -The executable and the output files will be written in R's \code{\link[base:tempfile]{base::tempdir()}}. - -\code{model} : A TreePPL model (S3), see \link{tp_model} for further details. -Use 'NULL' if you have previously provide an model. Check already provide -model with \link{tp_stored_model}. - -\code{model_file_name} : a character vector giving to \link{tp_treeppl} as -a model name. Use a \link{tp_stored_data} name if you have already -write your model with \link{tp_treeppl}. - -\code{data} : A list, see \code{\link[=tp_check_input]{tp_check_input()}} for further -details. Use 'NULL' if you have previously provide data. Check already -provide data with \link{tp_stored_data}. - -\code{data_file_name} : a character vector giving to \link{tp_treeppl} -a data name. Use a \link{tp_stored_data} name if you have already write -your data with \link{tp_treeppl}. - -\code{compile_model} : a \link[base:logical]{base::logical} telling if the model need to be compiled. -Can be use to avoid to compile a model again in R's \code{\link[base:tempfile]{base::tempdir()}} -if you have already compile a \code{model} in a previous call of -\link{tp_treeppl}. Check already compile model -with \link{tp_stored_compiled}. - -\code{samples} : The number of samples (mcmc) / particules (smc) during inference. - -\code{seed} : The random seed to use. Using 'NULL' initialized randomly. - -\code{n_runs} : The number of run (mcmc) / sweap (smc) used for the inference. - -\code{method} : Inference method to be used. The selected inference method. -The supported methods are: is-lw, smc-bpf, smc-apf, mcmc-lightweight, -mcmc-trace, mcmc-naive, pmcmc-pimh. - -The following options are highly dependable of the method used. -Check [not implemented yet] for more information. - -\code{align} : Whether or not to align the model for certain inference algorithms. - -\code{cps} : Configuration of CPS transformation (only applicable to certain -inference algorithms). The supported options are: none, partial, and full. - -\code{delay} : The model is transformed to an efficient representation if -possible. The supported options are: static or dynamic. Use 'NULL' to ignore. - -\code{kernel} : The value of the driftScale for driftKernel in MCMC. Use 'NULL' -to ignore. Use in conjuction with \code{method} mcmc-lightweight". -Use 'NULL' to ignore - -\code{mcmc_lw_gprob} : The probability of performing a global MH step -(non-global means only modify a single sample in the previous trace). -Use in conjuction with \code{method} mcmc-lightweight". Use 'NULL' to ignore - -\code{pmcmc_particles} : The number of particles for the smc proposal computation. -This option is used if one of the following methods are used: pmcmc-*. -Use 'NULL' to ignore - -\code{prune} : The model is pruned if possible. - -\code{subsample} : The number of draw to subsample from the posterior -distribution. Use in conjuction with \code{method} smc-apf or smc-bpf. -Use 'NULL' to ignore. - -\code{resample}: The selected resample placement method, for inference algorithms -where applicable. The supported methods are: -likelihood (resample immediately after all likelihood updates), -align (resample after aligned likelihood updates, forces --align), -and manual (sample only at manually defined resampling locations). -Use 'NULL' to ignore. -} diff --git a/man/tp_treeppl_json.Rd b/man/tp_treeppl_json.Rd index 2cc5ebd..557b778 100644 --- a/man/tp_treeppl_json.Rd +++ b/man/tp_treeppl_json.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tree_convertion.R +% Please edit documentation in R/data.R \name{tp_treeppl_json} \alias{tp_treeppl_json} \title{Convert a tppl_tree to TreePPL json str} diff --git a/man/tp_write.Rd b/man/tp_write.Rd deleted file mode 100644 index 0f2fa39..0000000 --- a/man/tp_write.Rd +++ /dev/null @@ -1,45 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/runner.R -\name{tp_write} -\alias{tp_write} -\title{Prepare input for \code{\link[=tp_compile]{tp_compile()}}} -\usage{ -tp_write( - model = NULL, - model_file_name = "tmp_model_file", - data = NULL, - data_file_name = "tmp_data_file" -) -} -\arguments{ -\item{model}{a TreePPL model (S3).} - -\item{model_file_name}{a character vector giving a model name.} - -\item{data}{a phyjson object (S3).} - -\item{data_file_name}{a character vector giving a data name.} -} -\description{ -\code{tp_write} writes an JSON file to be used by \code{\link[=tp_compile]{tp_compile()}}. -} -\details{ -This function takes TreePPL object (S3) and phyjson object (S3) and write -them in \code{\link[base:tempfile]{base::tempdir()}}. - -\code{model} : A TreePPL model (S3), see \link{tp_model} for further details. -Use 'NULL' if you have previously provide an model. Check already provide -model with \link{tp_stored_model}. - -\code{model_file_name} : a character vector giving to \link{tp_treeppl} as -a model name. Use a \link{tp_stored_data} name if you have already -write your model with \link{tp_write}. - -\code{data} : A list, see \code{\link[=tp_check_input]{tp_check_input()}} for further -details. Use 'NULL' if you have previously provide data. Check already -provide data with \link{tp_stored_data}. - -\code{data_file_name} : a character vector giving to \link{tp_treeppl} -a data name. Use a \link{tp_stored_data} name if you have already write -your data with \link{tp_write}. -} diff --git a/man/tree_age_cumul.Rd b/man/tree_age_cumul.Rd index 7835d47..ef8f304 100644 --- a/man/tree_age_cumul.Rd +++ b/man/tree_age_cumul.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tree_convertion.R +% Please edit documentation in R/data.R \name{tree_age_cumul} \alias{tree_age_cumul} \title{Calculate age in a tppl_tree} From 63f71dd556c0ab9f8aa6b2f2913c6062305b03b0 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Wed, 28 Jan 2026 14:41:53 +0100 Subject: [PATCH 03/25] Add package overview vignette --- R/utils.R | 35 ++++++++-- vignettes/overview.Rmd | 148 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+), 4 deletions(-) create mode 100644 vignettes/overview.Rmd diff --git a/R/utils.R b/R/utils.R index 7d0bc7a..fd772eb 100644 --- a/R/utils.R +++ b/R/utils.R @@ -129,6 +129,25 @@ sep <- function() { #' @export tp_model_library <- function() { + # take whatever treeppl version is in the tmp + fd <- list.files("/tmp", pattern = "treeppl", full.names = TRUE) + # make sure you get the most recent version if you have more than one treeppl folder in the tmp + fd <- sort(fd, decreasing = TRUE)[1] + # go to the right treeppl folder, whatever it is called + fd <- list.files(fd, pattern = "treeppl", full.names = TRUE) + # add the rest of the path + fd <- paste0(fd, "/lib/mcore/treeppl/models/") + # model names + mn <- list.files(fd, full.names = TRUE, recursive = TRUE, pattern = "\\.tppl$") + # results in a data frame + rs <- data.frame( + "category" = sub(".*models//([^/]+)/.*", "\\1", mn), + "model_name" = sub(".*/([^/]+)\\.tppl$", "\\1", mn) + ) + # order by category then by model name + rs <- rs[order(rs$category, rs$model_name, decreasing = FALSE), ] + rownames(rs) <- NULL + rs } @@ -136,16 +155,24 @@ tp_model_library <- function() { # Find model for model_name tp_find_model <- function(model_name) { - #### get treeppl version instead of hard coding it #### - res = system(paste0("find /tmp/treeppl-0.2 -name ", model_name, ".tppl"), + # take whatever treeppl version is in the tmp + version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) + # make sure you get the most recent version if you have more than one treeppl folder in the tmp + version <- sort(version, decreasing = TRUE)[1] + + res = system(paste0("find /tmp/", version," -name ", model_name, ".tppl"), intern = T) } # Find data for model_name tp_find_data <- function(model_name) { - #### get treeppl version instead of hard coding it #### - system(paste0("find /tmp/treeppl-0.2 -name testdata_", model_name, ".json"), + # take whatever treeppl version is in the tmp + version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) + # make sure you get the most recent version if you have more than one treeppl folder in the tmp + version <- sort(version, decreasing = TRUE)[1] + + system(paste0("find /tmp/", version ," -name testdata_", model_name, ".json"), intern = T) } diff --git a/vignettes/overview.Rmd b/vignettes/overview.Rmd new file mode 100644 index 0000000..1d9c38f --- /dev/null +++ b/vignettes/overview.Rmd @@ -0,0 +1,148 @@ +--- +title: "Quick package overview" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{overview} + %\VignetteEncoding{UTF-8} + %\VignetteEngine{knitr::rmarkdown} +editor_options: + chunk_output_type: console +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + warning = FALSE, + message = FALSE, + eval = FALSE +) + +options(rmarkdown.html_vignette.check_title = FALSE) +``` + +```{r setup, echo=FALSE} +library(treepplr) +``` + +`treepplr` is an interface for using the TreePPL program. All functions start +with `tp_` to easily distinguish them from functions from other packages. + +The three necessary parts for doing analysis with TreePPL are: model, data and +inference machinery. + +## Model + +You can choose a model in TreePPL language from our +[library](https://treeppl.org/docs/model-library) or you can write your own model. + +To list all available models in our library, use `tp_model_library()` to retrieve +the models within the [TreePPL github repository](https://github.com/treeppl/treeppl/tree/main/models). + +```{r} +model_lib <- tp_model_library() +``` + +To use one of these models you just need it's name in `model_lib$model_name` + +If you want to use your own custom model, you will need to write it in TreePPL +language and pass it to an R object that contains either the full path to the +`.tppl` file containing the model, or a string with the full model. + +```{r} +# import a model from file +model_path <- "path/to/my_model.tppl" +``` + +## Data + + + + + + + + + +TreePPL only reads a custom JSON format, so `treepplr` converts a variety of +input data to this format and writes to file, which will then be used by TreePPL. +Here are some examples: + +```{r} +# for models that only need a phylogenetic tree +phylo <- ape::read.tree(file = "path/to/your/file.tre") +data_path <- tp_data(data_input = phylo) + +# or sequence data +fasta_file <- "path/to/your/file.fasta" +data_path <- tp_data(data_input = fasta_file) +``` + +As for models, you can also use test datasets from the TreePPL library by passing +the name of the model (we'll come back to this later). + +## Inference method + +TreePPL offers a variety of inference methods. Different methods work best for +different models. See the [model library](https://treeppl.org/docs/model-library) +for our recommendations of which inference methods to choose for each model. + + + + + + + + + +## Compilation + +Once you have chosen the model and the inference method you want to use, you can +compile your model to en executable that also contains the necessary machinery +to run the chosen inference method. + +```{r} +# Using a model from the library and a Sequential Monte Carlo method +exe_path <- tp_compile(model = "crbd", method = "smc-apf", particles = 10000) + +# Using a custom model and a Markov chain Monte Carlo method +exe_path <- tp_compile(model = model_path, method = "mcmc-lightweight", + iterations = 10000) +``` + + +## Running + +Now you are ready to run your analysis. All you have to do is to pass your data +to the compiled executable and choose how many independent runs you want to do. + +```{r} +output <- tp_run(compiled_model = exe_path, data = data_path, n_runs = 4) +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + From 23c9a2444aaacefaed35f58a7e76e224a42e23cc Mon Sep 17 00:00:00 2001 From: foersterst Date: Tue, 27 Jan 2026 17:08:00 +0200 Subject: [PATCH 04/25] added function to read fasta and nexus for tree inference --- R/utils.R | 69 +++++++++++++++++++++++++++++++ inst/extdata/tree_inference.fasta | 8 ++++ inst/extdata/tree_inference.nexus | 31 ++++++++++++++ man/tp_data.Rd | 24 +++++++++-- 4 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 inst/extdata/tree_inference.fasta create mode 100644 inst/extdata/tree_inference.nexus diff --git a/R/utils.R b/R/utils.R index fd772eb..c737c0a 100644 --- a/R/utils.R +++ b/R/utils.R @@ -236,5 +236,74 @@ stored_files <- function(exten) { +# Read alignment in FASTA or NEXUS (for tree inference) +read_aln <- function(file) { + # define the encoding + # NB: everything that is not ACTG will be replace with gap ("-") within the function + base_code <- c( + "A" = 0, + "C" = 1, + "G" = 2, + "T" = 3, + "-" = 4 + ) + + # Print an error message if the input is not in fasta or nexus + if (!grepl("\\.(fasta|fas|nexus|nex)$", file, ignore.case = TRUE)) { + stop("Please, provide an input file in fasta or nexus format") + } + + # If the input is a FASTA file + else if (grepl("\\.(fasta|fas)$", file, ignore.case = TRUE)) { + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + #nm <- gsub(">", "", raw[grepl(">", raw)]) # sequence names + sq <- raw[!grepl(">", raw)] # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + + # If the input is a NEXUS file + } else if (grepl("\\.(nexus|nex)$", file, ignore.case = TRUE)) { + # nexus matrix block + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + start <- grep("^[[:space:]]*matrix[[:space:]]*$", tolower(raw)) + end <- grep(";", raw) + end <- end[end > start][1] + mat <- raw[(start + 1):(end - 1)] # extract contents + mat <- trimws(mat) + mat <- mat[nzchar(mat)] # remove empty entries + #nm <- sub("\\s+.*$", "", mat) # sequence names (split on the 1st white space) + sq <- sub("^\\S+\\s+", "", mat) # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + } +} diff --git a/inst/extdata/tree_inference.fasta b/inst/extdata/tree_inference.fasta new file mode 100644 index 0000000..b458523 --- /dev/null +++ b/inst/extdata/tree_inference.fasta @@ -0,0 +1,8 @@ +>seq1 +ccagtaaaatccttg +>seq2 +ccagacaaatcacca +>seq3 +aaccagcaaagatta +>seq4 +aaccatacaaggtca \ No newline at end of file diff --git a/inst/extdata/tree_inference.nexus b/inst/extdata/tree_inference.nexus new file mode 100644 index 0000000..cc230e1 --- /dev/null +++ b/inst/extdata/tree_inference.nexus @@ -0,0 +1,31 @@ +#NEXUS + +BEGIN DATA; +DIMENSIONS NTAX=4 NCHAR=15; +FORMAT DATATYPE=DNA GAP=- MISSING=?; +MATRIX + +seq1 ccagtaaaatccttg +seq2 ccagacaaatcacca +seq3 aaccagcaaagatta +seq4 aaccatacaaggtca +; + +END; + +BEGIN ASSUMPTIONS; +EXSET * UNTITLED = ; +END; + +BEGIN CODONS; +CODONPOSSET * CodonPositions = + N:, + 1: 1-13\3, + 2: 2-14\3, + 3: 3-15\3; +CODESET * UNTITLED = Universal: all ; +END; + +BEGIN SETS; +END; + diff --git a/man/tp_data.Rd b/man/tp_data.Rd index 10f342c..017253f 100644 --- a/man/tp_data.Rd +++ b/man/tp_data.Rd @@ -7,12 +7,14 @@ tp_data(data_input) } \arguments{ -\item{data_input}{One of tree options: +\item{data_input}{One of the following options: \itemize{ \item A list (or structured list) containing TreePPL data, OR \item A string with the name of a model supported by treepplr -(see \code{\link[=tp_model_library]{tp_model_library()}}), OR -\item The full path to the file in TreePPL JSON format containing the data. +(see \code{\link[=tp_model_names]{tp_model_names()}}), OR +\item A list (or structured list) containing TreePPL data, OR +\item The full path of a multiple sequence alignment in fasta (.fasta, .fas) or nexus (.nexus, .nex) format; +currently supported for \code{tree_inference} only, (see \code{\link[=tp_model_names]{tp_model_names()}}). }} \item{dir}{The directory where you want to save the data file in JSON format. @@ -22,5 +24,19 @@ Default is \code{\link[base:tempfile]{base::tempdir()}}.} The path for the data file that will be used by \link{tp_run}. } \description{ -Prepare data input for \code{\link[=tp_run]{tp_run()}}. +\code{tp_data} takes data and prepares it to be used by +\code{\link[=tp_treeppl]{tp_treeppl()}}. +} +\examples{ +\donttest{ +# Example using a model name supported by TreePPL +input <- tp_data("tree_inference") +input + +# Example using an internal FASTA file (same input data as before, but in fasta format) +fasta_file <- system.file("extdata", "tree_inference.fasta", package = "treepplr") +input <- tp_data(fasta_file) +input +} + } From f249da08db657aa705e4b29d3ec1862b50090d6b Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Wed, 28 Jan 2026 15:53:12 +0100 Subject: [PATCH 05/25] Complete merge of tp_data --- R/data.R | 77 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/R/data.R b/R/data.R index 7e45d77..4a825f6 100644 --- a/R/data.R +++ b/R/data.R @@ -19,57 +19,78 @@ tp_expected_input <- function(model) { #' @description #' Prepare data input for [treepplr::tp_run()]. #' -#' @param data_input One of tree options: +#' @param data_input One of the following options: #' * A list (or structured list) containing TreePPL data, OR -#' * A string with the name of a model supported by treepplr -#' (see [treepplr::tp_model_library()]), OR -#' * The full path to the file in TreePPL JSON format containing the data. +#' * The full path to the file in TreePPL JSON format containing the data, OR +#' * The full path of a multiple sequence alignment in fasta (.fasta, .fas) +#' or nexus (.nexus, .nex) format, OR +#' * For test data, a string with the name of a model supported by treepplr +#' (see [treepplr::tp_model_library()]). +#' #' @param dir The directory where you want to save the data file in JSON format. #' Default is [base::tempdir()]. #' -#' @return The path for the data file that will be used by [treepplr::tp_run]. +#' @return The path for the data file that will be used by [treepplr::tp_run()]. #' @export +#' @examples +#' \donttest{ +#' # Example using a model name supported by TreePPL +#' input <- tp_data("tree_inference") +#' input +#' +#' # Example using an internal FASTA file (same input data as before, but in fasta format) +#' fasta_file <- system.file("extdata", "tree_inference.fasta", package = "treepplr") +#' input <- tp_data(fasta_file) +#' input +#'} #' tp_data <- function(data_input) { if (assertthat::is.string(data_input)) { - res <- try(file.exists(data_input), silent = TRUE) - - # If path exists, import data from file - if (!is(res, "try-error") && res) { - data_path <- data_input + if (grepl("\\.(fasta|fas|nexus|nex)$", data_input, ignore.case = TRUE)) { + data <- read_aln(data_input) + data_list <- tp_list(list(data)) + data_path <- tp_write_data(data_list) names(data_path) <- "data" - # If path doesn't exist } else { - res_lib <- tp_find_data(data_input) - # model_input has the name of a known model - if (length(res_lib) != 0) { - data_path <- res_lib - names(data_path) <- paste0("testdata_",data_input) + res <- try(file.exists(data_input), silent = TRUE) + # If path exists, import data from file + if (!is(res, "try-error") && res) { + data_path <- data_input + names(data_path) <- "data" + + # If path doesn't exist } else { - stop("Invalid input string.") + res_lib <- tp_find_data(data_input) + + # model_input has the name of a known model + if (length(res_lib) != 0) { + data_path <- res_lib + names(data_path) <- paste0("testdata_",data_input) + + } else { + stop("Invalid input string.") + } } } - # OR data_input is a list (or a structured list) - } else if (is.list(data_input)) { - # flatten the list - data_list <- tp_list(data_input) - # write json with input data - if (!is.null(data)) { + # OR data_input is a list (or a structured list) + } else if (is.list(data_input)) { + # flatten the list + data_list <- tp_list(data_input) + # write json with input data data_path <- tp_write_data(data_list) names(data_path) <- "data" - } - } else { - stop("Unknow R type (not a valid path, known data model, or list") - } + } else { + stop("Unknow R type (not a valid path, known data model, or list") + } - return(data_path) + return(data_path) } From db8069d3585e5e989882e9d6f529ead20db2219f Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Wed, 28 Jan 2026 17:33:30 +0100 Subject: [PATCH 06/25] Remove option of path to json in tp_data --- R/compile.R | 2 ++ R/data.R | 46 ++++++++++++++++++---------------------------- R/run.R | 4 ++-- 3 files changed, 22 insertions(+), 30 deletions(-) diff --git a/R/compile.R b/R/compile.R index a8d90cb..02e47cf 100644 --- a/R/compile.R +++ b/R/compile.R @@ -5,6 +5,8 @@ #' tp_compile_options <- function(...) { + #### under development #### + # text from tpplc --help return() diff --git a/R/data.R b/R/data.R index 4a825f6..de63b6c 100644 --- a/R/data.R +++ b/R/data.R @@ -21,7 +21,6 @@ tp_expected_input <- function(model) { #' #' @param data_input One of the following options: #' * A list (or structured list) containing TreePPL data, OR -#' * The full path to the file in TreePPL JSON format containing the data, OR #' * The full path of a multiple sequence alignment in fasta (.fasta, .fas) #' or nexus (.nexus, .nex) format, OR #' * For test data, a string with the name of a model supported by treepplr @@ -56,41 +55,32 @@ tp_data <- function(data_input) { } else { - res <- try(file.exists(data_input), silent = TRUE) + res_lib <- tp_find_data(data_input) - # If path exists, import data from file - if (!is(res, "try-error") && res) { - data_path <- data_input - names(data_path) <- "data" + # model_input has the name of a known model + if (length(res_lib) != 0) { + data_path <- res_lib + names(data_path) <- paste0("testdata_",data_input) - # If path doesn't exist } else { - res_lib <- tp_find_data(data_input) - - # model_input has the name of a known model - if (length(res_lib) != 0) { - data_path <- res_lib - names(data_path) <- paste0("testdata_",data_input) - - } else { - stop("Invalid input string.") - } + stop("Invalid input string.") } } - # OR data_input is a list (or a structured list) - } else if (is.list(data_input)) { - # flatten the list - data_list <- tp_list(data_input) - # write json with input data - data_path <- tp_write_data(data_list) - names(data_path) <- "data" + # OR data_input is a list (or a structured list) + } else if (is.list(data_input)) { - } else { - stop("Unknow R type (not a valid path, known data model, or list") - } + # flatten the list + data_list <- tp_list(data_input) + # write json with input data + data_path <- tp_write_data(data_list) + names(data_path) <- "data" + + } else { + stop("Unknow R type (not a valid path, known data model, or list") + } - return(data_path) + return(data_path) } diff --git a/R/run.R b/R/run.R index eb6ce38..357c4c5 100644 --- a/R/run.R +++ b/R/run.R @@ -20,8 +20,8 @@ tp_run_options <- function(...) { #' #' @param compiled_model a [base::character] with the full path to the compiled model #' outputted by [treepplr::tp_compile]. -#' @param data a [base::character] with the full path to the data file in JSON format -#' outputted by [treepplr::tp_data]. +#' @param data a [base::character] with the full path to the data file in TreePPL +#' JSON format (as outputted by [treepplr::tp_data]). #' @param n_runs When using MCMC, a [base::integer] giving the number of runs to be done. #' @param n_sweeps When using SMC, a [base::integer] giving the number of SMC sweeps to be done. #' @param dir a [base::character] with the full path to the directory where you From 29ad813cdf8e1e9dcf59fedbb7c22f46e77b9245 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 10:42:20 +0100 Subject: [PATCH 07/25] Replace magrittr with base r pipe --- DESCRIPTION | 7 +++---- NAMESPACE | 6 +----- R/post_treatment.R | 6 +++--- R/run.R | 2 +- R/treepplr-package.R | 2 +- R/utils-pipe.R | 14 -------------- man/pipe.Rd | 20 -------------------- 7 files changed, 9 insertions(+), 48 deletions(-) delete mode 100644 R/utils-pipe.R delete mode 100644 man/pipe.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 3263b24..4c59ad2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -25,8 +25,8 @@ Imports: gh, curl, cli, - magrittr, - bnpsd + bnpsd, + rlang Suggests: devtools, ggplot2, @@ -40,8 +40,7 @@ Suggests: treeio (>= 1.32.0), rmarkdown, pandoc, - dplyr, - rlang + dplyr VignetteBuilder: knitr Config/Needs/website: rmarkdown Remotes: diff --git a/NAMESPACE b/NAMESPACE index 05ab462..47c57ef 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,6 +1,5 @@ # Generated by roxygen2: do not edit by hand -export("%>%") export(tp_compile) export(tp_compile_options) export(tp_data) @@ -14,11 +13,8 @@ export(tp_phylo_to_tpjson) export(tp_run) export(tp_run_options) export(tp_smc_convergence) -export(tp_stored_compiled) -export(tp_stored_data) -export(tp_stored_model) export(tp_tempdir) export(tp_treeppl_json) importFrom(bnpsd,tree_reorder) -importFrom(magrittr,"%>%") importFrom(methods,is) +importFrom(rlang,.data) diff --git a/R/post_treatment.R b/R/post_treatment.R index 2baca7e..5829de6 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -240,9 +240,9 @@ peel_tree <- function(subtree, tp_smc_convergence <- function(treeppl_out) { output <- tp_parse(treeppl_out) - zs <- output %>% - dplyr::slice_head(n = 1, by = run) %>% - dplyr::pull(norm_const) + zs <- output |> + dplyr::slice_head(n = 1, by = .data$run) |> + dplyr::pull(.data$norm_const) return(var(zs)) } diff --git a/R/run.R b/R/run.R index 357c4c5..1b9ccf2 100644 --- a/R/run.R +++ b/R/run.R @@ -98,7 +98,7 @@ tp_run <- function(compiled_model, # simple parsing #### change this? #### - json_out <- readLines(output_path) %>% + json_out <- readLines(output_path) |> lapply(jsonlite::fromJSON, simplifyVector = FALSE) return(json_out) diff --git a/R/treepplr-package.R b/R/treepplr-package.R index c53e54c..6f0d354 100644 --- a/R/treepplr-package.R +++ b/R/treepplr-package.R @@ -3,7 +3,7 @@ ## usethis namespace: start #' @importFrom bnpsd tree_reorder -#' @importFrom magrittr %>% #' @importFrom methods is +#' @importFrom rlang .data ## usethis namespace: end NULL diff --git a/R/utils-pipe.R b/R/utils-pipe.R deleted file mode 100644 index fd0b1d1..0000000 --- a/R/utils-pipe.R +++ /dev/null @@ -1,14 +0,0 @@ -#' Pipe operator -#' -#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. -#' -#' @name %>% -#' @rdname pipe -#' @keywords internal -#' @export -#' @importFrom magrittr %>% -#' @usage lhs \%>\% rhs -#' @param lhs A value or the magrittr placeholder. -#' @param rhs A function call using the magrittr semantics. -#' @return The result of calling `rhs(lhs)`. -NULL diff --git a/man/pipe.Rd b/man/pipe.Rd deleted file mode 100644 index a648c29..0000000 --- a/man/pipe.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils-pipe.R -\name{\%>\%} -\alias{\%>\%} -\title{Pipe operator} -\usage{ -lhs \%>\% rhs -} -\arguments{ -\item{lhs}{A value or the magrittr placeholder.} - -\item{rhs}{A function call using the magrittr semantics.} -} -\value{ -The result of calling \code{rhs(lhs)}. -} -\description{ -See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. -} -\keyword{internal} From dfe951f56ab7a70eb31bedf6cd1017b5b55148b0 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 11:47:17 +0100 Subject: [PATCH 08/25] Update coin vignette with new functions --- NAMESPACE | 4 +- R/compile.R | 2 +- R/post_treatment.R | 55 ++++++++++++++++-- man/tp_parse_mcmc.Rd | 18 ++++++ man/{tp_parse.Rd => tp_parse_smc.Rd} | 12 ++-- vignettes/coin-example.Rmd | 86 +++++++++++++++------------- 6 files changed, 125 insertions(+), 52 deletions(-) create mode 100644 man/tp_parse_mcmc.Rd rename man/{tp_parse.Rd => tp_parse_smc.Rd} (53%) diff --git a/NAMESPACE b/NAMESPACE index 47c57ef..0765ff8 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -6,9 +6,11 @@ export(tp_data) export(tp_expected_input) export(tp_json_to_phylo) export(tp_map_tree) +export(tp_model) export(tp_model_library) -export(tp_parse) export(tp_parse_host_rep) +export(tp_parse_mcmc) +export(tp_parse_smc) export(tp_phylo_to_tpjson) export(tp_run) export(tp_run_options) diff --git a/R/compile.R b/R/compile.R index 02e47cf..dfcb763 100644 --- a/R/compile.R +++ b/R/compile.R @@ -120,7 +120,7 @@ tp_compile <- function(model, #' * A string containing the entire TreePPL code. #' #' @return The path to the TreePPL model file -#' +#' @export tp_model <- function(model_input) { if (!assertthat::is.string(model_input)){ diff --git a/R/post_treatment.R b/R/post_treatment.R index 5829de6..7b39a71 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -1,14 +1,59 @@ -#' Parse simple TreePPL json output +#' Parse simple TreePPL json SMC output #' #' @description -#' `tp_parse` takes TreePPL json output and returns a data.frame +#' `tp_parse_smc` takes TreePPL json SMC output and returns a data.frame #' #' @param treeppl_out a character vector giving the TreePPL json output -#' produced by [tp_run]. +#' produced by [tp_run] using an SMC method. +#' +#' @return A data frame with the output from inference in TreePPL. +#' @export +tp_parse_smc <- function(treeppl_out) { + + result_df <- list() + + for (i in seq_along(treeppl_out)) { + + samples_c <- unlist(treeppl_out[[i]]$samples) + log_weight_c <- unlist(treeppl_out[[i]]$weights) + + if(is.null(names(samples_c))){ + result_df <- rbind(result_df, + data.frame(run = i, + samples = samples_c, + log_weight = log_weight_c, + norm_const = treeppl_out[[i]]$normConst) + ) + } else { + result_df <- rbind(result_df, + data.frame(run = i, + parameter = names(samples_c), + samples = samples_c, + log_weight = log_weight_c, + norm_const = treeppl_out[[i]]$normConst) + ) + } + } + + result_df <- result_df |> + dplyr::mutate(total_lweight = .data$log_weight + .data$norm_const) |> + dplyr::mutate(norm_weight = exp(.data$total_lweight - max(.data$total_lweight))) |> + dplyr::select(-"total_lweight") + + return(result_df) +} + +#' Parse simple TreePPL json MCMC output +#' +#' @description +#' `tp_parse_mcmc` takes TreePPL json MCMC output and returns a data.frame +#' +#' @param treeppl_out a character vector giving the TreePPL json output +#' produced by [tp_run] using an MCMC method. #' #' @return A data frame with the output from inference in TreePPL. #' @export -tp_parse <- function(treeppl_out) { +tp_parse_mcmc <- function(treeppl_out) { result_df <- list() @@ -239,7 +284,7 @@ peel_tree <- function(subtree, #' tp_smc_convergence <- function(treeppl_out) { - output <- tp_parse(treeppl_out) + output <- tp_parse_smc(treeppl_out) zs <- output |> dplyr::slice_head(n = 1, by = .data$run) |> dplyr::pull(.data$norm_const) diff --git a/man/tp_parse_mcmc.Rd b/man/tp_parse_mcmc.Rd new file mode 100644 index 0000000..1922c9f --- /dev/null +++ b/man/tp_parse_mcmc.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/post_treatment.R +\name{tp_parse_mcmc} +\alias{tp_parse_mcmc} +\title{Parse simple TreePPL json MCMC output} +\usage{ +tp_parse_mcmc(treeppl_out) +} +\arguments{ +\item{treeppl_out}{a character vector giving the TreePPL json output +produced by \link{tp_run} using an MCMC method.} +} +\value{ +A data frame with the output from inference in TreePPL. +} +\description{ +\code{tp_parse_mcmc} takes TreePPL json MCMC output and returns a data.frame +} diff --git a/man/tp_parse.Rd b/man/tp_parse_smc.Rd similarity index 53% rename from man/tp_parse.Rd rename to man/tp_parse_smc.Rd index 4f57bf1..b695998 100644 --- a/man/tp_parse.Rd +++ b/man/tp_parse_smc.Rd @@ -1,18 +1,18 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/post_treatment.R -\name{tp_parse} -\alias{tp_parse} -\title{Parse simple TreePPL json output} +\name{tp_parse_smc} +\alias{tp_parse_smc} +\title{Parse simple TreePPL json SMC output} \usage{ -tp_parse(treeppl_out) +tp_parse_smc(treeppl_out) } \arguments{ \item{treeppl_out}{a character vector giving the TreePPL json output -produced by \link{tp_run}.} +produced by \link{tp_run} using an SMC method.} } \value{ A data frame with the output from inference in TreePPL. } \description{ -\code{tp_parse} takes TreePPL json output and returns a data.frame +\code{tp_parse_smc} takes TreePPL json SMC output and returns a data.frame } diff --git a/vignettes/coin-example.Rmd b/vignettes/coin-example.Rmd index 59a899a..95c916f 100644 --- a/vignettes/coin-example.Rmd +++ b/vignettes/coin-example.Rmd @@ -36,26 +36,21 @@ library(dplyr) library(ggplot2) ``` -## Load model and data files +## Understanding the coin model -Now we can load the coin model script (the probabilistic program describing -the coin flipping model) provided with the *treepplr* package using the following command: +The coin model is one of the most basic models in the TreePPL model library. You +can find all available models and some information about them [here](https://treeppl.org/docs/model-library). + +If you want to look at the TreePPL code here in R, you can use the following functions: ```{r} -model <- tp_model("coin") +model_path <- tp_model("coin") ``` -You can load any TreePPL model script into *treepplr* using the same command, -replacing `"coin"` with the file name of your script. - -To view the coin model script, simply type - ```{r, eval=FALSE} -cat(model) +readr::read_file(model_path) ``` -which will print the script. - The main part of the model is defined in a function called `coinModel`: ``` @@ -119,25 +114,41 @@ This completes the TreePPL description of the coin flipping model. All TreePPL model descriptions essentially follow the same format. For a more complete coverage of the TreePPL language, see the language overview in the [TreePPL online documentation](https://treeppl.org/docs/). + +## Model compilation and inference strategy + +TreePPL offers a variety of inference methods. Different methods work best for +different models. Here, we will use sequential Monte Carlo (SMC), specifically +the bootstrap particle filter version (the `method=smc-bpf` option). + +The function `tp_compile()` has many optional arguments that allow you to select among the inference +methods supported by TreePPL, and setting relevant options for each one of them. +For an up-to-date description of available inference strategies supported, +see `tp_compile_options()`. + +Now let's compile the model to en executable that also contains the necessary machinery +to run the chosen inference method. + +```{r} +exe_path <- tp_compile(model = "coin", method = "smc-bpf", particles = 1000) +``` + +## Data + Now we can start analyzing the model by inferring the value of `p` given some observed sequence of coin flips. To do this, we need to provide the observations in a suitable format. To load the example data provided in the *treepplr* package, use: ```{r} -data <- tp_data("coin") +data <- tp_data(data_input = "coin") ``` -We can look at the structure of the input data using +We can look at the structure of the input data using: ```{r} -str(data) +jsonlite::fromJSON(data) ``` -The data are provided as an R list. -Each element in the list is named using the corresponding argument name expected by the TreePPL model function. -The arguments can be given in any order in the list. -In our case, the model function only takes one argument called `coinflips`, -so the R list only contains one element named `coinflips`. The TreePPL compiler requires data in JSON format. The conversion from R variables to appropriate JSON code understood by TreePPL @@ -145,25 +156,24 @@ is done automatically by *treepplr* for supported data types. For instance, logical vectors in R are converted to sequences of Booleans (`Bool[]`) in TreePPL. +In R, the data are collected in a list. +Each element in the list is named using the corresponding argument name expected by the TreePPL model function. +The arguments can be given in any order in the list. +In our case, the model function only takes one argument called `coinflips`, +so the R list only contains one element named `coinflips`. + + ## Run TreePPL -Now we can compile and run the TreePPL program, inferring the posterior distribution +Now we can run the TreePPL program, inferring the posterior distribution of `p` conditioned on the input data. -This is done using the *tp_treeppl()* function provided by *treepplr*. -The function has many optional arguments that allow you to select among the inference -methods supported by TreePPL, and setting relevant options for each one of them. -For an up-to-date description of available inference strategies supported, -see the documentation of the `tp_treeppl` function. +This is done using the `tp_run` function. -Here, we will use the default settings for inference methods. -It uses sequential Monte Carlo (SMC), specifically the bootstrap particle filter version -(the `method=smc-bpf` option). -It runs 100 sweeps (100 SMC runs, if you wish), using 100 particles for each sweep -(`n_runs=100, samples=100`). +Let's run 10 sweeps (10 SMC runs, if you wish). ```{r, eval=FALSE} -output_list <- tp_treeppl(model = model, data = data, samples = 100, n_runs = 100) +output_list <- tp_run(compiled_model = exe_path, data = data, n_sweeps = 10) ``` ```{r, echo=FALSE} @@ -185,10 +195,10 @@ and the likelihood weight of each returned value (one weight for each particle). In SMC we can assess the quality of the inference by running several sweeps and comparing their normalizing constants to test if they generated similar estimates of the posterior distribution. A popular argument from the SMC -literature suggests that the SMC estimate is accurate if the variance of the -estimates of the normalizing constant across sweeps is lower than 1. +literature suggests that the SMC estimate is accurate if the variance of the +estimates of the normalizing constant across sweeps is lower than 1. -To check the variance of the normalizing constant, use the *tp_smc_convergence()* function. +To check the variance of the normalizing constant, use the `tp_smc_convergence()` function. ```{r} tp_smc_convergence(output_list) @@ -198,15 +208,13 @@ It seems that our run provides a quite accurate estimate of the posterior distri as the variance is much smaller than 1.0. It is also easy to plot the sampled values. -The *tp_parse()* function helps us convert the results returned by TreePPL into an R list +The `tp_parse_smc()` function helps us convert the results returned by TreePPL into an R list of appropriately weighted values, taking both the particle weights and normalizing constants (the sweep weights, if you wish) into account. Note that both the particle weights and normalizing constants are given in log units. ```{r, fig.height=5, fig.width=5} -output <- tp_parse(output_list) %>% - dplyr::mutate(total_lweight = log_weight + norm_const) %>% - dplyr::mutate(norm_weight = exp(total_lweight - max(.$total_lweight))) +output <- tp_parse_smc(output_list) ggplot2::ggplot(output, ggplot2::aes(samples, weight = norm_weight)) + ggplot2::geom_histogram(ggplot2::aes(y = ggplot2::after_stat(density)), From 3fedd230fd20dcdf03f6a24dca563081632d623f Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 11:48:44 +0100 Subject: [PATCH 09/25] Move fasta and nexus to data R file --- R/data.R | 149 ++++++++++++++++++++++++++++++++++++++++++++++++- man/tp_data.Rd | 14 ++--- 2 files changed, 154 insertions(+), 9 deletions(-) diff --git a/R/data.R b/R/data.R index de63b6c..4062e52 100644 --- a/R/data.R +++ b/R/data.R @@ -123,6 +123,153 @@ tp_list <- function(...) { # UTILS: Data conversion + +## Sequence data + +# Read alignment in FASTA or NEXUS (for tree inference) +read_aln <- function(file) { + # define the encoding + # NB: everything that is not ACTG will be replace with gap ("-") within the function + base_code <- c( + "A" = 0, + "C" = 1, + "G" = 2, + "T" = 3, + "-" = 4 + ) + + # Print an error message if the input is not in fasta or nexus + if (!grepl("\\.(fasta|fas|nexus|nex)$", file, ignore.case = TRUE)) { + stop("Please, provide an input file in fasta or nexus format") + } + + # If the input is a FASTA file + else if (grepl("\\.(fasta|fas)$", file, ignore.case = TRUE)) { + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + #nm <- gsub(">", "", raw[grepl(">", raw)]) # sequence names + sq <- raw[!grepl(">", raw)] # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + + # If the input is a NEXUS file + } else if (grepl("\\.(nexus|nex)$", file, ignore.case = TRUE)) { + # nexus matrix block + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + start <- grep("^[[:space:]]*matrix[[:space:]]*$", tolower(raw)) + end <- grep(";", raw) + end <- end[end > start][1] + mat <- raw[(start + 1):(end - 1)] # extract contents + mat <- trimws(mat) + mat <- mat[nzchar(mat)] # remove empty entries + #nm <- sub("\\s+.*$", "", mat) # sequence names (split on the 1st white space) + sq <- sub("^\\S+\\s+", "", mat) # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + } +} + +# Read alignment in FASTA or NEXUS (for tree inference) +read_aln <- function(file) { + # define the encoding + # NB: everything that is not ACTG will be replace with gap ("-") within the function + base_code <- c( + "A" = 0, + "C" = 1, + "G" = 2, + "T" = 3, + "-" = 4 + ) + + # Print an error message if the input is not in fasta or nexus + if (!grepl("\\.(fasta|fas|nexus|nex)$", file, ignore.case = TRUE)) { + stop("Please, provide an input file in fasta or nexus format") + } + + # If the input is a FASTA file + else if (grepl("\\.(fasta|fas)$", file, ignore.case = TRUE)) { + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + #nm <- gsub(">", "", raw[grepl(">", raw)]) # sequence names + sq <- raw[!grepl(">", raw)] # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + + # If the input is a NEXUS file + } else if (grepl("\\.(nexus|nex)$", file, ignore.case = TRUE)) { + # nexus matrix block + raw <- readLines(file, warn = FALSE) + raw <- raw[nzchar(raw)] # remove empty lines, if any + start <- grep("^[[:space:]]*matrix[[:space:]]*$", tolower(raw)) + end <- grep(";", raw) + end <- end[end > start][1] + mat <- raw[(start + 1):(end - 1)] # extract contents + mat <- trimws(mat) + mat <- mat[nzchar(mat)] # remove empty entries + #nm <- sub("\\s+.*$", "", mat) # sequence names (split on the 1st white space) + sq <- sub("^\\S+\\s+", "", mat) # sequences + # sequence matrix + sq_list <- strsplit(sq, "") + sq_mat <- do.call(rbind, sq_list) + sq_mat <- toupper(sq_mat) + sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" + # numerical matrix + num_mat <- matrix( + base_code[sq_mat], + nrow = nrow(sq_mat), + ncol = ncol(sq_mat) + #dimnames = list(nm, NULL) + ) + # final list + res <- list(data = num_mat) + return(res) + } +} + + + + + ## Phylogenetic trees #' Convert phylo obj to TreePPL tree @@ -446,6 +593,6 @@ ladderize_tree <- function(tree, temp_file = "temp", orientation = "left"){ } -## Sequence data + diff --git a/man/tp_data.Rd b/man/tp_data.Rd index 017253f..ad81578 100644 --- a/man/tp_data.Rd +++ b/man/tp_data.Rd @@ -10,22 +10,20 @@ tp_data(data_input) \item{data_input}{One of the following options: \itemize{ \item A list (or structured list) containing TreePPL data, OR -\item A string with the name of a model supported by treepplr -(see \code{\link[=tp_model_names]{tp_model_names()}}), OR -\item A list (or structured list) containing TreePPL data, OR -\item The full path of a multiple sequence alignment in fasta (.fasta, .fas) or nexus (.nexus, .nex) format; -currently supported for \code{tree_inference} only, (see \code{\link[=tp_model_names]{tp_model_names()}}). +\item The full path of a multiple sequence alignment in fasta (.fasta, .fas) +or nexus (.nexus, .nex) format, OR +\item For test data, a string with the name of a model supported by treepplr +(see \code{\link[=tp_model_library]{tp_model_library()}}). }} \item{dir}{The directory where you want to save the data file in JSON format. Default is \code{\link[base:tempfile]{base::tempdir()}}.} } \value{ -The path for the data file that will be used by \link{tp_run}. +The path for the data file that will be used by \code{\link[=tp_run]{tp_run()}}. } \description{ -\code{tp_data} takes data and prepares it to be used by -\code{\link[=tp_treeppl]{tp_treeppl()}}. +Prepare data input for \code{\link[=tp_run]{tp_run()}}. } \examples{ \donttest{ From 53f1d88658769d2e122a971c57a1d685a440f420 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 13:19:02 +0100 Subject: [PATCH 10/25] Remove models from subfolders and some unused functions --- R/utils.R | 242 ++++++++++++------------------------------------------ 1 file changed, 52 insertions(+), 190 deletions(-) diff --git a/R/utils.R b/R/utils.R index eef841f..de7d130 100644 --- a/R/utils.R +++ b/R/utils.R @@ -136,13 +136,16 @@ tp_model_library <- function() { # go to the right treeppl folder, whatever it is called fd <- list.files(fd, pattern = "treeppl", full.names = TRUE) # add the rest of the path - fd <- paste0(fd, "/lib/mcore/treeppl/models/") + fd <- paste0(fd, "/lib/mcore/treeppl/models") # model names mn <- list.files(fd, full.names = TRUE, recursive = TRUE, pattern = "\\.tppl$") + subcategory <- grepl(".*models/([^/]+)/([^/]+)/([^/]+)\\.tppl$", mn) + no_sub <- mn[!subcategory] + # results in a data frame rs <- data.frame( - "category" = sub(".*models//([^/]+)/.*", "\\1", mn), - "model_name" = sub(".*/([^/]+)\\.tppl$", "\\1", mn) + "category" = sub(".*models/([^/]+)/.*", "\\1", no_sub), + "model_name" = sub(".*/([^/]+)\\.tppl$", "\\1", no_sub) ) # order by category then by model name rs <- rs[order(rs$category, rs$model_name, decreasing = FALSE), ] @@ -180,199 +183,58 @@ tp_find_data <- function(model_name) { #### Do we need these? #### -#' Model file names stored by user in [base::tempdir] using -#' [treepplr::tp_write] +#' #' Model file names stored by user in [base::tempdir] using +#' #' [treepplr::tp_write] +#' #' +#' #' @description Provides a list of all the model file names currently +#' #' stored in [base::tempdir]. To verify if there is a +#' #' matching data file, see [treepplr::tp_stored_data]. +#' #' +#' #' @return A list of model file names. +#' #' @export #' -#' @description Provides a list of all the model file names currently -#' stored in [base::tempdir]. To verify if there is a -#' matching data file, see [treepplr::tp_stored_data]. +#' tp_stored_model <- function() { +#' stored_files("tppl") +#' } #' -#' @return A list of model file names. -#' @export - -tp_stored_model <- function() { - stored_files("tppl") -} - -#' Data file names stored by user in [base::tempdir] using -#' [treepplr::tp_write] +#' #' Data file names stored by user in [base::tempdir] using +#' #' [treepplr::tp_write] +#' #' +#' #' @description Provides a list of all the data file names currently +#' #' stored in [base::tempdir]. To verify if there is a +#' #' matching model file, see [treepplr::tp_stored_model]. +#' #' +#' #' @return A list of data file names. +#' #' @export #' -#' @description Provides a list of all the data file names currently -#' stored in [base::tempdir]. To verify if there is a -#' matching model file, see [treepplr::tp_stored_model]. +#' tp_stored_data <- function() { +#' res <- stored_files("json") +#' list_na <- stringr::str_extract(res, "^((?!_out).)*$") +#' list <- list_na[!is.na(list_na)] +#' list +#' } #' -#' @return A list of data file names. -#' @export - -tp_stored_data <- function() { - res <- stored_files("json") - list_na <- stringr::str_extract(res, "^((?!_out).)*$") - list <- list_na[!is.na(list_na)] - list -} - -#' List of compiled models in [base::tempdir] +#' #' List of compiled models in [base::tempdir] +#' #' +#' #' @description Provides a list of all the compiled model file names currently +#' #' stored in [base::tempdir]. +#' #' +#' #' @return A list of compiled model file names. +#' #' @export #' -#' @description Provides a list of all the compiled model file names currently -#' stored in [base::tempdir]. +#' tp_stored_compiled <- function() { +#' stored_files("exe") +#' } +#' +#' #Provides file names already provided by user, stored in [base::tempdir] +#' stored_files <- function(exten) { +#' tmp <- list.files(tp_tempdir()) +#' list_na <- +#' stringr::str_extract(tmp, paste0(".*(?=\\.", exten, ")")) +#' list <- stringr::str_sort(list_na[!is.na(list_na)]) +#' list +#' } #' -#' @return A list of compiled model file names. -#' @export - -tp_stored_compiled <- function() { - stored_files("exe") -} - -#Provides file names already provided by user, stored in [base::tempdir] -stored_files <- function(exten) { - tmp <- list.files(tp_tempdir()) - list_na <- - stringr::str_extract(tmp, paste0(".*(?=\\.", exten, ")")) - list <- stringr::str_sort(list_na[!is.na(list_na)]) - list -} - - - - - -# Read alignment in FASTA or NEXUS (for tree inference) -read_aln <- function(file) { - # define the encoding - # NB: everything that is not ACTG will be replace with gap ("-") within the function - base_code <- c( - "A" = 0, - "C" = 1, - "G" = 2, - "T" = 3, - "-" = 4 - ) - - # Print an error message if the input is not in fasta or nexus - if (!grepl("\\.(fasta|fas|nexus|nex)$", file, ignore.case = TRUE)) { - stop("Please, provide an input file in fasta or nexus format") - } - - # If the input is a FASTA file - else if (grepl("\\.(fasta|fas)$", file, ignore.case = TRUE)) { - raw <- readLines(file, warn = FALSE) - raw <- raw[nzchar(raw)] # remove empty lines, if any - #nm <- gsub(">", "", raw[grepl(">", raw)]) # sequence names - sq <- raw[!grepl(">", raw)] # sequences - # sequence matrix - sq_list <- strsplit(sq, "") - sq_mat <- do.call(rbind, sq_list) - sq_mat <- toupper(sq_mat) - sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" - # numerical matrix - num_mat <- matrix( - base_code[sq_mat], - nrow = nrow(sq_mat), - ncol = ncol(sq_mat) - #dimnames = list(nm, NULL) - ) - # final list - res <- list(data = num_mat) - return(res) - - # If the input is a NEXUS file - } else if (grepl("\\.(nexus|nex)$", file, ignore.case = TRUE)) { - # nexus matrix block - raw <- readLines(file, warn = FALSE) - raw <- raw[nzchar(raw)] # remove empty lines, if any - start <- grep("^[[:space:]]*matrix[[:space:]]*$", tolower(raw)) - end <- grep(";", raw) - end <- end[end > start][1] - mat <- raw[(start + 1):(end - 1)] # extract contents - mat <- trimws(mat) - mat <- mat[nzchar(mat)] # remove empty entries - #nm <- sub("\\s+.*$", "", mat) # sequence names (split on the 1st white space) - sq <- sub("^\\S+\\s+", "", mat) # sequences - # sequence matrix - sq_list <- strsplit(sq, "") - sq_mat <- do.call(rbind, sq_list) - sq_mat <- toupper(sq_mat) - sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" - # numerical matrix - num_mat <- matrix( - base_code[sq_mat], - nrow = nrow(sq_mat), - ncol = ncol(sq_mat) - #dimnames = list(nm, NULL) - ) - # final list - res <- list(data = num_mat) - return(res) - } -} - -# Read alignment in FASTA or NEXUS (for tree inference) -read_aln <- function(file) { - # define the encoding - # NB: everything that is not ACTG will be replace with gap ("-") within the function - base_code <- c( - "A" = 0, - "C" = 1, - "G" = 2, - "T" = 3, - "-" = 4 - ) - - # Print an error message if the input is not in fasta or nexus - if (!grepl("\\.(fasta|fas|nexus|nex)$", file, ignore.case = TRUE)) { - stop("Please, provide an input file in fasta or nexus format") - } - # If the input is a FASTA file - else if (grepl("\\.(fasta|fas)$", file, ignore.case = TRUE)) { - raw <- readLines(file, warn = FALSE) - raw <- raw[nzchar(raw)] # remove empty lines, if any - #nm <- gsub(">", "", raw[grepl(">", raw)]) # sequence names - sq <- raw[!grepl(">", raw)] # sequences - # sequence matrix - sq_list <- strsplit(sq, "") - sq_mat <- do.call(rbind, sq_list) - sq_mat <- toupper(sq_mat) - sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" - # numerical matrix - num_mat <- matrix( - base_code[sq_mat], - nrow = nrow(sq_mat), - ncol = ncol(sq_mat) - #dimnames = list(nm, NULL) - ) - # final list - res <- list(data = num_mat) - return(res) - # If the input is a NEXUS file - } else if (grepl("\\.(nexus|nex)$", file, ignore.case = TRUE)) { - # nexus matrix block - raw <- readLines(file, warn = FALSE) - raw <- raw[nzchar(raw)] # remove empty lines, if any - start <- grep("^[[:space:]]*matrix[[:space:]]*$", tolower(raw)) - end <- grep(";", raw) - end <- end[end > start][1] - mat <- raw[(start + 1):(end - 1)] # extract contents - mat <- trimws(mat) - mat <- mat[nzchar(mat)] # remove empty entries - #nm <- sub("\\s+.*$", "", mat) # sequence names (split on the 1st white space) - sq <- sub("^\\S+\\s+", "", mat) # sequences - # sequence matrix - sq_list <- strsplit(sq, "") - sq_mat <- do.call(rbind, sq_list) - sq_mat <- toupper(sq_mat) - sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" - # numerical matrix - num_mat <- matrix( - base_code[sq_mat], - nrow = nrow(sq_mat), - ncol = ncol(sq_mat) - #dimnames = list(nm, NULL) - ) - # final list - res <- list(data = num_mat) - return(res) - } -} From ba80bf6ca82f544b0d9e7a337bb3210b347afedf Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 16:31:32 +0100 Subject: [PATCH 11/25] Remove tutorials that are not updated --- R/compile.R | 1 - R/post_treatment.R | 39 ++++++++----- R/utils.R | 38 +++++++----- man/tp_run.Rd | 4 +- man/tp_smc_convergence.Rd | 7 +-- man/tp_stored_compiled.Rd | 15 ----- man/tp_stored_data.Rd | 17 ------ man/tp_stored_model.Rd | 17 ------ vignettes/coin-example.Rmd | 14 ++--- vignettes/constant-rate-birth.Rmd | 68 +++++++++++----------- vignettes/hostrep-example.Rmd | 14 ++--- vignettes/overview.Rmd | 16 ++++- vignettes/rdata/coin/output_coin.rds | Bin 168523 -> 165676 bytes vignettes/tree_inference.Rmd | 84 +++++++++++++-------------- 14 files changed, 155 insertions(+), 179 deletions(-) delete mode 100644 man/tp_stored_compiled.Rd delete mode 100644 man/tp_stored_data.Rd delete mode 100644 man/tp_stored_model.Rd diff --git a/R/compile.R b/R/compile.R index dfcb763..a3db0ec 100644 --- a/R/compile.R +++ b/R/compile.R @@ -1,7 +1,6 @@ #' Options that can be passed to TreePPL compiler #' #' @returns A string with the output from the compiler's help -#' @export #' tp_compile_options <- function(...) { diff --git a/R/post_treatment.R b/R/post_treatment.R index 7b39a71..b678944 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -19,14 +19,14 @@ tp_parse_smc <- function(treeppl_out) { if(is.null(names(samples_c))){ result_df <- rbind(result_df, - data.frame(run = i, + data.frame(sweep = i, samples = samples_c, log_weight = log_weight_c, norm_const = treeppl_out[[i]]$normConst) ) } else { result_df <- rbind(result_df, - data.frame(run = i, + data.frame(sweep = i, parameter = names(samples_c), samples = samples_c, log_weight = log_weight_c, @@ -60,22 +60,17 @@ tp_parse_mcmc <- function(treeppl_out) { for (i in seq_along(treeppl_out)) { samples_c <- unlist(treeppl_out[[i]]$samples) - log_weight_c <- unlist(treeppl_out[[i]]$weights) if(is.null(names(samples_c))){ result_df <- rbind(result_df, data.frame(run = i, - samples = samples_c, - log_weight = log_weight_c, - norm_const = treeppl_out[[i]]$normConst) + samples = samples_c) ) } else { result_df <- rbind(result_df, data.frame(run = i, parameter = names(samples_c), - samples = samples_c, - log_weight = log_weight_c, - norm_const = treeppl_out[[i]]$normConst) + samples = samples_c) ) } } @@ -274,25 +269,37 @@ peel_tree <- function(subtree, } -#' Check for convergence across multiple SMC sweeps/runs +#' Check for convergence across multiple SMC sweeps. #' -#' @param treeppl_out a character vector giving the TreePPL json output -#' produced by [tp_run]. +#' @param treeppl_out a data frame outputted by [tp_parse_smc()]. #' #' @returns Variance in the normalizing constants across SMC sweeps. #' @export #' tp_smc_convergence <- function(treeppl_out) { - output <- tp_parse_smc(treeppl_out) - zs <- output |> - dplyr::slice_head(n = 1, by = .data$run) |> + zs <- treeppl_out |> + dplyr::slice_head(n = 1, by = .data$sweep) |> dplyr::pull(.data$norm_const) - return(var(zs)) + return(stats::var(zs)) } +#' Check for convergence across multiple MCMC runs. +#' +#' @param treeppl_out a data frame outputted by [tp_parse_mcmc()]. +#' +#' @returns Gelman and Rubin's convergence diagnostic +#' +tp_mcmc_convergence <- function(treeppl_out) { + + # create coda::mcmc objects for each run + # list(mcmc objects) + #coda::gelman.diag + +} + #' Find the Maximum A Posteriori (MAP) Tree from weighted samples #' diff --git a/R/utils.R b/R/utils.R index de7d130..0096fb9 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,21 +1,27 @@ # Platform-dependent treeppl self-contained installation installing_treeppl <- function() { - tag <- tp_fp_fetch() - if (Sys.info()['sysname'] == "Windows") { - # No self container for Windows, need to install it manually - "tpplc" - } else if(Sys.info()['sysname'] == "Linux") { - path <- system.file("treeppl-linux", package = "treepplr") - file_name <- paste0("treeppl-",substring(tag, 2)) - } else {#Mac OS have a lot of different name - path <- system.file("treeppl-mac", package = "treepplr") - file_name <- paste0("treeppl-",substring(tag, 2)) - } - # Test if tpplc is already here - tpplc_path <- paste0("/tmp/",file_name,"/tpplc") - if(!file.exists(tpplc_path)) { - utils::untar(list.files(path=path, full.names=TRUE), - exdir="/tmp") + + if (Sys.getenv("TPPLC") != "") { + tpplc_path <- Sys.getenv("TPPLC") + } else{ + + tag <- tp_fp_fetch() + if (Sys.info()['sysname'] == "Windows") { + # No self container for Windows, need to install it manually + "tpplc" + } else if(Sys.info()['sysname'] == "Linux") { + path <- system.file("treeppl-linux", package = "treepplr") + file_name <- paste0("treeppl-",substring(tag, 2)) + } else {#Mac OS have a lot of different name + path <- system.file("treeppl-mac", package = "treepplr") + file_name <- paste0("treeppl-",substring(tag, 2)) + } + # Test if tpplc is already here + tpplc_path <- paste0("/tmp/",file_name,"/tpplc") + if(!file.exists(tpplc_path)) { + utils::untar(list.files(path=path, full.names=TRUE), + exdir="/tmp") + } } tpplc_path } diff --git a/man/tp_run.Rd b/man/tp_run.Rd index 0cdfb20..2c7e37b 100644 --- a/man/tp_run.Rd +++ b/man/tp_run.Rd @@ -18,8 +18,8 @@ tp_run( \item{compiled_model}{a \link[base:character]{base::character} with the full path to the compiled model outputted by \link{tp_compile}.} -\item{data}{a \link[base:character]{base::character} with the full path to the data file in JSON format -outputted by \link{tp_data}.} +\item{data}{a \link[base:character]{base::character} with the full path to the data file in TreePPL +JSON format (as outputted by \link{tp_data}).} \item{n_runs}{When using MCMC, a \link[base:integer]{base::integer} giving the number of runs to be done.} diff --git a/man/tp_smc_convergence.Rd b/man/tp_smc_convergence.Rd index 6a5a12f..dc4df43 100644 --- a/man/tp_smc_convergence.Rd +++ b/man/tp_smc_convergence.Rd @@ -2,17 +2,16 @@ % Please edit documentation in R/post_treatment.R \name{tp_smc_convergence} \alias{tp_smc_convergence} -\title{Check for convergence across multiple SMC sweeps/runs} +\title{Check for convergence across multiple SMC sweeps.} \usage{ tp_smc_convergence(treeppl_out) } \arguments{ -\item{treeppl_out}{a character vector giving the TreePPL json output -produced by \link{tp_run}.} +\item{treeppl_out}{a data frame outputted by \code{\link[=tp_parse_smc]{tp_parse_smc()}}.} } \value{ Variance in the normalizing constants across SMC sweeps. } \description{ -Check for convergence across multiple SMC sweeps/runs +Check for convergence across multiple SMC sweeps. } diff --git a/man/tp_stored_compiled.Rd b/man/tp_stored_compiled.Rd deleted file mode 100644 index e7f34ec..0000000 --- a/man/tp_stored_compiled.Rd +++ /dev/null @@ -1,15 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R -\name{tp_stored_compiled} -\alias{tp_stored_compiled} -\title{List of compiled models in \link[base:tempfile]{base::tempdir}} -\usage{ -tp_stored_compiled() -} -\value{ -A list of compiled model file names. -} -\description{ -Provides a list of all the compiled model file names currently -stored in \link[base:tempfile]{base::tempdir}. -} diff --git a/man/tp_stored_data.Rd b/man/tp_stored_data.Rd deleted file mode 100644 index 8340929..0000000 --- a/man/tp_stored_data.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R -\name{tp_stored_data} -\alias{tp_stored_data} -\title{Data file names stored by user in \link[base:tempfile]{base::tempdir} using -\link{tp_write}} -\usage{ -tp_stored_data() -} -\value{ -A list of data file names. -} -\description{ -Provides a list of all the data file names currently -stored in \link[base:tempfile]{base::tempdir}. To verify if there is a -matching model file, see \link{tp_stored_model}. -} diff --git a/man/tp_stored_model.Rd b/man/tp_stored_model.Rd deleted file mode 100644 index 0c4e3ee..0000000 --- a/man/tp_stored_model.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R -\name{tp_stored_model} -\alias{tp_stored_model} -\title{Model file names stored by user in \link[base:tempfile]{base::tempdir} using -\link{tp_write}} -\usage{ -tp_stored_model() -} -\value{ -A list of model file names. -} -\description{ -Provides a list of all the model file names currently -stored in \link[base:tempfile]{base::tempdir}. To verify if there is a -matching data file, see \link{tp_stored_data}. -} diff --git a/vignettes/coin-example.Rmd b/vignettes/coin-example.Rmd index 95c916f..beab10e 100644 --- a/vignettes/coin-example.Rmd +++ b/vignettes/coin-example.Rmd @@ -199,23 +199,23 @@ literature suggests that the SMC estimate is accurate if the variance of the estimates of the normalizing constant across sweeps is lower than 1. To check the variance of the normalizing constant, use the `tp_smc_convergence()` function. +But first, we'll use the `tp_parse_smc()` function to convert the results returned by TreePPL into an R data frame +of appropriately weighted values, taking both the particle weights and normalizing constants +(the sweep weights, if you wish) into account. Note that both the particle weights and +normalizing constants are given in log units. ```{r} -tp_smc_convergence(output_list) +output <- tp_parse_smc(output_list) + +tp_smc_convergence(output) ``` It seems that our run provides a quite accurate estimate of the posterior distribution, as the variance is much smaller than 1.0. It is also easy to plot the sampled values. -The `tp_parse_smc()` function helps us convert the results returned by TreePPL into an R list -of appropriately weighted values, taking both the particle weights and normalizing constants -(the sweep weights, if you wish) into account. Note that both the particle weights and -normalizing constants are given in log units. ```{r, fig.height=5, fig.width=5} -output <- tp_parse_smc(output_list) - ggplot2::ggplot(output, ggplot2::aes(samples, weight = norm_weight)) + ggplot2::geom_histogram(ggplot2::aes(y = ggplot2::after_stat(density)), col = "white", fill = "lightblue", binwidth=0.01) + diff --git a/vignettes/constant-rate-birth.Rmd b/vignettes/constant-rate-birth.Rmd index b4d8a0a..74142f5 100644 --- a/vignettes/constant-rate-birth.Rmd +++ b/vignettes/constant-rate-birth.Rmd @@ -32,51 +32,51 @@ library(magrittr) We will use an example (random) tree that comes with the package. -```{r, fig.width=6, fig.height=4} -tree <- ape::read.tree(system.file( - "extdata/crb_tree_15_tips.tre", package = "treepplr")) -ape::plot.phylo(tree, cex = 0.5) -axisPhylo() -``` + + + + + + -We need to convert the tree to a **TreePPL** readable format and read the CRB model. + -```{r} -data <- tp_phylo_to_tpjson(tree, age="tip-to-root") -model <- tp_model(system.file("extdata/crb.tppl", package = "treepplr")) -``` + + + + -## Run treeppl + -Compile and run the TreePPL program with standard inference settings. + -```{r, eval=FALSE} -output_list <- tp_treeppl(model = model, data = data) -``` + + + -```{r, echo=FALSE} -output_list <- readRDS("rdata/crb/output_crb.rds") -``` + + + -## Plot posterior + -TreePPL outputs the log weight of each sample, so first we need to get the -normalized weights and then we can plot the posterior distribution produced. + + -```{r, fig.height=4, fig.width=6} -# turn list into a data frame where each row represents one sample -# and calculate normalized weights from log weights and normalizing constants. -output <- tp_parse(output_list) %>% - dplyr::mutate(total_lweight = log_weight + norm_const) %>% - dplyr::mutate(norm_weight = exp(total_lweight - max(.$total_lweight))) + + + + + + -ggplot2::ggplot(output, ggplot2::aes(samples, weight = norm_weight)) + - ggplot2::geom_histogram(ggplot2::aes(y = ggplot2::after_stat(density)), - col = "white", fill = "lightblue", binwidth=0.04) + - ggplot2::geom_density() + - ggplot2::theme_bw() + + + + + -``` + diff --git a/vignettes/hostrep-example.Rmd b/vignettes/hostrep-example.Rmd index 91f7efe..2010893 100644 --- a/vignettes/hostrep-example.Rmd +++ b/vignettes/hostrep-example.Rmd @@ -44,16 +44,16 @@ This is a very simplified workflow in **treepplr** for analysis of host repertoi The purpose of this vignette is to show how to run **TreePPL** with **treepplr**, and how to process the output with **evolnets**. -## Load model and data files + -Load the 3-state host repertoire model and example data available within **treepplr**. + -```{r} -model <- tp_model("hostrep3states") -data <- tp_data("hostrep3states") -``` + + + + -## Run treeppl + diff --git a/vignettes/overview.Rmd b/vignettes/overview.Rmd index 1d9c38f..e42484e 100644 --- a/vignettes/overview.Rmd +++ b/vignettes/overview.Rmd @@ -43,7 +43,7 @@ the models within the [TreePPL github repository](https://github.com/treeppl/tre model_lib <- tp_model_library() ``` -To use one of these models you just need it's name in `model_lib$model_name` +To use one of these models you just need it's name in `model_lib$model_name`. If you want to use your own custom model, you will need to write it in TreePPL language and pass it to an R object that contains either the full path to the @@ -120,6 +120,20 @@ to the compiled executable and choose how many independent runs you want to do. output <- tp_run(compiled_model = exe_path, data = data_path, n_runs = 4) ``` +Then you can parse your output to produce a data frame and check for convergence. + +```{r} +# If using SMC +output_df_smc <- tp_parse_smc(output) + +tp_smc_convergence(output_df_smc) +``` + +```{r} +# If using MCMC +output_df_mcmc <- tp_parse_mcmc(output) +``` + diff --git a/vignettes/rdata/coin/output_coin.rds b/vignettes/rdata/coin/output_coin.rds index c59473fa496d89b27fee8b7474c7b6a24c75b911..9bc75fafab4df25c47e149597abf0358a0e6b99b 100644 GIT binary patch literal 165676 zcmW)ncRUsT_s72_yU1Q~LkOWL%DN#GN^>|GppR{d~X9^8n&m{`ddIP)U9NCea(|oGfD_FzGi8f+ z+`{i~->@jOh=`ETje5bNFB_+PccOA(nQcvE5&2 zKhgZ+R~aNqZvXgF<<6ZtWd)nj?%p;EkUrQ*`3+_08=({7XLKSO2&k{5Bb6wC5p`T1 z%!h^sxa4g1V?aaK+?~h6b0W!Xc19{Yr#7fG(3|%T<9;>B^HG=RJ3GNv(?Nq+_shYB zH+;-OcdvzujaaZz$)~E}ijAxl&X$fY<9$yJW@Z8V^Sp=$x>YuGJ=|lB)5%5(oTy{!9|OFD zd~xwhNNVRTo}ow5uMWcxUKiY7~qiglT#6^+Mpf72nMMrz*$dBT*(T zKMJ0h&Kd&y`}^N@XLE`0pFrx5{p1oRTKdrog8JUye3dUKSi`N*934(~*fF~766a`( z`i@kU#uXUSO9ES!e&Jn76jypT!ko?-3Jlfu3Mu*b!Kmb z(9TX~n0NkV)W{8uxzZi^#@pbI!O&YM;-| zB3*id0%m_f+H!vM<&)1BI>;?-I1@EM-r9<<7`kK|d?`{ z!+0aaJHRySK^PJt{2JtU+yQMc#a=V98%I7%S)N>;U!86F1}XW#Bj~GhmVa1kpneV< z>#fv!-0K2L%vtpB~!X;%#ku=a$f@u|4(YEV8Sn;1y~T#8(T@GcwoLk^x?7cD{W{8*=U8fxIhg?=f>ms!4^Zsi7iKA9Pv}1(tV(r7w zk$hJSJ3m@TWv8RMN}RQeS$s?(4l!n^A$Z!}6D?y6?*>4HuH`~4nIHwTNU3(p;uR|U z(vv$k5p1+u@*hr}o4W8K=3t+rhhlQWrZ-_8_xezt9WMpX7|;(ocI|ssLEsR(YG3NA z_goF)ME+Ngdi`}^j_czSw(;m(iUXfc0X63^RG zHw~6GdbW!4y5Ij(W#e)if}Y5b$h-OPf=6)L)2*m{enYh=1Qm(N+}_s7Tffy@Hwk}e*T6F!@W%n7=NEhDpV{0PA(|*H zrA5HZob`dyZ0+-q(hb%&-+HuLY9YA9mjK&3YnI=>kw@M{C^kH!dCIR z6XgHVOy@xCp8H{n>p4#fs<+4FCdL6Z(K9A|$EfAZ`uJhR-?`3~W1eboDkE{?{sV2Q zt4waqE35?V$d4&!o?CC8CPZ4|5|gE9mNMazbC+0HhkjzvG3$s3YY$Yc%iZW=6m5U{0jXst5F8I)nY{+A{A|#IZK(Yp#Nn9c6qI$T7 z?p%QE@YxJ$E(QyuQT1rYL3s_P<##vReB60);bmYqv1iX&Fzsa>AZ z@zU1+*89^{7TQ(m5lFdsO@jPcv-sv6HvyRuA0WYO#a1${d^A5RYsE9xRq=Na0oLHQ zQJ}I@ZZm2)RJ4`v`PB5=jV}*jWNp{KKRwENgWXrIt=c9MoO>(R=2GmA-Cm#BFR+Qy$806nnH={i-MVJNu`lUtF+8L!{hV<>!vs{y93^Ngp}-N&gUkG%E(3 zV+xgy4Gi0Es?Xma;;h71I__fw4lf7)4$joBiac?r-rQ|*&R`BdlCytMyZk@W^vTB! z>ac{xPEYll;78o24Jw|iET-4i2PLo&ps%X9*#6KPEBUwafuEA%{e$eUo!2Y9-^lxk zu5Fq3elmM$rd4l6ETI|{#EqRAz~J0y{DHL9q=gPsG?>Y@UqxU;yddlh=`cE?$wr$x z^=1^lr5XlPHtSJqJQ4C$J8X=8Cy1LUm`2zJd`LoFcDGCUUdmbxXuZ0RA68lkL7w$RLDyGrl?2@sq#g zirUT|x>=#`GD$jh#-v6k#L(PXjcxb5FR1Su)U^r14iQG}oy7{!oNtfrjhPFK_fVEe zw$@tXd7i=oCQn{@qEzmfpTF%jb?5w)Qj}No8#S9pQ3Xa2oO-FLe(-ziv0wZ~k+<%9 zi%H6!V*@@SRCdbZhHq^e&HXd0W+p42=Q)ilfc~obKUwP-UcxY{&aQRz>kqyso|FO_ zlkevo*g^V863=AJ-J`KIrCaTHRowF7!3>)6oI12jHEi`Y+g3)(y-J~#)C=Utn815Y zfeBeUR*D(7cGiLaqy1cVE??mwo6H7}n-hgdkKO7a8NOGD_Oyp^dah0{Dm-q~uNYX1 zdZttqGXkloMV6wLMFC&d$@_XMy-dek=M}A+TZw@``<3>8n96V3dx5F%?=jAeL37hZ z*A>TGu4T*@X@5+r8La8bGzRVet`YUOo(~jit~ zy31Rcpf#g36Tc6;mNY*E>^=3*X?D@2nRf}j4k{C%9BSuT*=EP#1qgG@2F1?GJBr9D zo!o<~2Q6c9+1rLOC4Z38NdXdhB9tG$+$xF$H^*FWm)H=+wQI89H3i29ON`u@jR&3s zMrW~T@(9B!df?|rV*#Dxnh48n!2bUZhVugrTYj)^%6s1TpB`?EUo}l}viRg96Yg;p z3;j++D}{@xXNjDp`!k{|=$lSPH`W{Ko{0p-Vg{JO0jhtH(sRp?JuRK zdZuy`9@M!9d$XaZ)9%#wbc>yJt$dTsIp0N%XW$lEgR&S0dZ2krhyMnm<=q~9vIk(qn>IJ{`ze!BMQm5|W|WrH zJqV06-#tuw_Kz#2z;Ua42V3G(AZfnGT*JLrVbJ4vE~l9YE%zY1Z#bv_ohNC-EJ$CO z&;Q+-vUgh#NBafiEAYHr>vb}AFVEp?D0K%%{zr?ez^q(Om&C(xnArGN^wa;)u&(%C zfcP5cX#7j(6B{4aGkEY~M5asy3s!|ZF{9RU72Xt;<9+!_Sr=*VR&T!{3z44u>KXik zCDSq_0Nzf!hKt|JHr4yUs=F$X5})a(NrPr9n*Dmli~JfG$4ItgAn3bgt@e`n{M z6mwxDXsV@sw74>9c*1_1=q{2TG@FmOqip`17|3>puG3mxoW8|MOOlqO2P|qG|1;F^ zT-Uw10?PDP*ttqFbkt4Z>QD}Z0-4WrkPGHJ@$dY1afUHgujd{Q;cS9`1NgB?3972c zv*Scn!%2<-!}`t*X2{fR18P_`p+yh)8s%A`GW<|;a%`&1Cx-cKBpqRuv&`HnWnwn61d0IuB?S#s-X%Ji~>RF@Q&c!?EF2ykaKhXWf*1p0PoyEyZ%X#H(r zrG5$3^D{UZr$?O)pPT^-#6U{QUiq8C=ceF5>Sx!>n@CBgKgUE^3mN#@`DBjKaI?j> zyY(cxcieP0liTJVU&(O({?C=+rFHSC6gaQ&Ek>nv&Bevs`ezRT~7{pas1ka)c^o&o{ZWX zM|XvP9hNZ3^v>nOG3zlr{SUGdCmkmbOPR+#JW|l$m|&NNVsz!_|LuwEIjSlA`&ZJH zm+&UJt$m#Cp}kVAeW*8wS~Qma%4JdM*}T!@%yr+M^6P3P5WH-Vwk{QZL-n6VQl; zdMP#FP`jAYj273@Zwv8-c4qJXZD}gSop{>Wf=$XUoPz^<9p>R<1Ez7#(_cs)7wK95 zK9S&^%FIZ19{9lb-yn{qfm8XjNTAZve{H|zGHxkg>;1GVo#%2}chXeGWGqRZn!1sc zz$?CT-)SYYo`JNKVLjdbYyd#YnoiZzHRBZgrcp7Ai6rd%>^mN+xUFKyml!;-_X+`v zL>E~vy##gw5u17%8W3apdR;+1P`d~@*JS9B?b|Pg(ZID6dRQwx2^k;YU8-{>6aOB( zjvX9`{@EN|xvR}JoWH@}Od+h8?f`^y$?29C!4q}^4%{7=&&CVJG#vbHt$F^ze_UBT zX2gC}whgvwxU{0Ssru6*B|7leXVlih0%iDeTh-X;KyBnP6`}?ofyzdAjQ-e6JP`+$ zpyIW^y)9-T&Uwj~w=fU`B>Raw$(MUK^yEgRY5iF3%&DBG+J&X?N!1&+Z7-YI(T+$s z%}yp-Cm?m@+J5ZoKl$Kor7y^xXs9o^*VFR0#MD^ewZ_SVs{oT%A6pykWwc8cq4ztY z|Mcbi80g`(pG481er+$Pdb~tK`iW|nNKR=6NA`n!pAA0B$n%@?IsrVmPHY9+U*w|+ z;748!|3b5HFW_g%{neM?xt;=)K_W+bM2Ot)N0X-fSkHY=WU(nGIqzOP)32!F&&Y7_ zO+~q%fzWo0m8(LN`FIVv|3L9uK2QfGzj-|PKWcq4d**tsuXv@BiDRkam3@)#geKQT z*16ekJm++Zp&6&5@tsY?i70mOn5`gY#%$`}JII991IMeFL?!q7700N+&woT05r$v9 zfT6zagNIy{Cx+V}TbFqE;w?YgDm?>B(w~lN7umTog4K>!491uKhqbjzjjyb`Mxu9i zm8(g7?W)=Sq#xNCC9#S$Jp>y*AdG4E@UqAH-KW=0@gCIy2k7Nv{=kLd3*_l3d0XT@ zn(-LyeDL|L7OpHg>Z=AId;<96%GWo$wxw3Q0-D&X)fU%}_2_;5N&^9I+RPo`-wcpF zKlJ(Y#md-|0C@+_>VkohDGt%p>l z7huLI)`~pbKugwoZU_{e6lXji1H9TS_L~t$y}N1j#v3BE7tMg%=X}H@b@f~Z(OOgY zMJHpbzuETv1(@5G_DaMNVk&25U3zkF6 z`qk4Be&VVZd~=;}=|C^>&-&7Y=nm*|hPLm1M*`(nfbXC4r!2Ve=GyO*u?Cwk1qn#} zpUi>&5{?pNi+vw8B6RB6NGOZHZUcRZcvt5WQs_vxXBYl{M39D$9@R&CqR4=Ovc>725EW!`!+Gk1Q0Y(~-# zz7gHT--e!@A2zl4IX3s;qkn`%n%n0YmVJrt9LeX@a}89iz(j{YR@4K7<0aO2IWX1e z3cGyhjG6b#@%OCfJ_8!r^;9m3cgb4oE&BD-65*`b`@q++A?eaCedHHR`#GyGFXMkP zK|F2&syyyQBM;838}awQ&`9}yZ_%XvQc$AliV@9+jT(m4+Fx1u5b|F%uw;tl(1g=w zYF9M$(H{t7GlcC_M%O9W?tHUNyoor*Jl2tWBfIT#TadS5?*7X;xHhrGAf0TMCuU?l zEr%0C19v@cUmJSK0D02vw{fZ;^3wG=J<+A?617TBw9T6X1`HxFO)a{a-u$d|`8icRtcoox6%IXxn`f8$1o;a<~d z=~Mw-b*eeUfk)#&Z|~vpmd*o0P3U7Y+#m2O(3rgF7X?_pQsdwFS&vJFxi-$ndQeqi zYJ@)-GVkC$&@b&|Q{Ax}3iW+__hly!wg=r|_(82kdZ&ig*^H8mDS4k*EkIGs&sF7? zIsPSck@o5K(^t+2F`Q1`dyFRZ!r9NY(B{=F+gBi~Jr0}*xc6i?eFBYW2m?s6s#v=r zdCq0T{Smf;XZdC?{-%RR21>GQg4_RbN{S8U4!AAB<}dGC>mYmzxk;LDk2TkA?;hCu z%c567nH@`_8b*MxzC*AmT z$mlW!3qE@Ak@_l(8sH}!9iZHW&90|lVxe`v~`wsuHZkNUtjxd_Sff7jtiyl@cy;y$HoJzTs{Bjh8=YV^qIXyVAuQTGk^~ z%Pi^GT#qM>!}d9B&A&NM!>K0PubThtDTaFxl1Iy4#F9RuL$Ur1KDBgPjt6N*AC57N z7#+a7;Z;*PsU}V+=`*GCHE|}SPk*yS&rK1PE+RQq5j6Mc!`(IHina%@TfxH>Qbej+ zr&bK1f?h|APdD3SPE=!lY1+~QI(>KOPB-oj-c?{Tb+ceS>t;IC3$fnGOO(6sq=wW( zXgFCFdw&!<(BD{YsU#<|lKlccq&$wj1e9iSj?(ZF>#2832=U3MCo0L$-xA;&Yw=V( zw%v`RPJ&y*YWY=hqmU&c4{_q}~hUjxnq5pnhzJ|K=Va4VAUu3R5 z_kg^PfigY1lWt?~LO~qKVcKPDm~4=r*QCD~)!4_A4@)DDZgm(SfKFs*ca-!FdsWFN z+x{B|o@2`}*^Q3U=!vG9&Y8GS$hG8vpzDQkA!T|F^wt^tPQX3J80{89$F+ThjGO%4 zy^w}3-!o4Uk~g9V|57pJL2U4c5}#MR(JHvDKZBDXfvV@8c}bR*${h&=PaH+P2~0{F zll}gUJSP21@bsZ)hkLmkW%fE`XknXqMosw~Yv3(Tsybbe78%Ja^-S=g{HoW;VBPP0 zrMp1P^g`<24>HxcJBqZ1+7Cyw|Hmcr+O{JF>(FTetCfqY%2NMO=4EF%E}U{+Ub9fw zDvW(~ma`Fpbbqe&-2$+0>mx=Tq^&X%A~)1l%uO62j5mh%F zSArokk3wc?rF9OUWR4uK>?Ys+V40kE7xd+WCXS0VyZiH?_AUol^;X7kcW7tz8^hpQHfr)PUac*M&=iFkn7$G5!5Ct`De~pDEa*^zodJ+ zSI($a_C`ZdT6^DIfm{+1l%m~%s*Z;~QyGTo$i)^6=fTGBrqOEa|4@35?_a{l!{-1p zDJfE)#4ZkfHk$#eH-MC!9lmSB2^~j62c505G%5Xok5xtdF5vT`4IQ)bLBDh1RxEB; zSl1~e*X1`kvPsC~{=}lcOFMLnDnSQ!(P(-FurC!x)ZDAl+PI<|=@=3GBY$QSe)-h6 zO@+DS;>Le{wUXQI1RLG?{(W1p@s7}*kgdk2*=vcvso8Dm^Wg%(f)(}r9mPojtnmKW zd~=wT@OklWXMRnt@;bfd`-O$*i}^qZgc;s&LjrYe8RC!RP}y61km?inhiQ5ab)L^P z8gg88G*8?}y)mV<hXVzY}9^O|x zFFNl-@V~ctZE_JH6<3`+H*arBER#rn}*vDi&>FY$HneT{!pz= zV%m7bWjlhmKe@abv;f7%iU5{m`YWtMw;Pyv(|S+^=5w1mlaOW|+1B z*(0=P6heFkGQtqk6C;5LzpPa%wjyG`=$H)uBhr4w>TCnCoo_SanXXOPx6|9Ok913_ zss3ZBJ*jd`pPm8HaxHW^#w!gLVTTh8OgWa`3Zut2ju;XK+H-TrUns3~lZfe&hjN=i z`1g?w@FX}sn18BrJ|P6*dUhpOtG*Uwz5ewn;?EAi0sziYJLzU1Z*15N2VbJ5(;&K} zMau%tvU}W%%{FXzcDUtTUxy3hvbabuMbacApwuCiBU!8KpdR2dg1t%7?#Y$y#vH22 zc%HEd=pSwZAQ*h>6_8+iiSjat$EiaA?`ilK^~C7us`ir#oQmX$+-bCW{~zOAk`A(6 zqJ8nym<7KG8eexKUdJ#Xox_Fk63`0Ar{y#D7oVb^jEvsVrPkxBPa3y4mrM^$pUgQr zU!dQ)>y0~16C|Mjl-N%QpR9VKBKAi3IFm7)c@1E%2bab$u-E^j>cprKU4O^EGMCk6 z@R30SE5IQnrb16CUi`~OL3llk5|ij-wB6sUadK+VVxQdiKhDASfT65M#4Og-ikc1)%`WrBYSwf#!hl~bltQNBNo!E zitBZM-w{OX(f^zW9U9B6;7iQv^ez!!nGcEc#0ii@-Q&&stb(5-MF}LrPmJ+q`@NHi zG2Pu#=BeddmUq>|N#+p8qP{`^4*dai;-etKLd4dNIOBj6TGQLS#6%-;3jOimMC5J1 zDPY@?(X>dwe~^4s@M*zH=+u?jmRm$S{yO4AXA}5?kJbT0m19mdSDo^DK7e#V<^QoHH^gJhtBU_cs^jd>r+JnSe9a1n0+B+L8DTPU*{)z>&P?siDsw9 zPX@ZWL-ii6To?-pu=H0}xO6u9Oy%dnru=IEx3#AzNy`WnxH2ov-9aDH@lW?d?<+xC zg{)$SvG=`$Cx#|ENrz$-MDux_nO(C4sp_ssibc<@)1F}MY_X+XU?jC{li%gdC75*o zh-9BFmRz_dy5y716BFIm?wFe-{hTh+SmR%}sZX(j%2&I61RkOIgr8{U=Y|1yD$Kk{ ze0UV8o4y~gV_`YEk?MDNxwAMf(2e!|-P^gwmcGkQFv~nMs}i;xyXGvhKeZ|rT@_Mh zha!UBnwBF+FAv@1dTL%c-_&TqymTPkDc?L;xXa~eAets;Z=r`bzR939K|h=L6eU{1 zc8t|P*!GvIJRjsA91|TeT@Mm}7SHC9fKWHt zI4Cy9YjYQzZzEvWSvuN%f_L+nmrscuW9CG3HYZHT{3y?hdku>WJHx`-Xw;E4{Yn^e zKU7A@=oO6UFO6CoCM@l~_~wiEV;Vu9HMCV9U3fPEm&a6u0e{RJrVVo_uQSPQv9^3) zcZ&l2_&|6t@LsiS6%w@cPeEzsvx~KCFnQQc(=${hqm{}%lTtOsr;vEEZfuRZCB_hR z)e9!Hmm z;Vko9d$}xFk5q)^si)9qv(zqxUYpR7tteTYKV-K! zF&px~^UrsYhQUSYH+J5*kokNKa=seb`=q}xZtM=`Y<=GnPh(P$JG$nRxW-(zZY}?8 z=Y+Ho6b^T^RTlETXgPGAWl;qc%>}^3aYGk3E$@CD9=cZ}1pQu)Q%I%9nQ_l3IUlY6 z_#f@D(WO=kR6{>m_$P4e`7xgNyi@I>=Wnr6H}sng_TR+h%-P)7!d-iy)fIs^cF^Bs zpp$||Fo|PE0Q<<_A0X*b5NFcSLD(9x)~rcL%epbRGi=Vt==aR;R(OZGugfof;2K5t zsYCosjbIR?<+rSnN8`T}b&Np@A(HZ8)B)(Ce|ba9T1zP|ilM>2Yc6loq1NQ`;r$)C zu8fhKTD35#lfgW0d(((9bt=T19enFm^9m3d!_{IwXmtMF=15OFaubjijB)CHV1cdJ z=X=(BheWZMP<_^3tB|CI`yh@Z-LHge`e4kKm|IyMZ z|Mv5~{NZ(i?56rRtp{B(@nwa=Avorcv^&I3&*T_u*rW3$39Wlpw3HPIo%ACI=oi#)809b_w z6(_0!7m~ihehx(W}u}kL2EjCy4E%9 zd$_jby(B>7#6EM5ivKzp_^n!?zL|R_ufNBCk8$Tz*a31prV=wiN$ z_w;r>ZVh2TO_ZtcWOzhQyL%2a#O%TQ+KdD99s(*<0xlBz)rw@_HgRF^=Ed&uFi(R5 z^I|yz;yH?x9!WiY|0Jr?e#*W~*yCRSX!kc1i?pkm<&GrS4|fU{bGzwwfIqGv)@H;i zfkYJ7+C#pJFg$Q+fdhQQ;aP^}N0B%Ts!3~G6nvFz)|g)BB;0p`T;B0|T+xg6WB+h| zHZFiGxNr95Y+NZWC5Dn*lF$aUJQ#Ls?E$!4$7Dq@w9o1QA}U)ReQad}>kZm={X1hL zJxyOgyN!pQ#a+${nuR{n)ERPp-E``&fPev$J=IBqGvJN?jrsB≫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

{``_mz)6qNng6zzFqbnpzp_P-5l2&{R!laO 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%0A8y5UE^M43ws=mUaS8d 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�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 literal 168523 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 z ziXK?YCfDkX@o&JwbzR#aB1p#bps`2!Hb(_m*#2-4sV%w?n05BG4eI+5!rjwW*6i~_ zIC{^))Rc}IY&qK1qjOP89j%CFzO%~SLSV((4t|eI*oUy`US)ydSrN=v#S^*B3Kzlp zzPIn~az2msIB>!ChX0X&j_-eB2|h~cYI(v7pdyf-cvKf%eu;!prFSn97-PxlOEd{_ zus~!PGwE;35q>Hb@3~O4l(1X(apmKGqYW8jUim}D`?ex+iTqNp>xeZ3Fw~~omrM^5 zj&JwXmcTrCKd6%S@9FOeiBm@wVi#@UjgfbJ`E#rvrM;#_ZRSU1MoW+`u-@SNK@b_n4ru z84}uPo#fI{5(IIaB(4XcoH!oZm^P>Pb+8(|JS!ZP#SrVTfjwF|cQ+vn`Z4?Hqj&Ij z@C5y_O|k>jr99gc|9n3LPUJ+Fug?_m`?SipG)pynp7-#Y%gTK4Dv`B(y4bC;UTDWx z$RFQE*cU}r-Ff&0N{y^CFNIsB3^_p(8QPjtQ9PTY_~A-EEyI%KXTL7>NN?O7JCj^_<|52fvF zD8Z{$VOX~QHIcz;nYi8@8^RuV^AlPL)Sa%^p5gptX4dzt_XQLcUXWOGCl)N2 z(26^Gy9r($z9IL_{BKxa;sT4a&e%VZ&b_}?eLe>Flk|O&+5VGg4Tuiz3BLEw-`M}1 z&uOJGlcRvzRJ~@!93MiMc`~KhJ>?@_KQqaiP)fz`$)u&vk-<`vk9||vxj+bimuqIK zeGkDf)z`#({5ByWuikRaA9#4_l)gCDmm;{o$$I6FC$1s3gSP$9J254&?0ov18qYT& z7DXTvw}~fpzFLSjK(u zGFYG9^CmMfbjBmcphr%M`k`o=F|Iz(vA6mr1Ym8Mtf*IM)I zLcuary!&w2=o}#iVIp4ZK2?k{u3dA;Gld_=U$n>We4Z~#ncB)Xj?}9``2HSm0i#Zo z9&Nk#o!_j0uK7q`Q+rz^A>3Fl%IV=YY#CVdDl?k@8d#=@M=hKmjFGt3>9f`|)eMPX zjd@|lfsud?4LLn~_wiQac;4UEX{|!ySSQ!cvG?UD-Mz0jV16lwO{bvzSAEpKuu_Y(49mE(P>b3y3W<(1m55J z*t4iXfZ&BHEIq@%67$i$UvmqG1fbAFN$=Mk0e~{y;d-8u6h`;QprfuN)L~x*Ubh_* zwhYC-F9lcbZBQ5`2-to!^tKCvMVjnjj!x~y^&bq|n_0+4n9qV;=^PE%0&;xKZCxjO zM)%F2T1R0Y`GpAP@5I*o6`Wvwx(8*By<7vY!$7;(!Iu`DxIVYrwxlcoIu5;*ST;k) z_4%l8GNLhoF8DzA^5&T&bk)n16BS#(fJJJ2xIuFM3cOD(*5gW|(pZ1J>+4UuDB*ex zm9rmXDs#l~eEmYZPAJt!!}~f{__pFo469*l3wN#)=Dy1 zo%-^*+*9!ooQ?=RjlVLF=TFOMu9|%f=BF=|QXO%A8skK7j{ZroTs=MX;-ejeFy_3X zeKI=muC)hDhW^gP@z)L{^H^?xcd)n7*3ENbtfW5>KLpy^obl8lFRoNsk!eI?Zd zg1%;F4*gR!v__iP?m5mYBgUg^>`uTk?*y!0s@DrzDV`^F_Z5n?&SHJGw?Ag7I*C?L zyXv{mNs+2J{}9!)QwCrOYeF(uwtWXwq;E+a-W&%3<`|c;pZzAZUWUaq7UO?oeRkgs z`FYg~F%IpH=NiVluy0eh#aR~lCbUXwrn!{YJpZSp`fsSiaW02v#|00@SZW);>ellp zHE5Tc=W?tOwoL1OQ*!uI|7Tu zFVg?B4N!^C?jr9l2%+gTc@O(NpOhJ6F6l%4l!QpeSkxmrQhpQTI?y>IPQ9yNg?)H9 zoNH$Kwi3KLw;Q-O+y+Y_waZ3aR}=ygvPaVS$NLQNdvE!R<<(L8Xt>NgKeGg-6FG5t zi^mJbbBs>S{CY}d1wqhfB2+fYjKnbxxt7nGUHbTZ_^)G3$%IneJTP7m9x}QJ53ON+ z2A~JuPgRGT_X(xSgy53+ZRhcQSE|9bP7V&-zWp*vQ%Yh`#EJ*-imc%rx%j>sV@k)RD^KYJXb@~JDrSfTC(6B| zc#|H+eL)wGP<50@2UO)!xcIO<0?cjwXN5AFXQ}`jC{}f z2_ih2=ScDH|B4qqtG;PhT%LK1m@#n4W=2-s}7czU^MFNyOA6%9jfP_Mk z%*&TTy9t7$Vq0x1D%O{b^D*~|4`9heubVlGTmtJSp=2`EY)BB;9oww!cmw<9kiYdC z&9GwqE8mG_&gvz^kdR-I-DzM=rJHnRcTPY6s^qG_hk6&W8JzvwMx0kd@JQRRAgO&-Wh#q)?W#`@FsWI}9&u)gPhc|th% zXJNh_B!b}8L*;gCGq%v=Jh>3#Q;p{V$FBacDH;TW9M?9*N49_klRpqFO7nk??~gyC zv1|z;)`O`zh5MhJB}vBjgrT~a*>Zpz3shC z5d3+^349$#>w|M&E|01r))!Z=uIGc}fKF0sDJ8AaxF6-VoHssOUCkJaEg6Wem<4M? znYy)etsM3_A|FrD{uJ+s*Q4T=NXNme#&wiqkA)Qkuu9_l4Gk5O|5a8;wBSzSBf=Jr zzZ%b<9YHBLc06f-?ujmU&Uy<02?va8TkUT1z94vOSXV1`@55hdlL@6Mun5}kp#!B# zTTkMzv*Y$%tw$HIkIbOfbbagv2gbPn=C@}akpzJiJN1CYL)f0j%!R`4JE1hMSKXS} z)Q-}(+tPXGIt!GVJ*H`m8JBVyQOy^K*zqTTI+VwQ96$}e3PT*VPBS98=rG_ zkr2#`y(o=1-+}oVEeJbo#0-H|&x5np*(30#bh}43s=R|hui#+MWSba%zc$vGa@ZL* z>YB^`Mf8L4f(+#|Cu?2>bQDT{7_}M|kEOqsdB9z8S5|r}oQ}8ad{kYG5N(`(``NxY> z&)1_XUb{=7WwjevjbXE`#dgPVJR@fhJ9-S``jmAR3;2FOsaM^z{A%k4f}n@Cxnb*P zG0eYvFaK9=usCgWw(&ov@XEY@A!dAJ!5r)PO+bvfG@wh5*Y7XoS8@G1UOb{-HG$Wp zi5ybMDHDm~jkVV?83WY(PkmUWB<(@q5ooArW~lm7(nr#@w# ztmd~y(xg)-tun*Q^BoBX-D!%{M=M&qmL-1Il{dMyeW^8HM;8Ee`p5ck{Vfzi% z-VnI;Yb)rDg=4)Bt?l%%i~|&`4=B&GSBBuR-}2l(?Od=l)eqe{KIP*3IyKMQywCw_ zS)=nl(6JD$m&UKD^zJD_c=`DIrmN2Z9lHbK)Ju{eVC@OLC;dnbEJ}aKxru^zxF1@@ zk~r+i5E#VllW>1eYM)d&#e}fwhLa(I z+s`w)qXtth0T&KP;d$Db8rqnAq>?dC-l){rxew2WNm+xi6((4JBRpsFf2RG@egAK$ zLwS+oZG4&Fy}7t~yZaCX6|0XKjQNEEI>>OaE%$JMEuCXNBz>5IQjL_86gAQSEj^_{ zq~nkVN^7Bv&}~}@UJ8yo1uY|J7nejQpE!+MbDV0CKG!*2KDo?5lR9)!}2X_%xZ-Hr1-wpqV) z7a=k1*YBv$D;dujI`?LJt=?YDAJ3b!OJg~~y3yL@n7%ilR8*U&X*^$xt}^Ms+8B>f z2rBua{e90>5p3*d_na=8!RumzpRTYZ!&Wab)w(s(7Xm1L^MJ=wjbL%OIX>S#NhT!l z74_Y$vIi?A{c12SjhRZsAdn79 zjwCN&eyA+=2dZL_*d?hi6|LO@mVmQr&@6oqpd)GTp4LuDl%5jmhikmH1FDd@V@v+* z1FIzUWs}6QKHT4=s}~y%AAx|3!)PueW*!1IvVn^KT`nrti|6Xa^+8xavX|A^3r8Su z<1nfFGRF)Sl616Y{fZxeq9mV8nUiYxJ<>w!WM~(Y3354}^Zi4G( zJt1s4$y&t2v=hJ2eR*N+x)jEE&D~F~WgBq+lT&)MGqkWisG3VBRpQVJ;!3|7>HHi5 zVbbVH)v8>0qa>>fZx%`5`f)Fu73c86{mD;P4&QhHtUIs&9Zk1bKtV0TRq0N935k~D zl=S}nc>WqzUJC!&i}gxMU>eAlLn}pYfLzUJ!ta58ZFPbpy~<>43A^ zg@7mjCe*3Y^DU7g!3O>AUHfU4+eq*!8}&T1 z|7;mWS9Y{UJm&8**miq4#i*-z2nj&h`#$y1twhom@4ySzrue;KgE>7nUnTDcUc^?#ihGC|`HC9LHTVQ>#jBY5Ao@R_YKXokmbqIpLrUy&? z$D1NCKQCrZ-rS4(we_G6+2NfSj<=!w+bIg5NmEJDvPYt@;de8I$K38g>_q$f~{rji6;RWk)WJ(?MMXRLYOJ zw?(vm220&%oxpaz39Ly|X<^|XF+ll`sSzJ{+$MN;{&NFKNaFtO5gRmHdJL_YYA)8z zd+y+VDUdXI$)5{Wrza-yU8ojV+9u!ljD{)1n)H7vT=TUZ=Tj`C_+$G8;fwN7QRiXd| zyXD>O=a>I;zx+4U;nm*%W9vS!0IM^%=_V2OS>Z1&$_Pw^c3k!3gly6wlnylE8$;@s z&?To-?R?XG90Ckk)7i&npTT<2c7}9?DZx9#(^uU?3Pouwv7C2*LJJbEL`1o_on2(G zadb{rS#Mugb9^6LoXZUvbR{XjW4~Lg0E&_C-n~~eiY_;gvftJ>-ivb>8Z!E z#R8d7ddv2z%%re@WuiULR8kZ{7oGp$mERuW5IE6f+oE4|0_ssBS>L&S12hrP7QcJy zGJ!=&CQZ7`6T-mhCWjh+pcGZD{_ubk>@}T}#o{fa1`kv43RO8$C$(?%}*o^VjU$cl2TFU~0DbCdy;zOu)H z<}^NGz9_#rA8iRj7oSo_TE^i<5b*R|9u~ZbggkPr=9P6kC>42m!i|;}Ax2{LWT21P zDL@&n_vx|BAHWJp>-Ni2dSRQFDDf`{8ik;W+pT1<#laJwKTEYT(?_BpM}v#tCl+j} zNqeyKW@02*B#veKw+)AbHJ}dJo0>=fN^*4Ozdn6I1fSm&B<+<sHgJ-tlexRC+ zMXbJzEo~`9_mpxP(8VXW%)Dwd>BRAmZ?Bj51@8}aUByYs39L7Yy4<}~VeHdFcD*BJ zmH;SCQ>GOLaOvao(bAnFzi>a(3}0qmUjbH3Y@4Hn&@=>Ll8!RhrW&xmxHOKMS+^4s z8WVSib^k!vGJiL%z(@+EI#uDl$Rio7Z;llf-;X83J4oBlllvfy(c-1cM42Y?YZDR? zZ)iH6%EI%AlVkHCF5N)Fd^lSK|Ac@{`g&USc1_&hoDX-Uho#{8M759H5L82FjCtK3Qu|!j_>Qu1id3 zBJ8x(te|7fQ*@07jYvcLq6uCBlk!_jH=;}1bG%l2^CkQhSGy;tM#Z3X92a8NpzVP7 zXJ9Js*g^}m$;K;>3=e~q87nM&g2 z_FE55s|cfuJh;VI>u(mk0=4D_{$G4k7~@Lv@8_F*2{!DvSr$jQz`6}J+WZWWMCsR@ zW?Vk(g7X_1z04zP3EO;+yzr9*AtdM(2?^a8%SS0b@H9DX@CL%OOAER0-Z}>_MZZyl z_DWuq#?8ayFIm*!{TXXuX*cc!>(e3UV{J_!A7YqU*Ak3es)DjnmV5``2iFc?Tygx$~MkzS{Tb4|UuReJeljd?Jr6hX*eAt`W1u^Q5&YhvSzBShDtoI}e?d3D9u; z(9B{ZVasBhk57hWlkxuEURu|Acug8PT|YVZfVF9FN_9c11mVp zqtvkS1n!^u(`EP8kK+6Kxci$ty8oGv{}HeW9yl@H0%*du^_ZQ`UnHDy+~qZ0e1lSn z#FJFq(}6CoK-i%&m$+QUn6Ei-{O}8cU`%vZ+=^a!V<>$R{WcsBsBxck-IKf$tbwAt zc8KI22sU`9&pldw9i;~UFE*7YYACftZX3DM8wjPDKhN0n3lMbBSRqj2RSuJIp_8Qz3-1MKw%Q|*Hflrc)xW2Dz&g){GOOrm&bK&LYQ;T z`NR3qXcfqwU0bv|+8)QZpIhYWRh0JJLrsEL`5@@xQ?s0nI!IutWJXUIbP&R%nKsJD znE~3137`3UY97#s=U(3Op)IPo-VejAzG@=OTqwxgMvmr)`CaMme=&s+wmtbK@$hfV zAN8~3`uHQbpA?hVK3i7_=s+9vx?a2jVbVPP`TMU$V!e{guId;H-X|PC(|}8F0?u!C zBtx>*1IK6i@Jtg6pbPuo;9r}$0WGOc%jkQ=ml0lfEtcZP7O-R=s{$)stXFP_&fsxd zLhOh&)6hCXI6C`Z@3Db?+;3v3=bqgY1k|D?+>qmH0PD-k7oX!X23ANwbD^82M}T$) z+82KQh2W5?Vl7ze1(uP@A+XZIs2a!n(Q99-1tT7Z&QZS1N~SlIaD4Za%O=4>l3yOW zFzko>iTdnd-;;6dE5*^eC{;27Zy{yVnf*su@qFY|P~OeD0W2~}xFkU66`ud1GGXIu z%L#(YoAZo>_M6^WQ_YBlEYTs z!C!IV$}8XRx)BnuCT~el;$Zu(c5To}*@x1p-&v)?VkMx-z=3U~p0}_u=i7N`e-4De zV`#^`h=eMR=kZL4rM4xy_}RxFm1q57EOCPj7d6d0WC+x{f4uNG$%HQQSXIW6Nx2lf z-eXilj|P+*d`;I=z7CuE=j}IiZD$ap(49Rc_dpARlX9aQ(&GoPFGzu;`gZrv(>TAz z`6KTQ042&3E-$<4ugVzrW|6{j|H6ASs<5ukT@g@VY<=X?^NA3wbrt2Cc5Z?9XKKHA zr*uU!=KJ(huRUdiePrTK?#g4w`E&aDZZf@g#`V7A}#I?<8_#*^z?Jrt~!&v}r zyNn9}j6ie0?2G5o)f>fK!IkJNQ;0Huv%R%cYnG&q~m-Xr}jP6Lup(6-PO5n z(E{&h`Z~?Fh4Bb9=nW~*6_JD2rjGAwlc*!sM;)g}<;6IJEw}KD`3rTTlpMI~!rqXL z(t6mUW#=7R0S$Uhc6YzaCI~c_buW8D0gKV?ZLc1_4bWj+g2Hk5Cs?W` z&dZ-YBq2EJ>m;Xf-@x&8o8;{n`$dQa7&D8p>&5kK=HidIA!o=K*Sc>|KOKkjpW-`Z z)h-0qqkVbZbsGy}+v#W@pHA4)xObDDdbb7UdmyLC zze>;(=X1%fQfvbReSIA4n}lyc(AML&Abw#Hu?!VgqscTPD>nM8sc@0N((+^(KO}^g z_kOz-C?Jc^_pWl>9zlv^jI-CiIJ2q=0?5*qe*fh$1Oe{bTfyhe2wpjjk&9RRz>??3 zOFUS`j{B`wwfct2M%+)0ikn1>?7#xIe0Sf{X7bPT^M7IqgqX9x44})*yCgi?J(=P8 zp>yPxDXutL$ry`?`n9h2MT`Kq)ygjg9q@v1JLd&<2I2EuvI~W~u7b7T@kq?qYwcu= zC0N{wo;F4>#zKNp)wF8HJkvGEW2B)u2-sxo_gtwyfiPP6O})vA>O%+Pg| zpAZ_*By6EaP95O0{Q(w2fQdh1Y9*oT9JlIE!54yUI^a%&lM}j{e5p&`+}%b9pFLi- zZa5Sy3~yximrzY4T=BWwR~=hP*h12pljf3)QdTP0Dqws7HgvgTMpMoWNOU9lefqU` z0HumyyjQi~Vc5XAHxKZv=0KNLruMhYQE5OyvfSLpT_?ek@m)=qtZxKsK_$hKUUUL# zkmiOG#BxzeikE$R^xRK}RS zF#2#$AfPL0!~R8a8lVK%=?XKwe>xWbcl<#qKYig@q?1e%n$EMKbmr&&(KXwRFkP-x z>dkXY2vAezg^&+3exJr3c|5!XP=&*9z))SCkf3!sbnapc)+?!}KvC-@!kKx>g1_t- z1xqCQM~5}@3Dz@3tii?kBcMCA@R8T$$M7QYk*1h*k!!wcBZIptseUhfYmP8yI>o=L;~%wGTVLBbotzD_YqYNV6t*nh6}UM^0EDamQ6IM0OV3$Kaz zSQuKkxJPF|+~vKGll)@);*s7t-^rWGe$e zC0df3=}tGyC)F>?@xdJ7em~v7XL}9LTmI2qQ3bqU71;|9nUjen?{o#GP8k2>T#&x zja@v6Ws*6LE=%<+SBn&8W6lpN^h|$+Ge}9=j}ZK z9mn!d^Z0H9v>e;9XHNGk_Ti`-sr`LTAEoJ7%BszGDMgr6(C6GKl{n3c*RfvQ_l zqM4s(ha$|9 zk5RFuV(*sVi@)*-tXILd{ZA~wGWBMiy2vL80bRYc?+w#w2-LaFKfOr-ti^cL@aCsf2$*`JYkKcI2DBbOlpnYA8t$*UCwbRpGAps3EpqOhKO%-(9Z?qwSm}fFsTSu9Sh|$L%{NO7yCO~x8i>4IXis(2P+Z-+v^5CG`+_2s!5SK zBa#g)-?+$2DR#94#<!u1@qy36HF z@E(oawOS@;hv!GnTQ2^3c?bM{dcW?iZ}3jluyyS}Ac(N=v9t$$x!!o*v|JlfS^gK^ z!I6*53zS!w&su?RV=j|Ou*+lm9=mxOtZa?s?l0K{@6PZZzRs^#(b{NkS#qJ^&p+MK z|Asm;j`myKQX&{*vfpBjc();A%(-;Jo3a9b{ahRMm$2`GEtmY~jR|=U-W2KppW-MD zHf8n(g%QbC#yY3Vnl5KjIRyb2na6?IIqClMx{d#MXr1PCgT8NDM&QqpQ^ji z6_&79i;!Ci=*F8Pn2}M3`QxQu`Wto_U2*oAEbWI?=t9%H^$&aN0*cTwRy-^TL4udC zO-$v6-^uv>BJ;c}+tBrvBFz|o7$JOqZo>cI5yF;-vHb^@JjdtBs{LsLq6s*Dq4_+2 z9(ZGfmum02D-PC=`o$z;>#9JERed7vJ7T@l94wThKS01oyZ8KUY!J?mTx=V^&jstB zI?lxRikYwlYNh#v#T9tDUmQ8869|f&$ zt2Mp`Ys6E$epLH3ydcW0nn}A?5fay!j~2GuK>(=qZTpU8ryy|SSZe8dKb7I>rgNF! z(x0~s!hEf=lwJA=f>6pnn_X7g2*Z|OyJ>m%JnmoayxE6|tYEMK}2?&H3TN9J+;oBd2>IT@oXwTF`2M=!lZwA)orbDr3IHxR@+A?jppt@cw-- zSw>hNp+=HdM8p17uTH7V)BZQu=cIWw*gs%51ZP9rJ;=At!#;%l5su3A)Y= zXJ5~(T#kJ|N{tTonp?vAG~rcZyLTR?Zl|##Z*wHJ#H80*GG9Ldfn9HB;!JTHphUag zlnNyiEJOP0`F9m@fC8iE^Y?Li1Nu}=u9VeSgIJ1zjlacI1+ZS)N`F=R?|^`>#oc(i zv=Z|>Ag6XW>@c9(*ylIxvghC(NPV64<4Z0fVT<*cq=^k!!ESM~srn}*N)24JiR!*P zjrEhVvs_ZlkTL$aVu{g_wP0~tL`J2yE(g?ZR(gAGRUo?f_0xGuy=f?|OR{(m1m8zY zM*F9OQM=qBXlh}uO%2Y2_o;i$RyE7$NE}c9kAz1zATaBAQPrI|0m0HxXlUvYbwGvm zqsLp_cj0WW(>ZRxwq|4HCR^T4x(I^Q&>Zw|gYs@S;@jKWOuqnU@gO9r@*C zyaJ$KTZ;dsk3;aTjcb&|)-6M6Kd}9ptGTu+W8C$j{`A!e#D4UQY!csi2wszRA+yfs zn+W?FO~(EmaUmo)esJvm*bL}c=g7O4gY6N%@4EJ&?&aK(4V~fVa{MJ zx(oFqPF{uJvHJA!5PyV%8Vubu7TPfnL1@FgxCO_4uyP}m+>If-(CR2Je#~{%00Oar zCzhjyQiNE9XXkQ%21776e%Dxw;};?E?0bSLWeHg5=4I6i93Jb5$h(}3_4c%9-9upl z>!^P?=HWZETDl*+Nhj0)`G5FtsKZlk7OUZgQi>A%R4YId0vn-{BH5pf3{M=L{OF_f z_Hsg3w9L~sAswYQ&B0vvcs8{Catco}DVtDw3)Mung1vzX-c0a%Sf3EeD?+KxxkOf8LWXeu5pSiNrs1WaScjfAe2cEB;{5NJclLC~Sn7Fh ztFRpB4z3Hy4yEP0g}j@|A#%ua+&4G>tO z9iR43X92n?x<8runF%N$qoecNj|rdWd8@p&Wq`oyb;weq6cv+X7-d6xD00 zyIS|+cw&4gN~vIh$g!@TpGpYc3=i=b=0&iYf^E)|cfUtq{$@k3$@zmtB!{u-W^h9= zNOlf%Q&GoyQqoMCnLGr69nbjR5-UzZ82xwOrAogLqe0`^P?uvJiPtST;%4#Oq*J9Y zhex&(!kHZlE1kaq`g6=5jV{=a`<0quoVr;8=O?|<$7m8swRF+L@(s6g2-k0U!Liv1 zu+ls$H=CE!F@M6MBd5a7|cecgtiLm(%?>Fkxa7WWVTa@D-ZZ}9f@Z5RPXWk7~ii7LN+Fo6(Z(fh& z+kZ_*FutgCNTCHW9~7o$HlrU?gx~Z2^Mt?(iGOGkJU2-QKer_%20uo^A7xLT$D46L zJ4)^Q;VfPPt0T{{lig?bU-jxd==*FeK_~^2POs?Mi!O6|n#{!2oe(s%8*RR-(*(gx zcS7~S?&l~)+xIt!9DV=+P3QTl_SidQ#<*4DwX_8v#=R?ViuDDcbg7;C?A)RXufoWn zuCvA;l=_3=KXlXIAd#!iu;$WfPK2qp{uWO0a)2$kw2FOi^)F?{c>J_!mcu(hqlVF` z#}&>f)jw^Z%UMOCROwcGcGBc361Rp=itmpzXG z>U2q#IAm-GbQ}>1K6IrAUFwNnVH3s&A^00v*mgHn8l_X~vzuS_4kD4S>rJ=>({6YT zdb^5iK4l|;twVTn=aVDoGS`%R=oq)e{0?zZZws-ZbZwM$|EfoZ?R&`j;%bXtLMeJU z^yLauK+*P;$btR@f`I2}`Bj?;0;{wxa3Uxa0=}+z=XN>j}Q(3BlY1|E2`bLX_hD#!Hxt zk};oC>9ol+M+mIv(c7Gof56JrOF!^1{27GxN~%p5f^v$T~1_z*c z-zOdMfPUPsEk?6qE}vBK{x0<<$5;ro`ZzgFZ(js79r?f^xVabty7n8Lh1Sw&)r?BF z&dolC0J3vOO5!?ZK*gayT|bVFDnC2J~ z$%6G;r{44M$TdKVj^C%AawLM4>wQ|HBXNPSkJrwNRdan{t@|Waef>3Uj^jPI*8J2| z9AiAj%_{U`vmuUO(?7G$63>USKJh2-Q!5$crt+Mw>l-1+Ewa|1i1Nnwk8h&>hh+|B#r=#$GDi?ZbNWEHTYtBe->Ry2|>?kE*Wc01O}Fr$ksqId48MExbf$jHUNI+03GYuIGQC z+!|M5bY+DTH5LvPJ21w)reral1qgV=7u0(nMh4;Y7goqh&7xG26)o^t{+j?zmzXNF z_`-|A{>9>WT^;62{9S9p)**D6*Axmx9;kv1Uy2g4W9|%~DSKx4lRJmNdXbo1m$mIf zX-BgWm(Of;6;%YRuLSz zgDnRzlsERnFsf5x})UkBIFOjmZY^?(@|SML-xIwCHWSx zUZigHXfKp16>b=XumlFhXzLmb~Bp?8#v8?#^^(3CZO1qOOiw7Ynre#f<|5)}FpTB9- zaN`;Tv$CIa?l1@AdJ2ZMhGdfP{NXDLxuX0e8Q0%c&VcU~=2ztKvO!*+{rG*dTgi1x zB;-jP2=bpyBE-s6-KbR2$NVcjUFy$!`N+Qsb(&?lec$z=6z;n_=NrL|zvf(SzM>;1 z!IHGHnLUi#fYP`2(Y4C?d4etYD)WuiE?@-)wA^_`g;9zOErhBpr4hFDw5&>;4@2oP zL9hiWhnx*lB$irNU5ZMuJ%^p=z&YU}8 z?1dPDKEGv7J8Dr1H;(N(7n=?*!N@zo&$rY8bw(02^JbmEQq?kF2w9Pi@aVp$DT|la zAZ)rb)#Byol^Npeo9?%v^dDtPZ26H5!QH@lf0Gl!_v0p`s3sT_x6Bg%hF`B|MC;9 zi4oHnmt&m}5LS{OS)|#c^lqO}WU^g})=1rnWdM>S|2MKbGU$RU!wu4m~ zRNJ~g?C-V41G(eEj7QArUR7 zV)>fGxW7LecLbk(j{7rD@0a)N2?+GMpReBFXN%V->{`3Oe1>2%Uu4O>K`$|!-+`1p zpS7v@e2dcZ85!KaH6@0LFYC#S@#GJ#y2FlGpWUGwoU-cy#Y#>c_A^UibhixJPl*LR zEdVsH`zT>0u?P3ppz9`|rwUzr1OzU71c@f~*~nEn^)kTT34+w4LN0Eh9*CFF~Q z(mzkSBKa=7ChXUxZWpZe!28c|n`=mcwII2OjArxUua`UO{>iCL=-P{@X&3XgpcLfi z3Q|;;4rGjlq*~ON>ruLqKP}4D+DhKiMpQE6J92A`G->WXJ(uqr||JmHX(u+ zW`ES^iz1Vz&DeUXOI1W`Z|JYGu8vUlER<$NapEq%TTSa)0@gfqAeFQgedY zX(c#btrq8x5(Nm)mFQnLu1Q0eTkBi9?xh7r-9qR3c>UwG7zmoAr<<=?J;s=QluP<3 zFG^ERpX#jIR034{7WU|X5ax%Yh5JI;UwE0=-?QAlvlU(@;olM`IUX?71a#``qNA!M zA*R6p`NtdiNC4#Lxqg0f6O}O*Pdjdu@QES(rVD(X`{8mP_ZxNZ-S6eW1voz)6$hqZ z#D>WFzsmh_2~b0V=ed+G6QCDQ`>TeiNUSfmnZ!A7Dp){Tu6D6m0iZhdQatUNIbqAx z>B8P;_X%D%35ke(hBzO|I|I#1_F!#D_D8Ors>bz@+K@N?=rF-+=R(Pg+<^0C=eTK1 z^`c|GFKHf6+yQ7O=FTR5Ocd8g;zLU4>GOoJTnRK;p(gEdaxZV;=b#`68 z3IQASoP65n*FpGvUErTlMZ}(P+KwN7Y6sR)C;PF}R|!J6xPxHb(GPfj3RGzI895`2 zobCHDud6@cm7$$mqthD*R+aDF;O-TwSnmoqZ0`(uPcz1X?DE|2mGC^G=<~VL)`O*E z`^C*u@Q--l|BiP{^ZredJiH&h+-IjtcH^(RmaOkEeiEfok*dibay?4T z=G^v=IkC!&ar?dP$vfYnH0${*oK;(h(!Ez_c7wPpya9uEpX?9)3TV^bvu(%m)6o8p z+Uoy!auous>e_MYKEjriO;dKBLb3!Kbd*KlnLA*m#+){~(AXH4*r0EX8f}^x+W*dT zzBeE4hrpyRPV48AJrF2Wud-@*5f+K#O??{m`vcc|fI}4?8{X z9)@>mEHCv?-vmnKmbDbu{4_#%H|6((yfi@Do}}k%4oN~l)qV6~Fr^vuHTFzl_5N#w zuwRb%zr^0+`nC)n+?Y%?XN+^xXC}i%04=-oDy`eL0BSX>jyt_2LoidhDR-`20oU)t z5~Y03Q(%pnRD_g5GQfKDEnhh3`VA~ZPeY>59ySQRMqOiNF}ThUj%F3qL`Hv2juv2d9vc&WzLxFxaK;q`hy$Nj6#02Kxk+cfx; zF@9$HK!^P^62nGXa#lYN#_?4vSf@thi{N;L2H!DXo@9&%R`U+$>cN{*e(PlCjyGVn z2Dy*Cx<3fP)KGl6hNT+zb!l9x6tnvmSiBblED5JXvvE98(L9Nc-I(uy@5OJ_07V); z6}Xkl!?r)5m-@YM8;-BuR^3kO6TZKNQZh2q2ye@%dt=O&Ik0}?LH;L)_5_Rh|Ro!rpk)4mQIJ>!Pgxl1lBx9Ub|!~a`~b|{vyZs?SUBC|085WrAf zE!IV55)!`LTW!w#1~e4TtJ}Md9bIFJs;_Wd3!&7R{Tvn<2UbZqn>Htzf!|Xs^psv% z1J;I0QRAYRG5#m$@{j+hl`CUDNy(-U^Lz<{r}n?%M+Z?#QsxsLUmik?0%<~#+Ea*9 zTwdAkY!w#-c~r0Mm5+hn3Ap+>?s?(Xrt=_8lQReYb5(rDD9_*@mwTf<|7F zK|>`03d+iQO~2ZS1VD=JE~RNF3tXQJ%3qx{LYS}Okye2dfUc6%k5S*80HydxHmm*8 zK&%G)<3Cb&^I=2h>)~A8as%_r>G@39kw*;YC)>la@*MNGq?%mRnYC84EqNKlir=pcE2L2H4wd0O?9HIZTtnoz9r^Q>^wO{u+^LNeKPZd zz>exxD)!h4tp@I2weIfA2wpY&H+BnQfRd!bmg0y_NNkfn_vctHKN16#-6NLs(qa1- zKk8F3?}*=*>H50RS&ruuWsLJKdAA{B%#*9iVdIVG2W{O%iN6F`5cXn$h!xuzaWHh= z*qlWF9YMIB>&K>zk3yg+aNkKxa1MenUi!5YG1$a`F0?GNY2g}yMH^B#{FMc$NM`zb zz4|agAgR4^SK}41sv1{kbmrCS5IZ~U83XF#_@M#sDwdpxOEW( zZbQ7iC*MeUGR9>dZ@bTbg&?T=vC$eHag_e8=e3w(15k?f{(dI5{44}$jp?@B$ti^6 z`+TqB#ucyx*}YtcIBn2{Zw$EB!gd3%cl~r5X>voCbJ%HmdO;Uqv5l9Xw4QB;&3W84 zxAlVrVPBJ3zFX_J;CKf@wQ@*lC`}q>y4KAwL!dGyy*6^L4}zrXyJ4TCrXlbd4cPl* zy9aFSW6To0vS%R>o5*}lu3<)ESF4$^bj>|N0$a!y<@K7_r(~e*>jS1ne15?6%$Ht! z?DI2peqprl4)&!f<2x*W={AnPRnPG1ol?X|3@;T>WJ$xmIPaK+NiW4vs?lvW4k~CP z(W*{;NXp&?w*Sv^Zd?5lQR=p9q|RNk#rmih;8**!zmqYpc=A1j@)S1yfy6Z)okv9Q zc|lj{YX@-tJ>i@ZVzkv$%M~)P|9~o)+nn*WBpc0=%>BBfds7{)gNL`!4PP@2{|j(v)>%wXX+{Dybe%d z#D%|0=n7cY8sDwWlJAkQIG(81ynYlm|CXaC1RGBQI+n?r{gPn9^&RwAdC$2WEK4O?CDlC%R9Z~VNt zvcCkaoyPrFMr<3vIt^8pOXu1B^L+mwuMSmM@#SaOlzH+OlxAg6T9A`0xV_Vm;6<`L zf1~*Uy7GeiKmShMi&C8bC{v$?xdT4$vT*a+z;k?F_eyt&5=s-=$K&jiTd9mOrJprD zBM+r8uiMOJ@hNy8WJKrLVkZc@&r`GByRQN(L5g+Nu{%vDJ!RGyI`lN-{VUnsuJ@so zQ);`?lj8-Mx41SsN~;IijEj+ghbZp7{t*wT+jGwWf^ zCv=5{+S;z%Tm>%@|9hjOZ_UuvC)xDYM6`nS5y`*%{oZ~Eepc7zn=)lF)-_!+`}^I7uRS3cql`P>I+KJhJ6DFjqBIv+1<^-`0|rFlB~YLG>tYyQjpN;Wd0QT#bS7Qw z@m?K^>mgA!5>f1leWl1P1DlgXgK&IT7lW3$0Xp)nP^o${j`DTE!f*Luspibm6;GB3u1?tLq$L8$f|k>EJ-=Rk&^ZBKJmZ!!||U|24jc&Z0e(c5}cC< z8*-N8`6GP#=8=1|u-QvA)hzmv2#IA+=9FEW@Vw#d_$iQ*2G&+!_2pMbeBou1?09&? zP8TeWMCqfsCX}_PHBB&nAGiW3LJISaA)kBy}nCiC}dI{760(*~}ie zJ`{U%QvnUIB7$4gkH|m8zFWF`L%e+T(8^%1`$EqA4k)X%wuQ$D|Lb%vjY}g}3!CtJ zO{KLwwSY<-=`42^?7#wvefqc{yps{D*w7^(gWf@G4O+m;Sh%%|9@%dZc8!}E$# zQxbBn42hRik=gH4VR*g@&vv+lHevpi!kBZ0p3D53Q0I$*&$xF6x|9QciZA>wBB7_9 zH&i_ODY~33=WqS|cCecoMfAx5i5WrStGk#{qX`Bs!I{*-yo=L%=b}y87e7TEZ57D#t@e{jg0p4xVEA zI0$Ic{ea)8WDP#wD6zuB<~qC#m27$IES`Zis#ANLy=VbjaJ@uHhW8j)r^H+SD?AUQ z6dTA>8+&@k0>|g^&1l3B0-w5=(3JIYI@Jf48clkbvE;pl@2(cp=Ex)*4VeF z{+0JnWhcTu9;LsviuOTpS0(D~u2qaKaL=UJ;*&jwn9rLrMyyI{j+{q$@PJHZ z#j`X(gZj{Un+$h^A-8b6_RyF@JdZ|x*u@yABZi`Xpo7x2 z6VRmc=}PM}TLGt2Mt~>o4Snqt!CwmqhG6W{|~1{zkH|zR%m2Q-uoWGtJS|;`ny#RA)!uh z#$HPZEPelM35o7PNVt1&ZO}d!EKh-F?Tu@X|5*?J4RwTfW&9ac#$PXwZ8_h-9+bN5 zRz>|w-=nl4t!9zlvLCDu`N5ej!LqQ;N*oIia?gbzM$*H+Sm`eQsx?fH@A3S{viX01 zrP-Omo3uI^VN`}zM}bxdTL@~jIqGcSKosdPzv*Q?NU8lK}ZyP?<2BR9xMVy zt~)^50$P4j9rxB3$$@zNw}S~SmB1pfp2|=4gg1mk;`?cL6F@(jZN*|F6lYhL=|f z;jh!J312k{;niwWUk2}>OU`2yEG_dCr88AvbF1nK*to^Kv!*Is!^jg{swM(-`*+ozq&cFFKX54@tx2SAppS)?(O)_Uku;J*BH? zu)B8!6B6EfyoWBh0xGaOvE;r#1A(4U&cn^yhX6%r_aYi^I56%DI>&a_ITKy%Ys2w7 z=b1kRETzQpWHujFl$xvG1fBfcAB6W$#0>AyBJ8vBZ17a=C&VhS?^xiQU60ra@{vOg zr#3?%#L54v#_Df3*4KuvD_icu+rVxnx#h7G1XzO3i60#P0{Tc7tmmA0g>Y=@l&yQx zF6@)TeaHN2;Gb%oKihrZ+Zlw?_uzZWcKZazST6pL$Emf8j4@Y?c$NEkbF2^Vou1nF zkXS~tx>-avA+V+`1}C4$z#Aj4Z+v_4HM}*PVFvXzoe=2p9(Z$d%QV(2>1Fpa_7=nt z@UGZYa*Y?Q0rq**-ANa~%BX(lkH2L}cz!q}%#0es%fwsn@I;dt(1=4(_nwz9Vc#W- zpf{;{2$!aEJ3Jj7N2^54M(?(cKUfd;=Cp2s8-xT$rn$>+=lHD4pld-0#^)KnX6(xv)Lf5ZrP&45x0ZMZz7YV$NP3OR$Qn)0HbL z%5neG+SjeEEe4bkPbzGV(E!WG=dZQ*UN>SExa{Zq48y_7h-Iqi>VHMTpJdn0Ex%&% zyy4V5DKR_+C_~!o_G?21!o0bq@}IAtL+gOcEh6Fd5TLO*-=QDx+Q3>VJRnhzRtD~#`MRMY5Es5Z@G0!sHLLvxmLf<(ZqCl%( z`-pkZ^CZGwvGJNGwJ1gw2-fUlbCdDsh}!j+$R0x)8Ri5Buxou?6?|;(xZ2Mp3Au-DCN8J zBt~f4_3`>E{lY`B@LqIp3{^cjhx6-xp!QnW1EukpOn>B(2Pi!U9vnM9zi}G#^~-A; zhZ&$>z0+0sJEvg#Zz^A0@aKb#zDK>ius{j>5Y;bh`B|ZdQjTutyFf`m>DwIrYX`3l zyfPypCB;(FNC4|wzSiVRKUkp#PfqF3FkFw3y|rKb695%!Ol>!MUO_2Zv;9DTNjkdh zW#29JU))D2+-CDMSgjv|vD#zC_VZP^e)PsWX;d9-;n>`gm2~7b;}L5xnaovV^BrN; zP1LT4j|UOX-Tgg5>%=z?#(4Bn6YCv2#8$Mt9Ekhz34+7kA7%D~O9)}mk$X7}4RJn0 zX_pO`Z33&*tM^IraR9FWgwZCigJOWDJr%2O1h>Mw(sox^re#2xF@CN8{E_*z80JgF z`=?9|&aZxs<=vOTO8owv!+teuAqf1u+x9P&2hd|8=<3;Qfofd82X7sR)4(!yvKni@ zS_`jL{}DIW%zrBX|C^sX&(#xN&~g0fSzC+rAsFk^?Dvbgj2MCbqG5Xc9(cVzhin^e zCxlJ+xr=z6aD(8p(Us=@vBE2`K*1qxQ=d z0?L*lKUVoNl-iwDE#u#s@O!;cXD#)70WAt^;w&?m&>9$d<#zu8Gv;s5XEEDsBY{=k zq)yNA#q+2uJF{+bg5X87*r^((1Ht5gS6rl557ukG_gR(YDfqs!6UM>m(}b9cwPQ1a z=>+JSCAno>8!T>*U%_hucC5cvu8pP*fd~h$J{R!Z(FM@3_3PWW-Se2=!AIvxqfcSI zSJY>#F~^(Z`h;Y!RQ&<(S%(vscKI;wr?J(?ddoh+`&M`U;qWCtBxp9Iw0qmR;d$5c z?u4>8=Rf}`{|$AxTI7Xkedw|aRJj$b)I-;tH-$&pW(Znz;oco>qS%j#&YwX!^CSnQ zAICPsz1jvST{!tt;=*^K>o3Og_tLsG(|AAEe*PXB!hm`Gg#A1}!kZyjvP5=0T3&RL z;?}Ct2a$|154VkPi8ELtO66^zQ8RS8soGOvT{D0RBo~SOdTY?d)$`t>%b8BtXQ)qP z==^g)AM()Y>pyxJ^Gv7t2dZRy5ccue@Lp-xQ%{WFa;__6!hFc-)!cDhfWU=U@!i@+ zF_hM{VQ<5L?bzpncBjemkU0cp6wT4tm*RxPw|L8Zk6nPCwC-_Vkpu8PNmjm^HuOem zO1@9#xsn2bp2Unu&ZbR?`20_$eai+?aQzCG(t*G!DtOw1v`R#IL zgdGcK3~X*s#qU#x{;n&kf>%TB{ZWSs3a$_JK(Loy7fNZ;wz{v;`C#o-O*Z>>hN86Q zN*{{j-VEqXQ;5%EOUC>OTT#EP8v%3|OEFAyzX8@o{Uxcg^%_`Kj&YeNn|H94leQnq zsM8|sQ*^9!g{cF)FEZMzHg-e;>QYTEM|$4`i^;JehpN3AtSz?+i|21U!tq2ktl=64 z%fk^J%)@yZpQjoh&-;EBu@w|wrAztW@P4Yi#f_uvD6Q2*N#Vr2@P*8v>tRT+?D9-!X zIl6B@&W9s+Z|CkyXkC!hbt^k_AV8GcnpC`}LKW{f`KVy^7*K|qru(++9M&&sDx|Gy z0QZZM*F|#c-w*#L)M=}Z){d8jfTJ-@fu)IL-S@>7EL1B~{nv5_LKk|Q5-o)tEKcDErn$uf5X5A&d8#R$hrnpy zh(VBJp9AJ&Ec#~f8g%7{I;iiq>0mww{yDP3di@iuS8tQu`9Eb492Go~5x%dB(y{CF@w)1T8Y z4L@)a<|JhQ(A8w%|){En%rMvW`y=XTZ8UD1IW;_k|#372L1m!sT898MyyH>%6|pYyuW| z{510pO-Dep8jHs}{S-X0{_}qD%GTog_j_gTu%H3DRj;NN8sy=6G#n_^r{zGv)?yl6 zCUJBhj=x~_v-ln|W84>L($5`@=R?CbH}!Xe5D2$xu27p@ht}3u>b_*#l_`vI6W6@q z!EdhNF2dW2`h^ zB_Aq>Qb=NVc7%p2{_1&_p5vu0gSMR0Bhl7(lu+son%>n{1M9M3yxyn6N=8(Wg*V! z;tEIqaIp?Y7o9`FYoosby13-jfXDAD&_(81e^<)c34%N}I;Ynt6Tz!u9?#q|1Xe@z ze)1}#gGkU~D|&M0XgydlD&5i8qG|)`|V`E|bynqKmYCdOZ6IVa+m@ zkJ7be!9sA)*`7CW!0Q4VAMmniiQs$_Pv=Gzg9YOC%W6<4M%Xo11536>F6Lik_wiKc zF?7`hu1}QfJOT?K%4PMjo(YLj0!~GX)j@!YB)vQQ4zVb0sf*js?_O)c7>iY_MLDuT zz{Bo&AwG2sP=kBL_#dSKBzmzGmYtpRcu(PFrs8&19oc?Xt9 zjH7gK{31$s$%-Rawx7rMNqkGE^lAdCNVon9jK4d{7_S!YnBS5H7D*)f{Ps7cNURf^ zV^UE500Ed3i$_J`F+dMeVw9*}8=#-ycd2g24nR**gh|ogYgm75zfIpXnKbEtv#Q9m;#l4LJ)Z&j_-?HH%psLVTqx;Nn0ks8Hl%+bD9P$3e6;i?p5P&Hz zFYrhw>>I;g+d?~Q23DDGQjjC|90a5yK|8a1o`7|wY>vMY{jL-97hv*AyZ~My_AR@Q z-zP!f#bJAZtpCp4fcn{^`ev!LZBYgnzQFKMg!?!<=5Mn(JOeb8% z{}f%BH0!2Wu4YS%YOI}T^U>wl(KJ_Z!xR@&(ECmf%rDulkU+zYQC zd(KzQ^P2Exv6CFTXRYyk=3v(TxaAI7A5?=Aqx@eXXl47N_G5k;>swx8k7=8DBx6kW z4BF9z7BgKu&GeZ_HrA*7>*wn!uI7xfQn|xR5=+s)>eUHwT~cNV0n@~{h1wG|bX7;( z9v^KKfdB+dQoGhbu^UPExNztUotW50G~i$ zziS3PtN80yl%i|dV|iNYt1?RePMeOabwyxdhTjGmW@w_+8qVBZoC$PjFyXOm_Q^d@ zoL@nrT4Mxkv^I<)Q{R(j@u#HP9qYRS3xaX9~d{FLQ35V$0$Xz~?(%*6L; zM&93MhEln;dX-Cp7D}nnt&)9`FTg6456yG0nuDOKQ*29?x;_%>TAAW43r<0x)#p`w zUGgBhvORG&hsRY3f|J$ql?&ov6{?)y6`VF#HJf2TQjKXMQP|ijhut=lp z$~>nWkRUiDyx;M5C0N70#V5C>tWk>gDs7X|dV>4qIom##6k{A;%OjIjJ2U}B##lah zn%{=NsVOVQ(l`ya{{BbNk}8#eUj6EC<&`9H|BfHkym9Lx?!S>;ORow~gB6`*-z|Ud zF}z}JzSahRdcgvBJggkOev05Vib#qtJx0ZRZfXsDC{24X)RdEwhL^W$~*D< z-Q050=4Dt<-FgY91+-D>zb`!z)!>CKcC(ZN6Z3+=x=fPCZah0f$N4%bS3AE6#PvAz zY|i8*pk|}RgQ$-IfKr{2^IjK!0LnMM44L@88&I@}HO$g5#*;B_p1O1|{o5jA+|?Nn zWcq<{ziaP0@Gcwz%jW%|%MIUSpReZF6=rcxfURv z(u2G-yUuSBr7uO^ON*%tT~Nv^kIhG8koZJW%G8W{0k4PHup@=Z2whRJ$&M}bUw}U9 zdt**zETRvvAe~yr+aIfs;~mvBsS51G`CnM+#~*@HRnshT zRx1mo9d~wXamO2!nk4hnEDQ1Iib_j9{c&nLA%SX(`s_Pv!j^yHYfmVA1M5PHJ0owd zNZ3c@>aKIqbU-Vr$lJEnmm%oltcyR`xC`^mb4)F!c{^dtRZfqjvKGR=Ht)oC%Jc$? zP`aKD<(5J4$NSOQ#)27M1`f7fFmkmkNoAKB(Ir(O~Ccn&ib5M%xD??2dX|eB=`s{ zq|}dC%X1M}kAh*L%Xa)o!S{zuMV2N(a7g{Ad0uS^prYE1!&ZBu5!OyBm+Z}di{q2c zK4G-p1f?v6FDXajJt3j3q}9UB9jp`Qpx_O~DBSPLl>6Qk8+dCZ4sLC8?gaGFRLfo$ zU611>N%$F*8{NW~t^9kUCj^D$6E|%l?g1)Oq6+4o{nJ_a|6>8xfOL*8U>QlG&U#WT z5ImB)-|jFp!taquo4R)rpoi@5-Y;&8gs}Ep>qOuCfclySH!~!jK;X$`w25ciYuxYB z*9G4lk`*Cb?}J6jHz80X>0S_QHYTtj>|2cKDqtN&c_NrbywHjut9R|?`AiUyeYjP4 z)&^nT9BSP)FMncvk)!vltqg=fkbLB!bGkpSFNd@2>zuV1lUMR)?GXpdCnoq~xzRU- zx35|8mtypc&KUEA&nxU$3l^HY`sHb3PuyP|Uz6X@`~mb5khq)Qb|1&5bY}e8c_He* z33d9$mKeBXqSPtYHuxiW7q1saD4)+0M;CGIY0x*O^{{Ps)NooHZ9wT*`uDe(=x)X> zZqPcs5Mw`J#gOBOc5;B`%`;F?;bw|r&jB!iJ%_PmmAjY`;%Jyl|S74RK z)m-jRYGQtSo{#thw=y1426fWWNjG*d{=y83qGWDQSD>riyYGga)F=ct%@*sOW!h2t zf8=bE+0jCPj;d`^0ghlj@;@qTyx)UTww_n*pxi1k%-3Iukv$6V2J}x<$$H&GDL$Yq zb8huhK%c(8Emdac5KGYXP{@;415m9|C4@^#2Blg<@&R@6I6%$8qS^Yh9$+DQ?(iA z--t1XYe=GO-&oaK8IJ!piQz>rwHjWYGB;!HaU8?EDwIA{z|qsa{Up1HobU z=Dl;3yUAD&hd(@fOSpam%gWB$ETUD=yu$yC_HmqV&u@0E&E`11QL=w((mBFDI5WRy zweJ$bn@7^R>jH6q*Vt8Zc{ak!G_0VY@mmpH|K5{-RNM%Oav5svRZ0V3Wy&2+$gW~T zDc}Bik(D$FsNVbAS#$GW2wK}!AH_Qn_7%z~RD1JhCBe&gZ*U+J`>7c8U)&t|=?&q2 zioL8Av>eZeVYzh@x`}|2=>ZW&Q)}RTtFvKO3krq+wuj#!B|(?~jhV0AGxY)#>fCK_ zv$!8&*dtLE7g7x|e|_;!qxIha3iP$E=UjRjEL#7tO7@<+XeA5_9i-2FL~KLx?{;UE zIs$9SYMGAm+Oz z>!Q(reuU|Np$_M{msfZ8AhAs7Lml6&4_F7$8oyF+eRS33cPW{;8dWpKB&$NH$%F7> z2rRc57s>F85PXTm*qu9O3}{H>?^O=JkFG7bH$T>E z5`sbL+g;TrLnuv12U@>Ry#b3M-r8}(%9$XDYrofWZ3^BIk{RiiRZJYt|N2XkGWT^kC)6y^Are4mP3oS&D3`BbPm#<@!lt+GScSm2r*xmX>n1I<0K z;Y=_}Q`%!i;n&9SI`H|CR}cH3l%wWR)}7dcm<6t)&eqGX0mY~k#o8!A2&O0>I4GsJ zz%uZbPIjgf1xt~uDh^M>8^d!?>UD4~nwjQ_15W(?{zJIaI74t*3 zwHe&G1;G-5+~X z-{9>b8Cq=7J%*SOzH`UV-qOK(r(Q1-+bzscBhk6$6ZH${@%$p6VcN0g4bJsmIS`!}J^pjyenwQ1<`)h*1nHb>#FeZ+5I$M7UdrM?^A59~C? z7MeAuk2%lkz}r(sIu+=652a6!#KE9#(Gd6y?%%`ughCKxl&OUZ2chfV$2H62<_oV& z3+toT9c2(S)s^w49z`giL9@A0p+E=T-yBx){O(Rbfmg>kbU4p6><(Zxxnb znIyu|^&PUMamt)UDLastzUjnQ2n@V*)F+Yf-TIBIaYVyyeT{>S@M!ENlDFgTgI3pVUyQ5BGS9Je$FLrTFZ!^?3&AGed+y4(h%8Fa;es0{ z+U|h`92mbxZo5X<2k5%Qm0#0n6^ypN_%nAO>!YQ9FT3q|PaKbSoA-lh*!Fv!=b|s| z!+LD7n~7h(6p3&BO|&RWaqC$(_dJxm3NMcNQy$h*u^KjU4EXB zK(}LaxZEP3=g7nBLjm_IalOn^51IYK=X;I}uty3KyfNL416G+}H5)XnI^&NaW}=9d zD{WRAVdrJkhnrSxK`UVJb=S<~1zi78n@)p5OM*A? z$wf$LOPzf;kI+nmo|XZ=O9p`QJ%eA&%U|Jn)UQ>ge`yu=QFX(U zA8gAY2nzSi$?Uek{5SjM<~M8!WcpvI!`CA6DE2(O3>-_g`&4d+4OOC>_RySQo939& zb}wr|7njTBbYR>Kl-dF-eLVJ@^I(iA8F4{hY@xm9-`B`?#TqOKnNRBLA5Hvqa>(sF zM|OljgdF1WEch>MzZ|R8`2#

rYwoh;1|kr3SfK<>r*PGGnY7u`Ra1jId9Sxcixa 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∾^ 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

4-F(MGN=#2 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 diff --git a/vignettes/tree_inference.Rmd b/vignettes/tree_inference.Rmd index aa95c00..f6d473b 100644 --- a/vignettes/tree_inference.Rmd +++ b/vignettes/tree_inference.Rmd @@ -31,60 +31,60 @@ library(ape) Load the tree inference model and example data available within `treepplr`. -```{r} -model <- tp_model("tree_inference") -data <- tp_data("tree_inference") -``` + + + + -The data in this example is a toy dataset ... + -```{r} -str(data) -``` + + + -## Run TreePPL + -Now we can compile and run the TreePPL program. The function `tp_treeppl()` has -many optional arguments to change the inference method used. Here, we will use + + -```{r, eval=FALSE} -output_list <- tp_treeppl(model = model, data = data, method = "smc-apf", - samples = 1000, subsample = 5, resample = "manual", - n_runs = 10) -``` + + + + + -```{r, echo=FALSE} -output_list <- readRDS("rdata/tree_inference/output_tree_inference.rds") -``` + + + -The result is a list of sweeps, each one containing 3 elements: the sampled -parameter values and the weights (in log scale) for each of the 5 particles in -each sweep, and the normalizing constant for the whole sweep. + + + -```{r} -str(output_list,max.level = 2) -``` + + + -## Plot the posterior distribution + -In this example we will check that the different runs converged to the same posterior, -by checking the variance in the normalizing constant among runs. + + -```{r, fig.height=5, fig.width=5} -tp_smc_convergence(output_list) -``` + + + -There are different ways to summarize the posterior distribution of trees. In -this examples, we calculate the the MAP (Maximum A Posteriori) tree. We do this -by finding the single tree topology that has the highest posterior probability, -and then using `ape::consensus` to compute average branch lengths for all sampled -trees with the MAP topology. + + + + + -```{r, fig.height=4, fig.width=5} -out_trees <- tp_json_to_phylo(output_list) + + -map_tree <- tp_map_tree(out_trees) -plot(map_tree) -axisPhylo() -``` + + + + From 0864a10eb1efbc09a9c913df47894ea83fd90bca Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 16:31:32 +0100 Subject: [PATCH 12/25] Remove tutorials that are not updated --- R/utils.R | 4 ---- 1 file changed, 4 deletions(-) diff --git a/R/utils.R b/R/utils.R index 0096fb9..d8b3a9f 100644 --- a/R/utils.R +++ b/R/utils.R @@ -123,10 +123,6 @@ sep <- function() { } - -#### Code below needs updating - Stenio is on it #### - - #' Model names supported by treepplr #' #' @description Provides a list of all models in the TreePPL model library. From d5b7fae5ef99d04ac6f38ba73703bec75909e37d Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 17:43:35 +0100 Subject: [PATCH 13/25] Models and data now come from treeppl repo --- inst/extdata/README.txt | 24 -- inst/extdata/coin.json | 3 - inst/extdata/coin.tppl | 39 --- inst/extdata/crb.tppl | 15 -- inst/extdata/hostrep3states.json | 93 ------- inst/extdata/hostrep3states.tppl | 414 ------------------------------- inst/extdata/tree_inference.json | 8 - inst/extdata/tree_inference.tppl | 155 ------------ 8 files changed, 751 deletions(-) delete mode 100644 inst/extdata/README.txt delete mode 100644 inst/extdata/coin.json delete mode 100644 inst/extdata/coin.tppl delete mode 100644 inst/extdata/crb.tppl delete mode 100644 inst/extdata/hostrep3states.json delete mode 100644 inst/extdata/hostrep3states.tppl delete mode 100644 inst/extdata/tree_inference.json delete mode 100644 inst/extdata/tree_inference.tppl diff --git a/inst/extdata/README.txt b/inst/extdata/README.txt deleted file mode 100644 index 6ff54f7..0000000 --- a/inst/extdata/README.txt +++ /dev/null @@ -1,24 +0,0 @@ -### The files included in this folder come from the treeppl repository. - - -## Coin - -model from https://github.com/treeppl/treeppl/blob/main/models/lang/coin.tppl - -data from https://github.com/treeppl/treeppl/blob/main/models/lang/data/testdata_coin.json - - -## Tree inference - -model from https://github.com/treeppl/treeppl/blob/main/models/tree-inference/tree_inference_pruning.tppl - -data from https://github.com/treeppl/treeppl/blob/main/models/tree-inference/data/testdata_tree_inference_pruning.json - - -## Host repertoire - -model from https://github.com/treeppl/treeppl/blob/main/models/host-repertoire-evolution/flat-root-prior-HRM.tppl - -data from https://github.com/treeppl/treeppl/blob/main/models/host-repertoire-evolution/data/testdata_flat-root-prior-HRM.json - - diff --git a/inst/extdata/coin.json b/inst/extdata/coin.json deleted file mode 100644 index 1fea568..0000000 --- a/inst/extdata/coin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "coinflips":[false,true,true,true,false,true,true,false,false,true,false,false,false,false,false,false,false,true,true,true] -} diff --git a/inst/extdata/coin.tppl b/inst/extdata/coin.tppl deleted file mode 100644 index 85a32f9..0000000 --- a/inst/extdata/coin.tppl +++ /dev/null @@ -1,39 +0,0 @@ -/* - * File: coin.tppl - * Description: Simplest meaningful probabilistic program. Evaluates how likely it is that a coin is fair, given data. - */ - -/** - * Conditions the likelihood of the computation - * on an observed datapoint to come from a particular Bernoulli experiment - * Parameters: - * datapoint: Real - * probability: Real in (0, 1), the probability of True in the Bernoulli experiment - * Returns: nothing - * Side-effects: reweighs the computation - */ -function flip(datapoint: Bool, probability: Real) { - observe datapoint ~ Bernoulli(probability); -} - -/* - * Model function - * Data: - * coinflips: Bool[] - * Prior: - * p ~ Beta(2, 2) - * Posterior: - * p | coinflips - */ -model function coinModel(coinflips: Bool[]) => Real { - // Uncomment if you want to test the input - //printLn("Input:"); - //let coinStr = apply(bool2string, coinflips); - //printLn(join(coinStr)); - assume p ~ Beta(2.0, 2.0); // prior - let n = length(coinflips); - for i in 1 to n { - flip(coinflips[i], p); // likelihood - } - return(p); // posterior -} diff --git a/inst/extdata/crb.tppl b/inst/extdata/crb.tppl deleted file mode 100644 index 10e4318..0000000 --- a/inst/extdata/crb.tppl +++ /dev/null @@ -1,15 +0,0 @@ -function walk(node: Tree, time:Real, lambda: Real) { - observe 0 ~ Poisson(lambda * (time - node.age)); - if node is Node { - observe 0.0 ~ Exponential(lambda); - walk(node.left, node.age, lambda); - walk(node.right, node.age, lambda); - } -} - -model function crb(tree: Tree) => Real { - assume lambda ~ Gamma(1.0, 1.0); - walk(tree.left, tree.age, lambda); - walk(tree.right, tree.age, lambda); - return lambda; -} diff --git a/inst/extdata/hostrep3states.json b/inst/extdata/hostrep3states.json deleted file mode 100644 index b9f5c88..0000000 --- a/inst/extdata/hostrep3states.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "symbiont_tree": { - "__constructor__": "Node", - "__data__": { - "label": 11, - "age": 10.0, - "left": { - "__constructor__": "Node", - "__data__": { - "label": 9, - "age": 3.360348, - "left": { - "__constructor__": "Node", - "__data__": { - "label": 7, - "age": 1.279190, - "left": { - "__constructor__": "Leaf", - "__data__": { - "label": 1, - "age": 0.0 - } - }, - "right": { - "__constructor__":"Leaf", - "__data__": { - "label":2, - "age":0.0 - } - } - } - }, - "right": { - "__constructor__": "Node", - "__data__": { - "label": 8, - "age": 0.153814, - "left": { - "__constructor__": "Leaf", - "__data__": { - "label": 3, - "age": 0.0 - } - }, - "right": { - "__constructor__": "Leaf", - "__data__": { - "label": 4, - "age": 0.0 - } - } - } - } - } - }, - "right": { - "__constructor__": "Node", - "__data__": { - "label": 10, - "age": 1.079144, - "left": { - "__constructor__": "Leaf", - "__data__": { - "label": 5, - "age": 0.0 - } - }, - "right": { - "__constructor__": "Leaf", - "__data__": { - "label": 6, - "age": 0.0 - } - } - } - } - } - }, - "ntips":6, - "nhosts":5, - "interactions":[2,2,0,0,0, - 2,2,0,0,0, - 0,0,2,2,0, - 0,0,2,2,0, - 0,0,0,0,2, - 0,0,0,0,2], - "host_distances":[0.0,0.8630075756,2.6699063134,2.6699063134,2.6699063134, - 0.8630075756,0.0,2.6699063134,2.6699063134,2.6699063134, - 2.6699063134,2.6699063134,0.0,1.2256551506,1.9598979474, - 2.6699063134,2.6699063134,1.2256551506,0.0,1.9598979474, - 2.6699063134,2.6699063134,1.9598979474,1.9598979474,0.0], - "dMean":4.405579 -} diff --git a/inst/extdata/hostrep3states.tppl b/inst/extdata/hostrep3states.tppl deleted file mode 100644 index 7e82953..0000000 --- a/inst/extdata/hostrep3states.tppl +++ /dev/null @@ -1,414 +0,0 @@ -import "treeppl::models/host-repertoire-evolution/host-rep-lib/lib.tppl" -import "treeppl::models/host-repertoire-evolution/host-rep-lib/container-types.tppl" -import "treeppl::models/host-repertoire-evolution/host-rep-lib/helpers.tppl" -import "treeppl::models/host-repertoire-evolution/host-rep-lib/belief-propagation.tppl" -import "treeppl::models/host-repertoire-evolution/host-rep-lib/dist-helpers.tppl" -import "treeppl::models/host-repertoire-evolution/host-rep-lib/full-model.tppl" -import "treeppl::models/host-repertoire-evolution/host-rep-lib/rb-drift-kernels.tppl" -import "treeppl::models/host-repertoire-evolution/host-rep-lib/independence-model.tppl" - -type ReturnType = ReturnType{ - lambda: Real[], mu: Real, beta: Real, tree: HistoryTree -} - - -model function rejectAccept( - symbiont_tree: TreeLabeled, - ntips: Int, - nhosts: Int, - interactions: Int[], - host_distances: Real[], - dMean: Real -) => ReturnType { - assume lambda ~ Dirichlet([1., 1., 1., 1.]) drift rbLambdaMove(lambda); - assume mu ~ Exponential(10.) drift rbMuMove(mu); - assume beta ~ Exponential(1.) drift rbBetaMove(beta); - - let r = mtxCreate(3,3, - [0.-lambda[1], lambda[1], 0.0, - lambda[2], 0.-(lambda[2]+lambda[3]), lambda[3], - 0.0, lambda[4], 0.-lambda[4]] - ); - let qMatrix = mtxSclrMul(mu, r); - - - let nestedInteractions = nestSeq(interactions, ntips, nhosts); - let postorderTree = postorderTraverse(symbiont_tree, qMatrix, nestedInteractions, nhosts); - - // Sample the root. We assume in both the independence and full model - // that we have a flat prior on the root - let rootPrior = mtxCreate(nhosts, 3, ones(3 * nhosts)); - let rootSamplingProb = mtxElemMul(postorderTree.outMsg, rootPrior); - let initRootRep = suggestRepAligned(rootSamplingProb, 1, nhosts); - let rootRep = suggestRepRS(rootSamplingProb, nhosts, initRootRep, 0); - - // Calculate the debt and excess - let rootLogDebt = getRepertoireDebt(rootRep, rootSamplingProb, nhosts); - let rootLogExcess = -log((3.^(Real(nhosts))) - (2.^Real(nhosts))); - - // This is an aligned point so we can weight by the importance ratio - logWeight rootLogExcess - rootLogDebt; - - // Compute messages to pass to pass to the children of the root - let newMsg = mtxCreate(nhosts, 3, observationMessage(rootRep, 1, nhosts)); - let leftMsg = mtxMul(newMsg, postorderTree.leftKernel); - let rightMsg = mtxMul(newMsg, postorderTree.rightKernel); - - // Construct an object containing the rate matrix in a suitable format for sampling - // from the embedded Markov chain - - let embeddedQMatrix = rateMatrixToEmbeddedMarkovChain(qMatrix); - let modelParams = ModelParams { - beta = beta, - hostMetric = mtxCreate(nhosts, nhosts, host_distances), - embeddedQMatrix = embeddedQMatrix, - meanDist = dMean - }; - let rootAge = postorderTree.age; - let leftRepertoireTree = sampleTreeHistory( - postorderTree.left, nhosts, leftMsg, rootRep, rootAge, modelParams, postorderTree.leftKernel - ); - let rightRepertoireTree = sampleTreeHistory( - postorderTree.right, nhosts, rightMsg, rootRep, rootAge, modelParams, postorderTree.rightKernel - ); - - // Construct the root node of the repertoire tree - let historyTree = HistoryNode { - age = symbiont_tree.age, label = symbiont_tree.label, - left = leftRepertoireTree, right = rightRepertoireTree, - repertoire = rootRep, history = [] - }; - return ReturnType { - lambda = lambda, - mu = mu, - beta = beta, - tree = historyTree - }; -} - -function suggestRepAligned(msg: Matrix[Real], i: Int, max: Int) => Int[] { - if i <= max { - let param = mtx3ToSeq(msg, i); - assume x ~ Categorical(param) drift categoricalMove(x, param); - return cons(x, suggestRepAligned(msg, i + 1, max)); - } else { - return []; - } -} - -function suggestRepRS(msg: Matrix[Real], max: Int, initialRep: Int[], depth: Int) => Int[] { - let _REP_REJECTION_DEPTH = 10; - if any(is2, initialRep) { - return initialRep; - } else { - if depth < _REP_REJECTION_DEPTH { - let newRep = suggestRepUnaligned(msg, 1, max); - return suggestRepRS(msg, max, newRep, depth + 1); - } else { - // Set weight to zero and return dummy value - weight 0.0; - return initialRep; - } - } -} - -function suggestRepUnaligned(msg: Matrix[Real], i: Int, max: Int) => Int[] { - if i <= max { - let param = mtx3ToSeq(msg, i); - assume x ~ Categorical(param); - return paste0([[x], suggestRepUnaligned(msg, i + 1, max)]); - } else { - return []; - } -} - -function sampleTreeHistory( - tree: MsgTree, - nhosts: Int, - preorderMsg: Matrix[Real], - parentRep: Int[], - parentAge: Real, - modelParams: ModelParams, - branchKernel: Matrix[Real] -) => HistoryTree { - if tree is MsgLeaf { - // We are at a leaf, so we don't need to sample the interactions - let rep = tree.interactions; - // Sample the incident branch - let branchSample = sampleBranch( - parentRep, - rep, - parentAge, - tree.age, - nhosts, - modelParams, - branchKernel, - 0 - ); - - // We are aligned so we can weight the program here (shouldn't matter for MCMC) - if branchSample.success { - logWeight branchSample.logExcess - branchSample.logDebt; - } else { - // We failed to sample a correct branch, set program weight to zero - weight 0.0; - } - - return HistoryLeaf { - age = tree.age, - label = tree.label, - repertoire = rep, - history = branchSample.history - }; - } else { - let samplingProb = mtxElemMul(tree.outMsg, preorderMsg); - let initRep = suggestRepAligned(samplingProb, 1, nhosts); - let rep = suggestRepRS(samplingProb, nhosts, initRep, 0); - let nodeLogDebt = getRepertoireDebt(rep, samplingProb, nhosts); - - // Sample the incident branch - let branchSample = sampleBranch( - parentRep, - rep, - parentAge, - tree.age, - nhosts, - modelParams, - branchKernel, - 0 - ); - - // We are aligned so we can weight the program here (shouldn't matter for MCMC) - if branchSample.success { - logWeight branchSample.logExcess - branchSample.logDebt - nodeLogDebt; - } else { - // We failed to sample a correct branch, set program weight to zero - weight 0.0; - } - - // Since we sampled a repertoire at the node we should propagate this information to the child nodes - let newMsg = mtxCreate(nhosts, 3, observationMessage(rep, 1, nhosts)); - let leftMsg = mtxMul(newMsg, tree.leftKernel); - let rightMsg = mtxMul(newMsg, tree.rightKernel); - - // Sample the two subtrees - let left = sampleTreeHistory( - tree.left, nhosts, leftMsg, rep, tree.age, modelParams, tree.leftKernel - ); - let right = sampleTreeHistory( - tree.right, nhosts, rightMsg, rep, tree.age, modelParams, tree.rightKernel - ); - - return HistoryNode { - age = tree.age, - label = tree.label, - repertoire = rep, - history = branchSample.history, - left = left, - right = right - }; - } -} - -function sampleBranch( - startRep: Int[], - finalRep: Int[], - startAge: Real, - finalAge: Real, - nhosts: Int, - modelParams: ModelParams, - branchKernel: Matrix[Real], - rejectionDepth: Int -) => CorrectedBranchSample { - let _MAX_REJECTION_DEPTH_BRANCH = 100; - if rejectionDepth <= _MAX_REJECTION_DEPTH_BRANCH { - // Sample the events per host - let unorderedBranch = sampleUnorderedBranch( - startRep, finalRep, startAge, finalAge, 1, nhosts, modelParams.embeddedQMatrix, 1 - ); - if unorderedBranch.success { - - // All host histories were sampled correctly, - // compile the events for all hosts and sort them - let allHostEvents = paste0(unorderedBranch.history); - let orderedEvents = qSort(compAge, allHostEvents); - let nEvents = length(orderedEvents); - if allTimesValidBranch(startRep, orderedEvents, 1, nEvents, nhosts) { - // The branch is correct along the full history, - // accept and calculate the true weight of the sample - - // Calculate the debt -- this is the density of the endpoint conditioned - // (parallel) chains at the current sample. - let logDebt = independenceLikelihoodEndCond( - startRep, finalRep, startAge, finalAge, unorderedBranch.history, modelParams, branchKernel - ); - // Calculate the likelihood of the path under the full model - let logExcess = fullModelWeight( - 1, startRep, finalRep, startAge, finalAge, orderedEvents, nEvents, nhosts, modelParams - ); - // Return the branch sample with both the debt and the excess - return CorrectedBranchSample { - history = orderedEvents, - logDebt = logDebt, - logExcess = logExcess, - success = true - }; - } - } - // Either one of the hosts failed to be sampled correctly - // or the history was invalid somewhere along the branch - return sampleBranch( - startRep, - finalRep, - startAge, - finalAge, - nhosts, - modelParams, - branchKernel, - rejectionDepth + 1 - ); - } else { - // We ran out of rejection depth for the branch - return CorrectedBranchSample { - history = [], - logDebt = -log(0.0), - logExcess = log(0.0), - success = false - }; - } -} - -function compAge(left: Event, right: Event) => Int { - if (isNaN(right.eventTime)) { - return -1; - } - if (isNaN(left.eventTime)) { - return 1; - } - if (right.eventTime >= left.eventTime) { - return 1; - } else { - return -1; - } -} - -function sampleUnorderedBranch( - startRep: Int[], - finalRep: Int[], - startAge: Real, - finalAge: Real, - hostIndex: Int, - nhosts: Int, - embeddedQMatrix: EmbeddedMarkovChainMatrix, - rejectionDepth: Int -) => BranchSample { - let _MAX_REJECTION_DEPTH_HOST = 100; - // Note that startAge > finalAge since the tree is moving forwards in time - if hostIndex <= nhosts { - let hostHistory = sampleHostHistory( - startRep[hostIndex], finalRep[hostIndex], startAge, finalAge, hostIndex, embeddedQMatrix, 1 - ); - if hostHistory.success { - let otherHostHistories = sampleUnorderedBranch( - startRep, finalRep, startAge, finalAge, hostIndex + 1, nhosts, embeddedQMatrix, 0 - ); - return BranchSample { - history = cons(hostHistory.history, otherHostHistories.history), - success = otherHostHistories.success - }; - } else { - if rejectionDepth <= _MAX_REJECTION_DEPTH_HOST { - return sampleUnorderedBranch( - startRep, finalRep, startAge, finalAge, hostIndex, nhosts, embeddedQMatrix, rejectionDepth + 1 - ); - } else { - return BranchSample { - history = [], - success = false - }; - } - } - } else { - return BranchSample { - history = [], - success = true - }; - } -} - - -function sampleHostHistory( - startState: Int, - finalState: Int, - startAge: Real, - finalAge: Real, - host: Int, - embeddedQMatrix: EmbeddedMarkovChainMatrix, - stepIndex: Int -) => HostBranchSample { - let totalRate = embeddedQMatrix.totalRates[startState + 1]; - if startState != finalState && stepIndex == 1 { - // If there is a mutation on the interval, sample the first event from a truncated exponential - - let t = sampleTruncatedExponential(totalRate, startAge - finalAge); - let eventTime = startAge - t; - - // Sample the next event - let nextState = sampleNextEvent(startState, embeddedQMatrix); - let param = embeddedQMatrix.transitionProbs[startState + 1]; - - let restOfHistory = sampleHostHistory(nextState, finalState, eventTime, finalAge, host, embeddedQMatrix, stepIndex + 1); - return HostBranchSample { - history = cons( - Event { eventTime = eventTime, fromState = startState, toState = nextState, host = host }, - restOfHistory.history - ), - success = restOfHistory.success - }; - - } else { - // If the final state does not equal the start state, then we don't want to - // force there to be events in the remaining interval - assume t ~ Exponential(totalRate); - if startAge - t < finalAge { - // We overshoot so we are finished, and just save the debt - if startState == finalState { - return HostBranchSample { - history = [], - success = true - }; - } else { - return HostBranchSample { - history = [], - success = false - }; - } - } else { - - // Sample the next transition - let nextState = sampleNextEvent(startState, embeddedQMatrix); - let param = embeddedQMatrix.transitionProbs[startState + 1]; - // assume nextState ~ Categorical(param); - - // Record the event time - let eventTime = startAge - t; - let restOfHistory = sampleHostHistory(nextState, finalState, eventTime, finalAge, host, embeddedQMatrix, stepIndex + 1); - return HostBranchSample { - history = cons( - Event { eventTime = eventTime, fromState = startState, toState = nextState, host = host }, - restOfHistory.history - ), - success = restOfHistory.success - }; - } - } -} - -function sampleTruncatedExponential(rate: Real, maxT: Real) => Real { - let uMin = exp(-rate * maxT); - // Assuming directly from the truncated distribution gave numerical errors - assume u_ ~ Uniform(0.0, 1.0); - let u = uMin + u_ * (1. - uMin); - let expSample = -log(u) / rate; - return expSample; -} diff --git a/inst/extdata/tree_inference.json b/inst/extdata/tree_inference.json deleted file mode 100644 index 9448966..0000000 --- a/inst/extdata/tree_inference.json +++ /dev/null @@ -1,8 +0,0 @@ -{"data": -[ - [1, 1, 0, 2, 3, 0, 0, 0, 0, 3, 1, 1, 3, 3, 2], - [1, 1, 0, 2, 0, 1, 0, 0, 0, 3, 1, 0, 1, 1, 0], - [0, 0, 1, 1, 0, 2, 1, 0, 0, 0, 2, 0, 3, 3, 0], - [0, 0, 1, 1, 0, 3, 0, 1, 0, 0, 2, 2, 3, 1, 0] -] -} diff --git a/inst/extdata/tree_inference.tppl b/inst/extdata/tree_inference.tppl deleted file mode 100644 index 38aa9b2..0000000 --- a/inst/extdata/tree_inference.tppl +++ /dev/null @@ -1,155 +0,0 @@ -// TreePPL script for tree inference under the -// Jukes Cantor model with a strict clock prior. Pruning hard-coded. - -// The nucleotide is specified as -// "A" for adenine - 0 -// "C" for cytosine - 1 -// "G" for guanine - 2 -// "T" for thymine - 3 -// "-" for gaps - 4 - -// TYPES - -type MsgTree = - | Leaf {age: Real, index: Int, msg: Matrix[Real][]} - | Node {age: Real, msg: Matrix[Real][], left: MsgTree, right: MsgTree} - -// FUNCTIONS - -// Randomly sample two indices in the trees vector, to be combined. Avoiding mirror cases. -function pickpair(n: Int) => Int[] { - assume i ~ Categorical(rep(n, 1./Real(n))); - let i = i + 1; - assume j ~ Categorical(rep((n-1), 1./Real(n-1))); - let j = j+1; - if (j < i) { return [i, j];} - else { return [i,j+1];} -} - -// Build forest of trees from leaves, recursively -function build_forest(data: Int[][], forest: MsgTree[], index: Int, data_len: Int, seq_len: Int) => MsgTree[] { - let new_message = sapply(data[index], get_leaf_message); - let new_leaf = Leaf{age = 0.0, index = index, msg = new_message}; - let new_forest = paste0([forest, [new_leaf]]); - if (data_len == index) { - return new_forest; - } - else { - return build_forest(data, new_forest, index + 1, data_len, seq_len); - } -} - -// Get message from leaves for each site -function get_leaf_message(seq: Int) => Matrix[Real] { - if (seq == 0) { // "A" - let message = rvecCreate(4, [1.0, 0.0, 0.0, 0.0]); - logWeight (log(0.25)); - return message; - } - if (seq == 1) { // "C" - let message = rvecCreate(4, [0.0, 1.0, 0.0, 0.0]); - logWeight (log(0.25)); - return message; - } - if (seq == 2) { // "G" - let message = rvecCreate(4, [0.0, 0.0, 1.0, 0.0]); - logWeight (log(0.25)); - return message; - } - if (seq == 3) { // "T" - let message = rvecCreate(4, [0.0, 0.0, 0.0, 1.0]); - logWeight (log(0.25)); - return message; - } - if (seq == 4) { // "-" - let message = rvecCreate(4, [1.0, 1.0, 1.0, 1.0]); - return message; - } - else { - return error("Invalid state at leaf"); - } -} - -//Compute log likelihood for each site -function get_log_likes(msg: Matrix[Real]) => Real { - let stationary_probs = cvecCreate(4, [0.25,0.25,0.25,0.25]); - let like = mtxMul(msg, stationary_probs); - let log_like = log(mtxGet(1, 1, like)); - return log_like; -} - -// KEY FUNCTION: CLUSTER -function cluster(q: Matrix[Real], trees: MsgTree[], maxAge: Real, seq_len: Int) => MsgTree[] { - - let n = length(trees); - - // Check if we have reached the root of the tree - if (n == 1) { - return trees; - } - - // Randomly sample two indices in the trees vector with function pickpair - // We will combine these, named left and right child - let pairs = pickpair(n); - let left_child = trees[pairs[1]]; - let right_child = trees[pairs[2]]; - - // Get the age of the new internal node - assume t ~ Exponential(10.0); - let age = maxAge + t; - - // Get incoming messages from children - let tmatrix_left = mtxTrans(mtxExp(mtxSclrMul(age-left_child.age, q))); - let tmatrix_right = mtxTrans(mtxExp(mtxSclrMul(age-right_child.age, q))); - - let left_in_msg = sapply(left_child.msg, mtxMul(_, tmatrix_left)); - let right_in_msg = sapply(right_child.msg, mtxMul(_, tmatrix_right)); - - // Get the message of the new node. - let node_msg = messageElemMul(left_in_msg, right_in_msg); - - // Weights - let log_likes = sapply(node_msg, get_log_likes); - logWeight (seqSumReal(log_likes)); - - // Remove weights of previous internal children - let log_likes_left = sapply(left_child.msg, get_log_likes); - logWeight -(seqSumReal(log_likes_left)); - let log_likes_right = sapply(right_child.msg, get_log_likes); - logWeight -(seqSumReal(log_likes_right)); - - // Manual resample - resample; - - // Combine picked pair of trees into a new node - let parent = Node{age=age, msg=node_msg, left=left_child, right=right_child}; - - // Compute new_trees list - let min = minInt(pairs[2],pairs[1]); - let max = maxInt(pairs[2],pairs[1]); - let new_trees = paste0([slice(trees, 1, min), slice(trees, (min+1), max), slice(trees, (max+1), (n+1)), [parent]]); - - // Recursive call to cluster for new_trees - return cluster(q, new_trees, age, seq_len); -} - -// MODEL FUNCTION - -model function myModel(data: Int[][]) => MsgTree[] { - // Define the scaled rate matrix for Jukes-Cantor - let q = mtxCreate(4,4, - [ -1.0, (1.0/3.0), (1.0/3.0), (1.0/3.0), - (1.0/3.0), -1.0, (1.0/3.0), (1.0/3.0), - (1.0/3.0), (1.0/3.0), -1.0, (1.0/3.0), - (1.0/3.0), (1.0/3.0), (1.0/3.0), -1.0] - ); - - let data_len = length(data); - let seq_len = length(data[1]); - - // Define the initial trees sequence (containing the leaves) - let trees = build_forest(data, [], 1, data_len, seq_len); - - // Build the tree by random clustering and return - return cluster(q, trees, 0.0, seq_len); -} From 0459e6ee11e1bf1e8bd60586871c1cb83841ce64 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 20:32:58 +0100 Subject: [PATCH 14/25] Add test_compile --- R/compile.R | 11 +++-- tests/testthat/test-compile.R | 76 +++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 tests/testthat/test-compile.R diff --git a/R/compile.R b/R/compile.R index a3db0ec..40cf6c4 100644 --- a/R/compile.R +++ b/R/compile.R @@ -131,17 +131,22 @@ tp_model <- function(model_input) { # If path exists, it's all good if (!is(res, "try-error") && res) { model_path <- model_input - names(model_path) <- "custom_model" + # name the model + if (is.null(names(model_path))){ + names(model_path) <- "custom_model" + } # If path doesn't exist } else { - res_lib <- tp_find_model(model_input) + # It can be a model in the library + if (nchar(model_input) < 50) { + res_lib <- tp_find_model(model_input) # model_input has the name of a known model if (length(res_lib) != 0) { model_path <- res_lib names(model_path) <- model_input - + } # OR model_input contains the model #### (needs to be verified as an appropriate model later) #### } else { diff --git a/tests/testthat/test-compile.R b/tests/testthat/test-compile.R new file mode 100644 index 0000000..f5f9c90 --- /dev/null +++ b/tests/testthat/test-compile.R @@ -0,0 +1,76 @@ +temp_dir <- treepplr::tp_tempdir(temp_dir = NULL) +setwd(temp_dir) +require(testthat) +require(crayon) + +cat(crayon::yellow("\nTest-compile : Compilation.\n")) + + +testthat::test_that("Test-compile_1a : tp_compile", { + cat("\tTest-compile_1a : tp_compile SMC \n") + + model_right <- tp_model("coin") + + treepplr:::tp_compile(model_right, method = "smc-bpf", particles = 10) + + expect_no_error(readBin(paste0(temp_dir, "coin.exe"), "raw", 10e6)) +}) + + +testthat::test_that("Test-compile_1b : tp_compile", { + cat("\tTest-compile_1b : tp_compile MCMC \n") + + model_right <- tp_model("coin") + + treepplr:::tp_compile(model_right, method = "mcmc-lightweight", iterations = 10) + + expect_no_error(readBin(paste0(temp_dir, "coin.exe"), "raw", 10e6)) + +}) + + +testthat::test_that("Test-compile_2a : tp_model model name", { + cat("\tTest-compile_2a : tp_model\n") + + model <- tp_model("coin") + + version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) + version <- sort(version, decreasing = TRUE)[1] + + model_right <- paste0("/tmp/treeppl-0.2/y5b8qlyn9qgk61jxcdzq6gmv65-", version,"/lib/mcore/treeppl/models/lang/coin.tppl") + names(model_right) <- "coin" + + testthat::expect_equal(model, model_right) +}) + + +testthat::test_that("Test-compile_2b : tp_model model string ", { + cat("\tTest-compile_2b : tp_model\n") + + model_right <- paste0(temp_dir, "tmp_model_file.tppl") + model <- tp_model(model_right) + names(model_right) <- "custom_model" + + testthat::expect_equal(model, model_right) +}) + + +testthat::test_that("Test-compile_3a : tp_write path", { + cat("\tTest-compile_3a : tp_write\n") + + path <- tp_write_model("bla bla bla") + expect_no_error(file.exists(path)) + +}) + + +testthat::test_that("Test-compile_3b : tp_write content", { + cat("\tTest-compile_3b : tp_write\n") + + content_right <- "bla bla bla" + path <- tp_write_model(content) + + content <- readLines(path, warn = FALSE) + testthat::expect_equal(content_right, content) + +}) From 4e7b968c5e4d8b54c7dc20e76d423864b3920315 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 20:33:51 +0100 Subject: [PATCH 15/25] Small fixes --- NAMESPACE | 1 - R/post_treatment.R | 64 ++++++++++++++++++++++++-------------- man/tp_mcmc_convergence.Rd | 17 ++++++++++ man/tp_parse_smc.Rd | 3 ++ vignettes/overview.Rmd | 8 +++-- 5 files changed, 67 insertions(+), 26 deletions(-) create mode 100644 man/tp_mcmc_convergence.Rd diff --git a/NAMESPACE b/NAMESPACE index 0765ff8..3ec2929 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,7 +1,6 @@ # Generated by roxygen2: do not edit by hand export(tp_compile) -export(tp_compile_options) export(tp_data) export(tp_expected_input) export(tp_json_to_phylo) diff --git a/R/post_treatment.R b/R/post_treatment.R index b678944..c301792 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -6,6 +6,10 @@ #' @param treeppl_out a character vector giving the TreePPL json output #' produced by [tp_run] using an SMC method. #' +#' @details +#' Particles with -Inf weight are removed. +#' +#' #' @return A data frame with the output from inference in TreePPL. #' @export tp_parse_smc <- function(treeppl_out) { @@ -14,32 +18,46 @@ tp_parse_smc <- function(treeppl_out) { for (i in seq_along(treeppl_out)) { - samples_c <- unlist(treeppl_out[[i]]$samples) - log_weight_c <- unlist(treeppl_out[[i]]$weights) - - if(is.null(names(samples_c))){ - result_df <- rbind(result_df, - data.frame(sweep = i, - samples = samples_c, - log_weight = log_weight_c, - norm_const = treeppl_out[[i]]$normConst) - ) + # remove sweeps with nan norm const + if (treeppl_out[[i]]$normConst == "nan"){ + print("Removing sweep without normalizing constant") } else { - result_df <- rbind(result_df, - data.frame(sweep = i, - parameter = names(samples_c), - samples = samples_c, - log_weight = log_weight_c, - norm_const = treeppl_out[[i]]$normConst) - ) + + samples_c <- unlist(treeppl_out[[i]]$samples) + log_weight_c <- unlist(treeppl_out[[i]]$weights) + + if(is.null(names(samples_c))){ + result_df <- rbind(result_df, + data.frame(sweep = i, + samples = samples_c, + log_weight = log_weight_c, + norm_constant = treeppl_out[[i]]$normConst) + ) + } else { + result_df <- rbind(result_df, + data.frame(sweep = i, + parameter = names(samples_c), + samples = samples_c, + log_weight = log_weight_c, + norm_constant = treeppl_out[[i]]$normConst) + ) + } } } - result_df <- result_df |> - dplyr::mutate(total_lweight = .data$log_weight + .data$norm_const) |> - dplyr::mutate(norm_weight = exp(.data$total_lweight - max(.data$total_lweight))) |> - dplyr::select(-"total_lweight") - + # check if all sweeps were removed + if (length(result_df) == 0) { + stop("All sweeps failed") + } else{ + + result_df <- result_df |> + # remove particles with -Inf weight + dplyr::mutate(log_weight = as.numeric(log_weight)) |> + dplyr::filter(!is.infinite(log_weight)) |> + dplyr::mutate(total_lweight = .data$log_weight + .data$norm_constant) |> + dplyr::mutate(norm_weight = exp(.data$total_lweight - max(.data$total_lweight))) |> + dplyr::select(-"total_lweight") + } return(result_df) } @@ -280,7 +298,7 @@ tp_smc_convergence <- function(treeppl_out) { zs <- treeppl_out |> dplyr::slice_head(n = 1, by = .data$sweep) |> - dplyr::pull(.data$norm_const) + dplyr::pull(.data$norm_constant) return(stats::var(zs)) } diff --git a/man/tp_mcmc_convergence.Rd b/man/tp_mcmc_convergence.Rd new file mode 100644 index 0000000..9ac120a --- /dev/null +++ b/man/tp_mcmc_convergence.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/post_treatment.R +\name{tp_mcmc_convergence} +\alias{tp_mcmc_convergence} +\title{Check for convergence across multiple MCMC runs.} +\usage{ +tp_mcmc_convergence(treeppl_out) +} +\arguments{ +\item{treeppl_out}{a data frame outputted by \code{\link[=tp_parse_mcmc]{tp_parse_mcmc()}}.} +} +\value{ +Gelman and Rubin's convergence diagnostic +} +\description{ +Check for convergence across multiple MCMC runs. +} diff --git a/man/tp_parse_smc.Rd b/man/tp_parse_smc.Rd index b695998..6db9ed1 100644 --- a/man/tp_parse_smc.Rd +++ b/man/tp_parse_smc.Rd @@ -16,3 +16,6 @@ A data frame with the output from inference in TreePPL. \description{ \code{tp_parse_smc} takes TreePPL json SMC output and returns a data.frame } +\details{ +Particles with -Inf weight are removed. +} diff --git a/vignettes/overview.Rmd b/vignettes/overview.Rmd index e42484e..7329690 100644 --- a/vignettes/overview.Rmd +++ b/vignettes/overview.Rmd @@ -120,6 +120,9 @@ to the compiled executable and choose how many independent runs you want to do. output <- tp_run(compiled_model = exe_path, data = data_path, n_runs = 4) ``` + +## Convergence + Then you can parse your output to produce a data frame and check for convergence. ```{r} @@ -135,9 +138,10 @@ output_df_mcmc <- tp_parse_mcmc(output) ``` - +## Post-processing - +Different models produce different outputs and thus require different post-processing. +See the model-specific tutorials for ways to process your TreePPL. From 20238d224a063e16d6a72cee89f9b7b614a4424d Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Fri, 30 Jan 2026 21:53:49 +0100 Subject: [PATCH 16/25] Add test_run --- tests/testthat/test-compile.R | 36 +++++++++++++++++------------------ tests/testthat/test-run.R | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 tests/testthat/test-run.R diff --git a/tests/testthat/test-compile.R b/tests/testthat/test-compile.R index f5f9c90..e1b2a9f 100644 --- a/tests/testthat/test-compile.R +++ b/tests/testthat/test-compile.R @@ -6,33 +6,33 @@ require(crayon) cat(crayon::yellow("\nTest-compile : Compilation.\n")) -testthat::test_that("Test-compile_1a : tp_compile", { +test_that("Test-compile_1a : tp_compile SMC", { cat("\tTest-compile_1a : tp_compile SMC \n") - model_right <- tp_model("coin") + model <- treepplr::tp_model("coin") - treepplr:::tp_compile(model_right, method = "smc-bpf", particles = 10) + treepplr::tp_compile(model, method = "smc-bpf", particles = 10) expect_no_error(readBin(paste0(temp_dir, "coin.exe"), "raw", 10e6)) }) -testthat::test_that("Test-compile_1b : tp_compile", { +test_that("Test-compile_1b : tp_compile MCMC", { cat("\tTest-compile_1b : tp_compile MCMC \n") - model_right <- tp_model("coin") + model_right <- treepplr::tp_model("coin") - treepplr:::tp_compile(model_right, method = "mcmc-lightweight", iterations = 10) + treepplr::tp_compile(model_right, method = "mcmc-lightweight", iterations = 10) expect_no_error(readBin(paste0(temp_dir, "coin.exe"), "raw", 10e6)) }) -testthat::test_that("Test-compile_2a : tp_model model name", { +test_that("Test-compile_2a : tp_model model name", { cat("\tTest-compile_2a : tp_model\n") - model <- tp_model("coin") + model <- treepplr::tp_model("coin") version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) version <- sort(version, decreasing = TRUE)[1] @@ -40,37 +40,37 @@ testthat::test_that("Test-compile_2a : tp_model model name", { model_right <- paste0("/tmp/treeppl-0.2/y5b8qlyn9qgk61jxcdzq6gmv65-", version,"/lib/mcore/treeppl/models/lang/coin.tppl") names(model_right) <- "coin" - testthat::expect_equal(model, model_right) + expect_equal(model, model_right) }) -testthat::test_that("Test-compile_2b : tp_model model string ", { +test_that("Test-compile_2b : tp_model model string ", { cat("\tTest-compile_2b : tp_model\n") model_right <- paste0(temp_dir, "tmp_model_file.tppl") - model <- tp_model(model_right) + model <- treepplr::tp_model(model_right) names(model_right) <- "custom_model" - testthat::expect_equal(model, model_right) + expect_equal(model, model_right) }) -testthat::test_that("Test-compile_3a : tp_write path", { +test_that("Test-compile_3a : tp_write path", { cat("\tTest-compile_3a : tp_write\n") - path <- tp_write_model("bla bla bla") - expect_no_error(file.exists(path)) + path <- treepplr::tp_write_model("bla bla bla") + expect_true(file.exists(path)) }) -testthat::test_that("Test-compile_3b : tp_write content", { +test_that("Test-compile_3b : tp_write content", { cat("\tTest-compile_3b : tp_write\n") content_right <- "bla bla bla" - path <- tp_write_model(content) + path <- treepplr::tp_write_model(content) content <- readLines(path, warn = FALSE) - testthat::expect_equal(content_right, content) + expect_equal(content_right, content) }) diff --git a/tests/testthat/test-run.R b/tests/testthat/test-run.R new file mode 100644 index 0000000..55aa6a7 --- /dev/null +++ b/tests/testthat/test-run.R @@ -0,0 +1,33 @@ +temp_dir <- treepplr::tp_tempdir(temp_dir = NULL) +setwd(temp_dir) +require(testthat) +require(crayon) + +cat(crayon::yellow("\nTest-run : Running TreePPL.\n")) + +test_that("Test-run_1a : tp_run", { + cat("\tTest-run_1a : tp_run \n") + + model <- treepplr::tp_model("coin") + exe <- treepplr::tp_compile(model, method = "smc-bpf", particles = 2) + data <- treepplr::tp_data("coin") + + treepplr::tp_run(exe, data, n_sweeps = 1) + + expect_no_error(readBin(paste0(temp_dir, "out.json"), "raw", 10e6)) + +}) + + +test_that("Test-run_1a : tp_run custom name", { + cat("\tTest-run_1a : tp_run \n") + + model <- treepplr::tp_model("coin") + exe <- treepplr::tp_compile(model, method = "smc-bpf", particles = 2) + data <- treepplr::tp_data("coin") + + treepplr::tp_run(exe, data, n_sweeps = 1, out_file_name = "test_out") + + expect_no_error(readBin(paste0(temp_dir, "test_out.json"), "raw", 10e6)) + +}) From e7ec04e801a658bd6bfac8713d0bc63be90a8ae9 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 11:33:16 +0100 Subject: [PATCH 17/25] Finish adding tests --- tests/testthat/test-compile.R | 2 +- tests/testthat/test-data.R | 71 ++++++++++ tests/testthat/test-getter.R | 174 ------------------------ tests/testthat/test-runner.R | 189 -------------------------- tests/testthat/test-tree_convertion.R | 2 +- tests/testthat/test-utils.R | 77 ----------- 6 files changed, 73 insertions(+), 442 deletions(-) create mode 100644 tests/testthat/test-data.R delete mode 100644 tests/testthat/test-getter.R delete mode 100644 tests/testthat/test-runner.R delete mode 100644 tests/testthat/test-utils.R diff --git a/tests/testthat/test-compile.R b/tests/testthat/test-compile.R index e1b2a9f..d38bacf 100644 --- a/tests/testthat/test-compile.R +++ b/tests/testthat/test-compile.R @@ -68,7 +68,7 @@ test_that("Test-compile_3b : tp_write content", { cat("\tTest-compile_3b : tp_write\n") content_right <- "bla bla bla" - path <- treepplr::tp_write_model(content) + path <- treepplr::tp_write_model(content_right) content <- readLines(path, warn = FALSE) expect_equal(content_right, content) diff --git a/tests/testthat/test-data.R b/tests/testthat/test-data.R new file mode 100644 index 0000000..76a1fea --- /dev/null +++ b/tests/testthat/test-data.R @@ -0,0 +1,71 @@ +temp_dir <- treepplr::tp_tempdir(temp_dir = NULL) +setwd(temp_dir) +require(testthat) +require(crayon) + +cat(crayon::yellow("\nTest-data : Import and convert data.\n")) + +test_that("Test-data_1a : tp_data name", { + cat("\tTest-data_1a \n") + + version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) + version <- sort(version, decreasing = TRUE)[1] + + data_right <- paste0("/tmp/treeppl-0.2/y5b8qlyn9qgk61jxcdzq6gmv65-", version,"/lib/mcore/treeppl/models/lang/data/testdata_coin.json") + + data <- treepplr::tp_data("coin") + + expect_equal(data, data_right) + +}) + + +test_that("Test-data_1b : tp_data content", { + cat("\tTest-data_1b \n") + + data_right <- + tp_list(coinflips = + c( + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE + ) + ) + + path <- treepplr::tp_data("coin") + content <- readLines(path, warn = FALSE) + data <- jsonlite::fromJSON(content) + + expect_equal(data_right, data) + +}) + + +test_that("Test-data_2a : tp_write_data path", { + cat("\tTest-data_2a \n") + + path_right <- paste0(temp_dir, "tmp_data_file.json") + data <- list(test = "test_data") + data_list <- tp_list(list(data)) + path <- treepplr::tp_write_data(data_list) + + expect_equal(path, path_right) + +}) diff --git a/tests/testthat/test-getter.R b/tests/testthat/test-getter.R deleted file mode 100644 index 0527ecf..0000000 --- a/tests/testthat/test-getter.R +++ /dev/null @@ -1,174 +0,0 @@ -temp_dir <- treepplr::tp_tempdir(temp_dir = NULL) -setwd(temp_dir) -require(testthat) -require(crayon) - -cat(crayon::yellow("\nTest-getter : Import data and model.\n")) - -testthat::test_that("Test-getter_1a : tp_model model path", { - cat("\tTest-getter_1a : tp_model\n") - - model <- - tp_model(paste0( - system.file("extdata", package = "treepplr"), - treepplr:::sep(), - "coin.tppl" - )) - model_right <- - "/*\n * File: coin.tppl\n * Description: Simplest meaningful probabilistic program. Evaluates how likely it is that a coin is fair, given data.\n */\n\n/**\n * Conditions the likelihood of the computation\n * on an observed datapoint to come from a particular Bernoulli experiment\n * Parameters:\n * datapoint: Real\n * probability: Real in (0, 1), the probability of True in the Bernoulli experiment\n * Returns: nothing\n * Side-effects: reweighs the computation\n */\nfunction flip(datapoint: Bool, probability: Real) {\n observe datapoint ~ Bernoulli(probability);\n}\n\n/*\n * Model function\n * Data:\n * coinflips: Bool[]\n * Prior:\n * p ~ Beta(2, 2)\n * Posterior:\n * p | coinflips\n */\nmodel function coinModel(coinflips: Bool[]) => Real {\n // Uncomment if you want to test the input\n //printLn(\"Input:\");\n //let coinStr = apply(bool2string, coinflips);\n //printLn(join(coinStr));\n assume p ~ Beta(2.0, 2.0); // prior\n let n = length(coinflips);\n for i in 1 to n {\n flip(coinflips[i], p); // likelihood\n }\n return(p); // posterior\n}\n" - class(model_right) <- "custom" - - testthat::expect_equal(model, model_right) -}) - -testthat::test_that("Test-getter_1b : tp_model model name ", { - cat("\tTest-getter_1b : tp_model\n") - - model <- tp_model("coin") - model_right <- - "/*\n * File: coin.tppl\n * Description: Simplest meaningful probabilistic program. Evaluates how likely it is that a coin is fair, given data.\n */\n\n/**\n * Conditions the likelihood of the computation\n * on an observed datapoint to come from a particular Bernoulli experiment\n * Parameters:\n * datapoint: Real\n * probability: Real in (0, 1), the probability of True in the Bernoulli experiment\n * Returns: nothing\n * Side-effects: reweighs the computation\n */\nfunction flip(datapoint: Bool, probability: Real) {\n observe datapoint ~ Bernoulli(probability);\n}\n\n/*\n * Model function\n * Data:\n * coinflips: Bool[]\n * Prior:\n * p ~ Beta(2, 2)\n * Posterior:\n * p | coinflips\n */\nmodel function coinModel(coinflips: Bool[]) => Real {\n // Uncomment if you want to test the input\n //printLn(\"Input:\");\n //let coinStr = apply(bool2string, coinflips);\n //printLn(join(coinStr));\n assume p ~ Beta(2.0, 2.0); // prior\n let n = length(coinflips);\n for i in 1 to n {\n flip(coinflips[i], p); // likelihood\n }\n return(p); // posterior\n}\n" - class(model_right) <- "coin" - - testthat::expect_equal(model, model_right) -}) - -testthat::test_that("Test-getter_1c : tp_model model string ", { - cat("\tTest-getter_1c : tp_model\n") - - model_right <- - "/*\n * File: coin.tppl\n * Description: Simplest meaningful probabilistic program. Evaluates how likely it is that a coin is fair, given data.\n */\n\n/**\n * Conditions the likelihood of the computation\n * on an observed datapoint to come from a particular Bernoulli experiment\n * Parameters:\n * datapoint: Real\n * probability: Real in (0, 1), the probability of True in the Bernoulli experiment\n * Returns: nothing\n * Side-effects: reweighs the computation\n */\nfunction flip(datapoint: Bool, probability: Real) {\n observe datapoint ~ Bernoulli(probability);\n}\n\n/*\n * Model function\n * Data:\n * coinflips: Bool[]\n * Prior:\n * p ~ Beta(2, 2)\n * Posterior:\n * p | coinflips\n */\nmodel function coinModel(coinflips: Bool[]) => Real {\n // Uncomment if you want to test the input\n //printLn(\"Input:\");\n //let coinStr = apply(bool2string, coinflips);\n //printLn(join(coinStr));\n assume p ~ Beta(2.0, 2.0); // prior\n let n = length(coinflips);\n for i in 1 to n {\n flip(coinflips[i], p); // likelihood\n }\n return(p); // posterior\n}\n" - model <- tp_model(model_right) - class(model_right) <- "custom" - - testthat::expect_equal(model, model_right) -}) - -testthat::test_that("Test-getter_2a : tp_data data path", { - cat("\tTest-getter_2a : tp_data\n") - - data <- - tp_data(paste0( - system.file("extdata", package = "treepplr"), - treepplr:::sep(), - "coin.json" - )) - data_right <- - tp_list( - coinflips = c( - FALSE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - TRUE, - TRUE, - TRUE - ) - ) - - testthat::expect_equal(data, data_right) -}) - -testthat::test_that("Test-getter_2b : tp_data data name", { - cat("\tTest-getter_2b : tp_data\n") - - data <- tp_data("coin") - data_right <- - tp_list( - coinflips = c( - FALSE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - TRUE, - TRUE, - TRUE - ) - ) - - testthat::expect_equal(data, data_right) -}) - -testthat::test_that("Test-getter_2a : tp_data data string", { - cat("\tTest-getter_2c : tp_data\n") - - data <- - tp_data(list( - c( - FALSE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - TRUE, - TRUE, - TRUE - ) - )) - - data_right <- - tp_list( - c( - FALSE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - TRUE, - TRUE, - TRUE - ) - ) - - testthat::expect_equal(data, data_right) -}) - diff --git a/tests/testthat/test-runner.R b/tests/testthat/test-runner.R deleted file mode 100644 index 4da41da..0000000 --- a/tests/testthat/test-runner.R +++ /dev/null @@ -1,189 +0,0 @@ -temp_dir <- treepplr::tp_tempdir(temp_dir = NULL) -setwd(temp_dir) -require(testthat) -require(crayon) - -cat(crayon::yellow("\nTest-runner : Write, compile and run.\n")) - -testthat::test_that("Test-setter_0a: tp_write", { - cat("\tTest-setter_0a : tp_write\n") - - model_right <- - "/*\n * File: coin.tppl\n * Description: Simplest meaningful probabilistic program. Evaluates how likely it is that a coin is fair, given data.\n * Compilation:\n * tpplc models/lang/coin.tppl models/data/examples.mc out.mc && mi compile out.mc\n * Execution: ./out 100 1\n */\n\n/**\n * Conditions the likelihood of the computation \n * on an observed datapoint to come from a particular Bernoulli experiment \n * Parameters:\n * datapoint: Real\n * probability: Real in (0, 1), the probability of True in the Bernoulli experiment\n * Returns: nothing\n * Side-effects: reweighs the computation\n */\nfunction flip(datapoint: Bool, probability: Real) {\n observe datapoint ~ Bernoulli(probability);\n}\n\n/*\n * Model function\n * Data:\n * coinflips: Bool[]\n * Prior: \n * p ~ Beta(2, 2)\n * Posterior:\n * p | coinflips\n */\nmodel function coinModel(coinflips: Bool[]) => Real {\n // Uncomment if you want to test the input\n //printLn(\"Input:\");\n //let coinStr = apply(bool2string, coinflips);\n //printLn(join(coinStr));\n assume p ~ Beta(2.0, 2.0); // prior\n let n = length(coinflips);\n for i in 1 to n {\n flip(coinflips[i], p); // likelihood\n }\n return(p); // posterior\n}\n" - class(model_right) <- "custom" - data_right <- - list( - coinflips = c( - FALSE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - TRUE, - TRUE, - TRUE - ) - ) - - treepplr:::tp_write(model = model_right, data = data_right) - - model <- tp_model(paste0(temp_dir, "tmp_model_file.tppl")) - data <- tp_data(paste0(temp_dir, "tmp_data_file.json")) - - expect_equal(model, model_right) - expect_equal(data, data_right) -}) - -testthat::test_that("Test-runner_1a : tp_compile", { - cat("\tTest-runner_1a : tp_compile without option \n") - - model_right <- - "/*\n * File: coin.tppl\n * Description: Simplest meaningful probabilistic program. Evaluates how likely it is that a coin is fair, given data.\n * Compilation:\n * tpplc models/lang/coin.tppl models/data/examples.mc out.mc && mi compile out.mc\n * Execution: ./out 100 1\n */\n\n/**\n * Conditions the likelihood of the computation \n * on an observed datapoint to come from a particular Bernoulli experiment \n * Parameters:\n * datapoint: Real\n * probability: Real in (0, 1), the probability of True in the Bernoulli experiment\n * Returns: nothing\n * Side-effects: reweighs the computation\n */\nfunction flip(datapoint: Bool, probability: Real) {\n observe datapoint ~ Bernoulli(probability);\n}\n\n/*\n * Model function\n * Data:\n * coinflips: Bool[]\n * Prior: \n * p ~ Beta(2, 2)\n * Posterior:\n * p | coinflips\n */\nmodel function coinModel(coinflips: Bool[]) => Real {\n // Uncomment if you want to test the input\n //printLn(\"Input:\");\n //let coinStr = apply(bool2string, coinflips);\n //printLn(join(coinStr));\n assume p ~ Beta(2.0, 2.0); // prior\n let n = length(coinflips);\n for i in 1 to n {\n flip(coinflips[i], p); // likelihood\n }\n return(p); // posterior\n}\n" - class(model_right) <- "custom" - data_right <- list( - coinflips = c( - FALSE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - TRUE, - TRUE, - TRUE - ) - ) - model_data_right <- list(model = model_right, data = data_right) - - treepplr:::tp_write(model = model_right, data = data_right) - - treepplr:::tp_compile() - - expect_no_error(readBin(paste0(temp_dir, "tmp_model_file.exe"), "raw", 10e6)) -}) - -testthat::test_that("Test-runner_1b : tp_compile", { - cat("\tTest-runner_1b : tp_compile with option \n") - - model <- tp_model("coin") - data <- tp_data("coin") - - treepplr:::tp_write( - model = model, - model_file_name = "coin", - data = data, - data_file_name = "coin" - ) - treepplr:::tp_compile(model_file_name = "coin", - method = "smc-bpf") - - expect_no_error(readBin(paste0(temp_dir, "coin.exe"), "raw", 10e6)) - -}) - -testthat::test_that("Test-runner_2a : tp_run", { - cat("\tTest-runner_2a : tp_run without option \n") - - model_right <- - "/*\n * File: coin.tppl\n * Description: Simplest meaningful probabilistic program. Evaluates how likely it is that a coin is fair, given data.\n * Compilation:\n * tpplc models/lang/coin.tppl models/data/examples.mc out.mc && mi compile out.mc\n * Execution: ./out 100 1\n */\n\n/**\n * Conditions the likelihood of the computation \n * on an observed datapoint to come from a particular Bernoulli experiment \n * Parameters:\n * datapoint: Real\n * probability: Real in (0, 1), the probability of True in the Bernoulli experiment\n * Returns: nothing\n * Side-effects: reweighs the computation\n */\nfunction flip(datapoint: Bool, probability: Real) {\n observe datapoint ~ Bernoulli(probability);\n}\n\n/*\n * Model function\n * Data:\n * coinflips: Bool[]\n * Prior: \n * p ~ Beta(2, 2)\n * Posterior:\n * p | coinflips\n */\nmodel function coinModel(coinflips: Bool[]) => Real {\n // Uncomment if you want to test the input\n //printLn(\"Input:\");\n //let coinStr = apply(bool2string, coinflips);\n //printLn(join(coinStr));\n assume p ~ Beta(2.0, 2.0); // prior\n let n = length(coinflips);\n for i in 1 to n {\n flip(coinflips[i], p); // likelihood\n }\n return(p); // posterior\n}\n" - class(model_right) <- "custom" - data_right <- list( - coinflips = c( - FALSE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - TRUE, - TRUE, - TRUE - ) - ) - model_data_right <- list(model = model_right, data = data_right) - - treepplr:::tp_write(model = model_right, data = data_right) - - treepplr:::tp_compile() - - out <- treepplr:::tp_run() - - expect_no_error(readBin(paste0(temp_dir, "tmp_model_file_out.json"), "raw", 10e6)) -}) - -testthat::test_that("Test-runner_2b : tp_run", { - cat("\tTest-runner_2b : tp_run with option \n") - - model <- tp_model("coin") - data <- tp_data("coin") - - treepplr:::tp_write( - model = model, - model_file_name = "coin", - data = data, - data_file_name = "coin" - ) - - treepplr:::tp_compile(model_file_name = "coin", - samples = 1000, - method = "smc-bpf") - - out <- treepplr:::tp_run( - model_file_name = "coin", - data_file_name = "coin", - n_runs = 1 - ) - - expect_no_error(readBin(paste0(temp_dir, "coin_out.json"), "raw", 10e6)) -}) - -testthat::test_that("Test-runner_3a : tp_treppl", { - cat("\tTest-runner_3a : tp_treppl with hostrep model \n") - - model <- tp_model("hostrep3states") - data <- tp_data("hostrep3states") - - out <- tp_treeppl( - model = model, - model_file_name = "hostrep", - data = data, - data_file_name = "hostrep", - samples = 10 - ) - - expect_no_error(tp_parse_host_rep(out, n_runs = 1)) -}) diff --git a/tests/testthat/test-tree_convertion.R b/tests/testthat/test-tree_convertion.R index 795498b..5d23695 100644 --- a/tests/testthat/test-tree_convertion.R +++ b/tests/testthat/test-tree_convertion.R @@ -57,7 +57,7 @@ testthat::test_that("Test-json_2 : tp_phylo_to_tppl_tree", { testthat::expect_equal(ex_tree, res_tree[[2]]) }) -ressources <- readRDS(paste0(system.file("extdata", package = "treepplr"), +resources <- readRDS(paste0(system.file("extdata", package = "treepplr"), treepplr:::sep(), "Alcedinidae_tre.rds")) ref <- jsonlite::fromJSON(paste0(system.file("extdata", package = "treepplr"), diff --git a/tests/testthat/test-utils.R b/tests/testthat/test-utils.R deleted file mode 100644 index dfeaa4d..0000000 --- a/tests/testthat/test-utils.R +++ /dev/null @@ -1,77 +0,0 @@ -temp_dir <- treepplr::tp_tempdir(temp_dir = NULL) -setwd(temp_dir) -require(testthat) -require(crayon) - -cat(crayon::yellow("\nTest-utils : Test utilitary function for treepplr.\n")) - -options(warn=-1) -tmp <- list.files(tp_tempdir()) -list_na <- do.call(rbind,lapply(c("exe","tppl","json") , function(x) { - paste0(stringr::str_extract(tmp, paste0(".*(?=\\.", x, ")")),".",x)})) - list <- list_na[!is.na(list_na)] -do.call(file.remove, list(list)) -options(warn=0) - -lis <- - c( - "test.json", - "test_out.json", - "testt_out.json", - "test1.json", - "test1_out.json", - "test.tppl", - "test1.tppl", - "testx.exe", - "testx1.exe" - ) -sapply(lis, function(x) write(".", file = x)) - -testthat::test_that("Test-utils_1a : stored_files", { - cat("\tTest-utils_1a : stored_files with tppl\n") - - res <- treepplr:::stored_files("tppl") - - testthat::expect_equal(res, c("test", "test1")) -}) - -testthat::test_that("Test-utils_1b : stored_files", { - cat("\tTest-utils_1b : stored_files with json\n") - - res <- treepplr:::stored_files("json") - - testthat::expect_equal(res, c("test", "test_out", "test1", "test1_out", - "testt_out")) -}) - -testthat::test_that("Test-utils_1c : stored_files", { - cat("\tTest-utils_1c : stored_files with exe\n") - - res <- treepplr:::stored_files("exe") - - testthat::expect_equal(res, c("testx", "testx1")) -}) - -testthat::test_that("Test-utils_2 : tp_stored_model", { - cat("\tTest-utils_2 : tp_stored_model with tppl\n") - - res <- treepplr::tp_stored_model() - - testthat::expect_equal(res, c("test", "test1")) -}) - -testthat::test_that("Test-utils_3 : tp_stored_data", { - cat("\tTest-utils_3 : tp_stored_data\n") - - res <- treepplr::tp_stored_data() - - testthat::expect_equal(res, c("test", "test1")) -}) - -testthat::test_that("Test-utils_4 : tp_stored_compiled", { - cat("\tTest-utils_4 : tp_stored_compiled\n") - - res <- treepplr::tp_stored_compiled() - - testthat::expect_equal(res, c("testx", "testx1")) -}) From 53d5440889aa6b32f82951803e483d6196ab9fb7 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 11:33:45 +0100 Subject: [PATCH 18/25] Fix all check errors and warnings --- DESCRIPTION | 5 ++- NAMESPACE | 4 +++ R/compile.R | 12 +++++-- R/data.R | 44 +++++++++++++++-------- R/post_treatment.R | 6 ++-- R/run.R | 2 +- R/treepplr-package.R | 2 ++ R/utils.R | 59 ------------------------------- man/tp_compile_options.Rd | 2 +- man/tp_data.Rd | 14 ++++++-- man/tp_expected_input.Rd | 2 +- man/tp_json_to_phylo.Rd | 2 +- man/tp_run_options.Rd | 2 +- man/tp_write_data.Rd | 22 ++++++++++++ man/tp_write_model.Rd | 19 ++++++++++ vignettes/constant-rate-birth.Rmd | 2 +- 16 files changed, 109 insertions(+), 90 deletions(-) create mode 100644 man/tp_write_data.Rd create mode 100644 man/tp_write_model.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 4c59ad2..225793d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -17,16 +17,15 @@ Depends: Imports: assertthat, methods, - readr, jsonlite, - stringr, tidytree, utils, gh, curl, cli, bnpsd, - rlang + rlang, + phangorn Suggests: devtools, ggplot2, diff --git a/NAMESPACE b/NAMESPACE index 3ec2929..1f00e18 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -16,6 +16,10 @@ export(tp_run_options) export(tp_smc_convergence) export(tp_tempdir) export(tp_treeppl_json) +export(tp_write_data) +export(tp_write_model) importFrom(bnpsd,tree_reorder) importFrom(methods,is) +importFrom(phangorn,add_edge_length) +importFrom(phangorn,allCompat) importFrom(rlang,.data) diff --git a/R/compile.R b/R/compile.R index 40cf6c4..7ccb909 100644 --- a/R/compile.R +++ b/R/compile.R @@ -2,7 +2,7 @@ #' #' @returns A string with the output from the compiler's help #' -tp_compile_options <- function(...) { +tp_compile_options <- function() { #### under development #### @@ -159,7 +159,15 @@ tp_model <- function(model_input) { -# Write out a custom model to tp_tempdir() + +#' Write out a custom model to tp_tempdir() +#' +#' @param model A string containing the entire TreePPL code. +#' @param model_file_name An optional name to the file created +#' +#' @returns The path to the file created +#' @export +#' tp_write_model <- function(model, model_file_name = "tmp_model_file") { path <- paste0(tp_tempdir(), model_file_name, ".tppl") diff --git a/R/data.R b/R/data.R index 4062e52..66fbee2 100644 --- a/R/data.R +++ b/R/data.R @@ -1,7 +1,7 @@ #' List expected input variables for a model #' -#' @param model +#' @param model A TreePPL model #' #' @returns The expected input data for a given TreePPL model. #' @export @@ -20,16 +20,23 @@ tp_expected_input <- function(model) { #' Prepare data input for [treepplr::tp_run()]. #' #' @param data_input One of the following options: -#' * A list (or structured list) containing TreePPL data, OR +#' * A named list (or structured list) containing TreePPL data, OR #' * The full path of a multiple sequence alignment in fasta (.fasta, .fas) #' or nexus (.nexus, .nex) format, OR #' * For test data, a string with the name of a model supported by treepplr #' (see [treepplr::tp_model_library()]). -#' +#' @param data_file_name An optional name for the file created. Ignored if `data_input` +#' is the name of a model from the TreePPL library. #' @param dir The directory where you want to save the data file in JSON format. -#' Default is [base::tempdir()]. +#' Default is [base::tempdir()]. Ignored if `data_input` is the name of a model +#' from the TreePPL library. #' #' @return The path for the data file that will be used by [treepplr::tp_run()]. +#' +#' @details +#' `data_input`: The name of each list element has to match the name of a model +#' input, which is defined in the TreePPL model code. +#' #' @export #' @examples #' \donttest{ @@ -43,15 +50,16 @@ tp_expected_input <- function(model) { #' input #'} #' -tp_data <- function(data_input) { +tp_data <- function(data_input, data_file_name = "tmp_data_file", dir = tp_tempdir()) { + + #### TODO data inputs have to be named as it is expected in the model #### if (assertthat::is.string(data_input)) { if (grepl("\\.(fasta|fas|nexus|nex)$", data_input, ignore.case = TRUE)) { data <- read_aln(data_input) data_list <- tp_list(list(data)) - data_path <- tp_write_data(data_list) - names(data_path) <- "data" + data_path <- tp_write_data(data_list, data_file_name, dir) } else { @@ -60,7 +68,6 @@ tp_data <- function(data_input) { # model_input has the name of a known model if (length(res_lib) != 0) { data_path <- res_lib - names(data_path) <- paste0("testdata_",data_input) } else { stop("Invalid input string.") @@ -73,8 +80,7 @@ tp_data <- function(data_input) { # flatten the list data_list <- tp_list(data_input) # write json with input data - data_path <- tp_write_data(data_list) - names(data_path) <- "data" + data_path <- tp_write_data(data_list, data_file_name, dir) } else { stop("Unknow R type (not a valid path, known data model, or list") @@ -85,11 +91,21 @@ tp_data <- function(data_input) { } -tp_write_data <- function(data_list, data_file_name = "tmp_data_file") { +#' Write data to file +#' +#' @param data_list A named list of data input +#' @param data_file_name An optional name for the file created +#' @param dir The directory where you want to save the data file in JSON format. +#' Default is [base::tempdir()]. +#' +#' @returns The path to the created file +#' +#' @export +tp_write_data <- function(data_list, data_file_name = "tmp_data_file", dir = tp_tempdir()) { input_json <- jsonlite::toJSON(data_list, auto_unbox=TRUE) - path <- paste0(tp_tempdir(), data_file_name, ".json") - cat(data, file = path) + path <- paste0(dir, data_file_name, ".json") + write(input_json, file = path) return(path) @@ -464,7 +480,7 @@ rec_tree_list <- function(tree, row_index) { #' #' @param json_out One of two options: #' * A list of TreePPL output in parsed JSON format (output from -#' [treepplr::tp_treeppl()]), OR +#' [treepplr::tp_run()]), OR #' * The full path of the json file containing the TreePPL output. #' #' @return A list with two elements: diff --git a/R/post_treatment.R b/R/post_treatment.R index c301792..0811318 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -52,8 +52,8 @@ tp_parse_smc <- function(treeppl_out) { result_df <- result_df |> # remove particles with -Inf weight - dplyr::mutate(log_weight = as.numeric(log_weight)) |> - dplyr::filter(!is.infinite(log_weight)) |> + dplyr::mutate(log_weight = as.numeric(.data$log_weight)) |> + dplyr::filter(!is.infinite(.data$log_weight)) |> dplyr::mutate(total_lweight = .data$log_weight + .data$norm_constant) |> dplyr::mutate(norm_weight = exp(.data$total_lweight - max(.data$total_lweight))) |> dplyr::select(-"total_lweight") @@ -383,7 +383,7 @@ tp_map_tree <- function(trees_out) { # but ape::consensus uses simple mean. For most purposes, this is sufficient. final_map <- map <- phangorn::allCompat(matching_trees, rooted=TRUE) |> phangorn::add_edge_length(matching_trees, - fun = function(x) weighted.mean(x, matching_weights)) + fun = function(x) stats::weighted.mean(x, matching_weights)) print(paste("MAP Topology found")) print(paste("Posterior Probability:", round(map_prob, 4))) diff --git a/R/run.R b/R/run.R index 1b9ccf2..6db0b98 100644 --- a/R/run.R +++ b/R/run.R @@ -3,7 +3,7 @@ #' @returns A string with the output from the executable's help #' @export #' -tp_run_options <- function(...) { +tp_run_options <- function() { #### under development here and in treeppl #### diff --git a/R/treepplr-package.R b/R/treepplr-package.R index 6f0d354..571f857 100644 --- a/R/treepplr-package.R +++ b/R/treepplr-package.R @@ -4,6 +4,8 @@ ## usethis namespace: start #' @importFrom bnpsd tree_reorder #' @importFrom methods is +#' @importFrom phangorn add_edge_length +#' @importFrom phangorn allCompat #' @importFrom rlang .data ## usethis namespace: end NULL diff --git a/R/utils.R b/R/utils.R index d8b3a9f..8650345 100644 --- a/R/utils.R +++ b/R/utils.R @@ -181,62 +181,3 @@ tp_find_data <- function(model_name) { intern = T) } - - -#### Do we need these? #### - -#' #' Model file names stored by user in [base::tempdir] using -#' #' [treepplr::tp_write] -#' #' -#' #' @description Provides a list of all the model file names currently -#' #' stored in [base::tempdir]. To verify if there is a -#' #' matching data file, see [treepplr::tp_stored_data]. -#' #' -#' #' @return A list of model file names. -#' #' @export -#' -#' tp_stored_model <- function() { -#' stored_files("tppl") -#' } -#' -#' #' Data file names stored by user in [base::tempdir] using -#' #' [treepplr::tp_write] -#' #' -#' #' @description Provides a list of all the data file names currently -#' #' stored in [base::tempdir]. To verify if there is a -#' #' matching model file, see [treepplr::tp_stored_model]. -#' #' -#' #' @return A list of data file names. -#' #' @export -#' -#' tp_stored_data <- function() { -#' res <- stored_files("json") -#' list_na <- stringr::str_extract(res, "^((?!_out).)*$") -#' list <- list_na[!is.na(list_na)] -#' list -#' } -#' -#' #' List of compiled models in [base::tempdir] -#' #' -#' #' @description Provides a list of all the compiled model file names currently -#' #' stored in [base::tempdir]. -#' #' -#' #' @return A list of compiled model file names. -#' #' @export -#' -#' tp_stored_compiled <- function() { -#' stored_files("exe") -#' } -#' -#' #Provides file names already provided by user, stored in [base::tempdir] -#' stored_files <- function(exten) { -#' tmp <- list.files(tp_tempdir()) -#' list_na <- -#' stringr::str_extract(tmp, paste0(".*(?=\\.", exten, ")")) -#' list <- stringr::str_sort(list_na[!is.na(list_na)]) -#' list -#' } -#' - - - diff --git a/man/tp_compile_options.Rd b/man/tp_compile_options.Rd index da673c0..dce5d89 100644 --- a/man/tp_compile_options.Rd +++ b/man/tp_compile_options.Rd @@ -4,7 +4,7 @@ \alias{tp_compile_options} \title{Options that can be passed to TreePPL compiler} \usage{ -tp_compile_options(...) +tp_compile_options() } \value{ A string with the output from the compiler's help diff --git a/man/tp_data.Rd b/man/tp_data.Rd index ad81578..82f2afe 100644 --- a/man/tp_data.Rd +++ b/man/tp_data.Rd @@ -4,20 +4,24 @@ \alias{tp_data} \title{Import data for TreePPL program} \usage{ -tp_data(data_input) +tp_data(data_input, data_file_name = "tmp_data_file", dir = tp_tempdir()) } \arguments{ \item{data_input}{One of the following options: \itemize{ -\item A list (or structured list) containing TreePPL data, OR +\item A named list (or structured list) containing TreePPL data, OR \item The full path of a multiple sequence alignment in fasta (.fasta, .fas) or nexus (.nexus, .nex) format, OR \item For test data, a string with the name of a model supported by treepplr (see \code{\link[=tp_model_library]{tp_model_library()}}). }} +\item{data_file_name}{An optional name for the file created. Ignored if \code{data_input} +is the name of a model from the TreePPL library.} + \item{dir}{The directory where you want to save the data file in JSON format. -Default is \code{\link[base:tempfile]{base::tempdir()}}.} +Default is \code{\link[base:tempfile]{base::tempdir()}}. Ignored if \code{data_input} is the name of a model +from the TreePPL library.} } \value{ The path for the data file that will be used by \code{\link[=tp_run]{tp_run()}}. @@ -25,6 +29,10 @@ The path for the data file that will be used by \code{\link[=tp_run]{tp_run()}}. \description{ Prepare data input for \code{\link[=tp_run]{tp_run()}}. } +\details{ +\code{data_input}: The name of each list element has to match the name of a model +input, which is defined in the TreePPL model code. +} \examples{ \donttest{ # Example using a model name supported by TreePPL diff --git a/man/tp_expected_input.Rd b/man/tp_expected_input.Rd index c1c30db..a312c05 100644 --- a/man/tp_expected_input.Rd +++ b/man/tp_expected_input.Rd @@ -7,7 +7,7 @@ tp_expected_input(model) } \arguments{ -\item{model}{} +\item{model}{A TreePPL model} } \value{ The expected input data for a given TreePPL model. diff --git a/man/tp_json_to_phylo.Rd b/man/tp_json_to_phylo.Rd index e109b44..b966027 100644 --- a/man/tp_json_to_phylo.Rd +++ b/man/tp_json_to_phylo.Rd @@ -11,7 +11,7 @@ tp_json_to_phylo(json_out) \item{json_out}{One of two options: \itemize{ \item A list of TreePPL output in parsed JSON format (output from -\code{\link[=tp_treeppl]{tp_treeppl()}}), OR +\code{\link[=tp_run]{tp_run()}}), OR \item The full path of the json file containing the TreePPL output. }} } diff --git a/man/tp_run_options.Rd b/man/tp_run_options.Rd index e972ddb..f31b7d4 100644 --- a/man/tp_run_options.Rd +++ b/man/tp_run_options.Rd @@ -4,7 +4,7 @@ \alias{tp_run_options} \title{Options that can be passed to a TreePPL program} \usage{ -tp_run_options(...) +tp_run_options() } \value{ A string with the output from the executable's help diff --git a/man/tp_write_data.Rd b/man/tp_write_data.Rd new file mode 100644 index 0000000..19bde93 --- /dev/null +++ b/man/tp_write_data.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\name{tp_write_data} +\alias{tp_write_data} +\title{Write data to file} +\usage{ +tp_write_data(data_list, data_file_name = "tmp_data_file", dir = tp_tempdir()) +} +\arguments{ +\item{data_list}{A named list of data input} + +\item{data_file_name}{An optional name for the file created} + +\item{dir}{The directory where you want to save the data file in JSON format. +Default is \code{\link[base:tempfile]{base::tempdir()}}.} +} +\value{ +The path to the created file +} +\description{ +Write data to file +} diff --git a/man/tp_write_model.Rd b/man/tp_write_model.Rd new file mode 100644 index 0000000..a7c07a5 --- /dev/null +++ b/man/tp_write_model.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/compile.R +\name{tp_write_model} +\alias{tp_write_model} +\title{Write out a custom model to tp_tempdir()} +\usage{ +tp_write_model(model, model_file_name = "tmp_model_file") +} +\arguments{ +\item{model}{A string containing the entire TreePPL code.} + +\item{model_file_name}{An optional name to the file created} +} +\value{ +The path to the file created +} +\description{ +Write out a custom model to tp_tempdir() +} diff --git a/vignettes/constant-rate-birth.Rmd b/vignettes/constant-rate-birth.Rmd index 74142f5..96800b4 100644 --- a/vignettes/constant-rate-birth.Rmd +++ b/vignettes/constant-rate-birth.Rmd @@ -1,5 +1,5 @@ --- -title: "Constant rate birth (CRB) model" +title: "Constant rate birth-death (CRBD) model" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Constant-Rate-Birth} From c5c457f31c0cd430c93abcfef6439c7fb6a51926 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 12:34:18 +0100 Subject: [PATCH 19/25] Remove outdated vignettes --- vignettes/constant-rate-birth.Rmd | 82 ---------- vignettes/hostrep-example.Rmd | 152 ------------------ vignettes/rdata/crb/output_crb.rds | Bin 16338 -> 0 bytes .../rdata/hostrep/output_hostrep3states.rds | Bin 186585 -> 0 bytes .../tree_inference/output_tree_inference.rds | Bin 57943 -> 0 bytes vignettes/tree_inference.Rmd | 90 ----------- 6 files changed, 324 deletions(-) delete mode 100644 vignettes/constant-rate-birth.Rmd delete mode 100644 vignettes/hostrep-example.Rmd delete mode 100644 vignettes/rdata/crb/output_crb.rds delete mode 100644 vignettes/rdata/hostrep/output_hostrep3states.rds delete mode 100644 vignettes/rdata/tree_inference/output_tree_inference.rds delete mode 100644 vignettes/tree_inference.Rmd diff --git a/vignettes/constant-rate-birth.Rmd b/vignettes/constant-rate-birth.Rmd deleted file mode 100644 index 96800b4..0000000 --- a/vignettes/constant-rate-birth.Rmd +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: "Constant rate birth-death (CRBD) model" -output: rmarkdown::html_vignette -vignette: > - %\VignetteIndexEntry{Constant-Rate-Birth} - %\VignetteEncoding{UTF-8} - %\VignetteEngine{knitr::rmarkdown} -editor_options: - chunk_output_type: console ---- - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>", - warning = FALSE, - message = FALSE -) - -options(rmarkdown.html_vignette.check_title = FALSE) -``` - -```{r setup} -library(treepplr) -library(ape) -library(ggplot2) -library(magrittr) -``` - - -## Data - -We will use an example (random) tree that comes with the package. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vignettes/hostrep-example.Rmd b/vignettes/hostrep-example.Rmd deleted file mode 100644 index 2010893..0000000 --- a/vignettes/hostrep-example.Rmd +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: "Host repertoire model example" -output: rmarkdown::html_vignette -vignette: > - %\VignetteIndexEntry{hostrep-example} - %\VignetteEncoding{UTF-8} - %\VignetteEngine{knitr::rmarkdown} -editor_options: - chunk_output_type: console ---- - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>", - warning = FALSE, - message = FALSE -) -``` - -```{r, message=FALSE} -library(treepplr) -library(ggplot2) -library(magrittr) -library(dplyr) -library(ape) - -if(!require("evolnets", quietly = TRUE)) { - library(devtools) - if (!require("BiocManager", quietly = TRUE)) - install.packages("BiocManager") - library(BiocManager) - BiocManager::install("ggtree") - devtools::install_github("maribraga/evolnets") - library(ggtree) - library(evolnets) -} else { - library(evolnets) -} - -``` - -This is a very simplified workflow in **treepplr** for analysis of host repertoire evolution. The data used here is simulated and the inference is too simple. A real analysis would include many other steps such as testing of different inference methods and check of convergence. - -The purpose of this vignette is to show how to run **TreePPL** with **treepplr**, and how to process the output with **evolnets**. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vignettes/rdata/crb/output_crb.rds b/vignettes/rdata/crb/output_crb.rds deleted file mode 100644 index 8667349b990993aac516663987dcfd29606a86e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16338 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 diff --git a/vignettes/rdata/hostrep/output_hostrep3states.rds b/vignettes/rdata/hostrep/output_hostrep3states.rds deleted file mode 100644 index f8c3f657300b190cc8a0b8f74185608858d5c5e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186585 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 B*YyAZ diff --git a/vignettes/tree_inference.Rmd b/vignettes/tree_inference.Rmd deleted file mode 100644 index f6d473b..0000000 --- a/vignettes/tree_inference.Rmd +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: "Tree inference" -output: rmarkdown::html_vignette -vignette: > - %\VignetteIndexEntry{tree_inference} - %\VignetteEncoding{UTF-8} - %\VignetteEngine{knitr::rmarkdown} -editor_options: - chunk_output_type: console ---- - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>", - warning = FALSE, - message = FALSE -) - -options(rmarkdown.html_vignette.check_title = FALSE) -``` - -```{r setup} -library(treepplr) -library(dplyr) -library(ggplot2) -library(ape) -``` - -## Load model and data files - -Load the tree inference model and example data available within `treepplr`. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 2d858c7fae7ca0ebdc1d925c95699221245628d1 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 12:56:36 +0100 Subject: [PATCH 20/25] Trying to fix pkgdown error --- R/data.R | 77 +-------------------------- R/run.R | 2 + vignettes/coin-example.Rmd | 4 +- vignettes/rdata/coin/output_coin.rds | Bin 165676 -> 165594 bytes 4 files changed, 6 insertions(+), 77 deletions(-) diff --git a/R/data.R b/R/data.R index 66fbee2..47fd0e5 100644 --- a/R/data.R +++ b/R/data.R @@ -39,7 +39,7 @@ tp_expected_input <- function(model) { #' #' @export #' @examples -#' \donttest{ +#' \dontrun{ #' # Example using a model name supported by TreePPL #' input <- tp_data("tree_inference") #' input @@ -48,7 +48,7 @@ tp_expected_input <- function(model) { #' fasta_file <- system.file("extdata", "tree_inference.fasta", package = "treepplr") #' input <- tp_data(fasta_file) #' input -#'} +#' } #' tp_data <- function(data_input, data_file_name = "tmp_data_file", dir = tp_tempdir()) { @@ -212,79 +212,6 @@ read_aln <- function(file) { } } -# Read alignment in FASTA or NEXUS (for tree inference) -read_aln <- function(file) { - # define the encoding - # NB: everything that is not ACTG will be replace with gap ("-") within the function - base_code <- c( - "A" = 0, - "C" = 1, - "G" = 2, - "T" = 3, - "-" = 4 - ) - - # Print an error message if the input is not in fasta or nexus - if (!grepl("\\.(fasta|fas|nexus|nex)$", file, ignore.case = TRUE)) { - stop("Please, provide an input file in fasta or nexus format") - } - - # If the input is a FASTA file - else if (grepl("\\.(fasta|fas)$", file, ignore.case = TRUE)) { - raw <- readLines(file, warn = FALSE) - raw <- raw[nzchar(raw)] # remove empty lines, if any - #nm <- gsub(">", "", raw[grepl(">", raw)]) # sequence names - sq <- raw[!grepl(">", raw)] # sequences - # sequence matrix - sq_list <- strsplit(sq, "") - sq_mat <- do.call(rbind, sq_list) - sq_mat <- toupper(sq_mat) - sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" - # numerical matrix - num_mat <- matrix( - base_code[sq_mat], - nrow = nrow(sq_mat), - ncol = ncol(sq_mat) - #dimnames = list(nm, NULL) - ) - # final list - res <- list(data = num_mat) - return(res) - - # If the input is a NEXUS file - } else if (grepl("\\.(nexus|nex)$", file, ignore.case = TRUE)) { - # nexus matrix block - raw <- readLines(file, warn = FALSE) - raw <- raw[nzchar(raw)] # remove empty lines, if any - start <- grep("^[[:space:]]*matrix[[:space:]]*$", tolower(raw)) - end <- grep(";", raw) - end <- end[end > start][1] - mat <- raw[(start + 1):(end - 1)] # extract contents - mat <- trimws(mat) - mat <- mat[nzchar(mat)] # remove empty entries - #nm <- sub("\\s+.*$", "", mat) # sequence names (split on the 1st white space) - sq <- sub("^\\S+\\s+", "", mat) # sequences - # sequence matrix - sq_list <- strsplit(sq, "") - sq_mat <- do.call(rbind, sq_list) - sq_mat <- toupper(sq_mat) - sq_mat[] <- gsub("[^ACGT]", "-", sq_mat, ignore.case = TRUE) # replace everything that is not ACTG with "-" - # numerical matrix - num_mat <- matrix( - base_code[sq_mat], - nrow = nrow(sq_mat), - ncol = ncol(sq_mat) - #dimnames = list(nm, NULL) - ) - # final list - res <- list(data = num_mat) - return(res) - } -} - - - - ## Phylogenetic trees diff --git a/R/run.R b/R/run.R index 6db0b98..bb1323e 100644 --- a/R/run.R +++ b/R/run.R @@ -35,6 +35,7 @@ tp_run_options <- function() { #' @export #' #' @examples +#' \dontrun{ #' # When using SMC #' # compile model and create SMC inference machinery #' exe_path <- tp_compile(model = "coin", method = "smc-bpf", particles = 2000) @@ -55,6 +56,7 @@ tp_run_options <- function() { #' #' # run TreePPL #' result <- tp_run(exe_path, data_path, n_runs = 2) +#' } tp_run <- function(compiled_model, data, diff --git a/vignettes/coin-example.Rmd b/vignettes/coin-example.Rmd index beab10e..35528fe 100644 --- a/vignettes/coin-example.Rmd +++ b/vignettes/coin-example.Rmd @@ -129,7 +129,7 @@ see `tp_compile_options()`. Now let's compile the model to en executable that also contains the necessary machinery to run the chosen inference method. -```{r} +```{r, eval = FALSE} exe_path <- tp_compile(model = "coin", method = "smc-bpf", particles = 1000) ``` @@ -205,7 +205,7 @@ of appropriately weighted values, taking both the particle weights and normalizi normalizing constants are given in log units. ```{r} -output <- tp_parse_smc(output_list) +output <- tp_parse_smc(output_list) tp_smc_convergence(output) ``` diff --git a/vignettes/rdata/coin/output_coin.rds b/vignettes/rdata/coin/output_coin.rds index 9bc75fafab4df25c47e149597abf0358a0e6b99b..bea0d62899357a1245534f66acf7bf706b826772 100644 GIT binary patch literal 165594 zcmW)nhd&km_s5g$xJD8}2qBc2j9Y{xgzRyXm3cGDzSqpkO31v)s*GzS`(Aq_JA2$~ zZ}(dFUhevRzQ6aM@IL2pUe9yR>j)(=Ui$w>TiNbn_tJYt^CM&8(}eB6Y1)B}rsB7R z??`mhmSPm@1CiO*|mKC0Bde z=gkopx0+Y2YG>-UoE;sl|8(_@{Hgm)22uyR5JNr{b<0qS(;1XMn75F zW9C<;dMDZL0T=VmL=dczc$XGhyMhllEUC_YDZb=x^>e-2tG}dGMbXD{vHc3hAEjOL z4lf~Y$j{v#hVo(iH&9=nC-trgo}=?Yf(q{q9$gKbNGx6W$$Gv{>Z4bOZ?qh}h- zdwA_`g^|JzJ?k`h&DkxVx*63Af9(IfrFjhUWCC@Sq#&xz^{&uuf;WLL5JQ6?kSy5zDF%w*@Cu%f~=k;=%?~P!`;N`ARc6E%1|(Y zmC)VlijdGMmD z`S$mld5@nSehG8>ouD5WuFF3b_}%iK!0bfhuNB6GzfdevMGxb%sP+o-0~uFW-2)aC1Ft zBNFue*xP^~zY+|7k|{tc0umd&{J5I0lJ9lay4u(Sh#K6DYo;{>p!kv#sdxBY4IAFT zYQDo2lBS=%_oO#pD5sACoACd$kaOkyyc;JwL7-dL(>*w+tj?sNT*wnjUVXEuA=_e* zdZcD4zqGe}!e~U;y^pGu)9B!27rtIy)(5GN&t$axc;mhVoSj5hWx&Ws6t+}ef2kU< zK%f?x;eqR02Yr5mLGn2k4=!<`{Ek9Rfc7Nzu*689+!wwR||f*#%&2YovD6Dv!f*Lj$NM4D18KSM6o>g?Z>sS z^Aw#Ml{S&&>g1`A@i2iI=-bKXX3u@Yn?XB^*Joiz8_*y!?t0|3XJzuAXw3tr?2)G+ z1v<#-y#{M5rZ)LSH6_C8-TkR+_`-J#eRMeiwu$p92drtS<8g+TPUHc!L~|?G6jzN( zRfq-bn%WVbHNldu&-w98>J);x`eLxe9YlBs$$O))gE*6^!t8||A!eL^HEABbf)bxL zwDKHLqGcU;r-Oqa{^Wi?oUDmD_>kzEGXu>z4Z!9UCT9S00+NWI&msi(o#5^1{RUzK zC+K9;>i)V81)-_!K=BffoYSqqBl`{Qd_udUbw}n)blm;vP-)}jRSFr=O3;z9Ty3j! zYXR()thD$>=O0K)i`(-J3kTxF2@SrMX++pW(0<^|;7(>~n@fJ#oaI=VfL zN19n*s#4E1)jC4^uLprwkGAjtV;?%8qJ4mYDj;}YO~}o!`#NcPylhzI8bh0jqtoy6 z;CiLyz(E7dnO+S_gMzWcQ)vrdlh`$mWba%*-hOva<_#?c0U4sOxGIT0Kn()!_uED` zhAg94{@k`*C9~fCv_ zvkJ3bPc*278a8i52DVJ=!epV)Ys8IUFn9m^+32h+Wtk!RN+iy9Ek};ls0rFR6Sa#P zgSG4X;EM5rub^jDbD)o-5uo?Ss=Tssr18|=g#^C{m=x?MtOX%Sk3=DQ+V7A68M4+g z`CY1Sd5Of~y3n(Yo8lU#lqbSl{HNUHH=ao%ma-WmW1q+~NM=&O(bTJ!zf@U5cewT^ z*Fghudkx7sC|YxW%BsD{lH`e|)rC3sIGN3Mi|68Y`Awfb6fM zeUm{1w)U6Z7bhb5>wBG;ZkQZkXtNWP!#*?`rpXxEgWlLy^5ltZvo@d2M=+2Vf4omc zQXdi=*FOU#DKdltUoXoP$49rPXR=|F>mN=8H=vyp4l!gtp`fk1YYD_N!?!nsovSWG z<_tl~9(3n7-yP)0v|l;T`)Ct79m~Bn*CMY>?qTmla@||FZu-n+V#&x&`$>!E7e(*j zagFyy2eYZgAg9AZ7Y1NH*YbQQKgHMV^PCQa*Z~k_203Lk>O^kF7xn2p0)2F_E-vmj z?5JoUHS6w;%J1anhlb4WZKD}XqIdfk3D7CfXg|aHYiM48b~e=Vj?;vTG37>EZB{Qu znpEem$#7o4X+3*{_7uwSku#^v?Iw}8PY3gl@7;5o&`6I8HRQaV6W||E9FBJ+q>@`H zh*l?NYMZ96-ggIJq(0Otr0lSXW#8Ty1>`MqiG3b|&8+Jkh1EcRRXca4gw4*(%j9hB zLM|Dh-i_@*CTS1~L%l(2gb_{>B<+T>1RQ zifah%w5`47ip(c^XsxQxc|Samk+5F$&EQCJdSNDPJ++Jn+ePpP7Y0tG0d;c)D*A4$ zg9Cz_U#{5>@E21|KC3bjq~?zZX2+auU?l1!+|r?g`mMjQRfa1<GEE|G=Sf9AFRf5pHC&A$iuAsrJ__fOyn)0Dmyu0_~yXd$WvN zF$W)7bN0TNPbBDs_xZZygm$bsDKl8sc|L}HEPUr`-|5j+!l3-gOv;Am2*K?hn|mCu z!gibPCVYLH0k~*eTC=&!o-tDI>18Jv&b8%jIwACh0phHVzSSD1>;!ZciLDZuC+AUE?nlXLvJO5K)8&D(Ho3aNW%tRxqDGXC+VHCc5h5$iWc7^@Rn+iRGJMa!nEA&M>0D^P*pkg3zZEgJ1Eb< z2%_f~cIu5=`Z0a`&JzXv+-&AQ9|7ON>bG&6k4Ukyx#8O5%tsShVIjf865DIlv*??1 z;FsbWmYfZ?pD~2gYoZpEQa);;feuLL+-<2yAz^&R^NF zJ-QrFh|~X|ZoG{9d+kh{6htbq+2GaKH+G|^4mPR9Go0q#yUM#Z24u}4M}qnp_iPV% z1#i>0jbC$mJ0aZ7x5s+*LFsSZIQ{Iy>pZP+`rsS27v90XOsh+Vj+zF_i#;Jpw#heO zrR7Iqb8Gjd^E*eQ;fiYEHnv#JmAOm?%%xFWE{Ls>NqC?F)lhSK1AQXZz^IRZMQ9|q z;}b8lI@c89J;GNxW=C=N-g_EyqpSV{Nigy_nz|EQAixXmL>AC0ZPM-h2|^vu)IKb> zu>v>8A_@go@nk%XWL|v*QiN((dbrC-oZZ2R&@uVZ8T3x8FDJ$gHpV zp7f$NQNBQOM_l?pgP>)tfNgFTdV+a9jFV5hW5&JQ;C6wK!p`RVR7sCZgyd>IlJDBJ zW3KKHk!lP`FAAuNFYPJo(ww%Ig`9W9od^b8tj^wIrn-(b``&u{5r8SaAfu)EPJQu$ zFjZqobn$MJE|{!NCqDf4`0na_LXaCqMmjP+vt#RHs@wo2Glq~^1PjJ#3@EJWSEO!& zu*5e{^M3U@p;HHkCv5#yx|hRttsF8rnaOHa`yur|t`MAW1r3Ix0y{=G$}h_;rD&;x z?;M~*_YOKFhLsXcl*((Cje>{u6!flQ@zF|I$e&D<-|;8>dXUQUy$;?7eRQ2{JX{b$3!2A_SlPB~?hoh>1M(YgoTHs~VIz8fPu)?Rx0FyP+wrUW!7E7P_&K=*pCQ7 zljeYmP>r%EausT;-k?^H*o+ftUuD4>+pbl3>YWKgqa_rnG;>`+DG~>u zB=XgZ@6<8Rc}4-^OxE)6uYZ^*Hx@H11|T<&HQ%6XhBvN|4vuY$_wsEcz(l|_*~*jU ze23@fr}c}N6HM^KKjHd=AN29pe6|s?h_uy_Y&$=>O;Cz8tE2E^-@pMIE^viar_-#GeD6=#(Hnxq@=4mX z(Se6S0reBbwrJ$O7>6P9c?Td$N*XD-*7m{mXK<$7icq*?`}iFbTB4@k(WAqodjr(Z z$7?CcS{;qep;6WWZf}>#)7*`jeUmu>o9X-cE}&WjBwDI|bo3T%t$*6NOtKp&cnkB* z)XK{@oQz4jTUcXk7-%F;*Gof9Nd-u&C+Q-};`|F{+`#A`341PFrsW*~duYsRXl!I^ zp1;aj!2V@ugG6|+GWBL!|D3l|rd*+huP>^%YBNlu4y8Ma zq?xGTFw56w1@89=GB3lqZ5gl~{|0~Nm5zetcTBjfM>gN0QNEq+e!G`DB$UiR4mVCk z3TNGl4}A4P!D~iB; zbp9olvPTDKt(G&^vH%T+u(_iOjU>?7g4KDJzqMdzEOXX7wZ9d1 z1_uuKqYgUd%<~PhHc9l5(ow$6eD8m2MfdCMtZ-f!zOU3HAPnTpcYqm&hy(pnQ-2V7L3GezPAjZ)T_MV#x% ztgB|;m;9uW6y`&%LUpP*M}VbbimznLbp|JYfASMr&Wp=M(SrUlGZu#VF&`Bhr$}F!Dx7;ndFepibw~-@d|H?=bgqGAh_el} z_CM66RD~Upl~NV4lQpRBW0j%*M;ikm$0K&&oaUWy=Sv)bt$)3JSyP_kN$ms%epJfCznfU`W2OCyhuIfZDl3IA(Ym- z6yEnt+AL;Tp2l&mVl+ID-w2@NCMA~kg0zHrlkvoB)w#{VQ<+ZQT6 zm`uBy5CIP?ZJ(HnyvUsAN#==8y#-qeJ*{(axiO7O?-L9t;W@&k=cS%csI$X)3(oZI z`m_d6vdV&1(;q_8O_tXbiBGo|(h-B_<#A}^ckNUGyBk;9#+xAr==XvIg*67(GP}{o zP-DK^y8LQg4pT31E+%DrouC=P?*$u=+S)W0RZ4;cR+R)$N*4X+#f7h4qRNkRWseii zO4abFh8W;|pI1F64_R?p@6SG_$14|UMo(?zIMS|)g~Q?MT*wbW>uEQ=3*O%(!F(#V z;7TEmV7}-WH$~-WRLeH1j?a?89oBMRSIJ~Ks(#NQugV2Xt^?WC@<~gCoFX(+@HCBZ!HZd*mRCK z;4Ol9evk9tQo`%xW7eMQD*@Ig`yCFznNxb2es#}x=yqtaj_t^r$i-*djl0StP0^NV zFz_3@tMWf|G`-YA-6n3S>`!7PMOi2U9ZtM~M$^3Xoj~43o1fHq77_}c&7(-}BP|*%<36T-b#NaDvxm+bY$qMo?|RRL9uXf~9Ai_1dN2>VudRJ=;QYUmW`BbCi(nUp008I{{j$&|S*>-KY2E4JAeK_Wz5D>v zTepc1tOX_0GW-dUT_bTFJn$mVbfFH6WE1w)nMg|wo7=tx!LwTw!Va^b?>Z>N^CtCO z1rZ$#b+@zlLzLO1B&XHuX~}6)QH)=7JaQUq5JUWvY-QbwNj^qKgyHuI#YDx-0Tbsry z!dqaZaay;IxJW+>>y%->pRJWH$A2QJ{Nq7f*wH}dha>~;bf`NX;{9uc=B&ovU6WRF zBmHYV)UV_=JC;YIuzgQrzjI8Ge3@Co5m+KrnZ*~;?ryl}9bgM$q}cgyiWy6+JKZzQ z^$g*}wd-d?I!}1_q5J?(8merRx=NaK3!LNlv0=_PTG|>0A;0t67RY9r^XAqClL@Yi zqu$sI9_E<{l$xg4a4F|1G<-p)(GbnOPvll573#rw#sz&`Cl3>Ef%w*BKNU;>+QXr9~v9b z)cCK0;P3e4ZY!46WGt(shvElINcYuw*7es&=bPkD8b1fN#@*WCQsn6HZK-s$RK1>h$a9Is#Z20uwxzX8 zszjPyYM&HE61!IfK^zYLj&<`NgGC40d3WWeVK9idLlbBS5O=b>XYBcmBUL~%cA zBwx-c%TbIYnb6%-6WG|oh#lSHUDL{xLc=>hrWa~yY1q%bE!FnFN8-95tFFL+>F^z2 zCxQn4NmwoHR7UTU(1p{(yAY&!kzk3@!tUwC9RiSbPT>I6#dxN!r&We&8!uE@QH^j$_d@kJczqU zM%2#)3KF8j>^^unK-1KAiG62^rSd-PxEYL*)!odm)DxpY87fnYUbmF)5+LZ8>df== zYdl2=vi0G=FUnX4|0y{pHJRCNeUrSm#jicF+4IX_{kWP!ahK64OLOfniZVSVvXNJ* zKbw0z=8gh8^v>!ynO$z9YXRxzT}nFN{^#UkUpEzIw(g5izZVBs&v1{U84j#l6;z`wP0)d3!%`U zGX;>0k~&<}AN)^uteBJTkN-X)^r0%Xy;k8^PKf2?Zb5dp1I|bGPb>f9cnnXi{b$XO zgui3IlD7&9YN#$#h4yPe4p<@jLANfiNM+!L5&pA)m2ncT~YS@K8!B zS7f#*bz2OqV5u2_xLNk)`RTk9RqtgL#luTiz4$m*n{Vo7P>tB|ZeQJ9LSum>h4Z5{ z7Rn|ewn2CBXX-~v6|m+8pf9Ye*BVaCSO-6#yogj1X^5@r0*chQ8*NbZ;& zy*@v8l{5|%40)=-9aKTo{Zl3?iAI42Ic0l)S>Y+ciu2EcP-j?q88KQ~fdX!W% zgqDyZT(fEM!dGq?w2Pa}*X?0wsY8%ARhiVygx&;8eq|!fKiqfS^u2O~{a^`=!u+}f zx~l97vUB4dC|S7L*Q}t8h6ar6F8&C+MA-%TJGPUh|4jm9*)o~fcUhmARaOJ4W0C*L z2!u--LWHw!Z2F_Pq>jL~a}&)j;t`ou+jX+#GY=N%;GN!NwQNApT=PX8LlHHW2h^@? z>+hnP4ll!8k*T&agq*dJ^qU%J?mj^00jrtv12}-Ly!a&(#Wl&?=f_Qi+|Y?ySj9u6WdjP+baVDV?AvX_}-Fxs=IUZ&3TV`>p<6OZb_s;@!txf8= zR^D_otz2sE0ejZ1p2iPt85Yk!t-zIU91ARk-yo_Gz9(suFRhMiYi#su`U)fdok)}R z6D4X;;k0Z^ccrd`HF&F^S>r{j8RB62)Fcvm_9Ad?-(UsYaD}uhCl{w7q_&+SX7VA( zVJ)qDb1@7H4b;jSMA`6V$WjrN?snW1$2sN{0rjmkP!2+5xY768)_5VNrwAU2FBPi5 zy%>!n4^?Aq&P6$nVku4^LS*t*;DHind_MY-nk7l!9||CJI-qoe)(i!msDkp>_$uLl z^;gT52C`4%5Zm&Gq1bWW3t!Vs$lEi+e`?9s4RiIXqM#34HZmJlM3)=iZ2^qt)oJ8B zSxXSD5kVd@!3H{kLWsaG@j#K>P@z%G$E~%1t34F9CPbl(!WH1=?e9yz1s_P|zH;J1 z%giK&XDn;_>XAWERD6iH3jgY8l}V%G3^FF%)B3`&7RqpX@a0}btT!#8zWDBW4S~WN z)%G%bLo5Onr-o?T^3-YXc#^iapU40Bd5dDe^zISwHYz3Rw-QonMNXkiFD3S_js{x7 zc!)uw@rqf_tu?8`h1jWPh7!W9sr)vRuvtyfeLJ7 zDV%8jFkh}{T*J#@>YMqkqnaNFDk$eAh$@sMIVyeWj+HaY*VDi_uXBWH> zq|{E;mg;>GJ4 z!EP}>`IfhcmgAqL(Gt7#J_)QWO|l_TGj-y>_(m~5SnUE_`sUnA*bJtmdN|&2)=tCJ zm+u{j80O8-!SI(z`bP!#66L-6LXH(|uhD&ZkSV?{#Pxoi1qZ@9S43@!OpA8=Q}?r> zLBOeUZiD)VIS_Hf*=d{QbfGVUP>j-xlFg;jYHf@*6+EqfV@%wMG;|N0Mi(anRbn2_qaD*hK=Vb zRyVs)Zn)!X;Xzj~ihpiP0R$@b;7#L4n?9A)vb7AC%~^0_jNwQa)1=RMz^}$rK@vQK z03!G1T%7PrE6C|^>4PY*UOGw?HnOKXg`p9r6ohSj_u(4MT5Y z%EJ*VUpM(i@;;{Kq#*V-Cr_l~@uuP?BXZ!3A4$-dX)__e!|$E*3=&M2cf z#j$Qf0qoe}Jn-DhAV<}g#0+20Sm(Ao8DrcjoWU2&ll^pc< zWAVg4486_u>)I6V(~MEPRF9*^H-<{U^=Qy%7}93t-emNiN}TDJTz}k&xt+O(s6hY6z46;dfD%>9`@R~`U28#sl$#e%_Ck z({v^CvXSefADt%GDRrd}_MKNDxugSoH7O7}xMWc;I?m_5ubiQD$U$>-?;@Ssn*wz?y#(G$frSe+v9T%RSaG z!DZejeYNLAR?U!;wrUUZhO1p5656(I0g6*&flSk_*c8t%6G=qNio@kmmT=MSoNTKG zsN^z=a;56a`^&^eM<)qyUM$-WKkvUkABwY;4pzEl{G`O6+!orF!J579GklY1gMta! z6@T3O@MlW;!}X)KPjYfm_!V-D+%8e0x|3qIenW<$-$x+FDy3A-U_SDz(s(!mt-RhBQ{lw}A7V+T_1YqJ|Euy?h(I`*Hi`oJwvd*W18FBZ++?v!bSy zy^i5MkH=f-RL$i;uDvtF(L+O*FK^qef9}cG8|90e9+|l;*$TFeCVB2T32Gr++yjTD zWM5Hx!oW{oR=Q5hjD3IoskkJ&jnKYYS0Mqvzc=!lfU?KR zj}pQ%#84IZ?Jiti-}6Q z5wqF9c7-}Dgh%PS;II~cg6Z)-qQq_R@5BFMvCzf2cE{D8)^Mji&+Vf!iDqRQ7(&C~ zi0Rd8^d$V}F(i^4YAs0Wr z5Z@A9a~Y@e-mkkD2o^$zzZ1JH%l&W_&sxbMxiJf#^Dj3FNQ(sAwq7ea^zNhR=M7ga zHYENxYVTd32*#4H`Fah4y6M`4!wxugzVYMi-dpWwE*oNtXVW8Ldb~}@^*87Hf9bHP zW1n-%_Mp8R(4EMfww1gGP!r3EHe-5)l;@&*|GvN`UQf$RzO)4?mZJJ08T21<(~Sj= z6CMnAuP}F8CQv; zhM(R{IQj#mh;d!H&_4ok{fDK2rO>Os4flWWjd5|>S%8PRU0n{8?obF}Bkdtd;+>0P z6>%d*_78+5`hMEOhQ%KBdmM9+XXQNnJ(7Tja=lxHii;wVdvO&Gw^hXy+{yXuG|RWJ zYIFBbHj%&@V3((&4)t@{YH%dm+)7qjplM2J+GT+Y)9+2c$3k!7Z2wXndpX<&cyzFn z(jy+TdVkXPS%~Hx3tE=htgfE-Pt+B6n`ZEJ7*A~5N5Z;=n!KPI-&hFT_U945(TrT7*Xd4Y+M^ zmR{aIXAb;$;YRNfHWH zB=MSV_KA1%Zi9uRz5n~xLPx4}oKo};Z1z(zS3bLV;^fPUuDSP~uc$x3w=<^=7a6ML z2mk5HQYla(vGIYojEfconwdx(|PY@Bh}5If2`F(uW*uIf8>)$ z9^sc1z)!eBg&-%R$^#i+`-F{cYFXb1I2>OT#1IHQw4Q&2)Kfn<5NoI(H40}WUv00~ zGg7cllPUM&kh&gqg$m-cP?LJk++@nwmb3lz6skNDse>5VMg1y?0tNp_cC%gqeNXlt zG=oPVMb1YKlW@$lw4DL1P~NgM%f#t&vW8T=@zcYwktti2;G*1h10d8h8P&@BA3SjP zT~MD`svSi^fA9=gDk0?1AtR|?Bc)?JCC@f~Oc`~!b-A3a$X=b*em1SK^wxm4ZPfjG zPaKF}Gk8QK#GJyimW%-l0ip{$2_iaS5-=o%)*M^BGG^U}FO-SPsG~ur4 z3*Ir~_;TPUTX{dmAcMY*atg$xr(8@g+FH$m25Kq_*dqH&4CFma+^Us#6_7V9+^jik zS3b6P-brLBNV*c-QdMW49GfFiI>>kPIQ%X>g?%`8b=v+zPz*X$-!GAVT`zIyH_}-G z%m3rWtITaSG~HwG+AP>rw2q%L^w|qG><4tQw9@&W_S^8Kwf5#Xi`9!(tbMsw4ba&Z zOuxXkt#GVYxTWM)fW@26>x7>8E=PHl!nt@})(*Y*Qp^)=c>UwlFOo3 zs50Q6;tl!i@Yncl_;cYgRLHFM$oQ9EW$sV5Xmzj^L0io@{>mUkd{6Ct?RT>brts_5 zJIeJbAH)@T>R$Vat;cnpZ5;fZOalsk8Yx@%+UL>nSZrGnAqD$|>STn-V{-^UzIJ=x z$I9uee!i43RQUh{%<4z=v6FHh`nwex5k$NCbu4H6-5tpse!Q+%LQB6bkw05lC7s>G z&k>VE8S$R+E%=i=r($Q-v)e0g2O3Q#vRj^=nwRPyyL_3e=fWw7E?vB0T9tX$m!OvA z6%Bl{e7t73sYgIbWpJn(48(->gun|-=i&j<-;qqs)d^wr&BNahau`p`Nls^5KFu8` zS`3HH9`Gn+^#fsu7g=eW-&A*sYe>N)2vNSUl$!CQsSx?^;5sWM>MMvHx%7**5bA8U z@s@4XeO0<4A8vqCaL=ik4CrIs4BS&RY_^_%EIbQ3p8vxZd1o^apvY`}&uZxAg+sMN z=HW;(>HEvZwq}en8gN`&8Ca*rM4^By;=FRkMn4(6lL6fLw}u&gx@~Zm9lO7-)7Vn( zT#1sI^qi7M>sPhG>HGTAp`V$})e8Rn$C5Lr?#+bsa{=k(7Psv_7oncLr~Vuxeiado zPqKgO_BlTi>3xWh^jgNl;5u z=Op=P^%f0snqcI$kW4`CFYabS*scU`P=4VuelkHoH=2HBMuyNcYi!)uV#nsb2>5pv za^ThkwMNx8F2&19oz7ju7Dl!uU@A+EUviSliMs8T{$n%F%^V}G4%nHg69{=Hiw2q` z7gCUO&>zgyf4GH2MTT+zFgcp7)l1Xs44^2ssGqcowu)WocE6+d8nqyd$%&KMsq}3Y@w^ zDhk`WbY{jzDDZ#~(S9muy1{0m(BdxR8Q-1&J!J1O=vm>9wVT!es(F}~(D@6Vb#1@q zjMayFgx1yfpSUg(JIarv#PjlnNEH#Ru-??O{O%ZDyigtfj z-Ip8yr#BaFvC1=2nDgA(1EIhXy|eXtyzDIe9VqWF{tEkQB=`CQ2YIaI2BrO4QJ5CO zL-^H`-%OOs{NlQ(E;_X8antf48SV?|YDIW4pC^XU&`ozfsjylEZQHF35nlA{-ASrr z!t|!YO}%rCt-foA=>_*jGH4F5!-ZWujp*OUM2vXdHUIArLMJ!qb%QJGe!({WOI%=g z8m#Q2!vXW%4aW(-44FVvZ)~VXzl*3!_-3GlVrSf*6$vitAbkwq!jyRtoW4nbmid?- zLmYZ`e&v$r*YV#k8|54HFdZT1&EbYUXjr;_s8Js4BgU}Gf85v6;6dp zUu|euFhn7^JyCKs{5ZY3+3?IDC1KE`&{Or7G`LTv#Z%xHvkLauR9KZRsrbp~K$?6E(bRW?sLOR`GkvzQ5Gg zeegyG?Qi;Fgc$^!WjPW)ST+|;A%ym858Vx5I+sSl=UBJRjElXLpFIuO?+=DGoXOb4 zAVfm#67R4e6V4`B%M+=q>Pq{1BBPb!>#Z;kBE6p|#DE;6wDIKff1t)(7!ZA_2gt3& z=PJ8Mi{L~VQ5sUNgqMXlIUQeSAjzFy2p^!e<5B5nvHno9cKGEv2cTxVAkJ>be!@}K zoPQCx`Acm^sfV^_#HNzPEJ8!n#b+(NEFnbhnMtM|j{wxz=BD?1NYn+*GfZl9p*+@Y zV9{-lKapvR`y~igca3P^>S^IG=`?*l@m+`BNr4`VpFvfywR8f4OL}^@=k7*oa9tGN zXdk5udQtrD`O2lFJCQ;-`jm6_b)>KTx(aVp7`?~P@Y7;Q>c4~frlG62=eWPci{_iN zfV!Q=0nvlMEoQmX2lf8_iJLK-Mbb&9HbMGTqarPbsO{r+>QjSKOSyTaHcbDNe&@~4fv7ICN3p4d^Hk3Zp_ z7@aVaCw?2Jf9}j0C;E1OuBX|*uUa7SD7A}pm?<8(osRw)$tx~XIraJ=oaI9IHdVk@ zLTHscifEJ^W_}x;lT4gB;Oq;D(Gcau|75(_&p|>nZ<4@D;X4fyDiO#S*n5<9IA@Se zCt+rK@~k6cRno(n8FUmn2dX4b%*BIVXyskZsA&tue-J!0MWmAA3IFs_oDSP&9PP8} zFq$6zD=rhkg(GOvwWZ|;OUJj?{T1vMh1wY?!b1mYE~<>`cdxUPN9^b>bYpBh&J6^P zb*2_Nal&YzM7 zjMtj#u^=J-FZ}3aT2zbNdk?u3&W*Ny_nt;UTD#|j&b}aZHarS)4b`5@c~Q!^_uszp zTOi+sUY{NQZ1}2HyW!rz(~3L0!Lf@DXNXoh@~z+Eo5SOb1MsouyBTtk*wF?rolGB} z%TyEED7nnGsCM%d;}ta$>$#?s{mYq9=JT6BE`g)f!0bZo`IMVo9smkgiFy^KppWDe zB@WuCv+$5vU7(J~b%SFWk0uq0YBe+B`&lj)m*wL%Zz^(-QH>TCq7?Y|wPr&y0Q)7r z@pO5`r$_F4Xt`L{^ew8+`;F^XWvM|KZ@qkitArneuI~UDU(f;v*4?h%Hsm-S+Ol4y z8%0z6@`gtXh)hs}{lysjjhiI>&I~RY{P8X0lD|rpS0Az)7f&FKHhL~26KvsRzTM)! z5}k|~xA(QT5K?du#;@<{5!82Z{9zwsk;7e|%Ka>fU9OU8%iTd0VL{o`)YhFbk69s8 zTqB$;2SSsbW0h1EXfTy(YxRy5cTbb7m}bUbtFEU$agG^X2WS_@Ebk=St1+Hu+o@~1 z!;*>Vw1H0>Id_Ne$UABhXFI?XWpmG*jkp(4zXDAApda+5?=}em&iaEHDdhV6s(g0i zbA=qcn_2^I?|A=!G(Drpts8e&-YZ|hr}Bj6HnVQ&yk8AKHpiin&JfwQXiUtTD99G% z%XI~!`q=m5DoKMw&Q-%hB`;xzAcPI!Ps>*7D>?lJxlhmi98+WEQOG241m%;$_C$_X zT==z9S8EYp4wOo~3|Uj1$Vqqv={P8OBTstlN5a4O?Xk}Dy&@>#r+8 z3!-oREwu~Q4Pns?3GId|?Pp-$j+FWLy7_7(Ax50lI)M#^sD_Ve#^RoK0-Bt91WLDm zS4gzXuG7jPGabX_9<$j?%pin9CCT?+1 zc)jsTFqea-dQ{N2#f9O*knkG(>sU73(XJN&(U+5yHeo?j-W!awMu%$@;lmy9FlRXH zJ}mx?5;4QGL%Jkuc09>6NT`Tb_anq?`#;5)#Cc|aK{ZT#*0mCiQ7O_)S}ke}90rlv zr*lkN+HUT;>5$93w=a{^+{{YH$N6RrgbfF+4e$5ZmOxxR;+}MArb#iVFx#w=>5Lyf z*Ei}AG!tdXV!9R~RC?EvWD|{OP!uB~E@gOWsh7-Cy0ACa?O%BHRnE|yh5bWMI{7Si zI87M%(DjQ4DY)y$Hp%dgbhJioK|*DlpL} zI+v8&AvzN-EazcB*4PDd?7HZlW#a@^J0blh)~0$)XIX1B`wHzHDxZdKH!ghm>R=Yq zi>LfMz^2AtUmG<%c%+f=t26ykrsizul!m@xlz5uZ5rb_8*E{MG|JXc}1J{@oJxl|};Rr|~D^0~BO0$7f0o1U7s`7!BXa5g(oVZrksF!4g_-SE#F zQ_xxC^fgX^$Ta(|Ey~ioCAbqR?4r1{uEdT&&W^&CK1GBGn-im4**eAg&FQW8-wo>rftN1iu5}1sba5QolMQlH@vzlzn}rIHB44*3Tq%7-55OWGS`^D^XTSS~wz5BJM8LL>bduSi~DN?h?!|Q_K8!c5ON} zUt}$=BbTqX$-z{2QQIF04XYnYxP0aw$fcKB$g%;_jVE@Mt|@p&wXx76Re2{_p>bY? z`=;4f!bB_=R-XIzp6HkI@XNY=qdZb{6Zu||i57CZp~N=O<-j;?Z!JZlAw0h?wb35& zoPPzQ*Sy4Z7FIVn(x@AH%Q)%?31aHuz&2;^EQ_`LuUV`e|5Xta@`wE21#r@IG>SLZ zCbZNS`Xe-DNYnM3gLb9Ukzy=6@VdUk^PJN!ohQ+My#*{gf#rqu_nXc2E0Myyzr@(F zGrNYCUd<6aPhPvcyQ#^st9Sk7dv1SGK{>N@vmLSM3)Vj~-0%3u0{@%hoE0Is{H5P$ z0mJ&&7;!nDS3+<`D%jTBJeIGj8CF?MH|iz%S&uZ2@Irbts5*qR}Cwby43cy>XA~QBsoKO}%%=NewU2McfhH7gO1w8Ap4X9jRk@;batwSey_?4^x>o2}Lg3~i@-_0GO-eyN zSPx?GaC6EdHmD6~ed}mPhzV_&*iiN%PpK0%Kc?AK%ZF0WjkqHw#Hme=Nc?Hx(CMuO`QeB;ELF2++DmBt<)6nivNc7+FDu)F6q6We zWQB5KWm;?dx`rBKwlHi=1XgHl+vrmf+<(5p&vRot&W_lM>ZaEJM8C%JGb)Mo5chIX zZm;hD07gK$zv$so!uPIkns#^)^7Ud138PLQr?I{nwV2Rdgzp10jNCS>AU-6teW}HA zKKN&9xe6zPHv->_-DITr6cE10a@(aB;*0x>w?Efm7$W~5n)qEh%Ln;p5n)r;t~a>9 zbl*S4wp)lV$y@c*XFNuHL&oqfZy_bMb&O18r3u#JCCI2?;i_Ap1A-6f=pVCr8 z`T;#Se<@4$HBSk6N9g&-~*~@<*J}>%w-Gc8Ite2cuU$w8fAK0YxWBT97G?FVaa8>5h>_%H!wH0*qw$xg^dNY zra%_LoForprIo=vOuAF$^1(O`^jTuuuFentNthEoJbsh$1bu%-47}s$)9Qr#c~kNd z3i1551m_qV^o1G7FO_ykLZ8;&sq;p^*wMFPc(?8fcWw0HYp6=jphXk<>|8dN-9Lan zW)r$cRKtE@KUzNSsxc*_4@q~x<2uXT=+i`}Y-<~&*f8n(B;F|XLxeuH*GU=|t-Y}x z-{~kPe)RDf^gG7U-HEKV(KoWYsL}WNFZ6|Ch+KItUXH$C+39t~&A#Yck`=w>+1Ehy(aX~Io9ORE-_>EB zNzOMl=vy(U>a*%5jnJ3LF7Dd64f=F2cs|JgjYMCSHiJcL&kN{dH9DI3QavGrNtgaQ zXsdaf&W?N4w zODjSjL5tq!od?l}er{e`4tXE0 zP+S&f2K_dgs^hrqPZRE+Eh`^3hCU@DJ1pj`!_b$jBkB8!L+gdbLxN&>pj0n!VH)!qmhqLHQIJ?8Q@#G4KB)pB#^_`}VZ^E$4(w~1{T`UsEKoz!ma zgnnxI#$_D73GXxUI?Da&GR&!HRM&j=;u`v{3~owL{20N+ug3JM()g4KLf;>S+RB*! zx_|$N{=ycXow&Id{O>HKsauKj>J)Q(_(jSD@{qfI^_fqExy{su;U}vgUlYammix+L zPC(a;)N6rb&_``CF&e2}^;qwj_#)de^hF)H=_*|G3-UYcCei)&Gvw)GRvec?7WyDH za5oR7P|=5`C0nZ@h=e{mj9>cozk4tzX?R`H;Y~l$$7xVta^THv@L$KJ1Gy{xF&C`X z`%R1>;(NxUp$y|<)EgT!HtA@655OF=u}3^F`MJ=St4UHs@i`rR*SZ7tw7gdI#(v(* z3o;(S9ID1z{|g>3(f722^7V`NHbP(DLvFoME6}I4_wUB2l`o+G1~(==U-=S!Fo#au z)^@wY#E-@kq2=G4)f;{HhPF9=zFq?PA9V{OXWqpekraXJoN2!>N3PBD zCx?nFp__Xh zgqZmm6w@azFdKo}kZr{LdBgqpwpVe}|XSCfMicBT0314fJj6AMx8f^9p^X21Obdvn*j> zdg3EZ7WA+mL(&Z@XQPwxKE-Ue3Zu|>ZcKYN@yHe6zk=d9uI&N9o5LH2H`n(;{t6E- z&Hg$8{u@0h`9b9h`iynbUk)}

OG-*MxUA11}EgMRacUhP`iWZobX)6MgpD9vCy~ zR*Ev|qJ~zbmk0a7KQ8VQ0)m*s(J+5C^cpAnymxZ3Vk+MEB4TW(3dbX>~rxAal)L{zp+xk*P^d`|NeVpCc9z3 z#>q*!{Jn%Z44zRrIsec%bF^AayF3N>aoEyf`DY*46PkdJ&-7}@1O4$a1MXb(l%Zj=p*Hv@5d_iol!wV#o9+zCk~YcbE!V@}rM@dy@@U zt{M7jHYdDZWH%wKw|CRc7)$8C(Y=A>&@1SR_IclnRqDrpmj?76sB7IO%njWy_IlSw z*z*wqot13e1pL22URL-x{=SD*%YNf!^bu<|*w|+O4El>MGT(c|6@7@O=((n+9MM;` z{_3f_--@A+8h(AeoNx^9+t%Vymsn|n^=w)nuEh%bJb5KbB#K6u%X0rh<^l`w79)+D z>e`OJ?Tp-xTg?OD|9)w5;Tm7`4eYJAPTM($K5wl7+LJ>h$bZY|N%=ri^cfvEMqiw!=co5(7htYUcdFZj*v@(;U9D>J@J$2s zIpcaqV}K&&tPK7e4J^2iK6tGR8THXV*o%SJYajhnhP@f{BySIY34J^;^x9#cE5RRI z_O0B>9)0i_e{LQ>6ao2cGL~gI_n4Gz_~3*-wY??H z?jvsSkNbEBAE_2Xen)2IV|$(ef0Qb9a(URJ?`60D(`V7kpE2ngcI8Q)lj!4F^K`Ch zm=F4<{YL)rPuE~y8E<%2@Nb2FuU(hT({vc;KeQr7&6k7FH`}9Xh2Cd^depyGRJrAVCT!+UgoNoKynxO(qO%5*aNh&H>^U)*>H`(1qh z!Q;qi_}Bf78*^Wd6XaF-Pi4F;^zA^!nd#mI+`lhcA}%KWIexDpXjlFjeGEs;z1}^# z4SYXzMR%7|GGR{6GOHh9R^YF;7*Tzh>;{8XLbL{v3f%oaDWSiJd$K1BTc~fVy z5%_~KaDU(a7r_5@ZyM>tM=*z@ZNAj4z>#2&4)AYTu7JO9AlY8H@DBKJV)@;@{~n-E z>*SlWonN*?AC9UVHc!8f_))1}1?@vG@JwfIgv_6Q^v$2Tbe?*%c?Rb_nOoR$#wA%J{cNNMY_oiAD%rDjI#|hwdsHHhZ8?d%wk7%^5lk^6b@f;io9(oG_OE z+oV=Om|K2*TlPF*PEy;>CTbD|{&{L)<+9idgtW>8~pyu>eSExoL~2WT3(h# z;Qf{}Ke$HQ;lD6MJ$7EpM_**R3w`I7?}RytA)dd>U&5d7@XhsC%SL=-RD|?p`w`gd zL8sLpo^2x7cl&^cZ+^r6G+sB#klIF=W0XD+I2Q$fqrJ+gUTZDpa!$4cd-fQ@{`I#E z2JZRtJ+MRmfFML=@_}ilaq!y z6O9}+mgeK=L!HWYHT6k7<}Quri^uTQ13wP$xT-`}!5mHc{&S`N$HMS_xxAke=io25 zSF%j%JcNB3zhQG>i!S=!_K}W$@+LnM|>W#PHuOa2@TMI+sZ`3b&G`MRP`o2iR zieEYfb3U8O@BHZSg1s7U!7AsQmY8~nDI|Q z_hTsZZL3{}}5I2QV)NrojoJ&NFe;NiPh{nos+N^ljq*a{E;X06&HK=v?dPv zdCKATfb>huX&AT`^(J~h^xMSZj@ZmSn2XV`u&R~29PtT;cv$+S0N|zZXS_jQb)at& z_Pi4?JRJmn^es<*;}7}ovVTN=dL^;}^6rBUdkM4e}eypMp-t8))t{&Em~sM~o$ z!h{sSkL@xCeD=G8e{1@7m31Bt0YCAq*5!_Xzuh=~S3%`6&bRT1wd6b<>#L7*E+zBe zeidIOehD=`n~LY zzcs5NLzr_SEB8|e{Uwb@clTUqk;32i#@)7lyAt@Y;@3MJ*%`u|nm=z;^aE0{|MPkq zBeuj~ziUEP@&1868azeI-*ZkM^lI1s%&&-twf%VLb-)t%XMC<%^z1@E`0eHG-zTdh z!B0o8wO3BSo(}at@t6yTy!0o3Uo|}ldHU=rt9m~j`l(gM&?e>&y>Sfkd2LO-!PyP)CkNyHtn_LDe=@lKWp@q&4|R=?%KYQO z{U`J8f3vnleyOJ}DCD{-?K{f!`YoFCCs8Cd}bXwYVQ{f;pCSUr~#YW8mMh^YfoSeKN)R67AGK znE@u(>RVmNm(&zKig4El z{|xHWB5I063! zonC(aD(3DbaNWCjau4(wz18x->14>u@H-W`uVe7fnyf5nqf^+=mZZ9rEr$v5ercCC znr6V01E;oi)O2F5b^S35x4rX(xdDk^YbMIzPYmU_KdIi0eCtr*YHqRjn48^BE_kNM z4tq0f(P7YP2fRCQ%a;~MhJ9|^(cGjni2dr+`Wa`i67t@5^1J@WY{=sn@3T*ZTXDUA z#Nq1Q8<4NkiVvKuk+8Qpo;`{4vnL=Anp2xS>YzV5?+0aX!uQ9{jzU2hsGxXLI*J^fv|2qze2JhNQ zhzG@R6e+GnKCb`z--fa4pvOHMD{fCBztP*?H8|aCe7KK)o(Ms{ zsa~g7KHBOT-hZv|2N8YD9m@CfxWC*U_;l>Rb6o{v6TI);n4{Zd5l?SeZ2jjJ0e@i7 zSy~`y3;es92CY>a)F7XIVLjWP7-E0NGm2(>jDR=k%MHC!*FirIX%!n~orJ!uEX(@y z$VQY&m)FuCYH;BF2el73yi11tqi64_cx#OOMc22vaC?5_2S&LU)ErmC9*)}1FRke! z*z>ig4h1L^;*p8Pn|;o}zI93urkPg(4-G{qKJbzw)Gr(!4-I||dqE$0zsZzP55aKM zy%yC1{;4?1Z!e|-|7qY{z?b&{$X_#3gtr`;1|FwpdfbyMMgDitH9WfN2IOz#NXF48 zg!si6t8!G}dHCl&-J9Q@F2&rc;ah()t&CvrT9zzP%9KPryD>&bnxo$v_diYzw%QK7 zQ`!}e9>pwWDzB7a{m-g^QFP*E9?{PH+Pfb18ul~^e zPbZfko?T;e$eJY|{5*IzX;yJM8S=5_^w)!zVc$w^O`LOHVL!T(%?lVDuy>=%Hv6}F z!C$MkKf3SSL%iR#SDi(E75Jz7VaG=~FW|AB4M%V1J}3B3qy?89WXxHjFU{2cauMDl9iIX%3~Na2>iOZ1X;?~}{G zuakSvR)2m)*e@Mdjg&mZbH_IQ8Tvbf{pox(8Mtd0_OtEBrh)IZ@W+OpCsH*Y;{5uL zl=&nl;_nCMM!!Y$;Q6i8POl5fkcW{!6CY&6VDCo-TbwVgzT z$d5Me60xbXB*d3TEo3hV!~Y#B^uL>a3h}Q_lIknL%gE2=oxiMpq7m{sa%)MUsih;< zuXbq^%nSj;@k43uPMMcjkzw|^gXaQ^ou>EZDP>JgQbi+7o)G>_em}3pB&+T zOtEv%bq3)6JsB#juYw`JjWRnf4-3M-YkaTY+q%H4w>K_}o3kZnA-^}BqMqb`8vM|4 zi4zGs&N-^ek@+elkpb@Ew4y%xv1ty&N8 z`;pxE)V=$F2io;rJY2VcpL$2An}ReD-)(HzG-cxoJU19O{x^<>dK9{#u37klN$|Vs zf~3F)D%QJc$KRSq$TxTDQ1=uP@&(1h!A8%f;BSnq?p-_AhWt)(WnilkKjLX^{%`1! zhB%*QSIyBrf_@thzu*>&uF=_e7BDx@Xyp`cD*la zvHydb1|I=2ELDNT`=c2{lvF&9?&(BQwD+9v%*-!T&UpZzc_V%_q{Mpi%EBOPg zZejg_bP10_*w3zWC2y#nm=iak7OVB73;4Hdt4uGSFXA&zid#sxPBFjlH}1Lll46<# zd-rj^)~m(<^}UlJ_0cEMAH;arfx+&~4Sn93Ox~Be3Gw^EmCfeT2f$ynoP=v>n#gxD zJeM-Q{X+h+Vu@s%x*_nxz+-QT%O{|pTU*4UU2cH?2hZ?l*uDUMA2Is-Dy#Y?lddyz zJydhh8~1;G$|Nk5`F)7-*d=#^+w91n(#N|Wb&|pF<5|w3^`GJIHJ*{0U##16L z!&eFKn|tHkHrE}fuP*rRbvsUzFgNeIa%4a=>hI`tozto@h!6Ltztp7JgTHIbF3gM3 zk$-J3Gui!}kgpiDBr#5R1CRGVOXl8Vj(jCu{%GWrlX!l)t?kESFHx`Cn0Qvcp2Y<3 z6Rq+n<|O><%F&JT@qscKyFXHh4<*$vliR-n{%((yKU2#>Fg8Enb{zSvT&A`7E z9iFnvS7sm|FG{~feg|Id?~b7E{)PJEao(sr z&ZpSVFGAIJ8aa4>hR~G%jui@d)k2QIRy@x{~-^EXhkMcf({MY-NhZ$WW_^ZvFGX)jT@V-B^xXCARz5hzU zv$L**IkMSC1;=~AzYVL|cdiddJx$rvO_>B2_>1FrZFTh56k>gUKHJ=(;r)6ZZMD{n z1^@K($BO>32EL%DEFQo6Cl%+p%IZ_?B=V~z#zODkiNK%k`FV!%-W>IUgMZ$VW#Uo) zGoV=e#%KWXn`W~MS`VTTj~=W!*t0T>`F)^q*V9!l%PSGDtK2O!c{Kw0wBB7Sdnv)l zS9UtQ?0(+{`DqwA^7hRE#HU9)etvkn3;4D-mM!jc3bP-C@sQEu9~%?aWI^U0)I>1iG0m#%sU^>+KMfJ}D*z|A-;k zEcbF0*C*FXo2`;0eBX1SRrMJ=_@Pn$U~~0=4fykDi2Pwg8k3$*y%`%3j_Xw$W#32L zLcV>_&%aA%0N>|K%(rA+vWEXXbdGfBS|RXc<5j`W--npr7aDi%IU4_+9e96SmAvJK z4di)ZbFN`d8S(+eEXNwlUxYB}*5qdkLO0f7J&O%rmF?iK7w^i5a^xVy2X~w+z3K@( zH29CtRlEiM`Vdv~h^-mqi7vsnHvAR#Yw)z`^eG1LSGV>(O;2mo+YHGcNK2jrzWk&t zYkDmc=R11C|3YyG>dWX2+$>u&9C4nE^^Yn|2y?P+wM5n&f;Dciy#tN|K8q~Py0-+h+#ate5AG;QNS$9(uJ?N&mKqmwwFv60UC+DO=2hS!omt0=Iy zpO*1nA{hbC*UlN=EFd47@(z%~SJ9%m&Y|ojku$6ZXHUC+JHV3*@I^ z^RiGkdGN#de40d76ylMSg12S2Iv}1j;CnTUg@XMXxpcmx!yWa6gAo;S&OY!5#_!MN z>InkhPpXUf?^cJsZ5}@RB|!@MWAJTH+@Hh{oOkOl-(YFPx286v``g{c{pkTl9|eCR zAJdnfxXM?G5U*ISzNuz2LEou$zF5{wu-9GYt6p3Z#rrMUHbpgqzh1jG^~=&f;OG9- zdx6h_A)ht3vrY%hVLv`q9q(~aMZL=8;j~w7?}67EPIZ$Mlu%#T$B37EtPlM(;qd)K zO(6E0Zd=&mAp|_!%T{pQKn?e6x2{?#y9~eo*chqY%?JC}^6S~1H~QeO9w*J~FC^M9_uXR=lVuhvR%?f{HOntPF(fpdaU<^ z*oo{h!uiHh_9Q<79-F#;VqM*P)IZX_`DmQZIPX^VbzCAJp^q42OZpkEg!;vhZxdb7 zDp=3mV-s&8VULH{x2n7zhdv+prTg~y63Bbga`#5BQ0Sx4W35kaZ$W%^aD&{}cryZj zuR5go!UFzs1;c$sy%+qUDGld<@5iCC#jMz> zVIS#gNk6%4fe%NnZJn-pfa@JyQ*56f!(NuPuKL!p4S0XzmSf<>bi@;K?aZDISR?;3 zsj8oLEE4gchN;C9_pA|58Ts*EU`n1)pQ*LN$bBF9ZR*kP!tX~3-$%)6{!HA0dg7Wd z+8ai_sJLFhvv|)K{L-(o`Q4*4SkI{1(~6AUIREy~G}Ui>|Ft*&*LUbNX(z^#kL#Iw zmqzwI61wR!`b5bTEI(%R27N-PjK_^ZThMo#V(I85ZHzt_lJqc}!yM>aLh<{}E3Xj5 zq!k8L_Sb8okB9UM`6V{f=tHN%tCDi8lrU#t!f&0B8~W&}Z8SgHb&C(zXGXcVaG@_D zwac5E<-cWj|NH#3fEB%yguZ!Hw-wiCjhM9HhBdD@>>>0qT`*-2yoo+8BE9F<4=SNg zgJRF0p{4}%X_UAZ7n{*cA>7X{K()UR&ySLuinT*u6pF9$)yLe%{?0L9LSJUV&A1@$B+7c?9H9GCRlGa=c3zN%xM&!-#uyHioS}T7a}zD=S}m2k(p_}xcwKIFfW z1#7oq4!!iEwA06M^c|57G2J4_ioUuUo*fEfH_)d?e{#`4`bfgKc6AL63(%qS-OO|JuOdu z$X-NW9a2-}uZlM42W88XpQR6D?t#QV$NSs7(RW>hSHfKRE&2w@>YSbBA1Czb9h2Q& zK8U_~@;9ZjUU@>^q)U>o8&{zZDdp`)#j&HHRR)jIW8Kk5P&ncB??-tyI6uA!fBAfz zukil8T8CTEH;42^cSG5B^cgk!C=;^QlhDU|Uc<_9%L(i^%f;{hW9UOpwa~H3J&ry% z!g+3-uUDXtyz1`arS%q&M^fPpjr*~f+e)rq5<^nK{t52PP^;F4d`ZeF{LU*tUpR5& z!I<-O^jVVn7ZCpMG1E_=iHtt=?g&6%H%i@u2k+d`H%ydvz5gSj4=Z)S;gm}t=BiQJ zT`liECCoXHF=IWW;E2DMEBx~o-)+;RDZWY-XTVP)M&Y6Ead`%aEMlrR@$^MM_Y33EsVwX2Su^F`lg((trH#Cq_D zAn*1<`JL!nDAsmst<)ZZKDKxj?^lJn?BtV8#Xp{)@0wUpmyF6E&{ADjV*kBG-(U^? zRXG}m@qF?ydu021LLcV54F7D7dR#A*jl80;9@kr!a}*syA1v~`z0Ik+z1Yu&e>-&E zqA#XoP3sypU+4=VBfgM3<^=tb@;%eG0eu3g*_)PWF2KGD^3`12x)FWLsN`KLgTei{ zUiBt!iAM<5vn5gacp>Z)`Qb$e(h%%3`4VqJsy$)usNZc%I|JYk!RxJcI*yn#Cvv+d z^0GGz-sgVsXYVth$(gQEKl;GG!WGp|+{Vy1O#iC=4=E|a+_5zEa^)iMGi9)+$F-M$ z#|j1g4VIu!pqOlmd-*t_Pny%KYRh#v51IT}C#T2g%cNj^BC=X82=cc=DsYb+`hv=z zy^`Ac4fLSB+4G??^y{c*gHm>p+A-68ZD6JGJ&f;$y`56Mls zAA%EZGHJPr2l~UZgt?{lPa?Rip`V3EcEnj^qc1Kgo4w8HB=}SKc30-Wb<7nc$KSWy zd>4JYrFT#x=5!$>v~d>puuFvmyz^6u^Bskp8@e1qE-=b@N*`(W2w^id`| zJo&aD;*I?XeQ5tRo-mi}$9<_!ckuU8`MM@TU!ecQUCy7c$%FnOe`h&iiMm~y;0oU* z2?x_7)7EtGnFpbXmUR|gTMzpv{Df~)Y8LR7Fx#8=UU~%ndBt+(%sioQZSGng*}H^3+dVOB z*ngrgB58cjA3tmGmn0+o$?P2Z*vjztwTk_MekbKf3dmP6^OQ7d`njp~a=<@S{|`U8 z_QL-opH$l#mP6?C%>Ag%9p6pSs0NQ7UI+ue7aith{ZdQtZ}U1kSG4ux@5`kw(5!*4 z$ZdP}6+OUtNy-&1e<+N2fz%njJ+G22n6$!|)2?s!V1E^opZU4fV*R3XhjJEu;h#`? zDKqUNz(W#xy#unFVb3TdmqNS}Fqe{I^TVS^0CRPyzYbQHKOp$4>GjLgvw(kPx4T`v ze#!>#6W4sPU<>-(YGxIA)Dip_%0(KBV-frbGW&V6cyY)(Sx;&I;{!NviA0MHFKi({ z)D>=)@o&I?>hDLrDc++(^=FSPlop%~oit`fbx!@ncf&Et6J#DJr zi~ZJM4b9wo3j8SLbeATv68ccO`&-}3DMDZOzT4VAJJ3f`>)&a$i3Qjn$sVmmD-!G} zd3+Q>G!Ee>e>MOBIp|dK!hfVdSk7SH{iw2gWqBU@P`LU^ zWTiarC;RlEd{Jo%{(ko2CGnfEcYK4~gtNC4 zVQ$m+PcOrk!@dju;Jg+73HnYbrQ>z-Rm>q1Jiv(hrUZE-%l{BDXor1}GF-0aycBa_ z1hvSO4n>4M{KYIuC8CHg3U6nhwvI>NQStP?g@F~roEp%1RaJ=3$5 z!LScPfj+;Jb^x!-?=*7>jz_#p=*-oJ%UOY+NKFCbJ?ZE}E&lA<*K5s~TSev;wlKd8 z{3+bDS%jO6xh3iilf4yHu+NGcF8{7>Bj6vgIqz-1F*i%-*_9~K4$K`Qe|)hr+W>PD z$c`*NHo3453NIYmAG;u)OUfRO@Mt0Q0iKtcJJ3v+6QVyUIJq5tamDm@z1&cbIhOJQ zltW2R!S6zvlh4)H66Stxx|G0LVT1K>ZPPoWgE<BNBp^-umSG~)+{XAIx*w; zG%96!=;krZxsZ@vH#WI75bL2GKM*}#i02FQUku(th_6KHbtvMy7aFPa^YiEfh~J6U z(97dB!H<+v67Q_?a310X&rYxiAikzs7w=@LOz1Pe%SR`)0CSSa)IGd<>4ZM*7T+Hj z94GiUznqG~S0lbE*xQ(9aszW6$S*1N2jdBIbT6v5KW{?(Up;75XTnu)?C(ZPYZeRi zA=cU-?r)8C!z`VLyZySYJi3AYP$B?|JTL6Gl_!9V{T4lDsG2kc zJS1_|o&IYB_*d$=jKxDc%+(}c;Jlc1ix4l#*iZBPFbbOzUt_iO5 z_h+mW1lb;zT66P9SesDX}kT6GC_=1bXGsqM5@!iRc z^WZND;d)<@SsU<|)!yoZ=6HWfYmD(OcJ!qtzoogkc){OM;&xEa-G{lM>c0k;%nK6o z8{!-x0Req8Ka3x7vMtk0iyBcV@y=lMAiS;Wi8OX^-+ zz6ZQcHvOT0s+_=omq&gXa-dJQ?D4l-?8*_(R9zXi;l?xEkCeUh{9aDPE0tDEeqUve z_>}a;eIC3kVJ{3;Z)=n}2>(cFf6FGpOz;Es3cq`L6Z&{lW%;%)F~a)@)+D9ZnG)tG zeq0;8c&;DoDOLywIu``_%bmT;RE-F8n*(qB zF&zLt5!Kzdv^=L4&ud7tG!KEkCg(1%9UjBx3IG6ODz`ckNT9KPvP|> zJWo%nw0JqnfKOCGLNBg`?VjN^ItUvu`q>n%zNo8iEm z5|PM&*Q{08KT4v9!_ykVoT;M@f0q0t*t=YpH9o6>7bLXQX|L8Jo=*0lyj?vDdqDd5 zOCxbV_>p|M;fLNQ*njHhpfI_lNWy*{^c7SA{t}ER{Gb^Dc@S=yjqJ;Ue?lr8=d@i1 z|4T!k;&d?ua}`L%7QAYF(6^*Kv0WuJ*e7wLO`2Q8p%2u^G6xV@JS? zX~L{#u8>dZ=f~VUmNV;OXiClJZ5YQ1bK|H{F{!I;@VqgO%G_Kk7EBxC3X#;7`VUqd68FE#)SCX)>PXK288^hVQko@0N8tpiRVhCX24TaR(qH0 z_Yv<^Own7KMS=dJ8f=vIjR!svdL?>deB#`6hh(te=miMoJvEmE#1KA@m?RXFD z2lZav+4B;FeDN;cos7QX!>2$cNBcO?|hEz`x`x32&C~ zCivH5&e^Gaz{{c=$}YOR1zu5r1U(547Ogxbq43bSEYD=S^ltcJ`wPz@MU+N zWrGC$N-El$H?)ZL*)E=!5GLe*S*^S-oksnf;_WMOMVeiBp1k>!?;XI0~qdo86k@ESO{La&Kmr!_@X$bb^`A&ayw{fdM!a8xE>Pz zPz`;oM*YQZCP%2Bl6=@~`3?Dcp}y|d>9(*Jg1PY*EyLBAw8|p&WON7QUsFz^V$VV3 zcSuEs_x_ULe+g%lwg$e1y%ttHv?Ik0b2O!ncHO=F81aPluXMsnS}-@0EU9FyDGj_Y za@fRb<0`@&r?j>szK+P(3O!aOeX%dZdfHDZK6pf!6KLCCSz?a4TrvZBhn++T{>R9~ zLp~Guqmn0IvIhqs|3qFeO}bzV|A>^^ulgn!^&^sL9o{7wkO!G1oHF3r4(0%6Y`+a1~+B z+rI~Kx3&jgV=wSUk&-uErfcFiv?G|`yl=ysr&5o z8+Sr{%G$VIIGly>KEFx=}h!f&LfU9Wo>RG6dIE zXMCm)g1@zgye~gp2Y*Z^<$9!|F7{7CXW;zsSzSYaz=w24q(^Yf)`QAZH?i;cza zY}W={PoRYCUPXw{RQGx6&7fYB+_P^*bus)US&nieB{kqz>HHEs>L{U}_Q83<@LRAC zq>4gw{{Sc4Z~9l>^G(ptq}uG9y{C|W63RQ?a}|9qXrzLwRN>c%e@eCVtM;7*o>9N$ z61Kw;_&{9A=+uq7gnSQUGRNmWE z!d&E?9mma{#(-8C>F&my37X)JA6gvppd}vh*j30u9>fYmD!dbrpOZ*Q@7Ep0dCOit zk#d`gdN<+wUh4e81pA~m=f2Ji`bYS1(qm^<#A`{k?zx2{z`sgjQ#N*6fQJ+`%Ad~n zV|_v{IrQxrh}R3hTIh2;P>=Jvrs^7!1pkxD$$BS1gOJ}nXmoz&DeRx1;O~Mgjhnb0 z_~D=*`iRqnwnxSraP(q--DC~dDiiFd>f{OGMM6Ew2d``Q_m2o*UHg|bv!fnLTws-B`90KgQi3&2e4`P+*6@h-Q?e)I zmvesXn2LryBvW|W8mY}RU-2IDQ<6#1hkCBT9!dE)e|f$h>y=kv zw6DC0coa2X=JQKK=zEdlzjO{9C)lfJt<5d_P_H3zpVdo6HWl*mBUqO`4|tE9@WFXL z9Qj+pwbCb=U6G#`{2P$%;YP#yd|#w(wSfK+R-1mOcMJ8~q{;igq&CAIkl9c5ELhk{4{ z>?(PD0{gGXYt4o^4>Td|gY)c0sOOh?XO?f(0KBSV_3N>CDC)DRo?YVOdoZV1*8Jj! z5*p%5qOnyi4ataCP*1$zJ~Be6zxnXP{D0Qgm6kLL2#n@}%Ds(q|b!%2wWe%ojmO@lob{;r+-m4r z$9CJ@FTB0MPlvCQDjxDM=?$08mH2UDe<(CX_O%0`MUUm02x}rp zkRU4Xs1U2OUt=obA>_^0Y?u9DpG1~;_6#Kg->RM7&YEfmeo--&^-g(@c((BS7eQhF zbr1iS-_~zyTDcAJqV@0BKhD*I{t+Ltxpd(O^4Eek{Q&}G_zP;%mebazz)xb|tbQE( zhWxbf4uRLv8wmAR)d}YsYk(KzPY0*3Ukm%Mys1dZq!RHU*_ysche^yurEJWP=gZF1xz*My z6n-5-{R=7Y21|i1_ESu4<+{ZH_}fzaJ4+2DffuBee0VOi^E6YdkFZzLweq)P2=QvEWv|C+vXBq5(*fJn_X+X!C!PmY6H$*UdU5FG_iymG#EZtN zHR*_t3I5uwT=x+Erlc*4_xDP|_m5Q1j?O8>v-Py*zO=t1%%Lvea(FC=dPs`A1k3Wx zh;ND>8p`+;~m26(?XNX)M&F`1H7!hzOXPc9{FyO zQ?$VCj)eT-+U^%GJ|SMN{M7f^(+ZrQ&@GKY$!&!AXxZ06zrKBh^?c3yLnh#rDVBIH zZSW`MwVz_NDE5bxw=ZKK7wn@(@;>+FrLf=R&D;jDOQ8>Ss5Npw;!r;(Lpr^`trGTx zOiHQP&kp~c?4Gafmw6MsA7ywbA4w+8tDQ$Vc0D{ZNJA3}6a;C*R#BJ}$S z{2ZpH`tCO3jiQf-%2r1Z>POv-)^B1XeBZ<7yFE{%6Mx^$-_cVD{Y=R@OON;neirH+ zU`uQT-jNzi8NOLX_}-D*?~&X$=od=!M*e|OJYOQxH8tZ8A;0-4*41$j>NR9@0wae$ zG5Z?QNckbVHtq)ACuRG*UC{tMCBbTzbgE7T>u-LsHdf*plNNr$vT5|68h$^{8&voh z{u*VGS1XhWw+X#Bu)H&vD*l-X4|}J&0FI znFeHN=fR$q(k5+xoGWO z*#iC~A0QtLIskp898mLtoki{cox8r|zjlp}<^ShV>uHB>s8f^Cs;OcB<7o*Ud>TJ+ zq~dU`4O$C!#>HFA8=#fmsQb5^NM5vR=w|$QDZK)%P#EsNL{;7|GU-9l>BZ3ZXl+?> zixP3#o*7~`Zu2-DtSw{Bq;oUhTvQ^ATAgsb&2Jrn)(Y)(i^tz=G0L*-P|pkN<@of! zMM~6pVKrKhPS~XE{dXR%@0yNJrhI+MEU_@IojssRW1uzJXw7j+Hwm3IM8i)HWVvlwMG+-Gj&L_;g6x@rdZXM40B8f(~@+O=?{Cm-QrtMoNKf|pb=iRvS zdh|uK@~o_kxOQ6tts@wRdw2hILo2fq|GlHXZlD!Mxj>S4Q3zUVv}aI^wtUB^n%>=G z8~5liMaa0t<8lDE2U;D`FKw4Un2**uLu@e#w!vt%Sr%GssVIO}g1IGAx_i$y5#H}h zUes?wYxUzdZYu3U>yNS1HJewZqIFug3#+u*S*FS~9wsR~+1Z2EAJZ1RnMrF1t%Qw3 z?+M!CeI^n#OcocS@IJXq7lisCe?vk}F=J_HB{{ZL-pU~bt+HW7(Yj-Dhu-~%yNsB04otO3mqwzM{Mc2SA*))*H{<%G>2wEL z>-R=UcWJ*uYsv19=i}y{p!LjH`k_y04Y8*_51_SJ#i=j81HaLlv~prjQMCZA8Vkz? z?d2l8@%t+#2P^Dwp7qhmRmJ{jZOf>%J9O(WT5Hzx8l3FW>;-?MiMe0Y!hUwIP+lGE ziTh1#8O?nC4fdmT_ksC7GFsm;o?hX;D24rdzi&$nrzZ{Td*d8-*B|<&OZ+6qqswT` zRB`VM>&CxmmDfzBMHGESE5d4j|Gix%c>li0U~)+vVU!jJxl`#3p|$eNWuEaqv_k6E z+&Uj7i`HX|ldJY;QP5hdzx_{*e->JCjh;WRy0#IcN`_RnmY$I$=(7cjFo%Pp*q^)A zPnQ3A2L4)ke1P{FY$lInzz>;f;_rI4Lte(ZT2)^a!=4Tt;gH(H zfPNahvOJX3k5+!eB}=?{CehmU)11bdK6}Dwit}7{+=!6+4@6qBZe&!pw>NUKq8~ z*RXxtPzy7~Y@G5smThe$T5*q+?4`dA#QA=9lntZ)7lHjBdWye#u=oY|p)>Mlh^GqR_WLDZT#DS)`SeQ|1mxT*w1mw%595DXeE_nVsx?nD(vqBrH##sg!3+| z+8%IN2KIjBRH*Noe9%o|$s62{f&Xh9=GJgcKp)ek>lTh2CA8+;q7|~E1^m_V{DH`z z2ljX1!|h7@QM86_bXF0{6otH&yOl@I9%q)I8h^6PO|tvOOc@w=TJ{>TeC5IVVt@YK zuZ-5>gF9~+uy2EWRBq5pOca5w7O1niB^woz;v+uHIFbaDxl0G3CRS5p#()sl48Su{J zFJU1&I$FP_ZhNe@K_0E62IU_spIn7jxD1z%&82nV*IMiNRc^zC(Y1H0*j3svI;XAa z>^(X887AHGBy?j_9$GPv9P_bXbCb}jJZPuOC5L5@C+Toq_gJ*j9c0yf_D2K!LAPev zI39-4EqSeEZ69aIV{ei9HrrX~x3-|Q_e(buMni9>$4C!ie;!zoh_K zpW2S>iUnDksrxkI_l}p#?X0NCLms2S3o*z8d2ia?u<7aeXG{&lTXK&Ob{u zcF=)$#}3vQu^dCI`|i@P!mc*x!>Pa@W2H6(JRE88Wkdk_rakJ2a&-Y(#kU@hyP@KT z)`5)LxLpM(u`vF$(K%gd68dyN<62tNQH;7^e9&*L$cDc$(kJWdp$Gln?;u%1A4eW}>wfhXGk8Y!D^MeEAuXYrCp z7tk7$E9nIKsZtrDGE3J>K^=@2W6b z!4E0(S4%r%z3m*o>rz(|@Y?gwy)(Nav7afQTQ0UjzIxo$N4DI-{(XMt%==Xotv=fl zg0{xFL7%){v2o=A!f4747U5Mc28f>xHuNuvwgSE!`O5aYN)__iKds&rU`ZI2Ey(rn z;zf*B=uJvfTeQLZO-`~#9Akq$Wmxq~2=fs3f7jEgC~x57X89`J&3Vw@BlJ0SCHQ+rl&+DNJYke+z$V$WH8{T!)sp4sSux7KL;UE2 zz*89Y)KRycdy50kcTk@{E+&gG8q{@zWZhQauNwOAKABOR2fb8i&2VQ3=a!ZHOBwg#zK2`~ey*8wIhrK``J`Xy zdTGyw*1&b=Nadfcm)5JF_IG@h%;w9fN!5;Ls#=mA?3j81#{n1LhT3cSF&lvHJ^6)dWDb~yqFXIaN8Y#7pkcT1r{m+sYuph&&XT?Hv z(290c#r)9ZCFqNG|8JW#%g`#eeMBJc!VyBNagNJBU(W&`&!-86KQ~4^vFFOhGEr}4OHt!N^KAt>`yh|~%iF5i z8IXsu^Sp{@rs3a>g!nnKt02BG^2NnrLkaw+$+($QV;;bt{U`ZP+hq_&n+mH=#k3%v zUfuLix8VWyV^Z6=r}-@K0po*CqlhN>dHBj(N-LG%e{P;Rbqggi#zQj)4wC%{qhGt9 zpH?A^f|%I9-_Vnjiv9WAIPl>cNg~9?6FB6!|kud z-SeP-de%lKX%Az+8k;As1jWG~HrkoX*ocDv24oKhtT}>seEI3F*6Dq)_p}2~tmT(M zK8AK)UK{Zj_iuSCpJl@Wyi8|N$z*pxy!?x1rv1-x_zT^!zUxLrkiV%2sII(Pg?Pe8 z=lw=|xv{^KbsfCBL#^??+QJWv_F_GCy7TL5`BJgI8&?86F5>?E?mQm6Rj}`4g>nkd zMZsS^;-8De$}pN>aPG(0pcDN0?y0ew_Roa)+kKh6->jjZn%c_y{Rr_IdeFvs$GsR8 z(emMubEpX3XLN9}`BA9~*84u}-@GaG+lYLi$B`)$@Yi4GS9dmpA4cQuo)g&#ex0yy zfo!h;u1{({wfOiK`J(==7Z>Pc*tap~6KiAgFuJ<>-_XOREqGoNH9TN_ zO+EN!vixuDQpB?c%ZkGlxsq{xg|@OG2jbzqJiR}Dm%!e4#@#NU^yB@?C0gb8tOq`- zT_kB2Zvy^dH1$Py-NJddbWLP8_CWu4w-la`tOj0YT(RhPy9)d`{*NTfWyiy$+rAH* zOn(9%?mEHNRQVb5ok0n|P2op=p<(BYX49iyoUd~bS;rFkY~;q;T?#>t;HTENwMQ=# z@*_9B_f2`>d`9>ZavjVOKc4J+wEf*YA>Wg6j`fbL6ZV&$vXRx1kWcuh|6^e#@KWVq z`k|m+!YFKGxqR(9$YTlr+e+)9XXZ<_OrE);*_;hrJQ6Y~rCW4za-Aw0I`#%oGA&4Aul0=w86+hyiMh)a(l2 z;ZZjyj&#B(3k3TrJgb=U25>pc&icu4T z^$WRy8HCY)O-et1^aF1;cXtFdCjc*X37aba^Mn4clUtkidJX)`vMr8!V&5G^>eCmOhT75SuZgqw|9def|d9#j+-;Zf{JRsQTp*5rC`$hXd|MCgz9m_Z#`pO9W)2o|hH~ENQ-z`3{^)Dcw%$O^%TG|bM9eQ37 z>Q)SX8#vNTzIYt@yitRyBJB>ss2EN*`gae+D+gvsEBiGG{%>;)uWlviW}YJrv1g(G zdfwG*s}^Cj+0f7lTaS;>w?k)Sf30F*bm+KK=Mz?2ygwsdpu0X5@#-F)b*Bt3!{6*2 zE3`WmQ;+r7PRzMD!vFag{W4%X2k=gx@+M)@9z1XGfYrbkZ}@L5*+=HP{z5-@FAa;@ zUyuCuP~UF(9m0tJ4o&^zIlT?~VI;}j${+;#YNYGgJvT1I%R86(ZFqhGcxt%Qa(_?_ z=n|C{yOpfa=W#{nllIF1{|rvu$oF20>l43Mtz52*(HV@JpLbbG<9&uCL^#t#BC$Wx z+4pvQ!D!mj!`~KsQs58t?mn9@=c7KWZdsQ1 zSz7}4YgL%6=Lv>=AG@<%^Q$w?e{|@zsa^u?X=A{Qhj;v-`e^2tN}$j7wO?UcpFAm0Op zy=Gi&i2u+H#Lahq!zd*B+2e0Rx?xWk&GBBB@QJwb=>07Z+_n%#gR+mwy@sFBLRHw@7`vR9M9zoU=Dz8p6J9+{-w8F-X~^B?NEXJ@Pm``53v z%)&Gc`9_AwTR+iG$n!_bPugsLh{slnx`rwDAzxgFlAgW%t?RxyrJS?KeAE9&oe-%u}A>KdGP|xm%TqV#aBR;{k@`TYr z!z&|R@s}B4zo^_t)<)Yf>8wzJ&HsXsKNyI)^w!}uVRW#h`rHvU=;r~-^|gC4;eU5~ z{%zHM0{lqNzxOyQn)!)=aV4kY3Fjk_-;o`Pd&=(sUkvcP`f%ea@{gk=lCS?>@NfAY zmF3Zmus=g=Ys=VgVzh9t!#S^?>tOE&d-R;$enOuQ>auT*EysH53ze^VY(_k4BwpGC&qkrF#{`@WQC0*apyUZHr+ji`$=5lWM z6Qd=1XJ}J|QP?e;;`&xW9vL=HmZ5#v@4;WGsy|(TF9y}sE(Gs~f6;qW=DNl^?8m4Y zyZG_9@DIk^zg{Bkz<#v0%*36H0v^h|=yvOx0ipimSy3Lj9r)_w_10U5+OWRSzC+7v zj$xGQv}3_TLrJ#{gc)f6Zm~w_z&Ad^^o7~UxQbhLjK0@n1B9%XnXH?s>42h zI5dfja)x#6y*GsjC7~!Oqok!sMJi>LBqJ3`N>W;s%!bHH_TKy8*ejJv=(+Fb^}D^l zzvutw&+B#0`F^kQ*`MpY-x4PK@O#E>F6}@^%=girYm-#uw}o~+KdRrLo;|*Pr}tbQ z`hTtcY&CHYV6Xbuyzv;{Pg@!nP4$+xNx`1fG9<2+x*vdiRcv!eGebU5mEtIVfC_tF zHYoi*APVt&y^5YrgB|XRb?Av6^}t_R^%BL;Pn!cj>{q{^w=_<+yt4YvG~(5vxaX^16h$nJ zQ~0m33o5|gH(!zB<2nH3^(IiWI+Uv# zW#N788}ANl1mHe*oArc+L^kxNkBxDZb{x-d&`l@E`pY3t zMV|%t?%NJ|8FH2jk!eDH*$|%kVD>KVbGFO%URg7U^Bm1<&OY*(5PwbC?6okm!v22H z7WrI-=hHR*Ts)(K{%plLUjenSMU1~lJ_}igdTO2d&dk@IIREbFe`S;|AihaDwmoyN z8{&tKdUyHrsvP*fc*k$_4MwZo-R;9zi1#zndJj0hW-=J@`JfyHU=C2K?W@|$StDRRMK4=@0rk|CB zehgKoE-I>mdbL*MxWurF1>RSk%X5(VKGqx3W!WMNs>7!Hvw0y&(3esDf16LONB+d%s%0PW#!1iRj zM>YIge?<0~+D`P#yPyAgm;M_0YllzMySO?+f9!RbnF%ZMv*OKNQkLJ5Ukxzi0{R^> zKgQj|4$Hs8e|PWserF&kALq5FM@!!W>u)vB-P|Goedzx=@mE3<_1D5ear2l5_yWoR6OFZ{vZE#Xuib!=~pi= z+j$uGd-DB?#e+g{e~&(2a+lHodsP1JgW9XB$WKSQ@1{#W#eNUA`SuAuME=r2vtp|& zM!eQ3;^Nd*gLq^pYqQau7AN*2O7jzA3g_E0TjneL68+8ki=02QA`wsa z4W7w;ydU|{;GPW2Bbvl|=;y70g!{uI*^~$39bAT0FhBP7u}LVQlYx$omV1ysasPu4Iu6e0etoECgZ&xC%q%9gd8T*3Tm zLcY4j2@>vyi073}bK^c!%i)^Cq3_ZEDO)oZb*~2d-DMxDbS@w9BEA1hI)@+fy`dK- zPDbwV2Ln=c_o<7R-vC*5oy9B-=h0pwxGER*m-6z3PaXfzZ)h*x>#$i$0nfip_jHQI zeW4-B@@41bVPD_h*VwXe1?)#dhdxV3EA+WvM_jyO4WYk#@UFY_bJRzB877md`yszw zyPl9Wc@Xc7?Cl`yeywuf4s@!jn^|f`hT(=oQeS)59xZREg z_O7Hn`jLbp;*~z5*ET!Gu%6~E%b5qV{PFuBqc3keKz&@jATH?|h4^jM^hmquEyTM+ zyhC1L_mIDTiY*tMWFUTQt$A{pEsap$P3v4~X^Q$p(YV3-{jV06#@W%~F6@7Nv0jRi z`b%ciV_Q_)tG3ple$o4e)ADIF?myOBN6zYAf&RD8?232c0u^*Kt$pV?GUBPx!0l;I z$&mkQ9sfD)1Muhl>f!PB$%Olb3I9(05`w+yW`r#4xeop6xW>m;KL+`zbvo95H5K`7 zT`;XQFBI`&)5-CqmyhxN_OZv;j95@l?n>TDyDS3z>G8~WeM>_Bp`{z3Zd(ML9f~g)b`zjvP=S(Fki;jh-0fe z;9nb0`dnyxjQd(0eQJB0qfyTtOiZVDB|)G2FK)F6bAbFcMs~)ZeS~Wi4FN58-p?<>1&9VQ$h4^P+ z)du?aQ0&Jf>%)LJbJ(NK<)U(KCh(7g@>=)jKEi)brnwlcF-AVw8=^5W(~0~2{Z#vCvD@s&WGTB+TeY~jkeS14_EhmYMrsi{*MK32woY7`s>gL4>JcF^f7b!O!k&S z^w;S&f1O|7gFNOpYCGE8Mt`o4Y~ao+1%EQ2yHfg1I_ydJz`%a}SCH4vHM5M1^U%L; zQ~vlcHQWdOO1FHin}Pdj1IEt_9sWVT7$?GGy%rFkc1>0Oz8X{udH!|l_+zC>$iJBO zDqk}CPkjQyZ9){-*Pfw$X-4bekB7y-m$QcAK34mW^XEPm;r{ceLFJikOpuQ@2aWq4 zWB9x=_OV1FAlLN=!)^?yUBUky`+gYN%j|K-`+_ruZf%GCtN)|2Ato31y%_&O+zLYp z{gu-myC16~{+O@~=QSI`e)fIyU@?`0y{~gnn<~1C{Teu$FZfj50Q05n=?{4Vs`yrG z&$Z2p=x>kQlKT=c-HY>aT0L6MK)x`%uw43`5$svBv$9oW3iQ9#OyskrmJ;^k_DA*$ zFVIiTmuIYDH-tWRCN_O^jK%%#TA5FeI4$818sb=zUPKY(@1!#m>o&v(gKTU)yw_ka zy8mW0$kAv^<6_D4(=Wvc`C1@tipK~0L+A4{tlxwC^36rUX3EQO-{U2pL4XOt|9n=Y zKAU4jd^DgLHQ3rr_`k|BRo_>Xw@c%+U0Rkus&HPNhGFw=G6eYue4S6bf%~|<%F^rn zx-781p-s>C-9^8@boDB3i|42hPAb(;E_+Y7zZNEXgEsu%_5EM}L(f-wKUQw$0q8b? zH=pj3>;ZK{(Kn4F*DT#L%O|gzxUo+PRNG=xtaq&s04k8wGW*0QpYXibs~l$4IhV%N z6>C`Ut_C!!NM(`O0~0{EQdTe5=&`{2<;Wz5p9O$&m;V&kc{+mtO>l18{pA*b;-s*R z8y$ZLs0FHJ*p`k8Kr6{#l}{f_0#rU#-$eNVH`(6Y3LFjT^KwT4{nxx!%?0(w=+CZ?&FE@w} z&_mKHD%R#(0hKAGZxAD`4X8s(I?qPZ9Rie`#E;>LLx5JGoT;Z4tpn6Jx$@mgvL~n{ zsFT-kOP>Z5m58FGOrRoxdOALy!eI$$5{Z=EixVGum&T&^hcwkK2+(aoEhak*2-K@n zshymvF?b(sM)imhs7&~o&gqWygPK(EuUnylApr{FMqG@JGoZxeIM++NJjx`j@1w!` zWq<}3n{BKJ`vNK{N%z)2V}}4uMQRH% z{?EzP4Ac?=2Amte_5jLInRLlJLjX{r{3|>+h(rMjiJB$Lvh53?Txnra3QtCGzS@=h zbY!AI6+ts|P+R4Q`3W+@J{l9K&nT4v9SJkl*w3Uwo8$ljbox(${INPg?AI^<@%Ik_ zl|yRjv)Q)_=PO0gjk99`6c|~?*P#3Zs0GQZiw>K;#QqC?w+J6-1oWQJD}6~e0fIgI zmClpP0q885`BBX?X*ds3Pi&n3Gwh$l-K*-37a@=2#;8}ERLqx8q}jJpA5d-zL%i)O zRe*w`bZkwZ5+^{d(n~M*s<8$5uEH&6)AyeMduGR+Fe=F|SM|xpjNnPcAT_%7Ymft(9&P&i&${q2^ zXf-7~pUg2Nt&8_7D}5_Ho(ifq5<{pXKo!tiq#uTDl8t~S5-C&9S!G0kj^x?$b|otT zigQ7)Z|KY<_FL@SNP;!iCoG#(zQKk-^;C0pkg|&)PaRjux2FN6Cy*Pqxigdi{r0u? zjaCipt2oIe*DD{?dqVd9Z%Jk}tami!p$rG?gF-@`uec+DT7>E5bH8cWe;Nm;?OSaE z^weE}Q^uR%pB2T2Vf%WL!z99P$`a-=XLRkP#O1^OWlkbL)0i7uN zhWozJ7C=4o{q)nzFoC}&s~r=5um$HSmQ`@d@d+HUl)E2$OTmL7}C45&5#b8V@U42~bw5)Y`wVm+qnGD}O)BL;eb?EGeU{ z1*UH?A7RfL-<~$etE$tsi5vq!FOgY$b90DLvv;mK{;&bGI@zv#$}ku9RAB85{*50& zMK8VC^7|Ms~`DuYm62zo&1>d*v(Mf5Ic^ zRw$sB#MTvun!Y1I&y%|N?4JQ@l+UYrJMRNfy-|(DYZ-E&o)S63_L1G$AJ4ltqWbnW z>^*fcODrfG)CA;viCh)lh+j0MkJuMp0Tdgl-QRe!5>U7_B^lp63xIYbcbS=4qYjua z{im*Blt4{Rjf(7GUrVHts{B>=AOiBR+Om*68u6TRwpFdmjlK9iSKhKPWoc-R>L1qGqdmZcM+&x+Ff3pJppP3DibFgcOIb5ME@NES_$P9#LC)X0X^aKF$;Pi)s%z#8KUcjX#YLd* znCOa{@J2i>Dx&Jl!2)PVQrmtZd0i{$>mCmQyAQ}WBvL3d@4X$D#+q^sZbn_Ok7CZM z&zqAmAJRf@l-E6cpL*_gNaqRIFA>pS>-pya1uWiUGdYPmXFfS$=qU#u0lNM5XR-1@ z*iWJ2W#MDBIDhg(BUiC$%wKVH{zvUB_$%_&k3D6wfNGTHF|y6)BT%2XHfEoV!FdR- z6DgVT0(2nXiigUlvH*=In#UjZ@%#bo_u95`18YD_)5Z+Kc900?)67<%-v#?jQLYJ$ z^{>Tv+aAv~o`n5t)#e(ThkgnTuKMouw-DbS4lI>M-#B0FQNe8ePQ9fuzrkv%K_#F; zDft5aXEsmbJZkJt3OXU)7IKpjc*sV`4_f+%O|}6#nfzCS(>ntC&-eOk)3yabeG9Lz z{O7YBQ0_u8NAGM3LcU0Sc}-5Q66ekLym;#Q4(JzU>gF@r7Q{D{HO7o7dqC4kjETxr z9s)GD=*Ht_^neJ$e0!}g-dn_cm$|m81_AnzZ`+ti<1OqLb@@@*l#cGDv7C3vX;TG2 z2~vW7jQ;xwC}DBx3aAqII8?{Wc>% zB768;Tz^dg`*r(+$>k=*qm-EKCr(b`{Ajd4N;cPEZ^h*O?(4}A;tPHO&XNZNeZ8X+ z;hThfg)eE{j}xy6Q1_>NnQ1bdkUxpmDf@pI^S9IwYPUijNPYE6sRyCIB6Fq(zcv7h zl{Dc!xS<@-i85VVyWC0%RLm@S5`d1BZRE1w zAq=QyA-fk$KWjn#PA-1_^KmfZahZizR~ccDPm1$g#hnlWbZW<4(P0vxg@tXuKO6oC z=wkA?R4C^kP;aR{OkC8dPQd4G(z8YJfG(v@n)%Vf3I1rd!7h#;(5>WF2fMZo^Bp^LzkCDiFTY%frpzqzb5iTu!?FKRFB5K1>2v&qcv`9WnEjUB z?l=!p*S5HMt6Ay8q8oy^#{0rpoQ=|b);I`U|<4 z|0m>G%|a+MNDB6z|C{s8h)P1d(i!xPa}fENXl~!@CJE@j;3}6x7Gj8}X-AV^b8JIB zjql&e+5O{?N1>MP!=D6@AIn-zMw{6Ypr7rMa!`5`mi&MC@9Jyh4+ zq14G7^$4=~Cq;4u>RrO*k76YB#q&k&s^+UsAwLym=6nCb6wuH@1@Ct4(1!mI-qE~W z^fc^HxfU)Uzg(Z3`6C9uYT-{sMmRFM`Uuom-(6!Bx8nRrT~dEH$6!8Gt^L<8h!CLh4UZmFx)1r5 z43w>7=|a9GD#R&f_!jwu=(i`VPfS6LtNd%9@K-`SOZM|<{}W(^@uK|fjpBTqPfNke z6IQ6NDpefHxw@A?wQ9fmoaRwLUkm&0xSz~{^AKBqDsQ_v&Xbnp5d2-+AN#Sw>3+*E z)Dz`1?mFtY!Tyo{b$z)R#)CYkb}eh_L^Ee zkNz`qH?INaJ8|IoksE}1oY1RoS`6w_e0!gEI`$E$sV{_n^l&3kUs>%-_wq+PBhDZz zM-%Ha>B@Wlg`j^zW;^p`fge;HVrKvR7Y-7rVCJH)l+UByC~aNd!ln^Mm~ZV%PZFr@ z)ObTohqVRqeD>#u->0D7PwIc`#<2&~b>yQ;Ja;Vt%}*LlEl-k($MY8_1Ekw<9;DW6 zgD+b#AAT9{mF%lvkNKaIZ#z{Gpu1O<-7zFkV~V8e1DkAOSdUuf5rpl zx2}P|mSEz2HPVH6o3``ZC6SY$W)=x@aW~0Y>a*rkT|cG#ScUqW_;LEGTng-?e3ItB zcMSLs{zxMiH9JsSDSegWi#ZAVNG|Ibk9rILBDtCEfNK-_E3^_8vdw<@E53p0y)%nA ze@cZ-BX=3%d1{v+8}%pZQRGR3zud(DuNw?^a7=In&6|IspRoeMSEz zHbT5W8vW%FP>Fho;$l;w#wOG&1l~vN*{NHN{irPezHtX3zR*y3$hs2pLF)T3cVZsr zFYtR?N#ITVUSz+KBvUc!S1MU+g(mZm4+`uE`rP#o{ZYPEj9>Cs;D1Fn9G>)-fc+Rml@GFU{-jpd>*o{U z->DG`ZH|qgVyC^leA|f){z&xO^PhV+U_E5#KdH=T*g8$ynxVf+S!wuH#sKja->$2hp6!7Bq4I6xQ`CTc7ED*k%IbywQwI4< z3iS!{#7dyn2$o(FVf`xGFfNXbHT=$-1Fyg-ZZ^kIVXSQ zVZQpilGw`#_0fpGm026{dug7ZZpUvBsEumYxU2A^oRNS1wD~Ha4I)l3NRMLK4)E6kzyG3%Hkk6C4MJu!Kqn<^J z&}+Tmfq0shC_K!XkNiON%-*kk#f17(dB+VaHPnO165WY9YoV_qOfjy(UZ^ifFjlH5 zsiR(_(W*f+9VSpY@|xP@8lnH9q?y6R7T^wf{IlBF+YtU)NWUdPBbjhtWtZHBr?#Np z6#tv+q~M46mNXT=u;v8f393rQmfPy+|4|Ebcde$vo(Si#JNI~kDu|NSM&aco^b2Dx z*A5mUUm~??Z{S)Ddq^2+WIPMO{TQKl&QI@T670P@c~7Yx;!|NW$zyNoaNmM*WDN!Id+MQBK|f{GPbkSx zgHt+|?rrBw<_Q{qpND=)ta5qka}@nze!m)X_gF&y%f;an{}TGbm+D*S)q;9BiP7zE z!ijv5)N#1KKpgTQeEIcTawzIW;>tI?b+kb}Byr_0&k=7y%y(;a2Aey%jMtDP;- z55DkZiKCVTs@dro3$|eN>jZDw$3<16Unp*M`PB6)LOe2dJ*0F6KOdH09j@2wAM7{ZzoW!dJFbP#X9k9!72DVT8NUEv=-rh+dh7aPv9}h z7vMdY*{X>7h}+7jp7ufhCvxR{|360pwOK-E(eXy~H^ehbdd%E$pG*4fUH>B|5Wk3V z*q`J3g!@@S_PP4MpXcLwzrM%ERH42=YMGsz)j5FkO`!@!?9s#fJmP#xe!|~Ne$ttk zy8(M7W=l7m83Yw0`B;+5m>&8Gw3tlSY&$}KI5eEcdmHi-QI@H7o$`<`T6q^o$3Dbs z0(`68b_?VFhl2d46+X?d?-cKbsPk8$Pn5Sj+1FSI)N_BQrcYE7{8gKo>-J-azxbU^ z4Q(1w4-pB!rK_8d_+F%vdnIp`6`nU!;&<7S6YJlsb&fiOcumyCU0MtG?DGZZGz2Z! zaDJp|L7(^tUrUL{QW^>IAGNdY@l%{1X|`5cy&Un3nCIcg1v7{bC3i`lz4RUS zgkrh(?-&#E4~1d9*cNZtYjXV4?^VZ8ZxffT?pl5f@+AH{c=1yR;yZ2ENz1{CNP;}P zV-?beedlN0sd6k8^<#?TO2u@RT8!!DL62TwKS+OUhr%^rZv?$B@7WZB^@xa^y>7-0 z`4P!WV)$mlK1z?TW7${&s#}>a*YD^@BYzO#VN|~ofc}uWQ$>8;KvgDDv?=LqNZ!&| z$$M@kztbf4=bWQJ6EEy5p8<2ODfY_ zu7=#^B>X<<%q1m)KHZLaW0Xm_ucSAgpgah9<4b&b%+dw*eaV|=Z?jFKe=YXUtV<{h z@+P?6S8z=k>VF~whbSLj7-0QttV3)X2~_j4Q|s)=g!@y{9MWdD(LWHXSvK=+IU%3q zQ+jk(3-KG-Msv&Ni>+ACWFD)kG~x4tUBLmq=-vW`E#g;wG|pd7pU_=q^{uka4NNV8Z% zJhs72zveXJJz-Z#&+FZUe#TZI>#)h*rLjPPX8-mO!u_?mbLI6#kO%cmT2~)Ff_){? zqnrx5i1i*(S>F5T7YqAnuBypHeU)-qht78z@uaY_%UkscLO)_C_2!8})Eh;_6$@6D zpdPB)dM7&EiE#g*aDGc;C-#S2*%$Gd1bq>|e@;Mm8vO@}Cy%%Hry_ro@Ot?7#tiOz zkliK?qMQiSrOWsK3nziPPkA@+6k`;27xQ;CsIE1^l)bINL4 z)@0zm=kwjn3Xu8(doB{$QvQMm_C_T9{nL5i-sTHFD?8z)i1?N)FLX)pzvcA*>1SGr z$9^8{pOAbV&B9d>@3WxCO&by9>n8I{rSGusROU7BcC~abjio<4x-G{I`$b(>d)_9M zK>gcxRsH*yc)ah3*lDY4=&w^xN0jZiL_dMFaQI@%C#9t^%_vZEARqQbAo$M1du!ld z`PXM0yQA()l*j00frR_ABbO52XJ9`lE|UAj&m$iccZ{D8xQ6?tf|*ic@>cLqG=*cb zVW&{3V>7xj3#uM-+c*CGFWTb{7rc834uyAgV{Y(MlxWawzrhexp2TLTXPK z-KhkBB`I$jS}%oulcF?lQRJzoMPE9>nA2mFZ0p}_h*!H4?fO8eTWjW@{RmA=#%J| z5NEarSRYl{we`?%+~1}=JZ9dKjr-3O$J=^5A*fH%Rz5JwkA!?m*M9fRA4hyEa=6s? zcr@zeGM@6i#)SI{?*1U$2aWCJ81<-K8Y>8&V)}R*_lHQWCCo<# zU~eeGJF0)5Ce#C8tf?0`g!l13uO0cGPmE87Dh+dCA1G-jJ5Jt1e@5o!H2Fo_8?1K+ z|K?grLO=1!o;tRJ&}V+t?-9C2gnB>A-$w!)(H|iVyD>j7!hQ;NkA1W|L#TiF$y+oP zBL1Zcxv;L2Amkr^hgX_J68`_xbI~xPo)CWu-hJj$MfiV0phSIQ8lk^;M1bSfg+)C7 z!N%Q1n^BLV#ArP=`hz9_qDb6tcxo}zC%0csptL_^29%u?0Gp6`=jYw z_a6gDxPRVFCM;PbX+(~ z2lXN02YNdPb08lyE{;XD5U2zif zDYZPxC*BbE0VxYoYu1&aej{K2h(LG0xqV^f`)Pta_g=WAM)2=lc_|sp$oEMTb+tO1 za9=`Hn)lZ(dDP1UTr{F4((!)_q3LOsBjiZ@exQf9{4C-BkQ?{@`#?qhM5fssJ=KEv zgvvZrso+h}cdY|P2{+)s#hf07UC!8v=g-~Utu~GNjPxflnVN3g_ayJU_a$CV56@4N zqQ!bz;5>p&9Gf-~`dc)S<(k!yH*qEMjTsyGWB%1&^b|8tFQ$D|-x}wSc%00cxqa_2 z`sHdmY358xs8{px{dqN>fcQ}0&AJQ?Tl6yoUIflGTf%e2u7lMwo268a9CV_w6aQNr#ITiihXjGTPqjjj^xk8osx(Hbh^W2smr zEkD3t3yF-bdqjhM?{_@`0HP*{9AJzUH#Rnhb`O*^WbUCwV*x#); z7h>u$ABv97%C>9hH!7=Z*F=gF?pL)p+%n)G)E5J?uXQ~q$nReNy_&z#FB0K>bb2K> z;!Dx>ipP}*^-8T>4`T!}3Heoou4}jw;syB=2l%ayRQ~@-wVtDUy1j20&{IP~zxK7S zB4eDM>OM&V)Id$PcjM|ifD)juJAAe}A5bOD#rlbRoB{1azq)F)_!Xd^=+25ywOs)P z(ZRcq`ziryX<&rI`*`6}$f{qNb*}j@7oZU6CtLrx9|F|t7<+%z8SUw%ahojra03sZ zUB*-HpA?_)UmB18F;OhH#{3vU$75c;!g?#_lO5c(043EMTI4fS1gN8qd7H8EdO&N| zCFW9P%0T^4caZYzJqi2Sxoe1v%QJzJCh1W@N4={gs0MG~M&<#YBb zngg1Nk*@3Yql!R<9Dn=*w8t2)zS)x) zP?HQ;Gt3*WfI6dtO{Q^e1)vm%4Mkt*2Y^bf@5T!0xpF+ed+zSaGy-+#n4j>U>nxz6 zA3Mu^>=zx-BP}nt(N`{CYLV*Gzx@>nS^;R_GVO2j6>Na27$~~wa=HyrUv2R>3!eG{ z8mwVR<>$Ti1SoydN*Ov~KgWdx0w0JFpmd_HGmWJZpof;dT)~PGhJL@o^h;A^Km)et zI|*Eg1a;6DYjRrBJFKtM{g~U!AwXlcrOo}Lb^=PI`;Ed}O$?y1zDmof+wlQbuR9D@Fk&$p{HtZ6pt(+LMAL71U9J+G z2B_8csU9)Y`+)API9Px2zBu-e5%)7Za0cf?|C0KMlK|Z^tUGk@ObDRjdLHdwtha!D zY!&Nb^?3rQt}gQ(N*Na-@OkXb$yLe*Sbvf7aJ4L;wg$Pj^>aUp#OIuruDksKML2YP zVl{U)pn>U|*^|Q70xGJ=;nrnl0#ps%!|&<$6M))kJ~$%YZ-(EG`-^PO49EWUI5xjs z#|dbpjNB{vvIg)64ZE{<^eX}CsYh<)%VVvj7Oj5UUO9yeZvgdF!cbi)mI&zMAzLQR zTfu;~nG_M)D>(>#?i)9;USkNT)_#S*TNlegCDi;#v3J!lpdANIeC=M&zQy-1uVsTB zhU;5bqq~XtzU{}8+1a3m>NF0`Z^$E13$1$|o6ug1_pj*i+~p1E;oe9I@jU!xRKIht z|AtTZII;g3dWJzZkcYA3=1-kVpucU=>=K830fjeE?dD;31JK$X;u}ZVj^q99il58F z@RvFLIK*W3J*jIqt=|ZHIIQQgLvOkoS&tjeicAz+YB5p63gszvw;= zKj5|p)E@7$(~9QBVUNa*ZfBLQ^T2+{d)XHc0!nSTn61Zn7v!nLy<_H$44`Q1?`Ztn z#tQ#j;PFI;D-KYdmCpW5cdywA-ABvgAzy3C$CMli{wKJgo~a#BV-1@{ySq67 zm0f51a_=Am^J_RX7*S)5`Mq1eb#Im~sC2rxHO?-sgnU=Bi~Cm2-4VOl`h!4)?s+dn=^o;4?)#1cxx5+YbF9T z`QW%#&^4@QwCveup67r9?L6bVk#-6GvbbC_`iKVNgYw#Z1(Ojgtgq?iBgS#W&y5Lw zNp>@UN~{(<_N+h}@lBnkd_m^Qr4ot$a3cK&BMAH5>-fcpa{<&H!-2XFdei_tmuWj0 zbukk5Gw(QwfA#vjr7_)7=Ixc+1Zd&{fk3tfK!^38+ciwhR>1p2pKo1!1pOFIHHvs; z4XC#suOH-qL)eeuee+bg1;m?U?V<{qW{%K@2OLZqs{w^LF4Pe?yA9CBjY(Y}>FeMh z2SSe}Tzds5@#e*UJ9!o0|Lc@=$42vUUfpBG%iF22_jR$G&Tr;I{MnczRH5vKc&Xy1 z{)=4<=-2ShEc)4F1ZaDm7vG-E0qVLmtmXPod&DPw8H(xQI|<)EMHbw)3i{W|_q$N` z4C3cbfw-agPf~baK&>|83+#XI8>i)EG|2yGjNZkRcu;H9b{p?jw+FOoukdWfx=>J8 zG&bENCj}#)DZA3(^C=n7;`I49iNAf2zxE&R$unglP~~nr8fWJ~!~W0KemeLI`RmY4 zr5%}rkoP{3pVTkS7&ojsxDdbw`5rsEChBS%pkuqQ_LdAW!@hNG^^g}GB0!(NE()Rb z;XJyRIrj@*MSM5PJ+LLD6Y*r{yFUpn35xiBieI1^u4w8HE>x&?Fd?34VA9;Q?jwQv zK|cdD4?fi{f0i%TXng{1Yi$FHim};st~ALjx%3o zos3)>Ki#j;dqEOZ1a&??^#Tc0NTZKqetze&g8m9`<=1))`R&oo3=>pA{+O%g-E@Zl zZSCdQu`#a^`Am!4d`pW2^5u53du_2-aDJnSOc{-@;D34)uF=!@0qt0F*HBK#9`>W3 zZ{43@i=`_m`VGgTkG)~T{`HR3UH_Jic&dmiq~g&r0@csTF0({UjJqdNv#C+opH9!k zt)yj$*Sk+jB$8htpKcL1*%bBw)CS{KKbI@)$;bPz>nW?MA%7lTp&!4R9sa!8WS~v- zzuWtN#vNAYHaoS!9`!jsYPir1DAiuY^E+2=Kzu#mwAb=FFU59!JdFI7vG^kOV>a|_+^VT)%`EcUi9KKcDqKhW%{by!H|z&!-+@G(^ZMZg zYQ7s=&infi=Eqt}k^Kbf$AQ)LJ@Fs0KZBn*>}3-Y@Odlycz*=sanRWPqq8{dUyr$h zZt6KeW7cJ#^ZFG4``Vw*{D6la^{a*~wVgR}dQ0QBt2>5iJK;|T*@tva$D$t4?iE`* z$V-4?f9N72?2q$F)Gbpx$Or0-Ax?FZC;0^Gp?uTUGe5Atu8j3}{TO&&^SLk1mzNW$ zK%-vfQMsTW`4Sat*7E?mm>xGjG;s&|J|1^|GHnj^vySrVO_Cu5>T0!w;G`1->f_J7 ziY3jE-;N-ffmb#BeP5As+sqrp*TcumsQf|hSbw{0&uv1y^TlCZ; zz8`Pc-bxHZ{?PYKqwUr@=nFk&4O{#L+JzaMk z(9H}%(?-f47LtWoRuk2OLwrZD4=2oJA|GdhynC+pUwYCY<&!%qV~t)GOv(v_b6%?m*MO@H#xcaJux+}ds9Bv^GPasGp@ zF6&o<%BixnDPy@4;>$j7M-6rlJioi=#NSp|#1mbg*pIkv^}zR6MY{Yl1r_MX){MO! z7vW!<150XnYCwfHu*=%sxt~x!9%)wXt%d*V%hTMS&<7}9#(Eo}2?AB$m~D7K-(%$W zb#y5vrhky<#`fN9u0@i7|poc@TvjgNStA8k801lYq+FKsNm@pi8l`UCBE z73jj8@W;vG`YUK>VSgAg-~T+)0ChoSrogFaN5miF72@jY3WR#gvHil@nmPDf{es*v zOXTlumG(DYM8N;_S$}8i+mH44dJOJwu7W@Ln!0KE&|cWO-oXC{G)zPZ2Ty?okR ztiS8ua1{;f=^e>^F+!;4^?Hj-@(`#%OA`xw&U-;V8SCvg?E8)LrzbjsmjmIC0 zS7}1t`sOUe++yL6`s$(=-wuF!t);`H;`0Q7TGEZ<<%(p~U%NU41mC|vzCBiRrDzKv znDuj}TK5`U|A+OK8h=$RLqDqbuf_fYKLC~9X+5Gad=&P6=$rdq&J^?`noaCZ&qSl& zLw7m%)F^_Gzdfohf1-tY(m=`1$6Sff=g9|qhqf6aA1SqaOsBs9wfxB7vRjL>=$8!E z3Wr=dBZ&8D_pvt1#xIRal%H{!zel_^WVtaVTOaXN+Fy@tIcoTQ?Vgw2mjLOg-<)d` zvYr)C_;sFx@ucortY=fajMO>UuRPO9szgcV_yu^cn&+j{*O$3-=Mo{38F^7|ANB(oKEzk z$~cuSRYrn}wpWddv*94>qa6}29u{hW%46Ux>q@_6$S=nRstUxGqyA3s>y_Z0#k0Rr^>(Ea>dosg%-CdI^n zI_zJcRNWW;IV-$hZ2qmo_ejV;?~9E#k3fCh`Dw?|q-*dOJskhSK70UGVB-lpzKAKD zcgJlJV=-J=)n~k6*lq|$KkB6`^%?7V)E6gK2;^EbL;ji$3}8JJNd%{-uA*)qfxFV!vyp50!0RHI3)nwMjP}^?-hSy`B{e2r>O8t1bBxZwOS{ zY&XlCQei)9|7AR9`GWkmzUzZkdOU%uYAuuX+j01d9<2ktO5z-t|L^y9m+MhKDEe6B zc6bZyHJyD~*5S?2kG?(0Q|pG2A2fXY_KV*cR2_o{*EgB@Kz{npbAO_a!QOO*-`AHM zM?Ok7eP_+`k+77TN2&oT@3x{`&s&@={)N7b-i21e)GT{G^Zq; zt#XGxPnA2rQnFN{R}qxGR;a&rLWzu(Y*WHAT!sBe!$#hnTCGrND~FMK6X zujr@bIE~?8FMW9wQZBmU{jrvxb#rOu*6Uaa7 zy~+#Q)DWLFo{bxs{0V#4dq#;vMvq_*Z(Cpcyb<~Rc=V24t(Ax$$L>1SJ$6#U@Ankb zKCq&`(<^iaEL5nNuORWQ1d7gHNM~7RI6N)8~k2i{^Twa*g!~7h? zIc1)qU*8_n|F_5m`a6=uOqz})#HURwb5pW#Kc-?w*0b&c=o=&A=aoIFZ$A_X zrNLf(`L|Z?(=PNc>MfH8{Tkjte+0I;Jo*IcmBAOKlm$BC(@v+H2`4~W=?|Y>&X)3AT#Ve%VfRgr(T zytK0s)dcm=0GIg_UDsMXPolnk#dGXW-Hn0vj2if-f#q`|H-DoaOpj6Ud)B{n#ah3Z z`9S~YlEtO*^LH)l{UdrIuiA$St|>zQD+{NZ^!(A!>72}q$T*7puV;|g*~1(0>G(#b z4AXch!EO<|?Y8-Z2tAJjebW`5~k2_?T#71oZF1k+s)ZP=BfENE%7UO8bMVw#&R{T?F#xC9p;`pchexh!`}se>+vrAMOwf2Qs>rt&ZvjdF5C(Q3N zSL`9hcEc-1r=-dHz{wMFNn{(t8FeE zIE8*}FXvvrD`C*b!8m(|YoV~eog{wK1Qx^_1DrRn^he=*8TJ;5>A#eg#;?fs9P4c1 zFI!JUza6bayWdY(kbl%$r}`;)5b6~#i#L5f{}%Er zKXTy0N5l(^j)~)q6PR!J@@_HZIgAI7^YG23PeVRCCw{oZ!#{QDrfXYL;Sc)lm|HvD zstEIY`PGgM`Aq#M-lX)SsJGQ!_%XKb7NP&OSnjxe4Dlsh@W`S4hjCs-22!2Ff$+y) zCnD0H3d7!vr{0zOIf-~GhqveCwi?{m8F|)b(sB#JU>?F6Bz!?PsHQa65)|;mAKX+)y3wYacKcfACmFvmB$k#_^L?hO$ zMSr;e;V-EjYmq;8jHS(9{|Eb3=ibLsCV=>&gDj~tZiRfT{;R_dcPiw6BGSAd{~_uV z<1V^;@8r1Se71|OGHXP?ZFK9b`5PvJ{SVxK{!TCl20+z50^CZNS1r zsHbRTMej_;`E*N?d{?v~zG%51mf4($`O^7RVw#sjUK%EU&F;R6_`T#H-Tsa-sAS7b zl_f?=sK*ZL^Ym;kB~XpVPO7hCz@O8lzbEi1A%E`S<1!k%g8d!}=!!gPfc>I#aY{t| zgMM~+IUf@*MgMp3eXfmMIr`@e_YU(Sb<`UNVhW0`wGrx#ykDa=+tJ?`UZZc~E{gbO zY}jyab<@&ci1ds1v%Oo9L#WricFi*#gno5x3yT}DKJn|)r(x)KaKfsZr48d^$ou7Zm^6$3;wacwnky2Xf?(r-B)gDdPHXqD8hdBZn}BkK@H-uBDaQs#$4pr zgFF^nPTImg4Bv8oL!QHZCwlbjlz|SMcTZ+@*p)4?zk@AjQjRlF4^GnH5v$UN{jAJc zZn-%W`P#e5%{}GvxPQ{7b&`5c(--oh-*F{y59aqZipB5IMl0-J&M%&XWvC|%TSf~! z1|)!fi`6DK!N4Me)F14C-mbem((v*SDKzf!h=H!a9Z5rz}?? zo|sx4nz5!4_Pgbm@>Q8x)brYAR?Y9yMLgMdS^x4N9rdfiHH#tM5;#9bW!XW_ceo!h zs`iro%U*mw^gPte=q&2hgAd<4*}V(>=7uY$H?5P*!}}ze*mA>R7frdHCJhW%^aRCo7_ zC*qqjqgK8*Gw6S{CW-eIJVw4)cg9T6m5lguN+rFa>^=0oZ|g}liz?h_>?YU$V*ZBu zUk^vT^Tt)s*Omh;-|E&bLjE22o4AAt{in+n)bAR|*P337Hr>6A`e1YCS(ecl=wGv! z#n@gsyubP0t8{V+em|aXAoIHi@mlXA|I%N-p>O@Nj^sM)NxjJFF~y7x6eFF z-}W5-wL-(*sQGpTUU$U-C9?)a6i81qOQ8~ z7WmKV?W!gpqClNGpzf2j%b0U%TuV3E`I!^>(qQbiFulF7cO#2!p||Q`ANo#+N?Hq{ zp7|i{pXHb$^0T7AEeR)2V}JSt!%W7Da9+)NA2ag__3M@=4YjQExL?y$!oA9g1NnRF z9}&m8Dd=z0<1coP#Be^Hn{t2u5kfva$o_uK{)+^EwpL-QmofbDh^OLiHpjR4{g$$X z_cFL2+aGt>(CG^5c??!X!{iFY*S+`HUYuPH{pfF;9um8WdfL$1alg^+(EqLv)W26< zG2ao9_#Il+s0VaBezNA?57?{BW8A5Q6zIo@d}4ck2kKRy<0Or$xRH?MG8Sa<+Pu)e}#OsRp`aB2*RFL(iU|bA3(pdJjL@R?nB>O4)$kW%SXSmb?Ug~ z)EmSn!?U|*i%g-v=|_1(Cmtc67(UqSGHix=21DeEoEj(`^?P?!U1O7g|Lifn^s7u9 z_Ppn8db*|;>`kwpTBWrm;<4VJ(RwW#aNoO0tm@gu@2F?d#b?vk{6oCop9dT z=`@io6JCfP>phO0xAek!w%t7CJ9rBIwr}J9n{5{mzn1S0n2nHu{ixV58~QaB@ksrw zl#|$JLjQ>7{G6eIe6BzLearMw*!Pm-)4JpL@}a*jY!%lOkncB2xbNOW)GLO$mTV?FuIiPp!1QQsW= zl=oAk9{zOlce3MZ7Sz*6#e?ImZV|pOc7VaL3iZ#%$-qa}b;u7JFRlLKmVo=4ZGovf z^>uI`r_b8{2<}}=5UCgj&eWhk=;WcsXy#cznG}>3jd{u`=U+C6SMJT z*mF9~{;@GP2lt8}gFIOZUJGJzeWc|#04lP3OP@ifGi8H^hjQ0;5 zDA^iyAM!rhK7M$881loi*)y$b|B!#>>CKNDoQA*pVrmxYa}@bAgMX{RN(c1&yF6-s zc1*xO_un)eYtqSsJbPtET4Y;rpA&BoXL5JJtpg-l>nu^J1p}%9It5nVnA>Z$`dh)sZ8SHtTxZ|m1qR1Z$eyq4ZZIAo@ zbjPHO$Hus?mlYNA`OX#88|ocD(uIYVw=-Ua{pf!r zJJ#q6|6PARCFdYJ=Eu0r?4)*rw(S2)wJxjon{-PVRE8pcrG+ns0EH)dZThCSIG|mG z64z;FSOQ9evii+|6Y+r3qPQhr^z8@qG3CtDBUg$66+_u2SpMrRfl7#tEic3kP!59i z607$AH|_jCW7_2HjdTkFl#0E&wEQzb;mCzl>Wv)b#PhryhwX0yDoKU^fVfdHpd92j z-uC0>0+f@GMWyuTLx6q~))l-SdIZoO?2mr3WRL=>KW$Xz{V?_qHx-~zbJSe<2SrNwpRU-E?l!M!Z0NoK?F?QrW6XAWa z%EL75m)O(Bo+3LyhfxzU-kvJJ^T_;V>RRG}B2us@9zFdSP&o?x92MVA0NRVf6x^~p z3efPB!PDb;TR?3m;%~*Z-Ad|&EmyzCtGN9;v&UttiS>1aJ~_nMvsbfUz9!?C-A1ZsFo_?fCALNUon#N-&hxtmdZtsfW zAl9A-C^L%xU)Rqb&`)7$_k#0(VBh%HS_PT3V|}z&H~ob406i-a5WkA;4(22Fg7ibZ z2vDd}*#lw8^8_j&)|Qyh8+`G;`?*D(G6d*2W>%L-8v@n9R)<7CPEae7rv7&9^oG1p z&lLCxZi4?2lU^D3q$vUW_u|^}OVI?Xttowy3&EfBU7YlY-$a1U`F^5&;4%Ci+4fT( z(c|PO`cq>eR zM*n&G)JI+TZ>dC~iU&uVZ#bJxsKgz8Jp1R#jb*6lUClv)!LxAQcv(2bz9Vbu^ zCm*CfOM-n7Hsmwk`4H4&A{7TW1v@}q#5(SjOV(h&q->;*9Qo~z=Wl)4^_~Rzm6l*l z`rQfYNNP&qttn>6%jU^YQui-FJ(9Tto-i4~pU58xk{o+OpvIhKvhzvBd?gC3?KmVb zU-6>N+cq-8eu}MJd!#B9RFM3>hj~t%hW(TbnP~OZhP|i#5UFs}g#RaB+Vz?F4EziA zT*=EV=ce(waAQa7O+b_Lb#a%<9tZTTKw133s%-@M$_r)V5<&bR-zX^gQ4aQ>G%={_ z%LiySVKpg+Mo;%;5y8kM#RuN(8DbEz0)#_sa>;r)Q6KZ)qYx&&}Vs?t2RR zOT8MM-)>0oC)ZNC_x!>Bkv-I!w%~t^`DA6Sg~nFI+k6}^{Y`sl_@XovqueXYr@IlT&2~g+vT6X@OZH|d$B99lKWWnS;llEzJTqUM{gGgh7=gMj z?@krpJfMHcycv(<>;RQVEjTWEuLb){b5?$Ld_AZ^1ST`BBkVvmDemo+x}FXDLB1X* z)V>q(khsFD^xua7b*$J@aD@32;v4B(GcTh7Xm(juLza@&@Q-9QA@f0B0(E$s&#ZtZ;u*!hH;wd2f`1lNdhZ4tlYFK7 zGMa@F1S*?cUvKdo0+ju#jaJPDfJUQOQ9TCpu%806S;r=l2~c&^?ItRtkUs%`zhmFT zmGJyGl=j|j@UOzI%S-mm!2XGSdFL+jIiDcEY~fFKIxdYxTBEj?JOvaRwe{kNV;}qx zb#Qf&1&KhtRqyR_uPPdA(ME%9ZJz4pABb^rN7y zrX~G7pySAgUANoh0lJwQr>&hf2dF}k{W$_Ru0X#iGvRNUhCxlhHy)JqGYim-w2TKH zbtYJ!;5UtLE1LjKExIMmnRWsBBUOl$@oNG8j-P9-RLmUoQGS#=(8G^FMaA08F)K@e zww(&xJ!&dSSU+DemlxuB(%;uA_iFKbX>F@ba*qkn-xJzr?Vk{!(>afsXMe==MNFK9 za(@!2A$Z@$c>N$y@u;gxFt-5uliGZ0p=7-U_9Nl+g-TbPCqLhihjkZ$+M-Kq@Qnzd z-l>V&yVHsQ<;cesBzA28@h0t&@#{`+$fLkM?}LfC@sLLw*|jgXB7UWmjg@~0R9G5I z47pdNj3VBW+-GCfR0?~n{`OjUf_@~PpU}BCH5c)T>~f{lBN>ExglOEkzmJL3a@U4l z_QJl%$e-`L^bP*UsC?PIq(aCqMZ485@)V%J$?|blqMU+w--`Qp4QFccxdhwX{0+#b z=w#tJ%|yr>->Ii@p>?n~d>=0`ef5L-Ys(~6#$XKzHkN}0m9v9=oXQ`>*dPn_*{0kxEHa;u^sI{bC*;=oP2DJd?M(F(LInBQpe_+=vL^|OL;q=CyJiwOAy0ZoGP(v52-JaFDwV%P zN8tOrKTLP*L3||6Fgx6Qd8sdy&)*V$y<#Qe0kT}=(P>veQ46nOoa1ysye-)o@cBFX zjQNy$>(8Upkbfa_3AuMY$j|tH`6te$5~x6*zm6G`gglb7XT}E1C$T^5w;sOdLVn1{ z(~^^Ji|3PBeQbNHkUvlkQp4U~0#yh3;E8I!P}FbLZ|_JB=E8XhX8l@yss#R)CaPg~ zxC{Be_~$1=-ARaV1!wm=`ITe;#eHZmFCE3_6mgNSW7?o9q1?7?8Q_J!l4X}EA1;Ld z6_FicY3D*cjW+mczsf&CJaJt~CjJMg)X3y5i@bKIACrE5XMH~e`$74)LN?}v9?oZ_ z+jnOb)N3e_BGLcO5$dJ4Uy_4v67uI!)$#i(@Q>7?y3))r0yU%B&p*WnVNc{=J>?6R zrQvxhGubzipbylTW4)%?1nQBUH+-Gwh-dj_PM0&>4&ePKJcnDftMUC8C0h+=aeibW zonD?pI4@O$>$)4LpuVB$vc7!RLZE7!5;Tj{gZ!vmNZn9RCQup8YA1G$qu-%ax2-=u z#RKo#R`ATq3h@a|L{U=TDvcDV)Ek<+>x(yM+3NO4XTl_X$)e4o|zjal$_H zXYm_H#t{7DC@p&QI3Zq+nZIy_1NKIwN_B&TCGr;`_0?xJ=Lq$2(bRw3CjtE|H(zi= zJp%cv)Y$XdeV(Y-h(*16Suu!uq9BV=&ayLrwif6L$hQ_pJR|w~z@Z6N#8=c&390WR z@Q-|Ydu=WY!5{OnNaq$bf%=9#ewvv_{g(Pl&qn-2nsSv-w7`CeE!%O2au4TANjs<^mWX(rVq>)Z z)C}yAxJR&%iw3?g7$kKdP!atqU7?>cZH5G@z3)eM-dF>FDV3>Um-q?sjPTz!jr;Ei z^$2-0t`#d04~xm9TK{K(#Zl}E4X0O9@C&3#7+Q0T+$*9xsrKOxNrp3yNw|Aw|V z*?Bk+RFA3lekyuN|;iLtUt1b7qt+pee$qi^7U#0{Ap#8$)K@F&d* zZrMYi#`s0*Rg!>wlY7n8_;r0O@{`7DpI1eH1 zpRt#w;O|8SwiW39!u~6U4OPS)L%oY?>J)SGALL0|RG0PZR-C_};$iDzB~YjGYhJl( z`T_oi)+|x~Es?Nal8n8q2MG4@vDoLr7{oW?Uk`p(7l-|(tW14f#{l&e)zR+2O-n*O z*fWSW)Qx;a*y{ZC_ILu6e+Zw>n@i|7l4iP_?+oPO`P%6to|_2N1Vc{?rZmxS5NUV# zV6}+)5xHKnezmt1et-SUhNN87n`m!ojYYwzmkG8!d-O1!P~YHi>$rap{R>I|)RsD3 zB|QJlPPf|v=*KB1owhrWgZ{GYw0PN@Hw3D_5A(zIXCMzk-yD9hR3P8s|8gkVWC!Z+ z<1hI@oxvX`{PjmA@*!&9)2Xr*1ZtnC%4rH%ssXe-7Vw=zNh zg>%Ennet2by7Nhsi+A*^2>C3}P<#D1SA0J8yrCx~ANy6XdGqTC^ppPMUw*KM;{6m( zqdWJ$!9NJ=k98Y;K|Uzl^<9ihlyKjPDM0bIE%sYry@sct7s3AX-{srRfp}IRa{GHe zSpt>f{J(hmcGy=+P?|hP)g;yv&9iKX3i(hwl>Bm6BmAA}L|nbmRn!Y;BZ3kaiV^RU zCU$?h&`s#a?$~$2;vMu`sZYDir61I20xE*p!9$4m1-%~pJKh9;C0T!SVJjc{7qrNc zcj^C4zy9}pC%)@jL?Ew1!7-y3d{9pn3Vk_jc^CFk&bg4+=o=yaT26kgbsy&^p(1~< zxSvqpk4rDJ`UCx^+~B9Vwh2 z|JO(T{^^MKM33%`SsCxYG#1I++7tK_@+c_V_v4Na>=mU@XH4cgA^$sL7`E~i?3Zx( z!MjJdz#j;uq$<+4qyJ2Om0YJ^kA9uNTAR^6LcN+VLnBRs3H>@z_A6}n6A&+m%oy1- z%c8zQe${$u&wj`+)j?a)tqN3MWS0K()7i-Pghbr!wlyMN6_MYhS*J;$R*L*Ey*C#A zQGVQHk+eXd(%f)kW~U156WN|K&MgJ?4dEA=%=CYR`*br#8$1HBKLXsfUQPGhF`wS& z63;sEd)4UufvE|Ed?YjAJxdJkzezp0?#8O4fc=`wGD(&rP+z(JCf6vVf5QLi?|LWv z?>?XU@p+|95Y|uj466E=40)hMZD;3-BTzBTQ%O@==(h{o?@JTv#q%gN>k57p!XA*O z)_%HU3HjrzTO03IOo+Enn4Xv!L%)vSRz5n?67^7lC%k=cZxQOrN*CA~Oe65V4R$v! zkzl_igbEW6>tH^j@)Tu_JlG=@aqCs5O>y5u*7|Kmuu&xTQ^{eO`%37WQr1xHni<54 z6x|=>6Pbty_XMQOfKy!Bu`;r^BCy%%>T;7>N{Pr3QY;C>BR zP<&;BGwQQaEvZ(PPjLSHTb7p^nt>XR^yA;~#}$Zo1X8`mavu`x2W#b528s2lDN+8Ky`qw)@KTj^(nc;(V(FRnS{lhVDxe7_VxRVwh~@Vn!Lez0)eu7H<> z{u^c64cVkysDF#6n1pgRLmmW#pL*Wk1N$Iw;GOJ+TKt}T)5iI#GwL~%gcPTs7tnY9 zoz&;t(paC^RjNC8DeBGgl4cr1`JC9Vf8mF(j1bO~_swmZF8X&A?ng$f8}K~7ZNvA^ zE8x7v*uTiwNkd;nE@WO6`9`=;5`XNE8#Cd4nqcG`|6bHHDMH&@o6ZpOGZ7zIpG543 zsGQNmt(#H5ps?~#q!S4F@;^_D{W3Uz;pY42^(^8cU#rw3s+_Ukg2Iv=ijnKI+hA z*bBb=f)_tmA-*BaJn^5d!TP8+D-LFn(BG!=EYo6;P@fSBtkbbL4u7EMZYi`r1HTtd zzo0j&a{%)BbU1I-FZ53&0t0@0%R>G`nwaCIhY;egZih`$_t-;J0}{;l8qltk}3O{Ef)^_1epHp+98LhV?$K*njaw|1VG7 zkuTGF_YGd{#{0#sbSzaH3H89M3aiq+upi{j<-Y@IuwNpp5{l?k*njms3I4^r@DH@{ zUDi5Y$WP=qSIN4h67qr5ZklN-29S3V;nVDc=;w+$a?B|TAwT3luUl!DgZ&jNP*ss8 z#KRP6iwNn}cs}2y9lR?~6Yig|-l~r|g8dN|aNGaJ2Jr#aesBJV6xb($-vNp1yKo;v zZ=t#(o`U-WWIB6KSRH{X)u1Le#yf{dzI>JC_&k^OC-Q9gkR#`3eQ_h*r)a zUKeqUQEZLFe1uvm`s@yZx|6&FX}0j ztM2vNv(TSZv7J4o-9xCKWvmM>3?u00_57`MRMcmM_b!B8w}ibQbBe8{4WR!fe2b}S zl{)OPM0&^EkS6R6|J9+Vky5D7XZc!3GC#$o(4|s_9owhT|gkucy zAYhlz&L)F+UC{bL#H zLO!N<_GDG#{xhxhMozFg?#ED<@7JgiLi{M{-7fwPxa$A;{qkkW=AfG8*N=N6Sc-a= zkU#+G-(f=h^?G=f-}p4X|MZi)%{lD1h|{CusdVIDq@SNw*gb=PmUy;t*?U62kMwud zP3cPXixexC735^1o+DB4CD`2$pGz(5t~AwxeWSJvJia&sdqVpdAw+pXxW9E`jbX<= z#4BX8RZdUWD&f3kYkuArMt@LY!S6oZiBLZhR?!jPLbx9joZ*?%fqIUF_MlA8SJ)q= zoO0&g1Va6LSUyhc4(e_4%oHpb~@ybEK|PrxiI0rqv~^y;Fnk**-OQu ze}snd_s~$Q_s~bGi(}x2I)eW4wM_J|B7P@*SO3t59D|U67Ex}iZumtb1seL&*YB2BK&_q!1y<(?kPQd-?(?b<|*`t z$+xnVRs<93!43~q{#}CpDY$E?>Mf%K! z(?5*}_3z(qFTZ>Pbv895MIikF{3o^3_C(+|P0Y{!{`*Y=h&RdofB7>j3IDfSqq3_b z8ub)$y{w&Pp9%6xiL&I4fW6b$ktb-oj}SlazfSXUM?6F!t^B3Ziuv+A_qRU3%K&4K z-L3OFh_@(42G$ziA%8NRA|{S+VV{%^W?A1g_s8#rrEcpFBOW3B+Af#S1AP?A`fHf} z3iUfmZ`Ap*`tV>%PBaoWxDfSfks%+J*Ju7}7UlS42NvPTj zdnKJT*CRZR0FFR$zx%IZpSFaD)MLMdOfSYhG)MoQ^ldvy<_;l0k{NZ<`AoQ9AH$Iz zngM;L9QN`IJpubK%wEI3?@1o^Q!`Fx;28RMLie5xX$+!1My(!|J9>oRze^Hd1j{0x zlD}8`&&mY%!^kST{yhQj>VNEO=&QRbHhGf_*-E&^KTUbs3(yYtTw-AM?FSGJCW~r2jVZKSE8|u zm-v5y=-15N!`g)V6Yp0hC_RRMq^^0eFQT#<`*rB--(zjiXF-LT;4)skU*hba`W^wi zUpD)g(#7+LXUGbj`3l$JuY`5oA|3BSzC;`vEMo%@&q%tcZNDds{-yH3hR1$Bg#M4^ zx67TPh!^>xuoPSX5OXuUKa@U#VxJ~*B2iFNeO_lrFN3}5n8l)kyLG@V(prl9lUC$A112pzf z*Y>xvs{oDOL;30V^*W$&daEKeOo{-FKR7d`ZnPKB81=Ej0zBQIHYlEz9Vj*d^+{FJ zm7Uwz0oBK76g1p<4^SbMb?N2Cseqat^2vX|PmNp}k6kZ5&B_L9p}se9hMtCiIv7!V zKwdEASQ>vgmguE?3eX1~LyKvzy#d8bcMX#L6#=M~o|K$b9wvZV8ovDJv{4zLDhFS> z*@;}heCkXRZ~c4+sDml_Q`a+s0G%;%>|CYpXFyvFlLntMr4gVdg4D-sZ2>*PAWv|_ zf2+ptSDqiP(;-5|*T_d*CqO0LPZwm80d#V^d*;#O&44255~_-C>i~4mU}1OYLNBPL z`Yz~jd^rlJ;=x0;X%X)L&CubN92X!kiSuPx2o?Gfps##x7?WNC+M@Hx`I|p#0rfGd zX7YE_Z9wmI?=kJ+S^)LQ@C6RL{zavwakEpAXgM3GvN}$=GL!X}R8T+n`tH|rZw!{k zWu*H&y88hY)G%VXsyzqPee{guPpcS!3T?i`rr!G=P$GTX+C1}j5vacw9xs1Z;*R-c z*&aXf5KwBP%3Z?8Gyt8`bMxoDRhs}USswfE6@wM;V{kR86_^0JrQcMIpulFZ@FmTh4#{= z5{drs`3SLy7C@T}P;;WlJF(s|mxN0k0)UDueXA)y+{Of+qm+2DGdTObieFj+g}!dvg|(>{`qDD^Rv+o3yY@3?Q_*5&P z`GSItKL_~7kvN85*>ylSjr^$Uv%QLOr(^krP(Rp*9>!qX5Idl&dd||mMG~M!N4JS& zC6)l%tNwiTB9A=g_q9#BE+(Ep1++}uNzI2q?NfhJUcv@YU!#|lhSaZsTBJv>pl!eo z@9Kwb6!J~SjZ59*nY>xb*)A_!24kz20N?E%&J$vMj4!5KZs zOIdqn_%T4Ib~Q9gdd1`W#nCtO4ATL9S6A~=nkohTWJnB@AH4%8ZhEJN%&Q0f*xxF? zQ*(ZxMyt*~U8?T{=%WU)?0cqmODUp$ZO&}>xuA%paj$~q9*IkUMjTCO5D56#3w=?@ zj6ZKn@V~xu=)NNwK{0eS4+cvx0N4bY+W zWsA+1HvuZO&mr>#$qMtQv)5%DlSBO7{#qu?aX+9I3;%rvd&C7O{~l+V zZKe)@y6awl*+JO})Bz0gI``FkETCUuM{88?OYEVM(^sI~8Zxrz%^`v5g~$59njI z?H6=$-W8wTJH&s4KdO7hFP1$=fNFNK*_|#2d)=GpY8CARDD}+aa?An2pt5RmAAM(7 z3TWl_`RAJ*$1tCf?3~DN#|cz)2WrD3Q1a04eD3!$dpn@_zi2ABxXgj-VA!E<^FMb$ zvsMYJ9k?-p_`R#6gzM!H@`bTyQKvMgknfH@RNCH&E2sJu%11Jn$s)cRc(iOzxfIZX zBh7EKvwh%iYwO(HW?G?d{cY{ff_40HUXn+@93W7q^mTraUBiX^@*THW^kF09+r5&T zx#PnCrCgq|Gbg$h@nr3Y^n=UQINzZg%(s(5A)oZHt6#4#z@9X3@;PT22`J!^GTE3& z4FkN-P;t(WKs`=BaoNmw2hO9NXT^ukC!p>bGW*3cxf9TfeHZ;k?Rf~$fdVc5H9^?l z!QfX%&o~mG!VQZ|j0seJ-7i8d-jJZb_4NF?bPD{_=;^=Bk*UbH2L)1g`v%~Asx!tM zR@}hz=s8>*sTW~i>pO%$_1ObDd{F2>Qq@O=rE#N5v-A5**oWMX7ZjZ!*!!`v=gYen zF~4TRU&V1r1Zd1t8Y}j1Ks;P@w01xx$sO~#YGxLB4ba_fCM&y=URPtkR?nv_lLj^X zXDg}kb$5O7{^#dIzum+5%WTrk9p0d_8hS*Z+p-z{xoJ9Lh~o*MeOr%yyRI*bdJ!XP zVt0@+;^z*RuOBWuAl{g8JXkKVd8q}gKkoDI(2YBwVr`DT#IkJ)@k%4(&b3bFY3R=- zi-)gEXn5c0pT?in4=jy)zJB@r-HHHZ?&oEYz8>|W2@SENE*IE`&P)4v{^;TT9Y>Eu zvXnp{i?11*FPw(H(EVSFmoI~T@0v6$dSnRw>XiDkc*+d+ivIj%)u1V;m5Tdn9$Ym? zywOT7-FxISz?)xpgtT3X+7ZBk9?|pXV~Zk6ZnVWV&8-2@yKTec)T*+*dl)E z_|3fTQ6}`e=JG3_BNEWRN`-@#D?Aaujw&7cSo{yr0PA8VVf&NOmyc_mKJl&VPe{3*30>9UKR~Dd0s2}iXc%1zSdF_1Kl*z9G zYAd?Mqc<~Cum_B@)blk}@K=+6Za*t8LVVVfV*cH}68q76Na;hMF2TR>Z!>JxNByP! z!jAc>+c>Y*_R^=d+W{pz+~pyzaU9UfBOmTKM4Mqh`zQW(F;Fts?+WweaR~y|W!>y; z!wObF$B%UG9c{P{=;}$c@mDU&$S)gAZydP9Er|6OhV*(HBcEp6eJo28#(py_jhoj4 zQc}M^{tt`MDeT|SMgF;0)_~p~G1ewmI)Tc&(9rW#Rx|1`gM1ve?E9cU-EkZC-M$uy z^-;Hf9%Vzm(=WGW?n4Ote^aK36W;{Jn|7y3p zLwjF|dQ#6hnfWcE$gdmr@iGs1!rm9AZ@Tv28{+$Mcf%x+X9TK&7S1!*R0#E$SN9TL zD1nM7d)20)Wv0-lzUnhmOa-XFFigBJ&z7Lx^K9R^Mb`=fHJfjAQD+JvK4b7aTcwKn zZ0nES@G^H$lXQ`o2Gi!?KdXPOUukEA`O}Z8rFm|JJPx>M-3Z@7@TVgj>%vPBk2QK+ z*-*C?^|I~+-ZdR^phjzG_H4(d~_M;vaLU4y?Iq(u2nutT2Pd*-5|cnQ$zuf?L* zenP%qzvXCW%r?xwW+E^}T8BU_KsPyB`xySWUdZLxBQosS$Fs@DdF^43T6eYUReyy% zm!5TAYv7Ci%GksDjXy&{-7!A=<>c;CoOf@`=in_Wu;(2~GLn}rLcThmoph^RiT$c5 zS;aj17Wrw7ozkZhETCp+>!@$xTaNs<#d8zKrDjl>lza3SoxcrxIJmf4YyCFVe;M0c zZtCPgf7*@2U6*f%eQ3(wfADEJ`fc>Clt-u15#LVimEyT7lD{+_xzkkX`UCaPQE8Ra zyB9q$_EgV29Rn)v_N_-d9$3RZR^NGFv+p?K*NUNG3B8r5#}@s1y4tlB`d@vi#->yd z{;xNG*N}Mwfx51VLxS>O^Zvi{*%xs~$emDcUHo%8DjE4t-=b{V+$_$&LG_NIS1;m$ z#)=#CL-T-6@BLM5{;!!p)$EzK!F4;J=tt_B*I#c(f05B!ce7{W=56>on7K}S%njgrohyVQg_Is(+0P=%MwexKUyTM!NGsIKSFMvAcG&I33vD~?ZGm3UrdZ3LT}BI+fKC+zao zMTqZu$A&J3e1`tC+`m{MbPD#mIOh5ZeN6(@Xx!MNDQEPc$joGY($FMp1F zD(@P7ZBGmKvyD8oFk}mT=~e4!c-4)3V&KG}Gk44J+l98b||A8`&qno zOh*z|iu6Yk!>;fTgX*R@nWbRFJjc=fDX72?J2v0M6bdW3%Roq#JVU!xv6{yDhx z_B4LqocrBfnFskqPoBc0btmG2RpFZSw^V<`wzb_?DS{Z*a)NdD#m`WIP z$M|aN&Z8@omd0I*m9!aW=tr;X-4&%S(8t>EO&@=7LY|t>F|)FlApYo_%$wd$NB?%v ze8pGASEv`2vxa|O`xpLn^luYi=r7n~I?vIgP56tSekae=5MMj;jjj~ERbpkZPwmRt zn-;hcPxtehwIn(qNcH=z-qboVqu)5nJ2kpI z67lXxQi_SG2Ks%ypUzRJjRb0-M`0qTUO;~suZ0R#co83z*|GZB#UbDCyD8PPp`dnY zT%k=F@cx2$=YxX%{)6+dKSMQ}f2e(i{13g0?5NL2{gBZyYX7nT^3?o#@cj0$x0tUl zU*zXZ+)rRETRyFYD{lJTf4PJ`)$w^7%cSr-W>C|P?0fumW-X|M`qt^G-D*L;)Hv5~ zrLzb1xelT1{mknKRDKo`4zYTK_~@bV)h&v6|Ddf=FOwwVGe#Rf?{F~U&Hia^iMxrvu9`~&{0!Ie_++ywDa`5vlUNICiigDHZc`<@|x>3d%P zx+fF%u$Aq~V$BPJKh)egJ0l|qec%ntp6dhk_c-%AX>lc-e`D%Qn+gX$A4}$X_1h8W zG0e#R>UtCMG*Gclpw$`q(SXd^Zxx=1&w3_9({dJ24;YHxJ$E-3@!}9eqIZxB_II2& zFU>3m^{!%l&Eu7Xer}_~>R#Okh_^b=eY<%#3e>iB7j|va}CM|1G|yi+ZTtTwn$(kUeH>xLTg zWrmN~nge^4@VrFz+U1_;9}m`uhsGT}B>+`!tMA+rsAjaeij^ z4cnv%RAHiLjAj2IA0HCS^UL@Gs>uoF?Ik=}p!ymxddOK51^Zu^^13%cm{1SrII>`_ z^9K5!#%tzv9QL~-Ha}PG73^Uz%W7Sp)42aIIQ+*i>JapMGS~3K9%E34wa`Vmr{~a5 z=~iw1KHi6Xt#w^a8P_20)AaY0sP(53sGhP9J}-*2!{-tEcr=C)?+tM5d$vUg`3Zx1 zD|5&k{yuN^xv1(5#J2;hqrHvHVZVyjNs$x7U|$%&AAJ8X0P5a$l|v6M<)c2+ue*Ob zO$GJ0ddc5|rdFWV>lm76|>T%J$_)xsWfkO3J>AssJ_Fmps-FUspgLT23$*GL>Wh z>(;Go+UE&>Sltl#Q@sQAvf;Rg%YH^czgyzj-!*N6es);gG%vP9{b}S$Y1-#d*gr;l zlK)^Z^4*3V=8ul;fd2M!D?17*ApdO~;Be=iKz*r8Xe~3F9Q;M)iYkA1N!Yu>7t7ws z1;IXa*uFDxpCQ!m7Svz9pum3@shwYbH;vGr&(d-yc|ku1g{Ws0W#NC`Wpqi5IH4Xj z)^fu%!3pG^lk-rwK-Mr&U4g5o`0LLExhw*qGZ}pJ3 z27xNdFzxuIw5@o*s(R4#D8vIJ*}qPN{%NX*Z4Pq z+N-zdy`@Sb{8?|>5rLdE#M5IpPVN%o$cA|C zL+Ieg2k8b&r)!@93}ja{F4uZ^J=f zpK=CafBV|cd<-tbehg%v+sI>${@D1#U%s+($PY)7u8kO8g}og8(tGl(KjQnbCr>_7 zdEl?wyNzBLI>Y|-7v;bCu1~OU4}!+*CZX@`PuDQNxr=^dPaOAYq3l}d>-0vYg>eGa zA;+l<-?q0n4d zDcuP9Xt}4hdA1Jn-rjMXm11Xs@B8mq(0hpIB^7;bWLt*$l$>g};rj&rD6ADb>TwkP z&EYGTN`kM$-VHoFy&_>X?A5qe+x)d*oOjkC?E#T@$RCHa44Cea@V-{&h2=7p@DF2W zdOk)8Azte3>r-D_j{0Kn7_Hv3j!^F%EBcyIy>z8szl~Gn28%5EXT9PB1#3YGqTh4& z@A8Q$-0v8l47X}{MaXyPZ7N4EB0lRi_?pD}5%tF2Y+jw;Pf>5BKYtSOSAcN8aewpi zkqywVdRE){!IkjW!^VdfTuKqYkNk6fZzV(MH|4a-@A$R!mofdu?Prf}uEl++0r4H3 zX@jWW42s%{=#620o$pV%4!eRnx$lY3m#sG;|2-zXUZw@empj)TS??3S1aYcgx9Qk# zy&ITMf#tgpKQq|#T3^fcdv_w<=#*1V+U|z>O22oYR3ZoDnLf<=AXuHyfBN>Yr{0B7 zFE;-j@lFTl->3O{Lr8_*(zv3Feb>+n+~2D|YWU^S0o?B?lB7ppNEbQ;=L)OqA##2qNL$;`Aj2Nn#KDded%mdm_^%A_1|MuNeJ>j(<{+Q8L zo0$*;`Doml*uY_p{$f>J-`x3K*#Fj#qtAUW!rwKWD0cmtO~`jP&hI+#4EHIzZ-DCTol3>`& z{f*Q>g{u1Np{2ebl3=Nl|6}ic(2EM=41}^6PgRfvuCGKzv!v*dGY5p;`M>c zH$1y}a2|u6j^Z12QI9B*$gm&zh5Ad*ns_tQ+oJV@AiDcVk?jqdZdM)8H zDUbW5o#!-|H~^`y-@IDYf9MP1`Q9U8|JE+U{is^|WhyuPaeuSZP>{OzHqLX<(yRY+ zTIACB&6fODp8vY%|E)Hko9(rIIN!nYjwsR7*pI%S-L5bEVBbT6K1oOpjhW4#*sW!=sWjQB0SIFGJ#dxZ31Kf5H(dq$sl3wfH?EImhtJ?J}Y@n>Z+ z;r@TftGydP;Qm2p4Yz35AMEF#VB|TcWb^|k__i1Oxx-%8>Y80D^+i2seD$ZPJ8H;} zJK|^Vc8}ry?wHHd>W|a#pS^SBYet>uA9n_o&h88%*rz7{dH@re48NTO9L-T z%H?U$zyCbyT?`-URV_|=JTx!J17pPVtL2*n$iIc@zw*7fFVRC^|0DST`m4Ra59jEI z;e0ZR4xBm}g8ZqXB5dcQcaZPKF0nf|W{@AX=-Td`lt;eZU-$5}K`-oCEyZIzL@?W~q4Z)6T$RoY2hj!Qr`SZYF{&2Ai`kw<@;a_d$P>*k8u|FCA z6!Brv4((6oGU#87gk4tpb#fA8dExW~Rwd|H_K+5j1P#wWuBF=}2KgT5D6HSmi05~^ z=SW>*M?RbHBHdQugL+Q;?v}2V(U7NsfW~n%d7MX8UBtr)FZ6FZ25D}Yb%gtt?_#TV z55+HyTcs5Ef_xDl^vAt;x$Y|Dxq0;(8M$4s$1fXxbmUsXpVo;aThknFI7x*VQ>5Fe@p)iL_MojBO_##0)JTc@Tc*9 zg1)t1zckn>Z?!c3m?iYWP6zX2XcabHzK{H%?}GND_6gKyMpn&a+nq-JrM}Yoq|I^E z3;X%%7owtYKdjG;^t6lx`p|Y-t@%(2>hY5wdj9@0gZ*f$NfsH>!~MlxT~mo^2K-%l zk9SB4KlEdO^H|Tfm9TI1d8;#}_QC!(Juse)zl!{DeCzJ0TPKiT&{>4yV?^-(sR=QI z6DJgqpVY5&j^Df-`#CZ(e9s^q{h%&+$=!x$4=jzpCfk&}yoUO8b8+k$?Rfm(uwSHV znB0kcqqhDr?VM-#(zs=mC()ZXVrg8w@yXd|?_eLBY z_7(Ec`)Q1B{T%tna4Y#j*k0JT4&Kox1w8pUuY;ja3jQEo?0unXuXhpm)w?8{a%=mM zA2qs|8DC^U{MdJ{Sj=oKp5JZt?_H3P2juercg>Is;_3czhw>QD<@o$?xXF%5$omt` z?*dcaIM3nB2Tpt?+~-Jn@G)a?82ygsYWjFfCFHlBJ-df@QV_qlF8EgPu6JoXTK48v z(J<;O!w!PNXO`i9d*zpRT<1*DKW~-|S@&lhmkdn!W}L z^m}_{b05#`OK8s2>jJBucO_5HFAVA60CfME!c8e~x0X9r4S@?ob~8-Oz7_%I>#% zLXp@nyL|V7#XP)k;o{iu6}VqJ^z~~LQ#AC4(WP<1Ck+1|pi8jx2m_K&zfG3CrCSyK z)Uouk&J$GB!`jIjG~WpHbE>;kmpLsgL0IaSQmyKhdkFcV*AYGU|M&j<|4p?{KF+1} zvzq`Nc&6e>@FM;SFWgt_z;zaXo#zXBZoJzU(AF{}w(jY{B|XR&ZP9J+*#Rg8vXH)o zYHlRPbdOS`R*w0+n?06|akqWeZzoBLhs0IW3 zOM`bu0d*m1dm!fGLqIEuZC_k&b(=t~_-mWL6x)*AwV~XpFBd|Zh4AILsBHv*Dg6|v(xe4ePVQc2+ zs_cLUBQ0!}H47q8x5~SY`f>qESu$jJ(fS_&nq&0P3ds$CTGcwC&8d{nK+o`PKbs--0`sFh zidB^!B2WoNe!7uk4QM6mc60xEML;F&_t$rn_x zu)iAe$hUYxVC*WOs^qg;m^-g5)oJtj-xt>Uivenga;G_fss<=Q@=AjT%a;@0&)i5m zP)x&q+-fq~sE+fcann?oLa=_mxBDnbS_Eo|4Y^Ho7YI}V?wb{E-Nkw(XSIxncL5rS zrW-n(qynfb$sf5)Tjl}%r7*xceM_8RZw?C%2aLmBkZE5&w7`$%tL(O1SP=s17J;0G z%zv8!4NTK|O<$1#Xq?R)hP@_Y*biyJS3+Td*kAJKNtJ!#fZC+i<+yHNSo#AB?M?<(%8ac z-vIn6*~~;rS&Kler{sUxbpxPsqNa4^Sw1;4=5?p z-05IjOHkwROW!TAH6_^F`>m^;&%r(kY|T@%p8(V@>BnbQ6?p=+mEwl?Z(9le(J(l8 z-#DHp>FK6Alq6}y_ z@^LBpg;-Fp$S!03**gj7J^7VK0;RL{Fuzgz^pbYyi|{cs;V(4=ecSgZm#lvP@4KjG z-);i?CHl&)U$})ptykCIm?{S7H4!%3o7aCV-HXasy|`KZh#%y2bNm&ndVfF%iYume zW|sD1J-_7jS91eON@Tpujb#*2W`c?1{5R#&o0UH;0Ch@^`mw3( zH=y`vJKnFhzKQio>?z)x(*i09YV&5-No7YoZ~L%8Xe;Dj;>?y!Zu>wTAluwJy}lm) zgP&vL%8osNViY|Ubdom-(8c7xJ->QxMlOw&{M4><4g=~+kneabrzoINsk+Z}^GpcP zhO4$8J>k7{?Q{^s1W=~ov8eW8Bn*Ex-^Ici!bU#Xf78H6irNEqz{Zi4jI}r$KL0LP}ghed@ zdUeik<*lp5gy%K8Dm^Dqk1e)7V7>+W#BVacr`vn!-d{e|MY+!EB!TK=xy{hVWCAo8 zS?ThRqa0Yzj&?h?K|l|arjj~VE&w``EWi3((G-EoY%W$gs|@yBNGG<-h(PTos>k+{ zi2(g5%C|X|`zfFgDIeZ3Z7@^9d6a0_zM^A)$O8x0cf=6%cY2eQ)Br*MNWzEJ%5h%e zykSQ%H>K8H-Tdo5Q`o|ya`pNtv z_E)q$+=Qk|(3h0AGu#n~7bqQnUY9Y!9}3%ab?EE zk8H#ce3K6wSqd|QYDKvGT#WQ-Knn_*iUygAGzNV`{^9+!sYdy^Ee1FbuJscZ zt+0>M&D#PHe|=riI(E&!WzP(Ql05pD8^v zeDu!*`;cC7?#3y|6HWcOcX$>d-dxhvC3bpgAwQ0G4`c#gH8o!HsQu&lCyzkDe zCP49q4TR;CLq3H)au-jG5vcLjgoVW2Amrypf+cPC$fw1p4ZcVDAU{{7vpk+(i}jGk zgv`utAf6^I%-B50kHqh__o}&{hkjB{?#%zW5RLE8&M%9OC-}oj<2ZK;><8tJTmM)o z>StnqyCq`(66|^H>$G%!LcK@o%|Dj=fX)?MHqDbhihM=**9+$CBgiks3%~rlO#v0C zzy{;C&P;-R`X)@-LqdKg^riY3rvvP-uvqFl&*Olqm%hEOrpglQ6*Js_R<#Q9CwMcx z@pLYrP|5o1)>Zl=-y^eby+5Rm`Vv)m?}00u2+;lIFV88jt;P4nCf0CwU_S)bS9N}8 z1{Diw)bZ&CS3lPj{T<}L^ zC+l!I2B>1l!smm|m7qRE4&7!R^#{}KzJfQ3)y3^mwa}wg)k&kJS|8<{B z=i3!y>xT0ujjc6UPoNUv3l`vFcLB67b@@RXcQ;V&k?)Ouq9udMNi1$(#MgSrkI02d zSM3dskT=bZ!#z`6_uB?=xpU^w=8p1yRP!0>?h+v*a2c^4vjxf;{b2v44tu zPVLpV@Ga^D>Y`;ccFbXrFX|6<^`;WkbNNdG_?b5X8eGcym*BrT=$l|^!nw2^pbn?> zWZQX$!#;}Y=ciP$A)e+_Pc!B!TImvmbH&7%x z$YHBtPsx&ZGD)t0>Ln`+|4h&X6%}7G_w8-_kUvUXH((@`q5h(LY)g6XGXfO!77@Ph zf3ZLOE)7*@I8eV+h-6Z|T>^he{rk#l%|FEBLN7w*?gs%{U#;JD{@gf0ekryL>P`YR zyBQB>&?@XNIdG~=yM;jQJ^DL#h8y;Y#?==&z6<`8VqLdQTpRI`K*s%Sfl$=zsW&_~ zSg%CAluDn{9Wy0R&9L2x?&AWKKc9W!b-i)Kiz4^#-n_E_dr21I(Yo~*(E75i4)+bC z2>pkD=T|rGLcT&X>D+j0TNPnF&x7k9q2EEyaJ;@&0rei*(6d0>aRPP2y2*Z#hNXMm z`QqV9p-+z?zvM47&#V|iJScQwa_}qD8?0yNA5-2%P-pW`&OOyWg?fwZTYbj*4}|*j z$Iwkh&G^2^z`n-(ZF`r>_z;e(xS4zov=RgtK=2i*nF|xU&-49Vwni*xBGA} z6I4&aRz0_GzlZ%1>i)aeZX*F|+i>y1*X~7}_lCBkEh%`O@Ce7P^~MA$8)L)8-NT^n z6H1Lu=rANuEy?lDU3&|AL}k(De6)s;zf`tv>HhEb{ZD=mtXWh33-u_;3YWBy&$Okn zv`%;Xcswe@_jPJ6oybSMgKzWN=P5$4Z+wH)Ih8H~ zmE8H_;LTeLs#LOC zLD}=qs85L&R!|h0Fn`i$gx!}0?2oAVeF;xD)Q^QlL?>BfAb)~~`R~LoLw)W4q3yl@ zu@3w9aS0_E3D>YLd+(7{E|pR#5oHu9nuJP|q(~ytlB}dsh$IopDtqtE<+8UH(eS+8c41plPq)5jvS1JLf|3uWHnWyoL2E{z{2FQc9- z`dQ0n&FXH|g1^5#75h>Q{RT08 zmutl~1nR>FtZ^nd)kZV7UtCL4Bu=!|pg*N-6cS-qPOy)hEDcTD zu^*(V;~pQYK=n%cTETPNbsEp7_P)FDG2~VF$nG3xTTl~{?=jAKK0`h%Wfkl%q8y6f z|MVU_r2_veod4Krhy(Uk!Dz+E(@5y2+#eI#i5UWw?U%P6uWShMz4_cyYgfc4G|Sf1 z@j}=GNjLK*n{m`LsL!wMTce5mS|ViYy<3N2FO)slKG~?le@T605j;Rf{YNS!aeMBM zSlsVkVJIU7^>NC1J?(&B=wFc^UoPHq5%He*QkfN+maxBMN|W0{8v5yE@3ryoR-qmy zr=_d0#ToShDjUNy%^UJU_2!sdN}z@$bL6V(eoV#l`g(Oec}~dhxa3;$T4CQL3_U2l zzaX!)kUwSjTao_@+a@Kgx`zIo7=0#LSrzjj;vG+NPSzp6l-rS1CpZNEK;3yqc*{M+ zW8^rlQx5LPKNKy+*RQ(?{gX+1DlgrL`Uz!bZ~x9!s83R(zKtueqy8_PA+C2V9rFtk zKX2LyJS9+(7Z`Gk5d1H-sBRCpB4J*pX)t_F))0Tc>epETH$pvNYLjzwJL)Cs=KB8M z@1veUeJA;H=q~DoYFsB3y1dYDm*q=v+jkLE!eY0tt5k?19u?iV^B0LgJwo2;ka$HN z^=m0p|0<^!sQ*X}hUfKWA^%suet%(EBkCbCCqia>1u*|Xoqq8~mWq6mG`6XImIeAL z8vFUd6JY|i=u<5_R#)`9g=4%-wYA`n9wkkdUH_x9_#I+CO^{tb?>NumTD9MPuT>%BPvTehkk(T|edf>o z&USI+gTh~z#0TFY*o!0I&+nOny`r%u-^!&|B1Gua9(8j11f3Kcs^lKYV^hu)y1`>|FMod#gN6dmQqBQ)1J+^ z{u$SpL$^@RkiC7S=5i(3`Qu4`NBf_zTo{m!#iow%RWZD$LC z9q{)evir*P%ee4fnq1Ct2;TQ~o35qrx%i`&T&o;CTjB%kQc~KS0c`UT1xzHh!-NT6n#6An1P6YoO~+`*D3fch8BJN)Jj4%8pX6@t$X zKEwT_-G<*>JBZ6}A-jlbaRjKU+?y$KB<=VRsqvqi~H$mF{{%|JUZV8e2A$_t?M()JI4QIcKEDFb_oL3dt%vj{IL%wmxb11=u%YngFafdECBbjd~PWs&A9G668%@`OxLN_X+W)tKBA! zMgmn@T_9JMG4zp~P%J8tM~KJEIZbxCBVHkYd_BKsJ{IqD#UvuG3h|n{&s%nF57-Zi zoon`q5%^b`{o;%ocj%9@en^PvUDQLU8dZC_U6G$i2XR?keGhw18a?~YObOJKVy#y$ zh5U5I^>nul=|;ky%V__~wJQX5sPM{K&d>kQ-x53cD!wup{e6w;HP^SEB2at%?weH= z#`!7v^qV*ye~R}Xeco>F4}VAI(=6muMt&!9eeUG8Dm*WZet7KiaYDVFQux`=mQXKS z%f?qPi+GpJXtFsTh3k{%7D!DY=r5BW1-q^?BiM&MZKIw#$mfJlAC|}-0d*i%Q?^@j z9`nN@Msw;TdN?nMc9Cb!z-7v(un((Ey(HK_zUM~fUkKEiS3djQ;6Xh`M>KUJ{66Y| z(o3hm9(F+fB76FN=&PTIhh)@7e%vgBy%JND-19wmk#{Cv&RY{hPEYtlQDgCtp6T zaP=zuGug>6XLJ5PtksiWcU^=0X^yTGe`SjNSBgQ~ly?vMK|UKVktP6nBC9*60U!=`_3QuJ5jdGC+(GxAL&HJ>ldD(A0hwOGR3)#P``HG?Q%~S`c3_} zs%#=2_EB_={fqVr)H`TD-RQ>*|6mr=8HvGmMn44M*cx*-D$Njj(VH0 z>Xj87>4={x>rNYXI~wA7wdc-^n!^4|7%yL`$%WrV;?ER4W#YVLCr4(!iy@y8{^Z?s z-=9EDIobTrn1=p}YJd?na~$RC<4*Q&XYe+jB&&yOegT_xx& z+q@(pUnbplR~dyr5Vp$hA?+v3uU=XcHLYO3xEAloJQ}$V_M5u3I`{Vw@@c6R{iH8>&FkfZlajYf*`Ybx+ zlrz|bc|{55+PK`a=)9MP|vr?Twy$ezbCuhNEA8^`4?Sxd^X~KDt>=pT3;%O z{-uaTuKm4!Li}_##!FxV^A5DJ0qM8DVDCtOPCqttLB2v2{$f#abP~^_=<+n|0_y*y zG2?a?HUbrQ-9NeEO@w+-;L%1UU&O;=KX0fGyd%u}Pmp(f%~ZvHXfK?x+K>2B(`wbJ zP6Oos!trm&#*)}i%9zKdN9+dp|6hA;Qfcu2!rJ-N{yfAJn!*yy^e*%d#OnR_3={gF z)U^EfZxRUl)^@5zb2suM*^C`eMK2QS_uDP*0@BBBs`rq|720JQA;C#ep z{7g>V#(v6}(hHX!M*Ts?#&dUsKfVv4GUJ8buS9)=LOH>zIYprEK5OAKdI|L~o$0=Q zQGz`uFWnbobBkdAx_q}N6Z+Gnu>(i;@5H>k=xW#R*Q^NhaaVhT&btxvVX?F9yUwBh zMH&?^X;nl0gEpBwyW%zcxz@FPt}L|0@9Of!#iKb2tjAN)?TI*$00^ouU7unPLC z(*4Fmy@Sy2`XOV}O;IJ>f3WJC0OU=W{fX?h6vF(CcevjRPsGb&n+zLo)I1@)f7$6< zg#I-}T>4tZW9%>O#p(lJ#c7Lcg()WY1aQ~?bN(VHNz(-C)NjRh)k8jbKiTdA2P@1A zOPF3?yKz721=M>D6@OMDUZkkAe{mec_YoqISxc@SR>%LRFpZ8Sz@CeDiuRjbMt(s) zuU+CCO0d7FW+uz{ z{HQ-tJnwsQuYkRvy(h<5L}T8H{A}vUHc9lGX*NHP^(bS0m;A&x^Qu1lnTp;K6|L{E zw-n9(Yv=9}o~JZ9Z`Hw2oM+j$EqcrGzM=;*Y!5UL`qAD;hd8SckI4$Wi9a}l`nz1_ zIm=u1mVjGP9_Jcuw?F9wih!L;2Ec&)z;<$A|l|4eWc|4SAG5&9+Cl z5cZBNZ@zTqD*6GU(_8**KTnXiD`CHd))MAVzU`mR<^>fznU`Hw^EK=px%@4oMIQNw z$OaD2KP1#&DD^_$SNz2OYbAb;+*gZyQf#T4Sonc%yicpPTjFly=VXn#G1+sdmr*PQ zt2c&YzF9s|;@h1l)GdpSeN^`qwD;;~=44Y#wnkb{h7U8gfQ)7efsH z|FAqW=NX|sWE=k}-U0T3>bRNz&XrpHUPMdC*a>-&+;!@z2Z8#TESB(Ni7ouOQlOS} zyENWc{ASXb`J;sX;LUsW%&tWoj(k~1j*rimqaP_^RK6zc5Bf>Mr;27gd2xPJlgF>h z)>IZV6SAHEyxWf=x0$6a18g8(La`aQ0r&>7x6UB;Dn%sCZQi%wCq)$2kJpG z)84xZ4iM(QmQATQnxcM5J+X?ZypquG$Pgb6ywgp1-=oxfH&XHUV=@)4caWb@{p=^@ z2MP1WOY{>{pAx?BdY>fpdpY{KB9*&rOV%KtC%;Q{lZe2)g|14WOz=0%C(B4)a*YXMnABG2#2$ z!OPAU?qEMDpMu0U8<^pJb46Q{Vo)E}l=h2Leu{iiT=jUsxB_9nZ@>R3!isoK%phWk zz1QM*;Qxsi)~*q@fj^<{yqTrbN|@(7n*UB}Bj$(XkBk-Z5WcsO3jH;*wE^~5OhnW6 z9XH}Z()e|j-OrFei;kUA;ronuR{O+A<2&Gt=ToyUT|9mn`Gdq7o#UE&5KoA*t8(5s zhE&mj-$7MYzB1v9dZEf;L-Csd+W(hS>qA*SWBK}kx*Bw+ zy1o1ZD9XX}tl3p9fb!_Jc=B!a76O$_bEC)m$b$7~!5)KuOlMYg?t>0rYF{nVWJ4TmYTc#JBx{ zW*eS&$avizo(Mool`cu+I=UTDTfIK1XX85YzKqwc>}S{k#W5<={?iARnKoeI=l5di?$}Zu?;KT z9o4J5?a2FnK#BH6FKb-R1NmucY;w^!1!$wTS5Nu2ox}b&3)lv-UB&qqeVzQr!38L% z@w4T=9;txF=$@kX=YDm<^K;r|(<4ANGbOO%nZ7ch+luoh3 z0i~OHx!C{84sXK+!y00rkMfgop$vdZZlJ$Rv6n|F8$>Lf$Hx;x_ZhJKub=(tn%602xz_@<>&NE zsi3CledG0w%?Hr_UHiLtzMum-wp~SIDfa{Df02K9^oMWuc%NS*A|n;hA7};4x#HLk04njb8=Kx~UFc_P$Bm?A?tpTtd)H@mih=!VFp{*kodHza zmsQ8>f4KsxuxXTexZDg-Io1353cA}ExWC`rG2P`jkI{fu*(5nYb&X~{mdSq0qm$<~fL0#fB_I{^ z8&E%OA2%ueF$2_L3$O9CIV%B5k$`@c@%Ehr>I!y;yLZdse>#|T`}=IC@&A{_F7xYvJl8#c zv*zt>=7jRk_H5byVTY3ppej4hHecNl27BCSFgUPP7xKppYJGk49nQNoa>KHn zJ%Bpw;i%`{x()WDAzMyPv;_Od)cC-NQ-D1xzbUb_pqUTn&8P0=8iM^|E_h2*?-ADL z9#3jtfV^iYwR2_8)Z%@1hgfI1Lq2=C`c972;CVZWpWeD+2dG2FIkq6LE%5IHtwts{ z?g7efYV}xIraYkc`gWh?%hip+ezjz>MHj;#jFdc9-B1B&{K5JwW;>r5VqMG6>c<3h zTSN96mP3P(pMFv)Bh!fn`P~%NC3p<>s8RC5(hq&GFTE;)rFB+->K;{+2%OIXby}Cw z(gF1)fadCn8vIv;Pul3+2B#A1dU3rz={HxI4TSjk)&2&18|YKjx|E>9%K<%{EgyXG z6C0q3t34PW|MC%_v$pD~NTd>=#8p{;jxI^X{idA+9De}1x#CsD-cvu}9}0iA8x39q z)Li;5?%`550(7s5LxJiJKuI^Y6kSa}2q?bZ=_zNH-`!Y?Ca9fsH^B3@@`%q0BK{kH zyz{||)1W?Re|&h%_A~5R+on~=FIZrIM&JC+{ka0~%Uqb;C1s8HqRLR~Y}I=}hqiWg zF)~DOzPXAuM`EntA4+70J#%AV@4C9b2KU1 zgFWPJC`{|((sh7#oRHW}3B-sXz36b-Y85y5&y*^W9TaK&|IQ;hbK~-kc)z|!QX(pV znjHIJxm{2M`Om<{EkU7euwTWqdMoGdLw?%23!5`1Aa6~zH~#+60M$uDtZ(v$1VBIb z?Y2vxREyw!dV_bxY({+Fe<4i5V;`X2-Yyi7KfVG~<=~cG9fC@LCT?XdHxS7|{NAuV z{vY8qj&{M4-m2ujy+p2UPX2WbQE$D)yuHTzRu{4)&wcLEDE< z81{uBT%vdOJ>vVW!@fe(iSYk@UYXD0{t&3=t}e4=`hyCf`QCPc(c_>79q$kkOb8%Q zgK3Jl?(Kqo>$Li3v+EhC0eZKD@+{GSe;;g^JfIPTd>}(~MbB3PH1xRkTB>>wpb7_9 z-xBcAgFKBt%{#A6pweSrY%&Z_1J&VB$ZYe%Wl)(6L@XCCTYx>A{Pj%S;1r&BVrI2N z!3{w7b~WTqif#hcQN5OtI?qw$e@)-rJa&x1e|72J7#(9LP@6ap+`i?C_hnoUNS-u zIu*3#4&%Ifr|#!^iz8m{+_NrJ+JCWyOCQktq{nv!{=4rQW0{F4;+tMeR*MulLjLOZ z=E{b1IG?^4CE?0^P{E`We=Oar4(fv8$5%rr-w0HmCF34pfrs%vb$m`GgMcpYH{$-1 z!Rd|rc}YD_kV5`Hdc|Fa>nor^8yK@0OO$Z_Rr~hF9SVc~cUYb9V^ZZ(r7m*(q6o;a_eoIuj113Y*>zj*a9bzHAjHe%^? zALM&5KFnD=0P$|s$M68LHk(bbHzJdUJ5b@^7evRx_=l@ z`ekuc=QSmW=Xx9V|G51Y{&7_9d+7!R0@VLo_DyS2kRLRMKDgJM1L)j|P=@J|l?18= zmd-={WW+Z$gBDu0^9<~dtWog#c;xdvkKXL5nS{R@yd)zOlZbeF?89#7&JD=NYUOWw zoPP-UsJC4C>MkJu=nM<@2Df1BSFh;REaju18W}79MQRoU6!_$gW#2g@;Qt%+Ih}vB z0}6Ox%h9RMD9BswPL|bQAL2agS6|$0y%o^%E$=p1n7)ENtebiB^+^!y#b~zHjPU_N zJYY2Yl`*o0a6d)SlzI4r+My?56n*Gt_mpwWCN@Lt-&4D-OGQvWXy5U^nwky&H(J|x zRY@Q5V_j%}n5zix$B?YN7iZ|OxNi01c(J+%_H=;Wa5+r{@kxgwr{obp;`}GSmiYDH z6858t_d$PsBhJ6z>H8B4FJb>X9g9zVtwlcDb<9NCt{m}mL%Pgqj;F}KdLK$hSC@e5 zen@`jk+lSB;_jY_XZ^LHc4#%t3+CU5e82Cs-kvObKkE_vy(|C3~Fr7swbpaxtI5Aj zv5<#V>W|c7p#L3%bU|Am_=mce%)D#Kkk>}q#O*z?1nBTx{x|6JpptB>Sn{&#D)gl* zW}D#GK~O7AY$*8TMTh-it`f0-8J>^*aP}}+nFssUpJguow;InsQZusg`ZTC6hBHl~ z?d&1{L*}*X27kd{GB@1zPkRM>Kk_U_?bAuv?;*}3O^JUA)E&IvqO+<2g%wkR>+3S=Q(@#^ii`0pMfgq`>5=%^A--E;_3Z3 zO81UMJUsO1Vy$`;uHW`h=e^(2*u^!&q_T|T2;z6f)ro<$yU0f>UL1HUY!2#~q2+uA zl1m}~uJOg1@~!y2<#8~NgfpPPne*oiS1@tE{!_F)q&CEFj5dzpn`;rzGahtYJ3xhf zpE9RCYC41KcWRaJR;c3o!!Dvd@f*-j>lORJxp^4%kqnh9IkTalei*jhRqLaIen#81 zfW1os)EC#~?<2Fm&imndJlCq)+mOGGGuHgrJ%{>AN5+$ara{PaLxJatSxp1zM{SeU z+$Gf4n!$`Ag$ zV`68>K_U37p5>}jjaZ-VQ~aAkpG^pbtE`V+vB(&vDY8y}Q4me$kwIN_~0|)F_O#4@;!PaleY`0P{EB z|6xCk=E`~B({R6?{46vsLcd|p+M>{Vuz&qsuV0@cQ1O+u$)=pV&4=f=PPFMdi2n7! zNXz}DhJ=3OO#Oi~Tf}hw)5q!Y?~s3vslGD}&LiaOw!KAfSdbsLFAwCdc!~Z%lk?m) z13$zUC1Gbf)gDZ@E*!>CAEv$j>E{N7Ht{X)Lw(A~3KG%Aee>^P<{mC)0^_uqG zg#PCTU)H-ps7DOW3&anPgUWMMTw+1p8q}d39R7VbigBL9Ep2vdnRvg-one2r_<+i@ zc5wV{qa@_1vfS;?pOI8Ne*^unb`XKONu%1}?^4853IT1GfUp)|Cwk0)7 zei3Bgee1L*4il)fYk9p*8)ioFyr)f*OV7hU4|pqP=qHCPt~;01^Zz)9cyW+%&}YUI z_4m@aH`m<~Aa7&OD>Jgrz#f!Wz0UPJi|bXtPs|7-Qg20W{>1$W^B_!)&!=klBEO%o zrytdCM}GS5%-d^!bwL%zNVfK~{DAmp#Fu=@=m_f7?NN4P&&craokf||oNl1f>$`bo z&QlEa+scf=E}<>Zul`Gww1fDBhtB+$cERC`0@mJ%&3B$+f7(QL*S~KWs10^*`RTgKCQD>1I&-1o7@@$fLZ`Zd|{0*B$d0F0fxr$*D@O$LNPO59jNp zCL@0Dk{@i0{005)*O8e2qXqpOc{HA?tcCf7{y6R4rH2uZG;ouiAG?ZpZQ$G9yy-dA zOS*c07K^Qi{r(hG@|d2C`b1w@-Itv#us8jRv6&&4U=R9tEvOy5>ae)(-shpzzXen% zlLCXjI$Ed)H6K5camXM2?t0%R4d?YyPwl$;R@I~h{nL>==_w=8ZoH4Qn#WapGw90= zIS!@$ppG2o7_3jdg6A1}#w%%|0{LyOSJLqhUK|;xGn9Q>x9&%NS}E&xz_JGCH)J+v zeRUG~#9%IOt*tly|CC0@w3!jE|5?f2c&@O9F0RL)N9`YbiTHR}@*~OJ zlb8=(WeaV_{*Meeq$;{0pJ!TaXl0j!KOP#33!K`7esw4FUomYrAwIo)ilH}&`IHj7 zQ=B_eC!xQ$jyFEYL%cjZzk84QL&V#8@lA1#`H;^(IY*^cma&WL-2Eem;?!V|+xI=1 zaDRmQ>Du0TIB7%ms5@1Wn&6?SLiR6p!}%l?^^hndj-KGRJLKJj?}@#chhBg^~v z-MQq^s?D%Rt$d#)4Oe?(zf4Jc-`$13pODev@q31OmC4*kfu~<1U;E&iIXFY0?&%R; zdx!c9@leOQZ{bd{kZ;ER^07yq=qLAoG^g|1LY|r)mLCnVLA=^GIIq(_N2n*3k_Nxu zLcO|ja_JapHR6jFjcprVUc-4buk<#n$U{8z_Tcw?;gV0hB7sRUr z7Hu6mXHYMz$X9+n_5krm=W!W_p=kJn7T$*s+QSI_zZRq8frGG51KauE-Z`=ONj$xW zp2M3NPoOsBc^7c?7VLYq0=>Oi6#iv&$)$f{yAU6?g|y0=nPPsS#=e)SBMJM^sC6+c z`8MW>7=L$c_Bsc9(JADv=)#Tq;K=Fq9mi)ePc5b@&6oUPTjN5aZKy_OGX7=6<8}zr^ zJmn{Z{-VD($`Qhoo`C#vbQ$OUO^xus10e@k`(j{U2g2g_YR(~FY6^YCkpB$-*jqbu zKza)MKYYpBiEfX2R`+oa6M7Q-^|+bM{N1adGHadDT9#f8d(ayCWq*A)eXc~3oH~WsDMZE^TK>eA^%;cde@n~M7^kQ$@V8v=9q^W^j~&;i39o@ z;{|_ijGjR~Z>(yUvCa|5^Jrio56@ZXW5pU%r5H!p$Nm(z%S*)}Z{-=sZq~X(o*UEF zM3d~$e;7O`dD%Y-_LLz#w|sgTo_9jjE9}k)>`_T?T*2Kvh^LvfjPkL!*l*_W6D1B_ z*qg>(ZX~T##6#Ubu6p@yfW2Xm%Q!vvL0)@f27KM(^09wX{2z$lo=8-m*L_RrmFlh6UTs&|8-k6m0&rx6Md)9g8<|g>3Mgcv0sVelR$9_2M z_)&)EA2)uJDk$q^{I2zP_Xc}VuXYSwZC|q= z@mRZ`vrNbg{KN36XZ0J;66Q(YS{3lJf@-sV>p9MXT*CZgcxT^LGWri~u5H)o+u)Bn z@7@X@jz_%GJFG0D)(-#D8r}Z-)jIgo?w8vgHV-U*54@M_-kFPj@qj>@YlRrdepY+nl z;_sU1yhZ)AsT{5?=gjZy=lm??z$_1T6*uFV;6eR?_n%y z^{VrM{~t>7&Y1~;z3#|pjk@&-^Cxe1eEF8Mfc>jGzv*+xl@R>>0{`;&UWm`LR>?fh zeS!Vzf3-VeI}7r$L9*3`b6*xAL+Fi3*5jYt;D3jHb*A<1Ui{>b-WL}*Z~7SV`Q+o< zuZ5Ed_3!Ox=dV1$JWc)DxYfM_KKT8zBwPAN2INa$vZT}){eV%PqNOT)IIoU<6)MT0 z@b8t`$C8ZVP!AgDk>j+8L;W&Cs?E#kG3L9N!&)qrYYF+qKfnAJ>rvn6Z?WKv`7w=k z*(H?;8lJcFC-albR?JWIg|+nUv_<^ZXG~hMd@JmC*ZNDJ?6=h7ddhz-oj<_7PBgO4 z*JR=O$Li92FTY2A-9Mq^db=6*iz59yZn0NUuN!UB`_uj!=iR7C>)o6!wzwWy_j$`e zAmW_~?&ionQh1&=9m$CyE55~bcck~tJx-`+)(S%*r*`|H|`Zqk47N@4o%f_fBUcKC1ag`C31W{Vbw+ z75oVYwd#Q81`n?;3eosVRbU{y^1IcBPUDjcVARWgS-dyzhiZPyqY_%Hz8veXSxCB*Vos(ZEFkS zsW$nk>iRv<=RW@%(e4JQXEc3mzx|*G^^bOyj|H1%9TwM&(<-l?Q~u%o`Q%($457~- zc=o71c7?y|Og(Yhb2Z|rmf7)L+gHM0^tp%iR4zq5a-cx8ex3<^W(IDr4-_ZV7bJ@3 zvqT{u6OVaI+65rbz1c~(9AscW8M0|b!J?qDty4?Y%>D)YSjU~elji~A|FkaBam!Dr ze>8ddM@5}NJ+M)5w_)gULVfiaU+Bv>m_JG_-D+30dhwHBdUBZUot46<@AXUg>1yY} z9*>SX4;Ypp{vWPA+W&I*Cz_8rDeQ}5%dTRgH2p>oM(H&pM@oWzHZ(nsbcXSf; zIjdyhrk)`B)s=^J6`r`FKgT#f;x!vfr<5p2qVHhKB9$bV9r`dO=t_r>Pq6CrPz*nnS+cSvB#`FdzP-E8|57 z^A`G<4E3)`@NlYu*)y#4@t-`Qm%?dCTL`RO)WqA8B+_1@=UF%*RVYF3SENqm9% ziP|O`m$%}GzjGg4dh$HjXK`H|e$B&K3HGbM`1jyPY2^E57G&9V;tYbm76r^%5b9w^ z=>o^bkpI*?rtkR8kA6m<&YU@^0Q1IeoQBo~E0Ir*gxW5B3P@Xer)RN65htO)?)82o z@HqT^Vpo}`V;t%UJ&M_?-`*i!tUBVnLtq8YcktTMHN{71*zdB^;|1EFQlAtYmA=I! z`1`UXui=ZKxc;%haK9p)S83*tM*9qJykEUs(4RO{$b0-7` zA^d6Q!oCI*7vw+V)lD;3nvrjG_Q=qL2NA!H-pMX*S8!Nd4{cg$z|RJGp1iKJHcJ@! zXZ52gz7PA+f2-D6_3OqCyidz`cSOK#)VJT=K00vfE$l~b{qq*pVw}fNQg43f3e>w> z>ugBt9wA?9^q0P9bPDG`GSy$Dl#S=>(upn-3&Va4hFO?d%D^5D27Gw!#6|c%W()t6 zyDs#pDMi5LvzqJTy0SpQX!a-UeQ|L6IZ83|%eD{8U3&Oo4{9@;xBNJa_-^#Lv;5^E zLcY98piNL0^3rB)@c61G?EjFbXZT)E!hY!Pd8_vc_OiV!@8Pfs?A?%qMIHYy#Mg`& zTK@|V>>nedd*;@8yia>e^K0KH_#Uk?cKeA-s`$O&iqX@3u88lMM;guvXP}-~KxauD*ms_~57ZVCM|Av-(g96PnhIF*)|3Ff)3(8b z&2rK2Q)M;@76i7plo7y)(2~j9-x1VwW6gFjS-tgvo0@YYz_Wi+5 zpT)JPjB#hFIH;59Z|OKB-&E(>+gRxkf%N}y^Lt_QTI^wxpflgfbB)i^6snX#V$MaEt=@4{D&^=9YT`n!PgqkAgr6ny{` zI%PF!+bbJDKTw+e#kT7LiddRWZvO-Y)SVK)Y ze?rA{#t;Fz<&T(5DFOOQWV4Iqp&$bErQZ%K-x=5|*`QgipCkhHTw?3{reHuxiI&`) z*Ek3HqvrEpKXV6AU}ANj!fg){sIAq~K5u6OG%Q(kA)jLt{=bUPn?uzEY6Xqjq_cs& zfSO!)*8gqWR|2&cU;O)?TtE*|Zu#U#j1ZtcJ2t(@dP{)P5qlXZWl6(%-@1Fq>;j;# z#26C|u}TDJ1R>E3`UqaCy@XSD`2zsz^B%Vz|h;eMAmb#n&+9V2Rb zRLo-79@i^!IJ#2>P=zu+BFqU30(4-VSyjCWpsHybb$uug2+*12!vl&mK;bFA7&*A_ z0HBMMcE$@QL;^~Q`pk6WLJ@)bEi8Ur`9(lY$#CCJ;~f#hdgEw-Wj3JGB%MY)O`0Kp z;==r&%L!EGl5bxOWX=79{;j?+5_AIRq4dpGDP=dHsmY1kHsyRLPzA{)?>g@aXd%)N zmA+B|P+8J%51LoB5vU~flD&OqK=n@15_-eqFopj=Y{gU#BgmVl=QmA3f_-}8w^DOE z?2qD=;|4v!fKDaN1`Tzm5U7wY%k2{2#`CEKlY>SwA)mr)D@3+20R={4gss`Xm+-zt zuB|^U@cg3o6Q$(@>NN4%z+XI%2=-dwA=@_(_$vtqr<=EjK&`FxNz=o{2>wqwc@s@Y zk3c=x;-oTh2GDGz!RVZZw}7S+Ve8EEAy9RT{xUi>zQO^2-?{Y)+c7|wlG?+^eeoT7 zK4o_DcJ~=T8lB6kqmZ`S-u(*yNNU@AtN%j^^y}vbeh+0(8Bjw6`Ly0* z|HvT^*ncMy{0C>7%613bU)VvCJj_Ob?iJ3>zaa>!S&62CaH9pBw~7RpxifH9@`W{) z1Xp@jJN!P|qZ0!E|gH0Xps4-6oGX z$T!WeEml<-`%Ax6v??qfRHVYMqsZ2=fKDW}N?cL2fqcvFG17<>15}s9Ptj~0Gd!=v zSN-b`^axZN2j8xtUBrHfa$WxR^%3GV(aKxj>})_aD9qLQ+tQX0zpb1?%{3l50vYYYhKq9pt4df3HmJ% zsPY=lIww7aeACwCZ+`Kw8t0`qQzq0*fO6dTJN)7)KrMIw}2)iFT4)w7KJ^ftsXld z*@t*SqnoRUV}L;2%o$zWu1tWww7K_+{Zk0uUumP)u4RBC6xMhZO<8V;>%UG*-2a>a z&3bWbKlLc$4}}-LqX9OEC!|8-6Nkv4P9pWiWg2KgK9#OLcraxLC|aGQr_Rac&>!g& zOTs0-hvIt1;-~7I@H|>~Cs!taaKPWkZuxh$7xBBM$`xHv0+cYREk8*q5AnS4au#Jf zBgDUI8v@Iun*hZp9=PnQ0R8sFj@hIp&S$*5HA72U78olbADR&4|eCNU*Cs}wC z^zBmV+NGdEmue0?cAg*hRkTb*B0&T8NWH%`x3Uz}01~3A_V>;?=$p+)Nw~<*BL;43eP0wWR?O7n;gJ@+VcwR4dqNp-J#8pSIzj`u$i+2 z=)zTwc|9@&d)}_MmUo=sza-OZxi=s`keGFgTtc7@QoXQ6VCy^Rhk9uhr{WEq7p++? zSV<83r!mu7GsI7zN;=1_;H3;`QmM6{9~r&?^fOIMwPCaq{>5O|`@7~(v7c*J|K3+M zLGaJa>_F=nP-}>k#-EW3#Qst$*S_XffV_~}nuMHY0Ie;tk4six5b{b6bog@o7N}l@ zRit-u>%xDK9rEQ$7XZa5`m^$p);QvEiB!JV{dLF}$jal(!-^1ZNbnt`Y4^Y%ZfIHE zXWj&8Q%d!_y+wS0VkWh_RwsN$z9fDwa`S6`$fNLr$yHrvLO!g} z`iF?xo@?fc*dI+b?MBz#$QNX+8ry_wAV0cV#+%l&0BVt}bvOOdOUR?>p&c6AK7$H? z?5~-%guNt96r{@~pdLcW$`|K83@Qn| zpHAAmZ*blc>~1F=LqT0GvQ2l-=_2?ma@Z#_Umc(?#iUPNrrzaQTx(A-@BHd>WJfU30$vTGxc2mB!2H)IbtP^ctR>z$4kNwRL&Bfw*T%6fa*qEK2*?z zk3hBcCek>HVTk?k^7Ca$L_DUbab&9^3#bVwoGT&(g#n!`&9}<9SpxMYvVmoY*#hDN z$xTP|pA+_%^5*`FX;n~(D7YJz`z3K=@}SZ#)Zf%LczoqKjPn(jT|t+c z$Nq`Dyl29$j`|JRC1Hh*JL+@fgv-+gk1Ok;;So*=A>7WJ?_rK$K$QRcmeYbNB`hoi^nF#QzaRADg zme>DC`VRJ6ZePu+2{ybRsjas1Q3&e2q>fUnwrM~q3m=iBob3cOFvT^zp*?Fo>PfT{`MH&m67*`0skj}%wFWi3Ar`$B5nyn-ze`%imf zF_!eh9{b1oPha~6ftsg;-E!O#^)C_Lv*`u5VE;7>SFaoPAy8k@@_ed?5#NwzG7gHd z;XFu;eLqk0pgtwK-(A+B5cPUt?p0qy4FRn#w|wVsiBeFXl66+3-}8mOkh zw0<4PJ#rrLE9K`3i@#H_=ZZ$Pc6-;NULa;s?|z{c(8}^BzTSEef%s7-(#|dQCgMNI ziqNIpys6l4MG5WC*8nXpHxXmDk&Ne;+^y04P6PIj^8L-d5f7Z7oXBrm-2@^vqKs1Q z3DiGnaziyN!i4yiPjY4FQN#-p{oY5n+QWZQ`1f2Tr=Z?Sq225|=7;wcHe^ZQ7Kc5P zeq5m%n}GaOvg{aTZ^ahfiMcwhZXo_y*pF!5ig1cTaVleBItv| zdfLrI)N3f^%#S{3H8)!3H5Ky(TO=W=$EXQ=aLEw zP~TF&%s&!c!iM`D=6g9`5C1ND;%Pb~rxxpfzh$j`@w}vtSJ%EBg@2M42z%Ob8um(O z$Wi~^H}r#~zVZCq7UI6RR+yYOz9a>It>FA8H^apN&-3Wc#@}x6uTtADD@6vn;{7(o zXCA+7hV^ms`Qb;Xcaj4V^1V+@LZ0`I^*uQODgnuzGvUnyD)KExyMzn=qW(?(Zrc5V z9e*#Z;Gb)-1NKDpU1~%MKjLq4snFrdenR{imi*aX2>HrJ+sNW?e_@|V9XZLeS8Sxq|K|P4dF8G)GJg6>6tzT?@ z{YHFDiO)RkqDP<>$j%oKxefnA5gt$4vF3zpMzG&BFRne2j-cKWXTI?lPeA-BWjgV@)DQWKw9c;a zms>#nsD9Pg=AjsEh z{}r#RI+i{L`4f8UcgMU9zkiV;%aAY1l3HwQweICNwh5VaJGw>h24tbQ?qpp?Ef%l>GRfeUX zMSLOg`|ri6E%0BWhW9r6yhDFqyr$|9lbaA<%x=!jnuLE48L5m}$Uyy!N;OfvxeomS zmEaYrcUob8#Uo|i=93BChrM{#}y4<$PM1662?g2N}&t28{T{vfSvZD_E@ zKb-f>&<9-?)boY;Hhd;=5b8JgMCG>BAs$iw^q4Ap7Wyi6)5AT<9R5;L=eP@zGdTQ&O9AI2!7JpU%Sp&L)>IuWRrSI1cih$FY(ssN<}Lp9 z)q$&cUV97QO-EqA$sT7$HB2!Np}4T6YaHlrGpL!kXINnIeH@5ycb66Mg zg!BUS&Qa44+@H7RPuOoz6Oy{Uj;a+QpONGWY1{n|{$H{%bDyaSs4-LrKS`+e5b87U z&)(R*9sZFJQZQ6ZFF?MeG$P5ANrb`_7~s@h7#ro9loN`kB<1$}8hnsp5L4F2qm#LHs0j z{^5()^0*#l&+IxaF9NmnvRAstxe5K8;R`psc+ij4)u~-*mnKk+*6hi<%z*!;UOW?! zZ;Ia)v$QM>!U*w1qR)kDb;tvC1$$d}JMst0R%)cdAp%uqoAZ*NX~>U6jo1^yJIrt% zRkzH`ZX%x-lUyG}V?n$uJX3MX)(Z7%+AEc}-lOPmllq2AKS{y=Df}FNoSz9QBN5NS zB`2N}`kiXASzlJczKDAK-FJlwY8=v3_Y`>$_4_p$irLbmg!uoKYl=?;;xUnn{;NkH zxa0qKEf-O{zc^=@FRyRAqF@Q~6XD*z1C0-$?-E{OzwEXk9+##?2uSXMJWCzqGE z_N_k{j`%_JTdy?j9jN>?7R*@X*TUXO+tAcw%?b5v+LwK7xu`eFzihE8zp4&-*};B9 z!U**MsnNZR@GrPOsa0K1zcUrT3+SAhAoRPWP7e=qc%pwrUg@Q9un*@ctM{#JmH~Z` zpV)n}L7hR+r$7~*RP2XBF!|=ugM|8xkUan4lbF|%H6Imf2qDZPJy23I{R90c)8B8? zIg9+9TD!~n$1(U99TDrRYcdJcH%l&F&&fvpRe2wu_UWJS_bL;6T8=(PyiDr0mpO11 z`%mHN4DZ~F{)BL1`jDY4o>wzGx@=!6;!olB$UD(K&^K~Ho!*b*h~K2&`DwX_AfDBF z@}757H0q7(Rr2ZP+KBI!`&t!+Gzjx0+~@n*tHtoVU-|QQ#}oRsr*jUlzQp;6*;<&2 zYr~#V*#j=PE+tTprk>177Q*?FbGCk%@kT$2R<-5c^d#aXiezDP`3A@f< zek|V}<9$T!MqaLU$MY|t?@x7rzZ1{+LA%?5eyPL`hl;)g!n{aZ@;XWzfm&R1dMxVG z;&;>e(pEcK)g=sYy{I~&bQwbaBVfoP_Z9K6$h;www+;CV%_8pXnwO}r%g+b>c)pa- zKQ*#YvX#d5#LJeg>DdT>N&WX=iFzBTvB>>dD%m@*-=waM1|8t($d^0f_wua)?3whg zkIdlDe7OEW!zYUr4#xS0~S~P z&LAF_GS}vMdl2!A$gbo^dkOIcdHX}=-z%86Qs8{oaj_HntH32=_476I8Je`Qj8zTc z{;F-=&VLNCKg(+qZu1iS;p^W5UYns0GJJ96re@Gj(l?=a>IC{t8vG%;cg~}qNp`<( z)g+Am5BZ+nlL%)5mE=ENbEi<)3(cSh{N+8!2P6-ij<^~MYIJ!6hU*J|XKVK8O4eX8B zdOP7e@+tT|f8|LUC+fx2C!Uuh(y;#$j{VZdjL}af?^&{In=a;uwEV8dHv19gHx-t9 zZ+L_Jh`Q{szK}BBUzpeId_xD~BkJg_&zrqWaea>Ww?Ye$uaZs9KF;}odJ^TLhk@Tg z%qNoCw$5p=AU>kjf85#=0{f&WEfEo8NQl2He%3!E#H*5hOzjO0I6qN8Eg4p8#3LeW zCD@J5qJAn&61r3K4fau8akab>7xH`c-}mfBZDG$PzBKz?oX30@IV5Ain< zf<&0twY7BJF%5YjF$`B9)W`mkxsNbMG?0%-&q}?n{)T)&>Qe8CH_KsPMc(UOzL`tN zuQ=adH_i9KdgpYTVlw27)cVrrV-c=LDRylV?n69A4t^c-BNXu=X+A^mE3!j=NJHnejn83zO!(x2$TAw=)K|xRQ<=l- zWs8f@FHoJlG2-Qhc_q^Dn_$&v$iHL)AIIdGfU1!6^}$?MCSg9U;h3vM4xUHlaltwx zHbOi|k8EsjgguaQ?NnD<34cZE7ntJ=!hDb>*VNV3omh+BQ#_|zhWwe-oxt+oIpRI# zEAoxUOc5`OsnKn3#2}xcbq>B)`w0D_K0mK(UJQRC&E|iSO6Z@8=(gW`F@W=2$L=9C zn@pIel+}Od;f;QM%u4wFAw;x8*&FqH)iVc=BqhPW2=k=%t^SSoA(!#BTnd2vh&>F-`8Ef66uZDS z^Ck)L8>#i6%^fcEJ4GamH(szrzA5}<)5ep6#QBcpY`+c?s5G@TpVRJRzja+SRqlQU zHKp3yWluap2>t2e{kl#is2@sa4ejW=gZi^lO5lP4zO%{~X74<@iw*IiZ2Qp7<94Wr zYMGi8OcfIBpPjXe;3Zzb9{0H{!aWrQ?pF!KfHhW+b^-7 z(C-yLDs_^r9r2_3!WOoPL_$3~-%#9m7WPeSANy79y_n~xZu@+3_jkr1=&E+C{ zstNMDK7wpUpzf{6wIJEb=*ND}~F=8xSAr z9NwZIN=H0Fd8l#5Hk2^WvFF>P(yz!jMVTg=r*ttdCB|9JTmBF6vHJA|DHm%(z91NO zuU-uGdtsrq3%Zr4&#Lx_@-ctneKaoQbt-&Ey+_k`dD>SU2i#vw;7I&e)K8Uu@4Zym zj(UYm(|HxSC4_m*{%F~ODC9E~-Irqer%{hmc_g)~lNI?qiOKBhYlQuiQ(hX*Jcs;L zI;MEPDq)^SInux*x&rgJ)Of2JGd0*_+0SpyWj#&td$VQwTS?Rl$rstIxj7-f!foV% zpk`1#%d!}VKP!cQr$y|XD5VnWy;?>Uqu25Nr1^jku|?gGPrsX)$KFHUl)0r@e@4I_ zN^sBySKK3f|8Twhh}T6L^p)oM{!1;+iy~;O{!Ith)0H?Q@CGPQ?wy*KE(t2q-B17!OV&< z56Nf39DEFWON)`+8S?<~jl{XepB9AqQ}V}KEzVVo--YL|$$7H?l0a?0m&F(ILSkN@ z>6bx&o-Cr~e8(2wCrM^zHy!(lc@mMpP_kS9AF~?2VLLn9IFDLjAzYmQ`s# zfx0}ec(XrW?BZI!`0m!*TZ#3js(T@1!n|bIiB+@8gzrtSg;ZH=!1pB-%GsMNb@^D& z?Azt)gnk08$Bg!JKjIsy5w$nG;)HpRwK<`;BOpIw?w>r%X9)c({R#U)2I>ov2Lz|R z_YtVUE!I^Yy+HW>Sx8)l^b+-S$;gKzh8c)I$V*%cJ-1?iBnOO5UsxjkBX>_rT{a;2 zzldtff=qlrNm@|9q!Nhpr;Wd?@MuQu5l);UcYt4 ze)uoBK0Eu{<=B5I%5JudHDhD)7zga=$gF)v}WzgtvNlWfKFkY<>1=-8&qLqkK!Ek z0|C`Baez}oQXJF}?W{NdgmM8&pv9~3YtuGR2e#(3?ml-BP~-gzn)7`=fR@M->noc- zV2Zzg-s<%BGNA1kPw5gzWdXG_vNwKe-623v_HE~1YF_~;!y)Mr(F;!jjWkTEmR7CD z{mPrYe$dwdYNPp5Z|j|RfWGRjzsz@jDtB@HNSv3)$%8-zS5_YLi5Jjc{myUX{71VN z*Pr_$WYvlR{n`CYZR5q0px*79lAt%_0-9j*Q@~(YyZz$2VrQ7t$tVJpl2(e-5;s7< zw6!XebI_uuS0|;frzgAOc_`ruQ9oiA*CqA0M3|cZz1)z^7HL9&Ug&&s#CvxhpkRhC zl?Yd=fC_Dd=cO#)GeFlhlyOMZ-XuVYw`wKsk^)ur5Wmtj){B6$XziYwkUb12z~QD> z{qDCw^;Uj6?1D%Ip!^29udrTs1{6oz%0!b=9YBBdwn)mkyazN;D=BgQ(q=%%HQdc^ zy6XdIxbEbKotO3l3T(*Gsr|uqynlDa>LK$T(2w!$(yV$ikgx6!8}?)#19Zqxc)-P? zb%0vz2-vyh3=7V8_?d24oHh^SOF`^UrahojzAyqR&i??kPT$9XJ+2QHT|9lD&v|sk zM(hV8us^c)$zq9?-n3g|EIk_M)w}AxIp-=sr!w;F8)VD?1=J}o!}7HlR76cV3YP;P zgyVUa?y23V0qWzT_3YB)Hv!evTV1$akO%MI63lx-s2lq`;X%+*NZY!JZWk-j_ z77Kl(E!$j~l#lmG4z%qZzu1@7!X`nckKAd{Ei} z&`P!UR2_r*0exBb>~Yj;9_TBR(j3s13VY3zt-E$Z$_Mh`xRCTT64U~NKULaob^^+6 z^j!8!s>xzWh0a*M{Pj+{I-bX|F7(A4obT{D3;ER^wTtWg_t9?zg8UfMLE4%DE1v#Y%*daC$+pg>}oFQ98Py)(jjH6SlTXU)RS7vOp+`dR7U zash2L8tr<+=>^V*`5|-tcsl|5(9PJW+z!yN%uCvFgDW8aePQeOIyC`GyPPe)I#iZm zuYCS2I5oh3^s}|>*klZ7rXmLGfz6Kiy?09U_)>iWwP~uEpt=p@i5YlIGdCDe?@Y5$ z(oP;gdzG5q>rGjY{pg!ItFV^`{=AnoAX&i$XrYl`4bS=r(98Kx49{=Eh!vfw&@}CT z0)O9Gk-%-Xf&iuWPtIWdZa{;5p`WO8T#tCBb3l9lX$GLV`hTolh)&1f_sLMb-<851 zwN?z2=>*|@8{V>d-Chl7qrRxuo-}Vj1=r0V+FR^KfXbS-jC4u|)MCpgMUNk2fMV@e zRrO6DAjp4KjN)Yn$jeBj-@NA$Kv$J;DslNYF%Q(QBm0d;QZxYl)K{YQMGhq&`iSJ$*(=7d@54=ARSi6d zheitLgDzP>od34h;Q`o5Ozg?M1({+F4ynm2f# z;VlD-6Nm@;oCM9*_y5E1J0}AUiQ;@mlk4nH4Pj*0T|M zF9RX}S*K|UtL1V2-51-w-ib$iT@_KaJ~tB3aYO1SH4h)-!}`+1_aCp_As(z%)rda^A58p<)duu#Z|d2X;?{s#?0kNIbnQ0ybH=7O?Cv`epSE@1UJT*+A~%x<|2!OUi$-BuDpnd7k|?4f{K|TRqP~6dRSFMX-fBU_*J=kpy=(=8c+3=7F_`{AExzS-KK*@Hx z#ZO+z05yC~y*le|K+e$n>DvQZ^|1e=w3V-}vB~28n|$N6BSEFoTU=(7~8J^{RoEgt%?QwjgIM~EkT*2J;mR zO63DOxjUC-wdEDqztN6NKW{zwgZf9Cdhh4JAB-R62xt@mwZO;w`#yI>XRQI z;5@pP1#tNvwa4!TZ%P6_(W3N} zVs!-6p`Ty6oLuu2)FFL-oxv0?5vVPzMOmz z81$i+^kge$0)6KQz7Jg!qfa_HXugm zjb8(K9ZLW`&&WI)h!^vZ~FQU680lm_sza=)K7YL-AjC|4gc`5^4;u6BjmC7H1`tU5yTfG zyF4t)3H6cIYp)9pwcrn!-d<%ocVe+WjU^rQX;6iXDb~{cFVk@UXR9jtm%~4dB@NJ4 zdH~wIf1uyWTc;a;znK==L`A+`xc*+i2L>Tt_B<@}<1hhQ+u+_-iYTaY+VVz%A7r_GEDXorJ%$fXbb$iwv!c0F^>b<&UzQ zd2j50X!y%&bwDlG>L2%I*9SEIyPvyukGdhA?2AcnSjWbE8dp9$2CgC+z`fU`9g+ zBXKYM!{FgZSzfxZ2V>8IrIRKXN9O5u(hsx(*a=j<)3W2f0zQlDa=9tb2_xLU>tJQS zm=ofQ!7a&?iTbdI!!OE2Q!k<()REu*PSy+hKe*5FNU$>M357v2=f=1YPd8A;p8q_G ze5d!=&EDWU(7)a=I;;5w#E%UtvpW6GL%-W@W*tm&!2WeL9BIqaLOjB#k>VebAy5IE zX)$RYu=hCwQz`F^0S!KuN-_PxSRApSk8T_Y)IA5Na0dO)_Cw{+ABIO#?QlHu<^IC< zYfKvYNp(g1vib6%IM0E^r~G~~i|bC6yi~t##4qD!9DhO`;9r}3J|s6UBfQ^PEm1dF zoZpz;*JlMr@E@bR<(iMT5#pb`Sm`av(8r?p6@TS4kZ-ko-5q^U8~&tq>Cz)V&mbPi z^Y`8*%8lzWIB&oDehdD$o7TSkh7j!E;A^9S8Vlslb+skyR2o55)E?idf73c2`t{yI zUoHdn$GrASW-)6aU;PJeH7vD2yfm>!F^|e8NVs32W&3f+E7QwrX;(Jtt;5}1X~nN# z5BilV1*)SFZ?x?9e(*a1@7tj`ug(m``?SfYZ|*XOJPsA!d}we1R9}PlKc}CO!Sj_G zrLZk!MgMKAN{*e6Y_PblJ$NuP&>Zi_{4IDU>M5ZfHrW2>@^08e#)k=|R(b4a6?@+@ zgA~N8bvIhOGxsCkVQy(#-AJex)F1awk9rOJJldSS-*-LY^TzI{dZ#?#PX`t6vPX1d z|2ki6Ev#{c{`UO|I-FmLe7{S5e8sjNLOot(@=!n-pyzw|bB3o3kl(d)i;-~1xc5H4g+wdFp(LT|# zLy`_SuZgY$@t#MapS?*>4Wf>t9+Nhh_s8TBZF2vnD^loP&ML!OvD{x+)a@RxnhSS&79pu?JZO|q$b;GH@9RmRYRc(>;t3z!IfPv2>rsK`FQqx z_>Z8~Atx=$v7hbVH{?}@Lmt|at`@Ay#QF48hFb2}k9zs|-tZtFEpW%o5<`IVT8;`n`xsl5o&!hGEdhI9FZy25` zGd>>))EwiNH%_dCJfsa4*xq`BenhM2Iyui@h##0`SJv#UfWPaAIC}T4IqFU0`r)|F*mMQ$^;+s&&^Ya~l!F5LAT`QSk2jjc5bs2?;3wfF5g27lI_qxt!$5bP<_Z({T>1@*@_ z3fylBGjU!MtXnrbEQ3AjdB5BGKozK#iYclQOhSDlr*2)`$bT>Qzy04Q*;7z}d67zc z2?;AJoX6*Q?^f-Pu>ZaOnF7m=;GY=Mf1kJvVP2(vhd`k*E8_Vw^2Lrn9Ej%%Qomdm zzk>Z~>~Z?;kc;_`iOtbfcLYsGoBE3xh{ znLz!1*x=9acuUxWhWZaZkq-&|xeTihx^dO`d#PUIU=H}Vjsx;B4~`)IWo9l}*i$#Gv?7iRraw{(MjX+0U{ zePtE$_rch`KmNVN-;d6oc${8Pi{D$@E{I(_aj2{_C{M$RL+AS|MqVgs>%Egd1yOsa^P|c zWu)v?!+wsea5;KT1m~NxT=3c+eDX-IpKy-ZX@~s3 z&E}Ixun_9U)q5JOs@KB5HzW%^Yz;&IxkD-TR0IS5fnn!TeJ2F-a|0rG-btrGzl%Rj zZ1=jxfPQVxIsfbip+C*3*4$u#`J-W%mxk;#^fMb>T|6%GJn6nO)TDTbB{2RO1^~i9Un9>g#p6@l*lz z(gEc?zlBm!FVEuI$i>(UdFf*ni8*iv_3Z9*9<17)kiQAG*}p1Xe2eS4dp}-0^e3DL z2e*lM1MJaQTmM#?8|+yv(ece zzdzf^)g_1e=fG{PGhuIFuhNPwjv4zCsM{-S6~e_Jzk~dj#^P*HpK6|DWXL3=Uf0`K zd1BrDN$mg9(w)PVh>t(5H)2%%CQ$Fa(d~(eM*P@6dbgInAJmkiR;!QOm0`YQgev*N zn-}p)m-cc>V<_UE;mT7_E~cSBR&@8rU!^JJmxBzu*Auk_D)WwE9o8jyo&j$4+Awp( z8@2NSSAVP~^m`LxU9YUqU0e^{`0X*uAoMq+;$LkA1Q5MLQf6LE0R8Xb^$*iE4DdXS zl}V(#+mTQ7NB;}YAk>S8KE08REJXc_aj36F;wAFUq54xs@=nONdM>CrR;%If2i}Pc zJGvk~VV?T&P}C3iAG7Gwsox9#T`$?#5vPTD7^XLG@H%e7e8(jFr5ACqZ=)mYzTb2u z)PL4)EsyDky=srYq^hZo{Ax(+z@IbXgnrp6=P#iapsMTNHu7XuHRdb2%G`NY#~>da zU3;YNll4Ey-{bW%jBY}H9rJFb(I3cbX*e}OKQU!-J$_!ur*8%FhXQ)W?au=6k0WKv zgjVc@|7%+ta%aCC{B4_KAFZwv^Fa064m`BOQ;?x-h> z(ITJw@_&Vxu+68|wUjN~GdlKwzbLyXP%`nUx^c`P!_xeLZzT1C` zF6|5X=xDj3(fk(uafayMwl{y^58l~yHp<_@dG^KjcxS&uzSKAH?_6yj`YnU*@{=+hTmSKvaaR7~I`?_kn{+MccT=a{hCX)G z6Z%dWuiP<*`hEAXsz6l-@}IVaA1pWSBmWpQ9@y8u7WQPk_wY)c1JL&p&)G|UfK;Vd zH!8Kgx`}+Ka`yG}a9#NKHi?QM4bjCxN=5ein9pnH8r%ON5$E4=Ev`&}1o>zD zs1KBqg?`l^H`B{~1^YG-Mz=b%k8g2ZJS8al6Og#{LGDwms> zYJPN`-I;`ZaPSJ%c1{rS<6wfmZR#~pg%2zGn+}{M$ZOo3bEO&T`J*8`6+0~9uewft zh@5FaeWYjDsWl-3`rfj9SwyG^^3z8Bq63zX(9as7_wjcWPUHQPQdXQ)Mn9_CvOR-q z8{(I)A*;f=Tgc~!j6y!YQzgt#Y9trD)Iq-YHmbki@l*ISh8J5#kapecg+1=D?D(vnjd_)xg15m7?1;BJYV_Y&en5QB zlsin1ZY0F#7i@1tUBJBC$or^p%1y+ZW18T*K@3C!ZVkWh{tgx^gArxjK%o+LTC~-@wwhe>nGI-IzWYYxx)U zqO>$1;?Ebvt7Bz1wjcbBe7aUn^lgR}`fCIC22^WHArFly$uZk?5r0%{(<&XGME{!^ zC>F@eO0aj^T$elDT!h%6Gtx&p+h3#qJ9+QgcfU{YU!BU*$5-rAUtHIJW*OThg!%gR zu#k`MyWme-H#EKa&5r!APAaIU_94Dss3IqnR{5ZxG;qe>kTu17aowgNmYkrCczsYJ zKwyO`{J|KHfYJx9MaVyTe^T9+TcGTrw|cyLWE6vZu0PBs-fb72zdtm5?c?Lfw=21C z7?l$G34@*vb>Df=UmS|Me2e`U=4A%trv4@vqJA+jtQuyr8}_SvbhvgE59&$neR=CN z#&F(Wbarp2oT!HWc?^3;en7us>|G7-x+(PMJG?~fEV)rnXB^s9CcF#v!_j)B^RG%_ zPll3WE7b(C|ATf>dGflDpMv1D3g%YCa|3f_3ff2E-^N+Szf|mkedwz>5oN58`^B36 zF4>ub|39c^xMy7k>hVp7D8`a%koO*~=xeSn@GsB*Y(I9ThA^KSc=*0QiBNyG=bbaj z=E3tcYIOfuh5hKyUznmjLp@{a@MrzFRKk30)y-J{I`mUJ*bjH<(D@eECDN>ZUw9F} z6qF~1M@i!T4EnQ^38nB)X&xPU31-mG@^saO0T$#l{hxJ(6A#!!e+sy@-y5MHSGCM$ z@1I%7Q~g#=pG%-yUUCCp)*->!#-))r!hX4v8&3M@2DT( zdgk$kAfJ1=G^6rxzRbMlN6(f+-iB>|zm1;6dG^WZs_=0$V^OoaI^_A-+xI02gn22s zdS=lM>>uN2z|D_Ru$TRJ58dR}LjAXQ+wRI`Dfqo|YfWFY73|NziS5s%Z=zmZ@~i!h zr#a-i(Q(3T@*vK;&#+o7F&+Kd^tniRK>_4XjoCZqr<@(IUmC9tT1NdhUip8i)+y@i z22}(Br9)oweQ6^bsB^@;zqF`g&L^LI>F?6XuYd|vOUhnC}0f3n2e z%ON{JeMO$jOmFAJ-;+H{_xzg&RD;;?PcPjypf*rGeQsz=B%n~pezU#0?+8?-;gd^M z;<1*aN|bgE@-41~qeS8pWdOw>c{w1ZiW5*Y()8yWi|YYZAd#}`sBs&hXepP%y$)&< zple^5f1Y0pC}jORrn-?{1nPy3XTL@w-51xQiDxx4h5-E}6E$=#YaO1C^!>dz%N0OX zi)8U{<+cM<$$F{vV`mQo`dZ@Bb*Jn)K+{o#Em*dj5~v}RLJVV<8ZNGBwA9i9D+1K_ z^4RNa4?qPer7HBwit38}viVw7^bk-CqM@&9+- znAKTMpnm?kHB>xlI$=qxt2hc^P%dAdzB8J&$Hr`i5{RhNI&(WU&}*2B@+hI^xp%z zg*2Bcdtx)rU;S_M4tGJqdCyc0d9DOBmee+rgM-Tfg+pRWo3*V5^rg(nfHP79fYPDF zM~fO%0eV;ZtM<1;n`n>+yFQ1l1S)J==ttpAR05Rwt!GL)YM?TqDu3kQh$m2oPRSoW zpbB{-r}(!0+zjY_QZvg7XJtU0Q-;2kbLwONrG<=APXB^EkbYk~d+$D=VkpmdHkht~ z{E)wS8J=BQjs1{omArj{aDTZ9p^qK}D9=qox@rdj9V)*+=4`|xoS)QQ!{5p)2vBy8 z*R<3X02QOo^J2Q=6xL!VOO!1#0j(yzf6G!G7C`3+r+>PUlnAI@vegGG<^^x8--%4C zWdT}6^*J^F4*?oTIw3grQxl*JNp;`iLKXmZCwEW7|8x(a_QY?#Y1f*|#aic^${HyL z$lLa{oj1G*RD+)`-alAJpc>3~qqJadD_{Ql%oY0?K&J>h*@V8(234`TO8wPa0SopwQolrmziQ3duTdjmXP=5VonB+xIA;`ZSRwEl$?xR3BMFM(D(;_!9O#|<*IK0bsj}oXQs9&lgR1E;7EIk`^Sm8SSAJuKW zf8r6GzlgBgySgqw|4H(e9$YvEs97nIziF(A&~K66BcHGCguRnCEihEhB2ZbC%xSM^ zguN#}dstLvVSxMJ=%SxU2K5njo%JbmOF&CXj$S)DUu%#1WhJb-%L(Wv@{h~Q6qf?Z zO1>+*`A#hMLtb65+oMhl*XR0iPk4r4&+2NLe#-#*RhBNe&6)`)HW@pk;0S3A!ru>V zJ*@}mL$R8LsK-kHbuH|e;p)yxc)klQF61acvkD(NEAd1f@*pDXaqN5&pt(f;a%tV# z1}Gxha`E_b3+z9+>urqaip4pXd{K2Bwoo(p51Ht|?k3C~zg~JRlWwI?2}+ z`bV}2SZj{r(p z#Jxgtw+W!1WFH@#eXRleEz`Y*-C+*YVe*@ntq{3{{ZVw0x^F#%_)BEAcBtGD`a_<3 zp6ZuIfW|jl9%-52%-J zfhv-6qB_n*kwEpZ$HY!l4)VP@(B$nq(-_EGXvNL0&xCleJLs;RG=WOTe~3+k0NpF| z$KH590eVU_C+%F*8bHs9wY=;&{T0wz$_9B~*m()mmJ|J7*uN5>OZ{zLq>2-uw?pXr z>gFN8Qhc%%d!qmyD|NEt@flT|heTo8ju+doU*wsisUPUjSJeZOn`{38dR6lB<_L-< z;(x{6DoP5m_+3q;Aw_Tq@v^SV*pYZW#3wpuI^wFhA@7v-#`f%v(8cw7=iHP7&k^rR zq<-aI#$ks2p+z?z-Uet*>GThOIiq0z#UJKY@692+k8ERt|9t{A^op#tzH|aqTNe-2 zZ3p}_sf(Rs>mk?=snH_!U$uaGm)()KcXXIQ^>bImgFAviz2K+4;`>%W*^%mb6M}b6 z<9-KDYfsJNeaW@jNBV*g|B++$ic=Fo%|qS#Zq>Xg&TpONhphT4}RwTTx!S!ju>HexGK#d}GW&ClL zC8(?wbfP9#slwmTn)k}+dqJN_EiM!CLD&!SyL<7127n@^*oe(kut0ujYnMc+UWGr_ zN_eZ0asu(JLcGbC6tK#vyd-Iw|lLIYeCIGev{7msT=-PY21HW zItx&rWF>2DUU33-sdMs6x&tAfTKh!&UKfFSFzjUELoHAVh*o-S+prPOPhoYumb4Sp zBP0gv(L*<(U!(@vlmS#dqdL-#nfcOaf6tNvUrb&mk08|b{hx|~3za_#As ze{Q%RX@>vH(MN#NR-*YI-L;jFuSeMTkCyFJ z=f4;FrCz?lh31WV45_a^k#z~6VkvK38$ad39*_g{-I_-UP^|~QlxK0nKdcEi)ii&b zir?RjOy{Wq3RLDuuIQ#hRlNU}Z<+>H1bg+-s>xdfR49r^t8O38Bj~H0)(MYDysxnB zSm(KO1Zt~+>5C#4pwASove*(^P%V&Y2lm#wV?Raby^{At5ahq@^Tlj&P^D=1=jN}m zMtz3rq8q`uf&7mA>h0IwVC8bdrzzGyO1j_}Z~pmxbW#QU1V0d>5_^;`z~E>LNUlfD!@v>;Fc*!Bw) z3qhW!9OFBTdXX+bq&_hte$-FfLO(NY4nRBqsrFLt0NP##^t7b&U5ojr|l3@|ZQ_Lp(~}mAZ4z z2mXXw$nC->i}R6KVa&^_0(q0&D%2B4pq`b#wQ-mARsyuOEt_9t6!c$Y*) zav+6F-w!Bsg>w=8qGqV~NQm}6<8MU1BU8awyw@1@2eQojb*~K}FQR%;-y)cRZr9K% zzqqOi^*Q043tAlB@ZXZW;k!KN4Dh~}zbR{W65>7mr-5&u0UCFGz3ovCRzN|EU+_7q z*H5UAi@8J>l><6keEFGutFod0>MOmSrZRCo5ruEM{yy+$l3q&xG;R>6sh(N9mFtE4 zklLRLPS`GfXPduC;Y<~eYzX$>`r;bv57^&zH%N1{_IN&0%fk)oj-Xzkd@CjiW`kO2 zN2_j;jy-`o=EoW->ssWW!dBha4R3;4Sxob<+P$lycwW{^lD|$PUlUJ@dv)z9fjXyi zNjbR}_D{GqI<~J1(9l%Hhs>apgzL50=7-vW`jT35@Zq*-Kue2F_;s&3Mu=}eHGj_8 zfP6$^%L+<;IQ+M2H|3*1G~x--;SL?8DT2LNFPxz4fp|b-fjcK-ALN77Bzd*-4dMFK z`<~hV4bT23pYGN{D{rFyP3oLXecuCpm(W_$*RKbtd)Ww%Iq4win{a=d%ZqU_JkPpX zwXh?o?@>-1i})^$^B10OXvy|RKY&ah@&2HCpK$-92iRH>zmu~!HJSawTKr|H$_Xdr zSBmwA=nX3H|7wDd?7tK*&XMISd<V)bqT?T(f_3#V4+$MnMZTgTe^%4F@gHJR|NfY%u>dFW|ZZ=$>)VwO#su}yOlDX`* z#%co8y`-^w1PkI9$^-Gy26p79(#IKhl`-^&Rgn{)1DGSJSuU={5fY9sQM(QD{@x!V1L!Z ze|%{9b4##awEXaUA9usPiCzwf zjUR(Qr>ZVbwmpn|MdbF#MDAh4?@Fl^AFuBtP!Ciqe^8xi_$1vEc!>N{Dz!>=*>wVy>6zAfgFx7`|Kzthl3b7{x$VNF z#AV12DIb%h%9G&VgezyZ+IbTCO_L+hQA&8rE~(7UGevT+1Ic~ z(sSa1rF&qn-3V2*Ua zzDPIEgdXuAP|whc4%fdYP*-ss*t4Vo`88>zBB0y{`IfNt1+fc!un)SA?le%|dEjuI(N_f&5cM!+M$cOX!!B@`;uAGZBA@o-A$aeTjUC`Y_trBa{%o2pv~s^>M)S zuA92!H-Y#_dfmCZ{Nu<66h)e*{(2$aA+M16ByNKEnA9Yz+vXR7{VR!b8rTo}ta54Z z*Ew07FWGl@O3f)kJ?bDcQAP~*PA%n@)Dc0{uO#_S93R#p__JHPZQ z?pv0R`XpIt!u>=A{GEpQl3$JkxF5~Fq~p&o=s!&+VZqX#(C?`elm8G2eI!dAYnXQ- zP~*6&v%eBSKVD^!`2}$M4o-KrW{u?pZ z-O=5+{_B5#vLn^;`)|p1^CHZb=%ijXvh>FLk(!29WalEDls759y1Uc>`?+uPi=)Y~ z=M=Y5R?}LiofcAbQHO>?#B`8I3VOD!3X0~S7rf5@_Tk{>@pJxE%q zmgZ(lsAqK*=0v6ws1lF;dG#@XFdxE}7%*H1`yf*)*5J^>!1LNn%by`ozmQEbDlbf+ zz9N#e<+dCZ`Ld+1%dJ2E&`*;yHj}m}!+B9JPP}F@gZ$}=G)Q*5LHr=8`gwn*ks0o1 z%6nnoJV8IcIPa7CPN>(*=+(Gox?(?DJNLVvL;pg2xEmZ&Jn1UN^5S_>tkMn z5+d}}uHzK$UsoqmxE=i=GPzFaqYQz%EcA9>(jUZc!dq^K2}yzKmHcud&d>$%khHbM z`TPy&Pm>0R<*22QU+U+F)Q){PUzL==dyXZje~Il9=go1%e2b`t*B-S7_;(T6vDtPJ z_&cTM!WDAOcwUi51M>rCk*|`wN*_=Dgny7c)4-MRn-9;!8l5xBfqIyvN?({gL=6L_x*yfbI8BRJFm}_v7jD9+eqGF&_kexbjm(Gatii>G~ThPD7`}bM&{SI%FzQ=mfV$7xe_9XkEKkWrMy#seURxaGwv@#d?cs+ zLBC`W`Y3Y9$0@o5@rB&T1&V7PA)XgI{Cv3>?2meoVd1SV=m#Y>ZW)RC8h>ARL#DO~ z{*kgiSMHsV8P+-5w2ST0{~)#UexrwCeoj$1Uvxg%67MUcdfP1+_CYLLYd)?G@r1%c zgyWwxU?z9?nzx>Q?un&(J@~?GNNzN>a2z2XofPIM&cytZ zbdcW+CzA$w@YhJXEsT6rjQ^kS?g`Xiq(Y?K9tQry_1)CD#8)Anka|DcxBDoeeo0ww zU;YL2IyAGZYyK2tK9A}U?{S=rdWuR2xy#Re@jIz}kp?NAha#vSP|rQ|`+Wjbk?Iul zp1(0TKc(+2NrO!2ABCLq-GyCG=cRl%%_bo21UDu8E+?_R&4L*x&QK#_R zFEn$0+sUX`G-qq;P1&2CZ`G>q24Uw zc`kdn9r3BM?d5OQHx_Y{@+GQncSIT!<~8dNn_T0Bzmug@Q0o-XZy_xdyeU>7%o9(g z>7VaGeSmh}bGV-j`4zozbe(Sm`b(s`ncuyiA&<1Rt@Zm(W1d3zVZ-)ED-pkuM`V&W zcR~JD+uWW`*b(|m9Yc*HM+o)1`p@D+??LUXIyKCGb@7qqYDvJ>6 zxAiyDlqrOIRs4s>XlcB^s9}QW?^lQ~#LuXV%;+N?Rxy)W`fCpMM3OGYT_s1T-@cUB zzMqYLl)|Y!mMgx%UMqjT?|qQ4AL`zrdQX2NKa@D+VukrVg2e%=ojU{PWH14 zh&P0*J%`-)5d2qp+8s_&)N4o`w9!swLOf^3@<#O|;t`3x?ba<}g!vP%?3^H5*cXxBCbi&h_%q>vJ2M5num=i9S+D7p zW1fN1Q1duB0rfE9=Aw(9R`6G(f41M9PZRv70=vv5Bt zyG*lZE(HI?FE5%L4SP;2-t?JcBjNf7%A-41quxrY|CzI4Kpnq}hi&T5LViSI*6-Ky zg?}NpgjMA|LVZvqm^9bF0{sn|l3JXAG5m*A@^Py@C4_jn{9M5mU)0ZqYa%>Dg$eUN zCsQ<5I}z%&k_C*bB?PMD`z*(Y^pT&-Qk%B&^PpZqU6pS8*#yr+s_Uez-iCS>wN^lE zUDQ3o-!u4jyA$N`&@}(1iF-dbJKm@^08~ z@dNMfN`8QSmvAX`RJn!vxJ2rG^@ASJPwAs9LmM0My@-g$PLWzE_!Gr+LoNLj+>g}s z;&h@RpV*=oZ@d*;3V$auE_tP5 z8RlIi*H1>V=EC1mWbJ%vuVB7ic-^Y=wS;*P>982rFQth0DSK^ez7oFYq3ztvp=Qgo zxYj(oqD$)nVcwm?yK;jVVP5C*Ys+Vk;lD^j1^laa!oQRMW3UEg5pR+@z9bIbg#Dm$ zvd3vgU_Z%!q@2~ZKp*8rT*tP1V_r&ihZXWp1Tx-=YO=J-zyCD zSjpEs=GNM%zo-T5K7ZH+^>%TIu-CCQi05dsLq5q3u!q#hTz}c+1pDlH+B5kqzR#lG z@Tw)-qP`&^cE5h}OV}rJ{6KknSjgg9zedrn>*F**pR1^oaRhnNF(!Rqi~1OOX`NAp zG3+HdQ8+$)4Du#A$|FCr7ygQtCB5VhZ$94dkEX3!CG>%8t#853j{X8|@Pmtt9O}u+ zUM*GMzoWh*rhcaBZW#J`2~o;Y12%oiD7jB|g7?{8?2)VHKo@4HtI0}L3~eCf<9$bt-|0iWo9x;k#J?W)Q7QJE_BuDnvy}7CJnPfA zpTvfQW6U9Z&m`w0BXHXr{Sn$5`k+@WAwSq!!Mi$$(2u@)&RB30`b%r>I^NCMiFl1R zZ@?Xu1bw7REOD$&!~Z99#s7XG1^Li9CUaZV9r`5U^KGw+H|hX#K#jlAB9FEnH&}-H zisqg5jKeOAI8*sz_S({UL#Wqo9G}^JLKOK0C2lS;TMY39=^Ov*o%)zJkh&w|<)00E zAg8IV^4g1Fe{7SD&7l(t;Y6#J9E z^d(0Gt}pUN^@b4-c%??MKz4I+P`R_B`k7$(e*R#ew+twFt1*s)i}x!@!AYyY&FFK{{Y$3I1l?GMcFgm zXoUET+90xLno0ORD&$W_fF|N^wViwRp1Mhx@40X5Ej>x-?|=RiblwN?hKlQPwz(MB z|4XX%k+S$pe}ooQl3rdIcw@zWK*7C##mt+^a#&oCJ(27z9OYYFzZ6xhP^$&>P(ifa zXQR^u=&(bs-#M!Qwa|T=f2YiMKxK5=`X5NG22|o;;H~tu?f89E{j~pwO@Qubuzqq$ zH)&CX>Al9O-aCGP`Xp^%&0fj3pfdfe{pP#$en8_g9?eBwiU)K>U651}<1L`-O5V0C za|;KQ#g}L22Ft|&mHeK`DS7K6psik4RcU>B4r=ONs^=~{MFRAJljqCw5J3M7u&&p* zw?AcZowz28ajg(g4E@EcuV>RibyvCWRd-!5pn;m&F3q{g0{Ud=(D3Jh8wBX6{bzKG z9s;VS!SuJuuY6E@m>Jj3Kp}bLa=*{-4#%Nm_uC>HYeAT>A&0YR8Oi{hmA^ zK#M6Pt=zD&8~5Y5oVMQq(8O))PW*jViv1qlUGwnFdjb{8>T}08T?170z^_P_fI2{9 z7?)=6+$<#|sURmyCJUia9$#UG=0yy=pZd$MdBPPmags;{RVfB2eiFsMQX= zSEo$~>xmNM&E0<3zws=m)%uZuBI&g&NM`#0DoBP^ThN58D}GOJG7L-xv|ZLl-uEhn zwTtUUo|Ssv+5lzOlBFTG`Zu6$dyAw0`u_lQWuuaN>g{2}#dTMCss!I9Kvy-1_uo@- zguDz~R2Qua26R}TTRZ>8K0pNy?`}H&T_5_<)496maulH37^-^c6PCS(eDpjX^!aEPcuVpvyaCzMX%(5%N@` zd`0)%9QL=h-@~czGS0hMV(PqN3eNYr35ofu7tcRH?bu`#jQ49$<#=sV2xzKFn+HWv z#|Y5NoSXLLB@v)oH>H&qxdD1;(7w2FLL2%%=%T~>oCIi=W}VC$zcmD^`+okzt1#IV@(=!@W6#9u z3p{{g?lmrA21o%KcEBLzVCz#*S$P7tCon5U_s<)WZ&|7>Z5=IHogZ=g7-trZ& z&rMf3*g`7s|NGa)T2E2{jWh0HeTsAe)M736)z7qF16rp|{%)V#MnKDVa~#Qeb&>#8 z)9kfzK8mrp&Zsqg>h%)PKgAce&1_!)6jrU_+WN@x#S%9?PbaFeIulS)8TTAt@kYWP z_NRs?J2(MavVm=S+3~4r=*w!sE2a&QuZrzkJdG|vUWUZhT^ia5DB%9v8T`jzLq6Jq ze)O7=0G&Fn?&z5L6VQ93bglYzc7R%H*xW6=YdxTqvaFw9VzYuhFFtj&`iCo^=*RUq zHZDxSo-*SrAI&fUz1Qx!bu<45__vC#*rx1DG{_(K?QFf*@b}{h@5W1lL50zAwkOIFyY?!nk&$LIv8Dy3VmhIt53he1CS<|v2{s>bcw*lz)f ziWxk4=3XkU-@<$5K-VekcSrua4&H}=Mr3v>+S9`U4LtmXFYEju{CoX}mGmG$Owh~5 z6Vpzf1a#*|fotN+BS0n5+P8mh*EpSyU%qeKMe)Mt+G2 zl;j~^8N4p=KqL-OXuT|bht_p~y1C2k^>}g@{LhG&N*0L|G;XjAU?ayg< z0lI%eXYEQU7wA(@Yx2t*yKw&Xl{F5RpAo2&w7U)Mi$VP|oH}+u!35B=b&}~3p?Q#( zfw+{vy}u!!lTzRNSoVYJx-;j_R_8x}#x2Pov#K!-7{)`EYWfr(AYzvZr3b4aQ|_3MNN5K z*!!Uh`t*yPa#*uC-uRI*jr;c-_ui@mRY{l8XYuR=K*J4)ZWM_+MW9a7JR*2EALrR_ z|KW2Gg#dm0ZTJVvH|T4ZOR#S3K0uE*Zr9*_M*~Aq)u?}lJ^1B z*WjJodwc33&n?SB%@Xhl7yXOH;XOzGyIub~j}#us6o1@*aPH{92PZ)Lj>;*o+WQXv zV94u8ne8e-<-ISnZF^V;D7G$Ph8D{`_|p!pKZ@M{CEDV zQ})tsh_8mI2`N9W5uoq0gpRO?VgH7=a^F8N4(Qf;{j;PGyJ(B+-fhA5fkB90+c(-D z{{Luu?|-V_{|{WDB8j4Nj(P08WhE5KD4~>=B$6n!kx^+Wqb(JZN=UY(Bzx~Y&pD1g zqM>2*{k(3s@7w+P{R6%~Ubi!z&*ybL=KZ>!_xrMqSf8>?L(OJ!#J8UBY~^Oh;Q#cr z2glYV5#ka57iAqINCk9%58r9N4E1!ccg&O+w<_lI%Ht2$Y(Py{ukwf)%!>J9m_86a zIfQzL8Db~@S{38o)&GL__#@to2dSPQQ9xB*LRXF|`2u@yHGaQMGn61rwr_+rGX~Vj zjQUn%ttpVW`5x4Sv<9c8>^6`JU~byK zf5Zb+-Lzf2A8*b>N@Zl-gp9ou;z`q{>z+&B!9OOJk~9RA;9vF9A6vL@Azs!bTkdgb z1C=E$QuaY06ZxQb_LoBr2dG-BO>BcTzG8kq+nHwGK7x9(Rdz5vE*$>VKXlJFvkd)E z(+Rt()?er+M`q}6g2J%=5t%w=ff=xuCN--zrWV$#aQPe8)>G&gd*xP#m_(w#`|9(g z+C>w1$VeT>kGE9Rv*lk`o;NqD$MZUsY*NyMRA%>l_Os+$7*B|Y2>1}}X~<90>EXP%G1_4^N!>+2AoDjr_m8(@Y1Yn=D1l-mWW z@0_a~+5vRL*U3xwqgL3XA7m~S_WZII@o99Dx61yv7slg8q0?#vskXvzY}yG){&7Yx7Jae1GLQRZf2Kh>9Uyv4Z2K_Tnp8hV6DS*9}f0pY`%y z+-?;QD$-AN2Y0m=qJQk-eK~bv58_wL@uv?jDg*!P-6NtJWsUjoPn1lWQ^)7s#=(rE zL72Z$t>rsT)GTf}7&g4A8suES_xq~UJf4X&)VXKcu5;Pr5m)V z0PAlfX3Dt*($ifA9CP;$wM~S4>3K?{VKeHlif8Ps8}_8&etxFh-?|y= zIjGSQp_hwzJ*>;M%{vP7HN=ov;=3O8#wgzhuG10d&--~ROdOI?zcalIyy@F9pN)6T zO>h3i^Oui*8!6fcd#{($=sR@+cmRXSQ8Mv|f-y-p=#2^bVLAut5XFIeaooIW#m4zC z)W>7X$IrhC0G>8->;PMfH0+Dfa=XzX1X7?~HxH$LJqCZPS`z9K&Ijqe-sA?ek~Rm} z#}kd->Ux5-w2{m14ex<3()2Aw83wT5>dNrY<(jC+1`Dnq7f46H+qCZ~>v%4tA{#zy zim3lZerk^X$^A(RQUb#={|X+ufa<^PqW^i?3#>=mk1rRwPH;sEp&tN~IiRFb&ehm7*p?SBfZmqzZ1}+{uv!5T= z?-5DaE+GrN?#qq*M~6P3KOR0)^hKf(`Lh1sia+f?7mu_U_NE6_J~;?!B>I;g!-GWW zmpJi${wVbG4JAi;Zqo@;3zO0>YZ`!`j&8CU9yx@5vDsH!>9r^F1HEPD0xu8hbGpSA z&4=OyD)IN*t3^wJSB}}V7q}ZEeolx#RVvaz{nQ*{_BNy*{@PbNG5GH_@GH8#{;KLJ z#Fzg4Iz1f4pzd$E$IbuB75RyIt1ozF8$p^?s3pKw75x|8r(4=}BVqq3A?auhANsq2 zwC?wwAAx_4_Hukl-Gh8O+{AP6z6JVI+J)2f?zhN4-BxqKLMwp(l$Cez9XvsZ9|B!# zw?-o#(*GQ==!+-Bi;eEHDg3CPThq8?t}lyN9FKGSl4R)wUhwf%zc;-V_gkmhb0iV3 zY#Vm#tM#7Q0{m@!Ec>GQKJ;Vdu@|i~|A4xEP*;2VXEj1T8#6NlQT8O%uN2>Di59FUt=%}Pq8Ryw@lHsjcQvGP`U+g{kg6BAj1BuM z+j|}Vq8~0%SDH39hSXoxeX4wG0`8B#Ud1;rnBd>FF-8t0kizbNvH!5lVfbgwv~!a2-UbyUD3&6zz>)jXK(7rVn1xaZ%1$|C=U!fqh5xJ zsv_TyKGPd}t^|CxVN2=?Z^HsSAE|QKrVzg$Z%+L=&jIPo?(W`yl-b5*?buN zWA8^V-y~Ix^SxHFCETuE9KV}VwT_Yo-c?jBlHMc-{~C$NQS+z*|S&t9V-90G{9XmYXeWBkZNqqsEFH7=-INJ>KVf z2Kx`=@3;6$r6OJq9FY(Y8pHnUfQqQ*j#H2}XcgNlv2hF5XIS?m>8~r|IJLOeMD>qq}Lx>RC4>V=|`r_`Mf;Xk9T=bF8vu>ZrDRqi*Dz&+0id%MjP_1JK8 zv5(>;?0NLgGO0OP;E&8JtI3aUVSNYZ6*X%u@%)7y_s=XHL;qNNI6L$57y&;I+hO}j z9sl3LrqZV8jQzvzJn6V?ZiuJtm)OgVvw@G*_n9ZW3I@L3`JO7)?TUW9d(>h1*B96? zW)|qay|xSap_Tv6hfBxMuU9E#?~EQSz&K&TMl;!Aaa?wYUJ@z_{EboeBGv9P@;^QE za_J)$%y*~U(B)YpLcQ6$ch5_Llw(QUkRGE9_-41t5wZU(sW85pGHV=5T^zr^*_CCy z3h`oyCFJ9If|Sd|Hh0^xGq8{0fT@4a=CNMc*XL_hT?x`PCoW%Iavk}i;Y;VuS8oCq z$35&Xf2yxRe^9CPImeR^^$k<`)!Gbm0-l|+H&g5q;#h}?o-Hr#HfM3w>eQ2~zK|E|6sOP=H1AM2x zE-pPm59b|5*pKsl`~f_jCd%e3sQ~{kDY@Nz{4As~2mW-Q@M*+;dAPFh12zLZZ|CKW zyXe1BUuSOL6|(;z;@5}Z{M|3>5sxN~bW`dH(&^nRNq&}Z(62B??jGpKLcKRy8`7S^ zjecX$DkF`ejryW6?8J%GTJ+0(l7}wI99zKk$VEMFI@r%Dd>xu(xCi;Ko@@PCCsyFM z&GWUVU%bNebtSpq+~tOTrtV9_H|hW&`qwicCc1I!20VxZ&hGh9Dk?VHY)O2T=qvM`QMI3jE~sej^> zeLeDRbL)P|V`Ye!*>r_XXV_8Sw*83zGLcD;iWK|VAW(51zo!}p`)WJlbH9xJp2E>s zziao$lBzIf3QAqPJwuS{3GaCDSsDI1ccngjGck{)&IKMP; zbmvIi6k&haFF=mxvhw11Jj#CAU1Rj);}_V|&!(fF8-95ACQpPlejgXrG<4Vq_p|4! zbkiX`Z%^DLNB0q&ml;{Qsm6nZ^Oz0kM%-l~xPI3iI-lt+fL;S0wU#u!(1%BJON9w?; z%MQ4IdHGvP|4<)v7OSaN#vtGH?U42@-;ey)A-n66#1UMdw(6I`hIZiL!|6puk27Hp zEu4DvFLczy{l_XFu~lI;{R}2f>f^)&hs#G@+D1HLz=OE_3jUr*}#t&23sm6 zNsC9!4F|Fw+0`j-hdAw(0&-&)$0-K{p2Q9Szw2@9+G&ngYz<$AFa1I41peCiu4G%I zN*LB7FaJj7FW`Z7kAB!(uEhRLXUWJa;T_0tJrf7UY+s^2W(q%;nXW)T-F?>R!z*q0 z>+q`ktAkn>Unw=D{o)U;n&(~|mjs%hy&(oXV>0z&F#S02h!!v3k<@GW|Irw=Wiwl_ z{uQ!L%z+%>t<5^K>@qgM8*?06o+(V6TpWK|Y9X~&E&%gi7^>E-iu0_)FXeSlQgD7? zRG#nApb6^jHZ!ZvodmpwIegc6-xSuT|LF67ikqeu#|?ouB}N+X{a%fns%(|TR~QYO zw8|M@P9vX>EsVcUH$uNb(=IM$KL;t^!SBhpbY0N@_TQOk*rb5{v%$c}Np~7huQnP} z#60C)BK5q|7D#MogfT1-lh<|k<7Sw7kd+n(iix1DGh$tfk}n2I3GLoxJFm4N@Q`|@z01o z{}9%}Y~3k$H2=?8;yy^TI{!n7+m~u}O`Kagi+Nn}|^yeL7jXP~rVb2}Ax7nWaBkV_;8QmSt z0N(ZblA_|=1w4P>k72bt@z_5YQCfFKvj%ut{-M^lQq{=6^xTzG#f0-dEkCxlisU1H zma}whjx`~i2Rqzf*%^U)<+F?KOIt`N8CE>*xMjB$=Pmk-qb%pY6ZcaxH1>r659_?h z{&WLgku+?wH{8Rg3VR#8TzG7_1Mz|O+ur3t0_xfEr*2I;|GD4)?BUUy3ICmV{!x#v z^xS8_hXy7ln^pc|zB>KJ*Ihk@`oAhXye4%CK{~djX_?3^^e^<2Y%>9;=+)r_-dv0Gak%O(TzfPZ59e-sWoSX9HhozjS(vHyHEP7V*qg=@I%9 z8hiLXlWxr4;P~6p`@eA>W-{4GYjZXBFNy+u`e@S;^zoqf3I3kbw4N{414bE5ZiGR@vPtb zd(2t|*iV9N`$}^`S^%!s9{FXG z%nAP+uHLSka25VN(kvjCo(FuXHQoNafjsb;;j2F-7*}D>jS53j4^n`av?>IjSbZ1q zzh5aph`~m%=lB4N=XHqZonbYhDSU+abG6HP`w#hQaEEQd6<+i^>F<7?60^qd2UvYG z_TEK(G_vX8?9&8%-fACmyH> zp&xI}+1a^i68KWB&H9Y1ROA;LE&D1{6ZLwRNYpvYuc`RlDB#u!Wz@5StSvD|jshQI zYFv5pN*wmw`-^c+ksa4hsZQ=Uc!To-{ozT5@(NT;Y4kF*1CojCDJ!^Z;a zU;Fjf#HF{`U+Ay-;TYkK^GPG#wbeymkS_89vHum&74=3z7FQbq>^E>+I-i#Od z0Xqrx`iKp;?N<2b#7TdV+5Lq6JVSqA_RL!uc|leU?V|v0ql7C-EmV zALr2+!!`HF7V!Uu4S(`YH8G#eNncOn=g6-#o#(Il-4-b=42R0X;bExF>u&aRcU)ar51u7*6z8EoSNU?MskP#!mShF8@P#ztz7| zY3UElXGPGS?XH$M57P2r^y><9oKF~I9Ud}_QpWXXM(&HK65elYo%N~9K)$I^B#V&m zBfoa(X!}Y<;XLiQLH4St{r|=5|Id5q1+u2`2zlN!4GYn=(yb6Gkn+lmQNW!^OD z8Wm8b$ekm?TiYogUJB zgZI7*gm?26ohZv+980Laek^qrR1Q*{cIQH0gPK7({C53AMNk{4XYiakA4ZTuY+o&# zP>%T}+p4B~ISJ}2kp|1vN0)*cMB`$G$-ov+9g0{a3kPU{dQyz_?YB55g495E*Y0Ca z!WPHkE%DcU)gR${+ny@CkpuOI;6vuZ7B>g1H~pFIcpa$K$cjA6jN>qWA}0H9rA308 zjFK!A(V_}!Ii+p(LF@m5xccL0JX7z(kHIr)}60V>l$VAv$lY0N`&q%v@eT5%{i;R?0XxeZ^cykPUw?iFJdOEF5g$c zdQgHI60}A@jYfI*V2vO@sBy@QuG^oL}bT*f4ehg|!>aK74-km&{pF;21VQx@4N{8)q z5UV9fbqws>Wc?UatfY!VJ4?(6RPg_*J_Pw=JwzRbitM=%AEbGdKRvP_Pz#nGf8kRP zdleCPc&Aec>TALDmox8@tro|!a_+6i(m~}YK;L3)u@%&(5_%J4^(zD_-1ht5l|IpM zf97e8g9(*Amx&jksT>!IcC1yg-F5!CbR-W+kZBL>SxtJj8p#1#&!3 z_?)Uh4XDg(d*rY#sJujk$Ys{zkQxx|*h$|pi+o3ZvS7zv3@R-#_rxOgJCF(yKh&+W zfeNZG;d+*g7*PV%JyofKVTAmwnw9yxC;;(DF20H{{u!uT1!FUY(xgD0qiAq$;K?IU zol1;+?dkiCe5P9A!dPYqYAAuwz~htqLA^*CRlYSX2x?O?g`K-LbQAokMx}y}4f$K0 zUB~}=*Gv4q@cs>%=a4$oe-sn)_XyTQ{?+PL1{MTq;6DFYE+4GF#@l6gbb}F(l#e;D zUVi}ji@Ik{Fp(hbD&YPtcubx^WyDR9+Z>2^N6O#L8U7CQFVKFVp2WWRo_>MUE8A^# zaiBUA663MY2!p?gubf;umO{AyH__#DAq1){o5&Y|yo7k};(J6%7E%YQ53f?@wt|XI zTs^35CI)M7*K=dU!TR3(rF;-N5FsITh<`vTCRFEb2e8T?0jhR8UjOuUL8iUd z%TQ1qtD5^L3mpNKl|*EH$A*`>i8U5Oi{3*yQ{+8Z%O|cYuLvfyI{E? z{9aVU-~Gf#*teKZNXo#^MI5Jq!aMy~cQx{vl#%Tt={Ur1g*D_8!9S1>#l^*3+)g7N z$nBG!rq~kV8T&4+u-~}8^7DJ`Pxr%KNtyCC5*rB86g7HFZV;q}NmHNbH9DXk6kl~x z?n4Nqct~Y7N95k&dX%o3T_4N{)PWfXJa-rns3px}{A=PS7so0Enx8kt!M~If6SW+! zLCQ*&oV1QyO2zf})|%PZqy8o3m2Jveh4>^H!5_Hg2|*h4=_!raWaI}5OHjzDEb1-N z&l@i}n-(x%Dt33@TtA7=3;Z{IQ-t&gPm&G2Yq)WalaD#4;E&gRm1&O+N?U91}Q31cKD&5=cq45dK`H-<6K>VmfPNb z-8h02P;Z|2!(LFclG%TLOvr=%NdDXMsP7r_ry}))`L1J-hLT*Ny>ORUFNDi{9iGPg zDPA17r?MOUmSEV|B|Ha$@O#SFjB6E$=aiYJOA6kiJ`mshdtFlosE{dDHl*kIvAEvb z?GsDtKs712q%YyA0jT^)zvm=d+VFkqdf-9Cu|A!)z7<{M;!II7|R-tV7ymeAh*QN zbeM_$gmOd7_tQ4z#j()s$IZfPtZ{!AUA}JGjP;Q%e_KJ$!+dRY%3McVMUawBTmRA1 z1pTx0bVaxA0Z^ZlN@~Mf0?|)yE*$GjYq!Gx@A^mW+>iQD{3hRpd1+A5l5MCfZa>!adMY2o<i zDq`|b?Zd;vgnsIBWcJ&yz&lArj_+jJ5&z`Aa2a>Eqh293e9{q9h13~kPW#4{7m!jR zRdL=@{{gChAyM+!`AV!GDO-439S0Bo|AsI#mL1gN!kVXU<*vZ`(lQa+PJr{SMu8jdzGuvPl+AV7!JM#yoHp{pB}OU{;g2z-LWDI@n7t6r!tH#|HJszxIb!8yaq=aq-UjTH`IQ6R)G1KOzS2Sq`k<$2eMXkAwH4!rM~#o2Y(<< ze7hPaMv%7KJ+v?co|yunl5?_elF>hJ?7T6ZeH8JBl%aKKpETl^5VuvPZZ&={wQ~8| z)RnMTMPbvoj$H<@|4m`WO##3wN%`dsOB>0A|G(O(xeE1`(%m7MUW3%dvE*=6(hNb` zR9xMoCw?XTQ*dbaQvX^=HBqOp9qihI|Cc<|EWM5&(xnn5n-k4<;{W8t7?p>{2~_+t zcmD|WK>9@Zfz+%}<2H@7 z);aV82{&ScgfnPMcprgoFio0!2b8Lh^$!v(64U8p?m>cd=ZdWE_|ab6pPuBwqoa6!YQ^gI=lY<27c2Q0 zF>?>~li=;NcV}#YCkhLj@OIgvUK67goU%BUR~CActBH6c{%};L>?Q#}>oLw-Yfq38 znU&bBa}fBI=*+f@7j~i^C1vVUsGLDq5BsmVMG5G4B!4K`jK9ZzkMNA%6U$YQ5+Swi z&V2e4@q%)`zmZE4(l^5MN=IFO5U8HlMQIC`Bma^!63Rxrk#FRZyc=m}fwv31$d8-R zg8xxM18Uu8VegcsJPqUri0_mWRqa}tuxF)nH)X9IfUj$WTD(8yhx%FIQB}ORB|$1~ zRbOJKO9cLpn{N3@1o2rgDtU+fFVtfc#@-9-+aN6?Tx+zMRUi0_v@f$u?-TlYigICQ zYApfp2)xO+@<1)@(J)*s`U9R{A+PnkbsF#isfrB;{;3o83mj;-sBZ}IG3#aP)G(wJ zBqVvx^$a^=J+(sp-u*)Spky}AuKa-O3%ak!&@m)Xdv8owmJD8+0#&;WyJaQNzsv9I zn~J;#X(7>K$q{1-)IX$b&ox&Mz`oU+I5pXM&VO+@mtSm-xOw?P$t@l)xsd16ho=hj{XbwA}i-xk&Y<+$Uj$wG)n4l?(&-Oqfv{lbQlSTkU!vb{)v(SH z@(I(gvyy~*QoemhqzD1e7moXVaasUW^n$ACbBEkUx^m_O{6qSX;HpDGc;2C6 zO70s-=PDW;ek!yE`@a-Nqo1i;R2Rpxe0Eh^Hxl~SW$TRW#|ZmRiPgWn5`bz6eQpF;|ba{Gd?Q#U~h^4#WuR~)F{R8?EU4*vDW z=LV)`FD!vCQa+mfb^eKdQz|akY*z&KR}^AznKmn=z~0!?_{Mp#|4$9%lAc|S`krDU zD3wUY`il&lvNWC|#J43`Bo24@n|gNMvC}oy_`Kt{*=g`r7EqWj)kYJr52+fRp#zr@ zujErEe|^%P!hGfp3_cgbezUl&qip|2NL@%<{WDy40`Z2bXkG0$hx(9IIC)C@96>6~ z=xurCYDhtmGK|z${g+PvcfY5)Ma8QL_ASJD)V6{k_0{LTa_xOWeVDQPFu5FflE}v4 zXCIR=Ka_i0opW(6x23HE2jel~12(ZKH|UH0{6suKE(oE5gb=dB3$Kbt;&1pcE~z~=g94fcz~ zm3|+bK8*TKQ!4Xz(kbkpNpYU$vAl}?4P|n?jFk@dyM@CeST6s0g0X;GuB!!cza(Q@ znJ=MVoLKUpkTVtEUla6~8@##&VsFguDO`l~so;UA^GiH%zodzkt0TX`{saofea5z6 z|BS?_R-C&CDJx2FS)lhWg1_8OVi;Y4l$YQ-SJa7Z9J6)WU5k={P?lrrP^=^Z@D~s`j3jN+J>X{SBWB**?H8l+9Ni^CRRBiI3IW zAEXh^-^4I8e;h)8tI8jEGWrNUm+mzi^2o*fP|QqP_x?rwCpfe0v|>N%NfBk{m|X;6 z|9+FpMn(_ee3M*n-Siva=aM@rlc<@Hny1EcopbI6KCyA(vC>IBt!65qy+z=KG+OCGBYqkj+>tEBYa#D0)Mu!j9tFZin%`NS!1 zR!H$l-%ziqXd~>WjB4NImqPuZUATfn#S8gS`pmS)j3MwmQRx$>B*6nwAYjVh^6I4* z{;xpkuWvS_w?rL}A6?f6f0WoAukyPQ94lP|p#gdEn~;j+q;; zb0Z!pb?)0{nhohOasst`yP_(_z1}TPmWE6%f#GGhb3hz+=P)v?o;fO>%D&{P)_3(Ps=Su(na#Xhx&iB-h9ys7j$S)Redpby{M`iB4 zu3KXR`zBl7wOi|f`awt?k(I1pX}ZLgj4uPDqVvrMmu`?ID~m>}>P* z>4a2}aA70M*b{=Z)6lcC4vzS}__L=<#%l@qoaf_+VopdQi45?|wQYuUAZci`pn5C5 zPZp4xTu>zJ2esU^NIr*pM0h}Ne#R71TY8em|0E}2|BakT8g>f8^J?BS+vdUtd{AKL zGs%~Fz$et&dg&X~V=+FP?mm$VX(%a!rdU}Wf>hP@vPb`+F^l(egd8oHPQW8R7~03B zVSc4`b1C=s!d`_Hj31Qb6V3+}-al#~gMLFcUvS`$0qO_o^0hwyY*2qwA|xKvm!lpb z&t|*KF$w2cb{yHQ@(uZe8dy{(YE6)`te(rU(LlTu98>0t22;p z7Tweu)IkP5FSeC+>fI+oe%f^W^F0RoM^Vc)U*8_Wey&hpM5dmtCO%gdS^4(@?1|Ll zQIl4LdX)5S*Rqp)fIpD+^+fYs2zW1*W*XZLdy)#cC48bk1@onU)pp$i;)h^rrT|1_oPgx(slLty`lcL03Hjo;hjHw~#rJ><FoNj8N|#dSTW|IDaX3L?D+-oPf7}U-9OLGw>3TM*=B~Ld?J5 z+f6Duu82p%P7^!FbYS14(w`&U`sm*UlWott?gPH9s%Q4fcn$hFvUWI&P!{}CocxwY z#!eN#|LLEt_Z3p3Vu$q)a#&*jQ0QKI5gQfuCf0U8D)AcOJd^2$t%<7(FdrW+&)f|K zJ}Y`n=TFSelNi5=FiCU7`AaH!uSWJ>>_-a@KUMNkQ^xZSm$dghKs_bXs=%AdO*n7H za>}FsAM8cqx|Gj%I`XIFsne5A_klMG7dQE3r(sO`o~9SzMA#3$uUxn+3;RhLiqen&VGXw>`B z0Qp(@W%=cH7o5Lb|75*%$S2gl5_Lx=Z@3_yle(oPJ9Y4V$)|6R@`u*r^Y=|I@9nU^ zMmA8ap%oDFiE`f?>%YkV0u@p9**{V5X&$TST8{VD3dkgO_VOyk3+Wfff5%gB9!2g# zx|Z~M^ly}t_b$&HLW+{|s@@?p7x_toJ)3kQ3-y+G%aepa!g)2>KmBLb!cpIfYy2Kl zu|s`In&LmzriA)jUS-h3px6kXk8*bC$u7WO!U|jcD+&AKN0*xwL=w(J=G9FxKEPkp zdM1jmYayPKGF}{8SA>3CUTf-oh(ap-GdycNznZY$I=cFaZwl61Y}-)rh&k+w5^8Ud z<%0bmiiE=|0UPXhkUnG!sNO@rt}@{BL4gQ@j=TLtb(+|Jwtc zhm^23UD)G+{Up+lE!0cjfu{&qEM4uD2)vwBuk@s$f$%smcpSP^cO;p|CKNI z0Uj(kpj8t%3xAiGF1CwEL;XP&ymaXRVZTJJi|66j2tt1;96I-#N|18B!tH)P8U3|x zK~Tm~enPxlC2`!A5Al{PTczYqkO~&tSTDcnH{!kG{Z;Mxp4i_KG&$am8YJu=zl;pZZ;D@RkJKlv*3GX*tKVLsA5C4*9@ZLWBim<8W_ z@(cO+buH#M#6ziE@2%U0ab8;X$icb2F+ERH2#-KX$IqyM8=%+fcg0KX=C*tc$YMcA)+AARt0 z9N~O+^#FB1ioao(C7r-uNTsWeejmbmiA)PI#T~@8Bg!-G@I@58~ z73Y&QUwhl#3jn?$Iz3?6H&hRMaM16tT7ms>nO%3^^dzA_5EJn7O8$!aMCr@Z4^D#E zf2Qop9SP6I{;5C-XBepf`Ak(^a!N^p=xa+>tz-y$8T8DJo5bw!JmB~6Ih%fTJ zAGCb9@ctO7?a~jWV4NQki7Zo0TSBOZ-dxQRbtBZP%l%H8HK6|!xIk^mGJ?O6rkB*d z_<{b0oM-Igrb5`i7z{pYYZncBy27EcW;^Ux~Z*?KhYN4iI5V&g>p|*W@uig=?@Nj59rpcm z1?wlWwQ9#tPMrT07){bBdWHH(_?>>pvPj_bBJnOkV~LKqz7E$jrYz!z#GM?q!RyG! zWWzJbA6Ri-O_sW@Q{M>njmW0WC0D8u56Ba#YBn8+-{P^3F4Fm^e@WF3#nq(HFX@O> zC4F%szE8F(uWN*m&+`2(=VGwGBD{Tzxa=4~%KWI+#{EA~PYbMZ>w2_W8U8Z&z`Q8~ z_>1O{jQc89*tfXRxnH_>2=7bKZt<3u!X6d38pafs0sj(W@N&A>;Qz_bpT0UYf%978 z$Bn(`3YHR{_xYHpGvb$OXTq$dN0=3t~ z=n9U(-Jk{-Nn>9>+XZR~Mg!j}jsj3&kFZvY^6mu{Uu)7iYR2T`;<&6bXoEJ z0OMBzbj*X=f&23>z;zuZ4=< z9ht=tWjMK^gl)G3e&4g5U+&;iNO9D?Sd#z!5XPf3rnmcL7DKjSi%!<+aeq+l(&O~M zC8UDtV(`fk1G`m_V)&@m)v#$PsG1sdZVX#Qf%>ykaGUcDgapHWg>mgK7chSiwWfW2_B)x9TXUa3=OmXh=tZ z+P#0kTcXh%)a4zQzlNW0B}ivnxcPA@j`$l^*E#6&%7V(LKeDC0EDcm&4VNq3nSVen z-7$PoOfCUbR82B#q|Yni|N47757XL=aJ~Lt+vbNrJ=8aGzN$<6-ZZy` z%;Ep(q?Ja)KA?u}s@{{(cohEEtvjW{a7Mf-?)1s1KK?i(}}S(-NuDwk1@&-)pNKrPlns(8Y+3ijQ`>|FkhAhkJc z*s%OT0;u#0{Yqo5+rnSdOk>YpUVt=B_d=q0UJ>kZ^jxCFeuA_{-_dnFYEObNj`<`1 zZ3U>Z=&NGB>k7lZX&t}q672&p|NW~s_{V}eF)7|p!oVH#)6Q%+w3q2O*{F;@^ zGX_pJmUCmh2HcWwbRR)|(yi4fqsaj(vGz|2YkPb^6~-Kp&U_Iig7q}jYK#&`yz6rc z&2#%rptAZU>L9ZW@rrgpPxdqi^55XlsW%5FK^57>Fv$%1j{)I-*VFTuF75+WQIkb1 z%X=yh=I7k)*`gEh|H1Z`Bt|(w`d9E2_wEhIm;EcaERC1r`fX7jzn@qle=#1GynSs6 zD&#nug$5?nH%J=Qu(t-aX~jbEwf6#u2lTJDwLeoK{Zn>$(xs>t{#iiE8y?R9)ng}F z(7PxVRE${-R@*;!Kq|50@0IZzzNqIqUJNeH$pf|3h_dtLdSe4zKd^SvWIw3xiv2p% zEei@3$F*NqdHknO_%J|&o_QH?b3Cl&EF@e-ipWJDM=Q8le z>TYpQfoqTk>PzD|9r+gZN#pO`wAW7Xk72>V<-A96Kdrx4_pE;cY28}x^JjCmg9>>> zdP2Lm68U0MVZy46AYC}}>>iszEbOm-&$pFv+^Cnw+Ry8(K5B&Ln{|xevK{_DIFp6N}6ztiNK8h({P z>h7JD@bb{-pkAw&46WEHgZ1nV9Sslgf&b9UPNmz;A%FI5^AOnccM|h8n%PU;4Jn$Q z)#@Yv{Te^Cm&w<*vx79VvE0iFGBPVf5lmqPKG_yyA++hlZAS< z#k>d`WmHjb z3|k+$)wUA-+Gt+J*1XrK_b0|z^|+cWLhOcxDwj3~hl5&j^is;NHYGy7Uv_fVR2S5U z{pC!7)msSp=eUv8(I=p~9kVlSOMU|BxPimR>iqVBx|2Cr7v5U|Y3l)9|B`_V1S!>D zUT^kMRdM~_msW*W@?gC_*0PiyMm(eMur`cbfp|fSz4B8p#|YO;+q$7R0{+(L``3C| zM*yy8A@9{<1H5EtW6*~???LU_B-a;p?hL3WnOpQ#QitJxjKI<-w~Pq>Ya~6zB8&AN zn$9zGcSU{NsPo~RVGE><>(a6dTCc)i`rd3*x)k+(f3m*ipC|DD(IBpLHd)k{4HsV(^mjp; z@N@Muxu+!58#MKcQYG!6R`1W3xwokW@vLXo%F5~y>iq$h&F_0eP=7YRG>o&*K|byG zv`8G520m4pCblAS8|vla7pLC{pH{~6sPq*(--SQ7*p9YF-a@`>_Uyj%he4=!%^&o| zU&ZH5E5Gdg+K+mfF*PL2p8~4VLAe{xy5FIHt86NN6@CW&F7sXGA&$eq1N(pdc^#6A zdiBG@<5}|~s2_$S|8mQ*V*Oin7zqZialI1#)wzi~Q6J>3E#RyoA%5N;)+`LXi~P|4 zp6v476#Yn@M5pYy2iCXuPOe6G38de~v`Qb-8akc4?$&pG>=`vR2L`V^& z2S+Pg&1I}%PjnBKEY>LCV`U~YkE{a_A6o=3Eqt>>f7J1{`P0R(kUFR?S7&Gah3EO| zYS&~!@E@8ZIqYu<^4a*Q%GWQ>fLgbqm~nDgzkS{%RhJQH(A=F=Op+9e* zGQs*a9+TS7I*jKXxEf#*pZ*rg|CHaA&|_0HSX$xX(1 zbe((_#~+NlO;1WHZv*x2;LX;iKTaw5KHJpl!Xu#KZeM3!&peCy>QM?YPThq3SO3Gf zq)i<8qJ?t6lsydndUx^D@iA|#Pw)0UZwCA#a6Q?pt(=yiI;T$`SLPYP=PiE63~ToS z@1!5)JLEHqcvlhGqp!Zc4c80VU|hcy9&z`JeGs z+N0tlsK&=0t>jGMM84{N|HU`v8}d~_&quqR$ANEj#I~MqVkbyn>}EU3y$0*q=XPe< z?u(G389dS4&2k*^c+BgEpmlN(p7%@q_B#Y=+rB8C*Ni@b{qr+)g~c(yBbj~EWJ3Py zzx?(0JPr2Q_Hp=0!vU-pbFcLdsypK2*uE)~t=a^t@6KW4OTGju`q1h~9en~7{sRTK zzI^m|4cF8@tJ!lej$5luc{WX;gw4|pNdRxxr~ zBOmuS%tF4`0P5?>+i%?y7Jv^7v!9RLDuMchIh$Rw+XeOH$Y^ohOJm@n1#2>NAL11X z!=WhI6`>`#|7QQz#C{vtPbKZ`l0psSi@xG5>na}dU_G>5NNd&6AJL^GcXn$bKXwj@ zo}VL?*a>K*)N!-uVIrrEf$d{wP=F9nv3l_)40^Hl^@u1RfC}%ERqJsK2_Is{F8(i>t126kAo=*H9mD$)B2H zVGk2FO6JRZ?(+Zc;Poxq7NMs-(62U8Br|M& z8ZC~qvPz!6Q-wX#EHyMvW~0AvzSnkU;}J;rHO1yNoLr9nXmqlhqqY!u*#yVm`JDu6 z`g-3Krv*#o^A0*$O?({rE$_ew?py+X*0;v`U=n)({CC>1x-)wDCkyP2am?k;0~Ppd zzoyKwNq6)^gU7gPy*Po#5AMGbdz};eam<8}f9@x--lHpLMjVu3UtQ1cUa3vP{0*sZ zJJAyl>4Vk_yEq*{0c$wyaewKt=jb=bZm2Fho{Rmw{_N$Hd-KR|ecl&GPV9j+(7?&= zh=aPoBYNLC?P6|*eUDoz4D~pmKN;4Pd}{F?zo)UxA1nMX-Tm+XF0XwdDVl=o-4#F4 z{T%q!V9rU7%XW~aX*)B}o@lQM`_Nf&$*dIpZ;y$h?T!6-zTT*G9o|&n%iX+3GjdiT z{`Q2f?&*_2eCfCCRCc>wiT}5{@$JPqLVvsVkd?n4^55W8-?smAA$;zhQTDw8(wLoE zy0dZ=N(GuF|bzlVjOv!e2v*+cAFL`UjH2U~3rcpdw z2Gj7okN2`wPj7^@!dN>=Xo&>!WBrM|(V3-IcpmNJOV5cwDzmIsvGa^7>N)!Tu%B!@ zAr--lGHFa-w|E55u=dHt#9KABi{t9X$*7j?Sg*XB^x9Py7GEhatTMSc`j7?v;Mlqj z8?F-~us;d0*HX&B#}f@!2E`o%{@xdNx!bfK`LJ_ZmHML|{Z0F3bKcv|@JFV@E|&5_ zT%WPgPrLF6;?*az!aWavNW~4j;-0e*gntc|{`jr83;p3}#nGQ$QLwj`+)&j|W~i43 zWHaS7>H}u< zgzA|A?3cHSJG5RZK>sx?FP-?EA^%?FDVa)wn8 z6_&ng4a4ULW_BL30p7!K78cOQSMiCEtNQ$K~-wE?m z(lLF=7xpz&#h(AJ%jT zNTv|_d9#aSTt28@Mo;l?W*L+;&>!BM&{Kt;w8;%mmSR={Y{tBo7mws zkXjt6KXN*(0si)RS;xp-cbxC2K6iWO#{LEP+m7f)Gj_~xU##D!58c=g?%Z?B!pj-{ z#89787~cWBr`P(gXyQfS9ZcS{w&4d*zcE!O%Z{A_{z{kMd#z%|5$l~6$Nw?`@re0P zRDdapd^G&lZbpKPdW9kKRLW=)@pn+i?QHJ#D8lFU*3Nan8@nzx9E{kGcsv|-%!*M9 zX{Q|1F>kwD*iRVjWbN^=gf!oPn_6?v7U0)yHXW~C!EFTdHQKRW(zYA>p>+QO&YW$i59+$=wH~iWeVR2n z_wc0^p&#@Z<`vQbe&4M0=lW^IDcsMSV!AshybRkS*&i*C5q~>sb(OZPL%d|r%Grd% z@Hzd?25N~X0ne2ZJG@rI2=gtmRCQP$crfjTLlO5=^k;oKruH@_=r0E4Rx_?so5aT4}4dy2ytK;$YU63B`Ns{niPRob=&q}TzxPW+8nbV}XHWJTM%cfyu_z(E#Xl>`8 zi$SROMjsy5w=xi8+pV*mEGv>cs-^>VZ#<-~6^?zhYo}rd-om;1vzhk&z<- zu>UsdVV%VNz#j+p57@0(j(UVv-FWusEdGD+ftnG!6#S|E^ULt*K=ezEhoz_-YY6y% z!n#z+A@DGlZX3dxcyYz`xW&@^S*x@*P21PuIcNhqyLr!;QviY z5zSBQ7so?enp6JOAivRqt>0{D#{OYD^S0ytbl{7FZ3V&JSAmyzYwvcK48eM}e>V)f z5ry^dx&B1x?Kar=(96NwU+~I_VfQ!Q16=D6udBsb*2ilBZ=mz8Fm%m=lwY6mX!j0B z)ED&W&gwI&u;<~ABTIUskxAoh>C zZKJA7cOpLYYfvLz9Rj{O{^HMh=Z&a;zP$3_+^hh5$m}^SC7J~PVtkzPThWjE|0r}x zk-HD)CBMkNIhx&tes1Jm3(M6ANM9CL?t54zPQ_S9`+Ti~5$yGwS9pXH>erI%$14<# zv7b7a#dw#e0KA|(ki$ur4g1UaQYQc6e*%B(|L}ZTZX@>u$jQPxq}K!hy0l&pS}K;^BZG{%`P7=@rXcsAp*3D{3xl1J7@|eoaPlJI-Iy zG#FfNOYr-F{O(n%{sjDxdVNO)VSlyx%VnnxtFitA&L1?N9z*}p$+B?ONqq4Y2*bk5 z6)Sl7(Vvgm#Yt?rg?@`>sLrbqi~6a_;w5i{7xrK2KMx9Ao&`QzEPa@-X${U34d_N+ z>sCSk(0D0fJFh?R38wf*^YLF{u=kk8lm%D#H^X}mhbJfSlZNw8>^qkbr1}cX{j>LB zzk1?j2YrNsd_NStEokFftXCIxEW>gH_)N|-4UxPu^mnZZK2t9wao&VkWE;EnGV)0~ z&05xX6Z(rPzXDRrdh{RlxWY1Fn2_=E3uADR}VIhY%m%T==525BO6@&72y?8p3%+g=M}@SJ9t!KHIwLYY3za zn=S_?tcgYaQXF%`_>l+jkw)#uHtWQJUpLvkGW^XBJha~Zx!K3^AUyxpk0n#;$p1ZS z*h$;jkT2<+_v)pW0*@-3YZ9S7U8Eo}?B~#J+;EwYk2VB4$Vk9{=#O?JFXhF0(%RZ$ zBoq+;ii@6YUfEoL`^$VV^F9RqRO3CDL=k_yPf?h+V&>sV#IyE}T(R^i;FC>#i8*sy zP%qS}aQ1~9L%&KFOAc%p1KyXvYhH0O8U5abrikvEXyBV;FBN{Lw&lbBws;R#uO`&v zPt(1UWpMtFQEgo(Py+jC^Gw^!6MYivZP6}&`W>V&haBG>ocNCU>gEczYj;3=Xfzrx zI^9NCuOd!`22J=2ZC=P`N*n7xx@JQm$rJfxwEp0W!BOO^rqtCs-j9I)ciZ@G4NAv( z&_Ort+N5$w7t@#4j6Xev{e^V1Ap3_=imnx_{jYYf|cZccChi+nQV zk*VV5jrpQ2cietT4*eg)j-yv51NcDmm472!yRg2aLl5sh&jQ}kZYX|ZZ#C>8uOz#~ zsulUDLR7``2;sc+c1}yxBl$ZmCKpve|rT_8;hAD zo(z`yy&H3a|BqZ6UJ-N#^+|_q**=E>^!JlSk27}W6Z)&EH}4hc=#Tq`&7F>2L_F^t zGEKXY1bmNabIPYk8~rg|VW93(Cf@&P)0ZCc8%MsNk&fvO*`wYZn2XbF<3+sdmhSw> z>_I=rD2Pz@;+WRs=!rPK? zzFSw%)sG51r}M$99V6nX$CxtIWmiIU`bO|pN;8FCo1G)xLh(FAvTP(s%+;1bFw40K!D(2(+^q%fD zIR7>j+&}F9eNlqIkTLmh8OaXM&v^FZ^K%9GCvBH@?tvnlcN#uwY_+~0@t0xRctI)% z_h=-$ID_x(20k0d9Th6tM2l=}qbj{nM73*;SKaaYc(?vY0 za|$(cE=|GwBy;e;)Fj{u#wSi}eue$*p7gr;Cp#Rlo9S z;ohW-`whF#$|qBc=Z#Hjj8(?`4mDnGtqw=LD|frS{^AepcMnw@DZa7*{F2tEm$&aa z;rw`&pvbojoS*63G;Uxc1bZ6W745<4kNu$WD|VJgxDYQ&rrq{WB#2->tbfHuI-)*d z)}9I75QTb%cCP-%)MxZ>4K2ycZ`?Rf(9`+;%o{bt^QyO|g4qp(^Lk{_X9u_o7RRlQ zJlZiQfERTJdsIH?2fohOv9`pCaGrLU?U&g{9n_b!na1*8g!9j7MlpjYzu-Jmf$hOerrkHN-_rK2=HqF?`Hn`v>i83Rz^evw`YX645g(W_^8ES&z^fWlB%9Z0BmR!< z*K*%n0sngWt^d;Zvmb(8C1%C?*`7}G0)X? zRT1hn+G?1<1e zmf**E1=>1=^Hz1p7tLPRJ{eS^Uu6c*p6+x-|JO8UOwqrLdgCiw4W-!?cvhb6uewj2 zz%we@mfjfbFTi|@#{Dyw$L~80!Zmga;Jm^>kJG`j7TEJp5%r#&K*99}O2t;zuoCt&QW=cOa`bc6n#vSsw?#@5!&Ez;=D)#nuz#amX zN%)~-zCMd~SwLACUlF_3

CXh?-ezP82skmuYrb9q3$OQG^4tQ`V1 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≫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

{``_mz)6qNng6zzFqbnpzp_P-5l2&{R!laO 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%0A8y5UE^M43ws=mUaS8d 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�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 From 45a09e5d139a47ba1e8108e53421a32f4c0ad3ca Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 13:09:37 +0100 Subject: [PATCH 21/25] Test crbd vignette --- vignettes/crbd-example.Rmd | 47 +++++++++++++++++++++++++++ vignettes/rdata/crbd/output_crbd.rds | Bin 0 -> 17831 bytes 2 files changed, 47 insertions(+) create mode 100644 vignettes/crbd-example.Rmd create mode 100644 vignettes/rdata/crbd/output_crbd.rds diff --git a/vignettes/crbd-example.Rmd b/vignettes/crbd-example.Rmd new file mode 100644 index 0000000..5c80c16 --- /dev/null +++ b/vignettes/crbd-example.Rmd @@ -0,0 +1,47 @@ +--- +title: "Constant-rate Birth Death example" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{crbd-example} + %\VignetteEncoding{UTF-8} + %\VignetteEngine{knitr::rmarkdown} +editor_options: + chunk_output_type: console +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + warning = FALSE, + message = FALSE +) + +options(rmarkdown.html_vignette.check_title = FALSE) +``` + +```{r setup} +library(treepplr) +``` + +```{r, eval = FALSE} +exe_path <- tp_compile("crbd", "smc-apf", particles = 5000) +data_path <- tp_data("crbd") + +output_list <- tp_run(exe_path, data_path, n_sweeps = 4) +``` + +```{r, echo = FALSE} +output_list <- readRDS("rdata/crbd/output_crbd.rds") +``` + + +```{r} +output <- tp_parse_smc(output_list) + +tp_smc_convergence(output) +``` + + + + diff --git a/vignettes/rdata/crbd/output_crbd.rds b/vignettes/rdata/crbd/output_crbd.rds new file mode 100644 index 0000000000000000000000000000000000000000..fd55deca8b0431df1611a2287d696882d1c6da5e GIT binary patch literal 17831 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

6NI?#5 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 literal 0 HcmV?d00001 From 7acb60bda97e4491c7ce1bd679339a632ce3de25 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 13:15:09 +0100 Subject: [PATCH 22/25] Dont run test --- man/tp_data.Rd | 2 +- man/tp_run.Rd | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/man/tp_data.Rd b/man/tp_data.Rd index 82f2afe..b02c9a4 100644 --- a/man/tp_data.Rd +++ b/man/tp_data.Rd @@ -34,7 +34,7 @@ Prepare data input for \code{\link[=tp_run]{tp_run()}}. input, which is defined in the TreePPL model code. } \examples{ -\donttest{ +\dontrun{ # Example using a model name supported by TreePPL input <- tp_data("tree_inference") input diff --git a/man/tp_run.Rd b/man/tp_run.Rd index 2c7e37b..c00624c 100644 --- a/man/tp_run.Rd +++ b/man/tp_run.Rd @@ -40,6 +40,7 @@ A list of TreePPL output in parsed JSON format. Run TreePPL and return output. } \examples{ +\dontrun{ # When using SMC # compile model and create SMC inference machinery exe_path <- tp_compile(model = "coin", method = "smc-bpf", particles = 2000) @@ -61,3 +62,4 @@ data_path <- tp_data(data_input = "coin") # run TreePPL result <- tp_run(exe_path, data_path, n_runs = 2) } +} From 1476b6489ce01e3ee74cd405bbe46737e6712419 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 13:19:08 +0100 Subject: [PATCH 23/25] Remove all calls to the self-contained models folder --- vignettes/coin-example.Rmd | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/vignettes/coin-example.Rmd b/vignettes/coin-example.Rmd index 35528fe..908db1e 100644 --- a/vignettes/coin-example.Rmd +++ b/vignettes/coin-example.Rmd @@ -43,7 +43,7 @@ can find all available models and some information about them [here](https://tre If you want to look at the TreePPL code here in R, you can use the following functions: -```{r} +```{r, eval = FALSE} model_path <- tp_model("coin") ``` @@ -139,16 +139,21 @@ Now we can start analyzing the model by inferring the value of `p` given some ob To do this, we need to provide the observations in a suitable format. To load the example data provided in the *treepplr* package, use: -```{r} +```{r, eval=FALSE} data <- tp_data(data_input = "coin") ``` We can look at the structure of the input data using: -```{r} +```{r, eval=FALSE} jsonlite::fromJSON(data) ``` +```` +$coinflips + [1] TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE +```` + The TreePPL compiler requires data in JSON format. The conversion from R variables to appropriate JSON code understood by TreePPL From 55c5b6b80b73daf4db56c600f200abd0397944a3 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 2 Feb 2026 13:46:03 +0100 Subject: [PATCH 24/25] Rename getting started vignette --- vignettes/{overview.Rmd => treepplr.Rmd} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename vignettes/{overview.Rmd => treepplr.Rmd} (100%) diff --git a/vignettes/overview.Rmd b/vignettes/treepplr.Rmd similarity index 100% rename from vignettes/overview.Rmd rename to vignettes/treepplr.Rmd From d817aca301045d9ed12072e94f2314e5c1f8755b Mon Sep 17 00:00:00 2001 From: ThimotheeV Date: Thu, 5 Feb 2026 18:00:10 +0100 Subject: [PATCH 25/25] Make the test Platform and version proof + now handle more corner case on tp_model --- R/compile.R | 11 ++++------- R/utils.R | 4 ++-- tests/testthat/test-compile.R | 28 +++++++++++++++++++++++----- tests/testthat/test-data.R | 3 ++- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/R/compile.R b/R/compile.R index 7ccb909..fe41425 100644 --- a/R/compile.R +++ b/R/compile.R @@ -129,7 +129,7 @@ tp_model <- function(model_input) { res <- try(file.exists(model_input), silent = TRUE) # If path exists, it's all good - if (!is(res, "try-error") && res) { + if (!is(res,"try-error") && res) { model_path <- model_input # name the model if (is.null(names(model_path))){ @@ -138,15 +138,12 @@ tp_model <- function(model_input) { # If path doesn't exist } else { - - # It can be a model in the library - if (nchar(model_input) < 50) { - res_lib <- tp_find_model(model_input) + # It can be a model name in the library + res_lib <- try(tp_find_model(model_input), silent = TRUE) # model_input has the name of a known model - if (length(res_lib) != 0) { + if (!is(res_lib,"try-error") && length(res_lib) != 0) { model_path <- res_lib names(model_path) <- model_input - } # OR model_input contains the model #### (needs to be verified as an appropriate model later) #### } else { diff --git a/R/utils.R b/R/utils.R index 8650345..26aa1f5 100644 --- a/R/utils.R +++ b/R/utils.R @@ -165,8 +165,8 @@ tp_find_model <- function(model_name) { # make sure you get the most recent version if you have more than one treeppl folder in the tmp version <- sort(version, decreasing = TRUE)[1] - res = system(paste0("find /tmp/", version," -name ", model_name, ".tppl"), - intern = T) + res <- system(paste0("find /tmp/", version," -name ", model_name, ".tppl"), + intern = T, ignore.stderr = TRUE) } # Find data for model_name diff --git a/tests/testthat/test-compile.R b/tests/testthat/test-compile.R index d38bacf..26e125e 100644 --- a/tests/testthat/test-compile.R +++ b/tests/testthat/test-compile.R @@ -37,17 +37,23 @@ test_that("Test-compile_2a : tp_model model name", { version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) version <- sort(version, decreasing = TRUE)[1] - model_right <- paste0("/tmp/treeppl-0.2/y5b8qlyn9qgk61jxcdzq6gmv65-", version,"/lib/mcore/treeppl/models/lang/coin.tppl") + model_right = system(paste0("find /tmp/", version," -name coin.tppl"), + intern = T) + names(model_right) <- "coin" expect_equal(model, model_right) }) -test_that("Test-compile_2b : tp_model model string ", { +test_that("Test-compile_2b : tp_model model path ", { cat("\tTest-compile_2b : tp_model\n") - model_right <- paste0(temp_dir, "tmp_model_file.tppl") + version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) + version <- sort(version, decreasing = TRUE)[1] + + model_right = system(paste0("find /tmp/", version," -name coin.tppl"), + intern = T) model <- treepplr::tp_model(model_right) names(model_right) <- "custom_model" @@ -58,7 +64,7 @@ test_that("Test-compile_2b : tp_model model string ", { test_that("Test-compile_3a : tp_write path", { cat("\tTest-compile_3a : tp_write\n") - path <- treepplr::tp_write_model("bla bla bla") + path <- treepplr::tp_write_model("T : bla bla bla") expect_true(file.exists(path)) }) @@ -67,10 +73,22 @@ test_that("Test-compile_3a : tp_write path", { test_that("Test-compile_3b : tp_write content", { cat("\tTest-compile_3b : tp_write\n") - content_right <- "bla bla bla" + content_right <- "M : bla bla bla" path <- treepplr::tp_write_model(content_right) content <- readLines(path, warn = FALSE) expect_equal(content_right, content) }) + + +test_that("Test-compile_4 : tp_model model string ", { + cat("\tTest-compile_4 : tp_model\n") + + model_string <- "S : bla bla bla" + model <- treepplr::tp_model(model_string) + model_right <- paste0(temp_dir, "tmp_model_file.tppl") + names(model_right) <- "custom_model" + + expect_equal(model, model_right) +}) diff --git a/tests/testthat/test-data.R b/tests/testthat/test-data.R index 76a1fea..ec66b3a 100644 --- a/tests/testthat/test-data.R +++ b/tests/testthat/test-data.R @@ -11,7 +11,8 @@ test_that("Test-data_1a : tp_data name", { version <- list.files("/tmp", pattern = "treeppl", full.names = FALSE) version <- sort(version, decreasing = TRUE)[1] - data_right <- paste0("/tmp/treeppl-0.2/y5b8qlyn9qgk61jxcdzq6gmv65-", version,"/lib/mcore/treeppl/models/lang/data/testdata_coin.json") + data_right <- system(paste0("find /tmp/", version," -name testdata_coin.json"), + intern = T) data <- treepplr::tp_data("coin")