From 851450708b10f1b52fcf49559ad23d5945d97246 Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@inrae.fr> Date: Tue, 3 Aug 2021 09:11:29 +0200 Subject: [PATCH] refactor: change BNPE to Hub'eau Closes #3 --- .Rbuildignore | 3 + .gitlab-ci.yml | 2 +- DESCRIPTION | 10 +- NAMESPACE | 10 +- NEWS.md | 2 +- R/doApiQuery.R | 2 +- R/doQuery.R | 43 ------ R/getComSeries.R | 34 ----- R/getCookie.R | 23 --- R/getOuvrageSeries.R | 63 -------- R/getTimeSeries.R | 78 ---------- ...ronique.R => get_prelevements_chronique.R} | 9 +- ...ement.R => get_prelevements_prelevement.R} | 9 +- README.Rmd | 66 ++------- README.md | 139 ++---------------- _pkgdown.yml | 10 +- bnpe.Rproj => hubeau.Rproj | 0 man/doQuery.Rd | 30 ---- man/figures/logo.svg | 66 +++++++++ man/getComSeriesDep.Rd | 47 ------ man/getCookie.Rd | 26 ---- man/getOuvrageSeries.Rd | 43 ------ man/getTimeSeries.Rd | 63 -------- ...nique.Rd => get_prelevements_chronique.Rd} | 16 +- ...ent.Rd => get_prelevements_prelevement.Rd} | 16 +- pkgdown/favicon/apple-touch-icon-120x120.png | Bin 0 -> 6298 bytes pkgdown/favicon/apple-touch-icon-152x152.png | Bin 0 -> 8201 bytes pkgdown/favicon/apple-touch-icon-180x180.png | Bin 0 -> 10118 bytes pkgdown/favicon/apple-touch-icon-60x60.png | Bin 0 -> 2750 bytes pkgdown/favicon/apple-touch-icon-76x76.png | Bin 0 -> 3636 bytes pkgdown/favicon/apple-touch-icon.png | Bin 0 -> 10118 bytes pkgdown/favicon/favicon-16x16.png | Bin 0 -> 883 bytes pkgdown/favicon/favicon-32x32.png | Bin 0 -> 1759 bytes pkgdown/favicon/favicon.ico | Bin 0 -> 15086 bytes 34 files changed, 133 insertions(+), 677 deletions(-) delete mode 100644 R/doQuery.R delete mode 100644 R/getComSeries.R delete mode 100644 R/getCookie.R delete mode 100644 R/getOuvrageSeries.R delete mode 100644 R/getTimeSeries.R rename R/{get_chronique.R => get_prelevements_chronique.R} (75%) rename R/{get_points_prelevement.R => get_prelevements_prelevement.R} (73%) rename bnpe.Rproj => hubeau.Rproj (100%) delete mode 100644 man/doQuery.Rd create mode 100644 man/figures/logo.svg delete mode 100644 man/getComSeriesDep.Rd delete mode 100644 man/getCookie.Rd delete mode 100644 man/getOuvrageSeries.Rd delete mode 100644 man/getTimeSeries.Rd rename man/{get_chronique.Rd => get_prelevements_chronique.Rd} (71%) rename man/{get_points_prelevement.Rd => get_prelevements_prelevement.Rd} (69%) create mode 100644 pkgdown/favicon/apple-touch-icon-120x120.png create mode 100644 pkgdown/favicon/apple-touch-icon-152x152.png create mode 100644 pkgdown/favicon/apple-touch-icon-180x180.png create mode 100644 pkgdown/favicon/apple-touch-icon-60x60.png create mode 100644 pkgdown/favicon/apple-touch-icon-76x76.png create mode 100644 pkgdown/favicon/apple-touch-icon.png create mode 100644 pkgdown/favicon/favicon-16x16.png create mode 100644 pkgdown/favicon/favicon-32x32.png create mode 100644 pkgdown/favicon/favicon.ico diff --git a/.Rbuildignore b/.Rbuildignore index 9e2f5e5..1f8902d 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -4,3 +4,6 @@ ^LICENSE\.md$ ^man-roxygen$ ^docs$ +^\.gitlab-ci\.yml$ +^_pkgdown.yml$ +^pkgdown$ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f06560e..1edc0ec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -37,4 +37,4 @@ website: - R -e 'devtools::update_packages(packages = "pkgdown")' - R -e 'pkgdown::build_site()' - sudo apt-get update && sudo apt-get install -y sshpass rsync - - sshpass -p "${OVH_PASS}" rsync -a -e "ssh -o StrictHostKeyChecking=no" docs/ ${OVH_LOGIN}@${OVH_SFTP}:/home/${OVH_LOGIN}/in-wop/bnpe/ + - sshpass -p "${OVH_PASS}" rsync -a -e "ssh -o StrictHostKeyChecking=no" docs/ ${OVH_LOGIN}@${OVH_SFTP}:/home/${OVH_LOGIN}/in-wop/hubeau/ diff --git a/DESCRIPTION b/DESCRIPTION index a3e311a..5fd965a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,17 +1,15 @@ -Package: bnpe +Package: hubeau Type: Package -Title: Retrieval Functions for the French national data bank of quantitative withdrawals (BNPE) +Title: Functions for the French API on water data "Hub'eau" Version: 0.2.0.9000 Authors@R: c( person("David", "Dorchies", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-6595-7984"), email = "david.dorchies@inrae.fr") ) -Description: Collection of functions to help retrieve the French national data bank of - quantitative withdrawals (Banque Nationale des Prélèvements quantitatifs en Eau - BNPE) - available on its website <https://bnpe.eaufrance.fr/>. +Description: Collection of functions to help retrieve the French national data bank on water <https://hubeau.eaufrance.fr/>. License: MIT + file LICENSE Encoding: UTF-8 LazyData: true -Imports: +Imports: config, httr, purrr, diff --git a/NAMESPACE b/NAMESPACE index 8c050ac..c8bd8d5 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,10 +1,4 @@ # Generated by roxygen2: do not edit by hand -export(doQuery) -export(getComSeriesDep) -export(getCookie) -export(getOuvrageSeries) -export(getTimeSeriesCom) -export(getTimeSeriesDep) -export(get_chronique) -export(get_points_prelevement) +export(get_prelevements_chronique) +export(get_prelevements_prelevement) diff --git a/NEWS.md b/NEWS.md index c451364..6c0f47d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# bnpe +# hubeau ## 0.2.0 - 2021-06-24 diff --git a/R/doApiQuery.R b/R/doApiQuery.R index 62330f6..3b13992 100644 --- a/R/doApiQuery.R +++ b/R/doApiQuery.R @@ -1,6 +1,6 @@ doApiQuery <- function(url_path, params, - cfg = config::get(file = system.file("config.yml", package = "bnpe"))) { + cfg = config::get(file = system.file("config.yml", package = "hubeau"))) { query <- file.path(cfg$api$url, url_path) for (paramName in names(params)) { if (!is.null(params[[paramName]])) { diff --git a/R/doQuery.R b/R/doQuery.R deleted file mode 100644 index fa52508..0000000 --- a/R/doQuery.R +++ /dev/null @@ -1,43 +0,0 @@ -#' Internal function for doing the queries for the bnpe package -#' -#' @param url_path the end of the URL path -#' @param params A list containing the parameters sent in the query -#' @inheritParams getCookie -#' @param cookie a named [character] [vector] with the values of the cookies (See [getCookie]) -#' -#' @return a [httr::response] object from a [httr::GET] -#' @export -#' -doQuery <- function(url_path, - params = list(code_usage = NULL, - code_type_eau = NULL, - commune_adj = NULL, - ecrasant = "false"), - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg)) { - - paramsDef <- list(code_usage = NULL, - code_type_eau = NULL, - commune_adj = NULL, - ecrasant = "false") - params <- utils::modifyList(paramsDef, as.list(params)) - - # Building URL query https://website/?param1=value1¶m2=value2... - query <- file.path(cfg$url, url_path) - for (paramName in names(params)) { - if (!is.null(params[[paramName]])) { - query <- urltools::param_set(query, - key = paramName, - value = params[[paramName]]) - } - } - - # Request - resp <- httr::GET(query, - httr::user_agent(cfg$user_agent), - httr::set_cookies(.cookies = cookie)) - if(length(grep("<title>Request Rejected</title>", httr::content(resp, "text"))) > 0) { - stop("The following URL request has been rejected: ", query) - } - return(resp) -} diff --git a/R/getComSeries.R b/R/getComSeries.R deleted file mode 100644 index e9fb7c0..0000000 --- a/R/getComSeries.R +++ /dev/null @@ -1,34 +0,0 @@ -#' Retrieve data by commune for one departement and one year -#' -#' @param code_dep [character] of length 2 -#' @param year [numeric] Year of the data to retrieve -#' @template param_get_common -#' -#' @return [data.frame] with one row by commune and two columns: "insee_com" and "volume" -#' @export -#' -#' @examples -#' getComSeriesDep("08", 2016, code_usage = "AEP", code_type_eau = "CONT") -getComSeriesDep <- function(code_dep, - year, - code_usage = NULL, - code_type_eau = NULL, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg)) { - params <- list( - code_dep = code_dep, - annee = year, - code_usage = code_usage, - code_type_eau = code_type_eau - ) - - resp <- doQuery(url_path = cfg$url_com_series, - params = params, - cfg = cfg, - cookie = cookie) - l <- httr::content(resp, "parsed") - codesInsee <- sapply(l$features, function(x) { x$properties$codeInsee }) - hasVolume <- sapply(l$features, function(x) { !is.null(x$properties$volume) }) - volumes <- unlist(sapply(l$features, function(x) { x$properties$volume })) - data.frame(insee_com = codesInsee[hasVolume], volume = volumes) -} diff --git a/R/getCookie.R b/R/getCookie.R deleted file mode 100644 index 7caa2a0..0000000 --- a/R/getCookie.R +++ /dev/null @@ -1,23 +0,0 @@ -#' Get cookie from the BNPE website in order to be able to do requests -#' -#' By default it is automatically called at each request but this function -#' can be used once to store a unique cookie and avoiding asking a cookie for each request (See example). -#' -#' @param cfg a [config] object Configuration of the communication. Use by default the internal package -#' configuration stored at location `system.file("config.yml", package = "bnpe")` -#' -#' @return a named [character] [vector] with the values of the cookies -#' @export -#' -#' @examples -#' cookie <- getCookie() -#' getTimeSeriesDep("08", cookie = cookie) -#' getTimeSeriesCom("08105", cookie = cookie) -getCookie <- function(cfg = config::get(file = system.file("config.yml", package = "bnpe"))) { - URL1 <- paste0(urltools::scheme(cfg$url), "://", urltools::domain(cfg$url)) - userAgent <- httr::user_agent(cfg$user_agent) - resp <- httr::GET(URL1, userAgent) - ck <- httr::cookies(resp)$value - names(ck) <- httr::cookies(resp)$name - return(ck) -} diff --git a/R/getOuvrageSeries.R b/R/getOuvrageSeries.R deleted file mode 100644 index 95b31af..0000000 --- a/R/getOuvrageSeries.R +++ /dev/null @@ -1,63 +0,0 @@ -#' Retrieve data by device ("ouvrage") (metadata and annual withdrawal volumes) -#' -#' @param code_sandre [character] Sandre identifier of the device -#' @param cookie a named [character] [vector] with the values of the cookies (See [getCookie]) -#' @inheritParams getCookie -#' -#' @return [list] compiling data of the device with the following items: -#' - `id`: BNPE identifier -#' - `code`: code Sandre -#' - `codeCommune`: insee code of the commune -#' - `codePrecision`: ??? -#' - `codeStatut`: ??? -#' - `codeTypeEau`: the withdrawal source which can take the following values: -#' - "CONT" for continental surface -#' - "SOUT" for subsurface -#' - "LIT" for littoral -#' - `codeUsage`: a numeric code related to water destination: energy, canals, turbined, AEP, industry or irrigation -#' - `commentaire`: comment -#' - `exploitationDebut`: start date of the -#' -#' @export -#' -#' @examples -#' getOuvrageSeries("OPR0000200109") -getOuvrageSeries <- function(code_sandre, - cfg = config::get(file = system.file("config.yml", - package = "bnpe")), - cookie = getCookie(cfg)) { - params <- list( - code = code_sandre - ) - - resp <- doQuery(url_path = cfg$url_ouvrage, - params = params, - cfg = cfg, - cookie = cookie) - l <- httr::content(resp, "parsed")[[1]] - - l$exploitationDebut <- as.Date( - format( - as.POSIXct(l$exploitationDebut / 1000, origin = "1970-01-01", tz = "CET") - ) - ) - - params <- list( - code_ouvrage = code_sandre, - ecrasant = "false" - ) - - resp <- doQuery(url_path = cfg$url_ouv_series, - params = params, - cfg = cfg, - cookie = cookie) - lTS <- httr::content(resp, "parsed") - hasVolume <- sapply(lTS, function(x) { !is.null(x$volume) }) - annees <- sapply(lTS, "[[", "annee") - volumes <- unlist(sapply(lTS, "[[", "volume")) - peuplements <- unlist(sapply(lTS, "[[", "peuplement")) - l$TS <- data.frame(annee = annees[hasVolume], - volume = volumes, - peuplement = peuplements[hasVolume]) - return(l) -} diff --git a/R/getTimeSeries.R b/R/getTimeSeries.R deleted file mode 100644 index b09d583..0000000 --- a/R/getTimeSeries.R +++ /dev/null @@ -1,78 +0,0 @@ -#' Get withdrawal time series for a geographical entity -#' @param insee_com a [character] of length 5 representing the INSEE code of the commune -#' @template param_get_common -#' -#' @return a [data.frame] with one year by row and the following columns: -#' - "volume" the withdrawal annual volume in cubic meters -#' - "annee" the year -#' - "peuplement" a unknown code -#' @export -#' @rdname getTimeSeries -#' -#' @examples -#' # Withdrawal time series for Ardennes department -#' getTimeSeriesDep("08") -#' -#' # Withdrawal time series for the commune of Charleville-Mézières -#' getTimeSeriesCom("08105") -#' -getTimeSeriesCom <- function(insee_com, - code_usage = NULL, - code_type_eau = NULL, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg)) { - getTimeSeries(level = "commune", - id_name = "insee_com", - id_value = insee_com, - commune_adj = "false", - cfg = cfg, - cookie = cookie) - } - -#' @param insee_dep a [character] of length 2 representing the INSEE code of the commune -#' @rdname getTimeSeries -#' @export -getTimeSeriesDep <- function(insee_dep, - code_usage = NULL, - code_type_eau = NULL, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg)) { - getTimeSeries(level ="departement", - id_name = "code_dep", - id_value = insee_dep, - code_usage = code_usage, - code_type_eau = code_type_eau, - cfg = cfg, - cookie = cookie) -} - - -#' @param level [character] geographical level ("commune", "departement", ...) -#' @param id_name geographical identifier name ("insee_com", "code_dep", ...) -#' @param id_value geographical identifier value ("08105", "08", ...) -#' @inherit getTimeSeries -#' @noRd -getTimeSeries <- - function(level, - id_name, - id_value, - code_usage = NULL, - code_type_eau = NULL, - commune_adj = NULL, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg)) { - - params <- list( - id = id_value, - code_usage = code_usage, - code_type_eau = code_type_eau, - commune_adj = commune_adj - ) - names(params)[names(params) == "id"] <- id_name - - resp <- doQuery(url_path = paste(cfg$url_time_series, level, sep = "_"), - params = params, cfg = cfg, cookie = cookie) - - # return a data.frame - do.call(rbind, httr::content(resp, "parsed")) - } diff --git a/R/get_chronique.R b/R/get_prelevements_chronique.R similarity index 75% rename from R/get_chronique.R rename to R/get_prelevements_chronique.R index c85cfcd..640943a 100644 --- a/R/get_chronique.R +++ b/R/get_prelevements_chronique.R @@ -3,17 +3,18 @@ #' See the API documentation for available filter parameters: \url{https://hubeau.eaufrance.fr/page/api-prelevements-eau#/prelevements/chronique} #' #' @param params [list] where the keys are the names of the filtered parameters and the values are the values of the filters. See the API documentation for the complete list of available filter parameters -#' @inheritParams getCookie +#' @param cfg a [config] object Configuration of the communication. Use by default the internal package +#' configuration #' #' @return a [tibble::tibble] with all available parameters in columns and one row by device, year and usage. #' @export #' #' @examples #' # For retrieving the withdrawal time series of the devices located in Romilly-sur-Seine -#' get_chronique(list(code_commune_insee = "10323")) +#' get_prelevements_chronique(list(code_commune_insee = "10323")) #' -get_chronique <- function(params, cfg = config::get(file = system.file("config.yml", - package = "bnpe"))) { +get_prelevements_chronique <- function(params, cfg = config::get(file = system.file("config.yml", + package = "hubeau"))) { l <- doApiQuery(cfg$api_prelevements$chronique, params) l <- lapply(l, function(x) { x$geometry <- NULL diff --git a/R/get_points_prelevement.R b/R/get_prelevements_prelevement.R similarity index 73% rename from R/get_points_prelevement.R rename to R/get_prelevements_prelevement.R index 3092a6d..8b274db 100644 --- a/R/get_points_prelevement.R +++ b/R/get_prelevements_prelevement.R @@ -3,17 +3,18 @@ #' See the API documentation for available filter parameters: \url{https://hubeau.eaufrance.fr/page/api-prelevements-eau#/prelevements/prelevement} #' #' @param params [list] where the keys are the names of the filtered parameters and the values are the values of the filters. See the API documentation for the complete list of available filter parameters -#' @inheritParams getCookie +#' @param cfg a [config] object Configuration of the communication. Use by default the internal package +#' configuration #' #' @return a [tibble::tibble] with all available parameters in columns and one row by device. #' @export #' #' @examples #' # For retrieving the withdrawal points located in Romilly-sur-Seine -#' get_points_prelevement(list(code_commune_insee = "10323")) +#' get_prelevements_prelevement(list(code_commune_insee = "10323")) #' -get_points_prelevement <- function(params, cfg = config::get(file = system.file("config.yml", - package = "bnpe"))) { +get_prelevements_prelevement <- function(params, cfg = config::get(file = system.file("config.yml", + package = "hubeau"))) { l <- doApiQuery(cfg$api_prelevements$points_prelevement, params) l <- lapply(l, function(row) {lapply(row, function(cell) { if(is.null(unlist(cell))) NA else unlist(cell) })}) return(purrr::map_df(l, tibble::as_tibble)) diff --git a/README.Rmd b/README.Rmd index 34710d7..c51a711 100644 --- a/README.Rmd +++ b/README.Rmd @@ -13,38 +13,36 @@ knitr::opts_chunk$set( ) ``` -# bnpe +# hubeau <!-- badges: start --> `r badger::badge_license(color = "orange")` `r badger::badge_lifecycle("experimental", color = "blue")` <!-- badges: end --> -'bnpe' is an R-package proposing a collection of function to help retrieve the French national data bank of quantitative withdrawals (Banque Nationale des Prélèvements quantitatifs en Eau - BNPE) available on its website https://bnpe.eaufrance.fr and on https://hubeau.eaufrance.fr/page/api-prelevements-eau +'hubeau' is an R-package proposing a collection of function to help retrieve the French national data bank of quantitative withdrawals (Banque Nationale des Prélèvements quantitatifs en Eau - BNPE) available on its website https://hubeau.eaufrance.fr and on https://hubeau.eaufrance.fr/page/api-prelevements-eau ## Installation -You can install the bnpe R-package from it's development repository with: +You can install the hubeau R-package from it's development repository with: ``` r install.packages("remotes") -remotes::install_gitlab("in-wop/bnpe", host = "gitlab.irstea.fr") +remotes::install_gitlab("in-wop/hubeau", host = "gitlab.irstea.fr") ``` -## Get started - -### Loading library +## Loading library ```{r library} -library(bnpe) +library(hubeau) ``` -### Loading data from the Hub'Eau API +## Loading data from the Hub'Eau API Two functions are available: -- `get_points_prelevement`: retrieve data about abstraction points -- `get_chronique`: retrieve annual volume time series and characteristics +- `get_prelevements_prelevement`: retrieve data about abstraction points +- `get_prelevements_chronique`: retrieve annual volume time series and characteristics The available filters for these functions are detailed in the API documentation respectively: https://hubeau.eaufrance.fr/page/api-prelevements-eau#/prelevements/prelevement and https://hubeau.eaufrance.fr/page/api-prelevements-eau#/prelevements/chronique @@ -52,56 +50,14 @@ Examples: ```{r} # Characteristics of surface abstraction points in the Ardennes departement -pp08 <- get_points_prelevement(list(code_departement = "08", code_type_milieu = "CONT")) +pp08 <- get_prelevements_prelevement(list(code_departement = "08", code_type_milieu = "CONT")) str(pp08) # Time series of annual abstracted volumes for drinking water supply from surface water in the Ardennes departement # As the parameter "source of the water" (ground, surface...) is not available here, we can use the list of abstraction points previously downloaded as filter: -dfAEP <- get_chronique(list(code_ouvrage = paste(pp08$code_ouvrage, collapse = ","), +dfAEP <- get_prelevements_chronique(list(code_ouvrage = paste(pp08$code_ouvrage, collapse = ","), code_usage = "AEP")) str(dfAEP) ``` -### Scrapping aggregated data from the BNPE website - -Functions for getting time series are: - -- `getTimeSeriesDep`: for one department -- `getTimeSeriesCom`: for one commune - -These functions uses the French official geographical codification (https://fr.wikipedia.org/wiki/Code_officiel_g%C3%A9ographique). - -Type `?getTimeSeriesCom` for getting help. - -Examples: - -```{r timeseries} -# Time series for all type of withdrawal sources and destinations in the Ardennes departement -getTimeSeriesDep("08") - -# Time series for drinking water withdrawals in surface water bodies in the Ardennes department -getTimeSeriesDep("08", code_usage = "AEP", code_type_eau = "CONT") - -# Withdrawal time series for the commune of Charleville-Mézières -getTimeSeriesCom("08105") -``` - -### Communal data in one departement - -For getting list of communes of departement with corresponding withdrawal volumes for one year, use the function `getComSeriesDep` as follow: - -```{r} -# All source and destination withdrawals for the year 2016 in the Ardennes departement -getComSeriesDep("08", 2016, code_usage = "AEP", code_type_eau = "CONT") -``` - -### Properties and time series from one device ("ouvrage") - -For getting metadata and withdrawal yearly time series from on device identified by its "code Sandre" (See https://www.sandre.eaufrance.fr/atlas/srv/fre/catalog.search#/metadata/e315633f-0930-41e8-a1c4-61fb2303039c): - -```{r} -# metadata and timeseries from withdrawal "COPRIMANCHE-forage LD LE PACO (40m)" -ouvrage <- getOuvrageSeries("OPR0000200109") -str(ouvrage) -``` diff --git a/README.md b/README.md index 5e5a9be..46f6095 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ <!-- README.md is generated from README.Rmd. Please edit that file --> -# bnpe +# hubeau <!-- badges: start --> @@ -10,36 +10,35 @@ MIT](https://img.shields.io/badge/license-MIT-orange.svg)](https://cran.r-projec [](https://lifecycle.r-lib.org/articles/stages.html#experimental) <!-- badges: end --> -‘bnpe’ is an R-package proposing a collection of function to help +‘hubeau’ is an R-package proposing a collection of function to help retrieve the French national data bank of quantitative withdrawals (Banque Nationale des Prélèvements quantitatifs en Eau - BNPE) available -on its website <https://bnpe.eaufrance.fr> and on +on its website <https://hubeau.eaufrance.fr> and on <https://hubeau.eaufrance.fr/page/api-prelevements-eau> ## Installation -You can install the bnpe R-package from it’s development repository +You can install the hubeau R-package from it’s development repository with: ``` r install.packages("remotes") -remotes::install_gitlab("in-wop/bnpe", host = "gitlab.irstea.fr") +remotes::install_gitlab("in-wop/hubeau", host = "gitlab.irstea.fr") ``` -## Get started - -### Loading library +## Loading library ``` r -library(bnpe) +library(hubeau) ``` -### Loading data from the Hub’Eau API +## Loading data from the Hub’Eau API Two functions are available: -- `get_points_prelevement`: retrieve data about abstraction points -- `get_chronique`: retrieve annual volume time series and +- `get_prelevements_prelevement`: retrieve data about abstraction + points +- `get_prelevements_chronique`: retrieve annual volume time series and characteristics The available filters for these functions are detailed in the API @@ -52,7 +51,7 @@ Examples: ``` r # Characteristics of surface abstraction points in the Ardennes departement -pp08 <- get_points_prelevement(list(code_departement = "08", code_type_milieu = "CONT")) +pp08 <- get_prelevements_prelevement(list(code_departement = "08", code_type_milieu = "CONT")) str(pp08) #> tibble [85 x 28] (S3: tbl_df/tbl/data.frame) #> $ code_point_prelevement : chr [1:85] "PTP000000000005792" "PTP000000000005793" "PTP000000000005794" "PTP000000000005795" ... @@ -86,7 +85,7 @@ str(pp08) # Time series of annual abstracted volumes for drinking water supply from surface water in the Ardennes departement # As the parameter "source of the water" (ground, surface...) is not available here, we can use the list of abstraction points previously downloaded as filter: -dfAEP <- get_chronique(list(code_ouvrage = paste(pp08$code_ouvrage, collapse = ","), +dfAEP <- get_prelevements_chronique(list(code_ouvrage = paste(pp08$code_ouvrage, collapse = ","), code_usage = "AEP")) str(dfAEP) #> tibble [40 x 23] (S3: tbl_df/tbl/data.frame) @@ -114,115 +113,3 @@ str(dfAEP) #> $ nom_ouvrage : chr [1:40] "COMMUNE DE GIVET" "COMMUNE DE GIVET" "COMMUNE DE GIVET" "COMMUNE DE GIVET" ... #> $ uri_ouvrage : chr [1:40] "https://id.eaufrance.fr/OuvragePrel/OPR0000000767" "https://id.eaufrance.fr/OuvragePrel/OPR0000000767" "https://id.eaufrance.fr/OuvragePrel/OPR0000000767" "https://id.eaufrance.fr/OuvragePrel/OPR0000000767" ... ``` - -### Scrapping aggregated data from the BNPE website - -Functions for getting time series are: - -- `getTimeSeriesDep`: for one department -- `getTimeSeriesCom`: for one commune - -These functions uses the French official geographical codification -(<https://fr.wikipedia.org/wiki/Code_officiel_g%C3%A9ographique>). - -Type `?getTimeSeriesCom` for getting help. - -Examples: - -``` r -# Time series for all type of withdrawal sources and destinations in the Ardennes departement -getTimeSeriesDep("08") -#> volume annee peuplement -#> [1,] NULL "2008" "2" -#> [2,] NULL "2009" "2" -#> [3,] NULL "2010" "2" -#> [4,] NULL "2011" "2" -#> [5,] 750878007 "2012" "1" -#> [6,] 1070936432 "2013" "1" -#> [7,] 930232502 "2014" "1" -#> [8,] 918264038 "2015" "1" -#> [9,] 899230351 "2016" "1" -#> [10,] 790975515 "2017" "1" -#> [11,] 324131543 "2018" "1" -#> [12,] 163293169 "2019" "3" - -# Time series for drinking water withdrawals in surface water bodies in the Ardennes department -getTimeSeriesDep("08", code_usage = "AEP", code_type_eau = "CONT") -#> volume annee peuplement -#> [1,] NULL "2008" "2" -#> [2,] NULL "2009" "2" -#> [3,] NULL "2010" "2" -#> [4,] NULL "2011" "2" -#> [5,] 506356 "2012" "1" -#> [6,] 479622 "2013" "1" -#> [7,] 599626 "2014" "1" -#> [8,] 631363 "2015" "1" -#> [9,] 581305 "2016" "1" -#> [10,] 1134831 "2017" "1" -#> [11,] 504790 "2018" "1" -#> [12,] 380556 "2019" "3" - -# Withdrawal time series for the commune of Charleville-Mézières -getTimeSeriesCom("08105") -#> volume annee peuplement -#> [1,] NULL "2008" "2" -#> [2,] NULL "2009" "2" -#> [3,] NULL "2010" "2" -#> [4,] NULL "2011" "2" -#> [5,] 55898 "2012" "1" -#> [6,] 15359 "2013" "1" -#> [7,] 79086 "2014" "1" -#> [8,] 100624 "2015" "1" -#> [9,] 16359 "2016" "1" -#> [10,] 17162 "2017" "1" -#> [11,] 67910 "2018" "1" -#> [12,] 512130 "2019" "1" -``` - -### Communal data in one departement - -For getting list of communes of departement with corresponding -withdrawal volumes for one year, use the function `getComSeriesDep` as -follow: - -``` r -# All source and destination withdrawals for the year 2016 in the Ardennes departement -getComSeriesDep("08", 2016, code_usage = "AEP", code_type_eau = "CONT") -#> insee_com volume -#> 1 08096 33024 -#> 2 08135 13583 -#> 3 08247 439424 -#> 4 08420 95274 -``` - -### Properties and time series from one device (“ouvrageâ€) - -For getting metadata and withdrawal yearly time series from on device -identified by its “code Sandre†(See -<https://www.sandre.eaufrance.fr/atlas/srv/fre/catalog.search#/metadata/e315633f-0930-41e8-a1c4-61fb2303039c>): - -``` r -# metadata and timeseries from withdrawal "COPRIMANCHE-forage LD LE PACO (40m)" -ouvrage <- getOuvrageSeries("OPR0000200109") -str(ouvrage) -#> List of 12 -#> $ id : int 200108 -#> $ code : chr "OPR0000200109" -#> $ codeCommune : chr "50151" -#> $ codePrecision : int 1 -#> $ codeStatut : chr "Validé" -#> $ codeTypeEau : chr "SOUT" -#> $ codeUsage : chr "4" -#> $ commentaire : chr "" -#> $ exploitationDebut: Date[1:1], format: "1987-01-01" -#> $ geom :List of 2 -#> ..$ type : chr "Point" -#> ..$ coordinates:List of 2 -#> .. ..$ : num -1.58 -#> .. ..$ : num 49.2 -#> $ ouvNom : chr "COPRIMANCHE-forage LD LE PACO (40m)" -#> $ TS :'data.frame': 6 obs. of 3 variables: -#> ..$ annee : chr [1:6] "2013" "2014" "2015" "2016" ... -#> ..$ volume : int [1:6] 101970 84430 85220 87820 106219 118124 -#> ..$ peuplement: chr [1:6] "1" "1" "1" "1" ... -``` diff --git a/_pkgdown.yml b/_pkgdown.yml index 1ac320b..4a5c656 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,4 +1,4 @@ -url: https://in-wop.g-eau.fr/bnpe +url: https://in-wop.g-eau.fr/hubeau development: mode: unreleased @@ -13,10 +13,10 @@ navbar: github: ~ gitlab: icon: fab fa-gitlab fa-lg - href: https://gitlab.irstea.fr/in-wop/bnpe + href: https://gitlab.irstea.fr/in-wop/hubeau repo: url: - home: https://gitlab.irstea.fr/in-wop/bnpe/ - source: https://gitlab.irstea.fr/in-wop/bnpe/-/blob/master/ - issue: https://gitlab.irstea.fr/in-wop/bnpe/-/issues/ + home: https://gitlab.irstea.fr/in-wop/hubeau/ + source: https://gitlab.irstea.fr/in-wop/hubeau/-/blob/master/ + issue: https://gitlab.irstea.fr/in-wop/hubeau/-/issues/ diff --git a/bnpe.Rproj b/hubeau.Rproj similarity index 100% rename from bnpe.Rproj rename to hubeau.Rproj diff --git a/man/doQuery.Rd b/man/doQuery.Rd deleted file mode 100644 index 0ad7f03..0000000 --- a/man/doQuery.Rd +++ /dev/null @@ -1,30 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/doQuery.R -\name{doQuery} -\alias{doQuery} -\title{Internal function for doing the queries for the bnpe package} -\usage{ -doQuery( - url_path, - params = list(code_usage = NULL, code_type_eau = NULL, commune_adj = NULL, ecrasant = - "false"), - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg) -) -} -\arguments{ -\item{url_path}{the end of the URL path} - -\item{params}{A list containing the parameters sent in the query} - -\item{cfg}{a \link{config} object Configuration of the communication. Use by default the internal package -configuration stored at location \code{system.file("config.yml", package = "bnpe")}} - -\item{cookie}{a named \link{character} \link{vector} with the values of the cookies (See \link{getCookie})} -} -\value{ -a \link[httr:response]{httr::response} object from a \link[httr:GET]{httr::GET} -} -\description{ -Internal function for doing the queries for the bnpe package -} diff --git a/man/figures/logo.svg b/man/figures/logo.svg new file mode 100644 index 0000000..03f462c --- /dev/null +++ b/man/figures/logo.svg @@ -0,0 +1,66 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="171.865" height="88.512" viewBox="0 0 171.865 88.512"> + <defs> + <filter id="Tracé_1" x="0" y="12.523" width="66.782" height="75.99" filterUnits="userSpaceOnUse"> + <feOffset dy="3" input="SourceAlpha"/> + <feGaussianBlur stdDeviation="3" result="blur"/> + <feFlood flood-opacity="0.161"/> + <feComposite operator="in" in2="blur"/> + <feComposite in="SourceGraphic"/> + </filter> + <filter id="Tracé_2" x="69.293" y="11.309" width="24.756" height="28.951" filterUnits="userSpaceOnUse"> + <feOffset dy="3" input="SourceAlpha"/> + <feGaussianBlur stdDeviation="3" result="blur-2"/> + <feFlood flood-opacity="0.161"/> + <feComposite operator="in" in2="blur-2"/> + <feComposite in="SourceGraphic"/> + </filter> + <filter id="Tracé_3" x="16.634" y="0" width="65.561" height="64.799" filterUnits="userSpaceOnUse"> + <feOffset dy="3" input="SourceAlpha"/> + <feGaussianBlur stdDeviation="3" result="blur-3"/> + <feFlood flood-opacity="0.161"/> + <feComposite operator="in" in2="blur-3"/> + <feComposite in="SourceGraphic"/> + </filter> + <filter id="Tracé_4" x="79.737" y="22.855" width="40.853" height="41.767" filterUnits="userSpaceOnUse"> + <feOffset dy="3" input="SourceAlpha"/> + <feGaussianBlur stdDeviation="3" result="blur-4"/> + <feFlood flood-opacity="0.161"/> + <feComposite operator="in" in2="blur-4"/> + <feComposite in="SourceGraphic"/> + </filter> + <filter id="Tracé_5" x="105.169" y="22.855" width="40.853" height="41.767" filterUnits="userSpaceOnUse"> + <feOffset dy="3" input="SourceAlpha"/> + <feGaussianBlur stdDeviation="3" result="blur-5"/> + <feFlood flood-opacity="0.161"/> + <feComposite operator="in" in2="blur-5"/> + <feComposite in="SourceGraphic"/> + </filter> + <filter id="Tracé_6" x="133.523" y="23.221" width="38.342" height="41.401" filterUnits="userSpaceOnUse"> + <feOffset dy="3" input="SourceAlpha"/> + <feGaussianBlur stdDeviation="3" result="blur-6"/> + <feFlood flood-opacity="0.161"/> + <feComposite operator="in" in2="blur-6"/> + <feComposite in="SourceGraphic"/> + </filter> + </defs> + <g id="Groupe_1" data-name="Groupe 1" transform="translate(9 6)"> + <g transform="matrix(1, 0, 0, 1, -9, -6)" filter="url(#Tracé_1)"> + <path id="Tracé_1-2" data-name="Tracé 1" d="M46.075,70.817a2,2,0,0,0-2.65,0l-4.831,4.832a1.743,1.743,0,1,0,2.466,2.466L43.1,76.076V80.2c-.093.836-1.065,7.787-7.554,7.787-7.341,0-7.773-7.625-7.774-7.7V56.966l-.007-.16c-.352-3.814-3.111-11.028-11.035-11.028a10.2,10.2,0,0,0-7.773,3.309V35.224a1.743,1.743,0,0,0-3.486,0V66.319a4.577,4.577,0,1,0,3.486,0V57.078c.122-.892,1.278-7.812,7.773-7.812,6.453,0,7.46,6.977,7.556,7.794V80.285c0,2.363,1.911,11.186,11.261,11.186,7.922,0,10.681-7.212,11.034-11.026l0-4.189,1.858,1.859a1.744,1.744,0,0,0,2.466-2.466Z" transform="translate(6.37 -14.96)" fill="#0C72B9"/> + </g> + <g transform="matrix(1, 0, 0, 1, -9, -6)" filter="url(#Tracé_2)"> + <path id="Tracé_2-2" data-name="Tracé 2" d="M175.4,30.788a2.768,2.768,0,0,0-2.144-.051,2.7,2.7,0,0,0-1.614,1.41,2.636,2.636,0,0,0-.13,2.086,2.512,2.512,0,0,0,.966,1.311,14.844,14.844,0,0,1-.758,2.079,7.618,7.618,0,0,1-1.083,1.795,1.5,1.5,0,0,0-.414.85A1.041,1.041,0,0,0,170.4,41a1.236,1.236,0,0,0,.633.433,1.406,1.406,0,0,0,.923-.034,4.927,4.927,0,0,0,1.648-1.222,13.324,13.324,0,0,0,1.832-2.336,12.125,12.125,0,0,0,1.3-2.8,4.147,4.147,0,0,0,.057-2.63A2.633,2.633,0,0,0,175.4,30.788Z" transform="translate(-91.93 -13.24)" fill="#0C72B9"/> + </g> + <g transform="matrix(1, 0, 0, 1, -9, -6)" filter="url(#Tracé_3)"> + <path id="Tracé_3-2" data-name="Tracé 3" d="M78.558,26.263a11.828,11.828,0,0,0-8.406,3.5V14.383l-.012-.2c-.438-3.8-3.354-10.988-11.249-10.988-7.922,0-10.682,7.213-11.034,11.028l0,1.6L45.84,13.812a1.744,1.744,0,0,0-2.466,2.466l4.831,4.832a1.738,1.738,0,0,0,1.233.511c.031,0,.061-.007.092-.009s.061.009.092.009a1.737,1.737,0,0,0,1.233-.511l4.831-4.832a1.744,1.744,0,0,0-2.466-2.466L51.337,15.7V14.471c.093-.837,1.065-7.79,7.554-7.79,6.443,0,7.645,6.916,7.774,7.815V37.7a1.744,1.744,0,0,0,.03.3c0,.045,0,.088,0,.133A11.866,11.866,0,1,0,78.558,26.263Zm0,20.243a8.378,8.378,0,1,1,8.38-8.376A8.387,8.387,0,0,1,78.558,46.507Z" transform="translate(-17.23 2.81)" fill="#0C72B9"/> + </g> + <g transform="matrix(1, 0, 0, 1, -9, -6)" filter="url(#Tracé_4)"> + <path id="Tracé_4-2" data-name="Tracé 4" d="M206.906,58.47a10.994,10.994,0,0,0-8.386,3.458,12.04,12.04,0,0,0-3.041,8.425,11.836,11.836,0,0,0,3.179,8.427,11.19,11.19,0,0,0,8.476,3.457A11,11,0,0,0,213.84,80.3a11.172,11.172,0,0,0,3.8-5.068l.054-.14h-3.957l-.029.055a6.837,6.837,0,0,1-6.529,3.78,7.657,7.657,0,0,1-5.5-2.071,8.194,8.194,0,0,1-2.466-5.028h19.117V70.353a12.04,12.04,0,0,0-3.041-8.426A10.994,10.994,0,0,0,206.906,58.47Zm0,3.312a7.489,7.489,0,0,1,5.226,1.936,8.015,8.015,0,0,1,2.416,4.706H199.265a8.009,8.009,0,0,1,2.415-4.706A7.489,7.489,0,0,1,206.906,61.782Z" transform="translate(-106.74 -29.61)" fill="#0C72B9"/> + </g> + <g transform="matrix(1, 0, 0, 1, -9, -6)" filter="url(#Tracé_5)"> + <path id="Tracé_5-2" data-name="Tracé 5" d="M276.208,62.312a9.187,9.187,0,0,0-7.842-3.842,10.757,10.757,0,0,0-8.341,3.459,13.193,13.193,0,0,0,0,16.849,10.492,10.492,0,0,0,8.113,3.458,9.4,9.4,0,0,0,8.069-3.8v3.43h3.631V58.836h-3.631Zm-7.613,16.613a7.513,7.513,0,0,1-5.858-2.522,9.692,9.692,0,0,1,0-12.1,7.516,7.516,0,0,1,5.858-2.523A7.162,7.162,0,0,1,274.36,64.3a10.035,10.035,0,0,1,0,12.1A7.159,7.159,0,0,1,268.594,78.925Z" transform="translate(-142.82 -29.61)" fill="#0C72B9"/> + </g> + <g transform="matrix(1, 0, 0, 1, -9, -6)" filter="url(#Tracé_6)"> + <path id="Tracé_6-2" data-name="Tracé 6" d="M342.27,59.354V72.607a6.648,6.648,0,0,1-1.977,4.948,6.744,6.744,0,0,1-4.814,1.889,6,6,0,0,1-4.537-1.84,6.918,6.918,0,0,1-1.752-4.951v-13.3h-3.631v13.39a9.986,9.986,0,0,0,2.86,7.423,8.093,8.093,0,0,0,2.913,1.943,11,11,0,0,0,3.964.646,7.5,7.5,0,0,0,4.12-1.158,11.633,11.633,0,0,0,2.855-2.569V82.39H345.9V59.354Z" transform="translate(-183.04 -30.13)" fill="#0C72B9"/> + </g> + </g> +</svg> diff --git a/man/getComSeriesDep.Rd b/man/getComSeriesDep.Rd deleted file mode 100644 index 5ac90e0..0000000 --- a/man/getComSeriesDep.Rd +++ /dev/null @@ -1,47 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/getComSeries.R -\name{getComSeriesDep} -\alias{getComSeriesDep} -\title{Retrieve data by commune for one departement and one year} -\usage{ -getComSeriesDep( - code_dep, - year, - code_usage = NULL, - code_type_eau = NULL, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg) -) -} -\arguments{ -\item{code_dep}{\link{character} of length 2} - -\item{year}{\link{numeric} Year of the data to retrieve} - -\item{code_usage}{a \code{\link[=character]{character()}} representing the withdrawal destination which can take the following values: -- "ENE" for energy -- "CAN" for artificial canals -- "BAR" for turbined water (dam) -- "AEP" for drinking water -- "IND" for industry -- "IRR" for irrigation} - -\item{code_type_eau}{a \code{\link[=character]{character()}} representing the withdrawal source which can take the following values: -- "CONT" for continental surface -- "SOUT" for subsurface -- "LIT" for littoral} - -\item{cfg}{a \link{config} object Configuration of the communication. Use by default the internal package -configuration stored at location \code{system.file("config.yml", package = "bnpe")}} - -\item{cookie}{a named \link{character} \link{vector} with the values of the cookies (See \link{getCookie})} -} -\value{ -\link{data.frame} with one row by commune and two columns: "insee_com" and "volume" -} -\description{ -Retrieve data by commune for one departement and one year -} -\examples{ -getComSeriesDep("08", 2016, code_usage = "AEP", code_type_eau = "CONT") -} diff --git a/man/getCookie.Rd b/man/getCookie.Rd deleted file mode 100644 index eacdf92..0000000 --- a/man/getCookie.Rd +++ /dev/null @@ -1,26 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/getCookie.R -\name{getCookie} -\alias{getCookie} -\title{Get cookie from the BNPE website in order to be able to do requests} -\usage{ -getCookie( - cfg = config::get(file = system.file("config.yml", package = "bnpe")) -) -} -\arguments{ -\item{cfg}{a \link{config} object Configuration of the communication. Use by default the internal package -configuration stored at location \code{system.file("config.yml", package = "bnpe")}} -} -\value{ -a named \link{character} \link{vector} with the values of the cookies -} -\description{ -By default it is automatically called at each request but this function -can be used once to store a unique cookie and avoiding asking a cookie for each request (See example). -} -\examples{ -cookie <- getCookie() -getTimeSeriesDep("08", cookie = cookie) -getTimeSeriesCom("08105", cookie = cookie) -} diff --git a/man/getOuvrageSeries.Rd b/man/getOuvrageSeries.Rd deleted file mode 100644 index 17f3ed8..0000000 --- a/man/getOuvrageSeries.Rd +++ /dev/null @@ -1,43 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/getOuvrageSeries.R -\name{getOuvrageSeries} -\alias{getOuvrageSeries} -\title{Retrieve data by device ("ouvrage") (metadata and annual withdrawal volumes)} -\usage{ -getOuvrageSeries( - code_sandre, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg) -) -} -\arguments{ -\item{code_sandre}{\link{character} Sandre identifier of the device} - -\item{cfg}{a \link{config} object Configuration of the communication. Use by default the internal package -configuration stored at location \code{system.file("config.yml", package = "bnpe")}} - -\item{cookie}{a named \link{character} \link{vector} with the values of the cookies (See \link{getCookie})} -} -\value{ -\link{list} compiling data of the device with the following items: -\itemize{ -\item \code{id}: BNPE identifier -\item \code{code}: code Sandre -\item \code{codeCommune}: insee code of the commune -\item \code{codePrecision}: ??? -\item \code{codeStatut}: ??? -\item \code{codeTypeEau}: the withdrawal source which can take the following values: -- "CONT" for continental surface -- "SOUT" for subsurface -- "LIT" for littoral -\item \code{codeUsage}: a numeric code related to water destination: energy, canals, turbined, AEP, industry or irrigation -\item \code{commentaire}: comment -\item \code{exploitationDebut}: start date of the -} -} -\description{ -Retrieve data by device ("ouvrage") (metadata and annual withdrawal volumes) -} -\examples{ -getOuvrageSeries("OPR0000200109") -} diff --git a/man/getTimeSeries.Rd b/man/getTimeSeries.Rd deleted file mode 100644 index eab579d..0000000 --- a/man/getTimeSeries.Rd +++ /dev/null @@ -1,63 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/getTimeSeries.R -\name{getTimeSeriesCom} -\alias{getTimeSeriesCom} -\alias{getTimeSeriesDep} -\title{Get withdrawal time series for a geographical entity} -\usage{ -getTimeSeriesCom( - insee_com, - code_usage = NULL, - code_type_eau = NULL, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg) -) - -getTimeSeriesDep( - insee_dep, - code_usage = NULL, - code_type_eau = NULL, - cfg = config::get(file = system.file("config.yml", package = "bnpe")), - cookie = getCookie(cfg) -) -} -\arguments{ -\item{insee_com}{a \link{character} of length 5 representing the INSEE code of the commune} - -\item{code_usage}{a \code{\link[=character]{character()}} representing the withdrawal destination which can take the following values: -- "ENE" for energy -- "CAN" for artificial canals -- "BAR" for turbined water (dam) -- "AEP" for drinking water -- "IND" for industry -- "IRR" for irrigation} - -\item{code_type_eau}{a \code{\link[=character]{character()}} representing the withdrawal source which can take the following values: -- "CONT" for continental surface -- "SOUT" for subsurface -- "LIT" for littoral} - -\item{cfg}{a \link{config} object Configuration of the communication. Use by default the internal package -configuration stored at location \code{system.file("config.yml", package = "bnpe")}} - -\item{cookie}{a named \link{character} \link{vector} with the values of the cookies (See \link{getCookie})} - -\item{insee_dep}{a \link{character} of length 2 representing the INSEE code of the commune} -} -\value{ -a \link{data.frame} with one year by row and the following columns: -- "volume" the withdrawal annual volume in cubic meters -- "annee" the year -- "peuplement" a unknown code -} -\description{ -Get withdrawal time series for a geographical entity -} -\examples{ -# Withdrawal time series for Ardennes department -getTimeSeriesDep("08") - -# Withdrawal time series for the commune of Charleville-Mézières -getTimeSeriesCom("08105") - -} diff --git a/man/get_chronique.Rd b/man/get_prelevements_chronique.Rd similarity index 71% rename from man/get_chronique.Rd rename to man/get_prelevements_chronique.Rd index b63c22c..588ffeb 100644 --- a/man/get_chronique.Rd +++ b/man/get_prelevements_chronique.Rd @@ -1,28 +1,28 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/get_chronique.R -\name{get_chronique} -\alias{get_chronique} +% Please edit documentation in R/get_prelevements_chronique.R +\name{get_prelevements_chronique} +\alias{get_prelevements_chronique} \title{Retrieve time series of withdrawals from Hub'Eau API} \usage{ -get_chronique( +get_prelevements_chronique( params, - cfg = config::get(file = system.file("config.yml", package = "bnpe")) + cfg = config::get(file = system.file("config.yml", package = "hubeau")) ) } \arguments{ \item{params}{\link{list} where the keys are the names of the filtered parameters and the values are the values of the filters. See the API documentation for the complete list of available filter parameters} \item{cfg}{a \link{config} object Configuration of the communication. Use by default the internal package -configuration stored at location \code{system.file("config.yml", package = "bnpe")}} +configuration} } \value{ a \link[tibble:tibble]{tibble::tibble} with all available parameters in columns and one row by device, year and usage. } \description{ -See the API documentation for available filter parameters: \url{https://hubeau.eaufrance.fr/page/api-prelevements-eau} +See the API documentation for available filter parameters: \url{https://hubeau.eaufrance.fr/page/api-prelevements-eau#/prelevements/chronique} } \examples{ # For retrieving the withdrawal time series of the devices located in Romilly-sur-Seine -get_chronique(list(code_commune_insee = "10323")) +get_prelevements_chronique(list(code_commune_insee = "10323")) } diff --git a/man/get_points_prelevement.Rd b/man/get_prelevements_prelevement.Rd similarity index 69% rename from man/get_points_prelevement.Rd rename to man/get_prelevements_prelevement.Rd index 1f2eec6..63f6390 100644 --- a/man/get_points_prelevement.Rd +++ b/man/get_prelevements_prelevement.Rd @@ -1,28 +1,28 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/get_points_prelevement.R -\name{get_points_prelevement} -\alias{get_points_prelevement} +% Please edit documentation in R/get_prelevements_prelevement.R +\name{get_prelevements_prelevement} +\alias{get_prelevements_prelevement} \title{Retrieve withdrawal points from Hub'Eau API} \usage{ -get_points_prelevement( +get_prelevements_prelevement( params, - cfg = config::get(file = system.file("config.yml", package = "bnpe")) + cfg = config::get(file = system.file("config.yml", package = "hubeau")) ) } \arguments{ \item{params}{\link{list} where the keys are the names of the filtered parameters and the values are the values of the filters. See the API documentation for the complete list of available filter parameters} \item{cfg}{a \link{config} object Configuration of the communication. Use by default the internal package -configuration stored at location \code{system.file("config.yml", package = "bnpe")}} +configuration} } \value{ a \link[tibble:tibble]{tibble::tibble} with all available parameters in columns and one row by device. } \description{ -See the API documentation for available filter parameters: \url{https://hubeau.eaufrance.fr/page/api-prelevements-eau} +See the API documentation for available filter parameters: \url{https://hubeau.eaufrance.fr/page/api-prelevements-eau#/prelevements/prelevement} } \examples{ # For retrieving the withdrawal points located in Romilly-sur-Seine -get_points_prelevement(list(code_commune_insee = "10323")) +get_prelevements_prelevement(list(code_commune_insee = "10323")) } diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..70a6700a5e790bac155c17e95f1db215712adf06 GIT binary patch literal 6298 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 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-152x152.png b/pkgdown/favicon/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..ceeeb17018697bb11f5f7cab6135600a28dffbdd GIT binary patch literal 8201 zcmb_hRZtv2lU^W5f?Kcvi@RHJcZURbSlr!$g%I4`Wr5%h!2`kF39>8+?#^Nh$N#_F z)4g3y&2&vqb@x=yRQ1>0Q5tIUnD0p60RR9@MFknHSDN{siH7pJ688hCUdbC9NmWSz zpdkVM$sGB0542R!QUw6~=>dR{Z~)-pl@+oN0C;f%0EcD(fY7S~BG=pwO_A3F6bof} z8NkbbMqzh($}0!eQ&CkGbq5Uzg_sr(bKq40MWv#Q<R{<NlRUpng2DSc@kNNoabqXz z@)$MC2vs>^aYz*HERJNcT!}Bx*G%P{pF;6EW;W5bSPmZ_JC;$tn0P^92B*&U(;G=# z841Dd#2gUOZGK+X=>vRrURYFAw5h3{@mZ^2FU!XJ!MCd8u%@zY!@r7%;N3T=A`Qm> zM{;+GV_I^(qnoQch;aUyDO13>0{JqW@3<I1CyJQKHM)ykQvIa6zUN<RYf97e4jI4J zCFbpXG!r{{ymcUY(GBt{BK?S{LVL2_Hd}+oB!l|~`Rssbd>E7LBk4JaCDT^vYT$}5 z!uXmz_M8ok3vXoFRb6l{TOPbCNzrS@rZn246PWdGmoWo}!Q{s{E|F;j#T}o<zxFAm zK!=L&JHs+$&YQE8J<3|6xe5O`cgD3iLpxy|w*^FI;S?yVE9D?U>nCFi%$P{NQz=`N zP*-fkzuGg`R1%zSka8J&4)fKY2^vbbEt}&SoNexkwSoQsr&V$6f5ZTAOLnEPw%<`w z+e%|K)lN?eee2#&9u8U~Umht>1)~=i@0#w^-j`->x4ii+COTn^+1_y84?A=F+`wOj zJkHYl<w(F9)l`?Rh~DRIr%LZIQC52KH61y<mQCr0;JPrgJ40X?nj5d5tZDuA3MlZ# z`MoU92YX~?W};tyup7EMTjt1CiQEXd56@LJa#Y|?Oqi96)sPu%Rb6m*t#p3~M?%_` z{G<D(a^OS3LtO`eaAg+DL`Lq7$r?-V9RUsqptsAs)P2RRXgG$bGChn)yQV8!@rN6o z$!9IOMKbkTgv+hqa1hH9>suHdq5X9YN{P#;v_PSD0;j<yxU9+|>E#kSd^-aV2ZFxx z&84xZX^p-?FAt6&3>J6up^&??GKU3@USmyqfCUI-r-*A<IrI@SL>EI_^U6c^<ze`g zAb6+pY;%58lN&YP_|NkMhM9^zRS7y_@w~As@yC7|4nZU5M{ua#@5lX6N<iTO98_=? zuKx%{t4Is39}2o8iGLKk7UiS;7gzQ)e8RP!LMW@YU2LX`%q|CIl>nN;yE{Wbt2bH( zMgqZaq;fFA(THx!VWTiaC%iTpw1@!BKac#p-QocGYZDBS_~1HwU3=EXJlCWsh(}AQ z@iK7cPxMaGr&{H5qM6ofJYJ{j)KBgwPv8CSs!N;msbAD*)^V~}C#v$#m>=W)C2rxT zl<g0c5QX>k3XkulXtbIznc7z5Wpw+U%Bcr5qm(a493JQCccjws;{w&}cLcq&b{?F{ zzz$ib&Dh>|_Q`aBRqq}G)nJ?fz3|Ks+&h{K(Uo?>`NslaP8c1Fx)R#9aR`n8^?(;~ z(S_YIIOs^F;GF5^(M3`z;17N=c_hE;9<D4vL0?k(hG2K2IdR)@?op93t6Z&gN3Dsk zp3vqTyC2PoKo!dbz?JAa%LP_rO-<&LW*5zb&`2^YU&KcRzzy8z_$~%y>$JO%tidgd zx*e%$3!m5f=9fj37uC)ZQ)+GdQ&K@K-pJ?@DJ;)+=2;sehM8PhJMDyGR$82AGbN!a z?|-DmyHvIJFJ-#jA04lGv&^lgyUUF!+25{@@+?o4de^~vFmB^qDT!*w4J>_C@|bj- z^S-6#qzE?hHy$-j(%RHUe;5HpHm50c5X90WUum<ql`K%GS-;$2GPgceS1_bBCLbF6 zaP4*UYWG5&EJ2346P`~R*A|E@&IqApB@H9WUA$g(RTHVnI}#pEBUV-EwGS<6lXW4G zXpp&XL=Eq>5lm<gVyJqNL{m|97kS_7pA%s}9O=W7rK@9YwMvJ2B&8tc(pd|YkEB7U zul{_jC)$=a_7og#1UI98z1fk*Z?~|rt=oyUy_$~`-F{s4f4uV6EYD6x*BcFrc~L8^ zrabgid>w(I=L0gAiwmDcesu}A{>;};qFEteU1V20VSBPp*Z@k%kN%@g8-QF1D(#e8 z3I5Z0C=;<F>&VV9UY9L5UarD1a48H`I6<1|J)+A+TR)b*FIu;BEtJ00J*;zxVt_hr z3-^l3`4~)ZIiE}=9*7p$MLOnNiFHNiFr7^bD_UZjW#!<k;*mP+o$vmh)_C@-&I<G= zGf-+rGy5>oKI-5Ou}rjvzH|J|nf=VVv51i+i$yXep!-~03ZppIN@{b58)2%IeiRLP z%pIOi(=l676f$6oNWkWHok$9g@h?7*2g(4LsyHokDwv>*8+j&F0>PVUIVOx=kE|w- z@PdPdD<++%ruYZ=>E1}HIzr)BkeY8bxsx!q3^oSJEFo1t9!U<%N)(}~tkd8-_#*U- z%cs_koueXvXlUa-*wGc6WP*~EaFq*fcBw~M$0Doh2lNHO<=Ia-M?A#ijIFR4${CLK zH4?YNWC(wY#f|jW-S^*~`(hs?$$rfhV^ZqR51r6=`k5CzUgTnhqpK_ItA!szlr#Ng zjmrYCKlODffubyjNgH7!fl^Mqn!OzC%U!c04?bJ85EAFo{;Mwlu3NmsWXs`Qw>i3! zw?rn9WtgaLZ*Y{hr)97|&Hw%3by?kMQe5<)e-ahLZ;)l!4A<}F9D4Y+2*%!Xro(4~ zZc(yx3V-n8H!#DK`hZPPnwD86pkdT8^uY%T{lOF*L6VVCK6;VvvM1(x3;FtXM_ta= zGL-%2?`p?(&1j*Ty$RDPv*AOM=A%_y8cuQ<-NFd7=apZ=syB(I>j)6vH~UC3XyF{3 z;3r+9NEPyLmh_6Xc~I=hOe6xtwYNlhDAiXB7k$inQgXwmq?Rsc@|t_vrOp^gZnR+` zsSES)0X98xLm7Ba+dvr9IZ0UDi>SCD8T7l(OCkQ=8$15vu6^vLAa9LFSs~Ji1cv<l z_t`SvF0Yd(XyXNZPtR37*0XbRt*V3a&$OIpv1exz)R|d|3^lw-M4lqD$acsqTBu-Z zdoQ@J`AR1-*Qs1*Uw~to#C_@;abIUhNz({s7;y;29l1P30Cm#gK~x7{2+&%EVP%GH z)*sUf5RUbxL50ToDBU#S&;*gd=q3!S$V|#R#CHJ_3SL}9V9rbo3~*;aiSNOq5ka6D z)8gLS{=CdyT0igaxA7%Gv&ZfI^oEACwQ$jjj5a%w0ZA#GLV6yxz1B{`z_7mB30Q(w zBPw+iij#NzC>tERS#td(M^gUsl<@Sp@q+=g&fRb8dHzb+PKV_FghJM~oS}5&B(uRM zN+2i<q(jvlh*;FKADV<#!%#>wU>Clc%ISAXTbB321zw2?quNvXg(e0dV2B^ApHSy4 zL64FbpaKy<Y!h&WC?-FWPze<sY>haqVfuXKDLGXzH|$%V9OLKX<;G4@)E<fMOjVTX z(xe&JfZ_>!>vZpQTZd7~V#m^d4#?9lnz!)8`7(<H^N=|UHM$&l;d&f<r#|GN%YC3@ zQ9~By9A&CGu}`*;`jW;ro^f?w440{7Q+oV<AlewKCZ9l;DUMr2j!aNYroHdw9)~8v zt2#uzA?4O-(&&_g|LV}pu=uw2R2HSK3qS9gfXo+>=J+pb7OJ}6(Y<;Cq;)&Ug9ZD# zC_@=#BKyMMo#GO~53~gL9+cMOTrSt~IT3yMnKDw>qCUZs_*}Y1`Wax<phn!(TXeTE zzOM%}Cpy=^7{mGdKieYml(iqq;KhKMzwvgnkZi2@y2}p7cAiTA^yh@S+iU(*yR6+L zJ|2yA3NhF%A0RU=X>jJ#>3UD2r&2$O6T4{}zC?~j-OR#xif2AC?Xr~?KtsY@lXVSe z&uCfD6&)$gQg1vY9CmIzTWKmvPuQ!I<5_ZjMtUg%FN@kfpaCf%ci(b(A89DWU*N3K z+di!NZ;{j<*|US({{56~HWxxK=*mgsSf*p<)$d6ny<2u^)tWnUo@x)k_Hzn;yG_-6 zHi`vdN2G8XgPmVcg*nxJm${Bg6|Pvl(6%<YAXUX|W8##kztT>zsWl#}ST<3AnWq>) z%a14PTvlWbgB<;wGCT!|11Bj|f()$>yRBIrST{oDno;njXn2=YEpMubF88s6CsXhX zY=(B~&IblPd@Y`w9N~9T6Z_(BMg-YG$lX0|wdKWF)}wT4Ult4ePM3!DZlbj-OoY{c zM>~iF{O0zqZGUT5qevS}Tg0Ct`25{Z?EXAv-?hGu+*^|@cBb^t5WC)mY_;DFc6DHT z=)w=2HV0|TX_Qei>`B^<I}54&c#6ys>@siX$^^?{EZKQ^;YD@JNy~|@e_qK$-8@=9 zPo(k$C^sfgTVOOb<V>Yje*TO+wWT7-&Dk-lUb0J>6?-*5VLb#S?aY~`{qK{q4_JTh zQ9NIjlY?7XzuI<hQnq~=s?>Gqi|tPT$v`RU%SHsRSYXf=+?FgeAxdE1{@N=(*i$nl z%&PLV^}r^v*KVk*-FAlkQ8GH)n^b!0RQ@3`(YPJ(kZ|~|><f*Xh#aJ6<;f>IKxbbE z(MN3aN;YZ0;z7)?a$miiLK?r(Qwq5p;RJuIAz~UD+*2_Dhq2R2kMBVmqHTYVSMcp< z0>?{e6@x9Vgf@-ym6^-yV%OsWUG{8-($6oH6B<GKG!-V!J`tW9{@~oHFJ~p-Wneg? zY$R1P%OeFRnby!#I$n9L1^c+Er(?!K9JOL@EtCRfsp}SnA-5M%wau9HZ@&wG#hr1} zis~z^5igERxeV2r6>K$u=^#tq#Bc`jeTR7wNfZu^9gN!A=y$B$0CgDVnG;wV*0Mi@ zM(g*cUpjR800!aTAFAKh=I<Fi!ah}by6jL|pSFF8mu0mdg91~<ab@zWE|a4Z-^(+2 zP|AV{^n(LFYKZIQu15DZ__l84dgxXMD2~)F-22pSH<mxE0!7|(a)y=1h(UwYYQL;$ zP8kuXl!YHDI0yvrv(kK#Pi{Mhu%MB~Sf5y)uPCGKVzwm^57UqJb=GE2{$-qrJN+n~ zjx+c{^eHHw!kHsxMf>?0pa`xnr4K{qt&!K}mJ%oB{CN4tB3vi^XCJu18F`csqM~f? z9H3ZYF^?kjp+$hJ6UH=(WFmU0S$0gNjap`w-k!yg-o5+@ZG-C9klkleuQazqSg+jL z6cG|tIKLi+kM&yz=!Vjv#>#q1CxOZ-2=>rTD_zlaWA<~dAyUAZKGSwxD)lur0py5J zlpRyUY2F!^$IKu>g$f&0=ygM!iNn#?5<R(OqWDr%?5F(-W`)<jRvIrV=zl9@h2trl zHMo;fV@IwNPULkFnhrJ+c_$gPn;?6vafEf}h?V@X!j@u@j>LN><cZKamyDWXy^t0m z05N($L5>{V8GnEVIT|0O;+R`g?tr0hGY{PJORRRM5;Dlf&#d>t->=OZv&x<0u)DUY zc-Fp4w?8)6Rl7a2rR{cyNL$&r8Mpj~REF6`tX<_hWvYzD@|~itM8e;NdV7kM0sb5* zt+{ZmDk=X)^Hx*Jc>L4RPZH+N<B0&)-(gNrJ%&CDvo=u_De|g@(c@CzWPw4b&PwCA zEc`1Rh@`hC{jt)jen?tN^jdFm9p_hWFtX?=E3p2>%M(#Ido#7G1z;>svdv|sxBNzG z>8r+|^r><mjwzKV0Z)mo3r?>;emeOh`Pk?l&M0GB`eC-5<Gg*ZXCZ$+=d4eh@fTYD zj3+IHv3wU-ezF?7vhM7IYWO<~2>{h)#d>RWMtQBrPM^!%R^X$o*dI){`8j)(f*a)h zF9>lO&liZh3Z1x}bw1*j_FwITKT(G7?<=k@N)F_0P)ek9{59Da154hz(db1A&$VSG zj}59OvG+S?1qJ1+P@=2C99I*A#?mnRULVRbYaGA#_cl?1^2>aG&+>yM_jMQk2?=dT zby*Np%fLAp?bg|3e%l4lz(xp0B0Kka%X?*CY?xP*pAn2H*r`Y6uGYZ6eQcq*J_w*) z(^<lgVRcec#Li_NhWEsNy81m0vzl*Lf6bo`{-8fUA45JRq)tUgs{z*&u7}tI=id@y zP=ne&dt;6-V$**S%5lW~0nWoW$d+*@OHbByF(oW2vKNb|RL0I7Z42^zUm;p*s%}mO z+gpcZ@t*|0i_##PH|jss)lH@-PiLd_cDY)jF^rOj+AFd2`Xbsu7E`Q3KxHNy;O5>$ zo2N?@!Atp<M4CEZ&7iGD)Q_jJQXhn!p|>wUkYDk-zxJF1^~v~kSu?kI`QV?m??tFR z1#~ZA3D24_B!(-VpRnV0t4+P=S5h9Ba<<n4#?iv3#x!k0kYL+320EjT@^5QOBgzZ7 zsxC&u1h_2K2H)c_Kk<p*KavzT7XSr$1AIjEE!N?sp5&ea*+KSFMwnh{>KA`K7ViX7 zk3XHoH@X}_6Wue6ll>{<g`U;aUi^rFN|h;#_rhwD@-aMTA2T$bKWp)zD5_G@mbPfJ z2aX+RzIg@rd>2E(d~mGrp#FR8eDw^34Uz`o<UWh1-`$M+cjE*9depu6;G7jzfrM5y zc|J~@ps%&yGbV)f-(HOvY--)DiE}}1z~(J2+41VUfxfOMTEic46X!lx-+4?OgVRNt z3dU+)!xfviW=zQlOE&#<Ck%@{F9-u^_zfO=aEwOi=7exe*3)`c<9Nu*{*dp7HBQp3 zL9$?9B-l{udj8@;-ka%{CmK?RGKAaWR@@KLXD*_B;1x?^H#aiJ!Ds}o%NVw)j;d7U zXLtPjL7y#0k=E)`i@odvy^D`(9J)OXNsuE7d4r=9E7^d4WbE_bP&HiqvKt(EY#!Hq zT-tJo(SZ7HzG68A&&+kw!E}nw3n`^YXQuD`yBIlOAbE*%?yFx?HD_j>Q-KHK%)dbD znAX2CzjKCV%u0DsFAts~-6S;+d9FB2+lhR+;ijML$m>sj#4SdTRNL=cv-Q~?%=L$S zzf5&lMv6nz48!?~y9!M1p^Nd|f(}+9V~=s93p|WWgB>?~`4yWttY(i7az!dq&7Nt2 zA!P+JnxhyIai)E5iK-<GcK#gIgI=*z_!8={BufqEr?YHo)7-|iZScscVE)TWxk@%) zT7NPsPVpO=fY?o^M(H;6k5^N43hkQIC1|q<MVOMd(xHgI24cHotUr9mIpJ9vK3qN| z=G=v)-kyA)c|brWE;3|12}Vh=W|tasn!DA%m7G^YoJF>M6^WxDM%muc@@scAY+@M{ z-BBaGKXq^?@cN~+`$yk9f#+xp+2~1ue9$;3%QvA4rC2z7Lo_Cnxfqk@?ymIvb^y<M z-R6W>q$kYGJ4mO;D5eY^fs22O!<?H-od0g-I%W1cg=eIpegbq1<@&aw%TDjrrgcd- zqHcP{!Tz9~TTFAR&^0VA9chBrt&7r*TYRJ5<TLM)dK)kXDl5$)E#!igEvon)Tdz`j zQD%$b2&*{(`iVDbI^z{4Ef+oqNqjGf@IU0SYzO(Ls2=kA|J!0HB!Q}IfN}@u)G>TW zPHS*Ul4_*7^Bto|(k6N?d#eLpv!vAkJWaf~9&Ye@3`w5)PV0D<&oHD*z_Or<+XFJW zok8^2LwM!jcRTc*5y}~=x9y^Egq~~8vlFEM9aIa{;z{#5GfLKAhY2}Xnl>~nS?q#? zo9qtWkRDOU7&wGRCajZI-vxX+>j}*$+fckYeFv^a(vJaWFXS0lU~aqUvRRDFXW%>C zDfb_rqnPuXWhqx|d_nT4?JcnV!l$*gdYe;CxA^5>l}gZXGH!f|bzEWnwqp2x-h-Yy zO-n%VKngxl2lt6_OfylJ<le%OklXPA2TikOC`zSw{&?&-R7K%R$R2*VPn_4WM;3M; zmZa-l<~ZXPj*ePPRtm%bf0kvv6#Oi#TYvoRCa~v6-{+#BB&^9B3zIFO!5e^rl0Pc3 zSWj#`<PmRzL)z8}fX>rX5K)QgsNb4C*fbU;pXd3c1MF&~yB{Qlc6Ft)BR$|U@5h%3 zn@hcxxoUTs+QckZt`<YoRyH{qOlHt&tO^gf_}TP_lWi)E?9kLnXPz0qrqHL)R@j(^ z-Gij&uS$83?0)D^@5PA!?Jj3Vh(jnrKM=2EFpvO7*1PxFRQuJ$V<>xN5lpB({b}&a zb-(fCwaj&KGu#z<KiL(FT~Gxh&~jkT6jpa`N6@knN)(EfI-EJ|p-*v_yb{%?r}NmO z%PH<)APn+5A6r%omJ{zfn>fFn+Snri^DjBx-wr{9$1Uiy3Q7*-di$FW1S;PYVbkGD z3FmLnD2rw}pO|wqHA(x7(gh#%m(D+OU5otQE9!EHb_RLyBiI-cPkU+oBe(D3hNS)T z%CTB?bp$0H1X}U9!}BNA5x7ewQC8*{C{Izc8azg<wuRlKQC6TbH8iE6YbFlHT26iF zFXy7MGhY-|vT%u}iwn2Dbcxnb1P@*^e{Cb&dzd5SP~+IbI=d)K8l`t)=h)!=kh@Zv zCd)3y-Brb=6A@sAa-T(NTDGS^lM`m=sHZ1s2W>$s$qClXaag$v60B${T<SMgOm;94 ziIcd~+_c3p3wO5K%mj=;&u_PGtWE{t8MSkU=E|;}tgKq!GaT{rcheWT?oRq9Xa(k> zS#xdzcs?6c-Jz{A-eVqC!C&St{k#@Z#Y0o=IL@VB3z95lO`d9OHNvcAb)m-aep|!# z@ERjT9O@9<j)+jp^7Fi^D@9oD@C79vwoZH3w-fS+E|<|Mg8mcOYPbr|XBO1<$x=F= zZNas~b*&XU&`K_Y=~lZT)avE7z+&h<4Tw%l$6_d5qh*WU<ZjTRxn~mDd8gy>+dSH? zxCKkbBQFrm>`k5dW+qc?M+4@8w+j7Q$&Rx0^L8b{snV#I#Vj6Z<VGJ(s^f8KNG%+v zB5ie9w%SeK6x1BDHRW62JnVx^^`|3{jAd6h(f+)p6;AgWwS3S@8Fh2ZNYwi;SgZgv zu9$GOIIV{JW!3_sQH{vECy2k_%?rc`&6~Za4Jj$dL5O?&?0tBnO_?CFM?f`;{=IwY zUbYcjzCF1af!CNJGuSP~UC}|fVI=3x)ikP<-mV<D1xeJE8%F{=)@DYZM_+83JjIKV zpqK93No#?D;c3x?PgUt(a%y<Tg9-$cJK-HCtsF7EpkD}5n%Ex(RwXSFeRA&3JA~A| zs;_y+|HW1KVhC9RDZS+tT5I{pQ&N0jzrRx&X?=f?zvOSjxl;Bc`D@iScrR$Sx|iE* zf??q#?)+b>S8T9v?2%C1&DpWp^aI&zaRc?U@Y2<#OJzM-96lmk+_?QaQqa5IT7tIO z<2-5`9w2<ce=5e2W366atS)KiO6=Fgszb+`p%csHoZzFLkWB+if>H$*P2-B$X>XGt zW_R$Twjr+cSVwp&Fw|8(!SO(G+F`~ZJf>rF;Hz?bL1kXN<k{U{tQM|1TdI|Hf~>NQ zb`{O}gqjB*(e!q%3uT5(f$)i{HwOpa`_4G*3eHQMB?XNRHBBh1t77c3EVH?k6LlH( zef9grLBX+lR*LgC{+k3-_i@5lBHF8XkvxYF`TLT4Py{*KA0{dfG9`RA&CxoA$T?zI z8V&2?ID|Pw^e;Y1{2_A)TSnPwek5SWddXo5{FD99zqps{?G8|*u2#Ahqw6xI?<rmS zj(+C6RK*R@T;cV4A^s)XPACu+-65T}#uW1WdiDZEe$$VSx17nlH1+qyF5nzCSV3{j z`A_3{`t-Wn%NnDDqU~ETjhdV-9h#;BkT<z#i`75&4?T15kMh=aEHb8p8jm4zV-o&n zW+}fH)M8=)&-42#lY4T*biTwD_D>(^KO_^G{In`ZAs1>|8qX(HU7Hi9lCk@@`cbP^ z+JKU3M<)@l$V=9ifqH<8RzNXuC?8YYeClSL$}%=ttNwSSbcI=bpvzrdJnll~-5qgs z{2if`Fg=4}dV6d%Tiez3;?&EDw>;sGjU&z-4XmU@3R5eXZ90?Q#Wdyz!A<g4M8@0w zhH5p@8Gq>Y{|%5@Hy(WL^!>Y6r5LwyjWWxG#e?OAy$k+Je7fPo_a_Hat*48OJOG1w zp-e!^B|*Y0D~)%l4mABh*mae`@nhp8{QBWr&ws7G_7i*KFis~iP9v3kFuG~IkmOtQ zB$WEFq_J*rvRF1?tRIKh%}0YIU6k6fJg{yH%y*)F5Fqe2sPHNTcIVWoHFm@Icbu5I z`@m0p10L_p?X;lrUzQFh!=%dD`DICaru(4zgl>`9sVBTu5ww<4o_gdkq+4p1H8<T{ z#5?aYXg>9qJ7ywWi}C-xx%(3Hf||FiJG1QBNb=gqrt_55^RzPe1PNKXgI)=Mo0FT1 zjq@WLC(kENej#pNAs&7fPEH|CPKHg>|1`<}SHQ`|%Ff#F{}#~c-jjP3(DnbM=c#4x z19WwFv9@yr0X_X(K|niKPfGy6H+Sn21I<l`k#S6Yd_r+Y3xGs}&Tfg0PlK<VLV$!1 zlnLSeZG}YB^a(irXJKSuV&KC7>UfAkp%OdbkO<fFQi?C_)dWCMR!yc>$}H@E0B>#U ABme*a literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-180x180.png b/pkgdown/favicon/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..341151e06916c2e7c139e369b8f420d8a496f40d GIT binary patch literal 10118 zcmch7Ra6^H)GaMg+@Z8+a9SGNEf5GUZE1@`AxO~RZlyQ{ibHTOw76?Nthl>V+%-6a z%YWbQ!+rhNteL&$%sOjcW@hiRW{1DmP$a^q!N<VBAW~M6|M-M8|I=|_JdILAFZiDT z%TiWd76YR)hTz@=`)Lk<Dt%PP!0=+nzz7J!z_@)11?*s8xbk9P?0v<+5KqCtpms=a z`XKqV@WND8Q6A&*e_D2HQT$T`$3<Bkg0qQ>`QjCuIX;RU1B0DISzh*&$NXW2XF6r~ z(&NgM)J&$qKrJAUIW#*A$Kz{Pm?C+(hq3aHut3B$Op-Aw<yAL~L6STM7KUS*>%o|f zg{vqjBl$eiAlG2P_n=imV!{v!^73jfD)M%F`SJwk!mkxEw_8?RQg-WdQNO4EIRKpV zo|6(k_<s>*)x%mdzJ2LWTU<!}>;t-%#@D;P2TEmiY$LAV-G04S%A-b1s`&|~qq^du z(VTI?Y!Fxu=eXMVd&5oyPf17h<9x~qbv^l|U;h<kwB!8E%}q5u=aCP&*Ul%>P$qdr z06wei7r>^InsXiO7lM5YZI{^S!mf^Vec!P>axINJztquTg~S`%#sPt27K2E8Ov6QS zDK_xc)?dG!28~3{9AF5(WBNVq1u}yZ=&im)d6I05J)F>vf$K5s^hq_zt=g2Aq8B_b z&!%SCBgrrPLffb(G^o!jVoh#|k=Q^Nk@q|JGXa9yU)i^zG+8V|i84SiWk6U#2Mm`l zz~O-OMY?z>&q_%L(z$rHXHK8$ur5{T*~jIR%kH3D&1c=kHtZH>Q0scoK*@-7!9gc} zU8%~)QQ5rXljpbTE}VAF=pXM<bO7WVi-~JmuC2wvNzn9q&G^x@UL{Gj2v!EWg^bf? zkWtMWUwS5DO+x|YzZ{ijw~Q&L+fh1j@@Ap>V5`x)pjV*#sgYi|vq+e5@%aTSP1$C+ zv$0#Sh}KNPuPevPkiLJyLV_|5YrpnKQK|^=t8fyX>t(w^FKe#olvbFnvCYYle_QTj z7;DZ>#iv<bgptZfUQxw$r(VKtrE$*TKNObH!p)kZ${3hhF!-mFz`~ap%VB{9!<%Y- z-7BVNvYQHh+vQR*u_^!ZnWOXbw~N(HT3Fsh_$Eocfz|(_bIvoof|BLJwSJlTyggod zq#8a+)9+H)bIAHWVpN=OvA^<d{?j`XRIk`tST%vc?wd=@%b@HfV7`7fSSIB?3JVa2 zzaVp1SNzEyh7~9CT(Qe9bm^nbyG&um37wt%5_&eAOveCC2DkbKY;R$y;K)(?=#?dA z)xT=eVeb!E$%%g7%v@`le<*r|kj{QnBRHUo%>M!9w(t38nfYUsMpxMRg)_&eIVJ-~ z8!P{jM@4K!<7=|m`}IGR5RTZDwwNIE12oPIm)@?}vB<G}B`vHtyOk<l6{2g}c6Ll3 z{!*IA6wAv)qG*XfNyu1DHcUgENgWy`W9`&iu#Vfq{ao!u#sh{khosWhsQ%WK#}G5~ zP2Z$1#GG>+^H^@`HowQeTkFHTixh4SRqU_3B&1Q*RO01P|956c8BqK7_jw8RS(gw` zJ((r?%e9gFu$Vl7sw|<3uZ^bQqqG;Dr;t^d9a+4uA8(Swf$0Gmfs|xW`?i7umTjDL z-GPrt+>}nCl2*wz60JW#s6>7KOF3g_)LHW1EFn17YNOUOgLauAkY#IHP5+-9cc4aj z&HnO^x?|C{ncp4BW_!;=I=TpkrJV$1&bTnQ;foS0Q?(0!c~1hCsMt+l5J$X68ECid zDR+T32I|*}kL}5t6(tTdNyam9jvo%*T9H&^M77k-0J>n=1n&vg<Waqb>ArBL=Iw7E zJzyH6R#c?evZ9v)q|}&lWb^cdv~y8|FMGKF?ajz?i;1(xZZ*HvrlimbCM?|bA5k+C zI#(Q9=tD>#_Rk|cO0b2&QmZKN@eOiV5yoM@@i~k|Ub+0^cql1Vb9j<VlKdk6N}p>P zQ5ZAgcuc<(#U)Z|K9np1WtFyNFZH4+=@EFS?9oN}<&C(4lIu{)ewsf-bxzA3`sEP| zzEveqR`9GwK5FHSUaEmQvG<~mTt6y;mmEm;V^|+)*wY^aXPdh&58x%5)RyiKC3y_q ztfuu{OORgC+V0BSbMREhQRmKz&u=?p%U?{-l(@+-sD}|mXMg5urR`&fmE*;d*IH(` z!(6l}1&vL_wf>eu=l(4C$S=tlcIT;ip5V2mF>?5R`VXG)z2?~a3;XijRQGu5dF)n1 z&HM1{&_Rzsh{2b7Pp8p-mRoDmXf8#$`J%29o2a}|!i5Pf<OdvY$nXOR;zBfK`^ERT zGR^kBYgSz%iQEp%5HEpWV+3c_<&w{`a~?)(&>Cl3Ds_K+lGU{2h?Wl7_4tW1$ZLBx zc!`eRiNb&HU6Rh5sLNR1LT!G{xl!OSf>PvtsTifMs5Z?V?-ltEu3Mn1-W1#4cn-3) zCU<>E54E-l*J}MO&wwkYQYU|h*>YfbjkxnrmS!62a0k43;(g2Y`K-EMhy7F6r~;tR z?Kn<;<Wgq+*kFZ$0*&kqiTH{hu%HjJt|=2^FzfOcmfqiS#g3iu-Be`ENz)|6Kpk26 z8O~+r@3qZtBU)F`MP5n&R|>CKh<*32F{hdcXKT1vq&BBw!!2lsFu-ciaw*sQ<~o=@ z(;LpcoYdy3mnZ2Ka(pP)DBvtMP5>4b<3ThlgLtx<r|SHV?GsxAmvsZ_X#BP!Q8$?n zZTRzwq`A0CPYh6Dbp!W2FQXELvmo!>dT48?!$s_llZb#BENk1>XWq`&t_S8x9#w_} z_%m@nTXc$Lfy4~<apOGc5{@9p2FQLXtAD-Q?Xk0sVLp7B2pGpP$dn9`-wpVM3klM# z2DXo<Iwp;16m~Rhn}~4Gv@byG9d9V0VJ|PgPFWiBt)Cv|r)dJoD*M9om{Bz2NjfI_ zHSe)lJCvriv_CK<tCep=io^kjp<643%l~A4#4Avbq6032n1cZ>`DzjJh6M)Nbs1Lv z*8fQ@&NlM6fDGg&*m7`lt@9EhiyHUelSg#$QCrCq1Q!tD4Opbw8YB%EyyVEjA)-Qw zew0H1Tz)OH-rT#!TO8F=Su7|cnIzmz+0o_RRrmC(qI1D5kTbUJ`!)i466twDNHhfI zTaf)7D<c|bW_&-THr;WbT5#H*b(+VBd8KitOijY>3X4UPzi^{~Pc?w8nBO&Wt{j^7 zAw2h&ywljVJwI{@SI`#=Oo;Iza8o&ve2ubZL8))*ar2rBMERN4a)7#gPQfDbkk((X zq53F%)OQrXLU)G;mUzZQ+@+WD=UK=g*SzfGu<DNY_@@$Kbt)c%)(_9qK}R|ro=BD8 ziF`qJo5-S8YrSPdu7`h6FrnxndywdhaLV^Nj9z=k@tTGe!ZM7@K7k2w#;pRlQchf? z3fU%z<I|gc9*;dHmP|wH8mQB3uysUyS(M}Ihi?8aDJ0KhZEb&2?f*^{DNZ`$?_^1+ znMK?XGH3r}4d{zGK2RB9q9%_vj39kDIl5r__=tO`VhTw!FK3!)Jc_dH8c)sYP4(x) z^<!yZ6!*R!M;QqCb~G-n#too9vP#f-;CaCa!=ANYFna;INWrmL18z8j>ml`w&<koU zk1KasVotam)aj7xA&hD%Y;+h?{6+o*ReR3PKWEs&A%W)-Ey?MI=P{s$0oRd9eS)Iv zBL(}qA0~}5eOEZZFHXGrb=P_TaA!+zZ&GNCifI^L!o}48>`D-K#Y0baG=$1(Tbjml zQ9K}bxJX&b<vExx!6}j@_JY!NUgk>HIPQl(r!dc>e4Cp$QEG?%u;;i_na7#@JfrAK zbw-tQ8&2%e*Exn7tdD|XCqFoL-DcO-TIxEA085^N%GA|&M)$WE(JAGAyBPTME1{#@ z?7l{-!nwGonBXy%9ia_nZvQhAc0=j}MXpjEz8^lPgdJm{GK7PC8KhuBrnpCuGXH&d zC1?Hl&syRPW_M`odaKtEGtc;?XtwfK6X$P(R+~h=-&*V5iIjeI!tL9wPZ;-}6$;8r z4%|^tuwjxJrDh7D=%Zz8rWgLsSN^En;=WSkbg1oDdNPbRx1U6^ouLq#nKxm9((Q`f zQpjJ#XC=*j#ncoC+wb>QtQj?|0j&bc(j6p5o<yiW7YrJwJ1d(<`^DVo!bb#u9`tS0 zZ>=$AD5Y<Nm)tz1uM{9y^PU>~uN`*#HJ$3H8+KdjB3cpEu=-D8)24pf<7^cdwn1P? z8vQ`ElbK{`RrXhDxJT(-r{G&M<{*Z>5C$<Cbw(^o3_HA@zos;d&^yxq82+hTQTF^6 zkjhoaGiH4Et251M^>t>Iy_ZMT9+U$MIDxF$<qsQ|^Z)ize5|PBfm0r~O$rp%%RIkZ z;Xf`=_PMmS5vAv!nC|SH7#UEBi_$7yLKCNHb3d^#KFz+`7&;*3U>+%9*OVz=vkDHH z27UHm3Ub5lHYDWs*s(Bb9$Nm7z4wUv*>>v<W%^~BB)$ZCnq^Bo?sR6h$@)1XvLZpq zSg^sboNpENJi2LBY2KxgSjxw`1nnaDU_Dp6V*O##vE|QlTxv`##T{uxR435lP5r2j z$hWg9?UeIDy|?`oR#x<`vV7l%=@d+QXva`YGWvoKgo_hwbg~lLH2XsNmYFHB4xxR* z%xh|uyiq8t*Zg_qTioY`qVA=^FLQyx^p9U_?aQ7gIHlDt#8xsWG1s`k^x#3$orxAA z;Mhm#4prQUk#C=KwZtx}_c~nbYhmTjh%=lN^v=6!|HGpbrqb?O{Q#buG5T`n(NS95 z?FTv=uir8gJViE-Y+zW7l9h#b9@YgOzr;{zx`!~ruaOHTbn*G>NoH*8-Z)}@;Yu+A zMS}iVo`yP$UPeIZJkh1{XJzdOCt3xP2R)<P?M6xGJ|8*?8He5qQtU%}heOZj;|7q; zzY880Tf38=XVC$u8fpL1kP&0=ECG9c`C}6j(uj1(-$h1&i4CQ{Qox#;B1JRjHqQZE zwFw(1+{LRY72%qz@Q8wN-Tp(?J@!i1sr`4UH^3FYkDAa7<r%q7LdiUeC6Y%b&+eH* zJ(&QvppGlPt=dFM*LFowx1C|2Ha@-`D|N+IWSYlaX1UgBh!0r5e5{zHEbr<RDt562 zlqZ09?<E9{$;}M>Hb%5pC;LJixH5p28U<(+nj9Q!<LKtYA3h`1P5UVE4ah|_Zs&U? zXR`S)kzArQ`53$Iw;cXna5IClpbKAd>@FzS=lsL-W(tq-ou}IoT((nEJm<wTVk|^t zIT8=}7JR*$<K*`zrr@fA;SEI>RpOwa*pHyzuwmYoErmM4QipLAf^Kz&*JC!dI}dFU zEI3mEU5Zkp^JOeYTQEf~mlwD-vyK6D&LM$sNdBy+s%Baq`j>a94Ld<*GL+EtYm0aD z=8K;qV^fjwTVBFI+JS|ucaBSN;q9ouB8(#Z`^6keUB-@^)i|ErAeJv?Bm+Vsm-`v+ zYoEZ|(mgCSPy`s!hi$s6ra!m~9Z$_r{k<&h--=KlV3b4HWXw-$tX~_W?C>#}OuM%O zZI&#U(JvV#1*t550T+bHzIdv=u16qB{jtZl3neT9oKs$}LG;!Lo$NhF3T$EJ+0JQR z3%PjcZ`%2PvU7dj@kApc%sU&G=8jaRJlBWK6OxxgtP;fdY>IlvzghlVjynvjFckcx zzA?4(4&a;>lWj-#CpLmjU~jGlg_qyh-&cfY8TKD-6$0zM@gPQ?RoB_$_9%Q!6_`Gz zDd8CK2UVt`aJY9W)@MA=j|y1Vv@$jzZ*C4lOwyheEq@AR5T8rz#(z7FJV0P<X)`Q) z3Vz9Ws>v_~8aa2`(plAzyJSZde*Sk|yWy-o?yjo(utzn)X>`2E(QN>#HT65!+J!`t zmiFnZubLE5<k3d`Bnpk%$OG~5cSSy@68YMnobP-@ffM`ge*mwu))rfLlt1*a^!l72 zxXKG1oUUCVuv;<>hRrW^rJ13%-{0agk<s9)zhLa}5{z?<Z=!du(AU7*`Im>=^XDIO z*w;(9v*?W)lq|9^;a`f|vJ;*-N2-VwZPbPHIDDi>^_@Thhvaa*Z36>gRVv-Lnhwz# zUGDw?_P)KLx&=`fI(Xtcb`<3JF)}9^C__M0T^5mpVwjE*8{r0MaY~5%uw<pK`g&%q z+164TBjJC!fc<AmjQt|f8E@M#N=SiDHij5$IpnLvu$&iL0?HPr%r6w6GJ_Uze9*rr zcKQkUIQ2&ICcbzwzryJ1BQuKFN|$v08=a4jw5sJ73g7`=Zo{q~f922M<Ee)J$&q-g zZQXMp5vyNDN`HEn**m;rrjJW~JO$&l>^#Mz`1KoPOpcqf<4?t$wv5}9eVsu|M(qvW zNSbq_<@VJq4Yn_W?-EDIO}l$A>}BiKdY2(p3hN@a2G;Q3`^YFAFIn>xf?Vr!Yu(94 z{tIK%fI?Tz#I)TTL+53lecT>=2l!(oCp+cCF89p$co#AVeVz=FR|Crtap72l@aGqE z2IoiKRh36VM%B;ES`T>#9w1HI?Ax`I8z)<X`EAzRLi+1wbpgxTo`oqTA|p7ubChWe z;)FJ@thafGSnYFEs>eB&3`p>lUY8eR&aJAjWd&Xy9r`j|%@mV<+!G5~!DH2VUN@n1 zC8=T+V}s)w_Ps8&V)%8R=-FNCdy^SG*qh(Kma7Io1D2(>tE4Uhfh$Q`<2D4$n>XZo zBDd+3CN~E!-2NW$Qd|Jy)j<?qnfvat!cx+^q5{3l*e0a*CSAo#%W>=+>eu72nt@)8 zvS$+pp$`CjGYv1z^9Yr@^pI2oNXv9T(n>J@L1BWx@aiCAY6l3t6540Tz463dd0{ys z)IKyyE_)|Nvc|e+(`QFqy+r2twxNwbI)SL{Hj=c@rqA@Fd#2#tZ#O`(?AKOuxqn6p zD8fqD&n&xCDR#q3UcuDvZy^l_?*$tBoEaMt3SVaTfI@)Zhy&QfVsFVvnfb(-dQfim zF1fl0S(EJ^tMKMvjjiQGg+b@X!i7KJ_%0iYcWLI0|503|RS37#$iIr93!3t3R__2P z#$Gik8>Jlq&U!;CaGXDqDbKu8R3+_zA2jK@Erm?GfN~nLylAhm7=BOW?51+ns&_un zj6mLLa5ba%hZ2Z&B1eIhu$)e@(>?AM&#Mv(|Fokfx8d!2DPqeopmMHBIESq&>7V=j zI5`c2?`68{-C!;zq#fD0k&#jp^v(VWV`^ds-x07xxHQSG`4Bb_dQU*lq|sQJk$yUx zMAy&q&{DWBe-@J?CLm;F6X^2yH#XVp=tjoC#X$k7#iWeU?Xvk%0Lm6vJ?MoCJikCl z<F4>a`?Zm?@U8TvO-FJ+XmDJ;oQ&%8TyG+a$lTpfxBuEBuJ0ky6Vd3(x_+Mi3BqL8 zoDt1XB>`_F#1u{}9qoi&lJ!vs<>v3n_EI^|n9>X&{Bm|5Hf7~P<K|`?)~{5J&nE7g z^FlSxTDP9`5Nly&AC)<or=55FGA>qai`%Vu?0vh0*096}zU6QiJ-0Cniuh4UY-YzO zs4$1MzjwLC{wHlkEsi))#6Z@;_lahAYJ(G-QWu%9vWIdoY}gH{U@Balr3<-DW6{1F z!_%%bv9K=8g4C?i`H3I#{*kJD5Y9tM#HC-!XeuCYf6__aj5wh-kiD@Kj{uFfHkLZ& z50|o3QLYn)p1myP*KZXTXQ#D@{SwoSq%-c)V@8SbaQE9l-{m`*XWTPj?Ynem-z7CY z$WH3}f=RBF)Z6e?xPBV0i0Ib9>X|hOS|=pvJy$S>iTuT_o+)$`%jaAa$;I3?tmb^= zw=-Uma}j;-Fnr9-L`S>yDeR+tk=Mk4t<l&{e2l@-99lnYPBYm=P<$Z=uQZ{|7rvcf z?EaU`wT`9l1ND}c_zC;#;kyFD9`2-nJKY~ilB?Qm74@2EliOkhk#;Jo1P?!@I~AS& zBRgvSv>2J#8rsK`1xj*Q7TU1pKF|>%c_Sj2F(y~UcR&A6G)iUk+bajJgkfI=mYO!P z{6twB-1+kHs?XN*t#>$fj+Xz0`_CcwXWK6E@(s2Z&3DvPa3tG#vS{UvXeC;_O{0=j zdPyx8jaYd+4_@SAlRURWtSJeqnf5n$nxQpoWv}Q`6dU~<(}7%BvIrYQ*<P%cs7sez z`qh8!I=Pql3k(nyhqDVivCA_FJP5awY4U>n;bqb0nw3yl4HkT*I?m%TQq)2rMQOP- z-S@cswIeiVzeRgCu7mv5%^GinM3iC}CX9h==yi<09RJaLf>sS1a;eoo>|e^e-PCj! zyKi*Tw+i5~Sh4&~Rh#406|ka`29wh+WfRGhaPwy>yXld8Dv~jEY&NkFXlO(;%5tNN zy13jYnMkz_I+h^*;e&lYx+rK@>W_Tgu6TmdG7sten}%eo*WtT90#`h?H^Ryl%52Vq zd9}`yTp~PXllh<zqkeQ@&t<X|hc^OPyacvt@oe>_qSyrbb@@az<ZAP^;O(o<3y%M- zGHukizElUzefC$5Bhow_o_$;uRi}fm%uE=Wj?Qs37_Hmk_8e`FPDE3+hN^$vFB#cf zBXO%ZW0Bjar*=BggrX#yII!u5StuF8YhjpxXra18k@P(m&iZmIvw?bwoq4z@xZ2<t zERil;FygpG8&hp}LHV++Uir_xsB)1sg3d>S%<ztc{fmzf!tYDT0fp$kfHV6{>3>e< zGlq&)kdYvFvkt4&W#l7cx~nFwDWqP=vo2@{!s$c;VS{qg)dk9hl*WG)W|sFR#bJ@x z1SBN|rlxaE1DoVDXpv*_8kcvygL&GM;>Vy9e9I_1MWeA&z@JAcZP-KDOKGJUIe$p9 z-+<Unle$tIE<V|OJ8mh7Ri*-A+$r_--V(=V-PDWSr~siV!R@(Hmm`U!vWJDdUB!Yj z$Qa7m><<iU>4l$M{j(Kjcv;+Z)$g+DdDSuOyPTg}G~}nc@@L!yeK%}@N80OCY1Gaa zs_UEwC%n@t0Ma#5=9~51@#7cbSGsRCTN}xH<-#)GP~?dgd>dk2e`KbU0Od&|m}WBK z(+3L|TFIqsy*g?a&0C$Z@E{oAq-3_P1!z_hsL`9?sk%^vwWi;PYpBcVw#R(M?7L3$ zxtbHbK{HP0gKwi&wh)SU6P4>TJoXz)D^lGt$BSUuJAFgXNwQoV@bQ=$YD!S}J_@3R zj)}?q{nsjE$qEyu*0yOg?0w?ZMASenCHcJQh=A0TG)(rJxd{!|Y}*!h#~3rSXY!pn zmOIq6=;m(*+zHJ{&<l6ho|t@w%OY<abOdKntxhjdhw_n6)f_uM1G4spTrzIAz<jbk z5tw8F^Bc|`Q6RP?DE2Y;y#n@6+9cMSJ07E)mIHipq7kOeLb|ipJ%U>wsxK5QK)wV| zzZ*xZiwaIv+aId@90Rw@?s4{C8p-COb@ShGc<2m8m*BJTMfFFqq&hu54Eomf$A_#) zTDQ}>zcX*&*#GsrfnY)>=t6HK?#H4+t_ibE+cg_cRBEOk<^ES8`}Us8+82*4j?4=) z2H#^-@FvZbOP{guWejmCo-XpN{3qBBmuyKrd#O8IM0?1>k*Q=7+Cw^@lUeb^LYft; zQ;t63efvTv;z^q_xu-|c)oe9p83GG^_LaTp{9hKg$=n|={_U@Vpwpgck%tMdSIsB_ z=e4N^`A~*Vb5S@act7<FV^2nEeDO!D4(r}qi-Aq&t<y2*BPpI1=TD1QxI+Z<X^Im5 zP5aHt%H_Nq(c)pzt<fy$BCmjxm`wP8_N&My7UioP`GoYPE&h2E=w7!qe<pU?^&Y^k zAthv73eM~yWcngWDK$x(Q(M{5i#5I|&y1#$m>&8EqG&5@d54GV=XAy7LhJAr_FVmY z6Mfdnnh>LBe~13a7mnNB^LgHrA9<WR4s<yV#z9}6GY2Kqru4yoE$~G`w4_bjH{Qyu zqx8L<R%1a5Fmdqrki8L4bV+Kac<+hQHZ!dK#{WR!suLYP8uB6t4lwe@)XaFyRmDJ; z=PdESke#mspYP0rRF2mpIgbniMqSs0h-`KAhR)_{1*aR6Wj6W8+SoMGY&~7P?f~I0 zLw1CDRUC^*!PH$gM8ZBxz0t09v@6Z8{%hsQ&dL^GbmATB6gRw6gsrdyGQ4D^Q4@X_ zU2PZDIuq*6pNLZCc!;7fpw_Ug&DYj(k!Dp9WjDJ>Vzqf(kb!1|yC-ymfXExLy6dW? zoMls{1id6(4n2gIucK1+weT4bEs#UQA$N3riFHY|;OusIH!&_P@=m$Jq|fcY){&qL z&8zWzK#xKh*ll|N7_lYkN^?rnSDz((9pp$t>(#xnU3}qfw~#x=M_yrX!m|HT_%{E$ zrctXe8xlvdx!PjiUAgh1*^GGirXaCai(&GO8so`yr>@(1rGE~+TKzNnfVY=)yV%+~ z%#GKva=1M&-q%Cf;LEK)_J)os<_f)E3@P%RmW!@D9|{!t;~vW9zQ2{M?LYF%9}O_n z87eR@qS%l-xy!VZu3eeLIetWq8i>!0<G;IG3^_E@peR&}i#o!G9gam0?iLLfxgJuF z`~XmTQ|`#I!iAEh{cuK%E{&|)wCg;vWSun!1CW>mf;fvvXSl{X2aN1QAD($HUUGB_ zLx!^Kw4WBr{kI~!N$vuVTf|<9s~I03vP;OTv?p7pLK>+-Q+0%GBzC#9+>#srmAdp@ zz@q`_SFB(ZP7Vv|dl;2e|1V`rrXY9o>IW<D4TL^)cHZ=|u41_cp?|ki|6<%m6QMh9 z9mT?FhYYpT9v4b$91(Q7@yB;f8cB_ez1K|gDk-$@Vb#5qrEi|GxWu39e@vOtWTW#Y z?`ogst)>Tau}yE0DLkyd3)(u=!J=|;7CtX)bFISruepO`CW5#hI*OUF-wD0VPX-<W z;_WOa&Qy793<Wu0`$BwoyN9+0UOWnG6fGH8Z|Xm2-zXMFSBr4ZY3TsZQ)U!Mhx|Lp ztM5MU$x#$+P=Pvx9z_X)n&02!OC(2F0~Zs?6Uvh$ZDl=C0!8;nb37T@{CG6Gc(==o zX1@)HkqrX97IH=I-0Uk=VgK?J9Z&Eq$$@l%q&Kg^k7q00@E^U*q!(t`XQik}QuEl8 zOnX{{17Y732amGyt9az!ROTwadMMc_r*4f*kbT~}c|6_at7$JWQC?2UI%#mWt<J%j zY5S0AYqc?-YO9R2wmc)_gt@P26pVOzVOD3NX>aT}$opn~%`b+fy1<QpmR9It_E<1n zoRP^Bpwqc6bQ2LfP~;mL*`R0NvS}*=Pk$h4QZ2dfdY%1cJ(mo@#41H%?T6NACn`Ui zuEc@XS~opi_2}$>T)%$9@=bj)EyjgGRdZsc5HCdmJqJl#%Z^5?gb(_sua2nZ!$a!% z;t0~StZ+zyk~yi~ONQ`NgP%ajOEbM@#3h3=m(r+gMxxn&WIGYI=5#U8mO{b}FAOy( z-~ND~+|*y}28n|3Ted&w1Cf-vUz-YRwZ>~8`GQ%T6N;J{;d3{dKrH%==tX*9?XdpU zpk>c()`#Zx7himZ<7Vt1=_Ztp6I6=NhmYGVZWe8d=iGo2{pG8zcWAjL33p8|eyZkF z1M%RW+@H$VSz-5Mw4o%;*#$r@Hl82pI6fglAZ_Q;Oij&=@1U|5UsmDUT$le>-JNm^ z5}j4Za(5^T&jXS4=07^(wpx;pu9upzlyk9zi#5K!4RSdSfY&dFa4>XB%R6U)?<U}c zPBT(gX-QKo>XtFMIf)Sr-xp%h?700}7Hww>7u|Cz@04@>fbCGkkq6}+ZlmazmJVWm zK0WFCTGR^BtG)vDm0-?9dM^f*OS~gLi)dLS;}%69Xc~{L{$rzw*lq_2;<8x2HRk7j z$uR)_{%7c~#s*u$HKDAvL5lELZ4`w#z3DL<wP0#@S}3a=_v^5iPK6DKKK{1MHX47; zsbxBZ)`5bX#df~oYYvn&2F<29!Otxx4#j^0V&_MB%2{uc>_U?IOhEm4>d9PW#oZ}i z$;&hP&*p^85bVv~lnRy9a~Hm1Zba>qI3lAukA=<(F1ZyO{@uYO?krl9sd9E>K7DxF zhJg%X&AaJV+$Kx@Ab|Hip~~PLowpZ%tUGb_MXSxD(|i)K94w>sw;m6^Dsk=z$;*h~ zW4rEM)~5BJbiN;c2ppqdS9W-(CH2b%hLnU}Z%0*YtyB-a{&E04P%a95Yy#iq(1@KH zM5v&DoFnrC6IA(VIL6-#8Gf=i;NlXQ&fBFqY@*g$^u!no92f;}e|>-#z3lrtb7Qvl zcyhDx_P&U<WZIL_Lesl1P+Qu4=k-=cr~(C78%4bgkj!4O|3W8?*BT(sEbl%pV(?5r zEcr8m{c47{cI<AQc1HU{fRvR}0CLXc!O)m#?tVy{&SO#-T-ix>`MCZK<BTj<089t7 z`;S@tC)!w>m5*k{awxg}e0cU4*J!>xs3qpfPjZN^d8~`>kBTcVdQ4_e9Awc;2pw$# z$TPIV<5<THROF`ed~Pl~)%;yB=dOw|*!Fx8t$chOunDTW2`A_k4LP*8;K54Y>&ZP} z0`n3fy$O&<B&PHw3Qi7M9%^Uto{#Kn5xAtCn+1}iq=%NtYaUVu3c22oO3T-O<BJdv z;U$`FtBXCWdJ*T?Nl_;x9Q@(le{dNgzFR*l1gp>6I-6Z=5)wLUVXQ2&+u4HkiB|#0 z?mS;qcbCqF!VZZ>^dsDdUF)Khs}ALNUDG-Fj*AWsr)WC1CypO)PX=ttY{n8&u2?SX zvRiLXC>(`l7qVoTznDHbh1ziEGm^74K~;D<;hvz4J60G{auWe!Gs8Z4phOLCsE6zP zubZddbGq?7l6+Q|{vOw|zx3oHV{?J%xR{x^n2ST5%%1>*pO>Ex$SVru75Ky}EY2?| zE+E3i%PY>y`z`sC#{ZLG2RE~_@cjQLob(@@Jtb&+ebRCHXyOiVaDrP{*_s1fJRQsd zRt_#u3=EI-^)o_T$1j|m{h9-V%9|fCFj)w=p#&5x6sqx*m=pl{0KrZ(OqS|TfPvY` m-mbwex-Oi70HtgdZj3!@GM6*3P~y`T7|IY0`7-d=!2biPKd)&3 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-60x60.png b/pkgdown/favicon/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..7969d5bd64205e1bdb782a9a7390afc9a3b4a9a4 GIT binary patch literal 2750 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 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-76x76.png b/pkgdown/favicon/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..a6dbbdc09eb487f26c145afd6e95d9596ebb8ba4 GIT binary patch literal 3636 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 ZB(TK}!tJ5tQm?K6^tFw(Dp8IR{{f-is~rFU literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon.png b/pkgdown/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..89bba155da2220adb3c8fdb9021f70a430a1df98 GIT binary patch literal 10118 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 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon-16x16.png b/pkgdown/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..80efbdd726a17dbf39da4b5e51538fb87d29a146 GIT binary patch literal 883 zcmZ`$Ye<t}6n^G(GnaVFoMyFLrexDk)6|vMHs_q1x@OHux!X6Lch}ctYNla7`VmDJ zC=fEsG%GI^1^$RA1JQ`6kbagDg+zo<Pz39I+K>9t%X!av&pFTYo`?56Rc_D(2gL*d z2-X&>j1)up9VjH9s0i6Z!N0aZUjR&;k^Hg+P%d*68}&f@7NENq_(`SiPrxAtShNDl zOF&d>-(<xuKp-zKHK_@J<1f+k8a=PjHi^c&a9+n#A8JQXbspR!?7xg$7sh-Djp4fu zV`vzMYZ&#TXugle2_9K{lRuETZ^Jc&`Z2IKP<4*SteE2(>TdDGh6&yil0PpSaj8Xk z;?~`UV}MU>SNKb)<-P;^Rlf4a2(x?-d74`{0(J-m^>7Y?9pqU=A#IcrfGWf#J%m|d zk&LZss6EhiBGZD>PUNyE@<78OMGt#F4<owe0@94Ue)CzM&v&w|`aQjpl`|UnC;xi| z6=nOaT3g~YtVs@vuE~qiRmN{i%9rKk#6_-+ahGq>YxahC+Pm_bE!kOHEDFY=4k)%3 zRUR<d6dMXtGU|2-{Uv^@#UhC?)?6JXkcN*GeyN}V0=rJ5vOas*$$z+*)9TgY4}n6F zbX)9P=>sZtX;lR#>1&5oCT7x7Q{`<{<{tt6C*OwpJ&7Bz&xe0LXN)ZuxTCAGy#eZY zHnK9~P_SMhYFfWP=a_J}+!3*7`$35=Nz|~edS`rxSd&m2wJ-BXNSP?5Wn)dA4=*0~ zzdQSK{A-{{G&()}N!q-*!)srd_x_k(5+noPrD5NC6Xs5nl6X#S=A1T;RXRK@1*DN6 z1(T&<wwst8%CvN4dU_JWC>dsQQZw@pp{d2`c6t9#nEmKGOoV;yCNpQW9g($qT3qf% zR>pZ-S(&?)a{x#C7M4~Aw(U(!oGF`quKi$yP%cS!NFwABy7Oy<5i(VG`ctP+e$OPE mefws5>iJaclz6tgxW6PBi&0_RQennL8Ud}^pc*Z-p7;$HGYOUe literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..37026246c8504b083ff38b3966e5425e9cfac14b GIT binary patch literal 1759 zcma)4c~FyA5MKzF1O$o|6pE=4rA07=U^U_aB!vKi29UFmgAl?QAjmBUkycQFA|e_^ z1*!!^BdCZ~RImn7RB-B9JFR0?oMEQWQ7hE1`^0gke{`nbB;VV&yT9YT{kE<P@-;V| zYYG770zaM*R|ff;(D2P`uJ{ob1G(2)F92;7eM)Rdic&w}T7dk803~XGH<&7U29V7H z7!?6<cLUfcH9hM+0rdY~7Z}RN2GG+7Wj7=ofus(o83P6fe6u0428wS&Vk=~wgQ%U5 z+6kFwVe<%NUjT}NhDpfift)_b>4)-%@bx25^+LW5{-WRr1#J|l&cn_L$i4_KC@8)K z=O`$>4d*E+y9<pJ3{aq<Kuf_z3hq#FhJxhdkaiMMyFlCsiR~mnGbtyCuA-gTNYRoW z?-U5zM)Ki1NFIZ*N)YXbv@Q_sgSdSJh>)0i@XH~P=sHL`MwqdG!*)_iIQ%}wgRfT; zhS<G?N^unA-$P;>Bp)M5L`@qY>TU0S?eF^01`>7=2tL7^A@v05M`lbSc|aj>MZ^hi zNxqBNCa1%#_I)x%tB3J4Fra|+palBIezbuM$R;@mtL4NJCb1dKgjW%MjHQRb#h;Wg zsc6?jC(~|&ONmg(R&rfv5}9#}r<+Eh+i54Lg%CN8`xwMGgS_?K=~~Ga8?c1q#u2<D zC+gD|f}aQKqCLD)*>@n`Pd=Dw!{|2YD5>HW+3+|>g4Og>gc%`0B?N*2$}NoqCKtp9 z-g^iv0<R?E5FyegGD^0PG$Rn3<1`>^A%w_=*M)QZ@XTKhK54LM4Y7(2Q5V&nya{%B zEX3|1{!wd<f-sY-))G-97nXy6KA2ij6tz*ZQ-FkTRl=Z<55)f`pu0HenH5#;;?c}S z8hdsX-N;IBhRDpJr<Z9}HQT*zhUNBIE^aid9dqdVJ}ERyV`B?L1AUrhePX)1p5>wH znoKK8GmDIE>II*cS5!uac=-BQoc<=PexZd{JTFTgS?{STi=JIrrt+73Wx0nbi<(*M zz)|bxbZo9D+wI6N%=V9uogE>`$YQIbzTCAsDNLEms#AxTbDHAZ2Dp+><XfW5X9N`| z+kGrAO5j^b^AgyrhXgB+8ygszIGBb@V*3nyOx&w2Eefi4@y(s*8Ro4^)5nABNdkO% zZ-?O$xejBMU@hPHi3!cf)+PB?Ap^^q0-jgsvO%fH)=+st*W7kE{ld0ry~=|%+O3~C z+iehRoar8vMGtUJwu^Q(N?TE2?7%VnVMoxAYe(9c!~WPpv#Cd`&M!_hHJF;B8PLi~ zeZ2cFG1c>%N}HsTGg}`2X8n<Mt--Z#`L?_e;mEK%+pzOQR_4Sw-L$eIz<=<n^XF}? z$w`+-M=#G=Fn8|WJ<(B)5ALtvp6zLAF36vJ<FhDG!^yjPTQNK$*Rga%8jon@P|TUU z2^-y#n63!%z_4sEygjC+JOBFqY|V==oZOryx1@#M>xy*D9sDWvL5_*(*u#?rHy#yD zTG)H4Uh8g2uY}o#25UT9PCf6+|GlB}=}??V)Sdf$ysqs|$1mM^FJA6D`)Z8NPV~%u z?Uyy8IC>>`<0|u^c#+O*)0@Ta6Zb~s7b_cA7N4?xcEe^#oT7IV^YzQ0HLsTGb8Eex z_Nl8HR}~NR&#@_u>n)=Gus-d1vpTMqn!0TFYePeWSrg2|DU8*`T(KB-!+|)e_z|jj zu}a33X3B5@HjC}%!dm9Sat~!K<+3?kj)yag#bvSVuLo}W7a%n~UXhUZ-+<KWKQAF5 zJU=u-B^2i{l$q%XiWC_`m8X<36iSs8AXoEv+{`3ngOk(M;K6HxCqkex>8?_`HPbqv zb{5T=!7JhP#nYIbp^U-1w{`v3`tAFT2TS}8_`AZWjg@NL+oKL8K)?^;b$E+P{{cFW BYRCWp literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon.ico b/pkgdown/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7a57d3eb7f3f154f698bb904ea2d1aaf495d3174 GIT binary patch literal 15086 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 H`e^VUf8rUQ literal 0 HcmV?d00001 -- GitLab