From 996f8c90a04c2b0054315f6e1955ced108c0296a Mon Sep 17 00:00:00 2001 From: olivroy Date: Wed, 25 Jun 2025 11:56:17 -0400 Subject: [PATCH 1/2] Use testthat 3rd edition, remove deprecated context, + redundant library(metR) --- DESCRIPTION | 1 + tests/testthat/test-ReadNetCDF.R | 6 ++---- tests/testthat/test-breaks.R | 11 ++--------- tests/testthat/test-derivate.R | 3 --- tests/testthat/test-eof.R | 13 ++++++++----- tests/testthat/test-fitlm.R | 3 --- tests/testthat/test-imputeeof.R | 4 ---- tests/testthat/test-interpolate.R | 2 -- tests/testthat/test-season.R | 3 --- tests/testthat/test-smallfun.R | 4 ---- tests/testthat/test-vis-arrow.R | 2 -- tests/testthat/test-vis-contour2.R | 1 - tests/testthat/test-vis-contour_fill.R | 2 -- tests/testthat/test-vis-discretised-scale.R | 1 - tests/testthat/test-vis-geom-relief.R | 1 - tests/testthat/test-vis-guide_colorstrip.R | 1 - tests/testthat/test-vis-streamline.R | 1 - tests/testthat/test-vis-text-contour.R | 1 - tests/testthat/test-waves.R | 4 ---- tests/testthat/test_text_contour.R | 1 - tests/testthat/tests.R | 5 +---- 21 files changed, 14 insertions(+), 56 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2abb9209..1b7fae39 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -60,4 +60,5 @@ Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) RoxygenNote: 7.3.2 +Config/testthat/edition: 3 VignetteBuilder: knitr diff --git a/tests/testthat/test-ReadNetCDF.R b/tests/testthat/test-ReadNetCDF.R index b1c0472d..3eb06105 100644 --- a/tests/testthat/test-ReadNetCDF.R +++ b/tests/testthat/test-ReadNetCDF.R @@ -1,5 +1,3 @@ - -context("ReadNetCDF") skip_if_not_installed(c("ncdf4", "CFtime")) file <- system.file("extdata", "temperature.nc", package = "metR") test_that("returns a data.table", { @@ -37,8 +35,8 @@ test_that("naming works", { test_that("different outs work", { expect_s3_class(ReadNetCDF(file), "data.table") - expect_is(ReadNetCDF(file, out = "array")[[1]], "array") - expect_is(ReadNetCDF(file, out = "vector")[[1]], "numeric") + expect_equal(class(ReadNetCDF(file, out = "array")[[1]]), "array") + expect_type(ReadNetCDF(file, out = "vector")[[1]], "double") }) diff --git a/tests/testthat/test-breaks.R b/tests/testthat/test-breaks.R index 072f6e3a..213c584a 100644 --- a/tests/testthat/test-breaks.R +++ b/tests/testthat/test-breaks.R @@ -1,13 +1,6 @@ -library(metR) - - -context("Breaks") - test_that("functions return functions", { - expect_equal(is.function(MakeBreaks()), - TRUE) - expect_equal(is.function(AnchorBreaks()), - TRUE) + expect_true(is.function(MakeBreaks())) + expect_true(is.function(AnchorBreaks())) }) test_that("Anchor is in breaks", { diff --git a/tests/testthat/test-derivate.R b/tests/testthat/test-derivate.R index a8aefef8..5bdf66ef 100644 --- a/tests/testthat/test-derivate.R +++ b/tests/testthat/test-derivate.R @@ -1,5 +1,3 @@ -context("Derivate internals") - test_derv <- function(y, cyclical = FALSE, fill = FALSE, equispaced = TRUE) { y <- sort(y) x <- sin(y) @@ -52,7 +50,6 @@ test_that("Works with unequal grid", { }) -context("Derivate interface") test_that("Derivative works", { expect_equal({ x <- 1:10 diff --git a/tests/testthat/test-eof.R b/tests/testthat/test-eof.R index a56c0a41..f1ae1f4f 100644 --- a/tests/testthat/test-eof.R +++ b/tests/testthat/test-eof.R @@ -1,5 +1,4 @@ -context("EOF") data(geopotential) test_that("EOF runs", { expect_s3_class({ @@ -42,12 +41,16 @@ test_that("EOF rotates", { round(EOF(gh ~ lon + lat | date, data = geopotential, n = 1:2, rotate = function(x) stats::varimax(x, normalize = FALSE))$sdev$sd), c(1424982, 542271) ) - + expect_warning( + compare_val <- EOF(gh ~ lon + lat | date, data = geopotential, n = 1:2, + rotate = TRUE)$sdev$sd, + "deprecated" + ) expect_equal( EOF(gh ~ lon + lat | date, data = geopotential, n = 1:2, rotate = function(x) stats::varimax(x, normalize = FALSE))$sdev$sd, - expect_warning(EOF(gh ~ lon + lat | date, data = geopotential, n = 1:2, - rotate = TRUE)$sdev$sd, "deprecated")) + compare_val + ) }) @@ -83,6 +86,6 @@ test_that("eof methods", { expect_equal(predict(eof_all, n = 1:5), predict(eof)) - expect_known_output(summary(eof), file = "eof_summary") + expect_snapshot(summary(eof)) }) diff --git a/tests/testthat/test-fitlm.R b/tests/testthat/test-fitlm.R index b3588d4a..ff9537c9 100644 --- a/tests/testthat/test-fitlm.R +++ b/tests/testthat/test-fitlm.R @@ -1,6 +1,3 @@ -context("Fitlm") - - n <- 100 x <- rnorm(n) y <- rnorm(n) diff --git a/tests/testthat/test-imputeeof.R b/tests/testthat/test-imputeeof.R index 6f67800e..5fd88d68 100644 --- a/tests/testthat/test-imputeeof.R +++ b/tests/testthat/test-imputeeof.R @@ -1,7 +1,3 @@ -library(metR) - -context("Impute EOF") - library(data.table) data(geopotential) geopotential <- copy(geopotential) diff --git a/tests/testthat/test-interpolate.R b/tests/testthat/test-interpolate.R index 39336a19..7ef21fed 100644 --- a/tests/testthat/test-interpolate.R +++ b/tests/testthat/test-interpolate.R @@ -1,5 +1,3 @@ - -context("interpolate") library(data.table) data(geopotential) geopotential <- geopotential[date == date[1]] diff --git a/tests/testthat/test-season.R b/tests/testthat/test-season.R index a816fc32..a67cb6f4 100644 --- a/tests/testthat/test-season.R +++ b/tests/testthat/test-season.R @@ -1,6 +1,3 @@ - -context("season functions") - levels <- c("DJF", "MAM", "JJA", "SON") niveles <- c("DEF", "MAM", "JJA", "SON") diff --git a/tests/testthat/test-smallfun.R b/tests/testthat/test-smallfun.R index 27b2faa1..9ec7b372 100644 --- a/tests/testthat/test-smallfun.R +++ b/tests/testthat/test-smallfun.R @@ -1,7 +1,3 @@ -library(metR) - -context("Small functions") - test_that("Percentile works", { expect_equal(Percentile(1:10), seq(0.1, 1, by = 0.1)) diff --git a/tests/testthat/test-vis-arrow.R b/tests/testthat/test-vis-arrow.R index b28ccb44..9ff1d94f 100644 --- a/tests/testthat/test-vis-arrow.R +++ b/tests/testthat/test-vis-arrow.R @@ -4,8 +4,6 @@ skip_if_not_installed("vdiffr") library(vdiffr) library(ggplot2) -context("arrows") - test_that("arrow guide works", { g <- ggplot(seals, aes(long, lat)) + diff --git a/tests/testthat/test-vis-contour2.R b/tests/testthat/test-vis-contour2.R index bead6bfc..02789a98 100644 --- a/tests/testthat/test-vis-contour2.R +++ b/tests/testthat/test-vis-contour2.R @@ -4,7 +4,6 @@ skip_if_not_installed("vdiffr") library(vdiffr) library(ggplot2) -context("stat_contour2") data(geopotential) geo <- subset(geopotential, date == date[1]) test_that("geom_contour2 mimics geom_contour", { diff --git a/tests/testthat/test-vis-contour_fill.R b/tests/testthat/test-vis-contour_fill.R index 0ae74a0a..7f9157ba 100644 --- a/tests/testthat/test-vis-contour_fill.R +++ b/tests/testthat/test-vis-contour_fill.R @@ -6,8 +6,6 @@ library(data.table) library(ggplot2) -context("contour_fill") - test_that("geom_contour_fill works", { skip_on_ci() expect_doppelganger("contour_fill-base", diff --git a/tests/testthat/test-vis-discretised-scale.R b/tests/testthat/test-vis-discretised-scale.R index f95e7a18..1d30eb33 100644 --- a/tests/testthat/test-vis-discretised-scale.R +++ b/tests/testthat/test-vis-discretised-scale.R @@ -3,7 +3,6 @@ skip_if_not_installed("vdiffr") library(ggplot2) library(vdiffr) -context("discretised_scale") v <- ggplot(faithfuld, aes(waiting, eruptions, z = density)) v <- v + geom_contour_filled() diff --git a/tests/testthat/test-vis-geom-relief.R b/tests/testthat/test-vis-geom-relief.R index 33d29909..b544afea 100644 --- a/tests/testthat/test-vis-geom-relief.R +++ b/tests/testthat/test-vis-geom-relief.R @@ -6,7 +6,6 @@ library(ggplot2) data(volcano) v <- reshape2::melt(volcano) -context("geom_relief") test_that("geom-relief", { expect_doppelganger("volcano-relief", ggplot(v, aes(Var1, Var2)) + diff --git a/tests/testthat/test-vis-guide_colorstrip.R b/tests/testthat/test-vis-guide_colorstrip.R index 93efbc4c..2ff809c9 100644 --- a/tests/testthat/test-vis-guide_colorstrip.R +++ b/tests/testthat/test-vis-guide_colorstrip.R @@ -4,7 +4,6 @@ skip_if_not_installed("vdiffr") library(vdiffr) library(ggplot2) -context("guide_colourstrip") data(geopotential) geo <- geopotential[date == date[1]] base <- ggplot(geo, aes(lon, lat)) + diff --git a/tests/testthat/test-vis-streamline.R b/tests/testthat/test-vis-streamline.R index 8bf1c086..ca58cf92 100644 --- a/tests/testthat/test-vis-streamline.R +++ b/tests/testthat/test-vis-streamline.R @@ -5,7 +5,6 @@ library(ggplot2) library(data.table) library(vdiffr) -context("Streamline") geo <- geopotential[date == date[1]] geo[, c("u", "v") := GeostrophicWind(gh, lon, lat)] diff --git a/tests/testthat/test-vis-text-contour.R b/tests/testthat/test-vis-text-contour.R index 0e724f8d..716165be 100644 --- a/tests/testthat/test-vis-text-contour.R +++ b/tests/testthat/test-vis-text-contour.R @@ -4,7 +4,6 @@ skip_if_not_installed("vdiffr") library(ggplot2) library(vdiffr) -context("text_contour") data(geopotential) geo <- subset(geopotential, date == date[1]) diff --git a/tests/testthat/test-waves.R b/tests/testthat/test-waves.R index 37a6e7ff..3c52779c 100644 --- a/tests/testthat/test-waves.R +++ b/tests/testthat/test-waves.R @@ -1,7 +1,3 @@ - - -context("FitWave") - t <- seq(0, 2*pi, length.out = 100)[-1] x <- 3*cos(t) + 2*cos(2*t) diff --git a/tests/testthat/test_text_contour.R b/tests/testthat/test_text_contour.R index b45175f0..9f0b57bc 100644 --- a/tests/testthat/test_text_contour.R +++ b/tests/testthat/test_text_contour.R @@ -1,5 +1,4 @@ -# context("tex_contour") # v <- reshape2::melt(volcano) # g <- ggplot(v, aes(Var1, Var2, z = value)) + # geom_contour() diff --git a/tests/testthat/tests.R b/tests/testthat/tests.R index 9d80932f..033d4ff0 100644 --- a/tests/testthat/tests.R +++ b/tests/testthat/tests.R @@ -1,7 +1,6 @@ library(metR) -context("season") test_that("season assigns season", { expect_equal(as.character(season(1)), "DJF") expect_equal(as.character(season(1, lang = "es")), @@ -15,10 +14,8 @@ test_that("season assigns season", { -context("MaskLand") -test_that("Water is still water", { +test_that("Maskland Water is still water", { skip_if_not_installed("maps") - expect_equal(MaskLand(120, 14), FALSE) expect_equal(MaskLand(360-58, -34), TRUE) expect_equal(MaskLand(-58, -34, wrap = c(-180, 180)), TRUE) From 2c5cebebd0b0fd42d28ddcb558da9446ed0e8d9d Mon Sep 17 00:00:00 2001 From: olivroy Date: Wed, 25 Jun 2025 11:57:06 -0400 Subject: [PATCH 2/2] Use snapshots from testthat 3. (I know the diff is bad from GitHub, but I verified that they matched when I first opened the PR. --- tests/testthat/GlanceNetCDF | 11 -- tests/testthat/_snaps/GetTopography.md | 19 +++ tests/testthat/_snaps/ReadNetCDF.md | 36 +++++ tests/testthat/_snaps/eof.md | 13 ++ tests/testthat/_snaps/interpolate.md | 183 +++++++++++++++++++++++ tests/testthat/_snaps/trajectory.md | 14 ++ tests/testthat/_snaps/waveflux.md | 19 +++ tests/testthat/eof_print | 38 ----- tests/testthat/eof_summary | 7 - tests/testthat/interpolate1 | Bin 1324 -> 0 bytes tests/testthat/interpolate2 | Bin 267 -> 0 bytes tests/testthat/interpolate3 | Bin 1339 -> 0 bytes tests/testthat/interpolate4 | Bin 401 -> 0 bytes tests/testthat/readnetcdf_unnamed_subset | Bin 16518 -> 0 bytes tests/testthat/test-GetTopography.R | 2 +- tests/testthat/test-ReadNetCDF.R | 4 +- tests/testthat/test-interpolate.R | 10 +- tests/testthat/test-trajectory.R | 4 +- tests/testthat/test-waveflux.R | 2 +- tests/testthat/topography | Bin 28328 -> 0 bytes tests/testthat/trajectory1 | Bin 403 -> 0 bytes tests/testthat/waveflux-return | 0 22 files changed, 295 insertions(+), 67 deletions(-) delete mode 100644 tests/testthat/GlanceNetCDF create mode 100644 tests/testthat/_snaps/GetTopography.md create mode 100644 tests/testthat/_snaps/ReadNetCDF.md create mode 100644 tests/testthat/_snaps/eof.md create mode 100644 tests/testthat/_snaps/interpolate.md create mode 100644 tests/testthat/_snaps/trajectory.md create mode 100644 tests/testthat/_snaps/waveflux.md delete mode 100644 tests/testthat/eof_print delete mode 100644 tests/testthat/eof_summary delete mode 100644 tests/testthat/interpolate1 delete mode 100644 tests/testthat/interpolate2 delete mode 100644 tests/testthat/interpolate3 delete mode 100644 tests/testthat/interpolate4 delete mode 100644 tests/testthat/readnetcdf_unnamed_subset delete mode 100644 tests/testthat/topography delete mode 100644 tests/testthat/trajectory1 delete mode 100644 tests/testthat/waveflux-return diff --git a/tests/testthat/GlanceNetCDF b/tests/testthat/GlanceNetCDF deleted file mode 100644 index 7263d018..00000000 --- a/tests/testthat/GlanceNetCDF +++ /dev/null @@ -1,11 +0,0 @@ ------ Variables ----- -air: - mean Daily Air temperature in degK - Dimensions: lon by lat by level by time - - ------ Dimensions ----- - time: 1 values from 2010-07-09 to 2010-07-09 - level: 17 values from 10 to 1000 millibar - lat: 73 values from -90 to 90 degrees_north - lon: 144 values from 0 to 357.5 degrees_east diff --git a/tests/testthat/_snaps/GetTopography.md b/tests/testthat/_snaps/GetTopography.md new file mode 100644 index 00000000..5d9c178f --- /dev/null +++ b/tests/testthat/_snaps/GetTopography.md @@ -0,0 +1,19 @@ +# GetTopography gets topography + + Code + topo + Output + lon lat h + + 1: 280.25 -0.25 263 + 2: 280.75 -0.25 289 + 3: 281.25 -0.25 1532 + 4: 281.75 -0.25 2830 + 5: 282.25 -0.25 2375 + --- + 11996: 327.75 -59.75 -3094 + 11997: 328.25 -59.75 -3413 + 11998: 328.75 -59.75 -2282 + 11999: 329.25 -59.75 -2966 + 12000: 329.75 -59.75 -2752 + diff --git a/tests/testthat/_snaps/ReadNetCDF.md b/tests/testthat/_snaps/ReadNetCDF.md new file mode 100644 index 00000000..b9c293a7 --- /dev/null +++ b/tests/testthat/_snaps/ReadNetCDF.md @@ -0,0 +1,36 @@ +# GlanceNetCDF prints nicely + + Code + print(GlanceNetCDF(file)) + Output + ----- Variables ----- + air: + mean Daily Air temperature in degK + Dimensions: lon by lat by level by time + + + ----- Dimensions ----- + time: 1 values from 2010-07-09 to 2010-07-09 + level: 17 values from 10 to 1000 millibar + lat: 73 values from -90 to 90 degrees_north + lon: 144 values from 0 to 357.5 degrees_east + +# subsetting works + + Code + ReadNetCDF(file, subset = s) + Output + time level lat lon air + + 1: 2010-07-09 1000 -70 0.0 249.07 + 2: 2010-07-09 1000 -70 2.5 249.82 + 3: 2010-07-09 1000 -70 5.0 250.32 + 4: 2010-07-09 1000 -70 7.5 250.62 + 5: 2010-07-09 1000 -70 10.0 250.77 + --- + 7493: 2010-07-09 10 70 347.5 242.17 + 7494: 2010-07-09 10 70 350.0 242.05 + 7495: 2010-07-09 10 70 352.5 241.95 + 7496: 2010-07-09 10 70 355.0 241.85 + 7497: 2010-07-09 10 70 357.5 241.70 + diff --git a/tests/testthat/_snaps/eof.md b/tests/testthat/_snaps/eof.md new file mode 100644 index 00000000..21425c48 --- /dev/null +++ b/tests/testthat/_snaps/eof.md @@ -0,0 +1,13 @@ +# eof methods + + Code + summary(eof) + Output + Importance of components: + Component Explained variance Cumulative variance + 1 100% 100% + 2 0% 100% + 3 0% 100% + 4 0% 100% + 5 0% 100% + diff --git a/tests/testthat/_snaps/interpolate.md b/tests/testthat/_snaps/interpolate.md new file mode 100644 index 00000000..44099bcb --- /dev/null +++ b/tests/testthat/_snaps/interpolate.md @@ -0,0 +1,183 @@ +# interpolate works + + Code + geopotential[, Interpolate(gh ~ lon + lat, x.out, y.out)] + Output + lon lat gh + + 1: 0 -90 2715.936 + 2: 10 -90 2715.936 + 3: 20 -90 2715.936 + 4: 30 -90 2715.936 + 5: 40 -90 2715.936 + --- + 366: 320 0 NA + 367: 330 0 NA + 368: 340 0 NA + 369: 350 0 NA + 370: 360 0 NA + +--- + + Code + geopotential[, Interpolate(gh ~ lon + lat, x.out, y.out, grid = FALSE)] + Output + lon lat gh + + 1: 0 -90 2715.936 + 2: 40 -80 2776.129 + 3: 80 -70 2722.968 + 4: 120 -60 2708.710 + 5: 160 -50 2928.774 + 6: 200 -40 3095.548 + 7: 240 -30 3170.258 + 8: 280 -20 NA + 9: 320 -10 NA + 10: 360 0 NA + +--- + + Code + geopotential[, Interpolate(gh ~ lon + lat, x.out, y.out, grid = FALSE)] + Output + lon lat gh + + 1: 0 -90 2715.936 + 2: 40 -80 2776.129 + 3: 80 -70 2722.968 + 4: 120 -60 2708.710 + 5: 160 -50 2928.774 + 6: 200 -40 3095.548 + 7: 240 -30 3170.258 + 8: 280 -20 NA + 9: 320 -10 NA + 10: 360 0 NA + +--- + + Code + geopotential[, Interpolate(u | v ~ lon + lat, x.out, y.out)] + Output + lon lat u v + + 1: 0 -90 NA 0.00000000 + 2: 40 -90 NA 0.00000000 + 3: 80 -90 NA 0.00000000 + 4: 120 -90 NA 0.00000000 + 5: 160 -90 NA 0.00000000 + 6: 200 -90 NA 0.00000000 + 7: 240 -90 NA 0.00000000 + 8: 280 -90 NA 0.00000000 + 9: 320 -90 NA 0.00000000 + 10: 360 -90 NA NA + 11: 0 -80 0.2060515 -5.40863143 + 12: 40 -80 -0.1545536 -0.59330168 + 13: 80 -80 -0.8718648 3.17222089 + 14: 120 -80 0.8639167 3.24061898 + 15: 160 -80 -1.1096189 1.32374501 + 16: 200 -80 0.4676200 1.11820527 + 17: 240 -80 3.7568859 -2.37337946 + 18: 280 -80 2.9325899 2.94388178 + 19: 320 -80 -0.1624718 -4.70116019 + 20: 360 -80 NA NA + 21: 0 -70 -4.2985774 1.84579405 + 22: 40 -70 -6.8237095 -5.57368410 + 23: 80 -70 -5.1208940 -2.82934752 + 24: 120 -70 -4.0576755 0.08501093 + 25: 160 -70 -0.2035282 -0.59507650 + 26: 200 -70 2.6331356 -0.13353609 + 27: 240 -70 1.7775944 -0.29142665 + 28: 280 -70 -1.1338483 -5.52515894 + 29: 320 -70 3.8085068 -0.64360166 + 30: 360 -70 NA NA + 31: 0 -60 3.5781696 3.53304644 + 32: 40 -60 8.8687692 -1.91979880 + 33: 80 -60 7.1743135 2.46953084 + 34: 120 -60 3.4114219 -1.33391364 + 35: 160 -60 10.9507454 0.25238969 + 36: 200 -60 7.9404185 -1.35199020 + 37: 240 -60 9.8511790 -0.21630479 + 38: 280 -60 7.2103984 0.26139387 + 39: 320 -60 1.4240577 2.06393378 + 40: 360 -60 NA NA + 41: 0 -50 18.3000222 0.23778405 + 42: 40 -50 17.6937333 -3.40017988 + 43: 80 -50 19.0234508 3.13072329 + 44: 120 -50 16.0023015 -2.11618203 + 45: 160 -50 16.2825038 -1.28399785 + 46: 200 -50 15.3450773 0.41216301 + 47: 240 -50 15.9972504 -1.77540222 + 48: 280 -50 15.1667842 1.15718769 + 49: 320 -50 15.2330272 2.71064214 + 50: 360 -50 NA NA + 51: 0 -40 19.2893933 -0.75294282 + 52: 40 -40 13.6974663 -1.91804865 + 53: 80 -40 13.5213788 2.51244878 + 54: 120 -40 14.3107397 -1.69616087 + 55: 160 -40 8.6701957 -0.80842976 + 56: 200 -40 12.1735190 0.97489059 + 57: 240 -40 8.7430294 -0.28529287 + 58: 280 -40 10.4491757 3.08315448 + 59: 320 -40 14.2196172 0.32494354 + 60: 360 -40 NA NA + 61: 0 -30 2.5367799 1.84769720 + 62: 40 -30 -0.2653629 0.38758871 + 63: 80 -30 0.4136992 0.12619485 + 64: 120 -30 6.8063350 -3.82145282 + 65: 160 -30 0.7570996 0.80212173 + 66: 200 -30 1.1474053 0.41460123 + 67: 240 -30 -0.5697742 0.76610504 + 68: 280 -30 1.3503855 2.76694139 + 69: 320 -30 6.8688359 -4.11893159 + 70: 360 -30 NA NA + 71: 0 -20 NA NA + 72: 40 -20 NA NA + 73: 80 -20 NA NA + 74: 120 -20 NA NA + 75: 160 -20 NA NA + 76: 200 -20 NA NA + 77: 240 -20 NA NA + 78: 280 -20 NA NA + 79: 320 -20 NA NA + 80: 360 -20 NA NA + 81: 0 -10 NA NA + 82: 40 -10 NA NA + 83: 80 -10 NA NA + 84: 120 -10 NA NA + 85: 160 -10 NA NA + 86: 200 -10 NA NA + 87: 240 -10 NA NA + 88: 280 -10 NA NA + 89: 320 -10 NA NA + 90: 360 -10 NA NA + 91: 0 0 NA NA + 92: 40 0 NA NA + 93: 80 0 NA NA + 94: 120 0 NA NA + 95: 160 0 NA NA + 96: 200 0 NA NA + 97: 240 0 NA NA + 98: 280 0 NA NA + 99: 320 0 NA NA + 100: 360 0 NA NA + lon lat u v + +--- + + Code + geopotential[, Interpolate(gh ~ lon + lat, as.path(lons, lats))] + Output + lon lat .order gh + + 1: 302.0000 -34.00000 1 3120.352 + 2: 299.3333 -38.44444 2 3087.826 + 3: 296.6667 -42.88889 3 3026.312 + 4: 294.0000 -47.33333 4 2956.951 + 5: 291.3333 -51.77778 5 2882.163 + 6: 290.0000 -54.00000 6 2841.716 + 7: 277.7778 -51.33333 7 2898.452 + 8: 253.3333 -46.00000 8 3051.176 + 9: 228.8889 -40.66667 9 3108.243 + 10: 204.4444 -35.33333 10 3136.094 + 11: 180.0000 -30.00000 11 3144.161 + diff --git a/tests/testthat/_snaps/trajectory.md b/tests/testthat/_snaps/trajectory.md new file mode 100644 index 00000000..ccbd3621 --- /dev/null +++ b/tests/testthat/_snaps/trajectory.md @@ -0,0 +1,14 @@ +# trajectory works + + Code + Trajectory(dlon + dlat ~ lon + lat + date, x0 = 180, y0 = -60, data = na.omit( + geopotential), res = 3, cyclical = c(TRUE, FALSE)) + Output + lon lat id piece date dlon dlat + + 1: 180.00000 -60.00000 1 1 631152000 1.527505e-04 -1.373291e-05 + 2: 316.37564 -72.26074 1 1 632044800 1.258644e-04 -4.088801e-06 + 3: 71.24737 -75.91122 1 2 632937600 -1.124835e-04 1.634286e-06 + 4: 328.32208 -74.45213 1 3 633830400 9.383545e-05 -1.294094e-05 + 5: 54.59837 -86.00580 1 4 634723200 6.627506e-04 -6.734548e-06 + diff --git a/tests/testthat/_snaps/waveflux.md b/tests/testthat/_snaps/waveflux.md new file mode 100644 index 00000000..40ff2e46 --- /dev/null +++ b/tests/testthat/_snaps/waveflux.md @@ -0,0 +1,19 @@ +# waveflux returns w.x and w.y + + Code + return + Output + w.x w.y + + 1: NA NA + 2: NA NA + 3: NA NA + 4: NA NA + 5: NA NA + --- + 4028: NA NA + 4029: NA NA + 4030: NA NA + 4031: NA NA + 4032: NA NA + diff --git a/tests/testthat/eof_print b/tests/testthat/eof_print deleted file mode 100644 index d4a08f75..00000000 --- a/tests/testthat/eof_print +++ /dev/null @@ -1,38 +0,0 @@ -left: - lat lon PC gh - - 1: -22.5 0.0 PC1 0.017593184 - 2: -22.5 2.5 PC1 0.017585293 - 3: -22.5 5.0 PC1 0.017580330 - 4: -22.5 7.5 PC1 0.017581851 - 5: -22.5 10.0 PC1 0.017592958 - --- -20156: -90.0 347.5 PC5 0.004206307 -20157: -90.0 350.0 PC5 0.004206307 -20158: -90.0 352.5 PC5 0.004206307 -20159: -90.0 355.0 PC5 0.004206307 -20160: -90.0 357.5 PC5 0.004206307 - -right: - date PC gh - - 1: 1990-01-01 PC1 0.12015851 - 2: 1990-02-01 PC1 0.11921023 - 3: 1990-03-01 PC1 0.11905844 - 4: 1990-04-01 PC1 0.11914120 - 5: 1990-05-01 PC1 0.11874389 - --- -356: 1995-08-01 PC5 0.07093237 -357: 1995-09-01 PC5 -0.01593794 -358: 1995-10-01 PC5 -0.01926659 -359: 1995-11-01 PC5 0.26030288 -360: 1995-12-01 PC5 0.15063041 - -sdev: - PC sd r2 - -1: PC1 1524593.818 9.997635e-01 -2: PC2 15617.405 1.049075e-04 -3: PC3 8444.272 3.066998e-05 -4: PC4 6126.190 1.614247e-05 -5: PC5 5176.628 1.152611e-05 diff --git a/tests/testthat/eof_summary b/tests/testthat/eof_summary deleted file mode 100644 index 46e467e9..00000000 --- a/tests/testthat/eof_summary +++ /dev/null @@ -1,7 +0,0 @@ -Importance of components: -Component Explained variance Cumulative variance - 1 100% 100% - 2 0% 100% - 3 0% 100% - 4 0% 100% - 5 0% 100% diff --git a/tests/testthat/interpolate1 b/tests/testthat/interpolate1 deleted file mode 100644 index d938aec88ef9d5a4168a89662650ae3fc1d1693d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324 zcmV+{1=IQ;iwFP!000001MON}XdG1(o@`R{Q+pOK)RHa}dRH_ivhayS^W0;>?F<{kd#R>sqkw8i{+J`_$6pB?W`XE>v z%sM;YH;p+IvcC9q2X?=?=iGD7cfNCH*oWZjt{>z2aju`>`YEnEp?@F!ee^#~|9<*Y z^!L-BrvI4`=Ya>gKT}I&T(%RKV|;D|IKcP;#vej_cxjzRfLbRau zC!p2|sC5Eroq$>=gIDmoe4Kr1TmgA5G_HVrjx?@-eD7#n0oybdg{>Nk!mS#M!Ul~+ zVV%ZeP+vt~!SC|8(>zyLXuLiSUMYN+kH($epW=c2rLoQckN-9l;E6Bh1N>lHEzpGh zeWG0rd}H@WfP?3-P7qt~M!kCGU3U!oZaIQ{l^amEWH|8KSDe6Z{{lYtOc&PYPK_+X z8Tv18N8I16cf*D80L#||Xy*?H{O#Yle-8cF)0^S{p7EEm;8hO0b3b@EZF}bbt&=@V zp6Ai8J@q#7U8GKHspAgnvfDuaEfugoOkI1aUmE$GZu0Ivi+$~^zm9b-5og%{ugGiX z_n_`7>RU#=SBHADuNZZXlUD<=8u~ir%+t7?eEuXK=G)2n?&7|k;asWj!t(QE&rz2% zNpB9bw)lIq!$4=dHnWwDjC9pdYs! zajpqn+=J-f{SfECok4%@9POvkpZg+syX@C}5Io&`4D7FG-Y(3|Jr2I^1o*f=u>Q~7 zH;Z|?-$Dm>3Ocw`^j`*gYY^{kgWlc_=;1wpIk|tak7>-${hIbM=I{G^qH%Na5b5xIF4r&W@P`BZncz@vBcvqpn zcM*Dc7ufeS`t+u74!p_WJYLgDeF?pl%erUC_cYfY@~O{p9@GSN`WWY2ousbsvHxN6 z?PWi&uwR?|$Jp0fn4ju{p6UhGd!6$br7jA6sdvIWTz`dgp(Ysj8S|VX-*>6kAmg&s zEyP3Q^Csq~Cdqr2dA8WL<;|s@tu(yfyR3OQ-y$%JPSm^s?SCJ&~Wj5urQ3p zr7Xej^i9OfAXOl1weh)RIgs$<&feEy*+{nZ_j3m}DB0Ok(3=K i{fSgGn@sg&l0Clhc77K5De|plEdB#+&Zhj;CjbCjp|~Od diff --git a/tests/testthat/interpolate2 b/tests/testthat/interpolate2 deleted file mode 100644 index f7b979047cb06da41f831d1044b3c4058bd45aa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdVKiwFP!000001B>8dU|?WkU}0cpU}6R`nT0_F5c2^sNDd4fT%dFal#YYa zDNs5SO6Ni8!UhOk0_B%Az>ET$dms$LKL9oFKp>Rw2jzQ0X{fyi?4Yy>lvZIt2Vip@ zmYUxO+qZOslLDA_ecu44HM0{y^smQW8rN^-28dU|?WkU}0cpU}6R`nT3G_3lQ@GaS8(zIJiLR5GWl7 zrJ*VuGNE)HlrC(5&?QiQSpx$y7&ULyykTMyX?X-_KC zE>x!Ns7#wsnO31LO#=YVC-px-O!h_8qU}$`KaJD5yJ!F56PcI&F1_0S`dOgp%xz2T zUoSOT`cp-E|HlLW_XO^hvcLPb#?8Tay#pVgl=(81KMw4rA2&z-I#Y@tWSt)}8LaDzGx6#6{cw zPa)eKrs<;lKdIOWEO5?-QMjWv#H*CM#*~z zZm;S6Dql4nRG*!YmRvE{LH^KRp+!Fe9h5hp-K(|8-a+Pi(V9sn#`fP%eAxDjXDi%1 zBcF4Q?bFyD3^&ebQWq(9FlJ-8|Ks602Lpy_S7jDD z(`Rj58RwuEnzC=thP@7Y<^JK*`&r@U8GDJYJ^e1wK|58-cQ3o0gErSE&G`$CI_S)o zbZ_eY=Aam^{P@(9BMur7*K6)hNp?`I$%{De$LXN*^jFNMz!nFcg2Gkr1)AXIv3Li& ziI*<{T z(=6=2&elC4|9!E8bma!A&xY#MPA5Z!hUJq6Xr_VDgaEpF7!6O?qKgXLUa)T8|L9Nf zh3@4}4x9;F!`~g9<-qyo-}btX zH3yeDFdv+m#JZVr|JU%XSLClPw!fgRE|t^Cv;XVD1C?z*Chb4H{(>M?#3SbPtDiu+B_s2Sl6ejE_=EWX5Ri664G6hzTV#dZ$t2j zlEX6`SS0KAz4kNS|693oa;o;S{V(sWkZ|MqWB=aB_h5Wb^!`guwoDdnbq*Y>e4bul zd2W9NT+UoYgx>_M57RjI+TS?m@MKZ*E&Bst|M4B*n-qFGwELO;%T>RPf+t|Zp$+YzF$)qzcElXkIq=>dVtlP1!h_Xj$?4qQHAVFEH3fjt#YAkCVWn44M* zWC$>TIxi4G=A8UII5V*X%495sG0M;k;mj{B(Mv2TDFPbA1nLC=C7F03Gy@j|gETPy zhg!r0v%NwOs1?Sk1alY|{vk{OtLB1P16FOTpkRO|V1h1SfhJ&Rgf3u)CSYWME`V;R z5xSwq=!O~t4MlS?*h{v$mIi177U%-z=mKWw0;cE!Cg=jj=mJLQ0)}V;pr9l%X0WPe zPRY!LGC6=uSep8Wp4gIe5{rw`^m3&nmL%$xBqrsgqKKpw0ZluiwFP!000001B>8dU|?WkU}0cpU}6R`nT3G_3lQ@GF}Fj}0|pRqDB2nd z0uDu8tAJp&Ls0@$+!QLV0O1$L6dso;JnoPWQnqT1L(Uu!|Aa$kpT*-oizg0g4Gd5K zHvfPlgmb_dB>lMWfGb$L%mH_>{#6G&!NQgYyrJqmq2lgfF5>|gu=QaF9Kph?57@zs zXW#{y4^jj6AJAh^f3X5F8xXStF$WNH0x=gubab)2|)|MPGVsKyN3mACu?3}ZfY@*Apmw5M36ZrKM&4KEP*oF^zw^R zQj4HGrt}Onqd1H5%k^N!f&9$`3g!R*|9?fdGdU-*7-lCERFEqru_RHiBrz!`6-6Yi v2xuaj0fKs&c_pbud5JlC#i==IMX6~(K`|))2gPK0h~XaqoE8ZxiUI%t*Ey-2 diff --git a/tests/testthat/readnetcdf_unnamed_subset b/tests/testthat/readnetcdf_unnamed_subset deleted file mode 100644 index 6a4bb55b2e2b9e3f3dc206cf4d028b355a87b443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16518 zcmeHt_ghm-7w)l~!?A&i2+|?~BBI2G5D1Bgh>C)UiqfJYBBEdjEs&z3(g{sbN+KX) zg8+(vkVK@TBoyf-k_18tgoHqPa{11=-~H|W0k^!*e)jBV?OAKDS$p=(UNbKs@$WzW z!J4_eb=7*8o^f#x_W$0dzsG8)Yk-48(xZeD#-(F%uTK2+r^7id=Sz7*79&P~uRpq~ z$gXMk`Y*pDH6#{a-Uc+8Bs5%dEw@WPZfOPk(-U=D#}k(5;%WT`qYRUBn8@)osSi4= zf{$*4UaE|(TrO+&4oev=@1MQbGhAAAFF5C(r6OWD&r*S)B}YQzX8xk&k*i*I1l3U4% zD}1gW&A4N(yxTJ|ldP0BG*g7LOW`oI_(U)bT%PDbb{t^>zIR@YyEB zr0&1>eZbNGOL(~Wze3a{+J9?4`;_tzJb{1rN8@^x(9sii&&Hw(N{`v|R{`j|vstnA(_4FET|8<}?R!2EP>>ox??-Q3% znQ4h8YyC~u;5;BZB140Z-@kQe;l;ak^)+qZG)rD?yz7ar(NDS`eyHr8d?M<=_m^$o z`j+~SkB{8EHZ1wE^!vbJn+!YOP?EY=kbANp)p?ImO`p!xM^Z&p4 z|6!rq{&(@$l%I|f@b|-Us2TI+ugO!h)Lr3j5pa0b7HGkzfiDWUy!YN+Z{=Onm7Diw z0sXMi<}XXQSz-$FVpVyV{8Q1u?9neJSTAgt&Tt>JlwzIYHrm{`M0zQN$Fm>mnLrBi9hS5#xmT6nlQShBm{$M)0r&3y??d$INi~lqk0Om`&D^+Sb6<1e z`fvPi-*4z|Cf#EgFX)rmVz@lCRPA@vo%i+r2qoy#CjG|67^K1r5BQGQlN+T^Q)7z9 z!C1TCDcs^X$_hY@{lB6(colWFgcUV$Z&Rtq+Icl|722BqhnAMr+2NPDf10mxS>yjL zuzu4fe1*>6=;GJEJr?%fFRgbEQZrwL3zOtwis{o4|7RE6)$;!i@E4cj{7c15`3&$I z`=R6L=SX$^=;@K&C?utZz_F@a=Q3+SQ)WxKl$*EIG3EHt$8?6o@v|@wof8H7gN{V^ z1UW-p^7EoC=CZ1eOtcdbB=R&-rrACUuvT5A_IkANTb5nRIss*MRAa1YD}h!ltN-1z zhoXrZBffK2(B6>vZkyy2H8$q-$G?CPK|^Mf*~^J8N9ML=9Szms1`U})Mt+$oUWRj> zWkbPI$X!4{cSZ644GUAkZxZ+p2nKRXWy*fjP?wxDe%yb^>*&9E@EpxI5el zcng5EFL~xDz6a(+jRSS8zw7J~Mx2x1H)MW~)cEOs&i#HZR)0^6ZcDIXH&9si)W>IHYXq z&zJgkiuFr(;26Evs8*Cm?2lE9^P+8ZmjYSg6x;4&&Ro6}dzkt&_!{&H@jIQ3#Apbx zj|2OzBCqrWgPJ4-ln|H6K+W^0v3hVkom)YkqD?LWUM-S#GJSH-+4cpO=khrjtC4Qt zY@bN7(_RJuat_U13H7u*yhQND{8Z zvDrlS*VmvJYEC`zn6me$8WS*}9KW|vt0UlSBnk5Y$ylI=kWxUNR9;@L7v?+4u`zsQ zs|;ojn!|m#;xg1HOf%!yItgg<>FS4r9NU~J@L z=}8F_HMMDHxMO{tM(g;as6QnmtnVot*c`U)rOp)l&eU=06N{a*2VS{B(>PK9fTVpwCH&qs**O;{vOnAb@8*77o3@I6|~przI#>{Lv#-q$NiJ0^fO}D#N`uavLh;_n*UIXT` zsq!)U>J9&FOg-JKAF-d39OgFnV5|XO67Hxph%n=jwj$jyf8WHMVO@y_oWCa2{0MCT zsLtl6%P&CmNKeO1H4y+%U^sBuKi+HapxQ*kE0wP$vZEZR*s`^2HFkitYN;bgsyl1) zrRru?gX5~aCa1xyq5gDW1)&_UUXVWB({j+fwFQZNgt-a(f&Hp`qV!2oXA5`&dara5 zcw}w@i}MjPN1=>~S9oQ*#A(1WT@$SKk?=qs)M}OORbQ&s>X(thKEYp0vE@93NHs#s zf)K1oXOwY^qMd*~jZn6Mv3rGtM8y?naX>J$n?rAynpM1PI1)LS-gqSi}+iY+-~W zf4!|Xz9|yC7Tuxv$@_$8Ho>->+mzQzl3f&iqqW)FV|`#>*7*sy4XEr^0@|Z)kcKPU z%N2>yZg})&tzf3xY=S6O3{B8HHO5fpkRIu68)yM7yQIi74r9b&0z>8G1`pVlJ9%x& zdVN(uF-+F~fPP!zILqk(n^4uMub^E((&iQo)i_R*qZ-Xu6x?Z`^r3aN-0J^Z(@nKz zvyuCYs)e0%?(O5mzgQl}h$@Uj55*f=**j~>^ke}(X*5u{hXU~P2X_EgVdhtyKu#%~ z)|>qBfWF$M@*CZJAhszY5@Qn;1K;=3vd4ZPaKfo8BVqP>|2q^fm{aA_L)Qs_VUjp^ z7?t6KC6C`GFVLmci5v(o3@dmdv*g_F(QJ(E2*NG3?`l5BS2%qHGR$|kumAyid&&8c z34IifS<|zd{egshna9f(tRuT zklaakh_go4kJ1xR9}IB2-9YfH+@%adOBKpvicY?8?-V5|kgB|?1 zK%umQuxw~aj&@Y*;R)gZyc)_l&KCahohH&7hkD!;b}D$l@Ssx9gsVwBbw$YJ0_|Y)P9b+jZEK5BkZG` z2nWwL3El`^GopbkGJj*c$~b+y=-?Cn>I7&xrGxm4e1e*-JcU1SjUCIZZiao9Z4ZCc zM0@Qr!S&XfSd;1g9q$URh} zoU&7B$=6K5G$xF%R^4hbgFLbIlbPb4VgoT7!%Lb>l$$5eto}Bdo7Y*M)5O&=0I%3e zgBOqpE%GYFF(YBe$baz*Z*hIA*vbt^ljxHYc0;R+;JUM}IrPHvIie889&EN38;Xnh ziG6o4zg?E|7=JbbZem|j&eY!WC#i!FQLj~s9K%oIgKkgh9DuEneXd8g`VX4M9_=4D z5n$C@Ar)31WOv2+to()$Q5R&;vO?ub6-dn1l@4)UIPoa-zwhK0QEvB(hSe40hg(#i z<3EF~cpEc5wW|khK=W(2(OmJzkUct;^xyV8%?Y)*m{_$#&IyibniVJl2iXBt#I*tD zJe$1hSJw=NZJhdW|FTiAF>aempQ1PFg0A>k1M>#_Zd2tpVY<%+{IxX`EGz>TsMx^Q z4u>2=-e@YcirreareV-k<`8l*)J#8y9ftxmvm+<7pJ?-o@6=tz{EZhNP0h~6cC2++73vS0iLU5gi|-_N2&jtWV!``K zab=o*2HL204Yq?{ln|SSThA)|iEDALh#c%Or9dZ&gjTrgyqnWI_;-EbggvUUglpmk ze*_?U_t`E8Puq+r5ou0Z?hUF3r5&qlWQ4(Uoq5pd;KboB%6Z`>AGoUEq4-0E%87n* z7dTK^z+Hp<{tdJ`N0Tu+{%sGnfOp`RmBU+jCaEC&SE=AV=K|x}!$plR7$5zT=s_1{ zo;26@A9Ne(qEXocc}Di^;-l&P!*fubF-2vV5cEU<;X= z<_2P4;5U@}t2W{dFxgPsub0Vwrf)?loY%Sh;&B2&XOPGp&tAF){~SiT{tG=(H0FeD z&&d5dz4%9(o7nD`o0q|)J>0ghhF6}1u>#~0e?t^LO(1-C6EZb+@s#c0;9iQ*H+$Bko6JY6oM4(Lry^&}^eYp>HLwn9 z9~Z>bbyfB_M`N5U*iMW*7U{u^9cNisHe`1U`oDAIq1`# zn9lx;ezlY@8rs@!`*hiYJY}0$Wt%Bgs|nBwgE4o01!!~-8S~6Z{~e*aPBjy+Sm}M& zw>L2_Ixp@O7oktchFR&&PP{M%D||mVJFG}@$7L>%@-c3z9$P7QL+nQyfZi?{i#M}X zjG*SP_2v#w9FB`%2L=S+3)Xs8yt$cHqW^aJ@eEC(;-Ja1PIL^_Rr&d0;@ki%=H0Ej zzoZBP+Ugo*;}vd<%0mu&6|eFk|19ZEUQ%_>E5~RS;IGyvtEAWmD4lCSwE@bSKHeX- zcOK~K+}FQWra4yuP1a{HXDk~iKQX z=)G$gEip|3oOd8I9#g?P8GJM1D9VrWM;q{_sAmUnB1r@bHx4~S7*zQ^EC1Xg-d?Lz z8!@4$cXTVlz-*E}69DxJ-8A12nGstS_9~3GcIq3qqt!%vw9Y^Ey6`3|;Lvj5NtuPs z2J7;}hsLn2o$fo9FE01H+OV*P7&n{gQ41senR3)LQA=M z*QcXc4lPMkHmAb(XeRbi`V82^hp31B5uLok+sYB==ti3g`XO?=+iB-Lkam#Xu+r%j zKpFnP)*|xeXJTj18UgPQXb)@Ma(s#Vc&VT;u^hA5)FHby8wqKsWOeWOWn!MSh0yM^)gb)R$+~@pn5?}0NIR@($8G?`5P3qG{y}tg zNBE^L+rPG2zCbmZ>*T9Rfrfyz>rnrJRXg~Q20&{W;V@@;Bh*{p)b>(wJT@{ORhx$RxCGUu)=Q@(`*?e%Pa?9%ge+L^9?Q|_}jxzJNr ziKY^p(PL<8tzT=}MzR0mZpfQg+yl+etR8d}PHNU<8{mGClMR<$qc((A5R#ws)DP_03%S_EgWKw1May;WwVXxUqXVUsVg;&xSZ0=$29F( zPFdJ@5yQI>eZ;A6#4lk5=riEm_Sj(&U}zyNom+|CVHn=Fr-FK;aZD?bN5-Ws9(tN% z1~h^Why9ET_G7K2#^o!Hge})KB&U!2`!$YpYNiGahx!LxPi9G;firXsgYg9sZi4&m;>J)t*=EW)9_51U z@iwK=L>){55tL26a7(f zgyKfCmAND|5M$+@Llr!2@fKhcBn4R8i4&B*4i`Ibrn@#JeS?T#3jfQKHt^C^9G8iD z%zGDhTz~Yuu-xgM9?47_$iH9;Ps#*eYzNh53LQ8Qc*>TqterZZQd?5H^z!$fIZ`@DQ{$(jiq;=&Po1GQ}(DEhn{KWx>p`g zdU*p@%yQ~B#rtC4Ofk1%tsTsZ2V6|U&nKV>jFvZ3;%y|tR+m%dDi=60+iVO+eGheV zOs6*tf}FD97STT8c+T}6z)DW~Vpz*$TCHtUTRjj#KrHRHd;+^RV$6@s)C`8GX7 zwWs;C8-&tS$~iW-N{rmQojU-XgP z0hjsT%iBsk9dG}dMZ7S^JRsixHGcTDsO^h+t7WmsrjNh^D$?6LS;=jeSWXFfcS0`r zN2SoS(_5H8jaifkK>TeUHM&qpv**f0*uKQ9#KG# zL>W&-``i8+>I!Q)*rav@v^Nu#E`N=7_JTJ$v+Ewt88Qyt(ri=RMf4B38sa9bR2r%H z#kS37)v>@a)9?It!a*6n>48JgbnK8xx}nn^6RD##t@=!YUTV6@sWzwAjWNxP8$-s# z>(X=5h0|%IH|V#D&w#e*H;wNu@Q;0=v;uDfj2j*9L2r`+ZG&%5oxwDd>oKQWZH!rV z>WrlD{f(uk7IM^O(8@sRW$8;R!W?YQbFSwFgz>nKENLQ~jwG7ab5EC5ZRNaqEOgl_ zn_FAEw;tzI*0M1SAZ?h5$MSuetC~;uN0stfKazYH`RkUw9zma{2A?YXv2_ekrf^VG zcs$B`u`m|-C@=GxqxK9rwL0Wc-m~8-yJw>t$ruwazRl5fW zPY0TwGDY9@&o0EMGd8sCLus94z6!Sp;#FQhLOwWl$@&T5NpP2GBh8|&qK%uf6H{iu zGieZsC);uM)D3sP*c$MP9}B&{rrhd3MNV%y&67@+TY9BbGvd4(#oIn58WlftF(BGt zlTok}(mO(fG)O9Xk1|j8iSzBTX!!5!k?Y=k$nE1OIEG+3*YU$;ImTe_?@I0^pAg2= zQxGSg46Fs{bnf19uj9vM`&SaF`(wKdf--*|1Mpry7F~Fxm--vFyK$8|!)_h#oP9K= z=e})a3^qWX8hma6mu%h@PsrL#t5|v>Phao}x!|TM-CYkk6Q^lBV7E@3zgBr@9PD#k z(O1fp9;eps79Cu-eEAXS*)`l%Nlm za8oaF1C6LG@a`$!(rda2ODu`7lyZTD%Mg=uTzXy zjPWYgMjxyvoEadj3&$IT-#k9H-+*vk$egXN8!~_f%A4ftFPXpj&j-TkK;8s{0Df_! zIs4`}8HSe`EYEnK42(bwNTG&`nJbO@E~&+aZ`lV^%%JZ?w6r|y7EwFiSQW(3eBu2Q zb-Hvz2j!1TK1;o&l{mR!t;f=9lU5azgy?qqPQvreup>3LJ&C129rE*B&2*^tJD?bt z>5~rG2?>aLhb8)fBtsPgKoA~GZcWVZ~=H7a@`L_ic zAaOU>F?WK1H59-sPV`_}h4W=??f!A_{qIP^%>lXV!`gm$*rZpc)=&Z0rrut{M2>q zE$JT&rG&az@eaOYtC=xt`YiV}JxzJoOEvGSepjK?Ssri`b;EYA+>~-op#i_&lbEeZ zZ8B+8|LNRBvy|VG?CbXJhLvNt!hqBAfQ#}K2j@~XEh&E=5d&@Qe2Q?keeS3#$Jzv^ zLhRY#Gq^LvttJPJFgIF3U0aMWhaTO*Zd{IsEyrU8@rJ^9+Ok;nI6-a&R7=zBR_WI4 zKHTlt?O(318$kl0O_P@N#gmZbn*?wu!O9y@TS2QSfh_w0#C;~_gC;?PCgefNoAMY* zBSG32EN!*7XUw7*Z7nT#HtvCp~NYZ%y zKgYoE)0J7%%Mr^H8N_b1z&F}S8(r?9KrYwi;kx_D#nlwX6MBl^x!@(=B7td2G?f1e zY|p_bF!Aky27r~{jR{8NUVbD0nrrPOr48zqn}YV0;KheYL@NqkGa;s#$t&3dG`3Bt zJ78nSEMjjb6ycjM?SXo=)?`0MSgb>y?_qX->i)sVk^4qn#=I4=(dvn_X21t^2e6ro zkDm9xC_;O;yk)mXza`7AG?{8-87Tu5MY1#0@vGoxh^Te!TU)6JqdFSl{+QvoEOyYA zRj$q-T8Es!xqt4y>fv$J`$1qX@QBm_?k_I?ZUwQL_o#l1@l|FZbS5MA2EB_cX1vK& zIc*ht1Ae8+A4E*ob%@UOjh{2@p)2*pvE_u@3dT9C_LA4!{rLi{N=Oh~I&^dJn+5Jf|Z11n>uT>==mZ zC!i#bIhboD;I$lJXN&JQ5{8qYd$E_bq!b2lxzHDD^Ci$aAsp|;eiq+9C=So#deMIt z=2hX>gsEmAtAv*ZOu{i4h_lQ3Cy4KYxu?rr4l!(AjxF}0+dXZfxX0PY!&IHwQK70Z z_Q5c+2iq=8-;;eJOo4hH9_E}OtIqT76?cm~*wnBR1P7MT?8=@CD`CGcM!XaSnnpEJ z)y9JdrE7}q>DoiRpxt>b{o>tu?izP;$4;U1sgBcizdVK}YSqK>Fs|X0S5%TUtavfp z8g>HGN;R1FN~Z?SdJ(AN=@Emddg{8Fkqqk9ncNyGYzACN_2ZA~+Hl`479STpHJ~?q zu0D~g7RNN;Ar11N>7=*SWX{PvweF~SyDX~4w5`+N!-@@>uFm0w{KfVUvtZxQ(k=$r zx_B$WbIS}kg-T4SO&Q)1K|S?$5!znd!Vb+WX3LH2^RQd@1{EwGIzCv{ez=vIF=}!V zay-18V?S;^!-OWk;=8L?25^$ZcExdx zTo9OW$>u3GDP}qbiP5t~H)mJ#k?Q^fLT%C(Z1(GI9vHZV9%Lu1zZpU_bfgc~Wfn7Kh4K99Zf*SbA_q ztP&6#*?xq7TXF$U(UAb(jCtNxqC{3IU#YJllusa%_Sd~b20)v<`{=E6dB>uOaZ@$v zY(ha^;J4X)Zq6?z_?w^uOoB~kcp>{*)*=YtFThu zMAbc99y^InW}6@tmxh%3s4?dnn44=B{*P+Qd*EPt9+1RV=B~{lCG=9V~!BD35Q?V&)UsO zY8LX*@8nT?CQ@Ew`MY{RbENc;z&#NLLgFg|(4Hh*QpGpTJda4d#20%T4RrK`) z;%b*ydR>S;a^2&#u?3#E*m&%3pZK;4A=;C@pvx8I_HiDZ|wZ(3FD=C06cacK3R_BHQ{ZWrA z4hu&5*3IeC(9^g_7ziP2L(n|AQ0_#WqXA`NLN3~rVq-PqK6_4qU(Q&jaQZdnW$%FKk8)wfsg!-i-qZHe0rryq#fi>fjFz1A7@j@? zvaZniOq|Gqs7Y?rHgdKMA@i3n-NgNX9feAkuPZu~h1kksxTp3YO@;3z^$gEqtaW)f zX7bSGwO$Fq#F6*d|4~H?L8pV*VL8Df0Ddm|2kITiF?40-je@Zew*0}gZN6~)bJYuJ z^nsvS1WdGZs2@?;0Lq{Czk^1UAiJuEB85-c=cMB=)6i0_Qh+msC4K{FjhsIY8ecO- zKwP?v7pf;I91oZ~4G=3bD#zl2bLd93&QS{|rY3|t@7mr`003R24=i;iu%>cPfzmEp zrQLSDweTqw{W<8h`&$!GKH99-u+TP9?Sz#3=jUQLJx5yWvDw@^i_iZJ-rv){aG?#u<&cx<4S3-z8aFV4=6WB$93yAYsvU;9)Z?du(T2cd3;IFeqonSm9X)jR%dx+s1S%@>TMHl5^?br0l4-+OurlVT~l z43r;iPosQ76}SL3Wpijpd|szudyN`^!@fpO>2 z#&d*k?{KQ3fX%C-KVbGPQll?ggxkp@hw91ic(F4k2b`U52d|rWGC){7CD$rXoHel{ zoL^c9ydzU+Q(iTzy)8GH_3M0ybz{Q%2b31@N0O#a?7q+&(B6SC3!YpX>Zh>&&V1#x zl;TJF-G2qzc2GGjqmQrtP36IwnE>rz|R+EiC}trfReb{KG8D^ zq-~C)jFfE^infZ=yE~T#{fvq8@3o-C+w?W=xR)CT?H8#mg_QEL?xC+LlPodL$yj%0 z#4i>$kWX8}3|S8Ok3hFuSB~BFe&j*%h!9ntRDs86Q!4O}g801_innvj7FR{rZ+s?p z?UH8C{Ec?5U5(a~my8MM6LncAJ|u78WoT0dR{GXX&=aKx6W1q-UMkIu{$p2l)z9%*2|F|(djXMG}A)yY{^#;vi~dKSnWx` zoVNF`=siNfdhAym<%7hSI~S^9HkSBaWZRZN7ngRrX;6x z8Y_qKq%;kRTc8}BDU}8JHPs{~Aa1O5_8;8)mj`k*xW<=ek(f1eBR?%LPEBHN0%H6r z%Ccn!4k3QWzOxegqY{H;s|#^-_D4}3EkU?(FQ#f}GJ~6ax!4WAh&)Qw?hmY<%)S03 z55}t{8w##L-3Mq#Au`P8E<4D3Ml`n9w99%D-I9R1*Tk*9EHg(nalc$fDVzE}^kqrv z6-Qapf?njWeyh~tl1SidhS1%NT6|gN6WE08PoT$?SOEg1xsgR}@hx2`tOV9Z3eM9& zX*Q-=5=sBWhk=?%zw=iRylFLrK4ex^r(R+6F1ryA;;oJOe11c zS*O~#53*X_YbR~X(&?4vZPI6~JSWZz{=3c?+lvg?uvHw84D=J|jDBw5qIB}IElbw0 z?Bh{;2u%oqU3{)-T90w~g?PE2Aik8er-l0>ixqZKg6ogzd$_U>kmh9o^p?Fbb(gJ{ ztrL-MqwhdcJ&h@`KD%)DNTZ38h({48q)?~XXei`JRj5^G)-yPi|DTKeXjxmnqo4H%cY-x19lIHivk z1%I-qHeggpJIy^etL+;*NvZ@pay0{wac*Sbjwc&(yELloiksDJN~)hr2i`SlbjFUZ z&;)D-08M{(Hb^Udw?x-|D>W_aPjq_+>jA=JSBrZuZDc`L&mNJz8t+L(ZzVTyfA~7; zRN%jN{IX<4aDof+;HMzIEbQwq**A#2G5lshLoys+@v@$ zfDq~b4Zl&e>ZA$0;Q{*YT%5k((u)Fc2y`JY?SaqwDf)vk)hUzOJ_IM~18x-1X|{@_ z-dXris5>e41DD6HfrFXuvfu0hs}Ht+xo{Y@Qe?Al24@wQT-@xwhkSzAe04E$b7&*;1MfSqV(I?2&~?5N9{2cq zZ(w3yZ8JdG-t5Lq(o-+{!6A!WktI4M_B;o0%VwM1*I-wbLr_NtsX;zial=agmzC~! zL?scfnKzKUs@Cjx?4KOs1ErS!ams-4DjVZ#gtZvh!E63Qk=N9QB;A38VGQGsT{V5y@cHa z6BA8wq`*)fDJ56rN=44+qSF_pV2~8*SUSN$ti*YY*p{XO;yz@fh=d4jn{-%g2Crot0C9h?Tcx?&1eT}-M4#y3)gok8 zOm%VEA|@&&x1FF>RapMg13>zscd;(Tz(n1pCu{%YyQI~ z>BL;bHX;yY%V&$E_qyWDMf6@KfO1xP@Hg!*#`-r|SD?Fb3)t1Xh5H+X+;3_(NZUjm z-*c;7QwX`SM;KIHteF4HtRf3*c!RJ96pX~Fj0qv~T1 z$IO3Ij#0LMB$nRjj5LUdne<*XQ6}*$C{7BT%(&0r|Wmm_upwxklm_uHN!HwcPlJEuX@c6_x8=xXF2_H(rzyFxP@4<`*9QjUg{C?-_Y z>FeqUo8uNwQMJ!N)g#v1IE26Cl#zBxv#Vy?1Kx1uYA4kaU4X#QLZZ4Jq#472ttrN!}M_$o?&ex>E zqgD86+z&4xY@3`nN}m79iXz~hE?wmZPm16_1@XkWT=`?^fuP2)d$KP3lf_dRb&lAz z{Om7;&s-y+U&K4upia85d$v0Vg=^q!VVHsVLxKcZta~S+4+t+kpwo1<5g1jyGuW-H zbVJ`gJAKns)-HjYtM#TqB`%!GZ^$PP^nx&NSgY6?t9g-&Hh!^NplVz;h!>S%c3fPHqTFJ6 zyya)v$I3kCuvE{a-|Sr=gW9E@irQBhRuVAwXN&brJa7qUy)rK#9~{&FmdZUdTqz4~ z`?IZt>$teL_SEv%J`K9gMpSTTA3>%nc4R^C%J<+)B0q5q2W`{2+G?x_Q8i;@X211$ zP!pvRGpMrLzs>jR$RjIHyWEmvnC-c+y>ZxVlpQ^LB+a`79xu-D)*6mM(HlfrdZv)_ z#SXayBHFjA^uUmqiAOdYO0$=%KZZCK&%(P_KB-as1K`0$+-nseI*a8Eer21^nwy|qiA z9f|zI>4XAD>G4?wJFU);ep`B0a#p-;&Zfk$EwF>KGGqtX-qwx(6uv#aa69W|GLZkh z87O8WZ^G0awd`c82d{djbb&^Mlzb71jq@-f^q0MYA z@HS1WO>0bh8n9Q*4GA_a6;<_;B^mk|SRlE{<)ey`%1`PR^yd#&n(TvX=xTXY{?&kC z<0y>7MVKrO(^bM#&wE3NG_TQ|jTvrE1`7QMZJ0EYkxkO##@)e1&=bno0`cZiSV~`_ zAc=9L0%lz7rxJ+edtYf7P;`Gyl`rMTnI~6GW$C@)W$8)EZ|B|4UFqpu%+@(7<`m-y%RIer9KCU%= z0DWWDM@yhMsipMleAb**6F-5E98=T?GMnC6sslIMcH4iqa#WwSKc!G)L89ruYo;$l$X33+GVQS;+T{ZXfoL{m2#ea zdmDwVTau@FLGc*zctvAejpSB{PPJJW)SmV=%yZD%&$_3D}^~}s$cwqI$Fq6 z*Gs51!!|@$Z0|oWvlDCO#U?W6?l|(W%njDf9f_jNGnlhg&2Dhr!TN-rJubU#&hgT$ zFvd1+;!Z0c6HG*$s5deIufKhw>G4-$NH%)_!d~0hVXqcVw4pYX17Pwk|90n#sK?cgaBX>n22zRHH)Cr{^&j

4W(I391O!r6aDUjrT+7}7@K`r9xd(_uN)=t*lsgDl0j1&Gfhsqh! zz^;VpeQ_8SS)aC47*;6WrmO>Ay+8l?H~RA@)fOj$s^lpl^+;XPTiF;^Ok&kNNq*-F^C<(0*Y*2m|wh=Ehn`zolL zt~wgFf^xRp%u9A)g|tD2_U+mU1s4O(VLBCB$dMX~XvSReP=tLd&N!;*1a~kpF^EdbLYY(=xxmt^fJhpdMS8du9e}#+osUfp zVqx2)?ZzR!%{tKU#|eM2C?_XKC7O9a^cT&f%`%3=R*{)Sm?6!#YZcYEu6L{ zH6UxstWdKC#>Yp;k5qCqrfhaeFmdD${LHubNjv5fk}F>k&?Y@{63BIYhVp;qrCt&} zM)(4sv^`U(Dfg$p9JdXUI&Z+#pp~rpuCEMmab-WQ`P{4rbMG%ns_ujrxnx5LjI&OM zAgZ-wk|TPO0*O_lM|G4nj={BKsyaOUL;{0#Nk{o<3a2?T5)^hh_v7kumOEazdf@2C zEBBNoXXFtMUk=>~kA2qrPWpCQ8YHXj07%J;Q~ zHT2K}1PBB|I(a?*zxaegY{g4aWK0kp0TU)&KO9+HE$rs1H{o?j(n0usyoM@ce<-NZ%c0QQ^y4pJMOa zy0j%wBJR5}vWTbU*7~cqV#!Vw*imdkr+GwCQA=sXCzGL-I3Jw+2~qlXmO z8UfIY4T=A6KqZQ9iJ&+AK7)3OCeudo6c~m8Kw?AwUj%YdbTtG$5K2G#t%^h&J)*$S z1i&aZEW#{LUXgSsNwELP3`XmHkvy-_V($^LKmjc$K{pg#cS58x&({-+n~f032& z+CSZJYX3gxy4(H#gnIrLNcKM=MTf`#a!CG5F23Mn@`t43U%egfBhi1P{%*QVh!tjk zm@ofZ-X+DX>wh#!|K_joIQmbh;q!k&gZ~SZ`JWKxe}OXo6Ph0SW7zEfF#bZeJWeXqry&gmrEIq4+pEk%W(Mqg(l zk7XFRu(H56)c1!s*Dm)Q#m-X+hO$7%g}&vs{_C-UvHWt-9;H~BtV6AyN~U(9+1%=j zwsJk>*f?IKy~~f!8`!q@o@bCp*Xi+wTn)0h8~&E=PR2c4vAw$*$sw|Qc9t0UeB4;~ z=bk?4xy%#Po&142MB<0TGi&TUlvtEvmX?%aR-I13tW#`T*6=`DEL^ToK5N693uW&k zz3;4`J1?Kr2G+)^$C6?}(kE|rM~EzIcYDNQL*zE4fp6~F3@x|OSLIk33^)1Gs+(ZA zoZH*2l21i=hY|jcL(6luv8)h2V3HE#l;4I)28sdD$3h%{$z>2p=uf3^&%{CNlXN>l zWtVl?E0rCuW2yyh)#<9pl!Xx@``Vcv&O@F$}Cc0xKV=r?V9-dx9;@Nv3 zmN>`fo7_*69e^(*n)bJwIh6rRK70%Aglx4RF0a zzk%}0aOot9*czqx-;9N;=qMZzct?~_Xdo;&57X1mbS$Dgy#ZP^4}?UI>d~eUrpOwR z{CRr;=)L~eY47!)h)8!eP2B+5-W&bAFMC(!6k|!clKUf{;mC9iRR@=*BL!HYm3E1Y zHKi^cjqhQwwTdhi&ixHX4S2%{vCAH>yru$mI33gtO?Z#^n-qVwMsj1%+-N2;KIcVV zMN&j#$VDykWM{x=lV^kXN^aNg5Bpf>8)zBmh*FGaHvRMhx~Gu|y4>7sZ{z0#ej;Ka z{VViM(d`&tOYM0Qr9JiY;siB!SV>xDBxeJ9wMi0LD zsdxwfm7jj7;LRfS?BL7&i-AM-KN40iti9{8rv@|YiL{C@bQ265vIh$~3H`D6y>n~~ zjGFgDM1P9hroU0k{Y-CEl%ad1daoiiMyxIO0fYPe{YpwQ7Q$vOn4|iCPm= zu-*{NSH_`HZQVkn!!3_~7ABuX8w%k+TAbk{-Rob-KdS5Gs^ud7a~emaotK0olg?wM zu>B9>3t(~tNNfUEnRI*&e9MaMQO`$$mFWQ+@78`7Zz3a9z3z;b0u2#0>oV&xdzY$P z^|*%3QP$vDEN5oEEe)02ujFX(Bvv$2byno?jV&x+!jf-ImXtPV=S|N6wuIQINX_nV z92Je4&BHBDw;s@2uggb7%_>2#gsVro+$1o3pAMYsbvmWE6CJ62D53d}hRl{7eDb|K zW3)~5NV*}H89&wSSYW-gl~pZLuil!PmW~+w+&7b6EsOhy)7}M0Vp{jQAY1&NShZw2 zMCYXUeHHHdNw^i890ujvv8^7`stBRzvTm7_D@XpZpAv*;#vG zC=?(Q-1H%2{~nz(4c&`qS=jJ4@e0J$%@f%)qXCj)fn&%vTUo zeqr1V(#yKOT~;qPB)8h8U6Ic?K>B3X(133=VRSc&{U~eo zzF8S{3@#ENank;WKlBV)$ zr#)-A`7~^189y1zsz3Bw3GP?+6F|d}a^il)u6KJSih{H<7*EQGB9SXBmvC4B0Xv@E z2kRddV*yLcNMg{zkanp9<@8gYWn>Y>$mOe&491(Pk6`H!k%M`+>8K?e4A&9mW|%kL zJ*b+9R*lNbRJQw|kLl!K7AktN8F+zjGCoWc@W25553%sBjJKKREF(w4by%vq4#P}n z{}BD$>f(KJ&NywUt8skeOMsCE{t>cvf(o>&g>EDG3A_;$bqp3Q9Ao>^imoY{!cR_A zvkP6f=y6SRY4!3sX7w>ZO|)&4cGhr z`tl`D(Mu0w>g5DZgYgR{#;)AFe1*MG;Hibe`}*)O32GLZmQ^&ddmAs zFHfyz8Cf3O+=aDL5gtjR7e$_ViK_#<@4Ot%G0r09hMe5wW4sfer8D<{BX zZMmFfi56@K;6mn1^g_*nkw#2#re5o0ct~bgMeaYl^S>ycz&(4X>f>dwrral3&f94T zgA5C+h?a3saM5VWrhfIbQp6@nJHOOzj=+U(G%+fu$eL^)sKk_iJ0eIF+(Wt4MKA zr9aoZpW7MNYqF;N6`Ga{ov{BJ;9?5X8qT3+;9!jGYdtMMeoaIwqOg6FOlIlxFKFLK zq*#3#c}BSI-^UP%4ynfI_bZAOzH%wK`5FQ7OH8m!JRuZw`~!YD(>PfKEHWG0IQayc zcNJ;*v?{lKUzxIO)wgzk{Xy;+1+so{D>Q^N>gT2P-Sal9RD>R5cT_)e4SBd?B&n^@ z#l_|FJV?Ga{ry^vAytAXF}ulVX-f^J2x77g24rUh-Zl&|{+KHs_JR$HZ^~1UVLVz0UDtSUet07|W{?Ax95mq)Tx`3r=e4f#GNREXQRmX)v$lON z5yp47QnX=6z1#;Z1lgB;XPT}h8lG~6I|=TckS0Fm=j%*F1Q{6kY2ZH>!7;V;8XZzk$ z+dNdg1d2wFGF!pS*-utlM6UH;Z0hMxS&niMQc&xBf^umVJk{kWb&q(BbxrTZNM_|q z9j;5JkEO4DKO|3k_OE899fPW?sLS#3H7z(2;24|An@%$Ue|hbG23hrKG%$VkoTspG z+uWq<#Acdlft`h)G)tJ$6O=NLv!aQ4+?PGLVA_XE(pK5?QgBA|9H~Bqg6%&gQ6+{Q z?fO>a*2B1FyH$rdiwtXSzA=~W3IFy@Cz?`t^{jZIdHU;gwQo+DU8`N$1)^`dw{?vATzLux-cX#N8&BH1LS?2z$SM z>xeus6q$`hd$%VX*_qOFlmsdFQTC$HQjG(Xnns6{^QeB*_oXEBQFKY?F`)0E^R4wb zF`Jg-OKxSK2ALX9-?$rbH)mfDk!QEC6_9*2tkLaXz#)6O0!tWu=DO?k*x#rt`rYAn zAk14ss-oHDyxIUR{QJ5Pw}^UBpA%VVeZS!DiPPovF?(4tzPNiQHhK;|M=CgKq0dc_ z%thMnqsobF(Vd$l zHSr>~t_{yGbhY^qcq95@`bx=2b%Z7BaiFc6TvdY@iK#JluFrKi%`McfH`4#Z=*-x$ z#$+kVuWg(_>jhk%{pJJc(h~EzT^IS@O4k!1w(EZ>IK9K9FtWjDE2MN6{*&)pRc{F` zTNkIUZ1>Z#0C7-vc{Ua#(+dz{6$F&8>P9PMIs_7sRwB)gvko@ducTo5Ol;I}JDFv8N_Hw|_KH_Xk8%v; zxj}M|LyDaaB*+tt*|hfj8RT1*#BGe>o?8{i+6VriG^bq^<)Psutt>?wOK4~Gr?EIbpu zSiu3_%oeug8bhssff;@-YKEuM?`O4(dADcp9b__4ZwQLG-O{b#)LXgPJceh%6^Y>v z%bMJ_+SdsO1hL&`#n-dfgBs&T6nt%-Z^{UPY_bsttvL##(Kk0$h9gb{(^nWz<_^rLH^A?w zh5M#ndRr;33n_T0Ct^+Xd_L0kHSCPgkzTCb6QD-5(=C{IOJVj4`4VhqWzpdV*Lv18 zn$5H@ifw$ge|m&V1JI@h*IatH4x9F0a)+@KJ;S!2^^N+y(KuYwLjJg1u?Stq@C>N> zIiA8CmsN40A_-K#Sof>8dvCokA?Gu8g~kP59+z_G`gj^z9fbU?aqFz!dgLa2IHU7-F62zh7&iv3D>gp`HJxzK<`S_Vg;x96I8D&x}vE@ z_il50eIL!=2`Z)ZrG<=!G*lvh)d<}6?puaR8um!e)AstobMqM{*nd`qlu|Y|#s^$` zAT|3Wg|(-dGeU8Oy7YPFx?r37;L>e_#uK<)I`7an!;Bd9@y9?ZHZ6Q^{JjIg$9BfW z(tZyaXt6C^y|*qmzFbD{Dh8n3t1T>UC7?31Re!a)9T&u8JE&;*-}Roa&)YaCVayqw zS-)~r(&Ja{ZSUA{Cc0@|=X8JJ*Ud5aMV2W3)q0z=8@cAT5>0U-W3({v`qN79Xi%SE zC?Jt{oJVZabT?}6a^N8$o4dv|T4o(h(7Q)J?c1BIE#xi{-Xl+%3hjSecDT9ZsNey8 zqFrO;-y+dGfvdWY>l0XG(zp*P#H_x6x&{;LMzuJwtBjI$?J3dIc~!>3xC5Zwt1i%| zk*Z7^Ye}tErS$5{IHF=mdhGXh;KN+hT5Z}?&~3{%k}XZ~`@M30S8<@l7C<})lp+Nh>|#L9BFLlJ!UjT3mske z6`M+LU-Nr=79AI`?93)unY3`?so}bhOU!uz(ZWkig@F`8K6Pw{Em+B>@}uUD0iBrf znayLlo|qr(vn_-Qld&FkhhGgt4f@cZh84RiseUU{A|}-EJeqEGjd*DNw9?Bhabc-IME1#0#s}r@?B4ZC%*Mfis1b zwOb(bCXZn}I0XIEPlL54uD3<6Ygh{c^nW_kzPApiyeDD5aAI$WKGc6KJ3q7G|7AA! zzKoW+{FP(T968Bzh%Xwft9T}vx0{a}F0Mj{11l&-+3^srM-9#q(&-5NX|nhY3&8~R z4XHp@9vM^Y#d>XvpGY*lQ|V*%ZG=(CuX>Kqjmlm({7UG7jQ(bR94Sj%a%?!;*V?}j z=uXdlc29BRrQP`=)kG^wvxAWqIKOVgrlwK5;xj?A!BDXYfRHw8bx>>{DMd(mfT!># z^_HF`F6}ma-Ak<^U91)@kV$`yb*~qvhcR6?2mDQ~P&cwT??otBBE56i0W%Kp4EDX` z-FEh@MdH5o!rQupPfk4vL3>X~GWCiR_Q=G|;E863srte%gNj0z@qM$f?+4DBrUA>Iu#EI-@|k|Mm+c0IWX@;Rj4+rXV4 zeEPO5g=?%u-V(fhGy~G<&w-vvgR3vod#6Tn z9`8G!I+1yHu4ckAn82n%Ptk+JZV`5)pCS%(pVQM&q_{!NdPA9TFN5ypt>D+9Z0M2I z+VzNES@#c3%vAup3O9m3i|p%yY~=3_`$q>4?vDIWEQmUkjh_ECcwa$Qf)*4+Uvvuw_6r_pS8niM(Ave&t1Kep|6x#?+{s-~}^W|mo89x}o)r^d8 zDCyizD6Vq0E4d`Zi+IJi za8A*O6>Ilv^WMYF=@^gTfRsT^9xZLxXm>gWqp=hCP-;A(@t$4FbyI70xfUV;i&4N| zMV{Xs`b>Vx`k0Tnjk~pJ+;c)p^z;g!NWIfiyb7wWPy(EGM6pmV$= zHVj7ZM{OpiNN3U)Quxob)0tVG%;NF5Tky@$fj18&jv%afYXx<|M) zBpL`{gqJU7+h+qSR_-_j*F z^uXT0umTF|3>G0m-n45tfkKJB9?PX}rT9F)mv+-F_ic@PmQE<+1Ji>Rx7+Uu6#ZTO z3U2o!SeJrR?kfqy-f>=BcO~j*$Z7BAXmhw)cD`yvMUD8fTMYe!m8)u#JAhja8FDIo zWnaWT>UF$wS^w6E3mP5kRCY9M$_Vm`pd6!`_`wT%@SVr+)*eNk{S?yXTCc0DUuEjt zObhNnn?s=%>1R*G<9NnvhttB;EPQ#o>q;x`*(%)cs=%1~ExFVu+9T@ZylYqRccC_?_tCTSmWT_F(x`Vk2`4Ou5_H8P>87*lm5DW8xfZcvI@3 zgoVt`X=QJX9JYx+$q+QPH?p|TIPHr_SbQP}-ww=`6R&@mD>hritDk0l=ahR53&3Zy z(guD^G1V)`&C`|&deRe*@*Lk)YB@hE&9{r}m7ST5g+}auD}%PxU>Yn?HZU^kGX>`~ z#O?X=sh0o>(`|a3?0=lw`CR|dc}QX;kC=$8b+A}^5ilF1A9N_Xaj||07!o%6QPFqT z#Mg8l^?X^5tUY#SSBvtwPQN(B?WSL2C}wZMU zFb2McVYSXN_1m#WcYu$K1^v{g*V)NhlMz1clz=IbQ9lZyk&;_x#Sk4@w^Us~LS2c8 zLkn|eA};zpt7boRb9m+Y#gbDcO?jT`OIG9 zpfodLHJ>6eed%yaQ6KoOyQr7TRIX1YRKq?JAUjhPyCb~yz`^#2y@ZW`TID+x*ZMtQ z4bm%Adf=J1Q(n4wheiF0*%dU)_xw&yIro{Y0rBa1Ny^LS1%lwUHUvaH>uB|gmh<)u zykjjkB9QmARZrvPdqdyuQDXev_V%x*An@~T(N=L?Q#sA8%Ztbivt^okTmEdT8C`g=-je!=m+>uD(S^F>?kqqczp zI@0|cP!Ru^cLVo=rBEXVGX#&gc}?L?+|W4jpZm?p8OzYu8sxtw@XO+nV{(HtHx0D| zm7p?{to8{b_f=CfF4(Zn9RRlJGgQavO*CeKqkWZ!UO)Z%V#w!~pNuzVK54AK=tiXb zdxm_aDRx!1A*_GEmQq`Fj+qz^Jy*1P5TE^BjP`7>S#(u;k5uZRrm%~ZSf_xL7$lV- zt{}2Gp#MR9ohaWZ-{l_%w)1?hO|uy4WLp2#ZRvAW$k(Pp^%}o8uqR$mv$qiPkIS#7 zi_!KsIdnc+TJvU6s`$pXtG9njX1S^}T;Y%RY|7rk{lb2i^pEgfyOE;#8kxIMmt!m8 z_tGT`81-J`+lpiO4M8owjHG-11`kIgy^{2@x~I8ps6)AF?qPG&DI+i;bqAw8P4#~U zDNE;Y;nq~m>sg?T0iKHZc<0fPXFxep?BPFq{oCsOVE;pX%+I@({l9=Pu2x2FW4bbc z{c?H(p}hx|IV`SUOH)sFe&=|F`=mRvdknIk(dpsy3iH>@n8GH)S%~-#eD7A}Hn@Mf zP6hgV4ihesWnQfwoe~KVy)yb;sP}l>jlSWZdimZ)J*ZBGYG8i&BE9!abSkSaG!~8- zFuhaXlUp)fa6^n%jrPOMM<;yuyA3*y-GD@=zv92>H9zU2F>ozHQ0<+yN`qK( zklQMs*6lroO6;VLLBpD{j|CKY0)|g+FtL}#?{E8U`k@j+NB1EM5Q@{1GmdG^(L|`^ zfD3=E=J_HUKQI|Gn8ov9v?(QoHA78TQRyqI*`Cq5iW8BPm$2M#?+{w}rFSvC2^4|^ z2Q%_)-D24Jfz`8?6oorEBr=rRHlv9`QW85jc=73bR(KwJCSyiqQRdkXy2-<2bwxjea>?S60SI` zd9N|AMP25HZUO7z5D1D9CpGV{6t-9_qj(+sh=i!`{nEFU{ea_+Yd@NO=+C2QTfYwOH zY#8E*B*-{Lz6MpDh5^}+H72!rl75cXJ>__F6Ii&x-W@|&3~_O&hOKi|>esV_KD`Oe9F@D~FRLTJ zYqH_nb7^QSgURa$&Z`}CbjgD8#i$`y)~izKB_B#{Dn93x1Fps5MuZv6ooyeVEa!y% z?v#+{h>>A{wjFR=%-?l_$-^wBG{&QbH;Y1g9Fiwu+xyjj9+q?+S`Aq<9_lfw%v4|Y zT5eZ0{SL{WNa~#A9V%*2Usbj(+PIMCR_Uu=kyY02^|&S=;YR>#&h+=meBWkLVwH$E zDDP%Ec(fol^sT-&jiK~RnF-~4ciGSVJB6wIvmF8BewFylD9${;C)6a(aIV$T*i{9a zxMO}b2c;h_HZw>4Jgl;Ypo8Fx{?(_c7LhOI!jC0qcz8s4(XduEC zo;k`zV9ghwDF>NR@7?`@N9H#_9-4T+N_f-9Yn(__o{VS^CzAp_cP4#%5Xy>?Lr~15lIS?Vka%P!o?2 z`>b2XW|#ZI>X^NZ^sU;MYZYC;Xz9OyKSZXPP2sLH0hQ2pqr)+FIhYdpjn>e8%3|<3Op{H&EPN=YLC#o zXJR>m8yZjH0EKwQ?OD43-w|Zbge*N?Sc-z}h8^Y1e2n)m=Tpvk?S08}=r-xu?t`04 zVRZ^qTL?`1L+5?}X8399;M#$mr=e{EDf>;Qu_(2Jbntahi=>Wac8*4Qg?yW%ymRoL zbm!h75(|&DIYPvkU+SA%4j;5Lp2z|Loo7m7IOZ5`=_L3;mRa54u(DmAB=IR5tNv;vuOZ zOo8-kT5Z1T0*`Gl=IY2r5)W(!`dXFEIw}OQN9J zy$v&UUzc=%FR1aoz2+0c7CB{+@H=9g#=}g&PYP}d0Kl)+NEw&l79SACxX7ZyGd$>) zpD(CAHvYk~-}9cQ>msf@PaRIRqzYH3qBsy?8h%q~xKCi8qfpB)f^O`U6We=^N0oJ@ zZ(x2W0cMAXq^t*6DE^oflK$g|G2axe~k+{Of?{dxQ9EEvvdH0|zBFVaUIscBieSeCLnLd4r`7v$|@d zU6Et;K@1um4BoSK(cP9-L%|fw2IJ)JpOTj=tV#$@c@$jCf@v{q?+$^#RbjF!SI(`t zJ&D{v*`LVfOr9bvwo_+_UzX~ATy*)m^ZXr7dFuQ`XqtD~^i*Lk!(rN}D{Q%XW)3Ly zUg%v8+n2iCkhh?}+HK{C?;+cr8dFhmrCZ)8^P$TsR=}*LrqOAcXXZx&I=lK7`ikWd zPdJR?xF0LM6mS?`Q;oJ~fVTIwa*PpxyCyG!Cl8IR`S*`ZoX2jOa%Gt{Ed~kQZ8I^N zZaydij5W8+Zuo(Z9^sHBa6xve1E-9&qCy)tZI}GRRwCe25>WD8Gk4IAE}93L}* zm%k~y+gDJY{Tv^(ixvetqG%jv>#Z3@WZaED*Y*=}EO?bUS)S0egaajnew|)DNK~+W-Qo!P94a&=n`&6+tCsdv0)7AuX? zA|9Lx_$2@;PO(7NMf{^&p3HAr7yqrcJZu0HF5$;a6>vue>JHS!a0byOy{&#}oZU5t z@||T#CAKHy5}NyOuZzs|FKrBMruHd5>w0Aj_JjPsWoujvJXsocWG{on^WXe2t=AE6 z_&~8J+195cM$!e`dkgB|)_fqgsQ4oe*0eCUptGNGZ~rG$#cW|s9QB@;)tRs6-Aqzd z`lVpblkZ|ICcIB+OkHJpmG`?LC%?A~O%TXb&>PIt(u)oUFW%t~S1?-YFO^Toz{|HC zojXXIa!g9n1Jt<0v#dX(G%k5ffs3# zQV&gSc}+%g&|5^1C5$ zzoQ&m4&Br#q4JqCsu>@>wbldJGt&Es?JQI~QSbREwdSd8NE(NAV zoi82Ovxm(Q1FxdQPFIkFT_!t$_r&2pHPTRZL`8yXCH--kzG0WPPjT)AP;*8v*UXk1 z{;hSs=-Oow-Ze)}9<+uZ?*!&Kdyt^nfeWhRPCZ}>3OWAXGv@mr2j0Lt#fV-PEP< zfn}b4 zNN9-$9?H-(KvWhmq4POpgR8HAQbxqr?CI_fy@79L{$6J140;m8ZlM(-Y}RUMF0=1B z5<^4S71bXL0=_m!txDljcij0cD)X{cj|F1`+Sa58tK~%JZWiuf#Jb()EMhg}LH5!K z!?3xfwj``9!6V+4<6!(8)P@ppT-x)+4z zmndomkg20ayrm@IXo31Dp?2R+&(Y1;T{F!d?0Y@_Rfu)lkL%qRyPQ)Uha|U$nq(1D zqtYyC>VWMeENEaiSQTm`>sP|Q2z=-%d6Ktwc~J9}PIhcu#yx&$)aXjgerKxt0=nKw zvxcZ9I$OMG$XbHqS(alyc6`jLA#UCxn`cBq$gkLjTYM*QQaQ%|Gwm+Q zofNRVqMRFC+2_nsi`{<@hgd1350n(Xx!mk;cZJh8nbE))!i$h*%hKSg41>y7oVnFf zRhh@miz*o(HQ#H*M15sFjw-jqju| z)kdv_zCB*kCYwmTJ??FJ=rmWBMe`lze@rC|g)|k!9xf=7X!4r7U?orquKa#q)*nq)Dn;A-HgsB^q zE*drvpVl2e&zhUqdFfhv2Y*f>K9d+(uHELJo`{y`Kyz zWJBw9j2H@|U3*auRWJ4iF5hker~(WKGQGZ5b-U`892QOR#JCUs{rA#GH%AiOMPo)E zB;A`5ijKSF>xaj+=gb6NH=q9neb1frIQmc>NTC$wz=QKPf^EB$I=5b<6dCs1zK*x;V!*Ai6N~mVD^LefnJH3 zUN&Cu>-jcM(bI!v^6@3>|FHjBi#K!yylo-NLhYJrcOX9va?)SNt=}Llmgax~X5f+0 z>5&*?UVlHX-SwIz_n)U9k2n$&PR1DaOWbuRz8baU%9DGJEQ)}ut9Pl^?7<7S`FK?? znkC9HC2Ae#yrFd0MYbgIY`7d7qZI&IN7N1knKk8k{f&>= zf^_LjF}JpNqmhTCvqowOYI8Q*42M>0B0x$B#37@#;A<`))ok0JLoSAM<0&w-X~IWf z*LkZB5-F^`_F%$#>VZoC<>pC$nj-bQ_qcZX#Ay;98K&-7s@Q)LVD%{Y%JnRUtlEe{ z8>CeKnfQ-K*QO?l7^Tgf za+zyc%2ay?_^0ox^;}o{4(z1GTB9TSE|L!yAu2ll&YS16URsUVe>hFMZo5kNWho#B z-0eDJ3=X-zSYF}m2MVn5!d+_5V^x)}N+pQN-t0OT+UIj1e55&Lq+SGCf+*m|m67(x zt$GVqJ*ZFU`&w|fr@mK|3Vk~T&f@!0Ld)pteUBZpS4O=W4x1c3`D@tLJ@vDm#D<_b1%FJs*;Ro}b z=BUN~)vcWZN!F!&xz6jocioDg>|0uF>AXOVx-YQ4qxq|XbduU$y2LUKWSNhoJl609 z&;If+S14-Zr$@9i?!bN2^Ql&e29g?q54Zd5;ri?>{Zz1^~AmYeHMVAd+z!KRFa{%Y(R_fzP z_=4(O=g>Ov_$S-rQy{l?LquO2qseBSM-BN~e?2vfaxbB%D|P(x$QfM6^A??=hwyTbMRT0wGBVAl^aYS#LQT}8|h*uO;iyI zt((o$SbH564|L*Mk$i`X^1C1{PtNut`UAM8>s!pT=(xL#=9Y!c6+6PhHr3DJAp_2l zqe1$+q9XiL&j$MP^dwV-!uN%Awvj61Yg=jx!Q|S$bwJ-E3edpjEj-JG$SG2LJlGoF zdheLwnFhbPy24C)%z_Sml2+x^-eoV?LoW1w>|LJyNWsAQR;lucAFv;0xsSv6DHlU2 zCCK8c^Z7HMHEqVAVC@{s(jJKM)Ed2#z`pdB^nO!ha)96FO2Wq_-dQHR_MScD+#HO@ ziI4d8AeNPyaN>O8=7M>c?6~I@qJ3UQbK?eFeaY#R9O4{=)9tH?HY_a@DZmR?w!{wK zE0L^6P=cqPd{4_FfWvvd$A*-YI;2g>h)B? zvBP+{B5I(?L(cUEH+S}CsuGJ}J4elk`QnTy*Dfc2m8b^D~u(-UzrT-!eKOD917=s3K$uB&;YV)*0}bkCES%zYyN z4spJ{$W(nyrG)$zIN(+l`_Kv5)!@#RWl4q%ppOO?8O71#9M{Q6$ zu733aTF!BOo}W+zL4@YU$5Af+4(~^PN7N&00{_-SP2>nZ{t8Ck_$c=+&*%HdkqZ~l z110HZ!5|Ya)$@wqLzE!j;RU&9XHL4$Vw$1SEFK88Qf^)~Asv5Du+QOMgG>#mP9lh< z6qs?2X>vD_+%T;$IXD1evHrbZp|0**mEU3F#=G$i9KXKk;9#&zC_k&b_fi?8s%^_= zrZ%rV?5Rd!AYjs7^75v}?$|5ZvmS zQ_335g01&YGLuih@A%)_6cUD}&+{VZ%DtNNbA+Oe5F6lMJTd=7TciSjyEvr*6rmDf zsKDI9mnrv&(B>w;@WQK7aMSazMfWR)(+&0V3L9+KZL+VzP5F(s#0Fota|aD(gdR}y z8Y)=x{G}{4Ok{5H?ZDY!UKzwb#MX+KFzk#s(Vh zF}uH|p@muQiq^LwR0Av!-mhz)Gw8pFaxeG@BgY`mPP3wvI(p{Q zFL-Mq-747nd&BN4m^gZLW&)Iwpwb=F6n-OzTWeHm>`Ncr%1F? z^;XuTh>ZA$R9eP0v7n=Q-ujkTEmdUiT_v22XmNiI`>+$H+I(-?&)^A%ZZjfHuSzuU z#Z%}*brrJ&=ei!BvWoYtUja1n8M0HVav8WASK{H;F}~y+o^Ypf|ERr{uE)bqCXre@ z9Q{z|!Jh8}#Y+=Rf>RX^_&W57>Ygv(JBwWn;iwDQWH=IhyxB@DpRcsK$8y;-^W-n5 zHi*!X_{Q}i!?&o6Y1QwAFP2b8k2XY0(VBZr&QSf0^kz@uuH+y@3Ku$8zSCf*)_v;8oRKtg@MttX221k%@7&K(d zs4*G_K;_EO1Hf>VPfj~?j9y|#74j^{x^?r*wPSIzfyrdyhfL)`wI{_=6HI6&=KlUW z{L{)8qhIt#%=edwp2!&=xdOse)K>0RXU@1{ny$Xd0YRJDD>T`>QY?lp^? zbwA9O-QiKf@e#pFa<%W9XE0tk5WH3M!!Y(|l=X4FyOxFRbBWT}in~_MQ2AY%wBgy2 z(IF$y%@A=OXWGVjs_n`f&_o(s#Nlot;`$`(R|tiO>R@hPietXJu<^S%FO9{Gnpc3W zfe}@F*)|Uo={D&q_{lpbx$^mN_1tl`sYzoYlhy(#9yscMR}x<1trPVBG;k*VOfY^N z|Mhsv(}8+QDpwv!MI?`FY@SkidI~8=7;Cjb`R$-d zOJp)hJ+g`u|GHM!vyu=*%~!Z79JS&7*ho4B&D`llr&aV<35Y{*~C{KkI6d_C@; zI@#l>=b`uClz&KX9~rLv!WO3nm3l^B9J8K#bV3ODhcI$s{4hi{<_Xq;C6o68;S)n# zONgwvx3Wsc0XhGA+ zMJN9P8ws~O5|6qRY2KKiLMyPsmMCh*%d~n!|7I~uGr(jL8977j*f$B)+JC7U)xRju zri9^EOtP1Poic7jTTgU8O|-glexsc`6j*n!%B{wM3U#zvS5tx|>MqH|jlRuNIn+Q% z;J5MO=-+UD*b}Vs4E&`w&I4nU9)=ni7NO2#Z8*IBcBWNk{coziyez@PR`G~2sRHZp zyxC7;X%p-Y`NzkU`geK8Yj%3!Vp-h1OeuOBsBZxh)bCXa;^$6Z7RW5alge!+>?(9f ztn_i7(#}>UhMlrNjj!f$baS|1BMvE08-TpVtTY^k>u$*kU@eeLzA65PFngrl1dtcg z@ze~QL2o@cskmb=GK^bB99Nc|bH71pf5$(Rz=u1Jmq20>wJ=x(uXB0`42V9RDZA7dth$-Mi?$ zq$3w$!fLHvJJ=;1r~B@^Yod`1UG;KSOqZzJcD>wo|4~K$o@HO*+R{BfMFt@ERdV9x zFyos`yQF53-|TAL5hvZ6H(9)#cdLS`*3H&SpgH!@wQ1wn8@}n(aRP=|xv>u-EC*Mz z5)LEwW5#QJn9P+YqnqY&Pr+JX`nW@6Jw-m)58G;99ZS<@qBNnlReiq5TQ6$n_#QdWf^?}}*I-l8 z4~8*qLWD7ZN9krRK9pe`oO9|mj6oVLRapNGIkZ%e5%$c_8Q&Au+0p`AEq$-5kFSon-3;FTFJif1mE$ z&Rt5}V&k7sXyAD^+lrr!?(m`>S-KMU9i?_P=42G1SnFutff)jI6^Pz2ius$jZN_WH z+cWF3VNYM~D>`dvZMSTzmdj_WF9jZLmbOz}v8jbLm_k5G&||FNsI7yG(x+ogbnqdtE&JJ;WcQ zG9Q~`)uhmw%*a*eztveNI#Cg@a-9LRCn8GJSu_X;>ioiJFn`17`Bk3!A$B_a(@P*( z_rW$i+?4GXn&+8nHoFI(YfB~Gw|nI7A8MOTD_#oF7px3+{I+)lF}l6l zA28?s@?(8f1uEUQqAciVeY<}U>H}7UtxW<0aiNs!Y$#@9|0nKR&|Lvnbv=i?!?$a_;7C0l_96Y5 z=--IC$b!uvw}6l1X&6sRzC0K@5Jp+q+q{E92OC!*CD!z7e-E2tBcrOaRX7}M2&4EA9CD0 zp;fQ4Ip9RG*7jp&&)ei7m(tlnSms#P8SY{CN2Co0QtM|KTTWe+zvx89VwCfJqkMOB z_jncN@<%Rab`F;nK{^}j$6qAY7j8X)3@tLZi0Y!Ri#z2FKQW*8Ba!SBRo?4f^AWysN32{mxp>e-pKtj}urh({M z^bm?Ov_t!n6EXn z;#7}QAGZEW2df|x{w#+>Q?N|I8(GP$dY^iGd;)g7Kw6onp|3_WL!IICqa2CuE)IK2kG?*v7xtA!ntK);WJ zIxOX?Li*ZYYS#UgY*M@AZRAeQWl9AFitTtO`nBi4ZnEqHZAz`a*QG%VPtig$IDXrB zVR6IRGSG5r4g<0}{x<6kHEARihcy89h=?5~C}Vsy$4`ElVY z27!jK&(WN8-uo<88ok>W0+LZTfom7{v!i@Yp%ly93dUmpd7H0${CRY-`{3T;K^;J@ zYTeLXt%+rYI`yNjHT+Db?lJe_Z+n06($e!z4lGq((>m1+JGFFTI~Bi6!LRX)glA@z z7jz~sE-*G*{s0+Rt>@x97QY=;ST^`zd_~SS<*7!ukJtY5JX~W-eJ zZsmF!!L24-wX%IzLAeT-$9f8dYdsO29+PnJMP!ra8Pyfi@m<3grsXqUP(4S}tCz-A z)cfXPu%%Z<>z4cR6*u?H;1DaIyCx0oi(Vjm&cB>mjqxL#bk&@BO-+=QV^_B= zxwh4NA)YW-^5;=|{$79LIC7-ZeAQv~aA?<^z(>n+>I~XW;k?Z{uVX;2#)e+n?rE3)&745?HQ?J(`@)drW(5L?v?&B#UBQ*6k zh{qSF>VCN=;E5p1A0f>F0t{^RZo2oTJY0x9J#?ou)7551Id8|s%|s^ne9y?NE=%JV zf56s#`AT(CUUdPYAT}v%&U3<}82mqUUbods?hT-_BfTgd_V{_8ocIPL#0MW{=z2`~ zWTX!~y^EN>nABnf%P;xSK=boRPzha+?;)6t>#lAYm$gx~zUui(xbvQ| z=i%S%5^CA!f0?%1%bK*-a^17vDC2Q? zKX`11eg6>Ifka(;)a!aD)s1cZ_I4si?n%J&ct@|Jj1fO46uPf|dXob%(_=OY?A;*| zP-Ua-BgAJ8BiC{b_^*Y*T^2IN$`v7?+&Pd7An*_UBPjXD)9@1w^!LFolj%C$YR4A7 zP`qg;YofePqjQ&MYd6o|8+_koMdLy)S$&-O4l$;%wod7*EQJPqL>!5bK%ZTEz|uzw zlKNC8Q2OZ(b3Ii9KAp?h<^iXOi#m^#5Pxi)HW^a(48HQOq)qecbNQl;Q)C(aW?S2U z&8X?4#q2P~poJp(Q9wOg2Rhhxsby5x@zu--X!-e{1W9kFagkmmdUBR`0pTS|N`iI3 z`aZ~L(HTnpLy1;qtVI`k$BfdwnMJWPZh@?&K{`CrtWpv4B$MU*Q@8)STw!27Lr<)p z;MW^8A8CUTFdEqBM#XZisgi)?v#r!mIkD?A)7}OrkVY zQ9fMZYxup8Tcodc+zH!#J5=D&WJs*vC_P9~AiHO*AE4Dd*grAnrTE<0I)dHiUWyFP&O5AJq4lY@UF}9f?+dgV`?qP}B<$5~;WmQMJ zl00=gTuHIoqE}M61`J$cu6WObiJYC?%4Xo=RIn;nVB}s&*&+;?HXu6X5=;&%%3%K^ zJ+}#iB#JjeW443=LN+I{rcwbEVk`)w=d@bh^*5*{dTN$0aT)L$_Ppl zels-_+_bDaqx`Xh;MK@u+WW1;-*~{oV`SJAvz7^oefUSTCJbe(5U&utK(bi3?@ebL zH?Y!YMku99m7nHLZIbk;3e4zXHbtsIViX{ z)y`zL&9`hvliVtT6hA%Y-I)H4F@D8Jy(Shpv&E$fg1Ja0$ZoHkln}_Y*?oFh|L~M2Th~)UAi^ z<#t5Vqdko7r6$r8@F&)2EB+-!jr#L4y(yFIy5Ioa+3$eIRkybn@!Ju0Ov-x503=s# z^I|f-@6U3YmoV&KtqBj{J;Sk!%Nw$C1}Fsr8^_FJb@9L9!IC6UfnVfm9^(819m1+t({CNu zcpW`uMbX+qtl2|dn4m?kEaKg6ln&|l;pG!F_cJ&i8iL513Og6c{$O9~Z*GEiYNypp z3MsG;1HVxzu>|fDcI2=qPZq4dS)M>#dnt7AbqUo#9@xxxFwAJ3;Ag@o5F1=Or@r=d z&EWp)m6IE~mULd(qUtn7<+T02cEw5cUX9u)Na$@LQvr}R3OKrZd|L^my0np0YzqSu zqtXaBN`qrEuKHG*apZB8=cb3xZ>(xJVXUoQ5o|^Ul4WP}eBp+p<`WW-hGyOgS=U{EM|9Kd7lt1$y)$7i5rBfhiWa+p%J8N*?B8d9pr3 zg5S#1`jIpMqGEVCZvd=Bd1O^AKx%`w(P>UH?CA~#jzZfD2#`-u+G&=gj&*Q$a-ZqE zAW#W?mWp2b77;1#*gVs0i?OifmOQjA@JRq&otiPzw%BBWammbauMUq+B4u}(cAe@s z?KsyuUe%xtgd2Z@Gu?qY840aKd0@rf^xCBAl-1|l8?BE9rgzf_+%bm|KXe3s*WvDj zhxVlB^>O<@-LEVwEz+Ay?OqL3S0D%uFnF zVs`h`Zgv4qk7bmYBJ@Q#KummCSHm)v<$+7*fY5B2{okDS4~Fg@bzvJtuO_F1Ee9VF zL;ZW^qGfa}tg`l{5gXRNdwN*`eIW|+Q?b-l6=hcGW5mP8=uBvzc$AT`Bsux3v8dn& z-5{`7F6B$cZolmA)9j2P5U%&WKNiHam67$ z5tZ{<99Q{CCV<@N6Q({N!SRc!0({A1eXh;zIO{=HOGcYl&MI;){R-M*Ul^Dk`XBCY zV~UTC`Sr1wWRO92rB2k`nMnQJY!>@m#Kf9?2Y=qJ0&zzE`fHGM{D5PRThF| z27`!!n1t{O$;RlQ_yISKeIPY`rgN+yVPmC{?6Fj9amYxZ)I~5BC~Ppru@e`L+Sl^C zDC0`TQV~)o-!08S)(;bn#=n2m>~t@aK(B;&3f7}t3s{>s!Q<0ZG;n%x(I8iu0?XtBnrrr*v6nnQ!GAJSA}epY zL^m!^<;&e`b#l(jxpdmx^(J~oK$A-<2OzODVNq9OqtGODo!#KDrCl8~adM1-xB$)~ ztY3y<5G|17E-9sQ|Iw!^eAyU!?rO`|2U%CtLM@5oi9p?ZqTDI^*Vdl3HWFw8h>}PO z*x>NjenS>sK-N+c(wpM}hXJFVbqTv~*T92)6CGao?g}V5AcN(pZ-EA6>5Bpzn^&)`;z% zSqj5{a85K6Dn0rGY%1Y^mPFp$yan7yvhRR>+V~D~B@vI7-4@Tl_Wgi3TY@V3hKcgH zvhDulXw<(G=KQY$WMKSY^tcmnvxx(JTPA7V3QhiYdZGyNtX_Totkk@TE$jBE!;1EW zdFE-(y#(=X)(IKRNC@-0bwc8S`COi-}Nofm%!{G51I+2dVz zRiDSwH4o^NfKvcw^xo)=eH`-#+~AG&*&m@C(*<~c-%0t-R0RL?A>L!UF{9HrrSBN2 zVhe@ntr_tW>iDejfMmkE!;rqu(})S=%QBR;ehJ6zE#-f8wQX=H*mdp(sYY6=hQYW6;l?~~(Har@myqsc@?B^Qje+ksw))>?(l<8ZLTQ`>GQuB{m z?0Lgn=|_0QkIN%I2<2M+WjQe22E29D@QRI-w!$59{H9c_#)Q}wQ_9no6OpGPPKl!K zDC;-epv=x8q-d>e&~pis4xq^R$^UJ2|4)bTLvp08(9Sxw&Ix;mU5$IBqnpi zZH`kY`_0S6aK!Hn*{-vg(WoJdEB{sLPqoUz(i*{3R=VLl-ah_P>f*>6QSBz-4geRgsVy#a7FB&+$!Sj2q?LsG~~mnU?__QM1Q+ zriPvfmc+!yfvBPX=@;Rjz#W8^`Z=WVS;8T|YxPnKO^0-TNuAaf5u#t;F^L$NT%{-L zhe*0F*JW7VM6F??r|%&a5%M~Ih6R4I)8@7w?sz8kG0KKv~BXzw)Kj(M0#cEC31?!e=azY%1$?69;R#__N7eDdd!;poVJ%bnIP3xcq3}#{1)+t)@k{8@Il4gP+U&X^bn>^cyq8UyF=pCNJhltYxVljfvxw^`{b(S>}; zgvN^Vs;D@ybH^HSE$3&WpIeL;nLMzU09@R|D4SjjuZiKEG7c!}N7!sxVC7oX(>9LK zKYq4yLknyc)AH1=Zyx4p#|$!Z%3Lq6lW=O7LMVFjRVN|zq{}ah2o`L-?5c*DE{+;1IcJbk@x5orB;VXUwMWL>buC7IfgO9h$?|O@(Ki z!RV(P$m(F{pxHc8FK@HM4+VS_S0J_LiC??F+v+=IUI)3h6t?k6`!HQ6Zx!P1!eT7) zqC+q-La+JiK={y!b@ z=P1LvLgh)0N^JBjnFyB7b%R`y-kxg9(6oFu$Ad1(&PVmV<=pC{uHFAUm4_7Q-U43x z%lr_DfvibnY;W{y=s6(q`Lk058J`)N8nyWi!A8J5REI@At_uCakta9MlJ`N==-xbITD@0_K|q%LVKWruaqh zfr?t0<}o7u*yn;+^t4i`wL4ZPO7uq);QJ2(nC$QY;B>(x{SNl(kyar>=Kn^dh=VsxquQ|%wi}5Ru8rR zTdp$WjXk<~FOSFD66?5gbShwHP%OIcx$SC5IOagiXGo6C9As~_;?!1;8gv=UP z*k?nfASNCX9k4?-L|Knf;s^ zq?4WeOMvzB4)x|y-llX>U9s+Fyx<7E+iki-H_awyWyj^l^RU!L`I7<9e<4<*CMhgA z_VLIwcV_UpKG6?}Un?$OoE-FMD)hB7^G-v!8k#Oe)?STV|H=nn%p1`av1nN zbF0cFDR-^h5rL0Hag52K)uJzYe5W2|aw5`a5OUB7oQ5zX`}8|B)SY1NuSjG%@ig!e zQ{!#WL6|ao6#p7k2_Au*H0PFCB8o6~6JUzbkk;TrKVKqbg4dEb;~H)^P3x8eI^Cjg z4$!#y1`-oVZe0zI1H)5{VkK7+P~6(Z9r}B`#>EeH`|H#{h7yohePH-pN5rRXNN3g* z8Y7x`S#a;u{eEONX7wqqeUg%}88LX*@Z>3!G!(^e+WzE~(;;ZvHCeY6f<1|4{LH}F zVwx7qfVsH_tpd zIi1kDUaI#wM!2_mc6sz_B{_QGVKIlqQS`#LJ~%4C2HnK@|Izx*e@#EauYP(ZC69QV zph@l8E)0yOrO+T|DQug?yQ%j^+*5`PN;#fO56xtr+a(heq=j`dG#t0y(3O5?)r8_c z!n0cUZp@4{{9dWH!*yK*na7Mqb~s(^cv8??tWoX=c4A=}WBBs3rV`Rl6A$uW1p)+6 zxsWTzP#KGek*>_6wLp<3pR^ zPR9gBtM7nxp2j^nVtwPd09NL~P;hdFrIP=QPhyt|&-Q4Pv9C!2tghuk6J!nxY1LGK zRqJzH*TwC`8de+K7ZUlkwzxcJGQzY?{B5PF1+)AnGSs6a?MbrFil-uOZBoNcbSvn^ zb~p|54(M|U`QTk+&T;_>pG_<+r+uNEKszz?(U~z1JjHrG|&lT1aT9FCD5b)SB zy2WZsb0BCW?zF+`q(xa;ye=u!!1=w{UQ2gBUwm=$II!|_JhHS;oclD$(<6y2V;a(U z&0yZdgZZ!Qy4`$`1*bx$HReI(WIGM3LnT`Je!^F7pOxARQykMJgm`&}cc(G+aajEU zoO&+%mcMOkOx`kGa)nB9I$sqVD~T4w%dv#plwH>@znY zes(S)#w{<0YH7{gSbLdzM=M!022o)9+yRD zh0V+hUYmaZWVw>YFJ}A?^z9{T?CfM2;)3EN}vB19MpT)XwH>p!=l-|{l6o9FLKRoK##xu_NB ztBFqsa2{1Xoh)$fKXQS+g}_vj=EJH}5zYrbg?TqAmPw>l|jYVzFeimN7OA0Oj;Lm1z5fwhlX zFV8CsVSiDBR3BA;4DOoa&E37-_$({P8ZM);oxY$0x`iF7@)FrE-Zexzi6QyOFob_K zX+Hb6kj2P2;%MU0cn0_k>uCp_jzV)EyoTg&)%yJVOV_U& z6?WECA^1;P`70&z2oiVI7x863qP&s;Z*Ph>yh1pEw!s#~;m`eumwq-B2lq{N9e1sd zbn}oMHRjk|qMmD~@30_{a_CHh40`fM(KA+SBoc)NLzK?dG98$AuXrD&M_J^tN7Kp1 z;?%`=9~sFqs{)mXa0qRm)6VU92lT9P8Ivuu;|^R-P`xtOA{QLQV=r@_HJ08ScrHl7*2rfNo9M)MDFcJn|S8!myBAAiAUw} VyZZqf7TsdyaY}noRhh*9{tx@f1fKu^ diff --git a/tests/testthat/trajectory1 b/tests/testthat/trajectory1 deleted file mode 100644 index 4cf8c4b523b7fe7e1ac25428b3981782aaf09f55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmV;E0c`#siwFP!000001B>8dU|?WkU}0cpU}6R`nT3G_I}q~$F{?vb0|N*+6dz-n zop4dcA@KZ_pV1mW97~YZv&O^g46>sBNhxc%l-qzEEw&;0Hrygv;YGPfYm!5I`4M? z$Z$M#O|Ah<-+AW%rXTNP0MoB}4